From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mx0b-002e3701.pphosted.com (mx0b-002e3701.pphosted.com [148.163.143.35]) by mx.groups.io with SMTP id smtpd.web12.32652.1613986095754441540 for ; Mon, 22 Feb 2021 01:28:16 -0800 Authentication-Results: mx.groups.io; dkim=pass header.i=@hpe.com header.s=pps0720 header.b=nccqjLH7; spf=pass (domain: hpe.com, ip: 148.163.143.35, mailfrom: prvs=0687883a77=sunnywang@hpe.com) Received: from pps.filterd (m0150245.ppops.net [127.0.0.1]) by mx0b-002e3701.pphosted.com (8.16.0.43/8.16.0.43) with SMTP id 11M9OYl7012908; Mon, 22 Feb 2021 09:28:10 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=hpe.com; h=from : to : cc : date : message-id : references : in-reply-to : content-type : content-transfer-encoding : mime-version : subject; s=pps0720; bh=R2lTSTugR6/jdrQew066nVNnDf3g/hIy86r0VB9QSmw=; b=nccqjLH7hXXlgIv4TaBe9xd3PRODMrefHNABq2weDxZgRKUBP1yK+JOhqoh2JJRJQTcY r4wt/0fV16Ptmzz2P/DvgHcJhP9dKNCejhAQpim51T7k6jmClpic276VuzvA/HEMSghD ll7Y3rdBnPt5Zv8i27fOjbAdNeYU3TJDGsiyP5lGVAYJ6+ML9jRn00EIMEiDPJ+PHfQc kSRXM7WcEA3b9Ynh/0m8H65VKyJctBfeB1OzvhGUjlncGnBJlNavTDOFV9XRRCEx3ovo /jPNlgZTqr06z3tl7eaCMTZhAj7c1adcN6d6Aq8culESotJsO9/P0DU2LYxfLfFy2rAU 8A== Received: from g2t2353.austin.hpe.com (g2t2353.austin.hpe.com [15.233.44.26]) by mx0b-002e3701.pphosted.com with ESMTP id 36u15ft9cb-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 22 Feb 2021 09:28:09 +0000 Received: from G4W9121.americas.hpqcorp.net (g4w9121.houston.hp.com [16.210.21.16]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by g2t2353.austin.hpe.com (Postfix) with ESMTPS id 6111194; Mon, 22 Feb 2021 09:28:08 +0000 (UTC) Received: from G4W9120.americas.hpqcorp.net (2002:10d2:150f::10d2:150f) by G4W9121.americas.hpqcorp.net (2002:10d2:1510::10d2:1510) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Mon, 22 Feb 2021 09:28:08 +0000 Received: from NAM02-SN1-obe.outbound.protection.outlook.com (15.241.52.13) by G4W9120.americas.hpqcorp.net (16.210.21.15) with Microsoft SMTP Server (TLS) id 15.0.1497.2 via Frontend Transport; Mon, 22 Feb 2021 09:28:08 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=VXM/3vdUBl98fn5a3498zE2UU9tZbPZkKO8OEmge6wNsSgzUYf8T73tzjDgbqopylqjV+iimeTQKt8CEr+8QIT3rlqvmUsXhnixO3I3+DLuZINBki3sHl38pjwwtNumOtuZrV/JMuGQkR3WW5uFNcSG+M48Qxhb4tWY77NX4+RQ9vPzLIi9W5ADzU30TRZPZVdytxJLNyssEWatfTvoVnDAx//25Vu7z0zRZWrp0fR2CKv4P8sIcDYzKYzHdfvJXmm1RyJYTPrJztRcA0da3xZHEhfuP9kee/J2jeibu0OZP7F73J7kN+M9t3XqcssJSqJOEv0OA5wiXJLbqdzcprQ== 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=R2lTSTugR6/jdrQew066nVNnDf3g/hIy86r0VB9QSmw=; b=Kf65o98cqzH+m2lV1/xi1Gx6nnXc6B+vvYe0eySB3jKobLIH6PiiyPalxbNhaJ3WP5MqHhWu6PQkw8tphdgM2bNWCz8Tfo4cYTm7pYJorVUUt2atIYtnFcXhLBi63+CgO4pu0hj8WgemTejMz+8kSKnz76OA+sv11s8mQlgiUX/PX1RB/x4K+JvLClvfXZlH1lrkqZ+B6wJhFO4+wjrkVIQOY0pV+4assjK7r/irzp8HKWYJxDSmZUpw8uXpKbp4V7d4cuFd0vcwBCygGxYMNDvJdHtin700Rz2RlBEEjZFaxlXCtrGVEchTFqQ8Y26uH9i51AA8cT/ZDSvEax3egw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=hpe.com; dmarc=pass action=none header.from=hpe.com; dkim=pass header.d=hpe.com; arc=none Received: from DF4PR8401MB0585.NAMPRD84.PROD.OUTLOOK.COM (2a01:111:e400:7609::21) by DF4PR8401MB0553.NAMPRD84.PROD.OUTLOOK.COM (2a01:111:e400:7607::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3868.28; Mon, 22 Feb 2021 09:28:06 +0000 Received: from DF4PR8401MB0585.NAMPRD84.PROD.OUTLOOK.COM ([fe80::49dc:20b6:1bf3:b73b]) by DF4PR8401MB0585.NAMPRD84.PROD.OUTLOOK.COM ([fe80::49dc:20b6:1bf3:b73b%4]) with mapi id 15.20.3868.033; Mon, 22 Feb 2021 09:28:06 +0000 From: "Wang, Sunny (HPS SW)" To: Laszlo Ersek , Pete Batard , "Leif Lindholm" , "devel@edk2.groups.io" , "Ni, Ray" , "zhichao.gao@intel.com" CC: Samer El-Haj-Mahmoud , "Andrei Warkentin (awarkentin@vmware.com)" , Ard Biesheuvel , Andrew Fish , Michael D Kinney , Jian J Wang , Hao A Wu , "Sunny.Hsuanwen.Wang@gmail.com" , "Wang, Sunny (HPS SW)" Thread-Topic: [EXTERNAL] Re: [edk2-devel] [edk2][PATCH 1/1] MdeModulePkg/UefiBootManagerLib: Signal ReadyToBoot on platform recovery Thread-Index: AQHWQ8SRyuuzMtsGq0a7PmrvMf1PKajcd5EAgAAtnACAACLVAIAAOroAgAAAxYCAAABtYIAABBLAgBR1CgCBbD9ngIAACiAAgAAjb4CAB2JuEA== Date: Mon, 22 Feb 2021 09:28:05 +0000 Message-ID: References: <20200616095622.2820-1-pete@akeo.ie> <20200616095622.2820-2-pete@akeo.ie> <99904809-1e07-6bd8-f7ba-25e87b1fe543@akeo.ie> <161962620CFC252E.28613@groups.io> <20210217114237.GF1664@vanye> <1c551fb6-8b5b-286e-8f74-b28eb797a6ae@akeo.ie> In-Reply-To: Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: redhat.com; dkim=none (message not signed) header.d=none;redhat.com; dmarc=none action=none header.from=hpe.com; x-originating-ip: [36.226.218.131] x-ms-publictraffictype: Email x-ms-office365-filtering-ht: Tenant x-ms-office365-filtering-correlation-id: 567bb2a5-6651-4de8-a39c-08d8d7142914 x-ms-traffictypediagnostic: DF4PR8401MB0553: 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: qhc2s2xvlz08ILHhGMYbCXOr4xizuxYHujQxtbKFfhWpYO/nBj+kSEUEd/asXR8K22dSOIgFJLJPV+uBCtKnRxx1Dt7tlgrfdU61uESZEBjplvYV95Zu/tmNc7cfQR97vclBapt7wZbLeTGaZ5YoWdusZ/d5heah5vYCnxTRQN+kpihA7d9oJ6X0/vQrYeINEqG64tEnltUBsjdJuKTrvrZbLOuOe2y0LU7xO+GfOuHFBbOt6LRPod8Th86yYHOx1tThoUscoAPkANSuZuflD0ZE1QW3vhqbuIi8z4+HRizeTsLMf2aDsRscVAM1ENa0mxFmP9l1ArwWkuiKMYRG1zy1kGhk55osp3EA9phTZ8qhw8ojXZ69kX03by4LIKBQ1g2Pic9n72fCKlwqT+08rrSF8l2FfpMWoi6e2PTiiJr0mZuTOyarOPO2NyM1oxJk4yhxIjPsCnuUzbn7/EgetvsIO4n11JuhZYUDbOT343fDCYjg2Ne+3dt5KlKNYH/Z04sUYxzvEbxr/dhsrplNPfY9T7XaTxHUVVBwfbQuDpoopvpAAHFn7Moe5krlOaUiDCbhR66PAWRHubsLkfk90EYD9rXiNc5IlIti7FQE0BU= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DF4PR8401MB0585.NAMPRD84.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(6029001)(39860400002)(376002)(346002)(366004)(136003)(396003)(33656002)(54906003)(478600001)(26005)(66946007)(110136005)(4326008)(316002)(55016002)(52536014)(76116006)(66446008)(7416002)(8676002)(71200400001)(64756008)(7696005)(66556008)(86362001)(8936002)(30864003)(5660300002)(83380400001)(186003)(66476007)(2906002)(45080400002)(6506007)(53546011)(966005)(9686003)(579004)(559001);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata: =?utf-8?B?azRBSldrR0RVOU1NTll5aDd1bmNLVHh0ZVp3dnZaeDFpVURaV0dDVSt3aGgy?= =?utf-8?B?UnJuQUlKVFdoUGF6RDRVN1M4eEtFYkxtMmNHM0kxMzhwMXVWb1VLT3lodWZ5?= =?utf-8?B?WWkySFdoZWlsR093M3JMUXVrSzdUdzRFYkRqakV0L1o0MWIrN0tJSUVCbGgw?= =?utf-8?B?dUdBZTk3ZGV5YWsyc243TWlLcTVqcW9QbU4xQk9BZ2c5d1JpeUVyajNvak5M?= =?utf-8?B?NWN4S1NCcVgrNWJHbGVRcGIwYlk0UXNpM2pEQ1cvM0FLcDBZU3BCVnNoYnFq?= =?utf-8?B?N3MxOVNkVzAzZkFEL1dCdzdrc1BtNHdWSEZZUlh3VE9pdDBMTjMybDdLZXJI?= =?utf-8?B?OTNzNkY3NlVGMXlQMXhYdndhNDhxdmg2d0o4c01YOVhpQkUycVhrb21yL2Nu?= =?utf-8?B?cklYdS80YnNkVnZ6UDh2eEJjL25WWE1pVGNQZzk3UWdaZ3JBZnZVVDBXMTV5?= =?utf-8?B?SHNiNUtpNEg4citiWER4cmRITGhJZU9VOXdQWGNJMTlkMllxbGU1UW8wVkxB?= =?utf-8?B?MkdEMGJMMGJPMVNZR1IreGJBMXM2YVcxeGM0aE53Q0ttQlJ5c2VTZFNMa2gr?= =?utf-8?B?bWZIanBIdHRseGEwQS9BNFIzQWhkK2V5QjhUSVk0aytQUmlzdTFVbFZGRG1Q?= =?utf-8?B?cWtZL2R3dDFQZ1EzQjZkTkdoNnJXRXd5MitkclVlRFBQUDdPekhuZUNiZGQ0?= =?utf-8?B?bFBHNmJLS2FndHJmQVBxU05VQjZWVER4NktVRUM1eDY5RnhwYzRVRHRvVk5Q?= =?utf-8?B?OGJYL2poOWpWOXArZlF1T3pGOGkyK3Ewa3FwN1hUNjBITGNTWm4rUVZQT3Nt?= =?utf-8?B?RUVHa1JWVVI0T2Jub1R0emVEMzN1S1VjVEpSSFEwMHNKa2p5N0duN1BLdk05?= =?utf-8?B?UC9ZTGhZMWZiKzhwbzdSaTQvWU5vb2RaazRNTVlTKzYyR2h2czRMSnJUZmFQ?= =?utf-8?B?WVJOSUE0MXQyYUtlMVg1TndDOENoUFNUYUE0ZnlsTWFlck1wVHBaS1dwbVlv?= =?utf-8?B?Uk9vckpvSmc3aHRjTitUcEl1M3M0TTlqSi9kT21GeE9aMW5IVFprS1EyRUNP?= =?utf-8?B?Z1JrUEhPRk5tbTZzelFVTWZPWWJnT1lpZWNDUlZrN05TWlhpZlNQbHhRQ0tY?= =?utf-8?B?bGRCZjh0MncrdFlWcEd2NlhFVUNjb1Nwa3dWZHRyNzZmblFsR1F0K1FscTN5?= =?utf-8?B?VmJ2VGhRbkMraG9ROW5wUTgvZG1Nem41TjlNbG0rREVEN1pOamlBMnVodklP?= =?utf-8?B?WUx0bytRRFUra3hlVTc2VS9WVmNsYVdibkVZaUxiL3o1bWxSVnJ1b0Z1M2w1?= =?utf-8?B?ZWFrK0tXN0NFOHp4L3RzVkdSV1JLQ1F2U045K0pHeFp6TlhvajlpbU9tc0gr?= =?utf-8?B?UnZZODJXNHVTMVpTWmxtY1RaRllWZ3piSlRweUZMU0hWSlJlM29xeTRIVStw?= =?utf-8?B?S0M0aWUyNjAreVVzRGZQTjI3UEVVdWh3aEgzTnNEWTZDeUZ1bnlCaFRJeWxx?= =?utf-8?B?MXBCR1ZJYW1jdHZkVVpXNmkySEZ1bXJtMkdxeHZtZ3hQQmNWbklVOGM0MkNL?= =?utf-8?B?MWV0TkM2KzFvMXY5ZTFHY3BLSldwRG41VHl1UFlFZFFBblpRYS85T3NkcXNy?= =?utf-8?B?QXRoNVZEaUtKUXVYcVdZY0VUbFVvdHE2ZkVpMGVBVmIxNGN3MjJrak5WdFp3?= =?utf-8?B?Q1p1SlJOTEp0dzNJVDJTRnpzaGRaV0VoS1NlL2E2WktvL2pYd3B5cEcwRm1j?= =?utf-8?Q?G63LCAXi6PaasTA1spT+URDU/iwG342vunBPzHo?= X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: DF4PR8401MB0585.NAMPRD84.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-Network-Message-Id: 567bb2a5-6651-4de8-a39c-08d8d7142914 X-MS-Exchange-CrossTenant-originalarrivaltime: 22 Feb 2021 09:28:05.9522 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 105b2061-b669-4b31-92ac-24d304d195dc X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: SXQf2D3cv8K2EQqyblyYmq723zlRZneDDgjRmUpkTRI6gdDa3jW3gLI3o5jZKAd6LWiiBWp5ynaMS94SRyCGfQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DF4PR8401MB0553 X-OriginatorOrg: hpe.com X-Proofpoint-UnRewURL: 0 URL was un-rewritten MIME-Version: 1.0 X-HPE-SCL: -1 Subject: Re: [edk2-devel] [edk2][PATCH 1/1] MdeModulePkg/UefiBootManagerLib: Signal ReadyToBoot on platform recovery X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.369,18.0.761 definitions=2021-02-22_02:2021-02-18,2021-02-22 signatures=0 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 spamscore=0 clxscore=1011 impostorscore=0 bulkscore=0 mlxlogscore=999 mlxscore=0 lowpriorityscore=0 priorityscore=1501 adultscore=0 suspectscore=0 phishscore=0 malwarescore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2009150000 definitions=main-2102220085 Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 SGkgYWxsLCANCg0KSG93IGFib3V0IHdlIHNpZ25hbCBSZWFkeVRvQm9vdCBPTkxZIGZvciB0aGUg ZGVmYXVsdCBwbGF0Zm9ybSByZWNvdmVyeSBvcHRpb24/ICBUaGUgZGVmYXVsdCBwbGF0Zm9ybSBy ZWNvdmVyeSBvcHRpb24gaGVyZSBtZWFucyB0aGUgb25lIGNyZWF0ZWQgYnkgdGhlIGNvZGUgYmVs b3cgaW4gQmRzRW50cnkoKS4gDQogIFN0YXR1cyA9IEVmaUJvb3RNYW5hZ2VySW5pdGlhbGl6ZUxv YWRPcHRpb24gKA0KICAgICAgICAgICAgICZQbGF0Zm9ybURlZmF1bHRCb290T3B0aW9uLA0KICAg ICAgICAgICAgIExvYWRPcHRpb25OdW1iZXJVbmFzc2lnbmVkLA0KICAgICAgICAgICAgIExvYWRP cHRpb25UeXBlUGxhdGZvcm1SZWNvdmVyeSwNCiAgICAgICAgICAgICBMT0FEX09QVElPTl9BQ1RJ VkUsDQogICAgICAgICAgICAgTCJEZWZhdWx0IFBsYXRmb3JtUmVjb3ZlcnkiLA0KICAgICAgICAg ICAgIEZpbGVQYXRoLA0KICAgICAgICAgICAgIE5VTEwsDQogICAgICAgICAgICAgMA0KICAgICAg ICAgICAgICk7DQoNCkluIG90aGVyIHdvcmRzLCB3ZSBqdXN0IG5lZWQgdG8gc2xpZ2h0bHkgdXBk YXRlIFBldGUncyBwYXRjaCBhcyB0aGUgZm9sbG93aW5nIChhZGRpbmcgdGhlIGNvZGUgYmVsb3cg dG8gRWZpQm9vdE1hbmFnZXJQcm9jZXNzTG9hZE9wdGlvbigpKTogDQoNCisgICBpZiAoKExvYWRP cHRpb24tPk9wdGlvblR5cGUgPT0gTG9hZE9wdGlvblR5cGVQbGF0Zm9ybVJlY292ZXJ5KSAmJg0K ICAgICAgICAgIFN0ckNtcCAoTG9hZE9wdGlvbiAtPkRlc2NyaXB0aW9uLCBMIkRlZmF1bHQgUGxh dGZvcm1SZWNvdmVyeSIpKSB7DQorICAgIC8vDQorICAgIC8vIFNpZ25hbCB0aGUgRVZUX1NJR05B TF9SRUFEWV9UT19CT09UIGV2ZW50IHdoZW4gd2UgYXJlIGFib3V0IHRvIGxvYWQgYW5kIGV4ZWN1 dGUgdGhlIGJvb3Qgb3B0aW9uLg0KKyAgICAvLw0KKyAgICBFZmlTaWduYWxFdmVudFJlYWR5VG9C b290ICgpOw0KDQorICAgIC8vDQorICAgIC8vIFJlcG9ydCBTdGF0dXMgQ29kZSB0byBpbmRpY2F0 ZSBSZWFkeVRvQm9vdCB3YXMgc2lnbmFsbGVkICANCisgICAgLy8gIA0KKyAgICBSRVBPUlRfU1RB VFVTX0NPREUgKEVGSV9QUk9HUkVTU19DT0RFLCAoRUZJX1NPRlRXQVJFX0RYRV9CU19EUklWRVIg fCBFRklfU1dfRFhFX0JTX1BDX1JFQURZX1RPX0JPT1RfRVZFTlQpKTsNCisgIH0NCg0KSSB0aGlu ayB0aGUgZXhpc3RpbmcgcGxhdGZvcm1zIHRoYXQgaGF2ZSB0aGVpciBwbGF0Zm9ybS1zcGVjaWZp YyBQbGF0Zm9ybVJlY292ZXJ5IG9wdGlvbiBtYXkgYWxzbyBkbyBlaXRoZXIgb2YgdGhlIGZvbGxv d2luZyB0aGluZ3MgdG8gbWFrZSB0aGUgc3lzdGVtIGhhdmUgbm8gY2hhbmNlIHRvIGxvYWQgdGhl IGRlZmF1bHQgcGxhdGZvcm0gcmVjb3Zlcnkgb3B0aW9uIGJlY2F1c2UgdGhleSBkbyBoYXZlIGEg YmV0dGVyIHdheSB0byByZWNvdmVyIHRoZSBib290IG9wdGlvbnM6DQogICAgMS4gTWFrZSB0aGVp ciBQbGF0Zm9ybVJlY292ZXJ5IG9wdGlvbiBoYXZlIGhpZ2hlciBwcmlvcml0eSB0aGFuIHRoZSBk ZWZhdWx0IHBsYXRmb3JtIHJlY292ZXJ5IG9wdGlvbiAoaGFzIGEgbG93ZXIgbnVtYmVyICgjIyMj KSB0aGFuIHRoZSBkZWZhdWx0IHBsYXRmb3JtIHJlY292ZXJ5IG9wdGlvbikgDQogICAgMi4gUmVt b3ZlIHRoZSBkZWZhdWx0IHBsYXRmb3JtIHJlY292ZXJ5IG9wdGlvbi4gDQpUaGVyZWZvcmUsIGlm IHdlIG9ubHkgc2lnbmFsIFJlYWR5VG9Cb290IGZvciB0aGUgZGVmYXVsdCBwbGF0Zm9ybSByZWNv dmVyeSBvcHRpb24sIHRoaXMgbWF5IG5vdCBhZmZlY3QgdGhlIGV4aXN0aW5nIHBsYXRmb3JtcyBi ZWNhdXNlIHRoZSBjb2RlIG1heSBuZXZlciBiZSBydW4gb24gdGhlc2UgcGxhdGZvcm1zLiANCg0K DQoNCg0KDQpJZiB0aGUgc29sdXRpb24gYWJvdmUgZG9lc24ndCB3b3JrLCBJIHRoaW5rIHRoZSBz dWdnZXN0aW9uIChTb2x1dGlvbiAyOiBhZGRpbmcgYSBuZXcgYXBwbGljYXRpb24gYXMgYSBQbGF0 Zm9ybVJlY292ZXJ5IyMjIykgSSBtZW50aW9uZWQsIGluIHRoZSBiZWdpbm5pbmcsIGNhbiBiZSBy ZS1jb25zaWRlcmVkLiBUaGUgc3VnZ2VzdGlvbiAoc29sdXRpb24gMikgaXMgYmFzZWQgb24gdGhl IHRob3VnaHRzIGJlbG93OiANCiAgICAgMS4gIEkgdGhpbmsgdGhhdCBwcm9jZXNzaW5nL2V2YWx1 YXRpbmcgdGhlIEJvb3QjIyMjIGNhbiBiZSBpbnRlcnByZXRlZCBhcyB0aGUgY29kZSBhZnRlciB0 aGUgY29tbWVudCAiIDYuIExvYWQgRUZJIGJvb3Qgb3B0aW9uIHRvIEltYWdlSGFuZGxlIiBpbiBF ZmlCb290TWFuYWdlckJvb3QoKSBiZWNhdXNlIHRoZXNlIGNvZGUgYXJlIHNpbWlsYXIgdG8gdGhl IGNvZGUgaW4gRWZpQm9vdE1hbmFnZXJQcm9jZXNzTG9hZE9wdGlvbigpLiBCYXNlZCBvbiB0aGlz LCBJIHRoaW5rIG91ciBjdXJyZW50IGltcGxlbWVudGF0aW9uIGlzIGNvbXBsaWFudCB3aXRoIHRo ZSBkZXNjcmlwdGlvbiBiZWxvdyBpbiB0aGUgVUVGSSBzcGVjLiBPZiBjb3Vyc2UsIHdlIGNhbiBp bXByb3ZlIG91ciBpbXBsZW1lbnRhdGlvbiBieSBtb3ZpbmcgdGhlIGNvZGUgZm9yIHByb2Nlc3Np bmcvZXZhbHVhdGluZyB0aGUgQm9vdCMjIyMgZnJvbSBFZmlCb290TWFuYWdlckJvb3QoKSB0byBF ZmlCb290TWFuYWdlclByb2Nlc3NMb2FkT3B0aW9uKCkgYW5kIG1ha2UgRWZpQm9vdE1hbmFnZXJC b290KCkgY2FsbCBFZmlCb290TWFuYWdlclByb2Nlc3NMb2FkT3B0aW9uKCkuIA0KICAgICAgICAg ICAgICDigJxBZnRlciBhbGwgU3lzUHJlcCMjIyMgdmFyaWFibGVzIGhhdmUgYmVlbiBsYXVuY2hl ZCBhbmQgZXhpdGVkLCB0aGUgcGxhdGZvcm0gc2hhbGwgbm90aWZ5IEVGSV9FVkVOVF9HUk9VUF9S RUFEWV9UT19CT09UIGV2ZW50IGdyb3VwIGFuZCBiZWdpbiB0byBldmFsdWF0ZSBCb290IyMjIyB2 YXJpYWJsZXMgd2l0aCBBdHRyaWJ1dGVzIHNldCB0byBMT0FEX09QVElPTl9DQVRFR09SWV9CT09U IGFjY29yZGluZyB0byB0aGUgb3JkZXIgZGVmaW5lZCBieSBCb290T3JkZXIuIFRoZSBGaWxlUGF0 aExpc3Qgb2YgdmFyaWFibGVzIG1hcmtlZCBMT0FEX09QVElPTl9DQVRFR09SWV9CT09UIHNoYWxs IG5vdCBiZSBldmFsdWF0ZWQgcHJpb3IgdG8gdGhlIGNvbXBsZXRpb24gb2YgRUZJX0VWRU5UX0dS T1VQX1JFQURZX1RPX0JPT1QgZXZlbnQgZ3JvdXAgcHJvY2Vzc2luZy4iDQogICAgIDIuIE1vcmVv dmVyLCBpdCBsb29rcyBsaWtlIHdlIHdhbnQgdG8gcHJvY2VzcyBQbGF0Zm9ybVJlY292ZXJ5IyMj IyBvcHRpb24gaW4gdGhlIHNhbWUgd2F5IGFzIEJvb3QjIyMjIChkbyBtb3JlIHRoaW5ncyBsaWtl IHNldHRpbmcgQm9vdEN1cnJlbnQgZm9yIFBsYXRmb3JtUmVjb3ZlcnkjIyMjKS4gSWYgc28sIEkg d291bGQgc3RpbGwgcHJlZmVyIHRvIGRvIHdoYXQgSSBzdWdnZXN0IGluIHRoZSBiZWdpbm5pbmcg dG8gY3JlYXRlIGEgbmV3IGFwcGxpY2F0aW9uIGFzIGEgbmV3IFBsYXRmb3JtUmVjb3ZlcnkjIyMj IG9wdGlvbiBmb3IgZ2VuZXJhdGluZyBhbmQgbGF1bmNoaW5nIGEgYm9vdCBvcHRpb24gZm9yIHRo ZSBib290YWJsZSBpbWFnZSB0aGF0IGlzIGZvdW5kIGJ5IHVzaW5nIGEgc2hvcnQtZm9ybSBGaWxl IFBhdGggTWVkaWEgRGV2aWNlIFBhdGggc28gdGhhdCB3ZSB3b24ndCBydW4gaW50byBvdGhlciBk aWZmaWN1bHRpZXMuIEF0IGxlYXN0LCBJIGFscmVhZHkgc2F3IHRoZSBkaWZmaWN1bHR5IG9mIG5v IGNvbm5lY3Rpb24gYmV0d2VlbiBCb290Q3VycmVudCB2YXJpYWJsZSBhbmQgUGxhdGZvcm1SZWNv dmVyeSMjIyMgdmFyaWFibGUuIE9mIGNvdXJzZSwgdGhpcyBhcHBsaWNhdGlvbiBjYW4gYmUgaW1w bGVtZW50ZWQgd2l0aG91dCBwbGF0Zm9ybSBzcGVjaWZpYyBzdHVmZiwgc28gaXQgY2FuIGJlIGNv bW1vbmx5IHVzZWQgYnkgYWxsIHBsYXRmb3JtcyB0aGF0IG5lZWQgdG8gbG9hZCBhIGJvb3QgaW1h Z2UgZGlzY292ZXJlZCBieSB1c2luZyBzaG9ydC1mb3JtIEZpbGUgUGF0aCBNZWRpYSBEZXZpY2Ug UGF0aC4gDQoNCg0KDQoNClJlZ2FyZHMsDQpTdW5ueSBXYW5nDQoNCi0tLS0tT3JpZ2luYWwgTWVz c2FnZS0tLS0tDQpGcm9tOiBMYXN6bG8gRXJzZWsgPGxlcnNla0ByZWRoYXQuY29tPiANClNlbnQ6 IFdlZG5lc2RheSwgRmVicnVhcnkgMTcsIDIwMjEgMTA6MjYgUE0NClRvOiBQZXRlIEJhdGFyZCA8 cGV0ZUBha2VvLmllPjsgTGVpZiBMaW5kaG9sbSA8bGVpZkBudXZpYWluYy5jb20+OyBkZXZlbEBl ZGsyLmdyb3Vwcy5pbw0KQ2M6IFNhbWVyIEVsLUhhai1NYWhtb3VkIDxTYW1lci5FbC1IYWotTWFo bW91ZEBhcm0uY29tPjsgQW5kcmVpIFdhcmtlbnRpbiAoYXdhcmtlbnRpbkB2bXdhcmUuY29tKSA8 YXdhcmtlbnRpbkB2bXdhcmUuY29tPjsgV2FuZywgU3VubnkgKEhQUyBTVykgPHN1bm55d2FuZ0Bo cGUuY29tPjsgemhpY2hhby5nYW9AaW50ZWwuY29tOyByYXkubmlAaW50ZWwuY29tOyBBcmQgQmll c2hldXZlbCA8YXJkYit0aWFub2NvcmVAa2VybmVsLm9yZz47IEFuZHJldyBGaXNoIDxhZmlzaEBh cHBsZS5jb20+OyBNaWNoYWVsIEQgS2lubmV5IDxtaWNoYWVsLmQua2lubmV5QGludGVsLmNvbT47 IEppYW4gSiBXYW5nIDxqaWFuLmoud2FuZ0BpbnRlbC5jb20+OyBIYW8gQSBXdSA8aGFvLmEud3VA aW50ZWwuY29tPg0KU3ViamVjdDogUmU6IFtFWFRFUk5BTF0gUmU6IFtlZGsyLWRldmVsXSBbZWRr Ml1bUEFUQ0ggMS8xXSBNZGVNb2R1bGVQa2cvVWVmaUJvb3RNYW5hZ2VyTGliOiBTaWduYWwgUmVh ZHlUb0Jvb3Qgb24gcGxhdGZvcm0gcmVjb3ZlcnkNCg0KT24gMDIvMTcvMjEgMTM6MTgsIFBldGUg QmF0YXJkIHdyb3RlOg0KPiBIaSBMZWlmLA0KPiANCj4gVGhhbmtzIGZvciB0cnlpbmcgdG8gcmVz dXJyZWN0IHRoaXMgaXNzdWUuDQo+IA0KPiBBdCB0aGlzIHN0YWdlLCBhbmQgZGVzcGl0ZSBzb21l IGluaXRpYWwgcHVzaGJhY2sgaW4gdGhlIGJ1Z3ppbGxhIA0KPiB0aWNrZXQsIEkgYmVsaWV2ZSB3 ZSBjYW4gYWxsIGFncmVlIHdpdGggdGhlIGNvbnNlbnN1cyB0aGF0IA0KPiBVZWZpQm9vdE1hbmFn ZXJMaWIgaXMgbm90IGluIGZhY3Qgc3BlY3MtY29tcGxpYW50IGFuZCB0aGVyZWZvcmUgbmVlZHMg DQo+IHRvIGJlIGZpeGVkLCBvbmUgd2F5IG9yIGFub3RoZXIsIHRvIG1ha2UgaXQgc3BlY3MtY29t cGxpYW50Lg0KPiANCj4gTXkgdGFrZSBvbiB0aGlzIGlzIHRoYXQsIHJhdGhlciB0aGFuIHByb3Bv c2UgYSBuZXcgcGF0Y2gsIEknZCBtdWNoIA0KPiByYXRoZXIgaGF2ZSB0aGUgY3VycmVudCBtYWlu dGFpbmVycyBhZ3JlZSBvbiB0aGUgY291cnNlIG9mIGFjdGlvbiB0byANCj4gZml4IHRoZSBsaWJy YXJ5ICh3aGljaCwgYXMgTGVpZiBzdWdnZXN0cywgbWlnaHQgdmVyeSB3ZWxsIGJlIHRvIHNwbGl0 IA0KPiB0aGUgbGlicmFyeSBpbnRvIGEgc3BlY3MtY29tcGxpYW50IGFuZCBub24tc3BlY3MtY29t cGxpYW50IHZlcnNpb24pLCANCj4gYXMgaXQgd291bGQgb2YgY291cnNlIGJlIGJldHRlciBpZiB0 aGUgZml4IGNhbWUgZnJvbSBwZW9wbGUgd2hvIGhhdmUgDQo+IGJldHRlciB1bmRlcnN0YW5kaW5n IG9mIHRoZSByYW1pZmljYXRpb25zIHdlIG1pZ2h0IGZhY2Ugd2l0aCB0cnlpbmcgdG8gDQo+IGNv cnJlY3QgdGhlIGN1cnJlbnQgYmVoYXZpb3VyLCBhbmQgZXNwZWNpYWxseSwgd2hvIGhhdmUga25v d2xlZGdlIG9mIA0KPiB0aGUgcGxhdGZvcm1zIHRoYXQgbWlnaHQgYmUgaW1wYWN0ZWQgZnJvbSBt YWtpbmcgdGhlIGxpYiBzcGVjcy1jb21wbGlhbnQuDQo+IA0KPiBFc3BlY2lhbGx5LCBJIGRvbid0 IHRoaW5rIHRoYXQgdGhlIHBhdGNoIHRoYXQgSSBvcmlnaW5hbGx5IHN1Ym1pdHRlZCANCj4gZm9y IHRoaXMsIG9yIHRoZSBhZGRpdGlvbmFsIHByb3Bvc2FscyB3ZSBtYWRlLCBhcmUgc3RpbGwgcmVj ZWl2YWJsZSwgDQo+IGFzIHRoZXkgc2VlbSB0byBmYWxsIHNob3J0IG9mIGZpeGluZyB0aGUgaXNz dWUgaW4gYSBtYW5uZXIgdGhhdCBhbGwgDQo+IHBsYXRmb3JtcyBjYW4gYmUgaGFwcHkgd2l0aC4g QW5kIHRoYXQgaXMgd2h5IEknZCBsaWtlIHRvIGhlYXIgZnJvbSB0aGUgDQo+IG1haW50YWluZXJz IG9uIHdoYXQgdGhlaXIgcHJlZmVycmVkIGFwcHJvYWNoIHdvdWxkIGJlLg0KDQpBIG5ldyBGZWF0 dXJlIFBDRCBjb3VsZCBzYXRpc2Z5IGJvdGggc2V0cyBvZiBwbGF0Zm9ybXMsIGNvdWxkIGl0IG5v dD8NCg0KKFNvcnJ5IGlmIHRoZSBvcmlnaW5hbCBwYXRjaCBhbHJlYWR5IGhhZCBzdWNoIGEgUENE OyBJIGRvbid0IHJlbWVtYmVyLikNCg0KT2YgY291cnNlIHRoZW4gd2UnZCBoYXZlIGEgZGViYXRl IGFyb3VuZCB0aGUgREVDIGRlZmF1bHQgZm9yIHRoZSBuZXcgUENEDQotLSBJJ2Qgc2F5IHRoZSBk ZWZhdWx0IHZhbHVlIG9mIHRoZSBQQ0Qgc2hvdWxkIG1hdGNoIHRoZSBzcGVjLW1hbmRhdGVkIGJl aGF2aW9yLg0KDQpJIGRvbid0IHJlY2FsbCBhbnkgc3BlY2lmaWNzLCBidXQgYSBidWctY29tcGF0 IHBhdHRlcm4gdGhhdCdzIHNvbWV0aW1lcyB1c2VkIGlzIHRoaXM6DQoNCiAgaWYgKEJ1Z0NvbXBh dEVuYWJsZWQpIHsNCiAgICAvLw0KICAgIC8vIGRvIHRoZSByaWdodCB0aGluZyBpbiB0aGUgd3Jv bmcgcGxhY2UsIGZvciBsZWdhY3kgcGxhdGZvcm1zJyBzYWtlDQogICAgLy8NCiAgIEZvbyAoKTsN CiAgfQ0KDQogIC8vDQogIC8vIERvIHNvbWUgc3R1ZmYuDQogIC8vDQogIEJhciAoKTsNCg0KICBp ZiAoIUJ1Z0NvbXBhdEVuYWJsZWQpIHsNCiAgICAvLw0KICAgIC8vIGRvIHRoZSByaWdodCB0aGlu ZyBpbiB0aGUgcmlnaHQgcGxhY2UsIGZvciBjb25mb3JtYW50IHBsYXRmb3Jtcw0KICAgIC8vDQog ICBGb28gKCk7DQogIH0NCg0KTm90IHN1cmUgaWYgaXQgYXBwbGllcyBoZXJlLg0KDQpUaGFua3MN Ckxhc3psbw0KDQoNCj4gT24gMjAyMS4wMi4xNyAxMTo0MiwgTGVpZiBMaW5kaG9sbSB3cm90ZToN Cj4+IEhpIFBldGUsICt2YXJpb3VzDQo+Pg0KPj4gUmVzdXJyZWN0aW5nIHRoaXMgb2xkIHRocmVh ZCBzaW5jZSBBcmQgcG9pbnRlZCBvdXQgYW4gaXNzdWUgSSByYW4gDQo+PiBpbnRvIG15c2VsZiBo YWQgYWxyZWFkeSBiZWVuIGVuY291bnRlcmVkIGJ5IFBldGUuDQo+PiBBbmQgdGhlIGJ1Z3ppbGxh IHRpY2tldCAoZGlyZWN0bHkgYmVsb3cgdGhpcyByZXBseSkgaGFzIGhhZCBubyANCj4+IHJlbGV2 YW50IHByb2dyZXNzIHNpbmNlIEF1Z3VzdC4NCj4+DQo+PiBFeGVjdXRpdmUgc3VtbWFyeToNCj4+ IFRoZSBjdXJyZW50IFVlZmlCb290TWFuYWdlckxpYiBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgUGxh dGZvcm1SZWNvdmVyeSANCj4+IHBhdGggZG9lcyBub3Qgbm90aWZ5IHRoZSBFRklfRVZFTlRfR1JP VVBfUkVBRFlfVE9fQk9PVCBldmVudC4NCj4+DQo+PiBUaGUgYXJndW1lbnQgaGFzIGJlZW4gbWFk ZSB0aGF0IHNpbmNlIGNoYW5naW5nIHRoaXMgd291bGQgYWZmZWN0IGFuIA0KPj4gdW5uYW1lZCBu dW1iZXIgb2Ygbm9uLXB1YmxpYyBwbGF0Zm9ybXMsIHRoZSBiZWhhdmlvdXIgY2Fubm90IGJlIA0K Pj4gY2hhbmdlZCBldmVuIHRob3VnaCBpdCB2aW9sYXRlcyB0aGUgVUVGSSBzcGVjaWZpY2F0aW9u Lg0KPj4NCj4+IEkgZGlzYWdyZWUgd2l0aCB0aGF0IHN0YXRlbWVudC4gSWYgd2Ugd2FudCB0byBm b3JrIFVlZmlCb290TWFuYWdlckxpYiANCj4+IGludG8gYSBCcm9rZW5MZWdhY3lVZWZpQm9vdE1h bmFnZXJMaWIgYW5kIGFuIGFjdHVhbGx5IGNvcnJlY3Qgb25lLCANCj4+IGFuZCBoYXZlIHRob3Nl IHBsYXRmb3JtcyBtb3ZlIHRvIHRoZSBCcm9rZW5MZWdhY3kgdmFyaWFudCwgSSdtIE9LIA0KPj4g d2l0aCB0aGF0Lg0KPj4NCj4+IEJ1dCB1c2luZyB0aGUgZGVmYXVsdCB2ZXJzaW9uIHNob3VsZCBn aXZlIHNwZWNpZmljYXRpb24tY29tcGxpYW50IA0KPj4gYmVoYXZpb3VyLg0KPj4NCj4+IC8NCj4+ IMKgwqDCoMKgIExlaWYNCj4+DQo+PiBPbiBUdWUsIEp1biAzMCwgMjAyMCBhdCAxODoxNzoxMCAr MDEwMCwgUGV0ZSBCYXRhcmQgd3JvdGU6DQo+Pj4gUGxlYXNlIG5vdGUgdGhhdCBJIGhhdmUgY3Jl YXRlZCBhIGJ1ZyByZXBvcnQNCj4+PiAoaHR0cHM6Ly9idWd6aWxsYS50aWFub2NvcmUub3JnL3No b3dfYnVnLmNnaT9pZD0yODMxKSB0byBhZGRyZXNzIHRoZSANCj4+PiBub24tY29tcGxpYW5jZSBp c3N1ZSB3YXMgcmFpc2VkIGR1cmluZyB0aGUgY291cnNlIG9mIHRoZSBkaXNjdXNzaW9uIA0KPj4+ IGJlbG93Lg0KPj4+DQo+Pj4gUmVnYXJkcywNCj4+Pg0KPj4+IC9QZXRlDQo+Pj4NCj4+Pg0KPj4+ IE9uIDIwMjAuMDYuMTcgMTg6MDYsIFNhbWVyIEVsLUhhai1NYWhtb3VkIHdyb3RlOg0KPj4+PiBJ IHdvcmtlZCB3aXRoIFBldGUgb2ZmbGluZSBvbiB0aGlzLi4NCj4+Pj4NCj4+Pj4gVGhpcyBjb2Rl IHNlZW1zIHRvIGJlIHZpb2xhdGluZyB0aGUgVUVGSSBTcGVjOg0KPj4+Pg0KPj4+PiBodHRwczov L2dpdGh1Yi5jb20vdGlhbm9jb3JlL2VkazIvYmxvYi9hNTZhZjIzZjA2NmUyODE2YzY3YjdjNmU2 NGRlDQo+Pj4+IDdkZGVmY2Q3MDc4MC9NZGVNb2R1bGVQa2cvTGlicmFyeS9VZWZpQm9vdE1hbmFn ZXJMaWIvQm1Cb290LmMjTDE3NjMNCj4+Pj4NCj4+Pj4NCj4+Pj4gwqDCoMKgIC8vDQo+Pj4+IMKg wqDCoCAvLyAzLiBTaWduYWwgdGhlIEVWVF9TSUdOQUxfUkVBRFlfVE9fQk9PVCBldmVudCB3aGVu IHdlIGFyZSANCj4+Pj4gYWJvdXQgdG8gbG9hZCBhbmQgZXhlY3V0ZQ0KPj4+PiDCoMKgwqAgLy/C oMKgwqAgdGhlIGJvb3Qgb3B0aW9uLg0KPj4+PiDCoMKgwqAgLy8NCj4+Pj4gwqDCoMKgIGlmIChC bUlzQm9vdE1hbmFnZXJNZW51RmlsZVBhdGggKEJvb3RPcHRpb24tPkZpbGVQYXRoKSkgew0KPj4+ PiDCoMKgwqDCoMKgIERFQlVHICgoRUZJX0RfSU5GTywgIltCZHNdIEJvb3RpbmcgQm9vdCBNYW5h Z2VyIE1lbnUuXG4iKSk7DQo+Pj4+IMKgwqDCoMKgwqAgQm1TdG9wSG90a2V5U2VydmljZSAoTlVM TCwgTlVMTCk7DQo+Pj4+IMKgwqDCoCB9IGVsc2Ugew0KPj4+PiDCoMKgwqDCoMKgIEVmaVNpZ25h bEV2ZW50UmVhZHlUb0Jvb3QoKTsNCj4+Pj4gwqDCoMKgwqDCoCAvLw0KPj4+PiDCoMKgwqDCoMKg IC8vIFJlcG9ydCBTdGF0dXMgQ29kZSB0byBpbmRpY2F0ZSBSZWFkeVRvQm9vdCB3YXMgc2lnbmFs bGVkDQo+Pj4+IMKgwqDCoMKgwqAgLy8NCj4+Pj4gwqDCoMKgwqDCoCBSRVBPUlRfU1RBVFVTX0NP REUgKEVGSV9QUk9HUkVTU19DT0RFLCANCj4+Pj4gKEVGSV9TT0ZUV0FSRV9EWEVfQlNfRFJJVkVS IHwgDQo+Pj4+IEVGSV9TV19EWEVfQlNfUENfUkVBRFlfVE9fQk9PVF9FVkVOVCkpOw0KPj4+PiDC oMKgwqDCoMKgIC8vDQo+Pj4+IMKgwqDCoMKgwqAgLy8gNC4gUmVwYWlyIHN5c3RlbSB0aHJvdWdo IERyaXZlckhlYWx0aCBwcm90b2NvbA0KPj4+PiDCoMKgwqDCoMKgIC8vDQo+Pj4+IMKgwqDCoMKg wqAgQm1SZXBhaXJBbGxDb250cm9sbGVycyAoMCk7DQo+Pj4+IMKgwqDCoCB9DQo+Pj4+DQo+Pj4+ IFRoZSBVRUZJIFNwZWMgc2VjdGlvbiAzLjEuNyBjbGVhcmx5IHN0YXRlcyB0aGF0IEJvb3QgT3B0 aW9ucyAoYW5kIA0KPj4+PiB0aGVpciBGaWxlUGF0aExpc3QpICpzaGFsbCBub3QqIGJlIGV2YWx1 YXRlZCBwcmlvciB0byB0aGUgDQo+Pj4+IGNvbXBsZXRpb24gb2YgRUZJX0VWRU5UX0dST1VQX1JF QURZX1RPX0JPT1QgZXZlbnQgZ3JvdXAgcHJvY2Vzc2luZzoNCj4+Pj4NCj4+Pj4gIkFmdGVyIGFs bCBTeXNQcmVwIyMjIyB2YXJpYWJsZXMgaGF2ZSBiZWVuIGxhdW5jaGVkIGFuZCBleGl0ZWQsIHRo ZSANCj4+Pj4gcGxhdGZvcm0gc2hhbGwgbm90aWZ5IEVGSV9FVkVOVF9HUk9VUF9SRUFEWV9UT19C T09UIGV2ZW50IGdyb3VwIGFuZCANCj4+Pj4gYmVnaW4gdG8gZXZhbHVhdGUgQm9vdCMjIyMgdmFy aWFibGVzIHdpdGggQXR0cmlidXRlcyBzZXQgdG8gDQo+Pj4+IExPQURfT1BUSU9OX0NBVEVHT1JZ X0JPT1QgYWNjb3JkaW5nIHRvIHRoZSBvcmRlciBkZWZpbmVkIGJ5IA0KPj4+PiBCb290T3JkZXIu IFRoZSBGaWxlUGF0aExpc3Qgb2YgdmFyaWFibGVzIG1hcmtlZCANCj4+Pj4gTE9BRF9PUFRJT05f Q0FURUdPUllfQk9PVCBzaGFsbCBub3QgYmUgZXZhbHVhdGVkIHByaW9yIHRvIHRoZSANCj4+Pj4g Y29tcGxldGlvbiBvZiBFRklfRVZFTlRfR1JPVVBfUkVBRFlfVE9fQk9PVCBldmVudCBncm91cCBw cm9jZXNzaW5nLiINCj4+Pj4NCj4+Pj4gVGhpcyBpcyBhIHByZXNjcmlwdGl2ZSBsYW5ndWFnZSB0 aGF0IGlzIHN0cm9uZ2VyIHRoYW4gdGhlIGxhbmd1YWdlIA0KPj4+PiBpbiBzZWN0aW9uIDcuMSB3 aGljaCBkZWZpbmVzIHRoZSBSZWFkeVRvQm9vdCBldmVudCBncm91cCBpbiBhIA0KPj4+PiBnZW5l cmFsIHdheToNCj4+Pj4NCj4+Pj4gIkVGSV9FVkVOVF9HUk9VUF9SRVNFVF9TWVNURU0NCj4+Pj4g VGhpcyBldmVudCBncm91cCBpcyBub3RpZmllZCBieSB0aGUgc3lzdGVtIHdoZW4gUmVzZXRTeXN0 ZW0oKSBpcyANCj4+Pj4gaW52b2tlZCBhbmQgdGhlIHN5c3RlbSBpcyBhYm91dCB0byBiZSByZXNl dC4gVGhlIGV2ZW50IGdyb3VwIGlzIA0KPj4+PiBvbmx5IG5vdGlmaWVkIHByaW9yIHRvIEV4aXRC b290U2VydmljZXMoKSBpbnZvY2F0aW9uLiINCj4+Pj4NCj4+Pj4gVGhlIEVESzIgY29kZSBpbiB0 aGUgZWxzZSBibG9jayBhYm92ZSAodG8gY2FsbA0KPj4+PiBFZmlTaWduYWxFdmVudFJlYWR5VG9C b290KCkgKSBuZWVkIHRvIG1vdmUgYmVmb3JlIHRoZSBjb2RlIHRoYXQgaXMgDQo+Pj4+IHByb2Nl c3NpbmcgQm9vdE9wdGlvbi0+RmlsZVBhdGguIEluIGZhY3QsIHdoeSBpcyB0aGlzIHNpZ25hbGlu ZyANCj4+Pj4gZXZlbiBhIEJvb3RNYW5hZ2VyIHRhc2s/IEl0IHNob3VsZCBiZSBhIGhpZ2hlciBs ZXZlbCBCRFMgdGFzayANCj4+Pj4gKGFmdGVyIHByb2Nlc3NpbmcgU3lzUHJwIGFuZCBiZWZvcmUg cHJvY2Vzc2luZyBCb290IG9wdGlvbnMsIHBlciB0aGUgc3BlYykuDQo+Pj4+IFRoaXMgd291bGQg YmUgc29tZXdoZXJlIGFyb3VuZA0KPj4+PiBodHRwczovL2dpdGh1Yi5jb20vdGlhbm9jb3JlL2Vk azIvYmxvYi9iMTU2NDY0ODRlYWZmY2Y3Y2M0NjRmZGVhMDIxDQo+Pj4+IDQ0OThmMjZhZGRjMi9N ZGVNb2R1bGVQa2cvVW5pdmVyc2FsL0Jkc0R4ZS9CZHNFbnRyeS5jI0wxMDA3DQo+Pj4+IHdoZXJl IFN5c1ByZXAgaXMgcHJvY2Vzc2VkLg0KPj4+Pg0KPj4+PiBUaGlzIHNob3VsZCBhbHNvIHRha2Ug Y2FyZSBvZiB0aGUgaXNzdWUgUGV0ZSByZXBvcnRlZCBpbiB0aGlzIA0KPj4+PiB0aHJlYWQsIHdp dGhvdXQgdGhlIG5lZWQgZm9yIGV4cGxpY2l0bHkgc2lnbmFsaW5nIFJlYWR5VG9Cb290IGZyb20g DQo+Pj4+IFBsYXRmb3JtUmVjb3ZlcnkgKG9yIGNoYW5naW5nIHRoZSBVRUZJIHNwZWMpLg0KPj4+ Pg0KPj4+PiBUaGFua3MsDQo+Pj4+IC0tU2FtZXINCj4+Pj4NCj4+Pj4NCj4+Pj4NCj4+Pj4gRnJv bTogZGV2ZWxAZWRrMi5ncm91cHMuaW8gPGRldmVsQGVkazIuZ3JvdXBzLmlvPiBPbiBCZWhhbGYg T2YgDQo+Pj4+IFNhbWVyIEVsLUhhai1NYWhtb3VkIHZpYSBncm91cHMuaW8NCj4+Pj4gU2VudDog V2VkbmVzZGF5LCBKdW5lIDE3LCAyMDIwIDEyOjQyIFBNDQo+Pj4+IFRvOiBkZXZlbEBlZGsyLmdy b3Vwcy5pbzsgQW5kcmVpIFdhcmtlbnRpbiAoYXdhcmtlbnRpbkB2bXdhcmUuY29tKSANCj4+Pj4g PGF3YXJrZW50aW5Adm13YXJlLmNvbT47IFdhbmcsIFN1bm55IChIUFMgU1cpIDxzdW5ueXdhbmdA aHBlLmNvbT47IA0KPj4+PiBwZXRlQGFrZW8uaWUNCj4+Pj4gQ2M6IHpoaWNoYW8uZ2FvQGludGVs LmNvbTsgcmF5Lm5pQGludGVsLmNvbTsgQXJkIEJpZXNoZXV2ZWwgDQo+Pj4+IDxBcmQuQmllc2hl dXZlbEBhcm0uY29tPjsgbGVpZkBudXZpYWluYy5jb207IFNhbWVyIEVsLUhhai1NYWhtb3VkIA0K Pj4+PiA8U2FtZXIuRWwtSGFqLU1haG1vdWRAYXJtLmNvbT4NCj4+Pj4gU3ViamVjdDogUmU6IFtl ZGsyLWRldmVsXSBbZWRrMl1bUEFUQ0ggMS8xXQ0KPj4+PiBNZGVNb2R1bGVQa2cvVWVmaUJvb3RN YW5hZ2VyTGliOiBTaWduYWwgUmVhZHlUb0Jvb3Qgb24gcGxhdGZvcm0gDQo+Pj4+IHJlY292ZXJ5 DQo+Pj4+DQo+Pj4+IFRoZSBVRUZJIHNwZWMgKDMuMS43KSBzYXlzOg0KPj4+Pg0KPj4+PiAiQWZ0 ZXIgYWxsIFN5c1ByZXAjIyMjIHZhcmlhYmxlcyBoYXZlIGJlZW4gbGF1bmNoZWQgYW5kIGV4aXRl ZCwgdGhlIA0KPj4+PiBwbGF0Zm9ybSBzaGFsbCBub3RpZnkgRUZJX0VWRU5UX0dST1VQX1JFQURZ X1RPX0JPT1QgZXZlbnQgZ3JvdXAgYW5kIA0KPj4+PiBiZWdpbiB0byBldmFsdWF0ZSBCb290IyMj IyB2YXJpYWJsZXMgd2l0aCBBdHRyaWJ1dGVzIHNldCB0byANCj4+Pj4gTE9BRF9PUFRJT05fQ0FU RUdPUllfQk9PVCBhY2NvcmRpbmcgdG8gdGhlIG9yZGVyIGRlZmluZWQgYnkgDQo+Pj4+IEJvb3RP cmRlci4gVGhlIEZpbGVQYXRoTGlzdCBvZiB2YXJpYWJsZXMgbWFya2VkIA0KPj4+PiBMT0FEX09Q VElPTl9DQVRFR09SWV9CT09UIHNoYWxsIG5vdCBiZSBldmFsdWF0ZWQgcHJpb3IgdG8gdGhlIA0K Pj4+PiBjb21wbGV0aW9uIG9mIEVGSV9FVkVOVF9HUk9VUF9SRUFEWV9UT19CT09UIGV2ZW50IGdy b3VwIHByb2Nlc3NpbmcuIg0KPj4+Pg0KPj4+PiBUaGUgd2F5IEkgcmVhZCB0aGlzLCBJIGV4cGVj dCBSZWFkeVRvQm9vdCB0byBiZSBzaWduYWxlZCBhZnRlciANCj4+Pj4gU3lzUHJlcCMjIyMgKGlm IGFueSkgYXJlIHByb2Nlc3NlZCwgYnV0IGJlZm9yZSBCb290IyMjIyBhcmUgDQo+Pj4+IHByb2Nl c3NlZC4gSXMgbXkgdW5kZXJzdGFuZGluZyBjb3JyZWN0IHRoYXQgdGhpcyBsYW5ndWFnZSBpbXBs aWVzIA0KPj4+PiBSZWFkeVRvQm9vdCBuZWVkIHRvIGJlIHNpZ25hbGVkIGV2ZW4gaWYgQm9vdE9y ZGVyIGRvZXMgbm90IGNvbnRhaW4gDQo+Pj4+IGFueSBCb290IyMjIyBvcHRpb25zIG1hcmtlZCBh cyBMT0FEX09QVElPTl9DQVRFR09SWV9CT09UPyBBbmQgaWYgDQo+Pj4+IHNvLCBpcyBFREsyIG5v dCBkb2luZyB0aGlzLCB3aGljaCBsZWFkcyB1cyB0byB0aGlzIHBhdGNoIChzaWduYWxpbmcgDQo+ Pj4+IGl0IGluIFBsYXRmb3JtUmVjb3Zlcnk/KQ0KPj4+Pg0KPj4+Pg0KPj4+Pg0KPj4+PiBGcm9t OiBtYWlsdG86ZGV2ZWxAZWRrMi5ncm91cHMuaW8gPG1haWx0bzpkZXZlbEBlZGsyLmdyb3Vwcy5p bz4gT24gDQo+Pj4+IEJlaGFsZiBPZiBBbmRyZWkgV2Fya2VudGluIHZpYSBncm91cHMuaW8NCj4+ Pj4gU2VudDogV2VkbmVzZGF5LCBKdW5lIDE3LCAyMDIwIDEyOjM3IFBNDQo+Pj4+IFRvOiBXYW5n LCBTdW5ueSAoSFBTIFNXKSA8bWFpbHRvOnN1bm55d2FuZ0BocGUuY29tPjsgDQo+Pj4+IG1haWx0 bzpkZXZlbEBlZGsyLmdyb3Vwcy5pbzsgbWFpbHRvOnBldGVAYWtlby5pZQ0KPj4+PiBDYzogbWFp bHRvOnpoaWNoYW8uZ2FvQGludGVsLmNvbTsgbWFpbHRvOnJheS5uaUBpbnRlbC5jb207IEFyZCAN Cj4+Pj4gQmllc2hldXZlbCA8bWFpbHRvOkFyZC5CaWVzaGV1dmVsQGFybS5jb20+OyANCj4+Pj4g bWFpbHRvOmxlaWZAbnV2aWFpbmMuY29tDQo+Pj4+IFN1YmplY3Q6IFJlOiBbZWRrMi1kZXZlbF0g W2VkazJdW1BBVENIIDEvMV0NCj4+Pj4gTWRlTW9kdWxlUGtnL1VlZmlCb290TWFuYWdlckxpYjog U2lnbmFsIFJlYWR5VG9Cb290IG9uIHBsYXRmb3JtIA0KPj4+PiByZWNvdmVyeQ0KPj4+Pg0KPj4+ PiBUaGFua3MgUGV0ZS4NCj4+Pj4NCj4+Pj4gSSB0aGluayB0aGUgcXVlc3Rpb24gSSBoYXZlLCB0 aGF0IEkgaG9wZSBUaWFubyB2ZXRlcmFucyBjYW4gY2hpbWUgDQo+Pj4+IGluLCBpcyB3aGV0aGVy IHdlIGFyZSBkb2luZyB0aGUgcmlnaHQgdGhpbmcsIG9yIGlmIHdlIHNob3VsZCBiZSANCj4+Pj4g b3ZlcnJpZGluZyB0aGUgYm9vdCBtb2RlPyBJLmUuIGlzIGl0IG5vcm1hbCB0aGF0IHdlIGJvb3Qg dXAgaW4gDQo+Pj4+IHJlY292ZXJ5IHVudGlsIG9wdGlvbnMgYXJlIHNhdmVkPw0KPj4+Pg0KPj4+ Pg0KPj4+PiBBDQo+Pj4+DQo+Pj4+DQo+Pj4+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX18NCj4+Pj4gRnJvbTogbWFpbHRvOmRldmVsQGVkazIuZ3JvdXBzLmlvIDxtYWls dG86ZGV2ZWxAZWRrMi5ncm91cHMuaW8+IG9uIA0KPj4+PiBiZWhhbGYgb2YgUGV0ZSBCYXRhcmQg dmlhIGdyb3Vwcy5pbyA8bWFpbHRvOnBldGU9YWtlby5pZUBncm91cHMuaW8+DQo+Pj4+IFNlbnQ6 IFdlZG5lc2RheSwgSnVuZSAxNywgMjAyMCAxMTozNCBBTQ0KPj4+PiBUbzogV2FuZywgU3Vubnkg KEhQUyBTVykgPG1haWx0bzpzdW5ueXdhbmdAaHBlLmNvbT47IA0KPj4+PiBtYWlsdG86ZGV2ZWxA ZWRrMi5ncm91cHMuaW8gPG1haWx0bzpkZXZlbEBlZGsyLmdyb3Vwcy5pbz4NCj4+Pj4gQ2M6IG1h aWx0bzp6aGljaGFvLmdhb0BpbnRlbC5jb20gPG1haWx0bzp6aGljaGFvLmdhb0BpbnRlbC5jb20+ OyANCj4+Pj4gbWFpbHRvOnJheS5uaUBpbnRlbC5jb20gPG1haWx0bzpyYXkubmlAaW50ZWwuY29t PjsgDQo+Pj4+IG1haWx0bzphcmQuYmllc2hldXZlbEBhcm0uY29tIDxtYWlsdG86YXJkLmJpZXNo ZXV2ZWxAYXJtLmNvbT47IA0KPj4+PiBtYWlsdG86bGVpZkBudXZpYWluYy5jb20gPG1haWx0bzps ZWlmQG51dmlhaW5jLmNvbT4NCj4+Pj4gU3ViamVjdDogUmU6IFtlZGsyLWRldmVsXSBbZWRrMl1b UEFUQ0ggMS8xXQ0KPj4+PiBNZGVNb2R1bGVQa2cvVWVmaUJvb3RNYW5hZ2VyTGliOiBTaWduYWwg UmVhZHlUb0Jvb3Qgb24gcGxhdGZvcm0gDQo+Pj4+IHJlY292ZXJ5DQo+Pj4+DQo+Pj4+IE9uIDIw MjAuMDYuMTcgMTQ6MDQsIFdhbmcsIFN1bm55IChIUFMgU1cpIHdyb3RlOg0KPj4+Pj4gVGhhbmtz IGZvciBjaGVja2luZyBteSBjb21tZW50cywgUGV0ZS4NCj4+Pj4+DQo+Pj4+Pj4gT3IgaXMgdGhl ICJvbmUgbW9yZSIgdGhlIGlzc3VlLCBtZWFuaW5nIHRoYXQgaXQgd291bGQgZ2V0IA0KPj4+Pj4+ IHNpZ25hbGVkIG1vcmUgdGhhbiBvbmNlPw0KPj4+Pj4gW1N1bm55XSBZZWFoLCBpdCB3b3VsZCBn ZXQgc2lnbmFsZWQgbW9yZSB0aGFuIG9uY2UgaWYgdGhlIA0KPj4+Pj4gUGxhdGZvcm1SZWNvdmVy eSBvcHRpb24gKGEgVUVGSSBhcHBsaWNhdGlvbikgY2FsbHMNCj4+Pj4+IEVmaUJvb3RNYW5hZ2Vy Qm9vdCgpIHRvIGxhdW5jaCB0aGUgcmVjb3ZlcmVkIGJvb3Qgb3B0aW9uIGluc2lkZSBvZiANCj4+ Pj4+IHRoZSBhcHBsaWNhdGlvbi4NCj4+Pj4NCj4+Pj4gT2theS4NCj4+Pj4NCj4+Pj4gT25lIGVs ZW1lbnQgdGhhdCBJJ20gZ29pbmcgdG8gcG9pbnQgb3V0IGlzIHRoYXQsIHdpdGggdGhlIGN1cnJl bnQgDQo+Pj4+IEVESzIgY29kZSAoaS5lLiB3aXRob3V0IHRoaXMgcHJvcG9zYWwgYXBwbGllZCks IGFuZCBhZnRlciBhIHVzZXIgDQo+Pj4+IGdvZXMgaW50byB0aGUgc2V0dXAgdG8gc2F2ZSB0aGVp ciBib290IG9wdGlvbnMgaW4gb3JkZXIgZm9yIHJlZ3VsYXIgDQo+Pj4+IGJvb3Qgb3B0aW9ucyB0 byBnZXQgZXhlY3V0ZWQgaW5zdGVhZCBvZiBQbGFmb3JtUmVjb3ZlcnksIHRoZSANCj4+Pj4gT25S ZWFkeVRvQm9vdCBldmVudCBpcyBhY3R1YWxseSBjYWxsZWQgdHdpY2UuDQo+Pj4+DQo+Pj4+IFNv IG15IHVuZGVyc3RhbmRpbmcgaXMgdGhhdCwgd2hpbGUgd2Ugb2YgY291cnNlIHdhbnQgdG8gYXZv aWQgdGhpcyANCj4+Pj4gYW5kIGFueSBwYXRjaCBwcm9wb3NhbCBzaG91bGQgYWN0aXZlbHkgdHJ5 IHRvIHByZXZlbnQgaXQsIGl0IHNlZW1zIA0KPj4+PiB3ZSBhbHJlYWR5IGhhdmUgYmVoYXZpb3Vy IGluIEVESzIgdGhhdCBjYW4gbGVhZCB0byBPblJlYWR5VG9Cb290IA0KPj4+PiBiZWluZyBzaWdu YWxsZWQgbW9yZSB0aGFuIG9uY2UuDQo+Pj4+DQo+Pj4+IEF0IGxlYXN0IHRoZSBjdXJyZW50IFBp IDQgcGxhdGZvcm0gZG9lcyBkZW1vbnN0cmF0ZSB0aGlzIGJlaGF2aW91ci4gDQo+Pj4+IEZvciBp bnN0YW5jZSwgaWYgeW91IHJ1biBERUJVRywgeW91IHdpbGwgc2VlIHR3byBpbnN0YW5jZXMgb2Y6 DQo+Pj4+DQo+Pj4+IMKgwqDCoMKgIFJlbW92ZUR0U3Rkb3V0UGF0aDogY291bGQgbm90IHJldHJp ZXZlIERUIGJsb2IgLSBOb3QgRm91bmQNCj4+Pj4NCj4+Pj4gd2hpY2ggaXMgYSBvbmUtaW5zdGFu Y2UgbWVzc2FnZSBnZW5lcmF0ZWQgZnJvbSB0aGUgQ29uc29sZVByZWZEeGUncw0KPj4+PiBPblJl YWR5VG9Cb290KCkgY2FsbC4gSSd2ZSBhbHNvIGNvbmZpcm1lZCBtb3JlIHNwZWNpZmljYWxseSB0 aGF0DQo+Pj4+IE9uUmVhZHlUb0Jvb3QoKSBpcyBpbmRlZWQgY2FsbGVkIHR3aWNlLg0KPj4+Pg0K Pj4+PiBJIGRvbid0IHJlY2FsbCB1cyBkb2luZyBtdWNoIG9mIGFueSBzcGVjaWFsIHdpdGggcmVn YXJkcyB0byBib290IA0KPj4+PiBvcHRpb25zIGZvciB0aGUgUGkgcGxhdGZvcm0sIHNvIG15IGd1 ZXNzIGlzIHRoYXQgaXQncyBwcm9iYWJseSBub3QgDQo+Pj4+IHRoZSBvbmx5IHBsYXRmb3JtIHdo ZXJlIE9uUmVhZHlUb0Jvb3QgbWlnaHQgYmUgc2lnbmFsbGVkIG1vcmUgdGhhbiANCj4+Pj4gb25j ZSwgYW5kIHRoYXQgdGhpcyBtaWdodCBiZSB0aWVkIHRvIGEgZGVmYXVsdCBFREsyIGJlaGF2aW91 ci4gDQo+Pj4+IFRoZXJlZm9yZSBJIGRvbid0IHNlZSBoYXZpbmcgYSByZXBlYXRlZCBldmVudCBh cyBhIG1ham9yIGRlYWwgDQo+Pj4+IGJyZWFrZXIgKHRob3VnaCwgYWdhaW4sIGlmIHdlIGNhbiBh dm9pZCB0aGF0LCB3ZSBvZiBjb3Vyc2Ugd2lsbCANCj4+Pj4gd2FudCB0bykuDQo+Pj4+DQo+Pj4+ Pj4gSSBkb24ndCBtaW5kIHRyeWluZyBhbiBhbHRlcm5hdGl2ZSBhcHByb2FjaCwgYnV0IEkgZG9u J3QgDQo+Pj4+Pj4gdW5kZXJzdGFuZCBob3cgd2hhdCB5b3UgZGVzY3JpYmUgd291bGQgaGVscC4g Q2FuIHlvdSBwbGVhc2UgYmUgDQo+Pj4+Pj4gbW9yZSBzcGVjaWZpYyBhYm91dCB3aGF0IHlvdSBo YXZlIGluIG1pbmQ/DQo+Pj4+PiBbU3VubnldIFN1cmUuIEkgYWRkZWQgbW9yZSBpbmZvcm1hdGlv biBiZWxvdy4gSWYgaXQgaXMgc3RpbGwgbm90IA0KPj4+Pj4gY2xlYXIgZW5vdWdoLCBmZWVsIGZy ZWUgdG8gbGV0IG1lIGtub3cuDQo+Pj4+PiDCoMKgwqDCoMKgwqDCoCAxLiBDcmVhdGUgYSBVRUZJ IGFwcGxpY2F0aW9uIHdpdGggdGhlIGNvZGUgdG8gc2lnbmFsIA0KPj4+Pj4gUmVhZHlUb0Jvb3Qg YW5kIHBpY2sgL2VmaS9ib290L2Jvb3RhYTY0LmVmaSBmcm9tIGVpdGhlciBTRCBvciBVU0IgDQo+ Pj4+PiBhbmQgcnVuIGl0Lg0KPj4+Pg0KPj4+PiBTbyB0aGF0IHdvdWxkIGJhc2ljYWxseSBiZSBh ZGRpbmcgY29kZSB0aGF0IGR1cGxpY2F0ZXMsIGluIHBhcnQsIA0KPj4+PiB3aGF0IFBsYXRmb3Jt IFJlY292ZXJ5IGFscmVhZHkgZG9lcy4NCj4+Pj4NCj4+Pj4gSSBoYXZlIHRvIGJlIGhvbmVzdDog RXZlbiBvdXRzaWRlIG9mIHRoZSBleHRyYSB3b3JrIHRoaXMgd291bGQgDQo+Pj4+IHJlcXVpcmUs IEkgZG9uJ3QgcmVhbGx5IGxpa2UgdGhlIGlkZWEgb2YgaGF2aW5nIHRvIHdyaXRlIG91ciBvd24g DQo+Pj4+IGFwcGxpY2F0aW9uLCBhcyBpdCB3aWxsIGludHJvZHVjZSBuZXcgcG9zc2libGUgcG9p bnRzIG9mIGZhaWx1cmVzIA0KPj4+PiBhbmQgcmVxdWlyZSBleHRyYSBtYWludGVuYW5jZSAoZXNw ZWNpYWxseSBhcyB3ZSB3aWxsIHdhbnQgdG8gYmUgDQo+Pj4+IGFibGUgdG8gaGFuZGxlIG5ldHdv cmsgYm9vdCBhbmQgb3RoZXIgb3B0aW9ucywgYW5kIGJlZm9yZSBsb25nLCBJIA0KPj4+PiBmZWFy IHRoYXQgd2UncmUgZ29pbmcgdG8gaGF2ZSB0byB3cml0ZSBvdXIgb3duIFBpIHNwZWNpZmljIGJv b3QgDQo+Pj4+IG1hbmFnZXIpLiBEb2luZyBzbyBzaW1wbHkgYmVjYXVzZSB0aGUgY3VycmVudCBQ bGF0Zm9ybSBSZWNvdmVyeSwgDQo+Pj4+IHdoaWNoIGRvZXMgc3VpdCBvdXIgbmVlZHMgb3RoZXJ3 aXNlLCBpcyBub3QgZGVzaWduZWQgdG8gY2FsbCANCj4+Pj4gUmVhZHlUb0Jvb3QgZG9lcyBub3Qg c2VlbSBsaWtlIHRoZSBiZXN0IGNvdXJzZSBvZiBhY3Rpb24gaW4gbXkgDQo+Pj4+IGJvb2suDQo+ Pj4+DQo+Pj4+IEluc3RlYWQsIEkgc3RpbGwgbG9naWNhbGx5IGJlbGlldmUgdGhhdCBhbnkgb3B0 aW9uIHRoYXQgY2FsbHMgYSANCj4+Pj4gYm9vdCBsb2FkZXIgc2hvdWxkIHNpZ25hbCBSZWFkeVRv Qm9vdCwgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGl0IHdhcyANCj4+Pj4gbGF1bmNoZWQgZnJvbSBC b290IE1hbmFnZXIgb3IgUGxhdGZvcm0gUmVjb3ZlcnksIGFuZCB0aGF0IGl0IA0KPj4+PiBzaG91 bGRuJ3QgYmUgbGVmdCB0byBlYWNoIHBsYXRmb3JtIHRvIHdvcmsgYXJvdW5kIHRoYXQuDQo+Pj4+ DQo+Pj4+IE9mIGNvdXJzZSwgSSB1bmRlcnN0YW5kIHRoYXQgdGhpcyB3b3VsZCByZXF1aXJlIGEg c3BlY3MgY2hhbmdlLCBhbmQgDQo+Pj4+IHRoYXQgaXQgYWxzbyBtYXkgaGF2ZSByYW1pZmljYXRp b25zIGZvciBleGlzdGluZyBwbGF0Zm9ybXMgdGhhdCANCj4+Pj4gaW50ZXJwcmV0IHRoZSBjdXJy ZW50IHNwZWNzIHBlZGFudGljYWxseS4gQnV0IHRvIG1lLCByZWdhcmRsZXNzIG9mIA0KPj4+PiB3 aGF0IHRoZSBzcGVjcyBhcHBlYXIgdG8gYmUgbGltaXRpbmcgaXQgdG8gcmlnaHQgbm93LCB0aGUg bG9naWMgb2YgDQo+Pj4+IGEgIlJlYWR5VG9Cb290Ig0KPj4+PiBldmVudCBpcyB0aGF0IGl0IHNo b3VsZCBiZSBzaWduYWxsZWQgd2hlbmV2ZXIgYSBib290bG9hZGVyIGlzIGFib3V0IA0KPj4+PiB0 byBiZSBleGVjdXRlZCwgcmF0aGVyIHRoYW4gb25seSB3aGVuIGEgYm9vdGxvYWRlciBoYXBwZW5l ZCB0byBiZSANCj4+Pj4gbGF1bmNoZWQgdGhyb3VnaCBhIGZvcm1hbCBCb290IE1hbmFnZXIgb3B0 aW9uLg0KPj4+Pg0KPj4+PiBJIHdvdWxkIHRoZXJlZm9yZSBhcHByZWNpYXRlIGlmIG90aGVyIHBl b3BsZSBjb3VsZCB3ZWlnaCBpbiBvbiB0aGlzIA0KPj4+PiBtYXR0ZXIsIHRvIHNlZSBpZiBJJ20g dGhlIG9ubHkgb25lIHdobyBiZWxpZXZlcyB0aGF0IHdlIGNvdWxkIA0KPj4+PiB1bHRpbWF0ZWx5 IGhhdmUgbW9yZSB0byBnYWluIGZyb20gc2lnbmFsbGluZyBSZWFkeVRvQm9vdCB3aXRoIA0KPj4+ PiBQbGF0Zm9ybVJlY292ZXJ5IG9wdGlvbnMgdGhhbiBsZWF2aW5nIHRoaW5ncyBhcyB0aGV5IHN0 YW5kIHJpZ2h0IA0KPj4+PiBub3cuLi4NCj4+Pj4NCj4+Pj4+IMKgwqDCoMKgwqDCoMKgIDIuIFRo ZW4sIGNhbGwgRWZpQm9vdE1hbmFnZXJJbml0aWFsaXplTG9hZE9wdGlvbiBsaWtlIHRoZSANCj4+ Pj4+IGZvbGxvd2luZyBpbiBhIERYRSBkcml2ZXIgb3Igb3RoZXIgcGxhY2VzIGJlZm9yZSAiRGVm YXVsdCANCj4+Pj4+IFBsYXRmb3JtUmVjb3ZlcnkiIHJlZ2lzdHJhdGlvbjoNCj4+Pj4+IMKgwqDC oMKgIFN0YXR1cyA9IEVmaUJvb3RNYW5hZ2VySW5pdGlhbGl6ZUxvYWRPcHRpb24gKA0KPj4+Pj4g wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICZMb2FkT3B0aW9uLA0KPj4+Pj4gwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgDQo+Pj4+PiAwLA0KPj4+Pj4gLT4gMCBpcyB0aGUgT3B0 aW9uTnVtYmVyIHRvIGxldCBhcHBsaWNhdGlvbiBiZSBsb2FkIGJlZm9yZSAiDQo+Pj4+PiBEZWZh dWx0IFBsYXRmb3JtUmVjb3ZlcnkiIG9wdGlvbg0KPj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIExvYWRPcHRpb25UeXBlUGxhdGZvcm1SZWNvdmVyeSwNCj4+Pj4+IMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBMT0FEX09QVElPTl9BQ1RJVkUsDQo+Pj4+PiDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgTCJBcHBsaWNhdGlvbiBmb3IgcmVjb3ZlcmluZyBib290 IG9wdGlvbnMiLA0KPj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgDQo+Pj4+PiBG aWxlUGF0aCwNCj4+Pj4+IC0+IEZpbGVQYXRoIGlzIHRoZSBBcHBsaWNhdGlvbidzIGRldmljZSBw YXRoLA0KPj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIE5VTEwsDQo+Pj4+PiDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgMA0KPj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgICk7DQo+Pj4+Pg0KPj4+Pj4NCj4+Pj4+PiBNeSByZWFzb25pbmcgaXMgdGhh dCwgaWYgUGxhdGZvcm1SZWNvdmVyeSMjIyMgY2FuIGV4ZWN1dGUgYSANCj4+Pj4+PiByZWd1bGFy IGJvb3Rsb2FkZXIgbGlrZSAvZWZpL2Jvb3QvYm9vdCMjIyMuZWZpIGZyb20gaW5zdGFsbGF0aW9u IA0KPj4+Pj4+IG1lZGlhLCB0aGVuIGl0IHNob3VsZCBnbyB0aHJvdWdoIHRoZSBzYW1lIGtpbmQg b2YgaW5pdGlhbGl6YXRpb24gDQo+Pj4+Pj4gdGhhdCBoYXBwZW5zIGZvciBhIHJlZ3VsYXIgYm9v dCBvcHRpb24sIGFuZCB0aGF0IHNob3VsZCBpbmNsdWRlIA0KPj4+Pj4+IHNpZ25hbGluZyB0aGUg UmVhZHlUb0Jvb3QgZXZlbnQuDQo+Pj4+PiBbU3VubnldIFRoYW5rcyBmb3IgY2xhcmlmeWluZyB0 aGlzLCBhbmQgU29ycnkgYWJvdXQgdGhhdCBJIG1pc3NlZCANCj4+Pj4+IHlvdXIgY292ZXIgbGV0 dGVyIGZvciB0aGlzIHBhdGNoLsKgIEkgd2FzIGp1c3QgdGhpbmtpbmcgdGhhdCB3ZSBtYXkgDQo+ Pj4+PiBub3QgcmVhbGx5IG5lZWQgdG8gbWFrZSB0aGlzIGJlaGF2aW9yIGNoYW5nZSBpbiBib3Ro IEVESyBJSSBjb2RlIA0KPj4+Pj4gYW5kIFVFRkkgc3BlY2lmaWNhdGlvbiBmb3Igc29sdmluZyB0 aGUgcHJvYmxlbSBzcGVjaWZpYyB0byB0aGUgDQo+Pj4+PiBjYXNlIHRoYXQgT1MgaXMgbG9hZGVk IGJ5ICJEZWZhdWx0IFBsYXRmb3JtUmVjb3ZlcnkiIG9wdGlvbiwNCj4+Pj4NCj4+Pj4gVGhlIHdh eSBJIHNlZSBpdCBpcyB0aGF0IHRoZSBQaSBwbGF0Zm9ybSBpcyB1bmxpa2VseSB0byBiZSB0aGUg b25seSANCj4+Pj4gb25lIHdoZXJlIFBsYXRmb3JtUmVjb3ZlcnkgaXMgc2VlbiBhcyBhIG1lYW5z IHRvIGluc3RhbGwgYW4gT1MuIA0KPj4+PiBHcmFudGVkLCB0aGlzIG1heSBzZWVtIGxpa2UgYWJ1 c2luZyB0aGUgb3B0aW9uLCBidXQgc2luY2UgVUVGSSANCj4+Pj4gZG9lc24ndCBwcm92aWRlIGFu ICJJbml0aWFsIE9TIEluc3RhbGwiIG1vZGUsIEkgd291bGQgYXNzZXJ0IHRoYXQgDQo+Pj4+IGl0 IGFzIGdvb2QgYSB1c2Ugb2YgdGhpcyBvcHRpb24gYXMgYW55Lg0KPj4+Pg0KPj4+PiBJbiBvdGhl ciB3b3JkcywgSSBkb24ndCB0aGluayB0aGlzIGltcHJvdmVtZW50IHdvdWxkIG9ubHkgYmVuZWZp dCANCj4+Pj4gdGhlIFBpIHBsYXRmb3JtLg0KPj4+Pg0KPj4+Pj4gYW5kIEknbSBhbHNvIG5vdCBz dXJlIGlmIGl0IGlzIHdvcnRoIG1ha2luZyB0aGlzIGNoYW5nZSB0byBhZmZlY3QgDQo+Pj4+PiBz b21lIG9mIHRoZSBzeXN0ZW0gb3IgQklPUyB2ZW5kb3JzIHdobyBoYXZlIGltcGxlbWVudGVkIHRo ZWlyIA0KPj4+Pj4gUGxhdGZvcm1SZWNvdmVyeSBvcHRpb24uDQo+Pj4+DQo+Pj4+IFRoYXQncyBh IGxlZ2l0aW1hdGUgY29uY2VybiwgYW5kIEkgd291bGQgYWdyZWUgdGhlIG9uZSBtYWpvciANCj4+ Pj4gcG90ZW50aWFsIHBpdGZhbGwgb2YgdGhpcyBwcm9wb3NhbCwgaWYgdGhlcmUgaGFwcGVucyB0 byBleGlzdCBhIA0KPj4+PiBzeXN0ZW0gd2hlcmUgYW4gT25SZWFkeVRvQm9vdCBldmVuIGJlZm9y ZSBydW5uaW5nIHRoZSByZWNvdmVyeSANCj4+Pj4gb3B0aW9uIGNhbiBoYXZlIGFkdmVyc2UgZWZm ZWN0cy4NCj4+Pj4NCj4+Pj4gSSBkb24ndCByZWFsbHkgYmVsaWV2ZSB0aGF0IHN1Y2ggYSBzeXN0 ZW0gZXhpc3RzLCBiZWNhdXNlIEkgZXhwZWN0IA0KPj4+PiBtb3N0IHJlY292ZXJ5IGJvb3QgbG9h ZGVycyB0byBhbHNvIHdvcmsgKG9yIGF0IGxlYXN0IGhhdmUgYmVlbiANCj4+Pj4gZGVzaWduZWQg dG8NCj4+Pj4gd29yaykgYXMgcmVndWxhciBib290IG9wdGlvbnMuIEJ1dCBJIGRvbid0IGhhdmUg ZW5vdWdoIGV4cGVyaWVuY2UgDQo+Pj4+IHdpdGggcGxhdGZvcm0gcmVjb3ZlcnkgdG8ga25vdyBp ZiB0aGF0J3MgYSBjb3JyZWN0IGFzc2VydGlvbiB0byBtYWtlLi4uDQo+Pj4+DQo+Pj4+PiBJZiB0 aGUgYWx0ZXJuYXRpdmUgYXBwcm9hY2ggSSBtZW50aW9uZWQgd29ya3MgZm9yIHlvdSwgSSB0aGlu ayANCj4+Pj4+IHRoYXQgd291bGQgYmUgYW4gZWFzaWVyIHNvbHV0aW9uLg0KPj4+Pg0KPj4+PiBS aWdodCBub3csIGV2ZW4gYXMgdGhlIHBhdGNoIHByb3Bvc2FsIGhhcyBtdWx0aXBsZSBpc3N1ZXMg dGhhdCANCj4+Pj4gcmVxdWlyZSBpdCB0byBiZSBhbWVuZGVkIChEb24ndCBzaWduYWwgUmVhZHlU b0Jvb3QgZXhjZXB0IGZvciANCj4+Pj4gUGxhdGZvcm1SZWNvdmVyeQ0KPj4+PiArIFByZXZlbnQg c2l0dWF0aW9ucyB3aGVyZSBSZWFkeVRvQm9vdCBjb3VsZCBiZSBzaWduYWxsZWQgbXVsdGlwbGUN Cj4+Pj4gdGltZXMpIEkgc3RpbGwgc2VlIGl0IGFzIGJvdGggYW4gZWFzaWVyIHNvbHV0aW9uIHRo YW4gdGhlIA0KPj4+PiBhbHRlcm5hdGl2ZSwgYXMgd2VsbCBhcyBvbmUgdGhhdCAqc2hvdWxkKiBi ZW5lZml0IHBlb3BsZSB3aG8gZGVzaWduIA0KPj4+PiBQbGF0Zm9ybSBSZWNvdmVyeSBVRUZJIGFw cGxpY2F0aW9ucyBpbiB0aGUgbG9uZyBydW4uIFNvIHRoYXQgaXMgd2h5IA0KPj4+PiBJIGFtIHN0 aWxsIHRyeWluZyB0byBhZHZvY2F0ZSBmb3IgaXQuDQo+Pj4+DQo+Pj4+IEJ1dCBJIHZlcnkgbXVj aCBoZWFyIHlvdXIgY29uY2VybnMsIGFuZCBJIGFncmVlIHRoYXQgc3BlY3MgY2hhbmdlcyANCj4+ Pj4gYXJlIGJldHRlciBhdm9pZGVkIHdoZW4gcG9zc2libGUuDQo+Pj4+DQo+Pj4+IFRodXMsIGF0 IHRoaXMgc3RhZ2UsIGV2ZW4gYXMgSSBkb24ndCB3YW50IHRvIGRyYWcgdGhpcyBkaXNjdXNzaW9u IA0KPj4+PiBtdWNoIGZ1cnRoZXIsIEkgZG9uJ3QgZmVlbCBsaWtlIEkgd2FudCB0byBjb21taXQg dG8gb25lIHNvbHV0aW9uIG9yIA0KPj4+PiB0aGUgb3RoZXIgYmVmb3JlIHdlIGhhdmUgaGFkIGEg Y2hhbmNlIHRvIGhlYXIgb3RoZXIgcGVvcGxlLCB3aG8gbWF5IA0KPj4+PiBoYXZlIHRoZWlyIG93 biBvcGluaW9uIG9uIHRoZSBtYXR0ZXIsIGV4cHJlc3MgdGhlaXIgdmlld3MuDQo+Pj4+DQo+Pj4+ IFJlZ2FyZHMsDQo+Pj4+DQo+Pj4+IC9QZXRlDQo+Pj4+DQo+Pj4+DQo+Pj4+Pg0KPj4+Pj4gUmVn YXJkcywNCj4+Pj4+IFN1bm55IFdhbmcNCj4+Pj4+DQo+Pj4+PiAtLS0tLU9yaWdpbmFsIE1lc3Nh Z2UtLS0tLQ0KPj4+Pj4gRnJvbTogUGV0ZSBCYXRhcmQgW21haWx0bzpwZXRlQGFrZW8uaWVdDQo+ Pj4+PiBTZW50OiBXZWRuZXNkYXksIEp1bmUgMTcsIDIwMjAgNjo1OSBQTQ0KPj4+Pj4gVG86IFdh bmcsIFN1bm55IChIUFMgU1cpIDxtYWlsdG86c3Vubnl3YW5nQGhwZS5jb20+OyANCj4+Pj4+IG1h aWx0bzpkZXZlbEBlZGsyLmdyb3Vwcy5pbw0KPj4+Pj4gQ2M6IG1haWx0bzp6aGljaGFvLmdhb0Bp bnRlbC5jb207IG1haWx0bzpyYXkubmlAaW50ZWwuY29tOyANCj4+Pj4+IG1haWx0bzphcmQuYmll c2hldXZlbEBhcm0uY29tOyBtYWlsdG86bGVpZkBudXZpYWluYy5jb20NCj4+Pj4+IFN1YmplY3Q6 IFJlOiBbZWRrMi1kZXZlbF0gW2VkazJdW1BBVENIIDEvMV0NCj4+Pj4+IE1kZU1vZHVsZVBrZy9V ZWZpQm9vdE1hbmFnZXJMaWI6IFNpZ25hbCBSZWFkeVRvQm9vdCBvbiBwbGF0Zm9ybSANCj4+Pj4+ IHJlY292ZXJ5DQo+Pj4+Pg0KPj4+Pj4gSGkgU3VubnksIHRoYW5rcyBmb3IgbG9va2luZyBpbnRv IHRoaXMuDQo+Pj4+Pg0KPj4+Pj4gT24gMjAyMC4wNi4xNyAwOToxNiwgV2FuZywgU3VubnkgKEhQ UyBTVykgd3JvdGU6DQo+Pj4+Pj4gSGkgUGV0ZS4NCj4+Pj4+Pg0KPj4+Pj4+IFNpbmNlIHRoZSBF ZmlCb290TWFuYWdlclByb2Nlc3NMb2FkT3B0aW9uIGlzIGNhbGxlZCBieSANCj4+Pj4+PiBQcm9j ZXNzTG9hZE9wdGlvbnMgYXMgd2VsbCwgeW91ciBjaGFuZ2Ugd291bGQgYWxzbyBjYXVzZSBzb21l IA0KPj4+Pj4+IHVuZXhwZWN0ZWQgYmVoYXZpb3IgbGlrZToNCj4+Pj4+PiAxLiBTaWduYWwgb25l IG1vcmUgUmVhZHlUb0Jvb3QgZm9yIHRoZSBQbGF0Zm9ybVJlY292ZXJ5IG9wdGlvbiANCj4+Pj4+ PiB3aGljaCBpcyBhbiBhcHBsaWNhdGlvbiB0aGF0IGNhbGxzIEVmaUJvb3RNYW5hZ2VyQm9vdCgp IHRvIGxhdW5jaCANCj4+Pj4+PiBpdHMgcmVjb3ZlcmVkIGJvb3Qgb3B0aW9uLg0KPj4+Pj4NCj4+ Pj4+IEknbSBub3Qgc3VyZSBJIHVuZGVyc3RhbmQgaG93IHRoaXMgcGFydCBpcyB1bndhbnRlZC4N Cj4+Pj4+DQo+Pj4+PiBUaGUgcG9pbnQgb2YgdGhpcyBwYXRjaCBpcyB0byBlbnN1cmUgdGhhdCBS ZWFkeVRvQm9vdCBpcyBzaWduYWxsZWQgDQo+Pj4+PiBmb3IgdGhlIFBsYXRmb3JtUmVjb3Zlcnkg b3B0aW9uLCBzbyBpc24ndCB3aGF0IHlvdSBkZXNjcmliZSBhYm92ZSANCj4+Pj4+IGV4YWN0bHkg d2hhdCB3ZSB3YW50Pw0KPj4+Pj4NCj4+Pj4+IE9yIGlzIHRoZSAib25lIG1vcmUiIHRoZSBpc3N1 ZSwgbWVhbmluZyB0aGF0IGl0IHdvdWxkIGdldCANCj4+Pj4+IHNpZ25hbGxlZCBtb3JlIHRoYW4g b25jZT8NCj4+Pj4+DQo+Pj4+Pg0KPj4+Pj4+IDIuIFNpZ25hbCBSZWFkeVRvQm9vdCBmb3IgU3lz UHJlcCMjIyMgb3IgRHJpdmVyIyMjIyB0aGF0IGlzIG5vdCANCj4+Pj4+PiByZWFsbHkgYSAiYm9v dCIgb3B0aW9uLg0KPj4+Pj4NCj4+Pj4+IFllcywgSSd2ZSBiZWVuIHdvbmRlcmluZyBhYm91dCB0 aGF0LCBiZWNhdXNlIEJkc0VudHJ5LmMncyANCj4+Pj4+IFByb2Nlc3NMb2FkT3B0aW9ucygpLCB3 aGljaCBjYWxscyANCj4+Pj4+IEVmaUJvb3RNYW5hZ2VyUHJvY2Vzc0xvYWRPcHRpb24oKSwNCj4+ Pj4+IG1lbnRpb25zIHRoYXQgaXQgd2lsbCBsb2FkIHdpbGwgbG9hZCBhbmQgc3RhcnQgZXZlcnkg RHJpdmVyIyMjIywgDQo+Pj4+PiBTeXNQcmVwIyMjIyBvciBQbGF0Zm9ybVJlY292ZXJ5IyMjIy4g QnV0IHRoZSBjb21tZW50IGFib3V0IHRoZQ0KPj4+Pj4gd2hpbGUoKSBsb29wIGluIEVmaUJvb3RN YW5hZ2VyUHJvY2Vzc0xvYWRPcHRpb24oKSBvbmx5IG1lbnRpb25zIA0KPj4+Pj4gUGxhdGZvcm1S ZWNvdmVyeSMjIyMuDQo+Pj4+Pg0KPj4+Pj4gSWYgbmVlZGVkLCBJIGd1ZXNzIHdlIGNvdWxkIGFt ZW5kIHRoZSBwYXRjaCB0byBkZXRlY3QgdGhlIHR5cGUgb2YgDQo+Pj4+PiBvcHRpb24gYW5kIG9u bHkgc2lnbmFsIFJlYWR5VG9Cb290IGZvciBQbGF0Zm9ybVJlY292ZXJ5IyMjIy4NCj4+Pj4+DQo+ Pj4+Pj4gVG8gc29sdmUgeW91ciBwcm9ibGVtLCBjcmVhdGluZyBhIFBsYXRmb3JtUmVjb3Zlcnkg b3B0aW9uIHdpdGggDQo+Pj4+Pj4gdGhlIHNtYWxsZXN0IG9wdGlvbiBudW1iZXIgYW5kIHVzaW5n IGl0IGluc3RlYWQgb2YgZGVmYXVsdCBvbmUgDQo+Pj4+Pj4gKHdpdGggc2hvcnQtZm9ybSBGaWxl IFBhdGggTWVkaWEgRGV2aWNlIFBhdGgpIGxvb2tzIGxpa2UgYSANCj4+Pj4+PiBzaW1wbGVyIHNv bHV0aW9uLg0KPj4+Pj4NCj4+Pj4+IEkgZG9uJ3QgbWluZCB0cnlpbmcgYW4gYWx0ZXJuYXRpdmUg YXBwcm9hY2gsIGJ1dCBJIGRvbid0IA0KPj4+Pj4gdW5kZXJzdGFuZCBob3cgd2hhdCB5b3UgZGVz Y3JpYmUgd291bGQgaGVscC4gQ2FuIHlvdSBwbGVhc2UgYmUgDQo+Pj4+PiBtb3JlIHNwZWNpZmlj IGFib3V0IHdoYXQgeW91IGhhdmUgaW4gbWluZD8NCj4+Pj4+DQo+Pj4+PiBPdXIgbWFpbiBpc3N1 ZSBoZXJlIGlzIHRoYXQgd2UgbXVzdCBoYXZlIFJlYWR5VG9Cb290IHNpZ25hbGxlZCBzbyANCj4+ Pj4+IHRoYXQgdGhlIFJlYWR5VG9Cb290KCkgZnVuY3Rpb24gY2FsbGJhY2sgZnJvbSANCj4+Pj4+ IEVtYmVkZGVkUGtnL0RyaXZlcnMvQ29uc29sZVByZWZEeGUgZ2V0cyBleGVjdXRlZCBpbiBvcmRl ciBmb3IgdGhlIA0KPj4+Pj4gYm9vdCBsb2FkZXIgaW52b2tlZCBmcm9tIFBsYXRmb3JtUmVjb3Zl cnkjIyMjwqAgdG8gdXNlIGEgcHJvcGVybHkgDQo+Pj4+PiBpbml0aWFsaXplZCBncmFwaGljYWwg Y29uc29sZS4gU28gSSdtIG5vdCBzdXJlIEkgcXVpdGUgZ2V0IGhvdyANCj4+Pj4+IHN3aXRjaGlu ZyBmcm9tIG9uZSBQbGF0Zm9ybVJlY292ZXJ5IyMjIyBvcHRpb24gdG8gYW5vdGhlciB3b3VsZCAN Cj4+Pj4+IGltcHJvdmUgdGhpbmdzLg0KPj4+Pj4NCj4+Pj4+IElmIGl0IGhlbHBzLCBoZXJlIGlz IHdoYXQgd2UgY3VycmVudGx5IGRlZmF1bHQgdG8sIGluIHRlcm1zIG9mIA0KPj4+Pj4gYm9vdCBv cHRpb25zLCBvbiBhIFJhc3BiZXJyeSBQaSA0IHBsYXRmb3JtIHdpdGggYSBuZXdseSBidWlsZCBm aXJtd2FyZToNCj4+Pj4+DQo+Pj4+PiBbQmRzXT09PT09PT09PT09PT1CZWdpbiBMb2FkIE9wdGlv bnMgRHVtcGluZyAuLi49PT09PT09PT09PT09DQo+Pj4+PiDCoMKgwqDCoMKgIERyaXZlciBPcHRp b25zOg0KPj4+Pj4gwqDCoMKgwqDCoCBTeXNQcmVwIE9wdGlvbnM6DQo+Pj4+PiDCoMKgwqDCoMKg IEJvb3QgT3B0aW9uczoNCj4+Pj4+IMKgwqDCoMKgwqDCoMKgIEJvb3QwMDAwOiBVaUFwcMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIDB4MDEwOQ0KPj4+Pj4gwqDCoMKgwqDCoMKgwqAgQm9vdDAw MDE6IFVFRkkgU2hlbGzCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAweDAwMDANCj4+ Pj4+IMKgwqDCoMKgwqAgUGxhdGZvcm1SZWNvdmVyeSBPcHRpb25zOg0KPj4+Pj4gwqDCoMKgwqDC oMKgwqAgUGxhdGZvcm1SZWNvdmVyeTAwMDA6IERlZmF1bHQgUGxhdGZvcm1SZWNvdmVyecKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgDQo+Pj4+PiAweDAwMDEgW0Jkc109PT09PT09PT09PT09 RW5kIExvYWQgT3B0aW9ucyBEdW1waW5nPT09PT09PT09PT09PQ0KPj4+Pj4NCj4+Pj4+IFdpdGgg dGhpcywgUGxhdGZvcm1SZWNvdmVyeTAwMDAgZ2V0cyBleGVjdXRlZCBieSBkZWZhdWx0LCB3aGlj aCBpcyANCj4+Pj4+IHdoYXQgd2Ugd2FudCwgc2luY2UgaXQgd2lsbCBwaWNrIC9lZmkvYm9vdC9i b290YWE2NC5lZmkgZnJvbSANCj4+Pj4+IGVpdGhlciBTRCBvciBVU0IgYW5kIHJ1biBpdCwgdGhl IG9ubHkgaXNzdWUgYmVpbmcgdGhhdCwgYmVjYXVzZSANCj4+Pj4+IFJlYWR5VG9Cb290IGhhcyBu b3QgYmVlbiBleGVjdXRlZCwgdGhlIGdyYXBoaWNhbCBjb25zb2xlIGlzIG5vdCANCj4+Pj4+IG9w ZXJhdGl2ZSBzbyB1c2VycyBjYW4ndCBpbnRlcmFjdCB3aXRoIHRoZSBPUyBpbnN0YWxsZXIuDQo+ Pj4+Pg0KPj4+Pj4gU28gSSdtIHJlYWxseSBub3Qgc3VyZSBob3cgYWRkaW5nIGFuIGV4dHJhIFBs YXRmb3JtUmVjb3ZlcnkjIyMjIA0KPj4+Pj4gd291bGQgaGVscC4gQW5kIEknbSBhbHNvIG5vdCB0 b28gZmFtaWxpYXIgd2l0aCBob3cgb25lIHdvdWxkIGdvIA0KPj4+Pj4gYXJvdW5kIHRvIGFkZCBz dWNoIGFuIGVudHJ5Li4uDQo+Pj4+Pg0KPj4+Pj4+IEJ5IHRoZSB3YXksIEkgYWxzbyBjaGVja2Vk IHRoZSBVRUZJIHNwZWNpZmljYXRpb24uIEl0IGxvb2tzIA0KPj4+Pj4+IG1ha2luZyBzZW5zZSB0 byBvbmx5IHNpZ25hbCBSZWFkeVRvQm9vdCBmb3IgYm9vdCBvcHRpb24gKEJvb3QjIyMjKS4NCj4+ Pj4+DQo+Pj4+PiBUaGF0J3Mgc29tZXRoaW5nIEkgY29uc2lkZXJlZCB0b28sIGJ1dCBJIGRpc2Fn cmVlIHdpdGggdGhpcyANCj4+Pj4+IGNvbmNsdXNpb24uDQo+Pj4+Pg0KPj4+Pj4gTXkgcmVhc29u aW5nIGlzIHRoYXQsIGlmIFBsYXRmb3JtUmVjb3ZlcnkjIyMjIGNhbiBleGVjdXRlIGEgDQo+Pj4+ PiByZWd1bGFyIGJvb3Rsb2FkZXIgbGlrZSAvZWZpL2Jvb3QvYm9vdCMjIyMuZWZpIGZyb20gaW5z dGFsbGF0aW9uIA0KPj4+Pj4gbWVkaWEsIHRoZW4gaXQgc2hvdWxkIGdvIHRocm91Z2ggdGhlIHNh bWUga2luZCBvZiBpbml0aWFsaXphdGlvbiANCj4+Pj4+IHRoYXQgaGFwcGVucyBmb3IgYSByZWd1 bGFyIGJvb3Qgb3B0aW9uLCBhbmQgdGhhdCBzaG91bGQgaW5jbHVkZSANCj4+Pj4+IHNpZ25hbGxp bmcgdGhlIFJlYWR5VG9Cb290IGV2ZW50Lg0KPj4+Pj4NCj4+Pj4+IElmIHRoZXJlIHdhcyBhIHNw ZWNpYWwgYm9vdGxvYWRlciBmb3IgUGxhdGZvcm1SZWNvdmVyeSMjIyMgKGUuZy4NCj4+Pj4+IC9l ZmkvYm9vdC9yZWNvdmVyeSMjIyMuZWZpKSB0aGVuIEkgd291bGQgYWdyZWUgd2l0aCBvbmx5IA0K Pj4+Pj4gc2lnbmFsbGluZyBSZWFkeVRvQm9vdCBmb3IgYSBmb3JtYWwgQm9vdCMjIyMgb3B0aW9u LiBCdXQgdGhhdCANCj4+Pj4+IGlzbid0IHRoZSBjYXNlLCBzbyBJIHRoaW5rIGl0IGlzIHJlYXNv bmFibGUgdG8gd2FudCB0byBoYXZlIA0KPj4+Pj4gUmVhZHlUb0Jvb3QgYWxzbyBvY2N1ciB3aGVu IGEgL2VmaS9ib290L2Jvb3QjIyMjLmVmaSBib290bG9hZGVyIGlzIA0KPj4+Pj4gZXhlY3V0ZWQg ZnJvbSBQbGF0Zm9ybVJlY292ZXJ5IyMjIy4sIGVzcGVjaWFsbHkgd2hlbiB3ZSBrbm93IGl0IA0K Pj4+Pj4gY2FuIGJlIGNydWNpYWwgdG8gZW5zdXJpbmcgdGhhdCB0aGUgZW5kIHVzZXIgY2FuIGFj dHVhbGx5IHVzZSB0aGUgZ3JhcGhpY2FsIGNvbnNvbGUuDQo+Pj4+Pg0KPj4+Pj4+IFRoZXJlZm9y ZSwgeW91ciBjaGFuZ2UgbWF5IGFsc28gcmVxdWlyZSBzcGVjaWZpY2F0aW9uIGNoYW5nZS4NCj4+ Pj4+DQo+Pj4+PiBZZXMsIEkgbWVudGlvbmVkIHRoYXQgaW4gdGhlIGNvdmVyIGxldHRlciBmb3Ig dGhpcyBwYXRjaA0KPj4+Pj4gKGh0dHBzOi8vbmFtMDQuc2FmZWxpbmtzLnByb3RlY3Rpb24ub3V0 bG9vay5jb20vP3VybD1odHRwcyUzQSUyRiUyDQo+Pj4+PiBGZWRrMi5ncm91cHMuaW8lMkZnJTJG ZGV2ZWwlMkZtZXNzYWdlJTJGNjEzMjcmYW1wO2RhdGE9MDIlN0MwMSU3Q2ENCj4+Pj4+IHdhcmtl bnRpbiU0MHZtd2FyZS5jb20lN0M1ZjkwZDA3N2JjNzk0OWMxMTIyZjA4ZDgxMmRjNDhkMyU3Q2Iz OTEzOA0KPj4+Pj4gY2EzY2VlNGI0YWE0ZDZjZDgzZDlkZDYyZjAlN0MwJTdDMCU3QzYzNzI4MDA4 NDYxMTc0OTMyNCZhbXA7c2RhdGE9DQo+Pj4+PiAyJTJCJTJGY3ZNa3JtWkdUUlJMREdTdU1zS2Jp eURPR3R3WXdaN3FTcU15TWljYyUzRCZhbXA7cmVzZXJ2ZWQ9MA0KPj4+Pj4gKSwgd2hpY2ggYWxz byBkZXNjcmliZXMgdGhlIGlzc3VlIHdlIGFyZSB0cnlpbmcgdG8gc29sdmUgaW4gDQo+Pj4+PiBn cmVhdGVyIGRldGFpbHMuIFRoaXMgaXMgd2hhdCBJIHdyb3RlOg0KPj4+Pj4NCj4+Pj4+IC0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQ0KPj4+Pj4gLS0tLS0tDQo+Pj4+Pg0KPj4+Pj4gTm90ZSBob3dldmVyIHRoYXQgdGhpcyBt YXkgcmVxdWlyZSBhIHNwZWNzIHVwZGF0ZSwgYXMgdGhlIGN1cnJlbnQgDQo+Pj4+PiBVRUZJIHNw ZWNzIGZvciBFRklfQk9PVF9TRVJWSUNFUy5DcmVhdGVFdmVudEV4KCkgaGF2ZToNCj4+Pj4+DQo+ Pj4+PiDCoMKgwqAgPsKgIEVGSV9FVkVOVF9HUk9VUF9SRUFEWV9UT19CT09UDQo+Pj4+PiDCoMKg wqAgPsKgwqDCoCBUaGlzIGV2ZW50IGdyb3VwIGlzIG5vdGlmaWVkIGJ5IHRoZSBzeXN0ZW0gd2hl biB0aGUgQm9vdCANCj4+Pj4+IE1hbmFnZXINCj4+Pj4+IMKgwqDCoCA+wqDCoMKgIGlzIGFib3V0 IHRvIGxvYWQgYW5kIGV4ZWN1dGUgYSBib290IG9wdGlvbi4NCj4+Pj4+DQo+Pj4+PiBhbmQsIG9u Y2UgdGhpcyBwYXRjaCBoYXMgYmVlbiBhcHBsaWVkLCB3ZSBtYXkgd2FudCB0byB1cGRhdGUgdGhp cyANCj4+Pj4+IHNlY3Rpb24gdG8gbWVudGlvbiB0aGF0IGl0IGFwcGxpZXMgdG8gYm90aCBCb290 IE1hbmFnZXIgYW5kIA0KPj4+Pj4gUGxhdGZvcm0gUmVjb3ZlcnkuDQo+Pj4+PiAtLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0N Cj4+Pj4+IC0tLS0tLQ0KPj4+Pj4NCj4+Pj4+DQo+Pj4+Pg0KPj4+Pj4gQWdhaW4sIEkgZG9uJ3Qg aGF2ZSBhbiBpc3N1ZSB3aXRoIHRyeWluZyB0byB1c2UgYW4gYWx0ZXJuYXRlIA0KPj4+Pj4gYXBw cm9hY2ggdG8gc29sdmUgb3VyIHByb2JsZW0gKHRob3VnaCBJIHVsdGltYXRlbHkgYmVsaWV2ZSB0 aGF0LCANCj4+Pj4+IGlmIFBsYXRmb3JtUmVjb3ZlcnkjIyMjIGNhbiBsYXVuY2ggYSAvZWZpL2Jv b3QvYm9vdCMjIyMuZWZpIA0KPj4+Pj4gYm9vdGxvYWRlciB0aGVuIHdlIG11c3QgdXBkYXRlIHRo ZSBzcGVjcyBhbmQgdGhlIGNvZGUgdG8gaGF2ZSANCj4+Pj4+IFJlYWR5VG9Cb290IGFsc28gc2ln bmFsbGVkIHRoZW4sIGJlY2F1c2UgdGhhdCdzIHRoZSBsb2dpY2FsIHRoaW5nIA0KPj4+Pj4gdG8g ZG8pLiBCdXQgcmlnaHQgbm93LCBJJ20gbm90IHNlZWluZyBob3cgdG8gYWNoaWV2ZSB0aGF0IHdo ZW4gDQo+Pj4+PiBQbGF0Zm9ybVJlY292ZXJ5IyMjIyBpcyB0aGUgb3B0aW9uIHRoYXQgaXMgdXNl ZCB0byBsYXVuY2ggdGhlIE9TIA0KPj4+Pj4gaW5zdGFsbGF0aW9uIHRoZSBib290bG9hZGVyLiBT byBpZiB5b3UgY2FuIHByb3ZpZGUgbW9kZSBkZXRhaWxzIG9uIA0KPj4+Pj4gaG93IGV4YWN0bHkg eW91IHRoaW5rIGNyZWF0aW5nIGFuIGFsdGVybmF0ZSBQbGF0Zm9ybVJlY292ZXJ5IA0KPj4+Pj4g b3B0aW9uIHdvdWxkIGhlbHAsIEkgd291bGQgYXBwcmVjaWF0ZSBpdC4NCj4+Pj4+DQo+Pj4+PiBS ZWdhcmRzLA0KPj4+Pj4NCj4+Pj4+IC9QZXRlDQo+Pj4+Pg0KPj4+Pj4+DQo+Pj4+Pj4gUmVnYXJk cywNCj4+Pj4+PiBTdW5ueSBXYW5nDQo+Pj4+Pj4NCj4+Pj4+PiAtLS0tLU9yaWdpbmFsIE1lc3Nh Z2UtLS0tLQ0KPj4+Pj4+IEZyb206IG1haWx0bzpkZXZlbEBlZGsyLmdyb3Vwcy5pbyBbbWFpbHRv OmRldmVsQGVkazIuZ3JvdXBzLmlvXSANCj4+Pj4+PiBPbiBCZWhhbGYgT2YgUGV0ZSBCYXRhcmQN Cj4+Pj4+PiBTZW50OiBUdWVzZGF5LCBKdW5lIDE2LCAyMDIwIDU6NTYgUE0NCj4+Pj4+PiBUbzog bWFpbHRvOmRldmVsQGVkazIuZ3JvdXBzLmlvDQo+Pj4+Pj4gQ2M6IG1haWx0bzp6aGljaGFvLmdh b0BpbnRlbC5jb207IG1haWx0bzpyYXkubmlAaW50ZWwuY29tOyANCj4+Pj4+PiBtYWlsdG86YXJk LmJpZXNoZXV2ZWxAYXJtLmNvbTsgbWFpbHRvOmxlaWZAbnV2aWFpbmMuY29tDQo+Pj4+Pj4gU3Vi amVjdDogW2VkazItZGV2ZWxdIFtlZGsyXVtQQVRDSCAxLzFdDQo+Pj4+Pj4gTWRlTW9kdWxlUGtn L1VlZmlCb290TWFuYWdlckxpYjogU2lnbmFsIFJlYWR5VG9Cb290IG9uIHBsYXRmb3JtIA0KPj4+ Pj4+IHJlY292ZXJ5DQo+Pj4+Pj4NCj4+Pj4+PiBDdXJyZW50bHksIHRoZSBSZWFkeVRvQm9vdCBl dmVudCBpcyBvbmx5IHNpZ25hbGVkIHdoZW4gYSBmb3JtYWwgDQo+Pj4+Pj4gQm9vdCBNYW5hZ2Vy IG9wdGlvbiBpcyBleGVjdXRlZCAoaW4gQm1Cb290LmMgLT4gDQo+Pj4+Pj4gRWZpQm9vdE1hbmFn ZXJCb290ICgpKS4NCj4+Pj4+Pg0KPj4+Pj4+IEhvd2V2ZXIsIHdpdGggdGhlIGludHJvZHVjdGlv biBvZiBQbGF0Zm9ybSBSZWNvdmVyeSBpbiBVRUZJIDIuNSwgDQo+Pj4+Pj4gd2hpY2ggbWF5IGxl YWQgdG8gdGhlIGV4ZWN1dGlvbiBvZiBhIGJvb3QgbG9hZGVyIHRoYXQgaGFzIHNpbWlsYXIgDQo+ Pj4+Pj4gcmVxdWlyZW1lbnRzIHRvIGEgcmVndWxhciBvbmUsIHlldCBpcyBub3QgbGF1bmNoZWQg YXMgYSBCb290IA0KPj4+Pj4+IE1hbmFnZXIgb3B0aW9uLCBpdCBhbHNvIGJlY29tZXMgbmVjZXNz YXJ5IHRvIHNpZ25hbCBSZWFkeVRvQm9vdCANCj4+Pj4+PiB3aGVuIGEgUGxhdGZvcm0gUmVjb3Zl cnkgYm9vdCBsb2FkZXIgcnVucy4NCj4+Pj4+Pg0KPj4+Pj4+IEVzcGVjaWFsbHksIHRoaXMgY2Fu IGJlIGNyaXRpY2FsIHRvIGVuc3VyaW5nIHRoYXQgdGhlIGdyYXBoaWNhbCANCj4+Pj4+PiBjb25z b2xlIGlzIGFjdHVhbGx5IHVzYWJsZSBkdXJpbmcgcGxhdGZvcm0gcmVjb3ZlcnksIGFzIHNvbWUg DQo+Pj4+Pj4gcGxhdGZvcm1zIGRvIHJlbHkgb24gdGhlIENvbnNvbGVQcmVmRHhlIGRyaXZlciwg d2hpY2ggb25seSANCj4+Pj4+PiBwZXJmb3JtcyBjb25zb2xlIGluaXRpYWxpemF0aW9uIGFmdGVy IFJlYWR5VG9Cb290IGlzIHRyaWdnZXJlZC4NCj4+Pj4+Pg0KPj4+Pj4+IFRoaXMgcGF0Y2ggZml4 ZXMgdGhhdCBiZWhhdmlvdXIgYnkgY2FsbGluZyANCj4+Pj4+PiBFZmlTaWduYWxFdmVudFJlYWR5 VG9Cb290ICgpIGluIEVmaUJvb3RNYW5hZ2VyUHJvY2Vzc0xvYWRPcHRpb24gDQo+Pj4+Pj4gKCks IHdoaWNoIGlzIHRoZSBmdW5jdGlvbiB0aGF0IHNldHMgdXAgdGhlIHBsYXRmb3JtIHJlY292ZXJ5 IGJvb3QgDQo+Pj4+Pj4gcHJvY2Vzcy4NCj4+Pj4+Pg0KPj4+Pj4+IFNpZ25lZC1vZmYtYnk6IFBl dGUgQmF0YXJkIDxtYWlsdG86cGV0ZUBha2VvLmllPg0KPj4+Pj4+IC0tLQ0KPj4+Pj4+IMKgwqDC oMKgIE1kZU1vZHVsZVBrZy9MaWJyYXJ5L1VlZmlCb290TWFuYWdlckxpYi9CbUxvYWRPcHRpb24u YyB8IDkNCj4+Pj4+PiArKysrKysrKysNCj4+Pj4+PiDCoMKgwqDCoCAxIGZpbGUgY2hhbmdlZCwg OSBpbnNlcnRpb25zKCspDQo+Pj4+Pj4NCj4+Pj4+PiBkaWZmIC0tZ2l0IA0KPj4+Pj4+IGEvTWRl TW9kdWxlUGtnL0xpYnJhcnkvVWVmaUJvb3RNYW5hZ2VyTGliL0JtTG9hZE9wdGlvbi5jDQo+Pj4+ Pj4gYi9NZGVNb2R1bGVQa2cvTGlicmFyeS9VZWZpQm9vdE1hbmFnZXJMaWIvQm1Mb2FkT3B0aW9u LmMNCj4+Pj4+PiBpbmRleCA4OTM3MmIzYjk3YjguLjExN2YxZjViMTI0YyAxMDA2NDQNCj4+Pj4+ PiAtLS0gYS9NZGVNb2R1bGVQa2cvTGlicmFyeS9VZWZpQm9vdE1hbmFnZXJMaWIvQm1Mb2FkT3B0 aW9uLmMNCj4+Pj4+PiArKysgYi9NZGVNb2R1bGVQa2cvTGlicmFyeS9VZWZpQm9vdE1hbmFnZXJM aWIvQm1Mb2FkT3B0aW9uLmMNCj4+Pj4+PiBAQCAtMTM3Niw2ICsxMzc2LDE1IEBAIEVmaUJvb3RN YW5hZ2VyUHJvY2Vzc0xvYWRPcHRpb24gKA0KPj4+Pj4+IMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJu IEVGSV9TVUNDRVNTOw0KPj4+Pj4+IMKgwqDCoMKgwqDCoCB9DQo+Pj4+Pj4NCj4+Pj4+PiArwqAg Ly8NCj4+Pj4+PiArwqAgLy8gU2lnbmFsIHRoZSBFVlRfU0lHTkFMX1JFQURZX1RPX0JPT1QgZXZl bnQgd2hlbiB3ZSBhcmUgYWJvdXQNCj4+Pj4+PiB0byBsb2FkIGFuZCBleGVjdXRlIHRoZSBib290 IG9wdGlvbi4NCj4+Pj4+PiArwqAgLy8NCj4+Pj4+PiArwqAgRWZpU2lnbmFsRXZlbnRSZWFkeVRv Qm9vdCAoKTsNCj4+Pj4+PiArwqAgLy8NCj4+Pj4+PiArwqAgLy8gUmVwb3J0IFN0YXR1cyBDb2Rl IHRvIGluZGljYXRlIFJlYWR5VG9Cb290IHdhcyBzaWduYWxsZWTCoCANCj4+Pj4+PiArLy8gIFJF UE9SVF9TVEFUVVNfQ09ERSAoRUZJX1BST0dSRVNTX0NPREUsDQo+Pj4+Pj4gKEVGSV9TT0ZUV0FS RV9EWEVfQlNfRFJJVkVSIHwNCj4+Pj4+PiArIEVGSV9TV19EWEVfQlNfUENfUkVBRFlfVE9fQk9P VF9FVkVOVCkpOw0KPj4+Pj4+ICsNCj4+Pj4+PiDCoMKgwqDCoMKgwqAgLy8NCj4+Pj4+PiDCoMKg wqDCoMKgwqAgLy8gTG9hZCBhbmQgc3RhcnQgdGhlIGxvYWQgb3B0aW9uLg0KPj4+Pj4+IMKgwqDC oMKgwqDCoCAvLw0KPj4+Pj4+IC0tDQo+Pj4+Pj4gMi4yMS4wLndpbmRvd3MuMQ0KPj4+Pj4+DQo+ Pj4+Pj4NCj4+Pj4+Pg0KPj4+Pj4+DQo+Pj4+Pg0KPj4+Pg0KPj4+Pg0KPj4+PiBJTVBPUlRBTlQg Tk9USUNFOiBUaGUgY29udGVudHMgb2YgdGhpcyBlbWFpbCBhbmQgYW55IGF0dGFjaG1lbnRzIA0K Pj4+PiBhcmUgY29uZmlkZW50aWFsIGFuZCBtYXkgYWxzbyBiZSBwcml2aWxlZ2VkLiBJZiB5b3Ug YXJlIG5vdCB0aGUgDQo+Pj4+IGludGVuZGVkIHJlY2lwaWVudCwgcGxlYXNlIG5vdGlmeSB0aGUg c2VuZGVyIGltbWVkaWF0ZWx5IGFuZCBkbyBub3QgDQo+Pj4+IGRpc2Nsb3NlIHRoZSBjb250ZW50 cyB0byBhbnkgb3RoZXIgcGVyc29uLCB1c2UgaXQgZm9yIGFueSBwdXJwb3NlLCANCj4+Pj4gb3Ig c3RvcmUgb3IgY29weSB0aGUgaW5mb3JtYXRpb24gaW4gYW55IG1lZGl1bS4gVGhhbmsgeW91Lg0K Pj4+Pg0KPj4+PiBJTVBPUlRBTlQgTk9USUNFOiBUaGUgY29udGVudHMgb2YgdGhpcyBlbWFpbCBh bmQgYW55IGF0dGFjaG1lbnRzIA0KPj4+PiBhcmUgY29uZmlkZW50aWFsIGFuZCBtYXkgYWxzbyBi ZSBwcml2aWxlZ2VkLiBJZiB5b3UgYXJlIG5vdCB0aGUgDQo+Pj4+IGludGVuZGVkIHJlY2lwaWVu dCwgcGxlYXNlIG5vdGlmeSB0aGUgc2VuZGVyIGltbWVkaWF0ZWx5IGFuZCBkbyBub3QgDQo+Pj4+ IGRpc2Nsb3NlIHRoZSBjb250ZW50cyB0byBhbnkgb3RoZXIgcGVyc29uLCB1c2UgaXQgZm9yIGFu eSBwdXJwb3NlLCANCj4+Pj4gb3Igc3RvcmUgb3IgY29weSB0aGUgaW5mb3JtYXRpb24gaW4gYW55 IG1lZGl1bS4gVGhhbmsgeW91Lg0KPj4+Pg0KPj4+DQo+Pj4NCj4+PiANCj4+Pg0KPiANCg0K