<?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>126362</bug_id>
          
          <creation_ts>2014-01-01 12:37:51 -0800</creation_ts>
          <short_desc>Create a ThreadedScrollingTree subclass of ScrollingTree, and push all knowledge of the scrolling thread into it</short_desc>
          <delta_ts>2014-01-01 15:17: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>New Bugs</component>
          <version>528+ (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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Simon Fraser (smfr)">simon.fraser</reporter>
          <assigned_to name="Simon Fraser (smfr)">simon.fraser</assigned_to>
          <cc>andersca</cc>
    
    <cc>bdakin</cc>
    
    <cc>buildbot</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>jamesr</cc>
    
    <cc>luiz</cc>
    
    <cc>rniwa</cc>
    
    <cc>sam</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
    
    <cc>tonikitoo</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>963621</commentid>
    <comment_count>0</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2014-01-01 12:37:51 -0800</bug_when>
    <thetext>Create a ThreadedScrollingTree subclass of ScrollingTree, and push all knowledge of the scrolling thread into it</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>963622</commentid>
    <comment_count>1</comment_count>
      <attachid>220190</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2014-01-01 12:43:16 -0800</bug_when>
    <thetext>Created attachment 220190
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>963626</commentid>
    <comment_count>2</comment_count>
      <attachid>220190</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2014-01-01 12:57:35 -0800</bug_when>
    <thetext>Comment on attachment 220190
Patch

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

&gt; Source/WebCore/page/scrolling/ThreadedScrollingTree.h:64
&gt; +#if PLATFORM(MAC)

Can this be something more specific that PLATFORM(MAC), maybe ENABLE(WHEEL_EVENT_PHASE) or something?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>963630</commentid>
    <comment_count>3</comment_count>
      <attachid>220190</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2014-01-01 13:36:29 -0800</bug_when>
    <thetext>Comment on attachment 220190
Patch

Attachment 220190 did not pass mac-ews (mac):
Output: http://webkit-queues.appspot.com/results/5107353917587456</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>963638</commentid>
    <comment_count>4</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2014-01-01 15:13:14 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 220190 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=220190&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/page/scrolling/ThreadedScrollingTree.h:64
&gt; &gt; +#if PLATFORM(MAC)
&gt; 
&gt; Can this be something more specific that PLATFORM(MAC), maybe ENABLE(WHEEL_EVENT_PHASE) or something?

Yes, but not right now. Shame this wasn&apos;t done from the start :(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>963641</commentid>
    <comment_count>5</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2014-01-01 15:17:16 -0800</bug_when>
    <thetext>https://trac.webkit.org/r161198</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>220190</attachid>
            <date>2014-01-01 12:43:16 -0800</date>
            <delta_ts>2014-01-01 13:36:28 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-126362-20140101124315.patch</filename>
            <type>text/plain</type>
            <size>35626</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTYxMTk0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmVjYjU3Y2ExNzQ4MjZi
NWUyZTc5MjcyMzg1NWYwNTA0ZWVmNzM3Yi4uMDMzZGY4MWEwZWQzODFjOWZjZTU2MjliNDc1MDc3
MzA2OGRhNzZhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDU1IEBACiAyMDE0LTAxLTAxICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCisgICAgICAgIENyZWF0ZSBhIFRo
cmVhZGVkU2Nyb2xsaW5nVHJlZSBzdWJjbGFzcyBvZiBTY3JvbGxpbmdUcmVlLCBhbmQgcHVzaCBh
bGwga25vd2xlZGdlIG9mIHRoZSBzY3JvbGxpbmcgdGhyZWFkIGludG8gaXQKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNjM2MgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEV2ZW50dWFsbHkgd2UnbGwgaGF2
ZSBhIFNjcm9sbGluZ1RyZWUgaW4gc2l0dWF0aW9ucyB3aGVyZSB0aGVyZSBpcyBubyBzY3JvbGxp
bmcKKyAgICAgICAgdGhyZWFkLCBzbyBtYWtlIHRoZSBTY3JvbGxpbmdUcmVlIGJhc2UgY2xhc3Mg
dGhyZWFkLWFnbm9zdGljIChidXQgdGhyZWFkc2FmZSksCisgICAgICAgIGFuZCBzdWJjbGFzcyBp
dCBpbiBUaHJlYWRlZFNjcm9sbGluZ1RyZWUgZm9yIHNjcm9sbGluZy10aHJlYWQtc3BlY2lmaWMg
ZnVuY3Rpb25hbGl0eS4KKyAgICAgICAgCisgICAgICAgIFRoZSBTY3JvbGxpbmdUcmVlIGJhc2Ug
Y2xhc3MgYWxzbyBubyBsb25nZXIgbmVlZHMgdG8ga25vdyBhYm91dCB0aGUKKyAgICAgICAgU2Ny
b2xsaW5nQ29vcmRpbmF0b3IuCisKKyAgICAgICAgU2Nyb2xsaW5nQ29vcmRpbmF0b3JNYWMgY3Jl
YXRlcyBhIFRocmVhZGVkU2Nyb2xsaW5nVHJlZS4KKworICAgICAgICAqIFdlYkNvcmUuZXhwLmlu
OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajogQWRkIFRocmVh
ZGVkU2Nyb2xsaW5nVHJlZS4qCisgICAgICAgIE1ha2Ugc29tZSBoZWFkZXJzIFByaXZhdGUgdGhh
dCB3ZSdsbCBuZWVkIGluIFdlYktpdDIgc29vbi4KKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9T
Y3JvbGxpbmdTdGF0ZVRyZWUuaDogRHJpdmUtYnkgY2xlYW51cDogY2xvbmUoKSB3YXMgdW5pbXBs
ZW1lbnRlZC4KKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWU6OlNjcm9sbGluZ1RyZWUpOgorICAgICAgICAo
V2ViQ29yZTo6U2Nyb2xsaW5nVHJlZTo6flNjcm9sbGluZ1RyZWUpOgorICAgICAgICAoV2ViQ29y
ZTo6U2Nyb2xsaW5nVHJlZTo6c2hvdWxkSGFuZGxlV2hlZWxFdmVudFN5bmNocm9ub3VzbHkpOiBX
cmFwIHVwIHNvbWUgbG9naWMgdGhhdAorICAgICAgICBpbnZvbHZlcyB0YWtpbmcgdGhlIG11dGV4
LCBzbyBUaHJlYWRlZFNjcm9sbGluZ1RyZWUgY2FuIGNvbnZlbmllbnRseSBjYWxsIGl0LgorICAg
ICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZTo6aGFuZGxlV2hlZWxFdmVudCk6CisgICAgICAg
IChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlOjpjb21taXROZXdUcmVlU3RhdGUpOgorICAgICAgICAo
V2ViQ29yZTo6U2Nyb2xsaW5nVHJlZTo6c2V0TWFpbkZyYW1lU2Nyb2xsUG9zaXRpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZTo6aXNIYW5kbGluZ1Byb2dyYW1tYXRpY1Njcm9s
bCk6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZS5oOgorICAgICAgICAo
V2ViQ29yZTo6U2Nyb2xsaW5nVHJlZTo6aXNUaHJlYWRlZFNjcm9sbGluZ1RyZWUpOgorICAgICAg
ICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZTo6aW52YWxpZGF0ZSk6CisgICAgICAgICogcGFnZS9z
Y3JvbGxpbmcvVGhyZWFkZWRTY3JvbGxpbmdUcmVlLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJD
b3JlOjpUaHJlYWRlZFNjcm9sbGluZ1RyZWU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpU
aHJlYWRlZFNjcm9sbGluZ1RyZWU6OlRocmVhZGVkU2Nyb2xsaW5nVHJlZSk6CisgICAgICAgIChX
ZWJDb3JlOjpUaHJlYWRlZFNjcm9sbGluZ1RyZWU6On5UaHJlYWRlZFNjcm9sbGluZ1RyZWUpOgor
ICAgICAgICAoV2ViQ29yZTo6VGhyZWFkZWRTY3JvbGxpbmdUcmVlOjp0cnlUb0hhbmRsZVdoZWVs
RXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkZWRTY3JvbGxpbmdUcmVlOjpoYW5kbGVX
aGVlbEV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OmRlcmVmU2Nyb2xsaW5nQ29vcmRpbmF0b3Ip
OgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkZWRTY3JvbGxpbmdUcmVlOjppbnZhbGlkYXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OlRocmVhZGVkU2Nyb2xsaW5nVHJlZTo6Y29tbWl0TmV3VHJlZVN0
YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlRocmVhZGVkU2Nyb2xsaW5nVHJlZTo6dXBkYXRlTWFp
bkZyYW1lU2Nyb2xsUG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkZWRTY3JvbGxp
bmdUcmVlOjpoYW5kbGVXaGVlbEV2ZW50UGhhc2UpOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5n
L1RocmVhZGVkU2Nyb2xsaW5nVHJlZS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlRocmVh
ZGVkU2Nyb2xsaW5nVHJlZTo6aXNUaHJlYWRlZFNjcm9sbGluZ1RyZWUpOgorICAgICAgICAqIHBh
Z2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdDb29yZGluYXRvck1hYy5oOgorICAgICAgICAqIHBh
Z2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdDb29yZGluYXRvck1hYy5tbToKKyAgICAgICAgKFdl
YkNvcmU6OlNjcm9sbGluZ0Nvb3JkaW5hdG9yTWFjOjpTY3JvbGxpbmdDb29yZGluYXRvck1hYyk6
CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdDb29yZGluYXRvck1hYzo6aGFuZGxlV2hlZWxF
dmVudCk6CisKKzIwMTQtMDEtMDEgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5j
b20+CisKICAgICAgICAgVXBkYXRpbmcgdGhlIHNjcm9sbGluZyB0cmVlIHNob3VsZCB1c2UgcmVm
ZXJlbmNlcyB0byBzdGF0ZSBub2RlcwogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTI2MzYwCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBkYzdmNmEyYzNmNDRlYzk1OWNj
YmY4NTA4YmQwNDVhMWVhY2RlZDE2Li42OTc4OTc0MjBlNDhiZWQwZWIzYjUyZmY0OGNjYzNhY2M1
OGI3YzY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMjYgQEAKIDIwMTQtMDEtMDEgIFNpbW9uIEZy
YXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKKyAgICAgICAgQ3JlYXRlIGEgVGhyZWFk
ZWRTY3JvbGxpbmdUcmVlIHN1YmNsYXNzIG9mIFNjcm9sbGluZ1RyZWUsIGFuZCBwdXNoIGFsbCBr
bm93bGVkZ2Ugb2YgdGhlIHNjcm9sbGluZyB0aHJlYWQgaW50byBpdAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI2MzYyCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRXZlbnR1YWxseSB3ZSdsbCBoYXZlIGEg
U2Nyb2xsaW5nVHJlZSBpbiBzaXR1YXRpb25zIHdoZXJlIHRoZXJlIGlzIG5vIHNjcm9sbGluZwor
ICAgICAgICB0aHJlYWQsIHNvIG1ha2UgdGhlIFNjcm9sbGluZ1RyZWUgYmFzZSBjbGFzcyB0aHJl
YWQtYWdub3N0aWMgKGJ1dCB0aHJlYWRzYWZlKSwKKyAgICAgICAgYW5kIHN1YmNsYXNzIGl0IGlu
IFRocmVhZGVkU2Nyb2xsaW5nVHJlZSBmb3Igc2Nyb2xsaW5nLXRocmVhZC1zcGVjaWZpYyBmdW5j
dGlvbmFsaXR5LgorICAgICAgICAKKyAgICAgICAgVGhlIFNjcm9sbGluZ1RyZWUgYmFzZSBjbGFz
cyBhbHNvIG5vIGxvbmdlciBuZWVkcyB0byBrbm93IGFib3V0IHRoZQorICAgICAgICBTY3JvbGxp
bmdDb29yZGluYXRvci4KKworICAgICAgICBTY3JvbGxpbmdDb29yZGluYXRvck1hYyBjcmVhdGVz
IGEgVGhyZWFkZWRTY3JvbGxpbmdUcmVlLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdl
L0V2ZW50RGlzcGF0Y2hlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OkV2ZW50RGlzcGF0Y2hlcjo6
YWRkU2Nyb2xsaW5nVHJlZUZvclBhZ2UpOgorICAgICAgICAoV2ViS2l0OjpFdmVudERpc3BhdGNo
ZXI6OndoZWVsRXZlbnQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9FdmVudERpc3Bh
dGNoZXIuaDoKKworMjAxNC0wMS0wMSAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxl
LmNvbT4KKwogICAgICAgICBBZGQgYSB0eXBlZGVmIGZvciBQbGF0Zm9ybUxheWVySUQgb24gR3Jh
cGhpY3NMYXllciwgYW5kIG1pZ3JhdGUgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24gdG8gdXNl
IGl0CiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjYz
NDYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4gYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLmV4cC5pbgppbmRleCBjODY3OGI1ZTA3NjdiZDhkOWYwYTYxN2Q3ZTFm
NWY4MzU3ZjZiMjQ4Li5iODk1OGUxMTkzOWQ4YWU3NDc0ZmUxZTI0NGI5MmJiMjY1YTkxNWJiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLmV4cC5pbgpAQCAtMjg2Myw3ICsyODYzLDYgQEAgX19aTjdXZWJDb3JlOERv
Y3VtZW50MTlhY2Nlc3NTVkdFeHRlbnNpb25zRXYKIAogI2lmIEVOQUJMRShBU1lOQ19TQ1JPTExJ
TkcpCiBfX1pON1dlYkNvcmUxM1Njcm9sbGluZ1RyZWUyMXNldENhblJ1YmJlckJhbmRTdGF0ZUVi
YmJiCi1fX1pON1dlYkNvcmUxM1Njcm9sbGluZ1RyZWUyMXRyeVRvSGFuZGxlV2hlZWxFdmVudEVS
S05TXzE4UGxhdGZvcm1XaGVlbEV2ZW50RQogX19aTjdXZWJDb3JlMTNTY3JvbGxpbmdUcmVlMzdz
ZXRTY3JvbGxpbmdQZXJmb3JtYW5jZUxvZ2dpbmdFbmFibGVkRWIKIF9fWk43V2ViQ29yZTEzU2Ny
b2xsaW5nVHJlZUQxRXYKIF9fWk43V2ViQ29yZTE1U2Nyb2xsaW5nVGhyZWFkMTVkaXNwYXRjaEJh
cnJpZXJFUktOM1dURjhGdW5jdGlvbklGdnZFRUUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA3YTBiMGY4NjdkMzI4YjAyMTgzMDQz
NTgyYjkwMWVlMDY0MzU2M2RhLi44YWUzZmM5MTJiMDJkZjcxZGY3MTFhMzE2MTk2ZWE4ODU0YmVm
NDEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCkBAIC00NzAsNyArNDcwLDkgQEAKIAkJMEY1QjdBNTQxMEY2NUQ3QTAwMzc2MzAyIC8q
IFJlbmRlckVtYmVkZGVkT2JqZWN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDBGNUI3QTUyMTBGNjVEN0EwMDM3NjMwMiAvKiBSZW5kZXJFbWJlZGRl
ZE9iamVjdC5jcHAgKi87IH07CiAJCTBGNUI3QTU1MTBGNjVEN0EwMDM3NjMwMiAvKiBSZW5kZXJF
bWJlZGRlZE9iamVjdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMEY1QjdBNTMxMEY2NUQ3QTAwMzc2MzAyIC8qIFJlbmRlckVtYmVkZGVkT2JqZWN0Lmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEY2MDVB
RUMxNUY5NDg0ODAwNERGMEMwIC8qIFNjcm9sbGluZ0NvbnN0cmFpbnRzLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNjA1QUVBMTVGOTQ4NDgwMDRE
RjBDMCAvKiBTY3JvbGxpbmdDb25zdHJhaW50cy5jcHAgKi87IH07Ci0JCTBGNjA1QUVEMTVGOTQ4
NDgwMDRERjBDMCAvKiBTY3JvbGxpbmdDb25zdHJhaW50cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY2MDVBRUIxNUY5NDg0ODAwNERGMEMwIC8qIFNj
cm9sbGluZ0NvbnN0cmFpbnRzLmggKi87IH07CisJCTBGNjA1QUVEMTVGOTQ4NDgwMDRERjBDMCAv
KiBTY3JvbGxpbmdDb25zdHJhaW50cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMEY2MDVBRUIxNUY5NDg0ODAwNERGMEMwIC8qIFNjcm9sbGluZ0NvbnN0
cmFpbnRzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
KwkJMEY2MzgzREQxODYxNUIyOTAwM0U1REI1IC8qIFRocmVhZGVkU2Nyb2xsaW5nVHJlZS5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjYzODNEQjE4
NjE1QjI5MDAzRTVEQjUgLyogVGhyZWFkZWRTY3JvbGxpbmdUcmVlLmNwcCAqLzsgfTsKKwkJMEY2
MzgzREUxODYxNUIyOTAwM0U1REI1IC8qIFRocmVhZGVkU2Nyb2xsaW5nVHJlZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY2MzgzREMxODYxNUIyOTAw
M0U1REI1IC8qIFRocmVhZGVkU2Nyb2xsaW5nVHJlZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGQTI0RDc5MTYyREY5MTkwMEEzRjRDMCAvKiBH
cmFwaGljc0xheWVyVXBkYXRlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwRkEyNEQ3NzE2MkRGOTE5MDBBM0Y0QzAgLyogR3JhcGhpY3NMYXllclVw
ZGF0ZXIuY3BwICovOyB9OwogCQkwRkEyNEQ3QTE2MkRGOTE5MDBBM0Y0QzAgLyogR3JhcGhpY3NM
YXllclVwZGF0ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDBGQTI0RDc4MTYyREY5MTkwMEEzRjRDMCAvKiBHcmFwaGljc0xheWVyVXBkYXRlci5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGQTg4RUJE
MTZBOEQxQkQwMEY5OTk4NCAvKiBTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGVNYWMubW0gaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkE4OEVCQzE2QThE
MUJEMDBGOTk5ODQgLyogU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlTWFjLm1tICovOyB9OwpA
QCAtNzA5OSw2ICs3MTAxLDggQEAKIAkJMEY1QjdBNTMxMEY2NUQ3QTAwMzc2MzAyIC8qIFJlbmRl
ckVtYmVkZGVkT2JqZWN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbmRl
ckVtYmVkZGVkT2JqZWN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNjA1QUVB
MTVGOTQ4NDgwMDRERjBDMCAvKiBTY3JvbGxpbmdDb25zdHJhaW50cy5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTY3JvbGxpbmdDb25zdHJhaW50cy5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNjA1QUVCMTVGOTQ4NDgwMDRERjBDMCAvKiBTY3Jv
bGxpbmdDb25zdHJhaW50cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY3Jv
bGxpbmdDb25zdHJhaW50cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjYzODNE
QjE4NjE1QjI5MDAzRTVEQjUgLyogVGhyZWFkZWRTY3JvbGxpbmdUcmVlLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRocmVhZGVkU2Nyb2xsaW5nVHJlZS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNjM4M0RDMTg2MTVCMjkwMDNFNURCNSAvKiBU
aHJlYWRlZFNjcm9sbGluZ1RyZWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
VGhyZWFkZWRTY3JvbGxpbmdUcmVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBG
QTI0RDc3MTYyREY5MTkwMEEzRjRDMCAvKiBHcmFwaGljc0xheWVyVXBkYXRlci5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHcmFwaGljc0xheWVyVXBkYXRlci5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGQTI0RDc4MTYyREY5MTkwMEEzRjRDMCAv
KiBHcmFwaGljc0xheWVyVXBkYXRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBHcmFwaGljc0xheWVyVXBkYXRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkw
RkE4OEVCQzE2QThEMUJEMDBGOTk5ODQgLyogU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlTWFj
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gU2Nyb2xsaW5nU3Rh
dGVTY3JvbGxpbmdOb2RlTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTQ0
NzYsNiArMTQ0ODAsOCBAQAogCQkJCTFBQUFEREUyMTREQzhDOEYwMEFGNjRCMyAvKiBTY3JvbGxp
bmdUcmVlTm9kZS5oICovLAogCQkJCTkzOTFBOTlBMTYyOUQ2RkYwMDI5NzMzMCAvKiBTY3JvbGxp
bmdUcmVlU2Nyb2xsaW5nTm9kZS5jcHAgKi8sCiAJCQkJOTM5MUE5OUIxNjI5RDcwMDAwMjk3MzMw
IC8qIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlLmggKi8sCisJCQkJMEY2MzgzREIxODYxNUIy
OTAwM0U1REI1IC8qIFRocmVhZGVkU2Nyb2xsaW5nVHJlZS5jcHAgKi8sCisJCQkJMEY2MzgzREMx
ODYxNUIyOTAwM0U1REI1IC8qIFRocmVhZGVkU2Nyb2xsaW5nVHJlZS5oICovLAogCQkJKTsKIAkJ
CXBhdGggPSBzY3JvbGxpbmc7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtMjQxODEs
NiArMjQxODcsNyBAQAogCQkJCUJDRTFDNDFCMEQ5ODI5ODAwMDNCMDJGMiAvKiBMb2NhdGlvbi5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQTgyMzlFMDEwOUIzQ0Y4QTAwQjYwNjQxIC8qIExvZ2dpbmcu
aCBpbiBIZWFkZXJzICovLAogCQkJCTUxMDE5NDQxMTgzNkQyMDgwMDkyNTUyMyAvKiBJREJJbmRl
eFdyaXRlckxldmVsREIuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGNjM4M0RFMTg2MTVCMjkwMDNF
NURCNSAvKiBUaHJlYWRlZFNjcm9sbGluZ1RyZWUuaCBpbiBIZWFkZXJzICovLAogCQkJCTlCQTI3
M0Y0MTcyMjA2QkIwMDk3Q0U0NyAvKiBMb2dpY2FsU2VsZWN0aW9uT2Zmc2V0Q2FjaGVzLmggaW4g
SGVhZGVycyAqLywKIAkJCQlFMTg3MDU2MzE2RTU0QTBEMDA1ODVFOTcgLyogTWFpblRocmVhZFRh
c2suaCBpbiBIZWFkZXJzICovLAogCQkJCTFBOEY2QkM2MERCNTVDREMwMDFEQjc5NCAvKiBNYW5p
ZmVzdFBhcnNlci5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNjg4OSw2ICsyNjg5Niw3IEBACiAJCQkJ
OTc1Q0EyQTExMzAzNjc5RDAwRTk5QUQ5IC8qIEpTQ3J5cHRvLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTIwOUI0NTZCMTY3OTZBN0UwMEU1NEU0RSAvKiBKU0NyeXB0b0N1c3RvbS5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlCQzQ2QzFGQTBDMEREQzhGMDAyMENGQzMgLyogSlNDU1NDaGFyc2V0UnVs
ZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwRjYzODNERDE4NjE1QjI5MDAzRTVEQjUgLyogVGhy
ZWFkZWRTY3JvbGxpbmdUcmVlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQwOUVCREM1MTZCN0Yz
Q0EwMENCQTNGQyAvKiBKU0NTU0ZvbnRGYWNlTG9hZEV2ZW50LmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUJDNDZDMUZDMEMwRERDOEYwMDIwQ0ZDMyAvKiBKU0NTU0ZvbnRGYWNlUnVsZS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlCQzQ2QzFGRTBDMEREQzhGMDAyMENGQzMgLyogSlNDU1NJbXBvcnRS
dWxlLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9z
Y3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVUcmVlLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9s
bGluZy9TY3JvbGxpbmdTdGF0ZVRyZWUuaAppbmRleCA4MzMwZmRiN2Y2MTE0MGQ3ZTBlZDliYjAz
MWMyNDg2YmQ5OGNlZGU4Li4yNWY4Yjk2NDY0MzVmNmU3NmJlOGMyZDUxYmUxZjc5YmJmMzM2ZWIw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0
ZVRyZWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0
ZVRyZWUuaApAQCAtNzIsOCArNzIsNiBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVtb3ZlTm9kZShT
Y3JvbGxpbmdTdGF0ZU5vZGUqKTsKICAgICB2b2lkIGRpZFJlbW92ZU5vZGUoU2Nyb2xsaW5nTm9k
ZUlEKTsKIAotICAgIFBhc3NPd25QdHI8U2Nyb2xsaW5nU3RhdGVUcmVlPiBjbG9uZSgpOwotCiAg
ICAgSGFzaE1hcDxTY3JvbGxpbmdOb2RlSUQsIFNjcm9sbGluZ1N0YXRlTm9kZSo+IG1fc3RhdGVO
b2RlTWFwOwogICAgIE93blB0cjxTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU+IG1fcm9vdFN0
YXRlTm9kZTsKICAgICBWZWN0b3I8U2Nyb2xsaW5nTm9kZUlEPiBtX25vZGVzUmVtb3ZlZFNpbmNl
TGFzdENvbW1pdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Nj
cm9sbGluZ1RyZWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5n
VHJlZS5jcHAKaW5kZXggZWU2OTRiODQ5NzE0OTVhOTExZjYwZjJiZTliOTgyM2ZkMzNmMWNiOS4u
ODQwYzMzY2JhNDEwZWU0ZDliYzllYjZhYmRkYzQ0YTU5MzI2ZTM4OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZS5jcHAKQEAgLTI5LDI2ICsyOSwx
NyBAQAogI2lmIEVOQUJMRShBU1lOQ19TQ1JPTExJTkcpCiAKICNpbmNsdWRlICJQbGF0Zm9ybVdo
ZWVsRXZlbnQuaCIKLSNpbmNsdWRlICJTY3JvbGxpbmdDb29yZGluYXRvci5oIgogI2luY2x1ZGUg
IlNjcm9sbGluZ1N0YXRlVHJlZS5oIgotI2luY2x1ZGUgIlNjcm9sbGluZ1RocmVhZC5oIgogI2lu
Y2x1ZGUgIlNjcm9sbGluZ1RyZWVGaXhlZE5vZGUuaCIKICNpbmNsdWRlICJTY3JvbGxpbmdUcmVl
Tm9kZS5oIgogI2luY2x1ZGUgIlNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlLmgiCiAjaW5jbHVk
ZSAiU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGUuaCIKLSNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5o
PgogI2luY2x1ZGUgPHd0Zi9UZW1wb3JhcnlDaGFuZ2UuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi1QYXNzUmVmUHRyPFNjcm9sbGluZ1RyZWU+IFNjcm9sbGluZ1RyZWU6OmNyZWF0ZShTY3Jv
bGxpbmdDb29yZGluYXRvciogc2Nyb2xsaW5nQ29vcmRpbmF0b3IpCi17Ci0gICAgcmV0dXJuIGFk
b3B0UmVmKG5ldyBTY3JvbGxpbmdUcmVlKHNjcm9sbGluZ0Nvb3JkaW5hdG9yKSk7Ci19Ci0KLVNj
cm9sbGluZ1RyZWU6OlNjcm9sbGluZ1RyZWUoU2Nyb2xsaW5nQ29vcmRpbmF0b3IqIHNjcm9sbGlu
Z0Nvb3JkaW5hdG9yKQotICAgIDogbV9zY3JvbGxpbmdDb29yZGluYXRvcihzY3JvbGxpbmdDb29y
ZGluYXRvcikKLSAgICAsIG1faGFzV2hlZWxFdmVudEhhbmRsZXJzKGZhbHNlKQorU2Nyb2xsaW5n
VHJlZTo6U2Nyb2xsaW5nVHJlZSgpCisgICAgOiBtX2hhc1doZWVsRXZlbnRIYW5kbGVycyhmYWxz
ZSkKICAgICAsIG1fcnViYmVyQmFuZHNBdExlZnQodHJ1ZSkKICAgICAsIG1fcnViYmVyQmFuZHNB
dFJpZ2h0KHRydWUpCiAgICAgLCBtX3J1YmJlckJhbmRzQXRUb3AodHJ1ZSkKQEAgLTY2LDY1ICs1
NywzMyBAQCBTY3JvbGxpbmdUcmVlOjpTY3JvbGxpbmdUcmVlKFNjcm9sbGluZ0Nvb3JkaW5hdG9y
KiBzY3JvbGxpbmdDb29yZGluYXRvcikKIAogU2Nyb2xsaW5nVHJlZTo6flNjcm9sbGluZ1RyZWUo
KQogewotICAgIEFTU0VSVCghbV9zY3JvbGxpbmdDb29yZGluYXRvcik7CiB9CiAKLVNjcm9sbGlu
Z1RyZWU6OkV2ZW50UmVzdWx0IFNjcm9sbGluZ1RyZWU6OnRyeVRvSGFuZGxlV2hlZWxFdmVudChj
b25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIHdoZWVsRXZlbnQpCitib29sIFNjcm9sbGluZ1RyZWU6
OnNob3VsZEhhbmRsZVdoZWVsRXZlbnRTeW5jaHJvbm91c2x5KGNvbnN0IFBsYXRmb3JtV2hlZWxF
dmVudCYgd2hlZWxFdmVudCkKIHsKLSAgICB7Ci0gICAgICAgIE11dGV4TG9ja2VyIGxvY2sobV9t
dXRleCk7CisgICAgTXV0ZXhMb2NrZXIgbG9jayhtX211dGV4KTsKIAotICAgICAgICBpZiAobV9o
YXNXaGVlbEV2ZW50SGFuZGxlcnMpCi0gICAgICAgICAgICByZXR1cm4gU2VuZFRvTWFpblRocmVh
ZDsKKyAgICBpZiAobV9oYXNXaGVlbEV2ZW50SGFuZGxlcnMpCisgICAgICAgIHJldHVybiB0cnVl
OwogCi0gICAgICAgIGlmICghbV9ub25GYXN0U2Nyb2xsYWJsZVJlZ2lvbi5pc0VtcHR5KCkpIHsK
LSAgICAgICAgICAgIC8vIEZJWE1FOiBUaGlzIGlzIG5vdCBjb3JyZWN0IGZvciBub24tZGVmYXVs
dCBzY3JvbGwgb3JpZ2lucy4KLSAgICAgICAgICAgIEludFBvaW50IHBvc2l0aW9uID0gd2hlZWxF
dmVudC5wb3NpdGlvbigpOwotICAgICAgICAgICAgcG9zaXRpb24ubW92ZUJ5KG1fbWFpbkZyYW1l
U2Nyb2xsUG9zaXRpb24pOwotICAgICAgICAgICAgaWYgKG1fbm9uRmFzdFNjcm9sbGFibGVSZWdp
b24uY29udGFpbnMocG9zaXRpb24pKQotICAgICAgICAgICAgICAgIHJldHVybiBTZW5kVG9NYWlu
VGhyZWFkOwotICAgICAgICB9CisgICAgaWYgKCFtX25vbkZhc3RTY3JvbGxhYmxlUmVnaW9uLmlz
RW1wdHkoKSkgeworICAgICAgICAvLyBGSVhNRTogVGhpcyBpcyBub3QgY29ycmVjdCBmb3Igbm9u
LWRlZmF1bHQgc2Nyb2xsIG9yaWdpbnMuCisgICAgICAgIEludFBvaW50IHBvc2l0aW9uID0gd2hl
ZWxFdmVudC5wb3NpdGlvbigpOworICAgICAgICBwb3NpdGlvbi5tb3ZlQnkobV9tYWluRnJhbWVT
Y3JvbGxQb3NpdGlvbik7CisgICAgICAgIGlmIChtX25vbkZhc3RTY3JvbGxhYmxlUmVnaW9uLmNv
bnRhaW5zKHBvc2l0aW9uKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KLQotICAg
IGlmICh3aWxsV2hlZWxFdmVudFN0YXJ0U3dpcGVHZXN0dXJlKHdoZWVsRXZlbnQpKQotICAgICAg
ICByZXR1cm4gRGlkTm90SGFuZGxlRXZlbnQ7Ci0KLSAgICBTY3JvbGxpbmdUaHJlYWQ6OmRpc3Bh
dGNoKGJpbmQoJlNjcm9sbGluZ1RyZWU6OmhhbmRsZVdoZWVsRXZlbnQsIHRoaXMsIHdoZWVsRXZl
bnQpKTsKLSAgICByZXR1cm4gRGlkSGFuZGxlRXZlbnQ7CisgICAgcmV0dXJuIGZhbHNlOwogfQog
CiB2b2lkIFNjcm9sbGluZ1RyZWU6OmhhbmRsZVdoZWVsRXZlbnQoY29uc3QgUGxhdGZvcm1XaGVl
bEV2ZW50JiB3aGVlbEV2ZW50KQogewotICAgIEFTU0VSVChTY3JvbGxpbmdUaHJlYWQ6OmlzQ3Vy
cmVudFRocmVhZCgpKTsKLSAgICAKICAgICBpZiAobV9yb290Tm9kZSkKICAgICAgICAgbV9yb290
Tm9kZS0+aGFuZGxlV2hlZWxFdmVudCh3aGVlbEV2ZW50KTsKIH0KIAotc3RhdGljIHZvaWQgZGVy
ZWZTY3JvbGxpbmdDb29yZGluYXRvcihTY3JvbGxpbmdDb29yZGluYXRvciogc2Nyb2xsaW5nQ29v
cmRpbmF0b3IpCi17Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLQotICAgIHNjcm9sbGlu
Z0Nvb3JkaW5hdG9yLT5kZXJlZigpOwotfQotCi12b2lkIFNjcm9sbGluZ1RyZWU6OmludmFsaWRh
dGUoKQotewotICAgIC8vIEludmFsaWRhdGUgaXMgZGlzcGF0Y2hlZCBieSB0aGUgU2Nyb2xsaW5n
Q29vcmRpbmF0b3IgY2xhc3Mgb24gdGhlIFNjcm9sbGluZ1RocmVhZAotICAgIC8vIHRvIGJyZWFr
IHRoZSByZWZlcmVuY2UgY3ljbGUgYmV0d2VlbiBTY3JvbGxpbmdUcmVlIGFuZCBTY3JvbGxpbmdD
b29yZGluYXRvciB3aGVuIHRoZQotICAgIC8vIFNjcm9sbGluZ0Nvb3JkaW5hdG9yJ3MgcGFnZSBp
cyBkZXN0cm95ZWQuCi0gICAgQVNTRVJUKFNjcm9sbGluZ1RocmVhZDo6aXNDdXJyZW50VGhyZWFk
KCkpOwotCi0gICAgLy8gU2luY2UgdGhpcyBjYW4gcG90ZW50aWFsbHkgYmUgdGhlIGxhc3QgcmVm
ZXJlbmNlIHRvIHRoZSBzY3JvbGxpbmcgY29vcmRpbmF0b3IsCi0gICAgLy8gd2UgbmVlZCB0byBy
ZWxlYXNlIGl0IG9uIHRoZSBtYWluIHRocmVhZCBzaW5jZSBpdCBoYXMgbWVtYmVyIHZhcmlhYmxl
cyAoc3VjaCBhcyB0aW1lcnMpCi0gICAgLy8gdGhhdCBleHBlY3QgdG8gYmUgZGVzdHJveWVkIGZy
b20gdGhlIG1haW4gdGhyZWFkLgotICAgIGNhbGxPbk1haW5UaHJlYWQoYmluZChkZXJlZlNjcm9s
bGluZ0Nvb3JkaW5hdG9yLCBtX3Njcm9sbGluZ0Nvb3JkaW5hdG9yLnJlbGVhc2UoKS5sZWFrUmVm
KCkpKTsKLX0KLQogdm9pZCBTY3JvbGxpbmdUcmVlOjpjb21taXROZXdUcmVlU3RhdGUoUGFzc093
blB0cjxTY3JvbGxpbmdTdGF0ZVRyZWU+IHNjcm9sbGluZ1N0YXRlVHJlZSkKIHsKLSAgICBBU1NF
UlQoU2Nyb2xsaW5nVGhyZWFkOjppc0N1cnJlbnRUaHJlYWQoKSk7Ci0KICAgICBib29sIHJvb3RT
dGF0ZU5vZGVDaGFuZ2VkID0gc2Nyb2xsaW5nU3RhdGVUcmVlLT5oYXNOZXdSb290U3RhdGVOb2Rl
KCk7CiAgICAgCiAgICAgU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlKiByb290Tm9kZSA9IHNj
cm9sbGluZ1N0YXRlVHJlZS0+cm9vdFN0YXRlTm9kZSgpOwpAQCAtMjM4LDM0ICsxOTcsMTcgQEAg
dm9pZCBTY3JvbGxpbmdUcmVlOjpzZXRNYWluRnJhbWVQaW5TdGF0ZShib29sIHBpbm5lZFRvVGhl
TGVmdCwgYm9vbCBwaW5uZWRUb1RoZVIKICAgICBtX21haW5GcmFtZVBpbm5lZFRvVGhlQm90dG9t
ID0gcGlubmVkVG9UaGVCb3R0b207CiB9CiAKLXZvaWQgU2Nyb2xsaW5nVHJlZTo6dXBkYXRlTWFp
bkZyYW1lU2Nyb2xsUG9zaXRpb24oY29uc3QgSW50UG9pbnQmIHNjcm9sbFBvc2l0aW9uLCBTZXRP
clN5bmNTY3JvbGxpbmdMYXllclBvc2l0aW9uIHNjcm9sbGluZ0xheWVyUG9zaXRpb25BY3Rpb24p
Ci17Ci0gICAgaWYgKCFtX3Njcm9sbGluZ0Nvb3JkaW5hdG9yKQotICAgICAgICByZXR1cm47Ci0K
LSAgICB7Ci0gICAgICAgIE11dGV4TG9ja2VyIGxvY2sobV9tdXRleCk7Ci0gICAgICAgIG1fbWFp
bkZyYW1lU2Nyb2xsUG9zaXRpb24gPSBzY3JvbGxQb3NpdGlvbjsKLSAgICB9Ci0KLSAgICBjYWxs
T25NYWluVGhyZWFkKGJpbmQoJlNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpzY2hlZHVsZVVwZGF0ZU1h
aW5GcmFtZVNjcm9sbFBvc2l0aW9uLCBtX3Njcm9sbGluZ0Nvb3JkaW5hdG9yLmdldCgpLCBzY3Jv
bGxQb3NpdGlvbiwgbV9pc0hhbmRsaW5nUHJvZ3JhbW1hdGljU2Nyb2xsLCBzY3JvbGxpbmdMYXll
clBvc2l0aW9uQWN0aW9uKSk7Ci19Ci0KIEludFBvaW50IFNjcm9sbGluZ1RyZWU6Om1haW5GcmFt
ZVNjcm9sbFBvc2l0aW9uKCkKIHsKICAgICBNdXRleExvY2tlciBsb2NrKG1fbXV0ZXgpOwogICAg
IHJldHVybiBtX21haW5GcmFtZVNjcm9sbFBvc2l0aW9uOwogfQogCi0jaWYgUExBVEZPUk0oTUFD
KQotdm9pZCBTY3JvbGxpbmdUcmVlOjpoYW5kbGVXaGVlbEV2ZW50UGhhc2UoUGxhdGZvcm1XaGVl
bEV2ZW50UGhhc2UgcGhhc2UpCit2b2lkIFNjcm9sbGluZ1RyZWU6OnNldE1haW5GcmFtZVNjcm9s
bFBvc2l0aW9uKEludFBvaW50IHBvc2l0aW9uKQogewotICAgIGlmICghbV9zY3JvbGxpbmdDb29y
ZGluYXRvcikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgY2FsbE9uTWFpblRocmVhZChiaW5kKCZT
Y3JvbGxpbmdDb29yZGluYXRvcjo6aGFuZGxlV2hlZWxFdmVudFBoYXNlLCBtX3Njcm9sbGluZ0Nv
b3JkaW5hdG9yLmdldCgpLCBwaGFzZSkpOworICAgIE11dGV4TG9ja2VyIGxvY2sobV9tdXRleCk7
CisgICAgbV9tYWluRnJhbWVTY3JvbGxQb3NpdGlvbiA9IHBvc2l0aW9uOwogfQotI2VuZGlmCiAK
IGJvb2wgU2Nyb2xsaW5nVHJlZTo6aXNSdWJiZXJCYW5kSW5Qcm9ncmVzcygpCiB7CkBAIC0zMTgs
NyArMjYwLDEyIEBAIGJvb2wgU2Nyb2xsaW5nVHJlZTo6cnViYmVyQmFuZHNBdFRvcCgpCiAKICAg
ICByZXR1cm4gbV9ydWJiZXJCYW5kc0F0VG9wOwogfQotICAgIAorCitib29sIFNjcm9sbGluZ1Ry
ZWU6OmlzSGFuZGxpbmdQcm9ncmFtbWF0aWNTY3JvbGwoKQoreworICAgIHJldHVybiBtX2lzSGFu
ZGxpbmdQcm9ncmFtbWF0aWNTY3JvbGw7Cit9CisKIHZvaWQgU2Nyb2xsaW5nVHJlZTo6c2V0U2Ny
b2xsUGlubmluZ0JlaGF2aW9yKFNjcm9sbFBpbm5pbmdCZWhhdmlvciBwaW5uaW5nKQogewogICAg
IE11dGV4TG9ja2VyIGxvY2tlcihtX3N3aXBlU3RhdGVNdXRleCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlLmgKaW5kZXggZjFiMjhhNWY3NDUzNGJiOTNm
MzU1NTc3ZTZlZjBlM2FmNmYzOTkxOC4uMGRlMzU0OGYwYmVhYzAyMzc4MDcyODY4YjYxMGQzZDgw
NWFkZGRjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xs
aW5nVHJlZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1Ry
ZWUuaApAQCAtMzUsNjAgKzM1LDQ1IEBACiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNs
dWRlIDx3dGYvT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KLSNpbmNsdWRl
IDx3dGYvUGFzc1JlZlB0ci5oPgotI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3
dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KIAotI2lmIFBMQVRGT1JNKE1BQykKLSNpbmNsdWRl
IDx3dGYvUmV0YWluUHRyLmg+Ci1PQkpDX0NMQVNTIENBTGF5ZXI7Ci0jZW5kaWYKLQogbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBjbGFzcyBJbnRQb2ludDsKLWNsYXNzIFNjcm9sbGluZ1N0YXRlTm9k
ZTsKIGNsYXNzIFNjcm9sbGluZ1N0YXRlVHJlZTsKK2NsYXNzIFNjcm9sbGluZ1N0YXRlTm9kZTsK
IGNsYXNzIFNjcm9sbGluZ1RyZWVOb2RlOwogY2xhc3MgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05v
ZGU7CiAKLS8vIFRoZSBTY3JvbGxpbmdUcmVlIGNsYXNzIGxpdmVzIGFsbW9zdCBleGNsdXNpdmVs
eSBvbiB0aGUgc2Nyb2xsaW5nIHRocmVhZCBhbmQgbWFuYWdlcyB0aGUKLS8vIGhpZXJhcmNoeSBv
ZiBzY3JvbGxhYmxlIHJlZ2lvbnMgb24gdGhlIHBhZ2UuIEl0J3MgYWxzbyByZXNwb25zaWJsZSBm
b3IgZGlzcGF0Y2hpbmcgZXZlbnRzCi0vLyB0byB0aGUgY29ycmVjdCBzY3JvbGxpbmcgdHJlZSBu
b2RlcyBvciBkaXNwYXRjaGluZyBldmVudHMgYmFjayB0byB0aGUgU2Nyb2xsaW5nQ29vcmRpbmF0
b3IKLS8vIG9iamVjdCBvbiB0aGUgbWFpbiB0aHJlYWQgaWYgdGhleSBjYW4ndCBiZSBoYW5kbGVk
IG9uIHRoZSBzY3JvbGxpbmcgdGhyZWFkIGZvciB2YXJpb3VzIHJlYXNvbnMuCiBjbGFzcyBTY3Jv
bGxpbmdUcmVlIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFNjcm9sbGluZ1RyZWU+IHsK
IHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxTY3JvbGxpbmdUcmVlPiBjcmVhdGUoU2Ny
b2xsaW5nQ29vcmRpbmF0b3IqKTsKLSAgICB+U2Nyb2xsaW5nVHJlZSgpOworICAgIFNjcm9sbGlu
Z1RyZWUoKTsKKyAgICB2aXJ0dWFsIH5TY3JvbGxpbmdUcmVlKCk7CiAKICAgICBlbnVtIEV2ZW50
UmVzdWx0IHsKICAgICAgICAgRGlkTm90SGFuZGxlRXZlbnQsCiAgICAgICAgIERpZEhhbmRsZUV2
ZW50LAogICAgICAgICBTZW5kVG9NYWluVGhyZWFkCiAgICAgfTsKKyAgICAKKyAgICB2aXJ0dWFs
IGJvb2wgaXNUaHJlYWRlZFNjcm9sbGluZ1RyZWUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQog
Ci0gICAgLy8gQ2FuIGJlIGNhbGxlZCBmcm9tIGFueSB0aHJlYWQuIFdpbGwgdHJ5IHRvIGhhbmRs
ZSB0aGUgd2hlZWwgZXZlbnQgb24gdGhlIHNjcm9sbGluZyB0aHJlYWQuCi0gICAgLy8gUmV0dXJu
cyB0cnVlIGlmIHRoZSB3aGVlbCBldmVudCBjYW4gYmUgaGFuZGxlZCBvbiB0aGUgc2Nyb2xsaW5n
IHRocmVhZCBhbmQgZmFsc2UgaWYgdGhlCi0gICAgLy8gZXZlbnQgbXVzdCBiZSBzZW50IGFnYWlu
IHRvIHRoZSBXZWJDb3JlIGV2ZW50IGhhbmRsZXIuCi0gICAgRXZlbnRSZXN1bHQgdHJ5VG9IYW5k
bGVXaGVlbEV2ZW50KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYpOwotICAgIGJvb2wgaGFzV2hl
ZWxFdmVudEhhbmRsZXJzKCkgY29uc3QgeyByZXR1cm4gbV9oYXNXaGVlbEV2ZW50SGFuZGxlcnM7
IH0KLQotICAgIC8vIE11c3QgYmUgY2FsbGVkIGZyb20gdGhlIHNjcm9sbGluZyB0aHJlYWQuIEhh
bmRsZXMgdGhlIHdoZWVsIGV2ZW50LgotICAgIHZvaWQgaGFuZGxlV2hlZWxFdmVudChjb25zdCBQ
bGF0Zm9ybVdoZWVsRXZlbnQmKTsKKyAgICB2aXJ0dWFsIEV2ZW50UmVzdWx0IHRyeVRvSGFuZGxl
V2hlZWxFdmVudChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmKSA9IDA7CisgICAgYm9vbCBzaG91
bGRIYW5kbGVXaGVlbEV2ZW50U3luY2hyb25vdXNseShjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQm
KTsKIAogICAgIHZvaWQgc2V0TWFpbkZyYW1lSXNSdWJiZXJCYW5kaW5nKGJvb2wpOwogICAgIGJv
b2wgaXNSdWJiZXJCYW5kSW5Qcm9ncmVzcygpOwogCi0gICAgdm9pZCBpbnZhbGlkYXRlKCk7Ci0g
ICAgdm9pZCBjb21taXROZXdUcmVlU3RhdGUoUGFzc093blB0cjxTY3JvbGxpbmdTdGF0ZVRyZWU+
KTsKKyAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZSgpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBj
b21taXROZXdUcmVlU3RhdGUoUGFzc093blB0cjxTY3JvbGxpbmdTdGF0ZVRyZWU+KTsKIAogICAg
IHZvaWQgc2V0TWFpbkZyYW1lUGluU3RhdGUoYm9vbCBwaW5uZWRUb1RoZUxlZnQsIGJvb2wgcGlu
bmVkVG9UaGVSaWdodCwgYm9vbCBwaW5uZWRUb1RoZVRvcCwgYm9vbCBwaW5uZWRUb1RoZUJvdHRv
bSk7CiAKLSAgICB2b2lkIHVwZGF0ZU1haW5GcmFtZVNjcm9sbFBvc2l0aW9uKGNvbnN0IEludFBv
aW50JiBzY3JvbGxQb3NpdGlvbiwgU2V0T3JTeW5jU2Nyb2xsaW5nTGF5ZXJQb3NpdGlvbiA9IFN5
bmNTY3JvbGxpbmdMYXllclBvc2l0aW9uKTsKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlTWFpbkZy
YW1lU2Nyb2xsUG9zaXRpb24oY29uc3QgSW50UG9pbnQmIHNjcm9sbFBvc2l0aW9uLCBTZXRPclN5
bmNTY3JvbGxpbmdMYXllclBvc2l0aW9uID0gU3luY1Njcm9sbGluZ0xheWVyUG9zaXRpb24pID0g
MDsKICAgICBJbnRQb2ludCBtYWluRnJhbWVTY3JvbGxQb3NpdGlvbigpOwogCiAjaWYgUExBVEZP
Uk0oTUFDKQotICAgIHZvaWQgaGFuZGxlV2hlZWxFdmVudFBoYXNlKFBsYXRmb3JtV2hlZWxFdmVu
dFBoYXNlKTsKKyAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlV2hlZWxFdmVudFBoYXNlKFBsYXRmb3Jt
V2hlZWxFdmVudFBoYXNlKSA9IDA7CiAjZW5kaWYKIAogICAgIC8vIENhbiBiZSBjYWxsZWQgZnJv
bSBhbnkgdGhyZWFkLiBXaWxsIHVwZGF0ZSB3aGF0IGVkZ2VzIGFsbG93IHJ1YmJlci1iYW5kaW5n
LgpAQCAtOTgsNiArODMsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBydWJiZXJCYW5kc0F0UmlnaHQo
KTsKICAgICBib29sIHJ1YmJlckJhbmRzQXRUb3AoKTsKICAgICBib29sIHJ1YmJlckJhbmRzQXRC
b3R0b20oKTsKKyAgICBib29sIGlzSGFuZGxpbmdQcm9ncmFtbWF0aWNTY3JvbGwoKTsKICAgICAK
ICAgICB2b2lkIHNldFNjcm9sbFBpbm5pbmdCZWhhdmlvcihTY3JvbGxQaW5uaW5nQmVoYXZpb3Ip
OwogICAgIFNjcm9sbFBpbm5pbmdCZWhhdmlvciBzY3JvbGxQaW5uaW5nQmVoYXZpb3IoKTsKQEAg
LTEwOSwxMyArOTUsMTQgQEAgcHVibGljOgogCiAgICAgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05v
ZGUqIHJvb3ROb2RlKCkgY29uc3QgeyByZXR1cm4gbV9yb290Tm9kZS5nZXQoKTsgfQogCi1wcml2
YXRlOgotICAgIGV4cGxpY2l0IFNjcm9sbGluZ1RyZWUoU2Nyb2xsaW5nQ29vcmRpbmF0b3IqKTsK
K3Byb3RlY3RlZDoKKyAgICB2b2lkIHNldE1haW5GcmFtZVNjcm9sbFBvc2l0aW9uKEludFBvaW50
KTsKKyAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlV2hlZWxFdmVudChjb25zdCBQbGF0Zm9ybVdoZWVs
RXZlbnQmKTsKIAorcHJpdmF0ZToKICAgICB2b2lkIHJlbW92ZURlc3Ryb3llZE5vZGVzKGNvbnN0
IFNjcm9sbGluZ1N0YXRlVHJlZSYpOwogICAgIHZvaWQgdXBkYXRlVHJlZUZyb21TdGF0ZU5vZGUo
Y29uc3QgU2Nyb2xsaW5nU3RhdGVOb2RlKik7CiAKLSAgICBSZWZQdHI8U2Nyb2xsaW5nQ29vcmRp
bmF0b3I+IG1fc2Nyb2xsaW5nQ29vcmRpbmF0b3I7CiAgICAgT3duUHRyPFNjcm9sbGluZ1RyZWVT
Y3JvbGxpbmdOb2RlPiBtX3Jvb3ROb2RlOwogCiAgICAgdHlwZWRlZiBIYXNoTWFwPFNjcm9sbGlu
Z05vZGVJRCwgU2Nyb2xsaW5nVHJlZU5vZGUqPiBTY3JvbGxpbmdUcmVlTm9kZU1hcDsKQEAgLTE0
Myw2ICsxMzAsOSBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9pc0hhbmRsaW5nUHJvZ3JhbW1hdGlj
U2Nyb2xsOwogfTsKIAorI2RlZmluZSBTQ1JPTExJTkdfVFJFRV9UWVBFX0NBU1RTKFRvVmFsdWVU
eXBlTmFtZSwgcHJlZGljYXRlKSBcCisgICAgVFlQRV9DQVNUU19CQVNFKFRvVmFsdWVUeXBlTmFt
ZSwgU2Nyb2xsaW5nVHJlZSwgdmFsdWUsIHZhbHVlLT5wcmVkaWNhdGUsIHZhbHVlLnByZWRpY2F0
ZSkKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKEFTWU5DX1ND
Uk9MTElORykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1RocmVh
ZGVkU2Nyb2xsaW5nVHJlZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9UaHJl
YWRlZFNjcm9sbGluZ1RyZWUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ4NTdkYWZmNDkyNDNiYjVhNDg3NTVk
NGQxYTc1MzIwM2Q5MjVlMjQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L3Njcm9sbGluZy9UaHJlYWRlZFNjcm9sbGluZ1RyZWUuY3BwCkBAIC0wLDAgKzEsMTI1IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlRocmVhZGVkU2Nyb2xs
aW5nVHJlZS5oIgorCisjaWYgRU5BQkxFKEFTWU5DX1NDUk9MTElORykKKworI2luY2x1ZGUgIlBs
YXRmb3JtV2hlZWxFdmVudC5oIgorI2luY2x1ZGUgIlNjcm9sbGluZ0Nvb3JkaW5hdG9yLmgiCisj
aW5jbHVkZSAiU2Nyb2xsaW5nVGhyZWFkLmgiCisjaW5jbHVkZSAiU2Nyb2xsaW5nVHJlZUZpeGVk
Tm9kZS5oIgorI2luY2x1ZGUgIlNjcm9sbGluZ1RyZWVOb2RlLmgiCisjaW5jbHVkZSAiU2Nyb2xs
aW5nVHJlZVNjcm9sbGluZ05vZGUuaCIKKyNpbmNsdWRlICJTY3JvbGxpbmdUcmVlU3RpY2t5Tm9k
ZS5oIgorI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CisjaW5jbHVkZSA8d3RmL1RlbXBvcmFy
eUNoYW5nZS5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1JlZlB0cjxUaHJlYWRlZFNjcm9s
bGluZ1RyZWU+IFRocmVhZGVkU2Nyb2xsaW5nVHJlZTo6Y3JlYXRlKFNjcm9sbGluZ0Nvb3JkaW5h
dG9yKiBzY3JvbGxpbmdDb29yZGluYXRvcikKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IFRo
cmVhZGVkU2Nyb2xsaW5nVHJlZShzY3JvbGxpbmdDb29yZGluYXRvcikpOworfQorCitUaHJlYWRl
ZFNjcm9sbGluZ1RyZWU6OlRocmVhZGVkU2Nyb2xsaW5nVHJlZShTY3JvbGxpbmdDb29yZGluYXRv
ciogc2Nyb2xsaW5nQ29vcmRpbmF0b3IpCisgICAgOiBtX3Njcm9sbGluZ0Nvb3JkaW5hdG9yKHNj
cm9sbGluZ0Nvb3JkaW5hdG9yKQoreworfQorCitUaHJlYWRlZFNjcm9sbGluZ1RyZWU6On5UaHJl
YWRlZFNjcm9sbGluZ1RyZWUoKQoreworICAgIC8vIGludmFsaWRhdGUoKSBzaG91bGQgaGF2ZSBj
bGVhcmVkIG1fc2Nyb2xsaW5nQ29vcmRpbmF0b3IuCisgICAgQVNTRVJUKCFtX3Njcm9sbGluZ0Nv
b3JkaW5hdG9yKTsKK30KKworU2Nyb2xsaW5nVHJlZTo6RXZlbnRSZXN1bHQgVGhyZWFkZWRTY3Jv
bGxpbmdUcmVlOjp0cnlUb0hhbmRsZVdoZWVsRXZlbnQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50
JiB3aGVlbEV2ZW50KQoreworICAgIGlmIChzaG91bGRIYW5kbGVXaGVlbEV2ZW50U3luY2hyb25v
dXNseSh3aGVlbEV2ZW50KSkKKyAgICAgICAgcmV0dXJuIFNlbmRUb01haW5UaHJlYWQ7CisKKyAg
ICBpZiAod2lsbFdoZWVsRXZlbnRTdGFydFN3aXBlR2VzdHVyZSh3aGVlbEV2ZW50KSkKKyAgICAg
ICAgcmV0dXJuIERpZE5vdEhhbmRsZUV2ZW50OworCisgICAgU2Nyb2xsaW5nVGhyZWFkOjpkaXNw
YXRjaChiaW5kKCZUaHJlYWRlZFNjcm9sbGluZ1RyZWU6OmhhbmRsZVdoZWVsRXZlbnQsIHRoaXMs
IHdoZWVsRXZlbnQpKTsKKyAgICByZXR1cm4gRGlkSGFuZGxlRXZlbnQ7Cit9CisKK3ZvaWQgVGhy
ZWFkZWRTY3JvbGxpbmdUcmVlOjpoYW5kbGVXaGVlbEV2ZW50KGNvbnN0IFBsYXRmb3JtV2hlZWxF
dmVudCYgd2hlZWxFdmVudCkKK3sKKyAgICBBU1NFUlQoU2Nyb2xsaW5nVGhyZWFkOjppc0N1cnJl
bnRUaHJlYWQoKSk7CisgICAgU2Nyb2xsaW5nVHJlZTo6aGFuZGxlV2hlZWxFdmVudCh3aGVlbEV2
ZW50KTsKK30KKworc3RhdGljIHZvaWQgZGVyZWZTY3JvbGxpbmdDb29yZGluYXRvcihTY3JvbGxp
bmdDb29yZGluYXRvciogc2Nyb2xsaW5nQ29vcmRpbmF0b3IpCit7CisgICAgQVNTRVJUKGlzTWFp
blRocmVhZCgpKTsKKworICAgIHNjcm9sbGluZ0Nvb3JkaW5hdG9yLT5kZXJlZigpOworfQorCit2
b2lkIFRocmVhZGVkU2Nyb2xsaW5nVHJlZTo6aW52YWxpZGF0ZSgpCit7CisgICAgLy8gSW52YWxp
ZGF0ZSBpcyBkaXNwYXRjaGVkIGJ5IHRoZSBTY3JvbGxpbmdDb29yZGluYXRvciBjbGFzcyBvbiB0
aGUgU2Nyb2xsaW5nVGhyZWFkCisgICAgLy8gdG8gYnJlYWsgdGhlIHJlZmVyZW5jZSBjeWNsZSBi
ZXR3ZWVuIFNjcm9sbGluZ1RyZWUgYW5kIFNjcm9sbGluZ0Nvb3JkaW5hdG9yIHdoZW4gdGhlCisg
ICAgLy8gU2Nyb2xsaW5nQ29vcmRpbmF0b3IncyBwYWdlIGlzIGRlc3Ryb3llZC4KKyAgICBBU1NF
UlQoU2Nyb2xsaW5nVGhyZWFkOjppc0N1cnJlbnRUaHJlYWQoKSk7CisKKyAgICAvLyBTaW5jZSB0
aGlzIGNhbiBwb3RlbnRpYWxseSBiZSB0aGUgbGFzdCByZWZlcmVuY2UgdG8gdGhlIHNjcm9sbGlu
ZyBjb29yZGluYXRvciwKKyAgICAvLyB3ZSBuZWVkIHRvIHJlbGVhc2UgaXQgb24gdGhlIG1haW4g
dGhyZWFkIHNpbmNlIGl0IGhhcyBtZW1iZXIgdmFyaWFibGVzIChzdWNoIGFzIHRpbWVycykKKyAg
ICAvLyB0aGF0IGV4cGVjdCB0byBiZSBkZXN0cm95ZWQgZnJvbSB0aGUgbWFpbiB0aHJlYWQuCisg
ICAgY2FsbE9uTWFpblRocmVhZChiaW5kKGRlcmVmU2Nyb2xsaW5nQ29vcmRpbmF0b3IsIG1fc2Ny
b2xsaW5nQ29vcmRpbmF0b3IucmVsZWFzZSgpLmxlYWtSZWYoKSkpOworfQorCit2b2lkIFRocmVh
ZGVkU2Nyb2xsaW5nVHJlZTo6Y29tbWl0TmV3VHJlZVN0YXRlKFBhc3NPd25QdHI8U2Nyb2xsaW5n
U3RhdGVUcmVlPiBzY3JvbGxpbmdTdGF0ZVRyZWUpCit7CisgICAgQVNTRVJUKFNjcm9sbGluZ1Ro
cmVhZDo6aXNDdXJyZW50VGhyZWFkKCkpOworICAgIFNjcm9sbGluZ1RyZWU6OmNvbW1pdE5ld1Ry
ZWVTdGF0ZShzY3JvbGxpbmdTdGF0ZVRyZWUpOworfQorCit2b2lkIFRocmVhZGVkU2Nyb2xsaW5n
VHJlZTo6dXBkYXRlTWFpbkZyYW1lU2Nyb2xsUG9zaXRpb24oY29uc3QgSW50UG9pbnQmIHNjcm9s
bFBvc2l0aW9uLCBTZXRPclN5bmNTY3JvbGxpbmdMYXllclBvc2l0aW9uIHNjcm9sbGluZ0xheWVy
UG9zaXRpb25BY3Rpb24pCit7CisgICAgaWYgKCFtX3Njcm9sbGluZ0Nvb3JkaW5hdG9yKQorICAg
ICAgICByZXR1cm47CisKKyAgICBzZXRNYWluRnJhbWVTY3JvbGxQb3NpdGlvbihzY3JvbGxQb3Np
dGlvbik7CisKKyAgICBjYWxsT25NYWluVGhyZWFkKGJpbmQoJlNjcm9sbGluZ0Nvb3JkaW5hdG9y
OjpzY2hlZHVsZVVwZGF0ZU1haW5GcmFtZVNjcm9sbFBvc2l0aW9uLCBtX3Njcm9sbGluZ0Nvb3Jk
aW5hdG9yLmdldCgpLCBzY3JvbGxQb3NpdGlvbiwgaXNIYW5kbGluZ1Byb2dyYW1tYXRpY1Njcm9s
bCgpLCBzY3JvbGxpbmdMYXllclBvc2l0aW9uQWN0aW9uKSk7Cit9CisKKyNpZiBQTEFURk9STShN
QUMpCit2b2lkIFRocmVhZGVkU2Nyb2xsaW5nVHJlZTo6aGFuZGxlV2hlZWxFdmVudFBoYXNlKFBs
YXRmb3JtV2hlZWxFdmVudFBoYXNlIHBoYXNlKQoreworICAgIGlmICghbV9zY3JvbGxpbmdDb29y
ZGluYXRvcikKKyAgICAgICAgcmV0dXJuOworCisgICAgY2FsbE9uTWFpblRocmVhZChiaW5kKCZT
Y3JvbGxpbmdDb29yZGluYXRvcjo6aGFuZGxlV2hlZWxFdmVudFBoYXNlLCBtX3Njcm9sbGluZ0Nv
b3JkaW5hdG9yLmdldCgpLCBwaGFzZSkpOworfQorI2VuZGlmCisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShBU1lOQ19TQ1JPTExJTkcpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9UaHJlYWRlZFNjcm9sbGluZ1RyZWUuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1RocmVhZGVkU2Nyb2xsaW5nVHJlZS5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmIwNjUxODdjMjYwNjdiYjg2NjE2NmMyOTA3ZGY0YzM3MDEyZDY4OGEKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9UaHJlYWRlZFNjcm9sbGlu
Z1RyZWUuaApAQCAtMCwwICsxLDc3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBUaHJlYWRlZFNj
cm9sbGluZ1RyZWVfaAorI2RlZmluZSBUaHJlYWRlZFNjcm9sbGluZ1RyZWVfaAorCisjaWYgRU5B
QkxFKEFTWU5DX1NDUk9MTElORykKKworI2luY2x1ZGUgIlNjcm9sbGluZ1N0YXRlVHJlZS5oIgor
I2luY2x1ZGUgIlNjcm9sbGluZ1RyZWUuaCIKKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgor
I2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisvLyBUaGUg
VGhyZWFkZWRTY3JvbGxpbmdUcmVlIGNsYXNzIGxpdmVzIGFsbW9zdCBleGNsdXNpdmVseSBvbiB0
aGUgc2Nyb2xsaW5nIHRocmVhZCBhbmQgbWFuYWdlcyB0aGUKKy8vIGhpZXJhcmNoeSBvZiBzY3Jv
bGxhYmxlIHJlZ2lvbnMgb24gdGhlIHBhZ2UuIEl0J3MgYWxzbyByZXNwb25zaWJsZSBmb3IgZGlz
cGF0Y2hpbmcgZXZlbnRzCisvLyB0byB0aGUgY29ycmVjdCBzY3JvbGxpbmcgdHJlZSBub2RlcyBv
ciBkaXNwYXRjaGluZyBldmVudHMgYmFjayB0byB0aGUgU2Nyb2xsaW5nQ29vcmRpbmF0b3IKKy8v
IG9iamVjdCBvbiB0aGUgbWFpbiB0aHJlYWQgaWYgdGhleSBjYW4ndCBiZSBoYW5kbGVkIG9uIHRo
ZSBzY3JvbGxpbmcgdGhyZWFkIGZvciB2YXJpb3VzIHJlYXNvbnMuCitjbGFzcyBUaHJlYWRlZFNj
cm9sbGluZ1RyZWUgOiBwdWJsaWMgU2Nyb2xsaW5nVHJlZSB7CitwdWJsaWM6CisgICAgc3RhdGlj
IFJlZlB0cjxUaHJlYWRlZFNjcm9sbGluZ1RyZWU+IGNyZWF0ZShTY3JvbGxpbmdDb29yZGluYXRv
ciopOworCisgICAgdmlydHVhbCB+VGhyZWFkZWRTY3JvbGxpbmdUcmVlKCk7CisKKyAgICB2aXJ0
dWFsIGJvb2wgaXNUaHJlYWRlZFNjcm9sbGluZ1RyZWUoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9
CisKKyAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlV2hlZWxFdmVudChjb25zdCBQbGF0Zm9ybVdoZWVs
RXZlbnQmKSBPVkVSUklERTsKKworICAgIC8vIENhbiBiZSBjYWxsZWQgZnJvbSBhbnkgdGhyZWFk
LiBXaWxsIHRyeSB0byBoYW5kbGUgdGhlIHdoZWVsIGV2ZW50IG9uIHRoZSBzY3JvbGxpbmcgdGhy
ZWFkLgorICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGUgd2hlZWwgZXZlbnQgY2FuIGJlIGhhbmRs
ZWQgb24gdGhlIHNjcm9sbGluZyB0aHJlYWQgYW5kIGZhbHNlIGlmIHRoZQorICAgIC8vIGV2ZW50
IG11c3QgYmUgc2VudCBhZ2FpbiB0byB0aGUgV2ViQ29yZSBldmVudCBoYW5kbGVyLgorICAgIHZp
cnR1YWwgRXZlbnRSZXN1bHQgdHJ5VG9IYW5kbGVXaGVlbEV2ZW50KGNvbnN0IFBsYXRmb3JtV2hl
ZWxFdmVudCYpIE9WRVJSSURFOworCisgICAgdmlydHVhbCB2b2lkIGludmFsaWRhdGUoKSBPVkVS
UklERTsKKworcHJpdmF0ZToKKyAgICBleHBsaWNpdCBUaHJlYWRlZFNjcm9sbGluZ1RyZWUoU2Ny
b2xsaW5nQ29vcmRpbmF0b3IqKTsKKworICAgIHZpcnR1YWwgdm9pZCBjb21taXROZXdUcmVlU3Rh
dGUoUGFzc093blB0cjxTY3JvbGxpbmdTdGF0ZVRyZWU+KSBPVkVSUklERTsKKyAgICB2aXJ0dWFs
IHZvaWQgdXBkYXRlTWFpbkZyYW1lU2Nyb2xsUG9zaXRpb24oY29uc3QgSW50UG9pbnQmIHNjcm9s
bFBvc2l0aW9uLCBTZXRPclN5bmNTY3JvbGxpbmdMYXllclBvc2l0aW9uID0gU3luY1Njcm9sbGlu
Z0xheWVyUG9zaXRpb24pIE9WRVJSSURFOworI2lmIFBMQVRGT1JNKE1BQykKKyAgICB2aXJ0dWFs
IHZvaWQgaGFuZGxlV2hlZWxFdmVudFBoYXNlKFBsYXRmb3JtV2hlZWxFdmVudFBoYXNlKSBPVkVS
UklERTsKKyNlbmRpZgorCisgICAgUmVmUHRyPFNjcm9sbGluZ0Nvb3JkaW5hdG9yPiBtX3Njcm9s
bGluZ0Nvb3JkaW5hdG9yOworfTsKKworU0NST0xMSU5HX1RSRUVfVFlQRV9DQVNUUyhUaHJlYWRl
ZFNjcm9sbGluZ1RyZWUsIGlzVGhyZWFkZWRTY3JvbGxpbmdUcmVlKCkpOworCit9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoQVNZTkNfU0NST0xMSU5HKQorCisjZW5k
aWYgLy8gVGhyZWFkZWRTY3JvbGxpbmdUcmVlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdDb29yZGluYXRvck1hYy5oIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ0Nvb3JkaW5hdG9yTWFjLmgKaW5kZXgg
MzYwZTNiMWRlNDRlNDQyZTk0ZmRhNzhiOGMwYmYwYjIzNDdhZDQ4Yy4uYTQxN2M3MTVlNDA2MjI1
YTc1MGYxMDQ0YTVkNmJiYjNjMTRiMDcxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ0Nvb3JkaW5hdG9yTWFjLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ0Nvb3JkaW5hdG9yTWFjLmgKQEAgLTM2
LDYgKzM2LDcgQEAgY2xhc3MgU2Nyb2xsYmFyOwogY2xhc3MgU2Nyb2xsaW5nU3RhdGVOb2RlOwog
Y2xhc3MgU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOwogY2xhc3MgU2Nyb2xsaW5nU3RhdGVU
cmVlOworY2xhc3MgVGhyZWFkZWRTY3JvbGxpbmdUcmVlOwogCiBjbGFzcyBTY3JvbGxpbmdDb29y
ZGluYXRvck1hYyA6IHB1YmxpYyBTY3JvbGxpbmdDb29yZGluYXRvciB7CiBwdWJsaWM6CkBAIC0x
MTQsNyArMTE1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNvbW1pdFRyZWVTdGF0ZSgpOwogCiAg
ICAgT3duUHRyPFNjcm9sbGluZ1N0YXRlVHJlZT4gbV9zY3JvbGxpbmdTdGF0ZVRyZWU7Ci0gICAg
UmVmUHRyPFNjcm9sbGluZ1RyZWU+IG1fc2Nyb2xsaW5nVHJlZTsKKyAgICBSZWZQdHI8VGhyZWFk
ZWRTY3JvbGxpbmdUcmVlPiBtX3Njcm9sbGluZ1RyZWU7CiAgICAgVGltZXI8U2Nyb2xsaW5nQ29v
cmRpbmF0b3JNYWM+IG1fc2Nyb2xsaW5nU3RhdGVUcmVlQ29tbWl0dGVyVGltZXI7CiB9OwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nQ29v
cmRpbmF0b3JNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xs
aW5nQ29vcmRpbmF0b3JNYWMubW0KaW5kZXggYTI4MzZiZDAxODI2MzI3NDBhYzNiOTA3MzBhZTZi
MGE3YjIxNzg4OC4uNzk4YTE5NTBkZTk5ZDliMWVjZWM2ZGY3YmJmODY5NmFmYzYzZmQwYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ0Nvb3Jk
aW5hdG9yTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3Jv
bGxpbmdDb29yZGluYXRvck1hYy5tbQpAQCAtNDYsNyArNDYsNyBAQAogI2luY2x1ZGUgIlNjcm9s
bGluZ1N0YXRlU3RpY2t5Tm9kZS5oIgogI2luY2x1ZGUgIlNjcm9sbGluZ1N0YXRlVHJlZS5oIgog
I2luY2x1ZGUgIlNjcm9sbGluZ1RocmVhZC5oIgotI2luY2x1ZGUgIlNjcm9sbGluZ1RyZWUuaCIK
KyNpbmNsdWRlICJUaHJlYWRlZFNjcm9sbGluZ1RyZWUuaCIKICNpbmNsdWRlICJUaWxlZEJhY2tp
bmcuaCIKICNpbmNsdWRlIDx3dGYvRnVuY3Rpb25hbC5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhy
ZWFkLmg+CkBAIC02MSw3ICs2MSw3IEBAIGNsYXNzIFNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJpdmF0
ZSB7CiBTY3JvbGxpbmdDb29yZGluYXRvck1hYzo6U2Nyb2xsaW5nQ29vcmRpbmF0b3JNYWMoUGFn
ZSogcGFnZSkKICAgICA6IFNjcm9sbGluZ0Nvb3JkaW5hdG9yKHBhZ2UpCiAgICAgLCBtX3Njcm9s
bGluZ1N0YXRlVHJlZShTY3JvbGxpbmdTdGF0ZVRyZWU6OmNyZWF0ZSgpKQotICAgICwgbV9zY3Jv
bGxpbmdUcmVlKFNjcm9sbGluZ1RyZWU6OmNyZWF0ZSh0aGlzKSkKKyAgICAsIG1fc2Nyb2xsaW5n
VHJlZShUaHJlYWRlZFNjcm9sbGluZ1RyZWU6OmNyZWF0ZSh0aGlzKSkKICAgICAsIG1fc2Nyb2xs
aW5nU3RhdGVUcmVlQ29tbWl0dGVyVGltZXIodGhpcywgJlNjcm9sbGluZ0Nvb3JkaW5hdG9yTWFj
OjpzY3JvbGxpbmdTdGF0ZVRyZWVDb21taXR0ZXJUaW1lckZpcmVkKQogewogfQpAQCAtMjMyLDgg
KzIzMiw3IEBAIGJvb2wgU2Nyb2xsaW5nQ29vcmRpbmF0b3JNYWM6OmhhbmRsZVdoZWVsRXZlbnQo
RnJhbWVWaWV3KiwgY29uc3QgUGxhdGZvcm1XaGVlbEV2CiAgICAgaWYgKG1fc2Nyb2xsaW5nVHJl
ZS0+d2lsbFdoZWVsRXZlbnRTdGFydFN3aXBlR2VzdHVyZSh3aGVlbEV2ZW50KSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCi0gICAgU2Nyb2xsaW5nVGhyZWFkOjpkaXNwYXRjaChiaW5kKCZTY3Jv
bGxpbmdUcmVlOjpoYW5kbGVXaGVlbEV2ZW50LCBtX3Njcm9sbGluZ1RyZWUuZ2V0KCksIHdoZWVs
RXZlbnQpKTsKLQorICAgIFNjcm9sbGluZ1RocmVhZDo6ZGlzcGF0Y2goYmluZCgmVGhyZWFkZWRT
Y3JvbGxpbmdUcmVlOjpoYW5kbGVXaGVlbEV2ZW50LCBtX3Njcm9sbGluZ1RyZWUuZ2V0KCksIHdo
ZWVsRXZlbnQpKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0V2ZW50RGlzcGF0Y2hlci5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRXZlbnREaXNwYXRjaGVyLmNwcAppbmRleCA3N2RhMTAw
MzA1NzAzZmQ5YTVmZDAyNTA4ZTNkYTRhMTdjN2Q4MGI2Li5iZTQ3ZmU3ZTA4YmFkZGE3MDUxN2E1
ZDYxNWNjMmY5MTliNzk4ZjY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvRXZlbnREaXNwYXRjaGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvRXZlbnREaXNwYXRjaGVyLmNwcApAQCAtMzksNyArMzksNyBAQAogI2lmIEVO
QUJMRShBU1lOQ19TQ1JPTExJTkcpCiAjaW5jbHVkZSA8V2ViQ29yZS9TY3JvbGxpbmdDb29yZGlu
YXRvci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2Nyb2xsaW5nVGhyZWFkLmg+Ci0jaW5jbHVkZSA8
V2ViQ29yZS9TY3JvbGxpbmdUcmVlLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9UaHJlYWRlZFNjcm9s
bGluZ1RyZWUuaD4KICNlbmRpZgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKQEAgLTY3LDcg
KzY3LDcgQEAgdm9pZCBFdmVudERpc3BhdGNoZXI6OmFkZFNjcm9sbGluZ1RyZWVGb3JQYWdlKFdl
YlBhZ2UqIHdlYlBhZ2UpCiAKICAgICBBU1NFUlQod2ViUGFnZS0+Y29yZVBhZ2UoKS0+c2Nyb2xs
aW5nQ29vcmRpbmF0b3IoKSk7CiAgICAgQVNTRVJUKCFtX3Njcm9sbGluZ1RyZWVzLmNvbnRhaW5z
KHdlYlBhZ2UtPnBhZ2VJRCgpKSk7Ci0gICAgbV9zY3JvbGxpbmdUcmVlcy5zZXQod2ViUGFnZS0+
cGFnZUlEKCksIHdlYlBhZ2UtPmNvcmVQYWdlKCktPnNjcm9sbGluZ0Nvb3JkaW5hdG9yKCktPnNj
cm9sbGluZ1RyZWUoKSk7CisgICAgbV9zY3JvbGxpbmdUcmVlcy5zZXQod2ViUGFnZS0+cGFnZUlE
KCksIHRvVGhyZWFkZWRTY3JvbGxpbmdUcmVlKHdlYlBhZ2UtPmNvcmVQYWdlKCktPnNjcm9sbGlu
Z0Nvb3JkaW5hdG9yKCktPnNjcm9sbGluZ1RyZWUoKSkpOwogfQogCiB2b2lkIEV2ZW50RGlzcGF0
Y2hlcjo6cmVtb3ZlU2Nyb2xsaW5nVHJlZUZvclBhZ2UoV2ViUGFnZSogd2ViUGFnZSkKQEAgLTg4
LDcgKzg4LDcgQEAgdm9pZCBFdmVudERpc3BhdGNoZXI6OndoZWVsRXZlbnQodWludDY0X3QgcGFn
ZUlELCBjb25zdCBXZWJXaGVlbEV2ZW50JiB3aGVlbEV2ZW4KIHsKICNpZiBFTkFCTEUoQVNZTkNf
U0NST0xMSU5HKQogICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX3Njcm9sbGluZ1RyZWVzTXV0ZXgp
OwotICAgIGlmIChTY3JvbGxpbmdUcmVlKiBzY3JvbGxpbmdUcmVlID0gbV9zY3JvbGxpbmdUcmVl
cy5nZXQocGFnZUlEKSkgeworICAgIGlmIChUaHJlYWRlZFNjcm9sbGluZ1RyZWUqIHNjcm9sbGlu
Z1RyZWUgPSBtX3Njcm9sbGluZ1RyZWVzLmdldChwYWdlSUQpKSB7CiAgICAgICAgIFBsYXRmb3Jt
V2hlZWxFdmVudCBwbGF0Zm9ybVdoZWVsRXZlbnQgPSBwbGF0Zm9ybSh3aGVlbEV2ZW50KTsKIAog
ICAgICAgICAvLyBGSVhNRTogSXQncyBwcmV0dHkgaG9ycmlibGUgdGhhdCB3ZSdyZSB1cGRhdGlu
ZyB0aGUgYmFjay9mb3J3YXJkIHN0YXRlIGhlcmUuCkBAIC05Niw3ICs5Niw3IEBAIHZvaWQgRXZl
bnREaXNwYXRjaGVyOjp3aGVlbEV2ZW50KHVpbnQ2NF90IHBhZ2VJRCwgY29uc3QgV2ViV2hlZWxF
dmVudCYgd2hlZWxFdmVuCiAgICAgICAgIC8vIHNjcm9sbGluZyB0cmVlIGNhbiBiZSBub3RpZmll
ZC4KICAgICAgICAgLy8gV2Ugb25seSBuZWVkIHRvIGRvIHRoaXMgYXQgdGhlIGJlZ2lubmluZyBv
ZiB0aGUgZ2VzdHVyZS4KICAgICAgICAgaWYgKHBsYXRmb3JtV2hlZWxFdmVudC5waGFzZSgpID09
IFBsYXRmb3JtV2hlZWxFdmVudFBoYXNlQmVnYW4pCi0gICAgICAgICAgICBTY3JvbGxpbmdUaHJl
YWQ6OmRpc3BhdGNoKGJpbmQoJlNjcm9sbGluZ1RyZWU6OnNldENhblJ1YmJlckJhbmRTdGF0ZSwg
c2Nyb2xsaW5nVHJlZSwgY2FuUnViYmVyQmFuZEF0TGVmdCwgY2FuUnViYmVyQmFuZEF0UmlnaHQs
IGNhblJ1YmJlckJhbmRBdFRvcCwgY2FuUnViYmVyQmFuZEF0Qm90dG9tKSk7CisgICAgICAgICAg
ICBTY3JvbGxpbmdUaHJlYWQ6OmRpc3BhdGNoKGJpbmQoJlRocmVhZGVkU2Nyb2xsaW5nVHJlZTo6
c2V0Q2FuUnViYmVyQmFuZFN0YXRlLCBzY3JvbGxpbmdUcmVlLCBjYW5SdWJiZXJCYW5kQXRMZWZ0
LCBjYW5SdWJiZXJCYW5kQXRSaWdodCwgY2FuUnViYmVyQmFuZEF0VG9wLCBjYW5SdWJiZXJCYW5k
QXRCb3R0b20pKTsKIAogICAgICAgICBTY3JvbGxpbmdUcmVlOjpFdmVudFJlc3VsdCByZXN1bHQg
PSBzY3JvbGxpbmdUcmVlLT50cnlUb0hhbmRsZVdoZWVsRXZlbnQocGxhdGZvcm1XaGVlbEV2ZW50
KTsKICAgICAgICAgaWYgKHJlc3VsdCA9PSBTY3JvbGxpbmdUcmVlOjpEaWRIYW5kbGVFdmVudCB8
fCByZXN1bHQgPT0gU2Nyb2xsaW5nVHJlZTo6RGlkTm90SGFuZGxlRXZlbnQpIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9FdmVudERpc3BhdGNoZXIuaCBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9FdmVudERpc3BhdGNoZXIuaAppbmRl
eCBhNjNjODAzZDFmNDI4ZGU0YjI0ZmFkY2Y2NzA4MWIwNzhjN2RmOWI3Li43MTAzZjhlMDIwMzBk
OTQxZjk4MGU5ZWVkMWQ4ZjlmNTEzYmZlMGRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvRXZlbnREaXNwYXRjaGVyLmgKKysrIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL0V2ZW50RGlzcGF0Y2hlci5oCkBAIC0zMyw3ICszMyw3IEBACiAj
aW5jbHVkZSA8d3RmL1RocmVhZGluZ1ByaW1pdGl2ZXMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewotICAgIGNsYXNzIFNjcm9sbGluZ1RyZWU7CitjbGFzcyBUaHJlYWRlZFNjcm9sbGluZ1RyZWU7
CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNzQsNyArNzQsNyBAQCBwcml2YXRlOgogCiAj
aWYgRU5BQkxFKEFTWU5DX1NDUk9MTElORykKICAgICBNdXRleCBtX3Njcm9sbGluZ1RyZWVzTXV0
ZXg7Ci0gICAgSGFzaE1hcDx1aW50NjRfdCwgUmVmUHRyPFdlYkNvcmU6OlNjcm9sbGluZ1RyZWU+
PiBtX3Njcm9sbGluZ1RyZWVzOworICAgIEhhc2hNYXA8dWludDY0X3QsIFJlZlB0cjxXZWJDb3Jl
OjpUaHJlYWRlZFNjcm9sbGluZ1RyZWU+PiBtX3Njcm9sbGluZ1RyZWVzOwogI2VuZGlmCiB9Owog
Cg==
</data>
<flag name="review"
          id="243873"
          type_id="1"
          status="+"
          setter="sam"
    />
    <flag name="commit-queue"
          id="243876"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
      

    </bug>

</bugzilla>