From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mx0b-00069f02.pphosted.com (mx0b-00069f02.pphosted.com [205.220.177.32]) by sourceware.org (Postfix) with ESMTPS id 4CC7F388F01D for ; Tue, 17 Aug 2021 15:04:47 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 4CC7F388F01D Received: from pps.filterd (m0246631.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.16.0.43/8.16.0.43) with SMTP id 17HF2Dp1016477; Tue, 17 Aug 2021 15:04:41 GMT Received: from aserp3020.oracle.com (aserp3020.oracle.com [141.146.126.70]) by mx0b-00069f02.pphosted.com with ESMTP id 3afgpgm4ut-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 17 Aug 2021 15:04:40 +0000 Received: from pps.filterd (aserp3020.oracle.com [127.0.0.1]) by aserp3020.oracle.com (8.16.0.42/8.16.0.42) with SMTP id 17HF0mhp193181; Tue, 17 Aug 2021 15:04:39 GMT Received: from nam10-bn7-obe.outbound.protection.outlook.com (mail-bn7nam10lp2104.outbound.protection.outlook.com [104.47.70.104]) by aserp3020.oracle.com with ESMTP id 3ae5n7qq3d-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 17 Aug 2021 15:04:39 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=LmkK/7p5PDOpAmF1GMPgch1BU7hpC/GXSJzBSd/smL/R4GClqqR7yZLn0Q8iI48UF4RXLn5s8VWmw2ogLIiiKxwaCSGpXV93ZBK87RSrUN71DPEU4lutGE8T2V5YvNX6YzoOXe78zPbGDajQeXA79dnlHhNGg8ZW3LgNcUkvjWGUiE6XvzItef9zwguwoBuennITTiBtZPV0RiS8D4jl4jONk6J7HGu6w5lp/KSPQ2+cqbkLl4llVV0uR9WCV/pFnBxlHrB15LAU6SROZFiI93orDqoPdsZNFfeQSAJCG3wDIc3veQ1/LdlWtRDPck9iN8Zqdh/PVdhlrmhY6NOffg== 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=nuzO/mPJd6zgWadxyRRkhXUoZkgpqCaMVL5w7QQDgsk=; b=AJXns0/RMpU8lTVb21Ao4WmbILW3rkBlMsCluFCspw8sSAGV7MBzMPU33fvsbfP3pg33aKQAcvOfPko+uZut1BVjn+Qyff+AeSOeJnGiH5vY0YZS4dU6pGR+JfI6hv4B07B7Lsz0KeJK1IirwPbP0zHn1+T1oSNzZHwTvXSrAgIyWK7jsbFa03AQLyAW4huMcfjglj0ZGm2Ybz+Y+jIFokz4BFq5CWnC+mC5h1w6Sx65F0bKBAI68Pc3UaZcoxOGu31/NPI7sXckOxR1klVRNVutWUEuRjM3TxUgQxDFKP1gsVAO/2gsq9piWsSI8fiNKiwWFiRNeMvAm5ucI3hVRA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oracle.com; dmarc=pass action=none header.from=oracle.com; dkim=pass header.d=oracle.com; arc=none Received: from CH2PR10MB4344.namprd10.prod.outlook.com (2603:10b6:610:af::19) by CH2PR10MB3912.namprd10.prod.outlook.com (2603:10b6:610:a::30) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4415.16; Tue, 17 Aug 2021 15:04:37 +0000 Received: from CH2PR10MB4344.namprd10.prod.outlook.com ([fe80::f463:6b71:2491:d547]) by CH2PR10MB4344.namprd10.prod.outlook.com ([fe80::f463:6b71:2491:d547%9]) with mapi id 15.20.4415.024; Tue, 17 Aug 2021 15:04:36 +0000 From: Qing Zhao To: Richard Biener CC: Jakub Jelinek , Richard Sandiford , Nick Alcock via Gcc-patches , Kees Cook Subject: Re: [patch][version 6] add -ftrivial-auto-var-init and variable attribute "uninitialized" to gcc Thread-Topic: [patch][version 6] add -ftrivial-auto-var-init and variable attribute "uninitialized" to gcc Thread-Index: AQHXgpcfj6SO0Rka1UmU0GU91mFncqtrSzIAgAApjACAAPr8gIAAZYMAgAAKVgCAAAy9gIAABZoAgABR/YCAACR6AIAAkCQAgABtVACAAAEPAIAABLkAgAABQACAABmfAIAABkYAgAAIEICAAAlUAIAAPDYAgAb8YoCAAKEtgIABdUUA Date: Tue, 17 Aug 2021 15:04:36 +0000 Message-ID: <9DD34DA7-4CD7-48B7-B5E4-A4107B84F5D8@oracle.com> References: <52E29277-1403-4755-901A-528116C43FB8@oracle.com> <58ADBC0C-9D44-485B-BB5A-B072664B9C4F@oracle.com> <6FD42B95-F73D-4B75-B83A-BAC4925B1714@oracle.com> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-mailer: Apple Mail (2.3608.120.23.2.7) x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 144dc500-3cef-48b8-5a1a-08d961905478 x-ms-traffictypediagnostic: CH2PR10MB3912: x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:10000; x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: k7QCKo6YZANAuKnSkO80XC23GOttFhEQ6W/mo8LpvIbOvIoLPuQMKluKhN3/i3cXnGZd7OSrAr7Q2B6jpPSjDiPQEo5OzaHsLYgch+nfbLFDZK6/DQstZpg/vNP1ty6Y1d90eqBkeV1cTWH2bZKVOio1CCD6akAc1XRqqziEstas7uzjVN9DqXmVJfrUFsfmXuUGwTHa3rjN+kvao4itRzfjTlktvkAEFtayY/O/T+/zpGliDWcVA87cgTm3meFzrnSlziW5tFUxhGFNeUbREiA6EF5p6BTbidjI0Cav2zINrMYNAfQaLMPeTep70c7j34scVFM+beQMlhHWgifQ1kjjZE1f1lkEGx22xi/CeGJULDd2J4E6BLhQLcIPNG0qAiS3vdxjSWfZMEBgA8EgJUtcKqnRT0XhQnNUkOa5bgEzVEdWaIk1o2Tq2614zvABTcArs3qVKlv7v3jipcXcLxb6Q8Mm6jFPuo5TsP/6AwP+5W3x2C4ONiMPRBPE2JU9xOKlw4lSS1G0sdOEFTbyzM+kZ5QCGP+zea9PcYf+exuKxfdWpEqOmGHPwOEIJAxlPXWlg79XDTdQcvVRVERiK6K0wAvAQvnudU4mfkqa2uOXqZFC0JNsItmdfyU9UZ2KckgCMIqlLBE80lRIbDeIYfMJuYknH+xMBXR0fBqTYZb8HEUwq8L5ZgmgMgW66OiamFib4rUMuyWmHmB/qv2lrnFoTz6Wqo3DyCgu/Kzor7CV8C+SHrEG66dgfNf9UezyMilyi9qm49poPDFQdXBRLg== x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:CH2PR10MB4344.namprd10.prod.outlook.com; PTR:; CAT:NONE; SFS:(39860400002)(346002)(136003)(366004)(396003)(376002)(44832011)(33656002)(478600001)(36756003)(316002)(53546011)(6506007)(8676002)(6916009)(38070700005)(4326008)(66556008)(71200400001)(64756008)(5660300002)(186003)(2616005)(38100700002)(66574015)(122000001)(30864003)(54906003)(8936002)(2906002)(76116006)(66946007)(86362001)(6512007)(83380400001)(66446008)(91956017)(66476007)(6486002)(45980500001)(266184004); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?NURraUtiUFlqMmtDTlhFcmlJWkJhUkVCYklrR2RRWkZ6Y1BVaVRzdXRJcUZB?= =?utf-8?B?WGViM2F3d3RBY3F4d2JleUN0UFY2Nmd1T2ZDNGhxbHN1aWpHd0ZUNkFITlRk?= =?utf-8?B?MUpiVDZiN0t4N0l3RWZGTDcrWmVyRkdDVkhhRmE2ZXZUTnR4SUIrbHZoUVdL?= =?utf-8?B?dEtsaEdjVnZ1MG1icS96RHQweUlERzhnQ2xVSld1LzlsWmQxMHBxYTREa2dh?= =?utf-8?B?Z1g2RWtkakJ1V3l2cC8wVkdTY1ZtSkhOak5rN3ZlRHdiS29xR21kejJOdzRz?= =?utf-8?B?VHFKTjFLSitzN2lla0VYa3BhQWlnT2J6OXlTbFV2STNqd2JGUlY1T2VUaFoy?= =?utf-8?B?VTd3OG96b0R4cC9yUjdlSjJZSmhGa1ZlMlFVSzVIaXBQNkRuNE1qMEwvVUwr?= =?utf-8?B?NENHL3dBaTNvaXFKMTJZTFgybGdnTUU3UktEOHZ1MWZ3aUZoY0lONmpWdW5B?= =?utf-8?B?eWVFd2V0bVQ0cUsxVWkxK2pzQkNsd21HdEQwbitVOXBZYVFlWHZmUFNWVlVs?= =?utf-8?B?MDR2NnFzbCsvcU9UYjNzZTZKK3JsS3ZWbmt6azZpazdibzhVTDIvNUYyMlFL?= =?utf-8?B?RjVTVlBGNWJSVjN3bGdicHdVMDUyQ09nK25rQ2hmMjVCRHNaQTVCcTZ0TzV0?= =?utf-8?B?NHZGdDVTZ1RmUCtwSGVxVUM1c25yVi9KTTJTL1NXNW96QUsxL1ZsaVN4Zi9Z?= =?utf-8?B?SVpwVVZKOW1ldnluS2tFcFZPWVU1YVlkLytmR1dqSitUYyt5YXJ6YzM2ZGFt?= =?utf-8?B?dE9wVE9DM0VXbzFSenhmcG40Y0h0R1BTdEUwbDJielpUQlhnb1hhUGJUVHl6?= =?utf-8?B?TUI4NVArTVBxRG13bFQwVnkrWGZ6SFlVWUcyRXhjQVdpNWdCbnJZMS9HbURR?= =?utf-8?B?WWFiVXZkNzZxWkkyUmx0Q29Lb0ZRM1FaeW9kVlNvUy9yVG9WbHFXZ0FiTWJ3?= =?utf-8?B?bStBNm8vL1FZeHFXeVZxd0dvNndZUE51S2pwbXhYSlVJZnpUMnRpdTdWQ3M3?= =?utf-8?B?UDcxTVFUazBnYnhiM3VZT1ZrYlV4aXJoOCtFOXpPVi9RanNhcnZUcVNYTjRQ?= =?utf-8?B?QzNyVjVsTEJObThUOXhqaVE2elhzRUFUWFZ2TWlYOENyYXd2MS85dSsrN1dn?= =?utf-8?B?VUpIQmYvVU0yR0VaODNYbWs0Q2Q0Z2lmVGcxM2dTZG1IUzdoakRPNDhWYUVS?= =?utf-8?B?dVEyZU9UWHhjL3VEWUdqUFFZM3U4eW5ZTFM2ZStZOUowRUtOU1UrNkRRb3Jw?= =?utf-8?B?d0FrNlUrem9zSnZIZDBKaklqanVOdFJoczNIUytVaUZ3Y1JwQWRweDVHUjVo?= =?utf-8?B?Wmt1Mkx1ZldRNXFsdnB4K0E0a3Z3WWZ0SnVUZ3R2QmlvWGxBSEtWeHFhNm8y?= =?utf-8?B?S2djRFg3cUFILzdtS3d0THR4TGtvVnVpLzQ1NEVyMGk3MThyamx6V1U1TzBj?= =?utf-8?B?REFiaEpKcEJsMHdaeVdTYmNqK0tLSjBEa2RmNFdPVEt6WldJeHZXK3RNZkFn?= =?utf-8?B?NjRQeVptbnE0S2FYaVdwS095aHBIWnZzdTJDYmFjMDh6NFB5V01YWUlRT1Vk?= =?utf-8?B?NWhVdjR0WHd4eC9HSWtiN04rVmJ1d3ZrRGdlSWsxRFhVWk5vSHJ3WThzZkJQ?= =?utf-8?B?SFlNU0dVOW1vM1E3NFBqL2tVZWJrRFVUZFo2MUswVjN5UlJUdHZkK2gwL0xY?= =?utf-8?B?N0JHK1JzcDl5TGV4a3oxY3hDc1p2aGk4Vkp3OHB0b2FTd3E5aml5ZXZZczRG?= =?utf-8?B?NW9KNjVLUmhoUVZpRkJtWkFRUW9QU0M1SE8vbVI5cDB6T2ZsSnd3QTR0WDAv?= =?utf-8?Q?Ut26skap7Dk+Dnzfw2SDJBXyrGFvCFuQvXK8w=3D?= x-ms-exchange-transport-forked: True Content-Type: text/plain; charset="utf-8" Content-ID: Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: CH2PR10MB4344.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 144dc500-3cef-48b8-5a1a-08d961905478 X-MS-Exchange-CrossTenant-originalarrivaltime: 17 Aug 2021 15:04:36.9207 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 4e2c6054-71cb-48f1-bd6c-3a9705aca71b X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: MxuBDiZ4Ekee2qM3UpbHJbyinso6WH3ShFxirw/3kcoLAleKotWm9BX3chQmfoeDYg0sJdKLl2quXAI5WJRJfw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH2PR10MB3912 X-Proofpoint-Virus-Version: vendor=nai engine=6200 definitions=10079 signatures=668682 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 malwarescore=0 adultscore=0 bulkscore=0 suspectscore=0 mlxlogscore=999 phishscore=0 mlxscore=0 spamscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2107140000 definitions=main-2108170092 X-Proofpoint-GUID: suAcf1kNyYzrqFS09e89oXNxkD46tk5U X-Proofpoint-ORIG-GUID: suAcf1kNyYzrqFS09e89oXNxkD46tk5U X-Spam-Status: No, score=-10.9 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, RCVD_IN_DNSWL_LOW, RCVD_IN_MSPIKE_BL, RCVD_IN_MSPIKE_L3, SPF_HELO_NONE, SPF_NONE, TXREP autolearn=ham autolearn_force=no version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on server2.sourceware.org X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 17 Aug 2021 15:04:57 -0000 DQoNCj4gT24gQXVnIDE2LCAyMDIxLCBhdCAxMTo0OCBBTSwgUWluZyBaaGFvIHZpYSBHY2MtcGF0 Y2hlcyA8Z2NjLXBhdGNoZXNAZ2NjLmdudS5vcmc+IHdyb3RlOg0KPiANCj4+PiBGcm9tIHRoZSBh Ym92ZSBJUiBmaWxlIGFmdGVyIOKAnEZSReKAnSwgd2UgY2FuIHNlZSB0aGF0IHRoZSBtYWpvciBp c3N1ZSB3aXRoIHRoaXMgSVIgaXM6DQo+Pj4gDQo+Pj4gVGhlIGFkZHJlc3MgdGFrZW4gYXV0byB2 YXJpYWJsZSDigJxhbHRfcmVsb2PigJ0gaGFzIGJlZW4gY29tcGxldGVseSByZXBsYWNlZCBieSB0 aGUgdGVtcG9yYXJ5IHZhcmlhYmxlIOKAnF8x4oCdIGluIGFsbA0KPj4+IHRoZSB1c2VzIG9mIHRo ZSBvcmlnaW5hbCDigJxhbHRfcmVsb2PigJ0uIA0KPj4gDQo+PiBXZWxsLCB0aGlzIGNhbiBoYXBw ZW4gd2l0aCByZWd1bGFyIGNvZGUgYXMgd2VsbCwgdGhlcmUncyBubyBuZWVkIGZvcg0KPj4gLkRF RkVSUkVEX0lOSVQuICBUaGlzIGlzIHRoZSB1c3VhbCBwcm9ibGVtIHdpdGggcmVwb3J0aW5nIHVu aW5pdGlhbGl6ZWQNCj4+IHVzZXMgbGF0ZS4NCj4+IA0KPj4gSU1ITyB0aGlzIHNob3VsZG4ndCBi ZSBhIGJsb2NrZXIuICBUaGUgZ29hbCBvZiB6ZXJvICJyZWdyZXNzaW9ucyIgd3J0DQo+PiAtV3Vu aW5pdGlhbGl6ZWQgaXNuJ3QgcmVhbGx5IGFjaGlldmFibGUuDQo+IA0KPiBPa2F5LiBTb3VuZHMg cmVhc29uYWJsZSB0byBtZSB0b28uDQo+IA0KPj4gDQo+Pj4gVGhlIG1ham9yIHByb2JsZW0gd2l0 aCBzdWNoIElSIGlzLCAgZHVyaW5nIHVuaW5pdGlhbGl6ZWQgYW5hbHlzaXMgcGhhc2UsIHRoZSBv cmlnaW5hbCB1c2Ugb2Yg4oCcYWx0X3JlbG9j4oCdIGRpc2FwcGVhcmVkIGNvbXBsZXRlbHkuDQo+ Pj4gU28sIHRoZSB3YXJuaW5nIGNhbm5vdCBiZSByZXBvcnRlZC4NCj4+PiANCj4+PiANCj4+PiBN eSBxdWVzdGlvbnM6DQo+Pj4gDQo+Pj4gMS4gSXMgaXQgcG9zc2libGUgdG8gZ2V0IHRoZSBvcmln aW5hbCDigJxhbHRfcmVsb2PigJ0gdGhyb3VnaCB0aGUgdGVtcG9yYXJ5IHZhcmlhYmxlIOKAnF8x 4oCdIHdpdGggc29tZSBhdmFpbGFibGUgaW5mb3JtYXRpb24gcmVjb3JkZWQgaW4gdGhlIElSPw0K Pj4+IDIuIElmIG5vdCwgdGhlbiB3ZSBoYXZlIHRvIHJlY29yZCB0aGUgcmVsYXRpb25zaGlwIGJl dHdlZW4g4oCcYWx0X3JlbG9j4oCdIGFuZCDigJxfMeKAnSB3aGVuIHRoZSBvcmlnaW5hbCDigJxh bHRfcmVsb2PigJ0gaXMgcmVwbGFjZWQgYnkg4oCcXzHigJ0gYW5kIGdldCBzdWNoIHJlbGF0aW9u c2hpcCBkdXJpbmcNCj4+PiAgIFVuaW5pdGlhbGl6ZWQgYW5hbHlzaXMgcGhhc2UuICBJcyB0aGlz IGRvYWJsZT8NCj4+IA0KPj4gV2VsbCwgeW91IGNvdWxkIGFkZCBhIGZha2UgYXJndW1lbnQgdG8g LkRFRkVSUkVEX0lOSVQgZm9yIHRoZSBwdXJwb3NlIG9mDQo+PiBkaWFnbm9zdGljcy4gIFRoZSBk aWZmaWN1bHR5IGlzIHRvIGF2b2lkIHRyYWNraW5nIGl0IGFzIGFjdHVhbCB1c2Ugc28NCj4+IHlv dSBjb3VsZCBmb3IgZXhhbXBsZSBwYXNzIGEgc3RyaW5nIHdpdGggdGhlIGRlY2xhcmF0aW9ucyBu YW1lIHRob3VnaA0KPj4gdGhpcyB3b3VsZG4ndCBnaXZlIHRoZSBhc3NvY2lhdGlvbiB3aXRoIHRo ZSBhY3R1YWwgZGVjbC4NCj4gR29vZCBzdWdnZXN0aW9uLCBJIGNhbiB0cnkgdGhpcyBhIGxpdHRs ZSBiaXQuIA0KDQpJIHRyaWVkIHRoaXMgeWVzdGVyZGF5LCBhZGRlZCB0aGUgNHRoIGFyZ3VtZW50 IHRvIC5ERUZFUlJFRF9JTklUIGFzOg0KDQogICAgMXN0IGFyZ3VtZW50OiBTSVpFIG9mIHRoZSBE RUNMOw0KICAgIDJuZCBhcmd1bWVudDogSU5JVF9UWVBFOw0KICAgIDNyZCBhcmd1bWVudDogSVNf VkxBLCAwIE5PLCAxIFlFUzsNCisgICA0dGggYXJndW1lbnQ6IFRoZSBOQU1FIGZvciB0aGUgREVD TDsNCiANCi0gICBhcyBMSFMgPSBERUZFUlJFRF9JTklUIChTSVpFIG9mIHRoZSBERUNMLCBJTklU X1RZUEUsIElTX1ZMQSkNCisgICBhcyBMSFMgPSBERUZFUlJFRF9JTklUIChTSVpFIG9mIHRoZSBE RUNMLCBJTklUX1RZUEUsIElTX1ZMQSwgTkFNRSkNCg0KKyAgdHJlZSBuYW1lX25vZGUNCisgICAg PSBidWlsZF9zdHJpbmdfbGl0ZXJhbCAoSURFTlRJRklFUl9MRU5HVEggKERFQ0xfTkFNRSAoZGVj bCkpLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgIElERU5USUZJRVJfUE9JTlRFUiAoREVD TF9OQU1FIChkZWNsKSkpOw0KIA0KICAgdHJlZSBjYWxsID0gYnVpbGRfY2FsbF9leHByX2ludGVy bmFsX2xvYyAoVU5LTk9XTl9MT0NBVElPTiwgSUZOX0RFRkVSUkVEX0lOSVQsDQotICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRSRUVfVFlQRSAoZGVjbCksIDMsDQor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRSRUVfVFlQRSAoZGVj bCksIDQsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlY2xf c2l6ZSwgaW5pdF90eXBlX25vZGUsDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGlzX3ZsYV9ub2RlKTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgaXNfdmxhX25vZGUsIG5hbWVfbm9kZSk7DQoNCg0KQW5kIGdvdCB0aGUgZm9s bG93aW5nIElSIGluIC51bmluaXQxIGR1bXA6DQoNCg0K4oCmLg0KDQogIF8xID0gLkRFRkVSUkVE X0lOSVQgKDQsIDIsIDAsICYiYWx0X3JlbG9jIlswXSk7DQogIGlmIChfMSAhPSAwKQ0K4oCmLg0K DQoNCk15IHF1ZXN0aW9uczoNCg0KMS4gSXMg4oCcYnVpbGRfc3RyaW5nX2xpdGVyYWzigJ0gdGhl IGNvcnJlY3QgdXRpbGl0eSByb3V0aW5lIHRvIHVzZSBmb3IgdGhpcyBuZXcgYXJndW1lbnQ/IA0K Mi4gV2lsbCBTdWNoIHN0cmluZyBsaXRlcmFsIG5vZGVzIGhhdmUgcG90ZW50aWFsIG90aGVyIGlt cGFjdD8NCg0KUWluZw0KDQo+IA0KPj4gDQo+Pj4gMy4gTG9va3MgbGlrZSB0aGF0IGZvciDigJxh ZGRyZXNzIHRha2Vu4oCdIGF1dG8gdmFyaWFibGUsIGlmIHdlIGhhdmUgdG8gaW50cm9kdWNlIGEg bmV3IHRlbXBvcmFyeSB2YXJpYWJsZSBhbmQgc3BsaXQgdGhlIGNhbGwgdG8gLkRFRkVSUkVEX0lO SVQgaW50byB0d286DQo+Pj4gDQo+Pj4gICAgIHRlbXAgPSAuREVGRVJSRURfSU5JVCAoNCwgMiwg MCk7DQo+Pj4gICAgIGFsdF9yZWxvYyA9IHRlbXA7DQo+Pj4gDQo+Pj4gIE1vcmUgaXNzdWVzIG1p Z2h0IHBvc3NpYmxlLg0KPj4+IA0KPj4+IEFueSBjb21tZW50cyBhbmQgc3VnZ2VzdGlvbnMgb24g dGhpcyBpc3N1ZT8NCj4+IA0KPj4gSSBkb24ndCBzZWUgYW55IGdvb2QgcG9zc2liaWxpdGllcyB0 aGF0IHdvdWxkIG5vdCBtYWtlIG9wdGltaXppbmcgY29kZQ0KPj4gYXMgZ29vZCBhcyB3L28gLkRF RkVSUkVEX0lOSVQgbW9yZSBkaWZmaWN1bHQuICBNeSBzdGFrZSBoZXJlIGlzIGFsd2F5cw0KPj4g dGhhdCBHQ0MgaXMgYW4gb3B0aW1pemluZyBjb21waWxlciwgbm90IGEgc3RhdGljIGFuYWx5c2lz IGVuZ2luZSBhbmQNCj4+IHRodXMgSSBzaWRlIHdpdGggImJyb2tlbiIgZGlhZ25vc3RpY3MgYW5k IGJldHRlciBvcHRpbWl6YXRpb24uDQo+IFRoYXTigJlzIHRydWUgYW5kIHJlYXNvbmFibGUsIHRv by4NCj4gDQo+IHRoYW5rcy4NCj4gDQo+IFFpbmcNCj4+IA0KPj4gUmljaGFyZC4NCj4+IA0KPj4+ IFFpbmcNCj4+PiANCj4+PiBqDQo+Pj4+IE9uIEF1ZyAxMSwgMjAyMSwgYXQgMTE6NTUgQU0sIFJp Y2hhcmQgQmllbmVyIDxyZ3VlbnRoZXJAc3VzZS5kZT4gd3JvdGU6DQo+Pj4+IA0KPj4+PiBPbiBB dWd1c3QgMTEsIDIwMjEgNjoyMjowMCBQTSBHTVQrMDI6MDAsIFFpbmcgWmhhbyA8cWluZy56aGFv QG9yYWNsZS5jb20+IHdyb3RlOg0KPj4+Pj4gDQo+Pj4+PiANCj4+Pj4+PiBPbiBBdWcgMTEsIDIw MjEsIGF0IDEwOjUzIEFNLCBSaWNoYXJkIEJpZW5lciA8cmd1ZW50aGVyQHN1c2UuZGU+IHdyb3Rl Og0KPj4+Pj4+IA0KPj4+Pj4+IE9uIEF1Z3VzdCAxMSwgMjAyMSA1OjMwOjQwIFBNIEdNVCswMjow MCwgUWluZyBaaGFvIDxxaW5nLnpoYW9Ab3JhY2xlLmNvbT4gd3JvdGU6DQo+Pj4+Pj4+IEkgbW9k aWZpZWQgdGhlIHJvdXRpbmUg4oCcZ2ltcGxlX2FkZF9pbml0X2Zvcl9hdXRvX3ZhcuKAnSBhcyB0 aGUgZm9sbG93aW5nOg0KPj4+Pj4+PiA9PT09DQo+Pj4+Pj4+IC8qIEdlbmVyYXRlIGluaXRpYWxp emF0aW9uIHRvIGF1dG9tYXRpYyB2YXJpYWJsZSBERUNMIGJhc2VkIG9uIElOSVRfVFlQRS4NCj4+ Pj4+Pj4gQnVpbGQgYSBjYWxsIHRvIGludGVybmFsIGNvbnN0IGZ1bmN0aW9uIERFRkVSUkVEX0lO SVQ6DQo+Pj4+Pj4+IDFzdCBhcmd1bWVudDogU0laRSBvZiB0aGUgREVDTDsNCj4+Pj4+Pj4gMm5k IGFyZ3VtZW50OiBJTklUX1RZUEU7DQo+Pj4+Pj4+IDNyZCBhcmd1bWVudDogSVNfVkxBLCAwIE5P LCAxIFlFUzsNCj4+Pj4+Pj4gDQo+Pj4+Pj4+IGFzIERFRkVSUkVEX0lOSVQgKFNJWkUgb2YgdGhl IERFQ0wsIElOSVRfVFlQRSwgSVNfVkxBKS4gICovDQo+Pj4+Pj4+IHN0YXRpYyB2b2lkDQo+Pj4+ Pj4+IGdpbXBsZV9hZGRfaW5pdF9mb3JfYXV0b192YXIgKHRyZWUgZGVjbCwNCj4+Pj4+Pj4gICAg ICAgICAgICAgICAgICAgICAgICAgIGVudW0gYXV0b19pbml0X3R5cGUgaW5pdF90eXBlLA0KPj4+ Pj4+PiAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpc192bGEsDQo+Pj4+Pj4+ICAgICAg ICAgICAgICAgICAgICAgICAgICBnaW1wbGVfc2VxICpzZXFfcCkNCj4+Pj4+Pj4gew0KPj4+Pj4+ PiBnY2NfYXNzZXJ0IChWQVJfUCAoZGVjbCkgJiYgIURFQ0xfRVhURVJOQUwgKGRlY2wpICYmICFU UkVFX1NUQVRJQyAoZGVjbCkpOw0KPj4+Pj4+PiBnY2NfYXNzZXJ0IChpbml0X3R5cGUgPiBBVVRP X0lOSVRfVU5JTklUSUFMSVpFRCk7DQo+Pj4+Pj4+IHRyZWUgZGVjbF9zaXplID0gVFlQRV9TSVpF X1VOSVQgKFRSRUVfVFlQRSAoZGVjbCkpOw0KPj4+Pj4+PiANCj4+Pj4+Pj4gdHJlZSBpbml0X3R5 cGVfbm9kZQ0KPj4+Pj4+PiA9IGJ1aWxkX2ludF9jc3QgKGludGVnZXJfdHlwZV9ub2RlLCAoaW50 KSBpbml0X3R5cGUpOw0KPj4+Pj4+PiB0cmVlIGlzX3ZsYV9ub2RlDQo+Pj4+Pj4+ID0gYnVpbGRf aW50X2NzdCAoaW50ZWdlcl90eXBlX25vZGUsIChpbnQpIGlzX3ZsYSk7DQo+Pj4+Pj4+IA0KPj4+ Pj4+PiB0cmVlIGNhbGwgPSBidWlsZF9jYWxsX2V4cHJfaW50ZXJuYWxfbG9jIChVTktOT1dOX0xP Q0FUSU9OLCBJRk5fREVGRVJSRURfSU5JVCwNCj4+Pj4+Pj4gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgVFJFRV9UWVBFIChkZWNsKSwgMywNCj4+Pj4+Pj4gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVjbF9zaXplLCBpbml0X3R5cGVfbm9kZSwN Cj4+Pj4+Pj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNfdmxhX25v ZGUpOw0KPj4+Pj4+PiANCj4+Pj4+Pj4gLyogSWYgdGhpcyBERUNMIGlzIGEgVkxBLCBhIHRlbXBv cmFyeSBhZGRyZXNzIHZhcmlhYmxlIGZvciBpdCBoYXMgYmVlbg0KPj4+Pj4+PiBjcmVhdGVkLCB0 aGUgcmVwbGFjZW1lbnQgZm9yIERFQ0wgaXMgcmVjb3JkZWQgaW4gREVDTF9WQUxVRV9FWFBSIChk ZWNsKSwNCj4+Pj4+Pj4gd2Ugc2hvdWxkIHVzZSBpdCBhcyB0aGUgTEhTIG9mIHRoZSBjYWxsLiAg Ki8NCj4+Pj4+Pj4gDQo+Pj4+Pj4+IHRyZWUgbGhzX2NhbGwNCj4+Pj4+Pj4gPSBpc192bGEgPyBE RUNMX1ZBTFVFX0VYUFIgKGRlY2wpIDogZGVjbDsNCj4+Pj4+Pj4gZ2ltcGxpZnlfYXNzaWduIChs aHNfY2FsbCwgY2FsbCwgc2VxX3ApOw0KPj4+Pj4+PiB9DQo+Pj4+Pj4+IA0KPj4+Pj4+PiBXaXRo IHRoaXMgY2hhbmdlLCB0aGUgY3VycmVudCBpc3N1ZSBpcyByZXNvbHZlZCwgdGhlIGdpbXBsZSBk dW1wIG5vdyBpczoNCj4+Pj4+Pj4gDQo+Pj4+Pj4+ICgqYXJyLjEpID0gLkRFRkVSUkVEX0lOSVQg KEQuMTk1MiwgMiwgMSk7DQo+Pj4+Pj4+IA0KPj4+Pj4+PiBIb3dldmVyLCB0aGVyZSBpcyBhbm90 aGVyIG5ldyBpc3N1ZToNCj4+Pj4+Pj4gDQo+Pj4+Pj4+IEZvciB0aGUgZm9sbG93aW5nIHRlc3Rp bmcgY2FzZToNCj4+Pj4+Pj4gDQo+Pj4+Pj4+ID09PT09PQ0KPj4+Pj4+PiBbb3BjQHFpbnpoYW8t b2w4dTMteDg2IGdjY10kIGNhdCB0LmMNCj4+Pj4+Pj4gaW50IGJhcjsNCj4+Pj4+Pj4gDQo+Pj4+ Pj4+IGV4dGVybiB2b2lkIGRlY29kZV9yZWxvYyhpbnQgKik7DQo+Pj4+Pj4+IA0KPj4+Pj4+PiB2 b2lkIHRlc3RmdW5jKCkNCj4+Pj4+Pj4gew0KPj4+Pj4+PiBpbnQgYWx0X3JlbG9jOw0KPj4+Pj4+ PiANCj4+Pj4+Pj4gZGVjb2RlX3JlbG9jKCZhbHRfcmVsb2MpOw0KPj4+Pj4+PiANCj4+Pj4+Pj4g aWYgKGFsdF9yZWxvYykgLyogeyBkZy13YXJuaW5nICJtYXkgYmUgdXNlZCB1bmluaXRpYWxpemVk IiB9ICovDQo+Pj4+Pj4+IGJhciA9IDQyOyANCj4+Pj4+Pj4gfQ0KPj4+Pj4+PiA9PT09PQ0KPj4+ Pj4+PiANCj4+Pj4+Pj4gSW4gdGhlIGFib3ZlLCB0aGUgYXV0byB2YXIg4oCcYWx0X3JlbG9j4oCd IGlzIGFkZHJlc3MgdGFrZW4sIHRoZW4gdGhlIGdpbXBsZSBkdW1wIGZvciBpdCB3aGVuIGNvbXBp bGVkIHdpdGggLWZ0cml2aWFsLWF1dG8tdmFyLWluaXQ9emVybyBpczoNCj4+Pj4+Pj4gDQo+Pj4+ Pj4+IHZvaWQgdGVzdGZ1bmMgKCkNCj4+Pj4+Pj4gew0KPj4+Pj4+PiBpbnQgYWx0X3JlbG9jOw0K Pj4+Pj4+PiANCj4+Pj4+Pj4gdHJ5DQo+Pj4+Pj4+IHsNCj4+Pj4+Pj4gIF8xID0gLkRFRkVSUkVE X0lOSVQgKDQsIDIsIDApOw0KPj4+Pj4+PiAgYWx0X3JlbG9jID0gXzE7DQo+Pj4+Pj4+ICBkZWNv ZGVfcmVsb2MgKCZhbHRfcmVsb2MpOw0KPj4+Pj4+PiAgYWx0X3JlbG9jLjBfMiA9IGFsdF9yZWxv YzsNCj4+Pj4+Pj4gIGlmIChhbHRfcmVsb2MuMF8yICE9IDApIGdvdG8gPEQuMTk0OT47IGVsc2Ug Z290byA8RC4xOTUwPjsNCj4+Pj4+Pj4gIDxELjE5NDk+Og0KPj4+Pj4+PiAgYmFyID0gNDI7DQo+ Pj4+Pj4+ICA8RC4xOTUwPjoNCj4+Pj4+Pj4gfQ0KPj4+Pj4+PiBmaW5hbGx5DQo+Pj4+Pj4+IHsN Cj4+Pj4+Pj4gIGFsdF9yZWxvYyA9IHtDTE9CQkVSfTsNCj4+Pj4+Pj4gfQ0KPj4+Pj4+PiB9DQo+ Pj4+Pj4+IA0KPj4+Pj4+PiBJLmUsIGluc3RlYWQgb2YgdGhlIGV4cGVjdGVkIElSOg0KPj4+Pj4+ PiANCj4+Pj4+Pj4gYWx0X3JlbG9jID0gLkRFRkVSUkVEX0lOSVQgKDQsIDIsIDApOw0KPj4+Pj4+ PiANCj4+Pj4+Pj4gV2UgZ290IHRoZSBmb2xsb3dpbmc6DQo+Pj4+Pj4+IA0KPj4+Pj4+PiBfMSA9 IC5ERUZFUlJFRF9JTklUICg0LCAyLCAwKTsNCj4+Pj4+Pj4gIGFsdF9yZWxvYyA9IF8xOw0KPj4+ Pj4+PiANCj4+Pj4+Pj4gSSBndWVzcyB0aGUgdGVtcCDigJxfMeKAnSBpcyBjcmVhdGVkIGJlY2F1 c2Ug4oCcYWx0X3JlbG9j4oCdIGlzIGFkZHJlc3MgdGFrZW4uIA0KPj4+Pj4+IA0KPj4+Pj4+IFll cyBhbmQgbm8uIFRoZSByZWFzb24gaXMgdGhhdCBhbHRfcmVsb2MgaXMgbWVtb3J5IChiZWNhdXNl IGl0IGlzIGFkZHJlc3MgdGFrZW4pIGFuZCB0aGF0IEdJTVBMRSBzYXlzIHRoYXQgcmVnaXN0ZXIg dHlwZWQgc3RvcmVzIG5lZWQgdG8gdXNlIGEgaXNfZ2ltcGxlX3ZhbCBSSFMgd2hpY2ggdGhlIGNh bGwgaXMgbm90Lg0KPj4+Pj4gDQo+Pj4+PiBPa2F5Lg0KPj4+Pj4+IA0KPj4+Pj4+PiBNeSBxdWVz dGlvbnM6DQo+Pj4+Pj4+IA0KPj4+Pj4+PiBTaGFsbCB3ZSBhY2NlcHQgc3VjaCBJUiBmb3IgLkRF RkVSUkVEX0lOSVQgcHVycG9zZSB3aGVuIHRoZSBhdXRvIHZhciBpcyBhZGRyZXNzIHRha2VuPyAN Cj4+Pj4+PiANCj4+Pj4+PiBJIHRoaW5rIHNvLiBOb3RlIGl0IGRvZXNuJ3QgbmVjZXNzYXJpbHkg bmVlZCBhZGRyZXNzIHRha2luZyBidXQgYW55IG90aGVyIHJlYXNvbiB0aGF0IHByZXZlbnRzIFNT QSByZXdyaXRpbmcgdGhlIHZhcmlhYmxlIHN1ZmZpY2VzLiANCj4+Pj4+IA0KPj4+Pj4gWW91IG1l YW4sIGluIGFkZGl0aW9uIHRvIOKAnGFkZHJlc3MgdGFrZW7igJ0sIHRoZXJlIGFyZSBvdGhlciBz aXR1YXRpb25zIHRoYXQgd2lsbCBpbnRyb2R1Y2Ugc3VjaCBJUjoNCj4+Pj4+IA0KPj4+Pj4gdGVt cCA9IC5ERUZFUlJFRF9JTklUKCk7DQo+Pj4+PiBhdXRvX3ZhciA9IHRlbXA7DQo+Pj4+PiANCj4+ Pj4+IFNvLCBzdWNoIElSIGlzIHVuYXZvaWRhYmxlIGFuZCB3ZSBoYXZlIHRvIGhhbmRsZSBpdD8N Cj4+Pj4gDQo+Pj4+IFllcy4gDQo+Pj4+IA0KPj4+Pj4gSWYgd2UgaGF2ZSB0byBoYW5kbGUgaXQs ICB3aGF04oCZIHRoZSBiZXN0IHdheSB0byBkbyBpdD8NCj4+Pj4+IA0KPj4+Pj4gVGhlIHNvbHV0 aW9uIGluIG15IG1pbmQgaXM6DQo+Pj4+PiAxLiBEdXJpbmcgdW5pbml0aWFsaXplZCBhbmFseXNp cyBwaGFzZSwgZm9sbG93aW5nIHRoZSBkYXRhIGZsb3cgdG8gY29ubmVjdCAuREVGRVJSRURfSU5J VCB0byDigJxhdXRvX3ZhcuKAnSwgYW5kIHRoZW4gZGVjaWRlIHRoYXQg4oCcYXV0b192YXLigJ0g aXMgdW5pbml0aWFsaXplZC4NCj4+Pj4gDQo+Pj4+IFllcy4gQmFzaWNhbGx5IGlmIHRoZXJlJ3Mg YW4gYXJ0aWZpY2lhbCB2YXJpYWJsZSBhdXRvIGluaXRpYWxpemVkIHlvdSBoYXZlIHRvIGxvb2sg YXQgaXRzIHVzZXMuIA0KPj4+PiANCj4+Pj4+IDIuIER1cmluZyBSVEwgZXhwYW5zaW9uLCBmb2xs b3dpbmcgdGhlIGRhdGEgZmxvdyB0byBjb25uZWN0IC5ERUZFUlJFRF9JTklUIHRvIOKAnGF1dG9f dmFy4oCdLCBhbmQgdGhlbiBkZWxldGUg4oCcdGVtcOKAnSwgYW5kIHRoZW4gZXhwYW5kIC5ERUZF UlJFRF9JTklUIHRvIGF1dG9fdmFyLg0KPj4+PiANCj4+Pj4gVGhhdCBzaG91bGRuJ3QgYmUgbmVj ZXNzYXJ5LiBZb3UnZCBpbml0aWFsaXplIGEgdGVtcG9yYXJ5IHJlZ2lzdGVyIHdoaWNoIGlzIHRo ZW4gY29waWVkIHRvIHRoZSByZWFsIHZhcmlhYmxlLiBUaGF0J3MgZ29vZCBlbm91Z2ggYW5kIHNo b3VsZCBiZSBvcHRpbWl6ZWQgYnkgdGhlIFJUTCBwaXBlbGluZS4gDQo+Pj4+IA0KPj4+Pj4gTGV0 IG1lIGtub3cgeW91ciBjb21tZW50cyBhbmQgc3VnZ2VzdGlvbnMgb24gdGhpcy4NCj4+Pj4+IA0K Pj4+Pj4gDQo+Pj4+Pj4gDQo+Pj4+Pj4gVGhlIG9ubHkgb3RoZXIgb3B0aW9uIGlzIHRvIGZvcmNl LiBERUZFUkVEX0lOSVQgbWFraW5nIHRoZSBMSFMgYWRkcmVzcyB0YWtlbiB3aGljaCBJIHRoaW5r IGNvdWxkIGJlIGFjaGlldmVkIGJ5IHBhc3NpbmcgaXQgdGhlIGFkZHJlc3MgYXMgYXJndW1lbnQg aW5zdGVhZCBvZiBoYXZpbmcgYSBMSFMuIEJ1dCBsZXQncyBub3QgZ28gZG93biB0aGlzIHJvdXRl IC0gaXQgd2lsbCBoYXZlIHF1aXRlIGJhZCBiZWhhdmlvciBvbiBhbGlhcyBhbmFseXNpcyBhbmQg b3B0aW1pemF0aW9uLiANCj4+Pj4+IA0KPj4+Pj4gT2theS4NCj4+Pj4+IA0KPj4+Pj4gUWluZw0K Pj4+Pj4+IA0KPj4+Pj4+PiBJZiBzbywg4oCcdW5pbml0aWFsaXplZCBhbmFseXNpc+KAnSBwaGFz ZSBuZWVkIHRvIGJlIGZ1cnRoZXIgYWRqdXN0ZWQgdG8gc3BlY2lhbGx5IGhhbmRsZSBzdWNoIElS LiANCj4+Pj4+Pj4gDQo+Pj4+Pj4+IElmIG5vdCwgd2hhdCBzaG91bGQgd2UgZG8gd2hlbiB0aGUg YXV0byB2YXIgaXMgYWRkcmVzcyB0YWtlbj8NCj4+Pj4+Pj4gDQo+Pj4+Pj4+IFRoYW5rcyBhIGxv dC4NCj4+Pj4+Pj4gDQo+Pj4+Pj4+IFFpbmcNCj4+Pj4+Pj4gDQo+Pj4+Pj4+IA0KPj4+Pj4+Pj4g T24gQXVnIDExLCAyMDIxLCBhdCA4OjU4IEFNLCBSaWNoYXJkIEJpZW5lciA8cmd1ZW50aGVyQHN1 c2UuZGU+IHdyb3RlOg0KPj4+Pj4+Pj4gDQo+Pj4+Pj4+PiBPbiBXZWQsIDExIEF1ZyAyMDIxLCBR aW5nIFpoYW8gd3JvdGU6DQo+Pj4+Pj4+PiANCj4+Pj4+Pj4+PiANCj4+Pj4+Pj4+PiANCj4+Pj4+ Pj4+Pj4gT24gQXVnIDExLCAyMDIxLCBhdCA4OjM3IEFNLCBSaWNoYXJkIEJpZW5lciA8cmd1ZW50 aGVyQHN1c2UuZGU+IHdyb3RlOg0KPj4+Pj4+Pj4+PiANCj4+Pj4+Pj4+Pj4gT24gV2VkLCAxMSBB dWcgMjAyMSwgUWluZyBaaGFvIHdyb3RlOg0KPj4+Pj4+Pj4+PiANCj4+Pj4+Pj4+Pj4+IA0KPj4+ Pj4+Pj4+Pj4gDQo+Pj4+Pj4+Pj4+Pj4gT24gQXVnIDExLCAyMDIxLCBhdCAyOjAyIEFNLCBSaWNo YXJkIEJpZW5lciA8cmd1ZW50aGVyQHN1c2UuZGU+IHdyb3RlOg0KPj4+Pj4+Pj4+Pj4+IA0KPj4+ Pj4+Pj4+Pj4+IE9uIFR1ZSwgMTAgQXVnIDIwMjEsIFFpbmcgWmhhbyB3cm90ZToNCj4+Pj4+Pj4+ Pj4+PiANCj4+Pj4+Pj4+Pj4+Pj4gDQo+Pj4+Pj4+Pj4+Pj4+IA0KPj4+Pj4+Pj4+Pj4+Pj4gT24g QXVnIDEwLCAyMDIxLCBhdCAzOjE2IFBNLCBRaW5nIFpoYW8gdmlhIEdjYy1wYXRjaGVzIDxnY2Mt cGF0Y2hlc0BnY2MuZ251Lm9yZz4gd3JvdGU6DQo+Pj4+Pj4+Pj4+Pj4+PiANCj4+Pj4+Pj4+Pj4+ Pj4+IEhpLCBSaWNoYXJkLA0KPj4+Pj4+Pj4+Pj4+Pj4gDQo+Pj4+Pj4+Pj4+Pj4+Pj4gT24gQXVn IDEwLCAyMDIxLCBhdCAxMDoyMiBBTSwgUmljaGFyZCBCaWVuZXIgPHJndWVudGhlckBzdXNlLmRl PiB3cm90ZToNCj4+Pj4+Pj4+Pj4+Pj4+Pj4+IA0KPj4+Pj4+Pj4+Pj4+Pj4+Pj4gRXNwZWNpYWxs eSBpbiB0aGUgVkxBIGNhc2UgYnV0IGxpa2VseSBhbHNvIGluIGdlbmVyYWwgKHRob3VnaCB1bmxp a2VseQ0KPj4+Pj4+Pj4+Pj4+Pj4+Pj4gc2luY2UgdXN1YWxseSB0aGUgcmVjZWl2ZXIgb2YgaW5p dGlhbGl6YXRpb25zIGFyZSBzaW1wbGUgZW5vdWdoKS4gIEknZA0KPj4+Pj4+Pj4+Pj4+Pj4+Pj4g ZXhwZWN0IHRoZSBWTEEgY2FzZSBlbmQgdXAgYXMNCj4+Pj4+Pj4+Pj4+Pj4+Pj4+IA0KPj4+Pj4+ Pj4+Pj4+Pj4+Pj4gKnB0cl90b19kZWNsID0gLkRFRkVSUkVEX0lOSVQgKC4uLik7DQo+Pj4+Pj4+ Pj4+Pj4+Pj4+PiANCj4+Pj4+Pj4+Pj4+Pj4+Pj4+IHdoZXJlICpwdHJfdG9fZGVjbCBpcyB0aGUg REVDTF9WQUxVRV9FWFBSIG9mIHRoZSBkZWNsLg0KPj4+Pj4+Pj4+Pj4+Pj4+PiANCj4+Pj4+Pj4+ Pj4+Pj4+Pj4gU28sIGZvciB0aGUgZm9sbG93aW5nIHNtYWxsIHRlc3RpbmcgY2FzZToNCj4+Pj4+ Pj4+Pj4+Pj4+Pj4gDQo+Pj4+Pj4+Pj4+Pj4+Pj4+ID09PT0NCj4+Pj4+Pj4+Pj4+Pj4+Pj4gZXh0 ZXJuIHZvaWQgYmFyIChpbnQpOw0KPj4+Pj4+Pj4+Pj4+Pj4+PiANCj4+Pj4+Pj4+Pj4+Pj4+Pj4g dm9pZCBmb28oaW50IG4pDQo+Pj4+Pj4+Pj4+Pj4+Pj4+IHsNCj4+Pj4+Pj4+Pj4+Pj4+Pj4gaW50 IGFycltuXTsNCj4+Pj4+Pj4+Pj4+Pj4+Pj4gYmFyIChhcnJbMl0pOw0KPj4+Pj4+Pj4+Pj4+Pj4+ PiByZXR1cm47DQo+Pj4+Pj4+Pj4+Pj4+Pj4+IH0NCj4+Pj4+Pj4+Pj4+Pj4+Pj4gPT09PT0NCj4+ Pj4+Pj4+Pj4+Pj4+Pj4gDQo+Pj4+Pj4+Pj4+Pj4+Pj4+IElmIEkgY29tcGlsZSBpdCB3aXRoIC1m dHJpdmlhbC1hdXRvLXZhci1pbml0PXplcm8gLWZkdW1wLXRyZWUtZ2ltcGxlIC1TIC1vIGF1dG8t aW5pdC0xMS5zIC1mZHVtcC1ydGwtZXhwYW5kLCB0aGUgKi5naW1wbGUgZHVtcCBpczoNCj4+Pj4+ Pj4+Pj4+Pj4+Pj4gDQo+Pj4+Pj4+Pj4+Pj4+Pj4+ID09PT09DQo+Pj4+Pj4+Pj4+Pj4+Pj4+IHZv aWQgZm9vIChpbnQgbikNCj4+Pj4+Pj4+Pj4+Pj4+Pj4gew0KPj4+Pj4+Pj4+Pj4+Pj4+PiBpbnQg bi4wOw0KPj4+Pj4+Pj4+Pj4+Pj4+PiBzaXpldHlwZSBELjE5NTA7DQo+Pj4+Pj4+Pj4+Pj4+Pj4+ IGJpdHNpemV0eXBlIEQuMTk1MTsNCj4+Pj4+Pj4+Pj4+Pj4+Pj4gc2l6ZXR5cGUgRC4xOTUyOw0K Pj4+Pj4+Pj4+Pj4+Pj4+PiBiaXRzaXpldHlwZSBELjE5NTM7DQo+Pj4+Pj4+Pj4+Pj4+Pj4+IHNp emV0eXBlIEQuMTk1NDsNCj4+Pj4+Pj4+Pj4+Pj4+Pj4gaW50WzA6RC4xOTUwXSAqIGFyci4xOw0K Pj4+Pj4+Pj4+Pj4+Pj4+PiB2b2lkICogc2F2ZWRfc3RhY2suMjsNCj4+Pj4+Pj4+Pj4+Pj4+Pj4g aW50IGFyclswOkQuMTk1MF0gW3ZhbHVlLWV4cHI6ICphcnIuMV07DQo+Pj4+Pj4+Pj4+Pj4+Pj4+ IA0KPj4+Pj4+Pj4+Pj4+Pj4+PiBzYXZlZF9zdGFjay4yID0gX19idWlsdGluX3N0YWNrX3NhdmUg KCk7DQo+Pj4+Pj4+Pj4+Pj4+Pj4+IHRyeQ0KPj4+Pj4+Pj4+Pj4+Pj4+PiB7DQo+Pj4+Pj4+Pj4+ Pj4+Pj4+IG4uMCA9IG47DQo+Pj4+Pj4+Pj4+Pj4+Pj4+IF8xID0gKGxvbmcgaW50KSBuLjA7DQo+ Pj4+Pj4+Pj4+Pj4+Pj4+IF8yID0gXzEgKyAtMTsNCj4+Pj4+Pj4+Pj4+Pj4+Pj4gXzMgPSAoc2l6 ZXR5cGUpIF8yOw0KPj4+Pj4+Pj4+Pj4+Pj4+PiBELjE5NTAgPSBfMzsNCj4+Pj4+Pj4+Pj4+Pj4+ Pj4gXzQgPSAoc2l6ZXR5cGUpIG4uMDsNCj4+Pj4+Pj4+Pj4+Pj4+Pj4gXzUgPSAoYml0c2l6ZXR5 cGUpIF80Ow0KPj4+Pj4+Pj4+Pj4+Pj4+PiBfNiA9IF81ICogMzI7DQo+Pj4+Pj4+Pj4+Pj4+Pj4+ IEQuMTk1MSA9IF82Ow0KPj4+Pj4+Pj4+Pj4+Pj4+PiBfNyA9IChzaXpldHlwZSkgbi4wOw0KPj4+ Pj4+Pj4+Pj4+Pj4+PiBfOCA9IF83ICogNDsNCj4+Pj4+Pj4+Pj4+Pj4+Pj4gRC4xOTUyID0gXzg7 DQo+Pj4+Pj4+Pj4+Pj4+Pj4+IF85ID0gKHNpemV0eXBlKSBuLjA7DQo+Pj4+Pj4+Pj4+Pj4+Pj4+ IF8xMCA9IChiaXRzaXpldHlwZSkgXzk7DQo+Pj4+Pj4+Pj4+Pj4+Pj4+IF8xMSA9IF8xMCAqIDMy Ow0KPj4+Pj4+Pj4+Pj4+Pj4+PiBELjE5NTMgPSBfMTE7DQo+Pj4+Pj4+Pj4+Pj4+Pj4+IF8xMiA9 IChzaXpldHlwZSkgbi4wOw0KPj4+Pj4+Pj4+Pj4+Pj4+PiBfMTMgPSBfMTIgKiA0Ow0KPj4+Pj4+ Pj4+Pj4+Pj4+PiBELjE5NTQgPSBfMTM7DQo+Pj4+Pj4+Pj4+Pj4+Pj4+IGFyci4xID0gX19idWls dGluX2FsbG9jYV93aXRoX2FsaWduIChELjE5NTQsIDMyKTsNCj4+Pj4+Pj4+Pj4+Pj4+Pj4gYXJy ID0gLkRFRkVSUkVEX0lOSVQgKEQuMTk1MiwgMiwgMSk7DQo+Pj4+Pj4+Pj4+Pj4+Pj4+IF8xNCA9 ICgqYXJyLjEpWzJdOw0KPj4+Pj4+Pj4+Pj4+Pj4+PiBiYXIgKF8xNCk7DQo+Pj4+Pj4+Pj4+Pj4+ Pj4+IHJldHVybjsNCj4+Pj4+Pj4+Pj4+Pj4+Pj4gfQ0KPj4+Pj4+Pj4+Pj4+Pj4+PiBmaW5hbGx5 DQo+Pj4+Pj4+Pj4+Pj4+Pj4+IHsNCj4+Pj4+Pj4+Pj4+Pj4+Pj4gX19idWlsdGluX3N0YWNrX3Jl c3RvcmUgKHNhdmVkX3N0YWNrLjIpOw0KPj4+Pj4+Pj4+Pj4+Pj4+PiB9DQo+Pj4+Pj4+Pj4+Pj4+ Pj4+IH0NCj4+Pj4+Pj4+Pj4+Pj4+Pj4gDQo+Pj4+Pj4+Pj4+Pj4+Pj4+ID09PT0NCj4+Pj4+Pj4+ Pj4+Pj4+Pj4gDQo+Pj4+Pj4+Pj4+Pj4+Pj4+IFlvdSB0aGluayB0aGF0IHRoZSBhYm92ZSAuREVG RUVSRURfSU5JVCBpcyBub3QgY29ycmVjdD8NCj4+Pj4+Pj4+Pj4+Pj4+Pj4gSXQgc2hvdWxkIGJl Og0KPj4+Pj4+Pj4+Pj4+Pj4+PiANCj4+Pj4+Pj4+Pj4+Pj4+Pj4gKmFyci4xID0gLkRFRkVSUkVE X0lOSVQgKEQuMTk1Mi4gMiwgMSk7DQo+Pj4+Pj4+Pj4+Pj4+Pj4+IA0KPj4+Pj4+Pj4+Pj4+Pj4+ PiA/DQo+Pj4+Pj4+Pj4+Pj4+Pj4gDQo+Pj4+Pj4+Pj4+Pj4+Pj4gWWVzLg0KPj4+Pj4+Pj4+Pj4+ Pj4+IA0KPj4+Pj4+Pj4+Pj4+Pj4gDQo+Pj4+Pj4+Pj4+Pj4+PiBJIHVwZGF0ZWQgZ2ltcGxpZnku YyBmb3IgVkxBIGFuZCBub3cgaXQgZW1pdHMgdGhlIGNhbGwgdG8gLkRFRkVSUkVEX0lOSVQgYXM6 DQo+Pj4+Pj4+Pj4+Pj4+PiANCj4+Pj4+Pj4+Pj4+Pj4+IGFyci4xID0gX19idWlsdGluX2FsbG9j YV93aXRoX2FsaWduIChELjE5NTQsIDMyKTsNCj4+Pj4+Pj4+Pj4+Pj4+ICphcnIuMSA9IC5ERUZF UlJFRF9JTklUIChELjE5NTIsIDIsIDEpOw0KPj4+Pj4+Pj4+Pj4+Pj4gDQo+Pj4+Pj4+Pj4+Pj4+ PiBIb3dldmVyLCB0aGlzIGNhbGwgdHJpZ2dlcmVkIHRoZSBhc3NlcnRpb24gZmFpbHVyZSBpbiB2 ZXJpZnlfZ2ltcGxlX2NhbGwgb2YgdHJlZS1jZmcuYyBiZWNhdXNlIHRoZSBMSFMgaXMgbm90IGEg dmFsaWQgTEhTLiANCj4+Pj4+Pj4+Pj4+Pj4+IFRoZW4gSSBtb2RpZnkgdHJlZS1jZmcuYyBhczoN Cj4+Pj4+Pj4+Pj4+Pj4+IA0KPj4+Pj4+Pj4+Pj4+Pj4gZGlmZiAtLWdpdCBhL2djYy90cmVlLWNm Zy5jIGIvZ2NjL3RyZWUtY2ZnLmMNCj4+Pj4+Pj4+Pj4+Pj4+IGluZGV4IDMzMGViN2RkODliZi4u MTgwZDRmMWY5ZTMyIDEwMDY0NA0KPj4+Pj4+Pj4+Pj4+Pj4gLS0tIGEvZ2NjL3RyZWUtY2ZnLmMN Cj4+Pj4+Pj4+Pj4+Pj4+ICsrKyBiL2djYy90cmVlLWNmZy5jDQo+Pj4+Pj4+Pj4+Pj4+PiBAQCAt MzM3NSw3ICszMzc1LDExIEBAIHZlcmlmeV9naW1wbGVfY2FsbCAoZ2NhbGwgKnN0bXQpDQo+Pj4+ Pj4+Pj4+Pj4+PiB9DQo+Pj4+Pj4+Pj4+Pj4+PiANCj4+Pj4+Pj4+Pj4+Pj4+IHRyZWUgbGhzID0g Z2ltcGxlX2NhbGxfbGhzIChzdG10KTsNCj4+Pj4+Pj4+Pj4+Pj4+ICsgIC8qIEZvciAuREVGRVJS RURfSU5JVCBjYWxsLCB0aGUgTEhTIG1pZ2h0IGJlIGFuIGluZGlyZWN0aW9uIG9mDQo+Pj4+Pj4+ Pj4+Pj4+PiArICAgICBhIHBvaW50ZXIgZm9yIHRoZSBWTEEgdmFyaWFibGUsIHdoaWNoIGlzIG5v dCBhIHZhbGlkIExIUyBvZg0KPj4+Pj4+Pj4+Pj4+Pj4gKyAgICAgYSBnaW1wbGUgY2FsbCwgd2Ug aWdub3JlIHRoZSBhc3NzZXJ0aW9uIG9uIHRoaXMuICAqLyANCj4+Pj4+Pj4+Pj4+Pj4+IGlmIChs aHMNCj4+Pj4+Pj4+Pj4+Pj4+ICsgICAgICAmJiAoIWdpbXBsZV9jYWxsX2ludGVybmFsX3AgKHN0 bXQsIElGTl9ERUZFUlJFRF9JTklUKSkNCj4+Pj4+Pj4+Pj4+Pj4+ICYmICghaXNfZ2ltcGxlX3Jl ZyAobGhzKQ0KPj4+Pj4+Pj4+Pj4+Pj4gICAmJiAoIWlzX2dpbXBsZV9sdmFsdWUgKGxocykNCj4+ Pj4+Pj4+Pj4+Pj4+ICAgICAgIHx8IHZlcmlmeV90eXBlc19pbl9naW1wbGVfcmVmZXJlbmNlDQo+ Pj4+Pj4+Pj4+Pj4+PiANCj4+Pj4+Pj4+Pj4+Pj4+IFRoZSBhc3NlcnRpb24gZmFpbHVyZSBpbiB0 cmVlLWNmZy5jIGdvdCByZXNvbHZlZCwgYnV0IEkgZ290IGFub3RoZXIgYXNzZXJ0aW9uIGZhaWx1 cmUgaW4gb3BlcmFuZHNfc2Nhbm5lcjo6Z2V0X2V4cHJfb3BlcmFuZHMgKHRyZWUgKmV4cHJfcCwg aW50IGZsYWdzKSwgbGluZSA5NDU6DQo+Pj4+Pj4+Pj4+Pj4+PiANCj4+Pj4+Pj4+Pj4+Pj4+IDkz OSAgIC8qIElmIHdlIGdldCBoZXJlLCBzb21ldGhpbmcgaGFzIGdvbmUgd3JvbmcuICAqLw0KPj4+ Pj4+Pj4+Pj4+Pj4gOTQwICAgaWYgKGZsYWdfY2hlY2tpbmcpDQo+Pj4+Pj4+Pj4+Pj4+PiA5NDEg ICAgIHsNCj4+Pj4+Pj4+Pj4+Pj4+IDk0MiAgICAgICBmcHJpbnRmIChzdGRlcnIsICJ1bmhhbmRs ZWQgZXhwcmVzc2lvbiBpbiBnZXRfZXhwcl9vcGVyYW5kcygpOlxuIik7DQo+Pj4+Pj4+Pj4+Pj4+ PiA5NDMgICAgICAgZGVidWdfdHJlZSAoZXhwcik7DQo+Pj4+Pj4+Pj4+Pj4+PiA5NDQgICAgICAg ZnB1dHMgKCJcbiIsIHN0ZGVycik7DQo+Pj4+Pj4+Pj4+Pj4+PiA5NDUgICAgICAgZ2NjX3VucmVh Y2hhYmxlICgpOw0KPj4+Pj4+Pj4+Pj4+Pj4gOTQ2ICAgICB9DQo+Pj4+Pj4+Pj4+Pj4+PiANCj4+ Pj4+Pj4+Pj4+Pj4+IExvb2tzIGxpa2UgdGhhdCAgdGhlIGdpbXBsZSBzdGF0ZW1lbnQ6DQo+Pj4+ Pj4+Pj4+Pj4+PiAqYXJyLjEgPSAuREVGRVJSRURfSU5JVCAoRC4xOTUyLCAyLCAxKTsNCj4+Pj4+ Pj4+Pj4+Pj4+IA0KPj4+Pj4+Pj4+Pj4+Pj4gSXMgbm90IHZhbGlkLiAgaS5lLCB0aGUgTEhTIHNo b3VsZCBub3QgYmUgYW4gaW5kaXJlY3Rpb24gdG8gYSBwb2ludGVyLiANCj4+Pj4+Pj4+Pj4+Pj4+ IA0KPj4+Pj4+Pj4+Pj4+Pj4gSG93IHRvIHJlc29sdmUgdGhpcyBpc3N1ZT8NCj4+Pj4+Pj4+Pj4+ PiANCj4+Pj4+Pj4+Pj4+PiBJdCBzb3VuZHMgbGlrZSB0aGUgTEhTIGlzIGFuIElORElSRUNUX1JF RiBtYXliZT8gIFRoYXQgbWVhbnMgaXQncw0KPj4+Pj4+Pj4+Pj4+IHN0aWxsIG5vdCBwcm9wZXJs eSBnaW1wbGlmaWVkIGJlY2F1c2UgaXQgc2hvdWxkIGVuZCB1cCBhcyBhIE1FTV9SRUYNCj4+Pj4+ Pj4+Pj4+PiBpbnN0ZWFkLg0KPj4+Pj4+Pj4+Pj4+IA0KPj4+Pj4+Pj4+Pj4+IEJ1dCBJJ20ganVz dCBndWVzc2luZyBoZXJlIC4uLiBpZiB5b3UgYXJlIGluIGEgZGVidWdnZXIgdGhlbiB5b3UgY2Fu DQo+Pj4+Pj4+Pj4+Pj4gaW52b2tlIGRlYnVnX3RyZWUgKGxocykgaW4gdGhlIGluZmVyaW9yIHRv IHNlZSB3aGF0IGl0IGV4YWN0bHkgaXMNCj4+Pj4+Pj4+Pj4+PiBhdCB0aGUgcG9pbnQgb2YgdGhl IGZhaWx1cmUuDQo+Pj4+Pj4+Pj4+PiANCj4+Pj4+Pj4+Pj4+IFllcywgaXTigJlzIGFuIElORElS RUNUX1JFRiBhdCB0aGUgcG9pbnQgb2YgdGhlIGZhaWx1cmUgZXZlbiB0aG91Z2ggSSBhZGRlZCBh IA0KPj4+Pj4+Pj4+Pj4gDQo+Pj4+Pj4+Pj4+PiBnaW1wbGlmeV92YXJfb3JfcGFybV9kZWNsICAo bGhzKSANCj4+Pj4+Pj4+Pj4gDQo+Pj4+Pj4+Pj4+IEkgdGhpbmsgdGhlIGVhc2llc3QgaXMgdG8g YnVpbGQgdGhlIC5ERUZFUlJFRF9JTklUIGFzIEdFTkVSSUMNCj4+Pj4+Pj4+Pj4gYW5kIHVzZSBn aW1wbGlmeV9hc3NpZ24gKCkgdG8gZ2ltcGxpZnkgYW5kIGFkZCB0aGUgcmVzdWx0DQo+Pj4+Pj4+ Pj4+IHRvIHRoZSBzZXF1ZW5jZS4gIFRodXMsIGJ1aWxkIGEgR0VORVJJQyBDQUxMX0VYUFIgYW5k IHRoZW4NCj4+Pj4+Pj4+Pj4gZ2ltcGxpZnlfYXNzaWduIChsaHMsIGNhbGxfZXhwciwgc2VxKTsN Cj4+Pj4+Pj4+PiANCj4+Pj4+Pj4+PiBXaGljaCB1dGlsaXR5IHJvdXRpbmUgaXMgdXNlZCB0byBi dWlsZCBhbiBJbnRlcm5hbCBnZW5lcmljIGNhbGw/DQo+Pj4+Pj4+Pj4gQ3VycmVudGx5LCBJIHVz ZWQg4oCcZ2ltcGxlX2J1aWxkX2NhbGxfaW50ZXJuYWzigJ0gdG8gYnVpbGQgdGhpcyBpbnRlcm5h bCBnaW1wbGUgY2FsbC4NCj4+Pj4+Pj4+PiANCj4+Pj4+Pj4+PiBGb3IgdGhlIGdlbmVyaWMgY2Fs bCwgc2hhbGwgSSB1c2Ug4oCcYnVpbGRfY2FsbF9leHByX2xvY+KAnSA/IA0KPj4+Pj4+Pj4gDQo+ Pj4+Pj4+PiBGb3IgZXhhbXBsZSBsb29rIGF0IGJ1aWxkX2FzYW5fcG9pc29uX2NhbGxfZXhwciB3 aGljaCBkb2VzIHN1Y2ggdGhpbmcNCj4+Pj4+Pj4+IGZvciBBU0FOIHBvaXNvbiBpbnRlcm5hbCBm dW5jdGlvbiBjYWxsIGluc2VydGlvbiBhdCBnaW1wbGlmaWNhdGlvbiB0aW1lLg0KPj4+Pj4+Pj4g DQo+Pj4+Pj4+PiBSaWNoYXJkLg0KPj4+Pj4+Pj4gDQo+Pj4+Pj4+Pj4gUWluZw0KPj4+Pj4+Pj4+ IA0KPj4+Pj4+Pj4+PiANCj4+Pj4+Pj4+Pj4gUmljaGFyZC4NCj4+Pj4+Pj4+Pj4gDQo+Pj4+Pj4+ Pj4+PiBRaW5nDQo+Pj4+Pj4+Pj4+PiANCj4+Pj4+Pj4+Pj4+PiANCj4+Pj4+Pj4+Pj4+Pj4gSSBj YW1lIHVwIHdpdGggdGhlIGZvbGxvd2luZyBzb2x1dGlvbjoNCj4+Pj4+Pj4+Pj4+Pj4gDQo+Pj4+ Pj4+Pj4+Pj4+IERlZmluZSB0aGUgSUZOX0RFRkVSUkVEX0lOSVQgZnVuY3Rpb24gYXM6DQo+Pj4+ Pj4+Pj4+Pj4+IA0KPj4+Pj4+Pj4+Pj4+PiBMSFMgPSBERUZFUlJFRF9JTklUIChTSVpFIG9mIHRo ZSBERUNMLCBJTklUX1RZUEUsIElTX1ZMQSk7DQo+Pj4+Pj4+Pj4+Pj4+IA0KPj4+Pj4+Pj4+Pj4+ PiBpZiBJU19WTEEgaXMgZmFsc2UsIHRoZSBMSFMgaXMgdGhlIERFQ0wgaXRzZWxmLA0KPj4+Pj4+ Pj4+Pj4+PiBpZiBJU19WTEEgaXMgdHJ1ZSwgdGhlIExIUyBpcyB0aGUgcG9pbnRlciB0byB0aGlz IERFQ0wgdGhhdCBjcmVhdGVkIGJ5DQo+Pj4+Pj4+Pj4+Pj4+IGdpbXBsaWZ5X3ZsYV9kZWNsLg0K Pj4+Pj4+Pj4+Pj4+PiANCj4+Pj4+Pj4+Pj4+Pj4gDQo+Pj4+Pj4+Pj4+Pj4+IFRoZSBiZW5lZml0 IG9mIHRoaXMgc29sdXRpb24gYXJlOg0KPj4+Pj4+Pj4+Pj4+PiANCj4+Pj4+Pj4+Pj4+Pj4gMS4g UmVzb2x2ZWQgdGhlIGludmFsaWQgSVIgaXNzdWU7DQo+Pj4+Pj4+Pj4+Pj4+IDIuIFRoZSBjYWxs IHN0bXQgY2FycmllcyB0aGUgYWRkcmVzcyBvZiB0aGUgVkxBIG5hdHVhbGx5Ow0KPj4+Pj4+Pj4+ Pj4+PiANCj4+Pj4+Pj4+Pj4+Pj4gVGhlIGlzc3VlIHdpdGggdGhpcyBzb2x1dGlvbiBpczoNCj4+ Pj4+Pj4+Pj4+Pj4gDQo+Pj4+Pj4+Pj4+Pj4+IEZvciBWTEEgYW5kIG5vbi1WTEEsIHRoZSBMSFMg d2lsbCBiZSBkaWZmZXJlbnQsIA0KPj4+Pj4+Pj4+Pj4+PiANCj4+Pj4+Pj4+Pj4+Pj4gRG8geW91 IHNlZSBhbnkgb3RoZXIgcG90ZW50aWFsIGlzc3VlcyB3aXRoIHRoaXMgc29sdXRpb24/DQo+Pj4+ Pj4+Pj4+Pj4+IA0KPj4+Pj4+Pj4+Pj4+PiB0aGFua3MuDQo+Pj4+Pj4+Pj4+Pj4+IA0KPj4+Pj4+ Pj4+Pj4+PiBRaW5nDQo+Pj4+Pj4+Pj4+Pj4+IA0KPj4+Pj4+Pj4+Pj4+PiANCj4+Pj4+Pj4+Pj4+ Pj4gDQo+Pj4+Pj4+Pj4+Pj4+IA0KPj4+Pj4+Pj4+Pj4+PiANCj4+Pj4+Pj4+Pj4+PiANCj4+Pj4+ Pj4+Pj4+PiAtLSANCj4+Pj4+Pj4+Pj4+PiBSaWNoYXJkIEJpZW5lciA8cmd1ZW50aGVyQHN1c2Uu ZGU+DQo+Pj4+Pj4+Pj4+Pj4gU1VTRSBTb2Z0d2FyZSBTb2x1dGlvbnMgR2VybWFueSBHbWJILCBN YXhmZWxkc3RyYXNzZSA1LCA5MDQwOSBOdWVybmJlcmcsDQo+Pj4+Pj4+Pj4+Pj4gR2VybWFueTsg R0Y6IEZlbGl4IEltZW5kw7ZyZmZlcjsgSFJCIDM2ODA5IChBRyBOdWVybmJlcmcpDQo+Pj4+Pj4+ Pj4+PiANCj4+Pj4+Pj4+Pj4+IA0KPj4+Pj4+Pj4+PiANCj4+Pj4+Pj4+Pj4gLS0gDQo+Pj4+Pj4+ Pj4+IFJpY2hhcmQgQmllbmVyIDxyZ3VlbnRoZXJAc3VzZS5kZT4NCj4+Pj4+Pj4+Pj4gU1VTRSBT b2Z0d2FyZSBTb2x1dGlvbnMgR2VybWFueSBHbWJILCBNYXhmZWxkc3RyYXNzZSA1LCA5MDQwOSBO dWVybmJlcmcsDQo+Pj4+Pj4+Pj4+IEdlcm1hbnk7IEdGOiBGZWxpeCBJbWVuZMO2cmZmZXI7IEhS QiAzNjgwOSAoQUcgTnVlcm5iZXJnKQ0KPj4+Pj4+Pj4+IA0KPj4+Pj4+Pj4+IA0KPj4+Pj4+Pj4g DQo+Pj4+Pj4+PiAtLSANCj4+Pj4+Pj4+IFJpY2hhcmQgQmllbmVyIDxyZ3VlbnRoZXJAc3VzZS5k ZT4NCj4+Pj4+Pj4+IFNVU0UgU29mdHdhcmUgU29sdXRpb25zIEdlcm1hbnkgR21iSCwgTWF4ZmVs ZHN0cmFzc2UgNSwgOTA0MDkgTnVlcm5iZXJnLA0KPj4+Pj4+Pj4gR2VybWFueTsgR0Y6IEZlbGl4 IEltZW5kw7ZyZmZlcjsgSFJCIDM2ODA5IChBRyBOdWVybmJlcmcpDQo+Pj4gDQo+Pj4gDQo+PiAN Cj4+IC0tIA0KPj4gUmljaGFyZCBCaWVuZXIgPHJndWVudGhlckBzdXNlLmRlPg0KPj4gU1VTRSBT b2Z0d2FyZSBTb2x1dGlvbnMgR2VybWFueSBHbWJILCBNYXhmZWxkc3RyYXNzZSA1LCA5MDQwOSBO dWVybmJlcmcsDQo+PiBHZXJtYW55OyBHRjogRmVsaXggSW1lbmTDtnJmZmVyOyBIUkIgMzY4MDkg KEFHIE51ZXJuYmVyZykNCj4gDQoNCg==