<?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>234299</bug_id>
          
          <creation_ts>2021-12-14 08:34:31 -0800</creation_ts>
          <short_desc>Add a basic heuristic for collecting and extracting text from controls in ModalContainerObserver</short_desc>
          <delta_ts>2021-12-19 12:26: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>Platform</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Wenson Hsieh">wenson_hsieh</reporter>
          <assigned_to name="Wenson Hsieh">wenson_hsieh</assigned_to>
          <cc>akeerthi</cc>
    
    <cc>bdakin</cc>
    
    <cc>dino</cc>
    
    <cc>megan_gardner</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1824008</commentid>
    <comment_count>0</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2021-12-14 08:34:31 -0800</bug_when>
    <thetext>.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1825137</commentid>
    <comment_count>1</comment_count>
      <attachid>447464</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2021-12-17 10:58:05 -0800</bug_when>
    <thetext>Created attachment 447464
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1825360</commentid>
    <comment_count>2</comment_count>
      <attachid>447524</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2021-12-18 11:32:11 -0800</bug_when>
    <thetext>Created attachment 447524
Rebase on trunk</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1825445</commentid>
    <comment_count>3</comment_count>
      <attachid>447524</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2021-12-19 08:46:57 -0800</bug_when>
    <thetext>Comment on attachment 447524
Rebase on trunk

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

&gt; Source/WebCore/page/ModalContainerObserver.cpp:182
&gt; +    if (element.hasEventListeners(eventNames().clickEvent) || element.hasEventListeners(eventNames().mousedownEvent) || element.hasEventListeners(eventNames().mouseupEvent))

What about touch and pointer events?

&gt; Source/WebCore/page/ModalContainerObserver.cpp:209
&gt; +            if (outer-&gt;hasTagName(HTMLNames::divTag) || outer-&gt;hasTagName(HTMLNames::spanTag) || outer-&gt;hasTagName(HTMLNames::pTag))

What about &lt;section&gt;?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1825456</commentid>
    <comment_count>4</comment_count>
      <attachid>447524</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2021-12-19 11:19:39 -0800</bug_when>
    <thetext>Comment on attachment 447524
Rebase on trunk

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

Thanks for taking a look!

&gt;&gt; Source/WebCore/page/ModalContainerObserver.cpp:182
&gt;&gt; +    if (element.hasEventListeners(eventNames().clickEvent) || element.hasEventListeners(eventNames().mousedownEvent) || element.hasEventListeners(eventNames().mouseupEvent))
&gt; 
&gt; What about touch and pointer events?

Makes sense — will add touchstart/end and pointerup/down here as well.

&gt;&gt; Source/WebCore/page/ModalContainerObserver.cpp:209
&gt;&gt; +            if (outer-&gt;hasTagName(HTMLNames::divTag) || outer-&gt;hasTagName(HTMLNames::spanTag) || outer-&gt;hasTagName(HTMLNames::pTag))
&gt; 
&gt; What about &lt;section&gt;?

That&apos;s a good point! Section elements probably fall under this same umbrella of &quot;more likely to contain a semantically meaningful controls, rather than being one itself&quot;. Will add section to the list here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1825458</commentid>
    <comment_count>5</comment_count>
      <attachid>447551</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2021-12-19 11:30:17 -0800</bug_when>
    <thetext>Created attachment 447551
For EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1825468</commentid>
    <comment_count>6</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-12-19 12:25:38 -0800</bug_when>
    <thetext>Committed r287245 (245403@main): &lt;https://commits.webkit.org/245403@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 447551.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1825469</commentid>
    <comment_count>7</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-12-19 12:26:16 -0800</bug_when>
    <thetext>&lt;rdar://problem/86697551&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>447464</attachid>
            <date>2021-12-17 10:58:05 -0800</date>
            <delta_ts>2021-12-17 21:51:36 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-234299-20211217105805.patch</filename>
            <type>text/plain</type>
            <size>12593</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2OTI3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDA1MTUxZWVjZGVjN2Y2
MmMyNDMwYTI0YWVlNzg0YTM1MDU1M2I1My4uZTkxMTQ3ZGVmOTBkNmNiMmRmY2FmMjhiZmIzNzMy
YWMxZjBjZTczOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU2IEBACisyMDIxLTEyLTE3ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBhIGJhc2lj
IGhldXJpc3RpYyBmb3IgY29sbGVjdGluZyBhbmQgZXh0cmFjdGluZyB0ZXh0IGZyb20gY29udHJv
bHMgaW4gTW9kYWxDb250YWluZXJPYnNlcnZlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM0Mjk5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgSW50cm9kdWNlIGEgaGV1cmlzdGljIGZvciBleHRyYWN0aW5n
IGNsaWNrYWJsZSBjb250cm9scyBmcm9tIG1vZGFsIGNvbnRhaW5lcnMsIHRoYXQgYXJlIHVubGlr
ZWx5IHRvIGJlIGxpbmtzCisgICAgICAgIChpLmUuIHRyaWdnZXIgbmF2aWdhdGlvbiB3aGVuIGNs
aWNrZWQpLiBTZWUgYmVsb3cgZm9yIG1vcmUgZGV0YWlscy4KKworICAgICAgICAqIHBhZ2UvTW9k
YWxDb250YWluZXJPYnNlcnZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNb2RhbENvbnRhaW5l
ck9ic2VydmVyOjpNb2RhbENvbnRhaW5lck9ic2VydmVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1v
ZGFsQ29udGFpbmVyT2JzZXJ2ZXI6OnVwZGF0ZU1vZGFsQ29udGFpbmVySWZOZWVkZWQpOgorCisg
ICAgICAgIE9uY2UgYSBtb2RhbCBjb250YWluZXIgaGFzIGJlZW4gZGV0ZWN0ZWQsIHNjaGVkdWxl
IGEgMS1zZWNvbmQgdGltZXIgdG8gdHJhdmVyc2UgdGhlIG1vZGFsIGNvbnRhaW5lcidzIHN1YnRy
ZWUgaW4KKyAgICAgICAgc2VhcmNoIGZvciBjbGlja2FibGUgY29udHJvbHMuCisKKyAgICAgICAg
KFdlYkNvcmU6OmFjY2Vzc2liaWxpdHlSb2xlKToKKyAgICAgICAgKFdlYkNvcmU6OmlzQ2xpY2th
YmxlQ29udHJvbCk6CisgICAgICAgIChXZWJDb3JlOjpmaWx0ZXJDbGlja2FibGVDb250cm9scyk6
CisgICAgICAgIChXZWJDb3JlOjp0ZXh0Rm9yQ29udHJvbCk6CisgICAgICAgIChXZWJDb3JlOjpN
b2RhbENvbnRhaW5lck9ic2VydmVyOjpzY2hlZHVsZUNsaWNrYWJsZUVsZW1lbnRDb2xsZWN0aW9u
SWZQb3NzaWJsZSk6CisKKyAgICAgICAgU2NoZWR1bGUgdGhlIHRpbWVyIGlmIG5lZWRlZCAoaS5l
LiBpZiB0aGUgdGltZXIgaXNuJ3QgYWxyZWFkeSBzY2hlZHVsZWQsIGFuZCBpZiB3ZSBoYXZlbid0
IGhpdCB0aGUgbWF4aW11bQorICAgICAgICBudW1iZXIgb2YgYXR0ZW1wdHMpLgorCisgICAgICAg
IChXZWJDb3JlOjpNb2RhbENvbnRhaW5lck9ic2VydmVyOjpjb2xsZWN0Q2xpY2thYmxlRWxlbWVu
dHNUaW1lckZpcmVkKToKKworICAgICAgICBUaGlzIGNvbnRhaW5zIHRoZSBtYWluIGxvZ2ljIGZv
ciBjb2xsZWN0aW5nIGNsaWNrYWJsZSBlbGVtZW50cyBpbnNpZGUgbW9kYWwgY29udGFpbmVycy4g
VGhpcyBoZXVyaXN0aWMgY29uc2lzdHMKKyAgICAgICAgbW9zdGx5IG9mIHRocmVlIHBoYXNlczoK
KworICAgICAgICAxLiBXZSBpbml0aWFsbHkgc2NhbiB0aGUgbW9kYWwgY29udGFpbmVyIHN1YnRy
ZWUgaW4gc2VhcmNoIG9mIGFueSBlbGVtZW50cyB0aGF0IHNlZW0gbGlrZSB0aGV5IGNvdWxkIGJl
CisgICAgICAgIGNsaWNrYWJsZSBidXR0b25zIG9yIGxpbmtzIHRoYXQgZG9uJ3QgdHJpZ2dlciBu
YXZpZ2F0aW9uLCBhbmQgYnVpbGQgYSBsaXN0IG9mIGBjbGFzc2lmaWFibGVDb250cm9sc2AuCisK
KyAgICAgICAgMi4gV2UgdGhlbiBmaWx0ZXIgdGhlIGxpc3Qgb2YgYGNsYXNzaWZpYWJsZUNvbnRy
b2xzYCBieSByZW1vdmluZyBhbnkgZWxlbWVudHMgaW4gdGhlIGxpc3QgdGhhdCBlaXRoZXIgY29u
dGFpbiBvcgorICAgICAgICBhcmUgY29udGFpbmVkIGJ5IG90aGVyIGVsZW1lbnRzICh1c2luZyBh
IGhldXJpc3RpYyB0byBkZWNpZGUgd2hldGhlciB0byByZW1vdmUgZWFjaCBwYXJlbnQgb3IgY2hp
bGQpOyBpbiB0aGlzCisgICAgICAgIGZpbHRlcmluZyBzdGVwLCB3ZSBhZGRpdGlvbmFsbHkgcmVt
b3ZlIGFsbCBlbGVtZW50cyB0aGF0IGFyZSBlZmZlY3RpdmVseSB1bmNsaWNrYWJsZSBkdWUgdG8g
aGF2aW5nIGFuIGVtcHR5CisgICAgICAgIGNsaWVudCBib3VuZGluZyByZWN0LgorCisgICAgICAg
IDMuIEluIHRoZSBmaW5hbCBwaGFzZSwgd2UgaXRlcmF0ZSBvdmVyIGFsbCBvZiB0aGUgY29udHJv
bHMgaW4gdGhlIGZpbHRlcmVkIGxpc3QsIGFuZCBhdHRlbXB0IHRvIGV4dHJhY3QgdGV4dCBmb3IK
KyAgICAgICAgZWFjaCBjb250cm9sIChsb29raW5nIGF0IGF0dHJpYnV0ZXMgc3VjaCBhcyBgdGl0
bGVgIGFuZCBgYXJpYS1sYWJlbGAsIGBhbHRgIHRleHQgZm9yIGltYWdlcywgYW5kIGZpbmFsbHkg
ZmFsbGluZworICAgICAgICBiYWNrIHRvIGBvdXRlclRleHQoKWApLiBJZiB0aGlzIHJhdyB0ZXh0
IGRlc2NyaXB0aW9uIGlzIG5vdCBlbXB0eSBhbmQgYWxzbyBub3QgdG9vIGxvbmcgKGV4Y2VlZGlu
ZyBhbgorICAgICAgICBhcmJpdHJhcmlseSBjaG9zZW4gdGhyZXNob2xkIG9mIDEwMCBjaGFyYWN0
ZXJzKSwgd2UgYWRkIGl0IHRvIHRoZSBmaW5hbCBsaXN0IG9mIGNvbnRyb2xzIGFuZCBjb250cm9s
IHRleHQKKyAgICAgICAgZGVzY3JpcHRpb25zIHRvIHNlbmQgdG8gdGhlIGNsaWVudCBsYXllciBm
b3IgY2xhc3NpZmljYXRpb24uCisKKyAgICAgICAgKFdlYkNvcmU6Ok1vZGFsQ29udGFpbmVyT2Jz
ZXJ2ZXI6OnNob3VsZEhpZGUpOgorCisgICAgICAgIEF1Z21lbnQgdGhpcyB0byBgcmV0dXJuIGZh
bHNlYCBpbiB0aGUgY2FzZSB3aGVyZSB3ZSdyZSBpbnNpZGUgdGhlIHNjb3BlIG9mIGBtX2NvbGxl
Y3RpbmdDbGlja2FibGVFbGVtZW50c2AuIFRoaXMKKyAgICAgICAgYWxsb3dzIHVzIHRvIHJ1biBo
ZXVyaXN0aWNzIG92ZXIgdGhlIG1vZGFsIGNvbnRhaW5lciB3aXRob3V0IGFuIGFkanVzdGVkIGBk
aXNwbGF5OiBub25lO2Agc3R5bGUgb24gdGhlIGNvbnRhaW5lcgorICAgICAgICBlbGVtZW50Lgor
CisgICAgICAgICogcGFnZS9Nb2RhbENvbnRhaW5lck9ic2VydmVyLmg6CisKIDIwMjEtMTItMTYg
IFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgSGlkZSB2
aWV3cG9ydC1jb25zdHJhaW5lZCBlbGVtZW50cyB0aGF0IGFyZSBkZXRlY3RlZCBieSBNb2RhbENv
bnRhaW5lck9ic2VydmVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL01vZGFsQ29u
dGFpbmVyT2JzZXJ2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Nb2RhbENvbnRhaW5lck9i
c2VydmVyLmNwcAppbmRleCBlYjUxMjhlNDEyZWIyMDllOTY5ZGY4M2Y4ZmQ0ZGYxNzgyNTg4ZDU2
Li4xMzdlN2I3NjgxZjJkNDkzNWI1MmIzNzM5NmE5MjQ2MzMxMGY5ZmRkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL01vZGFsQ29udGFpbmVyT2JzZXJ2ZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvTW9kYWxDb250YWluZXJPYnNlcnZlci5jcHAKQEAgLTI2LDIzICsyNiwz
NCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIk1vZGFsQ29udGFpbmVyT2JzZXJ2
ZXIuaCIKIAorI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlPYmplY3QuaCIKICNpbmNsdWRlICJDaHJv
bWUuaCIKICNpbmNsdWRlICJDaHJvbWVDbGllbnQuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgog
I2luY2x1ZGUgIkRvY3VtZW50TG9hZGVyLmgiCiAjaW5jbHVkZSAiRWxlbWVudEl0ZXJhdG9yLmgi
CisjaW5jbHVkZSAiRXZlbnRMb29wLmgiCisjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgogI2luY2x1
ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCisjaW5jbHVkZSAiSFRNTEFuY2hv
ckVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MQm9keUVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1M
RG9jdW1lbnQuaCIKICNpbmNsdWRlICJIVE1MRWxlbWVudC5oIgorI2luY2x1ZGUgIkhUTUxJbWFn
ZUVsZW1lbnQuaCIKKyNpbmNsdWRlICJIVE1MSW5wdXRFbGVtZW50LmgiCiAjaW5jbHVkZSAiUGFn
ZS5oIgogI2luY2x1ZGUgIlJlbmRlclZpZXcuaCIKICNpbmNsdWRlICJUZXh0LmgiCisjaW5jbHVk
ZSA8d3RmL1NldEZvclNjb3BlLmg+CiAjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKK3N0YXRpYyBjb25zdGV4cHIgU2Vjb25kcyBjbGlja2FibGVFbGVtZW50Q29s
bGVjdGlvblJldHJ5RGVsYXkgPSA1MDBfbXM7CitzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIGNs
aWNrYWJsZUVsZW1lbnRDb2xsZWN0aW9uQXR0ZW1wdHMgPSAzOworc3RhdGljIGNvbnN0ZXhwciBz
aXplX3QgbWF4TGVuZ3RoRm9yQ2xpY2thYmxlRWxlbWVudFRleHQgPSAxMDA7CisKIGJvb2wgTW9k
YWxDb250YWluZXJPYnNlcnZlcjo6aXNOZWVkZWRGb3IoY29uc3QgRG9jdW1lbnQmIGRvY3VtZW50
KQogewogICAgIFJlZlB0ciBkb2N1bWVudExvYWRlciA9IGRvY3VtZW50LmxvYWRlcigpOwpAQCAt
NzIsNyArODMsMTEgQEAgYm9vbCBNb2RhbENvbnRhaW5lck9ic2VydmVyOjppc05lZWRlZEZvcihj
b25zdCBEb2N1bWVudCYgZG9jdW1lbnQpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLU1vZGFsQ29u
dGFpbmVyT2JzZXJ2ZXI6Ok1vZGFsQ29udGFpbmVyT2JzZXJ2ZXIoKSA9IGRlZmF1bHQ7CitNb2Rh
bENvbnRhaW5lck9ic2VydmVyOjpNb2RhbENvbnRhaW5lck9ic2VydmVyKCkKKyAgICA6IG1fY29s
bGVjdENsaWNrYWJsZUVsZW1lbnRzVGltZXIoKnRoaXMsICZNb2RhbENvbnRhaW5lck9ic2VydmVy
Ojpjb2xsZWN0Q2xpY2thYmxlRWxlbWVudHNUaW1lckZpcmVkKQoreworfQorCiBNb2RhbENvbnRh
aW5lck9ic2VydmVyOjp+TW9kYWxDb250YWluZXJPYnNlcnZlcigpID0gZGVmYXVsdDsKIAogc3Rh
dGljIGJvb2wgbWF0Y2hlc1NlYXJjaFRlcm0oY29uc3QgVGV4dCYgdGV4dE5vZGUsIGNvbnN0IEF0
b21TdHJpbmcmIHNlYXJjaFRlcm0pCkBAIC0xMjQsMTQgKzEzOSwxNzcgQEAgdm9pZCBNb2RhbENv
bnRhaW5lck9ic2VydmVyOjp1cGRhdGVNb2RhbENvbnRhaW5lcklmTmVlZGVkKGNvbnN0IEZyYW1l
VmlldyYgdmlldykKIAogICAgICAgICAgICAgbV9jb250YWluZXIgPSBlbGVtZW50LmdldCgpOwog
ICAgICAgICAgICAgZWxlbWVudC0+aW52YWxpZGF0ZVN0eWxlKCk7CisgICAgICAgICAgICBtX3Jl
bWFpbmluZ0NsaWNrYWJsZUVsZW1lbnRDb2xsZWN0aW9uQXR0ZW1wdHMgPSBjbGlja2FibGVFbGVt
ZW50Q29sbGVjdGlvbkF0dGVtcHRzOworICAgICAgICAgICAgc2NoZWR1bGVDbGlja2FibGVFbGVt
ZW50Q29sbGVjdGlvbklmUG9zc2libGUoKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
fQogICAgIH0KIH0KIAorc3RhdGljIEFjY2Vzc2liaWxpdHlSb2xlIGFjY2Vzc2liaWxpdHlSb2xl
KGNvbnN0IEhUTUxFbGVtZW50JiBlbGVtZW50KQoreworICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5
T2JqZWN0OjphcmlhUm9sZVRvV2ViQ29yZVJvbGUoZWxlbWVudC5hdHRyaWJ1dGVXaXRob3V0U3lu
Y2hyb25pemF0aW9uKEhUTUxOYW1lczo6cm9sZUF0dHIpKTsKK30KKworc3RhdGljIGJvb2wgaXND
bGlja2FibGVDb250cm9sKGNvbnN0IEhUTUxFbGVtZW50JiBlbGVtZW50KQoreworICAgIGlmIChl
bGVtZW50LmlzQWN0dWFsbHlEaXNhYmxlZCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICBpZiAoIWVsZW1lbnQucmVuZGVyZXIoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAg
aWYgKGVsZW1lbnQuaGFzVGFnTmFtZShIVE1MTmFtZXM6OmJ1dHRvblRhZykpCisgICAgICAgIHJl
dHVybiB0cnVlOworCisgICAgaWYgKGlzPEhUTUxJbnB1dEVsZW1lbnQ+KGVsZW1lbnQpICYmIGRv
d25jYXN0PEhUTUxJbnB1dEVsZW1lbnQ+KGVsZW1lbnQpLmlzVGV4dEJ1dHRvbigpKQorICAgICAg
ICByZXR1cm4gdHJ1ZTsKKworICAgIHN3aXRjaCAoYWNjZXNzaWJpbGl0eVJvbGUoZWxlbWVudCkp
IHsKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpCdXR0b246CisgICAgICAgIHJldHVybiB0
cnVlOworICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkNoZWNrQm94OgorICAgIGNhc2UgQWNj
ZXNzaWJpbGl0eVJvbGU6OlN3aXRjaDoKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGRlZmF1
bHQ6CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIGlmIChpczxIVE1MQW5jaG9yRWxlbWVu
dD4oZWxlbWVudCkpIHsKKyAgICAgICAgLy8gRklYTUU6IFdlIG1pZ2h0IG5lZWQgYSBtb3JlIGNv
bXByZWhlbnNpdmUgcG9saWN5IGhlcmUgdGhhdCBhdHRlbXB0cyB0byBjbGljayB0aGUgbGluayB0
byBkZXRlY3QgbmF2aWdhdGlvbiwKKyAgICAgICAgLy8gYnV0IHRoZW4gaW1tZWRpYXRlbHkgY2Fu
Y2VscyB0aGUgbmF2aWdhdGlvbi4KKyAgICAgICAgYXV0byBocmVmID0gZG93bmNhc3Q8SFRNTEFu
Y2hvckVsZW1lbnQ+KGVsZW1lbnQpLmhyZWYoKTsKKyAgICAgICAgcmV0dXJuIGVxdWFsSWdub3Jp
bmdGcmFnbWVudElkZW50aWZpZXIoZWxlbWVudC5kb2N1bWVudCgpLnVybCgpLCBocmVmKSB8fCAh
aHJlZi5wcm90b2NvbElzSW5IVFRQRmFtaWx5KCk7CisgICAgfQorCisgICAgaWYgKGVsZW1lbnQu
aGFzRXZlbnRMaXN0ZW5lcnMoZXZlbnROYW1lcygpLmNsaWNrRXZlbnQpIHx8IGVsZW1lbnQuaGFz
RXZlbnRMaXN0ZW5lcnMoZXZlbnROYW1lcygpLm1vdXNlZG93bkV2ZW50KSB8fCBlbGVtZW50Lmhh
c0V2ZW50TGlzdGVuZXJzKGV2ZW50TmFtZXMoKS5tb3VzZXVwRXZlbnQpKQorICAgICAgICByZXR1
cm4gdHJ1ZTsKKworICAgIHJldHVybiBmYWxzZTsKK30KKworc3RhdGljIHZvaWQgZmlsdGVyQ2xp
Y2thYmxlQ29udHJvbHMoVmVjdG9yPFJlZjxIVE1MRWxlbWVudD4+JiBlbGVtZW50cykKK3sKKyAg
ICBIYXNoU2V0PFJlZjxIVE1MRWxlbWVudD4+IGVsZW1lbnRzVG9SZW1vdmU7CisgICAgZm9yIChh
dXRvJiBvdXRlciA6IGVsZW1lbnRzKSB7CisgICAgICAgIGlmIChlbGVtZW50c1RvUmVtb3ZlLmNv
bnRhaW5zKG91dGVyKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIGZvciAoYXV0
byYgaW5uZXIgOiBlbGVtZW50cykgeworICAgICAgICAgICAgaWYgKGVsZW1lbnRzVG9SZW1vdmUu
Y29udGFpbnMoaW5uZXIpIHx8IG91dGVyLnB0cigpID09IGlubmVyLnB0cigpIHx8ICFvdXRlci0+
Y29udGFpbnMoaW5uZXIpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgICAg
ICBpZiAoYWNjZXNzaWJpbGl0eVJvbGUob3V0ZXIpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpCdXR0
b24pIHsKKyAgICAgICAgICAgICAgICBlbGVtZW50c1RvUmVtb3ZlLmFkZChpbm5lcik7CisgICAg
ICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChh
Y2Nlc3NpYmlsaXR5Um9sZShpbm5lcikgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OkJ1dHRvbikgewor
ICAgICAgICAgICAgICAgIGVsZW1lbnRzVG9SZW1vdmUuYWRkKG91dGVyKTsKKyAgICAgICAgICAg
ICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKG91dGVyLT5o
YXNUYWdOYW1lKEhUTUxOYW1lczo6ZGl2VGFnKSB8fCBvdXRlci0+aGFzVGFnTmFtZShIVE1MTmFt
ZXM6OnNwYW5UYWcpIHx8IG91dGVyLT5oYXNUYWdOYW1lKEhUTUxOYW1lczo6cFRhZykpCisgICAg
ICAgICAgICAgICAgZWxlbWVudHNUb1JlbW92ZS5hZGQob3V0ZXIpOworICAgICAgICAgICAgZWxz
ZQorICAgICAgICAgICAgICAgIGVsZW1lbnRzVG9SZW1vdmUuYWRkKGlubmVyKTsKKyAgICAgICAg
fQorICAgIH0KKworICAgIC8vIFJlbW92ZSBlbGVtZW50cyBmcm9tIHRoZSBnaXZlbiB2ZWN0b3Is
IHN1Y2ggdGhhdCBubyB0d28gZWxlbWVudHMgZXhpc3QgaW4gdGhlIHNhbWUgYW5jZXN0b3IgY2hh
aW4uCisgICAgLy8gQWRkaXRpb25hbGx5LCByZW1vdmUgYWxsIGVsZW1lbnRzIHdpdGggYW4gZW1w
dHkgY2xpZW50IGJvdW5kcy4KKyAgICBlbGVtZW50cy5yZW1vdmVBbGxNYXRjaGluZyhbJl0gKGF1
dG8mIGNvbnRyb2wpIHsKKyAgICAgICAgcmV0dXJuIGVsZW1lbnRzVG9SZW1vdmUuY29udGFpbnMo
Y29udHJvbCkgfHwgY29udHJvbC0+Ym91bmRpbmdDbGllbnRSZWN0KCkuaXNFbXB0eSgpOworICAg
IH0pOworfQorCitzdGF0aWMgU3RyaW5nIHRleHRGb3JDb250cm9sKEhUTUxFbGVtZW50JiBjb250
cm9sKQoreworICAgIGF1dG8gYXJpYUxhYmVsID0gY29udHJvbC5hdHRyaWJ1dGVXaXRob3V0U3lu
Y2hyb25pemF0aW9uKEhUTUxOYW1lczo6YXJpYV9sYWJlbEF0dHIpOworICAgIGlmICghYXJpYUxh
YmVsLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIGFyaWFMYWJlbDsKKworICAgIGlmIChpczxI
VE1MSW5wdXRFbGVtZW50Pihjb250cm9sKSkKKyAgICAgICAgcmV0dXJuIGRvd25jYXN0PEhUTUxJ
bnB1dEVsZW1lbnQ+KGNvbnRyb2wpLnZhbHVlKCk7CisKKyAgICBhdXRvIHRpdGxlID0gY29udHJv
bC50aXRsZSgpOworICAgIGlmICghdGl0bGUuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gdGl0
bGU7CisKKyAgICBpZiAoaXM8SFRNTEltYWdlRWxlbWVudD4oY29udHJvbCkpIHsKKyAgICAgICAg
YXV0byBhbHRUZXh0ID0gZG93bmNhc3Q8SFRNTEltYWdlRWxlbWVudD4oY29udHJvbCkuYWx0VGV4
dCgpOworICAgICAgICBpZiAoIWFsdFRleHQuaXNFbXB0eSgpKQorICAgICAgICAgICAgcmV0dXJu
IGFsdFRleHQ7CisgICAgfQorCisgICAgcmV0dXJuIGNvbnRyb2wub3V0ZXJUZXh0KCk7Cit9CisK
K3ZvaWQgTW9kYWxDb250YWluZXJPYnNlcnZlcjo6c2NoZWR1bGVDbGlja2FibGVFbGVtZW50Q29s
bGVjdGlvbklmUG9zc2libGUoU2Vjb25kcyBkZWxheSkKK3sKKyAgICBpZiAoIW1fcmVtYWluaW5n
Q2xpY2thYmxlRWxlbWVudENvbGxlY3Rpb25BdHRlbXB0cyB8fCBtX2NvbGxlY3RDbGlja2FibGVF
bGVtZW50c1RpbWVyLmlzQWN0aXZlKCkpCisgICAgICAgIHJldHVybjsKKworICAgIG1fY29sbGVj
dENsaWNrYWJsZUVsZW1lbnRzVGltZXIuc3RhcnRPbmVTaG90KGRlbGF5KTsKKyAgICBtX3JlbWFp
bmluZ0NsaWNrYWJsZUVsZW1lbnRDb2xsZWN0aW9uQXR0ZW1wdHMtLTsKK30KKwordm9pZCBNb2Rh
bENvbnRhaW5lck9ic2VydmVyOjpjb2xsZWN0Q2xpY2thYmxlRWxlbWVudHNUaW1lckZpcmVkKCkK
K3sKKyAgICBpZiAoIW1fY29udGFpbmVyKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2NvbnRh
aW5lci0+ZG9jdW1lbnQoKS5ldmVudExvb3AoKS5xdWV1ZVRhc2soVGFza1NvdXJjZTo6SW50ZXJu
YWxBc3luY1Rhc2ssIFtvYnNlcnZlciA9IHRoaXMsIHdlYWtEb2N1bWVudCA9IFdlYWtQdHIgeyBt
X2NvbnRhaW5lci0+ZG9jdW1lbnQoKSB9XSB7CisgICAgICAgIFJlZlB0ciBkb2N1bWVudCA9IHdl
YWtEb2N1bWVudC5nZXQoKTsKKyAgICAgICAgaWYgKCFkb2N1bWVudCkKKyAgICAgICAgICAgIHJl
dHVybjsKKworICAgICAgICBpZiAob2JzZXJ2ZXIgIT0gZG9jdW1lbnQtPm1vZGFsQ29udGFpbmVy
T2JzZXJ2ZXJJZkV4aXN0cygpIHx8ICFvYnNlcnZlci0+bV9jb250YWluZXIuZ2V0KCkpIHsKKyAg
ICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICB9CisKKyAgICAgICAgVmVjdG9yPFdlYWtQdHI8SFRNTEVsZW1lbnQ+PiBjbGFzc2lmaWFi
bGVDb250cm9sczsKKyAgICAgICAgVmVjdG9yPFN0cmluZz4gY29udHJvbFRleHRzVG9DbGFzc2lm
eTsKKyAgICAgICAgUmVmIGNvbnRhaW5lciA9ICpvYnNlcnZlci0+bV9jb250YWluZXIuZ2V0KCk7
CisgICAgICAgIHsKKyAgICAgICAgICAgIFNldEZvclNjb3BlPGJvb2w+IGNvbGxlY3RDbGlja2Fi
bGVFbGVtZW50c1Njb3BlIHsgb2JzZXJ2ZXItPm1fY29sbGVjdGluZ0NsaWNrYWJsZUVsZW1lbnRz
LCB0cnVlIH07CisgICAgICAgICAgICBjb250YWluZXItPmludmFsaWRhdGVTdHlsZSgpOworICAg
ICAgICAgICAgY29udGFpbmVyLT5kb2N1bWVudCgpLnVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdT
dHlsZXNoZWV0cygpOworCisgICAgICAgICAgICBWZWN0b3I8UmVmPEhUTUxFbGVtZW50Pj4gY2xp
Y2thYmxlQ29udHJvbHM7CisgICAgICAgICAgICBmb3IgKGF1dG8mIGNoaWxkIDogZGVzY2VuZGFu
dHNPZlR5cGU8SFRNTEVsZW1lbnQ+KGNvbnRhaW5lcikpIHsKKyAgICAgICAgICAgICAgICBpZiAo
aXNDbGlja2FibGVDb250cm9sKGNoaWxkKSkKKyAgICAgICAgICAgICAgICAgICAgY2xpY2thYmxl
Q29udHJvbHMuYXBwZW5kKGNoaWxkKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZmls
dGVyQ2xpY2thYmxlQ29udHJvbHMoY2xpY2thYmxlQ29udHJvbHMpOworCisgICAgICAgICAgICBj
bGFzc2lmaWFibGVDb250cm9scy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGNsaWNrYWJsZUNvbnRy
b2xzLnNpemUoKSk7CisgICAgICAgICAgICBjb250cm9sVGV4dHNUb0NsYXNzaWZ5LnJlc2VydmVJ
bml0aWFsQ2FwYWNpdHkoY2xpY2thYmxlQ29udHJvbHMuc2l6ZSgpKTsKKyAgICAgICAgICAgIGZv
ciAoYXV0byYgY29udHJvbCA6IGNsaWNrYWJsZUNvbnRyb2xzKSB7CisgICAgICAgICAgICAgICAg
YXV0byB0ZXh0ID0gdGV4dEZvckNvbnRyb2woY29udHJvbCkuc3RyaXBXaGl0ZVNwYWNlKCk7Cisg
ICAgICAgICAgICAgICAgaWYgKCF0ZXh0LmlzRW1wdHkoKSAmJiB0ZXh0Lmxlbmd0aCgpIDwgbWF4
TGVuZ3RoRm9yQ2xpY2thYmxlRWxlbWVudFRleHQpIHsKKyAgICAgICAgICAgICAgICAgICAgY2xh
c3NpZmlhYmxlQ29udHJvbHMudW5jaGVja2VkQXBwZW5kKHsgY29udHJvbCB9KTsKKyAgICAgICAg
ICAgICAgICAgICAgY29udHJvbFRleHRzVG9DbGFzc2lmeS51bmNoZWNrZWRBcHBlbmQoV1RGTW92
ZSh0ZXh0KSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisK
KyAgICAgICAgY29udGFpbmVyLT5pbnZhbGlkYXRlU3R5bGUoKTsKKworICAgICAgICBpZiAoY2xh
c3NpZmlhYmxlQ29udHJvbHMuaXNFbXB0eSgpKSB7CisgICAgICAgICAgICBvYnNlcnZlci0+c2No
ZWR1bGVDbGlja2FibGVFbGVtZW50Q29sbGVjdGlvbklmUG9zc2libGUoY2xpY2thYmxlRWxlbWVu
dENvbGxlY3Rpb25SZXRyeURlbGF5KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQor
CisgICAgICAgIC8vIEZJWE1FOiBDbGFzc2lmeSBzdHJpbmdzIGJ5IHByb3BhZ2F0aW5nIHRoZW0g
dGhyb3VnaCB0aGUgY2xpZW50IGxheWVyLgorICAgIH0pOworfQorCiBib29sIE1vZGFsQ29udGFp
bmVyT2JzZXJ2ZXI6OnNob3VsZEhpZGUoY29uc3QgRWxlbWVudCYgZWxlbWVudCkKIHsKLSAgICBy
ZXR1cm4gJmVsZW1lbnQgPT0gbV9jb250YWluZXI7CisgICAgcmV0dXJuICZlbGVtZW50ID09IG1f
Y29udGFpbmVyICYmICFtX2NvbGxlY3RpbmdDbGlja2FibGVFbGVtZW50czsKIH0KIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Nb2RhbENv
bnRhaW5lck9ic2VydmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL01vZGFsQ29udGFpbmVyT2Jz
ZXJ2ZXIuaAppbmRleCAzMmU3NGJiOTljYWZjMzY2NjBjODkwMmYxM2FlN2RiYTE5NzQyYzA3Li42
NWY4ZDAyMzg5ZTlhNzZiMzgyZWFlYTc5OTM5YWU2MzdlYmY5YTNmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL01vZGFsQ29udGFpbmVyT2JzZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL01vZGFsQ29udGFpbmVyT2JzZXJ2ZXIuaApAQCAtMjUsNiArMjUsNyBAQAogCiAj
cHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIlRpbWVyLmgiCiAjaW5jbHVkZSA8d3RmL0Zhc3RNYWxs
b2MuaD4KICNpbmNsdWRlIDx3dGYvV2Vha0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0
ci5oPgpAQCAtNDcsOCArNDgsMTQgQEAgcHVibGljOgogICAgIHZvaWQgdXBkYXRlTW9kYWxDb250
YWluZXJJZk5lZWRlZChjb25zdCBGcmFtZVZpZXcmKTsKIAogcHJpdmF0ZToKKyAgICB2b2lkIHNj
aGVkdWxlQ2xpY2thYmxlRWxlbWVudENvbGxlY3Rpb25JZlBvc3NpYmxlKFNlY29uZHMgPSAwX3Mp
OworICAgIHZvaWQgY29sbGVjdENsaWNrYWJsZUVsZW1lbnRzVGltZXJGaXJlZCgpOworCiAgICAg
V2Vha0hhc2hTZXQ8RWxlbWVudD4gbV9lbGVtZW50c1RvSWdub3JlV2hlblNlYXJjaGluZzsKICAg
ICBXZWFrUHRyPEVsZW1lbnQ+IG1fY29udGFpbmVyOworICAgIFRpbWVyIG1fY29sbGVjdENsaWNr
YWJsZUVsZW1lbnRzVGltZXI7CisgICAgdW5zaWduZWQgbV9yZW1haW5pbmdDbGlja2FibGVFbGVt
ZW50Q29sbGVjdGlvbkF0dGVtcHRzIHsgMCB9OworICAgIGJvb2wgbV9jb2xsZWN0aW5nQ2xpY2th
YmxlRWxlbWVudHMgeyBmYWxzZSB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>447524</attachid>
            <date>2021-12-18 11:32:11 -0800</date>
            <delta_ts>2021-12-19 11:30:16 -0800</delta_ts>
            <desc>Rebase on trunk</desc>
            <filename>bug-234299-20211218113210.patch</filename>
            <type>text/plain</type>
            <size>12818</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg3MjI3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTU1N2JmODY3ZmJiODc3
NmMxNjc1NjRmZmE3YmYwZGUzYjM0MWFlNy4uNjg5ODNjY2RiODcyYzI1NjQzODJjYjIwMzQ5NWIy
YTk4MjNmOTQwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU1IEBACisyMDIxLTEyLTE3ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBhIGJhc2lj
IGhldXJpc3RpYyBmb3IgY29sbGVjdGluZyBhbmQgZXh0cmFjdGluZyB0ZXh0IGZyb20gY29udHJv
bHMgaW4gTW9kYWxDb250YWluZXJPYnNlcnZlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM0Mjk5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgSW50cm9kdWNlIGEgaGV1cmlzdGljIGZvciBleHRyYWN0aW5n
IGNsaWNrYWJsZSBjb250cm9scyBmcm9tIG1vZGFsIGNvbnRhaW5lcnMsIHRoYXQgYXJlIHVubGlr
ZWx5IHRvIGJlIGxpbmtzCisgICAgICAgIChpLmUuIHRyaWdnZXIgbmF2aWdhdGlvbiB3aGVuIGNs
aWNrZWQpLiBTZWUgYmVsb3cgZm9yIG1vcmUgZGV0YWlscy4KKworICAgICAgICAqIHBhZ2UvTW9k
YWxDb250YWluZXJPYnNlcnZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNb2RhbENvbnRhaW5l
ck9ic2VydmVyOjpNb2RhbENvbnRhaW5lck9ic2VydmVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1v
ZGFsQ29udGFpbmVyT2JzZXJ2ZXI6OnVwZGF0ZU1vZGFsQ29udGFpbmVySWZOZWVkZWQpOgorCisg
ICAgICAgIE9uY2UgYSBtb2RhbCBjb250YWluZXIgaGFzIGJlZW4gZGV0ZWN0ZWQsIHNjaGVkdWxl
IGEgc2hvcnQgdGltZXIgdG8gdHJhdmVyc2UgdGhlIG1vZGFsIGNvbnRhaW5lcidzIHN1YnRyZWUg
aW4KKyAgICAgICAgc2VhcmNoIGZvciBjbGlja2FibGUgY29udHJvbHMuIEluIGEgZnV0dXJlIHBh
dGNoLCB3ZSBtYXkgbmVlZCB0byBsZW5ndGhlbiB0aGlzIGRlbGF5IG9yIGV2ZW4gaW50cm9kdWNl
IGEKKyAgICAgICAgbWVjaGFuaXNtIGZvciByZXN0YXJ0aW5nIHRoZSB0aW1lciBwZXJpb2RpY2Fs
bHkgaWYgbm8gY2xpY2thYmxlIGNvbnRyb2xzIGFyZSBkaXNjb3ZlcmVkIGluIHRoZSBtb2RhbCBj
b250YWluZXIuCisKKyAgICAgICAgKFdlYkNvcmU6OmFjY2Vzc2liaWxpdHlSb2xlKToKKyAgICAg
ICAgKFdlYkNvcmU6OmlzQ2xpY2thYmxlQ29udHJvbCk6CisgICAgICAgIChXZWJDb3JlOjpyZW1v
dmVQYXJlbnRPckNoaWxkRWxlbWVudHMpOgorICAgICAgICAoV2ViQ29yZTo6cmVtb3ZlRWxlbWVu
dHNXaXRoRW1wdHlCb3VuZHMpOgorICAgICAgICAoV2ViQ29yZTo6dGV4dEZvckNvbnRyb2wpOgor
ICAgICAgICAoV2ViQ29yZTo6TW9kYWxDb250YWluZXJPYnNlcnZlcjo6c2NoZWR1bGVDbGlja2Fi
bGVFbGVtZW50Q29sbGVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpNb2RhbENvbnRhaW5lck9i
c2VydmVyOjpjb2xsZWN0Q2xpY2thYmxlRWxlbWVudHNUaW1lckZpcmVkKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1vZGFsQ29udGFpbmVyT2JzZXJ2ZXI6OmNvbGxlY3RDbGlja2FibGVFbGVtZW50cyk6
CisKKyAgICAgICAgVGhpcyBjb250YWlucyB0aGUgbWFpbiBsb2dpYyBmb3IgY29sbGVjdGluZyBj
bGlja2FibGUgZWxlbWVudHMgaW5zaWRlIG1vZGFsIGNvbnRhaW5lcnMuIFRoaXMgaGV1cmlzdGlj
IGNvbnNpc3RzCisgICAgICAgIG1vc3RseSBvZiB0aHJlZSBwaGFzZXM6CisKKyAgICAgICAgMS4g
V2UgaW5pdGlhbGx5IHNjYW4gdGhlIG1vZGFsIGNvbnRhaW5lciBzdWJ0cmVlIGluIHNlYXJjaCBv
ZiBhbnkgZWxlbWVudHMgdGhhdCBzZWVtIGxpa2UgdGhleSBjb3VsZCBiZQorICAgICAgICBjbGlj
a2FibGUgYnV0dG9ucyBvciBsaW5rcyB0aGF0IGRvbid0IHRyaWdnZXIgbmF2aWdhdGlvbiwgYW5k
IGJ1aWxkIGEgbGlzdCBvZiBgY2xhc3NpZmlhYmxlQ29udHJvbHNgLgorCisgICAgICAgIDIuIFdl
IHRoZW4gZmlsdGVyIHRoZSBsaXN0IG9mIGBjbGFzc2lmaWFibGVDb250cm9sc2AgYnkgcmVtb3Zp
bmcgYW55IGVsZW1lbnRzIGluIHRoZSBsaXN0IHRoYXQgZWl0aGVyIGNvbnRhaW4gb3IKKyAgICAg
ICAgYXJlIGNvbnRhaW5lZCBieSBvdGhlciBlbGVtZW50cyAodXNpbmcgYSBoZXVyaXN0aWMgdG8g
ZGVjaWRlIHdoZXRoZXIgdG8gcmVtb3ZlIGVhY2ggcGFyZW50IG9yIGNoaWxkKTsgaW4gdGhpcwor
ICAgICAgICBmaWx0ZXJpbmcgc3RlcCwgd2UgYWRkaXRpb25hbGx5IHJlbW92ZSBhbGwgZWxlbWVu
dHMgdGhhdCBhcmUgZWZmZWN0aXZlbHkgdW5jbGlja2FibGUgZHVlIHRvIGhhdmluZyBhbiBlbXB0
eQorICAgICAgICBjbGllbnQgYm91bmRpbmcgcmVjdC4KKworICAgICAgICAzLiBJbiB0aGUgZmlu
YWwgcGhhc2UsIHdlIGl0ZXJhdGUgb3ZlciBhbGwgb2YgdGhlIGNvbnRyb2xzIGluIHRoZSBmaWx0
ZXJlZCBsaXN0LCBhbmQgYXR0ZW1wdCB0byBleHRyYWN0IHRleHQgZm9yCisgICAgICAgIGVhY2gg
Y29udHJvbCAobG9va2luZyBhdCBhdHRyaWJ1dGVzIHN1Y2ggYXMgYHRpdGxlYCBhbmQgYGFyaWEt
bGFiZWxgLCBgYWx0YCB0ZXh0IGZvciBpbWFnZXMsIGFuZCBmaW5hbGx5IGZhbGxpbmcKKyAgICAg
ICAgYmFjayB0byBgb3V0ZXJUZXh0KClgKS4gSWYgdGhpcyByYXcgdGV4dCBkZXNjcmlwdGlvbiBp
cyBub3QgZW1wdHkgYW5kIGFsc28gbm90IHRvbyBsb25nIChleGNlZWRpbmcgYW4KKyAgICAgICAg
YXJiaXRyYXJpbHkgY2hvc2VuIHRocmVzaG9sZCBvZiAxMDAgY2hhcmFjdGVycyksIHdlIGFkZCBp
dCB0byB0aGUgZmluYWwgbGlzdCBvZiBjb250cm9scyBhbmQgY29udHJvbCB0ZXh0CisgICAgICAg
IGRlc2NyaXB0aW9ucyB0byBzZW5kIHRvIHRoZSBjbGllbnQgbGF5ZXIgZm9yIGNsYXNzaWZpY2F0
aW9uLgorCisgICAgICAgIChXZWJDb3JlOjpNb2RhbENvbnRhaW5lck9ic2VydmVyOjpzaG91bGRI
aWRlKToKKworICAgICAgICBBdWdtZW50IHRoaXMgdG8gYHJldHVybiBmYWxzZWAgaW4gdGhlIGNh
c2Ugd2hlcmUgd2UncmUgaW5zaWRlIHRoZSBzY29wZSBvZiBgbV9jb2xsZWN0aW5nQ2xpY2thYmxl
RWxlbWVudHNgLiBUaGlzCisgICAgICAgIGFsbG93cyB1cyB0byBydW4gaGV1cmlzdGljcyBvdmVy
IHRoZSBtb2RhbCBjb250YWluZXIgd2l0aG91dCBhbiBhZGp1c3RlZCBgZGlzcGxheTogbm9uZTtg
IHN0eWxlIG9uIHRoZSBjb250YWluZXIKKyAgICAgICAgZWxlbWVudC4KKworICAgICAgICAqIHBh
Z2UvTW9kYWxDb250YWluZXJPYnNlcnZlci5oOgorCiAyMDIxLTEyLTE3ICBTaW1vbiBGcmFzZXIg
IDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFJlbmFtZSBNb2NrU2Nyb2xsQW5p
bWF0b3JFbmFibGVkIHRvIE1vY2tTY3JvbGxiYXJzQ29udHJvbGxlckVuYWJsZWQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTW9kYWxDb250YWluZXJPYnNlcnZlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL01vZGFsQ29udGFpbmVyT2JzZXJ2ZXIuY3BwCmluZGV4IGY5YzFhZjYz
MTQzMDdkYzQyNDI2NDM4NmFkM2RlZDU4NmNjZGQwNWEuLjA0ZDA4ZDIzYjUzNzIxOTUyMDU2NjI0
MmQ2YzdjOTAzMDE0ZTVlZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTW9kYWxD
b250YWluZXJPYnNlcnZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Nb2RhbENvbnRh
aW5lck9ic2VydmVyLmNwcApAQCAtMjYsMjQgKzI2LDM0IEBACiAjaW5jbHVkZSAiY29uZmlnLmgi
CiAjaW5jbHVkZSAiTW9kYWxDb250YWluZXJPYnNlcnZlci5oIgogCisjaW5jbHVkZSAiQWNjZXNz
aWJpbGl0eU9iamVjdC5oIgogI2luY2x1ZGUgIkNocm9tZS5oIgogI2luY2x1ZGUgIkNocm9tZUNs
aWVudC5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnRMb2FkZXIu
aCIKKyNpbmNsdWRlICJFbGVtZW50SXRlcmF0b3IuaCIKKyNpbmNsdWRlICJFdmVudExvb3AuaCIK
KyNpbmNsdWRlICJFdmVudE5hbWVzLmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJG
cmFtZVZpZXcuaCIKKyNpbmNsdWRlICJIVE1MQW5jaG9yRWxlbWVudC5oIgogI2luY2x1ZGUgIkhU
TUxCb2R5RWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxEb2N1bWVudC5oIgogI2luY2x1ZGUgIkhU
TUxFbGVtZW50LmgiCisjaW5jbHVkZSAiSFRNTEltYWdlRWxlbWVudC5oIgorI2luY2x1ZGUgIkhU
TUxJbnB1dEVsZW1lbnQuaCIKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUmVuZGVyRGVz
Y2VuZGFudEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiUmVuZGVyVGV4dC5oIgogI2luY2x1ZGUgIlJl
bmRlclZpZXcuaCIKICNpbmNsdWRlICJUZXh0LmgiCisjaW5jbHVkZSA8d3RmL1Njb3BlLmg+CiAj
aW5jbHVkZSA8d3RmL1VSTC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK3N0YXRpYyBjb25z
dGV4cHIgc2l6ZV90IG1heExlbmd0aEZvckNsaWNrYWJsZUVsZW1lbnRUZXh0ID0gMTAwOworCiBi
b29sIE1vZGFsQ29udGFpbmVyT2JzZXJ2ZXI6OmlzTmVlZGVkRm9yKGNvbnN0IERvY3VtZW50JiBk
b2N1bWVudCkKIHsKICAgICBSZWZQdHIgZG9jdW1lbnRMb2FkZXIgPSBkb2N1bWVudC5sb2FkZXIo
KTsKQEAgLTcyLDcgKzgyLDExIEBAIGJvb2wgTW9kYWxDb250YWluZXJPYnNlcnZlcjo6aXNOZWVk
ZWRGb3IoY29uc3QgRG9jdW1lbnQmIGRvY3VtZW50KQogICAgIHJldHVybiB0cnVlOwogfQogCi1N
b2RhbENvbnRhaW5lck9ic2VydmVyOjpNb2RhbENvbnRhaW5lck9ic2VydmVyKCkgPSBkZWZhdWx0
OworTW9kYWxDb250YWluZXJPYnNlcnZlcjo6TW9kYWxDb250YWluZXJPYnNlcnZlcigpCisgICAg
OiBtX2NvbGxlY3RDbGlja2FibGVFbGVtZW50c1RpbWVyKCp0aGlzLCAmTW9kYWxDb250YWluZXJP
YnNlcnZlcjo6Y29sbGVjdENsaWNrYWJsZUVsZW1lbnRzVGltZXJGaXJlZCkKK3sKK30KKwogTW9k
YWxDb250YWluZXJPYnNlcnZlcjo6fk1vZGFsQ29udGFpbmVyT2JzZXJ2ZXIoKSA9IGRlZmF1bHQ7
CiAKIHN0YXRpYyBib29sIG1hdGNoZXNTZWFyY2hUZXJtKGNvbnN0IFRleHQmIHRleHROb2RlLCBj
b25zdCBBdG9tU3RyaW5nJiBzZWFyY2hUZXJtKQpAQCAtMTIyLDE1ICsxMzYsMTgzIEBAIHZvaWQg
TW9kYWxDb250YWluZXJPYnNlcnZlcjo6dXBkYXRlTW9kYWxDb250YWluZXJJZk5lZWRlZChjb25z
dCBGcmFtZVZpZXcmIHZpZXcpCiAgICAgICAgICAgICBpZiAoUmVmUHRyIHRleHROb2RlID0gdGV4
dFJlbmRlcmVyLnRleHROb2RlKCk7IHRleHROb2RlICYmIG1hdGNoZXNTZWFyY2hUZXJtKCp0ZXh0
Tm9kZSwgc2VhcmNoVGVybSkpIHsKICAgICAgICAgICAgICAgICBtX2NvbnRhaW5lciA9IGVsZW1l
bnQuZ2V0KCk7CiAgICAgICAgICAgICAgICAgZWxlbWVudC0+aW52YWxpZGF0ZVN0eWxlKCk7Cisg
ICAgICAgICAgICAgICAgc2NoZWR1bGVDbGlja2FibGVFbGVtZW50Q29sbGVjdGlvbigpOwogICAg
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KIH0K
IAorc3RhdGljIEFjY2Vzc2liaWxpdHlSb2xlIGFjY2Vzc2liaWxpdHlSb2xlKGNvbnN0IEhUTUxF
bGVtZW50JiBlbGVtZW50KQoreworICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojphcmlh
Um9sZVRvV2ViQ29yZVJvbGUoZWxlbWVudC5hdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9u
KEhUTUxOYW1lczo6cm9sZUF0dHIpKTsKK30KKworc3RhdGljIGJvb2wgaXNDbGlja2FibGVDb250
cm9sKGNvbnN0IEhUTUxFbGVtZW50JiBlbGVtZW50KQoreworICAgIGlmIChlbGVtZW50LmlzQWN0
dWFsbHlEaXNhYmxlZCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoIWVsZW1l
bnQucmVuZGVyZXIoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKGVsZW1lbnQu
aGFzVGFnTmFtZShIVE1MTmFtZXM6OmJ1dHRvblRhZykpCisgICAgICAgIHJldHVybiB0cnVlOwor
CisgICAgaWYgKGlzPEhUTUxJbnB1dEVsZW1lbnQ+KGVsZW1lbnQpICYmIGRvd25jYXN0PEhUTUxJ
bnB1dEVsZW1lbnQ+KGVsZW1lbnQpLmlzVGV4dEJ1dHRvbigpKQorICAgICAgICByZXR1cm4gdHJ1
ZTsKKworICAgIHN3aXRjaCAoYWNjZXNzaWJpbGl0eVJvbGUoZWxlbWVudCkpIHsKKyAgICBjYXNl
IEFjY2Vzc2liaWxpdHlSb2xlOjpCdXR0b246CisgICAgICAgIHJldHVybiB0cnVlOworICAgIGNh
c2UgQWNjZXNzaWJpbGl0eVJvbGU6OkNoZWNrQm94OgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJv
bGU6OlN3aXRjaDoKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGRlZmF1bHQ6CisgICAgICAg
IGJyZWFrOworICAgIH0KKworICAgIGlmIChpczxIVE1MQW5jaG9yRWxlbWVudD4oZWxlbWVudCkp
IHsKKyAgICAgICAgLy8gRklYTUU6IFdlIG1pZ2h0IG5lZWQgYSBtb3JlIGNvbXByZWhlbnNpdmUg
cG9saWN5IGhlcmUgdGhhdCBhdHRlbXB0cyB0byBjbGljayB0aGUgbGluayB0byBkZXRlY3QgbmF2
aWdhdGlvbiwKKyAgICAgICAgLy8gYnV0IHRoZW4gaW1tZWRpYXRlbHkgY2FuY2VscyB0aGUgbmF2
aWdhdGlvbi4KKyAgICAgICAgYXV0byBocmVmID0gZG93bmNhc3Q8SFRNTEFuY2hvckVsZW1lbnQ+
KGVsZW1lbnQpLmhyZWYoKTsKKyAgICAgICAgcmV0dXJuIGVxdWFsSWdub3JpbmdGcmFnbWVudElk
ZW50aWZpZXIoZWxlbWVudC5kb2N1bWVudCgpLnVybCgpLCBocmVmKSB8fCAhaHJlZi5wcm90b2Nv
bElzSW5IVFRQRmFtaWx5KCk7CisgICAgfQorCisgICAgaWYgKGVsZW1lbnQuaGFzRXZlbnRMaXN0
ZW5lcnMoZXZlbnROYW1lcygpLmNsaWNrRXZlbnQpIHx8IGVsZW1lbnQuaGFzRXZlbnRMaXN0ZW5l
cnMoZXZlbnROYW1lcygpLm1vdXNlZG93bkV2ZW50KSB8fCBlbGVtZW50Lmhhc0V2ZW50TGlzdGVu
ZXJzKGV2ZW50TmFtZXMoKS5tb3VzZXVwRXZlbnQpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKwor
ICAgIHJldHVybiBmYWxzZTsKK30KKworc3RhdGljIHZvaWQgcmVtb3ZlUGFyZW50T3JDaGlsZEVs
ZW1lbnRzKFZlY3RvcjxSZWY8SFRNTEVsZW1lbnQ+PiYgZWxlbWVudHMpCit7CisgICAgSGFzaFNl
dDxSZWY8SFRNTEVsZW1lbnQ+PiBlbGVtZW50c1RvUmVtb3ZlOworICAgIGZvciAoYXV0byYgb3V0
ZXIgOiBlbGVtZW50cykgeworICAgICAgICBpZiAoZWxlbWVudHNUb1JlbW92ZS5jb250YWlucyhv
dXRlcikpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBmb3IgKGF1dG8mIGlubmVy
IDogZWxlbWVudHMpIHsKKyAgICAgICAgICAgIGlmIChlbGVtZW50c1RvUmVtb3ZlLmNvbnRhaW5z
KGlubmVyKSB8fCBvdXRlci5wdHIoKSA9PSBpbm5lci5wdHIoKSB8fCAhb3V0ZXItPmNvbnRhaW5z
KGlubmVyKSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAgICAgaWYgKGFj
Y2Vzc2liaWxpdHlSb2xlKG91dGVyKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6QnV0dG9uKSB7Cisg
ICAgICAgICAgICAgICAgZWxlbWVudHNUb1JlbW92ZS5hZGQoaW5uZXIpOworICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoYWNjZXNzaWJp
bGl0eVJvbGUoaW5uZXIpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpCdXR0b24pIHsKKyAgICAgICAg
ICAgICAgICBlbGVtZW50c1RvUmVtb3ZlLmFkZChvdXRlcik7CisgICAgICAgICAgICAgICAgY29u
dGludWU7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChvdXRlci0+aGFzVGFnTmFt
ZShIVE1MTmFtZXM6OmRpdlRhZykgfHwgb3V0ZXItPmhhc1RhZ05hbWUoSFRNTE5hbWVzOjpzcGFu
VGFnKSB8fCBvdXRlci0+aGFzVGFnTmFtZShIVE1MTmFtZXM6OnBUYWcpKQorICAgICAgICAgICAg
ICAgIGVsZW1lbnRzVG9SZW1vdmUuYWRkKG91dGVyKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgICAgICBlbGVtZW50c1RvUmVtb3ZlLmFkZChpbm5lcik7CisgICAgICAgIH0KKyAgICB9
CisKKyAgICBlbGVtZW50cy5yZW1vdmVBbGxNYXRjaGluZyhbJl0gKGF1dG8mIGNvbnRyb2wpIHsK
KyAgICAgICAgcmV0dXJuIGVsZW1lbnRzVG9SZW1vdmUuY29udGFpbnMoY29udHJvbCk7CisgICAg
fSk7Cit9CisKK3N0YXRpYyB2b2lkIHJlbW92ZUVsZW1lbnRzV2l0aEVtcHR5Qm91bmRzKFZlY3Rv
cjxSZWY8SFRNTEVsZW1lbnQ+PiYgZWxlbWVudHMpCit7CisgICAgZWxlbWVudHMucmVtb3ZlQWxs
TWF0Y2hpbmcoWyZdIChhdXRvJiBlbGVtZW50KSB7CisgICAgICAgIHJldHVybiBlbGVtZW50LT5i
b3VuZGluZ0NsaWVudFJlY3QoKS5pc0VtcHR5KCk7CisgICAgfSk7Cit9CisKK3N0YXRpYyBTdHJp
bmcgdGV4dEZvckNvbnRyb2woSFRNTEVsZW1lbnQmIGNvbnRyb2wpCit7CisgICAgYXV0byBhcmlh
TGFiZWwgPSBjb250cm9sLmF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oSFRNTE5hbWVz
OjphcmlhX2xhYmVsQXR0cik7CisgICAgaWYgKCFhcmlhTGFiZWwuaXNFbXB0eSgpKQorICAgICAg
ICByZXR1cm4gYXJpYUxhYmVsOworCisgICAgaWYgKGlzPEhUTUxJbnB1dEVsZW1lbnQ+KGNvbnRy
b2wpKQorICAgICAgICByZXR1cm4gZG93bmNhc3Q8SFRNTElucHV0RWxlbWVudD4oY29udHJvbCku
dmFsdWUoKTsKKworICAgIGF1dG8gdGl0bGUgPSBjb250cm9sLnRpdGxlKCk7CisgICAgaWYgKCF0
aXRsZS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiB0aXRsZTsKKworICAgIGlmIChpczxIVE1M
SW1hZ2VFbGVtZW50Pihjb250cm9sKSkgeworICAgICAgICBhdXRvIGFsdFRleHQgPSBkb3duY2Fz
dDxIVE1MSW1hZ2VFbGVtZW50Pihjb250cm9sKS5hbHRUZXh0KCk7CisgICAgICAgIGlmICghYWx0
VGV4dC5pc0VtcHR5KCkpCisgICAgICAgICAgICByZXR1cm4gYWx0VGV4dDsKKyAgICB9CisKKyAg
ICByZXR1cm4gY29udHJvbC5vdXRlclRleHQoKTsKK30KKwordm9pZCBNb2RhbENvbnRhaW5lck9i
c2VydmVyOjpzY2hlZHVsZUNsaWNrYWJsZUVsZW1lbnRDb2xsZWN0aW9uKCkKK3sKKyAgICBtX2Nv
bGxlY3RDbGlja2FibGVFbGVtZW50c1RpbWVyLnN0YXJ0T25lU2hvdCgyMDBfbXMpOworfQorCit2
b2lkIE1vZGFsQ29udGFpbmVyT2JzZXJ2ZXI6OmNvbGxlY3RDbGlja2FibGVFbGVtZW50c1RpbWVy
RmlyZWQoKQoreworICAgIGlmICghbV9jb250YWluZXIpCisgICAgICAgIHJldHVybjsKKworICAg
IG1fY29udGFpbmVyLT5kb2N1bWVudCgpLmV2ZW50TG9vcCgpLnF1ZXVlVGFzayhUYXNrU291cmNl
OjpJbnRlcm5hbEFzeW5jVGFzaywgW29ic2VydmVyID0gdGhpcywgd2Vha0RvY3VtZW50ID0gV2Vh
a1B0ciB7IG1fY29udGFpbmVyLT5kb2N1bWVudCgpIH1dIHsKKyAgICAgICAgUmVmUHRyIGRvY3Vt
ZW50ID0gd2Vha0RvY3VtZW50LmdldCgpOworICAgICAgICBpZiAoIWRvY3VtZW50KQorICAgICAg
ICAgICAgcmV0dXJuOworCisgICAgICAgIGlmIChvYnNlcnZlciAhPSBkb2N1bWVudC0+bW9kYWxD
b250YWluZXJPYnNlcnZlcklmRXhpc3RzKCkgfHwgIW9ic2VydmVyLT5tX2NvbnRhaW5lci5nZXQo
KSkgeworICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIH0KKworICAgICAgICBhdXRvIFtjbGFzc2lmaWFibGVDb250cm9scywgY29u
dHJvbFRleHRzVG9DbGFzc2lmeV0gPSBvYnNlcnZlci0+Y29sbGVjdENsaWNrYWJsZUVsZW1lbnRz
KCk7CisgICAgICAgIGlmIChjbGFzc2lmaWFibGVDb250cm9scy5pc0VtcHR5KCkpCisgICAgICAg
ICAgICByZXR1cm47CisKKyAgICAgICAgLy8gRklYTUUoMjM0MzIzKTogQ2xhc3NpZnkgc3RyaW5n
cyBieSBwcm9wYWdhdGluZyB0aGVtIHRocm91Z2ggdGhlIGNsaWVudCBsYXllci4KKyAgICB9KTsK
K30KKworc3RkOjpwYWlyPFZlY3RvcjxXZWFrUHRyPEhUTUxFbGVtZW50Pj4sIFZlY3RvcjxTdHJp
bmc+PiBNb2RhbENvbnRhaW5lck9ic2VydmVyOjpjb2xsZWN0Q2xpY2thYmxlRWxlbWVudHMoKQor
eworICAgIFJlZiBjb250YWluZXIgPSAqbV9jb250YWluZXI7CisgICAgbV9jb2xsZWN0aW5nQ2xp
Y2thYmxlRWxlbWVudHMgPSB0cnVlOworICAgIGF1dG8gZXhpdENvbGxlY3RDbGlja2FibGVFbGVt
ZW50c1Njb3BlID0gbWFrZVNjb3BlRXhpdChbJl0geworICAgICAgICBtX2NvbGxlY3RpbmdDbGlj
a2FibGVFbGVtZW50cyA9IGZhbHNlOworICAgICAgICBjb250YWluZXItPmludmFsaWRhdGVTdHls
ZSgpOworICAgIH0pOworCisgICAgY29udGFpbmVyLT5pbnZhbGlkYXRlU3R5bGUoKTsKKyAgICBj
b250YWluZXItPmRvY3VtZW50KCkudXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRz
KCk7CisKKyAgICBWZWN0b3I8UmVmPEhUTUxFbGVtZW50Pj4gY2xpY2thYmxlQ29udHJvbHM7Cisg
ICAgZm9yIChhdXRvJiBjaGlsZCA6IGRlc2NlbmRhbnRzT2ZUeXBlPEhUTUxFbGVtZW50Pihjb250
YWluZXIpKSB7CisgICAgICAgIGlmIChpc0NsaWNrYWJsZUNvbnRyb2woY2hpbGQpKQorICAgICAg
ICAgICAgY2xpY2thYmxlQ29udHJvbHMuYXBwZW5kKGNoaWxkKTsKKyAgICB9CisKKyAgICByZW1v
dmVFbGVtZW50c1dpdGhFbXB0eUJvdW5kcyhjbGlja2FibGVDb250cm9scyk7CisgICAgcmVtb3Zl
UGFyZW50T3JDaGlsZEVsZW1lbnRzKGNsaWNrYWJsZUNvbnRyb2xzKTsKKworICAgIFZlY3RvcjxX
ZWFrUHRyPEhUTUxFbGVtZW50Pj4gY2xhc3NpZmlhYmxlQ29udHJvbHM7CisgICAgVmVjdG9yPFN0
cmluZz4gY29udHJvbFRleHRzVG9DbGFzc2lmeTsKKyAgICBjbGFzc2lmaWFibGVDb250cm9scy5y
ZXNlcnZlSW5pdGlhbENhcGFjaXR5KGNsaWNrYWJsZUNvbnRyb2xzLnNpemUoKSk7CisgICAgY29u
dHJvbFRleHRzVG9DbGFzc2lmeS5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGNsaWNrYWJsZUNvbnRy
b2xzLnNpemUoKSk7CisgICAgZm9yIChhdXRvJiBjb250cm9sIDogY2xpY2thYmxlQ29udHJvbHMp
IHsKKyAgICAgICAgYXV0byB0ZXh0ID0gdGV4dEZvckNvbnRyb2woY29udHJvbCkuc3RyaXBXaGl0
ZVNwYWNlKCk7CisgICAgICAgIGlmICghdGV4dC5pc0VtcHR5KCkgJiYgdGV4dC5sZW5ndGgoKSA8
IG1heExlbmd0aEZvckNsaWNrYWJsZUVsZW1lbnRUZXh0KSB7CisgICAgICAgICAgICBjbGFzc2lm
aWFibGVDb250cm9scy51bmNoZWNrZWRBcHBlbmQoeyBjb250cm9sIH0pOworICAgICAgICAgICAg
Y29udHJvbFRleHRzVG9DbGFzc2lmeS51bmNoZWNrZWRBcHBlbmQoV1RGTW92ZSh0ZXh0KSk7Cisg
ICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIHsgV1RGTW92ZShjbGFzc2lmaWFibGVDb250cm9s
cyksIFdURk1vdmUoY29udHJvbFRleHRzVG9DbGFzc2lmeSkgfTsKK30KKwogYm9vbCBNb2RhbENv
bnRhaW5lck9ic2VydmVyOjpzaG91bGRIaWRlKGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQpCiB7Ci0g
ICAgcmV0dXJuICZlbGVtZW50ID09IG1fY29udGFpbmVyOworICAgIHJldHVybiAmZWxlbWVudCA9
PSBtX2NvbnRhaW5lciAmJiAhbV9jb2xsZWN0aW5nQ2xpY2thYmxlRWxlbWVudHM7CiB9CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTW9k
YWxDb250YWluZXJPYnNlcnZlci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Nb2RhbENvbnRhaW5l
ck9ic2VydmVyLmgKaW5kZXggMzJlNzRiYjk5Y2FmYzM2NjYwYzg5MDJmMTNhZTdkYmExOTc0MmMw
Ny4uZGEwNTVmM2YwMjA2YzE5ZjhiZjRlZGMxNjZkN2RiOGRiZDY0MzE1YyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9Nb2RhbENvbnRhaW5lck9ic2VydmVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9Nb2RhbENvbnRhaW5lck9ic2VydmVyLmgKQEAgLTI1LDE1ICsyNSwxOSBA
QAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIlRpbWVyLmgiCiAjaW5jbHVkZSA8d3RmL0Zh
c3RNYWxsb2MuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtI
YXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9X
VEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBEb2N1bWVudDsKIGNs
YXNzIEVsZW1lbnQ7CiBjbGFzcyBGcmFtZVZpZXc7CitjbGFzcyBIVE1MRWxlbWVudDsKIAogY2xh
c3MgTW9kYWxDb250YWluZXJPYnNlcnZlciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CkBAIC00Nyw4ICs1MSwxNSBAQCBwdWJsaWM6CiAgICAgdm9pZCB1cGRhdGVNb2RhbENvbnRhaW5l
cklmTmVlZGVkKGNvbnN0IEZyYW1lVmlldyYpOwogCiBwcml2YXRlOgorICAgIHZvaWQgc2NoZWR1
bGVDbGlja2FibGVFbGVtZW50Q29sbGVjdGlvbigpOworICAgIHZvaWQgY29sbGVjdENsaWNrYWJs
ZUVsZW1lbnRzVGltZXJGaXJlZCgpOworCisgICAgc3RkOjpwYWlyPFZlY3RvcjxXZWFrUHRyPEhU
TUxFbGVtZW50Pj4sIFZlY3RvcjxTdHJpbmc+PiBjb2xsZWN0Q2xpY2thYmxlRWxlbWVudHMoKTsK
KwogICAgIFdlYWtIYXNoU2V0PEVsZW1lbnQ+IG1fZWxlbWVudHNUb0lnbm9yZVdoZW5TZWFyY2hp
bmc7CiAgICAgV2Vha1B0cjxFbGVtZW50PiBtX2NvbnRhaW5lcjsKKyAgICBUaW1lciBtX2NvbGxl
Y3RDbGlja2FibGVFbGVtZW50c1RpbWVyOworICAgIGJvb2wgbV9jb2xsZWN0aW5nQ2xpY2thYmxl
RWxlbWVudHMgeyBmYWxzZSB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>447551</attachid>
            <date>2021-12-19 11:30:17 -0800</date>
            <delta_ts>2021-12-19 12:25:40 -0800</delta_ts>
            <desc>For EWS</desc>
            <filename>bug-234299-20211219113016.patch</filename>
            <type>text/plain</type>
            <size>13072</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg3MjI3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTU1N2JmODY3ZmJiODc3
NmMxNjc1NjRmZmE3YmYwZGUzYjM0MWFlNy4uZTk3Yzc0NDVmZTNjZmQ5MTljYjEwZTFiODQwMDg2
NjdkOThmZmQ1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU1IEBACisyMDIxLTEyLTE3ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBhIGJhc2lj
IGhldXJpc3RpYyBmb3IgY29sbGVjdGluZyBhbmQgZXh0cmFjdGluZyB0ZXh0IGZyb20gY29udHJv
bHMgaW4gTW9kYWxDb250YWluZXJPYnNlcnZlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM0Mjk5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGVhbiBK
YWNrc29uLgorCisgICAgICAgIEludHJvZHVjZSBhIGhldXJpc3RpYyBmb3IgZXh0cmFjdGluZyBj
bGlja2FibGUgY29udHJvbHMgZnJvbSBtb2RhbCBjb250YWluZXJzLCB0aGF0IGFyZSB1bmxpa2Vs
eSB0byBiZSBsaW5rcworICAgICAgICAoaS5lLiB0cmlnZ2VyIG5hdmlnYXRpb24gd2hlbiBjbGlj
a2VkKS4gU2VlIGJlbG93IGZvciBtb3JlIGRldGFpbHMuCisKKyAgICAgICAgKiBwYWdlL01vZGFs
Q29udGFpbmVyT2JzZXJ2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9kYWxDb250YWluZXJP
YnNlcnZlcjo6TW9kYWxDb250YWluZXJPYnNlcnZlcik6CisgICAgICAgIChXZWJDb3JlOjpNb2Rh
bENvbnRhaW5lck9ic2VydmVyOjp1cGRhdGVNb2RhbENvbnRhaW5lcklmTmVlZGVkKToKKworICAg
ICAgICBPbmNlIGEgbW9kYWwgY29udGFpbmVyIGhhcyBiZWVuIGRldGVjdGVkLCBzY2hlZHVsZSBh
IHNob3J0IHRpbWVyIHRvIHRyYXZlcnNlIHRoZSBtb2RhbCBjb250YWluZXIncyBzdWJ0cmVlIGlu
CisgICAgICAgIHNlYXJjaCBmb3IgY2xpY2thYmxlIGNvbnRyb2xzLiBJbiBhIGZ1dHVyZSBwYXRj
aCwgd2UgbWF5IG5lZWQgdG8gbGVuZ3RoZW4gdGhpcyBkZWxheSBvciBldmVuIGludHJvZHVjZSBh
CisgICAgICAgIG1lY2hhbmlzbSBmb3IgcmVzdGFydGluZyB0aGUgdGltZXIgcGVyaW9kaWNhbGx5
IGlmIG5vIGNsaWNrYWJsZSBjb250cm9scyBhcmUgZGlzY292ZXJlZCBpbiB0aGUgbW9kYWwgY29u
dGFpbmVyLgorCisgICAgICAgIChXZWJDb3JlOjphY2Nlc3NpYmlsaXR5Um9sZSk6CisgICAgICAg
IChXZWJDb3JlOjppc0NsaWNrYWJsZUNvbnRyb2wpOgorICAgICAgICAoV2ViQ29yZTo6cmVtb3Zl
UGFyZW50T3JDaGlsZEVsZW1lbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OnJlbW92ZUVsZW1lbnRz
V2l0aEVtcHR5Qm91bmRzKToKKyAgICAgICAgKFdlYkNvcmU6OnRleHRGb3JDb250cm9sKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1vZGFsQ29udGFpbmVyT2JzZXJ2ZXI6OnNjaGVkdWxlQ2xpY2thYmxl
RWxlbWVudENvbGxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6TW9kYWxDb250YWluZXJPYnNl
cnZlcjo6Y29sbGVjdENsaWNrYWJsZUVsZW1lbnRzVGltZXJGaXJlZCk6CisgICAgICAgIChXZWJD
b3JlOjpNb2RhbENvbnRhaW5lck9ic2VydmVyOjpjb2xsZWN0Q2xpY2thYmxlRWxlbWVudHMpOgor
CisgICAgICAgIFRoaXMgY29udGFpbnMgdGhlIG1haW4gbG9naWMgZm9yIGNvbGxlY3RpbmcgY2xp
Y2thYmxlIGVsZW1lbnRzIGluc2lkZSBtb2RhbCBjb250YWluZXJzLiBUaGlzIGhldXJpc3RpYyBj
b25zaXN0cworICAgICAgICBtb3N0bHkgb2YgdGhyZWUgcGhhc2VzOgorCisgICAgICAgIDEuIFdl
IGluaXRpYWxseSBzY2FuIHRoZSBtb2RhbCBjb250YWluZXIgc3VidHJlZSBpbiBzZWFyY2ggb2Yg
YW55IGVsZW1lbnRzIHRoYXQgc2VlbSBsaWtlIHRoZXkgY291bGQgYmUKKyAgICAgICAgY2xpY2th
YmxlIGJ1dHRvbnMgb3IgbGlua3MgdGhhdCBkb24ndCB0cmlnZ2VyIG5hdmlnYXRpb24sIGFuZCBi
dWlsZCBhIGxpc3Qgb2YgYGNsYXNzaWZpYWJsZUNvbnRyb2xzYC4KKworICAgICAgICAyLiBXZSB0
aGVuIGZpbHRlciB0aGUgbGlzdCBvZiBgY2xhc3NpZmlhYmxlQ29udHJvbHNgIGJ5IHJlbW92aW5n
IGFueSBlbGVtZW50cyBpbiB0aGUgbGlzdCB0aGF0IGVpdGhlciBjb250YWluIG9yCisgICAgICAg
IGFyZSBjb250YWluZWQgYnkgb3RoZXIgZWxlbWVudHMgKHVzaW5nIGEgaGV1cmlzdGljIHRvIGRl
Y2lkZSB3aGV0aGVyIHRvIHJlbW92ZSBlYWNoIHBhcmVudCBvciBjaGlsZCk7IGluIHRoaXMKKyAg
ICAgICAgZmlsdGVyaW5nIHN0ZXAsIHdlIGFkZGl0aW9uYWxseSByZW1vdmUgYWxsIGVsZW1lbnRz
IHRoYXQgYXJlIGVmZmVjdGl2ZWx5IHVuY2xpY2thYmxlIGR1ZSB0byBoYXZpbmcgYW4gZW1wdHkK
KyAgICAgICAgY2xpZW50IGJvdW5kaW5nIHJlY3QuCisKKyAgICAgICAgMy4gSW4gdGhlIGZpbmFs
IHBoYXNlLCB3ZSBpdGVyYXRlIG92ZXIgYWxsIG9mIHRoZSBjb250cm9scyBpbiB0aGUgZmlsdGVy
ZWQgbGlzdCwgYW5kIGF0dGVtcHQgdG8gZXh0cmFjdCB0ZXh0IGZvcgorICAgICAgICBlYWNoIGNv
bnRyb2wgKGxvb2tpbmcgYXQgYXR0cmlidXRlcyBzdWNoIGFzIGB0aXRsZWAgYW5kIGBhcmlhLWxh
YmVsYCwgYGFsdGAgdGV4dCBmb3IgaW1hZ2VzLCBhbmQgZmluYWxseSBmYWxsaW5nCisgICAgICAg
IGJhY2sgdG8gYG91dGVyVGV4dCgpYCkuIElmIHRoaXMgcmF3IHRleHQgZGVzY3JpcHRpb24gaXMg
bm90IGVtcHR5IGFuZCBhbHNvIG5vdCB0b28gbG9uZyAoZXhjZWVkaW5nIGFuCisgICAgICAgIGFy
Yml0cmFyaWx5IGNob3NlbiB0aHJlc2hvbGQgb2YgMTAwIGNoYXJhY3RlcnMpLCB3ZSBhZGQgaXQg
dG8gdGhlIGZpbmFsIGxpc3Qgb2YgY29udHJvbHMgYW5kIGNvbnRyb2wgdGV4dAorICAgICAgICBk
ZXNjcmlwdGlvbnMgdG8gc2VuZCB0byB0aGUgY2xpZW50IGxheWVyIGZvciBjbGFzc2lmaWNhdGlv
bi4KKworICAgICAgICAoV2ViQ29yZTo6TW9kYWxDb250YWluZXJPYnNlcnZlcjo6c2hvdWxkSGlk
ZSk6CisKKyAgICAgICAgQXVnbWVudCB0aGlzIHRvIGByZXR1cm4gZmFsc2VgIGluIHRoZSBjYXNl
IHdoZXJlIHdlJ3JlIGluc2lkZSB0aGUgc2NvcGUgb2YgYG1fY29sbGVjdGluZ0NsaWNrYWJsZUVs
ZW1lbnRzYC4gVGhpcworICAgICAgICBhbGxvd3MgdXMgdG8gcnVuIGhldXJpc3RpY3Mgb3ZlciB0
aGUgbW9kYWwgY29udGFpbmVyIHdpdGhvdXQgYW4gYWRqdXN0ZWQgYGRpc3BsYXk6IG5vbmU7YCBz
dHlsZSBvbiB0aGUgY29udGFpbmVyCisgICAgICAgIGVsZW1lbnQuCisKKyAgICAgICAgKiBwYWdl
L01vZGFsQ29udGFpbmVyT2JzZXJ2ZXIuaDoKKwogMjAyMS0xMi0xNyAgU2ltb24gRnJhc2VyICA8
c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW5hbWUgTW9ja1Njcm9sbEFuaW1h
dG9yRW5hYmxlZCB0byBNb2NrU2Nyb2xsYmFyc0NvbnRyb2xsZXJFbmFibGVkCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL01vZGFsQ29udGFpbmVyT2JzZXJ2ZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9Nb2RhbENvbnRhaW5lck9ic2VydmVyLmNwcAppbmRleCBmOWMxYWY2MzE0
MzA3ZGM0MjQyNjQzODZhZDNkZWQ1ODZjY2RkMDVhLi4yNjQ3NWU0NDQxMTBkNTQ5YzhiNjQ3MjRl
NDhhNzE5MTc4ZWRiOWRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL01vZGFsQ29u
dGFpbmVyT2JzZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTW9kYWxDb250YWlu
ZXJPYnNlcnZlci5jcHAKQEAgLTI2LDI0ICsyNiwzNCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgog
I2luY2x1ZGUgIk1vZGFsQ29udGFpbmVyT2JzZXJ2ZXIuaCIKIAorI2luY2x1ZGUgIkFjY2Vzc2li
aWxpdHlPYmplY3QuaCIKICNpbmNsdWRlICJDaHJvbWUuaCIKICNpbmNsdWRlICJDaHJvbWVDbGll
bnQuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkRvY3VtZW50TG9hZGVyLmgi
CisjaW5jbHVkZSAiRWxlbWVudEl0ZXJhdG9yLmgiCisjaW5jbHVkZSAiRXZlbnRMb29wLmgiCisj
aW5jbHVkZSAiRXZlbnROYW1lcy5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiRnJh
bWVWaWV3LmgiCisjaW5jbHVkZSAiSFRNTEFuY2hvckVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1M
Qm9keUVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MRG9jdW1lbnQuaCIKICNpbmNsdWRlICJIVE1M
RWxlbWVudC5oIgorI2luY2x1ZGUgIkhUTUxJbWFnZUVsZW1lbnQuaCIKKyNpbmNsdWRlICJIVE1M
SW5wdXRFbGVtZW50LmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlJlbmRlckRlc2Nl
bmRhbnRJdGVyYXRvci5oIgogI2luY2x1ZGUgIlJlbmRlclRleHQuaCIKICNpbmNsdWRlICJSZW5k
ZXJWaWV3LmgiCiAjaW5jbHVkZSAiVGV4dC5oIgorI2luY2x1ZGUgPHd0Zi9TY29wZS5oPgogI2lu
Y2x1ZGUgPHd0Zi9VUkwuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitzdGF0aWMgY29uc3Rl
eHByIHNpemVfdCBtYXhMZW5ndGhGb3JDbGlja2FibGVFbGVtZW50VGV4dCA9IDEwMDsKKwogYm9v
bCBNb2RhbENvbnRhaW5lck9ic2VydmVyOjppc05lZWRlZEZvcihjb25zdCBEb2N1bWVudCYgZG9j
dW1lbnQpCiB7CiAgICAgUmVmUHRyIGRvY3VtZW50TG9hZGVyID0gZG9jdW1lbnQubG9hZGVyKCk7
CkBAIC03Miw3ICs4MiwxMSBAQCBib29sIE1vZGFsQ29udGFpbmVyT2JzZXJ2ZXI6OmlzTmVlZGVk
Rm9yKGNvbnN0IERvY3VtZW50JiBkb2N1bWVudCkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotTW9k
YWxDb250YWluZXJPYnNlcnZlcjo6TW9kYWxDb250YWluZXJPYnNlcnZlcigpID0gZGVmYXVsdDsK
K01vZGFsQ29udGFpbmVyT2JzZXJ2ZXI6Ok1vZGFsQ29udGFpbmVyT2JzZXJ2ZXIoKQorICAgIDog
bV9jb2xsZWN0Q2xpY2thYmxlRWxlbWVudHNUaW1lcigqdGhpcywgJk1vZGFsQ29udGFpbmVyT2Jz
ZXJ2ZXI6OmNvbGxlY3RDbGlja2FibGVFbGVtZW50c1RpbWVyRmlyZWQpCit7Cit9CisKIE1vZGFs
Q29udGFpbmVyT2JzZXJ2ZXI6On5Nb2RhbENvbnRhaW5lck9ic2VydmVyKCkgPSBkZWZhdWx0Owog
CiBzdGF0aWMgYm9vbCBtYXRjaGVzU2VhcmNoVGVybShjb25zdCBUZXh0JiB0ZXh0Tm9kZSwgY29u
c3QgQXRvbVN0cmluZyYgc2VhcmNoVGVybSkKQEAgLTEyMiwxNSArMTM2LDE4MiBAQCB2b2lkIE1v
ZGFsQ29udGFpbmVyT2JzZXJ2ZXI6OnVwZGF0ZU1vZGFsQ29udGFpbmVySWZOZWVkZWQoY29uc3Qg
RnJhbWVWaWV3JiB2aWV3KQogICAgICAgICAgICAgaWYgKFJlZlB0ciB0ZXh0Tm9kZSA9IHRleHRS
ZW5kZXJlci50ZXh0Tm9kZSgpOyB0ZXh0Tm9kZSAmJiBtYXRjaGVzU2VhcmNoVGVybSgqdGV4dE5v
ZGUsIHNlYXJjaFRlcm0pKSB7CiAgICAgICAgICAgICAgICAgbV9jb250YWluZXIgPSBlbGVtZW50
LmdldCgpOwogICAgICAgICAgICAgICAgIGVsZW1lbnQtPmludmFsaWRhdGVTdHlsZSgpOworICAg
ICAgICAgICAgICAgIHNjaGVkdWxlQ2xpY2thYmxlRWxlbWVudENvbGxlY3Rpb24oKTsKICAgICAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiB9CiAK
K3N0YXRpYyBBY2Nlc3NpYmlsaXR5Um9sZSBhY2Nlc3NpYmlsaXR5Um9sZShjb25zdCBIVE1MRWxl
bWVudCYgZWxlbWVudCkKK3sKKyAgICByZXR1cm4gQWNjZXNzaWJpbGl0eU9iamVjdDo6YXJpYVJv
bGVUb1dlYkNvcmVSb2xlKGVsZW1lbnQuYXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihI
VE1MTmFtZXM6OnJvbGVBdHRyKSk7Cit9CisKK3N0YXRpYyBib29sIGlzQ2xpY2thYmxlQ29udHJv
bChjb25zdCBIVE1MRWxlbWVudCYgZWxlbWVudCkKK3sKKyAgICBpZiAoZWxlbWVudC5pc0FjdHVh
bGx5RGlzYWJsZWQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKCFlbGVtZW50
LnJlbmRlcmVyKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmIChlbGVtZW50Lmhh
c1RhZ05hbWUoSFRNTE5hbWVzOjpidXR0b25UYWcpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKwor
ICAgIGlmIChpczxIVE1MSW5wdXRFbGVtZW50PihlbGVtZW50KSAmJiBkb3duY2FzdDxIVE1MSW5w
dXRFbGVtZW50PihlbGVtZW50KS5pc1RleHRCdXR0b24oKSkKKyAgICAgICAgcmV0dXJuIHRydWU7
CisKKyAgICBzd2l0Y2ggKGFjY2Vzc2liaWxpdHlSb2xlKGVsZW1lbnQpKSB7CisgICAgY2FzZSBB
Y2Nlc3NpYmlsaXR5Um9sZTo6QnV0dG9uOgorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBjYXNl
IEFjY2Vzc2liaWxpdHlSb2xlOjpDaGVja0JveDoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xl
OjpTd2l0Y2g6CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBkZWZhdWx0OgorICAgICAgICBi
cmVhazsKKyAgICB9CisKKyAgICBpZiAoaXM8SFRNTEFuY2hvckVsZW1lbnQ+KGVsZW1lbnQpKSB7
CisgICAgICAgIC8vIEZJWE1FOiBXZSBtaWdodCBuZWVkIGEgbW9yZSBjb21wcmVoZW5zaXZlIHBv
bGljeSBoZXJlIHRoYXQgYXR0ZW1wdHMgdG8gY2xpY2sgdGhlIGxpbmsgdG8gZGV0ZWN0IG5hdmln
YXRpb24sCisgICAgICAgIC8vIGJ1dCB0aGVuIGltbWVkaWF0ZWx5IGNhbmNlbHMgdGhlIG5hdmln
YXRpb24uCisgICAgICAgIGF1dG8gaHJlZiA9IGRvd25jYXN0PEhUTUxBbmNob3JFbGVtZW50Pihl
bGVtZW50KS5ocmVmKCk7CisgICAgICAgIHJldHVybiBlcXVhbElnbm9yaW5nRnJhZ21lbnRJZGVu
dGlmaWVyKGVsZW1lbnQuZG9jdW1lbnQoKS51cmwoKSwgaHJlZikgfHwgIWhyZWYucHJvdG9jb2xJ
c0luSFRUUEZhbWlseSgpOworICAgIH0KKworICAgIHJldHVybiBlbGVtZW50Lmhhc0V2ZW50TGlz
dGVuZXJzKGV2ZW50TmFtZXMoKS5jbGlja0V2ZW50KSB8fCBlbGVtZW50Lmhhc0V2ZW50TGlzdGVu
ZXJzKGV2ZW50TmFtZXMoKS5tb3VzZWRvd25FdmVudCkgfHwgZWxlbWVudC5oYXNFdmVudExpc3Rl
bmVycyhldmVudE5hbWVzKCkubW91c2V1cEV2ZW50KQorICAgICAgICB8fCBlbGVtZW50Lmhhc0V2
ZW50TGlzdGVuZXJzKGV2ZW50TmFtZXMoKS50b3VjaHN0YXJ0RXZlbnQpIHx8IGVsZW1lbnQuaGFz
RXZlbnRMaXN0ZW5lcnMoZXZlbnROYW1lcygpLnRvdWNoZW5kRXZlbnQpCisgICAgICAgIHx8IGVs
ZW1lbnQuaGFzRXZlbnRMaXN0ZW5lcnMoZXZlbnROYW1lcygpLnBvaW50ZXJkb3duRXZlbnQpIHx8
IGVsZW1lbnQuaGFzRXZlbnRMaXN0ZW5lcnMoZXZlbnROYW1lcygpLnBvaW50ZXJ1cEV2ZW50KTsK
K30KKworc3RhdGljIHZvaWQgcmVtb3ZlUGFyZW50T3JDaGlsZEVsZW1lbnRzKFZlY3RvcjxSZWY8
SFRNTEVsZW1lbnQ+PiYgZWxlbWVudHMpCit7CisgICAgSGFzaFNldDxSZWY8SFRNTEVsZW1lbnQ+
PiBlbGVtZW50c1RvUmVtb3ZlOworICAgIGZvciAoYXV0byYgb3V0ZXIgOiBlbGVtZW50cykgewor
ICAgICAgICBpZiAoZWxlbWVudHNUb1JlbW92ZS5jb250YWlucyhvdXRlcikpCisgICAgICAgICAg
ICBjb250aW51ZTsKKworICAgICAgICBmb3IgKGF1dG8mIGlubmVyIDogZWxlbWVudHMpIHsKKyAg
ICAgICAgICAgIGlmIChlbGVtZW50c1RvUmVtb3ZlLmNvbnRhaW5zKGlubmVyKSB8fCBvdXRlci5w
dHIoKSA9PSBpbm5lci5wdHIoKSB8fCAhb3V0ZXItPmNvbnRhaW5zKGlubmVyKSkKKyAgICAgICAg
ICAgICAgICBjb250aW51ZTsKKworICAgICAgICAgICAgaWYgKGFjY2Vzc2liaWxpdHlSb2xlKG91
dGVyKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6QnV0dG9uKSB7CisgICAgICAgICAgICAgICAgZWxl
bWVudHNUb1JlbW92ZS5hZGQoaW5uZXIpOworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoYWNjZXNzaWJpbGl0eVJvbGUoaW5uZXIpID09
IEFjY2Vzc2liaWxpdHlSb2xlOjpCdXR0b24pIHsKKyAgICAgICAgICAgICAgICBlbGVtZW50c1Rv
UmVtb3ZlLmFkZChvdXRlcik7CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIGlmIChvdXRlci0+aGFzVGFnTmFtZShIVE1MTmFtZXM6OmRpdlRh
ZykgfHwgb3V0ZXItPmhhc1RhZ05hbWUoSFRNTE5hbWVzOjpzcGFuVGFnKSB8fCBvdXRlci0+aGFz
VGFnTmFtZShIVE1MTmFtZXM6OnBUYWcpIHx8IG91dGVyLT5oYXNUYWdOYW1lKEhUTUxOYW1lczo6
c2VjdGlvblRhZykpCisgICAgICAgICAgICAgICAgZWxlbWVudHNUb1JlbW92ZS5hZGQob3V0ZXIp
OworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGVsZW1lbnRzVG9SZW1vdmUuYWRk
KGlubmVyKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGVsZW1lbnRzLnJlbW92ZUFsbE1hdGNo
aW5nKFsmXSAoYXV0byYgY29udHJvbCkgeworICAgICAgICByZXR1cm4gZWxlbWVudHNUb1JlbW92
ZS5jb250YWlucyhjb250cm9sKTsKKyAgICB9KTsKK30KKworc3RhdGljIHZvaWQgcmVtb3ZlRWxl
bWVudHNXaXRoRW1wdHlCb3VuZHMoVmVjdG9yPFJlZjxIVE1MRWxlbWVudD4+JiBlbGVtZW50cykK
K3sKKyAgICBlbGVtZW50cy5yZW1vdmVBbGxNYXRjaGluZyhbJl0gKGF1dG8mIGVsZW1lbnQpIHsK
KyAgICAgICAgcmV0dXJuIGVsZW1lbnQtPmJvdW5kaW5nQ2xpZW50UmVjdCgpLmlzRW1wdHkoKTsK
KyAgICB9KTsKK30KKworc3RhdGljIFN0cmluZyB0ZXh0Rm9yQ29udHJvbChIVE1MRWxlbWVudCYg
Y29udHJvbCkKK3sKKyAgICBhdXRvIGFyaWFMYWJlbCA9IGNvbnRyb2wuYXR0cmlidXRlV2l0aG91
dFN5bmNocm9uaXphdGlvbihIVE1MTmFtZXM6OmFyaWFfbGFiZWxBdHRyKTsKKyAgICBpZiAoIWFy
aWFMYWJlbC5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBhcmlhTGFiZWw7CisKKyAgICBpZiAo
aXM8SFRNTElucHV0RWxlbWVudD4oY29udHJvbCkpCisgICAgICAgIHJldHVybiBkb3duY2FzdDxI
VE1MSW5wdXRFbGVtZW50Pihjb250cm9sKS52YWx1ZSgpOworCisgICAgYXV0byB0aXRsZSA9IGNv
bnRyb2wudGl0bGUoKTsKKyAgICBpZiAoIXRpdGxlLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJu
IHRpdGxlOworCisgICAgaWYgKGlzPEhUTUxJbWFnZUVsZW1lbnQ+KGNvbnRyb2wpKSB7CisgICAg
ICAgIGF1dG8gYWx0VGV4dCA9IGRvd25jYXN0PEhUTUxJbWFnZUVsZW1lbnQ+KGNvbnRyb2wpLmFs
dFRleHQoKTsKKyAgICAgICAgaWYgKCFhbHRUZXh0LmlzRW1wdHkoKSkKKyAgICAgICAgICAgIHJl
dHVybiBhbHRUZXh0OworICAgIH0KKworICAgIHJldHVybiBjb250cm9sLm91dGVyVGV4dCgpOwor
fQorCit2b2lkIE1vZGFsQ29udGFpbmVyT2JzZXJ2ZXI6OnNjaGVkdWxlQ2xpY2thYmxlRWxlbWVu
dENvbGxlY3Rpb24oKQoreworICAgIG1fY29sbGVjdENsaWNrYWJsZUVsZW1lbnRzVGltZXIuc3Rh
cnRPbmVTaG90KDIwMF9tcyk7Cit9CisKK3ZvaWQgTW9kYWxDb250YWluZXJPYnNlcnZlcjo6Y29s
bGVjdENsaWNrYWJsZUVsZW1lbnRzVGltZXJGaXJlZCgpCit7CisgICAgaWYgKCFtX2NvbnRhaW5l
cikKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9jb250YWluZXItPmRvY3VtZW50KCkuZXZlbnRM
b29wKCkucXVldWVUYXNrKFRhc2tTb3VyY2U6OkludGVybmFsQXN5bmNUYXNrLCBbb2JzZXJ2ZXIg
PSB0aGlzLCB3ZWFrRG9jdW1lbnQgPSBXZWFrUHRyIHsgbV9jb250YWluZXItPmRvY3VtZW50KCkg
fV0geworICAgICAgICBSZWZQdHIgZG9jdW1lbnQgPSB3ZWFrRG9jdW1lbnQuZ2V0KCk7CisgICAg
ICAgIGlmICghZG9jdW1lbnQpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgaWYgKG9i
c2VydmVyICE9IGRvY3VtZW50LT5tb2RhbENvbnRhaW5lck9ic2VydmVySWZFeGlzdHMoKSB8fCAh
b2JzZXJ2ZXItPm1fY29udGFpbmVyLmdldCgpKSB7CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGF1dG8g
W2NsYXNzaWZpYWJsZUNvbnRyb2xzLCBjb250cm9sVGV4dHNUb0NsYXNzaWZ5XSA9IG9ic2VydmVy
LT5jb2xsZWN0Q2xpY2thYmxlRWxlbWVudHMoKTsKKyAgICAgICAgaWYgKGNsYXNzaWZpYWJsZUNv
bnRyb2xzLmlzRW1wdHkoKSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAvLyBGSVhN
RSgyMzQzMjMpOiBDbGFzc2lmeSBzdHJpbmdzIGJ5IHByb3BhZ2F0aW5nIHRoZW0gdGhyb3VnaCB0
aGUgY2xpZW50IGxheWVyLgorICAgIH0pOworfQorCitzdGQ6OnBhaXI8VmVjdG9yPFdlYWtQdHI8
SFRNTEVsZW1lbnQ+PiwgVmVjdG9yPFN0cmluZz4+IE1vZGFsQ29udGFpbmVyT2JzZXJ2ZXI6OmNv
bGxlY3RDbGlja2FibGVFbGVtZW50cygpCit7CisgICAgUmVmIGNvbnRhaW5lciA9ICptX2NvbnRh
aW5lcjsKKyAgICBtX2NvbGxlY3RpbmdDbGlja2FibGVFbGVtZW50cyA9IHRydWU7CisgICAgYXV0
byBleGl0Q29sbGVjdENsaWNrYWJsZUVsZW1lbnRzU2NvcGUgPSBtYWtlU2NvcGVFeGl0KFsmXSB7
CisgICAgICAgIG1fY29sbGVjdGluZ0NsaWNrYWJsZUVsZW1lbnRzID0gZmFsc2U7CisgICAgICAg
IGNvbnRhaW5lci0+aW52YWxpZGF0ZVN0eWxlKCk7CisgICAgfSk7CisKKyAgICBjb250YWluZXIt
PmludmFsaWRhdGVTdHlsZSgpOworICAgIGNvbnRhaW5lci0+ZG9jdW1lbnQoKS51cGRhdGVMYXlv
dXRJZ25vcmVQZW5kaW5nU3R5bGVzaGVldHMoKTsKKworICAgIFZlY3RvcjxSZWY8SFRNTEVsZW1l
bnQ+PiBjbGlja2FibGVDb250cm9sczsKKyAgICBmb3IgKGF1dG8mIGNoaWxkIDogZGVzY2VuZGFu
dHNPZlR5cGU8SFRNTEVsZW1lbnQ+KGNvbnRhaW5lcikpIHsKKyAgICAgICAgaWYgKGlzQ2xpY2th
YmxlQ29udHJvbChjaGlsZCkpCisgICAgICAgICAgICBjbGlja2FibGVDb250cm9scy5hcHBlbmQo
Y2hpbGQpOworICAgIH0KKworICAgIHJlbW92ZUVsZW1lbnRzV2l0aEVtcHR5Qm91bmRzKGNsaWNr
YWJsZUNvbnRyb2xzKTsKKyAgICByZW1vdmVQYXJlbnRPckNoaWxkRWxlbWVudHMoY2xpY2thYmxl
Q29udHJvbHMpOworCisgICAgVmVjdG9yPFdlYWtQdHI8SFRNTEVsZW1lbnQ+PiBjbGFzc2lmaWFi
bGVDb250cm9sczsKKyAgICBWZWN0b3I8U3RyaW5nPiBjb250cm9sVGV4dHNUb0NsYXNzaWZ5Owor
ICAgIGNsYXNzaWZpYWJsZUNvbnRyb2xzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoY2xpY2thYmxl
Q29udHJvbHMuc2l6ZSgpKTsKKyAgICBjb250cm9sVGV4dHNUb0NsYXNzaWZ5LnJlc2VydmVJbml0
aWFsQ2FwYWNpdHkoY2xpY2thYmxlQ29udHJvbHMuc2l6ZSgpKTsKKyAgICBmb3IgKGF1dG8mIGNv
bnRyb2wgOiBjbGlja2FibGVDb250cm9scykgeworICAgICAgICBhdXRvIHRleHQgPSB0ZXh0Rm9y
Q29udHJvbChjb250cm9sKS5zdHJpcFdoaXRlU3BhY2UoKTsKKyAgICAgICAgaWYgKCF0ZXh0Lmlz
RW1wdHkoKSAmJiB0ZXh0Lmxlbmd0aCgpIDwgbWF4TGVuZ3RoRm9yQ2xpY2thYmxlRWxlbWVudFRl
eHQpIHsKKyAgICAgICAgICAgIGNsYXNzaWZpYWJsZUNvbnRyb2xzLnVuY2hlY2tlZEFwcGVuZCh7
IGNvbnRyb2wgfSk7CisgICAgICAgICAgICBjb250cm9sVGV4dHNUb0NsYXNzaWZ5LnVuY2hlY2tl
ZEFwcGVuZChXVEZNb3ZlKHRleHQpKTsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4geyBX
VEZNb3ZlKGNsYXNzaWZpYWJsZUNvbnRyb2xzKSwgV1RGTW92ZShjb250cm9sVGV4dHNUb0NsYXNz
aWZ5KSB9OworfQorCiBib29sIE1vZGFsQ29udGFpbmVyT2JzZXJ2ZXI6OnNob3VsZEhpZGUoY29u
c3QgRWxlbWVudCYgZWxlbWVudCkKIHsKLSAgICByZXR1cm4gJmVsZW1lbnQgPT0gbV9jb250YWlu
ZXI7CisgICAgcmV0dXJuICZlbGVtZW50ID09IG1fY29udGFpbmVyICYmICFtX2NvbGxlY3RpbmdD
bGlja2FibGVFbGVtZW50czsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Nb2RhbENvbnRhaW5lck9ic2VydmVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL01vZGFsQ29udGFpbmVyT2JzZXJ2ZXIuaAppbmRleCAzMmU3NGJiOTljYWZj
MzY2NjBjODkwMmYxM2FlN2RiYTE5NzQyYzA3Li5kYTA1NWYzZjAyMDZjMTlmOGJmNGVkYzE2NmQ3
ZGI4ZGJkNjQzMTVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL01vZGFsQ29udGFp
bmVyT2JzZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL01vZGFsQ29udGFpbmVyT2Jz
ZXJ2ZXIuaApAQCAtMjUsMTUgKzI1LDE5IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAi
VGltZXIuaCIKICNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0
b3IuaD4KICNpbmNsdWRlIDx3dGYvV2Vha0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0
ci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIGNsYXNzIERvY3VtZW50OwogY2xhc3MgRWxlbWVudDsKIGNsYXNzIEZyYW1lVmlldzsK
K2NsYXNzIEhUTUxFbGVtZW50OwogCiBjbGFzcyBNb2RhbENvbnRhaW5lck9ic2VydmVyIHsKICAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKQEAgLTQ3LDggKzUxLDE1IEBAIHB1YmxpYzoKICAg
ICB2b2lkIHVwZGF0ZU1vZGFsQ29udGFpbmVySWZOZWVkZWQoY29uc3QgRnJhbWVWaWV3Jik7CiAK
IHByaXZhdGU6CisgICAgdm9pZCBzY2hlZHVsZUNsaWNrYWJsZUVsZW1lbnRDb2xsZWN0aW9uKCk7
CisgICAgdm9pZCBjb2xsZWN0Q2xpY2thYmxlRWxlbWVudHNUaW1lckZpcmVkKCk7CisKKyAgICBz
dGQ6OnBhaXI8VmVjdG9yPFdlYWtQdHI8SFRNTEVsZW1lbnQ+PiwgVmVjdG9yPFN0cmluZz4+IGNv
bGxlY3RDbGlja2FibGVFbGVtZW50cygpOworCiAgICAgV2Vha0hhc2hTZXQ8RWxlbWVudD4gbV9l
bGVtZW50c1RvSWdub3JlV2hlblNlYXJjaGluZzsKICAgICBXZWFrUHRyPEVsZW1lbnQ+IG1fY29u
dGFpbmVyOworICAgIFRpbWVyIG1fY29sbGVjdENsaWNrYWJsZUVsZW1lbnRzVGltZXI7CisgICAg
Ym9vbCBtX2NvbGxlY3RpbmdDbGlja2FibGVFbGVtZW50cyB7IGZhbHNlIH07CiB9OwogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>