NetBSD-Bugs archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: kern/42314: IC Plus IP100x PHY support



The following reply was made to PR kern/42314; it has been noted by GNATS.

From: Andrius V <vezhlys%gmail.com@localhost>
To: msaitoh%netbsd.org@localhost, gnats-admin%netbsd.org@localhost, netbsd-bugs%netbsd.org@localhost, 
	tharada%oucrc.org@localhost, gnats-bugs%netbsd.org@localhost
Cc: 
Subject: Re: kern/42314: IC Plus IP100x PHY support
Date: Sat, 28 Sep 2019 23:29:02 +0300

 --00000000000081a60e0593a2dbc1
 Content-Type: text/plain; charset="UTF-8"
 
 Hi,
 
 Attaching my final (I guess) patch which addresses most issues from
 the initial one (auto doesn't need special code, stge part uncommented
 by moving struct to stgereg header file, i386/amd64 kernel configs
 updated) and is based on more recent current branch (OUI was renamed
 and updated in current already), plus some updates with man pages to
 be build properly. I believe it should be in parity with OpenBSD
 driver now but I have only one board for testing. Temporarily created
 a branch in github as well:
 https://github.com/vezhlys/netbsd-src/tree/ipgphy. The problem that
 setting 1000BaseTX specifically won't work is present, but it is the
 same in Open/FreeBSD as well (autonegiotation needs to be used to get
 1GBit speed). Hope, the patch should be relatively easy to adjust and
 apply, if it's OK and there's a plan to do it.
 
 Regards,
 Andrius V
 
 On Tue, Sep 24, 2019 at 1:55 AM Andrius V <vezhlys%gmail.com@localhost> wrote:
 >
 > The following reply was made to PR kern/42314; it has been noted by GNATS.
 >
 > From: Andrius V <vezhlys%gmail.com@localhost>
 > To: kern-bug-people%netbsd.org@localhost, netbsd-bugs%netbsd.org@localhost, tharada%oucrc.org@localhost,
 >         msaitoh%netbsd.org@localhost, gnats-bugs%netbsd.org@localhost, gnats-admin%netbsd.org@localhost
 > Cc:
 > Subject: Re: kern/42314: IC Plus IP100x PHY support
 > Date: Tue, 24 Sep 2019 01:50:49 +0300
 >
 >  It seems like to avoid attaching auto manually, only the removal of
 >  sc->mii_capabilities &= ~BMSR_ANEG; line is needed in ipgphy_match (I
 >  copied it from rgephy but this code was specific to that phy only):
 >
 >  static void
 >  ipgphy_attach(device_t parent, device_t self, void *aux)
 >  {
 >      struct mii_softc *sc = device_private(self);
 >      struct mii_attach_args *ma = aux;
 >      struct mii_data *mii = ma->mii_data;
 >      const struct mii_phydesc *mpd;
 >
 >      mpd = mii_phy_match(ma, ipgphys);
 >      aprint_naive(": Media interface\n");
 >      aprint_normal(": %s, rev. %d\n", mpd->mpd_name, MII_REV(ma->mii_id2));
 >
 >      sc->mii_dev = self;
 >      sc->mii_inst = mii->mii_instance;
 >      sc->mii_phy = ma->mii_phyno;
 >      sc->mii_mpd_oui = MII_OUI(ma->mii_id1, ma->mii_id2);
 >      sc->mii_mpd_model = MII_MODEL(ma->mii_id2);
 >      sc->mii_mpd_rev = MII_REV(ma->mii_id2);
 >      sc->mii_funcs = &ipgphy_funcs;
 >      sc->mii_pdata = mii;
 >      sc->mii_flags = ma->mii_flags;
 >
 >      sc->mii_flags |= MIIF_NOISOLATE;
 >      sc->mii_anegticks = MII_ANEGTICKS_GIGE;
 >
 >      PHY_RESET(sc);
 >
 >      PHY_READ(sc, MII_BMSR, &sc->mii_capabilities);
 >      sc->mii_capabilities &= ma->mii_capmask;
 >
 >      if (sc->mii_capabilities & BMSR_EXTSTAT)
 >          PHY_READ(sc, MII_EXTSR, &sc->mii_extcapabilities);
 >
 >      mii_phy_add_media(sc);
 >      aprint_normal("\n");
 >
 >  }
 >
 >  On Sun, Sep 8, 2019 at 12:00 AM Andrius V <vezhlys%gmail.com@localhost> wrote:
 >  >
 >  > The following reply was made to PR kern/42314; it has been noted by GNATS.
 >  >
 >  > From: Andrius V <vezhlys%gmail.com@localhost>
 >  > To: gnats-bugs%netbsd.org@localhost
 >  > Cc: kern-bug-people%netbsd.org@localhost, gnats-admin%netbsd.org@localhost, netbsd-bugs%netbsd.org@localhost
 >  > Subject: Re: kern/42314: IC Plus IP100x PHY support
 >  > Date: Sat, 7 Sep 2019 23:57:04 +0300
 >  >
 >  >  --000000000000efb2d20591fccc25
 >  >  Content-Type: text/plain; charset="UTF-8"
 >  >
 >  >  Hi,
 >  >
 >  >  Since, I have VIA EPIA-M900 motherboard with VT6130 Ethernet
 >  >  controller and IP1001 phy, I made an effort to port OpenBSD driver,
 >  >  and I prepared initial but not complete patch for PHY support (which
 >  >  is almost a copy of OpenBSD driver with mainly small changes to cater
 >  >  NetBSD specifics). Issues described below (first two I believe are
 >  >  blocking from committing it to NetBSD yet and I need a help to resolve
 >  >  if possible):
 >  >
 >  >  * For some reason direct port fails to work with autonegotation
 >  >  (if_media match fails, there is no auto option available). As a
 >  >  workaround I copied the code below from rgephy.c to add it manually
 >  >  and it worked for me:
 >  >
 >  >  #define    ADD(m, c)    ifmedia_add(&mii->mii_media, (m), (c), NULL)
 >  >  #define    PRINT(n)    aprint_normal("%s%s", sep, (n)); sep = ", "
 >  >
 >  >      ADD(IFM_MAKEWORD(IFM_ETHER, IFM_AUTO, 0, sc->mii_inst), MII_NMEDIA);
 >  >      sep =", ";
 >  >      PRINT("auto");
 >  >
 >  >  I believe it is a hack in this case, since OpenBSD seemingly doesn't
 >  >  need it but for some reason direct port looses auto option in NetBSD.
 >  >  Maybe somebody have idea, why it happened?
 >  >  * Commented out the code with stge revision check in ipgphy_reset
 >  >  (which calls also commented ipgphy_load_dspcode). I guess to implement
 >  >  that I would need to change if_stge driver to move struct into a
 >  >  header file or find another way to get sc_rev. Can someone help me out
 >  >  with that?
 >  >  * I change config for amd64 GENERIC only. I quite certain, it can be
 >  >  added at least to i386, though OpenBSD defined it in most ports.
 >  >  * Same as OpenBSD, manual setting to 1000baseT will fail,
 >  >  autonegotation must be used to get Gigabit Ethernet speed.
 >  >  * OUI in NetBSD is recognized as 0x0009c3, not as 0x0090c3 like it is
 >  >  defined in Open/FreeBSD. Changed it in miidevs.
 >  >
 >  >  Attached the patch below (regen is still needed for miidevs).
 >  >
 >  >  With provided changes, vge successfully auto negotiated for 1Gbit
 >  >  speed (which wasn't the case with general phy):
 >  >  vge0: flags=0x8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
 >  >          capabilities=3f00<IP4CSUM_Rx,IP4CSUM_Tx,TCP4CSUM_Rx,TCP4CSUM_Tx>
 >  >          capabilities=3f00<UDP4CSUM_Rx,UDP4CSUM_Tx>
 >  >          enabled=0
 >  >          ec_capabilities=7<VLAN_MTU,VLAN_HWTAGGING,JUMBO_MTU>
 >  >          ec_enabled=2<VLAN_HWTAGGING>
 >  >          address: xx:xx:xx:xx:xx:xx
 >  >          media: Ethernet autoselect (1000baseT
 >  >  full-duplex,flowcontrol,master,rxpause,txpause)
 >  >          status: active
 >  >          inet 192.168.1.18/24 broadcast 192.168.1.255 flags 0x0
 >  >          inet6 fe80::8c9e:c8a0:eb4b:731f%vge0/64 flags 0x0 scopeid 0x
 >  >
 >  >  from dmesg:
 >  >  ipgphy0 at vge0 phy 22: IP1001 10/100/1000 PHY, rev. 025
 >  >  10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, 1000baseT, 1000baseT-FDX, auto
 >  >
 >  >  P.S. Not sure if original submitter did provide a patch as well but
 >  >  his link is down currently.
 >  >
 >  >  Regards,
 >  >  Andrius V
 >  >
 >  >  On Sat, Nov 14, 2009 at 12:00 AM <tharada%oucrc.org@localhost> wrote:
 >  >  >
 >  >  > >Number:         42314
 >  >  > >Category:       kern
 >  >  > >Synopsis:       IC Plus IP100x PHY support
 >  >  > >Confidential:   no
 >  >  > >Severity:       non-critical
 >  >  > >Priority:       low
 >  >  > >Responsible:    kern-bug-people
 >  >  > >State:          open
 >  >  > >Class:          sw-bug
 >  >  > >Submitter-Id:   net
 >  >  > >Arrival-Date:   Fri Nov 13 22:00:00 +0000 2009
 >  >  > >Originator:     Tomokazu HARADA
 >  >  > >Release:        5.99.22
 >  >  > >Organization:
 >  >  > >Environment:
 >  >  > NetBSD xjazz 5.99.22 NetBSD 5.99.22 (GENERIC) #1: Sat Nov 14 06:05:25 JST 2009  root@xjazz:/usr/obj/sys/arch/i386/compile/GENERIC i386
 >  >  >
 >  >  > >Description:
 >  >  > IC Plus IP1000A/IP1001 10/100/1000 PHY support
 >  >  > (from OpenBSD ipgphy)
 >  >  >
 >  >  > vge0 at pci2 dev 0 function 0: VIA VT612X Gigabit Ethernet (rev. 0x82)
 >  >  > vge0: interrupting at ioapic0 pin 16
 >  >  > vge0: Ethernet address: 00:02:2a:e6:d7:ad
 >  >  > ipgphy0 at vge0 phy 22: IP1001 10/100/1000 PHY, rev. 0
 >  >  > ipgphy0: 10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, 1000baseT, 1000baseT-FDX, auto
 >  >  >
 >  >  > This is a VIA VT6130 PCIe GbE, the phy is integrated on.
 >  >  >
 >  >  > >How-To-Repeat:
 >  >  > N/A
 >  >  > >Fix:
 >  >  > http://tharada.oucrc.org/ipgphy/
 >  >  >
 >  >
 >  >  --000000000000efb2d20591fccc25
 >  >  Content-Type: text/x-patch; charset="US-ASCII"; name="test.patch"
 >  >  Content-Disposition: attachment; filename="test.patch"
 >  >  Content-Transfer-Encoding: base64
 >  >  Content-ID: <f_k09zxctb0>
 >  >  X-Attachment-Id: f_k09zxctb0
 >  >
 >  >  QURERUQgICAgc2hhcmUvbWFuL21hbjQvaXBncGh5LjQKSW5kZXg6IHNoYXJlL21hbi9tYW40L2lw
 >  >  Z3BoeS40Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
 >  >  PT09PT09PT09PT09PT09PQotLS0gc2hhcmUvbWFuL21hbjQvaXBncGh5LjQKKysrIHNoYXJlL21h
 >  >  bi9tYW40L2lwZ3BoeS40CkBAIC0wLDAgKzEsMzggQEAKKy5cIgkkT3BlbkJTRDogaXBncGh5LjQs
 >  >  diAxLjUgMjAwOS8wOC8wOCAxNzoxMjo0MCBuYWRkeSBFeHAgJAorLlwiCisuXCIJJE5ldEJTRDog
 >  >  aXBncGh5LjQkCisuXCIKKy5cIiBDb3B5cmlnaHQgKGMpIDIwMDYgQnJhZCBTbWl0aCA8YnJhZEBv
 >  >  cGVuYnNkLm9yZz4KKy5cIgorLlwiIFBlcm1pc3Npb24gdG8gdXNlLCBjb3B5LCBtb2RpZnksIGFu
 >  >  ZCBkaXN0cmlidXRlIHRoaXMgc29mdHdhcmUgZm9yIGFueQorLlwiIHB1cnBvc2Ugd2l0aCBvciB3
 >  >  aXRob3V0IGZlZSBpcyBoZXJlYnkgZ3JhbnRlZCwgcHJvdmlkZWQgdGhhdCB0aGUgYWJvdmUKKy5c
 >  >  IiBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIGFwcGVhciBpbiBh
 >  >  bGwgY29waWVzLgorLlwiCisuXCIgVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIgQU5E
 >  >  IFRIRSBBVVRIT1IgRElTQ0xBSU1TIEFMTCBXQVJSQU5USUVTCisuXCIgV0lUSCBSRUdBUkQgVE8g
 >  >  VEhJUyBTT0ZUV0FSRSBJTkNMVURJTkcgQUxMIElNUExJRUQgV0FSUkFOVElFUyBPRgorLlwiIE1F
 >  >  UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUy4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBC
 >  >  RSBMSUFCTEUgRk9SCisuXCIgQU5ZIFNQRUNJQUwsIERJUkVDVCwgSU5ESVJFQ1QsIE9SIENPTlNF
 >  >  UVVFTlRJQUwgREFNQUdFUyBPUiBBTlkgREFNQUdFUworLlwiIFdIQVRTT0VWRVIgUkVTVUxUSU5H
 >  >  IEZST00gTE9TUyBPRiBVU0UsIERBVEEgT1IgUFJPRklUUywgV0hFVEhFUiBJTiBBTgorLlwiIEFD
 >  >  VElPTiBPRiBDT05UUkFDVCwgTkVHTElHRU5DRSBPUiBPVEhFUiBUT1JUSU9VUyBBQ1RJT04sIEFS
 >  >  SVNJTkcgT1VUIE9GCisuXCIgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBVU0UgT1IgUEVSRk9S
 >  >  TUFOQ0UgT0YgVEhJUyBTT0ZUV0FSRS4KKy5cIgorLkRkICRNZG9jZGF0ZTogQXVndXN0IDggMjAw
 >  >  OSAkCisuRHQgSVBHUEhZIDQKKy5PcworLlNoIE5BTUUKKy5ObSBpcGdwaHkKKy5OZCBJQyBQbHVz
 >  >  IElQMTAwMEEvSVAxMDAxIDEwLzEwMC9HaWdhYml0IEV0aGVybmV0IFBIWQorLlNoIFNZTk9QU0lT
 >  >  CisuQ2QgImlwZ3BoeSogYXQgbWlpPyIKKy5TaCBERVNDUklQVElPTgorVGhlCisuTm0KK2RyaXZl
 >  >  ciBzdXBwb3J0cyB0aGUgSUMgUGx1cyBJUDEwMDBBL0lQMTAwMSAxMC8xMDAvR2lnYWJpdCBFdGhl
 >  >  cm5ldCBQSFkKK2ludGVyZmFjZS4KKy5TaCBTRUUgQUxTTworLlhyIGlmbWVkaWEgNCAsCisuWHIg
 >  >  aW50cm8gNCAsCisuWHIgbWlpIDQgLAorLlhyIHN0Z2UgNCwKKy5YciB2Z2UgNCwKKy5YciBpZmNv
 >  >  bmZpZyA4CgpJbmRleDogc3lzL2FyY2gvYW1kNjQvY29uZi9HRU5FUklDCj09PT09PT09PT09PT09
 >  >  PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
 >  >  c3lzL2FyY2gvYW1kNjQvY29uZi9HRU5FUklDCisrKyBzeXMvYXJjaC9hbWQ2NC9jb25mL0dFTkVS
 >  >  SUMKQEAgLTg3MSwxMCArODcxLDExIEBACiBpZ3BoeSoJYXQgbWlpPyBwaHkgPwkJCSMgSW50ZWwg
 >  >  SUdQMDFFMTAwMAogaWhwaHkqCWF0IG1paT8gcGh5ID8JCQkjIEludGVsIDgyNTc3IFBIWXMKIGlr
 >  >  cGh5KglhdCBtaWk/IHBoeSA/CQkJIyBJbnRlbCA4MjU2MyBQSFlzCiBpbnBoeSoJYXQgbWlpPyBw
 >  >  aHkgPwkJCSMgSW50ZWwgODI1NTUgUEhZcwogaW9waHkqCWF0IG1paT8gcGh5ID8JCQkjIEludGVs
 >  >  IDgyNTUzIFBIWXMKK2lwZ3BoeSogYXQgbWlpPyBwaHkgPwkJCSMgSUMgUExVUyBJUDEwMDBBL0lQ
 >  >  MTAwMSBQSFlzCiBseHRwaHkqIGF0IG1paT8gcGh5ID8JCQkjIExldmVsIE9uZSBMWFQtOTcwIFBI
 >  >  WXMKIG1ha3BoeSogYXQgbWlpPyBwaHkgPwkJCSMgTWFydmVsbCBTZW1pY29uZHVjdG9yIDg4RTEw
 >  >  MDAgUEhZcwogbnNwaHkqCWF0IG1paT8gcGh5ID8JCQkjIE5TODM4NDAgUEhZcwogbnNwaHl0ZXIq
 >  >  IGF0IG1paT8gcGh5ID8gCQkjIE5TODM4NDMgUEhZcwogcG5hcGh5KiBhdCBtaWk/IHBoeSA/CQkJ
 >  >  IyBnZW5lcmljIEhvbWVQTkEgUEhZcwoKSW5kZXg6IHN5cy9kZXYvREVWTkFNRVMKPT09PT09PT09
 >  >  PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
 >  >  Ci0tLSBzeXMvZGV2L0RFVk5BTUVTCisrKyBzeXMvZGV2L0RFVk5BTUVTCkBAIC02NTcsMTAgKzY1
 >  >  NywxMSBAQAogaW9wbAkJCU1JCiBpb3BzcAkJCU1JCiBpcGFxYnVzCQkJaHBjYXJtCiBpcGFxbGNk
 >  >  CQkJaHBjYXJtCiBpcGFxcGNpYwkJaHBjYXJtCitpcGdwaHkJCQlNSQogaXBtaQkJCWFtZDY0CiBp
 >  >  cG1pCQkJaTM4NgogaXBtaQkJCXhlbgogaXB3CQkJTUkKIGlyZGFzaXIJCQlNSQkJQXR0cmlidXRl
 >  >  CgpJbmRleDogc3lzL2Rldi9taWkvZmlsZXMubWlpCj09PT09PT09PT09PT09PT09PT09PT09PT09
 >  >  PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gc3lzL2Rldi9taWkv
 >  >  ZmlsZXMubWlpCisrKyBzeXMvZGV2L21paS9maWxlcy5taWkKQEAgLTk3LDEwICs5NywxNCBAQAog
 >  >  CiBkZXZpY2UJaWtwaHk6IG1paV9waHkKIGF0dGFjaAlpa3BoeSBhdCBtaWkKIGZpbGUJZGV2L21p
 >  >  aS9pa3BoeS5jCQkJCWlrcGh5CiAKK2RldmljZQlpcGdwaHk6IG1paV9waHkKK2F0dGFjaAlpcGdw
 >  >  aHkgYXQgbWlpCitmaWxlCWRldi9taWkvaXBncGh5LmMJCQlpcGdwaHkKKwogZGV2aWNlCXNxcGh5
 >  >  OiBtaWlfcGh5CiBhdHRhY2gJc3FwaHkgYXQgbWlpCiBmaWxlCWRldi9taWkvc3FwaHkuYwkJCQlz
 >  >  cXBoeQogCiBkZXZpY2UJdHFwaHk6IG1paV9waHkKCkFEREVEICAgIHN5cy9kZXYvbWlpL2lwZ3Bo
 >  >  eS5jCkluZGV4OiBzeXMvZGV2L21paS9pcGdwaHkuYwo9PT09PT09PT09PT09PT09PT09PT09PT09
 >  >  PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHN5cy9kZXYvbWlp
 >  >  L2lwZ3BoeS5jCisrKyBzeXMvZGV2L21paS9pcGdwaHkuYwpAQCAtMCwwICsxLDQyMyBAQAorLyoJ
 >  >  JE9wZW5CU0Q6IGlwZ3BoeS5jLHYgMS4xOSAyMDE1LzA3LzE5IDA2OjI4OjEyIHl1byBFeHAgJAkq
 >  >  LworCisvKi0KKyAqIENvcHlyaWdodCAoYykgMjAwNiwgUHl1biBZb25nSHllb24gPHlvbmdhcmlA
 >  >  RnJlZUJTRC5vcmc+CisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
 >  >  aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
 >  >  ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
 >  >  ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
 >  >  ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSB1bm1v
 >  >  ZGlmaWVkLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucywgYW5kIHRoZSBmb2xsb3dpbmcKKyAqICAg
 >  >  IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
 >  >  ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
 >  >  Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
 >  >  dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
 >  >  aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBBVVRIT1Ig
 >  >  QU5EIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisgKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
 >  >  IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
 >  >  RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
 >  >  VUxBUiBQVVJQT1NFCisgKiBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBB
 >  >  VVRIT1IgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRQorICogRk9SIEFOWSBESVJFQ1QsIElORElS
 >  >  RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyAq
 >  >  IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
 >  >  VUJTVElUVVRFIEdPT0RTCisgKiBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
 >  >  T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikKKyAqIEhPV0VWRVIgQ0FVU0VEIEFORCBP
 >  >  TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUCisg
 >  >  KiBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
 >  >  QVJJU0lORyBJTiBBTlkgV0FZCisgKiBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
 >  >  VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCisgKiBTVUNIIERBTUFHRS4KKyAq
 >  >  CisgKi8KKworLyoKKyAqIERyaXZlciBmb3IgdGhlIElDIFBsdXMgSVAxMDAwQS9JUDEwMDEgMTAv
 >  >  MTAwLzEwMDAgUEhZLgorICovCisjaW5jbHVkZSA8c3lzL2NkZWZzLmg+CisKKyNpbmNsdWRlIDxz
 >  >  eXMvcGFyYW0uaD4KKyNpbmNsdWRlIDxzeXMvc3lzdG0uaD4KKyNpbmNsdWRlIDxzeXMva2VybmVs
 >  >  Lmg+CisjaW5jbHVkZSA8c3lzL2RldmljZS5oPgorI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KKyNp
 >  >  bmNsdWRlIDxzeXMvZXJybm8uaD4KKworI2luY2x1ZGUgPG5ldC9pZi5oPgorI2luY2x1ZGUgPG5l
 >  >  dC9pZl9tZWRpYS5oPgorCisjaW5jbHVkZSA8ZGV2L21paS9taWkuaD4KKyNpbmNsdWRlIDxkZXYv
 >  >  bWlpL21paXZhci5oPgorI2luY2x1ZGUgPGRldi9taWkvbWlpZGV2cy5oPgorCisjaW5jbHVkZSA8
 >  >  ZGV2L21paS9pcGdwaHlyZWcuaD4KKworI2luY2x1ZGUgPGRldi9wY2kvaWZfc3RnZXJlZy5oPgor
 >  >  CitzdGF0aWMgaW50IGlwZ3BoeV9tYXRjaChkZXZpY2VfdCwgY2ZkYXRhX3QsIHZvaWQgKik7Citz
 >  >  dGF0aWMgdm9pZCBpcGdwaHlfYXR0YWNoKGRldmljZV90LCBkZXZpY2VfdCwgdm9pZCAqKTsKKwor
 >  >  Q0ZBVFRBQ0hfREVDTF9ORVcoaXBncGh5LCBzaXplb2Yoc3RydWN0IG1paV9zb2Z0YyksCisgICAg
 >  >  aXBncGh5X21hdGNoLCBpcGdwaHlfYXR0YWNoLCBtaWlfcGh5X2RldGFjaCwgbWlpX3BoeV9hY3Rp
 >  >  dmF0ZSk7CisKK3N0YXRpYyBpbnQJaXBncGh5X3NlcnZpY2Uoc3RydWN0IG1paV9zb2Z0YyAqLCBz
 >  >  dHJ1Y3QgbWlpX2RhdGEgKiwgaW50KTsKK3N0YXRpYyB2b2lkCWlwZ3BoeV9zdGF0dXMoc3RydWN0
 >  >  IG1paV9zb2Z0YyAqKTsKK3N0YXRpYyBpbnQJaXBncGh5X21paV9waHlfYXV0byhzdHJ1Y3QgbWlp
 >  >  X3NvZnRjICopOworLy9zdGF0aWMgdm9pZAlpcGdwaHlfbG9hZF9kc3Bjb2RlKHN0cnVjdCBtaWlf
 >  >  c29mdGMgKik7CitzdGF0aWMgdm9pZAlpcGdwaHlfcmVzZXQoc3RydWN0IG1paV9zb2Z0YyAqKTsK
 >  >  Kworc3RhdGljIGNvbnN0IHN0cnVjdCBtaWlfcGh5X2Z1bmNzIGlwZ3BoeV9mdW5jcyA9IHsKKwlp
 >  >  cGdwaHlfc2VydmljZSwgaXBncGh5X3N0YXR1cywgaXBncGh5X3Jlc2V0LAorfTsKKworc3RhdGlj
 >  >  IGNvbnN0IHN0cnVjdCBtaWlfcGh5ZGVzYyBpcGdwaHlzW10gPSB7CisJTUlJX1BIWV9ERVNDKElD
 >  >  UExVUywgSVAxMDAwQSksCisJTUlJX1BIWV9ERVNDKElDUExVUywgSVAxMDAxKSwKKwlNSUlfUEhZ
 >  >  X0VORCwKK307CisKK3N0YXRpYyBpbnQKK2lwZ3BoeV9tYXRjaChkZXZpY2VfdCBwYXJlbnQsIGNm
 >  >  ZGF0YV90IG1hdGNoLCB2b2lkICphdXgpCit7CisJc3RydWN0IG1paV9hdHRhY2hfYXJncyAqbWEg
 >  >  PSBhdXg7CisKKwlpZiAobWlpX3BoeV9tYXRjaChtYSwgaXBncGh5cykgIT0gTlVMTCkgeworCQly
 >  >  ZXR1cm4gMTA7CisJfQorCXJldHVybiAwOworfQorCitzdGF0aWMgdm9pZAoraXBncGh5X2F0dGFj
 >  >  aChkZXZpY2VfdCBwYXJlbnQsIGRldmljZV90IHNlbGYsIHZvaWQgKmF1eCkKK3sKKwlzdHJ1Y3Qg
 >  >  bWlpX3NvZnRjICpzYyA9IGRldmljZV9wcml2YXRlKHNlbGYpOworCXN0cnVjdCBtaWlfYXR0YWNo
 >  >  X2FyZ3MgKm1hID0gYXV4OworCXN0cnVjdCBtaWlfZGF0YSAqbWlpID0gbWEtPm1paV9kYXRhOwor
 >  >  CWNvbnN0IHN0cnVjdCBtaWlfcGh5ZGVzYyAqbXBkOworCWNvbnN0IGNoYXIgKnNlcCA9ICIiOwor
 >  >  CisJbXBkID0gbWlpX3BoeV9tYXRjaChtYSwgaXBncGh5cyk7CisJYXByaW50X25haXZlKCI6IE1l
 >  >  ZGlhIGludGVyZmFjZVxuIik7CisJYXByaW50X25vcm1hbCgiOiAlcywgcmV2LiAlZFxuIiwgbXBk
 >  >  LT5tcGRfbmFtZSwgTUlJX1JFVihtYS0+bWlpX2lkMikpOworCisJc2MtPm1paV9kZXYgPSBzZWxm
 >  >  OworCXNjLT5taWlfaW5zdCA9IG1paS0+bWlpX2luc3RhbmNlOworCXNjLT5taWlfcGh5ID0gbWEt
 >  >  Pm1paV9waHlubzsKKwlzYy0+bWlpX21wZF9vdWkgPSBNSUlfT1VJKG1hLT5taWlfaWQxLCBtYS0+
 >  >  bWlpX2lkMik7CisJc2MtPm1paV9tcGRfbW9kZWwgPSBNSUlfTU9ERUwobWEtPm1paV9pZDIpOwor
 >  >  CXNjLT5taWlfbXBkX3JldiA9IE1JSV9SRVYobWEtPm1paV9pZDIpOworCXNjLT5taWlfZnVuY3Mg
 >  >  PSAmaXBncGh5X2Z1bmNzOworCXNjLT5taWlfcGRhdGEgPSBtaWk7CisJc2MtPm1paV9mbGFncyA9
 >  >  IG1hLT5taWlfZmxhZ3M7CisKKwlzYy0+bWlpX2ZsYWdzIHw9IE1JSUZfTk9JU09MQVRFOworCXNj
 >  >  LT5taWlfYW5lZ3RpY2tzID0gTUlJX0FORUdUSUNLU19HSUdFOworCisJUEhZX1JFU0VUKHNjKTsK
 >  >  KworCVBIWV9SRUFEKHNjLCBNSUlfQk1TUiwgJnNjLT5taWlfY2FwYWJpbGl0aWVzKTsKKwlzYy0+
 >  >  bWlpX2NhcGFiaWxpdGllcyAmPSBtYS0+bWlpX2NhcG1hc2s7CisJc2MtPm1paV9jYXBhYmlsaXRp
 >  >  ZXMgJj0gfkJNU1JfQU5FRzsKKwlpZiAoc2MtPm1paV9jYXBhYmlsaXRpZXMgJiBCTVNSX0VYVFNU
 >  >  QVQpCisJCVBIWV9SRUFEKHNjLCBNSUlfRVhUU1IsICZzYy0+bWlpX2V4dGNhcGFiaWxpdGllcyk7
 >  >  CisgCisJbWlpX3BoeV9hZGRfbWVkaWEoc2MpOworCQorI2RlZmluZQlBREQobSwgYykJaWZtZWRp
 >  >  YV9hZGQoJm1paS0+bWlpX21lZGlhLCAobSksIChjKSwgTlVMTCkKKyNkZWZpbmUJUFJJTlQobikJ
 >  >  YXByaW50X25vcm1hbCgiJXMlcyIsIHNlcCwgKG4pKTsgc2VwID0gIiwgIgorCQorCUFERChJRk1f
 >  >  TUFLRVdPUkQoSUZNX0VUSEVSLCBJRk1fQVVUTywgMCwgc2MtPm1paV9pbnN0KSwgTUlJX05NRURJ
 >  >  QSk7CisJc2VwID0iLCAiOworCVBSSU5UKCJhdXRvIik7CisKKwlhcHJpbnRfbm9ybWFsKCJcbiIp
 >  >  OworfQorCitzdGF0aWMgaW50CitpcGdwaHlfc2VydmljZShzdHJ1Y3QgbWlpX3NvZnRjICpzYywg
 >  >  c3RydWN0IG1paV9kYXRhICptaWksIGludCBjbWQpCit7CisJc3RydWN0IGlmbWVkaWFfZW50cnkg
 >  >  KmlmZSA9IG1paS0+bWlpX21lZGlhLmlmbV9jdXI7CisJdWludDE2X3QgZ2lnLCByZWcsIHNwZWVk
 >  >  OworCisJc3dpdGNoIChjbWQpIHsKKwljYXNlIE1JSV9QT0xMU1RBVDoKKwkJLyoKKwkJICogSWYg
 >  >  d2UncmUgbm90IHBvbGxpbmcgb3VyIFBIWSBpbnN0YW5jZSwganVzdCByZXR1cm4uCisJCSAqLwor
 >  >  CQlpZiAoSUZNX0lOU1QoaWZlLT5pZm1fbWVkaWEpICE9IHNjLT5taWlfaW5zdCkKKwkJCXJldHVy
 >  >  biAwOworCQlicmVhazsKKworCWNhc2UgTUlJX01FRElBQ0hHOgorCQkvKgorCQkgKiBJZiB0aGUg
 >  >  bWVkaWEgaW5kaWNhdGVzIGEgZGlmZmVyZW50IFBIWSBpbnN0YW5jZSwKKwkJICogaXNvbGF0ZSBv
 >  >  dXJzZWx2ZXMuCisJCSAqLworCQlpZiAoSUZNX0lOU1QoaWZlLT5pZm1fbWVkaWEpICE9IHNjLT5t
 >  >  aWlfaW5zdCkgeworCQkJUEhZX1JFQUQoc2MsIE1JSV9CTUNSLCAmcmVnKTsKKwkJCVBIWV9XUklU
 >  >  RShzYywgTUlJX0JNQ1IsIHJlZyB8IEJNQ1JfSVNPKTsKKwkJCXJldHVybiAwOworCQl9CisKKwkJ
 >  >  LyoKKwkJICogSWYgdGhlIGludGVyZmFjZSBpcyBub3QgdXAsIGRvbid0IGRvIGFueXRoaW5nLgor
 >  >  CQkgKi8KKwkJaWYgKChtaWktPm1paV9pZnAtPmlmX2ZsYWdzICYgSUZGX1VQKSA9PSAwKQorCQkJ
 >  >  YnJlYWs7CisKKwkJUEhZX1JFU0VUKHNjKTsKKworCQlzd2l0Y2ggKElGTV9TVUJUWVBFKGlmZS0+
 >  >  aWZtX21lZGlhKSkgeworCQljYXNlIElGTV9BVVRPOgorCQkJKHZvaWQpaXBncGh5X21paV9waHlf
 >  >  YXV0byhzYyk7CisJCQlnb3RvIGRvbmU7CisJCQlicmVhazsKKworCQljYXNlIElGTV8xMDAwX1Q6
 >  >  CisJCQkvKgorCQkJICogWFhYCisJCQkgKiBNYW51YWwgMTAwMGJhc2VUIHNldHRpbmcgZG9lc24n
 >  >  dCBzZWVtIHRvIHdvcmsuCisJCQkgKi8KKwkJCXNwZWVkID0gQk1DUl9TMTAwMDsKKwkJCWJyZWFr
 >  >  OworCisJCWNhc2UgSUZNXzEwMF9UWDoKKwkJCXNwZWVkID0gQk1DUl9TMTAwOworCQkJYnJlYWs7
 >  >  CisKKwkJY2FzZSBJRk1fMTBfVDoKKwkJCXNwZWVkID0gQk1DUl9TMTA7CisJCQlicmVhazsKKwor
 >  >  CQlkZWZhdWx0OgorCQkJcmV0dXJuIEVJTlZBTDsKKwkJfQorCisJCWlmICgoKGlmZS0+aWZtX21l
 >  >  ZGlhICYgSUZNX0dNQVNLKSAmIElGTV9GRFgpICE9IDApIHsKKwkJCXNwZWVkIHw9IEJNQ1JfRkRY
 >  >  OworCQkJZ2lnID0gR1RDUl9BRFZfMTAwMFRGRFg7CisJCX0gZWxzZQorCQkJZ2lnID0gR1RDUl9B
 >  >  RFZfMTAwMFRIRFg7CisKKwkJUEhZX1dSSVRFKHNjLCBNSUlfMTAwVDJDUiwgMCk7CisJCVBIWV9X
 >  >  UklURShzYywgTUlJX0JNQ1IsIHNwZWVkKTsKKworCQlpZiAoSUZNX1NVQlRZUEUoaWZlLT5pZm1f
 >  >  bWVkaWEpICE9IElGTV8xMDAwX1QpCisJCQlicmVhazsKKworCQlQSFlfV1JJVEUoc2MsIE1JSV8x
 >  >  MDBUMkNSLCBnaWcpOworCQlQSFlfV1JJVEUoc2MsIE1JSV9CTUNSLCBzcGVlZCk7CisKKwkJaWYg
 >  >  KG1paS0+bWlpX21lZGlhLmlmbV9tZWRpYSAmIElGTV9FVEhfTUFTVEVSKQorCQkJZ2lnIHw9IEdU
 >  >  Q1JfTUFOX01TIHwgR1RDUl9BRFZfTVM7CisKKwkJUEhZX1dSSVRFKHNjLCBNSUlfMTAwVDJDUiwg
 >  >  Z2lnKTsKKworZG9uZToKKwkJYnJlYWs7CisKKwljYXNlIE1JSV9USUNLOgorCQkvKgorCQkgKiBJ
 >  >  ZiB3ZSdyZSBub3QgY3VycmVudGx5IHNlbGVjdGVkLCBqdXN0IHJldHVybi4KKwkJICovCisJCWlm
 >  >  IChJRk1fSU5TVChpZmUtPmlmbV9tZWRpYSkgIT0gc2MtPm1paV9pbnN0KQorCQkJcmV0dXJuIDA7
 >  >  CisKKwkJLyoKKwkJICogSXMgdGhlIGludGVyZmFjZSBldmVuIHVwPworCQkgKi8KKwkJaWYgKCht
 >  >  aWktPm1paV9pZnAtPmlmX2ZsYWdzICYgSUZGX1VQKSA9PSAwKQorCQkJcmV0dXJuIDA7CisKKwkJ
 >  >  LyoKKwkJICogT25seSB1c2VkIGZvciBhdXRvbmVnb3RpYXRpb24uCisJCSAqLworCQlpZiAoSUZN
 >  >  X1NVQlRZUEUoaWZlLT5pZm1fbWVkaWEpICE9IElGTV9BVVRPKSB7CisJCQlzYy0+bWlpX3RpY2tz
 >  >  ID0gMDsKKwkJCWJyZWFrOworCQl9CisKKwkJLyoKKwkJICogQ2hlY2sgdG8gc2VlIGlmIHdlIGhh
 >  >  dmUgbGluay4gIElmIHdlIGRvLCB3ZSBkb24ndAorCQkgKiBuZWVkIHRvIHJlc3RhcnQgdGhlIGF1
 >  >  dG9uZWdvdGlhdGlvbiBwcm9jZXNzLiAgUmVhZAorCQkgKiB0aGUgQk1TUiB0d2ljZSBpbiBjYXNl
 >  >  IGl0J3MgbGF0Y2hlZC4KKwkJICovCisJCVBIWV9SRUFEKHNjLCBNSUlfQk1TUiwgJnJlZyk7CisJ
 >  >  CVBIWV9SRUFEKHNjLCBNSUlfQk1TUiwgJnJlZyk7CisJCWlmIChyZWcgJiBCTVNSX0xJTkspIHsK
 >  >  KwkJCS8qCisJCQkgKiBSZXNldCBhdXRvbmVnb3RpYXRpb24gdGltZXIgdG8gMCBpbiBjYXNlIHRo
 >  >  ZSBsaW5rCisJCQkgKiBnb2VzIGRvd24gaW4gdGhlIG5leHQgdGljay4KKwkJCSAqLworCQkJc2Mt
 >  >  Pm1paV90aWNrcyA9IDA7CisJCQkvKiBTZWUgYWJvdmUuICovCisJCQlicmVhazsKKwkJfQorCisJ
 >  >  CS8qIEFubm91bmNlIGxpbmsgbG9zcyByaWdodCBhZnRlciBpdCBoYXBwZW5zICovCisJCWlmIChz
 >  >  Yy0+bWlpX3RpY2tzKysgPT0gMCkKKwkJCWJyZWFrOworCisJCS8qCisJCSAqIE9ubHkgcmV0cnkg
 >  >  YXV0b25lZ290aWF0aW9uIGV2ZXJ5IG1paV9hbmVndGlja3Mgc2Vjb25kcy4KKwkJICovCisJCWlm
 >  >  IChzYy0+bWlpX3RpY2tzIDw9IHNjLT5taWlfYW5lZ3RpY2tzKQorCQkJYnJlYWs7CisKKwkJc2Mt
 >  >  Pm1paV90aWNrcyA9IDA7CisJCWlwZ3BoeV9taWlfcGh5X2F1dG8oc2MpOworCQlicmVhazsKKwl9
 >  >  CisKKwkvKiBVcGRhdGUgdGhlIG1lZGlhIHN0YXR1cy4gKi8KKwlpcGdwaHlfc3RhdHVzKHNjKTsK
 >  >  KworCS8qIENhbGxiYWNrIGlmIHNvbWV0aGluZyBjaGFuZ2VkLiAqLworCW1paV9waHlfdXBkYXRl
 >  >  KHNjLCBjbWQpOworCXJldHVybiAwOworfQorCitzdGF0aWMgdm9pZAoraXBncGh5X3N0YXR1cyhz
 >  >  dHJ1Y3QgbWlpX3NvZnRjICpzYykKK3sKKwlzdHJ1Y3QgbWlpX2RhdGEgKm1paSA9IHNjLT5taWlf
 >  >  cGRhdGE7CisJc3RydWN0IGlmbWVkaWFfZW50cnkgKmlmZSA9IG1paS0+bWlpX21lZGlhLmlmbV9j
 >  >  dXI7CisJdWludDE2X3QgYm1zciwgYm1jciwgc3RhdCwgZ3RzcjsKKworCW1paS0+bWlpX21lZGlh
 >  >  X3N0YXR1cyA9IElGTV9BVkFMSUQ7CisJbWlpLT5taWlfbWVkaWFfYWN0aXZlID0gSUZNX0VUSEVS
 >  >  OworCisJUEhZX1JFQUQoc2MsIE1JSV9CTVNSLCAmYm1zcik7CisJUEhZX1JFQUQoc2MsIE1JSV9C
 >  >  TVNSLCAmYm1zcik7CisJaWYgKGJtc3IgJiBCTVNSX0xJTkspIAorCQltaWktPm1paV9tZWRpYV9z
 >  >  dGF0dXMgfD0gSUZNX0FDVElWRTsKKworCVBIWV9SRUFEKHNjLCBNSUlfQk1DUiwgJmJtY3IpOwor
 >  >  CWlmIChibWNyICYgQk1DUl9MT09QKQorCQltaWktPm1paV9tZWRpYV9hY3RpdmUgfD0gSUZNX0xP
 >  >  T1A7CisKKwlpZiAoYm1jciAmIEJNQ1JfQVVUT0VOKSB7CisJCWlmICgoYm1zciAmIEJNU1JfQUNP
 >  >  TVApID09IDApIHsKKwkJCS8qIEVyZywgc3RpbGwgdHJ5aW5nLCBJIGd1ZXNzLi4uICovCisJCQlt
 >  >  aWktPm1paV9tZWRpYV9hY3RpdmUgfD0gSUZNX05PTkU7CisJCQlyZXR1cm47CisJCX0KKworCQlp
 >  >  ZiAoc2MtPm1paV9tcGRfbW9kZWwgPT0gTUlJX01PREVMX0lDUExVU19JUDEwMDEpIHsKKwkJCVBI
 >  >  WV9SRUFEKHNjLCBJUEdQSFlfTFNSLCAmc3RhdCk7CisJCQlzd2l0Y2ggKHN0YXQgJiBJUEdQSFlf
 >  >  TFNSX1NQRUVEX01BU0spIHsKKwkJCWNhc2UgSVBHUEhZX0xTUl9TUEVFRF8xMDoKKwkJCQltaWkt
 >  >  Pm1paV9tZWRpYV9hY3RpdmUgfD0gSUZNXzEwX1Q7CisJCQkJYnJlYWs7CisJCQljYXNlIElQR1BI
 >  >  WV9MU1JfU1BFRURfMTAwOgorCQkJCW1paS0+bWlpX21lZGlhX2FjdGl2ZSB8PSBJRk1fMTAwX1RY
 >  >  OworCQkJCWJyZWFrOworCQkJY2FzZSBJUEdQSFlfTFNSX1NQRUVEXzEwMDA6CisJCQkJbWlpLT5t
 >  >  aWlfbWVkaWFfYWN0aXZlIHw9IElGTV8xMDAwX1Q7CisJCQkJYnJlYWs7CisJCQlkZWZhdWx0OgkJ
 >  >  CQkKKwkJCQltaWktPm1paV9tZWRpYV9hY3RpdmUgfD0gSUZNX05PTkU7CisJCQkJcmV0dXJuOwor
 >  >  CQkJfQorCisJCQlpZiAoc3RhdCAmIElQR1BIWV9MU1JfRlVMTF9EVVBMRVgpCisJCQkJbWlpLT5t
 >  >  aWlfbWVkaWFfYWN0aXZlIHw9IElGTV9GRFg7CisJCQllbHNlCisJCQkJbWlpLT5taWlfbWVkaWFf
 >  >  YWN0aXZlIHw9IElGTV9IRFg7CisJCX0gZWxzZSB7CisJCQlQSFlfUkVBRChzYywgU1RHRV9QaHlD
 >  >  dHJsLCAmc3RhdCk7CisJCQlzd2l0Y2ggKFBDX0xpbmtTcGVlZChzdGF0KSkgeworCQkJY2FzZSBQ
 >  >  Q19MaW5rU3BlZWRfRG93bjoKKwkJCQltaWktPm1paV9tZWRpYV9hY3RpdmUgfD0gSUZNX05PTkU7
 >  >  CisJCQkJcmV0dXJuOworCQkJY2FzZSBQQ19MaW5rU3BlZWRfMTA6CisJCQkJbWlpLT5taWlfbWVk
 >  >  aWFfYWN0aXZlIHw9IElGTV8xMF9UOworCQkJCWJyZWFrOworCQkJY2FzZSBQQ19MaW5rU3BlZWRf
 >  >  MTAwOgorCQkJCW1paS0+bWlpX21lZGlhX2FjdGl2ZSB8PSBJRk1fMTAwX1RYOworCQkJCWJyZWFr
 >  >  OworCQkJY2FzZSBQQ19MaW5rU3BlZWRfMTAwMDoKKwkJCQltaWktPm1paV9tZWRpYV9hY3RpdmUg
 >  >  fD0gSUZNXzEwMDBfVDsKKwkJCQlicmVhazsKKwkJCWRlZmF1bHQ6CisJCQkJbWlpLT5taWlfbWVk
 >  >  aWFfYWN0aXZlIHw9IElGTV9OT05FOworCQkJCXJldHVybjsKKwkJCX0KKworCQkJaWYgKHN0YXQg
 >  >  JiBQQ19QaHlEdXBsZXhTdGF0dXMpCisJCQkJbWlpLT5taWlfbWVkaWFfYWN0aXZlIHw9IElGTV9G
 >  >  RFg7CisJCQllbHNlCisJCQkJbWlpLT5taWlfbWVkaWFfYWN0aXZlIHw9IElGTV9IRFg7CisJCX0K
 >  >  KworCQlpZiAobWlpLT5taWlfbWVkaWFfYWN0aXZlICYgSUZNX0ZEWCkKKwkJCW1paS0+bWlpX21l
 >  >  ZGlhX2FjdGl2ZSB8PSBtaWlfcGh5X2Zsb3dzdGF0dXMoc2MpOworCisJCWlmIChJRk1fU1VCVFlQ
 >  >  RShtaWktPm1paV9tZWRpYV9hY3RpdmUpID09IElGTV8xMDAwX1QpIHsKKwkJCVBIWV9SRUFEKHNj
 >  >  LCBNSUlfMTAwVDJTUiwgJmd0c3IpOworCQkJaWYgKGd0c3IgJiBHVFNSX01TX1JFUykKKwkJCQlt
 >  >  aWktPm1paV9tZWRpYV9hY3RpdmUgfD0gSUZNX0VUSF9NQVNURVI7CisJCX0KKwl9IGVsc2UKKwkJ
 >  >  bWlpLT5taWlfbWVkaWFfYWN0aXZlID0gaWZlLT5pZm1fbWVkaWE7Cit9CisKK3N0YXRpYyBpbnQK
 >  >  K2lwZ3BoeV9taWlfcGh5X2F1dG8oc3RydWN0IG1paV9zb2Z0YyAqc2MpCit7CisJdWludDE2X3Qg
 >  >  cmVnID0gMDsKKworCWlmIChzYy0+bWlpX21wZF9tb2RlbCA9PSBNSUlfTU9ERUxfSUNQTFVTX0lQ
 >  >  MTAwMSkgeworCQlQSFlfUkVBRChzYywgTUlJX0FOQVIsICZyZWcpOworCQlyZWcgJj0gfihBTkFS
 >  >  X1BBVVNFX1NZTSB8IEFOQVJfUEFVU0VfQVNZTSk7CisJCXJlZyB8PSBBTkFSX05QOworCX0KKwor
 >  >  CXJlZyB8PSBBTkFSXzEwIHwgQU5BUl8xMF9GRCB8IEFOQVJfVFggfCBBTkFSX1RYX0ZEOworCisJ
 >  >  aWYgKHNjLT5taWlfZmxhZ3MgJiBNSUlGX0RPUEFVU0UpCisJCXJlZyB8PSBBTkFSX1BBVVNFX1NZ
 >  >  TSB8IEFOQVJfUEFVU0VfQVNZTTsKKworCVBIWV9XUklURShzYywgTUlJX0FOQVIsIHJlZyB8IEFO
 >  >  QVJfQ1NNQSk7CisKKwlyZWcgPSBHVENSX0FEVl8xMDAwVEZEWCB8IEdUQ1JfQURWXzEwMDBUSERY
 >  >  OworCWlmIChzYy0+bWlpX21wZF9tb2RlbCAhPSBNSUlfTU9ERUxfSUNQTFVTX0lQMTAwMSkKKwkJ
 >  >  cmVnIHw9IEdUQ1JfQURWX01TOworCVBIWV9XUklURShzYywgTUlJXzEwMFQyQ1IsIHJlZyk7CisK
 >  >  KwlQSFlfV1JJVEUoc2MsIE1JSV9CTUNSLCBCTUNSX0ZEWCB8IEJNQ1JfQVVUT0VOIHwgQk1DUl9T
 >  >  VEFSVE5FRyk7CisKKwlyZXR1cm4gRUpVU1RSRVRVUk47Cit9CisKKy8qc3RhdGljIHZvaWQKK2lw
 >  >  Z3BoeV9sb2FkX2RzcGNvZGUoc3RydWN0IG1paV9zb2Z0YyAqc2MpCit7CisJUEhZX1dSSVRFKHNj
 >  >  LCAzMSwgMHgwMDAxKTsKKwlQSFlfV1JJVEUoc2MsIDI3LCAweDAxZTApOworCVBIWV9XUklURShz
 >  >  YywgMzEsIDB4MDAwMik7CisJUEhZX1dSSVRFKHNjLCAyNywgMHhlYjhlKTsKKwlQSFlfV1JJVEUo
 >  >  c2MsIDMxLCAweDAwMDApOworCVBIWV9XUklURShzYywgMzAsIDB4MDA1ZSk7CisJUEhZX1dSSVRF
 >  >  KHNjLCA5LCAweDA3MDApOworCisJREVMQVkoNTApOworfSovCisKK3N0YXRpYyB2b2lkCitpcGdw
 >  >  aHlfcmVzZXQoc3RydWN0IG1paV9zb2Z0YyAqc2MpCit7CisJLy9zdHJ1Y3QgaWZuZXQgKmlmcCA9
 >  >  IHNjLT5taWlfcGRhdGEtPm1paV9pZnA7CisJdWludDE2X3QgcmVnOworCisJbWlpX3BoeV9yZXNl
 >  >  dChzYyk7CisKKwkvKiBjbGVhciBhdXRvbmVnL2Z1bGwtZHVwbGV4IGFzIHdlIGRvbid0IHdhbnQg
 >  >  aXQgYWZ0ZXIgcmVzZXQgKi8KKwlQSFlfUkVBRChzYywgTUlJX0JNQ1IsICZyZWcpOworCXJlZyAm
 >  >  PSB+KEJNQ1JfQVVUT0VOIHwgQk1DUl9GRFgpOworCVBIWV9XUklURShzYywgTUlJX0JNQ1IsIHJl
 >  >  Zyk7CisKKwkvKmlmIChzYy0+bWlpX21wZF9tb2RlbCA9PSBNSUlfTU9ERUxfSUNQTFVTX0lQMTAw
 >  >  MEEgJiYKKwkgICAgc3RyY21wKGlmcC0+aWZfeG5hbWUsICJzdGdlIikgPT0gMCkgeworCQlzdHJ1
 >  >  Y3Qgc3RnZV9zb2Z0YyAqc3RnZV9zYyA9IGlmcC0+aWZfc29mdGM7CisJCWlmIChzdGdlX3NjLT5z
 >  >  Y19yZXYgPj0gMHg0MCAmJiBzdGdlX3NjLT5zY19yZXYgPD0gMHg0ZSkKKwkJCWlwZ3BoeV9sb2Fk
 >  >  X2RzcGNvZGUoc2MpOworCX0qLworfQoKQURERUQgICAgc3lzL2Rldi9taWkvaXBncGh5cmVnLmgK
 >  >  SW5kZXg6IHN5cy9kZXYvbWlpL2lwZ3BoeXJlZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
 >  >  PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gc3lzL2Rldi9taWkv
 >  >  aXBncGh5cmVnLmgKKysrIHN5cy9kZXYvbWlpL2lwZ3BoeXJlZy5oCkBAIC0wLDAgKzEsODMgQEAK
 >  >  Ky8qCSRPcGVuQlNEOiBpcGdwaHlyZWcuaCx2IDEuMyAyMDE1LzA3LzE5IDA2OjI4OjEyIHl1byBF
 >  >  eHAgJAkqLworCisvKi0KKyAqIENvcHlyaWdodCAoYykgMjAwNiwgUHl1biBZb25nSHllb24KKyAq
 >  >  IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgICAgICAgICAgICAgCisgKiBSZWRpc3RyaWJ1dGlv
 >  >  biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
 >  >  IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
 >  >  Y29uZGl0aW9ucworICogYXJlIG1ldDogICAgICAgICAgICAgCisgKiAxLiBSZWRpc3RyaWJ1dGlv
 >  >  bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
 >  >  bm90aWNlIHVubW9kaWZpZWQsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zLCBhbmQgdGhlIGZvbGxv
 >  >  d2luZworICogICAgZGlzY2xhaW1lci4gIAorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
 >  >  eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
 >  >  dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
 >  >  aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
 >  >  aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
 >  >  WSBUSEUgQVVUSE9SIEFORCBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorICogQU5ZIEVYUFJF
 >  >  U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
 >  >  VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
 >  >  IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQorICogQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
 >  >  VCBTSEFMTCBUSEUgQVVUSE9SIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUKKyAqIEZPUiBBTlkg
 >  >  RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
 >  >  RVFVRU5USUFMCisgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
 >  >  Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUworICogT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
 >  >  LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pCisgKiBIT1dFVkVS
 >  >  IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
 >  >  Q1QsIFNUUklDVAorICogTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
 >  >  UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWQorICogT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
 >  >  UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgorICogU1VD
 >  >  SCBEQU1BR0UuCisgKgorICovCisKKyNpZm5kZWYgX0RFVl9NSUlfSVBHUEhZUkVHX0hfCisjZGVm
 >  >  aW5lIF9ERVZfTUlJX0lQR1BIWVJFR19IXworCisvKgorICogUmVnaXN0ZXJzIGZvciB0aGUgSUMg
 >  >  UGx1cyBJUEdBIGludGVybmFsIFBIWS4KKyAqLworCisvKiBQSFkgc3BlY2lmaWMgY29udHJvbCAm
 >  >  IHN0YXR1cyByZWdpc3Rlci4gSVAxMDAxIG9ubHkuICovCisjZGVmaW5lIElQR1BIWV9TQ1NSCQkJ
 >  >  MHgxMAorI2RlZmluZSBJUEdQSFlfU0NTUl9SWFBIQVNFX1NFTAkweDAwMDEKKyNkZWZpbmUgSVBH
 >  >  UEhZX1NDU1JfVFhQSEFTRV9TRUwJMHgwMDAyCisjZGVmaW5lIElQR1BIWV9TQ1NSX1JFUEVBVE9S
 >  >  X01PREUJMHgwMDA0CisjZGVmaW5lIElQR1BIWV9TQ1NSX1JFU0VSVkVEMV9ERUYJMHgwMDA4Cisj
 >  >  ZGVmaW5lIElQR1BIWV9TQ1NSX1JYQ0xLX0RSVl9NQVNLCTB4MDA2MAorI2RlZmluZSBJUEdQSFlf
 >  >  U0NTUl9SWENMS19EUlZfREVGCTB4MDA0MAorI2RlZmluZSBJUEdQSFlfU0NTUl9SWERfRFJWX01B
 >  >  U0sJMHgwMTgwCisjZGVmaW5lIElQR1BIWV9TQ1NSX1JYRF9EUlZfREVGCTB4MDEwMAorI2RlZmlu
 >  >  ZSBJUEdQSFlfU0NTUl9KQUJCRVJfRU5CCTB4MDIwMAorI2RlZmluZSBJUEdQSFlfU0NTUl9IRUFS
 >  >  VF9CRUFUX0VOQgkweDA0MDAKKyNkZWZpbmUgSVBHUEhZX1NDU1JfRE9XTlNISUZUX0VOQgkweDA4
 >  >  MDAKKyNkZWZpbmUgSVBHUEhZX1NDU1JfUkVTRVJWRUQyX0RFRgkweDEwMDAKKyNkZWZpbmUgSVBH
 >  >  UEhZX1NDU1JfTEVEX0RSVl80TUEJMHgwMDAwCisjZGVmaW5lIElQR1BIWV9TQ1NSX0xFRF9EUlZf
 >  >  OE1BCTB4MjAwMAorI2RlZmluZSBJUEdQSFlfU0NTUl9MRURfTU9ERV9NQVNLCTB4QzAwMAorI2Rl
 >  >  ZmluZSBJUEdQSFlfU0NTUl9MRURfTU9ERV9ERUYJMHgwMDAwCisKKy8qIFBIWSBsaW5rIHN0YXR1
 >  >  cyByZWdpc3Rlci4gSVAxMDAxIG9ubHkuICovCisjZGVmaW5lIElQR1BIWV9MU1IJCQkweDExCisj
 >  >  ZGVmaW5lIElQR1BIWV9MU1JfSkFCQkVSX0RFVAkweDAyMDAKKyNkZWZpbmUgSVBHUEhZX0xTUl9B
 >  >  UFNfU0xFRVAJCTB4MDQwMAorI2RlZmluZSBJUEdQSFlfTFNSX01ESVgJCTB4MDgwMAorI2RlZmlu
 >  >  ZSBJUEdQSFlfTFNSX0ZVTExfRFVQTEVYCTB4MTAwMAorI2RlZmluZSBJUEdQSFlfTFNSX1NQRUVE
 >  >  XzEwCQkweDAwMDAKKyNkZWZpbmUgSVBHUEhZX0xTUl9TUEVFRF8xMDAJCTB4MjAwMAorI2RlZmlu
 >  >  ZSBJUEdQSFlfTFNSX1NQRUVEXzEwMDAJMHg0MDAwCisjZGVmaW5lIElQR1BIWV9MU1JfU1BFRURf
 >  >  TUFTSwkweDYwMDAKKyNkZWZpbmUgSVBHUEhZX0xTUl9MSU5LVVAJCTB4ODAwMAorCisvKiBQSFkg
 >  >  c3BlY2lmaWMgY29udHJvbCByZWdpc3RlciAyLiBJUDEwMDEgb25seS4gKi8KKyNkZWZpbmUgSVBH
 >  >  UEhZX1NDUgorI2RlZmluZSBJUEdQSFlfU0NSX1NFV19SQVRFX01BU0sJMHgwMDAzCisjZGVmaW5l
 >  >  IElQR1BIWV9TQ1JfU0VXX1JBVEVfREVGCTB4MDAwMworI2RlZmluZSBJUEdQSFlfU0NSX0FVVE9f
 >  >  WE9WRVIJMHgwMDA0CisjZGVmaW5lIElQR1BIWV9TQ1JfU1BFRURfMTBfMTAwX0VOQgkweDAwNDAK
 >  >  KyNkZWZpbmUgSVBHUEhZX1NDUl9GSUZPX0xBVEVOQ1lfMgkweDAwMDAKKyNkZWZpbmUgSVBHUEhZ
 >  >  X1NDUl9GSUZPX0xBVEVOQ1lfMwkweDAwODAKKyNkZWZpbmUgSVBHUEhZX1NDUl9GSUZPX0xBVEVO
 >  >  Q1lfNAkweDAxMDAKKyNkZWZpbmUgSVBHUEhZX1NDUl9GSUZPX0xBVEVOQ1lfNQkweDAxODAKKyNk
 >  >  ZWZpbmUgSVBHUEhZX1NDUl9NRElYX0VOQgkJMHgwMjAwCisjZGVmaW5lIElQR1BIWV9TQ1JfUkVT
 >  >  RVJWRURfREVGCTB4MDQwMAorI2RlZmluZSBJUEdQSFlfU0NSX0FQU19PTgkJMHgwODAwCisKKyNl
 >  >  bmRpZiAvKiBfREVWX01JSV9JUEdQSFlSRUdfSF8gKi8KCkluZGV4OiBzeXMvZGV2L21paS9taWlk
 >  >  ZXZzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
 >  >  PT09PT09PT09PT09PQotLS0gc3lzL2Rldi9taWkvbWlpZGV2cworKysgc3lzL2Rldi9taWkvbWlp
 >  >  ZGV2cwpAQCAtNzQsMTEgKzc0LDExIEBACiBvdWkgTUFSVkVMTAkJCTB4MDA1MDQzCU1hcnZlbGwg
 >  >  U2VtaWNvbmR1Y3Rvcgogb3VpIFFVQUxTRU1JCQkJMHgwMDYwNTEJUXVhbGl0eSBTZW1pY29uZHVj
 >  >  dG9yCiBvdWkgQU1MT0dJQwkJCTB4MDA2MDUxCUFtbG9naWMKIG91aSBEQVZJQ09NCQkJMHgwMDYw
 >  >  NmUJRGF2aWNvbSBTZW1pY29uZHVjdG9yCiBvdWkgU01TQwkJCTB4MDA4MDBmCVNNU0MKLW91aSBJ
 >  >  Q1BMVVMJCQkweDAwOTBjMwlJQyBQbHVzIENvcnAuCitvdWkgSUNQTFVTCQkJMHgwMDA5YzMJSUMg
 >  >  UGx1cyBDb3JwLgogb3VpIFNFRVEJCQkweDAwYTA3ZAlTZWVxCiBvdWkgSUNTCQkJCTB4MDBhMGJl
 >  >  CUludGVncmF0ZWQgQ2lyY3VpdCBTeXN0ZW1zCiBvdWkgSU5URUwJCQkweDAwYWEwMAlJbnRlbAog
 >  >  b3VpIFRTQwkJCQkweDAwYzAzOQlUREsgU2VtaWNvbmR1Y3Rvcgogb3VpIE1ZU09OCQkJMHgwMGMw
 >  >  YjQJTXlzb24gVGVjaG5vbG9neQoK
 >  >  --000000000000efb2d20591fccc25--
 >  >
 >
 
 --00000000000081a60e0593a2dbc1
 Content-Type: text/x-patch; charset="US-ASCII"; name="ipgphy_patch.diff"
 Content-Disposition: attachment; filename="ipgphy_patch.diff"
 Content-Transfer-Encoding: base64
 Content-ID: <f_k13zkkzh0>
 X-Attachment-Id: f_k13zkkzh0
 
 ZGlmZiAtLWdpdCBhL2Rpc3RyaWIvc2V0cy9saXN0cy9tYW4vbWkgYi9kaXN0cmliL3NldHMvbGlz
 dHMvbWFuL21pCmluZGV4IGNiZjEyM2Y1OTkzLi4zYzQzMTliZmRlNCAxMDA2NDQKLS0tIGEvZGlz
 dHJpYi9zZXRzL2xpc3RzL21hbi9taQorKysgYi9kaXN0cmliL3NldHMvbGlzdHMvbWFuL21pCkBA
 IC0xMzM2LDYgKzEzMzYsNyBAQAogLi91c3Ivc2hhcmUvbWFuL2NhdDQvaXA2LjAJCQltYW4tc3lz
 LWNhdG1hbgkJLmNhdAogLi91c3Ivc2hhcmUvbWFuL2NhdDQvaXBmLjAJCQltYW4taXBmLWNhdG1h
 bgkJaXBmaWx0ZXIsLmNhdAogLi91c3Ivc2hhcmUvbWFuL2NhdDQvaXBmaWx0ZXIuMAkJCW1hbi1p
 cGYtY2F0bWFuCQlpcGZpbHRlciwuY2F0CisuL3Vzci9zaGFyZS9tYW4vY2F0NC9pcGdwaHkuMAkJ
 CW1hbi1zeXMtY2F0bWFuCQkuY2F0CiAuL3Vzci9zaGFyZS9tYW4vY2F0NC9pcGlwLjAJCQltYW4t
 b2Jzb2xldGUJCW9ic29sZXRlCiAuL3Vzci9zaGFyZS9tYW4vY2F0NC9pcGtkYi4wCQkJbWFuLW9i
 c29sZXRlCQlvYnNvbGV0ZQogLi91c3Ivc2hhcmUvbWFuL2NhdDQvaXBsLjAJCQltYW4taXBmLWNh
 dG1hbgkJaXBmaWx0ZXIsLmNhdApAQCAtNDQ3Nyw2ICs0NDc4LDcgQEAKIC4vdXNyL3NoYXJlL21h
 bi9odG1sNC9pcDYuaHRtbAkJCW1hbi1zeXMtaHRtbG1hbgkJaHRtbAogLi91c3Ivc2hhcmUvbWFu
 L2h0bWw0L2lwZi5odG1sCQkJbWFuLWlwZi1odG1sbWFuCQlpcGZpbHRlcixodG1sCiAuL3Vzci9z
 aGFyZS9tYW4vaHRtbDQvaXBmaWx0ZXIuaHRtbAkJbWFuLWlwZi1odG1sbWFuCQlpcGZpbHRlcixo
 dG1sCisuL3Vzci9zaGFyZS9tYW4vaHRtbDQvaXBncGh5Lmh0bWwJCW1hbi1zeXMtaHRtbG1hbgkJ
 aHRtbAogLi91c3Ivc2hhcmUvbWFuL2h0bWw0L2lwa2RiLmh0bWwJCW1hbi1vYnNvbGV0ZQkJb2Jz
 b2xldGUKIC4vdXNyL3NoYXJlL21hbi9odG1sNC9pcGwuaHRtbAkJCW1hbi1pcGYtaHRtbG1hbgkJ
 aXBmaWx0ZXIsaHRtbAogLi91c3Ivc2hhcmUvbWFuL2h0bWw0L2lwbWkuaHRtbAkJCW1hbi1zeXMt
 aHRtbG1hbgkJaHRtbApAQCAtNzQ1NCw2ICs3NDU2LDcgQEAKIC4vdXNyL3NoYXJlL21hbi9tYW40
 L2lwNi40CQkJbWFuLXN5cy1tYW4JCS5tYW4KIC4vdXNyL3NoYXJlL21hbi9tYW40L2lwZi40CQkJ
 bWFuLXN5cy1tYW4JCWlwZmlsdGVyLC5tYW4KIC4vdXNyL3NoYXJlL21hbi9tYW40L2lwZmlsdGVy
 LjQJCQltYW4tc3lzLW1hbgkJaXBmaWx0ZXIsLm1hbgorLi91c3Ivc2hhcmUvbWFuL21hbjQvaXBn
 cGh5LjQJCQltYW4tc3lzLW1hbgkJLm1hbgogLi91c3Ivc2hhcmUvbWFuL21hbjQvaXBpcC40CQkJ
 bWFuLW9ic29sZXRlCQlvYnNvbGV0ZQogLi91c3Ivc2hhcmUvbWFuL21hbjQvaXBrZGIuNAkJCW1h
 bi1vYnNvbGV0ZQkJb2Jzb2xldGUKIC4vdXNyL3NoYXJlL21hbi9tYW40L2lwbC40CQkJbWFuLXN5
 cy1tYW4JCWlwZmlsdGVyLC5tYW4KZGlmZiAtLWdpdCBhL3NoYXJlL21hbi9tYW40L01ha2VmaWxl
 IGIvc2hhcmUvbWFuL21hbjQvTWFrZWZpbGUKaW5kZXggNGRjNjg2OGE4OWIuLjIyN2M0OWNkM2Mx
 IDEwMDY0NAotLS0gYS9zaGFyZS9tYW4vbWFuNC9NYWtlZmlsZQorKysgYi9zaGFyZS9tYW4vbWFu
 NC9NYWtlZmlsZQpAQCAtMzIsNyArMzIsNyBAQCBNQU49CWFhYy40IGFjOTcuNCBhY2FyZGlkZS40
 IGFjZXJpZGUuNCBhY3BoeS40IFwKIAlpYm1jZC40IGlibWhhd2suNCBpY2hzbWIuNCBpY21wLjQg
 aWNwLjQgaWNzcGh5LjQgaWVlLjQgaWVlZTgwMjExLjQgXAogCWlmbWVkaWEuNCBpZ21hZmIuNCBp
 Z3BoeS40IGlnc2ZiLjQgaWhhLjQgaWhpZGV2LjQgaWhwaHkuNCBpaWMuNCBpbXMuNCBcCiAJaW5l
 dC40IGlrcGh5LjQgaW5waHkuNCBpbnRlcnNpbDcxNzAuNCBpbnRyby40IFwKLQlpb2FzaWMuNCBp
 b2F0LjQgaW9wLjQgaW9waHkuNCBpb3BzcC40IGlwLjQgaXBtaS40IGlwdy40IFwKKwlpb2FzaWMu
 NCBpb2F0LjQgaW9wLjQgaW9waHkuNCBpb3BzcC40IGlwLjQgaXBncGh5LjQgaXBtaS40IGlwdy40
 IFwKIAlpcm1jZS40IGlzcC40IGlzbXQuNCBpc3YuNCBpdGVzaW8uNCBpdGVpZGUuNCBpd2kuNCBp
 d20uNCBpd24uNCBpeGcuNCBcCiAJaXhwaWRlLjQgaXh2LjQgXAogCWptZS40IGptaWRlLjQgam95
 LjQgXApkaWZmIC0tZ2l0IGEvc2hhcmUvbWFuL21hbjQvaXBncGh5LjQgYi9zaGFyZS9tYW4vbWFu
 NC9pcGdwaHkuNApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uYzFhZTJl
 Y2JmMDcKLS0tIC9kZXYvbnVsbAorKysgYi9zaGFyZS9tYW4vbWFuNC9pcGdwaHkuNApAQCAtMCww
 ICsxLDM0IEBACisuXCIJJE9wZW5CU0Q6IGlwZ3BoeS40LHYgMS41IDIwMDkvMDgvMDggMTc6MTI6
 NDAgbmFkZHkgRXhwICQKKy5cIgorLlwiIENvcHlyaWdodCAoYykgMjAwNiBCcmFkIFNtaXRoIDxi
 cmFkQG9wZW5ic2Qub3JnPgorLlwiCisuXCIgUGVybWlzc2lvbiB0byB1c2UsIGNvcHksIG1vZGlm
 eSwgYW5kIGRpc3RyaWJ1dGUgdGhpcyBzb2Z0d2FyZSBmb3IgYW55CisuXCIgcHVycG9zZSB3aXRo
 IG9yIHdpdGhvdXQgZmVlIGlzIGhlcmVieSBncmFudGVkLCBwcm92aWRlZCB0aGF0IHRoZSBhYm92
 ZQorLlwiIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2UgYXBwZWFy
 IGluIGFsbCBjb3BpZXMuCisuXCIKKy5cIiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElT
 IiBBTkQgVEhFIEFVVEhPUiBESVNDTEFJTVMgQUxMIFdBUlJBTlRJRVMKKy5cIiBXSVRIIFJFR0FS
 RCBUTyBUSElTIFNPRlRXQVJFIElOQ0xVRElORyBBTEwgSU1QTElFRCBXQVJSQU5USUVTIE9GCisu
 XCIgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTLiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVU
 SE9SIEJFIExJQUJMRSBGT1IKKy5cIiBBTlkgU1BFQ0lBTCwgRElSRUNULCBJTkRJUkVDVCwgT1Ig
 Q09OU0VRVUVOVElBTCBEQU1BR0VTIE9SIEFOWSBEQU1BR0VTCisuXCIgV0hBVFNPRVZFUiBSRVNV
 TFRJTkcgRlJPTSBMT1NTIE9GIFVTRSwgREFUQSBPUiBQUk9GSVRTLCBXSEVUSEVSIElOIEFOCisu
 XCIgQUNUSU9OIE9GIENPTlRSQUNULCBORUdMSUdFTkNFIE9SIE9USEVSIFRPUlRJT1VTIEFDVElP
 TiwgQVJJU0lORyBPVVQgT0YKKy5cIiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFVTRSBPUiBQ
 RVJGT1JNQU5DRSBPRiBUSElTIFNPRlRXQVJFLgorLlwiCisuRGQgJE1kb2NkYXRlOiBBdWd1c3Qg
 OCAyMDA5ICQKKy5EdCBJUEdQSFkgNAorLk9zCisuU2ggTkFNRQorLk5tIGlwZ3BoeQorLk5kIElD
 IFBsdXMgSVAxMDAwQS9JUDEwMDEgMTAvMTAwL0dpZ2FiaXQgRXRoZXJuZXQgUEhZCisuU2ggU1lO
 T1BTSVMKKy5DZCAiaXBncGh5KiBhdCBtaWk/IgorLlNoIERFU0NSSVBUSU9OCitUaGUKKy5ObQor
 ZHJpdmVyIHN1cHBvcnRzIHRoZSBJQyBQbHVzIElQMTAwMEEvSVAxMDAxIDEwLzEwMC9HaWdhYml0
 IEV0aGVybmV0IFBIWQoraW50ZXJmYWNlLgorLlNoIFNFRSBBTFNPCisuWHIgaWZtZWRpYSA0ICwK
 Ky5YciBpbnRybyA0ICwKKy5YciBtaWkgNCAsCisuWHIgaWZjb25maWcgOApkaWZmIC0tZ2l0IGEv
 c2hhcmUvbWFuL21hbjQvbWlpLjQgYi9zaGFyZS9tYW4vbWFuNC9taWkuNAppbmRleCA3MzRhODVh
 YWQyOC4uMjliMjlhZjFkMTIgMTAwNjQ0Ci0tLSBhL3NoYXJlL21hbi9tYW40L21paS40CisrKyBi
 L3NoYXJlL21hbi9tYW40L21paS40CkBAIC00OSw2ICs0OSw3IEBACiAuQ2QgImlrcGh5KiAgICBh
 dCBtaWk/IHBoeSA/CQkjIEludGVsIDgyNTYzIFBIWXMiCiAuQ2QgImlucGh5KiAgICBhdCBtaWk/
 IHBoeSA/CQkjIEludGVsIDgyNTU1IFBIWXMiCiAuQ2QgImlvcGh5KiAgICBhdCBtaWk/IHBoeSA/
 CQkjIEludGVsIDgyNTUzIFBIWXMiCisuQ2QgImlwZ3BoeSogICBhdCBtaWk/IHBoeSA/CQkjIElD
 IFBMVVMgSVAxMDAwQS9JUDEwMDEgUEhZcyIKIC5DZCAibHh0cGh5KiAgIGF0IG1paT8gcGh5ID8J
 CSMgTGV2ZWwgT25lIExYVC05NzAgUEhZcyIKIC5DZCAibWFrcGh5KiAgIGF0IG1paT8gcGh5ID8J
 CSMgTWFydmVsIDg4RTEwMDAgR2lnLUUgUEhZcyIKIC5DZCAibWljcGh5KiAgIGF0IG1paT8gcGh5
 ID8JCSMgTWljcmVsIEtTWjkwMjEgR2lnLUUgUEhZcyIKZGlmZiAtLWdpdCBhL3NoYXJlL21hbi9t
 YW40L3ZnZS40IGIvc2hhcmUvbWFuL21hbjQvdmdlLjQKaW5kZXggNjJiYjMxOTM5MTIuLjI2Mzhj
 ODBjOWNmIDEwMDY0NAotLS0gYS9zaGFyZS9tYW4vbWFuNC92Z2UuNAorKysgYi9zaGFyZS9tYW4v
 bWFuNC92Z2UuNApAQCAtMTgwLDYgKzE4MCw3IEBAIHRoZSBuZXR3b3JrIGNvbm5lY3Rpb24gKGNh
 YmxlKS4gRHJpdmVyIHJlc2V0cyB0aGUgZGV2aWNlLgogLlNoIFNFRSBBTFNPCiAuWHIgYXJwIDQg
 LAogLlhyIGNpcGh5IDQgLAorLlhyIGlwZ3BoeSA0ICwKIC5YciBtaWkgNCAsCiAuWHIgbmV0aW50
 cm8gNCAsCiAuWHIgdWtwaHkgNCAsCmRpZmYgLS1naXQgYS9zeXMvYXJjaC9hbWQ2NC9jb25mL0FM
 TCBiL3N5cy9hcmNoL2FtZDY0L2NvbmYvQUxMCmluZGV4IGUzMzI5MzllNTZhLi42MTAxYTZlZGI4
 MiAxMDA2NDQKLS0tIGEvc3lzL2FyY2gvYW1kNjQvY29uZi9BTEwKKysrIGIvc3lzL2FyY2gvYW1k
 NjQvY29uZi9BTEwKQEAgLTExMDQsNiArMTEwNCw3IEBAIGlocGh5KglhdCBtaWk/IHBoeSA/CQkJ
 IyBJbnRlbCA4MjU3NyBQSFlzCiBpa3BoeSoJYXQgbWlpPyBwaHkgPwkJCSMgSW50ZWwgODI1NjMg
 UEhZcwogaW5waHkqCWF0IG1paT8gcGh5ID8JCQkjIEludGVsIDgyNTU1IFBIWXMKIGlvcGh5Kglh
 dCBtaWk/IHBoeSA/CQkJIyBJbnRlbCA4MjU1MyBQSFlzCitpcGdwaHkqCWF0IG1paT8gcGh5ID8J
 CQkjIElDIFBMVVMgSVAxMDAwQS9JUDEwMDEgUEhZcwogbHh0cGh5KiBhdCBtaWk/IHBoeSA/CQkJ
 IyBMZXZlbCBPbmUgTFhULTk3MCBQSFlzCiBtYWtwaHkqIGF0IG1paT8gcGh5ID8JCQkjIE1hcnZl
 bGwgU2VtaWNvbmR1Y3RvciA4OEUxMDAwIFBIWXMKIG5zcGh5KglhdCBtaWk/IHBoeSA/CQkJIyBO
 UzgzODQwIFBIWXMKZGlmZiAtLWdpdCBhL3N5cy9hcmNoL2FtZDY0L2NvbmYvR0VORVJJQyBiL3N5
 cy9hcmNoL2FtZDY0L2NvbmYvR0VORVJJQwppbmRleCBmZmIzNjUzNWQyYy4uNDQwMmEwZGYxMGMg
 MTAwNjQ0Ci0tLSBhL3N5cy9hcmNoL2FtZDY0L2NvbmYvR0VORVJJQworKysgYi9zeXMvYXJjaC9h
 bWQ2NC9jb25mL0dFTkVSSUMKQEAgLTg3Myw2ICs4NzMsNyBAQCBpaHBoeSoJYXQgbWlpPyBwaHkg
 PwkJCSMgSW50ZWwgODI1NzcgUEhZcwogaWtwaHkqCWF0IG1paT8gcGh5ID8JCQkjIEludGVsIDgy
 NTYzIFBIWXMKIGlucGh5KglhdCBtaWk/IHBoeSA/CQkJIyBJbnRlbCA4MjU1NSBQSFlzCiBpb3Bo
 eSoJYXQgbWlpPyBwaHkgPwkJCSMgSW50ZWwgODI1NTMgUEhZcworaXBncGh5KglhdCBtaWk/IHBo
 eSA/CQkJIyBJQyBQTFVTIElQMTAwMEEvSVAxMDAxIFBIWXMKIGx4dHBoeSogYXQgbWlpPyBwaHkg
 PwkJCSMgTGV2ZWwgT25lIExYVC05NzAgUEhZcwogbWFrcGh5KiBhdCBtaWk/IHBoeSA/CQkJIyBN
 YXJ2ZWxsIFNlbWljb25kdWN0b3IgODhFMTAwMCBQSFlzCiBuc3BoeSoJYXQgbWlpPyBwaHkgPwkJ
 CSMgTlM4Mzg0MCBQSFlzCmRpZmYgLS1naXQgYS9zeXMvYXJjaC9pMzg2L2NvbmYvQUxMIGIvc3lz
 L2FyY2gvaTM4Ni9jb25mL0FMTAppbmRleCAxMGEwZWE2ODI5My4uNzUzYTkwM2IyZTggMTAwNjQ0
 Ci0tLSBhL3N5cy9hcmNoL2kzODYvY29uZi9BTEwKKysrIGIvc3lzL2FyY2gvaTM4Ni9jb25mL0FM
 TApAQCAtMTIwOSw2ICsxMjA5LDcgQEAgaWhwaHkqCWF0IG1paT8gcGh5ID8JCQkjIEludGVsIDgy
 NTc3IFBIWXMKIGlrcGh5KglhdCBtaWk/IHBoeSA/CQkJIyBJbnRlbCA4MjU2MyBQSFlzCiBpbnBo
 eSoJYXQgbWlpPyBwaHkgPwkJCSMgSW50ZWwgODI1NTUgUEhZcwogaW9waHkqCWF0IG1paT8gcGh5
 ID8JCQkjIEludGVsIDgyNTUzIFBIWXMKK2lwZ3BoeSoJYXQgbWlpPyBwaHkgPwkJCSMgSUMgUExV
 UyBJUDEwMDBBL0lQMTAwMSBQSFlzCiBseHRwaHkqIGF0IG1paT8gcGh5ID8JCQkjIExldmVsIE9u
 ZSBMWFQtOTcwIFBIWXMKIG1ha3BoeSogYXQgbWlpPyBwaHkgPwkJCSMgTWFydmVsbCBTZW1pY29u
 ZHVjdG9yIDg4RTEwMDAgUEhZcwogbnNwaHkqCWF0IG1paT8gcGh5ID8JCQkjIE5TODM4NDAgUEhZ
 cwpkaWZmIC0tZ2l0IGEvc3lzL2FyY2gvaTM4Ni9jb25mL0dFTkVSSUMgYi9zeXMvYXJjaC9pMzg2
 L2NvbmYvR0VORVJJQwppbmRleCBmNmE1YjMzMjRiNC4uZTg2NzhlMTA4NGYgMTAwNjQ0Ci0tLSBh
 L3N5cy9hcmNoL2kzODYvY29uZi9HRU5FUklDCisrKyBiL3N5cy9hcmNoL2kzODYvY29uZi9HRU5F
 UklDCkBAIC0xMTIwLDYgKzExMjAsNyBAQCBpaHBoeSoJYXQgbWlpPyBwaHkgPwkJCSMgSW50ZWwg
 ODI1NzcgUEhZcwogaWtwaHkqCWF0IG1paT8gcGh5ID8JCQkjIEludGVsIDgyNTYzIFBIWXMKIGlu
 cGh5KglhdCBtaWk/IHBoeSA/CQkJIyBJbnRlbCA4MjU1NSBQSFlzCiBpb3BoeSoJYXQgbWlpPyBw
 aHkgPwkJCSMgSW50ZWwgODI1NTMgUEhZcworaXBncGh5KglhdCBtaWk/IHBoeSA/CQkJIyBJQyBQ
 TFVTIElQMTAwMEEvSVAxMDAxIFBIWXMKIGx4dHBoeSogYXQgbWlpPyBwaHkgPwkJCSMgTGV2ZWwg
 T25lIExYVC05NzAgUEhZcwogbWFrcGh5KiBhdCBtaWk/IHBoeSA/CQkJIyBNYXJ2ZWxsIFNlbWlj
 b25kdWN0b3IgODhFMTAwMCBQSFlzCiBuc3BoeSoJYXQgbWlpPyBwaHkgPwkJCSMgTlM4Mzg0MCBQ
 SFlzCmRpZmYgLS1naXQgYS9zeXMvZGV2L0RFVk5BTUVTIGIvc3lzL2Rldi9ERVZOQU1FUwppbmRl
 eCAzNDY4OWYyZjc4NC4uOTg0NzlmYjA0MTEgMTAwNjQ0Ci0tLSBhL3N5cy9kZXYvREVWTkFNRVMK
 KysrIGIvc3lzL2Rldi9ERVZOQU1FUwpAQCAtNjU5LDYgKzY1OSw3IEBAIGlvcHNwCQkJTUkKIGlw
 YXFidXMJCQlocGNhcm0KIGlwYXFsY2QJCQlocGNhcm0KIGlwYXFwY2ljCQlocGNhcm0KK2lwZ3Bo
 eQkJCU1JCiBpcG1pCQkJYW1kNjQKIGlwbWkJCQlpMzg2CiBpcG1pCQkJeGVuCmRpZmYgLS1naXQg
 YS9zeXMvZGV2L21paS9maWxlcy5taWkgYi9zeXMvZGV2L21paS9maWxlcy5taWkKaW5kZXggYTMx
 YjQzYWU4NmEuLmMyODRiZDdlOTQzIDEwMDY0NAotLS0gYS9zeXMvZGV2L21paS9maWxlcy5taWkK
 KysrIGIvc3lzL2Rldi9taWkvZmlsZXMubWlpCkBAIC05OSw2ICs5OSwxMCBAQCBkZXZpY2UJaWtw
 aHk6IG1paV9waHkKIGF0dGFjaAlpa3BoeSBhdCBtaWkKIGZpbGUJZGV2L21paS9pa3BoeS5jCQkJ
 CWlrcGh5CiAKK2RldmljZQlpcGdwaHk6IG1paV9waHkKK2F0dGFjaAlpcGdwaHkgYXQgbWlpCitm
 aWxlCWRldi9taWkvaXBncGh5LmMJCQlpcGdwaHkKKwogZGV2aWNlCXNxcGh5OiBtaWlfcGh5CiBh
 dHRhY2gJc3FwaHkgYXQgbWlpCiBmaWxlCWRldi9taWkvc3FwaHkuYwkJCQlzcXBoeQpkaWZmIC0t
 Z2l0IGEvc3lzL2Rldi9taWkvaXBncGh5LmMgYi9zeXMvZGV2L21paS9pcGdwaHkuYwpuZXcgZmls
 ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uNWFmZDJkY2FjODAKLS0tIC9kZXYvbnVs
 bAorKysgYi9zeXMvZGV2L21paS9pcGdwaHkuYwpAQCAtMCwwICsxLDQxNSBAQAorLyoJJE9wZW5C
 U0Q6IGlwZ3BoeS5jLHYgMS4xOSAyMDE1LzA3LzE5IDA2OjI4OjEyIHl1byBFeHAgJAkqLworCisv
 Ki0KKyAqIENvcHlyaWdodCAoYykgMjAwNiwgUHl1biBZb25nSHllb24gPHlvbmdhcmlARnJlZUJT
 RC5vcmc+CisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
 ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
 aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
 aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
 IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSB1bm1vZGlmaWVk
 LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucywgYW5kIHRoZSBmb2xsb3dpbmcKKyAqICAgIGRpc2Ns
 YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
 Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
 aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
 dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
 bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBBVVRIT1IgQU5EIENP
 TlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisgKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
 TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
 UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
 VVJQT1NFCisgKiBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1Ig
 T1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRQorICogRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
 TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyAqIERBTUFH
 RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
 VVRFIEdPT0RTCisgKiBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
 IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikKKyAqIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
 VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUCisgKiBMSUFC
 SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
 RyBJTiBBTlkgV0FZCisgKiBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
 IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCisgKiBTVUNIIERBTUFHRS4KKyAqCisgKi8K
 KworLyoKKyAqIERyaXZlciBmb3IgdGhlIElDIFBsdXMgSVAxMDAwQS9JUDEwMDEgMTAvMTAwLzEw
 MDAgUEhZLgorICovCisjaW5jbHVkZSA8c3lzL2NkZWZzLmg+CitfX0tFUk5FTF9SQ1NJRCgwLCAi
 JE5ldEJTRDogaXBncGh5LmMsdiAxLjU1IDIwMTkvMDYvMDUgMTc6NTA6MDYgdmV6aGx5cyBFeHAg
 JCIpOworCisjaW5jbHVkZSA8c3lzL3BhcmFtLmg+CisjaW5jbHVkZSA8c3lzL3N5c3RtLmg+Cisj
 aW5jbHVkZSA8c3lzL2tlcm5lbC5oPgorI2luY2x1ZGUgPHN5cy9kZXZpY2UuaD4KKyNpbmNsdWRl
 IDxzeXMvc29ja2V0Lmg+CisjaW5jbHVkZSA8c3lzL2Vycm5vLmg+CisKKyNpbmNsdWRlIDxuZXQv
 aWYuaD4KKyNpbmNsdWRlIDxuZXQvaWZfbWVkaWEuaD4KKworI2luY2x1ZGUgPGRldi9taWkvbWlp
 Lmg+CisjaW5jbHVkZSA8ZGV2L21paS9taWl2YXIuaD4KKyNpbmNsdWRlIDxkZXYvbWlpL21paWRl
 dnMuaD4KKworI2luY2x1ZGUgPGRldi9taWkvaXBncGh5cmVnLmg+CisKKyNpbmNsdWRlIDxkZXYv
 cGNpL2lmX3N0Z2VyZWcuaD4KKworc3RhdGljIGludCBpcGdwaHlfbWF0Y2goZGV2aWNlX3QsIGNm
 ZGF0YV90LCB2b2lkICopOworc3RhdGljIHZvaWQgaXBncGh5X2F0dGFjaChkZXZpY2VfdCwgZGV2
 aWNlX3QsIHZvaWQgKik7CisKK0NGQVRUQUNIX0RFQ0xfTkVXKGlwZ3BoeSwgc2l6ZW9mKHN0cnVj
 dCBtaWlfc29mdGMpLAorICAgIGlwZ3BoeV9tYXRjaCwgaXBncGh5X2F0dGFjaCwgbWlpX3BoeV9k
 ZXRhY2gsIG1paV9waHlfYWN0aXZhdGUpOworCitzdGF0aWMgaW50CWlwZ3BoeV9zZXJ2aWNlKHN0
 cnVjdCBtaWlfc29mdGMgKiwgc3RydWN0IG1paV9kYXRhICosIGludCk7CitzdGF0aWMgdm9pZAlp
 cGdwaHlfc3RhdHVzKHN0cnVjdCBtaWlfc29mdGMgKik7CitzdGF0aWMgaW50CWlwZ3BoeV9taWlf
 cGh5X2F1dG8oc3RydWN0IG1paV9zb2Z0YyAqKTsKK3N0YXRpYyB2b2lkCWlwZ3BoeV9sb2FkX2Rz
 cGNvZGUoc3RydWN0IG1paV9zb2Z0YyAqKTsKK3N0YXRpYyB2b2lkCWlwZ3BoeV9yZXNldChzdHJ1
 Y3QgbWlpX3NvZnRjICopOworCitzdGF0aWMgY29uc3Qgc3RydWN0IG1paV9waHlfZnVuY3MgaXBn
 cGh5X2Z1bmNzID0geworCWlwZ3BoeV9zZXJ2aWNlLCBpcGdwaHlfc3RhdHVzLCBpcGdwaHlfcmVz
 ZXQsCit9OworCitzdGF0aWMgY29uc3Qgc3RydWN0IG1paV9waHlkZXNjIGlwZ3BoeXNbXSA9IHsK
 KwlNSUlfUEhZX0RFU0MoeHhJQ1BMVVMsIElQMTAwMEEpLAorCU1JSV9QSFlfREVTQyh4eElDUExV
 UywgSVAxMDAxKSwKKwlNSUlfUEhZX0VORCwKK307CisKK3N0YXRpYyBpbnQKK2lwZ3BoeV9tYXRj
 aChkZXZpY2VfdCBwYXJlbnQsIGNmZGF0YV90IG1hdGNoLCB2b2lkICphdXgpCit7CisJc3RydWN0
 IG1paV9hdHRhY2hfYXJncyAqbWEgPSBhdXg7CisKKwlpZiAobWlpX3BoeV9tYXRjaChtYSwgaXBn
 cGh5cykgIT0gTlVMTCkgeworCQlyZXR1cm4gMTA7CisJfQorCXJldHVybiAwOworfQorCitzdGF0
 aWMgdm9pZAoraXBncGh5X2F0dGFjaChkZXZpY2VfdCBwYXJlbnQsIGRldmljZV90IHNlbGYsIHZv
 aWQgKmF1eCkKK3sKKwlzdHJ1Y3QgbWlpX3NvZnRjICpzYyA9IGRldmljZV9wcml2YXRlKHNlbGYp
 OworCXN0cnVjdCBtaWlfYXR0YWNoX2FyZ3MgKm1hID0gYXV4OworCXN0cnVjdCBtaWlfZGF0YSAq
 bWlpID0gbWEtPm1paV9kYXRhOworCWNvbnN0IHN0cnVjdCBtaWlfcGh5ZGVzYyAqbXBkOworCisJ
 bXBkID0gbWlpX3BoeV9tYXRjaChtYSwgaXBncGh5cyk7CisJYXByaW50X25haXZlKCI6IE1lZGlh
 IGludGVyZmFjZVxuIik7CisJYXByaW50X25vcm1hbCgiOiAlcywgcmV2LiAlZFxuIiwgbXBkLT5t
 cGRfbmFtZSwgTUlJX1JFVihtYS0+bWlpX2lkMikpOworCisJc2MtPm1paV9kZXYgPSBzZWxmOwor
 CXNjLT5taWlfaW5zdCA9IG1paS0+bWlpX2luc3RhbmNlOworCXNjLT5taWlfcGh5ID0gbWEtPm1p
 aV9waHlubzsKKwlzYy0+bWlpX21wZF9vdWkgPSBNSUlfT1VJKG1hLT5taWlfaWQxLCBtYS0+bWlp
 X2lkMik7CisJc2MtPm1paV9tcGRfbW9kZWwgPSBNSUlfTU9ERUwobWEtPm1paV9pZDIpOworCXNj
 LT5taWlfbXBkX3JldiA9IE1JSV9SRVYobWEtPm1paV9pZDIpOworCXNjLT5taWlfZnVuY3MgPSAm
 aXBncGh5X2Z1bmNzOworCXNjLT5taWlfcGRhdGEgPSBtaWk7CisJc2MtPm1paV9mbGFncyA9IG1h
 LT5taWlfZmxhZ3M7CisKKwlzYy0+bWlpX2ZsYWdzIHw9IE1JSUZfTk9JU09MQVRFOworCXNjLT5t
 aWlfYW5lZ3RpY2tzID0gTUlJX0FORUdUSUNLU19HSUdFOworCisJUEhZX1JFU0VUKHNjKTsKKwor
 CVBIWV9SRUFEKHNjLCBNSUlfQk1TUiwgJnNjLT5taWlfY2FwYWJpbGl0aWVzKTsKKwlzYy0+bWlp
 X2NhcGFiaWxpdGllcyAmPSBtYS0+bWlpX2NhcG1hc2s7CisJLy9zYy0+bWlpX2NhcGFiaWxpdGll
 cyAmPSB+Qk1TUl9BTkVHOworCWlmIChzYy0+bWlpX2NhcGFiaWxpdGllcyAmIEJNU1JfRVhUU1RB
 VCkKKwkJUEhZX1JFQUQoc2MsIE1JSV9FWFRTUiwgJnNjLT5taWlfZXh0Y2FwYWJpbGl0aWVzKTsK
 KyAKKwltaWlfcGh5X2FkZF9tZWRpYShzYyk7CisJYXByaW50X25vcm1hbCgiXG4iKTsKK30KKwor
 c3RhdGljIGludAoraXBncGh5X3NlcnZpY2Uoc3RydWN0IG1paV9zb2Z0YyAqc2MsIHN0cnVjdCBt
 aWlfZGF0YSAqbWlpLCBpbnQgY21kKQoreworCXN0cnVjdCBpZm1lZGlhX2VudHJ5ICppZmUgPSBt
 aWktPm1paV9tZWRpYS5pZm1fY3VyOworCXVpbnQxNl90IGdpZywgcmVnLCBzcGVlZDsKKworCXN3
 aXRjaCAoY21kKSB7CisJY2FzZSBNSUlfUE9MTFNUQVQ6CisJCS8qCisJCSAqIElmIHdlJ3JlIG5v
 dCBwb2xsaW5nIG91ciBQSFkgaW5zdGFuY2UsIGp1c3QgcmV0dXJuLgorCQkgKi8KKwkJaWYgKElG
 TV9JTlNUKGlmZS0+aWZtX21lZGlhKSAhPSBzYy0+bWlpX2luc3QpCisJCQlyZXR1cm4gMDsKKwkJ
 YnJlYWs7CisKKwljYXNlIE1JSV9NRURJQUNIRzoKKwkJLyoKKwkJICogSWYgdGhlIG1lZGlhIGlu
 ZGljYXRlcyBhIGRpZmZlcmVudCBQSFkgaW5zdGFuY2UsCisJCSAqIGlzb2xhdGUgb3Vyc2VsdmVz
 LgorCQkgKi8KKwkJaWYgKElGTV9JTlNUKGlmZS0+aWZtX21lZGlhKSAhPSBzYy0+bWlpX2luc3Qp
 IHsKKwkJCVBIWV9SRUFEKHNjLCBNSUlfQk1DUiwgJnJlZyk7CisJCQlQSFlfV1JJVEUoc2MsIE1J
 SV9CTUNSLCByZWcgfCBCTUNSX0lTTyk7CisJCQlyZXR1cm4gMDsKKwkJfQorCisJCS8qCisJCSAq
 IElmIHRoZSBpbnRlcmZhY2UgaXMgbm90IHVwLCBkb24ndCBkbyBhbnl0aGluZy4KKwkJICovCisJ
 CWlmICgobWlpLT5taWlfaWZwLT5pZl9mbGFncyAmIElGRl9VUCkgPT0gMCkKKwkJCWJyZWFrOwor
 CisJCVBIWV9SRVNFVChzYyk7CisKKwkJc3dpdGNoIChJRk1fU1VCVFlQRShpZmUtPmlmbV9tZWRp
 YSkpIHsKKwkJY2FzZSBJRk1fQVVUTzoKKwkJCSh2b2lkKWlwZ3BoeV9taWlfcGh5X2F1dG8oc2Mp
 OworCQkJZ290byBkb25lOworCQkJYnJlYWs7CisKKwkJY2FzZSBJRk1fMTAwMF9UOgorCQkJLyoK
 KwkJCSAqIFhYWAorCQkJICogTWFudWFsIDEwMDBiYXNlVCBzZXR0aW5nIGRvZXNuJ3Qgc2VlbSB0
 byB3b3JrLgorCQkJICovCisJCQlzcGVlZCA9IEJNQ1JfUzEwMDA7CisJCQlicmVhazsKKworCQlj
 YXNlIElGTV8xMDBfVFg6CisJCQlzcGVlZCA9IEJNQ1JfUzEwMDsKKwkJCWJyZWFrOworCisJCWNh
 c2UgSUZNXzEwX1Q6CisJCQlzcGVlZCA9IEJNQ1JfUzEwOworCQkJYnJlYWs7CisKKwkJZGVmYXVs
 dDoKKwkJCXJldHVybiBFSU5WQUw7CisJCX0KKworCQlpZiAoKChpZmUtPmlmbV9tZWRpYSAmIElG
 TV9HTUFTSykgJiBJRk1fRkRYKSAhPSAwKSB7CisJCQlzcGVlZCB8PSBCTUNSX0ZEWDsKKwkJCWdp
 ZyA9IEdUQ1JfQURWXzEwMDBURkRYOworCQl9IGVsc2UKKwkJCWdpZyA9IEdUQ1JfQURWXzEwMDBU
 SERYOworCisJCVBIWV9XUklURShzYywgTUlJXzEwMFQyQ1IsIDApOworCQlQSFlfV1JJVEUoc2Ms
 IE1JSV9CTUNSLCBzcGVlZCk7CisKKwkJaWYgKElGTV9TVUJUWVBFKGlmZS0+aWZtX21lZGlhKSAh
 PSBJRk1fMTAwMF9UKQorCQkJYnJlYWs7CisKKwkJUEhZX1dSSVRFKHNjLCBNSUlfMTAwVDJDUiwg
 Z2lnKTsKKwkJUEhZX1dSSVRFKHNjLCBNSUlfQk1DUiwgc3BlZWQpOworCisJCWlmIChtaWktPm1p
 aV9tZWRpYS5pZm1fbWVkaWEgJiBJRk1fRVRIX01BU1RFUikKKwkJCWdpZyB8PSBHVENSX01BTl9N
 UyB8IEdUQ1JfQURWX01TOworCisJCVBIWV9XUklURShzYywgTUlJXzEwMFQyQ1IsIGdpZyk7CisK
 K2RvbmU6CisJCWJyZWFrOworCisJY2FzZSBNSUlfVElDSzoKKwkJLyoKKwkJICogSWYgd2UncmUg
 bm90IGN1cnJlbnRseSBzZWxlY3RlZCwganVzdCByZXR1cm4uCisJCSAqLworCQlpZiAoSUZNX0lO
 U1QoaWZlLT5pZm1fbWVkaWEpICE9IHNjLT5taWlfaW5zdCkKKwkJCXJldHVybiAwOworCisJCS8q
 CisJCSAqIElzIHRoZSBpbnRlcmZhY2UgZXZlbiB1cD8KKwkJICovCisJCWlmICgobWlpLT5taWlf
 aWZwLT5pZl9mbGFncyAmIElGRl9VUCkgPT0gMCkKKwkJCXJldHVybiAwOworCisJCS8qCisJCSAq
 IE9ubHkgdXNlZCBmb3IgYXV0b25lZ290aWF0aW9uLgorCQkgKi8KKwkJaWYgKElGTV9TVUJUWVBF
 KGlmZS0+aWZtX21lZGlhKSAhPSBJRk1fQVVUTykgeworCQkJc2MtPm1paV90aWNrcyA9IDA7CisJ
 CQlicmVhazsKKwkJfQorCisJCS8qCisJCSAqIENoZWNrIHRvIHNlZSBpZiB3ZSBoYXZlIGxpbmsu
 ICBJZiB3ZSBkbywgd2UgZG9uJ3QKKwkJICogbmVlZCB0byByZXN0YXJ0IHRoZSBhdXRvbmVnb3Rp
 YXRpb24gcHJvY2Vzcy4gIFJlYWQKKwkJICogdGhlIEJNU1IgdHdpY2UgaW4gY2FzZSBpdCdzIGxh
 dGNoZWQuCisJCSAqLworCQlQSFlfUkVBRChzYywgTUlJX0JNU1IsICZyZWcpOworCQlQSFlfUkVB
 RChzYywgTUlJX0JNU1IsICZyZWcpOworCQlpZiAocmVnICYgQk1TUl9MSU5LKSB7CisJCQkvKgor
 CQkJICogUmVzZXQgYXV0b25lZ290aWF0aW9uIHRpbWVyIHRvIDAgaW4gY2FzZSB0aGUgbGluawor
 CQkJICogZ29lcyBkb3duIGluIHRoZSBuZXh0IHRpY2suCisJCQkgKi8KKwkJCXNjLT5taWlfdGlj
 a3MgPSAwOworCQkJLyogU2VlIGFib3ZlLiAqLworCQkJYnJlYWs7CisJCX0KKworCQkvKiBBbm5v
 dW5jZSBsaW5rIGxvc3MgcmlnaHQgYWZ0ZXIgaXQgaGFwcGVucyAqLworCQlpZiAoc2MtPm1paV90
 aWNrcysrID09IDApCisJCQlicmVhazsKKworCQkvKgorCQkgKiBPbmx5IHJldHJ5IGF1dG9uZWdv
 dGlhdGlvbiBldmVyeSBtaWlfYW5lZ3RpY2tzIHNlY29uZHMuCisJCSAqLworCQlpZiAoc2MtPm1p
 aV90aWNrcyA8PSBzYy0+bWlpX2FuZWd0aWNrcykKKwkJCWJyZWFrOworCisJCXNjLT5taWlfdGlj
 a3MgPSAwOworCQlpcGdwaHlfbWlpX3BoeV9hdXRvKHNjKTsKKwkJYnJlYWs7CisJfQorCisJLyog
 VXBkYXRlIHRoZSBtZWRpYSBzdGF0dXMuICovCisJaXBncGh5X3N0YXR1cyhzYyk7CisKKwkvKiBD
 YWxsYmFjayBpZiBzb21ldGhpbmcgY2hhbmdlZC4gKi8KKwltaWlfcGh5X3VwZGF0ZShzYywgY21k
 KTsKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQKK2lwZ3BoeV9zdGF0dXMoc3RydWN0IG1p
 aV9zb2Z0YyAqc2MpCit7CisJc3RydWN0IG1paV9kYXRhICptaWkgPSBzYy0+bWlpX3BkYXRhOwor
 CXN0cnVjdCBpZm1lZGlhX2VudHJ5ICppZmUgPSBtaWktPm1paV9tZWRpYS5pZm1fY3VyOworCXVp
 bnQxNl90IGJtc3IsIGJtY3IsIHN0YXQsIGd0c3I7CisKKwltaWktPm1paV9tZWRpYV9zdGF0dXMg
 PSBJRk1fQVZBTElEOworCW1paS0+bWlpX21lZGlhX2FjdGl2ZSA9IElGTV9FVEhFUjsKKworCVBI
 WV9SRUFEKHNjLCBNSUlfQk1TUiwgJmJtc3IpOworCVBIWV9SRUFEKHNjLCBNSUlfQk1TUiwgJmJt
 c3IpOworCWlmIChibXNyICYgQk1TUl9MSU5LKSAKKwkJbWlpLT5taWlfbWVkaWFfc3RhdHVzIHw9
 IElGTV9BQ1RJVkU7CisKKwlQSFlfUkVBRChzYywgTUlJX0JNQ1IsICZibWNyKTsKKwlpZiAoYm1j
 ciAmIEJNQ1JfTE9PUCkKKwkJbWlpLT5taWlfbWVkaWFfYWN0aXZlIHw9IElGTV9MT09QOworCisJ
 aWYgKGJtY3IgJiBCTUNSX0FVVE9FTikgeworCQlpZiAoKGJtc3IgJiBCTVNSX0FDT01QKSA9PSAw
 KSB7CisJCQkvKiBFcmcsIHN0aWxsIHRyeWluZywgSSBndWVzcy4uLiAqLworCQkJbWlpLT5taWlf
 bWVkaWFfYWN0aXZlIHw9IElGTV9OT05FOworCQkJcmV0dXJuOworCQl9CisKKwkJaWYgKHNjLT5t
 aWlfbXBkX21vZGVsID09IE1JSV9NT0RFTF94eElDUExVU19JUDEwMDEpIHsKKwkJCVBIWV9SRUFE
 KHNjLCBJUEdQSFlfTFNSLCAmc3RhdCk7CisJCQlzd2l0Y2ggKHN0YXQgJiBJUEdQSFlfTFNSX1NQ
 RUVEX01BU0spIHsKKwkJCWNhc2UgSVBHUEhZX0xTUl9TUEVFRF8xMDoKKwkJCQltaWktPm1paV9t
 ZWRpYV9hY3RpdmUgfD0gSUZNXzEwX1Q7CisJCQkJYnJlYWs7CisJCQljYXNlIElQR1BIWV9MU1Jf
 U1BFRURfMTAwOgorCQkJCW1paS0+bWlpX21lZGlhX2FjdGl2ZSB8PSBJRk1fMTAwX1RYOworCQkJ
 CWJyZWFrOworCQkJY2FzZSBJUEdQSFlfTFNSX1NQRUVEXzEwMDA6CisJCQkJbWlpLT5taWlfbWVk
 aWFfYWN0aXZlIHw9IElGTV8xMDAwX1Q7CisJCQkJYnJlYWs7CisJCQlkZWZhdWx0OgorCQkJCW1p
 aS0+bWlpX21lZGlhX2FjdGl2ZSB8PSBJRk1fTk9ORTsKKwkJCQlyZXR1cm47CisJCQl9CisKKwkJ
 CWlmIChzdGF0ICYgSVBHUEhZX0xTUl9GVUxMX0RVUExFWCkKKwkJCQltaWktPm1paV9tZWRpYV9h
 Y3RpdmUgfD0gSUZNX0ZEWDsKKwkJCWVsc2UKKwkJCQltaWktPm1paV9tZWRpYV9hY3RpdmUgfD0g
 SUZNX0hEWDsKKwkJfSBlbHNlIHsKKwkJCVBIWV9SRUFEKHNjLCBTVEdFX1BoeUN0cmwsICZzdGF0
 KTsKKwkJCXN3aXRjaCAoUENfTGlua1NwZWVkKHN0YXQpKSB7CisJCQljYXNlIFBDX0xpbmtTcGVl
 ZF9Eb3duOgorCQkJCW1paS0+bWlpX21lZGlhX2FjdGl2ZSB8PSBJRk1fTk9ORTsKKwkJCQlyZXR1
 cm47CisJCQljYXNlIFBDX0xpbmtTcGVlZF8xMDoKKwkJCQltaWktPm1paV9tZWRpYV9hY3RpdmUg
 fD0gSUZNXzEwX1Q7CisJCQkJYnJlYWs7CisJCQljYXNlIFBDX0xpbmtTcGVlZF8xMDA6CisJCQkJ
 bWlpLT5taWlfbWVkaWFfYWN0aXZlIHw9IElGTV8xMDBfVFg7CisJCQkJYnJlYWs7CisJCQljYXNl
 IFBDX0xpbmtTcGVlZF8xMDAwOgorCQkJCW1paS0+bWlpX21lZGlhX2FjdGl2ZSB8PSBJRk1fMTAw
 MF9UOworCQkJCWJyZWFrOworCQkJZGVmYXVsdDoKKwkJCQltaWktPm1paV9tZWRpYV9hY3RpdmUg
 fD0gSUZNX05PTkU7CisJCQkJcmV0dXJuOworCQkJfQorCisJCQlpZiAoc3RhdCAmIFBDX1BoeUR1
 cGxleFN0YXR1cykKKwkJCQltaWktPm1paV9tZWRpYV9hY3RpdmUgfD0gSUZNX0ZEWDsKKwkJCWVs
 c2UKKwkJCQltaWktPm1paV9tZWRpYV9hY3RpdmUgfD0gSUZNX0hEWDsKKwkJfQorCisJCWlmICht
 aWktPm1paV9tZWRpYV9hY3RpdmUgJiBJRk1fRkRYKQorCQkJbWlpLT5taWlfbWVkaWFfYWN0aXZl
 IHw9IG1paV9waHlfZmxvd3N0YXR1cyhzYyk7CisKKwkJaWYgKElGTV9TVUJUWVBFKG1paS0+bWlp
 X21lZGlhX2FjdGl2ZSkgPT0gSUZNXzEwMDBfVCkgeworCQkJUEhZX1JFQUQoc2MsIE1JSV8xMDBU
 MlNSLCAmZ3Rzcik7CisJCQlpZiAoZ3RzciAmIEdUU1JfTVNfUkVTKQorCQkJCW1paS0+bWlpX21l
 ZGlhX2FjdGl2ZSB8PSBJRk1fRVRIX01BU1RFUjsKKwkJfQorCX0gZWxzZQorCQltaWktPm1paV9t
 ZWRpYV9hY3RpdmUgPSBpZmUtPmlmbV9tZWRpYTsKK30KKworc3RhdGljIGludAoraXBncGh5X21p
 aV9waHlfYXV0byhzdHJ1Y3QgbWlpX3NvZnRjICpzYykKK3sKKwl1aW50MTZfdCByZWcgPSAwOwor
 CisJaWYgKHNjLT5taWlfbXBkX21vZGVsID09IE1JSV9NT0RFTF94eElDUExVU19JUDEwMDEpIHsK
 KwkJUEhZX1JFQUQoc2MsIE1JSV9BTkFSLCAmcmVnKTsKKwkJcmVnICY9IH4oQU5BUl9QQVVTRV9T
 WU0gfCBBTkFSX1BBVVNFX0FTWU0pOworCQlyZWcgfD0gQU5BUl9OUDsKKwl9CisKKwlyZWcgfD0g
 QU5BUl8xMCB8IEFOQVJfMTBfRkQgfCBBTkFSX1RYIHwgQU5BUl9UWF9GRDsKKworCWlmIChzYy0+
 bWlpX2ZsYWdzICYgTUlJRl9ET1BBVVNFKQorCQlyZWcgfD0gQU5BUl9QQVVTRV9TWU0gfCBBTkFS
 X1BBVVNFX0FTWU07CisKKwlQSFlfV1JJVEUoc2MsIE1JSV9BTkFSLCByZWcgfCBBTkFSX0NTTUEp
 OworCisJcmVnID0gR1RDUl9BRFZfMTAwMFRGRFggfCBHVENSX0FEVl8xMDAwVEhEWDsKKwlpZiAo
 c2MtPm1paV9tcGRfbW9kZWwgIT0gTUlJX01PREVMX3h4SUNQTFVTX0lQMTAwMSkKKwkJcmVnIHw9
 IEdUQ1JfQURWX01TOworCVBIWV9XUklURShzYywgTUlJXzEwMFQyQ1IsIHJlZyk7CisKKwlQSFlf
 V1JJVEUoc2MsIE1JSV9CTUNSLCBCTUNSX0ZEWCB8IEJNQ1JfQVVUT0VOIHwgQk1DUl9TVEFSVE5F
 Ryk7CisKKwlyZXR1cm4gRUpVU1RSRVRVUk47Cit9CisKK3N0YXRpYyB2b2lkCitpcGdwaHlfbG9h
 ZF9kc3Bjb2RlKHN0cnVjdCBtaWlfc29mdGMgKnNjKQoreworCVBIWV9XUklURShzYywgMzEsIDB4
 MDAwMSk7CisJUEhZX1dSSVRFKHNjLCAyNywgMHgwMWUwKTsKKwlQSFlfV1JJVEUoc2MsIDMxLCAw
 eDAwMDIpOworCVBIWV9XUklURShzYywgMjcsIDB4ZWI4ZSk7CisJUEhZX1dSSVRFKHNjLCAzMSwg
 MHgwMDAwKTsKKwlQSFlfV1JJVEUoc2MsIDMwLCAweDAwNWUpOworCVBIWV9XUklURShzYywgOSwg
 MHgwNzAwKTsKKworCURFTEFZKDUwKTsKK30KKworc3RhdGljIHZvaWQKK2lwZ3BoeV9yZXNldChz
 dHJ1Y3QgbWlpX3NvZnRjICpzYykKK3sKKwlzdHJ1Y3QgaWZuZXQgKmlmcCA9IHNjLT5taWlfcGRh
 dGEtPm1paV9pZnA7CisJdWludDE2X3QgcmVnOworCisJbWlpX3BoeV9yZXNldChzYyk7CisKKwkv
 KiBjbGVhciBhdXRvbmVnL2Z1bGwtZHVwbGV4IGFzIHdlIGRvbid0IHdhbnQgaXQgYWZ0ZXIgcmVz
 ZXQgKi8KKwlQSFlfUkVBRChzYywgTUlJX0JNQ1IsICZyZWcpOworCXJlZyAmPSB+KEJNQ1JfQVVU
 T0VOIHwgQk1DUl9GRFgpOworCVBIWV9XUklURShzYywgTUlJX0JNQ1IsIHJlZyk7CisKKwlpZiAo
 c2MtPm1paV9tcGRfbW9kZWwgPT0gTUlJX01PREVMX3h4SUNQTFVTX0lQMTAwMEEgJiYKKwkgICAg
 c3RyY21wKGlmcC0+aWZfeG5hbWUsICJzdGdlIikgPT0gMCkgeworCQlzdHJ1Y3Qgc3RnZV9zb2Z0
 YyAqc3RnZV9zYyA9IGlmcC0+aWZfc29mdGM7CisJCWlmIChzdGdlX3NjLT5zY19yZXYgPj0gMHg0
 MCAmJiBzdGdlX3NjLT5zY19yZXYgPD0gMHg0ZSkKKwkJCWlwZ3BoeV9sb2FkX2RzcGNvZGUoc2Mp
 OworCX0KK30KZGlmZiAtLWdpdCBhL3N5cy9kZXYvbWlpL2lwZ3BoeXJlZy5oIGIvc3lzL2Rldi9t
 aWkvaXBncGh5cmVnLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjNl
 ZjE0NWYzNmFkCi0tLSAvZGV2L251bGwKKysrIGIvc3lzL2Rldi9taWkvaXBncGh5cmVnLmgKQEAg
 LTAsMCArMSw4MyBAQAorLyoJJE9wZW5CU0Q6IGlwZ3BoeXJlZy5oLHYgMS4zIDIwMTUvMDcvMTkg
 MDY6Mjg6MTIgeXVvIEV4cCAkCSovCisKKy8qLQorICogQ29weXJpZ2h0IChjKSAyMDA2LCBQeXVu
 IFlvbmdIeWVvbgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqICAgICAgICAgICAgICAKKyAq
 IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
 b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
 dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OiAgICAgICAgICAgICAKKyAqIDEu
 IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
 eXJpZ2h0CisgKiAgICBub3RpY2UgdW5tb2RpZmllZCwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMs
 IGFuZCB0aGUgZm9sbG93aW5nCisgKiAgICBkaXNjbGFpbWVyLiAgCisgKiAyLiBSZWRpc3RyaWJ1
 dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
 ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
 aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
 YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
 IElTIFBST1ZJREVEIEJZIFRIRSBBVVRIT1IgQU5EIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5E
 CisgKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
 VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
 VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCisgKiBBUkUgRElTQ0xBSU1F
 RC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJM
 RQorICogRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
 UExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
 SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTCisgKiBPUiBTRVJWSUNF
 UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
 TikKKyAqIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
 VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUCisgKiBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
 RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZCisgKiBPVVQgT0Yg
 VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
 SVRZIE9GCisgKiBTVUNIIERBTUFHRS4KKyAqCisgKi8KKworI2lmbmRlZiBfREVWX01JSV9JUEdQ
 SFlSRUdfSF8KKyNkZWZpbmUgX0RFVl9NSUlfSVBHUEhZUkVHX0hfCisKKy8qCisgKiBSZWdpc3Rl
 cnMgZm9yIHRoZSBJQyBQbHVzIElQR0EgaW50ZXJuYWwgUEhZLgorICovCisKKy8qIFBIWSBzcGVj
 aWZpYyBjb250cm9sICYgc3RhdHVzIHJlZ2lzdGVyLiBJUDEwMDEgb25seS4gKi8KKyNkZWZpbmUg
 SVBHUEhZX1NDU1IJCQkweDEwCisjZGVmaW5lIElQR1BIWV9TQ1NSX1JYUEhBU0VfU0VMCTB4MDAw
 MQorI2RlZmluZSBJUEdQSFlfU0NTUl9UWFBIQVNFX1NFTAkweDAwMDIKKyNkZWZpbmUgSVBHUEhZ
 X1NDU1JfUkVQRUFUT1JfTU9ERQkweDAwMDQKKyNkZWZpbmUgSVBHUEhZX1NDU1JfUkVTRVJWRUQx
 X0RFRgkweDAwMDgKKyNkZWZpbmUgSVBHUEhZX1NDU1JfUlhDTEtfRFJWX01BU0sJMHgwMDYwCisj
 ZGVmaW5lIElQR1BIWV9TQ1NSX1JYQ0xLX0RSVl9ERUYJMHgwMDQwCisjZGVmaW5lIElQR1BIWV9T
 Q1NSX1JYRF9EUlZfTUFTSwkweDAxODAKKyNkZWZpbmUgSVBHUEhZX1NDU1JfUlhEX0RSVl9ERUYJ
 MHgwMTAwCisjZGVmaW5lIElQR1BIWV9TQ1NSX0pBQkJFUl9FTkIJMHgwMjAwCisjZGVmaW5lIElQ
 R1BIWV9TQ1NSX0hFQVJUX0JFQVRfRU5CCTB4MDQwMAorI2RlZmluZSBJUEdQSFlfU0NTUl9ET1dO
 U0hJRlRfRU5CCTB4MDgwMAorI2RlZmluZSBJUEdQSFlfU0NTUl9SRVNFUlZFRDJfREVGCTB4MTAw
 MAorI2RlZmluZSBJUEdQSFlfU0NTUl9MRURfRFJWXzRNQQkweDAwMDAKKyNkZWZpbmUgSVBHUEhZ
 X1NDU1JfTEVEX0RSVl84TUEJMHgyMDAwCisjZGVmaW5lIElQR1BIWV9TQ1NSX0xFRF9NT0RFX01B
 U0sJMHhDMDAwCisjZGVmaW5lIElQR1BIWV9TQ1NSX0xFRF9NT0RFX0RFRgkweDAwMDAKKworLyog
 UEhZIGxpbmsgc3RhdHVzIHJlZ2lzdGVyLiBJUDEwMDEgb25seS4gKi8KKyNkZWZpbmUgSVBHUEhZ
 X0xTUgkJCTB4MTEKKyNkZWZpbmUgSVBHUEhZX0xTUl9KQUJCRVJfREVUCTB4MDIwMAorI2RlZmlu
 ZSBJUEdQSFlfTFNSX0FQU19TTEVFUAkJMHgwNDAwCisjZGVmaW5lIElQR1BIWV9MU1JfTURJWAkJ
 MHgwODAwCisjZGVmaW5lIElQR1BIWV9MU1JfRlVMTF9EVVBMRVgJMHgxMDAwCisjZGVmaW5lIElQ
 R1BIWV9MU1JfU1BFRURfMTAJCTB4MDAwMAorI2RlZmluZSBJUEdQSFlfTFNSX1NQRUVEXzEwMAkJ
 MHgyMDAwCisjZGVmaW5lIElQR1BIWV9MU1JfU1BFRURfMTAwMAkweDQwMDAKKyNkZWZpbmUgSVBH
 UEhZX0xTUl9TUEVFRF9NQVNLCTB4NjAwMAorI2RlZmluZSBJUEdQSFlfTFNSX0xJTktVUAkJMHg4
 MDAwCisKKy8qIFBIWSBzcGVjaWZpYyBjb250cm9sIHJlZ2lzdGVyIDIuIElQMTAwMSBvbmx5LiAq
 LworI2RlZmluZSBJUEdQSFlfU0NSCisjZGVmaW5lIElQR1BIWV9TQ1JfU0VXX1JBVEVfTUFTSwkw
 eDAwMDMKKyNkZWZpbmUgSVBHUEhZX1NDUl9TRVdfUkFURV9ERUYJMHgwMDAzCisjZGVmaW5lIElQ
 R1BIWV9TQ1JfQVVUT19YT1ZFUgkweDAwMDQKKyNkZWZpbmUgSVBHUEhZX1NDUl9TUEVFRF8xMF8x
 MDBfRU5CCTB4MDA0MAorI2RlZmluZSBJUEdQSFlfU0NSX0ZJRk9fTEFURU5DWV8yCTB4MDAwMAor
 I2RlZmluZSBJUEdQSFlfU0NSX0ZJRk9fTEFURU5DWV8zCTB4MDA4MAorI2RlZmluZSBJUEdQSFlf
 U0NSX0ZJRk9fTEFURU5DWV80CTB4MDEwMAorI2RlZmluZSBJUEdQSFlfU0NSX0ZJRk9fTEFURU5D
 WV81CTB4MDE4MAorI2RlZmluZSBJUEdQSFlfU0NSX01ESVhfRU5CCQkweDAyMDAKKyNkZWZpbmUg
 SVBHUEhZX1NDUl9SRVNFUlZFRF9ERUYJMHgwNDAwCisjZGVmaW5lIElQR1BIWV9TQ1JfQVBTX09O
 CQkweDA4MDAKKworI2VuZGlmIC8qIF9ERVZfTUlJX0lQR1BIWVJFR19IXyAqLwpkaWZmIC0tZ2l0
 IGEvc3lzL2Rldi9wY2kvaWZfc3RnZS5jIGIvc3lzL2Rldi9wY2kvaWZfc3RnZS5jCmluZGV4IDdj
 N2RmY2YzZjZkLi5hNjM1M2MyODdlMyAxMDA2NDQKLS0tIGEvc3lzL2Rldi9wY2kvaWZfc3RnZS5j
 CisrKyBiL3N5cy9kZXYvcGNpL2lmX3N0Z2UuYwpAQCAtNzYsMTM1ICs3NiwxMCBAQCBfX0tFUk5F
 TF9SQ1NJRCgwLCAiJE5ldEJTRDogaWZfc3RnZS5jLHYgMS43MCAyMDE5LzA3LzA5IDA4OjQ2OjU5
 IG1zYWl0b2ggRXhwICQiKQogI2RlZmluZQlTVEdFX1ZMQU5fVU5UQUcJCQkxCiAvKiAjZGVmaW5l
 CVNUR0VfVkxBTl9DRkkJCTEgKi8KIAotLyoKLSAqIFRyYW5zbWl0IGRlc2NyaXB0b3IgbGlzdCBz
 aXplLgotICovCi0jZGVmaW5lCVNUR0VfTlRYREVTQwkJMjU2Ci0jZGVmaW5lCVNUR0VfTlRYREVT
 Q19NQVNLCShTVEdFX05UWERFU0MgLSAxKQotI2RlZmluZQlTVEdFX05FWFRUWCh4KQkJKCgoeCkg
 KyAxKSAmIFNUR0VfTlRYREVTQ19NQVNLKQotCi0vKgotICogUmVjZWl2ZSBkZXNjcmlwdG9yIGxp
 c3Qgc2l6ZS4KLSAqLwotI2RlZmluZQlTVEdFX05SWERFU0MJCTI1NgotI2RlZmluZQlTVEdFX05S
 WERFU0NfTUFTSwkoU1RHRV9OUlhERVNDIC0gMSkKLSNkZWZpbmUJU1RHRV9ORVhUUlgoeCkJCSgo
 KHgpICsgMSkgJiBTVEdFX05SWERFU0NfTUFTSykKLQotLyoKLSAqIE9ubHkgaW50ZXJydXB0IGV2
 ZXJ5IE4gZnJhbWVzLiAgTXVzdCBiZSBhIHBvd2VyLW9mLXR3by4KLSAqLwotI2RlZmluZQlTVEdF
 X1RYSU5UUl9TUEFDSU5HCTE2Ci0jZGVmaW5lCVNUR0VfVFhJTlRSX1NQQUNJTkdfTUFTSyAoU1RH
 RV9UWElOVFJfU1BBQ0lORyAtIDEpCi0KLS8qCi0gKiBDb250cm9sIHN0cnVjdHVyZXMgYXJlIERN
 QSdkIHRvIHRoZSBUQzkwMjEgY2hpcC4gIFdlIGFsbG9jYXRlIHRoZW0gaW4KLSAqIGEgc2luZ2xl
 IGNsdW1wIHRoYXQgbWFwcyB0byBhIHNpbmdsZSBETUEgc2VnbWVudCB0byBtYWtlIHNldmVyYWwg
 dGhpbmdzCi0gKiBlYXNpZXIuCi0gKi8KLXN0cnVjdCBzdGdlX2NvbnRyb2xfZGF0YSB7Ci0JLyoK
 LQkgKiBUaGUgdHJhbnNtaXQgZGVzY3JpcHRvcnMuCi0JICovCi0Jc3RydWN0IHN0Z2VfdGZkIHNj
 ZF90eGRlc2NzW1NUR0VfTlRYREVTQ107Ci0KLQkvKgotCSAqIFRoZSByZWNlaXZlIGRlc2NyaXB0
 b3JzLgotCSAqLwotCXN0cnVjdCBzdGdlX3JmZCBzY2RfcnhkZXNjc1tTVEdFX05SWERFU0NdOwot
 fTsKLQogI2RlZmluZQlTVEdFX0NET0ZGKHgpCW9mZnNldG9mKHN0cnVjdCBzdGdlX2NvbnRyb2xf
 ZGF0YSwgeCkKICNkZWZpbmUJU1RHRV9DRFRYT0ZGKHgpCVNUR0VfQ0RPRkYoc2NkX3R4ZGVzY3Nb
 KHgpXSkKICNkZWZpbmUJU1RHRV9DRFJYT0ZGKHgpCVNUR0VfQ0RPRkYoc2NkX3J4ZGVzY3NbKHgp
 XSkKIAotLyoKLSAqIFNvZnR3YXJlIHN0YXRlIGZvciB0cmFuc21pdCBhbmQgcmVjZWl2ZSBqb2Jz
 LgotICovCi1zdHJ1Y3Qgc3RnZV9kZXNjc29mdCB7Ci0Jc3RydWN0IG1idWYgKmRzX21idWY7CQkv
 KiBoZWFkIG9mIG91ciBtYnVmIGNoYWluICovCi0JYnVzX2RtYW1hcF90IGRzX2RtYW1hcDsJCS8q
 IG91ciBETUEgbWFwICovCi19OwotCi0vKgotICogU29mdHdhcmUgc3RhdGUgcGVyIGRldmljZS4K
 LSAqLwotc3RydWN0IHN0Z2Vfc29mdGMgewotCWRldmljZV90IHNjX2RldjsJCS8qIGdlbmVyaWMg
 ZGV2aWNlIGluZm9ybWF0aW9uICovCi0JYnVzX3NwYWNlX3RhZ190IHNjX3N0OwkJLyogYnVzIHNw
 YWNlIHRhZyAqLwotCWJ1c19zcGFjZV9oYW5kbGVfdCBzY19zaDsJLyogYnVzIHNwYWNlIGhhbmRs
 ZSAqLwotCWJ1c19kbWFfdGFnX3Qgc2NfZG1hdDsJCS8qIGJ1cyBETUEgdGFnICovCi0Jc3RydWN0
 IGV0aGVyY29tIHNjX2V0aGVyY29tOwkvKiBldGhlcm5ldCBjb21tb24gZGF0YSAqLwotCWludCBz
 Y19yZXY7CQkJLyogc2lsaWNvbiByZXZpc2lvbiAqLwotCi0Jdm9pZCAqc2NfaWg7CQkJLyogaW50
 ZXJydXB0IGNvb2tpZSAqLwotCi0Jc3RydWN0IG1paV9kYXRhIHNjX21paTsJCS8qIE1JSS9tZWRp
 YSBpbmZvcm1hdGlvbiAqLwotCi0JY2FsbG91dF90IHNjX3RpY2tfY2g7CQkvKiB0aWNrIGNhbGxv
 dXQgKi8KLQotCWJ1c19kbWFtYXBfdCBzY19jZGRtYW1hcDsJLyogY29udHJvbCBkYXRhIERNQSBt
 YXAgKi8KLSNkZWZpbmUJc2NfY2RkbWEJc2NfY2RkbWFtYXAtPmRtX3NlZ3NbMF0uZHNfYWRkcgot
 Ci0JLyoKLQkgKiBTb2Z0d2FyZSBzdGF0ZSBmb3IgdHJhbnNtaXQgYW5kIHJlY2VpdmUgZGVzY3Jp
 cHRvcnMuCi0JICovCi0Jc3RydWN0IHN0Z2VfZGVzY3NvZnQgc2NfdHhzb2Z0W1NUR0VfTlRYREVT
 Q107Ci0Jc3RydWN0IHN0Z2VfZGVzY3NvZnQgc2Nfcnhzb2Z0W1NUR0VfTlJYREVTQ107Ci0KLQkv
 KgotCSAqIENvbnRyb2wgZGF0YSBzdHJ1Y3R1cmVzLgotCSAqLwotCXN0cnVjdCBzdGdlX2NvbnRy
 b2xfZGF0YSAqc2NfY29udHJvbF9kYXRhOwotI2RlZmluZQlzY190eGRlc2NzCXNjX2NvbnRyb2xf
 ZGF0YS0+c2NkX3R4ZGVzY3MKLSNkZWZpbmUJc2NfcnhkZXNjcwlzY19jb250cm9sX2RhdGEtPnNj
 ZF9yeGRlc2NzCi0KLSNpZmRlZiBTVEdFX0VWRU5UX0NPVU5URVJTCi0JLyoKLQkgKiBFdmVudCBj
 b3VudGVycy4KLQkgKi8KLQlzdHJ1Y3QgZXZjbnQgc2NfZXZfdHhzdGFsbDsJLyogVHggc3RhbGxl
 ZCAqLwotCXN0cnVjdCBldmNudCBzY19ldl90eGRtYWludHI7CS8qIFR4IERNQSBpbnRlcnJ1cHRz
 ICovCi0Jc3RydWN0IGV2Y250IHNjX2V2X3R4aW5kaW50cjsJLyogVHggSW5kaWNhdGUgaW50ZXJy
 dXB0cyAqLwotCXN0cnVjdCBldmNudCBzY19ldl9yeGludHI7CS8qIFJ4IGludGVycnVwdHMgKi8K
 LQotCXN0cnVjdCBldmNudCBzY19ldl90eHNlZzE7CS8qIFR4IHBhY2tldHMgdy8gMSBzZWdtZW50
 ICovCi0Jc3RydWN0IGV2Y250IHNjX2V2X3R4c2VnMjsJLyogVHggcGFja2V0cyB3LyAyIHNlZ21l
 bnRzICovCi0Jc3RydWN0IGV2Y250IHNjX2V2X3R4c2VnMzsJLyogVHggcGFja2V0cyB3LyAzIHNl
 Z21lbnRzICovCi0Jc3RydWN0IGV2Y250IHNjX2V2X3R4c2VnNDsJLyogVHggcGFja2V0cyB3LyA0
 IHNlZ21lbnRzICovCi0Jc3RydWN0IGV2Y250IHNjX2V2X3R4c2VnNTsJLyogVHggcGFja2V0cyB3
 LyA1IHNlZ21lbnRzICovCi0Jc3RydWN0IGV2Y250IHNjX2V2X3R4c2VnbW9yZTsJLyogVHggcGFj
 a2V0cyB3LyBtb3JlIHRoYW4gNSBzZWdtZW50cyAqLwotCXN0cnVjdCBldmNudCBzY19ldl90eGNv
 cHk7CS8qIFR4IHBhY2tldHMgdGhhdCB3ZSBoYWQgdG8gY29weSAqLwotCi0Jc3RydWN0IGV2Y250
 IHNjX2V2X3J4aXBzdW07CS8qIElQIGNoZWNrc3VtcyBjaGVja2VkIGluLWJvdW5kICovCi0Jc3Ry
 dWN0IGV2Y250IHNjX2V2X3J4dGNwc3VtOwkvKiBUQ1AgY2hlY2tzdW1zIGNoZWNrZWQgaW4tYm91
 bmQgKi8KLQlzdHJ1Y3QgZXZjbnQgc2NfZXZfcnh1ZHBzdW07CS8qIFVEUCBjaGVja3N1bXMgY2hl
 Y2tlZCBpbi1ib3VuZCAqLwotCi0Jc3RydWN0IGV2Y250IHNjX2V2X3R4aXBzdW07CS8qIElQIGNo
 ZWNrc3VtcyBjb21wLiBvdXQtYm91bmQgKi8KLQlzdHJ1Y3QgZXZjbnQgc2NfZXZfdHh0Y3BzdW07
 CS8qIFRDUCBjaGVja3N1bXMgY29tcC4gb3V0LWJvdW5kICovCi0Jc3RydWN0IGV2Y250IHNjX2V2
 X3R4dWRwc3VtOwkvKiBVRFAgY2hlY2tzdW1zIGNvbXAuIG91dC1ib3VuZCAqLwotI2VuZGlmIC8q
 IFNUR0VfRVZFTlRfQ09VTlRFUlMgKi8KLQotCWludAlzY190eHBlbmRpbmc7CQkvKiBudW1iZXIg
 b2YgVHggcmVxdWVzdHMgcGVuZGluZyAqLwotCWludAlzY190eGRpcnR5OwkJLyogZmlyc3QgZGly
 dHkgVHggZGVzY3JpcHRvciAqLwotCWludAlzY190eGxhc3Q7CQkvKiBsYXN0IHVzZWQgVHggZGVz
 Y3JpcHRvciAqLwotCi0JaW50CXNjX3J4cHRyOwkJLyogbmV4dCByZWFkeSBSeCBkZXNjcmlwdG9y
 L2Rlc2Nzb2Z0ICovCi0JaW50CXNjX3J4ZGlzY2FyZDsKLQlpbnQJc2NfcnhsZW47Ci0Jc3RydWN0
 IG1idWYgKnNjX3J4aGVhZDsKLQlzdHJ1Y3QgbWJ1ZiAqc2Nfcnh0YWlsOwotCXN0cnVjdCBtYnVm
 ICoqc2Nfcnh0YWlscDsKLQotCWludAlzY190eHRocmVzaDsJCS8qIFR4IHRocmVzaG9sZCAqLwot
 CXVpbnQzMl90IHNjX3VzZWZpYmVyOjE7CQkvKiBpZiB3ZSdyZSBmaWJlciAqLwotCXVpbnQzMl90
 IHNjX3N0Z2UxMDIzOjE7CQkvKiBhcmUgd2UgYSAxMDIzICovCi0JdWludDMyX3Qgc2NfRE1BQ3Ry
 bDsJCS8qIHByb3RvdHlwZSBETUFDdHJsIHJlZ2lzdGVyICovCi0JdWludDMyX3Qgc2NfTUFDQ3Ry
 bDsJCS8qIHByb3RvdHlwZSBNYWNDdHJsIHJlZ2lzdGVyICovCi0JdWludDE2X3Qgc2NfSW50RW5h
 YmxlOwkJLyogcHJvdG90eXBlIEludEVuYWJsZSByZWdpc3RlciAqLwotCXVpbnQxNl90IHNjX1Jl
 Y2VpdmVNb2RlOwkvKiBwcm90b3R5cGUgUmVjZWl2ZU1vZGUgcmVnaXN0ZXIgKi8KLQl1aW50OF90
 IHNjX1BoeUN0cmw7CQkvKiBwcm90b3R5cGUgUGh5Q3RybCByZWdpc3RlciAqLwotfTsKLQogI2Rl
 ZmluZQlTVEdFX1JYQ0hBSU5fUkVTRVQoc2MpCQkJCQkJXAogZG8gewkJCQkJCQkJCVwKIAkoc2Mp
 LT5zY19yeHRhaWxwID0gJihzYyktPnNjX3J4aGVhZDsJCQkJXApkaWZmIC0tZ2l0IGEvc3lzL2Rl
 di9wY2kvaWZfc3RnZXJlZy5oIGIvc3lzL2Rldi9wY2kvaWZfc3RnZXJlZy5oCmluZGV4IGFiYjNj
 YjJkOTBjLi5hY2UwOTM1NmI5OCAxMDA2NDQKLS0tIGEvc3lzL2Rldi9wY2kvaWZfc3RnZXJlZy5o
 CisrKyBiL3N5cy9kZXYvcGNpL2lmX3N0Z2VyZWcuaApAQCAtMzIsNiArMzIsMTAgQEAKICNpZm5k
 ZWYgX0RFVl9QQ0lfSUZfU1RHRVJFR19IXwogI2RlZmluZQlfREVWX1BDSV9JRl9TVEdFUkVHX0hf
 CiAKKworI2luY2x1ZGUgPG5ldC9pZl9ldGhlci5oPgorI2luY2x1ZGUgPHN5cy9idXMuaD4KKwog
 LyoKICAqIFJlZ2lzdGVyIGRlc2NyaXB0aW9uIGZvciB0aGUgU3VuZGFuY2UgVGVjaC4gVEM5MDIx
 IDEwLzEwMC8xMDAwCiAgKiBFdGhlcm5ldCBjb250cm9sbGVyLgpAQCAtNDQ5LDQgKzQ1MywxMjkg
 QEAgc3RydWN0IHN0Z2VfcmZkIHsKIAogI2RlZmluZQlTVEdFX0V0aGVyU3RhdHNQa3RzMTAyNHRv
 MTUxOE9jdGV0cwkJMHgxNTAKIAorLyoKKyAqIFRyYW5zbWl0IGRlc2NyaXB0b3IgbGlzdCBzaXpl
 LgorICovCisjZGVmaW5lCVNUR0VfTlRYREVTQwkJMjU2CisjZGVmaW5lCVNUR0VfTlRYREVTQ19N
 QVNLCShTVEdFX05UWERFU0MgLSAxKQorI2RlZmluZQlTVEdFX05FWFRUWCh4KQkJKCgoeCkgKyAx
 KSAmIFNUR0VfTlRYREVTQ19NQVNLKQorCisvKgorICogUmVjZWl2ZSBkZXNjcmlwdG9yIGxpc3Qg
 c2l6ZS4KKyAqLworI2RlZmluZQlTVEdFX05SWERFU0MJCTI1NgorI2RlZmluZQlTVEdFX05SWERF
 U0NfTUFTSwkoU1RHRV9OUlhERVNDIC0gMSkKKyNkZWZpbmUJU1RHRV9ORVhUUlgoeCkJCSgoKHgp
 ICsgMSkgJiBTVEdFX05SWERFU0NfTUFTSykKKworLyoKKyAqIE9ubHkgaW50ZXJydXB0IGV2ZXJ5
 IE4gZnJhbWVzLiAgTXVzdCBiZSBhIHBvd2VyLW9mLXR3by4KKyAqLworI2RlZmluZQlTVEdFX1RY
 SU5UUl9TUEFDSU5HCTE2CisjZGVmaW5lCVNUR0VfVFhJTlRSX1NQQUNJTkdfTUFTSyAoU1RHRV9U
 WElOVFJfU1BBQ0lORyAtIDEpCisKKy8qCisgKiBDb250cm9sIHN0cnVjdHVyZXMgYXJlIERNQSdk
 IHRvIHRoZSBUQzkwMjEgY2hpcC4gIFdlIGFsbG9jYXRlIHRoZW0gaW4KKyAqIGEgc2luZ2xlIGNs
 dW1wIHRoYXQgbWFwcyB0byBhIHNpbmdsZSBETUEgc2VnbWVudCB0byBtYWtlIHNldmVyYWwgdGhp
 bmdzCisgKiBlYXNpZXIuCisgKi8KK3N0cnVjdCBzdGdlX2NvbnRyb2xfZGF0YSB7CisJLyoKKwkg
 KiBUaGUgdHJhbnNtaXQgZGVzY3JpcHRvcnMuCisJICovCisJc3RydWN0IHN0Z2VfdGZkIHNjZF90
 eGRlc2NzW1NUR0VfTlRYREVTQ107CisKKwkvKgorCSAqIFRoZSByZWNlaXZlIGRlc2NyaXB0b3Jz
 LgorCSAqLworCXN0cnVjdCBzdGdlX3JmZCBzY2RfcnhkZXNjc1tTVEdFX05SWERFU0NdOworfTsK
 KworLyoKKyAqIFNvZnR3YXJlIHN0YXRlIGZvciB0cmFuc21pdCBhbmQgcmVjZWl2ZSBqb2JzLgor
 ICovCitzdHJ1Y3Qgc3RnZV9kZXNjc29mdCB7CisJc3RydWN0IG1idWYgKmRzX21idWY7CQkvKiBo
 ZWFkIG9mIG91ciBtYnVmIGNoYWluICovCisJYnVzX2RtYW1hcF90IGRzX2RtYW1hcDsJCS8qIG91
 ciBETUEgbWFwICovCit9OworCisvKgorICogU29mdHdhcmUgc3RhdGUgcGVyIGRldmljZS4KKyAq
 Lworc3RydWN0IHN0Z2Vfc29mdGMgeworCWRldmljZV90IHNjX2RldjsJCS8qIGdlbmVyaWMgZGV2
 aWNlIGluZm9ybWF0aW9uICovCisJYnVzX3NwYWNlX3RhZ190IHNjX3N0OwkJLyogYnVzIHNwYWNl
 IHRhZyAqLworCWJ1c19zcGFjZV9oYW5kbGVfdCBzY19zaDsJLyogYnVzIHNwYWNlIGhhbmRsZSAq
 LworCWJ1c19kbWFfdGFnX3Qgc2NfZG1hdDsJCS8qIGJ1cyBETUEgdGFnICovCisJc3RydWN0IGV0
 aGVyY29tIHNjX2V0aGVyY29tOwkvKiBldGhlcm5ldCBjb21tb24gZGF0YSAqLworCWludCBzY19y
 ZXY7CQkJLyogc2lsaWNvbiByZXZpc2lvbiAqLworCisJdm9pZCAqc2NfaWg7CQkJLyogaW50ZXJy
 dXB0IGNvb2tpZSAqLworCisJc3RydWN0IG1paV9kYXRhIHNjX21paTsJCS8qIE1JSS9tZWRpYSBp
 bmZvcm1hdGlvbiAqLworCisJY2FsbG91dF90IHNjX3RpY2tfY2g7CQkvKiB0aWNrIGNhbGxvdXQg
 Ki8KKworCWJ1c19kbWFtYXBfdCBzY19jZGRtYW1hcDsJLyogY29udHJvbCBkYXRhIERNQSBtYXAg
 Ki8KKyNkZWZpbmUJc2NfY2RkbWEJc2NfY2RkbWFtYXAtPmRtX3NlZ3NbMF0uZHNfYWRkcgorCisJ
 LyoKKwkgKiBTb2Z0d2FyZSBzdGF0ZSBmb3IgdHJhbnNtaXQgYW5kIHJlY2VpdmUgZGVzY3JpcHRv
 cnMuCisJICovCisJc3RydWN0IHN0Z2VfZGVzY3NvZnQgc2NfdHhzb2Z0W1NUR0VfTlRYREVTQ107
 CisJc3RydWN0IHN0Z2VfZGVzY3NvZnQgc2Nfcnhzb2Z0W1NUR0VfTlJYREVTQ107CisKKwkvKgor
 CSAqIENvbnRyb2wgZGF0YSBzdHJ1Y3R1cmVzLgorCSAqLworCXN0cnVjdCBzdGdlX2NvbnRyb2xf
 ZGF0YSAqc2NfY29udHJvbF9kYXRhOworI2RlZmluZQlzY190eGRlc2NzCXNjX2NvbnRyb2xfZGF0
 YS0+c2NkX3R4ZGVzY3MKKyNkZWZpbmUJc2NfcnhkZXNjcwlzY19jb250cm9sX2RhdGEtPnNjZF9y
 eGRlc2NzCisKKyNpZmRlZiBTVEdFX0VWRU5UX0NPVU5URVJTCisJLyoKKwkgKiBFdmVudCBjb3Vu
 dGVycy4KKwkgKi8KKwlzdHJ1Y3QgZXZjbnQgc2NfZXZfdHhzdGFsbDsJLyogVHggc3RhbGxlZCAq
 LworCXN0cnVjdCBldmNudCBzY19ldl90eGRtYWludHI7CS8qIFR4IERNQSBpbnRlcnJ1cHRzICov
 CisJc3RydWN0IGV2Y250IHNjX2V2X3R4aW5kaW50cjsJLyogVHggSW5kaWNhdGUgaW50ZXJydXB0
 cyAqLworCXN0cnVjdCBldmNudCBzY19ldl9yeGludHI7CS8qIFJ4IGludGVycnVwdHMgKi8KKwor
 CXN0cnVjdCBldmNudCBzY19ldl90eHNlZzE7CS8qIFR4IHBhY2tldHMgdy8gMSBzZWdtZW50ICov
 CisJc3RydWN0IGV2Y250IHNjX2V2X3R4c2VnMjsJLyogVHggcGFja2V0cyB3LyAyIHNlZ21lbnRz
 ICovCisJc3RydWN0IGV2Y250IHNjX2V2X3R4c2VnMzsJLyogVHggcGFja2V0cyB3LyAzIHNlZ21l
 bnRzICovCisJc3RydWN0IGV2Y250IHNjX2V2X3R4c2VnNDsJLyogVHggcGFja2V0cyB3LyA0IHNl
 Z21lbnRzICovCisJc3RydWN0IGV2Y250IHNjX2V2X3R4c2VnNTsJLyogVHggcGFja2V0cyB3LyA1
 IHNlZ21lbnRzICovCisJc3RydWN0IGV2Y250IHNjX2V2X3R4c2VnbW9yZTsJLyogVHggcGFja2V0
 cyB3LyBtb3JlIHRoYW4gNSBzZWdtZW50cyAqLworCXN0cnVjdCBldmNudCBzY19ldl90eGNvcHk7
 CS8qIFR4IHBhY2tldHMgdGhhdCB3ZSBoYWQgdG8gY29weSAqLworCisJc3RydWN0IGV2Y250IHNj
 X2V2X3J4aXBzdW07CS8qIElQIGNoZWNrc3VtcyBjaGVja2VkIGluLWJvdW5kICovCisJc3RydWN0
 IGV2Y250IHNjX2V2X3J4dGNwc3VtOwkvKiBUQ1AgY2hlY2tzdW1zIGNoZWNrZWQgaW4tYm91bmQg
 Ki8KKwlzdHJ1Y3QgZXZjbnQgc2NfZXZfcnh1ZHBzdW07CS8qIFVEUCBjaGVja3N1bXMgY2hlY2tl
 ZCBpbi1ib3VuZCAqLworCisJc3RydWN0IGV2Y250IHNjX2V2X3R4aXBzdW07CS8qIElQIGNoZWNr
 c3VtcyBjb21wLiBvdXQtYm91bmQgKi8KKwlzdHJ1Y3QgZXZjbnQgc2NfZXZfdHh0Y3BzdW07CS8q
 IFRDUCBjaGVja3N1bXMgY29tcC4gb3V0LWJvdW5kICovCisJc3RydWN0IGV2Y250IHNjX2V2X3R4
 dWRwc3VtOwkvKiBVRFAgY2hlY2tzdW1zIGNvbXAuIG91dC1ib3VuZCAqLworI2VuZGlmIC8qIFNU
 R0VfRVZFTlRfQ09VTlRFUlMgKi8KKworCWludAlzY190eHBlbmRpbmc7CQkvKiBudW1iZXIgb2Yg
 VHggcmVxdWVzdHMgcGVuZGluZyAqLworCWludAlzY190eGRpcnR5OwkJLyogZmlyc3QgZGlydHkg
 VHggZGVzY3JpcHRvciAqLworCWludAlzY190eGxhc3Q7CQkvKiBsYXN0IHVzZWQgVHggZGVzY3Jp
 cHRvciAqLworCisJaW50CXNjX3J4cHRyOwkJLyogbmV4dCByZWFkeSBSeCBkZXNjcmlwdG9yL2Rl
 c2Nzb2Z0ICovCisJaW50CXNjX3J4ZGlzY2FyZDsKKwlpbnQJc2NfcnhsZW47CisJc3RydWN0IG1i
 dWYgKnNjX3J4aGVhZDsKKwlzdHJ1Y3QgbWJ1ZiAqc2Nfcnh0YWlsOworCXN0cnVjdCBtYnVmICoq
 c2Nfcnh0YWlscDsKKworCWludAlzY190eHRocmVzaDsJCS8qIFR4IHRocmVzaG9sZCAqLworCXVp
 bnQzMl90IHNjX3VzZWZpYmVyOjE7CQkvKiBpZiB3ZSdyZSBmaWJlciAqLworCXVpbnQzMl90IHNj
 X3N0Z2UxMDIzOjE7CQkvKiBhcmUgd2UgYSAxMDIzICovCisJdWludDMyX3Qgc2NfRE1BQ3RybDsJ
 CS8qIHByb3RvdHlwZSBETUFDdHJsIHJlZ2lzdGVyICovCisJdWludDMyX3Qgc2NfTUFDQ3RybDsJ
 CS8qIHByb3RvdHlwZSBNYWNDdHJsIHJlZ2lzdGVyICovCisJdWludDE2X3Qgc2NfSW50RW5hYmxl
 OwkJLyogcHJvdG90eXBlIEludEVuYWJsZSByZWdpc3RlciAqLworCXVpbnQxNl90IHNjX1JlY2Vp
 dmVNb2RlOwkvKiBwcm90b3R5cGUgUmVjZWl2ZU1vZGUgcmVnaXN0ZXIgKi8KKwl1aW50OF90IHNj
 X1BoeUN0cmw7CQkvKiBwcm90b3R5cGUgUGh5Q3RybCByZWdpc3RlciAqLworfTsKKwogI2VuZGlm
 IC8qIF9ERVZfUENJX0lGX1NUR0VSRUdfSF8gKi8K
 --00000000000081a60e0593a2dbc1--
 


Home | Main Index | Thread Index | Old Index