<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>134374</bug_id>
          
          <creation_ts>2014-06-26 18:28:08 -0700</creation_ts>
          <short_desc>HIDGamepadProvider should only be active when someone is interested in Gamepads</short_desc>
          <delta_ts>2022-03-01 02:54:16 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>134076</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Brady Eidson">beidson</reporter>
          <assigned_to name="Brady Eidson">beidson</assigned_to>
          <cc>bunhere</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dino</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>sergio</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1018826</commentid>
    <comment_count>0</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2014-06-26 18:28:08 -0700</bug_when>
    <thetext>HIDGamepadProvider should only be active when someone is interested in Gamepads</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1018859</commentid>
    <comment_count>1</comment_count>
      <attachid>233958</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2014-06-26 21:10:04 -0700</bug_when>
    <thetext>Created attachment 233958
Patch v1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1018860</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-06-26 21:11:15 -0700</bug_when>
    <thetext>Attachment 233958 did not pass style-queue:


ERROR: Source/WebCore/platform/mac/HIDGamepadProvider.cpp:31:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 1 in 4 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1018861</commentid>
    <comment_count>3</comment_count>
      <attachid>233959</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2014-06-26 21:17:14 -0700</bug_when>
    <thetext>Created attachment 233959
Patch v2 - Alpha fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1018985</commentid>
    <comment_count>4</comment_count>
      <attachid>233959</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2014-06-27 09:51:27 -0700</bug_when>
    <thetext>Comment on attachment 233959
Patch v2 - Alpha fix

View in context: https://bugs.webkit.org/attachment.cgi?id=233959&amp;action=review

&gt; Source/WebCore/platform/mac/HIDGamepadProvider.cpp:83
&gt; +    , m_connectionDelayTimer(this, &amp;HIDGamepadProvider::connectionDelayTimerFired)

Might be better to use the new style lambda-based timer rather than the old pointer-to-member-function one. I think Anders added that recently.

&gt; Source/WebCore/platform/mac/HIDGamepadProvider.cpp:114
&gt; +void HIDGamepadProvider::openAndScheduleManager()

Should this function assert that m_gamepadVector and m_gamepadMap are both empty?

&gt; Source/WebCore/platform/mac/HIDGamepadProvider.cpp:127
&gt; +void HIDGamepadProvider::closeAndUnscheduleManager()

Should this function also stop m_connectionDelayTimer?

&gt; Source/WebCore/platform/mac/HIDGamepadProvider.cpp:143
&gt;      m_clients.add(client);
&gt; +
&gt; +    if (m_clients.size() == 1)
&gt; +        openAndScheduleManager();

This isn’t ideal, because add will silently do nothing if we re-add an existing client. It would be better to do this work only if the client dictionary was empty. Checking that size is 1 afterwards is not quite the same thing if we have some problem where we re-add the same client, so it would be nicer to just check beforehand and store it in a boolean rather than checking for a size of 1. We don’t even have an assertion here that this client isn’t already in m_clients.

&gt; Source/WebCore/platform/mac/HIDGamepadProvider.cpp:150
&gt;      m_clients.remove(client);
&gt; +
&gt; +    if (!m_clients.size())
&gt; +        closeAndUnscheduleManager();

It would be better to do this only if the remove function returned true for the same reason I suggested the change above; if the client isn’t already in the dictionary, it will return false. You could even do it with an early return if you like. The clients dictionary might already be empty, and it’s harmless to remove a client that isn’t in there except for the closeAndUnscheuleManager work.

I think it’s better to code in a way that’s resilient to these strange cases. Also probably good to assert contains here and assert !contains in startMonitoringGamepads too.

&gt; Source/WebCore/platform/mac/HIDGamepadProvider.cpp:192
&gt; +    // Any time we get a device removed callback we know its a real event and not an &apos;already connected&apos; event.

Should be &quot;it&apos;s&quot; with an apostrophe.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1019069</commentid>
    <comment_count>5</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2014-06-27 13:36:35 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/170549</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>233958</attachid>
            <date>2014-06-26 21:10:04 -0700</date>
            <delta_ts>2014-06-26 21:17:14 -0700</delta_ts>
            <desc>Patch v1</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>10511</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAyOTQ0NDM0Li42NmQ5ZjI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzEg
QEAKKzIwMTQtMDYtMjYgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAg
ICAgIEhJREdhbWVwYWRQcm92aWRlciBzaG91bGQgb25seSBiZSBhY3RpdmUgd2hlbiBzb21lb25l
IGlzIGludGVyZXN0ZWQgaW4gR2FtZXBhZHMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMzQzNzQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMgKE5vdCB5ZXQgYSB0ZXN0ZWQgY29uZmln
KQorCisgICAgICAgICogTW9kdWxlcy9nYW1lcGFkL0dhbWVwYWRNYW5hZ2VyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkdhbWVwYWRNYW5hZ2VyOjpyZWdpc3Rlck5hdmlnYXRvcik6IEFkZCBzb21l
IGxvZ2dpbmcuCisgICAgICAgIChXZWJDb3JlOjpHYW1lcGFkTWFuYWdlcjo6dW5yZWdpc3Rlck5h
dmlnYXRvcik6IERpdHRvLgorCisgICAgICAgICogcGxhdGZvcm0vbWFjL0hJREdhbWVwYWRQcm92
aWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpISURHYW1lcGFkUHJvdmlkZXI6OkhJREdhbWVw
YWRQcm92aWRlcik6CisgICAgICAgIChXZWJDb3JlOjpISURHYW1lcGFkUHJvdmlkZXI6OmNvbm5l
Y3Rpb25EZWxheVRpbWVyRmlyZWQpOiBTdG9wIHN1cHByZXNzaW5nIGNvbm5lY3Rpb24gY2FsbGJh
Y2tzCisgICAgICAgIChXZWJDb3JlOjpISURHYW1lcGFkUHJvdmlkZXI6Om9wZW5BbmRTY2hlZHVs
ZU1hbmFnZXIpOgorICAgICAgICAoV2ViQ29yZTo6SElER2FtZXBhZFByb3ZpZGVyOjpjbG9zZUFu
ZFVuc2NoZWR1bGVNYW5hZ2VyKTogU3RvcCBsaXN0ZW5pbmcgZm9yIGdhbWVwYWQgZXZlbnRzLCBh
bmQgY2xlYXIKKyAgICAgICAgICBhbGwgY3VycmVudCBnYW1lcGFkcy4KKyAgICAgICAgKFdlYkNv
cmU6OkhJREdhbWVwYWRQcm92aWRlcjo6c3RhcnRNb25pdG9yaW5nR2FtZXBhZHMpOiBJZiB0aGUg
Zmlyc3QgY2xpZW50LCBjYWxsIG9wZW5BbmRTY2hlZHVsZU1hbmFnZXIKKyAgICAgICAgKFdlYkNv
cmU6OkhJREdhbWVwYWRQcm92aWRlcjo6c3RvcE1vbml0b3JpbmdHYW1lcGFkcyk6IElmIHRoZSBs
YXN0IGNsaWVudCwgY2FsbCBjbG9zZUFuZFVuc2NoZWR1bGVNYW5hZ2VyCisgICAgICAgIChXZWJD
b3JlOjpISURHYW1lcGFkUHJvdmlkZXI6OmRldmljZUFkZGVkKTogSWYgdGhpcyBjYWxsYmFjayBj
YW1lIHdoaWxlIHdlIHdlcmUgc3VwcHJlc3NpbmcgY29ubmVjdGlvbgorICAgICAgICAgIGNhbGxi
YWNrcywgaXQgaXMgYSBzdGFydHVwIGV2ZW50IGZvciBhbHJlYWR5LWNvbm5lY3RlZCBnYW1lcGFk
cy4gU3RvcCBzdXBwcmVzc2luZyBjYWxsYmFja3MgaW4gYSBsYXRlcgorICAgICAgICAgIHNwaW4g
b2YgdGhlIHJ1bmxvb3AuCisgICAgICAgIChXZWJDb3JlOjpISURHYW1lcGFkUHJvdmlkZXI6OmRl
dmljZVJlbW92ZWQpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9ISURHYW1lcGFkUHJvdmlkZXIu
aDoKKyAgICAgICAgKFdlYkNvcmU6OkhJREdhbWVwYWRQcm92aWRlcjo6c2V0U2hvdWxkRGlzcGF0
Y2hDYWxsYmFja3MpOiBEZWxldGVkLgorCiAyMDE0LTA2LTI2ICBCYWxhenMgS2VsZW1lbiAgPGIu
a2VsZW1lbkBzYW1zdW5nLmNvbT4KIAogICAgICAgICBNZW1jYWNoZSBtaWd0aCBub3QgYmUgcHJ1
bmVkIHdoZW4gaXQgc2hvdWxkIGZvciBodHRwcyBwYWdlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9nYW1lcGFkL0dhbWVwYWRNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZ2FtZXBhZC9HYW1lcGFkTWFuYWdlci5jcHAKaW5kZXggY2UwYzI3Zi4uODM0NzVi
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nYW1lcGFkL0dhbWVwYWRNYW5h
Z2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dhbWVwYWQvR2FtZXBhZE1hbmFn
ZXIuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAKICNpbmNsdWRlICJHYW1lcGFkLmgiCiAjaW5jbHVk
ZSAiR2FtZXBhZFByb3ZpZGVyLmgiCisjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk5h
dmlnYXRvckdhbWVwYWQuaCIKICNpbmNsdWRlICJQbGF0Zm9ybUdhbWVwYWQuaCIKIApAQCAtNjMs
MjYgKzY0LDM1IEBAIHZvaWQgR2FtZXBhZE1hbmFnZXI6OnBsYXRmb3JtR2FtZXBhZERpc2Nvbm5l
Y3RlZCh1bnNpZ25lZCBpbmRleCkKIAogdm9pZCBHYW1lcGFkTWFuYWdlcjo6cmVnaXN0ZXJOYXZp
Z2F0b3IoTmF2aWdhdG9yR2FtZXBhZCogbmF2aWdhdG9yKQogeworICAgIExPRyhHYW1lcGFkLCAi
R2FtZXBhZE1hbmFnZXIgcmVnaXN0ZXJpbmcgTmF2aWdhdG9yR2FtZXBhZCAlcCIsIG5hdmlnYXRv
cik7CisKICAgICBBU1NFUlQoIW1fbmF2aWdhdG9ycy5jb250YWlucyhuYXZpZ2F0b3IpKTsKICAg
ICBtX25hdmlnYXRvcnMuYWRkKG5hdmlnYXRvcik7CiAKICAgICAvLyBGSVhNRTogTW9uaXRvcmlu
ZyBnYW1lcGFkcyB3aWxsIGFsc28gYmUgcmVsaWFudCBvbiB3aGV0aGVyIG9yIG5vdCB0aGVyZSBh
cmUgYW55CiAgICAgLy8gY29ubmVjdGVkL2Rpc2Nvbm5lY3RlZCBldmVudCBsaXN0ZW5lcnMuCiAg
ICAgLy8gVGhvc2UgZXZlbnQgbGlzdGVuZXJzIHdpbGwgYWxzbyBuZWVkIHRvIHJlZ2lzdGVyIHdp
dGggdGhlIEdhbWVwYWRNYW5hZ2VyLgotICAgIGlmIChtX25hdmlnYXRvcnMuc2l6ZSgpID09IDEp
CisgICAgaWYgKG1fbmF2aWdhdG9ycy5zaXplKCkgPT0gMSkgeworICAgICAgICBMT0coR2FtZXBh
ZCwgIkdhbWVwYWRNYW5hZ2VyIHJlZ2lzdGVyZWQgZmlyc3QgbmF2aWdhdG9yLCBpcyBzdGFydGlu
ZyBnYW1lcGFkIG1vbml0b3JpbmciKTsKICAgICAgICAgR2FtZXBhZFByb3ZpZGVyOjpzaGFyZWQo
KS5zdGFydE1vbml0b3JpbmdHYW1lcGFkcyh0aGlzKTsKKyAgICB9CiB9CiAKIHZvaWQgR2FtZXBh
ZE1hbmFnZXI6OnVucmVnaXN0ZXJOYXZpZ2F0b3IoTmF2aWdhdG9yR2FtZXBhZCogbmF2aWdhdG9y
KQogeworICAgIExPRyhHYW1lcGFkLCAiR2FtZXBhZE1hbmFnZXIgdW5yZWdpc3RlcmluZyBOYXZp
Z2F0b3JHYW1lcGFkICVwIiwgbmF2aWdhdG9yKTsKKwogICAgIEFTU0VSVChtX25hdmlnYXRvcnMu
Y29udGFpbnMobmF2aWdhdG9yKSk7CiAgICAgbV9uYXZpZ2F0b3JzLnJlbW92ZShuYXZpZ2F0b3Ip
OwogCiAgICAgLy8gRklYTUU6IE1vbml0b3JpbmcgZ2FtZXBhZHMgd2lsbCBhbHNvIGJlIHJlbGlh
bnQgb24gd2hldGhlciBvciBub3QgdGhlcmUgYXJlIGFueQogICAgIC8vIGNvbm5lY3RlZC9kaXNj
b25uZWN0ZWQgZXZlbnQgbGlzdGVuZXJzLgogICAgIC8vIFRob3NlIGV2ZW50IGxpc3RlbmVycyB3
aWxsIGFsc28gbmVlZCB0byByZWdpc3RlciB3aXRoIHRoZSBHYW1lcGFkTWFuYWdlci4KLSAgICBp
ZiAobV9uYXZpZ2F0b3JzLmlzRW1wdHkoKSkKKyAgICBpZiAobV9uYXZpZ2F0b3JzLmlzRW1wdHko
KSkgeworICAgICAgICBMT0coR2FtZXBhZCwgIkdhbWVwYWRNYW5hZ2VyIHVucmVnaXN0ZXJlZCBs
YXN0IG5hdmlnYXRvciwgaXMgc3RvcHBpbmcgZ2FtZXBhZCBtb25pdG9yaW5nIik7CisKICAgICAg
ICAgR2FtZXBhZFByb3ZpZGVyOjpzaGFyZWQoKS5zdG9wTW9uaXRvcmluZ0dhbWVwYWRzKHRoaXMp
OworICAgIH0KIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWFjL0hJREdhbWVwYWRQcm92aWRlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tYWMvSElER2FtZXBhZFByb3ZpZGVyLmNwcAppbmRleCAzMzdhOTBhLi44
OGZhMzJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvSElER2FtZXBh
ZFByb3ZpZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvSElER2FtZXBh
ZFByb3ZpZGVyLmNwcApAQCAtMjgsMTIgKzI4LDE0IEBACiAKICNpZiBFTkFCTEUoR0FNRVBBRCkK
IAorI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJHYW1lcGFkUHJvdmlkZXJDbGllbnQu
aCIKICNpbmNsdWRlICJQbGF0Zm9ybUdhbWVwYWQuaCIKLSNpbmNsdWRlIDx3dGYvTWFpblRocmVh
ZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK3N0YXRpYyBjb25zdCBkb3VibGUgQ29ubmVj
dGlvbkRlbGF5SW50ZXJ2YWwgPSAwLjU7CisKIHN0YXRpYyBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5
UmVmPiBkZXZpY2VNYXRjaGluZ0RpY3Rpb25hcnkodWludDMyX3QgdXNhZ2VQYWdlLCB1aW50MzJf
dCB1c2FnZSkKIHsKICAgICBBU1NFUlQodXNhZ2VQYWdlKTsKQEAgLTc4LDYgKzgwLDcgQEAgSElE
R2FtZXBhZFByb3ZpZGVyJiBISURHYW1lcGFkUHJvdmlkZXI6OnNoYXJlZCgpCiAKIEhJREdhbWVw
YWRQcm92aWRlcjo6SElER2FtZXBhZFByb3ZpZGVyKCkKICAgICA6IG1fc2hvdWxkRGlzcGF0Y2hD
YWxsYmFja3MoZmFsc2UpCisgICAgLCBtX2Nvbm5lY3Rpb25EZWxheVRpbWVyKHRoaXMsICZISURH
YW1lcGFkUHJvdmlkZXI6OmNvbm5lY3Rpb25EZWxheVRpbWVyRmlyZWQpCiB7CiAgICAgbV9tYW5h
Z2VyID0gYWRvcHRDRihJT0hJRE1hbmFnZXJDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwga0lP
SElET3B0aW9uc1R5cGVOb25lKSk7CiAKQEAgLTkxLDE3ICs5NCw3IEBAIEhJREdhbWVwYWRQcm92
aWRlcjo6SElER2FtZXBhZFByb3ZpZGVyKCkKICAgICBJT0hJRE1hbmFnZXJTZXREZXZpY2VNYXRj
aGluZ011bHRpcGxlKG1fbWFuYWdlci5nZXQoKSwgbWF0Y2hpbmdBcnJheS5nZXQoKSk7CiAgICAg
SU9ISURNYW5hZ2VyUmVnaXN0ZXJEZXZpY2VNYXRjaGluZ0NhbGxiYWNrKG1fbWFuYWdlci5nZXQo
KSwgZGV2aWNlQWRkZWRDYWxsYmFjaywgdGhpcyk7CiAgICAgSU9ISURNYW5hZ2VyUmVnaXN0ZXJE
ZXZpY2VSZW1vdmFsQ2FsbGJhY2sobV9tYW5hZ2VyLmdldCgpLCBkZXZpY2VSZW1vdmVkQ2FsbGJh
Y2ssIHRoaXMpOwotICAgIElPSElETWFuYWdlclNjaGVkdWxlV2l0aFJ1bkxvb3AobV9tYW5hZ2Vy
LmdldCgpLCBDRlJ1bkxvb3BHZXRDdXJyZW50KCksIGtDRlJ1bkxvb3BEZWZhdWx0TW9kZSk7Ci0g
ICAgSU9ISURNYW5hZ2VyT3BlbihtX21hbmFnZXIuZ2V0KCksIGtJT0hJRE9wdGlvbnNUeXBlTm9u
ZSk7Ci0KICAgICBJT0hJRE1hbmFnZXJSZWdpc3RlcklucHV0VmFsdWVDYWxsYmFjayhtX21hbmFn
ZXIuZ2V0KCksIGRldmljZVZhbHVlc0NoYW5nZWRDYWxsYmFjaywgdGhpcyk7Ci0KLSAgICAvLyBX
ZSdsbCBpbW1lZGlhdGVseSBnZXQgYSBzZXJpZXMgb2YgY29ubmVjdGlvbiBhbmQgdmFsdWUgY2Fs
bGJhY2tzIGZvciBhbHJlYWR5LWNvbm5lY3RlZCBnYW1lcGFkcwotICAgIC8vIGJ1dCB3ZSBkb24n
dCB3YW50IHRvIG5vdGlmeSBXZWJDb3JlIG9mIHRob3NlIGV2ZW50cy4KLSAgICAvLyBUaGlzIGNh
bGxPbk1haW5UaHJlYWQgY2FsbCByZS1lbmFibGVzIHRob3NlIGNhbGxiYWNrcyBhZnRlciB0aGUg
cnVubG9vcCBlbXB0aWVzIG91dC4KLSAgICBjYWxsT25NYWluVGhyZWFkKFtdKCkgewotICAgICAg
ICBISURHYW1lcGFkUHJvdmlkZXI6OnNoYXJlZCgpLnNldFNob3VsZERpc3BhdGNoQ2FsbGJhY2tz
KHRydWUpOwotICAgIH0pOwogfQogCiB1bnNpZ25lZCBISURHYW1lcGFkUHJvdmlkZXI6OmluZGV4
Rm9yTmV3bHlDb25uZWN0ZWREZXZpY2UoKQpAQCAtMTEzLDE5ICsxMDYsNTYgQEAgdW5zaWduZWQg
SElER2FtZXBhZFByb3ZpZGVyOjppbmRleEZvck5ld2x5Q29ubmVjdGVkRGV2aWNlKCkKICAgICBy
ZXR1cm4gaW5kZXg7CiB9CiAKK3ZvaWQgSElER2FtZXBhZFByb3ZpZGVyOjpjb25uZWN0aW9uRGVs
YXlUaW1lckZpcmVkKFRpbWVyPEhJREdhbWVwYWRQcm92aWRlcj4mKQoreworICAgIG1fc2hvdWxk
RGlzcGF0Y2hDYWxsYmFja3MgPSB0cnVlOworfQorCit2b2lkIEhJREdhbWVwYWRQcm92aWRlcjo6
b3BlbkFuZFNjaGVkdWxlTWFuYWdlcigpCit7CisgICAgTE9HKEdhbWVwYWQsICJISURHYW1lcGFk
UHJvdmlkZXIgb3BlbmluZy9zY2hlZHVsaW5nIEhJRCBtYW5hZ2VyIik7CisKKyAgICBtX3Nob3Vs
ZERpc3BhdGNoQ2FsbGJhY2tzID0gZmFsc2U7CisKKyAgICBJT0hJRE1hbmFnZXJTY2hlZHVsZVdp
dGhSdW5Mb29wKG1fbWFuYWdlci5nZXQoKSwgQ0ZSdW5Mb29wR2V0Q3VycmVudCgpLCBrQ0ZSdW5M
b29wRGVmYXVsdE1vZGUpOworICAgIElPSElETWFuYWdlck9wZW4obV9tYW5hZ2VyLmdldCgpLCBr
SU9ISURPcHRpb25zVHlwZU5vbmUpOworCisgICAgLy8gQW55IGNvbm5lY3Rpb25zIHdlIGFyZSBu
b3RpZmllZCBvZiB3aXRoaW4gdGhlIENvbm5lY3Rpb25EZWxheUludGVydmFsIG9mIGxpc3Rlbmlu
ZyBhcmUgCisgICAgbV9jb25uZWN0aW9uRGVsYXlUaW1lci5zdGFydE9uZVNob3QoQ29ubmVjdGlv
bkRlbGF5SW50ZXJ2YWwpOworfQorCit2b2lkIEhJREdhbWVwYWRQcm92aWRlcjo6Y2xvc2VBbmRV
bnNjaGVkdWxlTWFuYWdlcigpCit7CisgICAgTE9HKEdhbWVwYWQsICJISURHYW1lcGFkUHJvdmlk
ZXIgY2xvc2luZy91bnNjaGVkdWxpbmcgSElEIG1hbmFnZXIiKTsKKworICAgIElPSElETWFuYWdl
clVuc2NoZWR1bGVGcm9tUnVuTG9vcChtX21hbmFnZXIuZ2V0KCksIENGUnVuTG9vcEdldEN1cnJl
bnQoKSwga0NGUnVuTG9vcERlZmF1bHRNb2RlKTsKKyAgICBJT0hJRE1hbmFnZXJDbG9zZShtX21h
bmFnZXIuZ2V0KCksIGtJT0hJRE9wdGlvbnNUeXBlTm9uZSk7CisKKyAgICBtX2dhbWVwYWRWZWN0
b3IuY2xlYXIoKTsKKyAgICBtX2dhbWVwYWRNYXAuY2xlYXIoKTsKK30KKwogdm9pZCBISURHYW1l
cGFkUHJvdmlkZXI6OnN0YXJ0TW9uaXRvcmluZ0dhbWVwYWRzKEdhbWVwYWRQcm92aWRlckNsaWVu
dCogY2xpZW50KQogewogICAgIG1fY2xpZW50cy5hZGQoY2xpZW50KTsKKworICAgIGlmIChtX2Ns
aWVudHMuc2l6ZSgpID09IDEpCisgICAgICAgIG9wZW5BbmRTY2hlZHVsZU1hbmFnZXIoKTsKIH0K
IHZvaWQgSElER2FtZXBhZFByb3ZpZGVyOjpzdG9wTW9uaXRvcmluZ0dhbWVwYWRzKEdhbWVwYWRQ
cm92aWRlckNsaWVudCogY2xpZW50KQogewogICAgIG1fY2xpZW50cy5yZW1vdmUoY2xpZW50KTsK
KworICAgIGlmICghbV9jbGllbnRzLnNpemUoKSkKKyAgICAgICAgY2xvc2VBbmRVbnNjaGVkdWxl
TWFuYWdlcigpOwogfQogCiB2b2lkIEhJREdhbWVwYWRQcm92aWRlcjo6ZGV2aWNlQWRkZWQoSU9I
SUREZXZpY2VSZWYgZGV2aWNlKQogewogICAgIEFTU0VSVCghbV9nYW1lcGFkTWFwLmdldChkZXZp
Y2UpKTsKIAorICAgIExPRyhHYW1lcGFkLCAiSElER2FtZXBhZFByb3ZpZGVyIGRldmljZSAlcCBh
ZGRlZCIsIGRldmljZSk7CisKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SElER2FtZXBhZD4gZ2FtZXBh
ZCA9IHN0ZDo6bWFrZV91bmlxdWU8SElER2FtZXBhZD4oZGV2aWNlKTsKICAgICB1bnNpZ25lZCBp
bmRleCA9IGluZGV4Rm9yTmV3bHlDb25uZWN0ZWREZXZpY2UoKTsKIApAQCAtMTM1LDggKzE2NSwx
OCBAQCB2b2lkIEhJREdhbWVwYWRQcm92aWRlcjo6ZGV2aWNlQWRkZWQoSU9ISUREZXZpY2VSZWYg
ZGV2aWNlKQogICAgIG1fZ2FtZXBhZFZlY3RvcltpbmRleF0gPSBnYW1lcGFkLmdldCgpOwogICAg
IG1fZ2FtZXBhZE1hcC5zZXQoZGV2aWNlLCBzdGQ6Om1vdmUoZ2FtZXBhZCkpOwogCi0gICAgaWYg
KCFtX3Nob3VsZERpc3BhdGNoQ2FsbGJhY2tzKQorICAgIGlmICghbV9zaG91bGREaXNwYXRjaENh
bGxiYWNrcykgeworICAgICAgICAvLyBUaGlzIGFkZGVkIGRldmljZSBpcyB0aGUgcmVzdWx0IG9m
IHVzIHN0YXJ0aW5nIHRvIG1vbml0b3IgZ2FtZXBhZHMuCisgICAgICAgIC8vIFdlJ2xsIGdldCBu
b3RpZmllZCBvZiBhbGwgY29ubmVjdGVkIGRldmljZXMgZHVyaW5nIHRoaXMgY3VycmVudCBzcGlu
IG9mIHRoZSBydW5sb29wCisgICAgICAgIC8vIGFuZCB3ZSBkb24ndCB3YW50IHRvIHRlbGwgdGhl
IGNsaWVudCBhYm91dCBhbnkgb2YgdGhlbS4KKyAgICAgICAgLy8gVGhlIG1fY29ubmVjdGlvbkRl
bGF5VGltZXIgZmlyZXMgaW4gYSBzdWJzZXF1ZW50IHNwaW4gb2YgdGhlIHJ1bmxvb3AgYWZ0ZXIg
d2hpY2gKKyAgICAgICAgLy8gYW55IGNvbm5lY3Rpb24gZXZlbnRzIGFyZSBhY3R1YWwgbmV3IGRl
dmljZXMuCisgICAgICAgIG1fY29ubmVjdGlvbkRlbGF5VGltZXIuc3RhcnRPbmVTaG90KDApOwor
CisgICAgICAgIExPRyhHYW1lcGFkLCAiRGV2aWNlICVwIHdhcyBhZGRlZCB3aGlsZSBzdXBwcmVz
c2luZyBjYWxsYmFja3MsIHNvIHRoaXMgc2hvdWxkIGJlIGFuICdhbHJlYWR5IGNvbm5lY3RlZCcg
ZXZlbnQiLCBkZXZpY2UpOworCiAgICAgICAgIHJldHVybjsKKyAgICB9CiAKICAgICBmb3IgKGF1
dG8mIGNsaWVudCA6IG1fY2xpZW50cykKICAgICAgICAgY2xpZW50LT5wbGF0Zm9ybUdhbWVwYWRD
b25uZWN0ZWQoaW5kZXgpOwpAQCAtMTQ0LDExICsxODQsMTQgQEAgdm9pZCBISURHYW1lcGFkUHJv
dmlkZXI6OmRldmljZUFkZGVkKElPSElERGV2aWNlUmVmIGRldmljZSkKIAogdm9pZCBISURHYW1l
cGFkUHJvdmlkZXI6OmRldmljZVJlbW92ZWQoSU9ISUREZXZpY2VSZWYgZGV2aWNlKQogeworICAg
IExPRyhHYW1lcGFkLCAiSElER2FtZXBhZFByb3ZpZGVyIGRldmljZSAlcCByZW1vdmVkIiwgZGV2
aWNlKTsKKwogICAgIHN0ZDo6cGFpcjxzdGQ6OnVuaXF1ZV9wdHI8SElER2FtZXBhZD4sIHVuc2ln
bmVkPiByZW1vdmVkR2FtZXBhZCA9IHJlbW92ZUdhbWVwYWRGb3JEZXZpY2UoZGV2aWNlKTsKICAg
ICBBU1NFUlQocmVtb3ZlZEdhbWVwYWQuZmlyc3QpOwogCi0gICAgaWYgKCFtX3Nob3VsZERpc3Bh
dGNoQ2FsbGJhY2tzKQotICAgICAgICByZXR1cm47CisgICAgLy8gQW55IHRpbWUgd2UgZ2V0IGEg
ZGV2aWNlIHJlbW92ZWQgY2FsbGJhY2sgd2Uga25vdyBpdHMgYSByZWFsIGV2ZW50IGFuZCBub3Qg
YW4gJ2FscmVhZHkgY29ubmVjdGVkJyBldmVudC4KKyAgICAvLyBXZSBzaG91bGQgYWx3YXlzIHN0
b3Agc3VwcmVzc2luZyBjYWxsYmFja3Mgd2hlbiB3ZSByZWNlaXZlIHN1Y2ggYW4gZXZlbnQuCisg
ICAgbV9zaG91bGREaXNwYXRjaENhbGxiYWNrcyA9IHRydWU7CiAKICAgICBmb3IgKGF1dG8mIGNs
aWVudCA6IG1fY2xpZW50cykKICAgICAgICAgY2xpZW50LT5wbGF0Zm9ybUdhbWVwYWREaXNjb25u
ZWN0ZWQocmVtb3ZlZEdhbWVwYWQuc2Vjb25kKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21hYy9ISURHYW1lcGFkUHJvdmlkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21hYy9ISURHYW1lcGFkUHJvdmlkZXIuaAppbmRleCAzN2I3Nzg2Li43MjRlZWNlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvSElER2FtZXBhZFByb3ZpZGVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0hJREdhbWVwYWRQcm92aWRlci5oCkBA
IC0zMCw2ICszMCw3IEBACiAKICNpbmNsdWRlICJHYW1lcGFkUHJvdmlkZXIuaCIKICNpbmNsdWRl
ICJISURHYW1lcGFkLmgiCisjaW5jbHVkZSAiVGltZXIuaCIKICNpbmNsdWRlIDxJT0tpdC9oaWQv
SU9ISURNYW5hZ2VyLmg+CiAjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CiAjaW5jbHVkZSA8d3RmL0hh
c2hNYXAuaD4KQEAgLTU1LDEzICs1NiwxNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBkZXZpY2VSZW1v
dmVkKElPSElERGV2aWNlUmVmKTsKICAgICB2b2lkIHZhbHVlc0NoYW5nZWQoSU9ISURWYWx1ZVJl
Zik7CiAKLSAgICB2b2lkIHNldFNob3VsZERpc3BhdGNoQ2FsbGJhY2tzKGJvb2wgc2hvdWxkRGlz
cGF0Y2hDYWxsYmFja3MpIHsgbV9zaG91bGREaXNwYXRjaENhbGxiYWNrcyA9IHNob3VsZERpc3Bh
dGNoQ2FsbGJhY2tzOyB9Ci0KIHByaXZhdGU6CiAgICAgSElER2FtZXBhZFByb3ZpZGVyKCk7CiAK
ICAgICBzdGQ6OnBhaXI8c3RkOjp1bmlxdWVfcHRyPEhJREdhbWVwYWQ+LCB1bnNpZ25lZD4gcmVt
b3ZlR2FtZXBhZEZvckRldmljZShJT0hJRERldmljZVJlZik7CiAKKyAgICB2b2lkIG9wZW5BbmRT
Y2hlZHVsZU1hbmFnZXIoKTsKKyAgICB2b2lkIGNsb3NlQW5kVW5zY2hlZHVsZU1hbmFnZXIoKTsK
KworICAgIHZvaWQgY29ubmVjdGlvbkRlbGF5VGltZXJGaXJlZChUaW1lcjxISURHYW1lcGFkUHJv
dmlkZXI+Jik7CisKICAgICB1bnNpZ25lZCBpbmRleEZvck5ld2x5Q29ubmVjdGVkRGV2aWNlKCk7
CiAKICAgICBWZWN0b3I8UGxhdGZvcm1HYW1lcGFkKj4gbV9nYW1lcGFkVmVjdG9yOwpAQCAtNzEs
NiArNzUsOCBAQCBwcml2YXRlOgogCiAgICAgSGFzaFNldDxHYW1lcGFkUHJvdmlkZXJDbGllbnQq
PiBtX2NsaWVudHM7CiAgICAgYm9vbCBtX3Nob3VsZERpc3BhdGNoQ2FsbGJhY2tzOworCisgICAg
VGltZXI8SElER2FtZXBhZFByb3ZpZGVyPiBtX2Nvbm5lY3Rpb25EZWxheVRpbWVyOwogfTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>233959</attachid>
            <date>2014-06-26 21:17:14 -0700</date>
            <delta_ts>2022-03-01 02:54:16 -0800</delta_ts>
            <desc>Patch v2 - Alpha fix</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>10509</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAyOTQ0NDM0Li42NmQ5ZjI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzEg
QEAKKzIwMTQtMDYtMjYgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAg
ICAgIEhJREdhbWVwYWRQcm92aWRlciBzaG91bGQgb25seSBiZSBhY3RpdmUgd2hlbiBzb21lb25l
IGlzIGludGVyZXN0ZWQgaW4gR2FtZXBhZHMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMzQzNzQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMgKE5vdCB5ZXQgYSB0ZXN0ZWQgY29uZmln
KQorCisgICAgICAgICogTW9kdWxlcy9nYW1lcGFkL0dhbWVwYWRNYW5hZ2VyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkdhbWVwYWRNYW5hZ2VyOjpyZWdpc3Rlck5hdmlnYXRvcik6IEFkZCBzb21l
IGxvZ2dpbmcuCisgICAgICAgIChXZWJDb3JlOjpHYW1lcGFkTWFuYWdlcjo6dW5yZWdpc3Rlck5h
dmlnYXRvcik6IERpdHRvLgorCisgICAgICAgICogcGxhdGZvcm0vbWFjL0hJREdhbWVwYWRQcm92
aWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpISURHYW1lcGFkUHJvdmlkZXI6OkhJREdhbWVw
YWRQcm92aWRlcik6CisgICAgICAgIChXZWJDb3JlOjpISURHYW1lcGFkUHJvdmlkZXI6OmNvbm5l
Y3Rpb25EZWxheVRpbWVyRmlyZWQpOiBTdG9wIHN1cHByZXNzaW5nIGNvbm5lY3Rpb24gY2FsbGJh
Y2tzCisgICAgICAgIChXZWJDb3JlOjpISURHYW1lcGFkUHJvdmlkZXI6Om9wZW5BbmRTY2hlZHVs
ZU1hbmFnZXIpOgorICAgICAgICAoV2ViQ29yZTo6SElER2FtZXBhZFByb3ZpZGVyOjpjbG9zZUFu
ZFVuc2NoZWR1bGVNYW5hZ2VyKTogU3RvcCBsaXN0ZW5pbmcgZm9yIGdhbWVwYWQgZXZlbnRzLCBh
bmQgY2xlYXIKKyAgICAgICAgICBhbGwgY3VycmVudCBnYW1lcGFkcy4KKyAgICAgICAgKFdlYkNv
cmU6OkhJREdhbWVwYWRQcm92aWRlcjo6c3RhcnRNb25pdG9yaW5nR2FtZXBhZHMpOiBJZiB0aGUg
Zmlyc3QgY2xpZW50LCBjYWxsIG9wZW5BbmRTY2hlZHVsZU1hbmFnZXIKKyAgICAgICAgKFdlYkNv
cmU6OkhJREdhbWVwYWRQcm92aWRlcjo6c3RvcE1vbml0b3JpbmdHYW1lcGFkcyk6IElmIHRoZSBs
YXN0IGNsaWVudCwgY2FsbCBjbG9zZUFuZFVuc2NoZWR1bGVNYW5hZ2VyCisgICAgICAgIChXZWJD
b3JlOjpISURHYW1lcGFkUHJvdmlkZXI6OmRldmljZUFkZGVkKTogSWYgdGhpcyBjYWxsYmFjayBj
YW1lIHdoaWxlIHdlIHdlcmUgc3VwcHJlc3NpbmcgY29ubmVjdGlvbgorICAgICAgICAgIGNhbGxi
YWNrcywgaXQgaXMgYSBzdGFydHVwIGV2ZW50IGZvciBhbHJlYWR5LWNvbm5lY3RlZCBnYW1lcGFk
cy4gU3RvcCBzdXBwcmVzc2luZyBjYWxsYmFja3MgaW4gYSBsYXRlcgorICAgICAgICAgIHNwaW4g
b2YgdGhlIHJ1bmxvb3AuCisgICAgICAgIChXZWJDb3JlOjpISURHYW1lcGFkUHJvdmlkZXI6OmRl
dmljZVJlbW92ZWQpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9ISURHYW1lcGFkUHJvdmlkZXIu
aDoKKyAgICAgICAgKFdlYkNvcmU6OkhJREdhbWVwYWRQcm92aWRlcjo6c2V0U2hvdWxkRGlzcGF0
Y2hDYWxsYmFja3MpOiBEZWxldGVkLgorCiAyMDE0LTA2LTI2ICBCYWxhenMgS2VsZW1lbiAgPGIu
a2VsZW1lbkBzYW1zdW5nLmNvbT4KIAogICAgICAgICBNZW1jYWNoZSBtaWd0aCBub3QgYmUgcHJ1
bmVkIHdoZW4gaXQgc2hvdWxkIGZvciBodHRwcyBwYWdlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9nYW1lcGFkL0dhbWVwYWRNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZ2FtZXBhZC9HYW1lcGFkTWFuYWdlci5jcHAKaW5kZXggY2UwYzI3Zi4uODM0NzVi
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nYW1lcGFkL0dhbWVwYWRNYW5h
Z2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dhbWVwYWQvR2FtZXBhZE1hbmFn
ZXIuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAKICNpbmNsdWRlICJHYW1lcGFkLmgiCiAjaW5jbHVk
ZSAiR2FtZXBhZFByb3ZpZGVyLmgiCisjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk5h
dmlnYXRvckdhbWVwYWQuaCIKICNpbmNsdWRlICJQbGF0Zm9ybUdhbWVwYWQuaCIKIApAQCAtNjMs
MjYgKzY0LDM1IEBAIHZvaWQgR2FtZXBhZE1hbmFnZXI6OnBsYXRmb3JtR2FtZXBhZERpc2Nvbm5l
Y3RlZCh1bnNpZ25lZCBpbmRleCkKIAogdm9pZCBHYW1lcGFkTWFuYWdlcjo6cmVnaXN0ZXJOYXZp
Z2F0b3IoTmF2aWdhdG9yR2FtZXBhZCogbmF2aWdhdG9yKQogeworICAgIExPRyhHYW1lcGFkLCAi
R2FtZXBhZE1hbmFnZXIgcmVnaXN0ZXJpbmcgTmF2aWdhdG9yR2FtZXBhZCAlcCIsIG5hdmlnYXRv
cik7CisKICAgICBBU1NFUlQoIW1fbmF2aWdhdG9ycy5jb250YWlucyhuYXZpZ2F0b3IpKTsKICAg
ICBtX25hdmlnYXRvcnMuYWRkKG5hdmlnYXRvcik7CiAKICAgICAvLyBGSVhNRTogTW9uaXRvcmlu
ZyBnYW1lcGFkcyB3aWxsIGFsc28gYmUgcmVsaWFudCBvbiB3aGV0aGVyIG9yIG5vdCB0aGVyZSBh
cmUgYW55CiAgICAgLy8gY29ubmVjdGVkL2Rpc2Nvbm5lY3RlZCBldmVudCBsaXN0ZW5lcnMuCiAg
ICAgLy8gVGhvc2UgZXZlbnQgbGlzdGVuZXJzIHdpbGwgYWxzbyBuZWVkIHRvIHJlZ2lzdGVyIHdp
dGggdGhlIEdhbWVwYWRNYW5hZ2VyLgotICAgIGlmIChtX25hdmlnYXRvcnMuc2l6ZSgpID09IDEp
CisgICAgaWYgKG1fbmF2aWdhdG9ycy5zaXplKCkgPT0gMSkgeworICAgICAgICBMT0coR2FtZXBh
ZCwgIkdhbWVwYWRNYW5hZ2VyIHJlZ2lzdGVyZWQgZmlyc3QgbmF2aWdhdG9yLCBpcyBzdGFydGlu
ZyBnYW1lcGFkIG1vbml0b3JpbmciKTsKICAgICAgICAgR2FtZXBhZFByb3ZpZGVyOjpzaGFyZWQo
KS5zdGFydE1vbml0b3JpbmdHYW1lcGFkcyh0aGlzKTsKKyAgICB9CiB9CiAKIHZvaWQgR2FtZXBh
ZE1hbmFnZXI6OnVucmVnaXN0ZXJOYXZpZ2F0b3IoTmF2aWdhdG9yR2FtZXBhZCogbmF2aWdhdG9y
KQogeworICAgIExPRyhHYW1lcGFkLCAiR2FtZXBhZE1hbmFnZXIgdW5yZWdpc3RlcmluZyBOYXZp
Z2F0b3JHYW1lcGFkICVwIiwgbmF2aWdhdG9yKTsKKwogICAgIEFTU0VSVChtX25hdmlnYXRvcnMu
Y29udGFpbnMobmF2aWdhdG9yKSk7CiAgICAgbV9uYXZpZ2F0b3JzLnJlbW92ZShuYXZpZ2F0b3Ip
OwogCiAgICAgLy8gRklYTUU6IE1vbml0b3JpbmcgZ2FtZXBhZHMgd2lsbCBhbHNvIGJlIHJlbGlh
bnQgb24gd2hldGhlciBvciBub3QgdGhlcmUgYXJlIGFueQogICAgIC8vIGNvbm5lY3RlZC9kaXNj
b25uZWN0ZWQgZXZlbnQgbGlzdGVuZXJzLgogICAgIC8vIFRob3NlIGV2ZW50IGxpc3RlbmVycyB3
aWxsIGFsc28gbmVlZCB0byByZWdpc3RlciB3aXRoIHRoZSBHYW1lcGFkTWFuYWdlci4KLSAgICBp
ZiAobV9uYXZpZ2F0b3JzLmlzRW1wdHkoKSkKKyAgICBpZiAobV9uYXZpZ2F0b3JzLmlzRW1wdHko
KSkgeworICAgICAgICBMT0coR2FtZXBhZCwgIkdhbWVwYWRNYW5hZ2VyIHVucmVnaXN0ZXJlZCBs
YXN0IG5hdmlnYXRvciwgaXMgc3RvcHBpbmcgZ2FtZXBhZCBtb25pdG9yaW5nIik7CisKICAgICAg
ICAgR2FtZXBhZFByb3ZpZGVyOjpzaGFyZWQoKS5zdG9wTW9uaXRvcmluZ0dhbWVwYWRzKHRoaXMp
OworICAgIH0KIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWFjL0hJREdhbWVwYWRQcm92aWRlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tYWMvSElER2FtZXBhZFByb3ZpZGVyLmNwcAppbmRleCAzMzdhOTBhLi5k
OWQ3YTlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvSElER2FtZXBh
ZFByb3ZpZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvSElER2FtZXBh
ZFByb3ZpZGVyLmNwcApAQCAtMjksMTEgKzI5LDEzIEBACiAjaWYgRU5BQkxFKEdBTUVQQUQpCiAK
ICNpbmNsdWRlICJHYW1lcGFkUHJvdmlkZXJDbGllbnQuaCIKKyNpbmNsdWRlICJMb2dnaW5nLmgi
CiAjaW5jbHVkZSAiUGxhdGZvcm1HYW1lcGFkLmgiCi0jaW5jbHVkZSA8d3RmL01haW5UaHJlYWQu
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitzdGF0aWMgY29uc3QgZG91YmxlIENvbm5lY3Rp
b25EZWxheUludGVydmFsID0gMC41OworCiBzdGF0aWMgUmV0YWluUHRyPENGRGljdGlvbmFyeVJl
Zj4gZGV2aWNlTWF0Y2hpbmdEaWN0aW9uYXJ5KHVpbnQzMl90IHVzYWdlUGFnZSwgdWludDMyX3Qg
dXNhZ2UpCiB7CiAgICAgQVNTRVJUKHVzYWdlUGFnZSk7CkBAIC03OCw2ICs4MCw3IEBAIEhJREdh
bWVwYWRQcm92aWRlciYgSElER2FtZXBhZFByb3ZpZGVyOjpzaGFyZWQoKQogCiBISURHYW1lcGFk
UHJvdmlkZXI6OkhJREdhbWVwYWRQcm92aWRlcigpCiAgICAgOiBtX3Nob3VsZERpc3BhdGNoQ2Fs
bGJhY2tzKGZhbHNlKQorICAgICwgbV9jb25uZWN0aW9uRGVsYXlUaW1lcih0aGlzLCAmSElER2Ft
ZXBhZFByb3ZpZGVyOjpjb25uZWN0aW9uRGVsYXlUaW1lckZpcmVkKQogewogICAgIG1fbWFuYWdl
ciA9IGFkb3B0Q0YoSU9ISURNYW5hZ2VyQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGtJT0hJ
RE9wdGlvbnNUeXBlTm9uZSkpOwogCkBAIC05MSwxNyArOTQsNyBAQCBISURHYW1lcGFkUHJvdmlk
ZXI6OkhJREdhbWVwYWRQcm92aWRlcigpCiAgICAgSU9ISURNYW5hZ2VyU2V0RGV2aWNlTWF0Y2hp
bmdNdWx0aXBsZShtX21hbmFnZXIuZ2V0KCksIG1hdGNoaW5nQXJyYXkuZ2V0KCkpOwogICAgIElP
SElETWFuYWdlclJlZ2lzdGVyRGV2aWNlTWF0Y2hpbmdDYWxsYmFjayhtX21hbmFnZXIuZ2V0KCks
IGRldmljZUFkZGVkQ2FsbGJhY2ssIHRoaXMpOwogICAgIElPSElETWFuYWdlclJlZ2lzdGVyRGV2
aWNlUmVtb3ZhbENhbGxiYWNrKG1fbWFuYWdlci5nZXQoKSwgZGV2aWNlUmVtb3ZlZENhbGxiYWNr
LCB0aGlzKTsKLSAgICBJT0hJRE1hbmFnZXJTY2hlZHVsZVdpdGhSdW5Mb29wKG1fbWFuYWdlci5n
ZXQoKSwgQ0ZSdW5Mb29wR2V0Q3VycmVudCgpLCBrQ0ZSdW5Mb29wRGVmYXVsdE1vZGUpOwotICAg
IElPSElETWFuYWdlck9wZW4obV9tYW5hZ2VyLmdldCgpLCBrSU9ISURPcHRpb25zVHlwZU5vbmUp
OwotCiAgICAgSU9ISURNYW5hZ2VyUmVnaXN0ZXJJbnB1dFZhbHVlQ2FsbGJhY2sobV9tYW5hZ2Vy
LmdldCgpLCBkZXZpY2VWYWx1ZXNDaGFuZ2VkQ2FsbGJhY2ssIHRoaXMpOwotCi0gICAgLy8gV2Un
bGwgaW1tZWRpYXRlbHkgZ2V0IGEgc2VyaWVzIG9mIGNvbm5lY3Rpb24gYW5kIHZhbHVlIGNhbGxi
YWNrcyBmb3IgYWxyZWFkeS1jb25uZWN0ZWQgZ2FtZXBhZHMKLSAgICAvLyBidXQgd2UgZG9uJ3Qg
d2FudCB0byBub3RpZnkgV2ViQ29yZSBvZiB0aG9zZSBldmVudHMuCi0gICAgLy8gVGhpcyBjYWxs
T25NYWluVGhyZWFkIGNhbGwgcmUtZW5hYmxlcyB0aG9zZSBjYWxsYmFja3MgYWZ0ZXIgdGhlIHJ1
bmxvb3AgZW1wdGllcyBvdXQuCi0gICAgY2FsbE9uTWFpblRocmVhZChbXSgpIHsKLSAgICAgICAg
SElER2FtZXBhZFByb3ZpZGVyOjpzaGFyZWQoKS5zZXRTaG91bGREaXNwYXRjaENhbGxiYWNrcyh0
cnVlKTsKLSAgICB9KTsKIH0KIAogdW5zaWduZWQgSElER2FtZXBhZFByb3ZpZGVyOjppbmRleEZv
ck5ld2x5Q29ubmVjdGVkRGV2aWNlKCkKQEAgLTExMywxOSArMTA2LDU2IEBAIHVuc2lnbmVkIEhJ
REdhbWVwYWRQcm92aWRlcjo6aW5kZXhGb3JOZXdseUNvbm5lY3RlZERldmljZSgpCiAgICAgcmV0
dXJuIGluZGV4OwogfQogCit2b2lkIEhJREdhbWVwYWRQcm92aWRlcjo6Y29ubmVjdGlvbkRlbGF5
VGltZXJGaXJlZChUaW1lcjxISURHYW1lcGFkUHJvdmlkZXI+JikKK3sKKyAgICBtX3Nob3VsZERp
c3BhdGNoQ2FsbGJhY2tzID0gdHJ1ZTsKK30KKwordm9pZCBISURHYW1lcGFkUHJvdmlkZXI6Om9w
ZW5BbmRTY2hlZHVsZU1hbmFnZXIoKQoreworICAgIExPRyhHYW1lcGFkLCAiSElER2FtZXBhZFBy
b3ZpZGVyIG9wZW5pbmcvc2NoZWR1bGluZyBISUQgbWFuYWdlciIpOworCisgICAgbV9zaG91bGRE
aXNwYXRjaENhbGxiYWNrcyA9IGZhbHNlOworCisgICAgSU9ISURNYW5hZ2VyU2NoZWR1bGVXaXRo
UnVuTG9vcChtX21hbmFnZXIuZ2V0KCksIENGUnVuTG9vcEdldEN1cnJlbnQoKSwga0NGUnVuTG9v
cERlZmF1bHRNb2RlKTsKKyAgICBJT0hJRE1hbmFnZXJPcGVuKG1fbWFuYWdlci5nZXQoKSwga0lP
SElET3B0aW9uc1R5cGVOb25lKTsKKworICAgIC8vIEFueSBjb25uZWN0aW9ucyB3ZSBhcmUgbm90
aWZpZWQgb2Ygd2l0aGluIHRoZSBDb25uZWN0aW9uRGVsYXlJbnRlcnZhbCBvZiBsaXN0ZW5pbmcg
YXJlIAorICAgIG1fY29ubmVjdGlvbkRlbGF5VGltZXIuc3RhcnRPbmVTaG90KENvbm5lY3Rpb25E
ZWxheUludGVydmFsKTsKK30KKwordm9pZCBISURHYW1lcGFkUHJvdmlkZXI6OmNsb3NlQW5kVW5z
Y2hlZHVsZU1hbmFnZXIoKQoreworICAgIExPRyhHYW1lcGFkLCAiSElER2FtZXBhZFByb3ZpZGVy
IGNsb3NpbmcvdW5zY2hlZHVsaW5nIEhJRCBtYW5hZ2VyIik7CisKKyAgICBJT0hJRE1hbmFnZXJV
bnNjaGVkdWxlRnJvbVJ1bkxvb3AobV9tYW5hZ2VyLmdldCgpLCBDRlJ1bkxvb3BHZXRDdXJyZW50
KCksIGtDRlJ1bkxvb3BEZWZhdWx0TW9kZSk7CisgICAgSU9ISURNYW5hZ2VyQ2xvc2UobV9tYW5h
Z2VyLmdldCgpLCBrSU9ISURPcHRpb25zVHlwZU5vbmUpOworCisgICAgbV9nYW1lcGFkVmVjdG9y
LmNsZWFyKCk7CisgICAgbV9nYW1lcGFkTWFwLmNsZWFyKCk7Cit9CisKIHZvaWQgSElER2FtZXBh
ZFByb3ZpZGVyOjpzdGFydE1vbml0b3JpbmdHYW1lcGFkcyhHYW1lcGFkUHJvdmlkZXJDbGllbnQq
IGNsaWVudCkKIHsKICAgICBtX2NsaWVudHMuYWRkKGNsaWVudCk7CisKKyAgICBpZiAobV9jbGll
bnRzLnNpemUoKSA9PSAxKQorICAgICAgICBvcGVuQW5kU2NoZWR1bGVNYW5hZ2VyKCk7CiB9CiB2
b2lkIEhJREdhbWVwYWRQcm92aWRlcjo6c3RvcE1vbml0b3JpbmdHYW1lcGFkcyhHYW1lcGFkUHJv
dmlkZXJDbGllbnQqIGNsaWVudCkKIHsKICAgICBtX2NsaWVudHMucmVtb3ZlKGNsaWVudCk7CisK
KyAgICBpZiAoIW1fY2xpZW50cy5zaXplKCkpCisgICAgICAgIGNsb3NlQW5kVW5zY2hlZHVsZU1h
bmFnZXIoKTsKIH0KIAogdm9pZCBISURHYW1lcGFkUHJvdmlkZXI6OmRldmljZUFkZGVkKElPSElE
RGV2aWNlUmVmIGRldmljZSkKIHsKICAgICBBU1NFUlQoIW1fZ2FtZXBhZE1hcC5nZXQoZGV2aWNl
KSk7CiAKKyAgICBMT0coR2FtZXBhZCwgIkhJREdhbWVwYWRQcm92aWRlciBkZXZpY2UgJXAgYWRk
ZWQiLCBkZXZpY2UpOworCiAgICAgc3RkOjp1bmlxdWVfcHRyPEhJREdhbWVwYWQ+IGdhbWVwYWQg
PSBzdGQ6Om1ha2VfdW5pcXVlPEhJREdhbWVwYWQ+KGRldmljZSk7CiAgICAgdW5zaWduZWQgaW5k
ZXggPSBpbmRleEZvck5ld2x5Q29ubmVjdGVkRGV2aWNlKCk7CiAKQEAgLTEzNSw4ICsxNjUsMTgg
QEAgdm9pZCBISURHYW1lcGFkUHJvdmlkZXI6OmRldmljZUFkZGVkKElPSElERGV2aWNlUmVmIGRl
dmljZSkKICAgICBtX2dhbWVwYWRWZWN0b3JbaW5kZXhdID0gZ2FtZXBhZC5nZXQoKTsKICAgICBt
X2dhbWVwYWRNYXAuc2V0KGRldmljZSwgc3RkOjptb3ZlKGdhbWVwYWQpKTsKIAotICAgIGlmICgh
bV9zaG91bGREaXNwYXRjaENhbGxiYWNrcykKKyAgICBpZiAoIW1fc2hvdWxkRGlzcGF0Y2hDYWxs
YmFja3MpIHsKKyAgICAgICAgLy8gVGhpcyBhZGRlZCBkZXZpY2UgaXMgdGhlIHJlc3VsdCBvZiB1
cyBzdGFydGluZyB0byBtb25pdG9yIGdhbWVwYWRzLgorICAgICAgICAvLyBXZSdsbCBnZXQgbm90
aWZpZWQgb2YgYWxsIGNvbm5lY3RlZCBkZXZpY2VzIGR1cmluZyB0aGlzIGN1cnJlbnQgc3BpbiBv
ZiB0aGUgcnVubG9vcAorICAgICAgICAvLyBhbmQgd2UgZG9uJ3Qgd2FudCB0byB0ZWxsIHRoZSBj
bGllbnQgYWJvdXQgYW55IG9mIHRoZW0uCisgICAgICAgIC8vIFRoZSBtX2Nvbm5lY3Rpb25EZWxh
eVRpbWVyIGZpcmVzIGluIGEgc3Vic2VxdWVudCBzcGluIG9mIHRoZSBydW5sb29wIGFmdGVyIHdo
aWNoCisgICAgICAgIC8vIGFueSBjb25uZWN0aW9uIGV2ZW50cyBhcmUgYWN0dWFsIG5ldyBkZXZp
Y2VzLgorICAgICAgICBtX2Nvbm5lY3Rpb25EZWxheVRpbWVyLnN0YXJ0T25lU2hvdCgwKTsKKwor
ICAgICAgICBMT0coR2FtZXBhZCwgIkRldmljZSAlcCB3YXMgYWRkZWQgd2hpbGUgc3VwcHJlc3Np
bmcgY2FsbGJhY2tzLCBzbyB0aGlzIHNob3VsZCBiZSBhbiAnYWxyZWFkeSBjb25uZWN0ZWQnIGV2
ZW50IiwgZGV2aWNlKTsKKwogICAgICAgICByZXR1cm47CisgICAgfQogCiAgICAgZm9yIChhdXRv
JiBjbGllbnQgOiBtX2NsaWVudHMpCiAgICAgICAgIGNsaWVudC0+cGxhdGZvcm1HYW1lcGFkQ29u
bmVjdGVkKGluZGV4KTsKQEAgLTE0NCwxMSArMTg0LDE0IEBAIHZvaWQgSElER2FtZXBhZFByb3Zp
ZGVyOjpkZXZpY2VBZGRlZChJT0hJRERldmljZVJlZiBkZXZpY2UpCiAKIHZvaWQgSElER2FtZXBh
ZFByb3ZpZGVyOjpkZXZpY2VSZW1vdmVkKElPSElERGV2aWNlUmVmIGRldmljZSkKIHsKKyAgICBM
T0coR2FtZXBhZCwgIkhJREdhbWVwYWRQcm92aWRlciBkZXZpY2UgJXAgcmVtb3ZlZCIsIGRldmlj
ZSk7CisKICAgICBzdGQ6OnBhaXI8c3RkOjp1bmlxdWVfcHRyPEhJREdhbWVwYWQ+LCB1bnNpZ25l
ZD4gcmVtb3ZlZEdhbWVwYWQgPSByZW1vdmVHYW1lcGFkRm9yRGV2aWNlKGRldmljZSk7CiAgICAg
QVNTRVJUKHJlbW92ZWRHYW1lcGFkLmZpcnN0KTsKIAotICAgIGlmICghbV9zaG91bGREaXNwYXRj
aENhbGxiYWNrcykKLSAgICAgICAgcmV0dXJuOworICAgIC8vIEFueSB0aW1lIHdlIGdldCBhIGRl
dmljZSByZW1vdmVkIGNhbGxiYWNrIHdlIGtub3cgaXRzIGEgcmVhbCBldmVudCBhbmQgbm90IGFu
ICdhbHJlYWR5IGNvbm5lY3RlZCcgZXZlbnQuCisgICAgLy8gV2Ugc2hvdWxkIGFsd2F5cyBzdG9w
IHN1cHJlc3NpbmcgY2FsbGJhY2tzIHdoZW4gd2UgcmVjZWl2ZSBzdWNoIGFuIGV2ZW50LgorICAg
IG1fc2hvdWxkRGlzcGF0Y2hDYWxsYmFja3MgPSB0cnVlOwogCiAgICAgZm9yIChhdXRvJiBjbGll
bnQgOiBtX2NsaWVudHMpCiAgICAgICAgIGNsaWVudC0+cGxhdGZvcm1HYW1lcGFkRGlzY29ubmVj
dGVkKHJlbW92ZWRHYW1lcGFkLnNlY29uZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tYWMvSElER2FtZXBhZFByb3ZpZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tYWMvSElER2FtZXBhZFByb3ZpZGVyLmgKaW5kZXggMzdiNzc4Ni4uNzI0ZWVjZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0hJREdhbWVwYWRQcm92aWRlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9ISURHYW1lcGFkUHJvdmlkZXIuaApAQCAt
MzAsNiArMzAsNyBAQAogCiAjaW5jbHVkZSAiR2FtZXBhZFByb3ZpZGVyLmgiCiAjaW5jbHVkZSAi
SElER2FtZXBhZC5oIgorI2luY2x1ZGUgIlRpbWVyLmgiCiAjaW5jbHVkZSA8SU9LaXQvaGlkL0lP
SElETWFuYWdlci5oPgogI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgogI2luY2x1ZGUgPHd0Zi9IYXNo
TWFwLmg+CkBAIC01NSwxMyArNTYsMTYgQEAgcHVibGljOgogICAgIHZvaWQgZGV2aWNlUmVtb3Zl
ZChJT0hJRERldmljZVJlZik7CiAgICAgdm9pZCB2YWx1ZXNDaGFuZ2VkKElPSElEVmFsdWVSZWYp
OwogCi0gICAgdm9pZCBzZXRTaG91bGREaXNwYXRjaENhbGxiYWNrcyhib29sIHNob3VsZERpc3Bh
dGNoQ2FsbGJhY2tzKSB7IG1fc2hvdWxkRGlzcGF0Y2hDYWxsYmFja3MgPSBzaG91bGREaXNwYXRj
aENhbGxiYWNrczsgfQotCiBwcml2YXRlOgogICAgIEhJREdhbWVwYWRQcm92aWRlcigpOwogCiAg
ICAgc3RkOjpwYWlyPHN0ZDo6dW5pcXVlX3B0cjxISURHYW1lcGFkPiwgdW5zaWduZWQ+IHJlbW92
ZUdhbWVwYWRGb3JEZXZpY2UoSU9ISUREZXZpY2VSZWYpOwogCisgICAgdm9pZCBvcGVuQW5kU2No
ZWR1bGVNYW5hZ2VyKCk7CisgICAgdm9pZCBjbG9zZUFuZFVuc2NoZWR1bGVNYW5hZ2VyKCk7CisK
KyAgICB2b2lkIGNvbm5lY3Rpb25EZWxheVRpbWVyRmlyZWQoVGltZXI8SElER2FtZXBhZFByb3Zp
ZGVyPiYpOworCiAgICAgdW5zaWduZWQgaW5kZXhGb3JOZXdseUNvbm5lY3RlZERldmljZSgpOwog
CiAgICAgVmVjdG9yPFBsYXRmb3JtR2FtZXBhZCo+IG1fZ2FtZXBhZFZlY3RvcjsKQEAgLTcxLDYg
Kzc1LDggQEAgcHJpdmF0ZToKIAogICAgIEhhc2hTZXQ8R2FtZXBhZFByb3ZpZGVyQ2xpZW50Kj4g
bV9jbGllbnRzOwogICAgIGJvb2wgbV9zaG91bGREaXNwYXRjaENhbGxiYWNrczsKKworICAgIFRp
bWVyPEhJREdhbWVwYWRQcm92aWRlcj4gbV9jb25uZWN0aW9uRGVsYXlUaW1lcjsKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUK
</data>
<flag name="review"
          id="258481"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>