From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received-SPF: Pass (sender SPF authorized) identity=mailfrom; client-ip=192.55.52.93; helo=mga11.intel.com; envelope-from=bob.c.feng@intel.com; receiver=edk2-devel@lists.01.org Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id DC07F2118DC32 for ; Thu, 8 Nov 2018 22:29:33 -0800 (PST) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga005.fm.intel.com ([10.253.24.32]) by fmsmga102.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 08 Nov 2018 22:29:33 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.54,482,1534834800"; d="scan'208";a="278387691" Received: from fmsmsx105.amr.corp.intel.com ([10.18.124.203]) by fmsmga005.fm.intel.com with ESMTP; 08 Nov 2018 22:29:33 -0800 Received: from shsmsx152.ccr.corp.intel.com (10.239.6.52) by FMSMSX105.amr.corp.intel.com (10.18.124.203) with Microsoft SMTP Server (TLS) id 14.3.408.0; Thu, 8 Nov 2018 22:29:32 -0800 Received: from shsmsx101.ccr.corp.intel.com ([169.254.1.102]) by SHSMSX152.ccr.corp.intel.com ([169.254.6.214]) with mapi id 14.03.0415.000; Fri, 9 Nov 2018 14:29:30 +0800 From: "Feng, Bob C" To: Felix Polyudov , "Ni, Ruiyu" , "edk2-devel@lists.01.org" CC: "Carsey, Jaben" , "Gao, Liming" Thread-Topic: [edk2] [Patch] BaseTools: Replace the sqlite database with list Thread-Index: AQHUdxYhZrkAq8DSWkaaty3mcL6yNKVE1dYAgACGC/CAALieQIAAtR9Q Date: Fri, 9 Nov 2018 06:29:29 +0000 Message-ID: <08650203BA1BD64D8AD9B6D5D74A85D15FFFC060@SHSMSX101.ccr.corp.intel.com> References: <20181108031519.37720-1-bob.c.feng@intel.com> <43c4bb22-41c4-fbf7-ff9d-e86bac0d2da7@Intel.com> <08650203BA1BD64D8AD9B6D5D74A85D15FFFB3B4@SHSMSX101.ccr.corp.intel.com> <9333E191E0D52B4999CE63A99BA663A00302C3534D@atlms1.us.megatrends.com> In-Reply-To: <9333E191E0D52B4999CE63A99BA663A00302C3534D@atlms1.us.megatrends.com> Accept-Language: zh-CN, en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.239.127.40] MIME-Version: 1.0 Subject: Re: [Patch] BaseTools: Replace the sqlite database with list X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 09 Nov 2018 06:29:34 -0000 Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 SGkgRmVsaXgsDQoNClllcy4gVGhlcmUgd2lsbCBub3QgYmUgYnVpbGQuZGIgdW5kZXIgQ29uZi8u Y2FjaGUgZm9sZGVyIGFmdGVyIHRoaXMgcGF0Y2guDQoNCkknbGwgdGFrZSBwYXJzaW5nIGRzYyBm aWxlIGFzIGV4YW1wbGUgdG8gZXhwbGFpbiBob3cgdGhlIGJ1aWxkLmRiIHdvcmtzIGluIGN1cnJl bnQgY29kZSBmaXJzdGx5LiANCkZvciB0aGUgZmlyc3QgYnVpbGQsIGZyb20gYSAuZHNjIGZpbGUg dG8gYSBkc2NidWlsZCBkYXRhLCB0aGVyZSBhcmUgc2V2ZXJhbCBzdGVwczoNCjEuIHJlYWQgLmRz YyBmaWxlIGFuZCBjcmVhdGUgYSB0YWJsZSBpbiBidWlsZC5kYg0KMi4gUGFyc2UgZWFjaCBsaW5l IG9mIGRzYyBmaWxlIGFuZCB0cmFuc2xhdGUgdGhlIGxpbmUgc3RyaW5nIGludG8gYSBkYXRhIGl0 ZW0gaW4gZHNjIHRhYmxlLg0KICAgICBUaGUgZGF0YSBoYXZlIHRoZSBzdHJ1Y3R1cmUgYXM6DQog ICAgIChJRCwgTW9kZWwsVmFsdWUxLFZhbHVlMixWYWx1ZTMsU2NvcGUxLFNjb3BlMixTY29wZTMs QmVsb25nc1RvSXRlbSxGcm9tSXRlbSxTdGFydExpbmUsU3RhcnRDb2x1bW4sRW5kTGluZSxFbmRD b2x1bW4sRW5hYmxlZCApDQogICAgIEF0IHRoaXMgdGltZSwgdGhlIE1hY3JvIGFuZCB0aGUgY29u ZGl0aW9uIGluICFJRiBhcmUgbm90IGV2YWx1YXRlZCwgdGhlICFJTkNMVURFIGlzIG5vdCBleHRl bmQNCjMuIERvIHRoZSBwb3N0X3Byb2Nlc3MoKQ0KICAgICBSZWFkIHRoZSBhbGwgY29udGVudCBm cm9tIHRoYXQgdGFibGUgYW5kIHByb2Nlc3MgdGhlIE1hY3JvLCBjb25kaXRpb24sICFJTkNMVURF IGFuZCBldGMuIEFuZCBzYXZlIHRoZSBwcm9jZXNzZWQgZGF0YSBpbnRvIGEgdGVtcG9yYXJ5IHRh YmxlLg0KNC4gR2VuZXJhdGUgYnVpbGQgZGF0YSBmcm9tIHRoZSB0ZW1wb3JhcnkgdGFibGUuIFRo ZSB0ZW1wb3JhcnkgdGFibGUgaXMgaW4gbWVtb3J5LCBpdCdzIG5vdCBzYXZlZCBpbiBidWlsZC5k Yg0KDQpGb3IgdGhlIHNlY29uZCBidWlsZCwgdG9vbCB3aWxsIGNoZWNrIGVhY2ggZmlsZSdzIHRp bWVzdGFtcCBhbmQgY29tcGFyZSBpdCB3aXRoIHRoZSB0aW1lc3RhbXAgc2F2ZWQgaW4gYnVpbGQu ZGIsIGlmIG1ldGFkYXRhIGZpbGUgaXMgbm90IGNoYW5nZWQsIHNraXAgdGhlIHN0ZXAgMSBhbmQg Mi4NClN0ZXAgMyBhbmQgNCBleGVjdXRlIGFsd2F5cy4gU28gdGhlIGJ1aWxkLmRiIGZvciBidWls ZCBwZXJmb3JtYW5jZSBpcyBsaW1pdGVkLg0KDQpIZXJlIGlzIHRoZSBwZXJmb3JtYW5jZSBkYXRh LiBJIHVzZWQgY1Byb2ZpbGUgdG8gcHJvZmlsZSBlYWNoIGZ1bmN0aW9uJ3MgdGltZSBmb3IgT3Zt Zlg2NC4gWW91IGNhbiBzZWUgYWZ0ZXIgYXBwbHlpbmcgcGF0Y2gsIHRoZSBtZXRob2QgJ2V4ZWN1 dGUnIG9mICdzcWxpdGUzLkN1cnNvcicgb2JqZWN0cyB0aW1lIGNvc3QgaXMgZ29uZS4gQW5kIGFs c28gbnQuc3RhdCBjYWxscyBhcmUgcmVkdWNlZC4gVGhpcyBwYXRjaCBjYW4gaW1wcm92ZSB0aGUg cGVyZm9ybWFuY2UgZm9yIGJvdGggY2xlYW4gYnVpbGQgYW5kIGluY3JlbWVudGFsIGJ1aWxkLg0K DQpOb3RlOiBTaW5jZSBjUHJvZmlsZSB0b29sIGFkZHMgc29tZSBvdmVybG9hZCwgdGhlIHRpbWUg aGVyZSBpcyBiaWdnZXIgdGhhbiByZWFsIGNhc2UuDQoNCkN1cnJlbnQgY29kZToNCkNsZWFuIGJ1 aWxkDQoyMjk3MjAxMCBmdW5jdGlvbiBjYWxscyAoMjIwNTU2MTAgcHJpbWl0aXZlIGNhbGxzKSBp biAxNi4zMDggc2Vjb25kcw0KDQogICBPcmRlcmVkIGJ5OiBpbnRlcm5hbCB0aW1lDQogICBMaXN0 IHJlZHVjZWQgZnJvbSA3NjYgdG8gNTAgZHVlIHRvIHJlc3RyaWN0aW9uIDw1MD4NCg0KICAgbmNh bGxzICB0b3R0aW1lICBwZXJjYWxsICBjdW10aW1lICBwZXJjYWxsIGZpbGVuYW1lOmxpbmVubyhm dW5jdGlvbikNCiAgIDc4NDgwNCAgICA1LjAwMyAgICAwLjAwMCAgICA1LjAwMyAgICAwLjAwMCB7 bnQuc3RhdH0NCiAgICA0OTU4MyAgICAxLjM2MSAgICAwLjAwMCAgICAxLjM2MSAgICAwLjAwMCB7 bWV0aG9kICdleGVjdXRlJyBvZiAnc3FsaXRlMy5DdXJzb3InIG9iamVjdHN9DQogICAgNDYwNTcg ICAgMS4yNDEgICAgMC4wMDAgICAgNy42NDQgICAgMC4wMDAgQzpcUHl0aG9uMjdcbGliXHRyYWNl YmFjay5weToyODEoZXh0cmFjdF9zdGFjaykNCiAgIDc3MjMyNiAgICAwLjY1MCAgICAwLjAwMCAg ICA1LjUzNiAgICAwLjAwMCBDOlxQeXRob24yN1xsaWJcbGluZWNhY2hlLnB5OjQ3KGNoZWNrY2Fj aGUpDQo2NzU5NDkvMTQ0MSAgICAwLjUzMiAgICAwLjAwMCAgICAxLjA1NiAgICAwLjAwMSBDOlxQ eXRob24yN1xsaWJcY29weS5weToxNDUoZGVlcGNvcHkpDQogICA3NzIzMjYgICAgMC4zMzUgICAg MC4wMDAgICAgMC42MTAgICAgMC4wMDAgQzpcUHl0aG9uMjdcbGliXGxpbmVjYWNoZS5weToxMyhn ZXRsaW5lKQ0KICAgNjg5MzU4ICAgIDAuMjc2ICAgIDAuMDAwICAgIDAuNDcxICAgIDAuMDAwIEQ6 XGVkazJcQmFzZVRvb2xzXFNvdXJjZVxQeXRob25cQ29tbW9uXE1pc2MucHk6MTc0NChfX2VxX18p DQogICAgNTk1MjAgICAgMC4yMzggICAgMC4wMDAgICAgMC4yNzkgICAgMC4wMDAgRDpcZWRrMlxC YXNlVG9vbHNcU291cmNlXFB5dGhvblxDb21tb25cU3RyaW5nVXRpbHMucHk6NDAyKENsZWFuU3Ry aW5nMikNCg0KSW5jcmVtZW50YWwgYnVpbGQ6DQoNCjE1MjUzODEwIGZ1bmN0aW9uIGNhbGxzICgx NDUxNzgxMCBwcmltaXRpdmUgY2FsbHMpIGluIDguMzkyIHNlY29uZHMNCg0KICAgT3JkZXJlZCBi eTogaW50ZXJuYWwgdGltZQ0KICAgTGlzdCByZWR1Y2VkIGZyb20gNzMyIHRvIDUwIGR1ZSB0byBy ZXN0cmljdGlvbiA8NTA+DQoNCiAgIG5jYWxscyAgdG90dGltZSAgcGVyY2FsbCAgY3VtdGltZSAg cGVyY2FsbCBmaWxlbmFtZTpsaW5lbm8oZnVuY3Rpb24pDQogICAyMDIyMjcgICAgMS4zNDEgICAg MC4wMDAgICAgMS4zNDEgICAgMC4wMDAge250LnN0YXR9DQogICAgMTY1OTUgICAgMC45NzIgICAg MC4wMDAgICAgMC45NzIgICAgMC4wMDAge21ldGhvZCAnZXhlY3V0ZScgb2YgJ3NxbGl0ZTMuQ3Vy c29yJyBvYmplY3RzfQ0KNDk5NTYyLzk3NCAgICAwLjM4OCAgICAwLjAwMCAgICAwLjc3NCAgICAw LjAwMSBDOlxQeXRob24yN1xsaWJcY29weS5weToxNDUoZGVlcGNvcHkpDQogICAgMTMwNjkgICAg MC4zMjEgICAgMC4wMDAgICAgMS45NDIgICAgMC4wMDAgQzpcUHl0aG9uMjdcbGliXHRyYWNlYmFj ay5weToyODEoZXh0cmFjdF9zdGFjaykNCiAgIDY4OTM1OCAgICAwLjI3OCAgICAwLjAwMCAgICAw LjQ3MyAgICAwLjAwMCBEOlxlZGsyXEJhc2VUb29sc1xTb3VyY2VcUHl0aG9uXENvbW1vblxNaXNj LnB5OjE3NDQoX19lcV9fKQ0KICAgICAyMTM2ICAgIDAuMTgwICAgIDAuMDAwICAgIDAuNDg2ICAg IDAuMDAwIEQ6XGVkazJcQmFzZVRvb2xzXFNvdXJjZVxQeXRob25cV29ya3NwYWNlXE1ldGFGaWxl VGFibGUucHk6MjMxKEdldFZhbGlkRXhwcmVzc2lvbikNCiAgICA1MTU0NSAgICAwLjE3OCAgICAw LjAwMCAgICAwLjMzNiAgICAwLjAwMCBDOlxQeXRob24yN1xsaWJcbnRwYXRoLnB5OjQxNShub3Jt cGF0aCkNCiAgICAgICAgMSAgICAwLjE3NSAgICAwLjE3NSAgICAwLjI1NSAgICAwLjI1NSBEOlxl ZGsyXEJhc2VUb29sc1xTb3VyY2VcUHl0aG9uXENvbW1vblxUb29sRGVmQ2xhc3NPYmplY3QucHk6 NjkoTG9hZFRvb2xEZWZGaWxlKQ0KICAgMTg5ODU3ICAgIDAuMTY2ICAgIDAuMDAwICAgIDEuMzkz ICAgIDAuMDAwIEM6XFB5dGhvbjI3XGxpYlxsaW5lY2FjaGUucHk6NDcoY2hlY2tjYWNoZSkNCiAg ICAxMDk1MCAgICAwLjE2NCAgICAwLjAwMCAgICAwLjI0NSAgICAwLjAwMCBEOlxlZGsyXEJhc2VU b29sc1xTb3VyY2VcUHl0aG9uXEdlbkZkc1xGZGZQYXJzZXIucHk6Mjg1KF9Ta2lwV2hpdGVTcGFj ZSkNCg0KQWZ0ZXIgcGF0Y2g6DQpDbGVhbiBidWlsZCBpcyB0aGUgc2FtZSBhcyBJbmNyZW1lbnRh bCBidWlsZA0KDQoxNjU1NzQ0OSBmdW5jdGlvbiBjYWxscyAoMTU2NDEwNDkgcHJpbWl0aXZlIGNh bGxzKSBpbiA2LjY2MiBzZWNvbmRzDQoNCiAgIE9yZGVyZWQgYnk6IGludGVybmFsIHRpbWUNCiAg IExpc3QgcmVkdWNlZCBmcm9tIDc0NiB0byA1MCBkdWUgdG8gcmVzdHJpY3Rpb24gPDUwPg0KDQog ICBuY2FsbHMgIHRvdHRpbWUgIHBlcmNhbGwgIGN1bXRpbWUgIHBlcmNhbGwgZmlsZW5hbWU6bGlu ZW5vKGZ1bmN0aW9uKQ0KNjc1OTQ5LzE0NDEgICAgMC41MzggICAgMC4wMDAgICAgMS4wNjQgICAg MC4wMDEgQzpcUHl0aG9uMjdcbGliXGNvcHkucHk6MTQ1KGRlZXBjb3B5KQ0KICAgNjg5MzU4ICAg IDAuMjc1ICAgIDAuMDAwICAgIDAuNDY4ICAgIDAuMDAwIEQ6XGVkazJcQmFzZVRvb2xzXFNvdXJj ZVxQeXRob25cQ29tbW9uXE1pc2MucHk6MTc0NChfX2VxX18pDQogICAgIDIxMzYgICAgMC4yMzYg ICAgMC4wMDAgICAgMC4yNTEgICAgMC4wMDAgRDpcZWRrMlxCYXNlVG9vbHNcU291cmNlXFB5dGhv blxQYXJzZXJEYlxNZXRhRmlsZVRhYmxlLnB5OjI2OShHZXRWYWxpZEV4cHJlc3Npb24pDQogICAg NTk1MjAgICAgMC4yMzIgICAgMC4wMDAgICAgMC4yNjggICAgMC4wMDAgRDpcZWRrMlxCYXNlVG9v bHNcU291cmNlXFB5dGhvblxDb21tb25cU3RyaW5nVXRpbHMucHk6NDAyKENsZWFuU3RyaW5nMikN CiAgICAyNzYxMiAgICAwLjIxMyAgICAwLjAwMCAgICAwLjIxMyAgICAwLjAwMCB7bnQuc3RhdH0N CiAgIDY2NjI4MyAgICAwLjE5NiAgICAwLjAwMCAgICAwLjI1NyAgICAwLjAwMCBDOlxQeXRob24y N1xsaWJcY29weS5weToyNjcoX2tlZXBfYWxpdmUpDQogICAgNTE2NjcgICAgMC4xNzggICAgMC4w MDAgICAgMC4zMTUgICAgMC4wMDAgQzpcUHl0aG9uMjdcbGliXG50cGF0aC5weTo0MTUobm9ybXBh dGgpDQoNClRoYW5rcywNCkJvYg0KDQotLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KRnJvbTog RmVsaXggUG9seXVkb3YgW21haWx0bzpGZWxpeHBAYW1pLmNvbV0gDQpTZW50OiBGcmlkYXksIE5v dmVtYmVyIDksIDIwMTggMTI6NDggQU0NClRvOiBGZW5nLCBCb2IgQyA8Ym9iLmMuZmVuZ0BpbnRl bC5jb20+OyBOaSwgUnVpeXUgPHJ1aXl1Lm5pQGludGVsLmNvbT47IGVkazItZGV2ZWxAbGlzdHMu MDEub3JnDQpDYzogQ2Fyc2V5LCBKYWJlbiA8amFiZW4uY2Fyc2V5QGludGVsLmNvbT47IEdhbywg TGltaW5nIDxsaW1pbmcuZ2FvQGludGVsLmNvbT4NClN1YmplY3Q6IFJFOiBbZWRrMl0gW1BhdGNo XSBCYXNlVG9vbHM6IFJlcGxhY2UgdGhlIHNxbGl0ZSBkYXRhYmFzZSB3aXRoIGxpc3QNCg0KQm9i LA0KDQpEb2VzIGl0IG1lYW4gdGhhdCBhZnRlciB0aGlzIHBhdGNoIHRoZSBidWlsZCBkYXRhIGlz IG5vIGxvbmdlciBzYXZlZCB0byBhIGZpbGUgYW5kIGlzIHJlY3JlYXRlZCBvbiBldmVyeSBidWls ZD8NCkRvIHlvdSBoYXZlIGFueSBkYXRhIHJlZ2FyZGluZyBidWlsZCBwcm9jZXNzIHBlcmZvcm1h bmNlIGltcHJvdmVtZW50cyBhZnRlciBhcHBseWluZyB0aGUgcGF0Y2g/DQpEb2VzIHRoaXMgcGF0 Y2ggaW1wcm92ZSBmdWxsIGJ1aWxkIHRpbWUgYW5kIGluY3JlbWVudGFsIGJ1aWxkIHRpbWU/DQoN ClRoYW5rcw0KRmVsaXgNCg0KLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCkZyb206IGVkazIt ZGV2ZWwgW21haWx0bzplZGsyLWRldmVsLWJvdW5jZXNAbGlzdHMuMDEub3JnXSBPbiBCZWhhbGYg T2YgRmVuZywgQm9iIEMNClNlbnQ6IFRodXJzZGF5LCBOb3ZlbWJlciAwOCwgMjAxOCAxMjozOSBB TQ0KVG86IE5pLCBSdWl5dTsgZWRrMi1kZXZlbEBsaXN0cy4wMS5vcmcNCkNjOiBDYXJzZXksIEph YmVuOyBHYW8sIExpbWluZw0KU3ViamVjdDogUmU6IFtlZGsyXSBbUGF0Y2hdIEJhc2VUb29sczog UmVwbGFjZSB0aGUgc3FsaXRlIGRhdGFiYXNlIHdpdGggbGlzdA0KDQpIaSBSYXksDQoNClJpZ2h0 LiBObyBTUUwgZGVwZW5kZW5jeSBhbnkgbW9yZSBhZnRlciB0aGlzIHBhdGNoLg0KDQpUaGFua3Ms DQpCb2INCg0KLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCkZyb206IE5pLCBSdWl5dQ0KU2Vu dDogVGh1cnNkYXksIE5vdmVtYmVyIDgsIDIwMTggMTozNyBQTQ0KVG86IEZlbmcsIEJvYiBDIDxi b2IuYy5mZW5nQGludGVsLmNvbT47IGVkazItZGV2ZWxAbGlzdHMuMDEub3JnDQpDYzogQ2Fyc2V5 LCBKYWJlbiA8amFiZW4uY2Fyc2V5QGludGVsLmNvbT47IEdhbywgTGltaW5nIDxsaW1pbmcuZ2Fv QGludGVsLmNvbT4NClN1YmplY3Q6IFJlOiBbZWRrMl0gW1BhdGNoXSBCYXNlVG9vbHM6IFJlcGxh Y2UgdGhlIHNxbGl0ZSBkYXRhYmFzZSB3aXRoIGxpc3QNCg0KT24gMTEvOC8yMDE4IDExOjE1IEFN LCBCb2JDRiB3cm90ZToNCj4gaHR0cHM6Ly9idWd6aWxsYS50aWFub2NvcmUub3JnL3Nob3dfYnVn LmNnaT9pZD0xMjg4DQo+IA0KPiBUaGlzIHBhdGNoIGlzIG9uZSBvZiBidWlsZCB0b29sIHBlcmZv cm1hbmNlIGltcHJvdmVtZW50IHNlcmllcyANCj4gcGF0Y2hlcy4NCj4gDQo+IFRoaXMgcGF0Y2gg aXMgZ29pbmcgdG8gdXNlIHB5dGhvbiBsaXN0IHRvIHN0b3JlIHRoZSBwYXJzZXIgZGF0YSANCj4g aW5zdGVhZCBvZiB1c2luZyBzcWxpdGUgZGF0YWJhc2UuDQo+IA0KPiBUaGUgcmVwbGFjZW1lbnQg c29sdXRpb24gaXMgYXMgYmVsb3c6DQo+IA0KPiBTUUwgaW5zZXJ0OiBsaXN0LmFwcGVuZCgpDQo+ IFNRTCBzZWxlY3Q6IGxpc3QgY29tcHJlaGVuc2lvbi4gZm9yIGV4YW1wbGU6DQo+IFNlbGVjdCAq IGZyb20gdGFibGUgd2hlcmUgZmllbGQgPSDigJxzb21ldGhpbmfigJ0NCj4gLT4NCj4gWyBpdGVt IGZvciBpdGVtIGluIHRhYmxlIGlmIGl0ZW1bM10gPT0g4oCcc29tZXRoaW5n4oCdXQ0KPiANCj4g U1FMIHVwZGF0ZTogcHl0aG9uIG1hcCBmdW5jdGlvbi4gZm9yIGV4YW1wbGU6DQo+IFVwZGF0ZSB0 YWJsZSBzZXQgZmllbGQxPW5ld3ZhbHVlIHdoZXJlIGZpbGVkMiA9IOKAnHNvbWV0aGluZ+KAnS4N Cj4gLT4gbWFwKGxhbWJkYSB4OiB4WzFdID0gbmV3dmFsdWUsDQo+ICAgICBbaXRlbSBmb3IgaXRl bSBpbiB0YWJsZSBpZiBpdGVtWzJdID09IOKAnHNvbWV0aGluZ+KAnV0pDQo+IA0KPiBTUUwgZGVs ZXRlOiBsaXN0IGNvbXByZWhlbnNpb24uDQo+IA0KPiBXaXRoIHRoaXMgY2hhbmdlLCBXZSBjYW4g c2F2ZSB0aGUgdGltZSBvZiBpbnRlcnByZXRpbmcgU1FMIHN0YXRlbWVudCANCj4gYW5kIHRoZSB0 aW1lIG9mIHdyaXRlIGRhdGFiYXNlIHRvIGZpbGUgc3lzdGVtDQo+IA0KPiBDb250cmlidXRlZC11 bmRlcjogVGlhbm9Db3JlIENvbnRyaWJ1dGlvbiBBZ3JlZW1lbnQgMS4xDQo+IFNpZ25lZC1vZmYt Ynk6IEJvYkNGIDxib2IuYy5mZW5nQGludGVsLmNvbT4NCj4gQ2M6IExpbWluZyBHYW8gPGxpbWlu Zy5nYW9AaW50ZWwuY29tPg0KPiBDYzogSmFiZW4gQ2Fyc2V5IDxqYWJlbi5jYXJzZXlAaW50ZWwu Y29tPg0KPiAtLS0NCg0KQm9iLA0KSSBhbSBjdXJpb3VzLiBBZnRlciB0aGlzIHBhdGNoLCB0aGVy ZSBpcyBubyBTUUwgZGVwZW5kZW5jeSBpbiBidWlsZCB0b29sPw0KDQotLQ0KVGhhbmtzLA0KUmF5 DQpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXw0KZWRrMi1k ZXZlbCBtYWlsaW5nIGxpc3QNCmVkazItZGV2ZWxAbGlzdHMuMDEub3JnDQpodHRwczovL2xpc3Rz LjAxLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2VkazItZGV2ZWwNCg0KUGxlYXNlIGNvbnNpZGVyIHRo ZSBlbnZpcm9ubWVudCBiZWZvcmUgcHJpbnRpbmcgdGhpcyBlbWFpbC4NCg0KVGhlIGluZm9ybWF0 aW9uIGNvbnRhaW5lZCBpbiB0aGlzIG1lc3NhZ2UgbWF5IGJlIGNvbmZpZGVudGlhbCBhbmQgcHJv cHJpZXRhcnkgdG8gQW1lcmljYW4gTWVnYXRyZW5kcywgSW5jLiAgVGhpcyBjb21tdW5pY2F0aW9u IGlzIGludGVuZGVkIHRvIGJlIHJlYWQgb25seSBieSB0aGUgaW5kaXZpZHVhbCBvciBlbnRpdHkg dG8gd2hvbSBpdCBpcyBhZGRyZXNzZWQgb3IgYnkgdGhlaXIgZGVzaWduZWUuIElmIHRoZSByZWFk ZXIgb2YgdGhpcyBtZXNzYWdlIGlzIG5vdCB0aGUgaW50ZW5kZWQgcmVjaXBpZW50LCB5b3UgYXJl IG9uIG5vdGljZSB0aGF0IGFueSBkaXN0cmlidXRpb24gb2YgdGhpcyBtZXNzYWdlLCBpbiBhbnkg Zm9ybSwgaXMgc3RyaWN0bHkgcHJvaGliaXRlZC4gIFBsZWFzZSBwcm9tcHRseSBub3RpZnkgdGhl IHNlbmRlciBieSByZXBseSBlLW1haWwgb3IgYnkgdGVsZXBob25lIGF0IDc3MC0yNDYtODYwMCwg YW5kIHRoZW4gZGVsZXRlIG9yIGRlc3Ryb3kgYWxsIGNvcGllcyBvZiB0aGUgdHJhbnNtaXNzaW9u Lg0K