From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR03-VE1-obe.outbound.protection.outlook.com (mail-eopbgr50047.outbound.protection.outlook.com [40.107.5.47]) by dpdk.org (Postfix) with ESMTP id 7A22B37B7; Mon, 8 Oct 2018 12:41:28 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; s=selector1-arm-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=WVs9V/KTZUzYkdLPPR3628b2fCZKy9v5ANbnRKHpERQ=; b=HV0+/yWnkig2FkcjYrtoz2F8qIPQX87QEJG1DNa5vbDK5R5XuhNVU02n8AgG/4p0tgP9ylwEuQ1kVe5u/Cqj3MSAZFZK6bIDukQYftSP+1o2yJJxetWpTOXlTk6FfT4wtbsQmJRdREEEFKX0O8wJsQn6N0d+f4lizC0vXF7xUfQ= Received: from DB7PR08MB3163.eurprd08.prod.outlook.com (52.134.110.149) by DB7PR08MB3193.eurprd08.prod.outlook.com (52.134.110.155) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1207.26; Mon, 8 Oct 2018 10:41:27 +0000 Received: from DB7PR08MB3163.eurprd08.prod.outlook.com ([fe80::e535:27:f833:3258]) by DB7PR08MB3163.eurprd08.prod.outlook.com ([fe80::e535:27:f833:3258%2]) with mapi id 15.20.1207.024; Mon, 8 Oct 2018 10:41:27 +0000 From: "Gavin Hu (Arm Technology China)" To: Ola Liljedahl , Jerin Jacob CC: "dev@dpdk.org" , Honnappa Nagarahalli , "Ananyev, Konstantin" , Steve Capper , nd , "stable@dpdk.org" Thread-Topic: [PATCH v3 1/3] ring: read tail using atomic load Thread-Index: AQHUTl7oRf7ShYPLWECgB4oSebTnGqUHJ0+AgAij3fCAAKEOgIAAMIcAgAAF34CAACPDgIAAGFMAgAAgVICAABBDgIAAIdaAgAADEgCAAANNgIAAAVCAgAC6c4CAAMoBgIAAizEAgAEX/gCAAJzqgIAANqSAgAAKnoCAAAcsgIAAAZNAgAACLQCAAACF4A== Date: Mon, 8 Oct 2018 10:41:27 +0000 Message-ID: References: <1555626C-F2B8-44EB-98A3-79B1F7002587@arm.com> <60055965-A7C8-4E9F-8668-0AE1DCE57515@arm.com> <20181006074126.GA16715@jerin> <20181007040243.GA1850@jerin> <7A156041-23EC-4CCB-B129-3607AF34A992@arm.com> <20181008060629.GA5228@jerin> <063A95EC-CFC1-42F7-B864-DFB9C6718AC8@arm.com> <20181008100004.GB11081@jerin> <5630E77E-370D-4EFF-B79D-D23F863800C5@arm.com> In-Reply-To: <5630E77E-370D-4EFF-B79D-D23F863800C5@arm.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: spf=none (sender IP is ) smtp.mailfrom=Gavin.Hu@arm.com; x-originating-ip: [113.29.88.7] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1; DB7PR08MB3193; 6:KDbw34a7KdHeI0RD41JyFyZHXRYGd8gRuiJcQf+GjU3DpOY1sjfYN5WkdoCGMsq8SPY7oZqdmzuK3I9zMGy4DV9l/h0sBwpaciFmGm8cUYCVehPMZLhAXZm/9tktu3YlAM9xQnjflea1znWHjRrnH/8VqGxdYKdnLM6hLG5hil3u0jXIHjpqblS05cpvCR/R1oNuBhOU/i/Xo3Tmo/6VK6CmucyGVXNXkjbRuZminCR43Bk4x6/cl2OgST26nTA72iZzTwZNdVSsB/x+wqRV+CVZ4H3Gg10DWptkKwi8fOXdbYuZ9JZuzaaX4rpUE0QogGQ+eA02TtxSgPjpRkt5u/OfqOdh3EejeTibAxQhyh+/SZvWb9F9smill300MytYfbpMkB8zA43euMuDzhH3zi3et6DAFWLDMGlku157gBzwKtWwNY3GXT1XCQn4tFFli/o4YWPP3MElWfNKnK5n9A==; 5:DJs1wEbHeBW5R36yoMh4afleV0B5yQbbitJYIDtIKxFvmEDKbuE+cfK3Y5hBUXe9bRtCSIR5XdXo233kueLO66BjyJhJD705NHpjoxfZQ/LpDYPxFQHYf/Gwe+tgqfKoTKBiDhgT9eJRsv17WvLnsH7POERGWLUymyQVjpndpJw=; 7:lcxHQlwk0Vwbe8eRwwu4bWCCOnKFUMsZfHmUP67DXQWy8yDdZWni/eH+R7B3Q3KPPrTrvc1ZCmhY0/0Hh+2iKWWa9vtKF+xwmAWZSAlRq6itoeTykPr5qXDgWtQoC/PlKehg6z06qjiWZRgvHWYgYa4HwEHWnyQ4O3Stf4hN9rgmEGYBPVX0nT/bMDTnbYb09WU514pJGIMjUI9/kgknYk0KCIDOxo3+cgPNVVLhpVcXVlT3mUzHJaluOzDZ6+uO x-ms-exchange-antispam-srfa-diagnostics: SOS;SOR; x-ms-office365-filtering-correlation-id: 257746ee-7326-4bcd-97b5-08d62d0a99b9 x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0; PCL:0; RULEID:(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600074)(711020)(4618075)(2017052603328)(7153060)(7193020); SRVR:DB7PR08MB3193; x-ms-traffictypediagnostic: DB7PR08MB3193: nodisclaimer: True x-microsoft-antispam-prvs: x-exchange-antispam-report-test: UriScan:(166708455590820)(180628864354917)(228905959029699); x-ms-exchange-senderadcheck: 1 x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(8121501046)(5005006)(3231355)(944501410)(52105095)(3002001)(10201501046)(93006095)(93001095)(6055026)(149066)(150057)(6041310)(20161123560045)(20161123558120)(20161123562045)(20161123564045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(201708071742011)(7699051); SRVR:DB7PR08MB3193; BCL:0; PCL:0; RULEID:; SRVR:DB7PR08MB3193; x-forefront-prvs: 081904387B x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(366004)(376002)(396003)(346002)(39860400002)(136003)(13464003)(51234002)(199004)(189003)(8676002)(81156014)(446003)(8936002)(33656002)(478600001)(72206003)(966005)(106356001)(81166006)(105586002)(7736002)(74316002)(45080400002)(68736007)(7696005)(99286004)(93886005)(305945005)(6506007)(11346002)(5660300001)(476003)(486006)(53546011)(316002)(6436002)(186003)(4326008)(76176011)(6306002)(229853002)(14454004)(110136005)(53936002)(9686003)(53946003)(66066001)(6246003)(2900100001)(25786009)(54906003)(2906002)(256004)(14444005)(19627235002)(71200400001)(5250100002)(97736004)(71190400001)(26005)(102836004)(86362001)(4744004)(3846002)(55016002)(6116002); DIR:OUT; SFP:1101; SCL:1; SRVR:DB7PR08MB3193; H:DB7PR08MB3163.eurprd08.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1; received-spf: None (protection.outlook.com: arm.com does not designate permitted sender hosts) x-microsoft-antispam-message-info: 3UQ0u3DqTjTUjdW+fh/4Yr8otR3aPvoTMqdH6+3/ksdsRm4j9yBE8FeZY7aGPwrFxPiQjdRBPGvGemwsfAmpBXkkHxXdAsF3UuLhFEV51WBCV99Iw3TpFRMAdx5tbumif6Hi96rLWYNtcTsurHICSzhwWqKvk57suOrSK4j9Ft2t5wajyWAwDaRLk/wz62enM4DSpVr2WPXbhHAY3wcSyXLPdGZ0Q5s3hXKo5WAEXm6snSC0IK/pRcp0xo9IQgHb8Om1lq8utXEH3DQ3ocYEaEMLSQcyqObxccQ/Fmrz4ygINVGbRqFchr7lWqnd6IHNlZaR9jqesBvuux/iCVE02+uWxcN2Yc0fIg+BoP/MEik= spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-Network-Message-Id: 257746ee-7326-4bcd-97b5-08d62d0a99b9 X-MS-Exchange-CrossTenant-originalarrivaltime: 08 Oct 2018 10:41:27.0722 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB7PR08MB3193 Subject: Re: [dpdk-dev] [PATCH v3 1/3] ring: read tail using atomic load X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 08 Oct 2018 10:41:28 -0000 VGhpcyBpcyBUaHVuZGVyWDIuDQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJv bTogT2xhIExpbGplZGFobA0KPiBTZW50OiBNb25kYXksIE9jdG9iZXIgOCwgMjAxOCA2OjM5IFBN DQo+IFRvOiBHYXZpbiBIdSAoQXJtIFRlY2hub2xvZ3kgQ2hpbmEpIDxHYXZpbi5IdUBhcm0uY29t PjsgSmVyaW4gSmFjb2INCj4gPGplcmluLmphY29iQGNhdml1bW5ldHdvcmtzLmNvbT4NCj4gQ2M6 IGRldkBkcGRrLm9yZzsgSG9ubmFwcGEgTmFnYXJhaGFsbGkNCj4gPEhvbm5hcHBhLk5hZ2FyYWhh bGxpQGFybS5jb20+OyBBbmFueWV2LCBLb25zdGFudGluDQo+IDxrb25zdGFudGluLmFuYW55ZXZA aW50ZWwuY29tPjsgU3RldmUgQ2FwcGVyIDxTdGV2ZS5DYXBwZXJAYXJtLmNvbT47DQo+IG5kIDxu ZEBhcm0uY29tPjsgc3RhYmxlQGRwZGsub3JnDQo+IFN1YmplY3Q6IFJlOiBbUEFUQ0ggdjMgMS8z XSByaW5nOiByZWFkIHRhaWwgdXNpbmcgYXRvbWljIGxvYWQNCj4gDQo+IE9uIDA4LzEwLzIwMTgs IDEyOjMzLCAiR2F2aW4gSHUgKEFybSBUZWNobm9sb2d5IENoaW5hKSINCj4gPEdhdmluLkh1QGFy bS5jb20+IHdyb3RlOg0KPiANCj4gICAgIEkgZGlkIGJlbmNobWFya2luZyB3L28gYW5kIHcvIHRo ZSBwYXRjaCwgaXQgZGlkIG5vdCBzaG93IGFueSBub3RpY2VhYmxlDQo+IGRpZmZlcmVuY2VzIGlu IHRlcm1zIG9mIGxhdGVuY3kuDQo+IFdoaWNoIHBsYXRmb3JtIGlzIHRoaXM/DQo+IA0KPiANCj4g ICAgIEhlcmUgaXMgdGhlIGZ1bGwgbG9nKCAzIHJ1bnMgdy9vIHRoZSBwYXRjaCBhbmQgMiBydW5z IHcvIHRoZSBwYXRjaCkuDQo+IA0KPiAgICAgc3VkbyAuL3Rlc3QvdGVzdC90ZXN0IC1sIDE2LTE5 LDQ0LTQ3LDcyLTc1LDEwMC0xMDMgLW4gNCAtLXNvY2tldC1tZW09MTAyNA0KPiAtLSAtaQ0KPiAN Cj4gICAgIFJURT4+cmluZ19wZXJmX2F1dG90ZXN0ICgjMSBydW4gb2YgdGVzdCB3aXRob3V0IHRo ZSBwYXRjaCkNCj4gICAgICMjIyBUZXN0aW5nIHNpbmdsZSBlbGVtZW50IGFuZCBidXJzdCBlbnEv ZGVxICMjIw0KPiAgICAgU1AvU0Mgc2luZ2xlIGVucS9kZXF1ZXVlOiA4DQo+ICAgICBNUC9NQyBz aW5nbGUgZW5xL2RlcXVldWU6IDEwDQo+ICAgICBTUC9TQyBidXJzdCBlbnEvZGVxdWV1ZSAoc2l6 ZTogOCk6IDENCj4gICAgIE1QL01DIGJ1cnN0IGVucS9kZXF1ZXVlIChzaXplOiA4KTogMQ0KPiAg ICAgU1AvU0MgYnVyc3QgZW5xL2RlcXVldWUgKHNpemU6IDMyKTogMA0KPiAgICAgTVAvTUMgYnVy c3QgZW5xL2RlcXVldWUgKHNpemU6IDMyKTogMA0KPiANCj4gICAgICMjIyBUZXN0aW5nIGVtcHR5 IGRlcXVldWUgIyMjDQo+ICAgICBTQyBlbXB0eSBkZXF1ZXVlOiAwLjI0DQo+ICAgICBNQyBlbXB0 eSBkZXF1ZXVlOiAwLjI0DQo+IA0KPiAgICAgIyMjIFRlc3RpbmcgdXNpbmcgYSBzaW5nbGUgbGNv cmUgIyMjDQo+ICAgICBTUC9TQyBidWxrIGVucS9kZXF1ZXVlIChzaXplOiA4KTogMS40MA0KPiAg ICAgTVAvTUMgYnVsayBlbnEvZGVxdWV1ZSAoc2l6ZTogOCk6IDEuNzQNCj4gICAgIFNQL1NDIGJ1 bGsgZW5xL2RlcXVldWUgKHNpemU6IDMyKTogMC41OQ0KPiAgICAgTVAvTUMgYnVsayBlbnEvZGVx dWV1ZSAoc2l6ZTogMzIpOiAwLjY4DQo+IA0KPiAgICAgIyMjIFRlc3RpbmcgdXNpbmcgdHdvIGh5 cGVydGhyZWFkcyAjIyMNCj4gICAgIFNQL1NDIGJ1bGsgZW5xL2RlcXVldWUgKHNpemU6IDgpOiAy LjQ5DQo+ICAgICBNUC9NQyBidWxrIGVucS9kZXF1ZXVlIChzaXplOiA4KTogMy4wOQ0KPiAgICAg U1AvU0MgYnVsayBlbnEvZGVxdWV1ZSAoc2l6ZTogMzIpOiAxLjA3DQo+ICAgICBNUC9NQyBidWxr IGVucS9kZXF1ZXVlIChzaXplOiAzMik6IDEuMTMNCj4gDQo+ICAgICAjIyMgVGVzdGluZyB1c2lu ZyB0d28gcGh5c2ljYWwgY29yZXMgIyMjDQo+ICAgICBTUC9TQyBidWxrIGVucS9kZXF1ZXVlIChz aXplOiA4KTogNi41NQ0KPiAgICAgTVAvTUMgYnVsayBlbnEvZGVxdWV1ZSAoc2l6ZTogOCk6IDEy Ljk5DQo+ICAgICBTUC9TQyBidWxrIGVucS9kZXF1ZXVlIChzaXplOiAzMik6IDEuOTcNCj4gICAg IE1QL01DIGJ1bGsgZW5xL2RlcXVldWUgKHNpemU6IDMyKTogMy40MQ0KPiANCj4gICAgIFJURT4+ cmluZ19wZXJmX2F1dG90ZXN0KCMyIHJ1biBvZiB0ZXN0IHdpdGhvdXQgdGhlIHBhdGNoKQ0KPiAg ICAgIyMjIFRlc3Rpbmcgc2luZ2xlIGVsZW1lbnQgYW5kIGJ1cnN0IGVucS9kZXEgIyMjDQo+ICAg ICBTUC9TQyBzaW5nbGUgZW5xL2RlcXVldWU6IDgNCj4gICAgIE1QL01DIHNpbmdsZSBlbnEvZGVx dWV1ZTogMTANCj4gICAgIFNQL1NDIGJ1cnN0IGVucS9kZXF1ZXVlIChzaXplOiA4KTogMQ0KPiAg ICAgTVAvTUMgYnVyc3QgZW5xL2RlcXVldWUgKHNpemU6IDgpOiAxDQo+ICAgICBTUC9TQyBidXJz dCBlbnEvZGVxdWV1ZSAoc2l6ZTogMzIpOiAwDQo+ICAgICBNUC9NQyBidXJzdCBlbnEvZGVxdWV1 ZSAoc2l6ZTogMzIpOiAwDQo+IA0KPiAgICAgIyMjIFRlc3RpbmcgZW1wdHkgZGVxdWV1ZSAjIyMN Cj4gICAgIFNDIGVtcHR5IGRlcXVldWU6IDAuMjQNCj4gICAgIE1DIGVtcHR5IGRlcXVldWU6IDAu MjQNCj4gDQo+ICAgICAjIyMgVGVzdGluZyB1c2luZyBhIHNpbmdsZSBsY29yZSAjIyMNCj4gICAg IFNQL1NDIGJ1bGsgZW5xL2RlcXVldWUgKHNpemU6IDgpOiAxLjQwDQo+ICAgICBNUC9NQyBidWxr IGVucS9kZXF1ZXVlIChzaXplOiA4KTogMS43NA0KPiAgICAgU1AvU0MgYnVsayBlbnEvZGVxdWV1 ZSAoc2l6ZTogMzIpOiAwLjU5DQo+ICAgICBNUC9NQyBidWxrIGVucS9kZXF1ZXVlIChzaXplOiAz Mik6IDAuNjgNCj4gDQo+ICAgICAjIyMgVGVzdGluZyB1c2luZyB0d28gaHlwZXJ0aHJlYWRzICMj Iw0KPiAgICAgU1AvU0MgYnVsayBlbnEvZGVxdWV1ZSAoc2l6ZTogOCk6IDIuNTANCj4gICAgIE1Q L01DIGJ1bGsgZW5xL2RlcXVldWUgKHNpemU6IDgpOiAzLjA4DQo+ICAgICBTUC9TQyBidWxrIGVu cS9kZXF1ZXVlIChzaXplOiAzMik6IDEuMDcNCj4gICAgIE1QL01DIGJ1bGsgZW5xL2RlcXVldWUg KHNpemU6IDMyKTogMS4xMw0KPiANCj4gICAgICMjIyBUZXN0aW5nIHVzaW5nIHR3byBwaHlzaWNh bCBjb3JlcyAjIyMNCj4gICAgIFNQL1NDIGJ1bGsgZW5xL2RlcXVldWUgKHNpemU6IDgpOiA2LjU3 DQo+ICAgICBNUC9NQyBidWxrIGVucS9kZXF1ZXVlIChzaXplOiA4KTogMTMuMDANCj4gICAgIFNQ L1NDIGJ1bGsgZW5xL2RlcXVldWUgKHNpemU6IDMyKTogMS45OA0KPiAgICAgTVAvTUMgYnVsayBl bnEvZGVxdWV1ZSAoc2l6ZTogMzIpOiAzLjQxDQo+ICAgICBUZXN0IE9LDQo+IA0KPiAgICAgUlRF Pj5yaW5nX3BlcmZfYXV0b3Rlc3QoIzMgcnVuIG9mIHRlc3Qgd2l0aG91dCB0aGUgcGF0Y2gpDQo+ ICAgICAjIyMgVGVzdGluZyBzaW5nbGUgZWxlbWVudCBhbmQgYnVyc3QgZW5xL2RlcSAjIyMNCj4g ICAgIFNQL1NDIHNpbmdsZSBlbnEvZGVxdWV1ZTogOA0KPiAgICAgTVAvTUMgc2luZ2xlIGVucS9k ZXF1ZXVlOiAxMA0KPiAgICAgU1AvU0MgYnVyc3QgZW5xL2RlcXVldWUgKHNpemU6IDgpOiAxDQo+ ICAgICBNUC9NQyBidXJzdCBlbnEvZGVxdWV1ZSAoc2l6ZTogOCk6IDENCj4gICAgIFNQL1NDIGJ1 cnN0IGVucS9kZXF1ZXVlIChzaXplOiAzMik6IDANCj4gICAgIE1QL01DIGJ1cnN0IGVucS9kZXF1 ZXVlIChzaXplOiAzMik6IDANCj4gDQo+ICAgICAjIyMgVGVzdGluZyBlbXB0eSBkZXF1ZXVlICMj Iw0KPiAgICAgU0MgZW1wdHkgZGVxdWV1ZTogMC4yNA0KPiAgICAgTUMgZW1wdHkgZGVxdWV1ZTog MC4yNA0KPiANCj4gICAgICMjIyBUZXN0aW5nIHVzaW5nIGEgc2luZ2xlIGxjb3JlICMjIw0KPiAg ICAgU1AvU0MgYnVsayBlbnEvZGVxdWV1ZSAoc2l6ZTogOCk6IDEuNDANCj4gICAgIE1QL01DIGJ1 bGsgZW5xL2RlcXVldWUgKHNpemU6IDgpOiAxLjc0DQo+ICAgICBTUC9TQyBidWxrIGVucS9kZXF1 ZXVlIChzaXplOiAzMik6IDAuNTkNCj4gICAgIE1QL01DIGJ1bGsgZW5xL2RlcXVldWUgKHNpemU6 IDMyKTogMC42OA0KPiANCj4gICAgICMjIyBUZXN0aW5nIHVzaW5nIHR3byBoeXBlcnRocmVhZHMg IyMjDQo+ICAgICBTUC9TQyBidWxrIGVucS9kZXF1ZXVlIChzaXplOiA4KTogMi40OQ0KPiAgICAg TVAvTUMgYnVsayBlbnEvZGVxdWV1ZSAoc2l6ZTogOCk6IDMuMDgNCj4gICAgIFNQL1NDIGJ1bGsg ZW5xL2RlcXVldWUgKHNpemU6IDMyKTogMS4wNw0KPiAgICAgTVAvTUMgYnVsayBlbnEvZGVxdWV1 ZSAoc2l6ZTogMzIpOiAxLjEzDQo+IA0KPiAgICAgIyMjIFRlc3RpbmcgdXNpbmcgdHdvIHBoeXNp Y2FsIGNvcmVzICMjIw0KPiAgICAgU1AvU0MgYnVsayBlbnEvZGVxdWV1ZSAoc2l6ZTogOCk6IDYu NTUNCj4gICAgIE1QL01DIGJ1bGsgZW5xL2RlcXVldWUgKHNpemU6IDgpOiAxMi45Ng0KPiAgICAg U1AvU0MgYnVsayBlbnEvZGVxdWV1ZSAoc2l6ZTogMzIpOiAxLjk5DQo+ICAgICBNUC9NQyBidWxr IGVucS9kZXF1ZXVlIChzaXplOiAzMik6IDMuMzcNCj4gDQo+IA0KPiAgICAgUlRFPj5yaW5nX3Bl cmZfYXV0b3Rlc3QoIzEgcnVuIG9mIHRoZSB0ZXN0IHdpdGggdGhlIHBhdGNoKQ0KPiAgICAgIyMj IFRlc3Rpbmcgc2luZ2xlIGVsZW1lbnQgYW5kIGJ1cnN0IGVucS9kZXEgIyMjDQo+ICAgICBTUC9T QyBzaW5nbGUgZW5xL2RlcXVldWU6IDgNCj4gICAgIE1QL01DIHNpbmdsZSBlbnEvZGVxdWV1ZTog MTANCj4gICAgIFNQL1NDIGJ1cnN0IGVucS9kZXF1ZXVlIChzaXplOiA4KTogMQ0KPiAgICAgTVAv TUMgYnVyc3QgZW5xL2RlcXVldWUgKHNpemU6IDgpOiAxDQo+ICAgICBTUC9TQyBidXJzdCBlbnEv ZGVxdWV1ZSAoc2l6ZTogMzIpOiAwDQo+ICAgICBNUC9NQyBidXJzdCBlbnEvZGVxdWV1ZSAoc2l6 ZTogMzIpOiAwDQo+IA0KPiAgICAgIyMjIFRlc3RpbmcgZW1wdHkgZGVxdWV1ZSAjIyMNCj4gICAg IFNDIGVtcHR5IGRlcXVldWU6IDAuMjQNCj4gICAgIE1DIGVtcHR5IGRlcXVldWU6IDAuMzINCj4g DQo+ICAgICAjIyMgVGVzdGluZyB1c2luZyBhIHNpbmdsZSBsY29yZSAjIyMNCj4gICAgIFNQL1ND IGJ1bGsgZW5xL2RlcXVldWUgKHNpemU6IDgpOiAxLjQzDQo+ICAgICBNUC9NQyBidWxrIGVucS9k ZXF1ZXVlIChzaXplOiA4KTogMS43NA0KPiAgICAgU1AvU0MgYnVsayBlbnEvZGVxdWV1ZSAoc2l6 ZTogMzIpOiAwLjYwDQo+ICAgICBNUC9NQyBidWxrIGVucS9kZXF1ZXVlIChzaXplOiAzMik6IDAu NjgNCj4gDQo+ICAgICAjIyMgVGVzdGluZyB1c2luZyB0d28gaHlwZXJ0aHJlYWRzICMjIw0KPiAg ICAgU1AvU0MgYnVsayBlbnEvZGVxdWV1ZSAoc2l6ZTogOCk6IDIuNTMNCj4gICAgIE1QL01DIGJ1 bGsgZW5xL2RlcXVldWUgKHNpemU6IDgpOiAzLjA5DQo+ICAgICBTUC9TQyBidWxrIGVucS9kZXF1 ZXVlIChzaXplOiAzMik6IDEuMDYNCj4gICAgIE1QL01DIGJ1bGsgZW5xL2RlcXVldWUgKHNpemU6 IDMyKTogMS4xOA0KPiANCj4gICAgICMjIyBUZXN0aW5nIHVzaW5nIHR3byBwaHlzaWNhbCBjb3Jl cyAjIyMNCj4gICAgIFNQL1NDIGJ1bGsgZW5xL2RlcXVldWUgKHNpemU6IDgpOiA2LjU3DQo+ICAg ICBNUC9NQyBidWxrIGVucS9kZXF1ZXVlIChzaXplOiA4KTogMTIuOTMNCj4gICAgIFNQL1NDIGJ1 bGsgZW5xL2RlcXVldWUgKHNpemU6IDMyKTogMS45OA0KPiAgICAgTVAvTUMgYnVsayBlbnEvZGVx dWV1ZSAoc2l6ZTogMzIpOiAzLjQ0DQo+ICAgICBUZXN0IE9LDQo+ICAgICBSVEU+PnJpbmdfcGVy Zl9hdXRvdGVzdCAoIzEgcnVuIG9mIHRoZSB0ZXN0IHdpdGggdGhlIHBhdGNoKQ0KPiAgICAgIyMj IFRlc3Rpbmcgc2luZ2xlIGVsZW1lbnQgYW5kIGJ1cnN0IGVucS9kZXEgIyMjDQo+ICAgICBTUC9T QyBzaW5nbGUgZW5xL2RlcXVldWU6IDgNCj4gICAgIE1QL01DIHNpbmdsZSBlbnEvZGVxdWV1ZTog MTANCj4gICAgIFNQL1NDIGJ1cnN0IGVucS9kZXF1ZXVlIChzaXplOiA4KTogMQ0KPiAgICAgTVAv TUMgYnVyc3QgZW5xL2RlcXVldWUgKHNpemU6IDgpOiAxDQo+ICAgICBTUC9TQyBidXJzdCBlbnEv ZGVxdWV1ZSAoc2l6ZTogMzIpOiAwDQo+ICAgICBNUC9NQyBidXJzdCBlbnEvZGVxdWV1ZSAoc2l6 ZTogMzIpOiAwDQo+IA0KPiAgICAgIyMjIFRlc3RpbmcgZW1wdHkgZGVxdWV1ZSAjIyMNCj4gICAg IFNDIGVtcHR5IGRlcXVldWU6IDAuMjQNCj4gICAgIE1DIGVtcHR5IGRlcXVldWU6IDAuMzINCj4g DQo+ICAgICAjIyMgVGVzdGluZyB1c2luZyBhIHNpbmdsZSBsY29yZSAjIyMNCj4gICAgIFNQL1ND IGJ1bGsgZW5xL2RlcXVldWUgKHNpemU6IDgpOiAxLjQzDQo+ICAgICBNUC9NQyBidWxrIGVucS9k ZXF1ZXVlIChzaXplOiA4KTogMS43NA0KPiAgICAgU1AvU0MgYnVsayBlbnEvZGVxdWV1ZSAoc2l6 ZTogMzIpOiAwLjYwDQo+ICAgICBNUC9NQyBidWxrIGVucS9kZXF1ZXVlIChzaXplOiAzMik6IDAu NjgNCj4gDQo+ICAgICAjIyMgVGVzdGluZyB1c2luZyB0d28gaHlwZXJ0aHJlYWRzICMjIw0KPiAg ICAgU1AvU0MgYnVsayBlbnEvZGVxdWV1ZSAoc2l6ZTogOCk6IDIuNTMNCj4gICAgIE1QL01DIGJ1 bGsgZW5xL2RlcXVldWUgKHNpemU6IDgpOiAzLjA5DQo+ICAgICBTUC9TQyBidWxrIGVucS9kZXF1 ZXVlIChzaXplOiAzMik6IDEuMDYNCj4gICAgIE1QL01DIGJ1bGsgZW5xL2RlcXVldWUgKHNpemU6 IDMyKTogMS4xOA0KPiANCj4gICAgICMjIyBUZXN0aW5nIHVzaW5nIHR3byBwaHlzaWNhbCBjb3Jl cyAjIyMNCj4gICAgIFNQL1NDIGJ1bGsgZW5xL2RlcXVldWUgKHNpemU6IDgpOiA2LjU3DQo+ICAg ICBNUC9NQyBidWxrIGVucS9kZXF1ZXVlIChzaXplOiA4KTogMTIuOTMNCj4gICAgIFNQL1NDIGJ1 bGsgZW5xL2RlcXVldWUgKHNpemU6IDMyKTogMS45OA0KPiAgICAgTVAvTUMgYnVsayBlbnEvZGVx dWV1ZSAoc2l6ZTogMzIpOiAzLjQ2DQo+ICAgICBUZXN0IE9LDQo+IA0KPiAgICAgPiAtLS0tLU9y aWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiAgICAgPiBGcm9tOiBPbGEgTGlsamVkYWhsDQo+ICAgICA+ IFNlbnQ6IE1vbmRheSwgT2N0b2JlciA4LCAyMDE4IDY6MjYgUE0NCj4gICAgID4gVG86IEplcmlu IEphY29iIDxqZXJpbi5qYWNvYkBjYXZpdW1uZXR3b3Jrcy5jb20+DQo+ICAgICA+IENjOiBkZXZA ZHBkay5vcmc7IEhvbm5hcHBhIE5hZ2FyYWhhbGxpDQo+ICAgICA+IDxIb25uYXBwYS5OYWdhcmFo YWxsaUBhcm0uY29tPjsgQW5hbnlldiwgS29uc3RhbnRpbg0KPiAgICAgPiA8a29uc3RhbnRpbi5h bmFueWV2QGludGVsLmNvbT47IEdhdmluIEh1IChBcm0gVGVjaG5vbG9neSBDaGluYSkNCj4gICAg ID4gPEdhdmluLkh1QGFybS5jb20+OyBTdGV2ZSBDYXBwZXIgPFN0ZXZlLkNhcHBlckBhcm0uY29t PjsgbmQNCj4gICAgID4gPG5kQGFybS5jb20+OyBzdGFibGVAZHBkay5vcmcNCj4gICAgID4gU3Vi amVjdDogUmU6IFtQQVRDSCB2MyAxLzNdIHJpbmc6IHJlYWQgdGFpbCB1c2luZyBhdG9taWMgbG9h ZA0KPiAgICAgPg0KPiAgICAgPg0KPiAgICAgPg0KPiAgICAgPiBPbiAwOC8xMC8yMDE4LCAxMjow MCwgIkplcmluIEphY29iIiA8amVyaW4uamFjb2JAY2F2aXVtbmV0d29ya3MuY29tPg0KPiAgICAg PiB3cm90ZToNCj4gICAgID4NCj4gICAgID4gICAgIC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0t DQo+ICAgICA+ICAgICA+IERhdGU6IE1vbiwgOCBPY3QgMjAxOCAwOToyMjowNSArMDAwMA0KPiAg ICAgPiAgICAgPiBGcm9tOiBPbGEgTGlsamVkYWhsIDxPbGEuTGlsamVkYWhsQGFybS5jb20+DQo+ ICAgICA+ICAgICA+IFRvOiBKZXJpbiBKYWNvYiA8amVyaW4uamFjb2JAY2F2aXVtbmV0d29ya3Mu Y29tPg0KPiAgICAgPiAgICAgPiBDQzogImRldkBkcGRrLm9yZyIgPGRldkBkcGRrLm9yZz4sIEhv bm5hcHBhIE5hZ2FyYWhhbGxpDQo+ICAgICA+ICAgICA+ICA8SG9ubmFwcGEuTmFnYXJhaGFsbGlA YXJtLmNvbT4sICJBbmFueWV2LCBLb25zdGFudGluIg0KPiAgICAgPiAgICAgPiAgPGtvbnN0YW50 aW4uYW5hbnlldkBpbnRlbC5jb20+LCAiR2F2aW4gSHUgKEFybSBUZWNobm9sb2d5DQo+IENoaW5h KSINCj4gICAgID4gICAgID4gIDxHYXZpbi5IdUBhcm0uY29tPiwgU3RldmUgQ2FwcGVyIDxTdGV2 ZS5DYXBwZXJAYXJtLmNvbT4sIG5kDQo+ICAgICA+IDxuZEBhcm0uY29tPiwNCj4gICAgID4gICAg ID4gICJzdGFibGVAZHBkay5vcmciIDxzdGFibGVAZHBkay5vcmc+DQo+ICAgICA+ICAgICA+IFN1 YmplY3Q6IFJlOiBbUEFUQ0ggdjMgMS8zXSByaW5nOiByZWFkIHRhaWwgdXNpbmcgYXRvbWljIGxv YWQNCj4gICAgID4gICAgID4gdXNlci1hZ2VudDogTWljcm9zb2Z0LU1hY091dGxvb2svMTAuMTEu MC4xODA5MDkNCj4gICAgID4gICAgID4NCj4gICAgID4gICAgID4gRXh0ZXJuYWwgRW1haWwNCj4g ICAgID4gICAgID4NCj4gICAgID4gICAgID4gT24gMDgvMTAvMjAxOCwgMDg6MDYsICJKZXJpbiBK YWNvYiINCj4gPGplcmluLmphY29iQGNhdml1bW5ldHdvcmtzLmNvbT4NCj4gICAgID4gd3JvdGU6 DQo+ICAgICA+ICAgICA+DQo+ICAgICA+ICAgICA+ICAgICAtLS0tLU9yaWdpbmFsIE1lc3NhZ2Ut LS0tLQ0KPiAgICAgPiAgICAgPiAgICAgPiBEYXRlOiBTdW4sIDcgT2N0IDIwMTggMjA6NDQ6NTQg KzAwMDANCj4gICAgID4gICAgID4gICAgID4gRnJvbTogT2xhIExpbGplZGFobCA8T2xhLkxpbGpl ZGFobEBhcm0uY29tPg0KPiAgICAgPiAgICAgPiAgICAgPiBUbzogSmVyaW4gSmFjb2IgPGplcmlu LmphY29iQGNhdml1bW5ldHdvcmtzLmNvbT4NCj4gICAgID4gICAgID4gICAgID4gQ0M6ICJkZXZA ZHBkay5vcmciIDxkZXZAZHBkay5vcmc+LCBIb25uYXBwYSBOYWdhcmFoYWxsaQ0KPiAgICAgPiAg ICAgPiAgICAgPiAgPEhvbm5hcHBhLk5hZ2FyYWhhbGxpQGFybS5jb20+LCAiQW5hbnlldiwgS29u c3RhbnRpbiINCj4gICAgID4gICAgID4gICAgID4gIDxrb25zdGFudGluLmFuYW55ZXZAaW50ZWwu Y29tPiwgIkdhdmluIEh1IChBcm0gVGVjaG5vbG9neQ0KPiAgICAgPiBDaGluYSkiDQo+ICAgICA+ ICAgICA+ICAgICA+ICA8R2F2aW4uSHVAYXJtLmNvbT4sIFN0ZXZlIENhcHBlciA8U3RldmUuQ2Fw cGVyQGFybS5jb20+LA0KPiBuZA0KPiAgICAgPiA8bmRAYXJtLmNvbT4sDQo+ICAgICA+ICAgICA+ ICAgICA+ICAic3RhYmxlQGRwZGsub3JnIiA8c3RhYmxlQGRwZGsub3JnPg0KPiAgICAgPiAgICAg PiAgICAgPiBTdWJqZWN0OiBSZTogW1BBVENIIHYzIDEvM10gcmluZzogcmVhZCB0YWlsIHVzaW5n IGF0b21pYyBsb2FkDQo+ICAgICA+ICAgICA+ICAgICA+IHVzZXItYWdlbnQ6IE1pY3Jvc29mdC1N YWNPdXRsb29rLzEwLjExLjAuMTgwOTA5DQo+ICAgICA+ICAgICA+ICAgICA+DQo+ICAgICA+ICAg ICA+DQo+ICAgICA+ICAgICA+DQo+ICAgICA+ICAgICA+ICAgICBDb3VsZCB5b3UgcGxlYXNlIGZp eCB0aGUgZW1haWwgY2xpZW50IGZvciBpbmxpbmUgcmVwbHkuDQo+ICAgICA+ICAgICA+IFNvcnJ5 IHRoYXQgZG9lc24ndCBzZWVtIHRvIGJlIHBvc3NpYmxlIHdpdGggT3V0bG9vayBmb3IgTWFjIDE2 IG9yDQo+ICAgICA+IE9mZmljZTM2NS4gVGhlIG9mZmljaWFsIE9mZmljZTM2NS9PdXRsb29rDQo+ ICAgICA+ICAgICA+IGRvY3VtZW50YXRpb24gZG9lc24ndCBtYXRjaCB0aGUgYWN0dWFsIHVzZXIg aW50ZXJmYWNlLi4uDQo+ICAgICA+ICAgICA+DQo+ICAgICA+ICAgICA+DQo+ICAgICA+ICAgICA+ DQo+ICAgICA+ICAgICA+ICAgICBodHRwczovL3d3dy5rZXJuZWwub3JnL2RvYy9odG1sL3Y0LjE5 LXJjNy9wcm9jZXNzL2VtYWlsLQ0KPiAgICAgPiBjbGllbnRzLmh0bWwNCj4gICAgID4gICAgID4N Cj4gICAgID4gICAgID4NCj4gICAgID4gICAgID4gICAgID4NCj4gICAgID4gICAgID4gICAgID4g T24gMDcvMTAvMjAxOCwgMDY6MDMsICJKZXJpbiBKYWNvYiINCj4gICAgID4gPGplcmluLmphY29i QGNhdml1bW5ldHdvcmtzLmNvbT4gd3JvdGU6DQo+ICAgICA+ICAgICA+ICAgICA+DQo+ICAgICA+ ICAgICA+ICAgICA+ICAgICBJbiBhcm02NCBjYXNlLCBpdCB3aWxsIGhhdmUgQVRPTUlDX1JFTEFY RUQgZm9sbG93ZWQgYnkgYXNtDQo+ICAgICA+IHZvbGF0aWxlICgiIjo6OiJtZW1vcnkiKSBvZiBy dGVfcGF1c2UoKS4NCj4gICAgID4gICAgID4gICAgID4gICAgIEkgd291bGQgbid0IGhhdmUgYW55 IGlzc3VlLCBpZiB0aGUgZ2VuZXJhdGVkIGNvZGUgY29kZSBpcyBzYW1lDQo+IG9yDQo+ICAgICA+ IGJldHRlciB0aGFuIHRoZSBleGl0aW5nIGNhc2UuIGJ1dCBpdCBub3QgdGhlIGNhc2UsIFJpZ2h0 Pw0KPiAgICAgPiAgICAgPiAgICAgPiBUaGUgZXhpc3RpbmcgY2FzZSBpcyBhY3R1YWxseSBub3Qg aW50ZXJlc3RpbmcgKElNTykgYXMgaXQgZXhwb3Nlcw0KPiAgICAgPiB1bmRlZmluZWQgYmVoYXZp b3VyIHdoaWNoIGFsbG93cyB0aGUgY29tcGlsZXIgdG8gZG8gYW55dGhpbmcuIEJ1dCB5b3UNCj4g ICAgID4gc2VlbSB0byBiZSBzYXRpc2ZpZWQgd2l0aCAid29ya3MgZm9yIG1lLCByaWdodCBoZXJl IHJpZ2h0IG5vdyIuIEkgdGhpbmsgdGhlDQo+ICAgICA+IGNvc3Qgb2YgYXZvaWRpbmcgdW5kZWZp bmVkIGJlaGF2aW91ciBpcyBhY2NlcHRhYmxlIChhY3R1YWxseSBJIGRvbid0IHRoaW5rDQo+IGl0 DQo+ICAgICA+IGV2ZW4gd2lsbCBiZSBub3RpY2VhYmxlKS4NCj4gICAgID4gICAgID4NCj4gICAg ID4gICAgID4gICAgIEkgYW0gbm90IGNvbnZpbmNlZCBiZWNhdXNlIG9mIHVzZSBvZiB2b2xhdGls ZSBpbiBoZWFkIGFuZCB0YWlsDQo+IGluZGV4ZXMuDQo+ICAgICA+ICAgICA+ICAgICBGb3IgbWUg dGhhdCBicmluZ3MgdGhlIGRlZmluZWQgYmVoYXZpb3IuDQo+ICAgICA+ICAgICA+IEFzIGxvbmcg YXMgeW91IGRvbid0IG1peCBpbiBDMTEgYXRvbWljIGFjY2Vzc2VzIChqdXN0IHVzZSAicGxhaW4i DQo+IGFjY2Vzc2VzDQo+ICAgICA+IHRvIHZvbGF0aWxlIG9iamVjdHMpLA0KPiAgICAgPiAgICAg PiBpdCBpcyBBRkFJSyBkZWZpbmVkIGJlaGF2aW91ciAoYnV0IG5vdCBuZWNlc3NhcmlseSB1c2lu ZyBhdG9taWMgbG9hZHMNCj4gYW5kDQo+ICAgICA+IHN0b3JlcykuIEJ1dCBJIHF1b3RlZA0KPiAg ICAgPiAgICAgPiB0aGUgQzExIHNwZWMgd2hlcmUgaXQgZXhwbGljaXRseSBtZW50aW9ucyB0aGF0 IG1peGluZyBhdG9taWMgYW5kIG5vbi0NCj4gICAgID4gYXRvbWljIGFjY2Vzc2VzIHRvIHRoZSBz YW1lDQo+ICAgICA+ICAgICA+IG9iamVjdCBpcyB1bmRlZmluZWQgYmVoYXZpb3VyLiBEb24ndCBh cmd1ZSB3aXRoIG1lLCBhcmd1ZSB3aXRoIHRoZQ0KPiBDMTENCj4gICAgID4gc3BlYy4NCj4gICAg ID4gICAgID4gSWYgeW91IHdhbnQgdG8gZGlzb2JleSB0aGUgc3BlYywgdGhpcyBzaG91bGQgYXQg bGVhc3QgYmUgY2FsbGVkIG91dCBmb3INCj4gaW4NCj4gICAgID4gdGhlIGNvZGUgd2l0aCBhIGNv bW1lbnQuDQo+ICAgICA+DQo+ICAgICA+ICAgICBUaGF0J3MgYm9pbHMgZG93biBvbmx5IG9uZSBx dWVzdGlvbiwgc2hvdWxkIHdlIGZvbGxvdyBDMTEgc3BlYz8gV2h5DQo+IG5vdA0KPiAgICAgPiBv bmx5IHRha2UgbG9hZA0KPiAgICAgPiAgICAgYWNxdWlyZSBhbmQgc3RvcmUgcmVsZWFzZSBzZW1h bnRpY3Mgb25seSBqdXN0IGxpa2UgTGludXgga2VybmVsIGFuZA0KPiBGcmVlQlNELg0KPiAgICAg PiBBbmQgaW50cm9kdWNlIGV2ZW4gbW9yZSB1bmRlZmluZWQgYmVoYXZpb3VyPw0KPiAgICAgPg0K PiAgICAgPiAgICAgRG9lcyBub3QgbG9vayBsaWtlIEMxMSBtZW1vcnkgbW9kZWwgaXMgc3VwZXIg ZWZmaWNpZW50IGluIHRlcm0gb2YgZ2NjDQo+ICAgICA+ICAgICBpbXBsZW1lbnRhdGlvbi4NCj4g ICAgID4gWW91IGFyZSBtYWtpbmcgYSBjaGlja2VuIG91dCBvZiBhIGZlYXRoZXIuDQo+ICAgICA+ DQo+ICAgICA+IEkgdGhpbmsgdGhpcyAicHJvYmxlbSIgd2l0aCBvbmUgYWRkaXRpb25hbCBBREQg aW5zdHJ1Y3Rpb24gd2lsbCBvbmx5DQo+IGNvbmNlcm4NCj4gICAgID4gX19hdG9taWNfbG9hZF9u KF9fQVRPTUlDX1JFTEFYRUQpIGFuZA0KPiAgICAgPiBfX2F0b21pY19zdG9yZV9uKF9fQVRPTUlD X1JFTEFYRUQpIGJlY2F1c2UgdGhlIGNvbXBpbGVyDQo+IHNlcGFyYXRlcw0KPiAgICAgPiB0aGUg YWRkcmVzcyBnZW5lcmF0aW9uIChhZGQgb2Zmc2V0IG9mIHN0cnVjdCBtZW1iZXIpIGZyb20gdGhl IGxvYWQgb3INCj4gc3RvcmUNCj4gICAgID4gaXRzZWxmLiBGb3Igb3RoZXIgYXRvbWljIG9wZXJh dGlvbnMgYW5kIG1lbW9yeSBvcmRlcmluZ3MgKGUuZy4NCj4gICAgID4gX19hdG9taWNfbG9hZF9u KF9fQVRPTUlDX0FDUVVJUkUpLCB0aGUgZXh0cmEgQUREIGluc3RydWN0aW9uIHdpbGwNCj4gYmUN Cj4gICAgID4gaW5jbHVkZWQgYW55d2F5IChhcyBsb25nIGFzIHdlIGFjY2VzcyBhIG5vbi1maXJz dCBzdHJ1Y3QgbWVtYmVyKQ0KPiBiZWNhdXNlDQo+ICAgICA+IGUuZy4gTERBUiBvbmx5IGFjY2Vw dHMgYSBiYXNlIHJlZ2lzdGVyIHdpdGggbm8gb2Zmc2V0Lg0KPiAgICAgPg0KPiAgICAgPiBJIHN1 Z2dlc3QgbWluaW1pc2luZyB0aGUgaW1wb3NlZCBtZW1vcnkgb3JkZXJpbmdzIGNhbiBoYXZlIGEg bXVjaA0KPiBsYXJnZXINCj4gICAgID4gKHBvc2l0aXZlKSBlZmZlY3Qgb24gcGVyZm9ybWFuY2Ug Y29tcGFyZWQgdG8gYXZvaWRpbmcgb25lIEFERA0KPiBpbnN0cnVjdGlvbg0KPiAgICAgPiAobWVt b3J5IGFjY2Vzc2VzIGFyZSBtdWNoIHNsb3dlciB0aGFuIENQVSBBTFUgaW5zdHJ1Y3Rpb25zKS4N Cj4gICAgID4gVXNpbmcgQzExIG1lbW9yeSBtb2RlbCBhbmQgaWRlbnRpZnlpbmcgZXhhY3RseSB3 aGljaCBvYmplY3RzIGFyZSB1c2VkDQo+IGZvcg0KPiAgICAgPiBzeW5jaHJvbmlzYXRpb24gYW5k IHdoZXRoZXIgKGFueSkgdXBkYXRlcyB0byBzaGFyZWQgbWVtb3J5IGFyZQ0KPiBhY3F1aXJlZA0K PiAgICAgPiBvciByZWxlYXNlZCAobm8gdXBkYXRlcyB0byBzaGFyZWQgbWVtb3J5IG1lYW5zIHJl bGF4ZWQgb3JkZXIgY2FuIGJlDQo+IHVzZWQpDQo+ICAgICA+IHdpbGwgcHJvdmlkZSBtYXhpbXVt IGZyZWVkb20gdG8gdGhlIGNvbXBpbGVyIGFuZCBoYXJkd2FyZSB0byBnZXQgdGhlDQo+IGJlc3QN Cj4gICAgID4gcmVzdWx0Lg0KPiAgICAgPg0KPiAgICAgPiBUaGUgRnJlZUJTRCBhbmQgRFBESyBy aW5nIGJ1ZmZlcnMgc2hvdyBzb21lIGZ1bmRhbWVudGFsDQo+ICAgICA+IG1pc3VuZGVyc3RhbmRp bmdzIGhlcmUuIEluc3RlYWQgZXhjZXNzaXZlIG9yZGVyaW5ncyBhbmQgZXhwbGljaXQgYmFycmll cnMNCj4gICAgID4gaGF2ZSBiZWVuIHVzZWQgYXMgYmFuZC1haWRzLCB3aXRoIHVua25vd24gZWZm ZWN0cyBvbiBwZXJmb3JtYW5jZS4NCj4gICAgID4NCj4gICAgID4NCj4gICAgID4gICAgID4NCj4g ICAgID4gICAgID4NCj4gICAgID4gICAgID4gICAgIFRoYXQgdGhlIHJlYXNvbiB3aHkgSSBzaGFy ZWQNCj4gICAgID4gICAgID4gICAgIHRoZSBnZW5lcmF0ZWQgYXNzZW1ibHkgY29kZS4gSWYgeW91 IHRoaW5rIG90aGVyIHdheSwgUGljayBhbnkNCj4gY29tcGlsZXINCj4gICAgID4gICAgID4gICAg IGFuZCBzZWUgZ2VuZXJhdGVkIG91dHB1dC4NCj4gICAgID4gICAgID4gVGhpcyBpcyB3aGF0IG9u ZSBjb21waWxlciBmb3Igb25lIGFyY2hpdGVjdHVyZSBnZW5lcmF0ZXMgdG9kYXkuDQo+IFRoZXNl DQo+ICAgICA+IHRoaW5ncyBjaGFuZ2UuIE90aGVyIHRoaW5ncw0KPiAgICAgPiAgICAgPiB0aGF0 IHVzZWQgdG8gd29yayBvciB3b3JrZWQgZm9yIHNvbWUgc3BlY2lmaWMgYXJjaGl0ZWN0dXJlIGhh cw0KPiBzdG9wcGVkDQo+ICAgICA+IHdvcmtpbmcgaW4gbmV3ZXIgdmVyc2lvbnMgb2YNCj4gICAg ID4gICAgID4gdGhlIGNvbXBpbGVyLg0KPiAgICAgPiAgICAgPg0KPiAgICAgPiAgICAgPg0KPiAg ICAgPiAgICAgPiAgICAgQW5kDQo+ICAgICA+ICAgICA+DQo+ICAgICA+ICAgICA+ICAgICBGcmVl YnNkIGltcGxlbWVudGF0aW9uIG9mIHJpbmcgYnVmZmVyKFdoaWNoIERQREsgZGVyaXZlZCBmcm9t KSwNCj4gICAgID4gRG9uJ3QgaGF2ZQ0KPiAgICAgPiAgICAgPiAgICAgc3VjaCBsb2dpYywgU2Vl DQo+ICAgICA+DQo+IGh0dHBzOi8vZ2l0aHViLmNvbS9mcmVlYnNkL2ZyZWVic2QvYmxvYi9tYXN0 ZXIvc3lzL3N5cy9idWZfcmluZy5oI0wxMDgNCj4gICAgID4gICAgID4gSXQgbG9va3MgbGlrZSBG cmVlQlNEIHVzZXMgc29tZSBraW5kIG9mIEMxMSBhdG9taWMgbWVtb3J5IG1vZGVsLQ0KPiAgICAg PiBpbnNwaXJlZCBBUEkgYWx0aG91Z2ggSSBkb24ndCBzZWUNCj4gICAgID4gICAgID4gZXhhY3Rs eSBob3cgZS5nLiBhdG9taWNfc3RvcmVfcmVsX2ludCgpIGlzIGltcGxlbWVudGVkLiBUaGUgY29k ZQ0KPiBhbHNvDQo+ICAgICA+IG1peGVzIGluIGV4cGxpY2l0IGJhcnJpZXJzDQo+ICAgICA+ICAg ICA+IHNvIGRlZmluaXRpdmVseSBub3QgcHVyZSBDMTEgbWVtb3J5IG1vZGVsIHVzYWdlLiBBbmQg ZmluYWxseSwgaXQNCj4gZG9lc24ndA0KPiAgICAgPiBlc3RhYmxpc2ggdGhlIHByb3Blcg0KPiAg ICAgPiAgICAgPiBsb2FkLWFjcXVpcmUvc3RvcmUtcmVsZWFzZSByZWxhdGlvbnNoaXBzIChlLmcu IHN0b3JlLXJlbGVhc2UgY29uc190YWlsDQo+ICAgICA+IHJlcXVpcmVzIGEgbG9hZC1hY3F1aXJl IGNvbnNfdGFpbCwNCj4gICAgID4gICAgID4gc2FtZSBmb3IgcHJvZF90YWlsKS4NCj4gICAgID4g ICAgID4NCj4gICAgID4gICAgID4gIiogbXVsdGktcHJvZHVjZXIgc2FmZSBsb2NrLWZyZWUgcmlu ZyBidWZmZXIgZW5xdWV1ZSINCj4gICAgID4gICAgID4gVGhlIGNvbW1lbnQgaXMgYWxzbyB3cm9u Zy4gVGhpcyBkZXNpZ24gaXMgbm90IGxvY2stZnJlZSwgaG93IGNvdWxkIGl0DQo+IGJlDQo+ICAg ICA+IHdoZW4gdGhlcmUgaXMgc3Bpbm5pbmcNCj4gICAgID4gICAgID4gKHdhaXRpbmcpIGZvciBv dGhlciB0aHJlYWRzIGluIHRoZSBjb2RlPyBJZiBhIHRocmVhZCBtdXN0IHdhaXQgZm9yDQo+IG90 aGVyDQo+ICAgICA+IHRocmVhZHMsIHRoZW4gYnkgZGVmaW5pdGlvbg0KPiAgICAgPiAgICAgPiB0 aGUgZGVzaWduIGlzIGJsb2NraW5nLg0KPiAgICAgPiAgICAgPg0KPiAgICAgPiAgICAgPiBTbyB5 b3UgYXJlIHNheWluZyB0aGF0IGJlY2F1c2UgRnJlZUJTRCBpcyBkb2luZyBpdCB3cm9uZywgRFBE SyBjYW4NCj4gYWxzbw0KPiAgICAgPiBkbyBpdCB3cm9uZz8NCj4gICAgID4gICAgID4NCj4gICAg ID4gICAgID4NCj4gICAgID4gICAgID4gICAgIFNlZSBiZWxvdyB0b28uDQo+ICAgICA+ICAgICA+ DQo+ICAgICA+ICAgICA+ICAgICA+DQo+ICAgICA+ICAgICA+ICAgICA+IFNraXBwaW5nIHRoZSBj b21waWxlciBtZW1vcnkgYmFycmllciBpbiBydGVfcGF1c2UoKSBwb3RlbnRpYWxseQ0KPiAgICAg PiBhbGxvd3MgZm9yIG9wdGltaXNhdGlvbnMgdGhhdCBwcm92aWRlIG11Y2ggbW9yZSBiZW5lZml0 LCBlLmcuIGhpZGluZw0KPiBzb21lDQo+ICAgICA+IGNhY2hlIG1pc3MgbGF0ZW5jeSBmb3IgbGF0 ZXIgbG9hZHMuIFRoZSBEUERLIHJpbmcgYnVmZmVyIGltcGxlbWVudGF0aW9uIGlzDQo+ICAgICA+ IGRlZmluZWQgc28gdG8gZW5hYmxlIGlubGluaW5nIG9mIGVucXVldWUvZGVxdWV1ZSBmdW5jdGlv bnMgaW50byB0aGUNCj4gY2FsbGVyLA0KPiAgICAgPiBhbnkgY29kZSBjb3VsZCBpbW1lZGlhdGVs eSBmb2xsb3cgdGhlc2UgY2FsbHMuDQo+ICAgICA+ICAgICA+ICAgICA+DQo+ICAgICA+ICAgICA+ ICAgICA+IEZyb20gSU5URVJOQVRJT05BTCBTVEFOREFSRCDCqUlTTy9JRUMgSVNPL0lFQyA5ODk5 OjIwMXgNCj4gICAgID4gICAgID4gICAgID4gUHJvZ3JhbW1pbmcgbGFuZ3VhZ2VzIOKAlCBDDQo+ ICAgICA+ICAgICA+ICAgICA+DQo+ICAgICA+ICAgICA+ICAgICA+IDUuMS4yLjQNCj4gICAgID4g ICAgID4gICAgID4gNCBUd28gZXhwcmVzc2lvbiBldmFsdWF0aW9ucyBjb25mbGljdCBpZiBvbmUg b2YgdGhlbSBtb2RpZmllcyBhDQo+ICAgICA+IG1lbW9yeSBsb2NhdGlvbiBhbmQgdGhlIG90aGVy IG9uZSByZWFkcyBvciBtb2RpZmllcyB0aGUgc2FtZSBtZW1vcnkNCj4gICAgID4gbG9jYXRpb24u DQo+ICAgICA+ICAgICA+ICAgICA+DQo+ICAgICA+ICAgICA+ICAgICA+IDI1IFRoZSBleGVjdXRp b24gb2YgYSBwcm9ncmFtIGNvbnRhaW5zIGEgZGF0YSByYWNlIGlmIGl0IGNvbnRhaW5zDQo+IHR3 bw0KPiAgICAgPiBjb25mbGljdGluZyBhY3Rpb25zIGluIGRpZmZlcmVudCB0aHJlYWRzLCBhdCBs ZWFzdCBvbmUgb2Ygd2hpY2ggaXMgbm90IGF0b21pYywNCj4gICAgID4gYW5kIG5laXRoZXIgaGFw cGVucyBiZWZvcmUgdGhlIG90aGVyLiBBbnkgc3VjaCBkYXRhIHJhY2UgcmVzdWx0cyBpbg0KPiAg ICAgPiB1bmRlZmluZWQgYmVoYXZpb3IuDQo+ICAgICA+ICAgICA+DQo+ICAgICA+ICAgICA+ICAg ICBJTU8sIEJvdGggY29uZGl0aW9uIHdpbGwgc2F0aXNmeSBpZiB0aGUgdmFyaWFibGUgaXMgdm9s YXRpbGUgYW5kIDMyYml0DQo+IHJlYWQNCj4gICAgID4gd2lsbCBhdG9taWMNCj4gICAgID4gICAg ID4gICAgIGZvciAzMmIgYW5kIDY0YiBtYWNoaW5lcy4gSWYgbm90LCB0aGUgcHJvYmxlbSBwZXJz aXN0IGZvciBnZW5lcmljDQo+IGNhc2UNCj4gICAgID4gICAgID4gICAgIGFzIHdlbGwobGliL2xp YnJ0ZV9yaW5nL3J0ZV9yaW5nX2dlbmVyaWMuaCkNCj4gICAgID4gICAgID4gVGhlIHJlYWQgZnJv bSBhIHZvbGF0aWxlIG9iamVjdCBpcyBub3QgYW4gYXRvbWljIGFjY2VzcyBwZXIgdGhlIEMxMQ0K PiBzcGVjLiBJdA0KPiAgICAgPiBqdXN0IGhhcHBlbnMgdG8NCj4gICAgID4gICAgID4gYmUgdHJh bnNsYXRlZCB0byBhbiBpbnN0cnVjdGlvbiAob24geDg2LTY0IGFuZCBBQXJjaDY0L0E2NCkgdGhh dA0KPiAgICAgPiBpbXBsZW1lbnRzIGFuIGF0b21pYyBsb2FkLg0KPiAgICAgPiAgICAgPiBJIGRv bid0IHRoaW5rIGFueSBjb21waWxlciB3b3VsZCBjaGFuZ2UgdGhpcyBjb2RlIGdlbmVyYXRpb24g YW5kDQo+ICAgICA+IHN1ZGRlbmx5IGdlbmVyYXRlIHNvbWUNCj4gICAgID4gICAgID4gbm9uLWF0 b21pYyBsb2FkIGluc3RydWN0aW9uIGZvciBhIHByb2dyYW0gdGhhdCAqb25seSogdXNlcyB2b2xh dGlsZSB0bw0KPiBkbw0KPiAgICAgPiAiYXRvbWljIiBhY2Nlc3Nlcy4NCj4gICAgID4gICAgID4g QnV0IGEgZnV0dXJlIGNvbXBpbGVyIGNvdWxkIGRldGVjdCB0aGUgbWl4IG9mIGF0b21pYyBhbmQg bm9uLWF0b21pYw0KPiAgICAgPiBhY2Nlc3NlcyBhbmQgbWFyayB0aGlzDQo+ICAgICA+ICAgICA+ IGV4cHJlc3Npb24gYXMgY2F1c2luZyB1bmRlZmluZWQgYmVoYXZpb3VyIGFuZCB0aGF0IHdvdWxk IGhhdmUNCj4gICAgID4gY29uc2VxdWVuY2VzIGZvciBjb2RlIGdlbmVyYXRpb24uDQo+ICAgICA+ ICAgICA+DQo+ICAgICA+ICAgICA+DQo+ICAgICA+ICAgICA+ICAgICBJIGFncmVlIHdpdGggeW91 IG9uIEMxMSBtZW1vcnkgbW9kZWwgc2VtYW50aWNzIHVzYWdlLiBUaGUNCj4gcmVhc29uDQo+ICAg ICA+IHdoeSBJDQo+ICAgICA+ICAgICA+ICAgICBwcm9wb3NlIG5hbWUgZm9yIHRoZSBmaWxlIGFz IHJ0ZV9yaW5nX2MxMV9tZW0uaCBhcyBEUERLIGl0IHNlbGYNCj4gZGlkDQo+ICAgICA+IG5vdA0K PiAgICAgPiAgICAgPiAgICAgaGFkIGRlZmluaXRpb25zIGZvciBsb2FkIGFjcXVpcmUgYW5kIHN0 b3JlIHJlbGVhc2Ugc2VtYW50aWNzLg0KPiAgICAgPiAgICAgPiAgICAgSSB3YXMgbG9va2luZyBm b3IgdGFraW5nIGxvYWQgYWNxdWlyZSBhbmQgc3RvcmUgcmVsZWFzZSBzZW1hbnRpY3MNCj4gICAg ID4gICAgID4gICAgIGZyb20gQzExIGluc3RlYWQgb2YgY3JlYXRpbmcgbmV3IEFQSSBsaWtlIExp bnV4IGtlcm5lbCBmb3INCj4gRnJlZUJTRChBUElzDQo+ICAgICA+ICAgICA+ICAgICBsaWtlICBh dG9taWNfbG9hZF9hY3FfMzIoKSwgYXRvbWljX3N0b3JlX3JlbF8zMigpKS4gSWYgdGhlIGZpbGUg bmFtZQ0KPiBpcw0KPiAgICAgPiB5b3VyDQo+ICAgICA+ICAgICA+ICAgICBjb25jZXJuIHRoZW4g d2UgY291bGQgY3JlYXRlIG5ldyBhYnN0cmFjdGlvbnMgYXMgd2VsbC4gVGhhdCB3b3VsZA0KPiAg ICAgPiBoZWxwDQo+ICAgICA+ICAgICA+ICAgICBleGl0aW5nIEtOSSBwcm9ibGVtIGFzIHdlbGwu DQo+ICAgICA+ICAgICA+IEkgYXBwcmVjaWF0ZSB5b3VyIGVtYnJhY2Ugb2YgdGhlIEMxMSBtZW1v cnkgbW9kZWwuIEkgdGhpbmsgaXQgaXMNCj4gYmV0dGVyDQo+ICAgICA+IGZvciBkZXNjcmliaW5n DQo+ICAgICA+ICAgICA+IChib3RoIHRvIHRoZSBjb21waWxlciBhbmQgdG8gaHVtYW5zKSB3aGlj aCBhbmQgaG93IG9iamVjdHMgYXJlDQo+IHVzZWQNCj4gICAgID4gZm9yIHN5bmNocm9uaXNhdGlv bi4NCj4gICAgID4gICAgID4NCj4gICAgID4gICAgID4gSG93ZXZlciwgSSBkb24ndCB0aGluayBh biBBUEkgYXMgeW91IHN1Z2dlc3QgKGFuZCBvdGhlcnMgaGF2ZQ0KPiBzdWdnZXN0ZWQNCj4gICAg ID4gYmVmb3JlLCBlLmcuIGFzDQo+ICAgICA+ICAgICA+IGRvbmUgaW4gT0RQKSBpcyBhIGdvb2Qg aWRlYS4gVGhlcmUgaXMgYW4gaW5maW5pdGUgYW1vdW50IG9mIHBvc3NpYmxlDQo+IGJhc2UNCj4g ICAgID4gdHlwZXMsIGFuDQo+ICAgICA+ICAgICA+IGluY3JlYXNpbmcgbnVtYmVyIG9mIG9wZXJh dGlvbnMgYW5kIGEgYnVuY2ggb2YgZGlmZmVyZW50IG1lbW9yeQ0KPiAgICAgPiBvcmRlcmluZ3Ms IGEgImNvbXBsZXRlIg0KPiAgICAgPiAgICAgPiBBUEkgd291bGQgYmUgdmVyeSBsYXJnZSBhbmQg ZGlmZmljdWx0IHRvIHRlc3QsIGFuZCBtb3N0IG1lbWJlcnMgb2YNCj4gdGhlDQo+ICAgICA+IEFQ SSB3b3VsZCBuZXZlciBiZSB1c2VkLg0KPiAgICAgPiAgICAgPiBHQ0MgYW5kIENsYW5nIGJvdGgg c3VwcG9ydCB0aGUgX19hdG9taWMgaW50cmluc2ljcy4gVGhpcyBBUEkgYXZvaWRzDQo+IHRoZQ0K PiAgICAgPiBwcm9ibGVtcyBJDQo+ICAgICA+ICAgICA+IGRlc2NyaWJlZCBhYm92ZS4gT3Igd2Ug Y291bGQgdXNlIHRoZSBvZmZpY2lhbCBDMTEgc3ludGF4DQo+IChzdGRhdG9taWMuaCkuDQo+ICAg ICA+IEJ1dCB0aGVuIHdlDQo+ICAgICA+ICAgICA+IGhhdmUgdGhlIHByb2JsZW0gd2l0aCB1c2lu ZyBwcmUtQzExIGNvbXBpbGVycy4uLg0KPiAgICAgPg0KPiAgICAgPiAgICAgSSBoYXZlIG5vIG9i amVjdGlvbiwgaWYgZXZlcnlvbmUgYWdyZWVzIHRvIG1vdmUgQzExIG1lbW9yeSBtb2RlbA0KPiAg ICAgPiAgICAgd2l0aCBfX2F0b21pYyBpbnRyaW5zaWNzLiBCdXQgaWYgd2UgbmVlZCB0byBrZWVw IGJvdGggaGF2ZSB0aGVuDQo+ICAgICA+ICAgICBhdG9taWNfbG9hZF9hY3FfMzIoKSBraW5kIG9m IEFQSSBtYWtlIHNlbnNlLg0KPiAgICAgPg0KPiAgICAgPg0KPiAgICAgPiAgICAgPg0KPiAgICAg PiAgICAgPg0KPiAgICAgPiAgICAgPg0KPiAgICAgPiAgICAgPg0KPiAgICAgPiAgICAgPiAgICAg SSB0aGluaywgY3VycmVudGx5IGl0IG1peGVkIHVzYWdlIGJlY2F1c2UsIHRoZSBzYW1lIHZhcmlh YmxlDQo+IGRlY2xhcmF0aW9uDQo+ICAgICA+ICAgICA+ICAgICB1c2VkIGZvciBDMTEgdnMgbm9u IEMxMSB1c2FnZS5JZGVhbGx5IHdlIHdvbnQgbmVlZCAidm9sYXRpbGUiIGZvcg0KPiBDMTENCj4g ICAgID4gICAgID4gICAgIGNhc2UuIEVpdGhlciB3ZSBuZWVkIHRvIGNoYW5nZSBvbmx5IHRvIEMx MSBtb2RlIE9SIGhhdmUgQVBJcyBmb3INCj4gICAgID4gICAgID4gICAgIGF0b21pY19sb2FkX2Fj cV8oKSBhbmQgYXRvbWljX3N0b3JlX3JlbF8oKSB0byBhbGxvdyBib3RoIG1vZGVscw0KPiBsaWtl DQo+ICAgICA+ICAgICA+ICAgICBMaW51eCBrZXJuZWwgYW5kIEZyZWVCU0QuDQo+ICAgICA+ICAg ICA+DQo+ICAgICA+ICAgICA+ICAgICA+DQo+ICAgICA+ICAgICA+ICAgICA+IC0tIE9sYQ0KPiAg ICAgPiAgICAgPiAgICAgPg0KPiAgICAgPiAgICAgPiAgICAgPg0KPiAgICAgPiAgICAgPiAgICAg Pg0KPiAgICAgPiAgICAgPg0KPiAgICAgPiAgICAgPg0KPiAgICAgPg0KPiANCj4gDQoNCg==