From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 3DA01A0C4D for ; Tue, 2 Nov 2021 04:49:16 +0100 (CET) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 096114069F; Tue, 2 Nov 2021 04:49:16 +0100 (CET) Received: from mail-oi1-f227.google.com (mail-oi1-f227.google.com [209.85.167.227]) by mails.dpdk.org (Postfix) with ESMTP id 137134068F for ; Tue, 2 Nov 2021 04:49:15 +0100 (CET) Received: by mail-oi1-f227.google.com with SMTP id w193so28108909oie.1 for ; Mon, 01 Nov 2021 20:49:14 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=iol.unh.edu; s=unh-iol; h=mime-version:subject:from:to:cc:message-id:date; bh=z50+acO1OBlEghr1uR9Lzxrff6TrEwpYRC59l5f0Q84=; b=EOG/++n3jtC/P0ZS1CofRIxFXWgk9LIQqeC7PyFo5b8A+oI85/1HDDeZj7ebJSgkD2 Vg+4xp4iPfXH3GS8vSMo2wCX4CSN8S8iigFdtVmBZVqwZGcxdYwZNjpKjj30uCDQHJYA V6ZFMLemAdV4Hthd8bqzMLMtNuXQtcSxb2eN8= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:subject:from:to:cc:message-id:date; bh=z50+acO1OBlEghr1uR9Lzxrff6TrEwpYRC59l5f0Q84=; b=xvy2KqB4EJk61JaAixNiWJ4Ev/omyvHCxnECfnUep0mOH5RekqBEf2lm+SBkkxIO+p N0qHdrI3Bov0aXI7qNpXfwO1AMIcWAvSdS1Q3fGbMzeD8KZdsmJXqbnRTa5s7nYXLILQ TQ8zGKaHH5H81JTMleIuFAj4bL5keWS4jdubGqbyCVOOvF9JznB/bX/pTB/FBXOd0gER FId75HjoZU1E6O/Usyy4sQ3Ma/wy3hl8Txzv+pYAUhPMydB82L6t+X1fS0pyBDpWWcY/ fU8m40C4h/01cU1oMPEtYeQms83tYVKFcRHR0LvG4j7lV94vkFkFCaumJHe0MXyJY4pR gMmA== X-Gm-Message-State: AOAM532g8SU/XrER46tLKweeUaudCGOEaYfDL+QXvKvYQO+1MN8CnlrK EFmN6MKdaTt27OSf5AmzB1dWAp/FF8h4ZnS203WMuK9w1nEP6g== X-Google-Smtp-Source: ABdhPJwxOU0Kvl7PP9S3Nv5pswu74BMpwsa8inDR1OsS6U/FgNrrXfxdAgF2yBLnCWTb2O3yKpuyEgcSr4gS X-Received: by 2002:aca:58d6:: with SMTP id m205mr2937796oib.126.1635824954201; Mon, 01 Nov 2021 20:49:14 -0700 (PDT) Received: from postal.iol.unh.edu (postal.iol.unh.edu. [132.177.123.84]) by smtp-relay.gmail.com with ESMTPS id f5sm1972291oop.20.2021.11.01.20.49.13 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Mon, 01 Nov 2021 20:49:14 -0700 (PDT) X-Relaying-Domain: iol.unh.edu Received: from dpdk-ubuntu.dpdklab.iol.unh.edu (targon.iol.unh.edu [132.177.125.242]) by postal.iol.unh.edu (Postfix) with ESMTP id A9DB0605247D; Mon, 1 Nov 2021 23:49:13 -0400 (EDT) Received: from dpdk-ubuntu.dpdklab.iol.unh.edu (localhost [IPv6:::1]) by dpdk-ubuntu.dpdklab.iol.unh.edu (Postfix) with ESMTP id A601B60796; Tue, 2 Nov 2021 03:49:13 +0000 (UTC) Content-Type: multipart/mixed; boundary="===============0037173462216949091==" MIME-Version: 1.0 From: dpdklab@iol.unh.edu To: test-report@dpdk.org Cc: dpdk-test-reports@iol.unh.edu Message-Id: <20211102034913.A601B60796@dpdk-ubuntu.dpdklab.iol.unh.edu> Date: Tue, 2 Nov 2021 03:49:13 +0000 (UTC) Subject: [dpdk-test-report] |WARNING| pw103392-103394 [PATCH] [9/9] net/hns3: remove PF/VF duplicate code X-BeenThere: test-report@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: automatic DPDK test reports List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: test-report-bounces@dpdk.org Sender: "test-report" --===============0037173462216949091== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 VGVzdC1MYWJlbDogaW9sLXRlc3RpbmcKVGVzdC1TdGF0dXM6IFdBUk5JTkcKaHR0cDovL2RwZGsu b3JnL3BhdGNoLzEwMzM5MgoKX2FwcGx5IHBhdGNoIGZhaWx1cmVfCgpTdWJtaXR0ZXI6IE1pbiBI dSAoQ29ubm9yKSA8aHVtaW4yOUBodWF3ZWkuY29tPgpEYXRlOiBUdWVzZGF5LCBOb3ZlbWJlciAw MiAyMDIxIDAzOjE3OjI5IApBcHBsaWVkIG9uOiBDb21taXRJRDpiMmJlNjNiNTVhYjA4NmM1MmMw ODJkNWMwYjJiMDFmZmZiYzQ4MzI2CkFwcGx5IHBhdGNoIHNldCAxMDMzOTItMTAzMzk0IGZhaWxl ZDoKCkNoZWNraW5nIHBhdGNoIGRyaXZlcnMvbmV0L2huczMvaG5zM19jbWQuYy4uLgpDaGVja2lu ZyBwYXRjaCBkcml2ZXJzL25ldC9obnMzL2huczNfY29tbW9uLmMuLi4KLmdpdC9yZWJhc2UtYXBw bHkvcGF0Y2g6NDYxOiBuZXcgYmxhbmsgbGluZSBhdCBFT0YuCisKQ2hlY2tpbmcgcGF0Y2ggZHJp dmVycy9uZXQvaG5zMy9obnMzX2NvbW1vbi5oLi4uCkNoZWNraW5nIHBhdGNoIGRyaXZlcnMvbmV0 L2huczMvaG5zM19ldGhkZXYuYy4uLgplcnJvcjogd2hpbGUgc2VhcmNoaW5nIGZvcjoKCXJldHVy biByZXQ7Cn0KCnN0YXRpYyBib29sCmhuczNfZmluZF9kdXBsaWNhdGVfbWNfYWRkcihzdHJ1Y3Qg aG5zM19odyAqaHcsIHN0cnVjdCBydGVfZXRoZXJfYWRkciAqbWNfYWRkcikKewoJY2hhciBtYWNf c3RyW1JURV9FVEhFUl9BRERSX0ZNVF9TSVpFXTsKCXN0cnVjdCBydGVfZXRoZXJfYWRkciAqYWRk cjsKCWludCBpOwoKCWZvciAoaSA9IDA7IGkgPCBody0+bWNfYWRkcnNfbnVtOyBpKyspIHsKCQlh ZGRyID0gJmh3LT5tY19hZGRyc1tpXTsKCQkvKiBDaGVjayBpZiB0aGVyZSBhcmUgZHVwbGljYXRl IGFkZHJlc3NlcyBpbiBtY19hZGRyc1tdICovCgkJaWYgKHJ0ZV9pc19zYW1lX2V0aGVyX2FkZHIo YWRkciwgbWNfYWRkcikpIHsKCQkJaG5zM19ldGhlcl9mb3JtYXRfYWRkcihtYWNfc3RyLCBSVEVf RVRIRVJfQUREUl9GTVRfU0laRSwKCQkJCQkgICAgICAgYWRkcik7CgkJCWhuczNfZXJyKGh3LCAi ZmFpbGVkIHRvIGFkZCBtYyBtYWMgYWRkciwgc2FtZSBhZGRycyIKCQkJCSAiKCVzKSBpcyBhZGRl ZCBieSB0aGUgc2V0X21jX21hY19hZGRyX2xpc3QgIgoJCQkJICJBUEkiLCBtYWNfc3RyKTsKCQkJ cmV0dXJuIHRydWU7CgkJfQoJfQoKCXJldHVybiBmYWxzZTsKfQoKaW50CmhuczNfYWRkX21hY19h ZGRyKHN0cnVjdCBydGVfZXRoX2RldiAqZGV2LCBzdHJ1Y3QgcnRlX2V0aGVyX2FkZHIgKm1hY19h ZGRyLAoJCSAgX19ydGVfdW51c2VkIHVpbnQzMl90IGlkeCwgX19ydGVfdW51c2VkIHVpbnQzMl90 IHBvb2wpCnsKCXN0cnVjdCBobnMzX2h3ICpodyA9IEhOUzNfREVWX1BSSVZBVEVfVE9fSFcoZGV2 LT5kYXRhLT5kZXZfcHJpdmF0ZSk7CgljaGFyIG1hY19zdHJbUlRFX0VUSEVSX0FERFJfRk1UX1NJ WkVdOwoJaW50IHJldDsKCglydGVfc3BpbmxvY2tfbG9jaygmaHctPmxvY2spOwoKCS8qCgkgKiBJ biBobnMzIG5ldHdvcmsgZW5naW5lIGFkZGluZyBVQyBhbmQgTUMgbWFjIGFkZHJlc3Mgd2l0aCBk aWZmZXJlbnQKCSAqIGNvbW1hbmRzIHdpdGggZmlybXdhcmUuIFdlIG5lZWQgdG8gZGV0ZXJtaW5l IHdoZXRoZXIgdGhlIGlucHV0CgkgKiBhZGRyZXNzIGlzIGEgVUMgb3IgYSBNQyBhZGRyZXNzIHRv IGNhbGwgZGlmZmVyZW50IGNvbW1hbmRzLgoJICogQnkgdGhlIHdheSwgaXQgaXMgcmVjb21tZW5k ZWQgY2FsbGluZyB0aGUgQVBJIGZ1bmN0aW9uIG5hbWVkCgkgKiBydGVfZXRoX2Rldl9zZXRfbWNf YWRkcl9saXN0IHRvIHNldCB0aGUgTUMgbWFjIGFkZHJlc3MsIGJlY2F1c2UKCSAqIHVzaW5nIHRo ZSBydGVfZXRoX2Rldl9tYWNfYWRkcl9hZGQgQVBJIGZ1bmN0aW9uIHRvIHNldCBNQyBtYWMgYWRk cmVzcwoJICogbWF5IGFmZmVjdCB0aGUgc3BlY2lmaWNhdGlvbnMgb2YgVUMgbWFjIGFkZHJlc3Nl cy4KCSAqLwoJaWYgKHJ0ZV9pc19tdWx0aWNhc3RfZXRoZXJfYWRkcihtYWNfYWRkcikpIHsKCQlp ZiAoaG5zM19maW5kX2R1cGxpY2F0ZV9tY19hZGRyKGh3LCBtYWNfYWRkcikpIHsKCQkJcnRlX3Nw aW5sb2NrX3VubG9jaygmaHctPmxvY2spOwoJCQlyZXR1cm4gLUVJTlZBTDsKCQl9CgkJcmV0ID0g aHctPm9wcy5hZGRfbWNfbWFjX2FkZHIoaHcsIG1hY19hZGRyKTsKCX0gZWxzZSB7CgkJcmV0ID0g aHctPm9wcy5hZGRfdWNfbWFjX2FkZHIoaHcsIG1hY19hZGRyKTsKCX0KCXJ0ZV9zcGlubG9ja191 bmxvY2soJmh3LT5sb2NrKTsKCWlmIChyZXQpIHsKCQlobnMzX2V0aGVyX2Zvcm1hdF9hZGRyKG1h Y19zdHIsIFJURV9FVEhFUl9BRERSX0ZNVF9TSVpFLAoJCQkJICAgICAgbWFjX2FkZHIpOwoJCWhu czNfZXJyKGh3LCAiZmFpbGVkIHRvIGFkZCBtYWMgYWRkciglcyksIHJldCA9ICVkIiwgbWFjX3N0 ciwKCQkJIHJldCk7Cgl9CgoJcmV0dXJuIHJldDsKfQoKc3RhdGljIGludApobnMzX3JlbW92ZV91 Y19tYWNfYWRkcihzdHJ1Y3QgaG5zM19odyAqaHcsIHN0cnVjdCBydGVfZXRoZXJfYWRkciAqbWFj X2FkZHIpCnsKCmVycm9yOiBwYXRjaCBmYWlsZWQ6IGRyaXZlcnMvbmV0L2huczMvaG5zM19ldGhk ZXYuYzoxNjA5CmVycm9yOiB3aGlsZSBzZWFyY2hpbmcgZm9yOgoJcmV0dXJuIHJldDsKfQoKdm9p ZApobnMzX3JlbW92ZV9tYWNfYWRkcihzdHJ1Y3QgcnRlX2V0aF9kZXYgKmRldiwgdWludDMyX3Qg aWR4KQp7CglzdHJ1Y3QgaG5zM19odyAqaHcgPSBITlMzX0RFVl9QUklWQVRFX1RPX0hXKGRldi0+ ZGF0YS0+ZGV2X3ByaXZhdGUpOwoJLyogaW5kZXggd2lsbCBiZSBjaGVja2VkIGJ5IHVwcGVyIGxl dmVsIHJ0ZSBpbnRlcmZhY2UgKi8KCXN0cnVjdCBydGVfZXRoZXJfYWRkciAqbWFjX2FkZHIgPSAm ZGV2LT5kYXRhLT5tYWNfYWRkcnNbaWR4XTsKCWNoYXIgbWFjX3N0cltSVEVfRVRIRVJfQUREUl9G TVRfU0laRV07CglpbnQgcmV0OwoKCXJ0ZV9zcGlubG9ja19sb2NrKCZody0+bG9jayk7CgoJaWYg KHJ0ZV9pc19tdWx0aWNhc3RfZXRoZXJfYWRkcihtYWNfYWRkcikpCgkJcmV0ID0gaHctPm9wcy5k ZWxfbWNfbWFjX2FkZHIoaHcsIG1hY19hZGRyKTsKCWVsc2UKCQlyZXQgPSBody0+b3BzLmRlbF91 Y19tYWNfYWRkcihodywgbWFjX2FkZHIpOwoJcnRlX3NwaW5sb2NrX3VubG9jaygmaHctPmxvY2sp OwoJaWYgKHJldCkgewoJCWhuczNfZXRoZXJfZm9ybWF0X2FkZHIobWFjX3N0ciwgUlRFX0VUSEVS X0FERFJfRk1UX1NJWkUsCgkJCQkgICAgICBtYWNfYWRkcik7CgkJaG5zM19lcnIoaHcsICJmYWls ZWQgdG8gcmVtb3ZlIG1hYyBhZGRyKCVzKSwgcmV0ID0gJWQiLCBtYWNfc3RyLAoJCQkgcmV0KTsK CX0KfQoKc3RhdGljIGludApobnMzX3NldF9kZWZhdWx0X21hY19hZGRyKHN0cnVjdCBydGVfZXRo X2RldiAqZGV2LAoJCQkgIHN0cnVjdCBydGVfZXRoZXJfYWRkciAqbWFjX2FkZHIpCgplcnJvcjog cGF0Y2ggZmFpbGVkOiBkcml2ZXJzL25ldC9obnMzL2huczNfZXRoZGV2LmM6MTY5OQplcnJvcjog d2hpbGUgc2VhcmNoaW5nIGZvcjoKCXJldHVybiByZXQ7Cn0KCmludApobnMzX2NvbmZpZ3VyZV9h bGxfbWFjX2FkZHIoc3RydWN0IGhuczNfYWRhcHRlciAqaG5zLCBib29sIGRlbCkKewoJY2hhciBt YWNfc3RyW1JURV9FVEhFUl9BRERSX0ZNVF9TSVpFXTsKCXN0cnVjdCBobnMzX2h3ICpodyA9ICZo bnMtPmh3OwoJc3RydWN0IGhuczNfaHdfb3BzICpvcHMgPSAmaHctPm9wczsKCXN0cnVjdCBydGVf ZXRoZXJfYWRkciAqYWRkcjsKCXVpbnQxNl90IG1hY19hZGRyc19jYXBhOwoJaW50IHJldCA9IDA7 CglpbnQgaTsKCgltYWNfYWRkcnNfY2FwYSA9CgkJaG5zLT5pc192ZiA/IEhOUzNfVkZfVUNfTUFD QUREUl9OVU0gOiBITlMzX1VDX01BQ0FERFJfTlVNOwoJZm9yIChpID0gMDsgaSA8IG1hY19hZGRy c19jYXBhOyBpKyspIHsKCQlhZGRyID0gJmh3LT5kYXRhLT5tYWNfYWRkcnNbaV07CgkJaWYgKHJ0 ZV9pc196ZXJvX2V0aGVyX2FkZHIoYWRkcikpCgkJCWNvbnRpbnVlOwoJCWlmIChydGVfaXNfbXVs dGljYXN0X2V0aGVyX2FkZHIoYWRkcikpCgkJCXJldCA9IGRlbCA/IG9wcy0+ZGVsX21jX21hY19h ZGRyKGh3LCBhZGRyKSA6CgkJCSAgICAgIG9wcy0+YWRkX21jX21hY19hZGRyKGh3LCBhZGRyKTsK CQllbHNlCgkJCXJldCA9IGRlbCA/IG9wcy0+ZGVsX3VjX21hY19hZGRyKGh3LCBhZGRyKSA6CgkJ CSAgICAgIG9wcy0+YWRkX3VjX21hY19hZGRyKGh3LCBhZGRyKTsKCgkJaWYgKHJldCkgewoJCQlo bnMzX2V0aGVyX2Zvcm1hdF9hZGRyKG1hY19zdHIsIFJURV9FVEhFUl9BRERSX0ZNVF9TSVpFLAoJ CQkJCSAgICAgICBhZGRyKTsKCQkJaG5zM19lcnIoaHcsICJmYWlsZWQgdG8gJXMgbWFjIGFkZHIo JXMpIGluZGV4OiVkIHJldCA9ICVkLiIsCgkJCQkgZGVsID8gInJlbW92ZSIgOiAicmVzdG9yZSIs IG1hY19zdHIsIGksIHJldCk7CgkJfQoJfQoKCXJldHVybiByZXQ7Cn0KCnN0YXRpYyB2b2lkCmhu czNfdXBkYXRlX2Rlc2NfdmZpZChzdHJ1Y3QgaG5zM19jbWRfZGVzYyAqZGVzYywgdWludDhfdCB2 ZmlkLCBib29sIGNscikKewoKZXJyb3I6IHBhdGNoIGZhaWxlZDogZHJpdmVycy9uZXQvaG5zMy9o bnMzX2V0aGRldi5jOjE3ODcKZXJyb3I6IHdoaWxlIHNlYXJjaGluZyBmb3I6CglyZXR1cm4gcmV0 Owp9CgpzdGF0aWMgaW50CmhuczNfc2V0X21jX2FkZHJfY2hrX3BhcmFtKHN0cnVjdCBobnMzX2h3 ICpodywKCQkJICAgc3RydWN0IHJ0ZV9ldGhlcl9hZGRyICptY19hZGRyX3NldCwKCQkJICAgdWlu dDMyX3QgbmJfbWNfYWRkcikKewoJc3RydWN0IGhuczNfYWRhcHRlciAqaG5zID0gSE5TM19ERVZf SFdfVE9fQURBUFRFUihodyk7CgljaGFyIG1hY19zdHJbUlRFX0VUSEVSX0FERFJfRk1UX1NJWkVd OwoJc3RydWN0IHJ0ZV9ldGhlcl9hZGRyICphZGRyOwoJdWludDE2X3QgbWFjX2FkZHJzX2NhcGE7 Cgl1aW50MzJfdCBpOwoJdWludDMyX3QgajsKCglpZiAobmJfbWNfYWRkciA+IEhOUzNfTUNfTUFD QUREUl9OVU0pIHsKCQlobnMzX2VycihodywgImZhaWxlZCB0byBzZXQgbWMgbWFjIGFkZHIsIG5i X21jX2FkZHIoJXUpICIKCQkJICJpbnZhbGlkLiB2YWxpZCByYW5nZTogMH4lZCIsCgkJCSBuYl9t Y19hZGRyLCBITlMzX01DX01BQ0FERFJfTlVNKTsKCQlyZXR1cm4gLUVJTlZBTDsKCX0KCgkvKiBD aGVjayBpZiBpbnB1dCBtYWMgYWRkcmVzc2VzIGFyZSB2YWxpZCAqLwoJZm9yIChpID0gMDsgaSA8 IG5iX21jX2FkZHI7IGkrKykgewoJCWFkZHIgPSAmbWNfYWRkcl9zZXRbaV07CgkJaWYgKCFydGVf aXNfbXVsdGljYXN0X2V0aGVyX2FkZHIoYWRkcikpIHsKCQkJaG5zM19ldGhlcl9mb3JtYXRfYWRk cihtYWNfc3RyLCBSVEVfRVRIRVJfQUREUl9GTVRfU0laRSwKCQkJCQkgICAgICBhZGRyKTsKCQkJ aG5zM19lcnIoaHcsCgkJCQkgImZhaWxlZCB0byBzZXQgbWMgbWFjIGFkZHIsIGFkZHIoJXMpIGlu dmFsaWQuIiwKCQkJCSBtYWNfc3RyKTsKCQkJcmV0dXJuIC1FSU5WQUw7CgkJfQoKCQkvKiBDaGVj ayBpZiB0aGVyZSBhcmUgZHVwbGljYXRlIGFkZHJlc3NlcyAqLwoJCWZvciAoaiA9IGkgKyAxOyBq IDwgbmJfbWNfYWRkcjsgaisrKSB7CgkJCWlmIChydGVfaXNfc2FtZV9ldGhlcl9hZGRyKGFkZHIs ICZtY19hZGRyX3NldFtqXSkpIHsKCQkJCWhuczNfZXRoZXJfZm9ybWF0X2FkZHIobWFjX3N0ciwK CQkJCQkJICAgICAgUlRFX0VUSEVSX0FERFJfRk1UX1NJWkUsCgkJCQkJCSAgICAgIGFkZHIpOwoJ CQkJaG5zM19lcnIoaHcsICJmYWlsZWQgdG8gc2V0IG1jIG1hYyBhZGRyLCAiCgkJCQkJICJhZGRy cyBpbnZhbGlkLiB0d28gc2FtZSBhZGRycyglcykuIiwKCQkJCQkgbWFjX3N0cik7CgkJCQlyZXR1 cm4gLUVJTlZBTDsKCQkJfQoJCX0KCgkJLyoKCQkgKiBDaGVjayBpZiB0aGVyZSBhcmUgZHVwbGlj YXRlIGFkZHJlc3NlcyBiZXR3ZWVuIG1hY19hZGRycwoJCSAqIGFuZCBtY19hZGRyX3NldAoJCSAq LwoJCW1hY19hZGRyc19jYXBhID0gaG5zLT5pc192ZiA/IEhOUzNfVkZfVUNfTUFDQUREUl9OVU0g OgoJCQkJCSAgICAgIEhOUzNfVUNfTUFDQUREUl9OVU07CgkJZm9yIChqID0gMDsgaiA8IG1hY19h ZGRyc19jYXBhOyBqKyspIHsKCQkJaWYgKHJ0ZV9pc19zYW1lX2V0aGVyX2FkZHIoYWRkciwKCQkJ CQkJICAgJmh3LT5kYXRhLT5tYWNfYWRkcnNbal0pKSB7CgkJCQlobnMzX2V0aGVyX2Zvcm1hdF9h ZGRyKG1hY19zdHIsCgkJCQkJCSAgICAgICBSVEVfRVRIRVJfQUREUl9GTVRfU0laRSwKCQkJCQkJ ICAgICAgIGFkZHIpOwoJCQkJaG5zM19lcnIoaHcsICJmYWlsZWQgdG8gc2V0IG1jIG1hYyBhZGRy LCAiCgkJCQkJICJhZGRycyBpbnZhbGlkLiBhZGRycyglcykgaGFzIGFscmVhZHkgIgoJCQkJCSAi Y29uZmlndXJlZCBpbiBtYWNfYWRkciBhZGQgQVBJIiwKCQkJCQkgbWFjX3N0cik7CgkJCQlyZXR1 cm4gLUVJTlZBTDsKCQkJfQoJCX0KCX0KCglyZXR1cm4gMDsKfQoKaW50CmhuczNfc2V0X21jX21h Y19hZGRyX2xpc3Qoc3RydWN0IHJ0ZV9ldGhfZGV2ICpkZXYsCgkJCSAgc3RydWN0IHJ0ZV9ldGhl cl9hZGRyICptY19hZGRyX3NldCwKCQkJICB1aW50MzJfdCBuYl9tY19hZGRyKQp7CglzdHJ1Y3Qg aG5zM19odyAqaHcgPSBITlMzX0RFVl9QUklWQVRFX1RPX0hXKGRldi0+ZGF0YS0+ZGV2X3ByaXZh dGUpOwoJc3RydWN0IHJ0ZV9ldGhlcl9hZGRyICphZGRyOwoJaW50IGN1cl9hZGRyX251bTsKCWlu dCBzZXRfYWRkcl9udW07CglpbnQgbnVtOwoJaW50IHJldDsKCWludCBpOwoKCS8qIENoZWNrIGlm IGlucHV0IHBhcmFtZXRlcnMgYXJlIHZhbGlkICovCglyZXQgPSBobnMzX3NldF9tY19hZGRyX2No a19wYXJhbShodywgbWNfYWRkcl9zZXQsIG5iX21jX2FkZHIpOwoJaWYgKHJldCkKCQlyZXR1cm4g cmV0OwoKCXJ0ZV9zcGlubG9ja19sb2NrKCZody0+bG9jayk7CgljdXJfYWRkcl9udW0gPSBody0+ bWNfYWRkcnNfbnVtOwoJZm9yIChpID0gMDsgaSA8IGN1cl9hZGRyX251bTsgaSsrKSB7CgkJbnVt ID0gY3VyX2FkZHJfbnVtIC0gaSAtIDE7CgkJYWRkciA9ICZody0+bWNfYWRkcnNbbnVtXTsKCQly ZXQgPSBody0+b3BzLmRlbF9tY19tYWNfYWRkcihodywgYWRkcik7CgkJaWYgKHJldCkgewoJCQly dGVfc3BpbmxvY2tfdW5sb2NrKCZody0+bG9jayk7CgkJCXJldHVybiByZXQ7CgkJfQoKCQlody0+ bWNfYWRkcnNfbnVtLS07Cgl9CgoJc2V0X2FkZHJfbnVtID0gKGludCluYl9tY19hZGRyOwoJZm9y IChpID0gMDsgaSA8IHNldF9hZGRyX251bTsgaSsrKSB7CgkJYWRkciA9ICZtY19hZGRyX3NldFtp XTsKCQlyZXQgPSBody0+b3BzLmFkZF9tY19tYWNfYWRkcihodywgYWRkcik7CgkJaWYgKHJldCkg ewoJCQlydGVfc3BpbmxvY2tfdW5sb2NrKCZody0+bG9jayk7CgkJCXJldHVybiByZXQ7CgkJfQoK CQlydGVfZXRoZXJfYWRkcl9jb3B5KGFkZHIsICZody0+bWNfYWRkcnNbaHctPm1jX2FkZHJzX251 bV0pOwoJCWh3LT5tY19hZGRyc19udW0rKzsKCX0KCXJ0ZV9zcGlubG9ja191bmxvY2soJmh3LT5s b2NrKTsKCglyZXR1cm4gMDsKfQoKaW50CmhuczNfY29uZmlndXJlX2FsbF9tY19tYWNfYWRkcihz dHJ1Y3QgaG5zM19hZGFwdGVyICpobnMsIGJvb2wgZGVsKQp7CgljaGFyIG1hY19zdHJbUlRFX0VU SEVSX0FERFJfRk1UX1NJWkVdOwoJc3RydWN0IGhuczNfaHcgKmh3ID0gJmhucy0+aHc7CglzdHJ1 Y3QgcnRlX2V0aGVyX2FkZHIgKmFkZHI7CglpbnQgcmV0ID0gMDsKCWludCBpOwoKCWZvciAoaSA9 IDA7IGkgPCBody0+bWNfYWRkcnNfbnVtOyBpKyspIHsKCQlhZGRyID0gJmh3LT5tY19hZGRyc1tp XTsKCQlpZiAoIXJ0ZV9pc19tdWx0aWNhc3RfZXRoZXJfYWRkcihhZGRyKSkKCQkJY29udGludWU7 CgkJaWYgKGRlbCkKCQkJcmV0ID0gaHctPm9wcy5kZWxfbWNfbWFjX2FkZHIoaHcsIGFkZHIpOwoJ CWVsc2UKCQkJcmV0ID0gaHctPm9wcy5hZGRfbWNfbWFjX2FkZHIoaHcsIGFkZHIpOwoJCWlmIChy ZXQpIHsKCQkJaG5zM19ldGhlcl9mb3JtYXRfYWRkcihtYWNfc3RyLCBSVEVfRVRIRVJfQUREUl9G TVRfU0laRSwKCQkJCQkgICAgICBhZGRyKTsKCQkJaG5zM19kYmcoaHcsICJmYWlsZWQgdG8gJXMg bWMgbWFjIGFkZHI6ICVzIHJldCA9ICVkIiwKCQkJCSBkZWwgPyAiUmVtb3ZlIiA6ICJSZXN0b3Jl IiwgbWFjX3N0ciwgcmV0KTsKCQl9Cgl9CglyZXR1cm4gcmV0Owp9CgpzdGF0aWMgaW50CmhuczNf Y2hlY2tfbXFfbW9kZShzdHJ1Y3QgcnRlX2V0aF9kZXYgKmRldikKewoKZXJyb3I6IHBhdGNoIGZh aWxlZDogZHJpdmVycy9uZXQvaG5zMy9obnMzX2V0aGRldi5jOjE5NDcKSHVuayAjNyBzdWNjZWVk ZWQgYXQgNzIwOSAob2Zmc2V0IDM3MiBsaW5lcykuCkNoZWNraW5nIHBhdGNoIGRyaXZlcnMvbmV0 L2huczMvaG5zM19ldGhkZXYuaC4uLgpIdW5rICMyIHN1Y2NlZWRlZCBhdCA4NTUgKG9mZnNldCAt MTMgbGluZXMpLgpIdW5rICMzIHN1Y2NlZWRlZCBhdCA5ODkgKG9mZnNldCAtMTMgbGluZXMpLgpl cnJvcjogd2hpbGUgc2VhcmNoaW5nIGZvcjoKCXJldHVybiBfX2F0b21pY19mZXRjaF9hbmQoYWRk ciwgfm1hc2ssIF9fQVRPTUlDX1JFTEFYRUQpICYgbWFzazsKfQoKaW50IGhuczNfYnVmZmVyX2Fs bG9jKHN0cnVjdCBobnMzX2h3ICpodyk7CmludCBobnMzX2Rldl9mbG93X29wc19nZXQoc3RydWN0 IHJ0ZV9ldGhfZGV2ICpkZXYsCgkJCSAgY29uc3Qgc3RydWN0IHJ0ZV9mbG93X29wcyAqKm9wcyk7 CmJvb2wgaG5zM19pc19yZXNldF9wZW5kaW5nKHN0cnVjdCBobnMzX2FkYXB0ZXIgKmhucyk7CmJv b2wgaG5zM3ZmX2lzX3Jlc2V0X3BlbmRpbmcoc3RydWN0IGhuczNfYWRhcHRlciAqaG5zKTsKdm9p ZCBobnMzX3VwZGF0ZV9saW5rc3RhdHVzX2FuZF9ldmVudChzdHJ1Y3QgaG5zM19odyAqaHcsIGJv b2wgcXVlcnkpOwp2b2lkIGhuczNfZXRoZXJfZm9ybWF0X2FkZHIoY2hhciAqYnVmLCB1aW50MTZf dCBzaXplLAoJCQljb25zdCBzdHJ1Y3QgcnRlX2V0aGVyX2FkZHIgKmV0aGVyX2FkZHIpOwppbnQg aG5zM19kZXZfaW5mb3NfZ2V0KHN0cnVjdCBydGVfZXRoX2RldiAqZXRoX2RldiwKCQkgICAgICAg c3RydWN0IHJ0ZV9ldGhfZGV2X2luZm8gKmluZm8pOwp2b2lkIGhuczN2Zl91cGRhdGVfbGlua19z dGF0dXMoc3RydWN0IGhuczNfaHcgKmh3LCB1aW50OF90IGxpbmtfc3RhdHVzLAoJCQkgIHVpbnQz Ml90IGxpbmtfc3BlZWQsIHVpbnQ4X3QgbGlua19kdXBsZXgpOwp2b2lkIGhuczNfcGFyc2VfZGV2 YXJncyhzdHJ1Y3QgcnRlX2V0aF9kZXYgKmRldik7CnZvaWQgaG5zM3ZmX3VwZGF0ZV9wdXNoX2xz Y19jYXAoc3RydWN0IGhuczNfaHcgKmh3LCBib29sIHN1cHBvcnRlZCk7CmludCBobnMzX2NvbmZp Z3VyZV9hbGxfbWNfbWFjX2FkZHIoc3RydWN0IGhuczNfYWRhcHRlciAqaG5zLCBib29sIGRlbCk7 CmludCBobnMzX2NvbmZpZ3VyZV9hbGxfbWFjX2FkZHIoc3RydWN0IGhuczNfYWRhcHRlciAqaG5z LCBib29sIGRlbCk7CmludCBobnMzX2FkZF9tYWNfYWRkcihzdHJ1Y3QgcnRlX2V0aF9kZXYgKmRl diwgc3RydWN0IHJ0ZV9ldGhlcl9hZGRyICptYWNfYWRkciwKCQlfX3J0ZV91bnVzZWQgdWludDMy X3QgaWR4LCBfX3J0ZV91bnVzZWQgdWludDMyX3QgcG9vbCk7CnZvaWQgaG5zM19yZW1vdmVfbWFj X2FkZHIoc3RydWN0IHJ0ZV9ldGhfZGV2ICpkZXYsIHVpbnQzMl90IGlkeCk7CmludCBobnMzX3Nl dF9tY19tYWNfYWRkcl9saXN0KHN0cnVjdCBydGVfZXRoX2RldiAqZGV2LAoJCQlzdHJ1Y3QgcnRl X2V0aGVyX2FkZHIgKm1jX2FkZHJfc2V0LAoJCQkJCQkJdWludDMyX3QgbmJfbWNfYWRkcik7Cmlu dCBobnMzX3Jlc3RvcmVfcHRwKHN0cnVjdCBobnMzX2FkYXB0ZXIgKmhucyk7CmludCBobnMzX21i dWZfZHluX3J4X3RpbWVzdGFtcF9yZWdpc3RlcihzdHJ1Y3QgcnRlX2V0aF9kZXYgKmRldiwKCQkJ CSAgICBzdHJ1Y3QgcnRlX2V0aF9jb25mICpjb25mKTsKCmVycm9yOiBwYXRjaCBmYWlsZWQ6IGRy aXZlcnMvbmV0L2huczMvaG5zM19ldGhkZXYuaDoxMDQ3CkNoZWNraW5nIHBhdGNoIGRyaXZlcnMv bmV0L2huczMvaG5zM19ldGhkZXZfdmYuYy4uLgpDaGVja2luZyBwYXRjaCBkcml2ZXJzL25ldC9o bnMzL2huczNfaW50ci5jLi4uCkNoZWNraW5nIHBhdGNoIGRyaXZlcnMvbmV0L2huczMvaG5zM19t YnguYy4uLgpDaGVja2luZyBwYXRjaCBkcml2ZXJzL25ldC9obnMzL2huczNfcnh0eC5jLi4uCkNo ZWNraW5nIHBhdGNoIGRyaXZlcnMvbmV0L2huczMvbWVzb24uYnVpbGQuLi4KQXBwbGllZCBwYXRj aCBkcml2ZXJzL25ldC9obnMzL2huczNfY21kLmMgY2xlYW5seS4KQXBwbGllZCBwYXRjaCBkcml2 ZXJzL25ldC9obnMzL2huczNfY29tbW9uLmMgY2xlYW5seS4KQXBwbGllZCBwYXRjaCBkcml2ZXJz L25ldC9obnMzL2huczNfY29tbW9uLmggY2xlYW5seS4KQXBwbHlpbmcgcGF0Y2ggZHJpdmVycy9u ZXQvaG5zMy9obnMzX2V0aGRldi5jIHdpdGggNCByZWplY3RzLi4uCkh1bmsgIzEgYXBwbGllZCBj bGVhbmx5LgpIdW5rICMyIGFwcGxpZWQgY2xlYW5seS4KUmVqZWN0ZWQgaHVuayAjMy4KUmVqZWN0 ZWQgaHVuayAjNC4KUmVqZWN0ZWQgaHVuayAjNS4KUmVqZWN0ZWQgaHVuayAjNi4KSHVuayAjNyBh cHBsaWVkIGNsZWFubHkuCkFwcGx5aW5nIHBhdGNoIGRyaXZlcnMvbmV0L2huczMvaG5zM19ldGhk ZXYuaCB3aXRoIDEgcmVqZWN0Li4uCkh1bmsgIzEgYXBwbGllZCBjbGVhbmx5LgpIdW5rICMyIGFw cGxpZWQgY2xlYW5seS4KSHVuayAjMyBhcHBsaWVkIGNsZWFubHkuClJlamVjdGVkIGh1bmsgIzQu CkFwcGxpZWQgcGF0Y2ggZHJpdmVycy9uZXQvaG5zMy9obnMzX2V0aGRldl92Zi5jIGNsZWFubHku CkFwcGxpZWQgcGF0Y2ggZHJpdmVycy9uZXQvaG5zMy9obnMzX2ludHIuYyBjbGVhbmx5LgpBcHBs aWVkIHBhdGNoIGRyaXZlcnMvbmV0L2huczMvaG5zM19tYnguYyBjbGVhbmx5LgpBcHBsaWVkIHBh dGNoIGRyaXZlcnMvbmV0L2huczMvaG5zM19yeHR4LmMgY2xlYW5seS4KQXBwbGllZCBwYXRjaCBk cml2ZXJzL25ldC9obnMzL21lc29uLmJ1aWxkIGNsZWFubHkuCmRpZmYgYS9kcml2ZXJzL25ldC9o bnMzL2huczNfZXRoZGV2LmMgYi9kcml2ZXJzL25ldC9obnMzL2huczNfZXRoZGV2LmMJKHJlamVj dGVkIGh1bmtzKQpAQCAtMTYwOSw2OCArMTYwMSw2IEBAIGhuczNfYWRkX3VjX21hY19hZGRyKHN0 cnVjdCBobnMzX2h3ICpodywgc3RydWN0IHJ0ZV9ldGhlcl9hZGRyICptYWNfYWRkcikKIAlyZXR1 cm4gcmV0OwogfQogCi1zdGF0aWMgYm9vbAotaG5zM19maW5kX2R1cGxpY2F0ZV9tY19hZGRyKHN0 cnVjdCBobnMzX2h3ICpodywgc3RydWN0IHJ0ZV9ldGhlcl9hZGRyICptY19hZGRyKQotewotCWNo YXIgbWFjX3N0cltSVEVfRVRIRVJfQUREUl9GTVRfU0laRV07Ci0Jc3RydWN0IHJ0ZV9ldGhlcl9h ZGRyICphZGRyOwotCWludCBpOwotCi0JZm9yIChpID0gMDsgaSA8IGh3LT5tY19hZGRyc19udW07 IGkrKykgewotCQlhZGRyID0gJmh3LT5tY19hZGRyc1tpXTsKLQkJLyogQ2hlY2sgaWYgdGhlcmUg YXJlIGR1cGxpY2F0ZSBhZGRyZXNzZXMgaW4gbWNfYWRkcnNbXSAqLwotCQlpZiAocnRlX2lzX3Nh bWVfZXRoZXJfYWRkcihhZGRyLCBtY19hZGRyKSkgewotCQkJaG5zM19ldGhlcl9mb3JtYXRfYWRk cihtYWNfc3RyLCBSVEVfRVRIRVJfQUREUl9GTVRfU0laRSwKLQkJCQkJICAgICAgIGFkZHIpOwot CQkJaG5zM19lcnIoaHcsICJmYWlsZWQgdG8gYWRkIG1jIG1hYyBhZGRyLCBzYW1lIGFkZHJzIgot CQkJCSAiKCVzKSBpcyBhZGRlZCBieSB0aGUgc2V0X21jX21hY19hZGRyX2xpc3QgIgotCQkJCSAi QVBJIiwgbWFjX3N0cik7Ci0JCQlyZXR1cm4gdHJ1ZTsKLQkJfQotCX0KLQotCXJldHVybiBmYWxz ZTsKLX0KLQotaW50Ci1obnMzX2FkZF9tYWNfYWRkcihzdHJ1Y3QgcnRlX2V0aF9kZXYgKmRldiwg c3RydWN0IHJ0ZV9ldGhlcl9hZGRyICptYWNfYWRkciwKLQkJICBfX3J0ZV91bnVzZWQgdWludDMy X3QgaWR4LCBfX3J0ZV91bnVzZWQgdWludDMyX3QgcG9vbCkKLXsKLQlzdHJ1Y3QgaG5zM19odyAq aHcgPSBITlMzX0RFVl9QUklWQVRFX1RPX0hXKGRldi0+ZGF0YS0+ZGV2X3ByaXZhdGUpOwotCWNo YXIgbWFjX3N0cltSVEVfRVRIRVJfQUREUl9GTVRfU0laRV07Ci0JaW50IHJldDsKLQotCXJ0ZV9z cGlubG9ja19sb2NrKCZody0+bG9jayk7Ci0KLQkvKgotCSAqIEluIGhuczMgbmV0d29yayBlbmdp bmUgYWRkaW5nIFVDIGFuZCBNQyBtYWMgYWRkcmVzcyB3aXRoIGRpZmZlcmVudAotCSAqIGNvbW1h bmRzIHdpdGggZmlybXdhcmUuIFdlIG5lZWQgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgdGhlIGlucHV0 Ci0JICogYWRkcmVzcyBpcyBhIFVDIG9yIGEgTUMgYWRkcmVzcyB0byBjYWxsIGRpZmZlcmVudCBj b21tYW5kcy4KLQkgKiBCeSB0aGUgd2F5LCBpdCBpcyByZWNvbW1lbmRlZCBjYWxsaW5nIHRoZSBB UEkgZnVuY3Rpb24gbmFtZWQKLQkgKiBydGVfZXRoX2Rldl9zZXRfbWNfYWRkcl9saXN0IHRvIHNl dCB0aGUgTUMgbWFjIGFkZHJlc3MsIGJlY2F1c2UKLQkgKiB1c2luZyB0aGUgcnRlX2V0aF9kZXZf bWFjX2FkZHJfYWRkIEFQSSBmdW5jdGlvbiB0byBzZXQgTUMgbWFjIGFkZHJlc3MKLQkgKiBtYXkg YWZmZWN0IHRoZSBzcGVjaWZpY2F0aW9ucyBvZiBVQyBtYWMgYWRkcmVzc2VzLgotCSAqLwotCWlm IChydGVfaXNfbXVsdGljYXN0X2V0aGVyX2FkZHIobWFjX2FkZHIpKSB7Ci0JCWlmIChobnMzX2Zp bmRfZHVwbGljYXRlX21jX2FkZHIoaHcsIG1hY19hZGRyKSkgewotCQkJcnRlX3NwaW5sb2NrX3Vu bG9jaygmaHctPmxvY2spOwotCQkJcmV0dXJuIC1FSU5WQUw7Ci0JCX0KLQkJcmV0ID0gaHctPm9w cy5hZGRfbWNfbWFjX2FkZHIoaHcsIG1hY19hZGRyKTsKLQl9IGVsc2UgewotCQlyZXQgPSBody0+ b3BzLmFkZF91Y19tYWNfYWRkcihodywgbWFjX2FkZHIpOwotCX0KLQlydGVfc3BpbmxvY2tfdW5s b2NrKCZody0+bG9jayk7Ci0JaWYgKHJldCkgewotCQlobnMzX2V0aGVyX2Zvcm1hdF9hZGRyKG1h Y19zdHIsIFJURV9FVEhFUl9BRERSX0ZNVF9TSVpFLAotCQkJCSAgICAgIG1hY19hZGRyKTsKLQkJ aG5zM19lcnIoaHcsICJmYWlsZWQgdG8gYWRkIG1hYyBhZGRyKCVzKSwgcmV0ID0gJWQiLCBtYWNf c3RyLAotCQkJIHJldCk7Ci0JfQotCi0JcmV0dXJuIHJldDsKLX0KLQogc3RhdGljIGludAogaG5z M19yZW1vdmVfdWNfbWFjX2FkZHIoc3RydWN0IGhuczNfaHcgKmh3LCBzdHJ1Y3QgcnRlX2V0aGVy X2FkZHIgKm1hY19hZGRyKQogewpAQCAtMTY5OSwzMCArMTYyOSw2IEBAIGhuczNfcmVtb3ZlX3Vj X21hY19hZGRyKHN0cnVjdCBobnMzX2h3ICpodywgc3RydWN0IHJ0ZV9ldGhlcl9hZGRyICptYWNf YWRkcikKIAlyZXR1cm4gcmV0OwogfQogCi12b2lkCi1obnMzX3JlbW92ZV9tYWNfYWRkcihzdHJ1 Y3QgcnRlX2V0aF9kZXYgKmRldiwgdWludDMyX3QgaWR4KQotewotCXN0cnVjdCBobnMzX2h3ICpo dyA9IEhOUzNfREVWX1BSSVZBVEVfVE9fSFcoZGV2LT5kYXRhLT5kZXZfcHJpdmF0ZSk7Ci0JLyog aW5kZXggd2lsbCBiZSBjaGVja2VkIGJ5IHVwcGVyIGxldmVsIHJ0ZSBpbnRlcmZhY2UgKi8KLQlz dHJ1Y3QgcnRlX2V0aGVyX2FkZHIgKm1hY19hZGRyID0gJmRldi0+ZGF0YS0+bWFjX2FkZHJzW2lk eF07Ci0JY2hhciBtYWNfc3RyW1JURV9FVEhFUl9BRERSX0ZNVF9TSVpFXTsKLQlpbnQgcmV0Owot Ci0JcnRlX3NwaW5sb2NrX2xvY2soJmh3LT5sb2NrKTsKLQotCWlmIChydGVfaXNfbXVsdGljYXN0 X2V0aGVyX2FkZHIobWFjX2FkZHIpKQotCQlyZXQgPSBody0+b3BzLmRlbF9tY19tYWNfYWRkciho dywgbWFjX2FkZHIpOwotCWVsc2UKLQkJcmV0ID0gaHctPm9wcy5kZWxfdWNfbWFjX2FkZHIoaHcs IG1hY19hZGRyKTsKLQlydGVfc3BpbmxvY2tfdW5sb2NrKCZody0+bG9jayk7Ci0JaWYgKHJldCkg ewotCQlobnMzX2V0aGVyX2Zvcm1hdF9hZGRyKG1hY19zdHIsIFJURV9FVEhFUl9BRERSX0ZNVF9T SVpFLAotCQkJCSAgICAgIG1hY19hZGRyKTsKLQkJaG5zM19lcnIoaHcsICJmYWlsZWQgdG8gcmVt b3ZlIG1hYyBhZGRyKCVzKSwgcmV0ID0gJWQiLCBtYWNfc3RyLAotCQkJIHJldCk7Ci0JfQotfQot CiBzdGF0aWMgaW50CiBobnMzX3NldF9kZWZhdWx0X21hY19hZGRyKHN0cnVjdCBydGVfZXRoX2Rl diAqZGV2LAogCQkJICBzdHJ1Y3QgcnRlX2V0aGVyX2FkZHIgKm1hY19hZGRyKQpAQCAtMTc4Nyw0 MSArMTY5Myw2IEBAIGhuczNfc2V0X2RlZmF1bHRfbWFjX2FkZHIoc3RydWN0IHJ0ZV9ldGhfZGV2 ICpkZXYsCiAJcmV0dXJuIHJldDsKIH0KIAotaW50Ci1obnMzX2NvbmZpZ3VyZV9hbGxfbWFjX2Fk ZHIoc3RydWN0IGhuczNfYWRhcHRlciAqaG5zLCBib29sIGRlbCkKLXsKLQljaGFyIG1hY19zdHJb UlRFX0VUSEVSX0FERFJfRk1UX1NJWkVdOwotCXN0cnVjdCBobnMzX2h3ICpodyA9ICZobnMtPmh3 OwotCXN0cnVjdCBobnMzX2h3X29wcyAqb3BzID0gJmh3LT5vcHM7Ci0Jc3RydWN0IHJ0ZV9ldGhl cl9hZGRyICphZGRyOwotCXVpbnQxNl90IG1hY19hZGRyc19jYXBhOwotCWludCByZXQgPSAwOwot CWludCBpOwotCi0JbWFjX2FkZHJzX2NhcGEgPQotCQlobnMtPmlzX3ZmID8gSE5TM19WRl9VQ19N QUNBRERSX05VTSA6IEhOUzNfVUNfTUFDQUREUl9OVU07Ci0JZm9yIChpID0gMDsgaSA8IG1hY19h ZGRyc19jYXBhOyBpKyspIHsKLQkJYWRkciA9ICZody0+ZGF0YS0+bWFjX2FkZHJzW2ldOwotCQlp ZiAocnRlX2lzX3plcm9fZXRoZXJfYWRkcihhZGRyKSkKLQkJCWNvbnRpbnVlOwotCQlpZiAocnRl X2lzX211bHRpY2FzdF9ldGhlcl9hZGRyKGFkZHIpKQotCQkJcmV0ID0gZGVsID8gb3BzLT5kZWxf bWNfbWFjX2FkZHIoaHcsIGFkZHIpIDoKLQkJCSAgICAgIG9wcy0+YWRkX21jX21hY19hZGRyKGh3 LCBhZGRyKTsKLQkJZWxzZQotCQkJcmV0ID0gZGVsID8gb3BzLT5kZWxfdWNfbWFjX2FkZHIoaHcs IGFkZHIpIDoKLQkJCSAgICAgIG9wcy0+YWRkX3VjX21hY19hZGRyKGh3LCBhZGRyKTsKLQotCQlp ZiAocmV0KSB7Ci0JCQlobnMzX2V0aGVyX2Zvcm1hdF9hZGRyKG1hY19zdHIsIFJURV9FVEhFUl9B RERSX0ZNVF9TSVpFLAotCQkJCQkgICAgICAgYWRkcik7Ci0JCQlobnMzX2VycihodywgImZhaWxl ZCB0byAlcyBtYWMgYWRkciglcykgaW5kZXg6JWQgcmV0ID0gJWQuIiwKLQkJCQkgZGVsID8gInJl bW92ZSIgOiAicmVzdG9yZSIsIG1hY19zdHIsIGksIHJldCk7Ci0JCX0KLQl9Ci0KLQlyZXR1cm4g cmV0OwotfQotCiBzdGF0aWMgdm9pZAogaG5zM191cGRhdGVfZGVzY192ZmlkKHN0cnVjdCBobnMz X2NtZF9kZXNjICpkZXNjLCB1aW50OF90IHZmaWQsIGJvb2wgY2xyKQogewpAQCAtMTk0NywxNTAg KzE4MTgsNiBAQCBobnMzX3JlbW92ZV9tY19tYWNfYWRkcihzdHJ1Y3QgaG5zM19odyAqaHcsIHN0 cnVjdCBydGVfZXRoZXJfYWRkciAqbWFjX2FkZHIpCiAJcmV0dXJuIHJldDsKIH0KIAotc3RhdGlj IGludAotaG5zM19zZXRfbWNfYWRkcl9jaGtfcGFyYW0oc3RydWN0IGhuczNfaHcgKmh3LAotCQkJ ICAgc3RydWN0IHJ0ZV9ldGhlcl9hZGRyICptY19hZGRyX3NldCwKLQkJCSAgIHVpbnQzMl90IG5i X21jX2FkZHIpCi17Ci0Jc3RydWN0IGhuczNfYWRhcHRlciAqaG5zID0gSE5TM19ERVZfSFdfVE9f QURBUFRFUihodyk7Ci0JY2hhciBtYWNfc3RyW1JURV9FVEhFUl9BRERSX0ZNVF9TSVpFXTsKLQlz dHJ1Y3QgcnRlX2V0aGVyX2FkZHIgKmFkZHI7Ci0JdWludDE2X3QgbWFjX2FkZHJzX2NhcGE7Ci0J dWludDMyX3QgaTsKLQl1aW50MzJfdCBqOwotCi0JaWYgKG5iX21jX2FkZHIgPiBITlMzX01DX01B Q0FERFJfTlVNKSB7Ci0JCWhuczNfZXJyKGh3LCAiZmFpbGVkIHRvIHNldCBtYyBtYWMgYWRkciwg bmJfbWNfYWRkcigldSkgIgotCQkJICJpbnZhbGlkLiB2YWxpZCByYW5nZTogMH4lZCIsCi0JCQkg bmJfbWNfYWRkciwgSE5TM19NQ19NQUNBRERSX05VTSk7Ci0JCXJldHVybiAtRUlOVkFMOwotCX0K LQotCS8qIENoZWNrIGlmIGlucHV0IG1hYyBhZGRyZXNzZXMgYXJlIHZhbGlkICovCi0JZm9yIChp ID0gMDsgaSA8IG5iX21jX2FkZHI7IGkrKykgewotCQlhZGRyID0gJm1jX2FkZHJfc2V0W2ldOwot CQlpZiAoIXJ0ZV9pc19tdWx0aWNhc3RfZXRoZXJfYWRkcihhZGRyKSkgewotCQkJaG5zM19ldGhl cl9mb3JtYXRfYWRkcihtYWNfc3RyLCBSVEVfRVRIRVJfQUREUl9GTVRfU0laRSwKLQkJCQkJICAg ICAgYWRkcik7Ci0JCQlobnMzX2VycihodywKLQkJCQkgImZhaWxlZCB0byBzZXQgbWMgbWFjIGFk ZHIsIGFkZHIoJXMpIGludmFsaWQuIiwKLQkJCQkgbWFjX3N0cik7Ci0JCQlyZXR1cm4gLUVJTlZB TDsKLQkJfQotCi0JCS8qIENoZWNrIGlmIHRoZXJlIGFyZSBkdXBsaWNhdGUgYWRkcmVzc2VzICov Ci0JCWZvciAoaiA9IGkgKyAxOyBqIDwgbmJfbWNfYWRkcjsgaisrKSB7Ci0JCQlpZiAocnRlX2lz X3NhbWVfZXRoZXJfYWRkcihhZGRyLCAmbWNfYWRkcl9zZXRbal0pKSB7Ci0JCQkJaG5zM19ldGhl cl9mb3JtYXRfYWRkcihtYWNfc3RyLAotCQkJCQkJICAgICAgUlRFX0VUSEVSX0FERFJfRk1UX1NJ WkUsCi0JCQkJCQkgICAgICBhZGRyKTsKLQkJCQlobnMzX2VycihodywgImZhaWxlZCB0byBzZXQg bWMgbWFjIGFkZHIsICIKLQkJCQkJICJhZGRycyBpbnZhbGlkLiB0d28gc2FtZSBhZGRycyglcyku IiwKLQkJCQkJIG1hY19zdHIpOwotCQkJCXJldHVybiAtRUlOVkFMOwotCQkJfQotCQl9Ci0KLQkJ LyoKLQkJICogQ2hlY2sgaWYgdGhlcmUgYXJlIGR1cGxpY2F0ZSBhZGRyZXNzZXMgYmV0d2VlbiBt YWNfYWRkcnMKLQkJICogYW5kIG1jX2FkZHJfc2V0Ci0JCSAqLwotCQltYWNfYWRkcnNfY2FwYSA9 IGhucy0+aXNfdmYgPyBITlMzX1ZGX1VDX01BQ0FERFJfTlVNIDoKLQkJCQkJICAgICAgSE5TM19V Q19NQUNBRERSX05VTTsKLQkJZm9yIChqID0gMDsgaiA8IG1hY19hZGRyc19jYXBhOyBqKyspIHsK LQkJCWlmIChydGVfaXNfc2FtZV9ldGhlcl9hZGRyKGFkZHIsCi0JCQkJCQkgICAmaHctPmRhdGEt Pm1hY19hZGRyc1tqXSkpIHsKLQkJCQlobnMzX2V0aGVyX2Zvcm1hdF9hZGRyKG1hY19zdHIsCi0J CQkJCQkgICAgICAgUlRFX0VUSEVSX0FERFJfRk1UX1NJWkUsCi0JCQkJCQkgICAgICAgYWRkcik7 Ci0JCQkJaG5zM19lcnIoaHcsICJmYWlsZWQgdG8gc2V0IG1jIG1hYyBhZGRyLCAiCi0JCQkJCSAi YWRkcnMgaW52YWxpZC4gYWRkcnMoJXMpIGhhcyBhbHJlYWR5ICIKLQkJCQkJICJjb25maWd1cmVk IGluIG1hY19hZGRyIGFkZCBBUEkiLAotCQkJCQkgbWFjX3N0cik7Ci0JCQkJcmV0dXJuIC1FSU5W QUw7Ci0JCQl9Ci0JCX0KLQl9Ci0KLQlyZXR1cm4gMDsKLX0KLQotaW50Ci1obnMzX3NldF9tY19t YWNfYWRkcl9saXN0KHN0cnVjdCBydGVfZXRoX2RldiAqZGV2LAotCQkJICBzdHJ1Y3QgcnRlX2V0 aGVyX2FkZHIgKm1jX2FkZHJfc2V0LAotCQkJICB1aW50MzJfdCBuYl9tY19hZGRyKQotewotCXN0 cnVjdCBobnMzX2h3ICpodyA9IEhOUzNfREVWX1BSSVZBVEVfVE9fSFcoZGV2LT5kYXRhLT5kZXZf cHJpdmF0ZSk7Ci0Jc3RydWN0IHJ0ZV9ldGhlcl9hZGRyICphZGRyOwotCWludCBjdXJfYWRkcl9u dW07Ci0JaW50IHNldF9hZGRyX251bTsKLQlpbnQgbnVtOwotCWludCByZXQ7Ci0JaW50IGk7Ci0K LQkvKiBDaGVjayBpZiBpbnB1dCBwYXJhbWV0ZXJzIGFyZSB2YWxpZCAqLwotCXJldCA9IGhuczNf c2V0X21jX2FkZHJfY2hrX3BhcmFtKGh3LCBtY19hZGRyX3NldCwgbmJfbWNfYWRkcik7Ci0JaWYg KHJldCkKLQkJcmV0dXJuIHJldDsKLQotCXJ0ZV9zcGlubG9ja19sb2NrKCZody0+bG9jayk7Ci0J Y3VyX2FkZHJfbnVtID0gaHctPm1jX2FkZHJzX251bTsKLQlmb3IgKGkgPSAwOyBpIDwgY3VyX2Fk ZHJfbnVtOyBpKyspIHsKLQkJbnVtID0gY3VyX2FkZHJfbnVtIC0gaSAtIDE7Ci0JCWFkZHIgPSAm aHctPm1jX2FkZHJzW251bV07Ci0JCXJldCA9IGh3LT5vcHMuZGVsX21jX21hY19hZGRyKGh3LCBh ZGRyKTsKLQkJaWYgKHJldCkgewotCQkJcnRlX3NwaW5sb2NrX3VubG9jaygmaHctPmxvY2spOwot CQkJcmV0dXJuIHJldDsKLQkJfQotCi0JCWh3LT5tY19hZGRyc19udW0tLTsKLQl9Ci0KLQlzZXRf YWRkcl9udW0gPSAoaW50KW5iX21jX2FkZHI7Ci0JZm9yIChpID0gMDsgaSA8IHNldF9hZGRyX251 bTsgaSsrKSB7Ci0JCWFkZHIgPSAmbWNfYWRkcl9zZXRbaV07Ci0JCXJldCA9IGh3LT5vcHMuYWRk X21jX21hY19hZGRyKGh3LCBhZGRyKTsKLQkJaWYgKHJldCkgewotCQkJcnRlX3NwaW5sb2NrX3Vu bG9jaygmaHctPmxvY2spOwotCQkJcmV0dXJuIHJldDsKLQkJfQotCi0JCXJ0ZV9ldGhlcl9hZGRy X2NvcHkoYWRkciwgJmh3LT5tY19hZGRyc1tody0+bWNfYWRkcnNfbnVtXSk7Ci0JCWh3LT5tY19h ZGRyc19udW0rKzsKLQl9Ci0JcnRlX3NwaW5sb2NrX3VubG9jaygmaHctPmxvY2spOwotCi0JcmV0 dXJuIDA7Ci19Ci0KLWludAotaG5zM19jb25maWd1cmVfYWxsX21jX21hY19hZGRyKHN0cnVjdCBo bnMzX2FkYXB0ZXIgKmhucywgYm9vbCBkZWwpCi17Ci0JY2hhciBtYWNfc3RyW1JURV9FVEhFUl9B RERSX0ZNVF9TSVpFXTsKLQlzdHJ1Y3QgaG5zM19odyAqaHcgPSAmaG5zLT5odzsKLQlzdHJ1Y3Qg cnRlX2V0aGVyX2FkZHIgKmFkZHI7Ci0JaW50IHJldCA9IDA7Ci0JaW50IGk7Ci0KLQlmb3IgKGkg PSAwOyBpIDwgaHctPm1jX2FkZHJzX251bTsgaSsrKSB7Ci0JCWFkZHIgPSAmaHctPm1jX2FkZHJz W2ldOwotCQlpZiAoIXJ0ZV9pc19tdWx0aWNhc3RfZXRoZXJfYWRkcihhZGRyKSkKLQkJCWNvbnRp bnVlOwotCQlpZiAoZGVsKQotCQkJcmV0ID0gaHctPm9wcy5kZWxfbWNfbWFjX2FkZHIoaHcsIGFk ZHIpOwotCQllbHNlCi0JCQlyZXQgPSBody0+b3BzLmFkZF9tY19tYWNfYWRkcihodywgYWRkcik7 Ci0JCWlmIChyZXQpIHsKLQkJCWhuczNfZXRoZXJfZm9ybWF0X2FkZHIobWFjX3N0ciwgUlRFX0VU SEVSX0FERFJfRk1UX1NJWkUsCi0JCQkJCSAgICAgIGFkZHIpOwotCQkJaG5zM19kYmcoaHcsICJm YWlsZWQgdG8gJXMgbWMgbWFjIGFkZHI6ICVzIHJldCA9ICVkIiwKLQkJCQkgZGVsID8gIlJlbW92 ZSIgOiAiUmVzdG9yZSIsIG1hY19zdHIsIHJldCk7Ci0JCX0KLQl9Ci0JcmV0dXJuIHJldDsKLX0K LQogc3RhdGljIGludAogaG5zM19jaGVja19tcV9tb2RlKHN0cnVjdCBydGVfZXRoX2RldiAqZGV2 KQogewpkaWZmIGEvZHJpdmVycy9uZXQvaG5zMy9obnMzX2V0aGRldi5oIGIvZHJpdmVycy9uZXQv aG5zMy9obnMzX2V0aGRldi5oCShyZWplY3RlZCBodW5rcykKQEAgLTEwNDcsMjggKzEwMzEsMjAg QEAgaG5zM190ZXN0X2FuZF9jbGVhcl9iaXQodW5zaWduZWQgaW50IG5yLCB2b2xhdGlsZSB1aW50 NjRfdCAqYWRkcikKIAlyZXR1cm4gX19hdG9taWNfZmV0Y2hfYW5kKGFkZHIsIH5tYXNrLCBfX0FU T01JQ19SRUxBWEVEKSAmIG1hc2s7CiB9CiAKK3VpbnQzMl90IGhuczNfZ2V0X3NwZWVkX2NhcGEo c3RydWN0IGhuczNfaHcgKmh3KTsKKwogaW50IGhuczNfYnVmZmVyX2FsbG9jKHN0cnVjdCBobnMz X2h3ICpodyk7CiBpbnQgaG5zM19kZXZfZmxvd19vcHNfZ2V0KHN0cnVjdCBydGVfZXRoX2RldiAq ZGV2LAogCQkJICBjb25zdCBzdHJ1Y3QgcnRlX2Zsb3dfb3BzICoqb3BzKTsKIGJvb2wgaG5zM19p c19yZXNldF9wZW5kaW5nKHN0cnVjdCBobnMzX2FkYXB0ZXIgKmhucyk7CiBib29sIGhuczN2Zl9p c19yZXNldF9wZW5kaW5nKHN0cnVjdCBobnMzX2FkYXB0ZXIgKmhucyk7CiB2b2lkIGhuczNfdXBk YXRlX2xpbmtzdGF0dXNfYW5kX2V2ZW50KHN0cnVjdCBobnMzX2h3ICpodywgYm9vbCBxdWVyeSk7 Ci12b2lkIGhuczNfZXRoZXJfZm9ybWF0X2FkZHIoY2hhciAqYnVmLCB1aW50MTZfdCBzaXplLAot CQkJY29uc3Qgc3RydWN0IHJ0ZV9ldGhlcl9hZGRyICpldGhlcl9hZGRyKTsKIGludCBobnMzX2Rl dl9pbmZvc19nZXQoc3RydWN0IHJ0ZV9ldGhfZGV2ICpldGhfZGV2LAogCQkgICAgICAgc3RydWN0 IHJ0ZV9ldGhfZGV2X2luZm8gKmluZm8pOwogdm9pZCBobnMzdmZfdXBkYXRlX2xpbmtfc3RhdHVz KHN0cnVjdCBobnMzX2h3ICpodywgdWludDhfdCBsaW5rX3N0YXR1cywKIAkJCSAgdWludDMyX3Qg bGlua19zcGVlZCwgdWludDhfdCBsaW5rX2R1cGxleCk7Ci12b2lkIGhuczNfcGFyc2VfZGV2YXJn cyhzdHJ1Y3QgcnRlX2V0aF9kZXYgKmRldik7CiB2b2lkIGhuczN2Zl91cGRhdGVfcHVzaF9sc2Nf Y2FwKHN0cnVjdCBobnMzX2h3ICpodywgYm9vbCBzdXBwb3J0ZWQpOwotaW50IGhuczNfY29uZmln dXJlX2FsbF9tY19tYWNfYWRkcihzdHJ1Y3QgaG5zM19hZGFwdGVyICpobnMsIGJvb2wgZGVsKTsK LWludCBobnMzX2NvbmZpZ3VyZV9hbGxfbWFjX2FkZHIoc3RydWN0IGhuczNfYWRhcHRlciAqaG5z LCBib29sIGRlbCk7Ci1pbnQgaG5zM19hZGRfbWFjX2FkZHIoc3RydWN0IHJ0ZV9ldGhfZGV2ICpk ZXYsIHN0cnVjdCBydGVfZXRoZXJfYWRkciAqbWFjX2FkZHIsCi0JCV9fcnRlX3VudXNlZCB1aW50 MzJfdCBpZHgsIF9fcnRlX3VudXNlZCB1aW50MzJfdCBwb29sKTsKLXZvaWQgaG5zM19yZW1vdmVf bWFjX2FkZHIoc3RydWN0IHJ0ZV9ldGhfZGV2ICpkZXYsIHVpbnQzMl90IGlkeCk7Ci1pbnQgaG5z M19zZXRfbWNfbWFjX2FkZHJfbGlzdChzdHJ1Y3QgcnRlX2V0aF9kZXYgKmRldiwKLQkJCXN0cnVj dCBydGVfZXRoZXJfYWRkciAqbWNfYWRkcl9zZXQsCi0JCQkJCQkJdWludDMyX3QgbmJfbWNfYWRk cik7CisKIGludCBobnMzX3Jlc3RvcmVfcHRwKHN0cnVjdCBobnMzX2FkYXB0ZXIgKmhucyk7CiBp bnQgaG5zM19tYnVmX2R5bl9yeF90aW1lc3RhbXBfcmVnaXN0ZXIoc3RydWN0IHJ0ZV9ldGhfZGV2 ICpkZXYsCiAJCQkJICAgIHN0cnVjdCBydGVfZXRoX2NvbmYgKmNvbmYpOwpDaGVja2luZyBwYXRj aCBkcml2ZXJzL25ldC9obnMzL2huczNfZXRoZGV2LmMuLi4KZXJyb3I6IGRyaXZlcnMvbmV0L2hu czMvaG5zM19ldGhkZXYuYzogZG9lcyBub3QgbWF0Y2ggaW5kZXgKQ2hlY2tpbmcgcGF0Y2ggZHJp dmVycy9uZXQvaG5zMy9obnMzX2V0aGRldi5oLi4uCmVycm9yOiBkcml2ZXJzL25ldC9obnMzL2hu czNfZXRoZGV2Lmg6IGRvZXMgbm90IG1hdGNoIGluZGV4CkNoZWNraW5nIHBhdGNoIGRyaXZlcnMv bmV0L2huczMvaG5zM19ldGhkZXZfdmYuYy4uLgplcnJvcjogZHJpdmVycy9uZXQvaG5zMy9obnMz X2V0aGRldl92Zi5jOiBkb2VzIG5vdCBtYXRjaCBpbmRleApDaGVja2luZyBwYXRjaCBkcml2ZXJz L25ldC9obnMzL2huczNfZmRpci5oLi4uCkNoZWNraW5nIHBhdGNoIGRyaXZlcnMvbmV0L2huczMv aG5zM19mbG93LmMuLi4KQ2hlY2tpbmcgcGF0Y2ggZHJpdmVycy9uZXQvaG5zMy9obnMzX2Zsb3cu aC4uLgpBcHBsaWVkIHBhdGNoIGRyaXZlcnMvbmV0L2huczMvaG5zM19mZGlyLmggY2xlYW5seS4K QXBwbGllZCBwYXRjaCBkcml2ZXJzL25ldC9obnMzL2huczNfZmxvdy5jIGNsZWFubHkuCkFwcGxp ZWQgcGF0Y2ggZHJpdmVycy9uZXQvaG5zMy9obnMzX2Zsb3cuaCBjbGVhbmx5LgpDaGVja2luZyBw YXRjaCBkcml2ZXJzL25ldC9obnMzL2huczNfY29tbW9uLmMuLi4KZXJyb3I6IGRyaXZlcnMvbmV0 L2huczMvaG5zM19jb21tb24uYzogZG9lcyBub3QgZXhpc3QgaW4gaW5kZXgKQ2hlY2tpbmcgcGF0 Y2ggZHJpdmVycy9uZXQvaG5zMy9obnMzX2NvbW1vbi5oLi4uCmVycm9yOiBkcml2ZXJzL25ldC9o bnMzL2huczNfY29tbW9uLmg6IGRvZXMgbm90IGV4aXN0IGluIGluZGV4CkNoZWNraW5nIHBhdGNo IGRyaXZlcnMvbmV0L2huczMvaG5zM19jb21tb24uYy4uLgplcnJvcjogZHJpdmVycy9uZXQvaG5z My9obnMzX2NvbW1vbi5jOiBkb2VzIG5vdCBleGlzdCBpbiBpbmRleApDaGVja2luZyBwYXRjaCBk cml2ZXJzL25ldC9obnMzL2huczNfY29tbW9uLmMuLi4KZXJyb3I6IGRyaXZlcnMvbmV0L2huczMv aG5zM19jb21tb24uYzogZG9lcyBub3QgZXhpc3QgaW4gaW5kZXgKQ2hlY2tpbmcgcGF0Y2ggZHJp dmVycy9uZXQvaG5zMy9obnMzX2NvbW1vbi5oLi4uCmVycm9yOiBkcml2ZXJzL25ldC9obnMzL2hu czNfY29tbW9uLmg6IGRvZXMgbm90IGV4aXN0IGluIGluZGV4CkNoZWNraW5nIHBhdGNoIGRyaXZl cnMvbmV0L2huczMvaG5zM19ldGhkZXYuYy4uLgplcnJvcjogZHJpdmVycy9uZXQvaG5zMy9obnMz X2V0aGRldi5jOiBkb2VzIG5vdCBtYXRjaCBpbmRleApDaGVja2luZyBwYXRjaCBkcml2ZXJzL25l dC9obnMzL2huczNfZXRoZGV2LmguLi4KZXJyb3I6IGRyaXZlcnMvbmV0L2huczMvaG5zM19ldGhk ZXYuaDogZG9lcyBub3QgbWF0Y2ggaW5kZXgKQ2hlY2tpbmcgcGF0Y2ggZHJpdmVycy9uZXQvaG5z My9obnMzX2V0aGRldl92Zi5jLi4uCmVycm9yOiBkcml2ZXJzL25ldC9obnMzL2huczNfZXRoZGV2 X3ZmLmM6IGRvZXMgbm90IG1hdGNoIGluZGV4CkNoZWNraW5nIHBhdGNoIGRyaXZlcnMvbmV0L2hu czMvaG5zM190bS5jLi4uCkFwcGxpZWQgcGF0Y2ggZHJpdmVycy9uZXQvaG5zMy9obnMzX3RtLmMg Y2xlYW5seS4KCmh0dHBzOi8vbGFiLmRwZGsub3JnL3Jlc3VsdHMvZGFzaGJvYXJkL3BhdGNoc2V0 cy8xOTg5Ny8KClVOSC1JT0wgRFBESyBDb21tdW5pdHkgTGFiCg== --===============0037173462216949091==--