From owner-freebsd-wireless@FreeBSD.ORG Fri Oct 7 21:02:19 2011 Return-Path: Delivered-To: freebsd-wireless@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 47B891065670; Fri, 7 Oct 2011 21:02:19 +0000 (UTC) (envelope-from emartinez@kbcnetworks.com) Received: from TX2EHSOBE003.bigfish.com (tx2ehsobe002.messaging.microsoft.com [65.55.88.12]) by mx1.freebsd.org (Postfix) with ESMTP id F22DB8FC0C; Fri, 7 Oct 2011 21:02:18 +0000 (UTC) Received: from mail182-tx2-R.bigfish.com (10.9.14.250) by TX2EHSOBE003.bigfish.com (10.9.40.23) with Microsoft SMTP Server id 14.1.225.22; Fri, 7 Oct 2011 21:02:18 +0000 Received: from mail182-tx2 (localhost.localdomain [127.0.0.1]) by mail182-tx2-R.bigfish.com (Postfix) with ESMTP id 056A1E282F4; Fri, 7 Oct 2011 21:02:18 +0000 (UTC) X-SpamScore: 0 X-BigFish: VPS0(zzzz1202hzzz2fh2a8h668h839h944h61h) X-Spam-TCS-SCL: 0:0 X-Forefront-Antispam-Report: CIP:65.55.171.153; KIP:(null); UIP:(null); IPVD:NLI; H:VA3DIAHUB038.RED001.local; RD:smtp801.microsoftonline.com; EFVD:NLI Received-SPF: pass (mail182-tx2: domain of kbcnetworks.com designates 65.55.171.153 as permitted sender) client-ip=65.55.171.153; envelope-from=emartinez@kbcnetworks.com; helo=VA3DIAHUB038.RED001.local ; RED001.local ; Received: from mail182-tx2 (localhost.localdomain [127.0.0.1]) by mail182-tx2 (MessageSwitch) id 1318021337540627_27051; Fri, 7 Oct 2011 21:02:17 +0000 (UTC) Received: from TX2EHSMHS031.bigfish.com (unknown [10.9.14.241]) by mail182-tx2.bigfish.com (Postfix) with ESMTP id 78F381010055; Fri, 7 Oct 2011 21:02:17 +0000 (UTC) Received: from VA3DIAHUB038.RED001.local (65.55.171.153) by TX2EHSMHS031.bigfish.com (10.9.99.131) with Microsoft SMTP Server (TLS) id 14.1.225.22; Fri, 7 Oct 2011 21:02:16 +0000 Received: from VA3DIAXVS881.RED001.local ([10.8.235.7]) by VA3DIAHUB038.RED001.local ([10.32.21.112]) with mapi; Fri, 7 Oct 2011 14:02:03 -0700 From: Edgar Martinez To: Adrian Chadd Date: Fri, 7 Oct 2011 14:02:01 -0700 Thread-Topic: LOR - COM LOCK Thread-Index: Acx/FBWAPXpGOwbHQ++nSVkqu6+4ywGICKUA Message-ID: <957EB052144AA64AB39F7AB268783201022FA3E272@VA3DIAXVS881.RED001.local> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: acceptlanguage: en-US Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: kbcnetworks.com Cc: "freebsd-wireless@freebsd.org" Subject: LOR - COM LOCK X-BeenThere: freebsd-wireless@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "Discussions of 802.11 stack, tools device driver development." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 07 Oct 2011 21:02:19 -0000 SmFuICAxIDAwOjAwOjM2IHdsYW5tb246IChSVE1fSUVFRTgwMjExX0FTU09DKSBbd2xhbjNdIFsw MDo4MDo4MTo4ZDo5ZDo4M10NCmF0aDE6IHN0dWNrIGJlYWNvbjsgcmVzZXR0aW5nIChibWlzcyBj b3VudCA0KSANCkphbiAgMSAwMDowMTozMiB3bGFubW9uOiAoUlRNX0lFRUU4MDIxMV9KT0lOKSBb d2xhbjFdIFswMDpjMDpjMTpjYjo2YzpjMl0gDQpFeHBlbnNpdmUgdGltZW91dCg5KSBmdW5jdGlv bjogMHhjMDVhYTE1MCgweGM1OGMzYjgwKSAwLjAxMzQ4ODE4OCBzIA0KSmFuICAxIDAwOjE2OjQ1 IHdsYW5tb246IChSVE1fSUVFRTgwMjExX0FTU09DKSBbd2xhbjJdIFswMDpjMDpjMTpjYjo2Yzpj M10gDQpsb2NrIG9yZGVyIHJldmVyc2FsOg0KIDFzdCAweGM1OTEyNmMwIGF0aDFfbm9kZV9sb2Nr IChhdGgxX25vZGVfbG9jaykgQCAvdXNyL3NyYy9zeXMvbmV0ODAyMTEvaWVlZTgwMjExX2lvY3Rs LmM6MTMyNg0KIDJuZCAweGM1OTExMDE0IGF0aDFfY29tX2xvY2sgKGF0aDFfY29tX2xvY2spIEAg L3Vzci9zcmMvc3lzL25ldDgwMjExL2llZWU4MDIxMV9ub2RlLmM6MjUxMA0KS0RCOiBzdGFjayBi YWNrdHJhY2U6DQpYX2RiX3N5bV9udW1hcmdzKGMwNzljNzhjKSBhdCAweGMwNDdiYjU1ID0gWF9k Yl9zeW1fbnVtYXJncysweDEzNQ0Ka2RiX2JhY2t0cmFjZShjMDk2NjEzOCxjNTgxMDMyMCxjZWFk Mjk0YyxjMDViMzk0MiwwLC4uLikgYXQgMHhjMDU5ZjZiOCA9IGtkYl9iYWNrdHJhY2UrMHgyOA0K d2l0bmVzc19kaXNwbGF5X3NwaW5sb2NrKDAsMCxjMDk2NjEzOCxjMDk2NjEzYyxjMDgwMDc5OCwu Li4pIGF0IDB4YzA1YjJhOGUgPSB3aXRuZXNzX2Rpc3BsYXlfc3BpbmxvY2srMHg2ZQ0Kd2l0bmVz c19jaGVja29yZGVyKGM1OTExMDE0LDksYzA3YjcyNDYsOWNlLDAsLi4uKSBhdCAweGMwNWIzOTQy ID0gd2l0bmVzc19jaGVja29yZGVyKzB4NmYyDQpfbXR4X2xvY2tfZmxhZ3MoYzU5MTEwMTQsMCxj MDdiNzI0Niw5Y2UsYzU5MTEwMTQsLi4uKSBhdCAweGMwNTY3YzgyID0gX210eF9sb2NrX2ZsYWdz KzB4ODINCmllZWU4MDIxMV9ub2RlX2xlYXZlKGM2MWU0MDAwKSBhdCAweGMwNjU3MTJiID0gaWVl ZTgwMjExX25vZGVfbGVhdmUrMHg4Yg0KaWVlZTgwMjExX3BhcnNlX2JlYWNvbihjZWFkMjlkMCxj NjFlNDAwMCxjZWFkMjlmYSxjNTkxMjZhYyxjNWE2YjAwMCwuLi4pIGF0IDB4YzA2NGRiM2IgPSBp ZWVlODAyMTFfcGFyc2VfYmVhY29uKzB4MjJjYg0KaWVlZTgwMjExX3BhcnNlX2JlYWNvbigyKSBh dCAweGMwNjRlNmRlID0gaWVlZTgwMjExX3BhcnNlX2JlYWNvbisweDJlNmUNCmllZWU4MDIxMV9w YXJzZV9iZWFjb24oYzVhNDBhMTQsMCxjNWE2YjAwMCxjMDcwY2M2NixjZWFkMmE1NCwuLi4pIGF0 IDB4YzA2NGVmZWQgPSBpZWVlODAyMTFfcGFyc2VfYmVhY29uKzB4Mzc3ZA0KaWVlZTgwMjExX3Bh cnNlX2JlYWNvbihjNTkxMTAwMCxjMDdhY2QxNCxjMDc4ZTQ1YSxjNjBiMDFhMCxjNWFiZTMyMCwu Li4pIGF0IDB4YzA2NGY3YTMgPSBpZWVlODAyMTFfcGFyc2VfYmVhY29uKzB4M2YzMw0KaWVlZTgw MjExX2lvY3RsKGM1OTRkYzAwLDgwMWM2OWVhLGM1YWJlMzIwKSBhdCAweGMwNjUxMjYzID0gaWVl ZTgwMjExX2lvY3RsKzB4MjczDQppbl9jb250cm9sKGM2MGIwMWEwLDgwMWM2OWVhLGM1YWJlMzIw LGM1OTRkYzAwLGM1YTBkMmUwLC4uLikgYXQgMHhjMDY3Mzc1NSA9IGluX2NvbnRyb2wrMHgxYjUN CmlmaW9jdGwoYzYwYjAxYTAsODAxYzY5ZWEsYzVhYmUzMjAsYzVhMGQyZTApIGF0IDB4YzA2MTY4 MjQgPSBpZmlvY3RsKzB4MTRhNA0Kc29vX2lvY3RsKGM1YTMyNmM4LDgwMWM2OWVhLGM1YWJlMzIw LGM1ODQ2ODAwLGM1YTBkMmUwKSBhdCAweGMwNWJhYTczID0gc29vX2lvY3RsKzB4MzQzDQprZXJu X2lvY3RsKGM1YTBkMmUwLDgsODAxYzY5ZWEsYzVhYmUzMjApIGF0IDB4YzA1YjViY2UgPSBrZXJu X2lvY3RsKzB4MWFlDQpzeXNfaW9jdGwoYzVhMGQyZTAsY2VhZDJjZWMsMjgyLDAsMCwuLi4pIGF0 IDB4YzA1YjVkMTUgPSBzeXNfaW9jdGwrMHgxMDUNCnN5c2NhbGwoY2VhZDJkMjgpIGF0IDB4YzA3 M2ZmZmIgPSBzeXNjYWxsKzB4MjFiDQpYaW50MHg4MF9zeXNjYWxsKCkgYXQgMHhjMDcyZTMxMSA9 IFhpbnQweDgwX3N5c2NhbGwrMHgyMQ0KLS0tIHN5c2NhbGwgKDU0LCBGcmVlQlNEIEVMRjMyLCBz eXNfaW9jdGwpLCBlaXAgPSAweDI4MjI2YzU3LCBlc3AgPSAweGJmYmZlYjZjLCBlYnAgPSAweGJm YmZlYmI4IC0tLSBKYW4gIDEgMDA6MjA6MTcgd2xhbm1vbjogKFJUTV9JRUVFODAyMTFfTEVBVkUp IFt3bGFuMV0gWzAwOmMwOmMxOmNiOjZjOmMyXSBzdHJheSBpcnE3DQphdGgxOiBzdHVjayBiZWFj b247IHJlc2V0dGluZyAoYm1pc3MgY291bnQgNCkNCmF0aDE6IHN0dWNrIGJlYWNvbjsgcmVzZXR0 aW5nIChibWlzcyBjb3VudCA0KQ0KYXRoMTogc3R1Y2sgYmVhY29uOyByZXNldHRpbmcgKGJtaXNz IGNvdW50IDQpDQphdGgxOiBzdHVjayBiZWFjb247IHJlc2V0dGluZyAoYm1pc3MgY291bnQgNCkg c3RyYXkgaXJxNw0KYXRoMTogc3R1Y2sgYmVhY29uOyByZXNldHRpbmcgKGJtaXNzIGNvdW50IDE0 OCkNCmF0aDE6IHN0dWNrIGJlYWNvbjsgcmVzZXR0aW5nIChibWlzcyBjb3VudCA0KQ0KYXRoMTog c3R1Y2sgYmVhY29uOyByZXNldHRpbmcgKGJtaXNzIGNvdW50IDQpDQphdGgxOiBzdHVjayBiZWFj b247IHJlc2V0dGluZyAoYm1pc3MgY291bnQgNCkNCmF0aDE6IHN0dWNrIGJlYWNvbjsgcmVzZXR0 aW5nIChibWlzcyBjb3VudCAyNDIpIHN0cmF5IGlycTcNCmF0aDE6IHN0dWNrIGJlYWNvbjsgcmVz ZXR0aW5nIChibWlzcyBjb3VudCA0KQ0KYXRoMTogc3R1Y2sgYmVhY29uOyByZXNldHRpbmcgKGJt aXNzIGNvdW50IDQpDQoNCjB4YzA2NTcxMmIgaXMgaW4gaWVlZTgwMjExX25vZGVfbGVhdmUgKC91 c3Ivc3JjL3N5cy9uZXQ4MDIxMS9pZWVlODAyMTFfbm9kZS5jOjI1MTEpLg0KMjUwNiAgICAgICAg ICAgICAqLw0KMjUwNyAgICAgICAgICAgIGlmICh2YXAtPml2X2F1dGgtPmlhX25vZGVfbGVhdmUg IT0gTlVMTCkNCjI1MDggICAgICAgICAgICAgICAgICAgIHZhcC0+aXZfYXV0aC0+aWFfbm9kZV9s ZWF2ZShuaSk7DQoyNTA5DQoyNTEwICAgICAgICAgICAgSUVFRTgwMjExX0xPQ0soaWMpOw0KMjUx MSAgICAgICAgICAgIElFRUU4MDIxMV9BSURfQ0xSKHZhcCwgbmktPm5pX2Fzc29jaWQpOw0KMjUx MiAgICAgICAgICAgIG5pLT5uaV9hc3NvY2lkID0gMDsNCjI1MTMgICAgICAgICAgICB2YXAtPml2 X3N0YV9hc3NvYy0tOw0KMjUxNCAgICAgICAgICAgIGljLT5pY19zdGFfYXNzb2MtLTsNCjI1MTUN Cg0KMHhjMDY0ZGIzYiBpcyBpbiBkb21sbWUgKC91c3Ivc3JjL3N5cy9uZXQ4MDIxMS9pZWVlODAy MTFfaW9jdGwuYzoxMzEyKS4NCjEzMDcgICAgICAgICAgICAgICAgICAgICAgICBtb3AtPnJlYXNv bik7DQoxMzA4ICAgICAgICAgICAgfSBlbHNlIHsNCjEzMDkgICAgICAgICAgICAgICAgICAgIElF RUU4MDIxMV9TRU5EX01HTVQobmksIElFRUU4MDIxMV9GQzBfU1VCVFlQRV9ESVNBU1NPQywNCjEz MTAgICAgICAgICAgICAgICAgICAgICAgICBtb3AtPnJlYXNvbik7DQoxMzExICAgICAgICAgICAg fQ0KMTMxMiAgICAgICAgICAgIGllZWU4MDIxMV9ub2RlX2xlYXZlKG5pKTsNCjEzMTMgICAgfQ0K MTMxNA0KMTMxNSAgICBzdGF0aWMgaW50DQoxMzE2ICAgIHNldG1sbWVfZHJvcHN0YShzdHJ1Y3Qg aWVlZTgwMjExdmFwICp2YXAsDQoNCjB4YzA2NGU2ZGUgaXMgaW4gc2V0bWxtZV9jb21tb24gKC91 c3Ivc3JjL3N5cy9uZXQ4MDIxMS9pZWVlODAyMTFfaW9jdGwuYzoxMzMwKS4NCjEzMjUgICAgICAg ICAgICBpZiAoIUlFRUU4MDIxMV9BRERSX0VRKG1hYywgaWMtPmljX2lmcC0+aWZfYnJvYWRjYXN0 YWRkcikpIHsNCjEzMjYgICAgICAgICAgICAgICAgICAgIElFRUU4MDIxMV9OT0RFX0xPQ0sobnQp Ow0KMTMyNyAgICAgICAgICAgICAgICAgICAgbmkgPSBpZWVlODAyMTFfZmluZF9ub2RlX2xvY2tl ZChudCwgbWFjKTsNCjEzMjggICAgICAgICAgICAgICAgICAgIGlmIChuaSAhPSBOVUxMKSB7DQox MzI5ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvbWxtZShtbG1lb3AsIG5pKTsNCjEzMzAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgaWVlZTgwMjExX2ZyZWVfbm9kZShuaSk7DQoxMzMx ICAgICAgICAgICAgICAgICAgICB9IGVsc2UNCjEzMzIgICAgICAgICAgICAgICAgICAgICAgICAg ICAgZXJyb3IgPSBFTk9FTlQ7DQoxMzMzICAgICAgICAgICAgICAgICAgICBJRUVFODAyMTFfTk9E RV9VTkxPQ0sobnQpOw0KMTMzNCAgICAgICAgICAgIH0gZWxzZSB7DQoNCjB4YzA2NGVmZWQgaXMg aW4gaWVlZTgwMjExX2lvY3RsX3NldG1sbWUgKC91c3Ivc3JjL3N5cy9uZXQ4MDIxMS9pZWVlODAy MTFfaW9jdGwuYzoxNTUwKS4NCjE1NDUgICAgICAgICAgICAgICAgICAgICAgICB2YXAtPml2X2Rl c19zc2lkWzBdLmxlbiwgdmFwLT5pdl9kZXNfc3NpZFswXS5zc2lkKTsNCjE1NDYgICAgICAgICAg ICBlbHNlIGlmIChtbG1lLmltX29wID09IElFRUU4MDIxMV9NTE1FX0FTU09DKQ0KMTU0NyAgICAg ICAgICAgICAgICAgICAgcmV0dXJuIHNldG1sbWVfYXNzb2NfYWRob2ModmFwLCBtbG1lLmltX21h Y2FkZHIsDQoxNTQ4ICAgICAgICAgICAgICAgICAgICAgICAgbWxtZS5pbV9zc2lkX2xlbiwgbWxt ZS5pbV9zc2lkKTsNCjE1NDkgICAgICAgICAgICBlbHNlDQoxNTUwICAgICAgICAgICAgICAgICAg ICByZXR1cm4gc2V0bWxtZV9jb21tb24odmFwLCBtbG1lLmltX29wLA0KMTU1MSAgICAgICAgICAg ICAgICAgICAgICAgIG1sbWUuaW1fbWFjYWRkciwgbWxtZS5pbV9yZWFzb24pOw0KMTU1MiAgICB9 DQoxNTUzDQoxNTU0ICAgIHN0YXRpYyBfX25vaW5saW5lIGludA0KDQoweGMwNjRmN2EzIGlzIGlu IGllZWU4MDIxMV9pb2N0bF9zZXQ4MDIxMSAoL3Vzci9zcmMvc3lzL25ldDgwMjExL2llZWU4MDIx MV9pb2N0bC5jOjI3NjkpLg0KMjc2NCAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQoyNzY1ICAg ICAgICAgICAgY2FzZSBJRUVFODAyMTFfSU9DX0RFTEtFWToNCjI3NjYgICAgICAgICAgICAgICAg ICAgIGVycm9yID0gaWVlZTgwMjExX2lvY3RsX2RlbGtleSh2YXAsIGlyZXEpOw0KMjc2NyAgICAg ICAgICAgICAgICAgICAgYnJlYWs7DQoyNzY4ICAgICAgICAgICAgY2FzZSBJRUVFODAyMTFfSU9D X01MTUU6DQoyNzY5ICAgICAgICAgICAgICAgICAgICBlcnJvciA9IGllZWU4MDIxMV9pb2N0bF9z ZXRtbG1lKHZhcCwgaXJlcSk7DQoyNzcwICAgICAgICAgICAgICAgICAgICBicmVhazsNCjI3NzEg ICAgICAgICAgICBjYXNlIElFRUU4MDIxMV9JT0NfQ09VTlRFUk1FQVNVUkVTOg0KMjc3MiAgICAg ICAgICAgICAgICAgICAgaWYgKGlyZXEtPmlfdmFsKSB7DQoyNzczICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGlmICgodmFwLT5pdl9mbGFncyAmIElFRUU4MDIxMV9GX1dQQSkgPT0gMCkNCg0K MHhjMDY1MTI2MyBpcyBpbiBpZWVlODAyMTFfaW9jdGwgKC91c3Ivc3JjL3N5cy9uZXQ4MDIxMS9p ZWVlODAyMTFfaW9jdGwuYzozMzIyKS4NCjMzMTcgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAoc3RydWN0IGllZWU4MDIxMXJlcSAqKSBkYXRhKTsNCjMzMTggICAgICAgICAgICAg ICAgICAgIGJyZWFrOw0KMzMxOSAgICAgICAgICAgIGNhc2UgU0lPQ1M4MDIxMToNCjMzMjAgICAg ICAgICAgICAgICAgICAgIGVycm9yID0gcHJpdl9jaGVjayhjdXJ0aHJlYWQsIFBSSVZfTkVUODAy MTFfTUFOQUdFKTsNCjMzMjEgICAgICAgICAgICAgICAgICAgIGlmIChlcnJvciA9PSAwKQ0KMzMy MiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvciA9IGllZWU4MDIxMV9pb2N0bF9zZXQ4 MDIxMSh2YXAsIGNtZCwNCjMzMjMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIChzdHJ1Y3QgaWVlZTgwMjExcmVxICopIGRhdGEpOw0KMzMyNCAgICAgICAgICAgICAg ICAgICAgYnJlYWs7DQozMzI1ICAgICAgICAgICAgY2FzZSBTSU9DRzgwMjExU1RBVFM6DQozMzI2 ICAgICAgICAgICAgICAgICAgICBpZnIgPSAoc3RydWN0IGlmcmVxICopZGF0YTsNCg0KMHhjMDY3 Mzc1NSBpcyBpbiBpbl9jb250cm9sICgvdXNyL3NyYy9zeXMvbmV0aW5ldC9pbi5jOjI5MykuDQoy ODggICAgICAgICAgICAgICAgICAgICByZXR1cm4gaW5fbGlmYWRkcl9pb2N0bChzbywgY21kLCBk YXRhLCBpZnAsIHRkKTsNCjI4OQ0KMjkwICAgICAgICAgICAgIGRlZmF1bHQ6DQoyOTEgICAgICAg ICAgICAgICAgICAgICBpZiAoaWZwID09IE5VTEwgfHwgaWZwLT5pZl9pb2N0bCA9PSBOVUxMKQ0K MjkyICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKEVPUE5PVFNVUFApOw0KMjkz ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICgoKmlmcC0+aWZfaW9jdGwpKGlmcCwgY21kLCBk YXRhKSk7DQoyOTQgICAgICAgICAgICAgfQ0KMjk1DQoyOTYgICAgICAgICAgICAgaWYgKGlmcCA9 PSBOVUxMKQ0KMjk3ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChFQUREUk5PVEFWQUlMKTsN Cg0KMHhjMDYxNjgyNCBpcyBpbiBpZmlvY3RsICgvdXNyL3NyYy9zeXMvbmV0L2lmLmM6MjU1MCku DQoyNTQ1ICAgICAgICAgICAgICAgICAgICBpZl9yZWxlKGlmcCk7DQoyNTQ2ICAgICAgICAgICAg ICAgICAgICBDVVJWTkVUX1JFU1RPUkUoKTsNCjI1NDcgICAgICAgICAgICAgICAgICAgIHJldHVy biAoRU9QTk9UU1VQUCk7DQoyNTQ4ICAgICAgICAgICAgfQ0KMjU0OSAgICAjaWZuZGVmIENPTVBB VF80Mw0KMjU1MCAgICAgICAgICAgIGVycm9yID0gKCgqc28tPnNvX3Byb3RvLT5wcl91c3JyZXFz LT5wcnVfY29udHJvbCkoc28sIGNtZCwNCjI1NTEgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLA0KMjU1MiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGlmcCwgdGQpKTsNCjI1NTMgICAgICAgICAgICBpZiAoZXJyb3IgPT0gRU9QTk9UU1VQ UCAmJiBpZnAgIT0gTlVMTCAmJiBpZnAtPmlmX2lvY3RsICE9IE5VTEwpDQoyNTU0ICAgICAgICAg ICAgICAgICAgICBlcnJvciA9ICgqaWZwLT5pZl9pb2N0bCkoaWZwLCBjbWQsIGRhdGEpOw0KDQow eGMwNWJhYTczIGlzIGluIHNvb19pb2N0bCAoL3Vzci9zcmMvc3lzL2tlcm4vc3lzX3NvY2tldC5j OjIxMSkuDQoyMDYgICAgICAgICAgICAgICAgICAgICAgKiBJbnRlcmZhY2Uvcm91dGluZy9wcm90 b2NvbCBzcGVjaWZpYyBpb2N0bHM6IGludGVyZmFjZSBhbmQNCjIwNyAgICAgICAgICAgICAgICAg ICAgICAqIHJvdXRpbmcgaW9jdGxzIHNob3VsZCBoYXZlIGEgZGlmZmVyZW50IGVudHJ5IHNpbmNl IGENCjIwOCAgICAgICAgICAgICAgICAgICAgICAqIHNvY2tldCBpcyB1bm5lY2Vzc2FyeS4NCjIw OSAgICAgICAgICAgICAgICAgICAgICAqLw0KMjEwICAgICAgICAgICAgICAgICAgICAgaWYgKElP Q0dST1VQKGNtZCkgPT0gJ2knKQ0KMjExICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJv ciA9IGlmaW9jdGwoc28sIGNtZCwgZGF0YSwgdGQpOw0KMjEyICAgICAgICAgICAgICAgICAgICAg ZWxzZSBpZiAoSU9DR1JPVVAoY21kKSA9PSAncicpIHsNCjIxMyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgQ1VSVk5FVF9TRVQoc28tPnNvX3ZuZXQpOw0KMjE0ICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBlcnJvciA9IHJ0aW9jdGxfZmliKGNtZCwgZGF0YSwgc28tPnNvX2ZpYm51bSk7 DQoyMTUgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENVUlZORVRfUkVTVE9SRSgpOw0KDQow eGMwNWI1YmNlIGlzIGluIGtlcm5faW9jdGwgKGZpbGUuaDoyNzgpLg0KMjczICAgICBzdGF0aWMg X19pbmxpbmUgaW50DQoyNzQgICAgIGZvX2lvY3RsKHN0cnVjdCBmaWxlICpmcCwgdV9sb25nIGNv bSwgdm9pZCAqZGF0YSwgc3RydWN0IHVjcmVkICphY3RpdmVfY3JlZCwNCjI3NSAgICAgICAgIHN0 cnVjdCB0aHJlYWQgKnRkKQ0KMjc2ICAgICB7DQoyNzcNCjI3OCAgICAgICAgICAgICByZXR1cm4g KCgqZnAtPmZfb3BzLT5mb19pb2N0bCkoZnAsIGNvbSwgZGF0YSwgYWN0aXZlX2NyZWQsIHRkKSk7 DQoyNzkgICAgIH0NCjI4MA0KMjgxICAgICBzdGF0aWMgX19pbmxpbmUgaW50DQoyODIgICAgIGZv X3BvbGwoc3RydWN0IGZpbGUgKmZwLCBpbnQgZXZlbnRzLCBzdHJ1Y3QgdWNyZWQgKmFjdGl2ZV9j cmVkLA0KDQoweGMwNWI1ZDE1IGlzIGluIHN5c19pb2N0bCAoL3Vzci9zcmMvc3lzL2tlcm4vc3lz X2dlbmVyaWMuYzo2ODEpLg0KNjc2ICAgICAgICAgICAgICAgICAgICAgICogZ2V0cyBiYWNrIHNv bWV0aGluZyBkZXRlcm1pbmlzdGljLg0KNjc3ICAgICAgICAgICAgICAgICAgICAgICovDQo2Nzgg ICAgICAgICAgICAgICAgICAgICBiemVybyhkYXRhLCBzaXplKTsNCjY3OSAgICAgICAgICAgICB9 DQo2ODANCjY4MSAgICAgICAgICAgICBlcnJvciA9IGtlcm5faW9jdGwodGQsIHVhcC0+ZmQsIGNv bSwgZGF0YSk7DQo2ODINCjY4MyAgICAgICAgICAgICBpZiAoZXJyb3IgPT0gMCAmJiAoY29tICYg SU9DX09VVCkpDQo2ODQgICAgICAgICAgICAgICAgICAgICBlcnJvciA9IGNvcHlvdXQoZGF0YSwg dWFwLT5kYXRhLCAodV9pbnQpc2l6ZSk7DQo2ODUNCg==