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 7C6A2383B42B for ; Mon, 16 Aug 2021 16:48:45 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 7C6A2383B42B Received: from pps.filterd (m0246630.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.16.0.43/8.16.0.43) with SMTP id 17GGkC8n013993; Mon, 16 Aug 2021 16:48:42 GMT Received: from aserp3030.oracle.com (aserp3030.oracle.com [141.146.126.71]) by mx0b-00069f02.pphosted.com with ESMTP id 3af1q9ap9p-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 16 Aug 2021 16:48:41 +0000 Received: from pps.filterd (aserp3030.oracle.com [127.0.0.1]) by aserp3030.oracle.com (8.16.0.42/8.16.0.42) with SMTP id 17GGipQF169510; Mon, 16 Aug 2021 16:48:41 GMT Received: from nam02-dm3-obe.outbound.protection.outlook.com (mail-dm3nam07lp2040.outbound.protection.outlook.com [104.47.56.40]) by aserp3030.oracle.com with ESMTP id 3ae3ve3cr2-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 16 Aug 2021 16:48:40 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ZyDokDGLjBo7tfy1yNZn8eEgOUw8HTcoKg7IdUA/u0A4+FOGZlwJkQa4YBpZmoAvb2cjwp4u9zmKDAJUCKau83iXgMlNdd2kn7MXOikltpIu4SucQUZzlTccxYNKxB3fEKkcUrbkIuHwj+xk7wHoS/7ZhJEHY7zqcT+VWp3PF+KdlT1I1yddDhN44Zf3JVMtJsnhZdKoLv1ZMh97Xc1M+zFF+Aa7Ee6wjJ8A1SnazDlqtrmay5SlOKYKmK0TUUu9c59yki4ikUHsW6wOksIFO56NjxExu9HQQxQkDoDQhIKATxrZ/p1elKJAg6FZxmwQbzZee/3n/s8CQCb+KGpKIw== 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=MuhwNOrHllrByLIToWxEjYRab9LSvMAAT2BsLkJnVyA=; b=OOcBYOctIprRvDPlqytdxfgPgD9XV4XmCkSOy/j4BuoXGVKiC2NJXpB3mq5GRIpgtcCQfBb8QynGznvaUQo7+3FANT/gNqdynME/IgvCCVAm84xkNMPiDaCmLEtayqxivQkHqMXiK4E2Jbv/IPC1MazWhv2hPhU5Bh+A1qHjHSDdbGUbwKBC2bd1xi2SOgM3xDrgUABNAMqMaZQvmT9UoV1KaTVdyo+agZAFg9azjc0ty1IRBPrFhIIVVLG04RjUSl9i3K1xY4YfCBwEsLcVxa+/18+geD8NDK4cpzl+4+8T73sFMfzfaCoB9vLIknkHQi9fYPnoULJRmPh3Bz6Jcg== 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 CH2PR10MB3847.namprd10.prod.outlook.com (2603:10b6:610:7::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4415.19; Mon, 16 Aug 2021 16:48:39 +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.023; Mon, 16 Aug 2021 16:48:38 +0000 From: Qing Zhao To: Richard Biener CC: Richard Sandiford , Jakub Jelinek , 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/YCAACR6AIAAkCQAgABtVACAAAEPAIAABLkAgAABQACAABmfAIAABkYAgAAIEICAAAlUAIAAPDYAgAb8YoCAAKEtgA== Date: Mon, 16 Aug 2021 16:48:38 +0000 Message-ID: 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: 9fe950b0-5a46-4507-7484-08d960d5b28e x-ms-traffictypediagnostic: CH2PR10MB3847: 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: 5gfIkP0XSZaerqY7pDvbkflSJA7R/ql+slxN700JKJCzmoeekOGYjGYPhDVUKrHMi3ALij7GZtKVh0lIZAkEzpky5YMJsPXJ604JRG1krKmtzEOrqRZHvmuMvy6Ggpr4vWJZW8vqxYP6M+0HSPA2H7QQ3NKmgTueP+t1VCOgfbNPIEYrA9z69WEHvstI5cA8JbTMjU9FMF2+m2x8oWiP6W+GPoGkojM36pn5cINDWGiLZdRD1BD28/ZDfEN/4AysX1IJTxYfN7mcoUXe4M5vTmMYNXE9vobHHZYHGARluSYUDh3EK+T9Rsxk5jB+rlr6RKmeixKXBiqOi708zkppySxhIm+6c7CxmkhuYYKOaeq/4ze2jJOfOs+LQ2/xqZ/whaLPIDwDYCK1vTipyHM4T+npojlPVbSD5kpIb7rUWqkp4vJesahZ1myx3y2Yv/2AcULJPLMfe6qSKNk+p/5+WEr+lP+HrDjhum2x5J+pChWCAXR1xQJtmGC4W6kf3vedKqGTEZLYTiHimUkEQRWg1g1Cs/emujwFFJL9VYu5EYe0YfAJSjhGatrULnnf+3UiWaEKQzlECLPGZhvnzY0MDwahVl1rIjpJYOPWRhzlkldYOA8hFaqVamj2l8iH1fjArpnkbtfrJCx0zJaoH6hkhGh2IXszyYF7XfLoyImRo3+nOaL3ixvwnuxDGxyGFPs7bJYjAFdhZtT2PwOszpPBQuSQvFHh/9kBoqs+CZWKZK64QsxvroaAkOFviIHrQCZtacmR8IuB0G2JX/VYYKdikw== 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:(346002)(376002)(366004)(396003)(39860400002)(136003)(66574015)(186003)(38100700002)(26005)(4326008)(6916009)(8936002)(86362001)(8676002)(33656002)(2906002)(83380400001)(122000001)(6512007)(53546011)(54906003)(91956017)(66946007)(71200400001)(38070700005)(76116006)(6486002)(30864003)(66556008)(36756003)(2616005)(66476007)(64756008)(66446008)(44832011)(6506007)(478600001)(316002)(5660300002)(45980500001)(266184004); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?OGdYUEV3S0cyVlJjMC9SR2JGenozT1lGamczQ0NiQXpFSk9GeDhTY0VNK2ZT?= =?utf-8?B?anM2cEJSUGZBRlViOHE1Z3I4MHBCQmRvNEN0d3dtcUJ0d2lHQWdIM0ZuUVRX?= =?utf-8?B?KzVVbGpIRjNnSXRDNnF2cDFFbUVYdW5Ya2Q0U2tIQ3dpRkpSSGpJakZ5b3Yz?= =?utf-8?B?YzdKZ0dBeFFHSyt2cVlGejd5Q0V4U2R1d3B2bXpCZTN6NnRLamNjQk15R2Rr?= =?utf-8?B?b1ZXQ0NCNkRtVzBHT2xFZ2M4MUVmd2IxZ3dnN1RRK0NPM3FUUGUvZHV3MkNk?= =?utf-8?B?RjZDbEhuVUJzM1BtcG1jMVBlTFpEd0twMmhldEFLT20yTlhwWWRmOUZuUnlF?= =?utf-8?B?dGJ2RmtGK2hwVElpMEZsdUZxemNkdDdqcERmSVFHdHJHVnUzT0xhVTVsdHVQ?= =?utf-8?B?dk9LTlFNN1F0Z0RSaU9SOU1oKzRXNVFtNzNGRkNzSkdoTDdMNVdOU2kwZGVD?= =?utf-8?B?UDdqbS96U1ZUQTgwdmd2ckdEa3A3dFVlODVIaFZnUFB2eXRHTG9EK09Ia21M?= =?utf-8?B?aUgzVjZsUlBlSGU4SWt6c1FhelFJMFV0L1ZxRlY1bjVRQ2JoN1R4Sk51YVps?= =?utf-8?B?b1R2THRvc0dDNnNRbEE2cGpaU0diR3NrSWU3cHBJRXNmZ0hQcWk1ZzBKdjJC?= =?utf-8?B?YldWelNhdllWVG1HV052L3hzb29JeEFDYmFjVE1XcmZ1WDFMbXN3b2VDQ0NS?= =?utf-8?B?SjU2aGZhVjRwbUJmZjVQZm53RWJ1K2MxSUgrcU5vSjF0SUR6U0VuczJEYUU0?= =?utf-8?B?RXc2MGQ2WXQraXJSME1FQ283U3J0S21ZNi92N2xRUDJic09iVjl4N2FVcHhh?= =?utf-8?B?SENQK0NMVzZvQlluSzhudUcvOXhZOTZFUTdpb1Z0Mit2a3U3ZFp1TU9ENTFt?= =?utf-8?B?NTJybCs1Qk02UE1nM2J4c2t1TFM5ZVpEVkc4RHhPYk5HS0cwS01zY1FFN3Z1?= =?utf-8?B?QWovU3kxVGJSN0ZFVlJxdDF0QUJkdFczNG5lYmZJbzBIbnRrMW1IalhyRkg0?= =?utf-8?B?WEJlLzNvek1nZCtobVVRNHpoNGllbjU3NngxeHA1Q2tHUzlrby9LRFVDK3hB?= =?utf-8?B?RWJDYkQzYThvTjZ6ODVLMldZQUVpajB1OHJJL1BsaS82YThoVWVyV3hsdkV2?= =?utf-8?B?NXRRNGNUSFhTMUw1NWxXM3d2WkFsRmM3UVpEZ3JyeWNnUkNYbHliSzZzM3dI?= =?utf-8?B?Rmw3Y0NDRlpnS05iRUh6N3IrTWZmMEpjNldXZGNxcXRUTllIcmJraVgyaDNz?= =?utf-8?B?VGlHNVkvK29MQmFGM3prRHZLekdid21qR3hnT2hudFJlemFhY3hkTFNESm9B?= =?utf-8?B?dDlXVGNPcU85SE1QTXRZYjVFSjNTRXUybDZtVnhZOWxZMHBGaWU3S01zZ055?= =?utf-8?B?WDlXb3BvZllKL2tOTnRoOTh2eGdzVUNSdzFYUnI0K3RSMjZEb09RTEhvUHRM?= =?utf-8?B?VDlyZVMvUEJBcGtIcytleThuaHNVcC90L25NS2tReVp1N3RpZGVlbkNnbVJy?= =?utf-8?B?YXE0RVlvZk5FcWJmaTZUV0dFOFQrbnNHU25VL0hmUDF2MmV2NDYrRS9xT2dR?= =?utf-8?B?SXFkbFRPb1YrN0VlZkRjekVGQ3FpVWk0bFRQWks2TnZlMWFzaW5tYlIzcE5n?= =?utf-8?B?cXBPUFh0RXUvbjhVY3FQdU5MMUVQeFVEZVVhLzhvRUdzLzc4ZmpOTXI2c2Zp?= =?utf-8?B?Y3R4TVhYTEUrTmJyMEdyS1pGbm44bFFjcHpURHhYUVVVdWFmZzlnWUdFelMx?= =?utf-8?Q?Pl+3s+NqvksUSlDAvUlt21Pd3/OZxmQqJfD+p4O?= x-ms-exchange-transport-forked: True Content-Type: text/plain; charset="utf-8" Content-ID: <190A592AEC94F145A24DE169769AA79A@namprd10.prod.outlook.com> 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: 9fe950b0-5a46-4507-7484-08d960d5b28e X-MS-Exchange-CrossTenant-originalarrivaltime: 16 Aug 2021 16:48:38.8730 (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: IfDx0XfaZJs2hclZVB1WgnWyRs84ZTcoe2vGxlinzNYFuNgTAykxs/ufxqDFfuXkIqKWzSvRu/MI+Q6EAgpt+A== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH2PR10MB3847 X-Proofpoint-Virus-Version: vendor=nai engine=6200 definitions=10078 signatures=668682 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 suspectscore=0 adultscore=0 mlxscore=0 malwarescore=0 mlxlogscore=999 spamscore=0 bulkscore=0 phishscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2107140000 definitions=main-2108160106 X-Proofpoint-GUID: XjCw6Uzvb4_Wj9IjibPJFox8VdSh8jiB X-Proofpoint-ORIG-GUID: XjCw6Uzvb4_Wj9IjibPJFox8VdSh8jiB 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: Mon, 16 Aug 2021 16:48:56 -0000 DQoNCj4gT24gQXVnIDE2LCAyMDIxLCBhdCAyOjExIEFNLCBSaWNoYXJkIEJpZW5lciA8cmd1ZW50 aGVyQHN1c2UuZGU+IHdyb3RlOg0KPiANCj4gT24gV2VkLCAxMSBBdWcgMjAyMSwgUWluZyBaaGFv IHdyb3RlOg0KPiANCj4+IEhpLCANCj4+IA0KPj4gSSBtZXQgYW5vdGhlciBpc3N1ZSBmb3Ig4oCc YWRkcmVzcyB0YWtlbuKAnSBhdXRvIHZhcmlhYmxlLCBzZWUgYmVsb3cgZm9yIGRldGFpbHM6DQo+ PiANCj4+ICoqKiogdGhlIHRlc3RpbmcgY2FzZTogKGdjYy90ZXN0c3VpdGUvZ2NjLmRnL3VuaW5p dC0xNi5jKQ0KPj4gDQo+PiBpbnQgZm9vLCBiYXI7DQo+PiANCj4+IHN0YXRpYw0KPj4gdm9pZCBk ZWNvZGVfcmVsb2MoaW50IHJlbG9jLCBpbnQgKmlzX2FsdCkNCj4+IHsNCj4+ICBpZiAocmVsb2Mg Pj0gMjApDQo+PiAgICAgICppc19hbHQgPSAxOw0KPj4gIGVsc2UgaWYgKHJlbG9jID49IDEwKQ0K Pj4gICAgICAqaXNfYWx0ID0gMDsNCj4+IH0NCj4+IA0KPj4gdm9pZCB0ZXN0ZnVuYygpDQo+PiB7 DQo+PiAgaW50IGFsdF9yZWxvYzsNCj4+IA0KPj4gIGRlY29kZV9yZWxvYyhmb28sICZhbHRfcmVs b2MpOw0KPj4gDQo+PiAgaWYgKGFsdF9yZWxvYykgLyogeyBkZy13YXJuaW5nICJtYXkgYmUgdXNl ZCB1bmluaXRpYWxpemVkIiB9ICovDQo+PiAgICBiYXIgPSA0MjsNCj4+IH0NCj4+IA0KPj4gKioq KldoZW4gY29tcGlsZWQgd2l0aCAtZnRyaXZpYWwtYXV0by12YXItaW5pdD16ZXJvIC1PMiAtV3Vu aW5pdGlhbGl6ZWQgLWZkdW1wLXRyZWUtYWxsOg0KPj4gDQo+PiAuKioqKioqKioqKioqKmdpbXBs ZSBkdW1wOg0KPj4gDQo+PiB2b2lkIHRlc3RmdW5jICgpDQo+PiB7IA0KPj4gIGludCBhbHRfcmVs b2M7DQo+PiANCj4+ICB0cnkNCj4+ICAgIHsNCj4+ICAgICAgXzEgPSAuREVGRVJSRURfSU5JVCAo NCwgMiwgMCk7DQo+PiAgICAgIGFsdF9yZWxvYyA9IF8xOw0KPj4gICAgICBmb28uMF8yID0gZm9v Ow0KPj4gICAgICBkZWNvZGVfcmVsb2MgKGZvby4wXzIsICZhbHRfcmVsb2MpOw0KPj4gICAgICBh bHRfcmVsb2MuMV8zID0gYWx0X3JlbG9jOw0KPj4gICAgICBpZiAoYWx0X3JlbG9jLjFfMyAhPSAw KSBnb3RvIDxELjE5NTI+OyBlbHNlIGdvdG8gPEQuMTk1Mz47DQo+PiAgICAgIDxELjE5NTI+Og0K Pj4gICAgICBiYXIgPSA0MjsNCj4+ICAgICAgPEQuMTk1Mz46DQo+PiAgICB9DQo+PiAgZmluYWxs eQ0KPj4gICAgew0KPj4gICAgICBhbHRfcmVsb2MgPSB7Q0xPQkJFUn07DQo+PiAgICB9DQo+PiB9 DQo+PiANCj4+ICoqKioqKioqKioqKioqZnJlMSBkdW1wOg0KPj4gDQo+PiB2b2lkIHRlc3RmdW5j ICgpDQo+PiB7DQo+PiAgaW50IGFsdF9yZWxvYzsNCj4+ICBpbnQgXzE7DQo+PiAgaW50IGZvby4w XzI7DQo+PiANCj4+ICA8YmIgMj4gOg0KPj4gIF8xID0gLkRFRkVSUkVEX0lOSVQgKDQsIDIsIDAp Ow0KPj4gIGZvby4wXzIgPSBmb287DQo+PiAgaWYgKGZvby4wXzIgPiAxOSkNCj4+ICAgIGdvdG8g PGJiIDM+OyBbNTAuMDAlXQ0KPj4gIGVsc2UNCj4+ICAgIGdvdG8gPGJiIDQ+OyBbNTAuMDAlXQ0K Pj4gDQo+PiAgPGJiIDM+IDoNCj4+ICBnb3RvIDxiYiA3PjsgWzEwMC4wMCVdDQo+PiANCj4+ICA8 YmIgND4gOg0KPj4gIGlmIChmb28uMF8yID4gOSkNCj4+ICAgIGdvdG8gPGJiIDU+OyBbNTAuMDAl XQ0KPj4gIGVsc2UNCj4+ICAgIGdvdG8gPGJiIDY+OyBbNTAuMDAlXQ0KPj4gDQo+PiAgPGJiIDU+ IDoNCj4+ICBnb3RvIDxiYiA4PjsgWzEwMC4wMCVdDQo+PiANCj4+ICA8YmIgNj4gOg0KPj4gIGlm IChfMSAhPSAwKQ0KPj4gICAgZ290byA8YmIgNz47IFtJTlZdDQo+PiAgZWxzZQ0KPj4gICAgZ290 byA8YmIgOD47IFtJTlZdDQo+PiANCj4+ICA8YmIgNz4gOg0KPj4gIGJhciA9IDQyOw0KPj4gDQo+ PiAgPGJiIDg+IDoNCj4+ICByZXR1cm47DQo+PiANCj4+IH0NCj4+IA0KPj4gRnJvbSB0aGUgYWJv dmUgSVIgZmlsZSBhZnRlciDigJxGUkXigJ0sIHdlIGNhbiBzZWUgdGhhdCB0aGUgbWFqb3IgaXNz dWUgd2l0aCB0aGlzIElSIGlzOg0KPj4gDQo+PiBUaGUgYWRkcmVzcyB0YWtlbiBhdXRvIHZhcmlh YmxlIOKAnGFsdF9yZWxvY+KAnSBoYXMgYmVlbiBjb21wbGV0ZWx5IHJlcGxhY2VkIGJ5IHRoZSB0 ZW1wb3JhcnkgdmFyaWFibGUg4oCcXzHigJ0gaW4gYWxsDQo+PiB0aGUgdXNlcyBvZiB0aGUgb3Jp Z2luYWwg4oCcYWx0X3JlbG9j4oCdLiANCj4gDQo+IFdlbGwsIHRoaXMgY2FuIGhhcHBlbiB3aXRo IHJlZ3VsYXIgY29kZSBhcyB3ZWxsLCB0aGVyZSdzIG5vIG5lZWQgZm9yDQo+IC5ERUZFUlJFRF9J TklULiAgVGhpcyBpcyB0aGUgdXN1YWwgcHJvYmxlbSB3aXRoIHJlcG9ydGluZyB1bmluaXRpYWxp emVkDQo+IHVzZXMgbGF0ZS4NCj4gDQo+IElNSE8gdGhpcyBzaG91bGRuJ3QgYmUgYSBibG9ja2Vy LiAgVGhlIGdvYWwgb2YgemVybyAicmVncmVzc2lvbnMiIHdydA0KPiAtV3VuaW5pdGlhbGl6ZWQg aXNuJ3QgcmVhbGx5IGFjaGlldmFibGUuDQoNCk9rYXkuIFNvdW5kcyByZWFzb25hYmxlIHRvIG1l IHRvby4NCg0KPiANCj4+IFRoZSBtYWpvciBwcm9ibGVtIHdpdGggc3VjaCBJUiBpcywgIGR1cmlu ZyB1bmluaXRpYWxpemVkIGFuYWx5c2lzIHBoYXNlLCB0aGUgb3JpZ2luYWwgdXNlIG9mIOKAnGFs dF9yZWxvY+KAnSBkaXNhcHBlYXJlZCBjb21wbGV0ZWx5Lg0KPj4gU28sIHRoZSB3YXJuaW5nIGNh bm5vdCBiZSByZXBvcnRlZC4NCj4+IA0KPj4gDQo+PiBNeSBxdWVzdGlvbnM6DQo+PiANCj4+IDEu IElzIGl0IHBvc3NpYmxlIHRvIGdldCB0aGUgb3JpZ2luYWwg4oCcYWx0X3JlbG9j4oCdIHRocm91 Z2ggdGhlIHRlbXBvcmFyeSB2YXJpYWJsZSDigJxfMeKAnSB3aXRoIHNvbWUgYXZhaWxhYmxlIGlu Zm9ybWF0aW9uIHJlY29yZGVkIGluIHRoZSBJUj8NCj4+IDIuIElmIG5vdCwgdGhlbiB3ZSBoYXZl IHRvIHJlY29yZCB0aGUgcmVsYXRpb25zaGlwIGJldHdlZW4g4oCcYWx0X3JlbG9j4oCdIGFuZCDi gJxfMeKAnSB3aGVuIHRoZSBvcmlnaW5hbCDigJxhbHRfcmVsb2PigJ0gaXMgcmVwbGFjZWQgYnkg 4oCcXzHigJ0gYW5kIGdldCBzdWNoIHJlbGF0aW9uc2hpcCBkdXJpbmcNCj4+ICAgIFVuaW5pdGlh bGl6ZWQgYW5hbHlzaXMgcGhhc2UuICBJcyB0aGlzIGRvYWJsZT8NCj4gDQo+IFdlbGwsIHlvdSBj b3VsZCBhZGQgYSBmYWtlIGFyZ3VtZW50IHRvIC5ERUZFUlJFRF9JTklUIGZvciB0aGUgcHVycG9z ZSBvZg0KPiBkaWFnbm9zdGljcy4gIFRoZSBkaWZmaWN1bHR5IGlzIHRvIGF2b2lkIHRyYWNraW5n IGl0IGFzIGFjdHVhbCB1c2Ugc28NCj4geW91IGNvdWxkIGZvciBleGFtcGxlIHBhc3MgYSBzdHJp bmcgd2l0aCB0aGUgZGVjbGFyYXRpb25zIG5hbWUgdGhvdWdoDQo+IHRoaXMgd291bGRuJ3QgZ2l2 ZSB0aGUgYXNzb2NpYXRpb24gd2l0aCB0aGUgYWN0dWFsIGRlY2wuDQpHb29kIHN1Z2dlc3Rpb24s IEkgY2FuIHRyeSB0aGlzIGEgbGl0dGxlIGJpdC4gDQoNCj4gDQo+PiAzLiBMb29rcyBsaWtlIHRo YXQgZm9yIOKAnGFkZHJlc3MgdGFrZW7igJ0gYXV0byB2YXJpYWJsZSwgaWYgd2UgaGF2ZSB0byBp bnRyb2R1Y2UgYSBuZXcgdGVtcG9yYXJ5IHZhcmlhYmxlIGFuZCBzcGxpdCB0aGUgY2FsbCB0byAu REVGRVJSRURfSU5JVCBpbnRvIHR3bzoNCj4+IA0KPj4gICAgICB0ZW1wID0gLkRFRkVSUkVEX0lO SVQgKDQsIDIsIDApOw0KPj4gICAgICBhbHRfcmVsb2MgPSB0ZW1wOw0KPj4gDQo+PiAgIE1vcmUg aXNzdWVzIG1pZ2h0IHBvc3NpYmxlLg0KPj4gDQo+PiBBbnkgY29tbWVudHMgYW5kIHN1Z2dlc3Rp b25zIG9uIHRoaXMgaXNzdWU/DQo+IA0KPiBJIGRvbid0IHNlZSBhbnkgZ29vZCBwb3NzaWJpbGl0 aWVzIHRoYXQgd291bGQgbm90IG1ha2Ugb3B0aW1pemluZyBjb2RlDQo+IGFzIGdvb2QgYXMgdy9v IC5ERUZFUlJFRF9JTklUIG1vcmUgZGlmZmljdWx0LiAgTXkgc3Rha2UgaGVyZSBpcyBhbHdheXMN Cj4gdGhhdCBHQ0MgaXMgYW4gb3B0aW1pemluZyBjb21waWxlciwgbm90IGEgc3RhdGljIGFuYWx5 c2lzIGVuZ2luZSBhbmQNCj4gdGh1cyBJIHNpZGUgd2l0aCAiYnJva2VuIiBkaWFnbm9zdGljcyBh bmQgYmV0dGVyIG9wdGltaXphdGlvbi4NClRoYXTigJlzIHRydWUgYW5kIHJlYXNvbmFibGUsIHRv by4NCg0KdGhhbmtzLg0KDQpRaW5nDQo+IA0KPiBSaWNoYXJkLg0KPiANCj4+IFFpbmcNCj4+IA0K Pj4gag0KPj4+IE9uIEF1ZyAxMSwgMjAyMSwgYXQgMTE6NTUgQU0sIFJpY2hhcmQgQmllbmVyIDxy Z3VlbnRoZXJAc3VzZS5kZT4gd3JvdGU6DQo+Pj4gDQo+Pj4gT24gQXVndXN0IDExLCAyMDIxIDY6 MjI6MDAgUE0gR01UKzAyOjAwLCBRaW5nIFpoYW8gPHFpbmcuemhhb0BvcmFjbGUuY29tPiB3cm90 ZToNCj4+Pj4gDQo+Pj4+IA0KPj4+Pj4gT24gQXVnIDExLCAyMDIxLCBhdCAxMDo1MyBBTSwgUmlj aGFyZCBCaWVuZXIgPHJndWVudGhlckBzdXNlLmRlPiB3cm90ZToNCj4+Pj4+IA0KPj4+Pj4gT24g QXVndXN0IDExLCAyMDIxIDU6MzA6NDAgUE0gR01UKzAyOjAwLCBRaW5nIFpoYW8gPHFpbmcuemhh b0BvcmFjbGUuY29tPiB3cm90ZToNCj4+Pj4+PiBJIG1vZGlmaWVkIHRoZSByb3V0aW5lIOKAnGdp bXBsZV9hZGRfaW5pdF9mb3JfYXV0b192YXLigJ0gYXMgdGhlIGZvbGxvd2luZzoNCj4+Pj4+PiA9 PT09DQo+Pj4+Pj4gLyogR2VuZXJhdGUgaW5pdGlhbGl6YXRpb24gdG8gYXV0b21hdGljIHZhcmlh YmxlIERFQ0wgYmFzZWQgb24gSU5JVF9UWVBFLg0KPj4+Pj4+IEJ1aWxkIGEgY2FsbCB0byBpbnRl cm5hbCBjb25zdCBmdW5jdGlvbiBERUZFUlJFRF9JTklUOg0KPj4+Pj4+IDFzdCBhcmd1bWVudDog U0laRSBvZiB0aGUgREVDTDsNCj4+Pj4+PiAybmQgYXJndW1lbnQ6IElOSVRfVFlQRTsNCj4+Pj4+ PiAzcmQgYXJndW1lbnQ6IElTX1ZMQSwgMCBOTywgMSBZRVM7DQo+Pj4+Pj4gDQo+Pj4+Pj4gYXMg REVGRVJSRURfSU5JVCAoU0laRSBvZiB0aGUgREVDTCwgSU5JVF9UWVBFLCBJU19WTEEpLiAgKi8N Cj4+Pj4+PiBzdGF0aWMgdm9pZA0KPj4+Pj4+IGdpbXBsZV9hZGRfaW5pdF9mb3JfYXV0b192YXIg KHRyZWUgZGVjbCwNCj4+Pj4+PiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudW0gYXV0b19p bml0X3R5cGUgaW5pdF90eXBlLA0KPj4+Pj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9v bCBpc192bGEsDQo+Pj4+Pj4gICAgICAgICAgICAgICAgICAgICAgICAgICBnaW1wbGVfc2VxICpz ZXFfcCkNCj4+Pj4+PiB7DQo+Pj4+Pj4gZ2NjX2Fzc2VydCAoVkFSX1AgKGRlY2wpICYmICFERUNM X0VYVEVSTkFMIChkZWNsKSAmJiAhVFJFRV9TVEFUSUMgKGRlY2wpKTsNCj4+Pj4+PiBnY2NfYXNz ZXJ0IChpbml0X3R5cGUgPiBBVVRPX0lOSVRfVU5JTklUSUFMSVpFRCk7DQo+Pj4+Pj4gdHJlZSBk ZWNsX3NpemUgPSBUWVBFX1NJWkVfVU5JVCAoVFJFRV9UWVBFIChkZWNsKSk7DQo+Pj4+Pj4gDQo+ Pj4+Pj4gdHJlZSBpbml0X3R5cGVfbm9kZQ0KPj4+Pj4+ID0gYnVpbGRfaW50X2NzdCAoaW50ZWdl cl90eXBlX25vZGUsIChpbnQpIGluaXRfdHlwZSk7DQo+Pj4+Pj4gdHJlZSBpc192bGFfbm9kZQ0K Pj4+Pj4+ID0gYnVpbGRfaW50X2NzdCAoaW50ZWdlcl90eXBlX25vZGUsIChpbnQpIGlzX3ZsYSk7 DQo+Pj4+Pj4gDQo+Pj4+Pj4gdHJlZSBjYWxsID0gYnVpbGRfY2FsbF9leHByX2ludGVybmFsX2xv YyAoVU5LTk9XTl9MT0NBVElPTiwgSUZOX0RFRkVSUkVEX0lOSVQsDQo+Pj4+Pj4gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRSRUVfVFlQRSAoZGVjbCksIDMsDQo+Pj4+ Pj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlY2xfc2l6ZSwgaW5p dF90eXBlX25vZGUsDQo+Pj4+Pj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGlzX3ZsYV9ub2RlKTsNCj4+Pj4+PiANCj4+Pj4+PiAvKiBJZiB0aGlzIERFQ0wgaXMgYSBW TEEsIGEgdGVtcG9yYXJ5IGFkZHJlc3MgdmFyaWFibGUgZm9yIGl0IGhhcyBiZWVuDQo+Pj4+Pj4g IGNyZWF0ZWQsIHRoZSByZXBsYWNlbWVudCBmb3IgREVDTCBpcyByZWNvcmRlZCBpbiBERUNMX1ZB TFVFX0VYUFIgKGRlY2wpLA0KPj4+Pj4+ICB3ZSBzaG91bGQgdXNlIGl0IGFzIHRoZSBMSFMgb2Yg dGhlIGNhbGwuICAqLw0KPj4+Pj4+IA0KPj4+Pj4+IHRyZWUgbGhzX2NhbGwNCj4+Pj4+PiA9IGlz X3ZsYSA/IERFQ0xfVkFMVUVfRVhQUiAoZGVjbCkgOiBkZWNsOw0KPj4+Pj4+IGdpbXBsaWZ5X2Fz c2lnbiAobGhzX2NhbGwsIGNhbGwsIHNlcV9wKTsNCj4+Pj4+PiB9DQo+Pj4+Pj4gDQo+Pj4+Pj4g V2l0aCB0aGlzIGNoYW5nZSwgdGhlIGN1cnJlbnQgaXNzdWUgaXMgcmVzb2x2ZWQsIHRoZSBnaW1w bGUgZHVtcCBub3cgaXM6DQo+Pj4+Pj4gDQo+Pj4+Pj4gKCphcnIuMSkgPSAuREVGRVJSRURfSU5J VCAoRC4xOTUyLCAyLCAxKTsNCj4+Pj4+PiANCj4+Pj4+PiBIb3dldmVyLCB0aGVyZSBpcyBhbm90 aGVyIG5ldyBpc3N1ZToNCj4+Pj4+PiANCj4+Pj4+PiBGb3IgdGhlIGZvbGxvd2luZyB0ZXN0aW5n IGNhc2U6DQo+Pj4+Pj4gDQo+Pj4+Pj4gPT09PT09DQo+Pj4+Pj4gW29wY0BxaW56aGFvLW9sOHUz LXg4NiBnY2NdJCBjYXQgdC5jDQo+Pj4+Pj4gaW50IGJhcjsNCj4+Pj4+PiANCj4+Pj4+PiBleHRl cm4gdm9pZCBkZWNvZGVfcmVsb2MoaW50ICopOw0KPj4+Pj4+IA0KPj4+Pj4+IHZvaWQgdGVzdGZ1 bmMoKQ0KPj4+Pj4+IHsNCj4+Pj4+PiBpbnQgYWx0X3JlbG9jOw0KPj4+Pj4+IA0KPj4+Pj4+IGRl Y29kZV9yZWxvYygmYWx0X3JlbG9jKTsNCj4+Pj4+PiANCj4+Pj4+PiBpZiAoYWx0X3JlbG9jKSAv KiB7IGRnLXdhcm5pbmcgIm1heSBiZSB1c2VkIHVuaW5pdGlhbGl6ZWQiIH0gKi8NCj4+Pj4+PiBi YXIgPSA0MjsgDQo+Pj4+Pj4gfQ0KPj4+Pj4+ID09PT09DQo+Pj4+Pj4gDQo+Pj4+Pj4gSW4gdGhl IGFib3ZlLCB0aGUgYXV0byB2YXIg4oCcYWx0X3JlbG9j4oCdIGlzIGFkZHJlc3MgdGFrZW4sIHRo ZW4gdGhlIGdpbXBsZSBkdW1wIGZvciBpdCB3aGVuIGNvbXBpbGVkIHdpdGggLWZ0cml2aWFsLWF1 dG8tdmFyLWluaXQ9emVybyBpczoNCj4+Pj4+PiANCj4+Pj4+PiB2b2lkIHRlc3RmdW5jICgpDQo+ Pj4+Pj4gew0KPj4+Pj4+IGludCBhbHRfcmVsb2M7DQo+Pj4+Pj4gDQo+Pj4+Pj4gdHJ5DQo+Pj4+ Pj4gew0KPj4+Pj4+ICAgXzEgPSAuREVGRVJSRURfSU5JVCAoNCwgMiwgMCk7DQo+Pj4+Pj4gICBh bHRfcmVsb2MgPSBfMTsNCj4+Pj4+PiAgIGRlY29kZV9yZWxvYyAoJmFsdF9yZWxvYyk7DQo+Pj4+ Pj4gICBhbHRfcmVsb2MuMF8yID0gYWx0X3JlbG9jOw0KPj4+Pj4+ICAgaWYgKGFsdF9yZWxvYy4w XzIgIT0gMCkgZ290byA8RC4xOTQ5PjsgZWxzZSBnb3RvIDxELjE5NTA+Ow0KPj4+Pj4+ICAgPEQu MTk0OT46DQo+Pj4+Pj4gICBiYXIgPSA0MjsNCj4+Pj4+PiAgIDxELjE5NTA+Og0KPj4+Pj4+IH0N Cj4+Pj4+PiBmaW5hbGx5DQo+Pj4+Pj4gew0KPj4+Pj4+ICAgYWx0X3JlbG9jID0ge0NMT0JCRVJ9 Ow0KPj4+Pj4+IH0NCj4+Pj4+PiB9DQo+Pj4+Pj4gDQo+Pj4+Pj4gSS5lLCBpbnN0ZWFkIG9mIHRo ZSBleHBlY3RlZCBJUjoNCj4+Pj4+PiANCj4+Pj4+PiBhbHRfcmVsb2MgPSAuREVGRVJSRURfSU5J VCAoNCwgMiwgMCk7DQo+Pj4+Pj4gDQo+Pj4+Pj4gV2UgZ290IHRoZSBmb2xsb3dpbmc6DQo+Pj4+ Pj4gDQo+Pj4+Pj4gXzEgPSAuREVGRVJSRURfSU5JVCAoNCwgMiwgMCk7DQo+Pj4+Pj4gICBhbHRf cmVsb2MgPSBfMTsNCj4+Pj4+PiANCj4+Pj4+PiBJIGd1ZXNzIHRoZSB0ZW1wIOKAnF8x4oCdIGlz IGNyZWF0ZWQgYmVjYXVzZSDigJxhbHRfcmVsb2PigJ0gaXMgYWRkcmVzcyB0YWtlbi4gDQo+Pj4+ PiANCj4+Pj4+IFllcyBhbmQgbm8uIFRoZSByZWFzb24gaXMgdGhhdCBhbHRfcmVsb2MgaXMgbWVt b3J5IChiZWNhdXNlIGl0IGlzIGFkZHJlc3MgdGFrZW4pIGFuZCB0aGF0IEdJTVBMRSBzYXlzIHRo YXQgcmVnaXN0ZXIgdHlwZWQgc3RvcmVzIG5lZWQgdG8gdXNlIGEgaXNfZ2ltcGxlX3ZhbCBSSFMg d2hpY2ggdGhlIGNhbGwgaXMgbm90Lg0KPj4+PiANCj4+Pj4gT2theS4NCj4+Pj4+IA0KPj4+Pj4+ IE15IHF1ZXN0aW9uczoNCj4+Pj4+PiANCj4+Pj4+PiBTaGFsbCB3ZSBhY2NlcHQgc3VjaCBJUiBm b3IgLkRFRkVSUkVEX0lOSVQgcHVycG9zZSB3aGVuIHRoZSBhdXRvIHZhciBpcyBhZGRyZXNzIHRh a2VuPyANCj4+Pj4+IA0KPj4+Pj4gSSB0aGluayBzby4gTm90ZSBpdCBkb2Vzbid0IG5lY2Vzc2Fy aWx5IG5lZWQgYWRkcmVzcyB0YWtpbmcgYnV0IGFueSBvdGhlciByZWFzb24gdGhhdCBwcmV2ZW50 cyBTU0EgcmV3cml0aW5nIHRoZSB2YXJpYWJsZSBzdWZmaWNlcy4gDQo+Pj4+IA0KPj4+PiBZb3Ug bWVhbiwgaW4gYWRkaXRpb24gdG8g4oCcYWRkcmVzcyB0YWtlbuKAnSwgdGhlcmUgYXJlIG90aGVy IHNpdHVhdGlvbnMgdGhhdCB3aWxsIGludHJvZHVjZSBzdWNoIElSOg0KPj4+PiANCj4+Pj4gdGVt cCA9IC5ERUZFUlJFRF9JTklUKCk7DQo+Pj4+IGF1dG9fdmFyID0gdGVtcDsNCj4+Pj4gDQo+Pj4+ IFNvLCBzdWNoIElSIGlzIHVuYXZvaWRhYmxlIGFuZCB3ZSBoYXZlIHRvIGhhbmRsZSBpdD8NCj4+ PiANCj4+PiBZZXMuIA0KPj4+IA0KPj4+PiBJZiB3ZSBoYXZlIHRvIGhhbmRsZSBpdCwgIHdoYXTi gJkgdGhlIGJlc3Qgd2F5IHRvIGRvIGl0Pw0KPj4+PiANCj4+Pj4gVGhlIHNvbHV0aW9uIGluIG15 IG1pbmQgaXM6DQo+Pj4+IDEuIER1cmluZyB1bmluaXRpYWxpemVkIGFuYWx5c2lzIHBoYXNlLCBm b2xsb3dpbmcgdGhlIGRhdGEgZmxvdyB0byBjb25uZWN0IC5ERUZFUlJFRF9JTklUIHRvIOKAnGF1 dG9fdmFy4oCdLCBhbmQgdGhlbiBkZWNpZGUgdGhhdCDigJxhdXRvX3ZhcuKAnSBpcyB1bmluaXRp YWxpemVkLg0KPj4+IA0KPj4+IFllcy4gQmFzaWNhbGx5IGlmIHRoZXJlJ3MgYW4gYXJ0aWZpY2lh bCB2YXJpYWJsZSBhdXRvIGluaXRpYWxpemVkIHlvdSBoYXZlIHRvIGxvb2sgYXQgaXRzIHVzZXMu IA0KPj4+IA0KPj4+PiAyLiBEdXJpbmcgUlRMIGV4cGFuc2lvbiwgZm9sbG93aW5nIHRoZSBkYXRh IGZsb3cgdG8gY29ubmVjdCAuREVGRVJSRURfSU5JVCB0byDigJxhdXRvX3ZhcuKAnSwgYW5kIHRo ZW4gZGVsZXRlIOKAnHRlbXDigJ0sIGFuZCB0aGVuIGV4cGFuZCAuREVGRVJSRURfSU5JVCB0byBh dXRvX3Zhci4NCj4+PiANCj4+PiBUaGF0IHNob3VsZG4ndCBiZSBuZWNlc3NhcnkuIFlvdSdkIGlu aXRpYWxpemUgYSB0ZW1wb3JhcnkgcmVnaXN0ZXIgd2hpY2ggaXMgdGhlbiBjb3BpZWQgdG8gdGhl IHJlYWwgdmFyaWFibGUuIFRoYXQncyBnb29kIGVub3VnaCBhbmQgc2hvdWxkIGJlIG9wdGltaXpl ZCBieSB0aGUgUlRMIHBpcGVsaW5lLiANCj4+PiANCj4+Pj4gTGV0IG1lIGtub3cgeW91ciBjb21t ZW50cyBhbmQgc3VnZ2VzdGlvbnMgb24gdGhpcy4NCj4+Pj4gDQo+Pj4+IA0KPj4+Pj4gDQo+Pj4+ PiBUaGUgb25seSBvdGhlciBvcHRpb24gaXMgdG8gZm9yY2UuIERFRkVSRURfSU5JVCBtYWtpbmcg dGhlIExIUyBhZGRyZXNzIHRha2VuIHdoaWNoIEkgdGhpbmsgY291bGQgYmUgYWNoaWV2ZWQgYnkg cGFzc2luZyBpdCB0aGUgYWRkcmVzcyBhcyBhcmd1bWVudCBpbnN0ZWFkIG9mIGhhdmluZyBhIExI Uy4gQnV0IGxldCdzIG5vdCBnbyBkb3duIHRoaXMgcm91dGUgLSBpdCB3aWxsIGhhdmUgcXVpdGUg YmFkIGJlaGF2aW9yIG9uIGFsaWFzIGFuYWx5c2lzIGFuZCBvcHRpbWl6YXRpb24uIA0KPj4+PiAN Cj4+Pj4gT2theS4NCj4+Pj4gDQo+Pj4+IFFpbmcNCj4+Pj4+IA0KPj4+Pj4+IElmIHNvLCDigJx1 bmluaXRpYWxpemVkIGFuYWx5c2lz4oCdIHBoYXNlIG5lZWQgdG8gYmUgZnVydGhlciBhZGp1c3Rl ZCB0byBzcGVjaWFsbHkgaGFuZGxlIHN1Y2ggSVIuIA0KPj4+Pj4+IA0KPj4+Pj4+IElmIG5vdCwg d2hhdCBzaG91bGQgd2UgZG8gd2hlbiB0aGUgYXV0byB2YXIgaXMgYWRkcmVzcyB0YWtlbj8NCj4+ Pj4+PiANCj4+Pj4+PiBUaGFua3MgYSBsb3QuDQo+Pj4+Pj4gDQo+Pj4+Pj4gUWluZw0KPj4+Pj4+ IA0KPj4+Pj4+IA0KPj4+Pj4+PiBPbiBBdWcgMTEsIDIwMjEsIGF0IDg6NTggQU0sIFJpY2hhcmQg QmllbmVyIDxyZ3VlbnRoZXJAc3VzZS5kZT4gd3JvdGU6DQo+Pj4+Pj4+IA0KPj4+Pj4+PiBPbiBX ZWQsIDExIEF1ZyAyMDIxLCBRaW5nIFpoYW8gd3JvdGU6DQo+Pj4+Pj4+IA0KPj4+Pj4+Pj4gDQo+ Pj4+Pj4+PiANCj4+Pj4+Pj4+PiBPbiBBdWcgMTEsIDIwMjEsIGF0IDg6MzcgQU0sIFJpY2hhcmQg QmllbmVyIDxyZ3VlbnRoZXJAc3VzZS5kZT4gd3JvdGU6DQo+Pj4+Pj4+Pj4gDQo+Pj4+Pj4+Pj4g T24gV2VkLCAxMSBBdWcgMjAyMSwgUWluZyBaaGFvIHdyb3RlOg0KPj4+Pj4+Pj4+IA0KPj4+Pj4+ Pj4+PiANCj4+Pj4+Pj4+Pj4gDQo+Pj4+Pj4+Pj4+PiBPbiBBdWcgMTEsIDIwMjEsIGF0IDI6MDIg QU0sIFJpY2hhcmQgQmllbmVyIDxyZ3VlbnRoZXJAc3VzZS5kZT4gd3JvdGU6DQo+Pj4+Pj4+Pj4+ PiANCj4+Pj4+Pj4+Pj4+IE9uIFR1ZSwgMTAgQXVnIDIwMjEsIFFpbmcgWmhhbyB3cm90ZToNCj4+ Pj4+Pj4+Pj4+IA0KPj4+Pj4+Pj4+Pj4+IA0KPj4+Pj4+Pj4+Pj4+IA0KPj4+Pj4+Pj4+Pj4+PiBP biBBdWcgMTAsIDIwMjEsIGF0IDM6MTYgUE0sIFFpbmcgWmhhbyB2aWEgR2NjLXBhdGNoZXMgPGdj Yy1wYXRjaGVzQGdjYy5nbnUub3JnPiB3cm90ZToNCj4+Pj4+Pj4+Pj4+Pj4gDQo+Pj4+Pj4+Pj4+ Pj4+IEhpLCBSaWNoYXJkLA0KPj4+Pj4+Pj4+Pj4+PiANCj4+Pj4+Pj4+Pj4+Pj4+IE9uIEF1ZyAx MCwgMjAyMSwgYXQgMTA6MjIgQU0sIFJpY2hhcmQgQmllbmVyIDxyZ3VlbnRoZXJAc3VzZS5kZT4g d3JvdGU6DQo+Pj4+Pj4+Pj4+Pj4+Pj4+IA0KPj4+Pj4+Pj4+Pj4+Pj4+PiBFc3BlY2lhbGx5IGlu IHRoZSBWTEEgY2FzZSBidXQgbGlrZWx5IGFsc28gaW4gZ2VuZXJhbCAodGhvdWdoIHVubGlrZWx5 DQo+Pj4+Pj4+Pj4+Pj4+Pj4+IHNpbmNlIHVzdWFsbHkgdGhlIHJlY2VpdmVyIG9mIGluaXRpYWxp emF0aW9ucyBhcmUgc2ltcGxlIGVub3VnaCkuICBJJ2QNCj4+Pj4+Pj4+Pj4+Pj4+Pj4gZXhwZWN0 IHRoZSBWTEEgY2FzZSBlbmQgdXAgYXMNCj4+Pj4+Pj4+Pj4+Pj4+Pj4gDQo+Pj4+Pj4+Pj4+Pj4+ Pj4+ICpwdHJfdG9fZGVjbCA9IC5ERUZFUlJFRF9JTklUICguLi4pOw0KPj4+Pj4+Pj4+Pj4+Pj4+ PiANCj4+Pj4+Pj4+Pj4+Pj4+Pj4gd2hlcmUgKnB0cl90b19kZWNsIGlzIHRoZSBERUNMX1ZBTFVF X0VYUFIgb2YgdGhlIGRlY2wuDQo+Pj4+Pj4+Pj4+Pj4+Pj4gDQo+Pj4+Pj4+Pj4+Pj4+Pj4gU28s IGZvciB0aGUgZm9sbG93aW5nIHNtYWxsIHRlc3RpbmcgY2FzZToNCj4+Pj4+Pj4+Pj4+Pj4+PiAN Cj4+Pj4+Pj4+Pj4+Pj4+PiA9PT09DQo+Pj4+Pj4+Pj4+Pj4+Pj4gZXh0ZXJuIHZvaWQgYmFyIChp bnQpOw0KPj4+Pj4+Pj4+Pj4+Pj4+IA0KPj4+Pj4+Pj4+Pj4+Pj4+IHZvaWQgZm9vKGludCBuKQ0K Pj4+Pj4+Pj4+Pj4+Pj4+IHsNCj4+Pj4+Pj4+Pj4+Pj4+PiBpbnQgYXJyW25dOw0KPj4+Pj4+Pj4+ Pj4+Pj4+IGJhciAoYXJyWzJdKTsNCj4+Pj4+Pj4+Pj4+Pj4+PiByZXR1cm47DQo+Pj4+Pj4+Pj4+ Pj4+Pj4gfQ0KPj4+Pj4+Pj4+Pj4+Pj4+ID09PT09DQo+Pj4+Pj4+Pj4+Pj4+Pj4gDQo+Pj4+Pj4+ Pj4+Pj4+Pj4gSWYgSSBjb21waWxlIGl0IHdpdGggLWZ0cml2aWFsLWF1dG8tdmFyLWluaXQ9emVy byAtZmR1bXAtdHJlZS1naW1wbGUgLVMgLW8gYXV0by1pbml0LTExLnMgLWZkdW1wLXJ0bC1leHBh bmQsIHRoZSAqLmdpbXBsZSBkdW1wIGlzOg0KPj4+Pj4+Pj4+Pj4+Pj4+IA0KPj4+Pj4+Pj4+Pj4+ Pj4+ID09PT09DQo+Pj4+Pj4+Pj4+Pj4+Pj4gdm9pZCBmb28gKGludCBuKQ0KPj4+Pj4+Pj4+Pj4+ Pj4+IHsNCj4+Pj4+Pj4+Pj4+Pj4+PiBpbnQgbi4wOw0KPj4+Pj4+Pj4+Pj4+Pj4+IHNpemV0eXBl IEQuMTk1MDsNCj4+Pj4+Pj4+Pj4+Pj4+PiBiaXRzaXpldHlwZSBELjE5NTE7DQo+Pj4+Pj4+Pj4+ Pj4+Pj4gc2l6ZXR5cGUgRC4xOTUyOw0KPj4+Pj4+Pj4+Pj4+Pj4+IGJpdHNpemV0eXBlIEQuMTk1 MzsNCj4+Pj4+Pj4+Pj4+Pj4+PiBzaXpldHlwZSBELjE5NTQ7DQo+Pj4+Pj4+Pj4+Pj4+Pj4gaW50 WzA6RC4xOTUwXSAqIGFyci4xOw0KPj4+Pj4+Pj4+Pj4+Pj4+IHZvaWQgKiBzYXZlZF9zdGFjay4y Ow0KPj4+Pj4+Pj4+Pj4+Pj4+IGludCBhcnJbMDpELjE5NTBdIFt2YWx1ZS1leHByOiAqYXJyLjFd Ow0KPj4+Pj4+Pj4+Pj4+Pj4+IA0KPj4+Pj4+Pj4+Pj4+Pj4+IHNhdmVkX3N0YWNrLjIgPSBfX2J1 aWx0aW5fc3RhY2tfc2F2ZSAoKTsNCj4+Pj4+Pj4+Pj4+Pj4+PiB0cnkNCj4+Pj4+Pj4+Pj4+Pj4+ PiB7DQo+Pj4+Pj4+Pj4+Pj4+Pj4gbi4wID0gbjsNCj4+Pj4+Pj4+Pj4+Pj4+PiBfMSA9IChsb25n IGludCkgbi4wOw0KPj4+Pj4+Pj4+Pj4+Pj4+IF8yID0gXzEgKyAtMTsNCj4+Pj4+Pj4+Pj4+Pj4+ PiBfMyA9IChzaXpldHlwZSkgXzI7DQo+Pj4+Pj4+Pj4+Pj4+Pj4gRC4xOTUwID0gXzM7DQo+Pj4+ Pj4+Pj4+Pj4+Pj4gXzQgPSAoc2l6ZXR5cGUpIG4uMDsNCj4+Pj4+Pj4+Pj4+Pj4+PiBfNSA9IChi aXRzaXpldHlwZSkgXzQ7DQo+Pj4+Pj4+Pj4+Pj4+Pj4gXzYgPSBfNSAqIDMyOw0KPj4+Pj4+Pj4+ Pj4+Pj4+IEQuMTk1MSA9IF82Ow0KPj4+Pj4+Pj4+Pj4+Pj4+IF83ID0gKHNpemV0eXBlKSBuLjA7 DQo+Pj4+Pj4+Pj4+Pj4+Pj4gXzggPSBfNyAqIDQ7DQo+Pj4+Pj4+Pj4+Pj4+Pj4gRC4xOTUyID0g Xzg7DQo+Pj4+Pj4+Pj4+Pj4+Pj4gXzkgPSAoc2l6ZXR5cGUpIG4uMDsNCj4+Pj4+Pj4+Pj4+Pj4+ PiBfMTAgPSAoYml0c2l6ZXR5cGUpIF85Ow0KPj4+Pj4+Pj4+Pj4+Pj4+IF8xMSA9IF8xMCAqIDMy Ow0KPj4+Pj4+Pj4+Pj4+Pj4+IEQuMTk1MyA9IF8xMTsNCj4+Pj4+Pj4+Pj4+Pj4+PiBfMTIgPSAo c2l6ZXR5cGUpIG4uMDsNCj4+Pj4+Pj4+Pj4+Pj4+PiBfMTMgPSBfMTIgKiA0Ow0KPj4+Pj4+Pj4+ Pj4+Pj4+IEQuMTk1NCA9IF8xMzsNCj4+Pj4+Pj4+Pj4+Pj4+PiBhcnIuMSA9IF9fYnVpbHRpbl9h bGxvY2Ffd2l0aF9hbGlnbiAoRC4xOTU0LCAzMik7DQo+Pj4+Pj4+Pj4+Pj4+Pj4gYXJyID0gLkRF RkVSUkVEX0lOSVQgKEQuMTk1MiwgMiwgMSk7DQo+Pj4+Pj4+Pj4+Pj4+Pj4gXzE0ID0gKCphcnIu MSlbMl07DQo+Pj4+Pj4+Pj4+Pj4+Pj4gYmFyIChfMTQpOw0KPj4+Pj4+Pj4+Pj4+Pj4+IHJldHVy bjsNCj4+Pj4+Pj4+Pj4+Pj4+PiB9DQo+Pj4+Pj4+Pj4+Pj4+Pj4gZmluYWxseQ0KPj4+Pj4+Pj4+ Pj4+Pj4+IHsNCj4+Pj4+Pj4+Pj4+Pj4+PiBfX2J1aWx0aW5fc3RhY2tfcmVzdG9yZSAoc2F2ZWRf c3RhY2suMik7DQo+Pj4+Pj4+Pj4+Pj4+Pj4gfQ0KPj4+Pj4+Pj4+Pj4+Pj4+IH0NCj4+Pj4+Pj4+ Pj4+Pj4+PiANCj4+Pj4+Pj4+Pj4+Pj4+PiA9PT09DQo+Pj4+Pj4+Pj4+Pj4+Pj4gDQo+Pj4+Pj4+ Pj4+Pj4+Pj4gWW91IHRoaW5rIHRoYXQgdGhlIGFib3ZlIC5ERUZFRVJFRF9JTklUIGlzIG5vdCBj b3JyZWN0Pw0KPj4+Pj4+Pj4+Pj4+Pj4+IEl0IHNob3VsZCBiZToNCj4+Pj4+Pj4+Pj4+Pj4+PiAN Cj4+Pj4+Pj4+Pj4+Pj4+PiAqYXJyLjEgPSAuREVGRVJSRURfSU5JVCAoRC4xOTUyLiAyLCAxKTsN Cj4+Pj4+Pj4+Pj4+Pj4+PiANCj4+Pj4+Pj4+Pj4+Pj4+PiA/DQo+Pj4+Pj4+Pj4+Pj4+PiANCj4+ Pj4+Pj4+Pj4+Pj4+IFllcy4NCj4+Pj4+Pj4+Pj4+Pj4+IA0KPj4+Pj4+Pj4+Pj4+PiANCj4+Pj4+ Pj4+Pj4+Pj4gSSB1cGRhdGVkIGdpbXBsaWZ5LmMgZm9yIFZMQSBhbmQgbm93IGl0IGVtaXRzIHRo ZSBjYWxsIHRvIC5ERUZFUlJFRF9JTklUIGFzOg0KPj4+Pj4+Pj4+Pj4+PiANCj4+Pj4+Pj4+Pj4+ Pj4gYXJyLjEgPSBfX2J1aWx0aW5fYWxsb2NhX3dpdGhfYWxpZ24gKEQuMTk1NCwgMzIpOw0KPj4+ Pj4+Pj4+Pj4+PiAqYXJyLjEgPSAuREVGRVJSRURfSU5JVCAoRC4xOTUyLCAyLCAxKTsNCj4+Pj4+ Pj4+Pj4+Pj4gDQo+Pj4+Pj4+Pj4+Pj4+IEhvd2V2ZXIsIHRoaXMgY2FsbCB0cmlnZ2VyZWQgdGhl IGFzc2VydGlvbiBmYWlsdXJlIGluIHZlcmlmeV9naW1wbGVfY2FsbCBvZiB0cmVlLWNmZy5jIGJl Y2F1c2UgdGhlIExIUyBpcyBub3QgYSB2YWxpZCBMSFMuIA0KPj4+Pj4+Pj4+Pj4+PiBUaGVuIEkg bW9kaWZ5IHRyZWUtY2ZnLmMgYXM6DQo+Pj4+Pj4+Pj4+Pj4+IA0KPj4+Pj4+Pj4+Pj4+PiBkaWZm IC0tZ2l0IGEvZ2NjL3RyZWUtY2ZnLmMgYi9nY2MvdHJlZS1jZmcuYw0KPj4+Pj4+Pj4+Pj4+PiBp bmRleCAzMzBlYjdkZDg5YmYuLjE4MGQ0ZjFmOWUzMiAxMDA2NDQNCj4+Pj4+Pj4+Pj4+Pj4gLS0t IGEvZ2NjL3RyZWUtY2ZnLmMNCj4+Pj4+Pj4+Pj4+Pj4gKysrIGIvZ2NjL3RyZWUtY2ZnLmMNCj4+ Pj4+Pj4+Pj4+Pj4gQEAgLTMzNzUsNyArMzM3NSwxMSBAQCB2ZXJpZnlfZ2ltcGxlX2NhbGwgKGdj YWxsICpzdG10KQ0KPj4+Pj4+Pj4+Pj4+PiB9DQo+Pj4+Pj4+Pj4+Pj4+IA0KPj4+Pj4+Pj4+Pj4+ PiB0cmVlIGxocyA9IGdpbXBsZV9jYWxsX2xocyAoc3RtdCk7DQo+Pj4+Pj4+Pj4+Pj4+ICsgIC8q IEZvciAuREVGRVJSRURfSU5JVCBjYWxsLCB0aGUgTEhTIG1pZ2h0IGJlIGFuIGluZGlyZWN0aW9u IG9mDQo+Pj4+Pj4+Pj4+Pj4+ICsgICAgIGEgcG9pbnRlciBmb3IgdGhlIFZMQSB2YXJpYWJsZSwg d2hpY2ggaXMgbm90IGEgdmFsaWQgTEhTIG9mDQo+Pj4+Pj4+Pj4+Pj4+ICsgICAgIGEgZ2ltcGxl IGNhbGwsIHdlIGlnbm9yZSB0aGUgYXNzc2VydGlvbiBvbiB0aGlzLiAgKi8gDQo+Pj4+Pj4+Pj4+ Pj4+IGlmIChsaHMNCj4+Pj4+Pj4+Pj4+Pj4gKyAgICAgICYmICghZ2ltcGxlX2NhbGxfaW50ZXJu YWxfcCAoc3RtdCwgSUZOX0RFRkVSUkVEX0lOSVQpKQ0KPj4+Pj4+Pj4+Pj4+PiAmJiAoIWlzX2dp bXBsZV9yZWcgKGxocykNCj4+Pj4+Pj4+Pj4+Pj4gICAgJiYgKCFpc19naW1wbGVfbHZhbHVlIChs aHMpDQo+Pj4+Pj4+Pj4+Pj4+ICAgICAgICB8fCB2ZXJpZnlfdHlwZXNfaW5fZ2ltcGxlX3JlZmVy ZW5jZQ0KPj4+Pj4+Pj4+Pj4+PiANCj4+Pj4+Pj4+Pj4+Pj4gVGhlIGFzc2VydGlvbiBmYWlsdXJl IGluIHRyZWUtY2ZnLmMgZ290IHJlc29sdmVkLCBidXQgSSBnb3QgYW5vdGhlciBhc3NlcnRpb24g ZmFpbHVyZSBpbiBvcGVyYW5kc19zY2FubmVyOjpnZXRfZXhwcl9vcGVyYW5kcyAodHJlZSAqZXhw cl9wLCBpbnQgZmxhZ3MpLCBsaW5lIDk0NToNCj4+Pj4+Pj4+Pj4+Pj4gDQo+Pj4+Pj4+Pj4+Pj4+ IDkzOSAgIC8qIElmIHdlIGdldCBoZXJlLCBzb21ldGhpbmcgaGFzIGdvbmUgd3JvbmcuICAqLw0K Pj4+Pj4+Pj4+Pj4+PiA5NDAgICBpZiAoZmxhZ19jaGVja2luZykNCj4+Pj4+Pj4+Pj4+Pj4gOTQx ICAgICB7DQo+Pj4+Pj4+Pj4+Pj4+IDk0MiAgICAgICBmcHJpbnRmIChzdGRlcnIsICJ1bmhhbmRs ZWQgZXhwcmVzc2lvbiBpbiBnZXRfZXhwcl9vcGVyYW5kcygpOlxuIik7DQo+Pj4+Pj4+Pj4+Pj4+ IDk0MyAgICAgICBkZWJ1Z190cmVlIChleHByKTsNCj4+Pj4+Pj4+Pj4+Pj4gOTQ0ICAgICAgIGZw dXRzICgiXG4iLCBzdGRlcnIpOw0KPj4+Pj4+Pj4+Pj4+PiA5NDUgICAgICAgZ2NjX3VucmVhY2hh YmxlICgpOw0KPj4+Pj4+Pj4+Pj4+PiA5NDYgICAgIH0NCj4+Pj4+Pj4+Pj4+Pj4gDQo+Pj4+Pj4+ Pj4+Pj4+IExvb2tzIGxpa2UgdGhhdCAgdGhlIGdpbXBsZSBzdGF0ZW1lbnQ6DQo+Pj4+Pj4+Pj4+ Pj4+ICphcnIuMSA9IC5ERUZFUlJFRF9JTklUIChELjE5NTIsIDIsIDEpOw0KPj4+Pj4+Pj4+Pj4+ PiANCj4+Pj4+Pj4+Pj4+Pj4gSXMgbm90IHZhbGlkLiAgaS5lLCB0aGUgTEhTIHNob3VsZCBub3Qg YmUgYW4gaW5kaXJlY3Rpb24gdG8gYSBwb2ludGVyLiANCj4+Pj4+Pj4+Pj4+Pj4gDQo+Pj4+Pj4+ Pj4+Pj4+IEhvdyB0byByZXNvbHZlIHRoaXMgaXNzdWU/DQo+Pj4+Pj4+Pj4+PiANCj4+Pj4+Pj4+ Pj4+IEl0IHNvdW5kcyBsaWtlIHRoZSBMSFMgaXMgYW4gSU5ESVJFQ1RfUkVGIG1heWJlPyAgVGhh dCBtZWFucyBpdCdzDQo+Pj4+Pj4+Pj4+PiBzdGlsbCBub3QgcHJvcGVybHkgZ2ltcGxpZmllZCBi ZWNhdXNlIGl0IHNob3VsZCBlbmQgdXAgYXMgYSBNRU1fUkVGDQo+Pj4+Pj4+Pj4+PiBpbnN0ZWFk Lg0KPj4+Pj4+Pj4+Pj4gDQo+Pj4+Pj4+Pj4+PiBCdXQgSSdtIGp1c3QgZ3Vlc3NpbmcgaGVyZSAu Li4gaWYgeW91IGFyZSBpbiBhIGRlYnVnZ2VyIHRoZW4geW91IGNhbg0KPj4+Pj4+Pj4+Pj4gaW52 b2tlIGRlYnVnX3RyZWUgKGxocykgaW4gdGhlIGluZmVyaW9yIHRvIHNlZSB3aGF0IGl0IGV4YWN0 bHkgaXMNCj4+Pj4+Pj4+Pj4+IGF0IHRoZSBwb2ludCBvZiB0aGUgZmFpbHVyZS4NCj4+Pj4+Pj4+ Pj4gDQo+Pj4+Pj4+Pj4+IFllcywgaXTigJlzIGFuIElORElSRUNUX1JFRiBhdCB0aGUgcG9pbnQg b2YgdGhlIGZhaWx1cmUgZXZlbiB0aG91Z2ggSSBhZGRlZCBhIA0KPj4+Pj4+Pj4+PiANCj4+Pj4+ Pj4+Pj4gZ2ltcGxpZnlfdmFyX29yX3Bhcm1fZGVjbCAgKGxocykgDQo+Pj4+Pj4+Pj4gDQo+Pj4+ Pj4+Pj4gSSB0aGluayB0aGUgZWFzaWVzdCBpcyB0byBidWlsZCB0aGUgLkRFRkVSUkVEX0lOSVQg YXMgR0VORVJJQw0KPj4+Pj4+Pj4+IGFuZCB1c2UgZ2ltcGxpZnlfYXNzaWduICgpIHRvIGdpbXBs aWZ5IGFuZCBhZGQgdGhlIHJlc3VsdA0KPj4+Pj4+Pj4+IHRvIHRoZSBzZXF1ZW5jZS4gIFRodXMs IGJ1aWxkIGEgR0VORVJJQyBDQUxMX0VYUFIgYW5kIHRoZW4NCj4+Pj4+Pj4+PiBnaW1wbGlmeV9h c3NpZ24gKGxocywgY2FsbF9leHByLCBzZXEpOw0KPj4+Pj4+Pj4gDQo+Pj4+Pj4+PiBXaGljaCB1 dGlsaXR5IHJvdXRpbmUgaXMgdXNlZCB0byBidWlsZCBhbiBJbnRlcm5hbCBnZW5lcmljIGNhbGw/ DQo+Pj4+Pj4+PiBDdXJyZW50bHksIEkgdXNlZCDigJxnaW1wbGVfYnVpbGRfY2FsbF9pbnRlcm5h bOKAnSB0byBidWlsZCB0aGlzIGludGVybmFsIGdpbXBsZSBjYWxsLg0KPj4+Pj4+Pj4gDQo+Pj4+ Pj4+PiBGb3IgdGhlIGdlbmVyaWMgY2FsbCwgc2hhbGwgSSB1c2Ug4oCcYnVpbGRfY2FsbF9leHBy X2xvY+KAnSA/IA0KPj4+Pj4+PiANCj4+Pj4+Pj4gRm9yIGV4YW1wbGUgbG9vayBhdCBidWlsZF9h c2FuX3BvaXNvbl9jYWxsX2V4cHIgd2hpY2ggZG9lcyBzdWNoIHRoaW5nDQo+Pj4+Pj4+IGZvciBB U0FOIHBvaXNvbiBpbnRlcm5hbCBmdW5jdGlvbiBjYWxsIGluc2VydGlvbiBhdCBnaW1wbGlmaWNh dGlvbiB0aW1lLg0KPj4+Pj4+PiANCj4+Pj4+Pj4gUmljaGFyZC4NCj4+Pj4+Pj4gDQo+Pj4+Pj4+ PiBRaW5nDQo+Pj4+Pj4+PiANCj4+Pj4+Pj4+PiANCj4+Pj4+Pj4+PiBSaWNoYXJkLg0KPj4+Pj4+ Pj4+IA0KPj4+Pj4+Pj4+PiBRaW5nDQo+Pj4+Pj4+Pj4+IA0KPj4+Pj4+Pj4+Pj4gDQo+Pj4+Pj4+ Pj4+Pj4gSSBjYW1lIHVwIHdpdGggdGhlIGZvbGxvd2luZyBzb2x1dGlvbjoNCj4+Pj4+Pj4+Pj4+ PiANCj4+Pj4+Pj4+Pj4+PiBEZWZpbmUgdGhlIElGTl9ERUZFUlJFRF9JTklUIGZ1bmN0aW9uIGFz Og0KPj4+Pj4+Pj4+Pj4+IA0KPj4+Pj4+Pj4+Pj4+IExIUyA9IERFRkVSUkVEX0lOSVQgKFNJWkUg b2YgdGhlIERFQ0wsIElOSVRfVFlQRSwgSVNfVkxBKTsNCj4+Pj4+Pj4+Pj4+PiANCj4+Pj4+Pj4+ Pj4+PiBpZiBJU19WTEEgaXMgZmFsc2UsIHRoZSBMSFMgaXMgdGhlIERFQ0wgaXRzZWxmLA0KPj4+ Pj4+Pj4+Pj4+IGlmIElTX1ZMQSBpcyB0cnVlLCB0aGUgTEhTIGlzIHRoZSBwb2ludGVyIHRvIHRo aXMgREVDTCB0aGF0IGNyZWF0ZWQgYnkNCj4+Pj4+Pj4+Pj4+PiBnaW1wbGlmeV92bGFfZGVjbC4N Cj4+Pj4+Pj4+Pj4+PiANCj4+Pj4+Pj4+Pj4+PiANCj4+Pj4+Pj4+Pj4+PiBUaGUgYmVuZWZpdCBv ZiB0aGlzIHNvbHV0aW9uIGFyZToNCj4+Pj4+Pj4+Pj4+PiANCj4+Pj4+Pj4+Pj4+PiAxLiBSZXNv bHZlZCB0aGUgaW52YWxpZCBJUiBpc3N1ZTsNCj4+Pj4+Pj4+Pj4+PiAyLiBUaGUgY2FsbCBzdG10 IGNhcnJpZXMgdGhlIGFkZHJlc3Mgb2YgdGhlIFZMQSBuYXR1YWxseTsNCj4+Pj4+Pj4+Pj4+PiAN Cj4+Pj4+Pj4+Pj4+PiBUaGUgaXNzdWUgd2l0aCB0aGlzIHNvbHV0aW9uIGlzOg0KPj4+Pj4+Pj4+ Pj4+IA0KPj4+Pj4+Pj4+Pj4+IEZvciBWTEEgYW5kIG5vbi1WTEEsIHRoZSBMSFMgd2lsbCBiZSBk aWZmZXJlbnQsIA0KPj4+Pj4+Pj4+Pj4+IA0KPj4+Pj4+Pj4+Pj4+IERvIHlvdSBzZWUgYW55IG90 aGVyIHBvdGVudGlhbCBpc3N1ZXMgd2l0aCB0aGlzIHNvbHV0aW9uPw0KPj4+Pj4+Pj4+Pj4+IA0K Pj4+Pj4+Pj4+Pj4+IHRoYW5rcy4NCj4+Pj4+Pj4+Pj4+PiANCj4+Pj4+Pj4+Pj4+PiBRaW5nDQo+ Pj4+Pj4+Pj4+Pj4gDQo+Pj4+Pj4+Pj4+Pj4gDQo+Pj4+Pj4+Pj4+Pj4gDQo+Pj4+Pj4+Pj4+Pj4g DQo+Pj4+Pj4+Pj4+Pj4gDQo+Pj4+Pj4+Pj4+PiANCj4+Pj4+Pj4+Pj4+IC0tIA0KPj4+Pj4+Pj4+ Pj4gUmljaGFyZCBCaWVuZXIgPHJndWVudGhlckBzdXNlLmRlPg0KPj4+Pj4+Pj4+Pj4gU1VTRSBT b2Z0d2FyZSBTb2x1dGlvbnMgR2VybWFueSBHbWJILCBNYXhmZWxkc3RyYXNzZSA1LCA5MDQwOSBO dWVybmJlcmcsDQo+Pj4+Pj4+Pj4+PiBHZXJtYW55OyBHRjogRmVsaXggSW1lbmTDtnJmZmVyOyBI UkIgMzY4MDkgKEFHIE51ZXJuYmVyZykNCj4+Pj4+Pj4+Pj4gDQo+Pj4+Pj4+Pj4+IA0KPj4+Pj4+ Pj4+IA0KPj4+Pj4+Pj4+IC0tIA0KPj4+Pj4+Pj4+IFJpY2hhcmQgQmllbmVyIDxyZ3VlbnRoZXJA c3VzZS5kZT4NCj4+Pj4+Pj4+PiBTVVNFIFNvZnR3YXJlIFNvbHV0aW9ucyBHZXJtYW55IEdtYkgs IE1heGZlbGRzdHJhc3NlIDUsIDkwNDA5IE51ZXJuYmVyZywNCj4+Pj4+Pj4+PiBHZXJtYW55OyBH RjogRmVsaXggSW1lbmTDtnJmZmVyOyBIUkIgMzY4MDkgKEFHIE51ZXJuYmVyZykNCj4+Pj4+Pj4+ IA0KPj4+Pj4+Pj4gDQo+Pj4+Pj4+IA0KPj4+Pj4+PiAtLSANCj4+Pj4+Pj4gUmljaGFyZCBCaWVu ZXIgPHJndWVudGhlckBzdXNlLmRlPg0KPj4+Pj4+PiBTVVNFIFNvZnR3YXJlIFNvbHV0aW9ucyBH ZXJtYW55IEdtYkgsIE1heGZlbGRzdHJhc3NlIDUsIDkwNDA5IE51ZXJuYmVyZywNCj4+Pj4+Pj4g R2VybWFueTsgR0Y6IEZlbGl4IEltZW5kw7ZyZmZlcjsgSFJCIDM2ODA5IChBRyBOdWVybmJlcmcp DQo+PiANCj4+IA0KPiANCj4gLS0gDQo+IFJpY2hhcmQgQmllbmVyIDxyZ3VlbnRoZXJAc3VzZS5k ZT4NCj4gU1VTRSBTb2Z0d2FyZSBTb2x1dGlvbnMgR2VybWFueSBHbWJILCBNYXhmZWxkc3RyYXNz ZSA1LCA5MDQwOSBOdWVybmJlcmcsDQo+IEdlcm1hbnk7IEdGOiBGZWxpeCBJbWVuZMO2cmZmZXI7 IEhSQiAzNjgwOSAoQUcgTnVlcm5iZXJnKQ0KDQo=