<?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>211730</bug_id>
          
          <creation_ts>2020-05-11 10:28:14 -0700</creation_ts>
          <short_desc>Have ScrollingThread use a RunLoop rather than rolling its own</short_desc>
          <delta_ts>2020-05-11 14:52:17 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Scrolling</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="Simon Fraser (smfr)">simon.fraser</reporter>
          <assigned_to name="Simon Fraser (smfr)">simon.fraser</assigned_to>
          <cc>cmarcelo</cc>
    
    <cc>darin</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fred.wang</cc>
    
    <cc>ggaren</cc>
    
    <cc>jamesr</cc>
    
    <cc>luiz</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1651301</commentid>
    <comment_count>0</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-05-11 10:28:14 -0700</bug_when>
    <thetext>Have ScrollingThread use a RunLoop rather than rolling its own</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1651302</commentid>
    <comment_count>1</comment_count>
      <attachid>399025</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-05-11 10:30:10 -0700</bug_when>
    <thetext>Created attachment 399025
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1651310</commentid>
    <comment_count>2</comment_count>
      <attachid>399025</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2020-05-11 10:34:52 -0700</bug_when>
    <thetext>Comment on attachment 399025
Patch

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

&gt; Source/WebCore/page/scrolling/ScrollingThread.cpp:58
&gt; +    static std::once_flag onceFlag;
&gt; +    std::call_once(onceFlag, [] {
&gt; +        auto&amp; scrollingThread = ScrollingThread::singleton();
&gt; +        scrollingThread.createThreadIfNeeded();
&gt; +    });

Should this code just go into the singleton() function?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1651328</commentid>
    <comment_count>3</comment_count>
      <attachid>399029</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-05-11 11:04:52 -0700</bug_when>
    <thetext>Created attachment 399029
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1651366</commentid>
    <comment_count>4</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2020-05-11 12:00:12 -0700</bug_when>
    <thetext>I can&apos;t imagine why, but the EWS Mac-wk2 crash in swipe/pushState-cached-back-swipe.html is reproducible and new.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1651391</commentid>
    <comment_count>5</comment_count>
      <attachid>399029</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-05-11 12:56:12 -0700</bug_when>
    <thetext>Comment on attachment 399029
Patch

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

The EWS failure in mac-wk2 tests looks like it *might* be indirectly caused by this change.

r=me assuming you can resolve that

&gt; Source/WebCore/page/scrolling/ScrollingThread.cpp:41
&gt; +#if PLATFORM(IOS_FAMILY)
&gt; +    ASSERT_NOT_REACHED();
&gt; +#endif

Could we follow the call sites here and instead not even compile this for IOS_FAMILY?

&gt; Source/WebCore/page/scrolling/ScrollingThread.cpp:63
&gt; +    ScrollingThread::singleton().runLoop()-&gt;dispatch(WTFMove(function));

Why does runLoop return a pointer if it’s guaranteed to be non-null? Or, to ask the same question another way, what guarantees that runLoop() is non-null here that doesn’t apply elsewhere?

&gt; Source/WebCore/page/scrolling/ScrollingThread.cpp:73
&gt; +void ScrollingThread::createThread()

Why not put all this code inside inside the constructor? Is there a reason we want to keep this broken out into a separate named function?

&gt; Source/WebCore/page/scrolling/ScrollingThread.cpp:87
&gt; +void ScrollingThread::initializeRunLoop()

Why not put all this code inside the lambda inside createThread? Is there a reason we want to keep this broken out into a separate named function?

If we moved this into createThread, it would likely make it clear that m_initializeRunLoopMutex can be a local variable instead of a data member!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1651406</commentid>
    <comment_count>6</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-05-11 13:29:36 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #5)
&gt; Comment on attachment 399029 [details]

&gt; Why not put all this code inside the lambda inside createThread? Is there a
&gt; reason we want to keep this broken out into a separate named function?
&gt; 
&gt; If we moved this into createThread, it would likely make it clear that
&gt; m_initializeRunLoopMutex can be a local variable instead of a data member!

Even better, I think I can just use a BinarySemaphore.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1651416</commentid>
    <comment_count>7</comment_count>
      <attachid>399052</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-05-11 13:44:03 -0700</bug_when>
    <thetext>Created attachment 399052
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1651419</commentid>
    <comment_count>8</comment_count>
      <attachid>399052</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-05-11 13:49:19 -0700</bug_when>
    <thetext>Comment on attachment 399052
Patch

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

Sure does look nice

&gt; Source/WebCore/page/scrolling/ScrollingThread.cpp:58
&gt; +

I’d leave this blank line out.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1651469</commentid>
    <comment_count>9</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-05-11 14:51:31 -0700</bug_when>
    <thetext>Committed r261494: &lt;https://trac.webkit.org/changeset/261494&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 399052.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1651470</commentid>
    <comment_count>10</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-05-11 14:52:17 -0700</bug_when>
    <thetext>&lt;rdar://problem/63106926&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>399025</attachid>
            <date>2020-05-11 10:30:10 -0700</date>
            <delta_ts>2020-05-11 11:04:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-211730-20200511103009.patch</filename>
            <type>text/plain</type>
            <size>12236</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYxNDI3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGIxOWFmODRmMTRlODAw
Mjc0NWYzMDBlNWUyMzc1MTllMGNiMzE3Yy4uNjUxYjYwZWFmY2U1MDY2YzBhOWNlNzM1NjhjNDcx
YjFkNGU2OTI2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDIwLTA1LTExICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIEhhdmUgU2Nyb2xs
aW5nVGhyZWFkIHVzZSBhIFJ1bkxvb3AgcmF0aGVyIHRoYW4gcm9sbGluZyBpdHMgb3duCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTE3MzAKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTY3JvbGxpbmdUaHJl
YWQgcm9sbGVkIGl0cyBvd24gcnVubG9vcC9mdW5jdGlvbiBkaXNwYXRjaCBieSBkcm9wcGluZyB0
byBDRiBmb3IgbWFjT1MuCisgICAgICAgIEZpeCB0byB1c2UgUnVuTG9vcCB3aGljaCBwcm92aWRl
cyB0aGUgc2FtZSBmdW5jdGlvbmFsaXR5LgorCisgICAgICAgIFRoZXJlIHdhcyBhbHNvIGEgcmFj
ZSBjcmVhdGluZyB0aGUgU2Nyb2xsaW5nVGhyZWFkIGZvciB0aGUgZmlyc3QgdGltZSwgc2luY2Ug
Ym90aAorICAgICAgICB0aGUgbWFpbiB0aHJlYWQsIGFuZCBFdmVudERpc3BhdGNoZXIgY2FuIGNh
bGwgU2Nyb2xsaW5nVGhyZWFkOjpkaXNwYXRjaCgpIGVhcmx5IG9uLAorICAgICAgICBzbyBmaXgg
d2l0aCBhIHN0ZDo6b25jZSBibG9jay4KKworICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6Cisg
ICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBh
Z2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RocmVhZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3Jv
bGxpbmdUaHJlYWQ6OnNpbmdsZXRvbik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUaHJl
YWQ6OmRpc3BhdGNoKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RocmVhZDo6Y3JlYXRl
VGhyZWFkSWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVGhyZWFkOjppbml0
aWFsaXplUnVuTG9vcCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUaHJlYWQ6OmRpc3Bh
dGNoRnVuY3Rpb25zRnJvbVNjcm9sbGluZ1RocmVhZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpTY3JvbGxpbmdUaHJlYWQ6Ondha2VVcFJ1bkxvb3ApOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6U2Nyb2xsaW5nVGhyZWFkOjp0aHJlYWRSdW5Mb29wU291cmNlQ2FsbGJhY2spOiBE
ZWxldGVkLgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RocmVhZC5oOgorICAg
ICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVGhyZWFkOjpydW5Mb29wKToKKyAgICAgICAgKiBwYWdl
L3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVGhyZWFkTWFjLm1tOiBSZW1vdmVkLgorCiAyMDIwLTA1
LTA4ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFB1
c2ggYSBQbGF0Zm9ybURpc3BsYXlJRCB0byBzY3JvbGxpbmcgdHJlZXMsIGFuZCBhbGxvdyB0aGUg
c2Nyb2xsaW5nIHRocmVhZCB0byBnZXQgZGlzcGxheURpZFJlZnJlc2ggbm90aWZpY2F0aW9ucwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dCBiL1NvdXJjZS9XZWJD
b3JlL1NvdXJjZXNDb2NvYS50eHQKaW5kZXggNzFiYWIzODY2YTE3OWE2OTVjNzY5MjUyNTg0Zjc3
YzJiY2I2NDYwNi4uMTFiZDhmNDNmMjM1OWJiN2U4ZTIwMjRmN2E3YjdkMzAyZDBkNTJlNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Tb3VyY2VzQ29jb2EudHh0CkBAIC0xNTksNyArMTU5LDYgQEAgcGFnZS9zY3JvbGxpbmcv
Y29jb2EvU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGUubW0KIHBhZ2Uvc2Nyb2xsaW5nL21hYy9TY3Jv
bGxpbmdDb29yZGluYXRvck1hYy5tbQogcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ01vbWVu
dHVtQ2FsY3VsYXRvck1hYy5tbQogcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1N0YXRlU2Ny
b2xsaW5nTm9kZU1hYy5tbQotcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RocmVhZE1hYy5t
bQogcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVNYWMu
bW0KIHBhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2Rl
TWFjLm1tCiBwYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxl
Z2F0ZU1hYy5tbQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCmluZGV4IGI0MzE2N2ZmYzQxYmM3YjM4MTY5NmM1ZDZlNjYxZTBkZmEwNWZlMTku
LmVkM2M0YjlkZGI3OWE1YjM0OTEyZWZkMzE1YTIwZDJmZmMwNDIxMjAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTY1MDMsNyAr
NjUwMyw2IEBACiAJCTFBRjYyRUU1MTREQTIyQTcwMDQxNTU2QyAvKiBTY3JvbGxpbmdDb29yZGlu
YXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY3JvbGxpbmdDb29yZGlu
YXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQUY2MkYyMDE0REFGRTc5MDA0
MTU1NkMgLyogU2Nyb2xsaW5nVGhyZWFkLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFNjcm9sbGluZ1RocmVhZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTFBRjYyRjIxMTREQUZFNzkwMDQxNTU2QyAvKiBTY3JvbGxpbmdUaHJlYWQuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2Nyb2xsaW5nVGhyZWFkLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCTFBRjYyRjIzMTREQUZFOTEwMDQxNTU2QyAvKiBTY3JvbGxpbmdU
aHJlYWRNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBTY3Jv
bGxpbmdUaHJlYWRNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBRjdBRkM1
MUE0OEE4QkMwMEM4RTRFNyAvKiBTZWN1cml0eU9yaWdpblBvbGljeS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTZWN1cml0eU9yaWdpblBvbGljeS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBRjdBRkM2MUE0OEE4QkMwMEM4RTRFNyAvKiBTZWN1
cml0eU9yaWdpblBvbGljeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTZWN1
cml0eU9yaWdpblBvbGljeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQUY4OUE0
MTE1MThGREVBMDBFNTQ3QjUgLyogVGlsZWRCYWNraW5nLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFRpbGVkQmFja2luZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtMTc2NzMsNyArMTc2NzIsNiBAQAogCQkJCTUxN0RFRUU3MURFOTRCMDgwMEI5MTY0NCAvKiBT
Y3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3JNYWMuaCAqLywKIAkJCQk1MTdERUVFMzFERTk0QURD
MDBCOTE2NDQgLyogU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yTWFjLm1tICovLAogCQkJCTBG
NzNCNzY1MjIyQjMyN0YwMDgwNTMxNiAvKiBTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGVNYWMu
bW0gKi8sCi0JCQkJMUFGNjJGMjMxNERBRkU5MTAwNDE1NTZDIC8qIFNjcm9sbGluZ1RocmVhZE1h
Yy5tbSAqLywKIAkJCQk5M0M0QTQxMzE2MjlERjVBMDBDM0VCNkUgLyogU2Nyb2xsaW5nVHJlZUZy
YW1lU2Nyb2xsaW5nTm9kZU1hYy5oICovLAogCQkJCTkzQzRBNDE0MTYyOURGNUEwMEMzRUI2RSAv
KiBTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTWFjLm1tICovLAogCQkJCTBGRTU4MDYy
MTkzMjdBNjIwMERFMzJFQiAvKiBTY3JvbGxpbmdUcmVlTWFjLmggKi8sCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUaHJlYWQuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVGhyZWFkLmNwcAppbmRleCA5MmE2MDg2
MTNkZTAxMmViMThmZmYxMzJjZjQ1MWVkZmEzODJjYzY0Li5mODNkYTA0NjRlNzYwYWNjYjYyZjE3
ZjYyZTVlZTRkZWI0ZDJjYjRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9s
bGluZy9TY3JvbGxpbmdUaHJlYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xs
aW5nL1Njcm9sbGluZ1RocmVhZC5jcHAKQEAgLTM0LDYgKzM0LDEyIEBACiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAorU2Nyb2xsaW5nVGhyZWFkJiBTY3JvbGxpbmdUaHJlYWQ6OnNpbmdsZXRvbigp
Cit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFNjcm9sbGluZ1RocmVhZD4gc2Nyb2xsaW5n
VGhyZWFkOworICAgIHJldHVybiBzY3JvbGxpbmdUaHJlYWQ7Cit9CisKIFNjcm9sbGluZ1RocmVh
ZDo6U2Nyb2xsaW5nVGhyZWFkKCkKIHsKIH0KQEAgLTQ1LDE1ICs1MSwxMyBAQCBib29sIFNjcm9s
bGluZ1RocmVhZDo6aXNDdXJyZW50VGhyZWFkKCkKIAogdm9pZCBTY3JvbGxpbmdUaHJlYWQ6OmRp
c3BhdGNoKEZ1bmN0aW9uPHZvaWQgKCk+JiYgZnVuY3Rpb24pCiB7Ci0gICAgYXV0byYgc2Nyb2xs
aW5nVGhyZWFkID0gU2Nyb2xsaW5nVGhyZWFkOjpzaW5nbGV0b24oKTsKLSAgICBzY3JvbGxpbmdU
aHJlYWQuY3JlYXRlVGhyZWFkSWZOZWVkZWQoKTsKLQotICAgIHsKLSAgICAgICAgYXV0byBsb2Nr
ZXIgPSBob2xkTG9jayhzY3JvbGxpbmdUaHJlYWQubV9mdW5jdGlvbnNNdXRleCk7Ci0gICAgICAg
IHNjcm9sbGluZ1RocmVhZC5tX2Z1bmN0aW9ucy5hcHBlbmQoV1RGTW92ZShmdW5jdGlvbikpOwot
ICAgIH0KKyAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUZsYWc7CisgICAgc3RkOjpjYWxs
X29uY2Uob25jZUZsYWcsIFtdIHsKKyAgICAgICAgYXV0byYgc2Nyb2xsaW5nVGhyZWFkID0gU2Ny
b2xsaW5nVGhyZWFkOjpzaW5nbGV0b24oKTsKKyAgICAgICAgc2Nyb2xsaW5nVGhyZWFkLmNyZWF0
ZVRocmVhZElmTmVlZGVkKCk7CisgICAgfSk7CiAKLSAgICBzY3JvbGxpbmdUaHJlYWQud2FrZVVw
UnVuTG9vcCgpOworICAgIFNjcm9sbGluZ1RocmVhZDo6c2luZ2xldG9uKCkucnVuTG9vcCgpLT5k
aXNwYXRjaChXVEZNb3ZlKGZ1bmN0aW9uKSk7CiB9CiAKIHZvaWQgU2Nyb2xsaW5nVGhyZWFkOjpk
aXNwYXRjaEJhcnJpZXIoRnVuY3Rpb248dm9pZCAoKT4mJiBmdW5jdGlvbikKQEAgLTYzLDEzICs2
Nyw2IEBAIHZvaWQgU2Nyb2xsaW5nVGhyZWFkOjpkaXNwYXRjaEJhcnJpZXIoRnVuY3Rpb248dm9p
ZCAoKT4mJiBmdW5jdGlvbikKICAgICB9KTsKIH0KIAotU2Nyb2xsaW5nVGhyZWFkJiBTY3JvbGxp
bmdUaHJlYWQ6OnNpbmdsZXRvbigpCi17Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFNjcm9s
bGluZ1RocmVhZD4gc2Nyb2xsaW5nVGhyZWFkOwotCi0gICAgcmV0dXJuIHNjcm9sbGluZ1RocmVh
ZDsKLX0KLQogdm9pZCBTY3JvbGxpbmdUaHJlYWQ6OmNyZWF0ZVRocmVhZElmTmVlZGVkKCkKIHsK
ICAgICAvLyBXYWl0IGZvciB0aGUgdGhyZWFkIHRvIGluaXRpYWxpemUgdGhlIHJ1biBsb29wLgpA
QCAtODIsNDYgKzc5LDE5IEBAIHZvaWQgU2Nyb2xsaW5nVGhyZWFkOjpjcmVhdGVUaHJlYWRJZk5l
ZWRlZCgpCiAgICAgICAgIH0pOwogICAgIH0KIAotI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIG1f
aW5pdGlhbGl6ZVJ1bkxvb3BDb25kaXRpb25WYXJpYWJsZS53YWl0KGxvY2ssIFt0aGlzXXsgcmV0
dXJuIG1fdGhyZWFkUnVuTG9vcDsgfSk7Ci0jZWxzZQogICAgIG1faW5pdGlhbGl6ZVJ1bkxvb3BD
b25kaXRpb25WYXJpYWJsZS53YWl0KGxvY2ssIFt0aGlzXXsgcmV0dXJuIG1fcnVuTG9vcDsgfSk7
Ci0jZW5kaWYKIH0KIAotdm9pZCBTY3JvbGxpbmdUaHJlYWQ6OmRpc3BhdGNoRnVuY3Rpb25zRnJv
bVNjcm9sbGluZ1RocmVhZCgpCit2b2lkIFNjcm9sbGluZ1RocmVhZDo6aW5pdGlhbGl6ZVJ1bkxv
b3AoKQogewotICAgIEFTU0VSVChpc0N1cnJlbnRUaHJlYWQoKSk7Ci0KLSAgICBWZWN0b3I8RnVu
Y3Rpb248dm9pZCAoKT4+IGZ1bmN0aW9uczsKLSAgICAKICAgICB7Ci0gICAgICAgIGF1dG8gbG9j
a2VyID0gaG9sZExvY2sobV9mdW5jdGlvbnNNdXRleCk7Ci0gICAgICAgIGZ1bmN0aW9ucyA9IFdU
Rk1vdmUobV9mdW5jdGlvbnMpOworICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1faW5p
dGlhbGl6ZVJ1bkxvb3BNdXRleCk7CisgICAgICAgIG1fcnVuTG9vcCA9ICZSdW5Mb29wOjpjdXJy
ZW50KCk7CisgICAgICAgIG1faW5pdGlhbGl6ZVJ1bkxvb3BDb25kaXRpb25WYXJpYWJsZS5ub3Rp
ZnlBbGwoKTsKICAgICB9Ci0KLSAgICBmb3IgKGF1dG8mIGZ1bmN0aW9uIDogZnVuY3Rpb25zKQot
ICAgICAgICBmdW5jdGlvbigpOwotfQotCi0jaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLU5PX1JF
VFVSTl9EVUVfVE9fQVNTRVJUIHZvaWQgU2Nyb2xsaW5nVGhyZWFkOjppbml0aWFsaXplUnVuTG9v
cCgpCi17Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci19Ci0KLXZvaWQgU2Nyb2xsaW5nVGhy
ZWFkOjp3YWtlVXBSdW5Mb29wKCkKLXsKLX0KLQotdm9pZCBTY3JvbGxpbmdUaHJlYWQ6OnRocmVh
ZFJ1bkxvb3BTb3VyY2VDYWxsYmFjayh2b2lkKikKLXsKLX0KLQotdm9pZCBTY3JvbGxpbmdUaHJl
YWQ6OnRocmVhZFJ1bkxvb3BTb3VyY2VDYWxsYmFjaygpCi17CisgICAgCisgICAgbV9ydW5Mb29w
LT5ydW4oKTsKIH0KLSNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5n
L1Njcm9sbGluZ1RocmVhZC5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xs
aW5nVGhyZWFkLmgKaW5kZXggOTY4NzMxNTIyZWZjNjY2OWQ4NTE1NmQ2NTNlOThmMWQ3NWQxZDkx
OS4uYWFlN2MyZjE0NmUwODFlMTk1N2UxODI2M2UxMDRlNjhhYzQzMzlhZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVGhyZWFkLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVGhyZWFkLmgKQEAgLTMzLDE1ICsz
MywxMCBAQAogI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgogI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+
CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CisjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4K
ICNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCi0j
aWYgUExBVEZPUk0oQ09DT0EpCi0jaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgotI2Vsc2UKLSNp
bmNsdWRlIDx3dGYvUnVuTG9vcC5oPgotI2VuZGlmCi0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
Y2xhc3MgU2Nyb2xsaW5nVGhyZWFkIHsKQEAgLTU4LDM2ICs1MywyMSBAQCBwdWJsaWM6CiBwcml2
YXRlOgogICAgIGZyaWVuZCBOZXZlckRlc3Ryb3llZDxTY3JvbGxpbmdUaHJlYWQ+OwogCi0gICAg
U2Nyb2xsaW5nVGhyZWFkKCk7Ci0KICAgICBzdGF0aWMgU2Nyb2xsaW5nVGhyZWFkJiBzaW5nbGV0
b24oKTsKIAotICAgIHZvaWQgY3JlYXRlVGhyZWFkSWZOZWVkZWQoKTsKLSAgICB2b2lkIGRpc3Bh
dGNoRnVuY3Rpb25zRnJvbVNjcm9sbGluZ1RocmVhZCgpOworICAgIFNjcm9sbGluZ1RocmVhZCgp
OwogCisgICAgdm9pZCBjcmVhdGVUaHJlYWRJZk5lZWRlZCgpOwogICAgIHZvaWQgaW5pdGlhbGl6
ZVJ1bkxvb3AoKTsKLSAgICB2b2lkIHdha2VVcFJ1bkxvb3AoKTsKLQotI2lmIFBMQVRGT1JNKENP
Q09BKQotICAgIHN0YXRpYyB2b2lkIHRocmVhZFJ1bkxvb3BTb3VyY2VDYWxsYmFjayh2b2lkKiBz
Y3JvbGxpbmdUaHJlYWQpOwotICAgIHZvaWQgdGhyZWFkUnVuTG9vcFNvdXJjZUNhbGxiYWNrKCk7
Ci0jZW5kaWYKKyAgICB2b2lkIGRpc3BhdGNoRnVuY3Rpb25zRnJvbVNjcm9sbGluZ1RocmVhZCgp
OworICAgIFJ1bkxvb3AqIHJ1bkxvb3AoKSB7IHJldHVybiBtX3J1bkxvb3A7IH0KIAogICAgIFJl
ZlB0cjxUaHJlYWQ+IG1fdGhyZWFkOwogCiAgICAgQ29uZGl0aW9uIG1faW5pdGlhbGl6ZVJ1bkxv
b3BDb25kaXRpb25WYXJpYWJsZTsKICAgICBMb2NrIG1faW5pdGlhbGl6ZVJ1bkxvb3BNdXRleDsK
IAotICAgIExvY2sgbV9mdW5jdGlvbnNNdXRleDsKLSAgICBWZWN0b3I8RnVuY3Rpb248dm9pZCAo
KT4+IG1fZnVuY3Rpb25zOwotCi0jaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgLy8gRklYTUU6IFdl
IHNob3VsZCB1c2UgV2ViQ29yZTo6UnVuTG9vcCBoZXJlLgotICAgIFJldGFpblB0cjxDRlJ1bkxv
b3BSZWY+IG1fdGhyZWFkUnVuTG9vcDsKLSAgICBSZXRhaW5QdHI8Q0ZSdW5Mb29wU291cmNlUmVm
PiBtX3RocmVhZFJ1bkxvb3BTb3VyY2U7Ci0jZWxzZQogICAgIFJ1bkxvb3AqIG1fcnVuTG9vcCB7
IG51bGxwdHIgfTsKLSNlbmRpZgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RocmVhZE1h
Yy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUaHJlYWRN
YWMubW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVkMDUxNDVmZWUzNTAzNDE2OTQw
MmI3NjYyOGQxMDgxNDU5OTBkYTMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1Ro
cmVhZE1hYy5tbQorKysgL2Rldi9udWxsCkBAIC0xLDc1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0j
aW1wb3J0ICJjb25maWcuaCIKLSNpbXBvcnQgIlNjcm9sbGluZ1RocmVhZC5oIgotCi0jaWYgRU5B
QkxFKEFTWU5DX1NDUk9MTElORykgJiYgUExBVEZPUk0oTUFDKQotCi0jaW1wb3J0IDxtdXRleD4K
LQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi12b2lkIFNjcm9sbGluZ1RocmVhZDo6aW5pdGlhbGl6
ZVJ1bkxvb3AoKQotewotICAgIC8vIEluaXRpYWxpemUgdGhlIHJ1biBsb29wLgotICAgIHsKLSAg
ICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX2luaXRpYWxpemVSdW5Mb29wTXV0ZXgpOwot
Ci0gICAgICAgIG1fdGhyZWFkUnVuTG9vcCA9IENGUnVuTG9vcEdldEN1cnJlbnQoKTsKLQotICAg
ICAgICBDRlJ1bkxvb3BTb3VyY2VDb250ZXh0IGNvbnRleHQgPSB7IDAsIHRoaXMsIDAsIDAsIDAs
IDAsIDAsIDAsIDAsIHRocmVhZFJ1bkxvb3BTb3VyY2VDYWxsYmFjayB9OwotICAgICAgICBtX3Ro
cmVhZFJ1bkxvb3BTb3VyY2UgPSBhZG9wdENGKENGUnVuTG9vcFNvdXJjZUNyZWF0ZSgwLCAwLCAm
Y29udGV4dCkpOwotICAgICAgICBDRlJ1bkxvb3BBZGRTb3VyY2UoQ0ZSdW5Mb29wR2V0Q3VycmVu
dCgpLCBtX3RocmVhZFJ1bkxvb3BTb3VyY2UuZ2V0KCksIGtDRlJ1bkxvb3BEZWZhdWx0TW9kZSk7
Ci0KLSAgICAgICAgbV9pbml0aWFsaXplUnVuTG9vcENvbmRpdGlvblZhcmlhYmxlLm5vdGlmeUFs
bCgpOwotICAgIH0KLQotICAgIEFTU0VSVChpc0N1cnJlbnRUaHJlYWQoKSk7Ci0KLSAgICBDRlJ1
bkxvb3BSdW4oKTsKLX0KLQotdm9pZCBTY3JvbGxpbmdUaHJlYWQ6Ondha2VVcFJ1bkxvb3AoKQot
ewotICAgIENGUnVuTG9vcFNvdXJjZVNpZ25hbChtX3RocmVhZFJ1bkxvb3BTb3VyY2UuZ2V0KCkp
OwotICAgIENGUnVuTG9vcFdha2VVcChtX3RocmVhZFJ1bkxvb3AuZ2V0KCkpOwotfQotCi12b2lk
IFNjcm9sbGluZ1RocmVhZDo6dGhyZWFkUnVuTG9vcFNvdXJjZUNhbGxiYWNrKHZvaWQqIHNjcm9s
bGluZ1RocmVhZCkKLXsKLSAgICBzdGF0aWNfY2FzdDxTY3JvbGxpbmdUaHJlYWQqPihzY3JvbGxp
bmdUaHJlYWQpLT50aHJlYWRSdW5Mb29wU291cmNlQ2FsbGJhY2soKTsKLX0KLQotdm9pZCBTY3Jv
bGxpbmdUaHJlYWQ6OnRocmVhZFJ1bkxvb3BTb3VyY2VDYWxsYmFjaygpCi17Ci0gICAgQGF1dG9y
ZWxlYXNlcG9vbCB7Ci0gICAgICAgIGRpc3BhdGNoRnVuY3Rpb25zRnJvbVNjcm9sbGluZ1RocmVh
ZCgpOwotICAgIH0KLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5B
QkxFKEFTWU5DX1NDUk9MTElORykgJiYgUExBVEZPUk0oTUFDKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>399029</attachid>
            <date>2020-05-11 11:04:52 -0700</date>
            <delta_ts>2020-05-11 12:56:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-211730-20200511110451.patch</filename>
            <type>text/plain</type>
            <size>16221</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYxNDI3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGIxOWFmODRmMTRlODAw
Mjc0NWYzMDBlNWUyMzc1MTllMGNiMzE3Yy4uNjUxYjYwZWFmY2U1MDY2YzBhOWNlNzM1NjhjNDcx
YjFkNGU2OTI2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDIwLTA1LTExICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIEhhdmUgU2Nyb2xs
aW5nVGhyZWFkIHVzZSBhIFJ1bkxvb3AgcmF0aGVyIHRoYW4gcm9sbGluZyBpdHMgb3duCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTE3MzAKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTY3JvbGxpbmdUaHJl
YWQgcm9sbGVkIGl0cyBvd24gcnVubG9vcC9mdW5jdGlvbiBkaXNwYXRjaCBieSBkcm9wcGluZyB0
byBDRiBmb3IgbWFjT1MuCisgICAgICAgIEZpeCB0byB1c2UgUnVuTG9vcCB3aGljaCBwcm92aWRl
cyB0aGUgc2FtZSBmdW5jdGlvbmFsaXR5LgorCisgICAgICAgIFRoZXJlIHdhcyBhbHNvIGEgcmFj
ZSBjcmVhdGluZyB0aGUgU2Nyb2xsaW5nVGhyZWFkIGZvciB0aGUgZmlyc3QgdGltZSwgc2luY2Ug
Ym90aAorICAgICAgICB0aGUgbWFpbiB0aHJlYWQsIGFuZCBFdmVudERpc3BhdGNoZXIgY2FuIGNh
bGwgU2Nyb2xsaW5nVGhyZWFkOjpkaXNwYXRjaCgpIGVhcmx5IG9uLAorICAgICAgICBzbyBmaXgg
d2l0aCBhIHN0ZDo6b25jZSBibG9jay4KKworICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6Cisg
ICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBh
Z2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RocmVhZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3Jv
bGxpbmdUaHJlYWQ6OnNpbmdsZXRvbik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUaHJl
YWQ6OmRpc3BhdGNoKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RocmVhZDo6Y3JlYXRl
VGhyZWFkSWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVGhyZWFkOjppbml0
aWFsaXplUnVuTG9vcCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUaHJlYWQ6OmRpc3Bh
dGNoRnVuY3Rpb25zRnJvbVNjcm9sbGluZ1RocmVhZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpTY3JvbGxpbmdUaHJlYWQ6Ondha2VVcFJ1bkxvb3ApOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6U2Nyb2xsaW5nVGhyZWFkOjp0aHJlYWRSdW5Mb29wU291cmNlQ2FsbGJhY2spOiBE
ZWxldGVkLgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RocmVhZC5oOgorICAg
ICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVGhyZWFkOjpydW5Mb29wKToKKyAgICAgICAgKiBwYWdl
L3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVGhyZWFkTWFjLm1tOiBSZW1vdmVkLgorCiAyMDIwLTA1
LTA4ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFB1
c2ggYSBQbGF0Zm9ybURpc3BsYXlJRCB0byBzY3JvbGxpbmcgdHJlZXMsIGFuZCBhbGxvdyB0aGUg
c2Nyb2xsaW5nIHRocmVhZCB0byBnZXQgZGlzcGxheURpZFJlZnJlc2ggbm90aWZpY2F0aW9ucwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dCBiL1NvdXJjZS9XZWJD
b3JlL1NvdXJjZXNDb2NvYS50eHQKaW5kZXggNzFiYWIzODY2YTE3OWE2OTVjNzY5MjUyNTg0Zjc3
YzJiY2I2NDYwNi4uMTFiZDhmNDNmMjM1OWJiN2U4ZTIwMjRmN2E3YjdkMzAyZDBkNTJlNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Tb3VyY2VzQ29jb2EudHh0CkBAIC0xNTksNyArMTU5LDYgQEAgcGFnZS9zY3JvbGxpbmcv
Y29jb2EvU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGUubW0KIHBhZ2Uvc2Nyb2xsaW5nL21hYy9TY3Jv
bGxpbmdDb29yZGluYXRvck1hYy5tbQogcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ01vbWVu
dHVtQ2FsY3VsYXRvck1hYy5tbQogcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1N0YXRlU2Ny
b2xsaW5nTm9kZU1hYy5tbQotcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RocmVhZE1hYy5t
bQogcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVNYWMu
bW0KIHBhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2Rl
TWFjLm1tCiBwYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxl
Z2F0ZU1hYy5tbQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlc0dUSy50eHQgYi9T
b3VyY2UvV2ViQ29yZS9Tb3VyY2VzR1RLLnR4dAppbmRleCAzZDc1YmQ1MjBjZTg0NWY1MzI5YjBi
NzYwNGMyNzFiMTE3NmFlYzc1Li45NDg0NDY4MmRmMjA1YTUzMjdhMzYzMjUyYzE5ZjVlODVjMzE4
OTVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzR1RLLnR4dAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Tb3VyY2VzR1RLLnR4dApAQCAtNjAsOCArNjAsNiBAQCBwYWdlL3Njcm9sbGlu
Zy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVOaWNvc2lhLmNwcAog
cGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlUG9zaXRpb25lZE5vZGUuY3BwCiBw
YWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVTdGlja3lOb2RlLmNwcAogCi1wYWdl
L3Njcm9sbGluZy9nZW5lcmljL1Njcm9sbGluZ1RocmVhZEdlbmVyaWMuY3BwCi0KIHBsYXRmb3Jt
L1Njcm9sbEFuaW1hdGlvbktpbmV0aWMuY3BwCiBwbGF0Zm9ybS9Vc2VyQWdlbnRRdWlya3MuY3Bw
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNXUEUudHh0IGIvU291cmNlL1dl
YkNvcmUvU291cmNlc1dQRS50eHQKaW5kZXggZWJmZTIyNjljZmY3NDhlN2M2YzU2MzU1MTQ4MDcz
ZTlkNDc5ZDg1OC4uYzEyMjllZjc3MTFiODU5YjUxYzAzNTU4NWMyZjdkYjY4YmQzYmEyZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlc1dQRS50eHQKKysrIGIvU291cmNlL1dlYkNv
cmUvU291cmNlc1dQRS50eHQKQEAgLTU3LDggKzU3LDYgQEAgcGFnZS9zY3JvbGxpbmcvbmljb3Np
YS9TY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlTmljb3NpYS5jcHAKIHBhZ2Uvc2Ny
b2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZVBvc2l0aW9uZWROb2RlLmNwcAogcGFnZS9zY3Jv
bGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZS5jcHAKIAotcGFnZS9zY3JvbGxp
bmcvZ2VuZXJpYy9TY3JvbGxpbmdUaHJlYWRHZW5lcmljLmNwcAotCiBwbGF0Zm9ybS9TY3JvbGxB
bmltYXRpb25LaW5ldGljLmNwcAogcGxhdGZvcm0vVXNlckFnZW50UXVpcmtzLmNwcAogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2og
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXgg
YjQzMTY3ZmZjNDFiYzdiMzgxNjk2YzVkNmU2NjFlMGRmYTA1ZmUxOS4uZWQzYzRiOWRkYjc5YTVi
MzQ5MTJlZmQzMTVhMjBkMmZmYzA0MjEyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNjUwMyw3ICs2NTAzLDYgQEAKIAkJMUFG
NjJFRTUxNERBMjJBNzAwNDE1NTZDIC8qIFNjcm9sbGluZ0Nvb3JkaW5hdG9yLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcm9sbGluZ0Nvb3JkaW5hdG9yLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBRjYyRjIwMTREQUZFNzkwMDQxNTU2QyAvKiBTY3JvbGxp
bmdUaHJlYWQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2Nyb2xs
aW5nVGhyZWFkLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUFGNjJGMjExNERB
RkU3OTAwNDE1NTZDIC8qIFNjcm9sbGluZ1RocmVhZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBTY3JvbGxpbmdUaHJlYWQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJMUFGNjJGMjMxNERBRkU5MTAwNDE1NTZDIC8qIFNjcm9sbGluZ1RocmVhZE1hYy5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFNjcm9sbGluZ1RocmVhZE1hYy5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUFGN0FGQzUxQTQ4QThCQzAwQzhFNEU3
IC8qIFNlY3VyaXR5T3JpZ2luUG9saWN5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFNlY3VyaXR5T3JpZ2luUG9saWN5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMUFGN0FGQzYxQTQ4QThCQzAwQzhFNEU3IC8qIFNlY3VyaXR5T3JpZ2luUG9saWN5
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNlY3VyaXR5T3JpZ2luUG9saWN5
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBRjg5QTQxMTUxOEZERUEwMEU1NDdC
NSAvKiBUaWxlZEJhY2tpbmcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGls
ZWRCYWNraW5nLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNzY3Myw3ICsxNzY3
Miw2IEBACiAJCQkJNTE3REVFRTcxREU5NEIwODAwQjkxNjQ0IC8qIFNjcm9sbGluZ01vbWVudHVt
Q2FsY3VsYXRvck1hYy5oICovLAogCQkJCTUxN0RFRUUzMURFOTRBREMwMEI5MTY0NCAvKiBTY3Jv
bGxpbmdNb21lbnR1bUNhbGN1bGF0b3JNYWMubW0gKi8sCiAJCQkJMEY3M0I3NjUyMjJCMzI3RjAw
ODA1MzE2IC8qIFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZU1hYy5tbSAqLywKLQkJCQkxQUY2
MkYyMzE0REFGRTkxMDA0MTU1NkMgLyogU2Nyb2xsaW5nVGhyZWFkTWFjLm1tICovLAogCQkJCTkz
QzRBNDEzMTYyOURGNUEwMEMzRUI2RSAvKiBTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2Rl
TWFjLmggKi8sCiAJCQkJOTNDNEE0MTQxNjI5REY1QTAwQzNFQjZFIC8qIFNjcm9sbGluZ1RyZWVG
cmFtZVNjcm9sbGluZ05vZGVNYWMubW0gKi8sCiAJCQkJMEZFNTgwNjIxOTMyN0E2MjAwREUzMkVC
IC8qIFNjcm9sbGluZ1RyZWVNYWMuaCAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RocmVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Nj
cm9sbGluZy9TY3JvbGxpbmdUaHJlYWQuY3BwCmluZGV4IDkyYTYwODYxM2RlMDEyZWIxOGZmZjEz
MmNmNDUxZWRmYTM4MmNjNjQuLmFhOTQ1YzQ5MzMzNTI0M2Y4ZmYxZjAwZDg2NjNjODEzNzhhYzZl
YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1Ro
cmVhZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVGhy
ZWFkLmNwcApAQCAtMzQsOCArMzQsMjMgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitTY3Jv
bGxpbmdUaHJlYWQmIFNjcm9sbGluZ1RocmVhZDo6c2luZ2xldG9uKCkKK3sKKyNpZiBQTEFURk9S
TShJT1NfRkFNSUxZKQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworI2VuZGlmCisgICAgc3Rh
dGljIExhenlOZXZlckRlc3Ryb3llZDxTY3JvbGxpbmdUaHJlYWQ+IHNjcm9sbGluZ1RocmVhZDsK
KyAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUZsYWc7CisgICAgc3RkOjpjYWxsX29uY2Uo
b25jZUZsYWcsIFtdIHsKKyAgICAgICAgc2Nyb2xsaW5nVGhyZWFkLmNvbnN0cnVjdCgpOworICAg
IH0pOworCisgICAgcmV0dXJuIHNjcm9sbGluZ1RocmVhZDsKK30KKwogU2Nyb2xsaW5nVGhyZWFk
OjpTY3JvbGxpbmdUaHJlYWQoKQogeworICAgIGNyZWF0ZVRocmVhZCgpOwogfQogCiBib29sIFNj
cm9sbGluZ1RocmVhZDo6aXNDdXJyZW50VGhyZWFkKCkKQEAgLTQ1LDE1ICs2MCw3IEBAIGJvb2wg
U2Nyb2xsaW5nVGhyZWFkOjppc0N1cnJlbnRUaHJlYWQoKQogCiB2b2lkIFNjcm9sbGluZ1RocmVh
ZDo6ZGlzcGF0Y2goRnVuY3Rpb248dm9pZCAoKT4mJiBmdW5jdGlvbikKIHsKLSAgICBhdXRvJiBz
Y3JvbGxpbmdUaHJlYWQgPSBTY3JvbGxpbmdUaHJlYWQ6OnNpbmdsZXRvbigpOwotICAgIHNjcm9s
bGluZ1RocmVhZC5jcmVhdGVUaHJlYWRJZk5lZWRlZCgpOwotCi0gICAgewotICAgICAgICBhdXRv
IGxvY2tlciA9IGhvbGRMb2NrKHNjcm9sbGluZ1RocmVhZC5tX2Z1bmN0aW9uc011dGV4KTsKLSAg
ICAgICAgc2Nyb2xsaW5nVGhyZWFkLm1fZnVuY3Rpb25zLmFwcGVuZChXVEZNb3ZlKGZ1bmN0aW9u
KSk7Ci0gICAgfQotCi0gICAgc2Nyb2xsaW5nVGhyZWFkLndha2VVcFJ1bkxvb3AoKTsKKyAgICBT
Y3JvbGxpbmdUaHJlYWQ6OnNpbmdsZXRvbigpLnJ1bkxvb3AoKS0+ZGlzcGF0Y2goV1RGTW92ZShm
dW5jdGlvbikpOwogfQogCiB2b2lkIFNjcm9sbGluZ1RocmVhZDo6ZGlzcGF0Y2hCYXJyaWVyKEZ1
bmN0aW9uPHZvaWQgKCk+JiYgZnVuY3Rpb24pCkBAIC02Myw2NSArNzAsMzAgQEAgdm9pZCBTY3Jv
bGxpbmdUaHJlYWQ6OmRpc3BhdGNoQmFycmllcihGdW5jdGlvbjx2b2lkICgpPiYmIGZ1bmN0aW9u
KQogICAgIH0pOwogfQogCi1TY3JvbGxpbmdUaHJlYWQmIFNjcm9sbGluZ1RocmVhZDo6c2luZ2xl
dG9uKCkKLXsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U2Nyb2xsaW5nVGhyZWFkPiBzY3Jv
bGxpbmdUaHJlYWQ7Ci0KLSAgICByZXR1cm4gc2Nyb2xsaW5nVGhyZWFkOwotfQotCi12b2lkIFNj
cm9sbGluZ1RocmVhZDo6Y3JlYXRlVGhyZWFkSWZOZWVkZWQoKQordm9pZCBTY3JvbGxpbmdUaHJl
YWQ6OmNyZWF0ZVRocmVhZCgpCiB7CiAgICAgLy8gV2FpdCBmb3IgdGhlIHRocmVhZCB0byBpbml0
aWFsaXplIHRoZSBydW4gbG9vcC4KICAgICBzdGQ6OnVuaXF1ZV9sb2NrPExvY2s+IGxvY2sobV9p
bml0aWFsaXplUnVuTG9vcE11dGV4KTsKIAotICAgIGlmICghbV90aHJlYWQpIHsKLSAgICAgICAg
bV90aHJlYWQgPSBUaHJlYWQ6OmNyZWF0ZSgiV2ViQ29yZTogU2Nyb2xsaW5nIiwgW3RoaXNdIHsK
LSAgICAgICAgICAgIFdURjo6VGhyZWFkOjpzZXRDdXJyZW50VGhyZWFkSXNVc2VySW50ZXJhY3Rp
dmUoKTsKLSAgICAgICAgICAgIGluaXRpYWxpemVSdW5Mb29wKCk7Ci0gICAgICAgIH0pOwotICAg
IH0KKyAgICBBU1NFUlQoIW1fdGhyZWFkKTsKKyAgICBtX3RocmVhZCA9IFRocmVhZDo6Y3JlYXRl
KCJXZWJDb3JlOiBTY3JvbGxpbmciLCBbdGhpc10geworICAgICAgICBXVEY6OlRocmVhZDo6c2V0
Q3VycmVudFRocmVhZElzVXNlckludGVyYWN0aXZlKCk7CisgICAgICAgIGluaXRpYWxpemVSdW5M
b29wKCk7CisgICAgfSk7CiAKLSNpZiBQTEFURk9STShDT0NPQSkKLSAgICBtX2luaXRpYWxpemVS
dW5Mb29wQ29uZGl0aW9uVmFyaWFibGUud2FpdChsb2NrLCBbdGhpc117IHJldHVybiBtX3RocmVh
ZFJ1bkxvb3A7IH0pOwotI2Vsc2UKICAgICBtX2luaXRpYWxpemVSdW5Mb29wQ29uZGl0aW9uVmFy
aWFibGUud2FpdChsb2NrLCBbdGhpc117IHJldHVybiBtX3J1bkxvb3A7IH0pOwotI2VuZGlmCiB9
CiAKLXZvaWQgU2Nyb2xsaW5nVGhyZWFkOjpkaXNwYXRjaEZ1bmN0aW9uc0Zyb21TY3JvbGxpbmdU
aHJlYWQoKQordm9pZCBTY3JvbGxpbmdUaHJlYWQ6OmluaXRpYWxpemVSdW5Mb29wKCkKIHsKLSAg
ICBBU1NFUlQoaXNDdXJyZW50VGhyZWFkKCkpOwotCi0gICAgVmVjdG9yPEZ1bmN0aW9uPHZvaWQg
KCk+PiBmdW5jdGlvbnM7Ci0gICAgCiAgICAgewotICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRM
b2NrKG1fZnVuY3Rpb25zTXV0ZXgpOwotICAgICAgICBmdW5jdGlvbnMgPSBXVEZNb3ZlKG1fZnVu
Y3Rpb25zKTsKKyAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX2luaXRpYWxpemVSdW5M
b29wTXV0ZXgpOworICAgICAgICBtX3J1bkxvb3AgPSAmUnVuTG9vcDo6Y3VycmVudCgpOworICAg
ICAgICBtX2luaXRpYWxpemVSdW5Mb29wQ29uZGl0aW9uVmFyaWFibGUubm90aWZ5QWxsKCk7CiAg
ICAgfQotCi0gICAgZm9yIChhdXRvJiBmdW5jdGlvbiA6IGZ1bmN0aW9ucykKLSAgICAgICAgZnVu
Y3Rpb24oKTsKLX0KLQotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi1OT19SRVRVUk5fRFVFX1RP
X0FTU0VSVCB2b2lkIFNjcm9sbGluZ1RocmVhZDo6aW5pdGlhbGl6ZVJ1bkxvb3AoKQotewotICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotfQotCi12b2lkIFNjcm9sbGluZ1RocmVhZDo6d2FrZVVw
UnVuTG9vcCgpCi17Ci19Ci0KLXZvaWQgU2Nyb2xsaW5nVGhyZWFkOjp0aHJlYWRSdW5Mb29wU291
cmNlQ2FsbGJhY2sodm9pZCopCi17Ci19Ci0KLXZvaWQgU2Nyb2xsaW5nVGhyZWFkOjp0aHJlYWRS
dW5Mb29wU291cmNlQ2FsbGJhY2soKQoteworICAgIAorICAgIG1fcnVuTG9vcC0+cnVuKCk7CiB9
Ci0jZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdU
aHJlYWQuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RocmVhZC5o
CmluZGV4IDk2ODczMTUyMmVmYzY2NjlkODUxNTZkNjUzZTk4ZjFkNzVkMWQ5MTkuLjg3YWNlMjFk
M2UzMTNlZTY4MmUwMGI3NzE2MTBmYTFkZmQyM2E5ODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RocmVhZC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RocmVhZC5oCkBAIC0zMywxNSArMzMsMTAgQEAKICNp
bmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KICNpbmNsdWRlIDx3dGYvTG9jay5oPgogI2luY2x1ZGUg
PHd0Zi9Ob25jb3B5YWJsZS5oPgorI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CiAjaW5jbHVkZSA8
d3RmL1RocmVhZGluZy5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAotI2lmIFBMQVRGT1JN
KENPQ09BKQotI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KLSNlbHNlCi0jaW5jbHVkZSA8d3Rm
L1J1bkxvb3AuaD4KLSNlbmRpZgotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFNjcm9s
bGluZ1RocmVhZCB7CkBAIC01NiwzOCArNTEsMjMgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQ
T1JUIHN0YXRpYyB2b2lkIGRpc3BhdGNoQmFycmllcihGdW5jdGlvbjx2b2lkICgpPiYmKTsKIAog
cHJpdmF0ZToKLSAgICBmcmllbmQgTmV2ZXJEZXN0cm95ZWQ8U2Nyb2xsaW5nVGhyZWFkPjsKLQot
ICAgIFNjcm9sbGluZ1RocmVhZCgpOworICAgIGZyaWVuZCBMYXp5TmV2ZXJEZXN0cm95ZWQ8U2Ny
b2xsaW5nVGhyZWFkPjsKIAogICAgIHN0YXRpYyBTY3JvbGxpbmdUaHJlYWQmIHNpbmdsZXRvbigp
OwogCi0gICAgdm9pZCBjcmVhdGVUaHJlYWRJZk5lZWRlZCgpOwotICAgIHZvaWQgZGlzcGF0Y2hG
dW5jdGlvbnNGcm9tU2Nyb2xsaW5nVGhyZWFkKCk7CisgICAgU2Nyb2xsaW5nVGhyZWFkKCk7CiAK
KyAgICB2b2lkIGNyZWF0ZVRocmVhZCgpOwogICAgIHZvaWQgaW5pdGlhbGl6ZVJ1bkxvb3AoKTsK
LSAgICB2b2lkIHdha2VVcFJ1bkxvb3AoKTsKLQotI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIHN0
YXRpYyB2b2lkIHRocmVhZFJ1bkxvb3BTb3VyY2VDYWxsYmFjayh2b2lkKiBzY3JvbGxpbmdUaHJl
YWQpOwotICAgIHZvaWQgdGhyZWFkUnVuTG9vcFNvdXJjZUNhbGxiYWNrKCk7Ci0jZW5kaWYKKyAg
ICB2b2lkIGRpc3BhdGNoRnVuY3Rpb25zRnJvbVNjcm9sbGluZ1RocmVhZCgpOworICAgIFJ1bkxv
b3AqIHJ1bkxvb3AoKSB7IHJldHVybiBtX3J1bkxvb3A7IH0KIAogICAgIFJlZlB0cjxUaHJlYWQ+
IG1fdGhyZWFkOwogCiAgICAgQ29uZGl0aW9uIG1faW5pdGlhbGl6ZVJ1bkxvb3BDb25kaXRpb25W
YXJpYWJsZTsKICAgICBMb2NrIG1faW5pdGlhbGl6ZVJ1bkxvb3BNdXRleDsKIAotICAgIExvY2sg
bV9mdW5jdGlvbnNNdXRleDsKLSAgICBWZWN0b3I8RnVuY3Rpb248dm9pZCAoKT4+IG1fZnVuY3Rp
b25zOwotCi0jaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgLy8gRklYTUU6IFdlIHNob3VsZCB1c2Ug
V2ViQ29yZTo6UnVuTG9vcCBoZXJlLgotICAgIFJldGFpblB0cjxDRlJ1bkxvb3BSZWY+IG1fdGhy
ZWFkUnVuTG9vcDsKLSAgICBSZXRhaW5QdHI8Q0ZSdW5Mb29wU291cmNlUmVmPiBtX3RocmVhZFJ1
bkxvb3BTb3VyY2U7Ci0jZWxzZQogICAgIFJ1bkxvb3AqIG1fcnVuTG9vcCB7IG51bGxwdHIgfTsK
LSNlbmRpZgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvZ2VuZXJpYy9TY3JvbGxpbmdUaHJlYWRHZW5lcmljLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2dlbmVyaWMvU2Nyb2xsaW5nVGhyZWFk
R2VuZXJpYy5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhhNGU3MWI1NmYwNGZk
ODA4ZmNmMDc1ZTQ1NjM5MGQ4Njc1YjE3MjIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvZ2VuZXJpYy9T
Y3JvbGxpbmdUaHJlYWRHZW5lcmljLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDUzICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggSWdhbGlhIFMuTC4KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZQotICogICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcKLSAqICAgIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZAotICogICAgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xE
RVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUCi0gKiBIT0xERVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwK
LSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJTY3JvbGxpbmdU
aHJlYWQuaCIKLQotI2lmIEVOQUJMRShBU1lOQ19TQ1JPTExJTkcpCi0KLW5hbWVzcGFjZSBXZWJD
b3JlIHsKLQotdm9pZCBTY3JvbGxpbmdUaHJlYWQ6OmluaXRpYWxpemVSdW5Mb29wKCkKLXsKLSAg
ICB7Ci0gICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9pbml0aWFsaXplUnVuTG9vcE11
dGV4KTsKLSAgICAgICAgbV9ydW5Mb29wID0gJlJ1bkxvb3A6OmN1cnJlbnQoKTsKLSAgICAgICAg
bV9pbml0aWFsaXplUnVuTG9vcENvbmRpdGlvblZhcmlhYmxlLm5vdGlmeUFsbCgpOwotICAgIH0K
LQotICAgIG1fcnVuTG9vcC0+cnVuKCk7Ci19Ci0KLXZvaWQgU2Nyb2xsaW5nVGhyZWFkOjp3YWtl
VXBSdW5Mb29wKCkKLXsKLSAgICBtX3J1bkxvb3AtPmRpc3BhdGNoKFt0aGlzXSB7IGRpc3BhdGNo
RnVuY3Rpb25zRnJvbVNjcm9sbGluZ1RocmVhZCgpOyB9KTsKLX0KLQotfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKEFTWU5DX1NDUk9MTElORykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUaHJlYWRNYWMubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVGhyZWFkTWFjLm1t
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlZDA1MTQ1ZmVlMzUwMzQxNjk0MDJiNzY2
MjhkMTA4MTQ1OTkwZGEzLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUaHJlYWRN
YWMubW0KKysrIC9kZXYvbnVsbApAQCAtMSw3NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2ltcG9y
dCAiY29uZmlnLmgiCi0jaW1wb3J0ICJTY3JvbGxpbmdUaHJlYWQuaCIKLQotI2lmIEVOQUJMRShB
U1lOQ19TQ1JPTExJTkcpICYmIFBMQVRGT1JNKE1BQykKLQotI2ltcG9ydCA8bXV0ZXg+Ci0KLW5h
bWVzcGFjZSBXZWJDb3JlIHsKLQotdm9pZCBTY3JvbGxpbmdUaHJlYWQ6OmluaXRpYWxpemVSdW5M
b29wKCkKLXsKLSAgICAvLyBJbml0aWFsaXplIHRoZSBydW4gbG9vcC4KLSAgICB7Ci0gICAgICAg
IGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9pbml0aWFsaXplUnVuTG9vcE11dGV4KTsKLQotICAg
ICAgICBtX3RocmVhZFJ1bkxvb3AgPSBDRlJ1bkxvb3BHZXRDdXJyZW50KCk7Ci0KLSAgICAgICAg
Q0ZSdW5Mb29wU291cmNlQ29udGV4dCBjb250ZXh0ID0geyAwLCB0aGlzLCAwLCAwLCAwLCAwLCAw
LCAwLCAwLCB0aHJlYWRSdW5Mb29wU291cmNlQ2FsbGJhY2sgfTsKLSAgICAgICAgbV90aHJlYWRS
dW5Mb29wU291cmNlID0gYWRvcHRDRihDRlJ1bkxvb3BTb3VyY2VDcmVhdGUoMCwgMCwgJmNvbnRl
eHQpKTsKLSAgICAgICAgQ0ZSdW5Mb29wQWRkU291cmNlKENGUnVuTG9vcEdldEN1cnJlbnQoKSwg
bV90aHJlYWRSdW5Mb29wU291cmNlLmdldCgpLCBrQ0ZSdW5Mb29wRGVmYXVsdE1vZGUpOwotCi0g
ICAgICAgIG1faW5pdGlhbGl6ZVJ1bkxvb3BDb25kaXRpb25WYXJpYWJsZS5ub3RpZnlBbGwoKTsK
LSAgICB9Ci0KLSAgICBBU1NFUlQoaXNDdXJyZW50VGhyZWFkKCkpOwotCi0gICAgQ0ZSdW5Mb29w
UnVuKCk7Ci19Ci0KLXZvaWQgU2Nyb2xsaW5nVGhyZWFkOjp3YWtlVXBSdW5Mb29wKCkKLXsKLSAg
ICBDRlJ1bkxvb3BTb3VyY2VTaWduYWwobV90aHJlYWRSdW5Mb29wU291cmNlLmdldCgpKTsKLSAg
ICBDRlJ1bkxvb3BXYWtlVXAobV90aHJlYWRSdW5Mb29wLmdldCgpKTsKLX0KLQotdm9pZCBTY3Jv
bGxpbmdUaHJlYWQ6OnRocmVhZFJ1bkxvb3BTb3VyY2VDYWxsYmFjayh2b2lkKiBzY3JvbGxpbmdU
aHJlYWQpCi17Ci0gICAgc3RhdGljX2Nhc3Q8U2Nyb2xsaW5nVGhyZWFkKj4oc2Nyb2xsaW5nVGhy
ZWFkKS0+dGhyZWFkUnVuTG9vcFNvdXJjZUNhbGxiYWNrKCk7Ci19Ci0KLXZvaWQgU2Nyb2xsaW5n
VGhyZWFkOjp0aHJlYWRSdW5Mb29wU291cmNlQ2FsbGJhY2soKQotewotICAgIEBhdXRvcmVsZWFz
ZXBvb2wgewotICAgICAgICBkaXNwYXRjaEZ1bmN0aW9uc0Zyb21TY3JvbGxpbmdUaHJlYWQoKTsK
LSAgICB9Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShB
U1lOQ19TQ1JPTExJTkcpICYmIFBMQVRGT1JNKE1BQykK
</data>
<flag name="review"
          id="414444"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>399052</attachid>
            <date>2020-05-11 13:44:03 -0700</date>
            <delta_ts>2020-05-11 14:51:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-211730-20200511134402.patch</filename>
            <type>text/plain</type>
            <size>17201</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYxNDg2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmVhZjc4MjIwN2U2OTM2
MDJmY2M0NDE3YWVkMWJmYmJmMGRiMjBmZi4uMGEzZTM0YjNlZTkxZDc4YjE1NDYyODc4MzEyNTUx
YzYyZDkyYmU5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDIwLTA1LTExICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIEhhdmUgU2Nyb2xs
aW5nVGhyZWFkIHVzZSBhIFJ1bkxvb3AgcmF0aGVyIHRoYW4gcm9sbGluZyBpdHMgb3duCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTE3MzAKKworICAg
ICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICBTY3JvbGxpbmdUaHJlYWQg
cm9sbGVkIGl0cyBvd24gcnVubG9vcC9mdW5jdGlvbiBkaXNwYXRjaCBieSBkcm9wcGluZyB0byBD
RiBmb3IgbWFjT1MuCisgICAgICAgIEZpeCB0byB1c2UgUnVuTG9vcCB3aGljaCBwcm92aWRlcyB0
aGUgc2FtZSBmdW5jdGlvbmFsaXR5LgorCisgICAgICAgIFRoZXJlIHdhcyBhbHNvIGEgcmFjZSBj
cmVhdGluZyB0aGUgU2Nyb2xsaW5nVGhyZWFkIGZvciB0aGUgZmlyc3QgdGltZSwgc2luY2UgYm90
aAorICAgICAgICB0aGUgbWFpbiB0aHJlYWQsIGFuZCBFdmVudERpc3BhdGNoZXIgY2FuIGNhbGwg
U2Nyb2xsaW5nVGhyZWFkOjpkaXNwYXRjaCgpIGVhcmx5IG9uLAorICAgICAgICBzbyBmaXggd2l0
aCBhIHN0ZDo6b25jZSBibG9jay4KKworICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6CisgICAg
ICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBhZ2Uv
c2Nyb2xsaW5nL1Njcm9sbGluZ1RocmVhZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxp
bmdUaHJlYWQ6OnNpbmdsZXRvbik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUaHJlYWQ6
OmRpc3BhdGNoKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RocmVhZDo6Y3JlYXRlVGhy
ZWFkSWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVGhyZWFkOjppbml0aWFs
aXplUnVuTG9vcCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUaHJlYWQ6OmRpc3BhdGNo
RnVuY3Rpb25zRnJvbVNjcm9sbGluZ1RocmVhZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpTY3JvbGxpbmdUaHJlYWQ6Ondha2VVcFJ1bkxvb3ApOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6U2Nyb2xsaW5nVGhyZWFkOjp0aHJlYWRSdW5Mb29wU291cmNlQ2FsbGJhY2spOiBEZWxl
dGVkLgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RocmVhZC5oOgorICAgICAg
ICAoV2ViQ29yZTo6U2Nyb2xsaW5nVGhyZWFkOjpydW5Mb29wKToKKyAgICAgICAgKiBwYWdlL3Nj
cm9sbGluZy9tYWMvU2Nyb2xsaW5nVGhyZWFkTWFjLm1tOiBSZW1vdmVkLgorCiAyMDIwLTA1LTEx
ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAg
Rml4IGFzc2VydGlvbiBhZnRlciByMjYxNDE0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9T
b3VyY2VzQ29jb2EudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dAppbmRleCA2
MjNlMjgzN2FlMTE0YjU0MDJjMTY3NGI1ODc3MDYxNDMyODNiNzkxLi5kYmY3ZjYzODkzZTMyOGI0
YzRkZjFjNzQ1YzEyZjk5YzllNDAzZDkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3Vy
Y2VzQ29jb2EudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKQEAgLTE1
OSw3ICsxNTksNiBAQCBwYWdlL3Njcm9sbGluZy9jb2NvYS9TY3JvbGxpbmdUcmVlU3RpY2t5Tm9k
ZS5tbQogcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ0Nvb3JkaW5hdG9yTWFjLm1tCiBwYWdl
L3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yTWFjLm1tCiBwYWdlL3Nj
cm9sbGluZy9tYWMvU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlTWFjLm1tCi1wYWdlL3Njcm9s
bGluZy9tYWMvU2Nyb2xsaW5nVGhyZWFkTWFjLm1tCiBwYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xs
aW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU1hYy5tbQogcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9s
bGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVNYWMubW0KIHBhZ2Uvc2Nyb2xsaW5nL21hYy9T
Y3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTWFjLm1tCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Tb3VyY2VzR1RLLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNHVEsudHh0
CmluZGV4IDNkNzViZDUyMGNlODQ1ZjUzMjliMGI3NjA0YzI3MWIxMTc2YWVjNzUuLjk0ODQ0Njgy
ZGYyMDVhNTMyN2EzNjMyNTJjMTlmNWU4NWMzMTg5NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL1NvdXJjZXNHVEsudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNHVEsudHh0CkBA
IC02MCw4ICs2MCw2IEBAIHBhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZU92ZXJm
bG93U2Nyb2xsaW5nTm9kZU5pY29zaWEuY3BwCiBwYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9s
bGluZ1RyZWVQb3NpdGlvbmVkTm9kZS5jcHAKIHBhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xs
aW5nVHJlZVN0aWNreU5vZGUuY3BwCiAKLXBhZ2Uvc2Nyb2xsaW5nL2dlbmVyaWMvU2Nyb2xsaW5n
VGhyZWFkR2VuZXJpYy5jcHAKLQogcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uS2luZXRpYy5jcHAK
IHBsYXRmb3JtL1VzZXJBZ2VudFF1aXJrcy5jcHAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvU291cmNlc1dQRS50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzV1BFLnR4dAppbmRleCBl
YmZlMjI2OWNmZjc0OGU3YzZjNTYzNTUxNDgwNzNlOWQ0NzlkODU4Li5jMTIyOWVmNzcxMWI4NTli
NTFjMDM1NTg1YzJmN2RiNjhiZDNiYTJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3Vy
Y2VzV1BFLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzV1BFLnR4dApAQCAtNTcsOCAr
NTcsNiBAQCBwYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9s
bGluZ05vZGVOaWNvc2lhLmNwcAogcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVl
UG9zaXRpb25lZE5vZGUuY3BwCiBwYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVT
dGlja3lOb2RlLmNwcAogCi1wYWdlL3Njcm9sbGluZy9nZW5lcmljL1Njcm9sbGluZ1RocmVhZEdl
bmVyaWMuY3BwCi0KIHBsYXRmb3JtL1Njcm9sbEFuaW1hdGlvbktpbmV0aWMuY3BwCiBwbGF0Zm9y
bS9Vc2VyQWdlbnRRdWlya3MuY3BwCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAwMzVjNTQ0ZmVjYmU2NGRlOTM0ODYyMzcwMDM0
YzliYWRlODE1ZjNmLi4wMzNhYTU5OTNmNjkzMDNjMGQ5MWM2OGU3NWJmODhhYTUzNjMzNzRhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CkBAIC02NTAzLDcgKzY1MDMsNiBAQAogCQkxQUY2MkVFNTE0REEyMkE3MDA0MTU1NkMgLyogU2Ny
b2xsaW5nQ29vcmRpbmF0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2Ny
b2xsaW5nQ29vcmRpbmF0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUFGNjJG
MjAxNERBRkU3OTAwNDE1NTZDIC8qIFNjcm9sbGluZ1RocmVhZC5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTY3JvbGxpbmdUaHJlYWQuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkxQUY2MkYyMTE0REFGRTc5MDA0MTU1NkMgLyogU2Nyb2xsaW5nVGhy
ZWFkLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcm9sbGluZ1RocmVhZC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkxQUY2MkYyMzE0REFGRTkxMDA0MTU1NkMg
LyogU2Nyb2xsaW5nVGhyZWFkTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gU2Nyb2xsaW5nVGhyZWFkTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkxQUY3QUZDNTFBNDhBOEJDMDBDOEU0RTcgLyogU2VjdXJpdHlPcmlnaW5Qb2xpY3kuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2VjdXJpdHlPcmlnaW5Qb2xp
Y3kuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQUY3QUZDNjFBNDhBOEJDMDBD
OEU0RTcgLyogU2VjdXJpdHlPcmlnaW5Qb2xpY3kuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gU2VjdXJpdHlPcmlnaW5Qb2xpY3kuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMUFGODlBNDExNTE4RkRFQTAwRTU0N0I1IC8qIFRpbGVkQmFja2luZy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUaWxlZEJhY2tpbmcuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTE3Njc0LDcgKzE3NjczLDYgQEAKIAkJCQk1MTdERUVFNzFERTk0QjA4
MDBCOTE2NDQgLyogU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yTWFjLmggKi8sCiAJCQkJNTE3
REVFRTMxREU5NEFEQzAwQjkxNjQ0IC8qIFNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvck1hYy5t
bSAqLywKIAkJCQkwRjczQjc2NTIyMkIzMjdGMDA4MDUzMTYgLyogU2Nyb2xsaW5nU3RhdGVTY3Jv
bGxpbmdOb2RlTWFjLm1tICovLAotCQkJCTFBRjYyRjIzMTREQUZFOTEwMDQxNTU2QyAvKiBTY3Jv
bGxpbmdUaHJlYWRNYWMubW0gKi8sCiAJCQkJOTNDNEE0MTMxNjI5REY1QTAwQzNFQjZFIC8qIFNj
cm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVNYWMuaCAqLywKIAkJCQk5M0M0QTQxNDE2MjlE
RjVBMDBDM0VCNkUgLyogU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU1hYy5tbSAqLywK
IAkJCQkwRkU1ODA2MjE5MzI3QTYyMDBERTMyRUIgLyogU2Nyb2xsaW5nVHJlZU1hYy5oICovLApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9NZW1vcnlSZWxlYXNlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvTWVtb3J5UmVsZWFzZS5jcHAKaW5kZXggMjRhOGM5ZjliMmE5NTI5ODQ2
ZGVkZDEyY2ZkMDc1MjliZjMyMTZmNS4uNDc3ZGY3MjBiM2Q3OTNlNjBhNTQxZDBmMzkyOGJmN2Ux
YTkzODEyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9NZW1vcnlSZWxlYXNlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL01lbW9yeVJlbGVhc2UuY3BwCkBAIC0xNDgsNyAr
MTQ4LDcgQEAgdm9pZCByZWxlYXNlTWVtb3J5KENyaXRpY2FsIGNyaXRpY2FsLCBTeW5jaHJvbm91
cyBzeW5jaHJvbm91cywgTWFpbnRhaW5CYWNrRm9yd2EKICAgICBpZiAoc3luY2hyb25vdXMgPT0g
U3luY2hyb25vdXM6OlllcykgewogICAgICAgICAvLyBGYXN0TWFsbG9jIGhhcyBsb2NrLWZyZWUg
dGhyZWFkIHNwZWNpZmljIGNhY2hlcyB0aGF0IGNhbiBvbmx5IGJlIGNsZWFyZWQgZnJvbSB0aGUg
dGhyZWFkIGl0c2VsZi4KICAgICAgICAgV29ya2VyVGhyZWFkOjpyZWxlYXNlRmFzdE1hbGxvY0Zy
ZWVNZW1vcnlJbkFsbFRocmVhZHMoKTsKLSNpZiBFTkFCTEUoQVNZTkNfU0NST0xMSU5HKSAmJiAh
UExBVEZPUk0oSU9TX0ZBTUlMWSkKKyNpZiBFTkFCTEUoU0NST0xMSU5HX1RIUkVBRCkKICAgICAg
ICAgU2Nyb2xsaW5nVGhyZWFkOjpkaXNwYXRjaChXVEY6OnJlbGVhc2VGYXN0TWFsbG9jRnJlZU1l
bW9yeSk7CiAjZW5kaWYKICAgICAgICAgV1RGOjpyZWxlYXNlRmFzdE1hbGxvY0ZyZWVNZW1vcnko
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1Ro
cmVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUaHJlYWQu
Y3BwCmluZGV4IDkyYTYwODYxM2RlMDEyZWIxOGZmZjEzMmNmNDUxZWRmYTM4MmNjNjQuLjBiZWI5
NDZkZDg3MjU4ZTVjZDM1NWFiZGJkN2VhNjliYzIyNDE2OGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RocmVhZC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVGhyZWFkLmNwcApAQCAtMjYsMTYgKzI2LDM3
IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiU2Nyb2xsaW5nVGhyZWFkLmgiCiAK
LSNpZiBFTkFCTEUoQVNZTkNfU0NST0xMSU5HKQorI2lmIEVOQUJMRShTQ1JPTExJTkdfVEhSRUFE
KQogCiAjaW5jbHVkZSA8bXV0ZXg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KICNpbmNs
dWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKyNpbmNsdWRlIDx3dGYvdGhyZWFkcy9CaW5hcnlT
ZW1hcGhvcmUuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitTY3JvbGxpbmdUaHJlYWQmIFNj
cm9sbGluZ1RocmVhZDo6c2luZ2xldG9uKCkKK3sKKyAgICBzdGF0aWMgTGF6eU5ldmVyRGVzdHJv
eWVkPFNjcm9sbGluZ1RocmVhZD4gc2Nyb2xsaW5nVGhyZWFkOworICAgIHN0YXRpYyBzdGQ6Om9u
Y2VfZmxhZyBvbmNlRmxhZzsKKyAgICBzdGQ6OmNhbGxfb25jZShvbmNlRmxhZywgW10geworICAg
ICAgICBzY3JvbGxpbmdUaHJlYWQuY29uc3RydWN0KCk7CisgICAgfSk7CisKKyAgICByZXR1cm4g
c2Nyb2xsaW5nVGhyZWFkOworfQorCiBTY3JvbGxpbmdUaHJlYWQ6OlNjcm9sbGluZ1RocmVhZCgp
CiB7CisgICAgQmluYXJ5U2VtYXBob3JlIHNlbWFwaG9yZTsKKyAgICBtX3RocmVhZCA9IFRocmVh
ZDo6Y3JlYXRlKCJXZWJDb3JlOiBTY3JvbGxpbmciLCBbdGhpcywgJnNlbWFwaG9yZV0geworICAg
ICAgICBXVEY6OlRocmVhZDo6c2V0Q3VycmVudFRocmVhZElzVXNlckludGVyYWN0aXZlKCk7Cisg
ICAgICAgIG1fcnVuTG9vcCA9ICZSdW5Mb29wOjpjdXJyZW50KCk7CisgICAgICAgIHNlbWFwaG9y
ZS5zaWduYWwoKTsKKyAgICAgICAgbV9ydW5Mb29wLT5ydW4oKTsKKyAgICB9KTsKKworICAgIHNl
bWFwaG9yZS53YWl0KCk7CiB9CiAKIGJvb2wgU2Nyb2xsaW5nVGhyZWFkOjppc0N1cnJlbnRUaHJl
YWQoKQpAQCAtNDUsMTUgKzY2LDcgQEAgYm9vbCBTY3JvbGxpbmdUaHJlYWQ6OmlzQ3VycmVudFRo
cmVhZCgpCiAKIHZvaWQgU2Nyb2xsaW5nVGhyZWFkOjpkaXNwYXRjaChGdW5jdGlvbjx2b2lkICgp
PiYmIGZ1bmN0aW9uKQogewotICAgIGF1dG8mIHNjcm9sbGluZ1RocmVhZCA9IFNjcm9sbGluZ1Ro
cmVhZDo6c2luZ2xldG9uKCk7Ci0gICAgc2Nyb2xsaW5nVGhyZWFkLmNyZWF0ZVRocmVhZElmTmVl
ZGVkKCk7Ci0KLSAgICB7Ci0gICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2soc2Nyb2xsaW5n
VGhyZWFkLm1fZnVuY3Rpb25zTXV0ZXgpOwotICAgICAgICBzY3JvbGxpbmdUaHJlYWQubV9mdW5j
dGlvbnMuYXBwZW5kKFdURk1vdmUoZnVuY3Rpb24pKTsKLSAgICB9Ci0KLSAgICBzY3JvbGxpbmdU
aHJlYWQud2FrZVVwUnVuTG9vcCgpOworICAgIFNjcm9sbGluZ1RocmVhZDo6c2luZ2xldG9uKCku
cnVuTG9vcCgpLmRpc3BhdGNoKFdURk1vdmUoZnVuY3Rpb24pKTsKIH0KIAogdm9pZCBTY3JvbGxp
bmdUaHJlYWQ6OmRpc3BhdGNoQmFycmllcihGdW5jdGlvbjx2b2lkICgpPiYmIGZ1bmN0aW9uKQpA
QCAtNjMsNjYgKzc2LDYgQEAgdm9pZCBTY3JvbGxpbmdUaHJlYWQ6OmRpc3BhdGNoQmFycmllcihG
dW5jdGlvbjx2b2lkICgpPiYmIGZ1bmN0aW9uKQogICAgIH0pOwogfQogCi1TY3JvbGxpbmdUaHJl
YWQmIFNjcm9sbGluZ1RocmVhZDo6c2luZ2xldG9uKCkKLXsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8U2Nyb2xsaW5nVGhyZWFkPiBzY3JvbGxpbmdUaHJlYWQ7Ci0KLSAgICByZXR1cm4gc2Ny
b2xsaW5nVGhyZWFkOwotfQotCi12b2lkIFNjcm9sbGluZ1RocmVhZDo6Y3JlYXRlVGhyZWFkSWZO
ZWVkZWQoKQotewotICAgIC8vIFdhaXQgZm9yIHRoZSB0aHJlYWQgdG8gaW5pdGlhbGl6ZSB0aGUg
cnVuIGxvb3AuCi0gICAgc3RkOjp1bmlxdWVfbG9jazxMb2NrPiBsb2NrKG1faW5pdGlhbGl6ZVJ1
bkxvb3BNdXRleCk7Ci0KLSAgICBpZiAoIW1fdGhyZWFkKSB7Ci0gICAgICAgIG1fdGhyZWFkID0g
VGhyZWFkOjpjcmVhdGUoIldlYkNvcmU6IFNjcm9sbGluZyIsIFt0aGlzXSB7Ci0gICAgICAgICAg
ICBXVEY6OlRocmVhZDo6c2V0Q3VycmVudFRocmVhZElzVXNlckludGVyYWN0aXZlKCk7Ci0gICAg
ICAgICAgICBpbml0aWFsaXplUnVuTG9vcCgpOwotICAgICAgICB9KTsKLSAgICB9Ci0KLSNpZiBQ
TEFURk9STShDT0NPQSkKLSAgICBtX2luaXRpYWxpemVSdW5Mb29wQ29uZGl0aW9uVmFyaWFibGUu
d2FpdChsb2NrLCBbdGhpc117IHJldHVybiBtX3RocmVhZFJ1bkxvb3A7IH0pOwotI2Vsc2UKLSAg
ICBtX2luaXRpYWxpemVSdW5Mb29wQ29uZGl0aW9uVmFyaWFibGUud2FpdChsb2NrLCBbdGhpc117
IHJldHVybiBtX3J1bkxvb3A7IH0pOwotI2VuZGlmCi19Ci0KLXZvaWQgU2Nyb2xsaW5nVGhyZWFk
OjpkaXNwYXRjaEZ1bmN0aW9uc0Zyb21TY3JvbGxpbmdUaHJlYWQoKQotewotICAgIEFTU0VSVChp
c0N1cnJlbnRUaHJlYWQoKSk7Ci0KLSAgICBWZWN0b3I8RnVuY3Rpb248dm9pZCAoKT4+IGZ1bmN0
aW9uczsKLSAgICAKLSAgICB7Ci0gICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9mdW5j
dGlvbnNNdXRleCk7Ci0gICAgICAgIGZ1bmN0aW9ucyA9IFdURk1vdmUobV9mdW5jdGlvbnMpOwot
ICAgIH0KLQotICAgIGZvciAoYXV0byYgZnVuY3Rpb24gOiBmdW5jdGlvbnMpCi0gICAgICAgIGZ1
bmN0aW9uKCk7Ci19Ci0KLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotTk9fUkVUVVJOX0RVRV9U
T19BU1NFUlQgdm9pZCBTY3JvbGxpbmdUaHJlYWQ6OmluaXRpYWxpemVSdW5Mb29wKCkKLXsKLSAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLX0KLQotdm9pZCBTY3JvbGxpbmdUaHJlYWQ6Ondha2VV
cFJ1bkxvb3AoKQotewotfQotCi12b2lkIFNjcm9sbGluZ1RocmVhZDo6dGhyZWFkUnVuTG9vcFNv
dXJjZUNhbGxiYWNrKHZvaWQqKQotewotfQotCi12b2lkIFNjcm9sbGluZ1RocmVhZDo6dGhyZWFk
UnVuTG9vcFNvdXJjZUNhbGxiYWNrKCkKLXsKLX0KLSNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFN
SUxZKQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKLSNlbmRpZiAvLyBFTkFCTEUoQVNZTkNf
U0NST0xMSU5HKQorI2VuZGlmIC8vIEVOQUJMRShTQ1JPTExJTkdfVEhSRUFEKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVGhyZWFkLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUaHJlYWQuaAppbmRleCA5Njg3MzE1
MjJlZmM2NjY5ZDg1MTU2ZDY1M2U5OGYxZDc1ZDFkOTE5Li4wZDgyYWNjMTIyZDJjMmNhMzRkMzli
MzExNWNiMWE1YjBkNmFjOGE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9s
bGluZy9TY3JvbGxpbmdUaHJlYWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGlu
Zy9TY3JvbGxpbmdUaHJlYWQuaApAQCAtMjUsNyArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAot
I2lmIEVOQUJMRShBU1lOQ19TQ1JPTExJTkcpCisjaWYgRU5BQkxFKFNDUk9MTElOR19USFJFQUQp
CiAKICNpbmNsdWRlIDxmdW5jdGlvbmFsPgogI2luY2x1ZGUgPHd0Zi9Db25kaXRpb24uaD4KQEAg
LTMzLDE1ICszMywxMCBAQAogI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgogI2luY2x1ZGUgPHd0
Zi9Mb2NrLmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CisjaW5jbHVkZSA8d3RmL1J1
bkxvb3AuaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rv
ci5oPgogCi0jaWYgUExBVEZPUk0oQ09DT0EpCi0jaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgot
I2Vsc2UKLSNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgotI2VuZGlmCi0KIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogY2xhc3MgU2Nyb2xsaW5nVGhyZWFkIHsKQEAgLTU2LDQwICs1MSwxOSBAQCBwdWJs
aWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQgZGlzcGF0Y2hCYXJyaWVyKEZ1bmN0
aW9uPHZvaWQgKCk+JiYpOwogCiBwcml2YXRlOgotICAgIGZyaWVuZCBOZXZlckRlc3Ryb3llZDxT
Y3JvbGxpbmdUaHJlYWQ+OwotCi0gICAgU2Nyb2xsaW5nVGhyZWFkKCk7CisgICAgZnJpZW5kIExh
enlOZXZlckRlc3Ryb3llZDxTY3JvbGxpbmdUaHJlYWQ+OwogCiAgICAgc3RhdGljIFNjcm9sbGlu
Z1RocmVhZCYgc2luZ2xldG9uKCk7CiAKLSAgICB2b2lkIGNyZWF0ZVRocmVhZElmTmVlZGVkKCk7
Ci0gICAgdm9pZCBkaXNwYXRjaEZ1bmN0aW9uc0Zyb21TY3JvbGxpbmdUaHJlYWQoKTsKLQotICAg
IHZvaWQgaW5pdGlhbGl6ZVJ1bkxvb3AoKTsKLSAgICB2b2lkIHdha2VVcFJ1bkxvb3AoKTsKKyAg
ICBTY3JvbGxpbmdUaHJlYWQoKTsKIAotI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIHN0YXRpYyB2
b2lkIHRocmVhZFJ1bkxvb3BTb3VyY2VDYWxsYmFjayh2b2lkKiBzY3JvbGxpbmdUaHJlYWQpOwot
ICAgIHZvaWQgdGhyZWFkUnVuTG9vcFNvdXJjZUNhbGxiYWNrKCk7Ci0jZW5kaWYKKyAgICB2b2lk
IGRpc3BhdGNoRnVuY3Rpb25zRnJvbVNjcm9sbGluZ1RocmVhZCgpOworICAgIFJ1bkxvb3AmIHJ1
bkxvb3AoKSB7IHJldHVybiAqbV9ydW5Mb29wOyB9CiAKICAgICBSZWZQdHI8VGhyZWFkPiBtX3Ro
cmVhZDsKLQotICAgIENvbmRpdGlvbiBtX2luaXRpYWxpemVSdW5Mb29wQ29uZGl0aW9uVmFyaWFi
bGU7Ci0gICAgTG9jayBtX2luaXRpYWxpemVSdW5Mb29wTXV0ZXg7Ci0KLSAgICBMb2NrIG1fZnVu
Y3Rpb25zTXV0ZXg7Ci0gICAgVmVjdG9yPEZ1bmN0aW9uPHZvaWQgKCk+PiBtX2Z1bmN0aW9uczsK
LQotI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgdXNlIFdlYkNv
cmU6OlJ1bkxvb3AgaGVyZS4KLSAgICBSZXRhaW5QdHI8Q0ZSdW5Mb29wUmVmPiBtX3RocmVhZFJ1
bkxvb3A7Ci0gICAgUmV0YWluUHRyPENGUnVuTG9vcFNvdXJjZVJlZj4gbV90aHJlYWRSdW5Mb29w
U291cmNlOwotI2Vsc2UKICAgICBSdW5Mb29wKiBtX3J1bkxvb3AgeyBudWxscHRyIH07Ci0jZW5k
aWYKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAotI2VuZGlmIC8vIEVOQUJMRShBU1lO
Q19TQ1JPTExJTkcpCisjZW5kaWYgLy8gRU5BQkxFKFNDUk9MTElOR19USFJFQUQpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9nZW5lcmljL1Njcm9sbGluZ1RocmVh
ZEdlbmVyaWMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvZ2VuZXJpYy9TY3Jv
bGxpbmdUaHJlYWRHZW5lcmljLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGE0
ZTcxYjU2ZjA0ZmQ4MDhmY2YwNzVlNDU2MzkwZDg2NzViMTcyMi4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGlu
Zy9nZW5lcmljL1Njcm9sbGluZ1RocmVhZEdlbmVyaWMuY3BwCisrKyAvZGV2L251bGwKQEAgLTEs
NTMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBJZ2FsaWEgUy5MLgotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICoKLSAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlCi0gKiAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZwotICogICAgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkCi0gKiAgICB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIEhPTERFUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUg
IlNjcm9sbGluZ1RocmVhZC5oIgotCi0jaWYgRU5BQkxFKEFTWU5DX1NDUk9MTElORykKLQotbmFt
ZXNwYWNlIFdlYkNvcmUgewotCi12b2lkIFNjcm9sbGluZ1RocmVhZDo6aW5pdGlhbGl6ZVJ1bkxv
b3AoKQotewotICAgIHsKLSAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX2luaXRpYWxp
emVSdW5Mb29wTXV0ZXgpOwotICAgICAgICBtX3J1bkxvb3AgPSAmUnVuTG9vcDo6Y3VycmVudCgp
OwotICAgICAgICBtX2luaXRpYWxpemVSdW5Mb29wQ29uZGl0aW9uVmFyaWFibGUubm90aWZ5QWxs
KCk7Ci0gICAgfQotCi0gICAgbV9ydW5Mb29wLT5ydW4oKTsKLX0KLQotdm9pZCBTY3JvbGxpbmdU
aHJlYWQ6Ondha2VVcFJ1bkxvb3AoKQotewotICAgIG1fcnVuTG9vcC0+ZGlzcGF0Y2goW3RoaXNd
IHsgZGlzcGF0Y2hGdW5jdGlvbnNGcm9tU2Nyb2xsaW5nVGhyZWFkKCk7IH0pOwotfQotCi19IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoQVNZTkNfU0NST0xMSU5HKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1Ro
cmVhZE1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdU
aHJlYWRNYWMubW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVkMDUxNDVmZWUzNTAz
NDE2OTQwMmI3NjYyOGQxMDgxNDU5OTBkYTMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9s
bGluZ1RocmVhZE1hYy5tbQorKysgL2Rldi9udWxsCkBAIC0xLDc1ICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgot
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
LSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi0jaW1wb3J0ICJjb25maWcuaCIKLSNpbXBvcnQgIlNjcm9sbGluZ1RocmVhZC5oIgotCi0j
aWYgRU5BQkxFKEFTWU5DX1NDUk9MTElORykgJiYgUExBVEZPUk0oTUFDKQotCi0jaW1wb3J0IDxt
dXRleD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi12b2lkIFNjcm9sbGluZ1RocmVhZDo6aW5p
dGlhbGl6ZVJ1bkxvb3AoKQotewotICAgIC8vIEluaXRpYWxpemUgdGhlIHJ1biBsb29wLgotICAg
IHsKLSAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX2luaXRpYWxpemVSdW5Mb29wTXV0
ZXgpOwotCi0gICAgICAgIG1fdGhyZWFkUnVuTG9vcCA9IENGUnVuTG9vcEdldEN1cnJlbnQoKTsK
LQotICAgICAgICBDRlJ1bkxvb3BTb3VyY2VDb250ZXh0IGNvbnRleHQgPSB7IDAsIHRoaXMsIDAs
IDAsIDAsIDAsIDAsIDAsIDAsIHRocmVhZFJ1bkxvb3BTb3VyY2VDYWxsYmFjayB9OwotICAgICAg
ICBtX3RocmVhZFJ1bkxvb3BTb3VyY2UgPSBhZG9wdENGKENGUnVuTG9vcFNvdXJjZUNyZWF0ZSgw
LCAwLCAmY29udGV4dCkpOwotICAgICAgICBDRlJ1bkxvb3BBZGRTb3VyY2UoQ0ZSdW5Mb29wR2V0
Q3VycmVudCgpLCBtX3RocmVhZFJ1bkxvb3BTb3VyY2UuZ2V0KCksIGtDRlJ1bkxvb3BEZWZhdWx0
TW9kZSk7Ci0KLSAgICAgICAgbV9pbml0aWFsaXplUnVuTG9vcENvbmRpdGlvblZhcmlhYmxlLm5v
dGlmeUFsbCgpOwotICAgIH0KLQotICAgIEFTU0VSVChpc0N1cnJlbnRUaHJlYWQoKSk7Ci0KLSAg
ICBDRlJ1bkxvb3BSdW4oKTsKLX0KLQotdm9pZCBTY3JvbGxpbmdUaHJlYWQ6Ondha2VVcFJ1bkxv
b3AoKQotewotICAgIENGUnVuTG9vcFNvdXJjZVNpZ25hbChtX3RocmVhZFJ1bkxvb3BTb3VyY2Uu
Z2V0KCkpOwotICAgIENGUnVuTG9vcFdha2VVcChtX3RocmVhZFJ1bkxvb3AuZ2V0KCkpOwotfQot
Ci12b2lkIFNjcm9sbGluZ1RocmVhZDo6dGhyZWFkUnVuTG9vcFNvdXJjZUNhbGxiYWNrKHZvaWQq
IHNjcm9sbGluZ1RocmVhZCkKLXsKLSAgICBzdGF0aWNfY2FzdDxTY3JvbGxpbmdUaHJlYWQqPihz
Y3JvbGxpbmdUaHJlYWQpLT50aHJlYWRSdW5Mb29wU291cmNlQ2FsbGJhY2soKTsKLX0KLQotdm9p
ZCBTY3JvbGxpbmdUaHJlYWQ6OnRocmVhZFJ1bkxvb3BTb3VyY2VDYWxsYmFjaygpCi17Ci0gICAg
QGF1dG9yZWxlYXNlcG9vbCB7Ci0gICAgICAgIGRpc3BhdGNoRnVuY3Rpb25zRnJvbVNjcm9sbGlu
Z1RocmVhZCgpOwotICAgIH0KLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYg
Ly8gRU5BQkxFKEFTWU5DX1NDUk9MTElORykgJiYgUExBVEZPUk0oTUFDKQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>