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.web10.5264.1625447548400815416 for ; Sun, 04 Jul 2021 18:12:28 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@hpe.com header.s=pps0720 header.b=P8J/s9bO; spf=permerror, err=parse error for token &{10 18 %{ir}.%{v}.%{d}.spf.has.pphosted.com}: invalid domain name (domain: hpe.com, ip: 148.163.143.35, mailfrom: prvs=08201b7fa0=nickle.wang@hpe.com) Received: from pps.filterd (m0134425.ppops.net [127.0.0.1]) by mx0b-002e3701.pphosted.com (8.16.0.43/8.16.0.43) with SMTP id 1650nRLZ026031; Mon, 5 Jul 2021 00:55:21 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=hpe.com; h=from : to : cc : subject : date : message-id : references : in-reply-to : content-type : content-transfer-encoding : mime-version; s=pps0720; bh=8iWrCQlFraxnSkzRkfxoTATbxp9ynVNq+SP5FsOQ20E=; b=P8J/s9bOXDh+MD/0eQpzFixez1HY6oVeYbm5fxt8irGJ6c7HOXGmWTBV1nc5+m8LOSTs sDnxRvb9+r2zyAzjwN9MCsjxXROhiDaG84YeZxUtD6perM/nUzY21+/48EZlhNapohS/ +xtPAriWPTQfJnBiQcxzJiSMkVmRhZNO5Zq35QEbpfK0JrS1vkdtNJ2aSdJYymoN+ztG eHzfCIbDx9Yixx9ri7erfGN5H7pnjpjbx2tOgZGJd4Tw7FFIQcCWgQgRJtQbpUUKknu7 Z/ca8AW/Ncmj885vsRTwFzRuqOiGS3nQo9fUnAuI+wG42e1lmtTRUlnGmVbWHc2vus0U HQ== Received: from g2t2352.austin.hpe.com (g2t2352.austin.hpe.com [15.233.44.25]) by mx0b-002e3701.pphosted.com with ESMTP id 39jh6ua43a-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 05 Jul 2021 00:55:21 +0000 Received: from G9W8456.americas.hpqcorp.net (exchangepmrr1.us.hpecorp.net [16.216.161.95]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by g2t2352.austin.hpe.com (Postfix) with ESMTPS id 94FE785; Mon, 5 Jul 2021 00:55:20 +0000 (UTC) Received: from G9W8454.americas.hpqcorp.net (2002:10d8:a104::10d8:a104) by G9W8456.americas.hpqcorp.net (2002:10d8:a15f::10d8:a15f) with Microsoft SMTP Server (TLS) id 15.0.1497.18; Mon, 5 Jul 2021 00:55:20 +0000 Received: from NAM04-BN8-obe.outbound.protection.outlook.com (15.241.52.10) by G9W8454.americas.hpqcorp.net (16.216.161.4) with Microsoft SMTP Server (TLS) id 15.0.1497.18 via Frontend Transport; Mon, 5 Jul 2021 00:55:20 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=lRm3A7K/UWmpK8dGKKnvEx2Tzeq5xw8rGz0KZtrCQBiqf9X2o1JnQvvRZ6fa8uCzBIKE0WCb4YL//kPbCIEPDKFvKzCJse7cep1TOsj0dPk0KS8kY53JmT21nwbxyr4Gfkvam3mOFkM8LMoOtJwfXIclt29FhfvmB4fsGco4Q1ybmDakbckmrHZ7cnuxgH7zg+9bsEg4p/3z7xB5JoSZYW+kmUrEmK+iZsZ3o9zxDj6LmNjA1XRXVmS574CVF09oXKmkJR8vTLRYJ05MF9zBLFi/M6MdBrbdmvoxNzsMrnLBFfxuUtCDihPqFU/dyfdUUOz71+g4TEY7th74XIu+Hg== 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=IwyZFY2W/TmXOdBhN30QlJz0QBrGsQUZv8RD9HyBrVE=; b=IbqQOiCvSEeT0xQr7FVKSwG25g4KxW+cAnDEXNnrb80aNPb0JJo5S9farEehgyN1bOV+KAU6wY6pc+yFu+Z7on7jserCTq2+KR/o2lQFBc3cX6yh5sYoDFb6UjiHb302AIn3+V6SKpCEyCnnDAzlHXKk+72PolSIS6rs84a76PC5uT5xVOmv4meEvytRAcshWc0GkEP8x7rMgpgH3J+6FgYYQns6zaSiML0c50RCtJC4FGXLnKOXdg5FTEM0LvCyCjlYebEnmmnx1yWXe5QSWM77JkRrIsh/uDlBEy/8YHXCYyNyff3+y7Ug+ZGMdKhNO43uiV9NU/WF5khX28cVrw== 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 DF4PR8401MB0812.NAMPRD84.PROD.OUTLOOK.COM (2a01:111:e400:760d::7) by DF4PR8401MB1242.NAMPRD84.PROD.OUTLOOK.COM (2a01:111:e400:7610::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4287.21; Mon, 5 Jul 2021 00:55:18 +0000 Received: from DF4PR8401MB0812.NAMPRD84.PROD.OUTLOOK.COM ([fe80::74e2:a8b8:9f21:1dfe]) by DF4PR8401MB0812.NAMPRD84.PROD.OUTLOOK.COM ([fe80::74e2:a8b8:9f21:1dfe%7]) with mapi id 15.20.4287.033; Mon, 5 Jul 2021 00:55:17 +0000 From: "Nickle Wang" To: "devel@edk2.groups.io" , "gaoliming@byosoft.com.cn" , "lersek@redhat.com" CC: "jian.j.wang@intel.com" , "hao.a.wu@intel.com" , "Wang, Nickle (HPS SW)" Subject: Re: [edk2-devel] [PATCH] MdeModulePkg/RegularExpressionDxe: Fix memory assert in FreePool() Thread-Topic: [edk2-devel] [PATCH] MdeModulePkg/RegularExpressionDxe: Fix memory assert in FreePool() Thread-Index: AQHXXbUhbdBo0lj84k6jbjmDWE0/06srMTOAgACrrwCAAATc8IAABVIAgAABezCAAL5skIABDsSAgAX9JzA= Date: Mon, 5 Jul 2021 00:55:17 +0000 Message-ID: References: <20210610045641.1466-1-nickle.wang@hpe.com> <8eb4dbca-2ef5-888b-60f9-df28b05107ee@redhat.com> <004f01d76d4c$26fbd7a0$74f386e0$@byosoft.com.cn> <006b01d76d51$3db6d5d0$b9248170$@byosoft.com.cn> <168D3906BAF6D783.28904@groups.io> <011001d76e38$97615000$c623f000$@byosoft.com.cn> In-Reply-To: <011001d76e38$97615000$c623f000$@byosoft.com.cn> Accept-Language: en-US, zh-TW X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: edk2.groups.io; dkim=none (message not signed) header.d=none;edk2.groups.io; dmarc=none action=none header.from=hpe.com; x-originating-ip: [165.225.117.102] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 9e623bd1-f4eb-4689-abad-08d93f4f8ec6 x-ms-traffictypediagnostic: DF4PR8401MB1242: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:1122; x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: nbJWFXqYzbKO1X4PboD58/Now0h6D3NZXq398YRNzMTM+zX6VVuFNgg0Sfj3z+mMc2fz3U209y/Iy3VwJce40+x3cU0bGS76pdY3Pr3QwOUrpIh7FgF/odq4ck6N7pCB7pmpYAb/2rfn4TK0TfJ6Kx3c8AqgxTS4tvtWe5fdla/xaJPAlbdReigAARiOekgozzoXBxx0oq+WsXl4wJWz6M28Es6oHc29Ttvt42PKizqb6vgBmZzLJaYL5uajPgfTKaurlS0gtzOCoL8imVuLuKNK4gfLx4l0UQ0tI6jg1OgTCUPb3BYhbPQ5S6w/vfLYmfH2HOemdLdndnAYD+nE40O9LbICr5QGjoAyfg/q7mq6cjii1dv9Bo0kGC724yOH6l0frGL5EVM4pyKEc/lR3roJplvRXCovNhHaRA8oweSW3Sk26Gfk4pU/sGOwk3TI0ZsJD2EMb7l1XrilYoMsBmSAPclzFPpfxblsJIH+UYH7hFx04eYCiWhvu6sz0BPGcudnoEKbiNFv+2dKTsQiE7/rBGYvNwodbtOv8BpF6a7GtYhsFR4d/btB5ziYUy0QW48lv8fEORkvpxRDuYOaRQCQg+3T0b7JF+4pBLRn0hqEjDqnUSHgWHZTqbIET/gADi1tluUEa7+dBQ1Z4QgwDDPoTGk4X6RB3W18ovEpTz+Byp8X+2+ha4FR3oaZ8QwgCH9icd6rPS2uUvZE3LPnoj9KEoA1i43d7ZXv4zKWryyDk9xApGaj9Q2fQGLZqR4QRNb/fJR+CDkHqZiNOpXDNg== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DF4PR8401MB0812.NAMPRD84.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(396003)(376002)(366004)(39860400002)(136003)(346002)(2906002)(8936002)(30864003)(86362001)(122000001)(966005)(186003)(316002)(54906003)(83380400001)(8676002)(7696005)(6506007)(55236004)(110136005)(53546011)(26005)(478600001)(66946007)(71200400001)(4326008)(76116006)(55016002)(5660300002)(66476007)(33656002)(66556008)(64756008)(66446008)(9686003)(38100700002)(52536014);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?LzQ4MVVIUDd6QzRiTk9ITHpuc1AyWno0YWp0QjR4Qmg1TTNSV1p1WUdBL29z?= =?utf-8?B?ckt6U3FMRlhFZS9hK3hwVk96bFQ5ZGRPQ1kwc0hvRnRYTFhBbzZzNk1zRWh2?= =?utf-8?B?dFdwZHdJWlpRc0VmZUJkTkFKUVhEM25Ud1FLZXJvOStjTjJCblZ6TE1QTFJR?= =?utf-8?B?ZkFiS0t2Nkx0YlBtSFVMNG9WNmZNNmRTV3cwNy8rWDBxN1JVM2ZyK3lwVUhF?= =?utf-8?B?SDVhNE5JYWdQa0xZMmkzQ0FxRzF3cldQWUxNcVdTMVpSRXVIblM4dGFPK3pr?= =?utf-8?B?d3JXYkZnZ0hqRlRDaE9pVDkzc3lrT3FPSmd5eHhIWnd6RktQaWlacENtdVFS?= =?utf-8?B?SFhITTdNM1BKSEJGeGRGQUlFZ2ZMOU41N2Z6WmU2MGF3VmkwUjFRMHpVRS9Q?= =?utf-8?B?RTBXYi90RTRnV1FUM3VwZ3JoRFZlVXI1TTRva1g5V21VVmNBVXJaRTVFNnpT?= =?utf-8?B?YlBlU3dvLzU2dWF1aHRFbThhVW0zQTh4TC9zRGNHM0txbUlEVFJjZ1g4SmFj?= =?utf-8?B?amZvMWQrenpIVUxUOTRaYjFNUkZDandPbWl4QkZ6c2FMSFlUS1Y1ZWFxaVJr?= =?utf-8?B?ZjQ0YzFmbGdwK3lSYUtSdU9Xa2N4RWZZMGFSeDZwZEludkFOeFhXTFg1N3R3?= =?utf-8?B?cWlzVE90ak1ZUWFFdVA0cjZ0OE1DN3FzcXlIZEJoQ2pKRzRkQjIwT2dDdE1p?= =?utf-8?B?QXNTSWJIYjZjMGhhNjFBeHorZVBYSEpKbVlveFlFQ0M5ZkJQYmtsUjgvNE5D?= =?utf-8?B?TDRPNkpBSCtkcWhiTjZyd3dEbzU4Ryt3Zkt2NzdST3Q3Tmk5MnJHNGJ0czZk?= =?utf-8?B?TFlHNTVSS002eExraXowRmNWWnF1M0FoelZQMTBGeUhlSFkrS1hPZTUxTlNq?= =?utf-8?B?T3RmSjBaNGlTQ1pPd3R3SjNPUmdwZXVuWXVMQ1dWZ2RJRzRlNWFnVG5iVm1S?= =?utf-8?B?dllxOU9PeDhIcVVtQkVNWHhsRmJZQTV3WkdOcGRIczBGblNBdVdCU0t2MERP?= =?utf-8?B?VHVROGp6RW1JcHJuZVRUTGdIcCtMWjUyQzNzK0hscHJsS0pJQWJhd3ZxOTFJ?= =?utf-8?B?WjY1SEgvZzRiTCsrbUthejhCZjBpNXg0V1UzZGR4RnQwQVRjTStaOE1hSzF1?= =?utf-8?B?ZGhpWlljcTNtSlNiL2FDNmE0NEVzcDQ4bkNJRElUNjRTdVdzR3dIbHMrdUZz?= =?utf-8?B?NUIvOW5Ja1lndld3UVNNTVJJRkQvS2RBSzJZQ0g5SSt1VTJ6eTNyRXplSThz?= =?utf-8?B?dzExUDdMNjQ4YTFMMytDdVNlMFJ0S3o0SlBpUHBSQUpYRzlldDVqTUR6V1p3?= =?utf-8?B?NkZ4NnFpVTlmZ3l1N3R4WUhxL0loM1hWZG00bjVKOE9hRFozOGxvL28ycytt?= =?utf-8?B?M3Q5REkyV0RhYWUyd2I4c2ROelZma3ZGdW9aVlFlUFpRd1p3aWxpZXRadFJv?= =?utf-8?B?YkNCOStvMkVpNXhKbTRwcWZVc2srOTh1R2M0dTd2KzJLNGNEL2pzUVp1cEdU?= =?utf-8?B?WXhZZDVHS1NnWUhaNTRrbzU2UUg1bXdvM2ZreHJ3U1hXWHJadDU4RGE1bWg3?= =?utf-8?B?ZEJwOXJlRkt1M3J4OGdHS1FnaFA0RjdkQk51WTcrZTBVcWNLeDRUYmxVckla?= =?utf-8?B?dmVvYmZoeml5eDBmRFFtcmpxTTlTY2ZDUlNNWURhZFoxckNQKzlTQ3pyRTRF?= =?utf-8?B?K25iZE0rZUtjcytIWktZaVRMZG5LWGhOYVpMNjNwMG5OdXdIbnlGWTNRWHNH?= =?utf-8?Q?yIqaO5FNwPrPIUBTWBwHXh2N21iw6j/wYqohegR?= X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: DF4PR8401MB0812.NAMPRD84.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-Network-Message-Id: 9e623bd1-f4eb-4689-abad-08d93f4f8ec6 X-MS-Exchange-CrossTenant-originalarrivaltime: 05 Jul 2021 00:55:17.8887 (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: a1UAdrog3tRhFYxuh9csI87+w3VuwLtezwHXZ8QcKw8Ac7HGQKPtUEu6avEhCPY8m/GNy5aPsaoPZ+RFVoT1tQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DF4PR8401MB1242 X-OriginatorOrg: hpe.com X-Proofpoint-GUID: K1x8HrXcFME2-pq46bR9h9bzpl-WsPVz X-Proofpoint-ORIG-GUID: K1x8HrXcFME2-pq46bR9h9bzpl-WsPVz X-Proofpoint-UnRewURL: 3 URL's were un-rewritten MIME-Version: 1.0 X-HPE-SCL: -1 X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.391,18.0.790 definitions=2021-07-04_17:2021-07-02,2021-07-04 signatures=0 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 phishscore=0 suspectscore=0 spamscore=0 lowpriorityscore=0 mlxscore=0 adultscore=0 impostorscore=0 priorityscore=1501 malwarescore=0 bulkscore=0 clxscore=1015 mlxlogscore=999 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2104190000 definitions=main-2107050002 Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 VGhhbmtzIExpbWluZyEgSSBjcmVhdGUgcGVyc29uYWwgUFIgYmVsb3cgYW5kIEkgYWxzbyBzZWUg Q0kgZXJyb3Igb24gT25pZ3VydW1hVWVmaVBvcnQuaC4gSXQgbG9va3MgbGlrZSAiVWJ1bnR1IEdD QyBQUiIgZG9lcyBub3QgbGlrZSB0aGUgY29kaW5nIHN0eWxlIG9uIE9uaWd1cnVtYVVlZmlQb3J0 LmguIEhvd2V2ZXIsIEkganVzdCBmb2xsb3cgdGhlIGNvZGluZyBzdHlsZSBvZiBvdGhlciBmdW5j dGlvbnMgaW4gdGhpcyBmaWxlLiANCg0KaHR0cHM6Ly9naXRodWIuY29tL3RpYW5vY29yZS9lZGsy L3B1bGwvMTc4OA0KDQpTbywgc2hvdWxkIEkgYWRkIHRoaXMgZmlsZSBpbnRvIGV4Y2VwdGlvbiBs aXN0IHRvbz8gT3IgSSBqdXN0IGZvbGxvdyB0aGUgY29kaW5nIHN0eWxlIG9uIHdoYXQgSSBtb2Rp ZmllZD8NCg0KVGhhbmtzLA0KTmlja2xlDQoNCi0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQpG cm9tOiBkZXZlbEBlZGsyLmdyb3Vwcy5pbyA8ZGV2ZWxAZWRrMi5ncm91cHMuaW8+IE9uIEJlaGFs ZiBPZiBnYW9saW1pbmcNClNlbnQ6IFRodXJzZGF5LCBKdWx5IDEsIDIwMjEgMToxOSBQTQ0KVG86 IGRldmVsQGVkazIuZ3JvdXBzLmlvOyBXYW5nLCBOaWNrbGUgKEhQUyBTVykgPG5pY2tsZS53YW5n QGhwZS5jb20+OyBsZXJzZWtAcmVkaGF0LmNvbQ0KQ2M6IGppYW4uai53YW5nQGludGVsLmNvbTsg aGFvLmEud3VAaW50ZWwuY29tDQpTdWJqZWN0OiDlm57lpI06IFtlZGsyLWRldmVsXSBbUEFUQ0hd IE1kZU1vZHVsZVBrZy9SZWd1bGFyRXhwcmVzc2lvbkR4ZTogRml4IG1lbW9yeSBhc3NlcnQgaW4g RnJlZVBvb2woKQ0KDQpOaWNrbGU6DQogIFlvdSBjYW4gY3JlYXRlIHBlcnNvbmFsIFBSIHRvIHZl cmlmeSB0aGlzIGNoYW5nZSBmaXJzdC4gSWYgaXQgcGFzc2VzIENJLCBwbGVhc2Ugc2VuZCB0aGUg dXBkYXRlZCBwYXRjaCBzZXQuIA0KDQpUaGFua3MNCkxpbWluZw0KPiAtLS0tLemCruS7tuWOn+S7 ti0tLS0tDQo+IOWPkeS7tuS6ujogZGV2ZWxAZWRrMi5ncm91cHMuaW8gPGRldmVsQGVkazIuZ3Jv dXBzLmlvPiDku6PooaggTmlja2xlIFdhbmcNCj4g5Y+R6YCB5pe26Ze0OiAyMDIx5bm0NuaciDMw 5pelIDIxOjExDQo+IOaUtuS7tuS6ujogZGV2ZWxAZWRrMi5ncm91cHMuaW87IFdhbmcsIE5pY2ts ZSAoSFBTIFNXKSANCj4gPG5pY2tsZS53YW5nQGhwZS5jb20+OyBnYW9saW1pbmcgPGdhb2xpbWlu Z0BieW9zb2Z0LmNvbS5jbj47IA0KPiBsZXJzZWtAcmVkaGF0LmNvbQ0KPiDmioTpgIE6IGppYW4u ai53YW5nQGludGVsLmNvbTsgaGFvLmEud3VAaW50ZWwuY29tOyBXYW5nLCBOaWNrbGUgKEhQUyBT VykgDQo+IDxuaWNrbGUud2FuZ0BocGUuY29tPg0KPiDkuLvpopg6IFJlOiBbZWRrMi1kZXZlbF0g W1BBVENIXSBNZGVNb2R1bGVQa2cvUmVndWxhckV4cHJlc3Npb25EeGU6IEZpeCANCj4gbWVtb3J5 IGFzc2VydCBpbiBGcmVlUG9vbCgpDQo+IA0KPiBIaSBMaW1pbmcsDQo+IA0KPiBJIGdvdCBteSBw YXRjaCByZWFkeS4gU2hvdWxkIEkgdGVzdCBpdCBieSBjcmVhdGluZyBQUiBvbiBHaXRodWIgbGlr ZSANCj4gaHR0cHM6Ly9naXRodWIuY29tL3RpYW5vY29yZS9lZGsyL3B1bGwvMTczNT8gT3IgSSBq dXN0IHNlbmQgb3V0IG5ldyANCj4gcGF0Y2ggZm9yIHJldmlldz8NCj4gDQo+IFRoYW5rcywNCj4g Tmlja2xlDQo+IA0KPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBkZXZlbEBl ZGsyLmdyb3Vwcy5pbyA8ZGV2ZWxAZWRrMi5ncm91cHMuaW8+IE9uIEJlaGFsZiBPZiBOaWNrbGUg DQo+IFdhbmcNCj4gU2VudDogV2VkbmVzZGF5LCBKdW5lIDMwLCAyMDIxIDk6NDkgQU0NCj4gVG86 IGdhb2xpbWluZyA8Z2FvbGltaW5nQGJ5b3NvZnQuY29tLmNuPjsgZGV2ZWxAZWRrMi5ncm91cHMu aW87IA0KPiBsZXJzZWtAcmVkaGF0LmNvbQ0KPiBDYzogamlhbi5qLndhbmdAaW50ZWwuY29tOyBo YW8uYS53dUBpbnRlbC5jb207IFdhbmcsIE5pY2tsZSAoSFBTIFNXKSANCj4gPG5pY2tsZS53YW5n QGhwZS5jb20+DQo+IFN1YmplY3Q6IFJlOiBbZWRrMi1kZXZlbF0gW1BBVENIXSBNZGVNb2R1bGVQ a2cvUmVndWxhckV4cHJlc3Npb25EeGU6IA0KPiBGaXggbWVtb3J5IGFzc2VydCBpbiBGcmVlUG9v bCgpDQo+IA0KPiBJIHNlZS4gVGhhbmtzIGZvciB5b3VyIHF1aWNrIHJlc3BvbnNlLiBJIHdpbGwg d29yayBvbiBpdC4NCj4gDQo+IE5pY2tsZQ0KPiANCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0t LS0NCj4gRnJvbTogZ2FvbGltaW5nIDxnYW9saW1pbmdAYnlvc29mdC5jb20uY24+DQo+IFNlbnQ6 IFdlZG5lc2RheSwgSnVuZSAzMCwgMjAyMSA5OjQzIEFNDQo+IFRvOiBXYW5nLCBOaWNrbGUgKEhQ UyBTVykgPG5pY2tsZS53YW5nQGhwZS5jb20+OyBkZXZlbEBlZGsyLmdyb3Vwcy5pbzsgDQo+IGxl cnNla0ByZWRoYXQuY29tDQo+IENjOiBqaWFuLmoud2FuZ0BpbnRlbC5jb207IGhhby5hLnd1QGlu dGVsLmNvbQ0KPiBTdWJqZWN0OiDlm57lpI06IFtlZGsyLWRldmVsXSBbUEFUQ0hdIE1kZU1vZHVs ZVBrZy9SZWd1bGFyRXhwcmVzc2lvbkR4ZToNCj4gRml4IG1lbW9yeSBhc3NlcnQgaW4gRnJlZVBv b2woKQ0KPiANCj4gVGhpcyBpcyBhIHNlcGFyYXRlIGNvbW1pdC4gWW91IGNhbiBzZW5kIGl0IHRv Z2V0aGVyIHdpdGggcHJldmlvdXMgcGF0Y2guDQo+IA0KPiBUaGFua3MNCj4gTGltaW5nDQo+ID4g LS0tLS3pgq7ku7bljp/ku7YtLS0tLQ0KPiA+IOWPkeS7tuS6ujogV2FuZywgTmlja2xlIChIUFMg U1cpIDxuaWNrbGUud2FuZ0BocGUuY29tPg0KPiA+IOWPkemAgeaXtumXtDogMjAyMeW5tDbmnIgz MOaXpSA5OjI5DQo+ID4g5pS25Lu25Lq6OiBnYW9saW1pbmcgPGdhb2xpbWluZ0BieW9zb2Z0LmNv bS5jbj47IGRldmVsQGVkazIuZ3JvdXBzLmlvOyANCj4gPiBsZXJzZWtAcmVkaGF0LmNvbQ0KPiA+ IOaKhOmAgTogamlhbi5qLndhbmdAaW50ZWwuY29tOyBoYW8uYS53dUBpbnRlbC5jb207IFdhbmcs IE5pY2tsZSAoSFBTIFNXKSANCj4gPiA8bmlja2xlLndhbmdAaHBlLmNvbT4NCj4gPiDkuLvpopg6 IFJFOiBbZWRrMi1kZXZlbF0gW1BBVENIXSBNZGVNb2R1bGVQa2cvUmVndWxhckV4cHJlc3Npb25E eGU6IEZpeCANCj4gPiBtZW1vcnkgYXNzZXJ0IGluIEZyZWVQb29sKCkNCj4gPg0KPiA+IEhpIExp bWluZywNCj4gPg0KPiA+IE5vIHByb2JsZW0uIEl0IGxvb2tzIGxpa2UgSSBoYXZlIHRvIGFkZCBP bmlndXJ1bWFVZWZpUG9ydC5jIGludG8NCj4gIklnbm9yZUZpbGVzIg0KPiA+IG9iamVjdCBpbiBN ZGVNb2R1bGVQa2cuY2kueWFtbC4gQW5kIHNob3VsZCBJIHNlbmQgdGhpcyBwYXRjaCBhbG9uZT8g DQo+ID4gT3IgSSBoYXZlIHRvIHNlbmQgaXQgYXMgYSBwYXJ0IG9mIHBhdGNoIGluIGVhcmx5IGZp eD8NCj4gPg0KPiA+IFRoYW5rcywNCj4gPiBOaWNrbGUNCj4gPg0KPiA+IC0tLS0tT3JpZ2luYWwg TWVzc2FnZS0tLS0tDQo+ID4gRnJvbTogZ2FvbGltaW5nIDxnYW9saW1pbmdAYnlvc29mdC5jb20u Y24+DQo+ID4gU2VudDogV2VkbmVzZGF5LCBKdW5lIDMwLCAyMDIxIDk6MDYgQU0NCj4gPiBUbzog ZGV2ZWxAZWRrMi5ncm91cHMuaW87IGxlcnNla0ByZWRoYXQuY29tOyBXYW5nLCBOaWNrbGUgKEhQ UyBTVykgDQo+ID4gPG5pY2tsZS53YW5nQGhwZS5jb20+DQo+ID4gQ2M6IGppYW4uai53YW5nQGlu dGVsLmNvbTsgaGFvLmEud3VAaW50ZWwuY29tDQo+ID4gU3ViamVjdDog5Zue5aSNOiBbZWRrMi1k ZXZlbF0gW1BBVENIXQ0KPiBNZGVNb2R1bGVQa2cvUmVndWxhckV4cHJlc3Npb25EeGU6DQo+ID4g Rml4IG1lbW9yeSBhc3NlcnQgaW4gRnJlZVBvb2woKQ0KPiA+DQo+ID4gTGFzemxvOg0KPiA+ICBZ ZXMuIEkgYWdyZWUgdG8gYWRkIE9uaWd1cnVtYVVlZmlQb3J0LmMgaW50byBFQ0MgZXhjZXB0aW9u IGluIA0KPiA+IE1kZU1vZHVsZVBrZy5jaS55YW1sLg0KPiA+DQo+ID4gTmlja2xlOg0KPiA+ICBD YW4geW91IHByb3ZpZGUgdGhlIHBhdGNoIHRvIHVwZGF0ZSBNZGVNb2R1bGVQa2cuY2kueWFtbD8N Cj4gPg0KPiA+IFRoYW5rcw0KPiA+IExpbWluZw0KPiA+ID4gLS0tLS3pgq7ku7bljp/ku7YtLS0t LQ0KPiA+ID4g5Y+R5Lu25Lq6OiBkZXZlbEBlZGsyLmdyb3Vwcy5pbyA8ZGV2ZWxAZWRrMi5ncm91 cHMuaW8+IOS7o+ihqCBMYXN6bG8NCj4gPiBFcnNlaw0KPiA+ID4g5Y+R6YCB5pe26Ze0OiAyMDIx 5bm0NuaciDI55pelIDIyOjUyDQo+ID4gPiDmlLbku7bkuro6IGRldmVsQGVkazIuZ3JvdXBzLmlv OyBuaWNrbGUud2FuZ0BocGUuY29tDQo+ID4gPiDmioTpgIE6IGdhb2xpbWluZ0BieW9zb2Z0LmNv bS5jbjsgamlhbi5qLndhbmdAaW50ZWwuY29tOyANCj4gPiA+IGhhby5hLnd1QGludGVsLmNvbQ0K PiA+ID4g5Li76aKYOiBSZTogW2VkazItZGV2ZWxdIFtQQVRDSF0gTWRlTW9kdWxlUGtnL1JlZ3Vs YXJFeHByZXNzaW9uRHhlOg0KPiBGaXgNCj4gPiA+IG1lbW9yeSBhc3NlcnQgaW4gRnJlZVBvb2wo KQ0KPiA+ID4NCj4gPiA+IE9uIDA2LzEwLzIxIDA2OjU2LCBOaWNrbGUgV2FuZyB3cm90ZToNCj4g PiA+ID4gTWVtb3J5IGJ1ZmZlciB0aGF0IGlzIGFsbG9jYXRlZCBieSBtYWxsb2MoKSBhbmQgcmVh bGxvYygpIHdpbGwgDQo+ID4gPiA+IGJlIHNoaWZ0ZWQgYnkgOCBieXRlcyBiZWNhdXNlIE9uaWd1 cnVtYSBrZWVwcyBpdHMgbWVtb3J5IHNpZ25hdHVyZS4NCj4gPiA+ID4gVGhpcyA4IGJ5dGVzIHNo aWZ0IGlzIG5vdCBoYW5kbGVkIHdoaWxlIGNhbGxpbmcgZnJlZSgpIHRvIA0KPiA+ID4gPiByZWxl YXNlIG1lbW9yeS4gQWRkDQo+ID4gPiA+IGZyZWUoKSBmdW5jdGlvbiB0byBjaGVjayBPbmlndXJ1 bWEgc2lnbmF0dXJlIGJlZm9yZSByZWxlYXNlIA0KPiA+ID4gPiBtZW1vcnkgYmVjYXVzZSBtZW1v cnkgYnVmZmVyIGlzIG5vdCB0b3VjaGVkIHdoZW4gdXNpbmcgY2FsbG9jKCkuDQo+ID4gPiA+DQo+ ID4gPiA+IFNpZ25lZC1vZmYtYnk6IE5pY2tsZSBXYW5nIDxuaWNrbGUud2FuZ0BocGUuY29tPg0K PiA+ID4gPiAtLS0NCj4gPiA+ID4gIC4uLi9SZWd1bGFyRXhwcmVzc2lvbkR4ZS9PbmlndXJ1bWFV ZWZpUG9ydC5jICB8IDE5DQo+ID4gPiArKysrKysrKysrKysrKysrKystDQo+ID4gPiA+ICAuLi4v UmVndWxhckV4cHJlc3Npb25EeGUvT25pZ3VydW1hVWVmaVBvcnQuaCAgfCAxNCANCj4gPiA+ID4g KystLS0tLS0tLS0tLS0NCj4gPiA+ID4gIDIgZmlsZXMgY2hhbmdlZCwgMjAgaW5zZXJ0aW9ucygr KSwgMTMgZGVsZXRpb25zKC0pDQo+ID4gPiA+DQo+ID4gPiA+IGRpZmYgLS1naXQNCj4gPiA+IGEv TWRlTW9kdWxlUGtnL1VuaXZlcnNhbC9SZWd1bGFyRXhwcmVzc2lvbkR4ZS9PbmlndXJ1bWFVZWZp UG9ydC5jDQo+ID4gPiBiL01kZU1vZHVsZVBrZy9Vbml2ZXJzYWwvUmVndWxhckV4cHJlc3Npb25E eGUvT25pZ3VydW1hVWVmaVBvcnQuYw0KPiA+ID4gPiBpbmRleCA5YWE3YjBhNjhlLi41YzM0MzI0 ZGI4IDEwMDY0NA0KPiA+ID4gPiAtLS0NCj4gPiA+IGEvTWRlTW9kdWxlUGtnL1VuaXZlcnNhbC9S ZWd1bGFyRXhwcmVzc2lvbkR4ZS9PbmlndXJ1bWFVZWZpUG9ydC5jDQo+ID4gPiA+ICsrKw0KPiA+ ID4gYi9NZGVNb2R1bGVQa2cvVW5pdmVyc2FsL1JlZ3VsYXJFeHByZXNzaW9uRHhlL09uaWd1cnVt YVVlZmlQb3J0LmMNCj4gPiA+ID4gQEAgLTIsNyArMiw3IEBADQo+ID4gPiA+DQo+ID4gPiA+ICAg IE1vZHVsZSB0byByZXdyaXRlIHN0ZGxpYiByZWZlcmVuY2VzIHdpdGhpbiBPbmlndXJ1bWENCj4g PiA+ID4NCj4gPiA+ID4gLSAgKEMpIENvcHlyaWdodCAyMDE0LTIwMTUgSGV3bGV0dCBQYWNrYXJk IEVudGVycHJpc2UgDQo+ID4gPiA+IERldmVsb3BtZW50DQo+ID4gPiBMUDxCUj4NCj4gPiA+ID4g KyAgKEMpIENvcHlyaWdodCAyMDE0LTIwMjEgSGV3bGV0dCBQYWNrYXJkIEVudGVycHJpc2UgDQo+ ID4gPiA+ICsgRGV2ZWxvcG1lbnQNCj4gPiA+IExQPEJSPg0KPiA+ID4gPiAgICBDb3B5cmlnaHQg KGMpIDIwMjAsIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIA0KPiA+ID4gPiByZXNlcnZl ZC48QlI+DQo+ID4gPiA+DQo+ID4gPiA+ICAgIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0Qt Mi1DbGF1c2UtUGF0ZW50IEBAIC05NiwzICs5NiwyMA0KPiBAQA0KPiA+ID4gPiB2b2lkKiBtZW1z ZXQgKHZvaWQgKmRlc3QsIGNoYXIgY2gsIHVuc2lnbmVkIGludA0KPiA+ID4gY291bnQpDQo+ID4g PiA+ICAgIHJldHVybiBTZXRNZW0gKGRlc3QsIGNvdW50LCBjaCk7ICB9DQo+ID4gPiA+DQo+ID4g PiA+ICt2b2lkIGZyZWUodm9pZCAqcHRyKQ0KPiA+ID4gPiArew0KPiA+ID4gPiArICBWT0lEICAg ICAgICAgKkV2YWxPbmNlOw0KPiA+ID4gPiArICBPTklHTUVNX0hFQUQgKlBvb2xIZHI7DQo+ID4g PiA+ICsNCj4gPiA+ID4gKyAgRXZhbE9uY2UgPSBwdHI7DQo+ID4gPiA+ICsgIGlmIChFdmFsT25j ZSA9PSBOVUxMKSB7DQo+ID4gPiA+ICsgICAgcmV0dXJuOw0KPiA+ID4gPiArICB9DQo+ID4gPiA+ ICsNCj4gPiA+ID4gKyAgUG9vbEhkciA9IChPTklHTUVNX0hFQUQgKilFdmFsT25jZSAtIDE7DQo+ ID4gPiA+ICsgIGlmIChQb29sSGRyLT5TaWduYXR1cmUgPT0gT05JR01FTV9IRUFEX1NJR05BVFVS RSkgew0KPiA+ID4gPiArICAgIEZyZWVQb29sIChQb29sSGRyKTsNCj4gPiA+ID4gKyAgfSBlbHNl IHsNCj4gPiA+ID4gKyAgICBGcmVlUG9vbCAoRXZhbE9uY2UpOw0KPiA+ID4gPiArICB9DQo+ID4g PiA+ICt9DQo+ID4gPiA+IGRpZmYgLS1naXQNCj4gPiA+IGEvTWRlTW9kdWxlUGtnL1VuaXZlcnNh bC9SZWd1bGFyRXhwcmVzc2lvbkR4ZS9PbmlndXJ1bWFVZWZpUG9ydC5oDQo+ID4gPiBiL01kZU1v ZHVsZVBrZy9Vbml2ZXJzYWwvUmVndWxhckV4cHJlc3Npb25EeGUvT25pZ3VydW1hVWVmaVBvcnQu aA0KPiA+ID4gPiBpbmRleCAyMGI3NWMzMzYxLi4wYmRiN2JlNTI5IDEwMDY0NA0KPiA+ID4gPiAt LS0NCj4gPiA+IGEvTWRlTW9kdWxlUGtnL1VuaXZlcnNhbC9SZWd1bGFyRXhwcmVzc2lvbkR4ZS9P bmlndXJ1bWFVZWZpUG9ydC5oDQo+ID4gPiA+ICsrKw0KPiA+ID4gYi9NZGVNb2R1bGVQa2cvVW5p dmVyc2FsL1JlZ3VsYXJFeHByZXNzaW9uRHhlL09uaWd1cnVtYVVlZmlQb3J0LmgNCj4gPiA+ID4g QEAgLTIsNyArMiw3IEBADQo+ID4gPiA+DQo+ID4gPiA+ICAgIE1vZHVsZSB0byByZXdyaXRlIHN0 ZGxpYiByZWZlcmVuY2VzIHdpdGhpbiBPbmlndXJ1bWENCj4gPiA+ID4NCj4gPiA+ID4gLSAgKEMp IENvcHlyaWdodCAyMDE0LTIwMTUgSGV3bGV0dCBQYWNrYXJkIEVudGVycHJpc2UgDQo+ID4gPiA+ IERldmVsb3BtZW50DQo+ID4gPiBMUDxCUj4NCj4gPiA+ID4gKyAgKEMpIENvcHlyaWdodCAyMDE0 LTIwMjEgSGV3bGV0dCBQYWNrYXJkIEVudGVycHJpc2UgDQo+ID4gPiA+ICsgRGV2ZWxvcG1lbnQN Cj4gPiA+IExQPEJSPg0KPiA+ID4gPiAgICBDb3B5cmlnaHQgKGMpIDIwMjAsIEludGVsIENvcnBv cmF0aW9uLiBBbGwgcmlnaHRzIA0KPiA+ID4gPiByZXNlcnZlZC48QlI+DQo+ID4gPiA+DQo+ID4g PiA+ICAgIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1c2UtUGF0ZW50DQo+ID4g PiA+IEBAIC00NiwxNyArNDYsNiBAQCB0eXBlZGVmIElOVE4gICAgICAgIGludHB0cl90Ow0KPiA+ ID4gPiAgI2VuZGlmDQo+ID4gPiA+DQo+ID4gPiA+ICAjZGVmaW5lIGNhbGxvYyhuLHMpIEFsbG9j YXRlWmVyb1Bvb2woKG4pKihzKSkNCj4gPiA+ID4gLQ0KPiA+ID4gPiAtI2RlZmluZSBmcmVlKHAp ICAgICAgICAgICAgIFwNCj4gPiA+ID4gLSAgZG8geyAgICAgICAgICAgICAgICAgICAgICBcDQo+ ID4gPiA+IC0gICAgVk9JRCAqRXZhbE9uY2U7ICAgICAgICAgXA0KPiA+ID4gPiAtICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFwNCj4gPiA+ID4gLSAgICBFdmFsT25jZSA9IChwKTsgICAgICAg ICBcDQo+ID4gPiA+IC0gICAgaWYgKEV2YWxPbmNlICE9IE5VTEwpIHsgXA0KPiA+ID4gPiAtICAg ICAgRnJlZVBvb2wgKEV2YWxPbmNlKTsgIFwNCj4gPiA+ID4gLSAgICB9ICAgICAgICAgICAgICAg ICAgICAgICBcDQo+ID4gPiA+IC0gIH0gd2hpbGUgKEZBTFNFKQ0KPiA+ID4gPiAtDQo+ID4gPiA+ ICAjZGVmaW5lIHhtZW1tb3ZlKERlc3QsU3JjLExlbmd0aCkgQ29weU1lbShEZXN0LFNyYyxMZW5n dGgpDQo+ID4gI2RlZmluZQ0KPiA+ID4gPiB4bWVtY3B5KERlc3QsU3JjLExlbmd0aCkgQ29weU1l bShEZXN0LFNyYyxMZW5ndGgpICAjZGVmaW5lDQo+ID4gPiA+IHhtZW1zZXQoQnVmZmVyLFZhbHVl LExlbmd0aCkgU2V0TWVtKEJ1ZmZlcixMZW5ndGgsVmFsdWUpIEBAIA0KPiA+ID4gPiAtOTgsNg0K PiA+ID4gPiArODcsNyBAQCB2b2lkKiBtYWxsb2Moc2l6ZV90IHNpemUpOw0KPiA+ID4gPiAgdm9p ZCogcmVhbGxvYyh2b2lkICpwdHIsIHNpemVfdCBzaXplKTsNCj4gPiA+ID4gIHZvaWQqIG1lbWNw eSAodm9pZCAqZGVzdCwgY29uc3Qgdm9pZCAqc3JjLCB1bnNpZ25lZCBpbnQgY291bnQpOw0KPiA+ ID4gPiAgdm9pZCogbWVtc2V0ICh2b2lkICpkZXN0LCBjaGFyIGNoLCB1bnNpZ25lZCBpbnQgY291 bnQpOw0KPiA+ID4gPiArdm9pZCBmcmVlKHZvaWQgKnB0cik7DQo+ID4gPiA+DQo+ID4gPiA+ICAj ZGVmaW5lIGV4aXQobikgQVNTRVJUKEZBTFNFKTsNCj4gPiA+ID4NCj4gPiA+ID4NCj4gPiA+DQo+ ID4gPiBUaGlzIHBhdGNoIGNhbm5vdCBiZSBtZXJnZWQsIGR1ZSB0byBhIG51bWJlciBvZiBFY2ND aGVjayBjb21wbGFpbnRzOg0KPiA+ID4NCj4gPiA+IDIwMjEtMDYtMjFUMDE6NDQ6MTMuNDMyNzg2 MVogUFJPR1JFU1MgLSAtLVJ1bm5pbmcgTWRlTW9kdWxlUGtnOg0KPiA+ID4gRWNjQ2hlY2sgVGVz dCBOTy1UQVJHRVQgLS0NCj4gPiA+IDIwMjEtMDYtMjFUMDE6NDQ6MjAuNDkyMjMwMFogRVJST1Ig LSAyMDIxLTA2LTIxVDAxOjQ0OjIwLjQ5MjQxNzhaIA0KPiA+ID4gRVJST1IgLSBFRkkgY29kaW5n IHN0eWxlIGVycm9yIDIwMjEtMDYtMjFUMDE6NDQ6MjAuNDkyNTUyNFogRVJST1IgDQo+ID4gPiAt ICpFcnJvciBjb2RlOiA0MDAyIDIwMjEtMDYtMjFUMDE6NDQ6MjAuNDkyNzMyM1ogRVJST1IgLSAq RnVuY3Rpb24gDQo+ID4gPiBoZWFkZXIgZG9lc24ndCBleGlzdCAyMDIxLTA2LTIxVDAxOjQ0OjIw LjQ5MzY0MzdaIEVSUk9SIC0gKmZpbGU6DQo+ID4gPg0KPiA+DQo+IC8vaG9tZS92c3RzL3dvcmsv MS9zL01kZU1vZHVsZVBrZy9Vbml2ZXJzYWwvUmVndWxhckV4cHJlc3Npb25EeGUvT25pDQo+ID4g PiBndXJ1bWFVZWZpUG9ydC5jDQo+ID4gPiAyMDIxLTA2LTIxVDAxOjQ0OjIwLjQ5Mzc2NjlaIEVS Uk9SIC0gKkxpbmUgbnVtYmVyOiA5OSANCj4gPiA+IDIwMjEtMDYtMjFUMDE6NDQ6MjAuNDkzODcz N1ogRVJST1IgLSAqRnVuY3Rpb24gW2ZyZWVdIGhhcyBOTw0KPiBjb21tZW50DQo+ID4gPiBpbW1l ZGlhdGVseSBwcmVjZWRpbmcgaXQuDQo+ID4gPiAyMDIxLTA2LTIxVDAxOjQ0OjIwLjQ5NDU0ODla IEVSUk9SIC0gMjAyMS0wNi0yMVQwMTo0NDoyMC40OTUxMzgyWiANCj4gPiA+IEVSUk9SIC0gRUZJ IGNvZGluZyBzdHlsZSBlcnJvciAyMDIxLTA2LTIxVDAxOjQ0OjIwLjQ5NjAxNDlaIEVSUk9SIA0K PiA+ID4gLSAqRXJyb3IgY29kZTogNDAwMiAyMDIxLTA2LTIxVDAxOjQ0OjIwLjQ5NjExNjFaIEVS Uk9SIC0gKkZ1bmN0aW9uIA0KPiA+ID4gaGVhZGVyIGRvZXNuJ3QgZXhpc3QgMjAyMS0wNi0yMVQw MTo0NDoyMC40OTY2Njc0WiBFUlJPUiAtICpmaWxlOg0KPiA+ID4NCj4gPg0KPiAvL2hvbWUvdnN0 cy93b3JrLzEvcy9NZGVNb2R1bGVQa2cvVW5pdmVyc2FsL1JlZ3VsYXJFeHByZXNzaW9uRHhlL09u aQ0KPiA+ID4gZ3VydW1hVWVmaVBvcnQuaA0KPiA+ID4gMjAyMS0wNi0yMVQwMTo0NDoyMC40OTcz MjMyWiBFUlJPUiAtICpMaW5lIG51bWJlcjogOTAgDQo+ID4gPiAyMDIxLTA2LTIxVDAxOjQ0OjIw LjQ5NzgzMzdaIEVSUk9SIC0gKkZ1bmN0aW9uIFtmcmVlXSBoYXMgTk8NCj4gY29tbWVudA0KPiA+ ID4gaW1tZWRpYXRlbHkgcHJlY2VkaW5nIGl0Lg0KPiA+ID4gMjAyMS0wNi0yMVQwMTo0NDoyMC40 OTgxMjU3WiBFUlJPUiAtIDIwMjEtMDYtMjFUMDE6NDQ6MjAuNDk4MzgwNVogDQo+ID4gPiBFUlJP UiAtIEVGSSBjb2Rpbmcgc3R5bGUgZXJyb3IgMjAyMS0wNi0yMVQwMTo0NDoyMC40OTg2NTM3WiBF UlJPUiANCj4gPiA+IC0gKkVycm9yIGNvZGU6IDUwMDEgMjAyMS0wNi0yMVQwMTo0NDoyMC40OTg5 NTA4WiBFUlJPUiAtICpSZXR1cm4gDQo+ID4gPiB0eXBlIG9mIGEgZnVuY3Rpb24gc2hvdWxkIGV4 aXN0IGFuZCBpbiB0aGUgZmlyc3QgbGluZSANCj4gPiA+IDIwMjEtMDYtMjFUMDE6NDQ6MjAuNDk5 NzA0M1ogRVJST1IgLQ0KPiA+ID4gKmZpbGU6DQo+ID4gPg0KPiA+DQo+IC8vaG9tZS92c3RzL3dv cmsvMS9zL01kZU1vZHVsZVBrZy9Vbml2ZXJzYWwvUmVndWxhckV4cHJlc3Npb25EeGUvT25pDQo+ ID4gPiBndXJ1bWFVZWZpUG9ydC5oDQo+ID4gPiAyMDIxLTA2LTIxVDAxOjQ0OjIwLjQ5OTc4MDRa IEVSUk9SIC0gKkxpbmUgbnVtYmVyOiA5MCANCj4gPiA+IDIwMjEtMDYtMjFUMDE6NDQ6MjAuNDk5 ODMzMVogRVJST1IgLSAqW2ZyZWVdIFJldHVybiBUeXBlIHNob3VsZCANCj4gPiA+IGFwcGVhciBv biBpdHMgb3duIGxpbmUgMjAyMS0wNi0yMVQwMTo0NDoyMC40OTk4NzYyWiBFUlJPUiAtIA0KPiA+ ID4gMjAyMS0wNi0yMVQwMTo0NDoyMC40OTk5MTc1WiBFUlJPUiAtIEVGSSBjb2Rpbmcgc3R5bGUg ZXJyb3IgDQo+ID4gPiAyMDIxLTA2LTIxVDAxOjQ0OjIwLjUwMTczNTFaIEVSUk9SIC0gKkVycm9y IGNvZGU6IDUwMDMgDQo+ID4gPiAyMDIxLTA2LTIxVDAxOjQ0OjIwLjUwMjMyODJaIEVSUk9SIC0g KkZ1bmN0aW9uIG5hbWUgc2hvdWxkIGJlIGxlZnQgDQo+ID4gPiBqdXN0aWZpZWQsIGZvbGxvd2Vk IGJ5IHRoZSBiZWdpbm5pbmcgb2YgdGhlIHBhcmFtZXRlciBsaXN0LCB3aXRoIA0KPiA+ID4gdGhl IGNsb3NpbmcgcGFyZW50aGVzaXMgb24gaXRzIG93biBsaW5lLCBpbmRlbnRlZCB0d28gc3BhY2Vz IA0KPiA+ID4gMjAyMS0wNi0yMVQwMTo0NDoyMC41MDI0OTMxWiBFUlJPUiAtICpmaWxlOg0KPiA+ ID4NCj4gPg0KPiAvL2hvbWUvdnN0cy93b3JrLzEvcy9NZGVNb2R1bGVQa2cvVW5pdmVyc2FsL1Jl Z3VsYXJFeHByZXNzaW9uRHhlL09uaQ0KPiA+ID4gZ3VydW1hVWVmaVBvcnQuYw0KPiA+ID4gMjAy MS0wNi0yMVQwMTo0NDoyMC41MDI1ODE4WiBFUlJPUiAtICpMaW5lIG51bWJlcjogOTkgDQo+ID4g PiAyMDIxLTA2LTIxVDAxOjQ0OjIwLjUwMjY5NjBaIEVSUk9SIC0gKkZ1bmN0aW9uIG5hbWUgW2Zy ZWVdIHNob3VsZCANCj4gPiA+IGFwcGVhciBhdCB0aGUgc3RhcnQgb2YgYSBsaW5lIDIwMjEtMDYt MjFUMDE6NDQ6MjAuNTAyNzUzM1ogRVJST1IgLSANCj4gPiA+IDIwMjEtMDYtMjFUMDE6NDQ6MjAu NTAyNzk4MlogRVJST1IgLSBFRkkgY29kaW5nIHN0eWxlIGVycm9yIA0KPiA+ID4gMjAyMS0wNi0y MVQwMTo0NDoyMC41MDI4NDU0WiBFUlJPUiAtICpFcnJvciBjb2RlOiA1MDAzIA0KPiA+ID4gMjAy MS0wNi0yMVQwMTo0NDoyMC41MDI5Mjc5WiBFUlJPUiAtICpGdW5jdGlvbiBuYW1lIHNob3VsZCBi ZSBsZWZ0IA0KPiA+ID4ganVzdGlmaWVkLCBmb2xsb3dlZCBieSB0aGUgYmVnaW5uaW5nIG9mIHRo ZSBwYXJhbWV0ZXIgbGlzdCwgd2l0aCANCj4gPiA+IHRoZSBjbG9zaW5nIHBhcmVudGhlc2lzIG9u IGl0cyBvd24gbGluZSwgaW5kZW50ZWQgdHdvIHNwYWNlcyANCj4gPiA+IDIwMjEtMDYtMjFUMDE6 NDQ6MjAuNTAzMDE3N1ogRVJST1IgLSAqZmlsZToNCj4gPiA+DQo+ID4NCj4gLy9ob21lL3ZzdHMv d29yay8xL3MvTWRlTW9kdWxlUGtnL1VuaXZlcnNhbC9SZWd1bGFyRXhwcmVzc2lvbkR4ZS9PbmkN Cj4gPiA+IGd1cnVtYVVlZmlQb3J0LmgNCj4gPiA+IDIwMjEtMDYtMjFUMDE6NDQ6MjAuNTAzMDc3 MFogRVJST1IgLSAqTGluZSBudW1iZXI6IDkwIA0KPiA+ID4gMjAyMS0wNi0yMVQwMTo0NDoyMC41 MDMxMzMwWiBFUlJPUiAtICpGdW5jdGlvbiBuYW1lIFtmcmVlXSBzaG91bGQgDQo+ID4gPiBhcHBl YXIgYXQgdGhlIHN0YXJ0IG9mIGEgbGluZSAyMDIxLTA2LTIxVDAxOjQ0OjIwLjUwMzE3ODhaIEVS Uk9SIC0gDQo+ID4gPiAyMDIxLTA2LTIxVDAxOjQ0OjIwLjUwMzIyNDBaIEVSUk9SIC0gRUZJIGNv ZGluZyBzdHlsZSBlcnJvciANCj4gPiA+IDIwMjEtMDYtMjFUMDE6NDQ6MjAuNTAzMjcwNlogRVJS T1IgLSAqRXJyb3IgY29kZTogNTAwMyANCj4gPiA+IDIwMjEtMDYtMjFUMDE6NDQ6MjAuNTAzMzU1 NFogRVJST1IgLSAqRnVuY3Rpb24gbmFtZSBzaG91bGQgYmUgbGVmdCANCj4gPiA+IGp1c3RpZmll ZCwgZm9sbG93ZWQgYnkgdGhlIGJlZ2lubmluZyBvZiB0aGUgcGFyYW1ldGVyIGxpc3QsIHdpdGgg DQo+ID4gPiB0aGUgY2xvc2luZyBwYXJlbnRoZXNpcyBvbiBpdHMgb3duIGxpbmUsIGluZGVudGVk IHR3byBzcGFjZXMgDQo+ID4gPiAyMDIxLTA2LTIxVDAxOjQ0OjIwLjUwMzY0NzBaIEVSUk9SIC0g KmZpbGU6DQo+ID4gPg0KPiA+DQo+IC8vaG9tZS92c3RzL3dvcmsvMS9zL01kZU1vZHVsZVBrZy9V bml2ZXJzYWwvUmVndWxhckV4cHJlc3Npb25EeGUvT25pDQo+ID4gPiBndXJ1bWFVZWZpUG9ydC5o DQo+ID4gPiAyMDIxLTA2LTIxVDAxOjQ0OjIwLjUwNDAwNjNaIEVSUk9SIC0gKkxpbmUgbnVtYmVy OiA5MCANCj4gPiA+IDIwMjEtMDYtMjFUMDE6NDQ6MjAuNTA0MzUxM1ogRVJST1IgLSAqUGFyYW1l dGVyIHB0ciBzaG91bGQgYmUgaW4gDQo+ID4gPiBpdHMgb3duIGxpbmUuDQo+ID4gPiAyMDIxLTA2 LTIxVDAxOjQ0OjIwLjUwNDY3ODJaIEVSUk9SIC0gMjAyMS0wNi0yMVQwMTo0NDoyMC41MDQ5OTA5 WiANCj4gPiA+IEVSUk9SIC0gRUZJIGNvZGluZyBzdHlsZSBlcnJvciAyMDIxLTA2LTIxVDAxOjQ0 OjIwLjUwNTM1NzFaIEVSUk9SIA0KPiA+ID4gLSAqRXJyb3IgY29kZTogNTAwMyAyMDIxLTA2LTIx VDAxOjQ0OjIwLjUwNTc0MTVaIEVSUk9SIC0gKkZ1bmN0aW9uIA0KPiA+ID4gbmFtZSBzaG91bGQg YmUgbGVmdCBqdXN0aWZpZWQsIGZvbGxvd2VkIGJ5IHRoZSBiZWdpbm5pbmcgb2YgdGhlIA0KPiA+ ID4gcGFyYW1ldGVyIGxpc3QsIHdpdGggdGhlIGNsb3NpbmcgcGFyZW50aGVzaXMgb24gaXRzIG93 biBsaW5lLCANCj4gPiA+IGluZGVudGVkIHR3byBzcGFjZXMgMjAyMS0wNi0yMVQwMTo0NDoyMC41 MDY2MjAwWiBFUlJPUiAtICpmaWxlOg0KPiA+ID4NCj4gPg0KPiAvL2hvbWUvdnN0cy93b3JrLzEv cy9NZGVNb2R1bGVQa2cvVW5pdmVyc2FsL1JlZ3VsYXJFeHByZXNzaW9uRHhlL09uaQ0KPiA+ID4g Z3VydW1hVWVmaVBvcnQuaA0KPiA+ID4gMjAyMS0wNi0yMVQwMTo0NDoyMC41MDY2ODMxWiBFUlJP UiAtICpMaW5lIG51bWJlcjogOTAgDQo+ID4gPiAyMDIxLTA2LTIxVDAxOjQ0OjIwLjUwNjczNzha IEVSUk9SIC0gKicpJyBzaG91bGQgYmUgb24gYSBuZXcgbGluZSANCj4gPiA+IGFuZCBpbmRlbnRl ZCB0d28gc3BhY2VzIDIwMjEtMDYtMjFUMDE6NDQ6MjAuNTA2Nzc5OVogRVJST1IgLSANCj4gPiA+ IDIwMjEtMDYtMjFUMDE6NDQ6MjAuNTA2ODIxMVogRVJST1IgLSBFRkkgY29kaW5nIHN0eWxlIGVy cm9yIA0KPiA+ID4gMjAyMS0wNi0yMVQwMTo0NDoyMC41MDcwNjAwWiBFUlJPUiAtICpFcnJvciBj b2RlOiA3MDAxIA0KPiA+ID4gMjAyMS0wNi0yMVQwMTo0NDoyMC41MDc0NDQ4WiBFUlJPUiAtICpU aGVyZSBzaG91bGQgYmUgbm8gdXNlIG9mIA0KPiA+ID4gaW50LCB1bnNpZ25lZCwgY2hhciwgdm9p ZCwgbG9uZyBpbiBhbnkgLmMsIC5oIG9yIC5hc2wgZmlsZXMgDQo+ID4gPiAyMDIxLTA2LTIxVDAx OjQ0OjIwLjUwNzc5NjVaIEVSUk9SIC0gKmZpbGU6DQo+ID4gPg0KPiA+DQo+IC8vaG9tZS92c3Rz L3dvcmsvMS9zL01kZU1vZHVsZVBrZy9Vbml2ZXJzYWwvUmVndWxhckV4cHJlc3Npb25EeGUvT25p DQo+ID4gPiBndXJ1bWFVZWZpUG9ydC5jDQo+ID4gPiAyMDIxLTA2LTIxVDAxOjQ0OjIwLjUwODEy MjJaIEVSUk9SIC0gKkxpbmUgbnVtYmVyOiAxMTAgDQo+ID4gPiAyMDIxLTA2LTIxVDAxOjQ0OjIw LjUwODQyNDhaIEVSUk9SIC0gKlBhcmFtZXRlciBwdHIgDQo+ID4gPiAyMDIxLTA2LTIxVDAxOjQ0 OjIwLjUwOTAxMTVaIEVSUk9SIC0gMjAyMS0wNi0yMVQwMTo0NDoyMC41MDkwNTE3WiANCj4gPiA+ IEVSUk9SIC0gRUZJIGNvZGluZyBzdHlsZSBlcnJvciAyMDIxLTA2LTIxVDAxOjQ0OjIwLjUwOTA5 MjNaIEVSUk9SIA0KPiA+ID4gLSAqRXJyb3IgY29kZTogNzAwMSAyMDIxLTA2LTIxVDAxOjQ0OjIw LjUwOTM0ODFaIEVSUk9SIC0gKlRoZXJlDQo+IHNob3VsZA0KPiA+ID4gYmUgbm8gdXNlIG9mIGlu dCwgdW5zaWduZWQsIGNoYXIsIHZvaWQsIGxvbmcgaW4gYW55IC5jLCAuaCBvciAuYXNsIA0KPiA+ ID4gZmlsZXMgMjAyMS0wNi0yMVQwMTo0NDoyMC41MDk2Mzg3WiBFUlJPUiAtICpmaWxlOg0KPiA+ ID4NCj4gPg0KPiAvL2hvbWUvdnN0cy93b3JrLzEvcy9NZGVNb2R1bGVQa2cvVW5pdmVyc2FsL1Jl Z3VsYXJFeHByZXNzaW9uRHhlL09uaQ0KPiA+ID4gZ3VydW1hVWVmaVBvcnQuaA0KPiA+ID4gMjAy MS0wNi0yMVQwMTo0NDoyMC41MDk5NjU4WiBFUlJPUiAtICpMaW5lIG51bWJlcjogOTAgDQo+ID4g PiAyMDIxLTA2LTIxVDAxOjQ0OjIwLjUxMDMwMDhaIEVSUk9SIC0gKmZyZWUgUmV0dXJuIHR5cGUg dm9pZCANCj4gPiA+IDIwMjEtMDYtMjFUMDE6NDQ6MjAuNTEwNTg3OFogRVJST1IgLSAyMDIxLTA2 LTIxVDAxOjQ0OjIwLjUxMDg1MzdaIA0KPiA+ID4gRVJST1IgLSBFRkkgY29kaW5nIHN0eWxlIGVy cm9yIDIwMjEtMDYtMjFUMDE6NDQ6MjAuNTExMTYzMFogRVJST1IgDQo+ID4gPiAtICpFcnJvciBj b2RlOiA3MDAxIDIwMjEtMDYtMjFUMDE6NDQ6MjAuNTExNTA4M1ogRVJST1IgLSAqVGhlcmUNCj4g c2hvdWxkDQo+ID4gPiBiZSBubyB1c2Ugb2YgaW50LCB1bnNpZ25lZCwgY2hhciwgdm9pZCwgbG9u ZyBpbiBhbnkgLmMsIC5oIG9yIC5hc2wgDQo+ID4gPiBmaWxlcyAyMDIxLTA2LTIxVDAxOjQ0OjIw LjUxMTg2MDBaIEVSUk9SIC0gKmZpbGU6DQo+ID4gPg0KPiA+DQo+IC8vaG9tZS92c3RzL3dvcmsv MS9zL01kZU1vZHVsZVBrZy9Vbml2ZXJzYWwvUmVndWxhckV4cHJlc3Npb25EeGUvT25pDQo+ID4g PiBndXJ1bWFVZWZpUG9ydC5oDQo+ID4gPiAyMDIxLTA2LTIxVDAxOjQ0OjIwLjUxMjYxODlaIEVS Uk9SIC0gKkxpbmUgbnVtYmVyOiA5MCANCj4gPiA+IDIwMjEtMDYtMjFUMDE6NDQ6MjAuNTE0MjEw MFogRVJST1IgLSAqUGFyYW1ldGVyIHB0ciANCj4gPiA+IDIwMjEtMDYtMjFUMDE6NDQ6MjAuNTE0 MjU3NFogRVJST1IgLSAyMDIxLTA2LTIxVDAxOjQ0OjIwLjUxNDI5NzlaIA0KPiA+ID4gRVJST1Ig LSBFRkkgY29kaW5nIHN0eWxlIGVycm9yIDIwMjEtMDYtMjFUMDE6NDQ6MjAuNTE0MzQyOVogRVJS T1IgDQo+ID4gPiAtICpFcnJvciBjb2RlOiA4MDA1IDIwMjEtMDYtMjFUMDE6NDQ6MjAuNTE0NDMz MlogRVJST1IgLSAqVmFyaWFibGUgDQo+ID4gPiBuYW1lIGRvZXMgbm90IGZvbGxvdyB0aGUNCj4g PiA+IHJ1bGVzOiAxLiBGaXJzdCBjaGFyYWN0ZXIgc2hvdWxkIGJlIHVwcGVyIGNhc2UgMi4gTXVz dCBjb250YWluIA0KPiA+ID4gbG93ZXIgY2FzZSBjaGFyYWN0ZXJzIDMuIE5vIHdoaXRlIHNwYWNl IGNoYXJhY3RlcnMgNC4gR2xvYmFsIA0KPiA+ID4gdmFyaWFibGUgbmFtZSBtdXN0IHN0YXJ0IHdp dGggYSAnZycNCj4gPiA+IDIwMjEtMDYtMjFUMDE6NDQ6MjAuNTE0NTQxNlogRVJST1IgLSAqZmls ZToNCj4gPiA+DQo+ID4NCj4gLy9ob21lL3ZzdHMvd29yay8xL3MvTWRlTW9kdWxlUGtnL1VuaXZl cnNhbC9SZWd1bGFyRXhwcmVzc2lvbkR4ZS9PbmkNCj4gPiA+IGd1cnVtYVVlZmlQb3J0LmgNCj4g PiA+IDIwMjEtMDYtMjFUMDE6NDQ6MjAuNTE0NjA1MFogRVJST1IgLSAqTGluZSBudW1iZXI6IDkw IA0KPiA+ID4gMjAyMS0wNi0yMVQwMTo0NDoyMC41MTQ2NTU1WiBFUlJPUiAtICpQYXJhbWV0ZXIg W3B0cl0gTk9UIGZvbGxvdyANCj4gPiA+IG5hbWluZyBjb252ZW50aW9uLg0KPiA+ID4gMjAyMS0w Ni0yMVQwMTo0NDoyMC41MTQ2OTYzWiBFUlJPUiAtIDIwMjEtMDYtMjFUMDE6NDQ6MjAuNTE0NzM2 NlogDQo+ID4gPiBFUlJPUiAtIEVGSSBjb2Rpbmcgc3R5bGUgZXJyb3IgMjAyMS0wNi0yMVQwMTo0 NDoyMC41MTQ3Nzk0WiBFUlJPUiANCj4gPiA+IC0gKkVycm9yIGNvZGU6IDgwMDYgMjAyMS0wNi0y MVQwMTo0NDoyMC41MTQ4NTYyWiBFUlJPUiAtICpGdW5jdGlvbiANCj4gPiA+IG5hbWUgZG9lcyBu b3QgZm9sbG93IHRoZQ0KPiA+ID4gcnVsZXM6IDEuIEZpcnN0IGNoYXJhY3RlciBzaG91bGQgYmUg dXBwZXIgY2FzZSAyLiBNdXN0IGNvbnRhaW4gDQo+ID4gPiBsb3dlciBjYXNlIGNoYXJhY3RlcnMg My4gTm8gd2hpdGUgc3BhY2UgY2hhcmFjdGVycyANCj4gPiA+IDIwMjEtMDYtMjFUMDE6NDQ6MjAu NTE0OTM5OVogRVJST1IgLSAqZmlsZToNCj4gPiA+DQo+ID4NCj4gLy9ob21lL3ZzdHMvd29yay8x L3MvTWRlTW9kdWxlUGtnL1VuaXZlcnNhbC9SZWd1bGFyRXhwcmVzc2lvbkR4ZS9PbmkNCj4gPiA+ IGd1cnVtYVVlZmlQb3J0LmMNCj4gPiA+IDIwMjEtMDYtMjFUMDE6NDQ6MjAuNTE0OTkzMlogRVJS T1IgLSAqTGluZSBudW1iZXI6IDk5IA0KPiA+ID4gMjAyMS0wNi0yMVQwMTo0NDoyMC41MTUwNDQ1 WiBFUlJPUiAtICpUaGUgZnVuY3Rpb24gbmFtZSBbZnJlZV0gDQo+ID4gPiBkb2VzIG5vdCBmb2xs b3cgdGhlIHJ1bGVzIDIwMjEtMDYtMjFUMDE6NDQ6MjAuNTE1NTQ3MFogRVJST1IgLSANCj4gPiA+ IC0tLT5UZXN0DQo+ID4gPiBGYWlsZWQ6IEVjY0NoZWNrIFRlc3QgTk8tVEFSR0VUIHJldHVybmVk IDENCj4gPiA+DQo+ID4gPiBUaGVzZSBhcmUgYWxsIChvciBtb3N0bHkpIHJlbGF0ZWQgdG8gcHJl ZXhpc3RlbnQgY29kZSwgc28gSSB0aGluayANCj4gPiA+IHRoZSBFY2NDaGVjayBwbHVnaW4gY29u ZmlnIHNob3VsZCBiZSB1cGRhdGVkIGluIE1kZU1vZHVsZVBrZywgdG8gDQo+ID4gPiBwZXJtaXQg YW4gZXhjZXB0aW9uIGZvciB0aGVzZSBmaWxlcy4NCj4gPiA+DQo+ID4gPiBGb3Igbm93LCBJJ3Zl IGNsb3NlZCA8aHR0cHM6Ly9naXRodWIuY29tL3RpYW5vY29yZS9lZGsyL3B1bGwvMTczNT4NCj4g PiA+IHdpdGhvdXQgbWVyZ2luZyBpdC4NCj4gPiA+DQo+ID4gPiBUaGFua3MNCj4gPiA+IExhc3ps bw0KPiA+ID4NCj4gPiA+DQo+ID4gPg0KPiA+ID4NCj4gPiA+DQo+ID4NCj4gPg0KPiANCj4gDQo+ IA0KPiANCj4gDQo+IA0KPiANCj4gDQo+IA0KPiANCj4gDQo+IA0KDQoNCg0KDQoNCg0KDQoNCg==