From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by mx.groups.io with SMTP id smtpd.web08.1307.1663972827883903630 for ; Fri, 23 Sep 2022 15:40:28 -0700 Authentication-Results: mx.groups.io; dkim=fail reason="unable to parse pub key" header.i=@intel.com header.s=intel header.b=NUuZGwWu; spf=pass (domain: intel.com, ip: 192.55.52.115, mailfrom: jiewen.yao@intel.com) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1663972827; x=1695508827; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=P6S4hNgZf0ScIjwnb61ItXemw1O3wi6tfLMNraem+OU=; b=NUuZGwWujrae4ge2jhlLtZuqH6t7YJDDCL6v1d1F2xJpFuBaJIUzHbJS glSIV5bjufevhYGTl6dFlDtXA6oxXdHErKFVVtsLAp/y8umcVCTRfW5qu uF9uC959SEhcdJV/2WqWDGphdY/zhd/FRhHIIaLa6jQOIO7GxEIUP0+LT QYoLCg46l8ykvDtYf5tgb4cE5cElIb2wCs2aVxxn/b2KOloXvuA4iPM6f zRR8Em5objn3iweGej12J6us8K5wczZxZ94DQSA//eiam4QDVwxT8vfnk W98HTPlCD26evkKIr7UrcN2B7vOnEVK3Xn0FbNeV20puOt+vBR/6dunzD w==; X-IronPort-AV: E=McAfee;i="6500,9779,10479"; a="300693094" X-IronPort-AV: E=Sophos;i="5.93,340,1654585200"; d="scan'208";a="300693094" Received: from orsmga006.jf.intel.com ([10.7.209.51]) by fmsmga103.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 23 Sep 2022 15:40:27 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.93,340,1654585200"; d="scan'208";a="598042268" Received: from orsmsx601.amr.corp.intel.com ([10.22.229.14]) by orsmga006.jf.intel.com with ESMTP; 23 Sep 2022 15:40:26 -0700 Received: from orsmsx609.amr.corp.intel.com (10.22.229.22) by ORSMSX601.amr.corp.intel.com (10.22.229.14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.31; Fri, 23 Sep 2022 15:40:26 -0700 Received: from orsmsx611.amr.corp.intel.com (10.22.229.24) by ORSMSX609.amr.corp.intel.com (10.22.229.22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.31; Fri, 23 Sep 2022 15:40:25 -0700 Received: from ORSEDG602.ED.cps.intel.com (10.7.248.7) by orsmsx611.amr.corp.intel.com (10.22.229.24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.31 via Frontend Transport; Fri, 23 Sep 2022 15:40:25 -0700 Received: from NAM10-MW2-obe.outbound.protection.outlook.com (104.47.55.105) by edgegateway.intel.com (134.134.137.103) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2375.31; Fri, 23 Sep 2022 15:40:25 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=hdn3XPmPSdUaw1a73CNYeSv4/37e3fKTCggyKMo7f3q3WAZdOOevtcvMFGtuGExpEQTxN1IgKvA5pcdCp3FvMB0bv80ZVOfpWpJQDtsvm2cVtCJkiAbfqN/Cskcztou/9s/d8IyBbGHA7IV2mX8EZejIyGiqK/zzDNErwhJfOCDpvssvEk+KKJBL6R/l+HPr82jNQT6015e8lt1hOQ+gVsRQ2JiAMOj+29G+VTsjJ4LqxRpeFxBGoCTJ3pOk/+H3JzDpLox6i+6FWpnPh9q6nw3+lNEUg3XsdXHIpdd+Thzkb0WnVjNOvnM4aHNG0rGPm91npKr2KwUDtCz9EBS7HA== 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-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=P6S4hNgZf0ScIjwnb61ItXemw1O3wi6tfLMNraem+OU=; b=CW/6/DdtSNrpT+aW3oW9XARyFY0QyXv2e54rv/+vYRXLsDZ+sdUYYhlBXCrbYYL6Cb2gagkzMW3jMrMcYm73yTjJLri/i1VLCTfJPy0SuEp2JbQwiiOJcQ/lkjYehduV4HmzYJmdEVhpyQTfFdf+FI3Q2VTiw+LpinRozZqmzZdQDIdyQ1S+7kkLTB4++GhDlhy+CsaaTWel8fPTYPphiHCnIymIbZNOXiUjINmz2tmKT34T1xHMJJHdHHv0UrvI8rJPWF0ErROEPF7kS89FMt731l0pXFhIFOyA/0TKh7is6/swF891arlix63fR4aLkHEdnOfVQiebisoD8rrXcw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none Received: from MW4PR11MB5872.namprd11.prod.outlook.com (2603:10b6:303:169::14) by PH0PR11MB5609.namprd11.prod.outlook.com (2603:10b6:510:e0::24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5654.20; Fri, 23 Sep 2022 22:40:22 +0000 Received: from MW4PR11MB5872.namprd11.prod.outlook.com ([fe80::c17d:f1c9:e958:b5e]) by MW4PR11MB5872.namprd11.prod.outlook.com ([fe80::c17d:f1c9:e958:b5e%6]) with mapi id 15.20.5654.020; Fri, 23 Sep 2022 22:40:22 +0000 From: "Yao, Jiewen" To: "Li, Yi1" , "Kinney, Michael D" , "devel@edk2.groups.io" , "Chen, Christine" , "Feng, Bob C" CC: "Wang, Jian J" , "Lu, Xiaoyu1" , "Jiang, Guomin" , "Luo, Heng" Subject: Re: [edk2-devel] [PATCH V2 1/3] CryptoPkg: Add EC support Thread-Topic: [edk2-devel] [PATCH V2 1/3] CryptoPkg: Add EC support Thread-Index: AQHYzXZL86iJ9CBkxEGvj8AqEK//aK3qEX6AgACmCACAABwHgIAAlmoAgAClcoCAAEdAAIAAKBMAgAAc84CAAQKCwA== Date: Fri, 23 Sep 2022 22:40:22 +0000 Message-ID: References: <9dcccc674996fa3fdcb8858e3609437e66ce82ac.1663735439.git.yi1.li@intel.com> In-Reply-To: Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-version: 11.6.500.17 dlp-product: dlpe-windows dlp-reaction: no-action authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: MW4PR11MB5872:EE_|PH0PR11MB5609:EE_ x-ms-office365-filtering-correlation-id: eef11b52-99c2-4648-8560-08da9db499a2 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: gru1RRORgmi+zJGfcO9J2Etfrr4wMBCBh/jlbQ3L3x8zq3M+c1mXqSdBRQIEJVKkBoKz6uqdcydnOWPv8jEtbesaCqUDuH+TCh8cMmFjDslnBZfYXcSgKht2t9Jq23noQrLxxKPzVR/Xokti9G3ttH/hdorV9ayYuzWkH3TJxnGo3zYFyRtTP050vy52URLzw74hNsADF0LnxZRG0ajyW3fa3zftGbQK7hjus/GYlIYG/DAOel2s1ayux4EoXe384RVj9lKetXw9UMHAOwIP/YYwOIU5HwjTwObWKUzwHj52n5JKHfKbNE/grIePiOYrVDniMJEYsc69mWpmiodmwmVs7KQ2J5SlwKHBPb56fkoCI2WTBBqLtU6iItUBwCCmJmlM8jTxVRQjhTltXXXdiL+g/F3EjNZcJzqZ+7Uach6mMS/vkGWPft4IKn6mwaiQalRtKsJ565Jup+/rddv5fKRmQdBtvs5oF5wYMgYMOWd4P/8hgrc/jZiWjlLQ3DMJCrcusohRjMb6exER7YWECX0HsLBLT0hgWloBzjuBoL9kM5Xx4Fnfihqtkv3ijydD1VIYmkhpra4fl8Vu5+ZV6WVD1YWy7uNkDwsY/ddmbQIfH4DM1GoNpDdgwQTuqVOezhUZk57Ly9D+CCIMdJEKkc70Z0HWwUkL9Ds2Xxyi7uKSo0oy+bwr97glCmg83JLPVcKW11nKcBhJ5OmNRITvraPJBytT1mtVe/eIIzbhezIrsypL3aIe+Tg1trScz+AyyY82qeb9ldrHjaF4HC+KW8pl3RMxmyYHBknotJf3B/icZzwebb3DFjVgeftD83l1UUyLl7XsIfipObrUr96FGg== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:MW4PR11MB5872.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230022)(136003)(346002)(376002)(396003)(366004)(39860400002)(451199015)(71200400001)(30864003)(316002)(966005)(52536014)(86362001)(5660300002)(4326008)(66476007)(8676002)(41300700001)(76116006)(66556008)(33656002)(66446008)(478600001)(6636002)(8936002)(66946007)(110136005)(54906003)(19627235002)(82960400001)(38070700005)(122000001)(38100700002)(55016003)(107886003)(6506007)(26005)(53546011)(186003)(7696005)(83380400001)(9686003)(64756008)(2906002)(559001)(579004);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?ZGdxMlZ2a3MxRkM1UnNaWWJxR0lWTG0zc0h6ckQvbTRINzRzYnZTVDVWVk5B?= =?utf-8?B?Zkp1aCtURm1hcXE2NjhtaklUSFpkaFhEV3ZLdFN6dGQvNW1pZmh1WkhxYkFz?= =?utf-8?B?YStIRnN6N1dERko2MDltcjd1b0xxOFBJMDlrRTNSYjB4akxzaWp1bFcybHMr?= =?utf-8?B?K3dBNFlJYTYvK0hncjlSWjJUR0lKY2I5U240TG8wNXFTRW94cGRoaDdlNFZW?= =?utf-8?B?UGZ0eGtWZVFNVStrY2NMcXNtajZxekpyV0ljaUdWTm1ZSmRqeElvNHIvSHQz?= =?utf-8?B?VEwyUmRGVmFsNEJYdnJ3cE1oN3NjblIxWFZOcGt1WWM1Rmh2bUdsejNuM0sw?= =?utf-8?B?dUc1RHhwenJ5TEJzODlXcTd0TXk5WVZ1NXRaOC9HKzF6QThZZjVqSWY4QUhy?= =?utf-8?B?ME90cGZLb0hJZFc0b3l5QkVoQ2FBUXNldlVWeGpEOTJ6THRvRFd4VzVON212?= =?utf-8?B?c0dEWWZCK1Zydk1wVEZFSGEwSFBTN0NpcXE4L3lvOHJIWnZIaVNhQ1hqNTRo?= =?utf-8?B?VU5JbVRWYUhKNGJjQ2lRWmZvZWpOTW0ycTJydHNTY1hCalErSllkbTIrTTZ4?= =?utf-8?B?ajhxRWpMckRCS3hRS21aZkxvd08wYStMRHVoNVpQenZqQ0RFcVdKY082Q2VX?= =?utf-8?B?U20wMTRSNDFyTzFvZDJmcnJhL3QvcVE0Y2tCZTkrRVUwQ09sMERtYzR2WVBO?= =?utf-8?B?aDZLQmJFZE5EWW9nbFhEQ1NpNjdqZ3lIVlhxVGVnczJoS2NRMlJKQkhvLzAx?= =?utf-8?B?RWRqVzZ5d2ZEZzkwUTIwRlZJOXNYcFM2ZFFwNHp1Ylp0eFRnQkxQeHZBMVQx?= =?utf-8?B?eW5veHRYSHVFSDNlV2dadEtPeitycDNMMFcxaTNYQ2xiUEdxNE8vSWNlRU1w?= =?utf-8?B?WWNCVXIzWVpTWE5KUGtyZmxQYzFTbWNjWllia0FGYzZyTHhkN3pmMERFRGRR?= =?utf-8?B?NzFTQ1ZSaEl0alg5bXhiZituc0NwNlk3YllTK3pyR0VJR044ZjVJay9zUWtC?= =?utf-8?B?NGY0cXBFZjNvSUVmSW9zdjRJY2ZINHRwc2ptZWNqMUlzb25wM0VMVWRIektF?= =?utf-8?B?Y3M5VWttNXZEamVDRmo1c2lWWWYwalV2cjltbEVON01UWmMvQjVhdWN5YW1Y?= =?utf-8?B?N1pLUFIyK281SzRvUmJpZkh2dWFIL2VZL2VOekRKVGxWUnBvdllUanZ5L2V3?= =?utf-8?B?N2xUdEttZmN2Qi91cEdKVUNLNDZpQStwcCt4R3ZsQ0lBcGtRQlA1T05LL2Rt?= =?utf-8?B?TnBIN0UyY2NCcWFOblZidXlxZUNEZ0RnNW1IcGM0QlVhVXNLN0QvV0NyNmFQ?= =?utf-8?B?ZGtFY2NqejJRb213bTdsTm0wbmluVlBBaUE0bkswUHU5a2pENGYrSGZNUUox?= =?utf-8?B?N3ZxVmpEMkxLUlBHSzYrUzh0MDhFMmxLREhjOENGdWIxRW5JQ0hld01EdS9j?= =?utf-8?B?WUU4NmwvQ093MlZnbm9mRlBWS0dRWHBxL1pqa1NkRmp1VlRrMGpNcUpyV2NT?= =?utf-8?B?b1Rsa2s0RVVVNnlWa0FuY3VHQTFjTXZqa0tJVkZNRkh1aGxyN2hzVWxZY0po?= =?utf-8?B?TWpFRFpsTjBKUUh2dGtqVGhBY0FnMGhGWFJEdTNsNno3aGNLUlZDdThRQkRs?= =?utf-8?B?QU1GUlUyRkYyd0lvbHFwQXl2b0Z4eFJtNDhlb01tQ25xTzZXVkZGM09rYkFn?= =?utf-8?B?V01EMGxWb2h1bUgxWVRBM3Z5VnN4S2RKbElBUTNidm9GY1VRT1pzRGhWZWVY?= =?utf-8?B?Q2s1ZDRPckVqT1FIU1YrR3E0dXZxVm1Dd0ZaVTZLdUlUc1VKaHhEdXlnZnBI?= =?utf-8?B?V2tad0ovV0ExL0MxYXR6UWRFZ3N0TjdlbTQ1b1M5TUI1UlFGZlZxUlN3d1VO?= =?utf-8?B?V0hLdTBucm96QU5mdFR6MUJ0cGVjMENQazdVUVVBc1BnNTZ6eW84R3EwU1ps?= =?utf-8?B?UXh4QmZmOVhLaGdsM2Y3eWNDRWszYUZ5TXlySXFZSXlBdzJLQ0RSNXU5YXVo?= =?utf-8?B?aG12VVZjeERhN0o2c0FWWkdsZFdCU3YxYmlQYWZGcXlXNm54Nitla1NoVzdm?= =?utf-8?B?cFBHaCthemIwV2NtMk1TRDErQnRoV2FMdzlsci84UmhxKy82OWFVOHVZSzY3?= =?utf-8?Q?Ow/VEecDiEtPPAfZjpd9XTqW5?= MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: MW4PR11MB5872.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: eef11b52-99c2-4648-8560-08da9db499a2 X-MS-Exchange-CrossTenant-originalarrivaltime: 23 Sep 2022 22:40:22.3273 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: NOaxZvzmFgSxBbt1b8053qJtBpzPqqgz+pje1QdKVWYbejbfuvO+X5AOaInK2J9cDDXpi8ihafS3wuhbGv1tqQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH0PR11MB5609 Return-Path: jiewen.yao@intel.com X-OriginatorOrg: intel.com Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 SGkgTWlrZQ0KVGhpcyBoYXMgYmVlbiBpbnZlc3RpZ2F0ZWQgYmVmb3JlLCBidXQgd2UgZG9u4oCZ dCBoYXZlIGJldHRlciBzb2x1dGlvbiB0aGFuIFBjZE9wZW5zc2xFY0VuYWJsZWQuDQoNCkdpdmVu IHRoZSBmYWN0IHRoYXQgdGhpcyBQQ0QgaXMgaW50cm9kdWNlZCBiZWZvcmUgKG5vdCBpbiB0aGlz IHBhdGNoIHNldCksIGRvIHlvdSB0aGluayB3ZSBjYW4gbWVyZ2UgdGhpcyBmaXJzdCwgdGhlbiBk byBlbmhhbmNlbWVudCBmb3IgUENEIHJlbGF0ZWQgc3R1ZmYgbGF0ZXI/DQoNCk9yIGlmIHlvdSBo YXZlIGFueSBvdGhlciBpZGVhLCBwbGVhc2UgbGV0IHVzIGtub3cuDQoNClRoYW5rIHlvdQ0KWWFv IEppZXdlbg0KDQo+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+IEZyb206IExpLCBZaTEg PHlpMS5saUBpbnRlbC5jb20+DQo+IFNlbnQ6IEZyaWRheSwgU2VwdGVtYmVyIDIzLCAyMDIyIDM6 MDkgUE0NCj4gVG86IEtpbm5leSwgTWljaGFlbCBEIDxtaWNoYWVsLmQua2lubmV5QGludGVsLmNv bT47DQo+IGRldmVsQGVkazIuZ3JvdXBzLmlvOyBDaGVuLCBDaHJpc3RpbmUgPHl1d2VpLmNoZW5A aW50ZWwuY29tPjsgRmVuZywgQm9iDQo+IEMgPGJvYi5jLmZlbmdAaW50ZWwuY29tPg0KPiBDYzog WWFvLCBKaWV3ZW4gPGppZXdlbi55YW9AaW50ZWwuY29tPjsgV2FuZywgSmlhbiBKDQo+IDxqaWFu Lmoud2FuZ0BpbnRlbC5jb20+OyBMdSwgWGlhb3l1MSA8eGlhb3l1MS5sdUBpbnRlbC5jb20+OyBK aWFuZywNCj4gR3VvbWluIDxndW9taW4uamlhbmdAaW50ZWwuY29tPjsgTHVvLCBIZW5nIDxoZW5n Lmx1b0BpbnRlbC5jb20+DQo+IFN1YmplY3Q6IFJFOiBbZWRrMi1kZXZlbF0gW1BBVENIIFYyIDEv M10gQ3J5cHRvUGtnOiBBZGQgRUMgc3VwcG9ydA0KPiANCj4gSGkgTWlrZSwNCj4gDQo+IEkgZGlk IG1ha2Ugc29tZSBhdHRlbXB0cyB3aXRoIGl0LCBidXQgaXQgZG9lc24ndCB3b3JrLCB0d28gdHJv dWJsZXMgaGVyZToNCj4gDQo+IEJvYiBhbmQgWXV3ZWksIHBsZWFzZSBwb2ludCBvdXQgaWYgSSdt IHdyb25nOg0KPiAxLiBVc2luZyBtZW1iZXIgb2Ygc3RydWN0dXJlIFBDRCBpbiBJTkYgaXNu4oCZ dCBzdXBwb3J0ZWQgYnkgQmFzZXRvb2xzDQo+IGN1cnJlbnRseSwNCj4gQXQgbGVhc3QgaXQgY2Fu bm90IGJlIHVzZWQgYXMgRmVhdHVyZUZsYWcgRXhwcmVzc2lvbi4NCj4gDQo+IDIuIEFzIGZhciBh cyBJIGtub3csIHN0cnVjdHVyZSBQQ0QgYWN0dWFsbHkgaXMgYSBjb25zdCBhcnJheSBpbiBjb2Rl LA0KPiBJIGFmcmFpZCBpdCB3aWxsIG5vdCB3b3JrIGZpbmUgd2l0aCBwcmVjb21waWxlIGJ1dCB3 ZSBkbyBoYXZlIHRoaXMgbmVlZDoNCj4gI2lmICFGaXhlZFBjZEdldEJvb2wgKFBjZE9wZW5zc2xF Y0VuYWJsZWQpDQo+ICMgaWZuZGVmIE9QRU5TU0xfTk9fRUMNCj4gIyAgZGVmaW5lIE9QRU5TU0xf Tk9fRUMNCj4gIyBlbmRpZg0KPiAjZW5kaWYNCj4gDQo+IFRoaXMgaXMgcmVhbGx5IGNhdXNlZCBi eSB0aGUgYmFkIHN0cnVjdHVyZSBvZiBvcGVuc3NsLA0KPiBtYXliZSB3ZSB1c2UgbW9yZSBkZXRh aWxlZCBjb21tZW50cyB0byByZW1pbmQgZGV2ZWxvcGVycyB0byBzeW5jIHRoZQ0KPiB0d28gUENE cz8NCj4gDQo+IFRoYW5rcywNCj4gWWkNCj4gDQo+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0t DQo+IEZyb206IEtpbm5leSwgTWljaGFlbCBEIDxtaWNoYWVsLmQua2lubmV5QGludGVsLmNvbT4N Cj4gU2VudDogRnJpZGF5LCBTZXB0ZW1iZXIgMjMsIDIwMjIgMToyNSBQTQ0KPiBUbzogTGksIFlp MSA8eWkxLmxpQGludGVsLmNvbT47IGRldmVsQGVkazIuZ3JvdXBzLmlvOyBDaGVuLCBDaHJpc3Rp bmUNCj4gPHl1d2VpLmNoZW5AaW50ZWwuY29tPjsgRmVuZywgQm9iIEMgPGJvYi5jLmZlbmdAaW50 ZWwuY29tPjsgS2lubmV5LA0KPiBNaWNoYWVsIEQgPG1pY2hhZWwuZC5raW5uZXlAaW50ZWwuY29t Pg0KPiBDYzogWWFvLCBKaWV3ZW4gPGppZXdlbi55YW9AaW50ZWwuY29tPjsgV2FuZywgSmlhbiBK DQo+IDxqaWFuLmoud2FuZ0BpbnRlbC5jb20+OyBMdSwgWGlhb3l1MSA8eGlhb3l1MS5sdUBpbnRl bC5jb20+OyBKaWFuZywNCj4gR3VvbWluIDxndW9taW4uamlhbmdAaW50ZWwuY29tPg0KPiBTdWJq ZWN0OiBSRTogW2VkazItZGV2ZWxdIFtQQVRDSCBWMiAxLzNdIENyeXB0b1BrZzogQWRkIEVDIHN1 cHBvcnQNCj4gDQo+IEhpIFlpLA0KPiANCj4gSSBhZ3JlZSB0aGVyZSBhcmUgc29tZSBjb21wbGV4 IGludGVyYWN0aW9ucyBpbiB0aGUgb3BlbnNsbCBzb3VyY2VzLg0KPiANCj4gU2luY2UgeW91IGFy ZSBkZWZpbmluZyBhIGZhbWlseSBmb3IgRUMsIGNhbiB3ZSB1c2UgdGhlIEVDIEZhbWlseSAhPSAw IGluc3RlYWQNCj4gb2YNCj4gUGNkT3BlbnNzbEVjRW5hYmxlZCBhbmQgcmVtb3ZlIFBjZE9wZW5z c2xFY0VuYWJsZWQuDQo+IA0KPiBJIHdhbnQgdG8gbWFrZSBzdXJlIGRldmVsb3BlcnMgZG8gbm90 IHJ1biBpbnRvIHN0cmFuZ2UgYnVpbGQgZmFpbHVyZXMgaWYNCj4gdGhleSBkbyBub3Qga2VlcCB0 aGUgMiBkaWZmZXJlbnQgUENEcyBhbGlnbmVkLiAgSSBwcmVmZXIgYSBzaW5nbGUgUENEDQo+IHNl dHRpbmcgdG8gZW5hYmxlIHVzZSBvZiBFQyBzZXJ2aWNlcy4NCj4gDQo+IEkgYWxzbyBub3RpY2Vk IHRoYXQgdGhlIHVzZSBvZiBhIFBDRCBleHByZXNzaW9uIGluIGFuIElORiB0byBzZWxlY3Qgc291 cmNlDQo+IGZpbGVzIGRvZXMgbm90IHdvcmsgaWYgdGhlIFBDRCB2YWx1ZSBpcyBzcGVjaWZpZWQg d2l0aCB0aGUgLS1wY2QgZmxhZyBvbg0KPiB0aGUgYnVpbGQgY29tbWFuZCBsaW5lLiAgVGhpcyBs b29rcyBsaWtlIGEgc2lnbmlmaWNhbnQgYnVnIHdpdGggdGhlIFBDRA0KPiBleHByZXNzaW9uIGlu IGFuIElORiBmaWxlLiAgVGhpcyBhbHNvIG5lZWRzIHRvIGJlIGZpeGVkLg0KPiANCj4gTWlrZQ0K PiANCj4gPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiA+IEZyb206IExpLCBZaTEgPHlp MS5saUBpbnRlbC5jb20+DQo+ID4gU2VudDogVGh1cnNkYXksIFNlcHRlbWJlciAyMiwgMjAyMiA4 OjAyIFBNDQo+ID4gVG86IEtpbm5leSwgTWljaGFlbCBEIDxtaWNoYWVsLmQua2lubmV5QGludGVs LmNvbT47DQo+IGRldmVsQGVkazIuZ3JvdXBzLmlvDQo+ID4gQ2M6IFlhbywgSmlld2VuIDxqaWV3 ZW4ueWFvQGludGVsLmNvbT47IFdhbmcsIEppYW4gSg0KPiA8amlhbi5qLndhbmdAaW50ZWwuY29t PjsgTHUsIFhpYW95dTEgPHhpYW95dTEubHVAaW50ZWwuY29tPjsgSmlhbmcsDQo+ID4gR3VvbWlu IDxndW9taW4uamlhbmdAaW50ZWwuY29tPg0KPiA+IFN1YmplY3Q6IFJFOiBbZWRrMi1kZXZlbF0g W1BBVENIIFYyIDEvM10gQ3J5cHRvUGtnOiBBZGQgRUMgc3VwcG9ydA0KPiA+DQo+ID4gSGkgTWlr ZSwNCj4gPg0KPiA+IDEuIFllcywgaXQgbWF0Y2hlcy4NCj4gPiBCeSBJbnRlbCBzaWRlLCAxMDAr a2IoMjAlKykgRlYgc2l6ZSBpbmNyZWFzZSB3aWxsIGJlIGEgYmlnIGNvbmNlcm4sIHBsZWFzZQ0K PiByZWZlciB0byBhbm90aGVyIGludGVybmFsIGVtYWlsLg0KPiA+DQo+ID4gMi4gQWRkaXRpb25h bCBzaXplIGlzIGNvbWluZyBmcm9tIG1vZHVsZXMgbWF5IGNvbnN1bWVkIEVDIEFQSXMsIGVnLiBU TFMNCj4gUEVNIFg1MDkgIC4uLg0KPiA+DQo+ID4gSWYgd2UgYWRkZWQgRUMgc291cmNlIHRvIE9w ZW5zc2xMaWIuaW5mIGFuZCBkaXNhYmxlZCBtYWNybw0KPiBPUEVOU1NMX05PX0VDLCB0aG9zZSBt b2R1bGVzIHdpbGwgbGluayBFQyBBUElzIGFuZCBpbmNyZWFzZSBiaW5hcnkNCj4gPiBzaXplLA0K PiA+IFRoaXMgYW4gZXhhbXBsZSBmcm9tIHg1MDkveF9wdWJrZXkuYyAsIG90aGVyIG1vZHVsZXMg aXMgc2ltaWxhcjoNCj4gPiAjaWZuZGVmIE9QRU5TU0xfTk9fRUMNCj4gPiBFQ19LRVkgKmQyaV9F Q19QVUJLRVkoRUNfS0VZICoqYSwgY29uc3QgdW5zaWduZWQgY2hhciAqKnBwLCBsb25nDQo+IGxl bmd0aCkNCj4gPiB7DQo+ID4gICAgIEVWUF9QS0VZICpwa2V5Ow0KPiA+ICAgICBFQ19LRVkgKmtl eSA9IE5VTEw7DQo+ID4gICAgIC8vLi4uLiBjYWxsIEVDIGZ1bmN0aW9ucw0KPiA+IH0NCj4gPiAj ZW5kaWYNCj4gPg0KPiA+IElmIHdlIGFkZGVkIEVDIHNvdXJjZSB0byBPcGVuc3NsTGliLmluZiBh bmQgZW5hYmxlIG1hY3JvDQo+IE9QRU5TU0xfTk9fRUMsIEVDIG1vZHVsZSB3aWxsIHRocm93IGJ1 aWxkIGVycm9yLA0KPiA+IFNpbmNlIHNvbWUgRUMgaW50ZXJuYWwgQVBJcyBvciBzdHJ1Y3RzIGhh dmUgYmVlbiBkaXNhYmxlZCBieQ0KPiBPUEVOU1NMX05PX0VDIGJ1dCAgbm90IGFub3RoZXIuDQo+ ID4gVGhpcyBhbiBleGFtcGxlIGZyb20gZWMvZWNfbG9jYWwuaCAsIG90aGVyIGVycm9yIGlzIHNp bWlsYXI6DQo+ID4NCj4gPiAjaWZuZGVmIE9QRU5TU0xfTk9fRUMNCj4gPiB0eXBlZGVmIHN0cnVj dCBlY19ncm91cF9zdCBFQ19HUk9VUDsNCj4gPiB0eXBlZGVmIHN0cnVjdCBlY19wb2ludF9zdCBF Q19QT0lOVDsNCj4gPiAjZW5kaWYNCj4gPg0KPiA+IC8vIGJ1dCB0aGlzIGZ1bmN0aW9uIG5vdCBi ZWVuIGVuY2xvc2VkIGJ5IE9QRU5TU0xfTk9fRUMsIGFuZCB3aWxsDQo+IHRocm93IGJ1aWxkIGVy cm9yDQo+ID4gICAgIGludCAoKnBvaW50X3NldF9KcHJvamVjdGl2ZV9jb29yZGluYXRlc19HRnAp IChjb25zdCBFQ19HUk9VUCAqLA0KPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgRUNfUE9JTlQgKiwgY29uc3QgQklHTlVNICp4LA0KPiA+ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQklHTlVN ICp5LA0KPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgY29uc3QgQklHTlVNICp6LCBCTl9DVFggKik7DQo+ID4NCj4gPiBUbyBhdm9pZCB0aGlzIGFu bm95aW5nIG9wZW5zc2wgZXJyb3IsIHdlIGludHJvZHVjZWQgY29uZGl0aW9uYWwgRUMuDQo+ID4N Cj4gPiBUaGFua3MsDQo+ID4gWWkNCj4gPg0KPiA+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0t DQo+ID4gRnJvbTogS2lubmV5LCBNaWNoYWVsIEQgPG1pY2hhZWwuZC5raW5uZXlAaW50ZWwuY29t Pg0KPiA+IFNlbnQ6IEZyaWRheSwgU2VwdGVtYmVyIDIzLCAyMDIyIDY6NDcgQU0NCj4gPiBUbzog TGksIFlpMSA8eWkxLmxpQGludGVsLmNvbT47IGRldmVsQGVkazIuZ3JvdXBzLmlvOyBLaW5uZXks IE1pY2hhZWwgRA0KPiA8bWljaGFlbC5kLmtpbm5leUBpbnRlbC5jb20+DQo+ID4gQ2M6IFlhbywg Smlld2VuIDxqaWV3ZW4ueWFvQGludGVsLmNvbT47IFdhbmcsIEppYW4gSg0KPiA8amlhbi5qLndh bmdAaW50ZWwuY29tPjsgTHUsIFhpYW95dTEgPHhpYW95dTEubHVAaW50ZWwuY29tPjsgSmlhbmcs DQo+ID4gR3VvbWluIDxndW9taW4uamlhbmdAaW50ZWwuY29tPg0KPiA+IFN1YmplY3Q6IFJFOiBb ZWRrMi1kZXZlbF0gW1BBVENIIFYyIDEvM10gQ3J5cHRvUGtnOiBBZGQgRUMgc3VwcG9ydA0KPiA+ DQo+ID4gSGkgWWksDQo+ID4NCj4gPiBJIGFncmVlIEVDIGlzIGFuIGltcG9ydGFudCBmZWF0dXJl Lg0KPiA+DQo+ID4gSSBkaWQgc29tZSBhbmFseXNpcyBvZiB0aGUgc2l6ZSBpbXBhY3QgdG8gdGhl IENyeXB0b1BrZyBtb2R1bGVzIG9uDQo+IGN1cnJlbnQgdHJ1bmsNCj4gPiB3aXRoIEVDIG9uIGFu ZCBvZmYuIFVuY29tcHJlc3NlZCBzaXplIGlzIGltcG9ydGFudCBmb3IgUEVJIFBoYXNlLiAgRm9y DQo+IERYRSBhbmQNCj4gPiBTTU0gcGhhc2UsIHRoZSBDcnlwdG8gc2VydmljZXMgY2FuIGFsd2F5 cyBiZSBjb21wcmVzc2VkLiAgRnJvbSB0aGUNCj4gdGFibGUgYmVsb3csDQo+ID4gYnVpbGRpbmcg YWxsIHRoZSBFQyBzZXJ2aWNlcyBpbiB0aGUgT3BlbnNzbExpYiBoYXMgbm8gc2l6ZSBpbXBhY3Qg dG8gdGhlDQo+IE5PTkUNCj4gPiBwcm9maWxlIGFuZCB0aGUgTUlOX1BFSSBwcm9maWxlLiAgSXQg aGFzIH4xMDUgS0IgaW1wYWN0IHRvIGNvbXByZXNzZWQNCj4gRFhFL1NNTQ0KPiA+IHVzYWdlcyB0 aGF0IG1heSB1c2UgdGhlIE1JTl9EWEVfTUlOX1NNTSBvciBBTEwgcHJvZmlsZXMuDQo+ID4NCj4g PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuY29tcHJlc3NlZCAgICAgIExa TUEgQ29tcHJlc3NlZA0KPiA+IENQVSAgIENSWVBUT19TRVJWSUNFUyAgICBNb2R1bGUgIEVDPUZB TFNFICBFQz1UUlVFICBFQz1GQUxTRQ0KPiBFQz1UUlVFICBJbmNyZWFzZQ0KPiA+ID09PT0gID09 PT09PT09PT09PT09PSAgPT09PT09PT0gID09PT09PT09ICA9PT09PT09ICA9PT09PT09PQ0KPiA9 PT09PT09ICA9PT09PT09PQ0KPiA+IElBMzIgIE5PTkUgICAgICAgICAgICAgQ3J5cHRvUGVpICAg IDIxNTM2ICAgIDIxNTY4ICAgICAgICAgICAgICAgICAgICAgICAgIDAgS0INCj4gPiBJQTMyICBO T05FICAgICAgICAgICAgIENyeXB0b0R4ZSAgICAyMTYzMiAgICAyMTY5NiAgICAgICAgICAgICAg ICAgICAgICAgICAwIEtCDQo+ID4gSUEzMiAgTk9ORSAgICAgICAgICAgICBDcnlwdG9TbW0gICAg MjI5NzYgICAgMjMwNzIgICAgICAgICAgICAgICAgICAgICAgICAgMCBLQg0KPiA+IElBMzIgIE1J Tl9QRUkgICAgICAgICAgQ3J5cHRvUGVpICAgMjQ4OTkyICAgMjQ5MTIwICAgICAgICAgICAgICAg ICAgICAgICAgIDAgS0INCj4gPiBJQTMyICBNSU5fRFhFX01JTl9TTU0gIENyeXB0b0R4ZSAgIDYz NjY3MiAgIDgyOTU2OCAgICAyODg1MjANCj4gNDAxMDM0ICAgIDExMyBLQg0KPiA+IElBMzIgIE1J Tl9EWEVfTUlOX1NNTSAgQ3J5cHRvU21tICAgNDI2MDQ4ICAgNjAxNDcyICAgIDE5MTUxNw0KPiAy OTYwMjIgICAgMTA1IEtCDQo+ID4gSUEzMiAgQUxMICAgICAgICAgICAgICBDcnlwdG9QZWkgICA0 MjM4NDAgICA1OTg5NzYgICAgMTg5MDQ3ICAgMjkzNzU5ICAgIDEwNA0KPiBLQg0KPiA+IElBMzIg IEFMTCAgICAgICAgICAgICAgQ3J5cHRvRHhlICAgNjQ1MjgwICAgODM4MTQ0ICAgIDI5Mjk1NSAg IDQwNTI3NyAgICAxMTMNCj4gS0INCj4gPiBJQTMyICBBTEwgICAgICAgICAgICAgIENyeXB0b1Nt bSAgIDQ0MTg4OCAgIDYxNzE4NCAgICAxOTg3NzkgICAzMDM2MjggICAgMTA1DQo+IEtCDQo+ID4g WDY0ICAgTk9ORSAgICAgICAgICAgICBDcnlwdG9QZWkgICAgMjk2MzIgICAgMjk2NjQgICAgICAg ICAgICAgICAgICAgICAgICAgMCBLQg0KPiA+IFg2NCAgIE5PTkUgICAgICAgICAgICAgQ3J5cHRv RHhlICAgIDI5NzkyICAgIDI5NzkyICAgICAgICAgICAgICAgICAgICAgICAgIDAgS0INCj4gPiBY NjQgICBOT05FICAgICAgICAgICAgIENyeXB0b1NtbSAgICAzMTI5NiAgICAzMTI5NiAgICAgICAg ICAgICAgICAgICAgICAgICAwIEtCDQo+ID4gWDY0ICAgTUlOX1BFSSAgICAgICAgICBDcnlwdG9Q ZWkgICAzMTA3ODQgICAzMTA4NDggICAgICAgICAgICAgICAgICAgICAgICAgMCBLQg0KPiA+IFg2 NCAgIE1JTl9EWEVfTUlOX1NNTSAgQ3J5cHRvRHhlICAgODA0Mjg4ICAxMDE2MjU2ICAgIDMxMTQz Ng0KPiA0MjY1OTYgICAgMTE1IEtCDQo+ID4gWDY0ICAgTUlOX0RYRV9NSU5fU01NICBDcnlwdG9T bW0gICA1NDM3NzYgICA3MzM5MjAgICAgMjA0NDgzDQo+IDMxMDc3NSAgICAxMDYgS0INCj4gPiBY NjQgICBBTEwgICAgICAgICAgICAgIENyeXB0b1BlaSAgIDU0MDM4NCAgIDczMDI0MCAgICAyMDI0 OTQgICAzMDg0NjcgICAgMTA2DQo+IEtCDQo+ID4gWDY0ICAgQUxMICAgICAgICAgICAgICBDcnlw dG9EeGUgICA4MTUzOTIgIDEwMjcyOTYgICAgMzE2MjI4ICAgNDMxMzIxICAgIDExNQ0KPiBLQg0K PiA+IFg2NCAgIEFMTCAgICAgICAgICAgICAgQ3J5cHRvU21tICAgNTYzNjQ4ICAgNzUzNjk2ICAg IDIxMzQ4OCAgIDMxOTY0NCAgICAxMDYNCj4gS0INCj4gPg0KPiA+IE5PVEU6IEV2ZW4gaWYgbXVs dGlwbGUgbW9kdWxlcyBpbiBhbiBGViB1c2Ugc3RhdGljIGxpbmtpbmcgb2YgQ3J5cHRvIGxpYnMs IGlmDQo+IHRoZQ0KPiA+ICAgICAgIGVudGlyZSBGViBpcyBjb21wcmVzc2VkLCB0aGUgdG90YWwg c2l6ZSBpbXBhY3QgaXMgdHlwaWNhbGx5IHRoZSBzaXplIG9mIGENCj4gPiAgICAgICBzaW5nbGUg aW5zdGFuY2Ugb2YgYSBjb21wcmVzc2VkIENyeXB0b0xpYi4gIFRoZSBzaXplcyBvZiB0aGUgQ3J5 cHRvKg0KPiBtb2R1bGVzDQo+ID4gICAgICAgaW4gdGhlIHRhYmxlIGFib3ZlIHNob3VsZCBiZSBh IGNsb3NlIGFwcHJveGltYXRpb24gb2YgdGhlIHNpemUgaW1wYWN0DQo+IHRvIGENCj4gPiAgICAg ICBzaW5nbGUgRlYuDQo+ID4NCj4gPiBEb2VzIHRoaXMgbWF0Y2ggeW91ciBwcmV2aW91cyBzaXpl IGFuYWx5c2lzPw0KPiA+DQo+ID4gVGhlIGNyaXRpY2FsIGlzc3VlIHRvIGV2YWx1YXRlIGhlcmUg aXMgd2h5IGFkZGluZyB0aGUgRUMgc291cmNlcyB0bw0KPiBPcGVuc2xsTGliLmluZg0KPiA+IGNh dXNlcyB0aGUgbW9kdWxlcyB0aGF0IGRvIG5vdCB1c2UgYW55IEVDIHNlcnZpY2VzIHRvIGdyb3cg YnkgfjEwNUtCLg0KPiBIYXMgYW55DQo+ID4gZGV0YWlsZWQgYW5hbHlzaXMgb2YgdGhlIGZpbmFs IGxpbmtlZCBpbWFnZXMgYmVlbiBwZXJmb3JtZWQgdG8gc2VlIHdoZXJlDQo+IHRoaXMNCj4gPiBh ZGRpdGlvbmFsIHNpemUgaXMgY29taW5nIGZyb20/DQo+ID4NCj4gPiBUaGFua3MsDQo+ID4NCj4g PiBNaWtlDQo+ID4NCj4gPiA+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ID4gPiBGcm9t OiBMaSwgWWkxIDx5aTEubGlAaW50ZWwuY29tPg0KPiA+ID4gU2VudDogVGh1cnNkYXksIFNlcHRl bWJlciAyMiwgMjAyMiA1OjU0IEFNDQo+ID4gPiBUbzogS2lubmV5LCBNaWNoYWVsIEQgPG1pY2hh ZWwuZC5raW5uZXlAaW50ZWwuY29tPjsNCj4gZGV2ZWxAZWRrMi5ncm91cHMuaW87IEtpc2hvcmUs IFNoZWxseSA8c2hlbGx5Lmtpc2hvcmVAaW50ZWwuY29tPg0KPiA+ID4gQ2M6IFlhbywgSmlld2Vu IDxqaWV3ZW4ueWFvQGludGVsLmNvbT47IFdhbmcsIEppYW4gSg0KPiA8amlhbi5qLndhbmdAaW50 ZWwuY29tPjsgTHUsIFhpYW95dTEgPHhpYW95dTEubHVAaW50ZWwuY29tPjsgSmlhbmcsDQo+ID4g PiBHdW9taW4gPGd1b21pbi5qaWFuZ0BpbnRlbC5jb20+DQo+ID4gPiBTdWJqZWN0OiBSRTogW2Vk azItZGV2ZWxdIFtQQVRDSCBWMiAxLzNdIENyeXB0b1BrZzogQWRkIEVDIHN1cHBvcnQNCj4gPiA+ DQo+ID4gPiBIaSBNaWtlLA0KPiA+ID4gSSBoYXZlIGRpZCBzb21lIFBPQyB0aGF0IHNlZW1zIGV4 aXN0ZWQgc3RydWN0dXJlZCBQQ0QgaXMgaGFyZCB0bw0KPiBjb250cm9sIGJpbmFyeSBzaXplLA0K PiA+ID4gSGVyZSBpcyB0aGUgcHJldmlvdXMgZGlzY3Vzc2lvbiBmb3IgcmVmZXJlbmNlLg0KPiA+ ID4gaHR0cHM6Ly9idWd6aWxsYS50aWFub2NvcmUub3JnL3Nob3dfYnVnLmNnaT9pZD0zNjc5DQo+ ID4gPiBodHRwczovL2VkazIuZ3JvdXBzLmlvL2cvZGV2ZWwvdG9waWMvODYyNTc4MTAjODE4MTQN Cj4gPiA+IGh0dHBzOi8vYnVnemlsbGEudGlhbm9jb3JlLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ0 Ng0KPiA+ID4NCj4gPiA+IEFueXdheSBFQyBpcyBhbiBpbXBvcnRhbnQgZmVhdHVyZSB3aGljaCBj b25zdW1lZCBieSB2YXJ5IG1vZGVybg0KPiBzZWN1cml0eSBmZWF0dXJlcyBzdWNoIFdQQTMgLCBT UERNLCBUTFMxLjMgZXRjLg0KPiA+ID4gSG9wZSBpdCBjYW4gYmUgYWRkZWQgdG8gZWRrMiwgYW5k IEkgYW0gZ2xhZCB0byB0YWtlIHRoZSBjb2RlIGFuZCB0ZXN0DQo+IHdvcmsgaWYgdGhlcmUgYXJl IG90aGVyIHdheXMgdG8gY29udHJvbCB0aGUgc2l6ZS4NCj4gPiA+DQo+ID4gPiBUaGFua3MsDQo+ ID4gPiBZaQ0KPiA+ID4NCj4gPiA+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ID4gPiBG cm9tOiBLaW5uZXksIE1pY2hhZWwgRCA8bWljaGFlbC5kLmtpbm5leUBpbnRlbC5jb20+DQo+ID4g PiBTZW50OiBUaHVyc2RheSwgU2VwdGVtYmVyIDIyLCAyMDIyIDExOjU2IEFNDQo+ID4gPiBUbzog TGksIFlpMSA8eWkxLmxpQGludGVsLmNvbT47IGRldmVsQGVkazIuZ3JvdXBzLmlvOyBLaXNob3Jl LCBTaGVsbHkNCj4gPHNoZWxseS5raXNob3JlQGludGVsLmNvbT4NCj4gPiA+IENjOiBZYW8sIEpp ZXdlbiA8amlld2VuLnlhb0BpbnRlbC5jb20+OyBXYW5nLCBKaWFuIEoNCj4gPGppYW4uai53YW5n QGludGVsLmNvbT47IEx1LCBYaWFveXUxIDx4aWFveXUxLmx1QGludGVsLmNvbT47IEppYW5nLA0K PiA+ID4gR3VvbWluIDxndW9taW4uamlhbmdAaW50ZWwuY29tPg0KPiA+ID4gU3ViamVjdDogUkU6 IFtlZGsyLWRldmVsXSBbUEFUQ0ggVjIgMS8zXSBDcnlwdG9Qa2c6IEFkZCBFQyBzdXBwb3J0DQo+ ID4gPg0KPiA+ID4gVGhhdCBjaGFuZ2UgdG8gT3BlbnNzbExpYi5pbmYgc2hvdWxkIG5vdCBoYXZl IGJlZW4gZG9uZSBlaXRoZXIuDQo+ID4gPg0KPiA+ID4gTG9va3MgbGlrZSB0aGlzIEVDIGZlYXR1 cmUgbmVlZHMgbW9yZSBldmFsdWF0aW9uIHRvIGZpdCBpbnRvIHRoZQ0KPiA+ID4gc3RydWN0dXJl ZCBQQ0QgY29udHJvbCBvZiB0aGUgbGliIHNpemVzLg0KPiA+ID4NCj4gPiA+IE1pa2UNCj4gPiA+ DQo+ID4gPiA+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ID4gPiA+IEZyb206IExpLCBZ aTEgPHlpMS5saUBpbnRlbC5jb20+DQo+ID4gPiA+IFNlbnQ6IFdlZG5lc2RheSwgU2VwdGVtYmVy IDIxLCAyMDIyIDc6MTYgUE0NCj4gPiA+ID4gVG86IEtpbm5leSwgTWljaGFlbCBEIDxtaWNoYWVs LmQua2lubmV5QGludGVsLmNvbT47DQo+IGRldmVsQGVkazIuZ3JvdXBzLmlvDQo+ID4gPiA+IENj OiBZYW8sIEppZXdlbiA8amlld2VuLnlhb0BpbnRlbC5jb20+OyBXYW5nLCBKaWFuIEoNCj4gPGpp YW4uai53YW5nQGludGVsLmNvbT47IEx1LCBYaWFveXUxIDx4aWFveXUxLmx1QGludGVsLmNvbT47 IEppYW5nLA0KPiA+ID4gPiBHdW9taW4gPGd1b21pbi5qaWFuZ0BpbnRlbC5jb20+DQo+ID4gPiA+ IFN1YmplY3Q6IFJFOiBbZWRrMi1kZXZlbF0gW1BBVENIIFYyIDEvM10gQ3J5cHRvUGtnOiBBZGQg RUMgc3VwcG9ydA0KPiA+ID4gPg0KPiA+ID4gPiBIaSBNaWtlLA0KPiA+ID4gPiBUaGFua3MgZm9y IHJldmlldy4NCj4gPiA+ID4NCj4gPiA+ID4gRXZlbiBQQ0RfQ1JZUFRPX1NFUlZJQ0VfRkFNSUxZ X0VOQUJMRSBpcyBzZXQgdG8gMCwgQ3J5cHRvRWMuYw0KPiB3aWxsIGFsc28gYmUgY29tcGlsZWQg YW5kIHRocm93IGJ1aWxkIGVycm9yOg0KPiA+ID4gPg0KPiA+ID4gPg0KPiBkOlx3b3Jrc3BhY2Vc dGlhbm9jb3JlXGVkazJcQ3J5cHRvUGtnXExpYnJhcnlcQmFzZUNyeXB0TGliXFBrXENyeXB0RWMu DQo+IGMoNzcpOiBlcnJvciBDMjIyMDogdGhlIGZvbGxvd2luZyB3YXJuaW5nIGlzIHRyZWF0ZWQN Cj4gPiA+IGFzDQo+ID4gPiA+IGFuIGVycm9yDQo+ID4gPiA+ICAgICAgICAgMSBmaWxlKHMpIGNv cGllZC4NCj4gPiA+ID4NCj4gZDpcd29ya3NwYWNlXHRpYW5vY29yZVxlZGsyXENyeXB0b1BrZ1xM aWJyYXJ5XEJhc2VDcnlwdExpYlxQa1xDcnlwdEVjLg0KPiBjKDc3KTogd2FybmluZyBDNDAxMzog J0VDX0dST1VQX25ld19ieV9jdXJ2ZV9uYW1lJw0KPiA+ID4gPiB1bmRlZmluZWQ7IGFzc3VtaW5n IGV4dGVybiByZXR1cm5pbmcgaW50DQo+ID4gPiA+DQo+IGQ6XHdvcmtzcGFjZVx0aWFub2NvcmVc ZWRrMlxDcnlwdG9Qa2dcTGlicmFyeVxCYXNlQ3J5cHRMaWJcUGtcQ3J5cHRFYy4NCj4gYyg3Nyk6 IHdhcm5pbmcgQzQwNDc6ICdyZXR1cm4nOiAndm9pZCAqJyBkaWZmZXJzIGluDQo+ID4gPiA+IGxl dmVscyBvZiBpbmRpcmVjdGlvbiBmcm9tICdpbnQnDQo+ID4gPiA+DQo+IGQ6XHdvcmtzcGFjZVx0 aWFub2NvcmVcZWRrMlxDcnlwdG9Qa2dcTGlicmFyeVxCYXNlQ3J5cHRMaWJcUGtcQ3J5cHRFYy4N Cj4gYygxMDUpOiB3YXJuaW5nIEM0MDEzOiAnRUNfR1JPVVBfZ2V0X2N1cnZlJw0KPiA+IHVuZGVm aW5lZDsNCj4gPiA+ID4gYXNzdW1pbmcgZXh0ZXJuIHJldHVybmluZyBpbnQNCj4gPiA+ID4NCj4g PiA+ID4gSSB0aGluayB0aGUgcm9vdCBjYXVzZSBpcyB0aGF0IHdlIGhhdmUgZW5hYmxlZCBjb25k aXRpb25hbCBlYyBpbg0KPiBPcGVuc3NsTGliLmluZiBiZWZvcmUgYnkgUGNkT3BlbnNzbEVjRW5h YmxlZCwNCj4gPiA+ID4NCj4gPiA+DQo+ID4NCj4gaHR0cHM6Ly9naXRodWIuY29tL3RpYW5vY29y ZS9lZGsyL2Jsb2IvMmMxN2Q2NzZlNDAyZDc1YTNhNjc0NDk5MzQNCj4gMmY3ZGRhY2NmMzg3YmQv Q3J5cHRvUGtnL0xpYnJhcnkvT3BlbnNzbExpYi9PcGVuc3NsTGliLmluZiNMMg0KPiA+ID4gPiAw Mi1MMjM4DQo+ID4gPiA+ICBpZiBQY2RPcGVuc3NsRWNFbmFibGVkIG5vdCB0cnVlLCBhbGwgZWMg ZmlsZXMgd2lsbCBub3QgYmUgY29tcGlsZWQuDQo+ID4gPiA+IFRoaXMgd2lsbCBzYXZlIDIwMCtr YiBtZW1vcnkgb24gcGxhdGZvcm1zIHdoaWNoIHVzZSBkeGUgZHJpdmVyIGJ1dA0KPiBkbyBub3Qg bmVlZCBlYyBmZWF0dXJlLg0KPiA+ID4gPg0KPiA+ID4gPiBTbyBJIGFkZCB0aGlzIFBDRCB0byBC YXNlQ3J5cHRMaWIuaW5mIGFsc28gdG8gYXZvaWQgYnVpbGQgZXJyb3IsIE5vdA0KPiBzdXJlIGlm IHRoZXJlIGlzIGFueSBvdGhlciB3YXksIG90aGVyIGJldHRlciBpZGVhcw0KPiA+IGFyZQ0KPiA+ ID4gPiB3ZWxjb21lLg0KPiA+ID4gPg0KPiA+ID4gPiBUaGFua3MsDQo+ID4gPiA+IFlpDQo+ID4g PiA+DQo+ID4gPiA+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ID4gPiA+IEZyb206IEtp bm5leSwgTWljaGFlbCBEIDxtaWNoYWVsLmQua2lubmV5QGludGVsLmNvbT4NCj4gPiA+ID4gU2Vu dDogVGh1cnNkYXksIFNlcHRlbWJlciAyMiwgMjAyMiAxMjoyMiBBTQ0KPiA+ID4gPiBUbzogZGV2 ZWxAZWRrMi5ncm91cHMuaW87IExpLCBZaTEgPHlpMS5saUBpbnRlbC5jb20+OyBLaW5uZXksIE1p Y2hhZWwNCj4gRCA8bWljaGFlbC5kLmtpbm5leUBpbnRlbC5jb20+DQo+ID4gPiA+IENjOiBZYW8s IEppZXdlbiA8amlld2VuLnlhb0BpbnRlbC5jb20+OyBXYW5nLCBKaWFuIEoNCj4gPGppYW4uai53 YW5nQGludGVsLmNvbT47IEx1LCBYaWFveXUxIDx4aWFveXUxLmx1QGludGVsLmNvbT47IEppYW5n LA0KPiA+ID4gPiBHdW9taW4gPGd1b21pbi5qaWFuZ0BpbnRlbC5jb20+DQo+ID4gPiA+IFN1Ympl Y3Q6IFJFOiBbZWRrMi1kZXZlbF0gW1BBVENIIFYyIDEvM10gQ3J5cHRvUGtnOiBBZGQgRUMgc3Vw cG9ydA0KPiA+ID4gPg0KPiA+ID4gPiBDb21tZW50cyBlbWJlZGRlZCBiZWxvdy4NCj4gPiA+ID4N Cj4gPiA+ID4gTWlrZQ0KPiA+ID4gPg0KPiA+ID4gPiA+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0t LS0tDQo+ID4gPiA+ID4gRnJvbTogZGV2ZWxAZWRrMi5ncm91cHMuaW8gPGRldmVsQGVkazIuZ3Jv dXBzLmlvPiBPbiBCZWhhbGYgT2YNCj4geWkxIGxpDQo+ID4gPiA+ID4gU2VudDogVHVlc2RheSwg U2VwdGVtYmVyIDIwLCAyMDIyIDk6NTUgUE0NCj4gPiA+ID4gPiBUbzogZGV2ZWxAZWRrMi5ncm91 cHMuaW8NCj4gPiA+ID4gPiBDYzogTGksIFlpMSA8eWkxLmxpQGludGVsLmNvbT47IFlhbywgSmll d2VuIDxqaWV3ZW4ueWFvQGludGVsLmNvbT47DQo+IFdhbmcsIEppYW4gSiA8amlhbi5qLndhbmdA aW50ZWwuY29tPjsgTHUsIFhpYW95dTENCj4gPiA+ID4gPiA8eGlhb3l1MS5sdUBpbnRlbC5jb20+ OyBKaWFuZywgR3VvbWluIDxndW9taW4uamlhbmdAaW50ZWwuY29tPg0KPiA+ID4gPiA+IFN1Ympl Y3Q6IFtlZGsyLWRldmVsXSBbUEFUQ0ggVjIgMS8zXSBDcnlwdG9Qa2c6IEFkZCBFQyBzdXBwb3J0 DQo+ID4gPiA+ID4NCj4gPiA+ID4gPiBSRUY6IGh0dHBzOi8vYnVnemlsbGEudGlhbm9jb3JlLm9y Zy9zaG93X2J1Zy5jZ2k/aWQ9MzgyOA0KPiA+ID4gPiA+DQo+ID4gPiA+ID4gVGhpcyBwYXRjaCBp cyB1c2VkIHRvIGFkZCBDcnlwdEVjIGxpYnJhcnksIHdoaWNoIGlzIHdyYXBwZWQNCj4gPiA+ID4g PiBvdmVyIE9wZW5TU0wuDQo+ID4gPiA+ID4NCj4gPiA+ID4gPiBDYzogSmlld2VuIFlhbyA8amll d2VuLnlhb0BpbnRlbC5jb20+DQo+ID4gPiA+ID4gQ2M6IEppYW4gSiBXYW5nIDxqaWFuLmoud2Fu Z0BpbnRlbC5jb20+DQo+ID4gPiA+ID4gQ2M6IFhpYW95dSBMdSA8eGlhb3l1MS5sdUBpbnRlbC5j b20+DQo+ID4gPiA+ID4gQ2M6IEd1b21pbiBKaWFuZyA8Z3VvbWluLmppYW5nQGludGVsLmNvbT4N Cj4gPiA+ID4gPg0KPiA+ID4gPiA+IFNpZ25lZC1vZmYtYnk6IFlpIExpIDx5aTEubGlAaW50ZWwu Y29tPg0KPiA+ID4gPiA+IC0tLQ0KPiA+ID4gPiA+ICBDcnlwdG9Qa2cvSW5jbHVkZS9MaWJyYXJ5 L0Jhc2VDcnlwdExpYi5oICAgICAgfCA0MjQgKysrKysrKysrKw0KPiA+ID4gPiA+ICAuLi4vTGli cmFyeS9CYXNlQ3J5cHRMaWIvQmFzZUNyeXB0TGliLmluZiAgICAgfCAgIDIgKw0KPiA+ID4gPiA+ ICAuLi4vTGlicmFyeS9CYXNlQ3J5cHRMaWIvUGVpQ3J5cHRMaWIuaW5mICAgICAgfCAgIDEgKw0K PiA+ID4gPiA+ICBDcnlwdG9Qa2cvTGlicmFyeS9CYXNlQ3J5cHRMaWIvUGsvQ3J5cHRFYy5jICAg fCA3NjUNCj4gKysrKysrKysrKysrKysrKysrDQo+ID4gPiA+ID4gIC4uLi9MaWJyYXJ5L0Jhc2VD cnlwdExpYi9Qay9DcnlwdEVjTnVsbC5jICAgICB8IDQ5NiArKysrKysrKysrKysNCj4gPiA+ID4g PiAgLi4uL0xpYnJhcnkvQmFzZUNyeXB0TGliL1NtbUNyeXB0TGliLmluZiAgICAgIHwgICAxICsN Cj4gPiA+ID4gPiAgLi4uL0Jhc2VDcnlwdExpYk51bGwvQmFzZUNyeXB0TGliTnVsbC5pbmYgICAg IHwgICAxICsNCj4gPiA+ID4gPiAgLi4uL0xpYnJhcnkvQmFzZUNyeXB0TGliTnVsbC9Qay9Dcnlw dEVjTnVsbC5jIHwgNDk2ICsrKysrKysrKysrKw0KPiA+ID4gPiA+ICA4IGZpbGVzIGNoYW5nZWQs IDIxODYgaW5zZXJ0aW9ucygrKQ0KPiA+ID4gPiA+ICBjcmVhdGUgbW9kZSAxMDA2NDQgQ3J5cHRv UGtnL0xpYnJhcnkvQmFzZUNyeXB0TGliL1BrL0NyeXB0RWMuYw0KPiA+ID4gPiA+ICBjcmVhdGUg bW9kZSAxMDA2NDQNCj4gQ3J5cHRvUGtnL0xpYnJhcnkvQmFzZUNyeXB0TGliL1BrL0NyeXB0RWNO dWxsLmMNCj4gPiA+ID4gPiAgY3JlYXRlIG1vZGUgMTAwNjQ0DQo+IENyeXB0b1BrZy9MaWJyYXJ5 L0Jhc2VDcnlwdExpYk51bGwvUGsvQ3J5cHRFY051bGwuYw0KPiA+ID4gPiA+DQo+ID4gPiA+ID4g ZGlmZiAtLWdpdCBhL0NyeXB0b1BrZy9JbmNsdWRlL0xpYnJhcnkvQmFzZUNyeXB0TGliLmgNCj4g Yi9DcnlwdG9Qa2cvSW5jbHVkZS9MaWJyYXJ5L0Jhc2VDcnlwdExpYi5oDQo+ID4gPiA+ID4gaW5k ZXggYjI1MzkyM2RkOC4uZDc0ZmMyMWMxZSAxMDA2NDQNCj4gPiA+ID4gPiAtLS0gYS9DcnlwdG9Q a2cvSW5jbHVkZS9MaWJyYXJ5L0Jhc2VDcnlwdExpYi5oDQo+ID4gPiA+ID4gKysrIGIvQ3J5cHRv UGtnL0luY2x1ZGUvTGlicmFyeS9CYXNlQ3J5cHRMaWIuaA0KPiA+ID4gPiA+IEBAIC0xNCw2ICsx NCwxMyBAQCBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTItQ2xhdXNlLVBhdGVudA0KPiA+ ID4gPiA+DQo+ID4gPiA+ID4gICNpbmNsdWRlIDxVZWZpL1VlZmlCYXNlVHlwZS5oPg0KPiA+ID4g PiA+DQo+ID4gPiA+ID4gKyNkZWZpbmUgQ1JZUFRPX05JRF9OVUxMICAweDAwMDANCj4gPiA+ID4g PiArDQo+ID4gPiA+ID4gKy8vIEtleSBFeGNoYW5nZQ0KPiA+ID4gPiA+ICsjZGVmaW5lIENSWVBU T19OSURfU0VDUDI1NlIxICAweDAyMDQNCj4gPiA+ID4gPiArI2RlZmluZSBDUllQVE9fTklEX1NF Q1AzODRSMSAgMHgwMjA1DQo+ID4gPiA+ID4gKyNkZWZpbmUgQ1JZUFRPX05JRF9TRUNQNTIxUjEg IDB4MDIwNg0KPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiAgLy8vDQo+ID4gPiA+ID4gIC8vLyBNRDUg ZGlnZXN0IHNpemUgaW4gYnl0ZXMNCj4gPiA+ID4gPiAgLy8vDQo+ID4gPiA+ID4gQEAgLTI4NTAs NCArMjg1Nyw0MjEgQEAgQmlnTnVtQWRkTW9kICgNCj4gPiA+ID4gPiAgICBPVVQgVk9JRCAgICAg ICAqQm5SZXMNCj4gPiA+ID4gPiAgICApOw0KPiA+ID4gPiA+DQo+ID4gPiA+ID4gKy8vDQo+ID09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0N Cj4gPT09PT09PT09PT09PT09PT09PT09PT09PT09DQo+ID4gPiA+ID4gKy8vICAgIEJhc2ljIEVs bGlwdGljIEN1cnZlIFByaW1pdGl2ZXMNCj4gPiA+ID4gPiArLy8NCj4gPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KPiA9PT09PT09PT09 PT09PT09PT09PT09PT09PT0NCj4gPiA+ID4gPiArDQo+ID4gPiA+ID4gKy8qKg0KPiA+ID4gPiA+ ICsgIEluaXRpYWxpemUgbmV3IG9wYXF1ZSBFY0dyb3VwIG9iamVjdC4gVGhpcyBvYmplY3QgcmVw cmVzZW50cyBhbiBFQw0KPiBjdXJ2ZSBhbmQNCj4gPiA+ID4gPiArICBhbmQgaXMgdXNlZCBmb3Ig Y2FsY3VsYXRpb24gd2l0aGluIHRoaXMgZ3JvdXAuIFRoaXMgb2JqZWN0IHNob3VsZCBiZQ0KPiBm cmVlZA0KPiA+ID4gPiA+ICsgIHVzaW5nIEVjR3JvdXBGcmVlKCkgZnVuY3Rpb24uDQo+ID4gPiA+ ID4gKw0KPiA+ID4gPiA+ICsgIEBwYXJhbVtpbl0gIENyeXB0b05pZCAgIElkZW50aWZ5aW5nIG51 bWJlciBmb3IgdGhlIEVDQyBjdXJ2ZQ0KPiAoRGVmaW5lZCBpbg0KPiA+ID4gPiA+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgIEJhc2VDcnlwdExpYi5oKS4NCj4gPiA+ID4gPiArDQo+ID4gPiA+ ID4gKyAgQHJldHZhbCBFY0dyb3VwIG9iamVjdCAgT24gc3VjY2Vzcy4NCj4gPiA+ID4gPiArICBA cmV0dmFsIE5VTEwgICAgICAgICAgICBPbiBmYWlsdXJlLg0KPiA+ID4gPiA+ICsqKi8NCj4gPiA+ ID4gPiArVk9JRCAqDQo+ID4gPiA+ID4gK0VGSUFQSQ0KPiA+ID4gPiA+ICtFY0dyb3VwSW5pdCAo DQo+ID4gPiA+ID4gKyAgSU4gVUlOVE4gIENyeXB0b05pZA0KPiA+ID4gPiA+ICsgICk7DQo+ID4g PiA+ID4gKw0KPiA+ID4gPiA+ICsvKioNCj4gPiA+ID4gPiArICBHZXQgRUMgY3VydmUgcGFyYW1l dGVycy4gV2hpbGUgZWxsaXB0aWMgY3VydmUgZXF1YXRpb24gaXMgWV4yIG1vZA0KPiBQID0gKFhe MyArIEFYICsgQikgTW9kIFAuDQo+ID4gPiA+ID4gKyAgVGhpcyBmdW5jdGlvbiB3aWxsIHNldCB0 aGUgcHJvdmlkZWQgQmlnIE51bWJlciBvYmplY3RzICB0byB0aGUNCj4gY29ycmVzcG9uZGluZw0K PiA+ID4gPiA+ICsgIHZhbHVlcy4gVGhlIGNhbGxlciBuZWVkcyB0byBtYWtlIHN1cmUgYWxsIHRo ZSAib3V0IiBCaWdOdW1iZXINCj4gcGFyYW1ldGVycw0KPiA+ID4gPiA+ICsgIGFyZSBwcm9wZXJs eSBpbml0aWFsaXplZC4NCj4gPiA+ID4gPiArDQo+ID4gPiA+ID4gKyAgQHBhcmFtW2luXSAgRWNH cm91cCAgICBFQyBncm91cCBvYmplY3QuDQo+ID4gPiA+ID4gKyAgQHBhcmFtW291dF0gQm5Qcmlt ZSAgICBHcm91cCBwcmltZSBudW1iZXIuDQo+ID4gPiA+ID4gKyAgQHBhcmFtW291dF0gQm5BICAg ICAgICBBIGNvZWZmaWNpZW50Lg0KPiA+ID4gPiA+ICsgIEBwYXJhbVtvdXRdIEJuQiAgICAgICAg QiBjb2VmZmljaWVudC4NCj4gPiA+ID4gPiArICBAcGFyYW1baW5dICBCbkN0eCAgICAgIEJOIGNv bnRleHQuDQo+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ICsgIEByZXR2YWwgVFJVRSAgICAgICAgICBP biBzdWNjZXNzLg0KPiA+ID4gPiA+ICsgIEByZXR2YWwgRkFMU0UgICAgICAgICBPdGhlcndpc2Uu DQo+ID4gPiA+ID4gKyoqLw0KPiA+ID4gPiA+ICtCT09MRUFODQo+ID4gPiA+ID4gK0VGSUFQSQ0K PiA+ID4gPiA+ICtFY0dyb3VwR2V0Q3VydmUgKA0KPiA+ID4gPiA+ICsgIElOIENPTlNUIFZPSUQg ICpFY0dyb3VwLA0KPiA+ID4gPiA+ICsgIE9VVCBWT0lEICAgICAgICpCblByaW1lLA0KPiA+ID4g PiA+ICsgIE9VVCBWT0lEICAgICAgICpCbkEsDQo+ID4gPiA+ID4gKyAgT1VUIFZPSUQgICAgICAg KkJuQiwNCj4gPiA+ID4gPiArICBJTiBWT0lEICAgICAgICAqQm5DdHgNCj4gPiA+ID4gPiArICAp Ow0KPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiArLyoqDQo+ID4gPiA+ID4gKyAgR2V0IEVDIGdyb3Vw IG9yZGVyLg0KPiA+ID4gPiA+ICsgIFRoaXMgZnVuY3Rpb24gd2lsbCBzZXQgdGhlIHByb3ZpZGVk IEJpZyBOdW1iZXIgb2JqZWN0IHRvIHRoZQ0KPiBjb3JyZXNwb25kaW5nDQo+ID4gPiA+ID4gKyAg dmFsdWUuIFRoZSBjYWxsZXIgbmVlZHMgdG8gbWFrZSBzdXJlIHRoYXQgdGhlICJvdXQiIEJpZ051 bWJlcg0KPiBwYXJhbWV0ZXINCj4gPiA+ID4gPiArICBpcyBwcm9wZXJseSBpbml0aWFsaXplZC4N Cj4gPiA+ID4gPiArDQo+ID4gPiA+ID4gKyAgQHBhcmFtW2luXSAgRWNHcm91cCAgIEVDIGdyb3Vw IG9iamVjdC4NCj4gPiA+ID4gPiArICBAcGFyYW1bb3V0XSBCbk9yZGVyICAgR3JvdXAgcHJpbWUg bnVtYmVyLg0KPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiArICBAcmV0dmFsIFRSVUUgICAgICAgICAg T24gc3VjY2Vzcy4NCj4gPiA+ID4gPiArICBAcmV0dmFsIEZBTFNFICAgICAgICAgT3RoZXJ3aXNl Lg0KPiA+ID4gPiA+ICsqKi8NCj4gPiA+ID4gPiArQk9PTEVBTg0KPiA+ID4gPiA+ICtFRklBUEkN Cj4gPiA+ID4gPiArRWNHcm91cEdldE9yZGVyICgNCj4gPiA+ID4gPiArICBJTiBWT0lEICAgKkVj R3JvdXAsDQo+ID4gPiA+ID4gKyAgT1VUIFZPSUQgICpCbk9yZGVyDQo+ID4gPiA+ID4gKyAgKTsN Cj4gPiA+ID4gPiArDQo+ID4gPiA+ID4gKy8qKg0KPiA+ID4gPiA+ICsgIEZyZWUgcHJldmlvdXNs eSBhbGxvY2F0ZWQgRUMgZ3JvdXAgb2JqZWN0IHVzaW5nIEVjR3JvdXBJbml0KCkuDQo+ID4gPiA+ ID4gKw0KPiA+ID4gPiA+ICsgIEBwYXJhbVtpbl0gIEVjR3JvdXAgICBFQyBncm91cCBvYmplY3Qg dG8gZnJlZS4NCj4gPiA+ID4gPiArKiovDQo+ID4gPiA+ID4gK1ZPSUQNCj4gPiA+ID4gPiArRUZJ QVBJDQo+ID4gPiA+ID4gK0VjR3JvdXBGcmVlICgNCj4gPiA+ID4gPiArICBJTiBWT0lEICAqRWNH cm91cA0KPiA+ID4gPiA+ICsgICk7DQo+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ICsvKioNCj4gPiA+ ID4gPiArICBJbml0aWFsaXplIG5ldyBvcGFxdWUgRUMgUG9pbnQgb2JqZWN0LiBUaGlzIG9iamVj dCByZXByZXNlbnRzIGFuIEVDDQo+IHBvaW50DQo+ID4gPiA+ID4gKyAgd2l0aGluIHRoZSBnaXZl biBFQyBncm91cCAoY3VydmUpLg0KPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiArICBAcGFyYW1baW5d ICBFQyBHcm91cCwgcHJvcGVybHkgaW5pdGlhbGl6ZWQgdXNpbmcgRWNHcm91cEluaXQoKS4NCj4g PiA+ID4gPiArDQo+ID4gPiA+ID4gKyAgQHJldHZhbCBFQyBQb2ludCBvYmplY3QgIE9uIHN1Y2Nl c3MuDQo+ID4gPiA+ID4gKyAgQHJldHZhbCBOVUxMICAgICAgICAgICAgIE9uIGZhaWx1cmUuDQo+ ID4gPiA+ID4gKyoqLw0KPiA+ID4gPiA+ICtWT0lEICoNCj4gPiA+ID4gPiArRUZJQVBJDQo+ID4g PiA+ID4gK0VjUG9pbnRJbml0ICgNCj4gPiA+ID4gPiArICBJTiBDT05TVCBWT0lEICAqRWNHcm91 cA0KPiA+ID4gPiA+ICsgICk7DQo+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ICsvKioNCj4gPiA+ID4g PiArICBGcmVlIHByZXZpb3VzbHkgYWxsb2NhdGVkIEVDIFBvaW50IG9iamVjdCB1c2luZyBFY1Bv aW50SW5pdCgpLg0KPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiArICBAcGFyYW1baW5dICBFY1BvaW50 ICAgRUMgUG9pbnQgdG8gZnJlZS4NCj4gPiA+ID4gPiArICBAcGFyYW1baW5dICBDbGVhciAgICAg VFJVRSBpZmYgdGhlIG1lbW9yeSBzaG91bGQgYmUgY2xlYXJlZC4NCj4gPiA+ID4gPiArKiovDQo+ ID4gPiA+ID4gK1ZPSUQNCj4gPiA+ID4gPiArRUZJQVBJDQo+ID4gPiA+ID4gK0VjUG9pbnREZUlu aXQgKA0KPiA+ID4gPiA+ICsgIElOIFZPSUQgICAgICpFY1BvaW50LA0KPiA+ID4gPiA+ICsgIElO IEJPT0xFQU4gIENsZWFyDQo+ID4gPiA+ID4gKyAgKTsNCj4gPiA+ID4gPiArDQo+ID4gPiA+ID4g Ky8qKg0KPiA+ID4gPiA+ICsgIEdldCBFQyBwb2ludCBhZmZpbmUgKHgseSkgY29vcmRpbmF0ZXMu DQo+ID4gPiA+ID4gKyAgVGhpcyBmdW5jdGlvbiB3aWxsIHNldCB0aGUgcHJvdmlkZWQgQmlnIE51 bWJlciBvYmplY3RzIHRvIHRoZQ0KPiBjb3JyZXNwb25kaW5nDQo+ID4gPiA+ID4gKyAgdmFsdWVz LiBUaGUgY2FsbGVyIG5lZWRzIHRvIG1ha2Ugc3VyZSBhbGwgdGhlICJvdXQiIEJpZ051bWJlcg0K PiBwYXJhbWV0ZXJzDQo+ID4gPiA+ID4gKyAgYXJlIHByb3Blcmx5IGluaXRpYWxpemVkLg0KPiA+ ID4gPiA+ICsNCj4gPiA+ID4gPiArICBAcGFyYW1baW5dICBFY0dyb3VwICAgIEVDIGdyb3VwIG9i amVjdC4NCj4gPiA+ID4gPiArICBAcGFyYW1baW5dICBFY1BvaW50ICAgIEVDIHBvaW50IG9iamVj dC4NCj4gPiA+ID4gPiArICBAcGFyYW1bb3V0XSBCblggICAgICAgIFggY29vcmRpbmF0ZS4NCj4g PiA+ID4gPiArICBAcGFyYW1bb3V0XSBCblkgICAgICAgIFkgY29vcmRpbmF0ZS4NCj4gPiA+ID4g PiArICBAcGFyYW1baW5dICBCbkN0eCAgICAgIEJOIGNvbnRleHQsIGNyZWF0ZWQgd2l0aA0KPiBC aWdOdW1OZXdDb250ZXh0KCkuDQo+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ICsgIEByZXR2YWwgVFJV RSAgICAgICAgICBPbiBzdWNjZXNzLg0KPiA+ID4gPiA+ICsgIEByZXR2YWwgRkFMU0UgICAgICAg ICBPdGhlcndpc2UuDQo+ID4gPiA+ID4gKyoqLw0KPiA+ID4gPiA+ICtCT09MRUFODQo+ID4gPiA+ ID4gK0VGSUFQSQ0KPiA+ID4gPiA+ICtFY1BvaW50R2V0QWZmaW5lQ29vcmRpbmF0ZXMgKA0KPiA+ ID4gPiA+ICsgIElOIENPTlNUIFZPSUQgICpFY0dyb3VwLA0KPiA+ID4gPiA+ICsgIElOIENPTlNU IFZPSUQgICpFY1BvaW50LA0KPiA+ID4gPiA+ICsgIE9VVCBWT0lEICAgICAgICpCblgsDQo+ID4g PiA+ID4gKyAgT1VUIFZPSUQgICAgICAgKkJuWSwNCj4gPiA+ID4gPiArICBJTiBWT0lEICAgICAg ICAqQm5DdHgNCj4gPiA+ID4gPiArICApOw0KPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiArLyoqDQo+ ID4gPiA+ID4gKyAgU2V0IEVDIHBvaW50IGFmZmluZSAoeCx5KSBjb29yZGluYXRlcy4NCj4gPiA+ ID4gPiArDQo+ID4gPiA+ID4gKyAgQHBhcmFtW2luXSAgRWNHcm91cCAgICBFQyBncm91cCBvYmpl Y3QuDQo+ID4gPiA+ID4gKyAgQHBhcmFtW2luXSAgRWNQb2ludCAgICBFQyBwb2ludCBvYmplY3Qu DQo+ID4gPiA+ID4gKyAgQHBhcmFtW2luXSAgQm5YICAgICAgICBYIGNvb3JkaW5hdGUuDQo+ID4g PiA+ID4gKyAgQHBhcmFtW2luXSAgQm5ZICAgICAgICBZIGNvb3JkaW5hdGUuDQo+ID4gPiA+ID4g KyAgQHBhcmFtW2luXSAgQm5DdHggICAgICBCTiBjb250ZXh0LCBjcmVhdGVkIHdpdGgNCj4gQmln TnVtTmV3Q29udGV4dCgpLg0KPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiArICBAcmV0dmFsIFRSVUUg ICAgICAgICAgT24gc3VjY2Vzcy4NCj4gPiA+ID4gPiArICBAcmV0dmFsIEZBTFNFICAgICAgICAg T3RoZXJ3aXNlLg0KPiA+ID4gPiA+ICsqKi8NCj4gPiA+ID4gPiArQk9PTEVBTg0KPiA+ID4gPiA+ ICtFRklBUEkNCj4gPiA+ID4gPiArRWNQb2ludFNldEFmZmluZUNvb3JkaW5hdGVzICgNCj4gPiA+ ID4gPiArICBJTiBDT05TVCBWT0lEICAqRWNHcm91cCwNCj4gPiA+ID4gPiArICBJTiBWT0lEICAg ICAgICAqRWNQb2ludCwNCj4gPiA+ID4gPiArICBJTiBDT05TVCBWT0lEICAqQm5YLA0KPiA+ID4g PiA+ICsgIElOIENPTlNUIFZPSUQgICpCblksDQo+ID4gPiA+ID4gKyAgSU4gVk9JRCAgICAgICAg KkJuQ3R4DQo+ID4gPiA+ID4gKyAgKTsNCj4gPiA+ID4gPiArDQo+ID4gPiA+ID4gKy8qKg0KPiA+ ID4gPiA+ICsgIEVDIFBvaW50IGFkZGl0aW9uLiBFY1BvaW50UmVzdWx0ID0gRWNQb2ludEEgKyBF Y1BvaW50Qi4NCj4gPiA+ID4gPiArDQo+ID4gPiA+ID4gKyAgQHBhcmFtW2luXSAgRWNHcm91cCAg ICAgICAgICBFQyBncm91cCBvYmplY3QuDQo+ID4gPiA+ID4gKyAgQHBhcmFtW291dF0gRWNQb2lu dFJlc3VsdCAgICBFQyBwb2ludCB0byBob2xkIHRoZSByZXN1bHQuIFRoZQ0KPiBwb2ludCBzaG91 bGQNCj4gPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJlIHByb3Blcmx5 IGluaXRpYWxpemVkLg0KPiA+ID4gPiA+ICsgIEBwYXJhbVtpbl0gIEVjUG9pbnRBICAgICAgICAg RUMgUG9pbnQuDQo+ID4gPiA+ID4gKyAgQHBhcmFtW2luXSAgRWNQb2ludEIgICAgICAgICBFQyBQ b2ludC4NCj4gPiA+ID4gPiArICBAcGFyYW1baW5dICBCbkN0eCAgICAgICAgICAgIEJOIGNvbnRl eHQsIGNyZWF0ZWQgd2l0aA0KPiBCaWdOdW1OZXdDb250ZXh0KCkuDQo+ID4gPiA+ID4gKw0KPiA+ ID4gPiA+ICsgIEByZXR2YWwgVFJVRSAgICAgICAgICBPbiBzdWNjZXNzLg0KPiA+ID4gPiA+ICsg IEByZXR2YWwgRkFMU0UgICAgICAgICBPdGhlcndpc2UuDQo+ID4gPiA+ID4gKyoqLw0KPiA+ID4g PiA+ICtCT09MRUFODQo+ID4gPiA+ID4gK0VGSUFQSQ0KPiA+ID4gPiA+ICtFY1BvaW50QWRkICgN Cj4gPiA+ID4gPiArICBJTiBDT05TVCBWT0lEICAqRWNHcm91cCwNCj4gPiA+ID4gPiArICBPVVQg Vk9JRCAgICAgICAqRWNQb2ludFJlc3VsdCwNCj4gPiA+ID4gPiArICBJTiBDT05TVCBWT0lEICAq RWNQb2ludEEsDQo+ID4gPiA+ID4gKyAgSU4gQ09OU1QgVk9JRCAgKkVjUG9pbnRCLA0KPiA+ID4g PiA+ICsgIElOIFZPSUQgICAgICAgICpCbkN0eA0KPiA+ID4gPiA+ICsgICk7DQo+ID4gPiA+ID4g Kw0KPiA+ID4gPiA+ICsvKioNCj4gPiA+ID4gPiArICBWYXJpYWJsZSBFQyBwb2ludCBtdWx0aXBs aWNhdGlvbi4gRWNQb2ludFJlc3VsdCA9IEVjUG9pbnQgKg0KPiBCblBTY2FsYXIuDQo+ID4gPiA+ ID4gKw0KPiA+ID4gPiA+ICsgIEBwYXJhbVtpbl0gIEVjR3JvdXAgICAgICAgICAgRUMgZ3JvdXAg b2JqZWN0Lg0KPiA+ID4gPiA+ICsgIEBwYXJhbVtvdXRdIEVjUG9pbnRSZXN1bHQgICAgRUMgcG9p bnQgdG8gaG9sZCB0aGUgcmVzdWx0LiBUaGUNCj4gcG9pbnQgc2hvdWxkDQo+ID4gPiA+ID4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZSBwcm9wZXJseSBpbml0aWFsaXplZC4NCj4g PiA+ID4gPiArICBAcGFyYW1baW5dICBFY1BvaW50ICAgICAgICAgIEVDIFBvaW50Lg0KPiA+ID4g PiA+ICsgIEBwYXJhbVtpbl0gIEJuUFNjYWxhciAgICAgICAgUCBTY2FsYXIuDQo+ID4gPiA+ID4g KyAgQHBhcmFtW2luXSAgQm5DdHggICAgICAgICAgICBCTiBjb250ZXh0LCBjcmVhdGVkIHdpdGgN Cj4gQmlnTnVtTmV3Q29udGV4dCgpLg0KPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiArICBAcmV0dmFs IFRSVUUgICAgICAgICAgT24gc3VjY2Vzcy4NCj4gPiA+ID4gPiArICBAcmV0dmFsIEZBTFNFICAg ICAgICAgT3RoZXJ3aXNlLg0KPiA+ID4gPiA+ICsqKi8NCj4gPiA+ID4gPiArQk9PTEVBTg0KPiA+ ID4gPiA+ICtFRklBUEkNCj4gPiA+ID4gPiArRWNQb2ludE11bCAoDQo+ID4gPiA+ID4gKyAgSU4g Q09OU1QgVk9JRCAgKkVjR3JvdXAsDQo+ID4gPiA+ID4gKyAgT1VUIFZPSUQgICAgICAgKkVjUG9p bnRSZXN1bHQsDQo+ID4gPiA+ID4gKyAgSU4gQ09OU1QgVk9JRCAgKkVjUG9pbnQsDQo+ID4gPiA+ ID4gKyAgSU4gQ09OU1QgVk9JRCAgKkJuUFNjYWxhciwNCj4gPiA+ID4gPiArICBJTiBWT0lEICAg ICAgICAqQm5DdHgNCj4gPiA+ID4gPiArICApOw0KPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiArLyoq DQo+ID4gPiA+ID4gKyAgQ2FsY3VsYXRlIHRoZSBpbnZlcnNlIG9mIHRoZSBzdXBwbGllZCBFQyBw b2ludC4NCj4gPiA+ID4gPiArDQo+ID4gPiA+ID4gKyAgQHBhcmFtW2luXSAgICAgRWNHcm91cCAg IEVDIGdyb3VwIG9iamVjdC4NCj4gPiA+ID4gPiArICBAcGFyYW1baW4sb3V0XSBFY1BvaW50ICAg RUMgcG9pbnQgdG8gaW52ZXJ0Lg0KPiA+ID4gPiA+ICsgIEBwYXJhbVtpbl0gICAgIEJuQ3R4ICAg ICBCTiBjb250ZXh0LCBjcmVhdGVkIHdpdGgNCj4gQmlnTnVtTmV3Q29udGV4dCgpLg0KPiA+ID4g PiA+ICsNCj4gPiA+ID4gPiArICBAcmV0dmFsIFRSVUUgICAgICAgICAgT24gc3VjY2Vzcy4NCj4g PiA+ID4gPiArICBAcmV0dmFsIEZBTFNFICAgICAgICAgT3RoZXJ3aXNlLg0KPiA+ID4gPiA+ICsq Ki8NCj4gPiA+ID4gPiArQk9PTEVBTg0KPiA+ID4gPiA+ICtFRklBUEkNCj4gPiA+ID4gPiArRWNQ b2ludEludmVydCAoDQo+ID4gPiA+ID4gKyAgSU4gQ09OU1QgVk9JRCAgKkVjR3JvdXAsDQo+ID4g PiA+ID4gKyAgSU4gT1VUIFZPSUQgICAgKkVjUG9pbnQsDQo+ID4gPiA+ID4gKyAgSU4gVk9JRCAg ICAgICAgKkJuQ3R4DQo+ID4gPiA+ID4gKyAgKTsNCj4gPiA+ID4gPiArDQo+ID4gPiA+ID4gKy8q Kg0KPiA+ID4gPiA+ICsgIENoZWNrIGlmIHRoZSBzdXBwbGllZCBwb2ludCBpcyBvbiBFQyBjdXJ2 ZS4NCj4gPiA+ID4gPiArDQo+ID4gPiA+ID4gKyAgQHBhcmFtW2luXSAgRWNHcm91cCAgIEVDIGdy b3VwIG9iamVjdC4NCj4gPiA+ID4gPiArICBAcGFyYW1baW5dICBFY1BvaW50ICAgRUMgcG9pbnQg dG8gY2hlY2suDQo+ID4gPiA+ID4gKyAgQHBhcmFtW2luXSAgQm5DdHggICAgIEJOIGNvbnRleHQs IGNyZWF0ZWQgd2l0aA0KPiBCaWdOdW1OZXdDb250ZXh0KCkuDQo+ID4gPiA+ID4gKw0KPiA+ID4g PiA+ICsgIEByZXR2YWwgVFJVRSAgICAgICAgICBPbiBjdXJ2ZS4NCj4gPiA+ID4gPiArICBAcmV0 dmFsIEZBTFNFICAgICAgICAgT3RoZXJ3aXNlLg0KPiA+ID4gPiA+ICsqKi8NCj4gPiA+ID4gPiAr Qk9PTEVBTg0KPiA+ID4gPiA+ICtFRklBUEkNCj4gPiA+ID4gPiArRWNQb2ludElzT25DdXJ2ZSAo DQo+ID4gPiA+ID4gKyAgSU4gQ09OU1QgVk9JRCAgKkVjR3JvdXAsDQo+ID4gPiA+ID4gKyAgSU4g Q09OU1QgVk9JRCAgKkVjUG9pbnQsDQo+ID4gPiA+ID4gKyAgSU4gVk9JRCAgICAgICAgKkJuQ3R4 DQo+ID4gPiA+ID4gKyAgKTsNCj4gPiA+ID4gPiArDQo+ID4gPiA+ID4gKy8qKg0KPiA+ID4gPiA+ ICsgIENoZWNrIGlmIHRoZSBzdXBwbGllZCBwb2ludCBpcyBhdCBpbmZpbml0eS4NCj4gPiA+ID4g PiArDQo+ID4gPiA+ID4gKyAgQHBhcmFtW2luXSAgRWNHcm91cCAgIEVDIGdyb3VwIG9iamVjdC4N Cj4gPiA+ID4gPiArICBAcGFyYW1baW5dICBFY1BvaW50ICAgRUMgcG9pbnQgdG8gY2hlY2suDQo+ ID4gPiA+ID4gKw0KPiA+ID4gPiA+ICsgIEByZXR2YWwgVFJVRSAgICAgICAgICBBdCBpbmZpbml0 eS4NCj4gPiA+ID4gPiArICBAcmV0dmFsIEZBTFNFICAgICAgICAgT3RoZXJ3aXNlLg0KPiA+ID4g PiA+ICsqKi8NCj4gPiA+ID4gPiArQk9PTEVBTg0KPiA+ID4gPiA+ICtFRklBUEkNCj4gPiA+ID4g PiArRWNQb2ludElzQXRJbmZpbml0eSAoDQo+ID4gPiA+ID4gKyAgSU4gQ09OU1QgVk9JRCAgKkVj R3JvdXAsDQo+ID4gPiA+ID4gKyAgSU4gQ09OU1QgVk9JRCAgKkVjUG9pbnQNCj4gPiA+ID4gPiAr ICApOw0KPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiArLyoqDQo+ID4gPiA+ID4gKyAgQ2hlY2sgaWYg RUMgcG9pbnRzIGFyZSBlcXVhbC4NCj4gPiA+ID4gPiArDQo+ID4gPiA+ID4gKyAgQHBhcmFtW2lu XSAgRWNHcm91cCAgIEVDIGdyb3VwIG9iamVjdC4NCj4gPiA+ID4gPiArICBAcGFyYW1baW5dICBF Y1BvaW50QSAgRUMgcG9pbnQgQS4NCj4gPiA+ID4gPiArICBAcGFyYW1baW5dICBFY1BvaW50QiAg RUMgcG9pbnQgQi4NCj4gPiA+ID4gPiArICBAcGFyYW1baW5dICBCbkN0eCAgICAgQk4gY29udGV4 dCwgY3JlYXRlZCB3aXRoDQo+IEJpZ051bU5ld0NvbnRleHQoKS4NCj4gPiA+ID4gPiArDQo+ID4g PiA+ID4gKyAgQHJldHZhbCBUUlVFICAgICAgICAgIEEgPT0gQi4NCj4gPiA+ID4gPiArICBAcmV0 dmFsIEZBTFNFICAgICAgICAgT3RoZXJ3aXNlLg0KPiA+ID4gPiA+ICsqKi8NCj4gPiA+ID4gPiAr Qk9PTEVBTg0KPiA+ID4gPiA+ICtFRklBUEkNCj4gPiA+ID4gPiArRWNQb2ludEVxdWFsICgNCj4g PiA+ID4gPiArICBJTiBDT05TVCBWT0lEICAqRWNHcm91cCwNCj4gPiA+ID4gPiArICBJTiBDT05T VCBWT0lEICAqRWNQb2ludEEsDQo+ID4gPiA+ID4gKyAgSU4gQ09OU1QgVk9JRCAgKkVjUG9pbnRC LA0KPiA+ID4gPiA+ICsgIElOIFZPSUQgICAgICAgICpCbkN0eA0KPiA+ID4gPiA+ICsgICk7DQo+ ID4gPiA+ID4gKw0KPiA+ID4gPiA+ICsvKioNCj4gPiA+ID4gPiArICBTZXQgRUMgcG9pbnQgY29t cHJlc3NlZCBjb29yZGluYXRlcy4gUG9pbnRzIGNhbiBiZSBkZXNjcmliZWQgaW4NCj4gdGVybXMg b2YNCj4gPiA+ID4gPiArICB0aGVpciBjb21wcmVzc2VkIGNvb3JkaW5hdGVzLiBGb3IgYSBwb2lu dCAoeCwgeSksIGZvciBhbnkgZ2l2ZW4NCj4gdmFsdWUgZm9yIHgNCj4gPiA+ID4gPiArICBzdWNo IHRoYXQgdGhlIHBvaW50IGlzIG9uIHRoZSBjdXJ2ZSB0aGVyZSB3aWxsIG9ubHkgZXZlciBiZSB0 d28NCj4gcG9zc2libGUNCj4gPiA+ID4gPiArICB2YWx1ZXMgZm9yIHkuIFRoZXJlZm9yZSwgYSBw b2ludCBjYW4gYmUgc2V0IHVzaW5nIHRoaXMgZnVuY3Rpb24NCj4gd2hlcmUgQm5YIGlzDQo+ID4g PiA+ID4gKyAgdGhlIHggY29vcmRpbmF0ZSBhbmQgWUJpdCBpcyBhIHZhbHVlIDAgb3IgMSB0byBp ZGVudGlmeSB3aGljaCBvZiB0aGUNCj4gdHdvDQo+ID4gPiA+ID4gKyAgcG9zc2libGUgdmFsdWVz IGZvciB5IHNob3VsZCBiZSB1c2VkLg0KPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiArICBAcGFyYW1b aW5dICBFY0dyb3VwICAgIEVDIGdyb3VwIG9iamVjdC4NCj4gPiA+ID4gPiArICBAcGFyYW1baW5d ICBFY1BvaW50ICAgIEVDIFBvaW50Lg0KPiA+ID4gPiA+ICsgIEBwYXJhbVtpbl0gIEJuWCAgICAg ICAgWCBjb29yZGluYXRlLg0KPiA+ID4gPiA+ICsgIEBwYXJhbVtpbl0gIFlCaXQgICAgICAgMCBv ciAxIHRvIGlkZW50aWZ5IHdoaWNoIFkgdmFsdWUgaXMgdXNlZC4NCj4gPiA+ID4gPiArICBAcGFy YW1baW5dICBCbkN0eCAgICAgIEJOIGNvbnRleHQsIGNyZWF0ZWQgd2l0aA0KPiBCaWdOdW1OZXdD b250ZXh0KCkuDQo+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ICsgIEByZXR2YWwgVFJVRSAgICAgICAg ICBPbiBzdWNjZXNzLg0KPiA+ID4gPiA+ICsgIEByZXR2YWwgRkFMU0UgICAgICAgICBPdGhlcndp c2UuDQo+ID4gPiA+ID4gKyoqLw0KPiA+ID4gPiA+ICtCT09MRUFODQo+ID4gPiA+ID4gK0VGSUFQ SQ0KPiA+ID4gPiA+ICtFY1BvaW50U2V0Q29tcHJlc3NlZENvb3JkaW5hdGVzICgNCj4gPiA+ID4g PiArICBJTiBDT05TVCBWT0lEICAqRWNHcm91cCwNCj4gPiA+ID4gPiArICBJTiBWT0lEICAgICAg ICAqRWNQb2ludCwNCj4gPiA+ID4gPiArICBJTiBDT05TVCBWT0lEICAqQm5YLA0KPiA+ID4gPiA+ ICsgIElOIFVJTlQ4ICAgICAgIFlCaXQsDQo+ID4gPiA+ID4gKyAgSU4gVk9JRCAgICAgICAgKkJu Q3R4DQo+ID4gPiA+ID4gKyAgKTsNCj4gPiA+ID4gPiArDQo+ID4gPiA+ID4gKy8vDQo+ID09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCj4g PT09PT09PT09PT09PT09PT09PT09PT09PT09DQo+ID4gPiA+ID4gKy8vICAgIEVsbGlwdGljIEN1 cnZlIERpZmZpZSBIZWxsbWFuIFByaW1pdGl2ZXMNCj4gPiA+ID4gPiArLy8NCj4gPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KPiA9PT09 PT09PT09PT09PT09PT09PT09PT09PT0NCj4gPiA+ID4gPiArDQo+ID4gPiA+ID4gKy8qKg0KPiA+ ID4gPiA+ICsgIEFsbG9jYXRlcyBhbmQgSW5pdGlhbGl6ZXMgb25lIEVsbGlwdGljIEN1cnZlIENv bnRleHQgZm9yIHN1YnNlcXVlbnQNCj4gdXNlDQo+ID4gPiA+ID4gKyAgd2l0aCB0aGUgTklELg0K PiA+ID4gPiA+ICsNCj4gPiA+ID4gPiArICBAcGFyYW1baW5dICBOaWQgY2lwaGVyIE5JRA0KPiA+ ID4gPiA+ICsgIEByZXR1cm4gICAgIFBvaW50ZXIgdG8gdGhlIEVsbGlwdGljIEN1cnZlIENvbnRl eHQgdGhhdCBoYXMgYmVlbg0KPiBpbml0aWFsaXplZC4NCj4gPiA+ID4gPiArICAgICAgICAgICAg ICBJZiB0aGUgYWxsb2NhdGlvbnMgZmFpbHMsIEVjTmV3QnlOaWQoKSByZXR1cm5zIE5VTEwuDQo+ ID4gPiA+ID4gKyoqLw0KPiA+ID4gPiA+ICtWT0lEICoNCj4gPiA+ID4gPiArRUZJQVBJDQo+ID4g PiA+ID4gK0VjTmV3QnlOaWQgKA0KPiA+ID4gPiA+ICsgIElOIFVJTlROICBOaWQNCj4gPiA+ID4g PiArICApOw0KPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiArLyoqDQo+ID4gPiA+ID4gKyAgUmVsZWFz ZSB0aGUgc3BlY2lmaWVkIEVDIGNvbnRleHQuDQo+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ICsgIEBw YXJhbVtpbl0gIEVjQ29udGV4dCAgUG9pbnRlciB0byB0aGUgRUMgY29udGV4dCB0byBiZSByZWxl YXNlZC4NCj4gPiA+ID4gPiArKiovDQo+ID4gPiA+ID4gK1ZPSUQNCj4gPiA+ID4gPiArRUZJQVBJ DQo+ID4gPiA+ID4gK0VjRnJlZSAoDQo+ID4gPiA+ID4gKyAgSU4gIFZPSUQgICpFY0NvbnRleHQN Cj4gPiA+ID4gPiArICApOw0KPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiArLyoqDQo+ID4gPiA+ID4g KyAgR2VuZXJhdGVzIEVDIGtleSBhbmQgcmV0dXJucyBFQyBwdWJsaWMga2V5IChYLCBZKSwgUGxl YXNlIG5vdGUsDQo+IHRoaXMgZnVuY3Rpb24gdXNlcw0KPiA+ID4gPiA+ICsgIHBzZXVkbyByYW5k b20gbnVtYmVyIGdlbmVyYXRvci4gVGhlIGNhbGxlciBtdXN0IG1ha2Ugc3VyZQ0KPiBSYW5kb21T ZWVkKCkNCj4gPiA+ID4gPiArICBmdW5jdGlvbiB3YXMgcHJvcGVybHkgY2FsbGVkIGJlZm9yZS4N Cj4gPiA+ID4gPiArICBUaGUgRWMgY29udGV4dCBzaG91bGQgYmUgY29ycmVjdGx5IGluaXRpYWxp emVkIGJ5IEVjTmV3QnlOaWQuDQo+ID4gPiA+ID4gKyAgVGhpcyBmdW5jdGlvbiBnZW5lcmF0ZXMg cmFuZG9tIHNlY3JldCwgYW5kIGNvbXB1dGVzIHRoZSBwdWJsaWMNCj4ga2V5IChYLCBZKSwgd2hp Y2ggaXMNCj4gPiA+ID4gPiArICByZXR1cm5lZCB2aWEgcGFyYW1ldGVyIFB1YmxpYywgUHVibGlj U2l6ZS4NCj4gPiA+ID4gPiArICBYIGlzIHRoZSBmaXJzdCBoYWxmIG9mIFB1YmxpYyB3aXRoIHNp emUgYmVpbmcgUHVibGljU2l6ZSAvIDIsDQo+ID4gPiA+ID4gKyAgWSBpcyB0aGUgc2Vjb25kIGhh bGYgb2YgUHVibGljIHdpdGggc2l6ZSBiZWluZyBQdWJsaWNTaXplIC8gMi4NCj4gPiA+ID4gPiAr ICBFQyBjb250ZXh0IGlzIHVwZGF0ZWQgYWNjb3JkaW5nbHkuDQo+ID4gPiA+ID4gKyAgSWYgdGhl IFB1YmxpYyBidWZmZXIgaXMgdG9vIHNtYWxsIHRvIGhvbGQgdGhlIHB1YmxpYyBYLCBZLCBGQUxT RSBpcw0KPiByZXR1cm5lZCBhbmQNCj4gPiA+ID4gPiArICBQdWJsaWNTaXplIGlzIHNldCB0byB0 aGUgcmVxdWlyZWQgYnVmZmVyIHNpemUgdG8gb2J0YWluIHRoZSBwdWJsaWMgWCwNCj4gWS4NCj4g PiA+ID4gPiArICBGb3IgUC0yNTYsIHRoZSBQdWJsaWNTaXplIGlzIDY0LiBGaXJzdCAzMi1ieXRl IGlzIFgsIFNlY29uZCAzMi1ieXRlDQo+IGlzIFkuDQo+ID4gPiA+ID4gKyAgRm9yIFAtMzg0LCB0 aGUgUHVibGljU2l6ZSBpcyA5Ni4gRmlyc3QgNDgtYnl0ZSBpcyBYLCBTZWNvbmQgNDgtYnl0ZQ0K PiBpcyBZLg0KPiA+ID4gPiA+ICsgIEZvciBQLTUyMSwgdGhlIFB1YmxpY1NpemUgaXMgMTMyLiBG aXJzdCA2Ni1ieXRlIGlzIFgsIFNlY29uZCA2Ni1ieXRlDQo+IGlzIFkuDQo+ID4gPiA+ID4gKyAg SWYgRWNDb250ZXh0IGlzIE5VTEwsIHRoZW4gcmV0dXJuIEZBTFNFLg0KPiA+ID4gPiA+ICsgIElm IFB1YmxpY1NpemUgaXMgTlVMTCwgdGhlbiByZXR1cm4gRkFMU0UuDQo+ID4gPiA+ID4gKyAgSWYg UHVibGljU2l6ZSBpcyBsYXJnZSBlbm91Z2ggYnV0IFB1YmxpYyBpcyBOVUxMLCB0aGVuIHJldHVy biBGQUxTRS4NCj4gPiA+ID4gPiArICBAcGFyYW1baW4sIG91dF0gIEVjQ29udGV4dCAgICAgIFBv aW50ZXIgdG8gdGhlIEVDIGNvbnRleHQuDQo+ID4gPiA+ID4gKyAgQHBhcmFtW291dF0gICAgICBQ dWJsaWNLZXkgICAgICBQb2ludGVyIHRvIHQgYnVmZmVyIHRvIHJlY2VpdmUNCj4gZ2VuZXJhdGVk IHB1YmxpYyBYLFkuDQo+ID4gPiA+ID4gKyAgQHBhcmFtW2luLCBvdXRdICBQdWJsaWNLZXlTaXpl ICBPbiBpbnB1dCwgdGhlIHNpemUgb2YgUHVibGljIGJ1ZmZlcg0KPiBpbiBieXRlcy4NCj4gPiA+ ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9uIG91dHB1dCwgdGhlIHNp emUgb2YgZGF0YSByZXR1cm5lZCBpbiBQdWJsaWMNCj4gYnVmZmVyIGluIGJ5dGVzLg0KPiA+ID4g PiA+ICsgIEByZXR2YWwgVFJVRSAgIEVDIHB1YmxpYyBYLFkgZ2VuZXJhdGlvbiBzdWNjZWVkZWQu DQo+ID4gPiA+ID4gKyAgQHJldHZhbCBGQUxTRSAgRUMgcHVibGljIFgsWSBnZW5lcmF0aW9uIGZh aWxlZC4NCj4gPiA+ID4gPiArICBAcmV0dmFsIEZBTFNFICBQdWJsaWNLZXlTaXplIGlzIG5vdCBs YXJnZSBlbm91Z2guDQo+ID4gPiA+ID4gKyoqLw0KPiA+ID4gPiA+ICtCT09MRUFODQo+ID4gPiA+ ID4gK0VGSUFQSQ0KPiA+ID4gPiA+ICtFY0dlbmVyYXRlS2V5ICgNCj4gPiA+ID4gPiArICBJTiBP VVQgIFZPSUQgICAqRWNDb250ZXh0LA0KPiA+ID4gPiA+ICsgIE9VVCAgICAgVUlOVDggICpQdWJs aWNLZXksDQo+ID4gPiA+ID4gKyAgSU4gT1VUICBVSU5UTiAgKlB1YmxpY0tleVNpemUNCj4gPiA+ ID4gPiArICApOw0KPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiArLyoqDQo+ID4gPiA+ID4gKyAgR2V0 cyB0aGUgcHVibGljIGtleSBjb21wb25lbnQgZnJvbSB0aGUgZXN0YWJsaXNoZWQgRUMgY29udGV4 dC4NCj4gPiA+ID4gPiArICBUaGUgRWMgY29udGV4dCBzaG91bGQgYmUgY29ycmVjdGx5IGluaXRp YWxpemVkIGJ5IEVjTmV3QnlOaWQsIGFuZA0KPiBzdWNjZXNzZnVsbHkNCj4gPiA+ID4gPiArICBn ZW5lcmF0ZSBrZXkgcGFpciBmcm9tIEVjR2VuZXJhdGVLZXkoKS4NCj4gPiA+ID4gPiArICBGb3Ig UC0yNTYsIHRoZSBQdWJsaWNTaXplIGlzIDY0LiBGaXJzdCAzMi1ieXRlIGlzIFgsIFNlY29uZCAz Mi1ieXRlDQo+IGlzIFkuDQo+ID4gPiA+ID4gKyAgRm9yIFAtMzg0LCB0aGUgUHVibGljU2l6ZSBp cyA5Ni4gRmlyc3QgNDgtYnl0ZSBpcyBYLCBTZWNvbmQgNDgtYnl0ZQ0KPiBpcyBZLg0KPiA+ID4g PiA+ICsgIEZvciBQLTUyMSwgdGhlIFB1YmxpY1NpemUgaXMgMTMyLiBGaXJzdCA2Ni1ieXRlIGlz IFgsIFNlY29uZCA2Ni1ieXRlDQo+IGlzIFkuDQo+ID4gPiA+ID4gKyAgQHBhcmFtW2luLCBvdXRd ICBFY0NvbnRleHQgICAgICBQb2ludGVyIHRvIEVDIGNvbnRleHQgYmVpbmcgc2V0Lg0KPiA+ID4g PiA+ICsgIEBwYXJhbVtvdXRdICAgICAgUHVibGljS2V5ICAgICAgUG9pbnRlciB0byB0IGJ1ZmZl ciB0byByZWNlaXZlDQo+IGdlbmVyYXRlZCBwdWJsaWMgWCxZLg0KPiA+ID4gPiA+ICsgIEBwYXJh bVtpbiwgb3V0XSAgUHVibGljS2V5U2l6ZSAgT24gaW5wdXQsIHRoZSBzaXplIG9mIFB1YmxpYyBi dWZmZXINCj4gaW4gYnl0ZXMuDQo+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBPbiBvdXRwdXQsIHRoZSBzaXplIG9mIGRhdGEgcmV0dXJuZWQgaW4gUHVibGljDQo+ IGJ1ZmZlciBpbiBieXRlcy4NCj4gPiA+ID4gPiArICBAcmV0dmFsICBUUlVFICAgRUMga2V5IGNv bXBvbmVudCB3YXMgcmV0cmlldmVkIHN1Y2Nlc3NmdWxseS4NCj4gPiA+ID4gPiArICBAcmV0dmFs ICBGQUxTRSAgSW52YWxpZCBFQyBrZXkgY29tcG9uZW50Lg0KPiA+ID4gPiA+ICsqKi8NCj4gPiA+ ID4gPiArQk9PTEVBTg0KPiA+ID4gPiA+ICtFRklBUEkNCj4gPiA+ID4gPiArRWNHZXRQdWJLZXkg KA0KPiA+ID4gPiA+ICsgIElOIE9VVCAgVk9JRCAgICpFY0NvbnRleHQsDQo+ID4gPiA+ID4gKyAg T1VUICAgICBVSU5UOCAgKlB1YmxpY0tleSwNCj4gPiA+ID4gPiArICBJTiBPVVQgIFVJTlROICAq UHVibGljS2V5U2l6ZQ0KPiA+ID4gPiA+ICsgICk7DQo+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ICsv KioNCj4gPiA+ID4gPiArICBDb21wdXRlcyBleGNoYW5nZWQgY29tbW9uIGtleS4NCj4gPiA+ID4g PiArICBHaXZlbiBwZWVyJ3MgcHVibGljIGtleSAoWCwgWSksIHRoaXMgZnVuY3Rpb24gY29tcHV0 ZXMgdGhlDQo+IGV4Y2hhbmdlZCBjb21tb24ga2V5LA0KPiA+ID4gPiA+ICsgIGJhc2VkIG9uIGl0 cyBvd24gY29udGV4dCBpbmNsdWRpbmcgdmFsdWUgb2YgY3VydmUgcGFyYW1ldGVyIGFuZA0KPiBy YW5kb20gc2VjcmV0Lg0KPiA+ID4gPiA+ICsgIFggaXMgdGhlIGZpcnN0IGhhbGYgb2YgUGVlclB1 YmxpYyB3aXRoIHNpemUgYmVpbmcgUGVlclB1YmxpY1NpemUgLyAyLA0KPiA+ID4gPiA+ICsgIFkg aXMgdGhlIHNlY29uZCBoYWxmIG9mIFBlZXJQdWJsaWMgd2l0aCBzaXplIGJlaW5nIFBlZXJQdWJs aWNTaXplIC8NCj4gMi4NCj4gPiA+ID4gPiArICBJZiBFY0NvbnRleHQgaXMgTlVMTCwgdGhlbiBy ZXR1cm4gRkFMU0UuDQo+ID4gPiA+ID4gKyAgSWYgUGVlclB1YmxpYyBpcyBOVUxMLCB0aGVuIHJl dHVybiBGQUxTRS4NCj4gPiA+ID4gPiArICBJZiBQZWVyUHVibGljU2l6ZSBpcyAwLCB0aGVuIHJl dHVybiBGQUxTRS4NCj4gPiA+ID4gPiArICBJZiBLZXkgaXMgTlVMTCwgdGhlbiByZXR1cm4gRkFM U0UuDQo+ID4gPiA+ID4gKyAgSWYgS2V5U2l6ZSBpcyBub3QgbGFyZ2UgZW5vdWdoLCB0aGVuIHJl dHVybiBGQUxTRS4NCj4gPiA+ID4gPiArICBGb3IgUC0yNTYsIHRoZSBQZWVyUHVibGljU2l6ZSBp cyA2NC4gRmlyc3QgMzItYnl0ZSBpcyBYLCBTZWNvbmQgMzItDQo+IGJ5dGUgaXMgWS4NCj4gPiA+ ID4gPiArICBGb3IgUC0zODQsIHRoZSBQZWVyUHVibGljU2l6ZSBpcyA5Ni4gRmlyc3QgNDgtYnl0 ZSBpcyBYLCBTZWNvbmQgNDgtDQo+IGJ5dGUgaXMgWS4NCj4gPiA+ID4gPiArICBGb3IgUC01MjEs IHRoZSBQZWVyUHVibGljU2l6ZSBpcyAxMzIuIEZpcnN0IDY2LWJ5dGUgaXMgWCwgU2Vjb25kIDY2 LQ0KPiBieXRlIGlzIFkuDQo+ID4gPiA+ID4gKyAgQHBhcmFtW2luLCBvdXRdICBFY0NvbnRleHQg ICAgICAgICAgUG9pbnRlciB0byB0aGUgRUMgY29udGV4dC4NCj4gPiA+ID4gPiArICBAcGFyYW1b aW5dICAgICAgIFBlZXJQdWJsaWMgICAgICAgICBQb2ludGVyIHRvIHRoZSBwZWVyJ3MgcHVibGlj IFgsWS4NCj4gPiA+ID4gPiArICBAcGFyYW1baW5dICAgICAgIFBlZXJQdWJsaWNTaXplICAgICBT aXplIG9mIHBlZXIncyBwdWJsaWMgWCxZIGluIGJ5dGVzLg0KPiA+ID4gPiA+ICsgIEBwYXJhbVtp bl0gICAgICAgQ29tcHJlc3NGbGFnICAgICAgIEZsYWcgb2YgUGVlclB1YmxpYyBpcw0KPiBjb21w cmVzc2VkIG9yIG5vdC4NCj4gPiA+ID4gPiArICBAcGFyYW1bb3V0XSAgICAgIEtleSAgICAgICAg ICAgICAgICBQb2ludGVyIHRvIHRoZSBidWZmZXIgdG8gcmVjZWl2ZQ0KPiBnZW5lcmF0ZWQga2V5 Lg0KPiA+ID4gPiA+ICsgIEBwYXJhbVtpbiwgb3V0XSAgS2V5U2l6ZSAgICAgICAgICAgIE9uIGlu cHV0LCB0aGUgc2l6ZSBvZiBLZXkgYnVmZmVyIGluDQo+IGJ5dGVzLg0KPiA+ID4gPiA+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9uIG91dHB1dCwgdGhlIHNpemUgb2Yg ZGF0YSByZXR1cm5lZCBpbiBLZXkNCj4gYnVmZmVyIGluIGJ5dGVzLg0KPiA+ID4gPiA+ICsgIEBy ZXR2YWwgVFJVRSAgIEVDIGV4Y2hhbmdlZCBrZXkgZ2VuZXJhdGlvbiBzdWNjZWVkZWQuDQo+ID4g PiA+ID4gKyAgQHJldHZhbCBGQUxTRSAgRUMgZXhjaGFuZ2VkIGtleSBnZW5lcmF0aW9uIGZhaWxl ZC4NCj4gPiA+ID4gPiArICBAcmV0dmFsIEZBTFNFICBLZXlTaXplIGlzIG5vdCBsYXJnZSBlbm91 Z2guDQo+ID4gPiA+ID4gKyoqLw0KPiA+ID4gPiA+ICtCT09MRUFODQo+ID4gPiA+ID4gK0VGSUFQ SQ0KPiA+ID4gPiA+ICtFY0RoQ29tcHV0ZUtleSAoDQo+ID4gPiA+ID4gKyAgSU4gT1VUICBWT0lE ICAgICAgICAgKkVjQ29udGV4dCwNCj4gPiA+ID4gPiArICBJTiAgICAgIENPTlNUIFVJTlQ4ICAq UGVlclB1YmxpYywNCj4gPiA+ID4gPiArICBJTiAgICAgIFVJTlROICAgICAgICBQZWVyUHVibGlj U2l6ZSwNCj4gPiA+ID4gPiArICBJTiAgICAgIENPTlNUIElOVDMyICAqQ29tcHJlc3NGbGFnLA0K PiA+ID4gPiA+ICsgIE9VVCAgICAgVUlOVDggICAgICAgICpLZXksDQo+ID4gPiA+ID4gKyAgSU4g T1VUICBVSU5UTiAgICAgICAgKktleVNpemUNCj4gPiA+ID4gPiArICApOw0KPiA+ID4gPiA+ICsN Cj4gPiA+ID4gPiAgI2VuZGlmIC8vIF9fQkFTRV9DUllQVF9MSUJfSF9fDQo+ID4gPiA+ID4gZGlm ZiAtLWdpdCBhL0NyeXB0b1BrZy9MaWJyYXJ5L0Jhc2VDcnlwdExpYi9CYXNlQ3J5cHRMaWIuaW5m DQo+IGIvQ3J5cHRvUGtnL0xpYnJhcnkvQmFzZUNyeXB0TGliL0Jhc2VDcnlwdExpYi5pbmYNCj4g PiA+ID4gPiBpbmRleCA5ZTRiZTJmYjBkLi5hZGU2ZWUzZmRkIDEwMDY0NA0KPiA+ID4gPiA+IC0t LSBhL0NyeXB0b1BrZy9MaWJyYXJ5L0Jhc2VDcnlwdExpYi9CYXNlQ3J5cHRMaWIuaW5mDQo+ID4g PiA+ID4gKysrIGIvQ3J5cHRvUGtnL0xpYnJhcnkvQmFzZUNyeXB0TGliL0Jhc2VDcnlwdExpYi5p bmYNCj4gPiA+ID4gPiBAQCAtNTIsNiArNTIsOCBAQA0KPiA+ID4gPiA+ICAgIFBrL0NyeXB0VHMu Yw0KPiA+ID4gPiA+ICAgIFBrL0NyeXB0UnNhUHNzLmMNCj4gPiA+ID4gPiAgICBQay9DcnlwdFJz YVBzc1NpZ24uYw0KPiA+ID4gPiA+ICsgIFBrL0NyeXB0RWNOdWxsLmMNCj4gfCp8KnwqfCFnRWZp Q3J5cHRvUGtnVG9rZW5TcGFjZUd1aWQuUGNkT3BlbnNzbEVjRW5hYmxlZA0KPiA+ID4gPiA+ICsg IFBrL0NyeXB0RWMuYw0KPiB8KnwqfCp8Z0VmaUNyeXB0b1BrZ1Rva2VuU3BhY2VHdWlkLlBjZE9w ZW5zc2xFY0VuYWJsZWQNCj4gPiA+ID4NCj4gPiA+ID4gVGhlIHVzZSBvZiB0aGUgUENEIHRvIHNl bGVjdCB0aGUgZmlsZSBzaG91bGQgbm90IGJlIG5lZWRlZCBoZXJlLiAgVGhlDQo+ID4gPiA+IEVj IEZhbWlseSBhbmQgaW5kaXZpZHVhbCBzZXJ2aWNlIGVuYWJsZS9kaXNhYmxlIGZpZWxkcyBpbiB0 aGUNCj4gPiA+ID4gUENEX0NSWVBUT19TRVJWSUNFX0ZBTUlMWV9FTkFCTEUgc3RydWN0dXJlZCBQ Q0QgYXJlIGFsbCB0aGF0IGlzDQo+IG5lZWRlZCB0bw0KPiA+ID4gPiBkaXNhYmxlIHRoZSBFYyBz ZXJ2aWNlcy4NCj4gPiA+ID4NCj4gPiA+ID4gVGhlIFBDRCBnRWZpQ3J5cHRvUGtnVG9rZW5TcGFj ZUd1aWQuUGNkT3BlbnNzbEVjRW5hYmxlZCBzaG91bGQNCj4gYmUgcmVtb3ZlZA0KPiA+ID4gPiBj b21wbGV0ZWx5IGFzIHBhcnQgb2YgdGhpcyBwYXRjaCBzZXJpZXMuDQo+ID4gPiA+DQo+ID4gPiA+ ID4gICAgUGVtL0NyeXB0UGVtLmMNCj4gPiA+ID4gPiAgICBCbi9DcnlwdEJuLmMNCj4gPiA+ID4g Pg0KPiA+ID4gPiA+IGRpZmYgLS1naXQgYS9DcnlwdG9Qa2cvTGlicmFyeS9CYXNlQ3J5cHRMaWIv UGVpQ3J5cHRMaWIuaW5mDQo+IGIvQ3J5cHRvUGtnL0xpYnJhcnkvQmFzZUNyeXB0TGliL1BlaUNy eXB0TGliLmluZg0KPiA+ID4gPiA+IGluZGV4IDY1YWQyM2ZiODEuLjM4M2RmMmIyM2MgMTAwNjQ0 DQo+ID4gPiA+ID4gLS0tIGEvQ3J5cHRvUGtnL0xpYnJhcnkvQmFzZUNyeXB0TGliL1BlaUNyeXB0 TGliLmluZg0KPiA+ID4gPiA+ICsrKyBiL0NyeXB0b1BrZy9MaWJyYXJ5L0Jhc2VDcnlwdExpYi9Q ZWlDcnlwdExpYi5pbmYNCj4gPiA+ID4gPiBAQCAtNTgsNiArNTgsNyBAQA0KPiA+ID4gPiA+ICAg IFBrL0NyeXB0VHNOdWxsLmMNCj4gPiA+ID4gPiAgICBQay9DcnlwdFJzYVBzcy5jDQo+ID4gPiA+ ID4gICAgUGsvQ3J5cHRSc2FQc3NTaWduTnVsbC5jDQo+ID4gPiA+ID4gKyAgUGsvQ3J5cHRFY051 bGwuYw0KPiA+ID4gPiA+ICAgIFBlbS9DcnlwdFBlbU51bGwuYw0KPiA+ID4gPiA+ICAgIFJhbmQv Q3J5cHRSYW5kTnVsbC5jDQo+ID4gPiA+ID4gICAgQm4vQ3J5cHRCbk51bGwuYw0KPiA+ID4gPiA+ IGRpZmYgLS1naXQgYS9DcnlwdG9Qa2cvTGlicmFyeS9CYXNlQ3J5cHRMaWIvUGsvQ3J5cHRFYy5j DQo+IGIvQ3J5cHRvUGtnL0xpYnJhcnkvQmFzZUNyeXB0TGliL1BrL0NyeXB0RWMuYw0KPiA+ID4g PiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+ID4gPiA+ID4gaW5kZXggMDAwMDAwMDAwMC4uMzk2 YzgxOTgzNA0KPiA+ID4gPiA+IC0tLSAvZGV2L251bGwNCj4gPiA+ID4gPiArKysgYi9DcnlwdG9Q a2cvTGlicmFyeS9CYXNlQ3J5cHRMaWIvUGsvQ3J5cHRFYy5jDQo+ID4gPiA+ID4gQEAgLTAsMCAr MSw3NjUgQEANCj4gPiA+ID4gPiArLyoqIEBmaWxlDQo+ID4gPiA+ID4gKyAgRWxsaXB0aWMgQ3Vy dmUgYW5kIEVDREggQVBJIGltcGxlbWVudGF0aW9uIGJhc2VkIG9uIE9wZW5TU0wNCj4gPiA+ID4g PiArDQo+ID4gPiA+ID4gKyAgQ29weXJpZ2h0IChjKSAyMDIyLCBJbnRlbCBDb3Jwb3JhdGlvbi4g QWxsIHJpZ2h0cyByZXNlcnZlZC48QlI+DQo+ID4gPiA+ID4gKyAgU1BEWC1MaWNlbnNlLUlkZW50 aWZpZXI6IEJTRC0yLUNsYXVzZS1QYXRlbnQNCj4gPiA+ID4gPiArDQo+ID4gPiA+ID4gKyoqLw0K PiA+ID4gPiA+ICsNCj4gPiA+ID4gPiArI2luY2x1ZGUgIkludGVybmFsQ3J5cHRMaWIuaCINCj4g PiA+ID4gPiArI2luY2x1ZGUgPG9wZW5zc2wvb2JqZWN0cy5oPg0KPiA+ID4gPiA+ICsjaW5jbHVk ZSA8b3BlbnNzbC9ibi5oPg0KPiA+ID4gPiA+ICsjaW5jbHVkZSA8b3BlbnNzbC9lYy5oPg0KPiA+ ID4gPiA+ICsNCj4gPiA+ID4gPiArLy8NCj4gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KPiA9PT09PT09PT09PT09PT09PT09PT09PT09 PT0NCj4gPiA+ID4gPiArLy8gICAgQmFzaWMgRWxsaXB0aWMgQ3VydmUgUHJpbWl0aXZlcw0KPiA+ ID4gPiA+ICsvLw0KPiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09DQo+ID09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KPiA+ID4gPiA+ ICsNCj4gPiA+ID4gPiArLyoqDQo+ID4gPiA+ID4gKyAgUmV0dXJuIHRoZSBOaWQgb2YgY2VydGFp biBFQ0MgY3VydmUuDQo+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ICsgIEBwYXJhbVtpbl0gIENyeXB0 b05pZCAgIElkZW50aWZ5aW5nIG51bWJlciBmb3IgdGhlIEVDQyBjdXJ2ZQ0KPiAoRGVmaW5lZCBp bg0KPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgIEJhc2VDcnlwdExpYi5oKS4N Cj4gPiA+ID4gPiArDQo+ID4gPiA+ID4gKyAgQHJldHZhbCAhPS0xICAgIE9uIHN1Y2Nlc3MuDQo+ ID4gPiA+ID4gKyAgQHJldHZhbCAtMSAgICAgIEVDQyBjdXJ2ZSBub3Qgc3VwcG9ydGVkLg0KPiA+ ID4gPiA+ICsqKi8NCj4gPiA+ID4gPiArU1RBVElDDQo+ID4gPiA+ID4gK0lOVDMyDQo+ID4gPiA+ ID4gK0NyeXB0b05pZFRvT3BlbnNzbE5pZCAoDQo+ID4gPiA+ID4gKyAgSU4gVUlOVE4gIENyeXB0 b05pZA0KPiA+ID4gPiA+ICsgICkNCj4gPiA+ID4gPiArew0KPiA+ID4gPiA+ICsgIElOVDMyICBO aWQ7DQo+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ICsgIHN3aXRjaCAoQ3J5cHRvTmlkKSB7DQo+ID4g PiA+ID4gKyAgICBjYXNlIENSWVBUT19OSURfU0VDUDI1NlIxOg0KPiA+ID4gPiA+ICsgICAgICBO aWQgPSBOSURfWDlfNjJfcHJpbWUyNTZ2MTsNCj4gPiA+ID4gPiArICAgICAgYnJlYWs7DQo+ID4g PiA+ID4gKyAgICBjYXNlIENSWVBUT19OSURfU0VDUDM4NFIxOg0KPiA+ID4gPiA+ICsgICAgICBO aWQgPSBOSURfc2VjcDM4NHIxOw0KPiA+ID4gPiA+ICsgICAgICBicmVhazsNCj4gPiA+ID4gPiAr ICAgIGNhc2UgQ1JZUFRPX05JRF9TRUNQNTIxUjE6DQo+ID4gPiA+ID4gKyAgICAgIE5pZCA9IE5J RF9zZWNwNTIxcjE7DQo+ID4gPiA+ID4gKyAgICAgIGJyZWFrOw0KPiA+ID4gPiA+ICsgICAgZGVm YXVsdDoNCj4gPiA+ID4gPiArICAgICAgcmV0dXJuIC0xOw0KPiA+ID4gPiA+ICsgIH0NCj4gPiA+ ID4gPiArDQo+ID4gPiA+ID4gKyAgcmV0dXJuIE5pZDsNCj4gPiA+ID4gPiArfQ0KPiA+ID4gPiA+ ICsNCj4gPiA+ID4gPiArLyoqDQo+ID4gPiA+ID4gKyAgSW5pdGlhbGl6ZSBuZXcgb3BhcXVlIEVj R3JvdXAgb2JqZWN0LiBUaGlzIG9iamVjdCByZXByZXNlbnRzIGFuIEVDDQo+IGN1cnZlIGFuZA0K PiA+ID4gPiA+ICsgIGFuZCBpcyB1c2VkIGZvciBjYWxjdWxhdGlvbiB3aXRoaW4gdGhpcyBncm91 cC4gVGhpcyBvYmplY3Qgc2hvdWxkIGJlDQo+IGZyZWVkDQo+ID4gPiA+ID4gKyAgdXNpbmcgRWNH cm91cEZyZWUoKSBmdW5jdGlvbi4NCj4gPiA+ID4gPiArDQo+ID4gPiA+ID4gKyAgQHBhcmFtW2lu XSAgQ3J5cHRvTmlkICAgSWRlbnRpZnlpbmcgbnVtYmVyIGZvciB0aGUgRUNDIGN1cnZlDQo+IChE ZWZpbmVkIGluDQo+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgQmFzZUNyeXB0 TGliLmgpLg0KPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiArICBAcmV0dmFsIEVjR3JvdXAgb2JqZWN0 ICBPbiBzdWNjZXNzLg0KPiA+ID4gPiA+ICsgIEByZXR2YWwgTlVMTCAgICAgICAgICAgIE9uIGZh aWx1cmUuDQo+ID4gPiA+ID4gKyoqLw0KPiA+ID4gPiA+ICtWT0lEICoNCj4gPiA+ID4gPiArRUZJ QVBJDQo+ID4gPiA+ID4gK0VjR3JvdXBJbml0ICgNCj4gPiA+ID4gPiArICBJTiBVSU5UTiAgQ3J5 cHRvTmlkDQo+ID4gPiA+ID4gKyAgKQ0KPiA+ID4gPiA+ICt7DQo+ID4gPiA+ID4gKyAgSU5UMzIg IE5pZDsNCj4gPiA+ID4gPiArDQo+ID4gPiA+ID4gKyAgTmlkID0gQ3J5cHRvTmlkVG9PcGVuc3Ns TmlkIChDcnlwdG9OaWQpOw0KPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiArICBpZiAoTmlkIDwgMCkg ew0KPiA+ID4gPiA+ICsgICAgcmV0dXJuIE5VTEw7DQo+ID4gPiA+ID4gKyAgfQ0KPiA+ID4gPiA+ ICsNCj4gPiA+ID4gPiArICByZXR1cm4gRUNfR1JPVVBfbmV3X2J5X2N1cnZlX25hbWUgKE5pZCk7 DQo+ID4gPiA+ID4gK30NCj4gPiA+ID4gPiArDQo+ID4gPiA+ID4gKy8qKg0KPiA+ID4gPiA+ICsg IEdldCBFQyBjdXJ2ZSBwYXJhbWV0ZXJzLiBXaGlsZSBlbGxpcHRpYyBjdXJ2ZSBlcXVhdGlvbiBp cyBZXjIgbW9kDQo+IFAgPSAoWF4zICsgQVggKyBCKSBNb2QgUC4NCj4gPiA+ID4gPiArICBUaGlz IGZ1bmN0aW9uIHdpbGwgc2V0IHRoZSBwcm92aWRlZCBCaWcgTnVtYmVyIG9iamVjdHMgIHRvIHRo ZQ0KPiBjb3JyZXNwb25kaW5nDQo+ID4gPiA+ID4gKyAgdmFsdWVzLiBUaGUgY2FsbGVyIG5lZWRz IHRvIG1ha2Ugc3VyZSBhbGwgdGhlICJvdXQiIEJpZ051bWJlcg0KPiBwYXJhbWV0ZXJzDQo+ID4g PiA+ID4gKyAgYXJlIHByb3Blcmx5IGluaXRpYWxpemVkLg0KPiA+ID4gPiA+ICsNCj4gPiA+ID4g PiArICBAcGFyYW1baW5dICBFY0dyb3VwICAgIEVDIGdyb3VwIG9iamVjdC4NCj4gPiA+ID4gPiAr ICBAcGFyYW1bb3V0XSBCblByaW1lICAgIEdyb3VwIHByaW1lIG51bWJlci4NCj4gPiA+ID4gPiAr ICBAcGFyYW1bb3V0XSBCbkEgICAgICAgIEEgY29lZmZpY2llbnQuDQo+ID4gPiA+ID4gKyAgQHBh cmFtW291dF0gQm5CICAgICAgICBCIGNvZWZmaWNpZW50Li4NCj4gPiA+ID4gPiArICBAcGFyYW1b aW5dICBCbkN0eCAgICAgIEJOIGNvbnRleHQuDQo+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ICsgIEBy ZXR2YWwgVFJVRSAgICAgICAgICBPbiBzdWNjZXNzLg0KPiA+ID4gPiA+ICsgIEByZXR2YWwgRkFM U0UgICAgICAgICBPdGhlcndpc2UuDQo+ID4gPiA+ID4gKyoqLw0KPiA+ID4gPiA+ICtCT09MRUFO DQo+ID4gPiA+ID4gK0VGSUFQSQ0KPiA+ID4gPiA+ICtFY0dyb3VwR2V0Q3VydmUgKA0KPiA+ID4g PiA+ICsgIElOIENPTlNUIFZPSUQgICpFY0dyb3VwLA0KPiA+ID4gPiA+ICsgIE9VVCBWT0lEICAg ICAgICpCblByaW1lLA0KPiA+ID4gPiA+ICsgIE9VVCBWT0lEICAgICAgICpCbkEsDQo+ID4gPiA+ ID4gKyAgT1VUIFZPSUQgICAgICAgKkJuQiwNCj4gPiA+ID4gPiArICBJTiBWT0lEICAgICAgICAq Qm5DdHgNCj4gPiA+ID4gPiArICApDQo+ID4gPiA+ID4gK3sNCj4gPiA+ID4gPiArICByZXR1cm4g KEJPT0xFQU4pRUNfR1JPVVBfZ2V0X2N1cnZlIChFY0dyb3VwLCBCblByaW1lLCBCbkEsDQo+IEJu QiwgQm5DdHgpOw0KPiA+ID4gPiA+ICt9DQo+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ICsvKioNCj4g PiA+ID4gPiArICBHZXQgRUMgZ3JvdXAgb3JkZXIuDQo+ID4gPiA+ID4gKyAgVGhpcyBmdW5jdGlv biB3aWxsIHNldCB0aGUgcHJvdmlkZWQgQmlnIE51bWJlciBvYmplY3QgdG8gdGhlDQo+IGNvcnJl c3BvbmRpbmcNCj4gPiA+ID4gPiArICB2YWx1ZS4gVGhlIGNhbGxlciBuZWVkcyB0byBtYWtlIHN1 cmUgdGhhdCB0aGUgIm91dCIgQmlnTnVtYmVyDQo+IHBhcmFtZXRlcg0KPiA+ID4gPiA+ICsgIGlz IHByb3Blcmx5IGluaXRpYWxpemVkLg0KPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiArICBAcGFyYW1b aW5dICBFY0dyb3VwICAgRUMgZ3JvdXAgb2JqZWN0Lg0KPiA+ID4gPiA+ICsgIEBwYXJhbVtvdXRd IEJuT3JkZXIgICBHcm91cCBwcmltZSBudW1iZXIuDQo+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ICsg IEByZXR2YWwgVFJVRSAgICAgICAgICBPbiBzdWNjZXNzLg0KPiA+ID4gPiA+ICsgIEByZXR2YWwg RkFMU0UgICAgICAgICBPdGhlcndpc2UuDQo+ID4gPiA+ID4gKyoqLw0KPiA+ID4gPiA+ICtCT09M RUFODQo+ID4gPiA+ID4gK0VGSUFQSQ0KPiA+ID4gPiA+ICtFY0dyb3VwR2V0T3JkZXIgKA0KPiA+ ID4gPiA+ICsgIElOIFZPSUQgICAqRWNHcm91cCwNCj4gPiA+ID4gPiArICBPVVQgVk9JRCAgKkJu T3JkZXINCj4gPiA+ID4gPiArICApDQo+ID4gPiA+ID4gK3sNCj4gPiA+ID4gPiArICByZXR1cm4g KEJPT0xFQU4pRUNfR1JPVVBfZ2V0X29yZGVyIChFY0dyb3VwLCBCbk9yZGVyLA0KPiBOVUxMKTsN Cj4gPiA+ID4gPiArfQ0KPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiArLyoqDQo+ID4gPiA+ID4gKyAg RnJlZSBwcmV2aW91c2x5IGFsbG9jYXRlZCBFQyBncm91cCBvYmplY3QgdXNpbmcgRWNHcm91cElu aXQoKS4NCj4gPiA+ID4gPiArDQo+ID4gPiA+ID4gKyAgQHBhcmFtW2luXSAgRWNHcm91cCAgIEVD IGdyb3VwIG9iamVjdCB0byBmcmVlLg0KPiA+ID4gPiA+ICsqKi8NCj4gPiA+ID4gPiArVk9JRA0K PiA+ID4gPiA+ICtFRklBUEkNCj4gPiA+ID4gPiArRWNHcm91cEZyZWUgKA0KPiA+ID4gPiA+ICsg IElOIFZPSUQgICpFY0dyb3VwDQo+ID4gPiA+ID4gKyAgKQ0KPiA+ID4gPiA+ICt7DQo+ID4gPiA+ ID4gKyAgRUNfR1JPVVBfZnJlZSAoRWNHcm91cCk7DQo+ID4gPiA+ID4gK30NCj4gPiA+ID4gPiAr DQo+ID4gPiA+ID4gKy8qKg0KPiA+ID4gPiA+ICsgIEluaXRpYWxpemUgbmV3IG9wYXF1ZSBFQyBQ b2ludCBvYmplY3QuIFRoaXMgb2JqZWN0IHJlcHJlc2VudHMgYW4gRUMNCj4gcG9pbnQNCj4gPiA+ ID4gPiArICB3aXRoaW4gdGhlIGdpdmVuIEVDIGdyb3VwIChjdXJ2ZSkuDQo+ID4gPiA+ID4gKw0K PiA+ID4gPiA+ICsgIEBwYXJhbVtpbl0gIEVDIEdyb3VwLCBwcm9wZXJseSBpbml0aWFsaXplZCB1 c2luZyBFY0dyb3VwSW5pdCgpLg0KPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiArICBAcmV0dmFsIEVD IFBvaW50IG9iamVjdCAgT24gc3VjY2Vzcy4NCj4gPiA+ID4gPiArICBAcmV0dmFsIE5VTEwgICAg ICAgICAgICAgT24gZmFpbHVyZS4NCj4gPiA+ID4gPiArKiovDQo+ID4gPiA+ID4gK1ZPSUQgKg0K PiA+ID4gPiA+ICtFRklBUEkNCj4gPiA+ID4gPiArRWNQb2ludEluaXQgKA0KPiA+ID4gPiA+ICsg IElOIENPTlNUIFZPSUQgICpFY0dyb3VwDQo+ID4gPiA+ID4gKyAgKQ0KPiA+ID4gPiA+ICt7DQo+ ID4gPiA+ID4gKyAgcmV0dXJuIEVDX1BPSU5UX25ldyAoRWNHcm91cCk7DQo+ID4gPiA+ID4gK30N Cj4gPiA+ID4gPiArDQo+ID4gPiA+ID4gKy8qKg0KPiA+ID4gPiA+ICsgIEZyZWUgcHJldmlvdXNs eSBhbGxvY2F0ZWQgRUMgUG9pbnQgb2JqZWN0IHVzaW5nIEVjUG9pbnRJbml0KCkuDQo+ID4gPiA+ ID4gKw0KPiA+ID4gPiA+ICsgIEBwYXJhbVtpbl0gIEVjUG9pbnQgICBFQyBQb2ludCB0byBmcmVl Lg0KPiA+ID4gPiA+ICsgIEBwYXJhbVtpbl0gIENsZWFyICAgICBUUlVFIGlmZiB0aGUgbWVtb3J5 IHNob3VsZCBiZSBjbGVhcmVkLg0KPiA+ID4gPiA+ICsqKi8NCj4gPiA+ID4gPiArVk9JRA0KPiA+ ID4gPiA+ICtFRklBUEkNCj4gPiA+ID4gPiArRWNQb2ludERlSW5pdCAoDQo+ID4gPiA+ID4gKyAg SU4gVk9JRCAgICAgKkVjUG9pbnQsDQo+ID4gPiA+ID4gKyAgSU4gQk9PTEVBTiAgQ2xlYXINCj4g PiA+ID4gPiArICApDQo+ID4gPiA+ID4gK3sNCj4gPiA+ID4gPiArICBpZiAoQ2xlYXIpIHsNCj4g PiA+ID4gPiArICAgIEVDX1BPSU5UX2NsZWFyX2ZyZWUgKEVjUG9pbnQpOw0KPiA+ID4gPiA+ICsg IH0gZWxzZSB7DQo+ID4gPiA+ID4gKyAgICBFQ19QT0lOVF9mcmVlIChFY1BvaW50KTsNCj4gPiA+ ID4gPiArICB9DQo+ID4gPiA+ID4gK30NCj4gPiA+ID4gPiArDQo+ID4gPiA+ID4gKy8qKg0KPiA+ ID4gPiA+ICsgIEdldCBFQyBwb2ludCBhZmZpbmUgKHgseSkgY29vcmRpbmF0ZXMuDQo+ID4gPiA+ ID4gKyAgVGhpcyBmdW5jdGlvbiB3aWxsIHNldCB0aGUgcHJvdmlkZWQgQmlnIE51bWJlciBvYmpl Y3RzIHRvIHRoZQ0KPiBjb3JyZXNwb25kaW5nDQo+ID4gPiA+ID4gKyAgdmFsdWVzLiBUaGUgY2Fs bGVyIG5lZWRzIHRvIG1ha2Ugc3VyZSBhbGwgdGhlICJvdXQiIEJpZ051bWJlcg0KPiBwYXJhbWV0 ZXJzDQo+ID4gPiA+ID4gKyAgYXJlIHByb3Blcmx5IGluaXRpYWxpemVkLg0KPiA+ID4gPiA+ICsN Cj4gPiA+ID4gPiArICBAcGFyYW1baW5dICBFY0dyb3VwICAgIEVDIGdyb3VwIG9iamVjdC4NCj4g PiA+ID4gPiArICBAcGFyYW1baW5dICBFY1BvaW50ICAgIEVDIHBvaW50IG9iamVjdC4NCj4gPiA+ ID4gPiArICBAcGFyYW1bb3V0XSBCblggICAgICAgIFggY29vcmRpbmF0ZS4NCj4gPiA+ID4gPiAr ICBAcGFyYW1bb3V0XSBCblkgICAgICAgIFkgY29vcmRpbmF0ZS4NCj4gPiA+ID4gPiArICBAcGFy YW1baW5dICBCbkN0eCAgICAgIEJOIGNvbnRleHQsIGNyZWF0ZWQgd2l0aA0KPiBCaWdOdW1OZXdD b250ZXh0KCkuDQo+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ICsgIEByZXR2YWwgVFJVRSAgICAgICAg ICBPbiBzdWNjZXNzLg0KPiA+ID4gPiA+ICsgIEByZXR2YWwgRkFMU0UgICAgICAgICBPdGhlcndp c2UuDQo+ID4gPiA+ID4gKyoqLw0KPiA+ID4gPiA+ICtCT09MRUFODQo+ID4gPiA+ID4gK0VGSUFQ SQ0KPiA+ID4gPiA+ICtFY1BvaW50R2V0QWZmaW5lQ29vcmRpbmF0ZXMgKA0KPiA+ID4gPiA+ICsg IElOIENPTlNUIFZPSUQgICpFY0dyb3VwLA0KPiA+ID4gPiA+ICsgIElOIENPTlNUIFZPSUQgICpF Y1BvaW50LA0KPiA+ID4gPiA+ICsgIE9VVCBWT0lEICAgICAgICpCblgsDQo+ID4gPiA+ID4gKyAg T1VUIFZPSUQgICAgICAgKkJuWSwNCj4gPiA+ID4gPiArICBJTiBWT0lEICAgICAgICAqQm5DdHgN Cj4gPiA+ID4gPiArICApDQo+ID4gPiA+ID4gK3sNCj4gPiA+ID4gPiArICByZXR1cm4gKEJPT0xF QU4pRUNfUE9JTlRfZ2V0X2FmZmluZV9jb29yZGluYXRlcyAoRWNHcm91cCwNCj4gRWNQb2ludCwg Qm5YLCBCblksIEJuQ3R4KTsNCj4gPiA+ID4gPiArfQ0KPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiAr LyoqDQo+ID4gPiA+ID4gKyAgU2V0IEVDIHBvaW50IGFmZmluZSAoeCx5KSBjb29yZGluYXRlcy4N Cj4gPiA+ID4gPiArDQo+ID4gPiA+ID4gKyAgQHBhcmFtW2luXSAgRWNHcm91cCAgICBFQyBncm91 cCBvYmplY3QuDQo+ID4gPiA+ID4gKyAgQHBhcmFtW2luXSAgRWNQb2ludCAgICBFQyBwb2ludCBv YmplY3QuDQo+ID4gPiA+ID4gKyAgQHBhcmFtW2luXSAgQm5YICAgICAgICBYIGNvb3JkaW5hdGUu DQo+ID4gPiA+ID4gKyAgQHBhcmFtW2luXSAgQm5ZICAgICAgICBZIGNvb3JkaW5hdGUuDQo+ID4g PiA+ID4gKyAgQHBhcmFtW2luXSAgQm5DdHggICAgICBCTiBjb250ZXh0LCBjcmVhdGVkIHdpdGgN Cj4gQmlnTnVtTmV3Q29udGV4dCgpLg0KPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiArICBAcmV0dmFs IFRSVUUgICAgICAgICAgT24gc3VjY2Vzcy4NCj4gPiA+ID4gPiArICBAcmV0dmFsIEZBTFNFICAg ICAgICAgT3RoZXJ3aXNlLg0KPiA+ID4gPiA+ICsqKi8NCj4gPiA+ID4gPiArQk9PTEVBTg0KPiA+ ID4gPiA+ICtFRklBUEkNCj4gPiA+ID4gPiArRWNQb2ludFNldEFmZmluZUNvb3JkaW5hdGVzICgN Cj4gPiA+ID4gPiArICBJTiBDT05TVCBWT0lEICAqRWNHcm91cCwNCj4gPiA+ID4gPiArICBJTiBW T0lEICAgICAgICAqRWNQb2ludCwNCj4gPiA+ID4gPiArICBJTiBDT05TVCBWT0lEICAqQm5YLA0K PiA+ID4gPiA+ICsgIElOIENPTlNUIFZPSUQgICpCblksDQo+ID4gPiA+ID4gKyAgSU4gVk9JRCAg ICAgICAgKkJuQ3R4DQo+ID4gPiA+ID4gKyAgKQ0KPiA+ID4gPiA+ICt7DQo+ID4gPiA+ID4gKyAg cmV0dXJuIChCT09MRUFOKUVDX1BPSU5UX3NldF9hZmZpbmVfY29vcmRpbmF0ZXMgKEVjR3JvdXAs DQo+IEVjUG9pbnQsIEJuWCwgQm5ZLCBCbkN0eCk7DQo+ID4gPiA+ID4gK30NCj4gPiA+ID4gPiAr DQo+ID4gPiA+ID4gKy8qKg0KPiA+ID4gPiA+ICsgIEVDIFBvaW50IGFkZGl0aW9uLiBFY1BvaW50 UmVzdWx0ID0gRWNQb2ludEEgKyBFY1BvaW50Qi4NCj4gPiA+ID4gPiArDQo+ID4gPiA+ID4gKyAg QHBhcmFtW2luXSAgRWNHcm91cCAgICAgICAgICBFQyBncm91cCBvYmplY3QuDQo+ID4gPiA+ID4g KyAgQHBhcmFtW291dF0gRWNQb2ludFJlc3VsdCAgICBFQyBwb2ludCB0byBob2xkIHRoZSByZXN1 bHQuIFRoZQ0KPiBwb2ludCBzaG91bGQNCj4gPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGJlIHByb3Blcmx5IGluaXRpYWxpemVkLg0KPiA+ID4gPiA+ICsgIEBwYXJhbVtp bl0gIEVjUG9pbnRBICAgICAgICAgRUMgUG9pbnQuDQo+ID4gPiA+ID4gKyAgQHBhcmFtW2luXSAg RWNQb2ludEIgICAgICAgICBFQyBQb2ludC4NCj4gPiA+ID4gPiArICBAcGFyYW1baW5dICBCbkN0 eCAgICAgICAgICAgIEJOIGNvbnRleHQsIGNyZWF0ZWQgd2l0aA0KPiBCaWdOdW1OZXdDb250ZXh0 KCkuDQo+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ICsgIEByZXR2YWwgVFJVRSAgICAgICAgICBPbiBz dWNjZXNzLg0KPiA+ID4gPiA+ICsgIEByZXR2YWwgRkFMU0UgICAgICAgICBPdGhlcndpc2UuDQo+ ID4gPiA+ID4gKyoqLw0KPiA+ID4gPiA+ICtCT09MRUFODQo+ID4gPiA+ID4gK0VGSUFQSQ0KPiA+ ID4gPiA+ICtFY1BvaW50QWRkICgNCj4gPiA+ID4gPiArICBJTiBDT05TVCBWT0lEICAqRWNHcm91 cCwNCj4gPiA+ID4gPiArICBPVVQgVk9JRCAgICAgICAqRWNQb2ludFJlc3VsdCwNCj4gPiA+ID4g PiArICBJTiBDT05TVCBWT0lEICAqRWNQb2ludEEsDQo+ID4gPiA+ID4gKyAgSU4gQ09OU1QgVk9J RCAgKkVjUG9pbnRCLA0KPiA+ID4gPiA+ICsgIElOIFZPSUQgICAgICAgICpCbkN0eA0KPiA+ID4g PiA+ICsgICkNCj4gPiA+ID4gPiArew0KPiA+ID4gPiA+ICsgIHJldHVybiAoQk9PTEVBTilFQ19Q T0lOVF9hZGQgKEVjR3JvdXAsIEVjUG9pbnRSZXN1bHQsDQo+IEVjUG9pbnRBLCBFY1BvaW50Qiwg Qm5DdHgpOw0KPiA+ID4gPiA+ICt9DQo+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ICsvKioNCj4gPiA+ ID4gPiArICBWYXJpYWJsZSBFQyBwb2ludCBtdWx0aXBsaWNhdGlvbi4gRWNQb2ludFJlc3VsdCA9 IEVjUG9pbnQgKg0KPiBCblBTY2FsYXIuDQo+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ICsgIEBwYXJh bVtpbl0gIEVjR3JvdXAgICAgICAgICAgRUMgZ3JvdXAgb2JqZWN0Lg0KPiA+ID4gPiA+ICsgIEBw YXJhbVtvdXRdIEVjUG9pbnRSZXN1bHQgICAgRUMgcG9pbnQgdG8gaG9sZCB0aGUgcmVzdWx0LiBU aGUNCj4gcG9pbnQgc2hvdWxkDQo+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBiZSBwcm9wZXJseSBpbml0aWFsaXplZC4NCj4gPiA+ID4gPiArICBAcGFyYW1baW5dICBF Y1BvaW50ICAgICAgICAgIEVDIFBvaW50Lg0KPiA+ID4gPiA+ICsgIEBwYXJhbVtpbl0gIEJuUFNj YWxhciAgICAgICAgUCBTY2FsYXIuDQo+ID4gPiA+ID4gKyAgQHBhcmFtW2luXSAgQm5DdHggICAg ICAgICAgICBCTiBjb250ZXh0LCBjcmVhdGVkIHdpdGgNCj4gQmlnTnVtTmV3Q29udGV4dCgpLg0K PiA+ID4gPiA+ICsNCj4gPiA+ID4gPiArICBAcmV0dmFsIFRSVUUgICAgICAgICAgT24gc3VjY2Vz cy4NCj4gPiA+ID4gPiArICBAcmV0dmFsIEZBTFNFICAgICAgICAgT3RoZXJ3aXNlLg0KPiA+ID4g PiA+ICsqKi8NCj4gPiA+ID4gPiArQk9PTEVBTg0KPiA+ID4gPiA+ICtFRklBUEkNCj4gPiA+ID4g PiArRWNQb2ludE11bCAoDQo+ID4gPiA+ID4gKyAgSU4gQ09OU1QgVk9JRCAgKkVjR3JvdXAsDQo+ ID4gPiA+ID4gKyAgT1VUIFZPSUQgICAgICAgKkVjUG9pbnRSZXN1bHQsDQo+ID4gPiA+ID4gKyAg SU4gQ09OU1QgVk9JRCAgKkVjUG9pbnQsDQo+ID4gPiA+ID4gKyAgSU4gQ09OU1QgVk9JRCAgKkJu UFNjYWxhciwNCj4gPiA+ID4gPiArICBJTiBWT0lEICAgICAgICAqQm5DdHgNCj4gPiA+ID4gPiAr ICApDQo+ID4gPiA+ID4gK3sNCj4gPiA+ID4gPiArICByZXR1cm4gKEJPT0xFQU4pRUNfUE9JTlRf bXVsIChFY0dyb3VwLCBFY1BvaW50UmVzdWx0LCBOVUxMLA0KPiBFY1BvaW50LCBCblBTY2FsYXIs IEJuQ3R4KTsNCj4gPiA+ID4gPiArfQ0KPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiArLyoqDQo+ID4g PiA+ID4gKyAgQ2FsY3VsYXRlIHRoZSBpbnZlcnNlIG9mIHRoZSBzdXBwbGllZCBFQyBwb2ludC4N Cj4gPiA+ID4gPiArDQo+ID4gPiA+ID4gKyAgQHBhcmFtW2luXSAgICAgRWNHcm91cCAgIEVDIGdy b3VwIG9iamVjdC4NCj4gPiA+ID4gPiArICBAcGFyYW1baW4sb3V0XSBFY1BvaW50ICAgRUMgcG9p bnQgdG8gaW52ZXJ0Lg0KPiA+ID4gPiA+ICsgIEBwYXJhbVtpbl0gICAgIEJuQ3R4ICAgICBCTiBj b250ZXh0LCBjcmVhdGVkIHdpdGgNCj4gQmlnTnVtTmV3Q29udGV4dCgpLg0KPiA+ID4gPiA+ICsN Cj4gPiA+ID4gPiArICBAcmV0dmFsIFRSVUUgICAgICAgICAgT24gc3VjY2Vzcy4NCj4gPiA+ID4g PiArICBAcmV0dmFsIEZBTFNFICAgICAgICAgT3RoZXJ3aXNlLg0KPiA+ID4gPiA+ICsqKi8NCj4g PiA+ID4gPiArQk9PTEVBTg0KPiA+ID4gPiA+ICtFRklBUEkNCj4gPiA+ID4gPiArRWNQb2ludElu dmVydCAoDQo+ID4gPiA+ID4gKyAgSU4gQ09OU1QgVk9JRCAgKkVjR3JvdXAsDQo+ID4gPiA+ID4g KyAgSU4gT1VUIFZPSUQgICAgKkVjUG9pbnQsDQo+ID4gPiA+ID4gKyAgSU4gVk9JRCAgICAgICAg KkJuQ3R4DQo+ID4gPiA+ID4gKyAgKQ0KPiA+ID4gPiA+ICt7DQo+ID4gPiA+ID4gKyAgcmV0dXJu IChCT09MRUFOKUVDX1BPSU5UX2ludmVydCAoRWNHcm91cCwgRWNQb2ludCwgQm5DdHgpOw0KPiA+ ID4gPiA+ICt9DQo+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ICsvKioNCj4gPiA+ID4gPiArICBDaGVj ayBpZiB0aGUgc3VwcGxpZWQgcG9pbnQgaXMgb24gRUMgY3VydmUuDQo+ID4gPiA+ID4gKw0KPiA+ ID4gPiA+ICsgIEBwYXJhbVtpbl0gIEVjR3JvdXAgICBFQyBncm91cCBvYmplY3QuDQo+ID4gPiA+ ID4gKyAgQHBhcmFtW2luXSAgRWNQb2ludCAgIEVDIHBvaW50IHRvIGNoZWNrLg0KPiA+ID4gPiA+ ICsgIEBwYXJhbVtpbl0gIEJuQ3R4ICAgICBCTiBjb250ZXh0LCBjcmVhdGVkIHdpdGgNCj4gQmln TnVtTmV3Q29udGV4dCgpLg0KPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiArICBAcmV0dmFsIFRSVUUg ICAgICAgICAgT24gY3VydmUuDQo+ID4gPiA+ID4gKyAgQHJldHZhbCBGQUxTRSAgICAgICAgIE90 aGVyd2lzZS4NCj4gPiA+ID4gPiArKiovDQo+ID4gPiA+ID4gK0JPT0xFQU4NCj4gPiA+ID4gPiAr RUZJQVBJDQo+ID4gPiA+ID4gK0VjUG9pbnRJc09uQ3VydmUgKA0KPiA+ID4gPiA+ICsgIElOIENP TlNUIFZPSUQgICpFY0dyb3VwLA0KPiA+ID4gPiA+ICsgIElOIENPTlNUIFZPSUQgICpFY1BvaW50 LA0KPiA+ID4gPiA+ICsgIElOIFZPSUQgICAgICAgICpCbkN0eA0KPiA+ID4gPiA+ICsgICkNCj4g PiA+ID4gPiArew0KPiA+ID4gPiA+ICsgIHJldHVybiBFQ19QT0lOVF9pc19vbl9jdXJ2ZSAoRWNH cm91cCwgRWNQb2ludCwgQm5DdHgpID09IDE7DQo+ID4gPiA+ID4gK30NCj4gPiA+ID4gPiArDQo+ ID4gPiA+ID4gKy8qKg0KPiA+ID4gPiA+ICsgIENoZWNrIGlmIHRoZSBzdXBwbGllZCBwb2ludCBp cyBhdCBpbmZpbml0eS4NCj4gPiA+ID4gPiArDQo+ID4gPiA+ID4gKyAgQHBhcmFtW2luXSAgRWNH cm91cCAgIEVDIGdyb3VwIG9iamVjdC4NCj4gPiA+ID4gPiArICBAcGFyYW1baW5dICBFY1BvaW50 ICAgRUMgcG9pbnQgdG8gY2hlY2suDQo+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ICsgIEByZXR2YWwg VFJVRSAgICAgICAgICBBdCBpbmZpbml0eS4NCj4gPiA+ID4gPiArICBAcmV0dmFsIEZBTFNFICAg ICAgICAgT3RoZXJ3aXNlLg0KPiA+ID4gPiA+ICsqKi8NCj4gPiA+ID4gPiArQk9PTEVBTg0KPiA+ ID4gPiA+ICtFRklBUEkNCj4gPiA+ID4gPiArRWNQb2ludElzQXRJbmZpbml0eSAoDQo+ID4gPiA+ ID4gKyAgSU4gQ09OU1QgVk9JRCAgKkVjR3JvdXAsDQo+ID4gPiA+ID4gKyAgSU4gQ09OU1QgVk9J RCAgKkVjUG9pbnQNCj4gPiA+ID4gPiArICApDQo+ID4gPiA+ID4gK3sNCj4gPiA+ID4gPiArICBy ZXR1cm4gRUNfUE9JTlRfaXNfYXRfaW5maW5pdHkgKEVjR3JvdXAsIEVjUG9pbnQpID09IDE7DQo+ ID4gPiA+ID4gK30NCj4gPiA+ID4gPiArDQo+ID4gPiA+ID4gKy8qKg0KPiA+ID4gPiA+ICsgIENo ZWNrIGlmIEVDIHBvaW50cyBhcmUgZXF1YWwuDQo+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ICsgIEBw YXJhbVtpbl0gIEVjR3JvdXAgICBFQyBncm91cCBvYmplY3QuDQo+ID4gPiA+ID4gKyAgQHBhcmFt W2luXSAgRWNQb2ludEEgIEVDIHBvaW50IEEuDQo+ID4gPiA+ID4gKyAgQHBhcmFtW2luXSAgRWNQ b2ludEIgIEVDIHBvaW50IEIuDQo+ID4gPiA+ID4gKyAgQHBhcmFtW2luXSAgQm5DdHggICAgIEJO IGNvbnRleHQsIGNyZWF0ZWQgd2l0aA0KPiBCaWdOdW1OZXdDb250ZXh0KCkuDQo+ID4gPiA+ID4g Kw0KPiA+ID4gPiA+ICsgIEByZXR2YWwgVFJVRSAgICAgICAgICBBID09IEIuDQo+ID4gPiA+ID4g KyAgQHJldHZhbCBGQUxTRSAgICAgICAgIE90aGVyd2lzZS4NCj4gPiA+ID4gPiArKiovDQo+ID4g PiA+ID4gK0JPT0xFQU4NCj4gPiA+ID4gPiArRUZJQVBJDQo+ID4gPiA+ID4gK0VjUG9pbnRFcXVh bCAoDQo+ID4gPiA+ID4gKyAgSU4gQ09OU1QgVk9JRCAgKkVjR3JvdXAsDQo+ID4gPiA+ID4gKyAg SU4gQ09OU1QgVk9JRCAgKkVjUG9pbnRBLA0KPiA+ID4gPiA+ICsgIElOIENPTlNUIFZPSUQgICpF Y1BvaW50QiwNCj4gPiA+ID4gPiArICBJTiBWT0lEICAgICAgICAqQm5DdHgNCj4gPiA+ID4gPiAr ICApDQo+ID4gPiA+ID4gK3sNCj4gPiA+ID4gPiArICByZXR1cm4gRUNfUE9JTlRfY21wIChFY0dy b3VwLCBFY1BvaW50QSwgRWNQb2ludEIsIEJuQ3R4KSA9PSAwOw0KPiA+ID4gPiA+ICt9DQo+ID4g PiA+ID4gKw0KPiA+ID4gPiA+ICsvKioNCj4gPiA+ID4gPiArICBTZXQgRUMgcG9pbnQgY29tcHJl c3NlZCBjb29yZGluYXRlcy4gUG9pbnRzIGNhbiBiZSBkZXNjcmliZWQgaW4NCj4gdGVybXMgb2YN Cj4gPiA+ID4gPiArICB0aGVpciBjb21wcmVzc2VkIGNvb3JkaW5hdGVzLiBGb3IgYSBwb2ludCAo eCwgeSksIGZvciBhbnkgZ2l2ZW4NCj4gdmFsdWUgZm9yIHgNCj4gPiA+ID4gPiArICBzdWNoIHRo YXQgdGhlIHBvaW50IGlzIG9uIHRoZSBjdXJ2ZSB0aGVyZSB3aWxsIG9ubHkgZXZlciBiZSB0d28N Cj4gcG9zc2libGUNCj4gPiA+ID4gPiArICB2YWx1ZXMgZm9yIHkuIFRoZXJlZm9yZSwgYSBwb2lu dCBjYW4gYmUgc2V0IHVzaW5nIHRoaXMgZnVuY3Rpb24NCj4gd2hlcmUgQm5YIGlzDQo+ID4gPiA+ ID4gKyAgdGhlIHggY29vcmRpbmF0ZSBhbmQgWUJpdCBpcyBhIHZhbHVlIDAgb3IgMSB0byBpZGVu dGlmeSB3aGljaCBvZiB0aGUNCj4gdHdvDQo+ID4gPiA+ID4gKyAgcG9zc2libGUgdmFsdWVzIGZv ciB5IHNob3VsZCBiZSB1c2VkLg0KPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiArICBAcGFyYW1baW5d ICBFY0dyb3VwICAgIEVDIGdyb3VwIG9iamVjdC4NCj4gPiA+ID4gPiArICBAcGFyYW1baW5dICBF Y1BvaW50ICAgIEVDIFBvaW50Lg0KPiA+ID4gPiA+ICsgIEBwYXJhbVtpbl0gIEJuWCAgICAgICAg WCBjb29yZGluYXRlLg0KPiA+ID4gPiA+ICsgIEBwYXJhbVtpbl0gIFlCaXQgICAgICAgMCBvciAx IHRvIGlkZW50aWZ5IHdoaWNoIFkgdmFsdWUgaXMgdXNlZC4NCj4gPiA+ID4gPiArICBAcGFyYW1b aW5dICBCbkN0eCAgICAgIEJOIGNvbnRleHQsIGNyZWF0ZWQgd2l0aA0KPiBCaWdOdW1OZXdDb250 ZXh0KCkuDQo+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ICsgIEByZXR2YWwgVFJVRSAgICAgICAgICBP biBzdWNjZXNzLg0KPiA+ID4gPiA+ICsgIEByZXR2YWwgRkFMU0UgICAgICAgICBPdGhlcndpc2Uu DQo+ID4gPiA+ID4gKyoqLw0KPiA+ID4gPiA+ICtCT09MRUFODQo+ID4gPiA+ID4gK0VGSUFQSQ0K PiA+ID4gPiA+ICtFY1BvaW50U2V0Q29tcHJlc3NlZENvb3JkaW5hdGVzICgNCj4gPiA+ID4gPiAr ICBJTiBDT05TVCBWT0lEICAqRWNHcm91cCwNCj4gPiA+ID4gPiArICBJTiBWT0lEICAgICAgICAq RWNQb2ludCwNCj4gPiA+ID4gPiArICBJTiBDT05TVCBWT0lEICAqQm5YLA0KPiA+ID4gPiA+ICsg IElOIFVJTlQ4ICAgICAgIFlCaXQsDQo+ID4gPiA+ID4gKyAgSU4gVk9JRCAgICAgICAgKkJuQ3R4 DQo+ID4gPiA+ID4gKyAgKQ0KPiA+ID4gPiA+ICt7DQo+ID4gPiA+ID4gKyAgcmV0dXJuIChCT09M RUFOKUVDX1BPSU5UX3NldF9jb21wcmVzc2VkX2Nvb3JkaW5hdGVzDQo+IChFY0dyb3VwLCBFY1Bv aW50LCBCblgsIFlCaXQsIEJuQ3R4KTsNCj4gPiA+ID4gPiArfQ0KPiA+ID4gPiA+ICsNCj4gPiA+ ID4gPiArLy8NCj4gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQ0KPiA9PT09PT09PT09PT09PT09PT09PT09PT09PT0NCj4gPiA+ID4gPiAr Ly8gICAgRWxsaXB0aWMgQ3VydmUgRGlmZmllIEhlbGxtYW4gUHJpbWl0aXZlcw0KPiA+ID4gPiA+ ICsvLw0KPiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09DQo+ID09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KPiA+ID4gPiA+ICsNCj4g PiA+ID4gPiArLyoqDQo+ID4gPiA+ID4gKyAgQWxsb2NhdGVzIGFuZCBJbml0aWFsaXplcyBvbmUg RWxsaXB0aWMgQ3VydmUgQ29udGV4dCBmb3Igc3Vic2VxdWVudA0KPiB1c2UNCj4gPiA+ID4gPiAr ICB3aXRoIHRoZSBOSUQuDQo+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ICsgIEBwYXJhbVtpbl0gIE5p ZCAgIElkZW50aWZ5aW5nIG51bWJlciBmb3IgdGhlIEVDQyBjdXJ2ZSAoRGVmaW5lZA0KPiBpbg0K PiA+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgIEJhc2VDcnlwdExpYi5oKS4NCj4gPiA+ID4g PiArICBAcmV0dXJuICAgICBQb2ludGVyIHRvIHRoZSBFbGxpcHRpYyBDdXJ2ZSBDb250ZXh0IHRo YXQgaGFzIGJlZW4NCj4gaW5pdGlhbGl6ZWQuDQo+ID4gPiA+ID4gKyAgICAgICAgICAgICAgSWYg dGhlIGFsbG9jYXRpb25zIGZhaWxzLCBFY05ld0J5TmlkKCkgcmV0dXJucyBOVUxMLg0KPiA+ID4g PiA+ICsqKi8NCj4gPiA+ID4gPiArVk9JRCAqDQo+ID4gPiA+ID4gK0VGSUFQSQ0KPiA+ID4gPiA+ ICtFY05ld0J5TmlkICgNCj4gPiA+ID4gPiArICBJTiBVSU5UTiAgTmlkDQo+ID4gPiA+ID4gKyAg KQ0KPiA+ID4gPiA+ICt7DQo+ID4gPiA+ID4gKyAgSU5UMzIgIE9wZW5Tc2xOaWQ7DQo+ID4gPiA+ ID4gKw0KPiA+ID4gPiA+ICsgIE9wZW5Tc2xOaWQgPSBDcnlwdG9OaWRUb09wZW5zc2xOaWQgKE5p ZCk7DQo+ID4gPiA+ID4gKyAgaWYgKE9wZW5Tc2xOaWQgPCAwKSB7DQo+ID4gPiA+ID4gKyAgICBy ZXR1cm4gTlVMTDsNCj4gPiA+ID4gPiArICB9DQo+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ICsgIHJl dHVybiAoVk9JRCAqKUVDX0tFWV9uZXdfYnlfY3VydmVfbmFtZSAoT3BlblNzbE5pZCk7DQo+ID4g PiA+ID4gK30NCj4gPiA+ID4gPiArDQo+ID4gPiA+ID4gKy8qKg0KPiA+ID4gPiA+ICsgIFJlbGVh c2UgdGhlIHNwZWNpZmllZCBFQyBjb250ZXh0Lg0KPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiArICBA cGFyYW1baW5dICBFY0NvbnRleHQgIFBvaW50ZXIgdG8gdGhlIEVDIGNvbnRleHQgdG8gYmUgcmVs ZWFzZWQuDQo+ID4gPiA+ID4gKyoqLw0KPiA+ID4gPiA+ICtWT0lEDQo+ID4gPiA+ID4gK0VGSUFQ SQ0KPiA+ID4gPiA+ICtFY0ZyZWUgKA0KPiA+ID4gPiA+ICsgIElOICBWT0lEICAqRWNDb250ZXh0 DQo+ID4gPiA+ID4gKyAgKQ0KPiA+ID4gPiA+ICt7DQo+ID4gPiA+ID4gKyAgRUNfS0VZX2ZyZWUg KChFQ19LRVkgKilFY0NvbnRleHQpOw0KPiA+ID4gPiA+ICt9DQo+ID4gPiA+ID4gKw0KPiA+ID4g PiA+ICsvKioNCj4gPiA+ID4gPiArICBHZW5lcmF0ZXMgRUMga2V5IGFuZCByZXR1cm5zIEVDIHB1 YmxpYyBrZXkgKFgsIFkpLCBQbGVhc2Ugbm90ZSwNCj4gdGhpcyBmdW5jdGlvbiB1c2VzDQo+ID4g PiA+ID4gKyAgcHNldWRvIHJhbmRvbSBudW1iZXIgZ2VuZXJhdG9yLiBUaGUgY2FsbGVyIG11c3Qg bWFrZSBzdXJlDQo+IFJhbmRvbVNlZWQoKQ0KPiA+ID4gPiA+ICsgIGZ1bmN0aW9uIHdhcyBwcm9w ZXJseSBjYWxsZWQgYmVmb3JlLg0KPiA+ID4gPiA+ICsgIFRoZSBFYyBjb250ZXh0IHNob3VsZCBi ZSBjb3JyZWN0bHkgaW5pdGlhbGl6ZWQgYnkgRWNOZXdCeU5pZC4NCj4gPiA+ID4gPiArICBUaGlz IGZ1bmN0aW9uIGdlbmVyYXRlcyByYW5kb20gc2VjcmV0LCBhbmQgY29tcHV0ZXMgdGhlIHB1Ymxp Yw0KPiBrZXkgKFgsIFkpLCB3aGljaCBpcw0KPiA+ID4gPiA+ICsgIHJldHVybmVkIHZpYSBwYXJh bWV0ZXIgUHVibGljLCBQdWJsaWNTaXplLg0KPiA+ID4gPiA+ICsgIFggaXMgdGhlIGZpcnN0IGhh bGYgb2YgUHVibGljIHdpdGggc2l6ZSBiZWluZyBQdWJsaWNTaXplIC8gMiwNCj4gPiA+ID4gPiAr ICBZIGlzIHRoZSBzZWNvbmQgaGFsZiBvZiBQdWJsaWMgd2l0aCBzaXplIGJlaW5nIFB1YmxpY1Np emUgLyAyLg0KPiA+ID4gPiA+ICsgIEVDIGNvbnRleHQgaXMgdXBkYXRlZCBhY2NvcmRpbmdseS4N Cj4gPiA+ID4gPiArICBJZiB0aGUgUHVibGljIGJ1ZmZlciBpcyB0b28gc21hbGwgdG8gaG9sZCB0 aGUgcHVibGljIFgsIFksIEZBTFNFIGlzDQo+IHJldHVybmVkIGFuZA0KPiA+ID4gPiA+ICsgIFB1 YmxpY1NpemUgaXMgc2V0IHRvIHRoZSByZXF1aXJlZCBidWZmZXIgc2l6ZSB0byBvYnRhaW4gdGhl IHB1YmxpYyBYLA0KPiBZLg0KPiA+ID4gPiA+ICsgIEZvciBQLTI1NiwgdGhlIFB1YmxpY1NpemUg aXMgNjQuIEZpcnN0IDMyLWJ5dGUgaXMgWCwgU2Vjb25kIDMyLWJ5dGUNCj4gaXMgWS4NCj4gPiA+ ID4gPiArICBGb3IgUC0zODQsIHRoZSBQdWJsaWNTaXplIGlzIDk2LiBGaXJzdCA0OC1ieXRlIGlz IFgsIFNlY29uZCA0OC1ieXRlDQo+IGlzIFkuDQo+ID4gPiA+ID4gKyAgRm9yIFAtNTIxLCB0aGUg UHVibGljU2l6ZSBpcyAxMzIuIEZpcnN0IDY2LWJ5dGUgaXMgWCwgU2Vjb25kIDY2LWJ5dGUNCj4g aXMgWS4NCj4gPiA+ID4gPiArICBJZiBFY0NvbnRleHQgaXMgTlVMTCwgdGhlbiByZXR1cm4gRkFM U0UuDQo+ID4gPiA+ID4gKyAgSWYgUHVibGljU2l6ZSBpcyBOVUxMLCB0aGVuIHJldHVybiBGQUxT RS4NCj4gPiA+ID4gPiArICBJZiBQdWJsaWNTaXplIGlzIGxhcmdlIGVub3VnaCBidXQgUHVibGlj IGlzIE5VTEwsIHRoZW4gcmV0dXJuIEZBTFNFLg0KPiA+ID4gPiA+ICsgIEBwYXJhbVtpbiwgb3V0 XSAgRWNDb250ZXh0ICAgICAgUG9pbnRlciB0byB0aGUgRUMgY29udGV4dC4NCj4gPiA+ID4gPiAr ICBAcGFyYW1bb3V0XSAgICAgIFB1YmxpY0tleSAgICAgIFBvaW50ZXIgdG8gdCBidWZmZXIgdG8g cmVjZWl2ZQ0KPiBnZW5lcmF0ZWQgcHVibGljIFgsWS4NCj4gPiA+ID4gPiArICBAcGFyYW1baW4s IG91dF0gIFB1YmxpY0tleVNpemUgIE9uIGlucHV0LCB0aGUgc2l6ZSBvZiBQdWJsaWMgYnVmZmVy DQo+IGluIGJ5dGVzLg0KPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgT24gb3V0cHV0LCB0aGUgc2l6ZSBvZiBkYXRhIHJldHVybmVkIGluIFB1YmxpYw0KPiBidWZm ZXIgaW4gYnl0ZXMuDQo+ID4gPiA+ID4gKyAgQHJldHZhbCBUUlVFICAgRUMgcHVibGljIFgsWSBn ZW5lcmF0aW9uIHN1Y2NlZWRlZC4NCj4gPiA+ID4gPiArICBAcmV0dmFsIEZBTFNFICBFQyBwdWJs aWMgWCxZIGdlbmVyYXRpb24gZmFpbGVkLg0KPiA+ID4gPiA+ICsgIEByZXR2YWwgRkFMU0UgIFB1 YmxpY0tleVNpemUgaXMgbm90IGxhcmdlIGVub3VnaC4NCj4gPiA+ID4gPiArKiovDQo+ID4gPiA+ ID4gK0JPT0xFQU4NCj4gPiA+ID4gPiArRUZJQVBJDQo+ID4gPiA+ID4gK0VjR2VuZXJhdGVLZXkg KA0KPiA+ID4gPiA+ICsgIElOIE9VVCAgVk9JRCAgICpFY0NvbnRleHQsDQo+ID4gPiA+ID4gKyAg T1VUICAgICBVSU5UOCAgKlB1YmxpY0tleSwNCj4gPiA+ID4gPiArICBJTiBPVVQgIFVJTlROICAq UHVibGljS2V5U2l6ZQ0KPiA+ID4gPiA+ICsgICkNCj4gPiA+ID4gPiArew0KPiA+ID4gPiA+ICsg IEVDX0tFWSAgICAgICAgICAqRWNLZXk7DQo+ID4gPiA+ID4gKyAgQ09OU1QgRUNfR1JPVVAgICpH cm91cDsNCj4gPiA+ID4gPiArICBDT05TVCBFQ19QT0lOVCAgKkVjUG9pbnQ7DQo+ID4gPiA+ID4g KyAgQk9PTEVBTiAgICAgICAgIFJldFZhbDsNCj4gPiA+ID4gPiArICBCSUdOVU0gICAgICAgICAg KkJuWDsNCj4gPiA+ID4gPiArICBCSUdOVU0gICAgICAgICAgKkJuWTsNCj4gPiA+ID4gPiArICBV SU5UTiAgICAgICAgICAgSGFsZlNpemU7DQo+ID4gPiA+ID4gKyAgSU5UTiAgICAgICAgICAgIFhT aXplOw0KPiA+ID4gPiA+ICsgIElOVE4gICAgICAgICAgICBZU2l6ZTsNCj4gPiA+ID4gPiArDQo+ ID4gPiA+ID4gKyAgaWYgKChFY0NvbnRleHQgPT0gTlVMTCkgfHwgKFB1YmxpY0tleVNpemUgPT0g TlVMTCkpIHsNCj4gPiA+ID4gPiArICAgIHJldHVybiBGQUxTRTsNCj4gPiA+ID4gPiArICB9DQo+ ID4gPiA+ID4gKw0KPiA+ID4gPiA+ICsgIGlmICgoUHVibGljS2V5ID09IE5VTEwpICYmICgqUHVi bGljS2V5U2l6ZSAhPSAwKSkgew0KPiA+ID4gPiA+ICsgICAgcmV0dXJuIEZBTFNFOw0KPiA+ID4g PiA+ICsgIH0NCj4gPiA+ID4gPiArDQo+ID4gPiA+ID4gKyAgRWNLZXkgICAgPSAoRUNfS0VZICop RWNDb250ZXh0Ow0KPiA+ID4gPiA+ICsgIEdyb3VwICAgID0gRUNfS0VZX2dldDBfZ3JvdXAgKEVj S2V5KTsNCj4gPiA+ID4gPiArICBIYWxmU2l6ZSA9IChFQ19HUk9VUF9nZXRfZGVncmVlIChHcm91 cCkgKyA3KSAvIDg7DQo+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ICsgIC8vIEFzc3VtZSBSQU5EX3Nl ZWQgd2FzIGNhbGxlZA0KPiA+ID4gPiA+ICsgIGlmIChFQ19LRVlfZ2VuZXJhdGVfa2V5IChFY0tl eSkgIT0gMSkgew0KPiA+ID4gPiA+ICsgICAgcmV0dXJuIEZBTFNFOw0KPiA+ID4gPiA+ICsgIH0N Cj4gPiA+ID4gPiArDQo+ID4gPiA+ID4gKyAgaWYgKCpQdWJsaWNLZXlTaXplIDwgSGFsZlNpemUg KiAyKSB7DQo+ID4gPiA+ID4gKyAgICAqUHVibGljS2V5U2l6ZSA9IEhhbGZTaXplICogMjsNCj4g PiA+ID4gPiArICAgIHJldHVybiBGQUxTRTsNCj4gPiA+ID4gPiArICB9DQo+ID4gPiA+ID4gKw0K PiA+ID4gPiA+ICsgICpQdWJsaWNLZXlTaXplID0gSGFsZlNpemUgKiAyOw0KPiA+ID4gPiA+ICsN Cj4gPiA+ID4gPiArICBFY1BvaW50ID0gRUNfS0VZX2dldDBfcHVibGljX2tleSAoRWNLZXkpOw0K PiA+ID4gPiA+ICsgIGlmIChFY1BvaW50ID09IE5VTEwpIHsNCj4gPiA+ID4gPiArICAgIHJldHVy biBGQUxTRTsNCj4gPiA+ID4gPiArICB9DQo+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ICsgIFJldFZh bCA9IEZBTFNFOw0KPiA+ID4gPiA+ICsgIEJuWCAgICA9IEJOX25ldyAoKTsNCj4gPiA+ID4gPiAr ICBCblkgICAgPSBCTl9uZXcgKCk7DQo+ID4gPiA+ID4gKyAgaWYgKChCblggPT0gTlVMTCkgfHwg KEJuWSA9PSBOVUxMKSkgew0KPiA+ID4gPiA+ICsgICAgZ290byBmYWlsOw0KPiA+ID4gPiA+ICsg IH0NCj4gPiA+ID4gPiArDQo+ID4gPiA+ID4gKyAgaWYgKEVDX1BPSU5UX2dldF9hZmZpbmVfY29v cmRpbmF0ZXMgKEdyb3VwLCBFY1BvaW50LCBCblgsIEJuWSwNCj4gTlVMTCkgIT0gMSkgew0KPiA+ ID4gPiA+ICsgICAgZ290byBmYWlsOw0KPiA+ID4gPiA+ICsgIH0NCj4gPiA+ID4gPiArDQo+ID4g PiA+ID4gKyAgWFNpemUgPSBCTl9udW1fYnl0ZXMgKEJuWCk7DQo+ID4gPiA+ID4gKyAgWVNpemUg PSBCTl9udW1fYnl0ZXMgKEJuWSk7DQo+ID4gPiA+ID4gKyAgaWYgKChYU2l6ZSA8PSAwKSB8fCAo WVNpemUgPD0gMCkpIHsNCj4gPiA+ID4gPiArICAgIGdvdG8gZmFpbDsNCj4gPiA+ID4gPiArICB9 DQo+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ICsgIEFTU0VSVCAoKFVJTlROKVhTaXplIDw9IEhhbGZT aXplICYmIChVSU5UTilZU2l6ZSA8PSBIYWxmU2l6ZSk7DQo+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ ICsgIFplcm9NZW0gKFB1YmxpY0tleSwgKlB1YmxpY0tleVNpemUpOw0KPiA+ID4gPiA+ICsgIEJO X2JuMmJpbiAoQm5YLCAmUHVibGljS2V5WzAgKyBIYWxmU2l6ZSAtIFhTaXplXSk7DQo+ID4gPiA+ ID4gKyAgQk5fYm4yYmluIChCblksICZQdWJsaWNLZXlbSGFsZlNpemUgKyBIYWxmU2l6ZSAtIFlT aXplXSk7DQo+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ICsgIFJldFZhbCA9IFRSVUU7DQo+ID4gPiA+ ID4gKw0KPiA+ID4gPiA+ICtmYWlsOg0KPiA+ID4gPiA+ICsgIEJOX2ZyZWUgKEJuWCk7DQo+ID4g PiA+ID4gKyAgQk5fZnJlZSAoQm5ZKTsNCj4gPiA+ID4gPiArICByZXR1cm4gUmV0VmFsOw0KPiA+ ID4gPiA+ICt9DQo+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ICsvKioNCj4gPiA+ID4gPiArICBHZXRz IHRoZSBwdWJsaWMga2V5IGNvbXBvbmVudCBmcm9tIHRoZSBlc3RhYmxpc2hlZCBFQyBjb250ZXh0 Lg0KPiA+ID4gPiA+ICsgIFRoZSBFYyBjb250ZXh0IHNob3VsZCBiZSBjb3JyZWN0bHkgaW5pdGlh bGl6ZWQgYnkgRWNOZXdCeU5pZCwgYW5kDQo+IHN1Y2Nlc3NmdWxseQ0KPiA+ID4gPiA+ICsgIGdl bmVyYXRlIGtleSBwYWlyIGZyb20gRWNHZW5lcmF0ZUtleSgpLg0KPiA+ID4gPiA+ICsgIEZvciBQ LTI1NiwgdGhlIFB1YmxpY1NpemUgaXMgNjQuIEZpcnN0IDMyLWJ5dGUgaXMgWCwgU2Vjb25kIDMy LWJ5dGUNCj4gaXMgWS4NCj4gPiA+ID4gPiArICBGb3IgUC0zODQsIHRoZSBQdWJsaWNTaXplIGlz IDk2LiBGaXJzdCA0OC1ieXRlIGlzIFgsIFNlY29uZCA0OC1ieXRlDQo+IGlzIFkuDQo+ID4gPiA+ ID4gKyAgRm9yIFAtNTIxLCB0aGUgUHVibGljU2l6ZSBpcyAxMzIuIEZpcnN0IDY2LWJ5dGUgaXMg WCwgU2Vjb25kIDY2LWJ5dGUNCj4gaXMgWS4NCj4gPiA+ID4gPiArICBAcGFyYW1baW4sIG91dF0g IEVjQ29udGV4dCAgICAgIFBvaW50ZXIgdG8gRUMgY29udGV4dCBiZWluZyBzZXQuDQo+ID4gPiA+ ID4gKyAgQHBhcmFtW291dF0gICAgICBQdWJsaWNLZXkgICAgICBQb2ludGVyIHRvIHQgYnVmZmVy IHRvIHJlY2VpdmUNCj4gZ2VuZXJhdGVkIHB1YmxpYyBYLFkuDQo+ID4gPiA+ID4gKyAgQHBhcmFt W2luLCBvdXRdICBQdWJsaWNLZXlTaXplICBPbiBpbnB1dCwgdGhlIHNpemUgb2YgUHVibGljIGJ1 ZmZlcg0KPiBpbiBieXRlcy4NCj4gPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIE9uIG91dHB1dCwgdGhlIHNpemUgb2YgZGF0YSByZXR1cm5lZCBpbiBQdWJsaWMNCj4g YnVmZmVyIGluIGJ5dGVzLg0KPiA+ID4gPiA+ICsgIEByZXR2YWwgIFRSVUUgICBFQyBrZXkgY29t cG9uZW50IHdhcyByZXRyaWV2ZWQgc3VjY2Vzc2Z1bGx5Lg0KPiA+ID4gPiA+ICsgIEByZXR2YWwg IEZBTFNFICBJbnZhbGlkIEVDIGtleSBjb21wb25lbnQuDQo+ID4gPiA+ID4gKyoqLw0KPiA+ID4g PiA+ICtCT09MRUFODQo+ID4gPiA+ID4gK0VGSUFQSQ0KPiA+ID4gPiA+ICtFY0dldFB1YktleSAo DQo+ID4gPiA+ID4gKyAgSU4gT1VUICBWT0lEICAgKkVjQ29udGV4dCwNCj4gPiA+ID4gPiArICBP VVQgICAgIFVJTlQ4ICAqUHVibGljS2V5LA0KPiA+ID4gPiA+ICsgIElOIE9VVCAgVUlOVE4gICpQ dWJsaWNLZXlTaXplDQo+ID4gPiA+ID4gKyAgKQ0KPiA+ID4gPiA+ICt7DQo+ID4gPiA+ID4gKyAg RUNfS0VZICAgICAgICAgICpFY0tleTsNCj4gPiA+ID4gPiArICBDT05TVCBFQ19HUk9VUCAgKkdy b3VwOw0KPiA+ID4gPiA+ICsgIENPTlNUIEVDX1BPSU5UICAqRWNQb2ludDsNCj4gPiA+ID4gPiAr ICBCSUdOVU0gICAgICAgICAgKkJuWDsNCj4gPiA+ID4gPiArICBCSUdOVU0gICAgICAgICAgKkJu WTsNCj4gPiA+ID4gPiArICBVSU5UTiAgICAgICAgICAgSGFsZlNpemU7DQo+ID4gPiA+ID4gKyAg SU5UTiAgICAgICAgICAgIFhTaXplOw0KPiA+ID4gPiA+ICsgIElOVE4gICAgICAgICAgICBZU2l6 ZTsNCj4gPiA+ID4gPiArICBCT09MRUFOICAgICAgICAgUmV0VmFsOw0KPiA+ID4gPiA+ICsNCj4g PiA+ID4gPiArICBpZiAoKEVjQ29udGV4dCA9PSBOVUxMKSB8fCAoUHVibGljS2V5U2l6ZSA9PSBO VUxMKSkgew0KPiA+ID4gPiA+ICsgICAgcmV0dXJuIEZBTFNFOw0KPiA+ID4gPiA+ICsgIH0NCj4g PiA+ID4gPiArDQo+ID4gPiA+ID4gKyAgaWYgKChQdWJsaWNLZXkgPT0gTlVMTCkgJiYgKCpQdWJs aWNLZXlTaXplICE9IDApKSB7DQo+ID4gPiA+ID4gKyAgICByZXR1cm4gRkFMU0U7DQo+ID4gPiA+ ID4gKyAgfQ0KPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiArICBFY0tleSAgICA9IChFQ19LRVkgKilF Y0NvbnRleHQ7DQo+ID4gPiA+ID4gKyAgR3JvdXAgICAgPSBFQ19LRVlfZ2V0MF9ncm91cCAoRWNL ZXkpOw0KPiA+ID4gPiA+ICsgIEhhbGZTaXplID0gKEVDX0dST1VQX2dldF9kZWdyZWUgKEdyb3Vw KSArIDcpIC8gODsNCj4gPiA+ID4gPiArICBpZiAoKlB1YmxpY0tleVNpemUgPCBIYWxmU2l6ZSAq IDIpIHsNCj4gPiA+ID4gPiArICAgICpQdWJsaWNLZXlTaXplID0gSGFsZlNpemUgKiAyOw0KPiA+ ID4gPiA+ICsgICAgcmV0dXJuIEZBTFNFOw0KPiA+ID4gPiA+ICsgIH0NCj4gPiA+ID4gPiArDQo+ ID4gPiA+ID4gKyAgKlB1YmxpY0tleVNpemUgPSBIYWxmU2l6ZSAqIDI7DQo+ID4gPiA+ID4gKw0K PiA+ID4gPiA+ICsgIEVjUG9pbnQgPSBFQ19LRVlfZ2V0MF9wdWJsaWNfa2V5IChFY0tleSk7DQo+ ID4gPiA+ID4gKyAgaWYgKEVjUG9pbnQgPT0gTlVMTCkgew0KPiA+ID4gPiA+ICsgICAgcmV0dXJu IEZBTFNFOw0KPiA+ID4gPiA+ICsgIH0NCj4gPiA+ID4gPiArDQo+ID4gPiA+ID4gKyAgUmV0VmFs ID0gRkFMU0U7DQo+ID4gPiA+ID4gKyAgQm5YICAgID0gQk5fbmV3ICgpOw0KPiA+ID4gPiA+ICsg IEJuWSAgICA9IEJOX25ldyAoKTsNCj4gPiA+ID4gPiArICBpZiAoKEJuWCA9PSBOVUxMKSB8fCAo Qm5ZID09IE5VTEwpKSB7DQo+ID4gPiA+ID4gKyAgICBnb3RvIGZhaWw7DQo+ID4gPiA+ID4gKyAg fQ0KPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiArICBpZiAoRUNfUE9JTlRfZ2V0X2FmZmluZV9jb29y ZGluYXRlcyAoR3JvdXAsIEVjUG9pbnQsIEJuWCwgQm5ZLA0KPiBOVUxMKSAhPSAxKSB7DQo+ID4g PiA+ID4gKyAgICBnb3RvIGZhaWw7DQo+ID4gPiA+ID4gKyAgfQ0KPiA+ID4gPiA+ICsNCj4gPiA+ ID4gPiArICBYU2l6ZSA9IEJOX251bV9ieXRlcyAoQm5YKTsNCj4gPiA+ID4gPiArICBZU2l6ZSA9 IEJOX251bV9ieXRlcyAoQm5ZKTsNCj4gPiA+ID4gPiArICBpZiAoKFhTaXplIDw9IDApIHx8IChZ U2l6ZSA8PSAwKSkgew0KPiA+ID4gPiA+ICsgICAgZ290byBmYWlsOw0KPiA+ID4gPiA+ICsgIH0N Cj4gPiA+ID4gPiArDQo+ID4gPiA+ID4gKyAgQVNTRVJUICgoVUlOVE4pWFNpemUgPD0gSGFsZlNp emUgJiYgKFVJTlROKVlTaXplIDw9IEhhbGZTaXplKTsNCj4gPiA+ID4gPiArDQo+ID4gPiA+ID4g KyAgaWYgKFB1YmxpY0tleSAhPSBOVUxMKSB7DQo+ID4gPiA+ID4gKyAgICBaZXJvTWVtIChQdWJs aWNLZXksICpQdWJsaWNLZXlTaXplKTsNCj4gPiA+ID4gPiArICAgIEJOX2JuMmJpbiAoQm5YLCAm UHVibGljS2V5WzAgKyBIYWxmU2l6ZSAtIFhTaXplXSk7DQo+ID4gPiA+ID4gKyAgICBCTl9ibjJi aW4gKEJuWSwgJlB1YmxpY0tleVtIYWxmU2l6ZSArIEhhbGZTaXplIC0gWVNpemVdKTsNCj4gPiA+ ID4gPiArICB9DQo+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ICsgIFJldFZhbCA9IFRSVUU7DQo+ID4g PiA+ID4gKw0KPiA+ID4gPiA+ICtmYWlsOg0KPiA+ID4gPiA+ICsgIEJOX2ZyZWUgKEJuWCk7DQo+ ID4gPiA+ID4gKyAgQk5fZnJlZSAoQm5ZKTsNCj4gPiA+ID4gPiArICByZXR1cm4gUmV0VmFsOw0K PiA+ID4gPiA+ICt9DQo+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ICsvKioNCj4gPiA+ID4gPiArICBD b21wdXRlcyBleGNoYW5nZWQgY29tbW9uIGtleS4NCj4gPiA+ID4gPiArICBHaXZlbiBwZWVyJ3Mg cHVibGljIGtleSAoWCwgWSksIHRoaXMgZnVuY3Rpb24gY29tcHV0ZXMgdGhlDQo+IGV4Y2hhbmdl ZCBjb21tb24ga2V5LA0KPiA+ID4gPiA+ICsgIGJhc2VkIG9uIGl0cyBvd24gY29udGV4dCBpbmNs dWRpbmcgdmFsdWUgb2YgY3VydmUgcGFyYW1ldGVyIGFuZA0KPiByYW5kb20gc2VjcmV0Lg0KPiA+ ID4gPiA+ICsgIFggaXMgdGhlIGZpcnN0IGhhbGYgb2YgUGVlclB1YmxpYyB3aXRoIHNpemUgYmVp bmcgUGVlclB1YmxpY1NpemUgLyAyLA0KPiA+ID4gPiA+ICsgIFkgaXMgdGhlIHNlY29uZCBoYWxm IG9mIFBlZXJQdWJsaWMgd2l0aCBzaXplIGJlaW5nIFBlZXJQdWJsaWNTaXplIC8NCj4gMi4NCj4g PiA+ID4gPiArICBJZiBwdWJsaWMga2V5IGlzIGNvbXByZXNzZWQsIHRoZSBQZWVyUHVibGljIHdp bGwgb25seSBjb250YWluIGhhbGYNCj4ga2V5IChYKS4NCj4gPiA+ID4gPiArICBJZiBFY0NvbnRl eHQgaXMgTlVMTCwgdGhlbiByZXR1cm4gRkFMU0UuDQo+ID4gPiA+ID4gKyAgSWYgUGVlclB1Ymxp YyBpcyBOVUxMLCB0aGVuIHJldHVybiBGQUxTRS4NCj4gPiA+ID4gPiArICBJZiBQZWVyUHVibGlj U2l6ZSBpcyAwLCB0aGVuIHJldHVybiBGQUxTRS4NCj4gPiA+ID4gPiArICBJZiBLZXkgaXMgTlVM TCwgdGhlbiByZXR1cm4gRkFMU0UuDQo+ID4gPiA+ID4gKyAgSWYgS2V5U2l6ZSBpcyBub3QgbGFy Z2UgZW5vdWdoLCB0aGVuIHJldHVybiBGQUxTRS4NCj4gPiA+ID4gPiArICBGb3IgUC0yNTYsIHRo ZSBQZWVyUHVibGljU2l6ZSBpcyA2NC4gRmlyc3QgMzItYnl0ZSBpcyBYLCBTZWNvbmQgMzItDQo+ IGJ5dGUgaXMgWS4NCj4gPiA+ID4gPiArICBGb3IgUC0zODQsIHRoZSBQZWVyUHVibGljU2l6ZSBp cyA5Ni4gRmlyc3QgNDgtYnl0ZSBpcyBYLCBTZWNvbmQgNDgtDQo+IGJ5dGUgaXMgWS4NCj4gPiA+ ID4gPiArICBGb3IgUC01MjEsIHRoZSBQZWVyUHVibGljU2l6ZSBpcyAxMzIuIEZpcnN0IDY2LWJ5 dGUgaXMgWCwgU2Vjb25kIDY2LQ0KPiBieXRlIGlzIFkuDQo+ID4gPiA+ID4gKyAgQHBhcmFtW2lu LCBvdXRdICBFY0NvbnRleHQgICAgICAgICAgUG9pbnRlciB0byB0aGUgRUMgY29udGV4dC4NCj4g PiA+ID4gPiArICBAcGFyYW1baW5dICAgICAgIFBlZXJQdWJsaWMgICAgICAgICBQb2ludGVyIHRv IHRoZSBwZWVyJ3MgcHVibGljIFgsWS4NCj4gPiA+ID4gPiArICBAcGFyYW1baW5dICAgICAgIFBl ZXJQdWJsaWNTaXplICAgICBTaXplIG9mIHBlZXIncyBwdWJsaWMgWCxZIGluIGJ5dGVzLg0KPiA+ ID4gPiA+ICsgIEBwYXJhbVtpbl0gICAgICAgQ29tcHJlc3NGbGFnICAgICAgIEZsYWcgb2YgUGVl clB1YmxpYyBpcw0KPiBjb21wcmVzc2VkIG9yIG5vdC4NCj4gPiA+ID4gPiArICBAcGFyYW1bb3V0 XSAgICAgIEtleSAgICAgICAgICAgICAgICBQb2ludGVyIHRvIHRoZSBidWZmZXIgdG8gcmVjZWl2 ZQ0KPiBnZW5lcmF0ZWQga2V5Lg0KPiA+ID4gPiA+ICsgIEBwYXJhbVtpbiwgb3V0XSAgS2V5U2l6 ZSAgICAgICAgICAgIE9uIGlucHV0LCB0aGUgc2l6ZSBvZiBLZXkgYnVmZmVyIGluDQo+IGJ5dGVz Lg0KPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9uIG91 dHB1dCwgdGhlIHNpemUgb2YgZGF0YSByZXR1cm5lZCBpbiBLZXkNCj4gYnVmZmVyIGluIGJ5dGVz Lg0KPiA+ID4gPiA+ICsgIEByZXR2YWwgVFJVRSAgIEVDIGV4Y2hhbmdlZCBrZXkgZ2VuZXJhdGlv biBzdWNjZWVkZWQuDQo+ID4gPiA+ID4gKyAgQHJldHZhbCBGQUxTRSAgRUMgZXhjaGFuZ2VkIGtl eSBnZW5lcmF0aW9uIGZhaWxlZC4NCj4gPiA+ID4gPiArICBAcmV0dmFsIEZBTFNFICBLZXlTaXpl IGlzIG5vdCBsYXJnZSBlbm91Z2guDQo+ID4gPiA+ID4gKyoqLw0KPiA+ID4gPiA+ICtCT09MRUFO DQo+ID4gPiA+ID4gK0VGSUFQSQ0KPiA+ID4gPiA+ICtFY0RoQ29tcHV0ZUtleSAoDQo+ID4gPiA+ ID4gKyAgSU4gT1VUICBWT0lEICAgICAgICAgKkVjQ29udGV4dCwNCj4gPiA+ID4gPiArICBJTiAg ICAgIENPTlNUIFVJTlQ4ICAqUGVlclB1YmxpYywNCj4gPiA+ID4gPiArICBJTiAgICAgIFVJTlRO ICAgICAgICBQZWVyUHVibGljU2l6ZSwNCj4gPiA+ID4gPiArICBJTiAgICAgIENPTlNUIElOVDMy ICAqQ29tcHJlc3NGbGFnLA0KPiA+ID4gPiA+ICsgIE9VVCAgICAgVUlOVDggICAgICAgICpLZXks DQo+ID4gPiA+ID4gKyAgSU4gT1VUICBVSU5UTiAgICAgICAgKktleVNpemUNCj4gPiA+ID4gPiAr ICApDQo+ID4gPiA+ID4gK3sNCj4gPiA+ID4gPiArICBFQ19LRVkgICAgICAgICAgKkVjS2V5Ow0K PiA+ID4gPiA+ICsgIEVDX0tFWSAgICAgICAgICAqUGVlckVjS2V5Ow0KPiA+ID4gPiA+ICsgIENP TlNUIEVDX0dST1VQICAqR3JvdXA7DQo+ID4gPiA+ID4gKyAgQk9PTEVBTiAgICAgICAgIFJldFZh bDsNCj4gPiA+ID4gPiArICBCSUdOVU0gICAgICAgICAgKkJuWDsNCj4gPiA+ID4gPiArICBCSUdO VU0gICAgICAgICAgKkJuWTsNCj4gPiA+ID4gPiArICBFQ19QT0lOVCAgICAgICAgKlBvaW50Ow0K PiA+ID4gPiA+ICsgIElOVDMyICAgICAgICAgICBPcGVuU3NsTmlkOw0KPiA+ID4gPiA+ICsgIFVJ TlROICAgICAgICAgICBIYWxmU2l6ZTsNCj4gPiA+ID4gPiArDQo+ID4gPiA+ID4gKyAgaWYgKChF Y0NvbnRleHQgPT0gTlVMTCkgfHwgKFBlZXJQdWJsaWMgPT0gTlVMTCkgfHwgKEtleVNpemUgPT0N Cj4gTlVMTCkpIHsNCj4gPiA+ID4gPiArICAgIHJldHVybiBGQUxTRTsNCj4gPiA+ID4gPiArICB9 DQo+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ICsgIGlmICgoS2V5ID09IE5VTEwpICYmICgqS2V5U2l6 ZSAhPSAwKSkgew0KPiA+ID4gPiA+ICsgICAgcmV0dXJuIEZBTFNFOw0KPiA+ID4gPiA+ICsgIH0N Cj4gPiA+ID4gPiArDQo+ID4gPiA+ID4gKyAgaWYgKFBlZXJQdWJsaWNTaXplID4gSU5UX01BWCkg ew0KPiA+ID4gPiA+ICsgICAgcmV0dXJuIEZBTFNFOw0KPiA+ID4gPiA+ICsgIH0NCj4gPiA+ID4g PiArDQo+ID4gPiA+ID4gKyAgRWNLZXkgICAgPSAoRUNfS0VZICopRWNDb250ZXh0Ow0KPiA+ID4g PiA+ICsgIEdyb3VwICAgID0gRUNfS0VZX2dldDBfZ3JvdXAgKEVjS2V5KTsNCj4gPiA+ID4gPiAr ICBIYWxmU2l6ZSA9IChFQ19HUk9VUF9nZXRfZGVncmVlIChHcm91cCkgKyA3KSAvIDg7DQo+ID4g PiA+ID4gKyAgaWYgKChDb21wcmVzc0ZsYWcgPT0gTlVMTCkgJiYgKFBlZXJQdWJsaWNTaXplICE9 IEhhbGZTaXplICogMikpIHsNCj4gPiA+ID4gPiArICAgIHJldHVybiBGQUxTRTsNCj4gPiA+ID4g PiArICB9DQo+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ICsgIGlmICgoQ29tcHJlc3NGbGFnICE9IE5V TEwpICYmIChQZWVyUHVibGljU2l6ZSAhPSBIYWxmU2l6ZSkpIHsNCj4gPiA+ID4gPiArICAgIHJl dHVybiBGQUxTRTsNCj4gPiA+ID4gPiArICB9DQo+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ICsgIGlm ICgqS2V5U2l6ZSA8IEhhbGZTaXplKSB7DQo+ID4gPiA+ID4gKyAgICAqS2V5U2l6ZSA9IEhhbGZT aXplOw0KPiA+ID4gPiA+ICsgICAgcmV0dXJuIEZBTFNFOw0KPiA+ID4gPiA+ICsgIH0NCj4gPiA+ ID4gPiArDQo+ID4gPiA+ID4gKyAgKktleVNpemUgPSBIYWxmU2l6ZTsNCj4gPiA+ID4gPiArDQo+ ID4gPiA+ID4gKyAgUmV0VmFsICAgID0gRkFMU0U7DQo+ID4gPiA+ID4gKyAgUG9pbnQgICAgID0g TlVMTDsNCj4gPiA+ID4gPiArICBCblggICAgICAgPSBCTl9iaW4yYm4gKFBlZXJQdWJsaWMsIChJ TlQzMilIYWxmU2l6ZSwgTlVMTCk7DQo+ID4gPiA+ID4gKyAgQm5ZICAgICAgID0gTlVMTDsNCj4g PiA+ID4gPiArICBQb2ludCAgICAgPSBFQ19QT0lOVF9uZXcgKEdyb3VwKTsNCj4gPiA+ID4gPiAr ICBQZWVyRWNLZXkgPSBOVUxMOw0KPiA+ID4gPiA+ICsgIGlmICgoQm5YID09IE5VTEwpIHx8IChQ b2ludCA9PSBOVUxMKSkgew0KPiA+ID4gPiA+ICsgICAgZ290byBmYWlsOw0KPiA+ID4gPiA+ICsg IH0NCj4gPiA+ID4gPiArDQo+ID4gPiA+ID4gKyAgaWYgKENvbXByZXNzRmxhZyA9PSBOVUxMKSB7 DQo+ID4gPiA+ID4gKyAgICBCblkgPSBCTl9iaW4yYm4gKFBlZXJQdWJsaWMgKyBIYWxmU2l6ZSwg KElOVDMyKUhhbGZTaXplLCBOVUxMKTsNCj4gPiA+ID4gPiArICAgIGlmIChCblkgPT0gTlVMTCkg ew0KPiA+ID4gPiA+ICsgICAgICBnb3RvIGZhaWw7DQo+ID4gPiA+ID4gKyAgICB9DQo+ID4gPiA+ ID4gKw0KPiA+ID4gPiA+ICsgICAgaWYgKEVDX1BPSU5UX3NldF9hZmZpbmVfY29vcmRpbmF0ZXMg KEdyb3VwLCBQb2ludCwgQm5YLCBCblksDQo+IE5VTEwpICE9IDEpIHsNCj4gPiA+ID4gPiArICAg ICAgZ290byBmYWlsOw0KPiA+ID4gPiA+ICsgICAgfQ0KPiA+ID4gPiA+ICsgIH0gZWxzZSB7DQo+ ID4gPiA+ID4gKyAgICBpZiAoRUNfUE9JTlRfc2V0X2NvbXByZXNzZWRfY29vcmRpbmF0ZXMgKEdy b3VwLCBQb2ludCwgQm5YLA0KPiAqQ29tcHJlc3NGbGFnLCBOVUxMKSAhPSAxKSB7DQo+ID4gPiA+ ID4gKyAgICAgIGdvdG8gZmFpbDsNCj4gPiA+ID4gPiArICAgIH0NCj4gPiA+ID4gPiArICB9DQo+ ID4gPiA+ID4gKw0KPiA+ID4gPiA+ICsgIC8vIFZhbGlkYXRlIE5JU1QgRUNESCBwdWJsaWMga2V5 DQo+ID4gPiA+ID4gKyAgT3BlblNzbE5pZCA9IEVDX0dST1VQX2dldF9jdXJ2ZV9uYW1lIChHcm91 cCk7DQo+ID4gPiA+ID4gKyAgUGVlckVjS2V5ICA9IEVDX0tFWV9uZXdfYnlfY3VydmVfbmFtZSAo T3BlblNzbE5pZCk7DQo+ID4gPiA+ID4gKyAgaWYgKFBlZXJFY0tleSA9PSBOVUxMKSB7DQo+ID4g PiA+ID4gKyAgICBnb3RvIGZhaWw7DQo+ID4gPiA+ID4gKyAgfQ0KPiA+ID4gPiA+ICsNCj4gPiA+ ID4gPiArICBpZiAoRUNfS0VZX3NldF9wdWJsaWNfa2V5IChQZWVyRWNLZXksIFBvaW50KSAhPSAx KSB7DQo+ID4gPiA+ID4gKyAgICBnb3RvIGZhaWw7DQo+ID4gPiA+ID4gKyAgfQ0KPiA+ID4gPiA+ ICsNCj4gPiA+ID4gPiArICBpZiAoRUNfS0VZX2NoZWNrX2tleSAoUGVlckVjS2V5KSAhPSAxKSB7 DQo+ID4gPiA+ID4gKyAgICBnb3RvIGZhaWw7DQo+ID4gPiA+ID4gKyAgfQ0KPiA+ID4gPiA+ICsN Cj4gPiA+ID4gPiArICBpZiAoRUNESF9jb21wdXRlX2tleSAoS2V5LCAqS2V5U2l6ZSwgUG9pbnQs IEVjS2V5LCBOVUxMKSA8PSAwKSB7DQo+ID4gPiA+ID4gKyAgICBnb3RvIGZhaWw7DQo+ID4gPiA+ ID4gKyAgfQ0KPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiArICBSZXRWYWwgPSBUUlVFOw0KPiA+ID4g PiA+ICsNCj4gPiA+ID4gPiArZmFpbDoNCj4gPiA+ID4gPiArICBCTl9mcmVlIChCblgpOw0KPiA+ ID4gPiA+ICsgIEJOX2ZyZWUgKEJuWSk7DQo+ID4gPiA+ID4gKyAgRUNfUE9JTlRfZnJlZSAoUG9p bnQpOw0KPiA+ID4gPiA+ICsgIEVDX0tFWV9mcmVlIChQZWVyRWNLZXkpOw0KPiA+ID4gPiA+ICsg IHJldHVybiBSZXRWYWw7DQo+ID4gPiA+ID4gK30NCj4gPiA+ID4gPiBkaWZmIC0tZ2l0IGEvQ3J5 cHRvUGtnL0xpYnJhcnkvQmFzZUNyeXB0TGliL1BrL0NyeXB0RWNOdWxsLmMNCj4gYi9DcnlwdG9Q a2cvTGlicmFyeS9CYXNlQ3J5cHRMaWIvUGsvQ3J5cHRFY051bGwuYw0KPiA+ID4gPiA+IG5ldyBm aWxlIG1vZGUgMTAwNjQ0DQo+ID4gPiA+ID4gaW5kZXggMDAwMDAwMDAwMC4uZDlmMTAwNGY2Yw0K PiA+ID4gPiA+IC0tLSAvZGV2L251bGwNCj4gPiA+ID4gPiArKysgYi9DcnlwdG9Qa2cvTGlicmFy eS9CYXNlQ3J5cHRMaWIvUGsvQ3J5cHRFY051bGwuYw0KPiA+ID4gPiA+IEBAIC0wLDAgKzEsNDk2 IEBADQo+ID4gPiA+ID4gKy8qKiBAZmlsZQ0KPiA+ID4gPiA+ICsgIEVsbGlwdGljIEN1cnZlIGFu ZCBFQ0RIIEFQSSBpbXBsZW1lbnRhdGlvbiBiYXNlZCBvbiBPcGVuU1NMDQo+ID4gPiA+ID4gKw0K PiA+ID4gPiA+ICsgIENvcHlyaWdodCAoYykgMjAyMiwgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCBy aWdodHMgcmVzZXJ2ZWQuPEJSPg0KPiA+ID4gPiA+ICsgIFNQRFgtTGljZW5zZS1JZGVudGlmaWVy OiBCU0QtMi1DbGF1c2UtUGF0ZW50DQo+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ICsqKi8NCj4gPiA+ ID4gPiArDQo+ID4gPiA+ID4gKyNpbmNsdWRlIDxMaWJyYXJ5L0Jhc2VDcnlwdExpYi5oPg0KPiA+ ID4gPiA+ICsjaW5jbHVkZSA8TGlicmFyeS9EZWJ1Z0xpYi5oPg0KPiA+ID4gPiA+ICsNCj4gPiA+ ID4gPiArLyoqDQo+ID4gPiA+ID4gKyAgSW5pdGlhbGl6ZSBuZXcgb3BhcXVlIEVjR3JvdXAgb2Jq ZWN0LiBUaGlzIG9iamVjdCByZXByZXNlbnRzIGFuIEVDDQo+IGN1cnZlIGFuZA0KPiA+ID4gPiA+ ICsgIGFuZCBpcyB1c2VkIGZvciBjYWxjdWxhdGlvbiB3aXRoaW4gdGhpcyBncm91cC4gVGhpcyBv YmplY3Qgc2hvdWxkIGJlDQo+IGZyZWVkDQo+ID4gPiA+ID4gKyAgdXNpbmcgRWNHcm91cEZyZWUo KSBmdW5jdGlvbi4NCj4gPiA+ID4gPiArDQo+ID4gPiA+ID4gKyAgQHBhcmFtW2luXSAgQ3J5cHRv TmlkICAgSWRlbnRpZnlpbmcgbnVtYmVyIGZvciB0aGUgRUNDIGN1cnZlDQo+IChEZWZpbmVkIGlu DQo+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgQmFzZUNyeXB0TGliLmgpLg0K PiA+ID4gPiA+ICsNCj4gPiA+ID4gPiArICBAcmV0dmFsIEVjR3JvdXAgb2JqZWN0ICBPbiBzdWNj ZXNzLg0KPiA+ID4gPiA+ICsgIEByZXR2YWwgTlVMTCAgICAgICAgICAgIE9uIGZhaWx1cmUuDQo+ ID4gPiA+ID4gKyoqLw0KPiA+ID4gPiA+ICtWT0lEICoNCj4gPiA+ID4gPiArRUZJQVBJDQo+ID4g PiA+ID4gK0VjR3JvdXBJbml0ICgNCj4gPiA+ID4gPiArICBJTiBVSU5UTiAgQ3J5cHRvTmlkDQo+ ID4gPiA+ID4gKyAgKQ0KPiA+ID4gPiA+ICt7DQo+ID4gPiA+ID4gKyAgQVNTRVJUIChGQUxTRSk7 DQo+ID4gPiA+ID4gKyAgcmV0dXJuIE5VTEw7DQo+ID4gPiA+ID4gK30NCj4gPiA+ID4gPiArDQo+ ID4gPiA+ID4gKy8qKg0KPiA+ID4gPiA+ICsgIEdldCBFQyBjdXJ2ZSBwYXJhbWV0ZXJzLiBXaGls ZSBlbGxpcHRpYyBjdXJ2ZSBlcXVhdGlvbiBpcyBZXjIgbW9kDQo+IFAgPSAoWF4zICsgQVggKyBC KSBNb2QgUC4NCj4gPiA+ID4gPiArICBUaGlzIGZ1bmN0aW9uIHdpbGwgc2V0IHRoZSBwcm92aWRl ZCBCaWcgTnVtYmVyIG9iamVjdHMgIHRvIHRoZQ0KPiBjb3JyZXNwb25kaW5nDQo+ID4gPiA+ID4g KyAgdmFsdWVzLiBUaGUgY2FsbGVyIG5lZWRzIHRvIG1ha2Ugc3VyZSBhbGwgdGhlICJvdXQiIEJp Z051bWJlcg0KPiBwYXJhbWV0ZXJzDQo+ID4gPiA+ID4gKyAgYXJlIHByb3Blcmx5IGluaXRpYWxp emVkLg0KPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiArICBAcGFyYW1baW5dICBFY0dyb3VwICAgIEVD IGdyb3VwIG9iamVjdC4NCj4gPiA+ID4gPiArICBAcGFyYW1bb3V0XSBCblByaW1lICAgIEdyb3Vw IHByaW1lIG51bWJlci4NCj4gPiA+ID4gPiArICBAcGFyYW1bb3V0XSBCbkEgICAgICAgIEEgY29l ZmZpY2llbnQuDQo+ID4gPiA+ID4gKyAgQHBhcmFtW291dF0gQm5CICAgICAgICBCIGNvZWZmaWNp ZW50Li4NCj4gPiA+ID4gPiArICBAcGFyYW1baW5dICBCbkN0eCAgICAgIEJOIGNvbnRleHQuDQo+ ID4gPiA+ID4gKw0KPiA+ID4gPiA+ICsgIEByZXR2YWwgVFJVRSAgICAgICAgICBPbiBzdWNjZXNz Lg0KPiA+ID4gPiA+ICsgIEByZXR2YWwgRkFMU0UgICAgICAgICBPdGhlcndpc2UuDQo+ID4gPiA+ ID4gKyoqLw0KPiA+ID4gPiA+ICtCT09MRUFODQo+ID4gPiA+ID4gK0VGSUFQSQ0KPiA+ID4gPiA+ ICtFY0dyb3VwR2V0Q3VydmUgKA0KPiA+ID4gPiA+ICsgIElOIENPTlNUIFZPSUQgICpFY0dyb3Vw LA0KPiA+ID4gPiA+ICsgIE9VVCBWT0lEICAgICAgICpCblByaW1lLA0KPiA+ID4gPiA+ICsgIE9V VCBWT0lEICAgICAgICpCbkEsDQo+ID4gPiA+ID4gKyAgT1VUIFZPSUQgICAgICAgKkJuQiwNCj4g PiA+ID4gPiArICBJTiBWT0lEICAgICAgICAqQm5DdHgNCj4gPiA+ID4gPiArICApDQo+ID4gPiA+ ID4gK3sNCj4gPiA+ID4gPiArICBBU1NFUlQgKEZBTFNFKTsNCj4gPiA+ID4gPiArICByZXR1cm4g RkFMU0U7DQo+ID4gPiA+ID4gK30NCj4gPiA+ID4gPiArDQo+ID4gPiA+ID4gKy8qKg0KPiA+ID4g PiA+ICsgIEdldCBFQyBncm91cCBvcmRlci4NCj4gPiA+ID4gPiArICBUaGlzIGZ1bmN0aW9uIHdp bGwgc2V0IHRoZSBwcm92aWRlZCBCaWcgTnVtYmVyIG9iamVjdCB0byB0aGUNCj4gY29ycmVzcG9u ZGluZw0KPiA+ID4gPiA+ICsgIHZhbHVlLiBUaGUgY2FsbGVyIG5lZWRzIHRvIG1ha2Ugc3VyZSB0 aGF0IHRoZSAib3V0IiBCaWdOdW1iZXINCj4gcGFyYW1ldGVyDQo+ID4gPiA+ID4gKyAgaXMgcHJv cGVybHkgaW5pdGlhbGl6ZWQuDQo+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ICsgIEBwYXJhbVtpbl0g IEVjR3JvdXAgICBFQyBncm91cCBvYmplY3QuDQo+ID4gPiA+ID4gKyAgQHBhcmFtW291dF0gQm5P cmRlciAgIEdyb3VwIHByaW1lIG51bWJlci4NCj4gPiA+ID4gPiArDQo+ID4gPiA+ID4gKyAgQHJl dHZhbCBUUlVFICAgICAgICAgIE9uIHN1Y2Nlc3MuDQo+ID4gPiA+ID4gKyAgQHJldHZhbCBGQUxT RSAgICAgICAgIE90aGVyd2lzZS4NCj4gPiA+ID4gPiArKiovDQo+ID4gPiA+ID4gK0JPT0xFQU4N Cj4gPiA+ID4gPiArRUZJQVBJDQo+ID4gPiA+ID4gK0VjR3JvdXBHZXRPcmRlciAoDQo+ID4gPiA+ ID4gKyAgSU4gVk9JRCAgICpFY0dyb3VwLA0KPiA+ID4gPiA+ICsgIE9VVCBWT0lEICAqQm5PcmRl cg0KPiA+ID4gPiA+ICsgICkNCj4gPiA+ID4gPiArew0KPiA+ID4gPiA+ICsgIEFTU0VSVCAoRkFM U0UpOw0KPiA+ID4gPiA+ICsgIHJldHVybiBGQUxTRTsNCj4gPiA+ID4gPiArfQ0KPiA+ID4gPiA+ ICsNCj4gPiA+ID4gPiArLyoqDQo+ID4gPiA+ID4gKyAgRnJlZSBwcmV2aW91c2x5IGFsbG9jYXRl ZCBFQyBncm91cCBvYmplY3QgdXNpbmcgRWNHcm91cEluaXQoKS4NCj4gPiA+ID4gPiArDQo+ID4g PiA+ID4gKyAgQHBhcmFtW2luXSAgRWNHcm91cCAgIEVDIGdyb3VwIG9iamVjdCB0byBmcmVlLg0K PiA+ID4gPiA+ICsqKi8NCj4gPiA+ID4gPiArVk9JRA0KPiA+ID4gPiA+ICtFRklBUEkNCj4gPiA+ ID4gPiArRWNHcm91cEZyZWUgKA0KPiA+ID4gPiA+ICsgIElOIFZPSUQgICpFY0dyb3VwDQo+ID4g PiA+ID4gKyAgKQ0KPiA+ID4gPiA+ICt7DQo+ID4gPiA+ID4gKyAgQVNTRVJUIChGQUxTRSk7DQo+ ID4gPiA+ID4gK30NCj4gPiA+ID4gPiArDQo+ID4gPiA+ID4gKy8qKg0KPiA+ID4gPiA+ICsgIElu aXRpYWxpemUgbmV3IG9wYXF1ZSBFQyBQb2ludCBvYmplY3QuIFRoaXMgb2JqZWN0IHJlcHJlc2Vu dHMgYW4gRUMNCj4gcG9pbnQNCj4gPiA+ID4gPiArICB3aXRoaW4gdGhlIGdpdmVuIEVDIGdyb3Vw IChjdXJ2ZSkuDQo+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ICsgIEBwYXJhbVtpbl0gIEVDIEdyb3Vw LCBwcm9wZXJseSBpbml0aWFsaXplZCB1c2luZyBFY0dyb3VwSW5pdCgpLg0KPiA+ID4gPiA+ICsN Cj4gPiA+ID4gPiArICBAcmV0dmFsIEVDIFBvaW50IG9iamVjdCAgT24gc3VjY2Vzcy4NCj4gPiA+ ID4gPiArICBAcmV0dmFsIE5VTEwgICAgICAgICAgICAgT24gZmFpbHVyZS4NCj4gPiA+ID4gPiAr KiovDQo+ID4gPiA+ID4gK1ZPSUQgKg0KPiA+ID4gPiA+ICtFRklBUEkNCj4gPiA+ID4gPiArRWNQ b2ludEluaXQgKA0KPiA+ID4gPiA+ICsgIElOIENPTlNUIFZPSUQgICpFY0dyb3VwDQo+ID4gPiA+ ID4gKyAgKQ0KPiA+ID4gPiA+ICt7DQo+ID4gPiA+ID4gKyAgQVNTRVJUIChGQUxTRSk7DQo+ID4g PiA+ID4gKyAgcmV0dXJuIE5VTEw7DQo+ID4gPiA+ID4gK30NCj4gPiA+ID4gPiArDQo+ID4gPiA+ ID4gKy8qKg0KPiA+ID4gPiA+ICsgIEZyZWUgcHJldmlvdXNseSBhbGxvY2F0ZWQgRUMgUG9pbnQg b2JqZWN0IHVzaW5nIEVjUG9pbnRJbml0KCkuDQo+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ICsgIEBw YXJhbVtpbl0gIEVjUG9pbnQgICBFQyBQb2ludCB0byBmcmVlLg0KPiA+ID4gPiA+ICsgIEBwYXJh bVtpbl0gIENsZWFyICAgICBUUlVFIGlmZiB0aGUgbWVtb3J5IHNob3VsZCBiZSBjbGVhcmVkLg0K PiA+ID4gPiA+ICsqKi8NCj4gPiA+ID4gPiArVk9JRA0KPiA+ID4gPiA+ICtFRklBUEkNCj4gPiA+ ID4gPiArRWNQb2ludERlSW5pdCAoDQo+ID4gPiA+ID4gKyAgSU4gVk9JRCAgICAgKkVjUG9pbnQs DQo+ID4gPiA+ID4gKyAgSU4gQk9PTEVBTiAgQ2xlYXINCj4gPiA+ID4gPiArICApDQo+ID4gPiA+ ID4gK3sNCj4gPiA+ID4gPiArICBBU1NFUlQgKEZBTFNFKTsNCj4gPiA+ID4gPiArfQ0KPiA+ID4g PiA+ICsNCj4gPiA+ID4gPiArLyoqDQo+ID4gPiA+ID4gKyAgR2V0IEVDIHBvaW50IGFmZmluZSAo eCx5KSBjb29yZGluYXRlcy4NCj4gPiA+ID4gPiArICBUaGlzIGZ1bmN0aW9uIHdpbGwgc2V0IHRo ZSBwcm92aWRlZCBCaWcgTnVtYmVyIG9iamVjdHMgdG8gdGhlDQo+IGNvcnJlc3BvbmRpbmcNCj4g PiA+ID4gPiArICB2YWx1ZXMuIFRoZSBjYWxsZXIgbmVlZHMgdG8gbWFrZSBzdXJlIGFsbCB0aGUg Im91dCIgQmlnTnVtYmVyDQo+IHBhcmFtZXRlcnMNCj4gPiA+ID4gPiArICBhcmUgcHJvcGVybHkg aW5pdGlhbGl6ZWQuDQo+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ICsgIEBwYXJhbVtpbl0gIEVjR3Jv dXAgICAgRUMgZ3JvdXAgb2JqZWN0Lg0KPiA+ID4gPiA+ICsgIEBwYXJhbVtpbl0gIEVjUG9pbnQg ICAgRUMgcG9pbnQgb2JqZWN0Lg0KPiA+ID4gPiA+ICsgIEBwYXJhbVtvdXRdIEJuWCAgICAgICAg WCBjb29yZGluYXRlLg0KPiA+ID4gPiA+ICsgIEBwYXJhbVtvdXRdIEJuWSAgICAgICAgWSBjb29y ZGluYXRlLg0KPiA+ID4gPiA+ICsgIEBwYXJhbVtpbl0gIEJuQ3R4ICAgICAgQk4gY29udGV4dCwg Y3JlYXRlZCB3aXRoDQo+IEJpZ051bU5ld0NvbnRleHQoKS4NCj4gPiA+ID4gPiArDQo+ID4gPiA+ ID4gKyAgQHJldHZhbCBUUlVFICAgICAgICAgIE9uIHN1Y2Nlc3MuDQo+ID4gPiA+ID4gKyAgQHJl dHZhbCBGQUxTRSAgICAgICAgIE90aGVyd2lzZS4NCj4gPiA+ID4gPiArKiovDQo+ID4gPiA+ID4g K0JPT0xFQU4NCj4gPiA+ID4gPiArRUZJQVBJDQo+ID4gPiA+ID4gK0VjUG9pbnRHZXRBZmZpbmVD b29yZGluYXRlcyAoDQo+ID4gPiA+ID4gKyAgSU4gQ09OU1QgVk9JRCAgKkVjR3JvdXAsDQo+ID4g PiA+ID4gKyAgSU4gQ09OU1QgVk9JRCAgKkVjUG9pbnQsDQo+ID4gPiA+ID4gKyAgT1VUIFZPSUQg ICAgICAgKkJuWCwNCj4gPiA+ID4gPiArICBPVVQgVk9JRCAgICAgICAqQm5ZLA0KPiA+ID4gPiA+ ICsgIElOIFZPSUQgICAgICAgICpCbkN0eA0KPiA+ID4gPiA+ICsgICkNCj4gPiA+ID4gPiArew0K PiA+ID4gPiA+ICsgIEFTU0VSVCAoRkFMU0UpOw0KPiA+ID4gPiA+ICsgIHJldHVybiBGQUxTRTsN Cj4gPiA+ID4gPiArfQ0KPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiArLyoqDQo+ID4gPiA+ID4gKyAg U2V0IEVDIHBvaW50IGFmZmluZSAoeCx5KSBjb29yZGluYXRlcy4NCj4gPiA+ID4gPiArDQo+ID4g PiA+ID4gKyAgQHBhcmFtW2luXSAgRWNHcm91cCAgICBFQyBncm91cCBvYmplY3QuDQo+ID4gPiA+ ID4gKyAgQHBhcmFtW2luXSAgRWNQb2ludCAgICBFQyBwb2ludCBvYmplY3QuDQo+ID4gPiA+ID4g KyAgQHBhcmFtW2luXSAgQm5YICAgICAgICBYIGNvb3JkaW5hdGUuDQo+ID4gPiA+ID4gKyAgQHBh cmFtW2luXSAgQm5ZICAgICAgICBZIGNvb3JkaW5hdGUuDQo+ID4gPiA+ID4gKyAgQHBhcmFtW2lu XSAgQm5DdHggICAgICBCTiBjb250ZXh0LCBjcmVhdGVkIHdpdGgNCj4gQmlnTnVtTmV3Q29udGV4 dCgpLg0KPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiArICBAcmV0dmFsIFRSVUUgICAgICAgICAgT24g c3VjY2Vzcy4NCj4gPiA+ID4gPiArICBAcmV0dmFsIEZBTFNFICAgICAgICAgT3RoZXJ3aXNlLg0K PiA+ID4gPiA+ICsqKi8NCj4gPiA+ID4gPiArQk9PTEVBTg0KPiA+ID4gPiA+ICtFRklBUEkNCj4g PiA+ID4gPiArRWNQb2ludFNldEFmZmluZUNvb3JkaW5hdGVzICgNCj4gPiA+ID4gPiArICBJTiBD T05TVCBWT0lEICAqRWNHcm91cCwNCj4gPiA+ID4gPiArICBJTiBWT0lEICAgICAgICAqRWNQb2lu dCwNCj4gPiA+ID4gPiArICBJTiBDT05TVCBWT0lEICAqQm5YLA0KPiA+ID4gPiA+ICsgIElOIENP TlNUIFZPSUQgICpCblksDQo+ID4gPiA+ID4gKyAgSU4gVk9JRCAgICAgICAgKkJuQ3R4DQo+ID4g PiA+ID4gKyAgKQ0KPiA+ID4gPiA+ICt7DQo+ID4gPiA+ID4gKyAgQVNTRVJUIChGQUxTRSk7DQo+ ID4gPiA+ID4gKyAgcmV0dXJuIEZBTFNFOw0KPiA+ID4gPiA+ICt9DQo+ID4gPiA+ID4gKw0KPiA+ ID4gPiA+ICsvKioNCj4gPiA+ID4gPiArICBFQyBQb2ludCBhZGRpdGlvbi4gRWNQb2ludFJlc3Vs dCA9IEVjUG9pbnRBICsgRWNQb2ludEIuDQo+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ICsgIEBwYXJh bVtpbl0gIEVjR3JvdXAgICAgICAgICAgRUMgZ3JvdXAgb2JqZWN0Lg0KPiA+ID4gPiA+ICsgIEBw YXJhbVtvdXRdIEVjUG9pbnRSZXN1bHQgICAgRUMgcG9pbnQgdG8gaG9sZCB0aGUgcmVzdWx0LiBU aGUNCj4gcG9pbnQgc2hvdWxkDQo+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBiZSBwcm9wZXJseSBpbml0aWFsaXplZC4NCj4gPiA+ID4gPiArICBAcGFyYW1baW5dICBF Y1BvaW50QSAgICAgICAgIEVDIFBvaW50Lg0KPiA+ID4gPiA+ICsgIEBwYXJhbVtpbl0gIEVjUG9p bnRCICAgICAgICAgRUMgUG9pbnQuDQo+ID4gPiA+ID4gKyAgQHBhcmFtW2luXSAgQm5DdHggICAg ICAgICAgICBCTiBjb250ZXh0LCBjcmVhdGVkIHdpdGgNCj4gQmlnTnVtTmV3Q29udGV4dCgpLg0K PiA+ID4gPiA+ICsNCj4gPiA+ID4gPiArICBAcmV0dmFsIFRSVUUgICAgICAgICAgT24gc3VjY2Vz cy4NCj4gPiA+ID4gPiArICBAcmV0dmFsIEZBTFNFICAgICAgICAgT3RoZXJ3aXNlLg0KPiA+ID4g PiA+ICsqKi8NCj4gPiA+ID4gPiArQk9PTEVBTg0KPiA+ID4gPiA+ICtFRklBUEkNCj4gPiA+ID4g PiArRWNQb2ludEFkZCAoDQo+ID4gPiA+ID4gKyAgSU4gQ09OU1QgVk9JRCAgKkVjR3JvdXAsDQo+ ID4gPiA+ID4gKyAgT1VUIFZPSUQgICAgICAgKkVjUG9pbnRSZXN1bHQsDQo+ID4gPiA+ID4gKyAg SU4gQ09OU1QgVk9JRCAgKkVjUG9pbnRBLA0KPiA+ID4gPiA+ICsgIElOIENPTlNUIFZPSUQgICpF Y1BvaW50QiwNCj4gPiA+ID4gPiArICBJTiBWT0lEICAgICAgICAqQm5DdHgNCj4gPiA+ID4gPiAr ICApDQo+ID4gPiA+ID4gK3sNCj4gPiA+ID4gPiArICBBU1NFUlQgKEZBTFNFKTsNCj4gPiA+ID4g PiArICByZXR1cm4gRkFMU0U7DQo+ID4gPiA+ID4gK30NCj4gPiA+ID4gPiArDQo+ID4gPiA+ID4g Ky8qKg0KPiA+ID4gPiA+ICsgIFZhcmlhYmxlIEVDIHBvaW50IG11bHRpcGxpY2F0aW9uLiBFY1Bv aW50UmVzdWx0ID0gRWNQb2ludCAqDQo+IEJuUFNjYWxhci4NCj4gPiA+ID4gPiArDQo+ID4gPiA+ ID4gKyAgQHBhcmFtW2luXSAgRWNHcm91cCAgICAgICAgICBFQyBncm91cCBvYmplY3QuDQo+ID4g PiA+ID4gKyAgQHBhcmFtW291dF0gRWNQb2ludFJlc3VsdCAgICBFQyBwb2ludCB0byBob2xkIHRo ZSByZXN1bHQuIFRoZQ0KPiBwb2ludCBzaG91bGQNCj4gPiA+ID4gPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGJlIHByb3Blcmx5IGluaXRpYWxpemVkLg0KPiA+ID4gPiA+ICsgIEBw YXJhbVtpbl0gIEVjUG9pbnQgICAgICAgICAgRUMgUG9pbnQuDQo+ID4gPiA+ID4gKyAgQHBhcmFt W2luXSAgQm5QU2NhbGFyICAgICAgICBQIFNjYWxhci4NCj4gPiA+ID4gPiArICBAcGFyYW1baW5d ICBCbkN0eCAgICAgICAgICAgIEJOIGNvbnRleHQsIGNyZWF0ZWQgd2l0aA0KPiBCaWdOdW1OZXdD b250ZXh0KCkuDQo+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ICsgIEByZXR2YWwgVFJVRSAgICAgICAg ICBPbiBzdWNjZXNzLg0KPiA+ID4gPiA+ICsgIEByZXR2YWwgRkFMU0UgICAgICAgICBPdGhlcndp c2UuDQo+ID4gPiA+ID4gKyoqLw0KPiA+ID4gPiA+ICtCT09MRUFODQo+ID4gPiA+ID4gK0VGSUFQ SQ0KPiA+ID4gPiA+ICtFY1BvaW50TXVsICgNCj4gPiA+ID4gPiArICBJTiBDT05TVCBWT0lEICAq RWNHcm91cCwNCj4gPiA+ID4gPiArICBPVVQgVk9JRCAgICAgICAqRWNQb2ludFJlc3VsdCwNCj4g PiA+ID4gPiArICBJTiBDT05TVCBWT0lEICAqRWNQb2ludCwNCj4gPiA+ID4gPiArICBJTiBDT05T VCBWT0lEICAqQm5QU2NhbGFyLA0KPiA+ID4gPiA+ICsgIElOIFZPSUQgICAgICAgICpCbkN0eA0K PiA+ID4gPiA+ICsgICkNCj4gPiA+ID4gPiArew0KPiA+ID4gPiA+ICsgIEFTU0VSVCAoRkFMU0Up Ow0KPiA+ID4gPiA+ICsgIHJldHVybiBGQUxTRTsNCj4gPiA+ID4gPiArfQ0KPiA+ID4gPiA+ICsN Cj4gPiA+ID4gPiArLyoqDQo+ID4gPiA+ID4gKyAgQ2FsY3VsYXRlIHRoZSBpbnZlcnNlIG9mIHRo ZSBzdXBwbGllZCBFQyBwb2ludC4NCj4gPiA+ID4gPiArDQo+ID4gPiA+ID4gKyAgQHBhcmFtW2lu XSAgICAgRWNHcm91cCAgIEVDIGdyb3VwIG9iamVjdC4NCj4gPiA+ID4gPiArICBAcGFyYW1baW4s b3V0XSBFY1BvaW50ICAgRUMgcG9pbnQgdG8gaW52ZXJ0Lg0KPiA+ID4gPiA+ICsgIEBwYXJhbVtp bl0gICAgIEJuQ3R4ICAgICBCTiBjb250ZXh0LCBjcmVhdGVkIHdpdGgNCj4gQmlnTnVtTmV3Q29u dGV4dCgpLg0KPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiArICBAcmV0dmFsIFRSVUUgICAgICAgICAg T24gc3VjY2Vzcy4NCj4gPiA+ID4gPiArICBAcmV0dmFsIEZBTFNFICAgICAgICAgT3RoZXJ3aXNl Lg0KPiA+ID4gPiA+ICsqKi8NCj4gPiA+ID4gPiArQk9PTEVBTg0KPiA+ID4gPiA+ICtFRklBUEkN Cj4gPiA+ID4gPiArRWNQb2ludEludmVydCAoDQo+ID4gPiA+ID4gKyAgSU4gQ09OU1QgVk9JRCAg KkVjR3JvdXAsDQo+ID4gPiA+ID4gKyAgSU4gT1VUIFZPSUQgICAgKkVjUG9pbnQsDQo+ID4gPiA+ ID4gKyAgSU4gVk9JRCAgICAgICAgKkJuQ3R4DQo+ID4gPiA+ID4gKyAgKQ0KPiA+ID4gPiA+ICt7 DQo+ID4gPiA+ID4gKyAgQVNTRVJUIChGQUxTRSk7DQo+ID4gPiA+ID4gKyAgcmV0dXJuIEZBTFNF Ow0KPiA+ID4gPiA+ICt9DQo+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ICsvKioNCj4gPiA+ID4gPiAr ICBDaGVjayBpZiB0aGUgc3VwcGxpZWQgcG9pbnQgaXMgb24gRUMgY3VydmUuDQo+ID4gPiA+ID4g Kw0KPiA+ID4gPiA+ICsgIEBwYXJhbVtpbl0gIEVjR3JvdXAgICBFQyBncm91cCBvYmplY3QuDQo+ ID4gPiA+ID4gKyAgQHBhcmFtW2luXSAgRWNQb2ludCAgIEVDIHBvaW50IHRvIGNoZWNrLg0KPiA+ ID4gPiA+ICsgIEBwYXJhbVtpbl0gIEJuQ3R4ICAgICBCTiBjb250ZXh0LCBjcmVhdGVkIHdpdGgN Cj4gQmlnTnVtTmV3Q29udGV4dCgpLg0KPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiArICBAcmV0dmFs IFRSVUUgICAgICAgICAgT24gY3VydmUuDQo+ID4gPiA+ID4gKyAgQHJldHZhbCBGQUxTRSAgICAg ICAgIE90aGVyd2lzZS4NCj4gPiA+ID4gPiArKiovDQo+ID4gPiA+ID4gK0JPT0xFQU4NCj4gPiA+ ID4gPiArRUZJQVBJDQo+ID4gPiA+ID4gK0VjUG9pbnRJc09uQ3VydmUgKA0KPiA+ID4gPiA+ICsg IElOIENPTlNUIFZPSUQgICpFY0dyb3VwLA0KPiA+ID4gPiA+ICsgIElOIENPTlNUIFZPSUQgICpF Y1BvaW50LA0KPiA+ID4gPiA+ICsgIElOIFZPSUQgICAgICAgICpCbkN0eA0KPiA+ID4gPiA+ICsg ICkNCj4gPiA+ID4gPiArew0KPiA+ID4gPiA+ICsgIEFTU0VSVCAoRkFMU0UpOw0KPiA+ID4gPiA+ ICsgIHJldHVybiBGQUxTRTsNCj4gPiA+ID4gPiArfQ0KPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiAr LyoqDQo+ID4gPiA+ID4gKyAgQ2hlY2sgaWYgdGhlIHN1cHBsaWVkIHBvaW50IGlzIGF0IGluZmlu aXR5Lg0KPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiArICBAcGFyYW1baW5dICBFY0dyb3VwICAgRUMg Z3JvdXAgb2JqZWN0Lg0KPiA+ID4gPiA+ICsgIEBwYXJhbVtpbl0gIEVjUG9pbnQgICBFQyBwb2lu dCB0byBjaGVjay4NCj4gPiA+ID4gPiArDQo+ID4gPiA+ID4gKyAgQHJldHZhbCBUUlVFICAgICAg ICAgIEF0IGluZmluaXR5Lg0KPiA+ID4gPiA+ICsgIEByZXR2YWwgRkFMU0UgICAgICAgICBPdGhl cndpc2UuDQo+ID4gPiA+ID4gKyoqLw0KPiA+ID4gPiA+ICtCT09MRUFODQo+ID4gPiA+ID4gK0VG SUFQSQ0KPiA+ID4gPiA+ICtFY1BvaW50SXNBdEluZmluaXR5ICgNCj4gPiA+ID4gPiArICBJTiBD T05TVCBWT0lEICAqRWNHcm91cCwNCj4gPiA+ID4gPiArICBJTiBDT05TVCBWT0lEICAqRWNQb2lu dA0KPiA+ID4gPiA+ICsgICkNCj4gPiA+ID4gPiArew0KPiA+ID4gPiA+ICsgIEFTU0VSVCAoRkFM U0UpOw0KPiA+ID4gPiA+ICsgIHJldHVybiBGQUxTRTsNCj4gPiA+ID4gPiArfQ0KPiA+ID4gPiA+ ICsNCj4gPiA+ID4gPiArLyoqDQo+ID4gPiA+ID4gKyAgQ2hlY2sgaWYgRUMgcG9pbnRzIGFyZSBl cXVhbC4NCj4gPiA+ID4gPiArDQo+ID4gPiA+ID4gKyAgQHBhcmFtW2luXSAgRWNHcm91cCAgIEVD IGdyb3VwIG9iamVjdC4NCj4gPiA+ID4gPiArICBAcGFyYW1baW5dICBFY1BvaW50QSAgRUMgcG9p bnQgQS4NCj4gPiA+ID4gPiArICBAcGFyYW1baW5dICBFY1BvaW50QiAgRUMgcG9pbnQgQi4NCj4g PiA+ID4gPiArICBAcGFyYW1baW5dICBCbkN0eCAgICAgQk4gY29udGV4dCwgY3JlYXRlZCB3aXRo DQo+IEJpZ051bU5ld0NvbnRleHQoKS4NCj4gPiA+ID4gPiArDQo+ID4gPiA+ID4gKyAgQHJldHZh bCBUUlVFICAgICAgICAgIEEgPT0gQi4NCj4gPiA+ID4gPiArICBAcmV0dmFsIEZBTFNFICAgICAg ICAgT3RoZXJ3aXNlLg0KPiA+ID4gPiA+ICsqKi8NCj4gPiA+ID4gPiArQk9PTEVBTg0KPiA+ID4g PiA+ICtFRklBUEkNCj4gPiA+ID4gPiArRWNQb2ludEVxdWFsICgNCj4gPiA+ID4gPiArICBJTiBD T05TVCBWT0lEICAqRWNHcm91cCwNCj4gPiA+ID4gPiArICBJTiBDT05TVCBWT0lEICAqRWNQb2lu dEEsDQo+ID4gPiA+ID4gKyAgSU4gQ09OU1QgVk9JRCAgKkVjUG9pbnRCLA0KPiA+ID4gPiA+ICsg IElOIFZPSUQgICAgICAgICpCbkN0eA0KPiA+ID4gPiA+ICsgICkNCj4gPiA+ID4gPiArew0KPiA+ ID4gPiA+ICsgIEFTU0VSVCAoRkFMU0UpOw0KPiA+ID4gPiA+ICsgIHJldHVybiBGQUxTRTsNCj4g PiA+ID4gPiArfQ0KPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiArLyoqDQo+ID4gPiA+ID4gKyAgU2V0 IEVDIHBvaW50IGNvbXByZXNzZWQgY29vcmRpbmF0ZXMuIFBvaW50cyBjYW4gYmUgZGVzY3JpYmVk IGluDQo+IHRlcm1zIG9mDQo+ID4gPiA+ID4gKyAgdGhlaXIgY29tcHJlc3NlZCBjb29yZGluYXRl cy4gRm9yIGEgcG9pbnQgKHgsIHkpLCBmb3IgYW55IGdpdmVuDQo+IHZhbHVlIGZvciB4DQo+ID4g PiA+ID4gKyAgc3VjaCB0aGF0IHRoZSBwb2ludCBpcyBvbiB0aGUgY3VydmUgdGhlcmUgd2lsbCBv bmx5IGV2ZXIgYmUgdHdvDQo+IHBvc3NpYmxlDQo+ID4gPiA+ID4gKyAgdmFsdWVzIGZvciB5LiBU aGVyZWZvcmUsIGEgcG9pbnQgY2FuIGJlIHNldCB1c2luZyB0aGlzIGZ1bmN0aW9uDQo+IHdoZXJl IEJuWCBpcw0KPiA+ID4gPiA+ICsgIHRoZSB4IGNvb3JkaW5hdGUgYW5kIFlCaXQgaXMgYSB2YWx1 ZSAwIG9yIDEgdG8gaWRlbnRpZnkgd2hpY2ggb2YgdGhlDQo+IHR3bw0KPiA+ID4gPiA+ICsgIHBv c3NpYmxlIHZhbHVlcyBmb3IgeSBzaG91bGQgYmUgdXNlZC4NCj4gPiA+ID4gPiArDQo+ID4gPiA+ ID4gKyAgQHBhcmFtW2luXSAgRWNHcm91cCAgICBFQyBncm91cCBvYmplY3QuDQo+ID4gPiA+ID4g KyAgQHBhcmFtW2luXSAgRWNQb2ludCAgICBFQyBQb2ludC4NCj4gPiA+ID4gPiArICBAcGFyYW1b aW5dICBCblggICAgICAgIFggY29vcmRpbmF0ZS4NCj4gPiA+ID4gPiArICBAcGFyYW1baW5dICBZ Qml0ICAgICAgIDAgb3IgMSB0byBpZGVudGlmeSB3aGljaCBZIHZhbHVlIGlzIHVzZWQuDQo+ID4g PiA+ID4gKyAgQHBhcmFtW2luXSAgQm5DdHggICAgICBCTiBjb250ZXh0LCBjcmVhdGVkIHdpdGgN Cj4gQmlnTnVtTmV3Q29udGV4dCgpLg0KPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiArICBAcmV0dmFs IFRSVUUgICAgICAgICAgT24gc3VjY2Vzcy4NCj4gPiA+ID4gPiArICBAcmV0dmFsIEZBTFNFICAg ICAgICAgT3RoZXJ3aXNlLg0KPiA+ID4gPiA+ICsqKi8NCj4gPiA+ID4gPiArQk9PTEVBTg0KPiA+ ID4gPiA+ICtFRklBUEkNCj4gPiA+ID4gPiArRWNQb2ludFNldENvbXByZXNzZWRDb29yZGluYXRl cyAoDQo+ID4gPiA+ID4gKyAgSU4gQ09OU1QgVk9JRCAgKkVjR3JvdXAsDQo+ID4gPiA+ID4gKyAg SU4gVk9JRCAgICAgICAgKkVjUG9pbnQsDQo+ID4gPiA+ID4gKyAgSU4gQ09OU1QgVk9JRCAgKkJu WCwNCj4gPiA+ID4gPiArICBJTiBVSU5UOCAgICAgICBZQml0LA0KPiA+ID4gPiA+ICsgIElOIFZP SUQgICAgICAgICpCbkN0eA0KPiA+ID4gPiA+ICsgICkNCj4gPiA+ID4gPiArew0KPiA+ID4gPiA+ ICsgIEFTU0VSVCAoRkFMU0UpOw0KPiA+ID4gPiA+ICsgIHJldHVybiBGQUxTRTsNCj4gPiA+ID4g PiArfQ0KPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiArLyoqDQo+ID4gPiA+ID4gKyAgQWxsb2NhdGVz IGFuZCBJbml0aWFsaXplcyBvbmUgRWxsaXB0aWMgQ3VydmUgQ29udGV4dCBmb3Igc3Vic2VxdWVu dA0KPiB1c2UNCj4gPiA+ID4gPiArICB3aXRoIHRoZSBOSUQuDQo+ID4gPiA+ID4gKw0KPiA+ID4g PiA+ICsgIEBwYXJhbVtpbl0gIE5pZCBjaXBoZXIgTklEDQo+ID4gPiA+ID4gKyAgQHJldHVybiAg ICAgUG9pbnRlciB0byB0aGUgRWxsaXB0aWMgQ3VydmUgQ29udGV4dCB0aGF0IGhhcyBiZWVuDQo+ IGluaXRpYWxpemVkLg0KPiA+ID4gPiA+ICsgICAgICAgICAgICAgIElmIHRoZSBhbGxvY2F0aW9u cyBmYWlscywgRWNOZXdCeU5pZCgpIHJldHVybnMgTlVMTC4NCj4gPiA+ID4gPiArKiovDQo+ID4g PiA+ID4gK1ZPSUQgKg0KPiA+ID4gPiA+ICtFRklBUEkNCj4gPiA+ID4gPiArRWNOZXdCeU5pZCAo DQo+ID4gPiA+ID4gKyAgSU4gVUlOVE4gIE5pZA0KPiA+ID4gPiA+ICsgICkNCj4gPiA+ID4gPiAr ew0KPiA+ID4gPiA+ICsgIEFTU0VSVCAoRkFMU0UpOw0KPiA+ID4gPiA+ICsgIHJldHVybiBOVUxM Ow0KPiA+ID4gPiA+ICt9DQo+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ICsvKioNCj4gPiA+ID4gPiAr ICBSZWxlYXNlIHRoZSBzcGVjaWZpZWQgRUMgY29udGV4dC4NCj4gPiA+ID4gPiArDQo+ID4gPiA+ ID4gKyAgQHBhcmFtW2luXSAgRWNDb250ZXh0ICBQb2ludGVyIHRvIHRoZSBFQyBjb250ZXh0IHRv IGJlIHJlbGVhc2VkLg0KPiA+ID4gPiA+ICsqKi8NCj4gPiA+ID4gPiArVk9JRA0KPiA+ID4gPiA+ ICtFRklBUEkNCj4gPiA+ID4gPiArRWNGcmVlICgNCj4gPiA+ID4gPiArICBJTiAgVk9JRCAgKkVj Q29udGV4dA0KPiA+ID4gPiA+ICsgICkNCj4gPiA+ID4gPiArew0KPiA+ID4gPiA+ICsgIEFTU0VS VCAoRkFMU0UpOw0KPiA+ID4gPiA+ICt9DQo+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ICsvKioNCj4g PiA+ID4gPiArICBHZW5lcmF0ZXMgRUMga2V5IGFuZCByZXR1cm5zIEVDIHB1YmxpYyBrZXkgKFgs IFkpLCBQbGVhc2Ugbm90ZSwNCj4gdGhpcyBmdW5jdGlvbiB1c2VzDQo+ID4gPiA+ID4gKyAgcHNl dWRvIHJhbmRvbSBudW1iZXIgZ2VuZXJhdG9yLiBUaGUgY2FsbGVyIG11c3QgbWFrZSBzdXJlDQo+ IFJhbmRvbVNlZWQoKQ0KPiA+ID4gPiA+ICsgIGZ1bmN0aW9uIHdhcyBwcm9wZXJseSBjYWxsZWQg YmVmb3JlLg0KPiA+ID4gPiA+ICsgIFRoZSBFYyBjb250ZXh0IHNob3VsZCBiZSBjb3JyZWN0bHkg aW5pdGlhbGl6ZWQgYnkgRWNOZXdCeU5pZC4NCj4gPiA+ID4gPiArICBUaGlzIGZ1bmN0aW9uIGdl bmVyYXRlcyByYW5kb20gc2VjcmV0LCBhbmQgY29tcHV0ZXMgdGhlIHB1YmxpYw0KPiBrZXkgKFgs IFkpLCB3aGljaCBpcw0KPiA+ID4gPiA+ICsgIHJldHVybmVkIHZpYSBwYXJhbWV0ZXIgUHVibGlj LCBQdWJsaWNTaXplLg0KPiA+ID4gPiA+ICsgIFggaXMgdGhlIGZpcnN0IGhhbGYgb2YgUHVibGlj IHdpdGggc2l6ZSBiZWluZyBQdWJsaWNTaXplIC8gMiwNCj4gPiA+ID4gPiArICBZIGlzIHRoZSBz ZWNvbmQgaGFsZiBvZiBQdWJsaWMgd2l0aCBzaXplIGJlaW5nIFB1YmxpY1NpemUgLyAyLg0KPiA+ ID4gPiA+ICsgIEVDIGNvbnRleHQgaXMgdXBkYXRlZCBhY2NvcmRpbmdseS4NCj4gPiA+ID4gPiAr ICBJZiB0aGUgUHVibGljIGJ1ZmZlciBpcyB0b28gc21hbGwgdG8gaG9sZCB0aGUgcHVibGljIFgs IFksIEZBTFNFIGlzDQo+IHJldHVybmVkIGFuZA0KPiA+ID4gPiA+ICsgIFB1YmxpY1NpemUgaXMg c2V0IHRvIHRoZSByZXF1aXJlZCBidWZmZXIgc2l6ZSB0byBvYnRhaW4gdGhlIHB1YmxpYyBYLA0K PiBZLg0KPiA+ID4gPiA+ICsgIEZvciBQLTI1NiwgdGhlIFB1YmxpY1NpemUgaXMgNjQuIEZpcnN0 IDMyLWJ5dGUgaXMgWCwgU2Vjb25kIDMyLWJ5dGUNCj4gaXMgWS4NCj4gPiA+ID4gPiArICBGb3Ig UC0zODQsIHRoZSBQdWJsaWNTaXplIGlzIDk2LiBGaXJzdCA0OC1ieXRlIGlzIFgsIFNlY29uZCA0 OC1ieXRlDQo+IGlzIFkuDQo+ID4gPiA+ID4gKyAgRm9yIFAtNTIxLCB0aGUgUHVibGljU2l6ZSBp cyAxMzIuIEZpcnN0IDY2LWJ5dGUgaXMgWCwgU2Vjb25kIDY2LWJ5dGUNCj4gaXMgWS4NCj4gPiA+ ID4gPiArICBJZiBFY0NvbnRleHQgaXMgTlVMTCwgdGhlbiByZXR1cm4gRkFMU0UuDQo+ID4gPiA+ ID4gKyAgSWYgUHVibGljU2l6ZSBpcyBOVUxMLCB0aGVuIHJldHVybiBGQUxTRS4NCj4gPiA+ID4g PiArICBJZiBQdWJsaWNTaXplIGlzIGxhcmdlIGVub3VnaCBidXQgUHVibGljIGlzIE5VTEwsIHRo ZW4gcmV0dXJuIEZBTFNFLg0KPiA+ID4gPiA+ICsgIEBwYXJhbVtpbiwgb3V0XSAgRWNDb250ZXh0 ICAgICAgUG9pbnRlciB0byB0aGUgRUMgY29udGV4dC4NCj4gPiA+ID4gPiArICBAcGFyYW1bb3V0 XSAgICAgIFB1YmxpY0tleSAgICAgIFBvaW50ZXIgdG8gdCBidWZmZXIgdG8gcmVjZWl2ZQ0KPiBn ZW5lcmF0ZWQgcHVibGljIFgsWS4NCj4gPiA+ID4gPiArICBAcGFyYW1baW4sIG91dF0gIFB1Ymxp Y0tleVNpemUgIE9uIGlucHV0LCB0aGUgc2l6ZSBvZiBQdWJsaWMgYnVmZmVyDQo+IGluIGJ5dGVz Lg0KPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT24gb3V0cHV0 LCB0aGUgc2l6ZSBvZiBkYXRhIHJldHVybmVkIGluIFB1YmxpYw0KPiBidWZmZXIgaW4gYnl0ZXMu DQo+ID4gPiA+ID4gKyAgQHJldHZhbCBUUlVFICAgRUMgcHVibGljIFgsWSBnZW5lcmF0aW9uIHN1 Y2NlZWRlZC4NCj4gPiA+ID4gPiArICBAcmV0dmFsIEZBTFNFICBFQyBwdWJsaWMgWCxZIGdlbmVy YXRpb24gZmFpbGVkLg0KPiA+ID4gPiA+ICsgIEByZXR2YWwgRkFMU0UgIFB1YmxpY0tleVNpemUg aXMgbm90IGxhcmdlIGVub3VnaC4NCj4gPiA+ID4gPiArKiovDQo+ID4gPiA+ID4gK0JPT0xFQU4N Cj4gPiA+ID4gPiArRUZJQVBJDQo+ID4gPiA+ID4gK0VjR2VuZXJhdGVLZXkgKA0KPiA+ID4gPiA+ ICsgIElOIE9VVCAgVk9JRCAgICpFY0NvbnRleHQsDQo+ID4gPiA+ID4gKyAgT1VUICAgICBVSU5U OCAgKlB1YmxpY0tleSwNCj4gPiA+ID4gPiArICBJTiBPVVQgIFVJTlROICAqUHVibGljS2V5U2l6 ZQ0KPiA+ID4gPiA+ICsgICkNCj4gPiA+ID4gPiArew0KPiA+ID4gPiA+ICsgIEFTU0VSVCAoRkFM U0UpOw0KPiA+ID4gPiA+ICsgIHJldHVybiBGQUxTRTsNCj4gPiA+ID4gPiArfQ0KPiA+ID4gPiA+ ICsNCj4gPiA+ID4gPiArLyoqDQo+ID4gPiA+ID4gKyAgR2V0cyB0aGUgcHVibGljIGtleSBjb21w b25lbnQgZnJvbSB0aGUgZXN0YWJsaXNoZWQgRUMgY29udGV4dC4NCj4gPiA+ID4gPiArICBUaGUg RWMgY29udGV4dCBzaG91bGQgYmUgY29ycmVjdGx5IGluaXRpYWxpemVkIGJ5IEVjTmV3QnlOaWQs IGFuZA0KPiBzdWNjZXNzZnVsbHkNCj4gPiA+ID4gPiArICBnZW5lcmF0ZSBrZXkgcGFpciBmcm9t IEVjR2VuZXJhdGVLZXkoKS4NCj4gPiA+ID4gPiArICBGb3IgUC0yNTYsIHRoZSBQdWJsaWNTaXpl IGlzIDY0LiBGaXJzdCAzMi1ieXRlIGlzIFgsIFNlY29uZCAzMi1ieXRlDQo+IGlzIFkuDQo+ID4g PiA+ID4gKyAgRm9yIFAtMzg0LCB0aGUgUHVibGljU2l6ZSBpcyA5Ni4gRmlyc3QgNDgtYnl0ZSBp cyBYLCBTZWNvbmQgNDgtYnl0ZQ0KPiBpcyBZLg0KPiA+ID4gPiA+ICsgIEZvciBQLTUyMSwgdGhl IFB1YmxpY1NpemUgaXMgMTMyLiBGaXJzdCA2Ni1ieXRlIGlzIFgsIFNlY29uZCA2Ni1ieXRlDQo+ IGlzIFkuDQo+ID4gPiA+ID4gKyAgQHBhcmFtW2luLCBvdXRdICBFY0NvbnRleHQgICAgICBQb2lu dGVyIHRvIEVDIGNvbnRleHQgYmVpbmcgc2V0Lg0KPiA+ID4gPiA+ICsgIEBwYXJhbVtvdXRdICAg ICAgUHVibGljS2V5ICAgICAgUG9pbnRlciB0byB0IGJ1ZmZlciB0byByZWNlaXZlDQo+IGdlbmVy YXRlZCBwdWJsaWMgWCxZLg0KPiA+ID4gPiA+ICsgIEBwYXJhbVtpbiwgb3V0XSAgUHVibGljS2V5 U2l6ZSAgT24gaW5wdXQsIHRoZSBzaXplIG9mIFB1YmxpYyBidWZmZXINCj4gaW4gYnl0ZXMuDQo+ ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPbiBvdXRwdXQsIHRo ZSBzaXplIG9mIGRhdGEgcmV0dXJuZWQgaW4gUHVibGljDQo+IGJ1ZmZlciBpbiBieXRlcy4NCj4g PiA+ID4gPiArICBAcmV0dmFsICBUUlVFICAgRUMga2V5IGNvbXBvbmVudCB3YXMgcmV0cmlldmVk IHN1Y2Nlc3NmdWxseS4NCj4gPiA+ID4gPiArICBAcmV0dmFsICBGQUxTRSAgSW52YWxpZCBFQyBr ZXkgY29tcG9uZW50Lg0KPiA+ID4gPiA+ICsqKi8NCj4gPiA+ID4gPiArQk9PTEVBTg0KPiA+ID4g PiA+ICtFRklBUEkNCj4gPiA+ID4gPiArRWNHZXRQdWJLZXkgKA0KPiA+ID4gPiA+ICsgIElOIE9V VCAgVk9JRCAgICpFY0NvbnRleHQsDQo+ID4gPiA+ID4gKyAgT1VUICAgICBVSU5UOCAgKlB1Ymxp Y0tleSwNCj4gPiA+ID4gPiArICBJTiBPVVQgIFVJTlROICAqUHVibGljS2V5U2l6ZQ0KPiA+ID4g PiA+ICsgICkNCj4gPiA+ID4gPiArew0KPiA+ID4gPiA+ICsgIEFTU0VSVCAoRkFMU0UpOw0KPiA+ ID4gPiA+ICsgIHJldHVybiBGQUxTRTsNCj4gPiA+ID4gPiArfQ0KPiA+ID4gPiA+ICsNCj4gPiA+ ID4gPiArLyoqDQo+ID4gPiA+ID4gKyAgQ29tcHV0ZXMgZXhjaGFuZ2VkIGNvbW1vbiBrZXkuDQo+ ID4gPiA+ID4gKyAgR2l2ZW4gcGVlcidzIHB1YmxpYyBrZXkgKFgsIFkpLCB0aGlzIGZ1bmN0aW9u IGNvbXB1dGVzIHRoZQ0KPiBleGNoYW5nZWQgY29tbW9uIGtleSwNCj4gPiA+ID4gPiArICBiYXNl ZCBvbiBpdHMgb3duIGNvbnRleHQgaW5jbHVkaW5nIHZhbHVlIG9mIGN1cnZlIHBhcmFtZXRlciBh bmQNCj4gcmFuZG9tIHNlY3JldC4NCj4gPiA+ID4gPiArICBYIGlzIHRoZSBmaXJzdCBoYWxmIG9m IFBlZXJQdWJsaWMgd2l0aCBzaXplIGJlaW5nIFBlZXJQdWJsaWNTaXplIC8gMiwNCj4gPiA+ID4g PiArICBZIGlzIHRoZSBzZWNvbmQgaGFsZiBvZiBQZWVyUHVibGljIHdpdGggc2l6ZSBiZWluZyBQ ZWVyUHVibGljU2l6ZSAvDQo+IDIuDQo+ID4gPiA+ID4gKyAgSWYgRWNDb250ZXh0IGlzIE5VTEws IHRoZW4gcmV0dXJuIEZBTFNFLg0KPiA+ID4gPiA+ICsgIElmIFBlZXJQdWJsaWMgaXMgTlVMTCwg dGhlbiByZXR1cm4gRkFMU0UuDQo+ID4gPiA+ID4gKyAgSWYgUGVlclB1YmxpY1NpemUgaXMgMCwg dGhlbiByZXR1cm4gRkFMU0UuDQo+ID4gPiA+ID4gKyAgSWYgS2V5IGlzIE5VTEwsIHRoZW4gcmV0 dXJuIEZBTFNFLg0KPiA+ID4gPiA+ICsgIElmIEtleVNpemUgaXMgbm90IGxhcmdlIGVub3VnaCwg dGhlbiByZXR1cm4gRkFMU0UuDQo+ID4gPiA+ID4gKyAgRm9yIFAtMjU2LCB0aGUgUGVlclB1Ymxp Y1NpemUgaXMgNjQuIEZpcnN0IDMyLWJ5dGUgaXMgWCwgU2Vjb25kIDMyLQ0KPiBieXRlIGlzIFku DQo+ID4gPiA+ID4gKyAgRm9yIFAtMzg0LCB0aGUgUGVlclB1YmxpY1NpemUgaXMgOTYuIEZpcnN0 IDQ4LWJ5dGUgaXMgWCwgU2Vjb25kIDQ4LQ0KPiBieXRlIGlzIFkuDQo+ID4gPiA+ID4gKyAgRm9y IFAtNTIxLCB0aGUgUGVlclB1YmxpY1NpemUgaXMgMTMyLiBGaXJzdCA2Ni1ieXRlIGlzIFgsIFNl Y29uZCA2Ni0NCj4gYnl0ZSBpcyBZLg0KPiA+ID4gPiA+ICsgIEBwYXJhbVtpbiwgb3V0XSAgRWND b250ZXh0ICAgICAgICAgIFBvaW50ZXIgdG8gdGhlIEVDIGNvbnRleHQuDQo+ID4gPiA+ID4gKyAg QHBhcmFtW2luXSAgICAgICBQZWVyUHVibGljICAgICAgICAgUG9pbnRlciB0byB0aGUgcGVlcidz IHB1YmxpYyBYLFkuDQo+ID4gPiA+ID4gKyAgQHBhcmFtW2luXSAgICAgICBQZWVyUHVibGljU2l6 ZSAgICAgU2l6ZSBvZiBwZWVyJ3MgcHVibGljIFgsWSBpbiBieXRlcy4NCj4gPiA+ID4gPiArICBA cGFyYW1baW5dICAgICAgIENvbXByZXNzRmxhZyAgICAgICBGbGFnIG9mIFBlZXJQdWJsaWMgaXMN Cj4gY29tcHJlc3NlZCBvciBub3QuDQo+ID4gPiA+ID4gKyAgQHBhcmFtW291dF0gICAgICBLZXkg ICAgICAgICAgICAgICAgUG9pbnRlciB0byB0aGUgYnVmZmVyIHRvIHJlY2VpdmUNCj4gZ2VuZXJh dGVkIGtleS4NCj4gPiA+ID4gPiArICBAcGFyYW1baW4sIG91dF0gIEtleVNpemUgICAgICAgICAg ICBPbiBpbnB1dCwgdGhlIHNpemUgb2YgS2V5IGJ1ZmZlciBpbg0KPiBieXRlcy4NCj4gPiA+ID4g PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPbiBvdXRwdXQsIHRoZSBz aXplIG9mIGRhdGEgcmV0dXJuZWQgaW4gS2V5DQo+IGJ1ZmZlciBpbiBieXRlcy4NCj4gPiA+ID4g PiArICBAcmV0dmFsIFRSVUUgICBFQyBleGNoYW5nZWQga2V5IGdlbmVyYXRpb24gc3VjY2VlZGVk Lg0KPiA+ID4gPiA+ICsgIEByZXR2YWwgRkFMU0UgIEVDIGV4Y2hhbmdlZCBrZXkgZ2VuZXJhdGlv biBmYWlsZWQuDQo+ID4gPiA+ID4gKyAgQHJldHZhbCBGQUxTRSAgS2V5U2l6ZSBpcyBub3QgbGFy Z2UgZW5vdWdoLg0KPiA+ID4gPiA+ICsqKi8NCj4gPiA+ID4gPiArQk9PTEVBTg0KPiA+ID4gPiA+ ICtFRklBUEkNCj4gPiA+ID4gPiArRWNEaENvbXB1dGVLZXkgKA0KPiA+ID4gPiA+ICsgIElOIE9V VCAgVk9JRCAgICAgICAgICpFY0NvbnRleHQsDQo+ID4gPiA+ID4gKyAgSU4gICAgICBDT05TVCBV SU5UOCAgKlBlZXJQdWJsaWMsDQo+ID4gPiA+ID4gKyAgSU4gICAgICBVSU5UTiAgICAgICAgUGVl clB1YmxpY1NpemUsDQo+ID4gPiA+ID4gKyAgSU4gICAgICBDT05TVCBJTlQzMiAgKkNvbXByZXNz RmxhZywNCj4gPiA+ID4gPiArICBPVVQgICAgIFVJTlQ4ICAgICAgICAqS2V5LA0KPiA+ID4gPiA+ ICsgIElOIE9VVCAgVUlOVE4gICAgICAgICpLZXlTaXplDQo+ID4gPiA+ID4gKyAgKQ0KPiA+ID4g PiA+ICt7DQo+ID4gPiA+ID4gKyAgQVNTRVJUIChGQUxTRSk7DQo+ID4gPiA+ID4gKyAgcmV0dXJu IEZBTFNFOw0KPiA+ID4gPiA+ICt9DQo+ID4gPiA+ID4gZGlmZiAtLWdpdCBhL0NyeXB0b1BrZy9M aWJyYXJ5L0Jhc2VDcnlwdExpYi9TbW1DcnlwdExpYi5pbmYNCj4gYi9DcnlwdG9Qa2cvTGlicmFy eS9CYXNlQ3J5cHRMaWIvU21tQ3J5cHRMaWIuaW5mDQo+ID4gPiA+ID4gaW5kZXggY2U2YTc4OWRm ZC4uNGJjMzA2MzQ4NSAxMDA2NDQNCj4gPiA+ID4gPiAtLS0gYS9DcnlwdG9Qa2cvTGlicmFyeS9C YXNlQ3J5cHRMaWIvU21tQ3J5cHRMaWIuaW5mDQo+ID4gPiA+ID4gKysrIGIvQ3J5cHRvUGtnL0xp YnJhcnkvQmFzZUNyeXB0TGliL1NtbUNyeXB0TGliLmluZg0KPiA+ID4gPiA+IEBAIC01OSw2ICs1 OSw3IEBADQo+ID4gPiA+ID4gICAgUGsvQ3J5cHRUc051bGwuYw0KPiA+ID4gPiA+ICAgIFBrL0Ny eXB0UnNhUHNzLmMNCj4gPiA+ID4gPiAgICBQay9DcnlwdFJzYVBzc1NpZ25OdWxsLmMNCj4gPiA+ ID4gPiArICBQay9DcnlwdEVjTnVsbC5jDQo+ID4gPiA+ID4gICAgUGVtL0NyeXB0UGVtLmMNCj4g PiA+ID4gPiAgICBCbi9DcnlwdEJuTnVsbC5jDQo+ID4gPiA+ID4NCj4gPiA+ID4gPiBkaWZmIC0t Z2l0IGEvQ3J5cHRvUGtnL0xpYnJhcnkvQmFzZUNyeXB0TGliTnVsbC9CYXNlQ3J5cHRMaWJOdWxs LmluZg0KPiA+ID4gPiBiL0NyeXB0b1BrZy9MaWJyYXJ5L0Jhc2VDcnlwdExpYk51bGwvQmFzZUNy eXB0TGliTnVsbC5pbmYNCj4gPiA+ID4gPiBpbmRleCAzNTRmM2Q4MGFhLi5lMWE1N2VmMDlmIDEw MDY0NA0KPiA+ID4gPiA+IC0tLSBhL0NyeXB0b1BrZy9MaWJyYXJ5L0Jhc2VDcnlwdExpYk51bGwv QmFzZUNyeXB0TGliTnVsbC5pbmYNCj4gPiA+ID4gPiArKysgYi9DcnlwdG9Qa2cvTGlicmFyeS9C YXNlQ3J5cHRMaWJOdWxsL0Jhc2VDcnlwdExpYk51bGwuaW5mDQo+ID4gPiA+ID4gQEAgLTQ5LDYg KzQ5LDcgQEANCj4gPiA+ID4gPiAgICBQay9DcnlwdFg1MDlOdWxsLmMNCj4gPiA+ID4gPiAgICBQ ay9DcnlwdEF1dGhlbnRpY29kZU51bGwuYw0KPiA+ID4gPiA+ICAgIFBrL0NyeXB0VHNOdWxsLmMN Cj4gPiA+ID4gPiArICBQay9DcnlwdEVjTnVsbC5jDQo+ID4gPiA+ID4gICAgUGVtL0NyeXB0UGVt TnVsbC5jDQo+ID4gPiA+ID4gICAgUmFuZC9DcnlwdFJhbmROdWxsLmMNCj4gPiA+ID4gPiAgICBQ ay9DcnlwdFJzYVBzc051bGwuYw0KPiA+ID4gPiA+IGRpZmYgLS1naXQgYS9DcnlwdG9Qa2cvTGli cmFyeS9CYXNlQ3J5cHRMaWJOdWxsL1BrL0NyeXB0RWNOdWxsLmMNCj4gYi9DcnlwdG9Qa2cvTGli cmFyeS9CYXNlQ3J5cHRMaWJOdWxsL1BrL0NyeXB0RWNOdWxsLmMNCj4gPiA+ID4gPiBuZXcgZmls ZSBtb2RlIDEwMDY0NA0KPiA+ID4gPiA+IGluZGV4IDAwMDAwMDAwMDAuLmQ5ZjEwMDRmNmMNCj4g PiA+ID4gPiAtLS0gL2Rldi9udWxsDQo+ID4gPiA+ID4gKysrIGIvQ3J5cHRvUGtnL0xpYnJhcnkv QmFzZUNyeXB0TGliTnVsbC9Qay9DcnlwdEVjTnVsbC5jDQo+ID4gPiA+ID4gQEAgLTAsMCArMSw0 OTYgQEANCj4gPiA+ID4gPiArLyoqIEBmaWxlDQo+ID4gPiA+ID4gKyAgRWxsaXB0aWMgQ3VydmUg YW5kIEVDREggQVBJIGltcGxlbWVudGF0aW9uIGJhc2VkIG9uIE9wZW5TU0wNCj4gPiA+ID4gPiAr DQo+ID4gPiA+ID4gKyAgQ29weXJpZ2h0IChjKSAyMDIyLCBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxs IHJpZ2h0cyByZXNlcnZlZC48QlI+DQo+ID4gPiA+ID4gKyAgU1BEWC1MaWNlbnNlLUlkZW50aWZp ZXI6IEJTRC0yLUNsYXVzZS1QYXRlbnQNCj4gPiA+ID4gPiArDQo+ID4gPiA+ID4gKyoqLw0KPiA+ ID4gPiA+ICsNCj4gPiA+ID4gPiArI2luY2x1ZGUgPExpYnJhcnkvQmFzZUNyeXB0TGliLmg+DQo+ ID4gPiA+ID4gKyNpbmNsdWRlIDxMaWJyYXJ5L0RlYnVnTGliLmg+DQo+ID4gPiA+ID4gKw0KPiA+ ID4gPiA+ICsvKioNCj4gPiA+ID4gPiArICBJbml0aWFsaXplIG5ldyBvcGFxdWUgRWNHcm91cCBv YmplY3QuIFRoaXMgb2JqZWN0IHJlcHJlc2VudHMgYW4gRUMNCj4gY3VydmUgYW5kDQo+ID4gPiA+ ID4gKyAgYW5kIGlzIHVzZWQgZm9yIGNhbGN1bGF0aW9uIHdpdGhpbiB0aGlzIGdyb3VwLiBUaGlz IG9iamVjdCBzaG91bGQgYmUNCj4gZnJlZWQNCj4gPiA+ID4gPiArICB1c2luZyBFY0dyb3VwRnJl ZSgpIGZ1bmN0aW9uLg0KPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiArICBAcGFyYW1baW5dICBDcnlw dG9OaWQgICBJZGVudGlmeWluZyBudW1iZXIgZm9yIHRoZSBFQ0MgY3VydmUNCj4gKERlZmluZWQg aW4NCj4gPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICBCYXNlQ3J5cHRMaWIuaCku DQo+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ICsgIEByZXR2YWwgRWNHcm91cCBvYmplY3QgIE9uIHN1 Y2Nlc3MuDQo+ID4gPiA+ID4gKyAgQHJldHZhbCBOVUxMICAgICAgICAgICAgT24gZmFpbHVyZS4N Cj4gPiA+ID4gPiArKiovDQo+ID4gPiA+ID4gK1ZPSUQgKg0KPiA+ID4gPiA+ICtFRklBUEkNCj4g PiA+ID4gPiArRWNHcm91cEluaXQgKA0KPiA+ID4gPiA+ICsgIElOIFVJTlROICBDcnlwdG9OaWQN Cj4gPiA+ID4gPiArICApDQo+ID4gPiA+ID4gK3sNCj4gPiA+ID4gPiArICBBU1NFUlQgKEZBTFNF KTsNCj4gPiA+ID4gPiArICByZXR1cm4gTlVMTDsNCj4gPiA+ID4gPiArfQ0KPiA+ID4gPiA+ICsN Cj4gPiA+ID4gPiArLyoqDQo+ID4gPiA+ID4gKyAgR2V0IEVDIGN1cnZlIHBhcmFtZXRlcnMuIFdo aWxlIGVsbGlwdGljIGN1cnZlIGVxdWF0aW9uIGlzIFleMiBtb2QNCj4gUCA9IChYXjMgKyBBWCAr IEIpIE1vZCBQLg0KPiA+ID4gPiA+ICsgIFRoaXMgZnVuY3Rpb24gd2lsbCBzZXQgdGhlIHByb3Zp ZGVkIEJpZyBOdW1iZXIgb2JqZWN0cyAgdG8gdGhlDQo+IGNvcnJlc3BvbmRpbmcNCj4gPiA+ID4g PiArICB2YWx1ZXMuIFRoZSBjYWxsZXIgbmVlZHMgdG8gbWFrZSBzdXJlIGFsbCB0aGUgIm91dCIg QmlnTnVtYmVyDQo+IHBhcmFtZXRlcnMNCj4gPiA+ID4gPiArICBhcmUgcHJvcGVybHkgaW5pdGlh bGl6ZWQuDQo+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ICsgIEBwYXJhbVtpbl0gIEVjR3JvdXAgICAg RUMgZ3JvdXAgb2JqZWN0Lg0KPiA+ID4gPiA+ICsgIEBwYXJhbVtvdXRdIEJuUHJpbWUgICAgR3Jv dXAgcHJpbWUgbnVtYmVyLg0KPiA+ID4gPiA+ICsgIEBwYXJhbVtvdXRdIEJuQSAgICAgICAgQSBj b2VmZmljaWVudC4NCj4gPiA+ID4gPiArICBAcGFyYW1bb3V0XSBCbkIgICAgICAgIEIgY29lZmZp Y2llbnQuLg0KPiA+ID4gPiA+ICsgIEBwYXJhbVtpbl0gIEJuQ3R4ICAgICAgQk4gY29udGV4dC4N Cj4gPiA+ID4gPiArDQo+ID4gPiA+ID4gKyAgQHJldHZhbCBUUlVFICAgICAgICAgIE9uIHN1Y2Nl c3MuDQo+ID4gPiA+ID4gKyAgQHJldHZhbCBGQUxTRSAgICAgICAgIE90aGVyd2lzZS4NCj4gPiA+ ID4gPiArKiovDQo+ID4gPiA+ID4gK0JPT0xFQU4NCj4gPiA+ID4gPiArRUZJQVBJDQo+ID4gPiA+ ID4gK0VjR3JvdXBHZXRDdXJ2ZSAoDQo+ID4gPiA+ID4gKyAgSU4gQ09OU1QgVk9JRCAgKkVjR3Jv dXAsDQo+ID4gPiA+ID4gKyAgT1VUIFZPSUQgICAgICAgKkJuUHJpbWUsDQo+ID4gPiA+ID4gKyAg T1VUIFZPSUQgICAgICAgKkJuQSwNCj4gPiA+ID4gPiArICBPVVQgVk9JRCAgICAgICAqQm5CLA0K PiA+ID4gPiA+ICsgIElOIFZPSUQgICAgICAgICpCbkN0eA0KPiA+ID4gPiA+ICsgICkNCj4gPiA+ ID4gPiArew0KPiA+ID4gPiA+ICsgIEFTU0VSVCAoRkFMU0UpOw0KPiA+ID4gPiA+ICsgIHJldHVy biBGQUxTRTsNCj4gPiA+ID4gPiArfQ0KPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiArLyoqDQo+ID4g PiA+ID4gKyAgR2V0IEVDIGdyb3VwIG9yZGVyLg0KPiA+ID4gPiA+ICsgIFRoaXMgZnVuY3Rpb24g d2lsbCBzZXQgdGhlIHByb3ZpZGVkIEJpZyBOdW1iZXIgb2JqZWN0IHRvIHRoZQ0KPiBjb3JyZXNw b25kaW5nDQo+ID4gPiA+ID4gKyAgdmFsdWUuIFRoZSBjYWxsZXIgbmVlZHMgdG8gbWFrZSBzdXJl IHRoYXQgdGhlICJvdXQiIEJpZ051bWJlcg0KPiBwYXJhbWV0ZXINCj4gPiA+ID4gPiArICBpcyBw cm9wZXJseSBpbml0aWFsaXplZC4NCj4gPiA+ID4gPiArDQo+ID4gPiA+ID4gKyAgQHBhcmFtW2lu XSAgRWNHcm91cCAgIEVDIGdyb3VwIG9iamVjdC4NCj4gPiA+ID4gPiArICBAcGFyYW1bb3V0XSBC bk9yZGVyICAgR3JvdXAgcHJpbWUgbnVtYmVyLg0KPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiArICBA cmV0dmFsIFRSVUUgICAgICAgICAgT24gc3VjY2Vzcy4NCj4gPiA+ID4gPiArICBAcmV0dmFsIEZB TFNFICAgICAgICAgT3RoZXJ3aXNlLg0KPiA+ID4gPiA+ICsqKi8NCj4gPiA+ID4gPiArQk9PTEVB Tg0KPiA+ID4gPiA+ICtFRklBUEkNCj4gPiA+ID4gPiArRWNHcm91cEdldE9yZGVyICgNCj4gPiA+ ID4gPiArICBJTiBWT0lEICAgKkVjR3JvdXAsDQo+ID4gPiA+ID4gKyAgT1VUIFZPSUQgICpCbk9y ZGVyDQo+ID4gPiA+ID4gKyAgKQ0KPiA+ID4gPiA+ICt7DQo+ID4gPiA+ID4gKyAgQVNTRVJUIChG QUxTRSk7DQo+ID4gPiA+ID4gKyAgcmV0dXJuIEZBTFNFOw0KPiA+ID4gPiA+ICt9DQo+ID4gPiA+ ID4gKw0KPiA+ID4gPiA+ICsvKioNCj4gPiA+ID4gPiArICBGcmVlIHByZXZpb3VzbHkgYWxsb2Nh dGVkIEVDIGdyb3VwIG9iamVjdCB1c2luZyBFY0dyb3VwSW5pdCgpLg0KPiA+ID4gPiA+ICsNCj4g PiA+ID4gPiArICBAcGFyYW1baW5dICBFY0dyb3VwICAgRUMgZ3JvdXAgb2JqZWN0IHRvIGZyZWUu DQo+ID4gPiA+ID4gKyoqLw0KPiA+ID4gPiA+ICtWT0lEDQo+ID4gPiA+ID4gK0VGSUFQSQ0KPiA+ ID4gPiA+ICtFY0dyb3VwRnJlZSAoDQo+ID4gPiA+ID4gKyAgSU4gVk9JRCAgKkVjR3JvdXANCj4g PiA+ID4gPiArICApDQo+ID4gPiA+ID4gK3sNCj4gPiA+ID4gPiArICBBU1NFUlQgKEZBTFNFKTsN Cj4gPiA+ID4gPiArfQ0KPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiArLyoqDQo+ID4gPiA+ID4gKyAg SW5pdGlhbGl6ZSBuZXcgb3BhcXVlIEVDIFBvaW50IG9iamVjdC4gVGhpcyBvYmplY3QgcmVwcmVz ZW50cyBhbiBFQw0KPiBwb2ludA0KPiA+ID4gPiA+ICsgIHdpdGhpbiB0aGUgZ2l2ZW4gRUMgZ3Jv dXAgKGN1cnZlKS4NCj4gPiA+ID4gPiArDQo+ID4gPiA+ID4gKyAgQHBhcmFtW2luXSAgRUMgR3Jv dXAsIHByb3Blcmx5IGluaXRpYWxpemVkIHVzaW5nIEVjR3JvdXBJbml0KCkuDQo+ID4gPiA+ID4g Kw0KPiA+ID4gPiA+ICsgIEByZXR2YWwgRUMgUG9pbnQgb2JqZWN0ICBPbiBzdWNjZXNzLg0KPiA+ ID4gPiA+ICsgIEByZXR2YWwgTlVMTCAgICAgICAgICAgICBPbiBmYWlsdXJlLg0KPiA+ID4gPiA+ ICsqKi8NCj4gPiA+ID4gPiArVk9JRCAqDQo+ID4gPiA+ID4gK0VGSUFQSQ0KPiA+ID4gPiA+ICtF Y1BvaW50SW5pdCAoDQo+ID4gPiA+ID4gKyAgSU4gQ09OU1QgVk9JRCAgKkVjR3JvdXANCj4gPiA+ ID4gPiArICApDQo+ID4gPiA+ID4gK3sNCj4gPiA+ID4gPiArICBBU1NFUlQgKEZBTFNFKTsNCj4g PiA+ID4gPiArICByZXR1cm4gTlVMTDsNCj4gPiA+ID4gPiArfQ0KPiA+ID4gPiA+ICsNCj4gPiA+ ID4gPiArLyoqDQo+ID4gPiA+ID4gKyAgRnJlZSBwcmV2aW91c2x5IGFsbG9jYXRlZCBFQyBQb2lu dCBvYmplY3QgdXNpbmcgRWNQb2ludEluaXQoKS4NCj4gPiA+ID4gPiArDQo+ID4gPiA+ID4gKyAg QHBhcmFtW2luXSAgRWNQb2ludCAgIEVDIFBvaW50IHRvIGZyZWUuDQo+ID4gPiA+ID4gKyAgQHBh cmFtW2luXSAgQ2xlYXIgICAgIFRSVUUgaWZmIHRoZSBtZW1vcnkgc2hvdWxkIGJlIGNsZWFyZWQu DQo+ID4gPiA+ID4gKyoqLw0KPiA+ID4gPiA+ICtWT0lEDQo+ID4gPiA+ID4gK0VGSUFQSQ0KPiA+ ID4gPiA+ICtFY1BvaW50RGVJbml0ICgNCj4gPiA+ID4gPiArICBJTiBWT0lEICAgICAqRWNQb2lu dCwNCj4gPiA+ID4gPiArICBJTiBCT09MRUFOICBDbGVhcg0KPiA+ID4gPiA+ICsgICkNCj4gPiA+ ID4gPiArew0KPiA+ID4gPiA+ICsgIEFTU0VSVCAoRkFMU0UpOw0KPiA+ID4gPiA+ICt9DQo+ID4g PiA+ID4gKw0KPiA+ID4gPiA+ICsvKioNCj4gPiA+ID4gPiArICBHZXQgRUMgcG9pbnQgYWZmaW5l ICh4LHkpIGNvb3JkaW5hdGVzLg0KPiA+ID4gPiA+ICsgIFRoaXMgZnVuY3Rpb24gd2lsbCBzZXQg dGhlIHByb3ZpZGVkIEJpZyBOdW1iZXIgb2JqZWN0cyB0byB0aGUNCj4gY29ycmVzcG9uZGluZw0K PiA+ID4gPiA+ICsgIHZhbHVlcy4gVGhlIGNhbGxlciBuZWVkcyB0byBtYWtlIHN1cmUgYWxsIHRo ZSAib3V0IiBCaWdOdW1iZXINCj4gcGFyYW1ldGVycw0KPiA+ID4gPiA+ICsgIGFyZSBwcm9wZXJs eSBpbml0aWFsaXplZC4NCj4gPiA+ID4gPiArDQo+ID4gPiA+ID4gKyAgQHBhcmFtW2luXSAgRWNH cm91cCAgICBFQyBncm91cCBvYmplY3QuDQo+ID4gPiA+ID4gKyAgQHBhcmFtW2luXSAgRWNQb2lu dCAgICBFQyBwb2ludCBvYmplY3QuDQo+ID4gPiA+ID4gKyAgQHBhcmFtW291dF0gQm5YICAgICAg ICBYIGNvb3JkaW5hdGUuDQo+ID4gPiA+ID4gKyAgQHBhcmFtW291dF0gQm5ZICAgICAgICBZIGNv b3JkaW5hdGUuDQo+ID4gPiA+ID4gKyAgQHBhcmFtW2luXSAgQm5DdHggICAgICBCTiBjb250ZXh0 LCBjcmVhdGVkIHdpdGgNCj4gQmlnTnVtTmV3Q29udGV4dCgpLg0KPiA+ID4gPiA+ICsNCj4gPiA+ ID4gPiArICBAcmV0dmFsIFRSVUUgICAgICAgICAgT24gc3VjY2Vzcy4NCj4gPiA+ID4gPiArICBA cmV0dmFsIEZBTFNFICAgICAgICAgT3RoZXJ3aXNlLg0KPiA+ID4gPiA+ICsqKi8NCj4gPiA+ID4g PiArQk9PTEVBTg0KPiA+ID4gPiA+ICtFRklBUEkNCj4gPiA+ID4gPiArRWNQb2ludEdldEFmZmlu ZUNvb3JkaW5hdGVzICgNCj4gPiA+ID4gPiArICBJTiBDT05TVCBWT0lEICAqRWNHcm91cCwNCj4g PiA+ID4gPiArICBJTiBDT05TVCBWT0lEICAqRWNQb2ludCwNCj4gPiA+ID4gPiArICBPVVQgVk9J RCAgICAgICAqQm5YLA0KPiA+ID4gPiA+ICsgIE9VVCBWT0lEICAgICAgICpCblksDQo+ID4gPiA+ ID4gKyAgSU4gVk9JRCAgICAgICAgKkJuQ3R4DQo+ID4gPiA+ID4gKyAgKQ0KPiA+ID4gPiA+ICt7 DQo+ID4gPiA+ID4gKyAgQVNTRVJUIChGQUxTRSk7DQo+ID4gPiA+ID4gKyAgcmV0dXJuIEZBTFNF Ow0KPiA+ID4gPiA+ICt9DQo+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ICsvKioNCj4gPiA+ID4gPiAr ICBTZXQgRUMgcG9pbnQgYWZmaW5lICh4LHkpIGNvb3JkaW5hdGVzLg0KPiA+ID4gPiA+ICsNCj4g PiA+ID4gPiArICBAcGFyYW1baW5dICBFY0dyb3VwICAgIEVDIGdyb3VwIG9iamVjdC4NCj4gPiA+ ID4gPiArICBAcGFyYW1baW5dICBFY1BvaW50ICAgIEVDIHBvaW50IG9iamVjdC4NCj4gPiA+ID4g PiArICBAcGFyYW1baW5dICBCblggICAgICAgIFggY29vcmRpbmF0ZS4NCj4gPiA+ID4gPiArICBA cGFyYW1baW5dICBCblkgICAgICAgIFkgY29vcmRpbmF0ZS4NCj4gPiA+ID4gPiArICBAcGFyYW1b aW5dICBCbkN0eCAgICAgIEJOIGNvbnRleHQsIGNyZWF0ZWQgd2l0aA0KPiBCaWdOdW1OZXdDb250 ZXh0KCkuDQo+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ICsgIEByZXR2YWwgVFJVRSAgICAgICAgICBP biBzdWNjZXNzLg0KPiA+ID4gPiA+ICsgIEByZXR2YWwgRkFMU0UgICAgICAgICBPdGhlcndpc2Uu DQo+ID4gPiA+ID4gKyoqLw0KPiA+ID4gPiA+ICtCT09MRUFODQo+ID4gPiA+ID4gK0VGSUFQSQ0K PiA+ID4gPiA+ICtFY1BvaW50U2V0QWZmaW5lQ29vcmRpbmF0ZXMgKA0KPiA+ID4gPiA+ICsgIElO IENPTlNUIFZPSUQgICpFY0dyb3VwLA0KPiA+ID4gPiA+ICsgIElOIFZPSUQgICAgICAgICpFY1Bv aW50LA0KPiA+ID4gPiA+ICsgIElOIENPTlNUIFZPSUQgICpCblgsDQo+ID4gPiA+ID4gKyAgSU4g Q09OU1QgVk9JRCAgKkJuWSwNCj4gPiA+ID4gPiArICBJTiBWT0lEICAgICAgICAqQm5DdHgNCj4g PiA+ID4gPiArICApDQo+ID4gPiA+ID4gK3sNCj4gPiA+ID4gPiArICBBU1NFUlQgKEZBTFNFKTsN Cj4gPiA+ID4gPiArICByZXR1cm4gRkFMU0U7DQo+ID4gPiA+ID4gK30NCj4gPiA+ID4gPiArDQo+ ID4gPiA+ID4gKy8qKg0KPiA+ID4gPiA+ICsgIEVDIFBvaW50IGFkZGl0aW9uLiBFY1BvaW50UmVz dWx0ID0gRWNQb2ludEEgKyBFY1BvaW50Qi4NCj4gPiA+ID4gPiArDQo+ID4gPiA+ID4gKyAgQHBh cmFtW2luXSAgRWNHcm91cCAgICAgICAgICBFQyBncm91cCBvYmplY3QuDQo+ID4gPiA+ID4gKyAg QHBhcmFtW291dF0gRWNQb2ludFJlc3VsdCAgICBFQyBwb2ludCB0byBob2xkIHRoZSByZXN1bHQu IFRoZQ0KPiBwb2ludCBzaG91bGQNCj4gPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGJlIHByb3Blcmx5IGluaXRpYWxpemVkLg0KPiA+ID4gPiA+ICsgIEBwYXJhbVtpbl0g IEVjUG9pbnRBICAgICAgICAgRUMgUG9pbnQuDQo+ID4gPiA+ID4gKyAgQHBhcmFtW2luXSAgRWNQ b2ludEIgICAgICAgICBFQyBQb2ludC4NCj4gPiA+ID4gPiArICBAcGFyYW1baW5dICBCbkN0eCAg ICAgICAgICAgIEJOIGNvbnRleHQsIGNyZWF0ZWQgd2l0aA0KPiBCaWdOdW1OZXdDb250ZXh0KCku DQo+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ICsgIEByZXR2YWwgVFJVRSAgICAgICAgICBPbiBzdWNj ZXNzLg0KPiA+ID4gPiA+ICsgIEByZXR2YWwgRkFMU0UgICAgICAgICBPdGhlcndpc2UuDQo+ID4g PiA+ID4gKyoqLw0KPiA+ID4gPiA+ICtCT09MRUFODQo+ID4gPiA+ID4gK0VGSUFQSQ0KPiA+ID4g PiA+ICtFY1BvaW50QWRkICgNCj4gPiA+ID4gPiArICBJTiBDT05TVCBWT0lEICAqRWNHcm91cCwN Cj4gPiA+ID4gPiArICBPVVQgVk9JRCAgICAgICAqRWNQb2ludFJlc3VsdCwNCj4gPiA+ID4gPiAr ICBJTiBDT05TVCBWT0lEICAqRWNQb2ludEEsDQo+ID4gPiA+ID4gKyAgSU4gQ09OU1QgVk9JRCAg KkVjUG9pbnRCLA0KPiA+ID4gPiA+ICsgIElOIFZPSUQgICAgICAgICpCbkN0eA0KPiA+ID4gPiA+ ICsgICkNCj4gPiA+ID4gPiArew0KPiA+ID4gPiA+ICsgIEFTU0VSVCAoRkFMU0UpOw0KPiA+ID4g PiA+ICsgIHJldHVybiBGQUxTRTsNCj4gPiA+ID4gPiArfQ0KPiA+ID4gPiA+ICsNCj4gPiA+ID4g PiArLyoqDQo+ID4gPiA+ID4gKyAgVmFyaWFibGUgRUMgcG9pbnQgbXVsdGlwbGljYXRpb24uIEVj UG9pbnRSZXN1bHQgPSBFY1BvaW50ICoNCj4gQm5QU2NhbGFyLg0KPiA+ID4gPiA+ICsNCj4gPiA+ ID4gPiArICBAcGFyYW1baW5dICBFY0dyb3VwICAgICAgICAgIEVDIGdyb3VwIG9iamVjdC4NCj4g PiA+ID4gPiArICBAcGFyYW1bb3V0XSBFY1BvaW50UmVzdWx0ICAgIEVDIHBvaW50IHRvIGhvbGQg dGhlIHJlc3VsdC4gVGhlDQo+IHBvaW50IHNob3VsZA0KPiA+ID4gPiA+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgYmUgcHJvcGVybHkgaW5pdGlhbGl6ZWQuDQo+ID4gPiA+ID4gKyAg QHBhcmFtW2luXSAgRWNQb2ludCAgICAgICAgICBFQyBQb2ludC4NCj4gPiA+ID4gPiArICBAcGFy YW1baW5dICBCblBTY2FsYXIgICAgICAgIFAgU2NhbGFyLg0KPiA+ID4gPiA+ICsgIEBwYXJhbVtp bl0gIEJuQ3R4ICAgICAgICAgICAgQk4gY29udGV4dCwgY3JlYXRlZCB3aXRoDQo+IEJpZ051bU5l d0NvbnRleHQoKS4NCj4gPiA+ID4gPiArDQo+ID4gPiA+ID4gKyAgQHJldHZhbCBUUlVFICAgICAg ICAgIE9uIHN1Y2Nlc3MuDQo+ID4gPiA+ID4gKyAgQHJldHZhbCBGQUxTRSAgICAgICAgIE90aGVy d2lzZS4NCj4gPiA+ID4gPiArKiovDQo+ID4gPiA+ID4gK0JPT0xFQU4NCj4gPiA+ID4gPiArRUZJ QVBJDQo+ID4gPiA+ID4gK0VjUG9pbnRNdWwgKA0KPiA+ID4gPiA+ICsgIElOIENPTlNUIFZPSUQg ICpFY0dyb3VwLA0KPiA+ID4gPiA+ICsgIE9VVCBWT0lEICAgICAgICpFY1BvaW50UmVzdWx0LA0K PiA+ID4gPiA+ICsgIElOIENPTlNUIFZPSUQgICpFY1BvaW50LA0KPiA+ID4gPiA+ICsgIElOIENP TlNUIFZPSUQgICpCblBTY2FsYXIsDQo+ID4gPiA+ID4gKyAgSU4gVk9JRCAgICAgICAgKkJuQ3R4 DQo+ID4gPiA+ID4gKyAgKQ0KPiA+ID4gPiA+ICt7DQo+ID4gPiA+ID4gKyAgQVNTRVJUIChGQUxT RSk7DQo+ID4gPiA+ID4gKyAgcmV0dXJuIEZBTFNFOw0KPiA+ID4gPiA+ICt9DQo+ID4gPiA+ID4g Kw0KPiA+ID4gPiA+ICsvKioNCj4gPiA+ID4gPiArICBDYWxjdWxhdGUgdGhlIGludmVyc2Ugb2Yg dGhlIHN1cHBsaWVkIEVDIHBvaW50Lg0KPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiArICBAcGFyYW1b aW5dICAgICBFY0dyb3VwICAgRUMgZ3JvdXAgb2JqZWN0Lg0KPiA+ID4gPiA+ICsgIEBwYXJhbVtp bixvdXRdIEVjUG9pbnQgICBFQyBwb2ludCB0byBpbnZlcnQuDQo+ID4gPiA+ID4gKyAgQHBhcmFt W2luXSAgICAgQm5DdHggICAgIEJOIGNvbnRleHQsIGNyZWF0ZWQgd2l0aA0KPiBCaWdOdW1OZXdD b250ZXh0KCkuDQo+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ICsgIEByZXR2YWwgVFJVRSAgICAgICAg ICBPbiBzdWNjZXNzLg0KPiA+ID4gPiA+ICsgIEByZXR2YWwgRkFMU0UgICAgICAgICBPdGhlcndp c2UuDQo+ID4gPiA+ID4gKyoqLw0KPiA+ID4gPiA+ICtCT09MRUFODQo+ID4gPiA+ID4gK0VGSUFQ SQ0KPiA+ID4gPiA+ICtFY1BvaW50SW52ZXJ0ICgNCj4gPiA+ID4gPiArICBJTiBDT05TVCBWT0lE ICAqRWNHcm91cCwNCj4gPiA+ID4gPiArICBJTiBPVVQgVk9JRCAgICAqRWNQb2ludCwNCj4gPiA+ ID4gPiArICBJTiBWT0lEICAgICAgICAqQm5DdHgNCj4gPiA+ID4gPiArICApDQo+ID4gPiA+ID4g K3sNCj4gPiA+ID4gPiArICBBU1NFUlQgKEZBTFNFKTsNCj4gPiA+ID4gPiArICByZXR1cm4gRkFM U0U7DQo+ID4gPiA+ID4gK30NCj4gPiA+ID4gPiArDQo+ID4gPiA+ID4gKy8qKg0KPiA+ID4gPiA+ ICsgIENoZWNrIGlmIHRoZSBzdXBwbGllZCBwb2ludCBpcyBvbiBFQyBjdXJ2ZS4NCj4gPiA+ID4g PiArDQo+ID4gPiA+ID4gKyAgQHBhcmFtW2luXSAgRWNHcm91cCAgIEVDIGdyb3VwIG9iamVjdC4N Cj4gPiA+ID4gPiArICBAcGFyYW1baW5dICBFY1BvaW50ICAgRUMgcG9pbnQgdG8gY2hlY2suDQo+ ID4gPiA+ID4gKyAgQHBhcmFtW2luXSAgQm5DdHggICAgIEJOIGNvbnRleHQsIGNyZWF0ZWQgd2l0 aA0KPiBCaWdOdW1OZXdDb250ZXh0KCkuDQo+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ICsgIEByZXR2 YWwgVFJVRSAgICAgICAgICBPbiBjdXJ2ZS4NCj4gPiA+ID4gPiArICBAcmV0dmFsIEZBTFNFICAg ICAgICAgT3RoZXJ3aXNlLg0KPiA+ID4gPiA+ICsqKi8NCj4gPiA+ID4gPiArQk9PTEVBTg0KPiA+ ID4gPiA+ICtFRklBUEkNCj4gPiA+ID4gPiArRWNQb2ludElzT25DdXJ2ZSAoDQo+ID4gPiA+ID4g KyAgSU4gQ09OU1QgVk9JRCAgKkVjR3JvdXAsDQo+ID4gPiA+ID4gKyAgSU4gQ09OU1QgVk9JRCAg KkVjUG9pbnQsDQo+ID4gPiA+ID4gKyAgSU4gVk9JRCAgICAgICAgKkJuQ3R4DQo+ID4gPiA+ID4g KyAgKQ0KPiA+ID4gPiA+ICt7DQo+ID4gPiA+ID4gKyAgQVNTRVJUIChGQUxTRSk7DQo+ID4gPiA+ ID4gKyAgcmV0dXJuIEZBTFNFOw0KPiA+ID4gPiA+ICt9DQo+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ ICsvKioNCj4gPiA+ID4gPiArICBDaGVjayBpZiB0aGUgc3VwcGxpZWQgcG9pbnQgaXMgYXQgaW5m aW5pdHkuDQo+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ICsgIEBwYXJhbVtpbl0gIEVjR3JvdXAgICBF QyBncm91cCBvYmplY3QuDQo+ID4gPiA+ID4gKyAgQHBhcmFtW2luXSAgRWNQb2ludCAgIEVDIHBv aW50IHRvIGNoZWNrLg0KPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiArICBAcmV0dmFsIFRSVUUgICAg ICAgICAgQXQgaW5maW5pdHkuDQo+ID4gPiA+ID4gKyAgQHJldHZhbCBGQUxTRSAgICAgICAgIE90 aGVyd2lzZS4NCj4gPiA+ID4gPiArKiovDQo+ID4gPiA+ID4gK0JPT0xFQU4NCj4gPiA+ID4gPiAr RUZJQVBJDQo+ID4gPiA+ID4gK0VjUG9pbnRJc0F0SW5maW5pdHkgKA0KPiA+ID4gPiA+ICsgIElO IENPTlNUIFZPSUQgICpFY0dyb3VwLA0KPiA+ID4gPiA+ICsgIElOIENPTlNUIFZPSUQgICpFY1Bv aW50DQo+ID4gPiA+ID4gKyAgKQ0KPiA+ID4gPiA+ICt7DQo+ID4gPiA+ID4gKyAgQVNTRVJUIChG QUxTRSk7DQo+ID4gPiA+ID4gKyAgcmV0dXJuIEZBTFNFOw0KPiA+ID4gPiA+ICt9DQo+ID4gPiA+ ID4gKw0KPiA+ID4gPiA+ICsvKioNCj4gPiA+ID4gPiArICBDaGVjayBpZiBFQyBwb2ludHMgYXJl IGVxdWFsLg0KPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiArICBAcGFyYW1baW5dICBFY0dyb3VwICAg RUMgZ3JvdXAgb2JqZWN0Lg0KPiA+ID4gPiA+ICsgIEBwYXJhbVtpbl0gIEVjUG9pbnRBICBFQyBw b2ludCBBLg0KPiA+ID4gPiA+ICsgIEBwYXJhbVtpbl0gIEVjUG9pbnRCICBFQyBwb2ludCBCLg0K PiA+ID4gPiA+ICsgIEBwYXJhbVtpbl0gIEJuQ3R4ICAgICBCTiBjb250ZXh0LCBjcmVhdGVkIHdp dGgNCj4gQmlnTnVtTmV3Q29udGV4dCgpLg0KPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiArICBAcmV0 dmFsIFRSVUUgICAgICAgICAgQSA9PSBCLg0KPiA+ID4gPiA+ICsgIEByZXR2YWwgRkFMU0UgICAg ICAgICBPdGhlcndpc2UuDQo+ID4gPiA+ID4gKyoqLw0KPiA+ID4gPiA+ICtCT09MRUFODQo+ID4g PiA+ID4gK0VGSUFQSQ0KPiA+ID4gPiA+ICtFY1BvaW50RXF1YWwgKA0KPiA+ID4gPiA+ICsgIElO IENPTlNUIFZPSUQgICpFY0dyb3VwLA0KPiA+ID4gPiA+ICsgIElOIENPTlNUIFZPSUQgICpFY1Bv aW50QSwNCj4gPiA+ID4gPiArICBJTiBDT05TVCBWT0lEICAqRWNQb2ludEIsDQo+ID4gPiA+ID4g KyAgSU4gVk9JRCAgICAgICAgKkJuQ3R4DQo+ID4gPiA+ID4gKyAgKQ0KPiA+ID4gPiA+ICt7DQo+ ID4gPiA+ID4gKyAgQVNTRVJUIChGQUxTRSk7DQo+ID4gPiA+ID4gKyAgcmV0dXJuIEZBTFNFOw0K PiA+ID4gPiA+ICt9DQo+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ICsvKioNCj4gPiA+ID4gPiArICBT ZXQgRUMgcG9pbnQgY29tcHJlc3NlZCBjb29yZGluYXRlcy4gUG9pbnRzIGNhbiBiZSBkZXNjcmli ZWQgaW4NCj4gdGVybXMgb2YNCj4gPiA+ID4gPiArICB0aGVpciBjb21wcmVzc2VkIGNvb3JkaW5h dGVzLiBGb3IgYSBwb2ludCAoeCwgeSksIGZvciBhbnkgZ2l2ZW4NCj4gdmFsdWUgZm9yIHgNCj4g PiA+ID4gPiArICBzdWNoIHRoYXQgdGhlIHBvaW50IGlzIG9uIHRoZSBjdXJ2ZSB0aGVyZSB3aWxs IG9ubHkgZXZlciBiZSB0d28NCj4gcG9zc2libGUNCj4gPiA+ID4gPiArICB2YWx1ZXMgZm9yIHku IFRoZXJlZm9yZSwgYSBwb2ludCBjYW4gYmUgc2V0IHVzaW5nIHRoaXMgZnVuY3Rpb24NCj4gd2hl cmUgQm5YIGlzDQo+ID4gPiA+ID4gKyAgdGhlIHggY29vcmRpbmF0ZSBhbmQgWUJpdCBpcyBhIHZh bHVlIDAgb3IgMSB0byBpZGVudGlmeSB3aGljaCBvZiB0aGUNCj4gdHdvDQo+ID4gPiA+ID4gKyAg cG9zc2libGUgdmFsdWVzIGZvciB5IHNob3VsZCBiZSB1c2VkLg0KPiA+ID4gPiA+ICsNCj4gPiA+ ID4gPiArICBAcGFyYW1baW5dICBFY0dyb3VwICAgIEVDIGdyb3VwIG9iamVjdC4NCj4gPiA+ID4g PiArICBAcGFyYW1baW5dICBFY1BvaW50ICAgIEVDIFBvaW50Lg0KPiA+ID4gPiA+ICsgIEBwYXJh bVtpbl0gIEJuWCAgICAgICAgWCBjb29yZGluYXRlLg0KPiA+ID4gPiA+ICsgIEBwYXJhbVtpbl0g IFlCaXQgICAgICAgMCBvciAxIHRvIGlkZW50aWZ5IHdoaWNoIFkgdmFsdWUgaXMgdXNlZC4NCj4g PiA+ID4gPiArICBAcGFyYW1baW5dICBCbkN0eCAgICAgIEJOIGNvbnRleHQsIGNyZWF0ZWQgd2l0 aA0KPiBCaWdOdW1OZXdDb250ZXh0KCkuDQo+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ICsgIEByZXR2 YWwgVFJVRSAgICAgICAgICBPbiBzdWNjZXNzLg0KPiA+ID4gPiA+ICsgIEByZXR2YWwgRkFMU0Ug ICAgICAgICBPdGhlcndpc2UuDQo+ID4gPiA+ID4gKyoqLw0KPiA+ID4gPiA+ICtCT09MRUFODQo+ ID4gPiA+ID4gK0VGSUFQSQ0KPiA+ID4gPiA+ICtFY1BvaW50U2V0Q29tcHJlc3NlZENvb3JkaW5h dGVzICgNCj4gPiA+ID4gPiArICBJTiBDT05TVCBWT0lEICAqRWNHcm91cCwNCj4gPiA+ID4gPiAr ICBJTiBWT0lEICAgICAgICAqRWNQb2ludCwNCj4gPiA+ID4gPiArICBJTiBDT05TVCBWT0lEICAq Qm5YLA0KPiA+ID4gPiA+ICsgIElOIFVJTlQ4ICAgICAgIFlCaXQsDQo+ID4gPiA+ID4gKyAgSU4g Vk9JRCAgICAgICAgKkJuQ3R4DQo+ID4gPiA+ID4gKyAgKQ0KPiA+ID4gPiA+ICt7DQo+ID4gPiA+ ID4gKyAgQVNTRVJUIChGQUxTRSk7DQo+ID4gPiA+ID4gKyAgcmV0dXJuIEZBTFNFOw0KPiA+ID4g PiA+ICt9DQo+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ICsvKioNCj4gPiA+ID4gPiArICBBbGxvY2F0 ZXMgYW5kIEluaXRpYWxpemVzIG9uZSBFbGxpcHRpYyBDdXJ2ZSBDb250ZXh0IGZvciBzdWJzZXF1 ZW50DQo+IHVzZQ0KPiA+ID4gPiA+ICsgIHdpdGggdGhlIE5JRC4NCj4gPiA+ID4gPiArDQo+ID4g PiA+ID4gKyAgQHBhcmFtW2luXSAgTmlkIGNpcGhlciBOSUQNCj4gPiA+ID4gPiArICBAcmV0dXJu ICAgICBQb2ludGVyIHRvIHRoZSBFbGxpcHRpYyBDdXJ2ZSBDb250ZXh0IHRoYXQgaGFzIGJlZW4N Cj4gaW5pdGlhbGl6ZWQuDQo+ID4gPiA+ID4gKyAgICAgICAgICAgICAgSWYgdGhlIGFsbG9jYXRp b25zIGZhaWxzLCBFY05ld0J5TmlkKCkgcmV0dXJucyBOVUxMLg0KPiA+ID4gPiA+ICsqKi8NCj4g PiA+ID4gPiArVk9JRCAqDQo+ID4gPiA+ID4gK0VGSUFQSQ0KPiA+ID4gPiA+ICtFY05ld0J5Tmlk ICgNCj4gPiA+ID4gPiArICBJTiBVSU5UTiAgTmlkDQo+ID4gPiA+ID4gKyAgKQ0KPiA+ID4gPiA+ ICt7DQo+ID4gPiA+ID4gKyAgQVNTRVJUIChGQUxTRSk7DQo+ID4gPiA+ID4gKyAgcmV0dXJuIE5V TEw7DQo+ID4gPiA+ID4gK30NCj4gPiA+ID4gPiArDQo+ID4gPiA+ID4gKy8qKg0KPiA+ID4gPiA+ ICsgIFJlbGVhc2UgdGhlIHNwZWNpZmllZCBFQyBjb250ZXh0Lg0KPiA+ID4gPiA+ICsNCj4gPiA+ ID4gPiArICBAcGFyYW1baW5dICBFY0NvbnRleHQgIFBvaW50ZXIgdG8gdGhlIEVDIGNvbnRleHQg dG8gYmUgcmVsZWFzZWQuDQo+ID4gPiA+ID4gKyoqLw0KPiA+ID4gPiA+ICtWT0lEDQo+ID4gPiA+ ID4gK0VGSUFQSQ0KPiA+ID4gPiA+ICtFY0ZyZWUgKA0KPiA+ID4gPiA+ICsgIElOICBWT0lEICAq RWNDb250ZXh0DQo+ID4gPiA+ID4gKyAgKQ0KPiA+ID4gPiA+ICt7DQo+ID4gPiA+ID4gKyAgQVNT RVJUIChGQUxTRSk7DQo+ID4gPiA+ID4gK30NCj4gPiA+ID4gPiArDQo+ID4gPiA+ID4gKy8qKg0K PiA+ID4gPiA+ICsgIEdlbmVyYXRlcyBFQyBrZXkgYW5kIHJldHVybnMgRUMgcHVibGljIGtleSAo WCwgWSksIFBsZWFzZSBub3RlLA0KPiB0aGlzIGZ1bmN0aW9uIHVzZXMNCj4gPiA+ID4gPiArICBw c2V1ZG8gcmFuZG9tIG51bWJlciBnZW5lcmF0b3IuIFRoZSBjYWxsZXIgbXVzdCBtYWtlIHN1cmUN Cj4gUmFuZG9tU2VlZCgpDQo+ID4gPiA+ID4gKyAgZnVuY3Rpb24gd2FzIHByb3Blcmx5IGNhbGxl ZCBiZWZvcmUuDQo+ID4gPiA+ID4gKyAgVGhlIEVjIGNvbnRleHQgc2hvdWxkIGJlIGNvcnJlY3Rs eSBpbml0aWFsaXplZCBieSBFY05ld0J5TmlkLg0KPiA+ID4gPiA+ICsgIFRoaXMgZnVuY3Rpb24g Z2VuZXJhdGVzIHJhbmRvbSBzZWNyZXQsIGFuZCBjb21wdXRlcyB0aGUgcHVibGljDQo+IGtleSAo WCwgWSksIHdoaWNoIGlzDQo+ID4gPiA+ID4gKyAgcmV0dXJuZWQgdmlhIHBhcmFtZXRlciBQdWJs aWMsIFB1YmxpY1NpemUuDQo+ID4gPiA+ID4gKyAgWCBpcyB0aGUgZmlyc3QgaGFsZiBvZiBQdWJs aWMgd2l0aCBzaXplIGJlaW5nIFB1YmxpY1NpemUgLyAyLA0KPiA+ID4gPiA+ICsgIFkgaXMgdGhl IHNlY29uZCBoYWxmIG9mIFB1YmxpYyB3aXRoIHNpemUgYmVpbmcgUHVibGljU2l6ZSAvIDIuDQo+ ID4gPiA+ID4gKyAgRUMgY29udGV4dCBpcyB1cGRhdGVkIGFjY29yZGluZ2x5Lg0KPiA+ID4gPiA+ ICsgIElmIHRoZSBQdWJsaWMgYnVmZmVyIGlzIHRvbyBzbWFsbCB0byBob2xkIHRoZSBwdWJsaWMg WCwgWSwgRkFMU0UgaXMNCj4gcmV0dXJuZWQgYW5kDQo+ID4gPiA+ID4gKyAgUHVibGljU2l6ZSBp cyBzZXQgdG8gdGhlIHJlcXVpcmVkIGJ1ZmZlciBzaXplIHRvIG9idGFpbiB0aGUgcHVibGljIFgs DQo+IFkuDQo+ID4gPiA+ID4gKyAgRm9yIFAtMjU2LCB0aGUgUHVibGljU2l6ZSBpcyA2NC4gRmly c3QgMzItYnl0ZSBpcyBYLCBTZWNvbmQgMzItYnl0ZQ0KPiBpcyBZLg0KPiA+ID4gPiA+ICsgIEZv ciBQLTM4NCwgdGhlIFB1YmxpY1NpemUgaXMgOTYuIEZpcnN0IDQ4LWJ5dGUgaXMgWCwgU2Vjb25k IDQ4LWJ5dGUNCj4gaXMgWS4NCj4gPiA+ID4gPiArICBGb3IgUC01MjEsIHRoZSBQdWJsaWNTaXpl IGlzIDEzMi4gRmlyc3QgNjYtYnl0ZSBpcyBYLCBTZWNvbmQgNjYtYnl0ZQ0KPiBpcyBZLg0KPiA+ ID4gPiA+ICsgIElmIEVjQ29udGV4dCBpcyBOVUxMLCB0aGVuIHJldHVybiBGQUxTRS4NCj4gPiA+ ID4gPiArICBJZiBQdWJsaWNTaXplIGlzIE5VTEwsIHRoZW4gcmV0dXJuIEZBTFNFLg0KPiA+ID4g PiA+ICsgIElmIFB1YmxpY1NpemUgaXMgbGFyZ2UgZW5vdWdoIGJ1dCBQdWJsaWMgaXMgTlVMTCwg dGhlbiByZXR1cm4gRkFMU0UuDQo+ID4gPiA+ID4gKyAgQHBhcmFtW2luLCBvdXRdICBFY0NvbnRl eHQgICAgICBQb2ludGVyIHRvIHRoZSBFQyBjb250ZXh0Lg0KPiA+ID4gPiA+ICsgIEBwYXJhbVtv dXRdICAgICAgUHVibGljS2V5ICAgICAgUG9pbnRlciB0byB0IGJ1ZmZlciB0byByZWNlaXZlDQo+ IGdlbmVyYXRlZCBwdWJsaWMgWCxZLg0KPiA+ID4gPiA+ICsgIEBwYXJhbVtpbiwgb3V0XSAgUHVi bGljS2V5U2l6ZSAgT24gaW5wdXQsIHRoZSBzaXplIG9mIFB1YmxpYyBidWZmZXINCj4gaW4gYnl0 ZXMuDQo+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPbiBvdXRw dXQsIHRoZSBzaXplIG9mIGRhdGEgcmV0dXJuZWQgaW4gUHVibGljDQo+IGJ1ZmZlciBpbiBieXRl cy4NCj4gPiA+ID4gPiArICBAcmV0dmFsIFRSVUUgICBFQyBwdWJsaWMgWCxZIGdlbmVyYXRpb24g c3VjY2VlZGVkLg0KPiA+ID4gPiA+ICsgIEByZXR2YWwgRkFMU0UgIEVDIHB1YmxpYyBYLFkgZ2Vu ZXJhdGlvbiBmYWlsZWQuDQo+ID4gPiA+ID4gKyAgQHJldHZhbCBGQUxTRSAgUHVibGljS2V5U2l6 ZSBpcyBub3QgbGFyZ2UgZW5vdWdoLg0KPiA+ID4gPiA+ICsqKi8NCj4gPiA+ID4gPiArQk9PTEVB Tg0KPiA+ID4gPiA+ICtFRklBUEkNCj4gPiA+ID4gPiArRWNHZW5lcmF0ZUtleSAoDQo+ID4gPiA+ ID4gKyAgSU4gT1VUICBWT0lEICAgKkVjQ29udGV4dCwNCj4gPiA+ID4gPiArICBPVVQgICAgIFVJ TlQ4ICAqUHVibGljS2V5LA0KPiA+ID4gPiA+ICsgIElOIE9VVCAgVUlOVE4gICpQdWJsaWNLZXlT aXplDQo+ID4gPiA+ID4gKyAgKQ0KPiA+ID4gPiA+ICt7DQo+ID4gPiA+ID4gKyAgQVNTRVJUIChG QUxTRSk7DQo+ID4gPiA+ID4gKyAgcmV0dXJuIEZBTFNFOw0KPiA+ID4gPiA+ICt9DQo+ID4gPiA+ ID4gKw0KPiA+ID4gPiA+ICsvKioNCj4gPiA+ID4gPiArICBHZXRzIHRoZSBwdWJsaWMga2V5IGNv bXBvbmVudCBmcm9tIHRoZSBlc3RhYmxpc2hlZCBFQyBjb250ZXh0Lg0KPiA+ID4gPiA+ICsgIFRo ZSBFYyBjb250ZXh0IHNob3VsZCBiZSBjb3JyZWN0bHkgaW5pdGlhbGl6ZWQgYnkgRWNOZXdCeU5p ZCwgYW5kDQo+IHN1Y2Nlc3NmdWxseQ0KPiA+ID4gPiA+ICsgIGdlbmVyYXRlIGtleSBwYWlyIGZy b20gRWNHZW5lcmF0ZUtleSgpLg0KPiA+ID4gPiA+ICsgIEZvciBQLTI1NiwgdGhlIFB1YmxpY1Np emUgaXMgNjQuIEZpcnN0IDMyLWJ5dGUgaXMgWCwgU2Vjb25kIDMyLWJ5dGUNCj4gaXMgWS4NCj4g PiA+ID4gPiArICBGb3IgUC0zODQsIHRoZSBQdWJsaWNTaXplIGlzIDk2LiBGaXJzdCA0OC1ieXRl IGlzIFgsIFNlY29uZCA0OC1ieXRlDQo+IGlzIFkuDQo+ID4gPiA+ID4gKyAgRm9yIFAtNTIxLCB0 aGUgUHVibGljU2l6ZSBpcyAxMzIuIEZpcnN0IDY2LWJ5dGUgaXMgWCwgU2Vjb25kIDY2LWJ5dGUN Cj4gaXMgWS4NCj4gPiA+ID4gPiArICBAcGFyYW1baW4sIG91dF0gIEVjQ29udGV4dCAgICAgIFBv aW50ZXIgdG8gRUMgY29udGV4dCBiZWluZyBzZXQuDQo+ID4gPiA+ID4gKyAgQHBhcmFtW291dF0g ICAgICBQdWJsaWNLZXkgICAgICBQb2ludGVyIHRvIHQgYnVmZmVyIHRvIHJlY2VpdmUNCj4gZ2Vu ZXJhdGVkIHB1YmxpYyBYLFkuDQo+ID4gPiA+ID4gKyAgQHBhcmFtW2luLCBvdXRdICBQdWJsaWNL ZXlTaXplICBPbiBpbnB1dCwgdGhlIHNpemUgb2YgUHVibGljIGJ1ZmZlcg0KPiBpbiBieXRlcy4N Cj4gPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9uIG91dHB1dCwg dGhlIHNpemUgb2YgZGF0YSByZXR1cm5lZCBpbiBQdWJsaWMNCj4gYnVmZmVyIGluIGJ5dGVzLg0K PiA+ID4gPiA+ICsgIEByZXR2YWwgIFRSVUUgICBFQyBrZXkgY29tcG9uZW50IHdhcyByZXRyaWV2 ZWQgc3VjY2Vzc2Z1bGx5Lg0KPiA+ID4gPiA+ICsgIEByZXR2YWwgIEZBTFNFICBJbnZhbGlkIEVD IGtleSBjb21wb25lbnQuDQo+ID4gPiA+ID4gKyoqLw0KPiA+ID4gPiA+ICtCT09MRUFODQo+ID4g PiA+ID4gK0VGSUFQSQ0KPiA+ID4gPiA+ICtFY0dldFB1YktleSAoDQo+ID4gPiA+ID4gKyAgSU4g T1VUICBWT0lEICAgKkVjQ29udGV4dCwNCj4gPiA+ID4gPiArICBPVVQgICAgIFVJTlQ4ICAqUHVi bGljS2V5LA0KPiA+ID4gPiA+ICsgIElOIE9VVCAgVUlOVE4gICpQdWJsaWNLZXlTaXplDQo+ID4g PiA+ID4gKyAgKQ0KPiA+ID4gPiA+ICt7DQo+ID4gPiA+ID4gKyAgQVNTRVJUIChGQUxTRSk7DQo+ ID4gPiA+ID4gKyAgcmV0dXJuIEZBTFNFOw0KPiA+ID4gPiA+ICt9DQo+ID4gPiA+ID4gKw0KPiA+ ID4gPiA+ICsvKioNCj4gPiA+ID4gPiArICBDb21wdXRlcyBleGNoYW5nZWQgY29tbW9uIGtleS4N Cj4gPiA+ID4gPiArICBHaXZlbiBwZWVyJ3MgcHVibGljIGtleSAoWCwgWSksIHRoaXMgZnVuY3Rp b24gY29tcHV0ZXMgdGhlDQo+IGV4Y2hhbmdlZCBjb21tb24ga2V5LA0KPiA+ID4gPiA+ICsgIGJh c2VkIG9uIGl0cyBvd24gY29udGV4dCBpbmNsdWRpbmcgdmFsdWUgb2YgY3VydmUgcGFyYW1ldGVy IGFuZA0KPiByYW5kb20gc2VjcmV0Lg0KPiA+ID4gPiA+ICsgIFggaXMgdGhlIGZpcnN0IGhhbGYg b2YgUGVlclB1YmxpYyB3aXRoIHNpemUgYmVpbmcgUGVlclB1YmxpY1NpemUgLyAyLA0KPiA+ID4g PiA+ICsgIFkgaXMgdGhlIHNlY29uZCBoYWxmIG9mIFBlZXJQdWJsaWMgd2l0aCBzaXplIGJlaW5n IFBlZXJQdWJsaWNTaXplIC8NCj4gMi4NCj4gPiA+ID4gPiArICBJZiBFY0NvbnRleHQgaXMgTlVM TCwgdGhlbiByZXR1cm4gRkFMU0UuDQo+ID4gPiA+ID4gKyAgSWYgUGVlclB1YmxpYyBpcyBOVUxM LCB0aGVuIHJldHVybiBGQUxTRS4NCj4gPiA+ID4gPiArICBJZiBQZWVyUHVibGljU2l6ZSBpcyAw LCB0aGVuIHJldHVybiBGQUxTRS4NCj4gPiA+ID4gPiArICBJZiBLZXkgaXMgTlVMTCwgdGhlbiBy ZXR1cm4gRkFMU0UuDQo+ID4gPiA+ID4gKyAgSWYgS2V5U2l6ZSBpcyBub3QgbGFyZ2UgZW5vdWdo LCB0aGVuIHJldHVybiBGQUxTRS4NCj4gPiA+ID4gPiArICBGb3IgUC0yNTYsIHRoZSBQZWVyUHVi bGljU2l6ZSBpcyA2NC4gRmlyc3QgMzItYnl0ZSBpcyBYLCBTZWNvbmQgMzItDQo+IGJ5dGUgaXMg WS4NCj4gPiA+ID4gPiArICBGb3IgUC0zODQsIHRoZSBQZWVyUHVibGljU2l6ZSBpcyA5Ni4gRmly c3QgNDgtYnl0ZSBpcyBYLCBTZWNvbmQgNDgtDQo+IGJ5dGUgaXMgWS4NCj4gPiA+ID4gPiArICBG b3IgUC01MjEsIHRoZSBQZWVyUHVibGljU2l6ZSBpcyAxMzIuIEZpcnN0IDY2LWJ5dGUgaXMgWCwg U2Vjb25kIDY2LQ0KPiBieXRlIGlzIFkuDQo+ID4gPiA+ID4gKyAgQHBhcmFtW2luLCBvdXRdICBF Y0NvbnRleHQgICAgICAgICAgUG9pbnRlciB0byB0aGUgRUMgY29udGV4dC4NCj4gPiA+ID4gPiAr ICBAcGFyYW1baW5dICAgICAgIFBlZXJQdWJsaWMgICAgICAgICBQb2ludGVyIHRvIHRoZSBwZWVy J3MgcHVibGljIFgsWS4NCj4gPiA+ID4gPiArICBAcGFyYW1baW5dICAgICAgIFBlZXJQdWJsaWNT aXplICAgICBTaXplIG9mIHBlZXIncyBwdWJsaWMgWCxZIGluIGJ5dGVzLg0KPiA+ID4gPiA+ICsg IEBwYXJhbVtpbl0gICAgICAgQ29tcHJlc3NGbGFnICAgICAgIEZsYWcgb2YgUGVlclB1YmxpYyBp cw0KPiBjb21wcmVzc2VkIG9yIG5vdC4NCj4gPiA+ID4gPiArICBAcGFyYW1bb3V0XSAgICAgIEtl eSAgICAgICAgICAgICAgICBQb2ludGVyIHRvIHRoZSBidWZmZXIgdG8gcmVjZWl2ZQ0KPiBnZW5l cmF0ZWQga2V5Lg0KPiA+ID4gPiA+ICsgIEBwYXJhbVtpbiwgb3V0XSAgS2V5U2l6ZSAgICAgICAg ICAgIE9uIGlucHV0LCB0aGUgc2l6ZSBvZiBLZXkgYnVmZmVyIGluDQo+IGJ5dGVzLg0KPiA+ID4g PiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9uIG91dHB1dCwgdGhl IHNpemUgb2YgZGF0YSByZXR1cm5lZCBpbiBLZXkNCj4gYnVmZmVyIGluIGJ5dGVzLg0KPiA+ID4g PiA+ICsgIEByZXR2YWwgVFJVRSAgIEVDIGV4Y2hhbmdlZCBrZXkgZ2VuZXJhdGlvbiBzdWNjZWVk ZWQuDQo+ID4gPiA+ID4gKyAgQHJldHZhbCBGQUxTRSAgRUMgZXhjaGFuZ2VkIGtleSBnZW5lcmF0 aW9uIGZhaWxlZC4NCj4gPiA+ID4gPiArICBAcmV0dmFsIEZBTFNFICBLZXlTaXplIGlzIG5vdCBs YXJnZSBlbm91Z2guDQo+ID4gPiA+ID4gKyoqLw0KPiA+ID4gPiA+ICtCT09MRUFODQo+ID4gPiA+ ID4gK0VGSUFQSQ0KPiA+ID4gPiA+ICtFY0RoQ29tcHV0ZUtleSAoDQo+ID4gPiA+ID4gKyAgSU4g T1VUICBWT0lEICAgICAgICAgKkVjQ29udGV4dCwNCj4gPiA+ID4gPiArICBJTiAgICAgIENPTlNU IFVJTlQ4ICAqUGVlclB1YmxpYywNCj4gPiA+ID4gPiArICBJTiAgICAgIFVJTlROICAgICAgICBQ ZWVyUHVibGljU2l6ZSwNCj4gPiA+ID4gPiArICBJTiAgICAgIENPTlNUIElOVDMyICAqQ29tcHJl c3NGbGFnLA0KPiA+ID4gPiA+ICsgIE9VVCAgICAgVUlOVDggICAgICAgICpLZXksDQo+ID4gPiA+ ID4gKyAgSU4gT1VUICBVSU5UTiAgICAgICAgKktleVNpemUNCj4gPiA+ID4gPiArICApDQo+ID4g PiA+ID4gK3sNCj4gPiA+ID4gPiArICBBU1NFUlQgKEZBTFNFKTsNCj4gPiA+ID4gPiArICByZXR1 cm4gRkFMU0U7DQo+ID4gPiA+ID4gK30NCj4gPiA+ID4gPiAtLQ0KPiA+ID4gPiA+IDIuMzEuMS53 aW5kb3dzLjENCj4gPiA+ID4gPg0KPiA+ID4gPiA+DQo+ID4gPiA+ID4NCj4gPiA+ID4gPiANCj4g PiA+ID4gPg0KDQo=