<?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>133660</bug_id>
          
          <creation_ts>2014-06-09 15:15:52 -0700</creation_ts>
          <short_desc>[ftlopt] Call and Construct DFG nodes aren&apos;t always safe to execute</short_desc>
          <delta_ts>2014-06-11 17:25:44 -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>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Matthew Mirman">mmirman</reporter>
          <assigned_to name="Matthew Mirman">mmirman</assigned_to>
          <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>mmirman</cc>
    
    <cc>ossy</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1014246</commentid>
    <comment_count>0</comment_count>
    <who name="Matthew Mirman">mmirman</who>
    <bug_when>2014-06-09 15:15:52 -0700</bug_when>
    <thetext>Also needs native calling without patchpoints when not inlining in the ftl.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1014250</commentid>
    <comment_count>1</comment_count>
      <attachid>232738</attachid>
    <who name="Matthew Mirman">mmirman</who>
    <bug_when>2014-06-09 15:22:29 -0700</bug_when>
    <thetext>Created attachment 232738
Split Call and Construct DFG nodes into NativeCall and NativeConstruct

Ran webkit tests without new or relevant failures.

Should also increase the speed a bit by removing patch-points for calls which are speculated to be native by the DFG.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1014334</commentid>
    <comment_count>2</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-06-09 21:27:35 -0700</bug_when>
    <thetext>Nice!

I will land this shortly...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1014613</commentid>
    <comment_count>3</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-06-10 18:20:09 -0700</bug_when>
    <thetext>Sorry it&apos;s taking so long to land - I got some test failures, but I think they were spurious, so I&apos;m rerunning...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1014625</commentid>
    <comment_count>4</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-06-10 18:52:42 -0700</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/169786</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1014657</commentid>
    <comment_count>5</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-06-10 21:30:21 -0700</bug_when>
    <thetext>Lol, this broke 32-bit.  I&apos;ll roll it out.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1014658</commentid>
    <comment_count>6</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-06-10 21:32:04 -0700</bug_when>
    <thetext>Rolled out in http://trac.webkit.org/changeset/169793</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1014659</commentid>
    <comment_count>7</comment_count>
      <attachid>232738</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-06-10 21:32:32 -0700</bug_when>
    <thetext>Comment on attachment 232738
Split Call and Construct DFG nodes into NativeCall and NativeConstruct

This is obsolete - this patch was landed but then rolled out because it broke internal run-javascriptcore-tests --32-bit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1014675</commentid>
    <comment_count>8</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2014-06-10 23:57:59 -0700</bug_when>
    <thetext>and it made layout tests crash too on public Apple Mac bots:
- http://build.webkit.org/builders/Apple%20Mavericks%20Release%20WK1%20%28Tests%29/builds/6543
- http://build.webkit.org/builders/Apple%20Mavericks%20Debug%20WK1%20%28Tests%29/builds/5806</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1014677</commentid>
    <comment_count>9</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-06-11 00:01:35 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; and it made layout tests crash too on public Apple Mac bots:
&gt; - http://build.webkit.org/builders/Apple%20Mavericks%20Release%20WK1%20%28Tests%29/builds/6543
&gt; - http://build.webkit.org/builders/Apple%20Mavericks%20Debug%20WK1%20%28Tests%29/builds/5806

That would be amazing since this was landed on a branch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1014678</commentid>
    <comment_count>10</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2014-06-11 00:03:56 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; That would be amazing since this was landed on a branch.
Good point. :) Sorry, I commented wrong bug report.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1014832</commentid>
    <comment_count>11</comment_count>
      <attachid>232879</attachid>
    <who name="Matthew Mirman">mmirman</who>
    <bug_when>2014-06-11 11:49:54 -0700</bug_when>
    <thetext>Created attachment 232879
Split Call and Construct DFG nodes into NativeCall and NativeConstruct 

Passed jsc tests on 32 bit and 64 bit.  Should be applied after https://bug-133718-attachments.webkit.org/attachment.cgi?id=232878</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1014867</commentid>
    <comment_count>12</comment_count>
      <attachid>232879</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-06-11 13:00:43 -0700</bug_when>
    <thetext>Comment on attachment 232879
Split Call and Construct DFG nodes into NativeCall and NativeConstruct 

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

&gt; Source/JavaScriptCore/dfg/DFGSafeToExecute.h:261
&gt; +        return false; // TODO: add a check for already checked. 

Can you file a bugzilla bug for this and reference it here?

&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp:644
&gt; -    if (node-&gt;op() != Call)
&gt; -        ASSERT(node-&gt;op() == Construct);
&gt; +    bool isCall = node-&gt;op() == Call || node-&gt;op() == NativeCall;
&gt; +    if (!isCall)
&gt; +        ASSERT(node-&gt;op() == Construct || node-&gt;op() == NativeConstruct);

Why does this check for NativeCall/NativeConstruct?  The DFG backend shouldn&apos;t see them.

&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp:4131
&gt; +    case NativeCall:
&gt; +    case NativeConstruct:

Seems like these cases should be RELEASE_ASSERT_NOT_REACHED().

&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:631
&gt; -    if (node-&gt;op() != Call)
&gt; -        RELEASE_ASSERT(node-&gt;op() == Construct);
&gt; +
&gt; +    bool isCall = node-&gt;op() == Call || node-&gt;op() == NativeCall;
&gt; +    if (!isCall)
&gt; +        RELEASE_ASSERT(node-&gt;op() == Construct || node-&gt;op() == NativeConstruct);

Why does this check for NativeCall/NativeConstruct?  The DFG backend shouldn&apos;t see them.

&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:4163
&gt; +    case NativeCall:
&gt; +    case NativeConstruct:

Seems like these cases should be RELEASE_ASSERT_NOT_REACHED().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1014963</commentid>
    <comment_count>13</comment_count>
      <attachid>232917</attachid>
    <who name="Matthew Mirman">mmirman</who>
    <bug_when>2014-06-11 15:45:45 -0700</bug_when>
    <thetext>Created attachment 232917
Split Call and Construct DFG nodes into NativeCall and NativeConstruct</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1014977</commentid>
    <comment_count>14</comment_count>
      <attachid>232917</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-06-11 16:42:04 -0700</bug_when>
    <thetext>Comment on attachment 232917
Split Call and Construct DFG nodes into NativeCall and NativeConstruct 

Running tests on this now, will land shortly...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1014989</commentid>
    <comment_count>15</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-06-11 17:25:44 -0700</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/169864</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>232738</attachid>
            <date>2014-06-09 15:22:29 -0700</date>
            <delta_ts>2014-06-10 21:32:32 -0700</delta_ts>
            <desc>Split Call and Construct DFG nodes into NativeCall and NativeConstruct</desc>
            <filename>0001-split-Call-and-Construct-into-NativeCall-and-NativeC.patch</filename>
            <type>text/plain</type>
            <size>20052</size>
            <attacher name="Matthew Mirman">mmirman</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9DaGFuZ2VMb2cKaW5kZXggODA5ZTNjZC4uYmQzZDM2ZiAxMDA2NDQKLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFu
Z2VMb2cKQEAgLTEsMyArMSw1MSBAQAorMjAxNC0wNi0wOSAgTWF0dGhldyBNaXJtYW4gIDxtbWly
bWFuQGFwcGxlLmNvbT4KKworICAgICAgICBBZGRlZCBuYXRpdmUgY2FsbGluZyB0byB0aGUgRlRM
IGFuZCBTcGxpdCB0aGUgREZHIG5vZGVzIAorICAgICAgICBDYWxsIGFuZCBDb25zdHJ1Y3QgaW50
byBOYXRpdmVDYWxsIGFuZCBOYXRpdmVDb25zdHJ1Y3QgCisgICAgICAgIHRvIGJldHRlciByZXBy
ZXNlbnQgdGhlaXIgc2VtYW50aWNzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTMzNjYwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBkZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaDoKKyAg
ICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6
ZXhlY3V0ZUVmZmVjdHMpOiAKKyAgICAgICAgQWRkZWQgTmF0aXZlQ2FsbCBhbmQgTmF0aXZlQ29u
c3RydWN0IGNhc2UKKyAgICAgICAgKiBkZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwOgorICAgICAg
ICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjphZGRDYWxsKTogYWRkZWQgTmF0aXZlQ2FsbCBj
YXNlLiAKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxlQ2FsbCk6IAor
ICAgICAgICBzZXQgdG8gcmV0dXJuIE5hdGl2ZUNhbGwgb3IgTmF0aXZlQ29uc3RydWN0IGluc3Rl
YWQgb2YgQ2FsbCBvciBDb25zdHJ1Y3QKKyAgICAgICAgaW4gdGhlIHByZXNlbmNlIG9mIGEgbmF0
aXZlIGZ1bmN0aW9uLgorICAgICAgICAqIGRmZy9ERkdDbG9iYmVyaXplLmg6CisgICAgICAgIChK
U0M6OkRGRzo6Y2xvYmJlcml6ZSk6IGFkZGVkIE5hdGl2ZUNhbGwgYW5kIE5hdGl2ZUNvbnN0cnVj
dCBjYXNlLgorICAgICAgICAqIGRmZy9ERkdEb2VzR0MuY3BwOgorICAgICAgICAoSlNDOjpERkc6
OmRvZXNHQyk6IGFkZGVkIE5hdGl2ZUNhbGwgYW5kIE5hdGl2ZUNvbnN0cnVjdCBjYXNlLgorICAg
ICAgICAqIGRmZy9ERkdGaXh1cFBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBo
YXNlOjpmaXh1cE5vZGUpOiBhZGRlZCBOYXRpdmVDYWxsIGFuZCBOYXRpdmVDb25zdHJ1Y3QgY2Fz
ZS4KKyAgICAgICAgKiBkZmcvREZHTm9kZS5oOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6Omhh
c0hlYXBQcmVkaWN0aW9uKTogYWRkZWQgTmF0aXZlQ2FsbCBhbmQgTmF0aXZlQ29uc3RydWN0IGNh
c2UuCisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6Y2FuQmVLbm93bkZ1bmN0aW9uKTogY2hhbmdl
ZCB0byBOYXRpdmVDYWxsIGFuZCBOYXRpdmVDb25zdHJ1Y3QuCisgICAgICAgIChKU0M6OkRGRzo6
Tm9kZTo6aGFzS25vd25GdW5jdGlvbik6IGNoYW5nZWQgdG8gTmF0aXZlQ2FsbCBhbmQgTmF0aXZl
Q29uc3RydWN0LgorICAgICAgICAqIGRmZy9ERkdOb2RlVHlwZS5oOiBhZGRlZCBOYXRpdmVDYWxs
IGFuZCBOYXRpdmVDb25zdHJ1Y3QuCisgICAgICAgICogZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdh
dGlvblBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpQcmVkaWN0aW9uUHJvcGFnYXRpb25Q
aGFzZTo6cHJvcGFnYXRlKTogYWRkZWQgTmF0aXZlQ2FsbCBhbmQgTmF0aXZlQ29uc3RydWN0IGNh
c2UuCisgICAgICAgICogZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaDoKKyAgICAgICAgKEpTQzo6REZH
OjpzYWZlVG9FeGVjdXRlKTogYWRkZWQgTmF0aXZlQ2FsbCBhbmQgTmF0aXZlQ29uc3RydWN0IGNh
c2UuCisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwOgorICAgICAgICAo
SlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjplbWl0Q2FsbCk6IGRpdHRvCisgICAgICAgIChKU0M6
OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOiBkaXR0bworICAgICAgICAqIGRmZy9ERkdT
cGVjdWxhdGl2ZUpJVDY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6
ZW1pdENhbGwpOiBkaXR0bworICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21w
aWxlKTogZGl0dG8KKyAgICAgICAgKiBmdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcDoKKyAgICAgICAg
KEpTQzo6RlRMOjpjYW5Db21waWxlKTogZGl0dG8KKyAgICAgICAgKiBmdGwvRlRMTG93ZXJERkdU
b0xMVk0uY3BwOiAgCisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06Omxvd2VyKTog
ZGl0dG8KKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6Y29tcGlsZU5vZGUpOiBk
aXR0by4KKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6Y29tcGlsZU5hdGl2ZUNh
bGxPckNvbnN0cnVjdCk6IEFkZGVkLgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZN
Ojpjb21waWxlQ2FsbE9yQ29uc3RydWN0KTogcmVtb3ZlZCBOYXRpdmVDYWxsIGFuZCBOYXRpdmVD
b25zdHJ1Y3QgZnVuY3Rpb25hbGl0eS4KKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExW
TTo6ZGlkT3ZlcmZsb3dTdGFjayk6IGFkZGVkIE5hdGl2ZUNhbGwgYW5kIE5hdGl2ZUNvbnN0cnVj
dCBjYXNlLgorICAgICAgICAqIHJ1bnRpbWUvSlNDSlNWYWx1ZS5oOiBhZGRlZCBKU19FWFBPUlRf
UFJJVkFURSB0byB0b0ludGVnZXIgYXMgaXQgaXMgYXBwYXJlbnRseSBuZWVkZWQuCisKIDIwMTQt
MDYtMDQgIE1hdHRoZXcgTWlybWFuICA8bW1pcm1hbkBhcHBsZS5jb20+CiAKICAgICAgICAgQWRk
ZWQgc3lzdGVtIGZvciBpbmxpbmluZyBuYXRpdmUgZnVuY3Rpb25zIHZpYSB0aGUgRlRMLgpkaWZm
IC0tZ2l0IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklu
bGluZXMuaCBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJ
bmxpbmVzLmgKaW5kZXggZWJmMjk2Ni4uNjZhYjg1NSAxMDA2NDQKLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCkBAIC0xODcy
LDYgKzE4NzIsOCBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+
OjpleGVjdXRlRWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAgICAgICAgICAgCiAgICAg
Y2FzZSBDYWxsOgogICAgIGNhc2UgQ29uc3RydWN0OgorICAgIGNhc2UgTmF0aXZlQ2FsbDoKKyAg
ICBjYXNlIE5hdGl2ZUNvbnN0cnVjdDoKICAgICAgICAgbm9kZS0+c2V0Q2FuRXhpdCh0cnVlKTsK
ICAgICAgICAgY2xvYmJlcldvcmxkKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgY2xvYmJlckxpbWl0
KTsKICAgICAgICAgZm9yTm9kZShub2RlKS5tYWtlSGVhcFRvcCgpOwpkaWZmIC0tZ2l0IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCmluZGV4IGE1ZGU3NWEuLmJkZjMxMGEg
MTAwNjQ0Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNw
cAorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKQEAg
LTgyMCw3ICs4MjAsNyBAQCBwcml2YXRlOgogICAgICAgICBpZiAocGFyYW1ldGVyU2xvdHMgPiBt
X3BhcmFtZXRlclNsb3RzKQogICAgICAgICAgICAgbV9wYXJhbWV0ZXJTbG90cyA9IHBhcmFtZXRl
clNsb3RzOwogCi0gICAgICAgIGludCBkdW1teVRoaXNBcmd1bWVudCA9IG9wID09IENhbGwgPyAw
IDogMTsKKyAgICAgICAgaW50IGR1bW15VGhpc0FyZ3VtZW50ID0gb3AgPT0gQ2FsbCB8fCBvcCA9
PSBOYXRpdmVDYWxsID8gMCA6IDE7CiAgICAgICAgIGZvciAoaW50IGkgPSAwICsgZHVtbXlUaGlz
QXJndW1lbnQ7IGkgPCBhcmdDb3VudDsgKytpKQogICAgICAgICAgICAgYWRkVmFyQXJnQ2hpbGQo
Z2V0KHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KGksIHJlZ2lzdGVyT2Zmc2V0KSkpOwogCkBA
IC0xMjc1LDkgKzEyNzUsMTkgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlQ2FsbCgKICAg
ICAgICAgaWYgKGZ1bmN0aW9uLT5pc0hvc3RGdW5jdGlvbigpKSB7CiAgICAgICAgICAgICBlbWl0
RnVuY3Rpb25DaGVja3MoY2FsbExpbmtTdGF0dXMsIGNhbGxUYXJnZXQsIHJlZ2lzdGVyT2Zmc2V0
LCBzcGVjaWFsaXphdGlvbktpbmQpOwogICAgICAgICAgICAga25vd25GdW5jdGlvbiA9IGZ1bmN0
aW9uOworCisgICAgICAgICAgICBpZiAob3AgPT0gQ2FsbCkgCisgICAgICAgICAgICAgICAgb3Ag
PSBOYXRpdmVDYWxsOworICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgQVNTRVJU
KG9wID09IENvbnN0cnVjdCk7CisgICAgICAgICAgICAgICAgb3AgPSBOYXRpdmVDb25zdHJ1Y3Q7
CisgICAgICAgICAgICB9CiAgICAgICAgIH0KLSAgICAKLSAgICBhZGRDYWxsKHJlc3VsdCwgb3As
IGNhbGxUYXJnZXQsIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCByZWdpc3Rlck9mZnNldCkt
PmdpdmVLbm93bkZ1bmN0aW9uKGtub3duRnVuY3Rpb24pOworCisgICAgIE5vZGUqIGNhbGwgPSBh
ZGRDYWxsKHJlc3VsdCwgb3AsIGNhbGxUYXJnZXQsIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlz
LCByZWdpc3Rlck9mZnNldCk7CisKKyAgICAgaWYgKGtub3duRnVuY3Rpb24pIAorICAgICAgICAg
Y2FsbC0+Z2l2ZUtub3duRnVuY3Rpb24oa25vd25GdW5jdGlvbik7CiB9CiAKIHZvaWQgQnl0ZUNv
ZGVQYXJzZXI6OmVtaXRGdW5jdGlvbkNoZWNrcyhjb25zdCBDYWxsTGlua1N0YXR1cyYgY2FsbExp
bmtTdGF0dXMsIE5vZGUqIGNhbGxUYXJnZXQsIGludCByZWdpc3Rlck9mZnNldCwgQ29kZVNwZWNp
YWxpemF0aW9uS2luZCBraW5kKQpkaWZmIC0tZ2l0IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQ2xvYmJlcml6ZS5oIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5o
CmluZGV4IDFiMDU1OTguLjU1Yjg2MTkgMTAwNjQ0Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0Nsb2JiZXJpemUuaAorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9i
YmVyaXplLmgKQEAgLTIwMCw2ICsyMDAsOCBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBo
LCBOb2RlKiBub2RlLCBSZWFkRnVuY3RvciYgcmVhZCwgV3JpdGVGdW5jdG9yJiB3cml0ZQogICAg
IGNhc2UgQXJyYXlQb3A6CiAgICAgY2FzZSBDYWxsOgogICAgIGNhc2UgQ29uc3RydWN0OgorICAg
IGNhc2UgTmF0aXZlQ2FsbDoKKyAgICBjYXNlIE5hdGl2ZUNvbnN0cnVjdDoKICAgICBjYXNlIFRv
UHJpbWl0aXZlOgogICAgIGNhc2UgSW46CiAgICAgY2FzZSBHZXRNeUFyZ3VtZW50c0xlbmd0aFNh
ZmU6CmRpZmYgLS1naXQgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAppbmRleCA3MDFhMGU4Li5kNmQx
YzU4IDEwMDY0NAotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKQEAgLTExNyw2ICsxMTcs
OCBAQCBib29sIGRvZXNHQyhHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBDb21w
YXJlU3RyaWN0RXE6CiAgICAgY2FzZSBDYWxsOgogICAgIGNhc2UgQ29uc3RydWN0OgorICAgIGNh
c2UgTmF0aXZlQ2FsbDoKKyAgICBjYXNlIE5hdGl2ZUNvbnN0cnVjdDoKICAgICBjYXNlIEJyZWFr
cG9pbnQ6CiAgICAgY2FzZSBQcm9maWxlV2lsbENhbGw6CiAgICAgY2FzZSBQcm9maWxlRGlkQ2Fs
bDoKZGlmZiAtLWdpdCBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3Bw
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKaW5kZXggYjA2NzJi
ZC4uZTQzMTQ1NyAxMDA2NDQKLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQ
aGFzZS5jcHAKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAK
QEAgLTEwODIsNiArMTA4Miw4IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgQWxsb2NhdGlvblBy
b2ZpbGVXYXRjaHBvaW50OgogICAgICAgICBjYXNlIENhbGw6CiAgICAgICAgIGNhc2UgQ29uc3Ry
dWN0OgorICAgICAgICBjYXNlIE5hdGl2ZUNhbGw6CisgICAgICAgIGNhc2UgTmF0aXZlQ29uc3Ry
dWN0OgogICAgICAgICBjYXNlIE5ld09iamVjdDoKICAgICAgICAgY2FzZSBOZXdBcnJheUJ1ZmZl
cjoKICAgICAgICAgY2FzZSBOZXdSZWdleHA6CmRpZmYgLS1naXQgU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdOb2RlLmggU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKaW5k
ZXggYjZjNjhhMC4uMTFhZjFkMiAxMDA2NDQKLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHTm9kZS5oCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaApAQCAtOTc4
LDYgKzk3OCw4IEBAIHN0cnVjdCBOb2RlIHsKICAgICAgICAgY2FzZSBHZXRNeUFyZ3VtZW50QnlW
YWxTYWZlOgogICAgICAgICBjYXNlIENhbGw6CiAgICAgICAgIGNhc2UgQ29uc3RydWN0OgorICAg
ICAgICBjYXNlIE5hdGl2ZUNhbGw6CisgICAgICAgIGNhc2UgTmF0aXZlQ29uc3RydWN0OgogICAg
ICAgICBjYXNlIEdldEJ5T2Zmc2V0OgogICAgICAgICBjYXNlIE11bHRpR2V0QnlPZmZzZXQ6CiAg
ICAgICAgIGNhc2UgR2V0Q2xvc3VyZVZhcjoKQEAgLTEwMDgsOCArMTAxMCw4IEBAIHN0cnVjdCBO
b2RlIHsKICAgICBib29sIGNhbkJlS25vd25GdW5jdGlvbigpCiAgICAgewogICAgICAgICBzd2l0
Y2ggKG9wKCkpIHsKLSAgICAgICAgY2FzZSBDb25zdHJ1Y3Q6Ci0gICAgICAgIGNhc2UgQ2FsbDoK
KyAgICAgICAgY2FzZSBOYXRpdmVDb25zdHJ1Y3Q6CisgICAgICAgIGNhc2UgTmF0aXZlQ2FsbDoK
ICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwpAQCAtMTAxOSw4ICsxMDIxLDggQEAgc3RydWN0IE5vZGUgewogICAgIGJv
b2wgaGFzS25vd25GdW5jdGlvbigpCiAgICAgewogICAgICAgICBzd2l0Y2ggKG9wKCkpIHsKLSAg
ICAgICAgY2FzZSBDb25zdHJ1Y3Q6Ci0gICAgICAgIGNhc2UgQ2FsbDoKKyAgICAgICAgY2FzZSBO
YXRpdmVDb25zdHJ1Y3Q6CisgICAgICAgIGNhc2UgTmF0aXZlQ2FsbDoKICAgICAgICAgICAgIHJl
dHVybiAoYm9vbCltX29wSW5mbzsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKZGlmZiAtLWdpdCBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBl
LmggU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCmluZGV4IGYxMDQ2MTYu
LjQ3MTc4MzQgMTAwNjQ0Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBl
LmgKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaApAQCAtMjE1LDYg
KzIxNSw4IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKICAgICAvKiBDYWxscy4g
Ki9cCiAgICAgbWFjcm8oQ2FsbCwgTm9kZVJlc3VsdEpTIHwgTm9kZU11c3RHZW5lcmF0ZSB8IE5v
ZGVIYXNWYXJBcmdzIHwgTm9kZUNsb2JiZXJzV29ybGQpIFwKICAgICBtYWNybyhDb25zdHJ1Y3Qs
IE5vZGVSZXN1bHRKUyB8IE5vZGVNdXN0R2VuZXJhdGUgfCBOb2RlSGFzVmFyQXJncyB8IE5vZGVD
bG9iYmVyc1dvcmxkKSBcCisgICAgbWFjcm8oTmF0aXZlQ2FsbCwgTm9kZVJlc3VsdEpTIHwgTm9k
ZU11c3RHZW5lcmF0ZSB8IE5vZGVIYXNWYXJBcmdzIHwgTm9kZUNsb2JiZXJzV29ybGQpIFwKKyAg
ICBtYWNybyhOYXRpdmVDb25zdHJ1Y3QsIE5vZGVSZXN1bHRKUyB8IE5vZGVNdXN0R2VuZXJhdGUg
fCBOb2RlSGFzVmFyQXJncyB8IE5vZGVDbG9iYmVyc1dvcmxkKSBcCiAgICAgXAogICAgIC8qIEFs
bG9jYXRpb25zLiAqL1wKICAgICBtYWNybyhOZXdPYmplY3QsIE5vZGVSZXN1bHRKUykgXApkaWZm
IC0tZ2l0IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9u
UGhhc2UuY3BwIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0
aW9uUGhhc2UuY3BwCmluZGV4IGRlNTRiNWUuLmUyMWU1M2YgMTAwNjQ0Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAK
QEAgLTE4Myw2ICsxODMsOCBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIE11bHRpR2V0QnlPZmZz
ZXQ6CiAgICAgICAgIGNhc2UgQ2FsbDoKICAgICAgICAgY2FzZSBDb25zdHJ1Y3Q6CisgICAgICAg
IGNhc2UgTmF0aXZlQ2FsbDoKKyAgICAgICAgY2FzZSBOYXRpdmVDb25zdHJ1Y3Q6CiAgICAgICAg
IGNhc2UgR2V0R2xvYmFsVmFyOgogICAgICAgICBjYXNlIEdldENsb3N1cmVWYXI6IHsKICAgICAg
ICAgICAgIGNoYW5nZWQgfD0gc2V0UHJlZGljdGlvbihub2RlLT5nZXRIZWFwUHJlZGljdGlvbigp
KTsKZGlmZiAtLWdpdCBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUu
aCBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAppbmRleCA2NmU3
ZmZjLi44YWQyNDEwIDEwMDY0NAotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZl
VG9FeGVjdXRlLmgKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0
ZS5oCkBAIC0yNTYsNyArMjU2LDExIEBAIGJvb2wgc2FmZVRvRXhlY3V0ZShBYnN0cmFjdFN0YXRl
VHlwZSYgc3RhdGUsIEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSkKICAgICBjYXNlIEdldEdldHRl
cjoKICAgICBjYXNlIEdldFNldHRlcjoKICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIAor
CisgICAgY2FzZSBOYXRpdmVDYWxsOgorICAgIGNhc2UgTmF0aXZlQ29uc3RydWN0OgorICAgICAg
ICByZXR1cm4gZmFsc2U7IC8vIFRPRE86IGFkZCBhIGNoZWNrIGZvciBhbHJlYWR5IGNoZWNrZWQu
IAorCiAgICAgY2FzZSBHZXRCeVZhbDoKICAgICBjYXNlIEdldEluZGV4ZWRQcm9wZXJ0eVN0b3Jh
Z2U6CiAgICAgY2FzZSBHZXRBcnJheUxlbmd0aDoKZGlmZiAtLWdpdCBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKaW5kZXggMGE5MzAwNi4uODAyYTQwMyAx
MDA2NDQKLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82
NC5jcHAKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82
NC5jcHAKQEAgLTYzOCwxMiArNjM4LDEzIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVN
aXNjU3RyaWN0RXEoTm9kZSogbm9kZSkKIAogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdENhbGwo
Tm9kZSogbm9kZSkKIHsKLSAgICBpZiAobm9kZS0+b3AoKSAhPSBDYWxsKQotICAgICAgICBBU1NF
UlQobm9kZS0+b3AoKSA9PSBDb25zdHJ1Y3QpOworICAgIGJvb2wgaXNDYWxsID0gbm9kZS0+b3Ao
KSA9PSBDYWxsIHx8IG5vZGUtPm9wKCkgPT0gTmF0aXZlQ2FsbDsKKyAgICBpZiAoIWlzQ2FsbCkK
KyAgICAgICAgQVNTRVJUKG5vZGUtPm9wKCkgPT0gQ29uc3RydWN0IHx8IG5vZGUtPm9wKCkgPT0g
TmF0aXZlQ29uc3RydWN0KTsKIAogICAgIC8vIEZvciBjb25zdHJ1Y3RvcnMsIHRoZSB0aGlzIGFy
Z3VtZW50IGlzIG5vdCBwYXNzZWQgYnV0IHdlIGhhdmUgdG8gbWFrZSBzcGFjZQogICAgIC8vIGZv
ciBpdC4KLSAgICBpbnQgZHVtbXlUaGlzQXJndW1lbnQgPSBub2RlLT5vcCgpID09IENhbGwgPyAw
IDogMTsKKyAgICBpbnQgZHVtbXlUaGlzQXJndW1lbnQgPSBpc0NhbGwgPyAwIDogMTsKIAogICAg
IENhbGxMaW5rSW5mbzo6Q2FsbFR5cGUgY2FsbFR5cGUgPSBub2RlLT5vcCgpID09IENhbGwgPyBD
YWxsTGlua0luZm86OkNhbGwgOiBDYWxsTGlua0luZm86OkNvbnN0cnVjdDsKIApAQCAtNDEzMCw2
ICs0MTMxLDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogCiAg
ICAgY2FzZSBDYWxsOgogICAgIGNhc2UgQ29uc3RydWN0OgorICAgIGNhc2UgTmF0aXZlQ2FsbDoK
KyAgICBjYXNlIE5hdGl2ZUNvbnN0cnVjdDoKICAgICAgICAgZW1pdENhbGwobm9kZSk7CiAgICAg
ICAgIGJyZWFrOwogCmRpZmYgLS1naXQgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVDY0LmNwcCBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklUNjQuY3BwCmluZGV4IDc3N2Q2Y2QuLjMzMDkzODQgMTAwNjQ0Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCkBAIC02MzcsMTQgKzYzNywxNiBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlTWlzY1N0cmljdEVxKE5vZGUqIG5vZGUpCiAKIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRDYWxsKE5vZGUqIG5vZGUpCiB7Ci0gICAgaWYgKG5vZGUt
Pm9wKCkgIT0gQ2FsbCkKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQobm9kZS0+b3AoKSA9PSBDb25z
dHJ1Y3QpOworCisgICAgYm9vbCBpc0NhbGwgPSBub2RlLT5vcCgpID09IENhbGwgfHwgbm9kZS0+
b3AoKSA9PSBOYXRpdmVDYWxsOworICAgIGlmICghaXNDYWxsKQorICAgICAgICBSRUxFQVNFX0FT
U0VSVChub2RlLT5vcCgpID09IENvbnN0cnVjdCB8fCBub2RlLT5vcCgpID09IE5hdGl2ZUNvbnN0
cnVjdCk7CiAKICAgICAvLyBGb3IgY29uc3RydWN0b3JzLCB0aGUgdGhpcyBhcmd1bWVudCBpcyBu
b3QgcGFzc2VkIGJ1dCB3ZSBoYXZlIHRvIG1ha2Ugc3BhY2UKICAgICAvLyBmb3IgaXQuCi0gICAg
aW50IGR1bW15VGhpc0FyZ3VtZW50ID0gbm9kZS0+b3AoKSA9PSBDYWxsID8gMCA6IDE7CisgICAg
aW50IGR1bW15VGhpc0FyZ3VtZW50ID0gaXNDYWxsID8gMCA6IDE7CiAgICAgCi0gICAgQ2FsbExp
bmtJbmZvOjpDYWxsVHlwZSBjYWxsVHlwZSA9IG5vZGUtPm9wKCkgPT0gQ2FsbCA/IENhbGxMaW5r
SW5mbzo6Q2FsbCA6IENhbGxMaW5rSW5mbzo6Q29uc3RydWN0OworICAgIENhbGxMaW5rSW5mbzo6
Q2FsbFR5cGUgY2FsbFR5cGUgPSBpc0NhbGwgPyBDYWxsTGlua0luZm86OkNhbGwgOiBDYWxsTGlu
a0luZm86OkNvbnN0cnVjdDsKICAgICAKICAgICBFZGdlIGNhbGxlZUVkZ2UgPSBtX2ppdC5ncmFw
aCgpLm1fdmFyQXJnQ2hpbGRyZW5bbm9kZS0+Zmlyc3RDaGlsZCgpXTsKICAgICBKU1ZhbHVlT3Bl
cmFuZCBjYWxsZWUodGhpcywgY2FsbGVlRWRnZSk7CkBAIC00MTc0LDYgKzQxNzYsOCBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAKICAgICBjYXNlIENhbGw6CiAg
ICAgY2FzZSBDb25zdHJ1Y3Q6CisgICAgY2FzZSBOYXRpdmVDYWxsOgorICAgIGNhc2UgTmF0aXZl
Q29uc3RydWN0OgogICAgICAgICBlbWl0Q2FsbChub2RlKTsKICAgICAgICAgYnJlYWs7CiAKZGlm
ZiAtLWdpdCBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAgU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCmluZGV4IDU3ZTRmNmMu
LjE1MWUyYmMgMTAwNjQ0Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxp
dGllcy5jcHAKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNw
cApAQCAtMTE5LDYgKzExOSw4IEBAIGlubGluZSBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZShO
b2RlKiBub2RlKQogICAgIGNhc2UgU3RvcmVCYXJyaWVyV2l0aE51bGxDaGVjazoKICAgICBjYXNl
IENhbGw6CiAgICAgY2FzZSBDb25zdHJ1Y3Q6CisgICAgY2FzZSBOYXRpdmVDYWxsOgorICAgIGNh
c2UgTmF0aXZlQ29uc3RydWN0OgogICAgIGNhc2UgVmFsdWVUb0ludDMyOgogICAgIGNhc2UgQnJh
bmNoOgogICAgIGNhc2UgTG9naWNhbE5vdDoKZGlmZiAtLWdpdCBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTExvd2VyREZHVG9MTFZNLmNwcCBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TExvd2VyREZHVG9MTFZNLmNwcAppbmRleCA2ZWNmYzY5Li40YTA3OGRiIDEwMDY0NAotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvTExWTS5jcHAKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwCkBAIC0xNTQsMTMgKzE1NCw4
IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICBOb2RlKiBtX25vZGUgPSBibG9jay0+YXQobm9k
ZUluZGV4KTsKICAgICAgICAgICAgICAgICBpZiAobV9ub2RlLT5oYXNLbm93bkZ1bmN0aW9uKCkp
IHsKICAgICAgICAgICAgICAgICAgICAgaW50IG51bUFyZ3MgPSBtX25vZGUtPm51bUNoaWxkcmVu
KCk7Ci0gICAgICAgICAgICAgICAgICAgIE5hdGl2ZUZ1bmN0aW9uIGZ1bmMgPSBtX25vZGUtPmtu
b3duRnVuY3Rpb24oKS0+bmF0aXZlRnVuY3Rpb24oKTsKLSAgICAgICAgICAgICAgICAgICAgRGxf
aW5mbyBpbmZvOwotICAgICAgICAgICAgICAgICAgICBpZiAoZGxhZGRyKCh2b2lkKilmdW5jLCAm
aW5mbykpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIExWYWx1ZSBjYWxsZWUgPSBnZXRGdW5j
dGlvbkJ5U3ltYm9sKGluZm8uZGxpX3NuYW1lKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlm
IChjYWxsZWUgJiYgbnVtQXJncyA+IG1heE51bWJlck9mQXJndW1lbnRzKQotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG1heE51bWJlck9mQXJndW1lbnRzID0gbnVtQXJnczsKLSAgICAgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBpZiAobnVtQXJncyA+IG1heE51bWJl
ck9mQXJndW1lbnRzKQorICAgICAgICAgICAgICAgICAgICAgICAgbWF4TnVtYmVyT2ZBcmd1bWVu
dHMgPSBudW1BcmdzOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAg
fQpAQCAtNjM3LDYgKzYzMiwxMCBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIENvbnN0cnVjdDoK
ICAgICAgICAgICAgIGNvbXBpbGVDYWxsT3JDb25zdHJ1Y3QoKTsKICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICBjYXNlIE5hdGl2ZUNhbGw6CisgICAgICAgIGNhc2UgTmF0aXZlQ29uc3RydWN0
OgorICAgICAgICAgICAgY29tcGlsZU5hdGl2ZUNhbGxPckNvbnN0cnVjdCgpOworICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIGNhc2UgSnVtcDoKICAgICAgICAgICAgIGNvbXBpbGVKdW1wKCk7
CiAgICAgICAgICAgICBicmVhazsKQEAgLTM1ODUsMTYgKzM1ODQsNjYgQEAgcHJpdmF0ZToKICAg
ICAgICAgc2V0Qm9vbGVhbihtX291dC5iaXROb3QoYm9vbGlmeShtX25vZGUtPmNoaWxkMSgpKSkp
OwogICAgIH0KIAorICAgIHZvaWQgY29tcGlsZU5hdGl2ZUNhbGxPckNvbnN0cnVjdCgpIAorICAg
IHsKKyAgICAgICAgaW50IGR1bW15VGhpc0FyZ3VtZW50ID0gbV9ub2RlLT5vcCgpID09IE5hdGl2
ZUNhbGwgPyAwIDogMTsKKyAgICAgICAgaW50IG51bVBhc3NlZEFyZ3MgPSBtX25vZGUtPm51bUNo
aWxkcmVuKCkgLSAxOworICAgICAgICBpbnQgbnVtQXJncyA9IG51bVBhc3NlZEFyZ3MgKyBkdW1t
eVRoaXNBcmd1bWVudDsKKworICAgICAgICBBU1NFUlQobV9ub2RlLT5oYXNLbm93bkZ1bmN0aW9u
KCkpOworCisgICAgICAgIEpTRnVuY3Rpb24qIGtub3duRnVuY3Rpb24gPSBtX25vZGUtPmtub3du
RnVuY3Rpb24oKTsKKyAgICAgICAgTmF0aXZlRnVuY3Rpb24gZnVuY3Rpb24gPSBrbm93bkZ1bmN0
aW9uLT5uYXRpdmVGdW5jdGlvbigpOworCisgICAgICAgIERsX2luZm8gaW5mbzsKKyAgICAgICAg
aWYgKCFkbGFkZHIoKHZvaWQqKWZ1bmN0aW9uLCAmaW5mbykpCisgICAgICAgICAgICBBU1NFUlQo
ZmFsc2UpOyAvLyBpZiB3ZSBjb3VsZG4ndCBmaW5kIHRoZSBuYXRpdmUgZnVuY3Rpb24gdGhpcyBk
b2Vzbid0IGJvZGUgd2VsbC4KKworICAgICAgICBMVmFsdWUgY2FsbGVlID0gZ2V0RnVuY3Rpb25C
eVN5bWJvbChpbmZvLmRsaV9zbmFtZSk7CisKKyAgICAgICAgYm9vbCBub3RJbmxpbmFibGU7Cisg
ICAgICAgIGlmICgobm90SW5saW5hYmxlID0gIWNhbGxlZSkpCisgICAgICAgICAgICBjYWxsZWUg
PSBtX291dC5vcGVyYXRpb24oZnVuY3Rpb24pOworCisgICAgICAgIEpTU2NvcGUqIHNjb3BlID0g
a25vd25GdW5jdGlvbi0+c2NvcGVVbmNoZWNrZWQoKTsKKyAgICAgICAgbV9vdXQuc3RvcmVQdHIo
bV9jYWxsRnJhbWUsIG1fZXhlY1N0b3JhZ2UsIG1faGVhcHMuQ2FsbEZyYW1lX2NhbGxlckZyYW1l
KTsKKyAgICAgICAgbV9vdXQuc3RvcmVQdHIoY29uc3ROdWxsKG1fb3V0LmludFB0ciksIGFkZHJl
c3NGb3IobV9leGVjU3RvcmFnZSwgSlNTdGFjazo6Q29kZUJsb2NrKSk7CisgICAgICAgIG1fb3V0
LnN0b3JlUHRyKHdlYWtQb2ludGVyKHNjb3BlKSwgYWRkcmVzc0ZvcihtX2V4ZWNTdG9yYWdlLCBK
U1N0YWNrOjpTY29wZUNoYWluKSk7CisgICAgICAgIG1fb3V0LnN0b3JlUHRyKHdlYWtQb2ludGVy
KGtub3duRnVuY3Rpb24pLCBhZGRyZXNzRm9yKG1fZXhlY1N0b3JhZ2UsIEpTU3RhY2s6OkNhbGxl
ZSkpOworCisgICAgICAgIG1fb3V0LnN0b3JlNjQobV9vdXQuY29uc3RJbnQ2NChudW1BcmdzKSwg
YWRkcmVzc0ZvcihtX2V4ZWNTdG9yYWdlLCBKU1N0YWNrOjpBcmd1bWVudENvdW50KSk7CisKKyAg
ICAgICAgaWYgKGR1bW15VGhpc0FyZ3VtZW50KSAKKyAgICAgICAgICAgIG1fb3V0LnN0b3JlUHRy
KGdldFVuZGVmKG1fb3V0LmludDY0KSwgYWRkcmVzc0ZvcihtX2V4ZWNTdG9yYWdlLCBKU1N0YWNr
OjpUaGlzQXJndW1lbnQpKTsKKyAgICAgICAgCisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwg
bnVtUGFzc2VkQXJnczsgKytpKSB7CisgICAgICAgICAgICBtX291dC5zdG9yZVB0cihsb3dKU1Zh
bHVlKG1fZ3JhcGgudmFyQXJnQ2hpbGQobV9ub2RlLCAxICsgaSkpLAorICAgICAgICAgICAgICAg
IGFkZHJlc3NGb3IobV9leGVjU3RvcmFnZSwgZHVtbXlUaGlzQXJndW1lbnQgPyBKU1N0YWNrOjpG
aXJzdEFyZ3VtZW50IDogSlNTdGFjazo6VGhpc0FyZ3VtZW50LCBpICogc2l6ZW9mKFJlZ2lzdGVy
KSkpOworICAgICAgICB9CisKKyAgICAgICAgTFZhbHVlIGNhbGxlZUNhbGxGcmFtZSA9IG1fb3V0
LmFkZHJlc3MobV9leGVjU3RhdGUsIG1faGVhcHMuQ2FsbEZyYW1lX2NhbGxlckZyYW1lKS52YWx1
ZSgpOworICAgICAgICBtX291dC5zdG9yZVB0cihtX291dC5wdHJUb0ludChjYWxsZWVDYWxsRnJh
bWUsIG1fb3V0LmludFB0ciksIG1fb3V0LmFic29sdXRlKCZ2bSgpLnRvcENhbGxGcmFtZSkpOwor
CisgICAgICAgIExUeXBlIHR5cGVDYWxsZWVBcmc7CisgICAgICAgIGdldFBhcmFtVHlwZXMoZ2V0
RWxlbWVudFR5cGUodHlwZU9mKGNhbGxlZSkpLCAmdHlwZUNhbGxlZUFyZyk7CisKKyAgICAgICAg
TFZhbHVlIGFyZ3VtZW50ID0gbm90SW5saW5hYmxlIAorICAgICAgICAgICAgPyBtX291dC5wdHJU
b0ludChjYWxsZWVDYWxsRnJhbWUsIHR5cGVDYWxsZWVBcmcpIAorICAgICAgICAgICAgOiBtX291
dC5iaXRDYXN0KGNhbGxlZUNhbGxGcmFtZSwgdHlwZUNhbGxlZUFyZyk7CisgICAgICAgIExWYWx1
ZSBjYWxsID0gdm1DYWxsKGNhbGxlZSwgYXJndW1lbnQpOworCisgICAgICAgIGlmIChPcHRpb25z
Ojp2ZXJib3NlQ29tcGlsYXRpb24oKSkKKyAgICAgICAgICAgIGRhdGFMb2coIk5hdGl2ZSBjYWxs
aW5nOiAiLCBpbmZvLmRsaV9zbmFtZSwgIlxuIik7CisKKyAgICAgICAgc2V0SlNWYWx1ZShjYWxs
KTsKKyAgICB9CisKICAgICB2b2lkIGNvbXBpbGVDYWxsT3JDb25zdHJ1Y3QoKQogICAgIHsKICAg
ICAgICAgaW50IGR1bW15VGhpc0FyZ3VtZW50ID0gbV9ub2RlLT5vcCgpID09IENhbGwgPyAwIDog
MTsKICAgICAgICAgaW50IG51bVBhc3NlZEFyZ3MgPSBtX25vZGUtPm51bUNoaWxkcmVuKCkgLSAx
OwogICAgICAgICBpbnQgbnVtQXJncyA9IG51bVBhc3NlZEFyZ3MgKyBkdW1teVRoaXNBcmd1bWVu
dDsKIAotICAgICAgICBpZiAobV9ub2RlLT5oYXNLbm93bkZ1bmN0aW9uKCkKLSAgICAgICAgICAg
ICYmIHBvc3NpYmx5Q29tcGlsZUlubGluZWFibGVOYXRpdmVDYWxsKGR1bW15VGhpc0FyZ3VtZW50
LCBudW1QYXNzZWRBcmdzLCBudW1BcmdzKSkKLSAgICAgICAgICAgIHJldHVybjsKLQogICAgICAg
ICBMVmFsdWUganNDYWxsZWUgPSBsb3dKU1ZhbHVlKG1fZ3JhcGgudmFyQXJnQ2hpbGQobV9ub2Rl
LCAwKSk7CiAKICAgICAgICAgdW5zaWduZWQgc3RhY2ttYXBJRCA9IG1fc3RhY2ttYXBJRHMrKzsK
QEAgLTM5NzUsNTAgKzQwMjQsNiBAQCBwcml2YXRlOgogI2VuZGlmCiAgICAgfQogICAgIAotICAg
IGJvb2wgcG9zc2libHlDb21waWxlSW5saW5lYWJsZU5hdGl2ZUNhbGwoaW50IGR1bW15VGhpc0Fy
Z3VtZW50LCBpbnQgbnVtUGFzc2VkQXJncywgaW50IG51bUFyZ3MpCi0gICAgewotICAgICAgICBK
U0Z1bmN0aW9uKiBrbm93bkZ1bmN0aW9uID0gbV9ub2RlLT5rbm93bkZ1bmN0aW9uKCk7Ci0gICAg
ICAgIE5hdGl2ZUZ1bmN0aW9uIGZ1bmN0aW9uID0ga25vd25GdW5jdGlvbi0+bmF0aXZlRnVuY3Rp
b24oKTsKLSAgICAgICAgRGxfaW5mbyBpbmZvOwotICAgICAgICBpZiAoZGxhZGRyKCh2b2lkKilm
dW5jdGlvbiwgJmluZm8pKSB7Ci0gICAgICAgICAgICBMVmFsdWUgY2FsbGVlID0gZ2V0RnVuY3Rp
b25CeVN5bWJvbChpbmZvLmRsaV9zbmFtZSk7Ci0gICAgICAgICAgICBMVHlwZSB0eXBlQ2FsbGVl
OwotICAgICAgICAgICAgaWYgKGNhbGxlZSAmJiAodHlwZUNhbGxlZSA9IHR5cGVPZihjYWxsZWUp
KSAmJiAodHlwZUNhbGxlZSA9IGdldEVsZW1lbnRUeXBlKHR5cGVDYWxsZWUpKSkgewotCi0gICAg
ICAgICAgICAgICAgSlNTY29wZSogc2NvcGUgPSBrbm93bkZ1bmN0aW9uLT5zY29wZVVuY2hlY2tl
ZCgpOwotICAgICAgICAgICAgICAgIG1fb3V0LnN0b3JlUHRyKG1fY2FsbEZyYW1lLCBtX2V4ZWNT
dG9yYWdlLCBtX2hlYXBzLkNhbGxGcmFtZV9jYWxsZXJGcmFtZSk7Ci0gICAgICAgICAgICAgICAg
bV9vdXQuc3RvcmVQdHIoY29uc3ROdWxsKG1fb3V0LmludFB0ciksIGFkZHJlc3NGb3IobV9leGVj
U3RvcmFnZSwgSlNTdGFjazo6Q29kZUJsb2NrKSk7Ci0gICAgICAgICAgICAgICAgbV9vdXQuc3Rv
cmVQdHIod2Vha1BvaW50ZXIoc2NvcGUpLCBhZGRyZXNzRm9yKG1fZXhlY1N0b3JhZ2UsIEpTU3Rh
Y2s6OlNjb3BlQ2hhaW4pKTsKLSAgICAgICAgICAgICAgICBtX291dC5zdG9yZVB0cih3ZWFrUG9p
bnRlcihrbm93bkZ1bmN0aW9uKSwgYWRkcmVzc0ZvcihtX2V4ZWNTdG9yYWdlLCBKU1N0YWNrOjpD
YWxsZWUpKTsKLQotICAgICAgICAgICAgICAgIG1fb3V0LnN0b3JlNjQobV9vdXQuY29uc3RJbnQ2
NChudW1BcmdzKSwgYWRkcmVzc0ZvcihtX2V4ZWNTdG9yYWdlLCBKU1N0YWNrOjpBcmd1bWVudENv
dW50KSk7Ci0KLSAgICAgICAgICAgICAgICBpZiAoZHVtbXlUaGlzQXJndW1lbnQpIAotICAgICAg
ICAgICAgICAgICAgICBtX291dC5zdG9yZVB0cihnZXRVbmRlZihtX291dC5pbnQ2NCksIGFkZHJl
c3NGb3IobV9leGVjU3RvcmFnZSwgSlNTdGFjazo6VGhpc0FyZ3VtZW50KSk7Ci0gICAgICAgICAg
ICAgICAgCi0gICAgICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1QYXNzZWRBcmdz
OyArK2kpIHsKLSAgICAgICAgICAgICAgICAgICAgbV9vdXQuc3RvcmVQdHIobG93SlNWYWx1ZSht
X2dyYXBoLnZhckFyZ0NoaWxkKG1fbm9kZSwgMSArIGkpKSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgIGFkZHJlc3NGb3IobV9leGVjU3RvcmFnZSwgZHVtbXlUaGlzQXJndW1lbnQgPyBKU1N0YWNr
OjpGaXJzdEFyZ3VtZW50IDogSlNTdGFjazo6VGhpc0FyZ3VtZW50LCBpICogc2l6ZW9mKFJlZ2lz
dGVyKSkpOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIExUeXBlIHR5cGVD
YWxsZWVBcmc7Ci0gICAgICAgICAgICAgICAgZ2V0UGFyYW1UeXBlcyh0eXBlQ2FsbGVlLCAmdHlw
ZUNhbGxlZUFyZyk7Ci0gICAgICAgICAgICAgICAgTFZhbHVlIGNhbGxlZUNhbGxGcmFtZSA9IG1f
b3V0LmFkZHJlc3MobV9leGVjU3RhdGUsIG1faGVhcHMuQ2FsbEZyYW1lX2NhbGxlckZyYW1lKS52
YWx1ZSgpOwotICAgICAgICAgICAgICAgIG1fb3V0LnN0b3JlUHRyKG1fb3V0LnB0clRvSW50KGNh
bGxlZUNhbGxGcmFtZSwgbV9vdXQuaW50UHRyKSwgbV9vdXQuYWJzb2x1dGUoJnZtKCkudG9wQ2Fs
bEZyYW1lKSk7Ci0gICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgTFZhbHVlIGNhbGwg
PSB2bUNhbGwoY2FsbGVlLCAKLSAgICAgICAgICAgICAgICAgICAgbV9vdXQuYml0Q2FzdChjYWxs
ZWVDYWxsRnJhbWUsIHR5cGVDYWxsZWVBcmcpKTsKLQotICAgICAgICAgICAgICAgIGlmIChPcHRp
b25zOjp2ZXJib3NlQ29tcGlsYXRpb24oKSkKLSAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygi
SW5saW5pbmc6ICIsIGluZm8uZGxpX3NuYW1lLCAiXG4iKTsKLQotICAgICAgICAgICAgICAgIHNl
dEpTVmFsdWUoY2FsbCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQogICAgIExWYWx1
ZSBnZXRGdW5jdGlvbkJ5U3ltYm9sKGNvbnN0IENTdHJpbmcgc3ltYm9sKQogICAgIHsKICAgICAg
ICAgaWYgKCFtX2Z0bFN0YXRlLnN5bWJvbFRhYmxlLmNvbnRhaW5zKHN5bWJvbCkpIApAQCAtNDE1
MCw2ICs0MTU1LDggQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBjYXNlIFB1dEJ5SWQ6CiAg
ICAgICAgICAgICAgICAgY2FzZSBDYWxsOgogICAgICAgICAgICAgICAgIGNhc2UgQ29uc3RydWN0
OgorICAgICAgICAgICAgICAgIGNhc2UgTmF0aXZlQ2FsbDoKKyAgICAgICAgICAgICAgICBjYXNl
IE5hdGl2ZUNvbnN0cnVjdDoKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1fb3V0LmJlbG93
KAogICAgICAgICAgICAgICAgICAgICAgICAgbV9jYWxsRnJhbWUsCiAgICAgICAgICAgICAgICAg
ICAgICAgICBtX291dC5sb2FkUHRyKApkaWZmIC0tZ2l0IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQ0pTVmFsdWUuaCBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1Zh
bHVlLmgKaW5kZXggMjY0ZmExMi4uMTQ2Y2JhMyAxMDA2NDQKLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuaAorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNDSlNWYWx1ZS5oCkBAIC0yNDAsNyArMjQwLDcgQEAgcHVibGljOgogICAgIEpTT2JqZWN0
KiB0b09iamVjdChFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCopIGNvbnN0OwogCiAgICAgLy8g
SW50ZWdlciBjb252ZXJzaW9ucy4KLSAgICBkb3VibGUgdG9JbnRlZ2VyKEV4ZWNTdGF0ZSopIGNv
bnN0OworICAgIEpTX0VYUE9SVF9QUklWQVRFIGRvdWJsZSB0b0ludGVnZXIoRXhlY1N0YXRlKikg
Y29uc3Q7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgZG91YmxlIHRvSW50ZWdlclByZXNlcnZlTmFO
KEV4ZWNTdGF0ZSopIGNvbnN0OwogICAgIGludDMyX3QgdG9JbnQzMihFeGVjU3RhdGUqKSBjb25z
dDsKICAgICB1aW50MzJfdCB0b1VJbnQzMihFeGVjU3RhdGUqKSBjb25zdDsK
</data>
<flag name="review"
          id="257231"
          type_id="1"
          status="+"
          setter="fpizlo"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>232879</attachid>
            <date>2014-06-11 11:49:54 -0700</date>
            <delta_ts>2014-06-11 15:45:45 -0700</delta_ts>
            <desc>Split Call and Construct DFG nodes into NativeCall and NativeConstruct </desc>
            <filename>0002-split-Call-and-Construct-into-NativeCall-and-NativeC.patch</filename>
            <type>text/plain</type>
            <size>20178</size>
            <attacher name="Matthew Mirman">mmirman</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9DaGFuZ2VMb2cKaW5kZXggZjc1ZGY1MC4uYTkyNGQzZSAxMDA2NDQKLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFu
Z2VMb2cKQEAgLTAsMCArMCw0OCBAQAorIDIwMTQtMDYtMTEgIE1hdHRoZXcgTWlybWFuICA8bW1p
cm1hbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmVhZGRlZCBuYXRpdmUgY2FsbGluZyB0byB0aGUg
RlRMIGFuZCBTcGxpdCB0aGUgREZHIG5vZGVzIAorICAgICAgICBDYWxsIGFuZCBDb25zdHJ1Y3Qg
aW50byBOYXRpdmVDYWxsIGFuZCBOYXRpdmVDb25zdHJ1Y3QgCisgICAgICAgIHRvIGJldHRlciBy
ZXByZXNlbnQgdGhlaXIgc2VtYW50aWNzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTMzNjYwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBkZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaDoK
KyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBl
Pjo6ZXhlY3V0ZUVmZmVjdHMpOiAKKyAgICAgICAgQWRkZWQgTmF0aXZlQ2FsbCBhbmQgTmF0aXZl
Q29uc3RydWN0IGNhc2UKKyAgICAgICAgKiBkZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwOgorICAg
ICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjphZGRDYWxsKTogYWRkZWQgTmF0aXZlQ2Fs
bCBjYXNlLiAKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxlQ2FsbCk6
IAorICAgICAgICBzZXQgdG8gcmV0dXJuIE5hdGl2ZUNhbGwgb3IgTmF0aXZlQ29uc3RydWN0IGlu
c3RlYWQgb2YgQ2FsbCBvciBDb25zdHJ1Y3QKKyAgICAgICAgaW4gdGhlIHByZXNlbmNlIG9mIGEg
bmF0aXZlIGZ1bmN0aW9uLgorICAgICAgICAqIGRmZy9ERkdDbG9iYmVyaXplLmg6CisgICAgICAg
IChKU0M6OkRGRzo6Y2xvYmJlcml6ZSk6IGFkZGVkIE5hdGl2ZUNhbGwgYW5kIE5hdGl2ZUNvbnN0
cnVjdCBjYXNlLgorICAgICAgICAqIGRmZy9ERkdEb2VzR0MuY3BwOgorICAgICAgICAoSlNDOjpE
Rkc6OmRvZXNHQyk6IGFkZGVkIE5hdGl2ZUNhbGwgYW5kIE5hdGl2ZUNvbnN0cnVjdCBjYXNlLgor
ICAgICAgICAqIGRmZy9ERkdGaXh1cFBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1
cFBoYXNlOjpmaXh1cE5vZGUpOiBhZGRlZCBOYXRpdmVDYWxsIGFuZCBOYXRpdmVDb25zdHJ1Y3Qg
Y2FzZS4KKyAgICAgICAgKiBkZmcvREZHTm9kZS5oOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6
Omhhc0hlYXBQcmVkaWN0aW9uKTogYWRkZWQgTmF0aXZlQ2FsbCBhbmQgTmF0aXZlQ29uc3RydWN0
IGNhc2UuCisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6Y2FuQmVLbm93bkZ1bmN0aW9uKTogY2hh
bmdlZCB0byBOYXRpdmVDYWxsIGFuZCBOYXRpdmVDb25zdHJ1Y3QuCisgICAgICAgIChKU0M6OkRG
Rzo6Tm9kZTo6aGFzS25vd25GdW5jdGlvbik6IGNoYW5nZWQgdG8gTmF0aXZlQ2FsbCBhbmQgTmF0
aXZlQ29uc3RydWN0LgorICAgICAgICAqIGRmZy9ERkdOb2RlVHlwZS5oOiBhZGRlZCBOYXRpdmVD
YWxsIGFuZCBOYXRpdmVDb25zdHJ1Y3QuCisgICAgICAgICogZGZnL0RGR1ByZWRpY3Rpb25Qcm9w
YWdhdGlvblBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpQcmVkaWN0aW9uUHJvcGFnYXRp
b25QaGFzZTo6cHJvcGFnYXRlKTogYWRkZWQgTmF0aXZlQ2FsbCBhbmQgTmF0aXZlQ29uc3RydWN0
IGNhc2UuCisgICAgICAgICogZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaDoKKyAgICAgICAgKEpTQzo6
REZHOjpzYWZlVG9FeGVjdXRlKTogYWRkZWQgTmF0aXZlQ2FsbCBhbmQgTmF0aXZlQ29uc3RydWN0
IGNhc2UuCisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwOgorICAgICAg
ICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjplbWl0Q2FsbCk6IGRpdHRvCisgICAgICAgIChK
U0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOiBkaXR0bworICAgICAgICAqIGRmZy9E
RkdTcGVjdWxhdGl2ZUpJVDY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJ
VDo6ZW1pdENhbGwpOiBkaXR0bworICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpj
b21waWxlKTogZGl0dG8KKyAgICAgICAgKiBmdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcDoKKyAgICAg
ICAgKEpTQzo6RlRMOjpjYW5Db21waWxlKTogZGl0dG8KKyAgICAgICAgKiBmdGwvRlRMTG93ZXJE
RkdUb0xMVk0uY3BwOiAgCisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06Omxvd2Vy
KTogZGl0dG8KKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6Y29tcGlsZU5vZGUp
OiBkaXR0by4KKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6Y29tcGlsZU5hdGl2
ZUNhbGxPckNvbnN0cnVjdCk6IEFkZGVkLgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9M
TFZNOjpjb21waWxlQ2FsbE9yQ29uc3RydWN0KTogcmVtb3ZlZCBOYXRpdmVDYWxsIGFuZCBOYXRp
dmVDb25zdHJ1Y3QgZnVuY3Rpb25hbGl0eS4KKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1Rv
TExWTTo6ZGlkT3ZlcmZsb3dTdGFjayk6IGFkZGVkIE5hdGl2ZUNhbGwgYW5kIE5hdGl2ZUNvbnN0
cnVjdCBjYXNlLgorICAgICAgICAqIHJ1bnRpbWUvSlNDSlNWYWx1ZS5oOiBhZGRlZCBKU19FWFBP
UlRfUFJJVkFURSB0byB0b0ludGVnZXIgYXMgaXQgaXMgYXBwYXJlbnRseSBuZWVkZWQuCisgICAg
ICAgIApkaWZmIC0tZ2l0IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRl
cnByZXRlcklubGluZXMuaCBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50
ZXJwcmV0ZXJJbmxpbmVzLmgKaW5kZXggOGMwYjZkMC4uOTQyYjhiZCAxMDA2NDQKLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5o
CkBAIC0xODcxLDYgKzE4NzEsOCBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RT
dGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAgICAgICAg
ICAgCiAgICAgY2FzZSBDYWxsOgogICAgIGNhc2UgQ29uc3RydWN0OgorICAgIGNhc2UgTmF0aXZl
Q2FsbDoKKyAgICBjYXNlIE5hdGl2ZUNvbnN0cnVjdDoKICAgICAgICAgbm9kZS0+c2V0Q2FuRXhp
dCh0cnVlKTsKICAgICAgICAgY2xvYmJlcldvcmxkKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgY2xv
YmJlckxpbWl0KTsKICAgICAgICAgZm9yTm9kZShub2RlKS5tYWtlSGVhcFRvcCgpOwpkaWZmIC0t
Z2l0IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCmluZGV4IDg2NTA3MWUu
LmQ3MTYxMTMgMTAwNjQ0Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2Rl
UGFyc2VyLmNwcAorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNl
ci5jcHAKQEAgLTY0OSw3ICs2NDksNyBAQCBwcml2YXRlOgogICAgICAgICBpZiAocGFyYW1ldGVy
U2xvdHMgPiBtX3BhcmFtZXRlclNsb3RzKQogICAgICAgICAgICAgbV9wYXJhbWV0ZXJTbG90cyA9
IHBhcmFtZXRlclNsb3RzOwogCi0gICAgICAgIGludCBkdW1teVRoaXNBcmd1bWVudCA9IG9wID09
IENhbGwgPyAwIDogMTsKKyAgICAgICAgaW50IGR1bW15VGhpc0FyZ3VtZW50ID0gb3AgPT0gQ2Fs
bCB8fCBvcCA9PSBOYXRpdmVDYWxsID8gMCA6IDE7CiAgICAgICAgIGZvciAoaW50IGkgPSAwICsg
ZHVtbXlUaGlzQXJndW1lbnQ7IGkgPCBhcmdDb3VudDsgKytpKQogICAgICAgICAgICAgYWRkVmFy
QXJnQ2hpbGQoZ2V0KHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KGksIHJlZ2lzdGVyT2Zmc2V0
KSkpOwogCkBAIC0xMDY4LDEwICsxMDY4LDE5IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRs
ZUNhbGwoCiAgICAgICAgIGlmIChmdW5jdGlvbiAmJiBmdW5jdGlvbi0+aXNIb3N0RnVuY3Rpb24o
KSkgewogICAgICAgICAgICAgZW1pdEZ1bmN0aW9uQ2hlY2tzKGNhbGxMaW5rU3RhdHVzLCBjYWxs
VGFyZ2V0LCByZWdpc3Rlck9mZnNldCwgc3BlY2lhbGl6YXRpb25LaW5kKTsKICAgICAgICAgICAg
IGtub3duRnVuY3Rpb24gPSBmdW5jdGlvbjsKKworICAgICAgICAgICAgaWYgKG9wID09IENhbGwp
IAorICAgICAgICAgICAgICAgIG9wID0gTmF0aXZlQ2FsbDsKKyAgICAgICAgICAgIGVsc2Ugewor
ICAgICAgICAgICAgICAgIEFTU0VSVChvcCA9PSBDb25zdHJ1Y3QpOworICAgICAgICAgICAgICAg
IG9wID0gTmF0aXZlQ29uc3RydWN0OworICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQot
ICAgIAotICAgIGFkZENhbGwocmVzdWx0LCBvcCwgY2FsbFRhcmdldCwgYXJndW1lbnRDb3VudElu
Y2x1ZGluZ1RoaXMsIHJlZ2lzdGVyT2Zmc2V0KS0+Z2l2ZUtub3duRnVuY3Rpb24oa25vd25GdW5j
dGlvbik7CisgICAgTm9kZSogY2FsbCA9IGFkZENhbGwocmVzdWx0LCBvcCwgY2FsbFRhcmdldCwg
YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIHJlZ2lzdGVyT2Zmc2V0KTsKKworICAgIGlmIChr
bm93bkZ1bmN0aW9uKSAKKyAgICAgICAgY2FsbC0+Z2l2ZUtub3duRnVuY3Rpb24oa25vd25GdW5j
dGlvbik7CiB9CiAKIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmVtaXRGdW5jdGlvbkNoZWNrcyhjb25z
dCBDYWxsTGlua1N0YXR1cyYgY2FsbExpbmtTdGF0dXMsIE5vZGUqIGNhbGxUYXJnZXQsIGludCBy
ZWdpc3Rlck9mZnNldCwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKQpkaWZmIC0tZ2l0IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCmluZGV4IDExYjJmMGMuLmFlZGIxZGYgMTAwNjQ0Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKQEAgLTE5OSw2ICsxOTksOCBAQCB2b2lk
IGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlLCBSZWFkRnVuY3RvciYgcmVhZCwg
V3JpdGVGdW5jdG9yJiB3cml0ZQogICAgIGNhc2UgQXJyYXlQb3A6CiAgICAgY2FzZSBDYWxsOgog
ICAgIGNhc2UgQ29uc3RydWN0OgorICAgIGNhc2UgTmF0aXZlQ2FsbDoKKyAgICBjYXNlIE5hdGl2
ZUNvbnN0cnVjdDoKICAgICBjYXNlIFRvUHJpbWl0aXZlOgogICAgIGNhc2UgSW46CiAgICAgY2Fz
ZSBHZXRNeUFyZ3VtZW50c0xlbmd0aFNhZmU6CmRpZmYgLS1naXQgU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdEb2VzR0MuY3BwIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dD
LmNwcAppbmRleCA1ZTBmZjU1Li4yMDU4ODc5IDEwMDY0NAotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdEb2VzR0MuY3BwCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Rv
ZXNHQy5jcHAKQEAgLTExNiw2ICsxMTYsOCBAQCBib29sIGRvZXNHQyhHcmFwaCYgZ3JhcGgsIE5v
ZGUqIG5vZGUpCiAgICAgY2FzZSBDb21wYXJlU3RyaWN0RXE6CiAgICAgY2FzZSBDYWxsOgogICAg
IGNhc2UgQ29uc3RydWN0OgorICAgIGNhc2UgTmF0aXZlQ2FsbDoKKyAgICBjYXNlIE5hdGl2ZUNv
bnN0cnVjdDoKICAgICBjYXNlIEJyZWFrcG9pbnQ6CiAgICAgY2FzZSBQcm9maWxlV2lsbENhbGw6
CiAgICAgY2FzZSBQcm9maWxlRGlkQ2FsbDoKZGlmZiAtLWdpdCBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4
dXBQaGFzZS5jcHAKaW5kZXggOTNlYTlhOS4uOTA5OGFjZCAxMDA2NDQKLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKQEAgLTEwODIsNiArMTA4Miw4IEBAIHByaXZhdGU6CiAg
ICAgICAgIGNhc2UgQWxsb2NhdGlvblByb2ZpbGVXYXRjaHBvaW50OgogICAgICAgICBjYXNlIENh
bGw6CiAgICAgICAgIGNhc2UgQ29uc3RydWN0OgorICAgICAgICBjYXNlIE5hdGl2ZUNhbGw6Cisg
ICAgICAgIGNhc2UgTmF0aXZlQ29uc3RydWN0OgogICAgICAgICBjYXNlIE5ld09iamVjdDoKICAg
ICAgICAgY2FzZSBOZXdBcnJheUJ1ZmZlcjoKICAgICAgICAgY2FzZSBOZXdSZWdleHA6CmRpZmYg
LS1naXQgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmggU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdOb2RlLmgKaW5kZXggYjI3YzAzYi4uODgzOTQ0YSAxMDA2NDQKLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR05vZGUuaApAQCAtOTkyLDYgKzk5Miw4IEBAIHN0cnVjdCBOb2RlIHsKICAgICAg
ICAgY2FzZSBHZXRNeUFyZ3VtZW50QnlWYWxTYWZlOgogICAgICAgICBjYXNlIENhbGw6CiAgICAg
ICAgIGNhc2UgQ29uc3RydWN0OgorICAgICAgICBjYXNlIE5hdGl2ZUNhbGw6CisgICAgICAgIGNh
c2UgTmF0aXZlQ29uc3RydWN0OgogICAgICAgICBjYXNlIEdldEJ5T2Zmc2V0OgogICAgICAgICBj
YXNlIE11bHRpR2V0QnlPZmZzZXQ6CiAgICAgICAgIGNhc2UgR2V0Q2xvc3VyZVZhcjoKQEAgLTEw
MjIsOCArMTAyNCw4IEBAIHN0cnVjdCBOb2RlIHsKICAgICBib29sIGNhbkJlS25vd25GdW5jdGlv
bigpCiAgICAgewogICAgICAgICBzd2l0Y2ggKG9wKCkpIHsKLSAgICAgICAgY2FzZSBDb25zdHJ1
Y3Q6Ci0gICAgICAgIGNhc2UgQ2FsbDoKKyAgICAgICAgY2FzZSBOYXRpdmVDb25zdHJ1Y3Q6Cisg
ICAgICAgIGNhc2UgTmF0aXZlQ2FsbDoKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAg
ICBkZWZhdWx0OgogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTAzMyw4ICsxMDM1LDgg
QEAgc3RydWN0IE5vZGUgewogICAgIGJvb2wgaGFzS25vd25GdW5jdGlvbigpCiAgICAgewogICAg
ICAgICBzd2l0Y2ggKG9wKCkpIHsKLSAgICAgICAgY2FzZSBDb25zdHJ1Y3Q6Ci0gICAgICAgIGNh
c2UgQ2FsbDoKKyAgICAgICAgY2FzZSBOYXRpdmVDb25zdHJ1Y3Q6CisgICAgICAgIGNhc2UgTmF0
aXZlQ2FsbDoKICAgICAgICAgICAgIHJldHVybiAoYm9vbCltX29wSW5mbzsKICAgICAgICAgZGVm
YXVsdDoKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmggU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdO
b2RlVHlwZS5oCmluZGV4IDhmNTg1ZGMuLmVlZmYzMGMgMTAwNjQ0Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHTm9kZVR5cGUuaApAQCAtMjExLDYgKzIxMSw4IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3Bh
Y2UgREZHIHsKICAgICAvKiBDYWxscy4gKi9cCiAgICAgbWFjcm8oQ2FsbCwgTm9kZVJlc3VsdEpT
IHwgTm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVIYXNWYXJBcmdzIHwgTm9kZUNsb2JiZXJzV29ybGQp
IFwKICAgICBtYWNybyhDb25zdHJ1Y3QsIE5vZGVSZXN1bHRKUyB8IE5vZGVNdXN0R2VuZXJhdGUg
fCBOb2RlSGFzVmFyQXJncyB8IE5vZGVDbG9iYmVyc1dvcmxkKSBcCisgICAgbWFjcm8oTmF0aXZl
Q2FsbCwgTm9kZVJlc3VsdEpTIHwgTm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVIYXNWYXJBcmdzIHwg
Tm9kZUNsb2JiZXJzV29ybGQpIFwKKyAgICBtYWNybyhOYXRpdmVDb25zdHJ1Y3QsIE5vZGVSZXN1
bHRKUyB8IE5vZGVNdXN0R2VuZXJhdGUgfCBOb2RlSGFzVmFyQXJncyB8IE5vZGVDbG9iYmVyc1dv
cmxkKSBcCiAgICAgXAogICAgIC8qIEFsbG9jYXRpb25zLiAqL1wKICAgICBtYWNybyhOZXdPYmpl
Y3QsIE5vZGVSZXN1bHRKUykgXApkaWZmIC0tZ2l0IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCmluZGV4IGFlYTg5ZTcuLjE4MWU2
MDYgMTAwNjQ0Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9w
YWdhdGlvblBoYXNlLmNwcAorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0
aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKQEAgLTE4Miw2ICsxODIsOCBAQCBwcml2YXRlOgogICAg
ICAgICBjYXNlIE11bHRpR2V0QnlPZmZzZXQ6CiAgICAgICAgIGNhc2UgQ2FsbDoKICAgICAgICAg
Y2FzZSBDb25zdHJ1Y3Q6CisgICAgICAgIGNhc2UgTmF0aXZlQ2FsbDoKKyAgICAgICAgY2FzZSBO
YXRpdmVDb25zdHJ1Y3Q6CiAgICAgICAgIGNhc2UgR2V0R2xvYmFsVmFyOgogICAgICAgICBjYXNl
IEdldENsb3N1cmVWYXI6IHsKICAgICAgICAgICAgIGNoYW5nZWQgfD0gc2V0UHJlZGljdGlvbihu
b2RlLT5nZXRIZWFwUHJlZGljdGlvbigpKTsKZGlmZiAtLWdpdCBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaCBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nh
ZmVUb0V4ZWN1dGUuaAppbmRleCBhMGNhNTk3Li4zYThjZmUwIDEwMDY0NAotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCkBAIC0yNTUsNyArMjU1LDExIEBAIGJvb2wgc2Fm
ZVRvRXhlY3V0ZShBYnN0cmFjdFN0YXRlVHlwZSYgc3RhdGUsIEdyYXBoJiBncmFwaCwgTm9kZSog
bm9kZSkKICAgICBjYXNlIEdldEdldHRlcjoKICAgICBjYXNlIEdldFNldHRlcjoKICAgICAgICAg
cmV0dXJuIHRydWU7Ci0gICAgICAgIAorCisgICAgY2FzZSBOYXRpdmVDYWxsOgorICAgIGNhc2Ug
TmF0aXZlQ29uc3RydWN0OgorICAgICAgICByZXR1cm4gZmFsc2U7IC8vIFRPRE86IGFkZCBhIGNo
ZWNrIGZvciBhbHJlYWR5IGNoZWNrZWQuIAorCiAgICAgY2FzZSBHZXRCeVZhbDoKICAgICBjYXNl
IEdldEluZGV4ZWRQcm9wZXJ0eVN0b3JhZ2U6CiAgICAgY2FzZSBHZXRBcnJheUxlbmd0aDoKZGlm
ZiAtLWdpdCBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQu
Y3BwIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAK
aW5kZXggNzFlZjU5Ni4uOWI2NzFkOCAxMDA2NDQKLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKQEAgLTYzOSwxNCArNjM5LDE1IEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVNaXNjU3RyaWN0RXEoTm9kZSogbm9kZSkKIAogdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6ZW1pdENhbGwoTm9kZSogbm9kZSkKIHsKLSAgICBpZiAobm9kZS0+b3Ao
KSAhPSBDYWxsKQotICAgICAgICBBU1NFUlQobm9kZS0+b3AoKSA9PSBDb25zdHJ1Y3QpOworICAg
IGJvb2wgaXNDYWxsID0gbm9kZS0+b3AoKSA9PSBDYWxsIHx8IG5vZGUtPm9wKCkgPT0gTmF0aXZl
Q2FsbDsKKyAgICBpZiAoIWlzQ2FsbCkKKyAgICAgICAgQVNTRVJUKG5vZGUtPm9wKCkgPT0gQ29u
c3RydWN0IHx8IG5vZGUtPm9wKCkgPT0gTmF0aXZlQ29uc3RydWN0KTsKIAogICAgIC8vIEZvciBj
b25zdHJ1Y3RvcnMsIHRoZSB0aGlzIGFyZ3VtZW50IGlzIG5vdCBwYXNzZWQgYnV0IHdlIGhhdmUg
dG8gbWFrZSBzcGFjZQogICAgIC8vIGZvciBpdC4KLSAgICBpbnQgZHVtbXlUaGlzQXJndW1lbnQg
PSBub2RlLT5vcCgpID09IENhbGwgPyAwIDogMTsKKyAgICBpbnQgZHVtbXlUaGlzQXJndW1lbnQg
PSBpc0NhbGwgPyAwIDogMTsKIAotICAgIENhbGxMaW5rSW5mbzo6Q2FsbFR5cGUgY2FsbFR5cGUg
PSBub2RlLT5vcCgpID09IENhbGwgPyBDYWxsTGlua0luZm86OkNhbGwgOiBDYWxsTGlua0luZm86
OkNvbnN0cnVjdDsKKyAgICBDYWxsTGlua0luZm86OkNhbGxUeXBlIGNhbGxUeXBlID0gaXNDYWxs
ID8gQ2FsbExpbmtJbmZvOjpDYWxsIDogQ2FsbExpbmtJbmZvOjpDb25zdHJ1Y3Q7CiAKICAgICBF
ZGdlIGNhbGxlZUVkZ2UgPSBtX2ppdC5ncmFwaCgpLm1fdmFyQXJnQ2hpbGRyZW5bbm9kZS0+Zmly
c3RDaGlsZCgpXTsKICAgICBKU1ZhbHVlT3BlcmFuZCBjYWxsZWUodGhpcywgY2FsbGVlRWRnZSk7
CkBAIC00MTI2LDYgKzQxMjcsOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUq
IG5vZGUpCiAKICAgICBjYXNlIENhbGw6CiAgICAgY2FzZSBDb25zdHJ1Y3Q6CisgICAgY2FzZSBO
YXRpdmVDYWxsOgorICAgIGNhc2UgTmF0aXZlQ29uc3RydWN0OgogICAgICAgICBlbWl0Q2FsbChu
b2RlKTsKICAgICAgICAgYnJlYWs7CiAKZGlmZiAtLWdpdCBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQ2NC5jcHAKaW5kZXggMGRjODFiMy4uNDY1Mjk4YzYgMTAwNjQ0Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCkBAIC02MjUsMTQg
KzYyNSwxNiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlTWlzY1N0cmljdEVxKE5vZGUq
IG5vZGUpCiAKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRDYWxsKE5vZGUqIG5vZGUpCiB7Ci0g
ICAgaWYgKG5vZGUtPm9wKCkgIT0gQ2FsbCkKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQobm9kZS0+
b3AoKSA9PSBDb25zdHJ1Y3QpOworCisgICAgYm9vbCBpc0NhbGwgPSBub2RlLT5vcCgpID09IENh
bGwgfHwgbm9kZS0+b3AoKSA9PSBOYXRpdmVDYWxsOworICAgIGlmICghaXNDYWxsKQorICAgICAg
ICBSRUxFQVNFX0FTU0VSVChub2RlLT5vcCgpID09IENvbnN0cnVjdCB8fCBub2RlLT5vcCgpID09
IE5hdGl2ZUNvbnN0cnVjdCk7CiAKICAgICAvLyBGb3IgY29uc3RydWN0b3JzLCB0aGUgdGhpcyBh
cmd1bWVudCBpcyBub3QgcGFzc2VkIGJ1dCB3ZSBoYXZlIHRvIG1ha2Ugc3BhY2UKICAgICAvLyBm
b3IgaXQuCi0gICAgaW50IGR1bW15VGhpc0FyZ3VtZW50ID0gbm9kZS0+b3AoKSA9PSBDYWxsID8g
MCA6IDE7CisgICAgaW50IGR1bW15VGhpc0FyZ3VtZW50ID0gaXNDYWxsID8gMCA6IDE7CiAgICAg
Ci0gICAgQ2FsbExpbmtJbmZvOjpDYWxsVHlwZSBjYWxsVHlwZSA9IG5vZGUtPm9wKCkgPT0gQ2Fs
bCA/IENhbGxMaW5rSW5mbzo6Q2FsbCA6IENhbGxMaW5rSW5mbzo6Q29uc3RydWN0OworICAgIENh
bGxMaW5rSW5mbzo6Q2FsbFR5cGUgY2FsbFR5cGUgPSBpc0NhbGwgPyBDYWxsTGlua0luZm86OkNh
bGwgOiBDYWxsTGlua0luZm86OkNvbnN0cnVjdDsKICAgICAKICAgICBFZGdlIGNhbGxlZUVkZ2Ug
PSBtX2ppdC5ncmFwaCgpLm1fdmFyQXJnQ2hpbGRyZW5bbm9kZS0+Zmlyc3RDaGlsZCgpXTsKICAg
ICBKU1ZhbHVlT3BlcmFuZCBjYWxsZWUodGhpcywgY2FsbGVlRWRnZSk7CkBAIC00MTU3LDYgKzQx
NTksOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAKICAgICBj
YXNlIENhbGw6CiAgICAgY2FzZSBDb25zdHJ1Y3Q6CisgICAgY2FzZSBOYXRpdmVDYWxsOgorICAg
IGNhc2UgTmF0aXZlQ29uc3RydWN0OgogICAgICAgICBlbWl0Q2FsbChub2RlKTsKICAgICAgICAg
YnJlYWs7CiAKZGlmZiAtLWdpdCBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxp
dGllcy5jcHAgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCmlu
ZGV4IDU4YTZjOGIuLjAyNDExM2IgMTAwNjQ0Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTENhcGFiaWxpdGllcy5jcHAKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2Fw
YWJpbGl0aWVzLmNwcApAQCAtMTE4LDYgKzExOCw4IEBAIGlubGluZSBDYXBhYmlsaXR5TGV2ZWwg
Y2FuQ29tcGlsZShOb2RlKiBub2RlKQogICAgIGNhc2UgU3RvcmVCYXJyaWVyV2l0aE51bGxDaGVj
azoKICAgICBjYXNlIENhbGw6CiAgICAgY2FzZSBDb25zdHJ1Y3Q6CisgICAgY2FzZSBOYXRpdmVD
YWxsOgorICAgIGNhc2UgTmF0aXZlQ29uc3RydWN0OgogICAgIGNhc2UgVmFsdWVUb0ludDMyOgog
ICAgIGNhc2UgQnJhbmNoOgogICAgIGNhc2UgTG9naWNhbE5vdDoKZGlmZiAtLWdpdCBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9MTFZNLmNwcCBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTExvd2VyREZHVG9MTFZNLmNwcAppbmRleCAyODQxN2VhLi5kZjY0ZTc2IDEw
MDY0NAotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvTExWTS5jcHAK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwCkBAIC0x
NTQsMTMgKzE1NCw4IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICBOb2RlKiBtX25vZGUgPSBi
bG9jay0+YXQobm9kZUluZGV4KTsKICAgICAgICAgICAgICAgICBpZiAobV9ub2RlLT5oYXNLbm93
bkZ1bmN0aW9uKCkpIHsKICAgICAgICAgICAgICAgICAgICAgaW50IG51bUFyZ3MgPSBtX25vZGUt
Pm51bUNoaWxkcmVuKCk7Ci0gICAgICAgICAgICAgICAgICAgIE5hdGl2ZUZ1bmN0aW9uIGZ1bmMg
PSBtX25vZGUtPmtub3duRnVuY3Rpb24oKS0+bmF0aXZlRnVuY3Rpb24oKTsKLSAgICAgICAgICAg
ICAgICAgICAgRGxfaW5mbyBpbmZvOwotICAgICAgICAgICAgICAgICAgICBpZiAoZGxhZGRyKCh2
b2lkKilmdW5jLCAmaW5mbykpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIExWYWx1ZSBjYWxs
ZWUgPSBnZXRGdW5jdGlvbkJ5U3ltYm9sKGluZm8uZGxpX3NuYW1lKTsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIGlmIChjYWxsZWUgJiYgbnVtQXJncyA+IG1heE51bWJlck9mQXJndW1lbnRzKQot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heE51bWJlck9mQXJndW1lbnRzID0gbnVtQXJn
czsKLSAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBpZiAobnVtQXJn
cyA+IG1heE51bWJlck9mQXJndW1lbnRzKQorICAgICAgICAgICAgICAgICAgICAgICAgbWF4TnVt
YmVyT2ZBcmd1bWVudHMgPSBudW1BcmdzOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
IH0KICAgICAgICAgfQpAQCAtNjM0LDYgKzYyOSwxMCBAQCBwcml2YXRlOgogICAgICAgICBjYXNl
IENvbnN0cnVjdDoKICAgICAgICAgICAgIGNvbXBpbGVDYWxsT3JDb25zdHJ1Y3QoKTsKICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIE5hdGl2ZUNhbGw6CisgICAgICAgIGNhc2UgTmF0
aXZlQ29uc3RydWN0OgorICAgICAgICAgICAgY29tcGlsZU5hdGl2ZUNhbGxPckNvbnN0cnVjdCgp
OworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgSnVtcDoKICAgICAgICAgICAgIGNv
bXBpbGVKdW1wKCk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTM1NzcsMTYgKzM1NzYsNjYgQEAg
cHJpdmF0ZToKICAgICAgICAgc2V0Qm9vbGVhbihtX291dC5iaXROb3QoYm9vbGlmeShtX25vZGUt
PmNoaWxkMSgpKSkpOwogICAgIH0KIAorICAgIHZvaWQgY29tcGlsZU5hdGl2ZUNhbGxPckNvbnN0
cnVjdCgpIAorICAgIHsKKyAgICAgICAgaW50IGR1bW15VGhpc0FyZ3VtZW50ID0gbV9ub2RlLT5v
cCgpID09IE5hdGl2ZUNhbGwgPyAwIDogMTsKKyAgICAgICAgaW50IG51bVBhc3NlZEFyZ3MgPSBt
X25vZGUtPm51bUNoaWxkcmVuKCkgLSAxOworICAgICAgICBpbnQgbnVtQXJncyA9IG51bVBhc3Nl
ZEFyZ3MgKyBkdW1teVRoaXNBcmd1bWVudDsKKworICAgICAgICBBU1NFUlQobV9ub2RlLT5oYXNL
bm93bkZ1bmN0aW9uKCkpOworCisgICAgICAgIEpTRnVuY3Rpb24qIGtub3duRnVuY3Rpb24gPSBt
X25vZGUtPmtub3duRnVuY3Rpb24oKTsKKyAgICAgICAgTmF0aXZlRnVuY3Rpb24gZnVuY3Rpb24g
PSBrbm93bkZ1bmN0aW9uLT5uYXRpdmVGdW5jdGlvbigpOworCisgICAgICAgIERsX2luZm8gaW5m
bzsKKyAgICAgICAgaWYgKCFkbGFkZHIoKHZvaWQqKWZ1bmN0aW9uLCAmaW5mbykpCisgICAgICAg
ICAgICBBU1NFUlQoZmFsc2UpOyAvLyBpZiB3ZSBjb3VsZG4ndCBmaW5kIHRoZSBuYXRpdmUgZnVu
Y3Rpb24gdGhpcyBkb2Vzbid0IGJvZGUgd2VsbC4KKworICAgICAgICBMVmFsdWUgY2FsbGVlID0g
Z2V0RnVuY3Rpb25CeVN5bWJvbChpbmZvLmRsaV9zbmFtZSk7CisKKyAgICAgICAgYm9vbCBub3RJ
bmxpbmFibGU7CisgICAgICAgIGlmICgobm90SW5saW5hYmxlID0gIWNhbGxlZSkpCisgICAgICAg
ICAgICBjYWxsZWUgPSBtX291dC5vcGVyYXRpb24oZnVuY3Rpb24pOworCisgICAgICAgIEpTU2Nv
cGUqIHNjb3BlID0ga25vd25GdW5jdGlvbi0+c2NvcGVVbmNoZWNrZWQoKTsKKyAgICAgICAgbV9v
dXQuc3RvcmVQdHIobV9jYWxsRnJhbWUsIG1fZXhlY1N0b3JhZ2UsIG1faGVhcHMuQ2FsbEZyYW1l
X2NhbGxlckZyYW1lKTsKKyAgICAgICAgbV9vdXQuc3RvcmVQdHIoY29uc3ROdWxsKG1fb3V0Lmlu
dFB0ciksIGFkZHJlc3NGb3IobV9leGVjU3RvcmFnZSwgSlNTdGFjazo6Q29kZUJsb2NrKSk7Cisg
ICAgICAgIG1fb3V0LnN0b3JlUHRyKHdlYWtQb2ludGVyKHNjb3BlKSwgYWRkcmVzc0ZvcihtX2V4
ZWNTdG9yYWdlLCBKU1N0YWNrOjpTY29wZUNoYWluKSk7CisgICAgICAgIG1fb3V0LnN0b3JlUHRy
KHdlYWtQb2ludGVyKGtub3duRnVuY3Rpb24pLCBhZGRyZXNzRm9yKG1fZXhlY1N0b3JhZ2UsIEpT
U3RhY2s6OkNhbGxlZSkpOworCisgICAgICAgIG1fb3V0LnN0b3JlNjQobV9vdXQuY29uc3RJbnQ2
NChudW1BcmdzKSwgYWRkcmVzc0ZvcihtX2V4ZWNTdG9yYWdlLCBKU1N0YWNrOjpBcmd1bWVudENv
dW50KSk7CisKKyAgICAgICAgaWYgKGR1bW15VGhpc0FyZ3VtZW50KSAKKyAgICAgICAgICAgIG1f
b3V0LnN0b3JlUHRyKGdldFVuZGVmKG1fb3V0LmludDY0KSwgYWRkcmVzc0ZvcihtX2V4ZWNTdG9y
YWdlLCBKU1N0YWNrOjpUaGlzQXJndW1lbnQpKTsKKyAgICAgICAgCisgICAgICAgIGZvciAoaW50
IGkgPSAwOyBpIDwgbnVtUGFzc2VkQXJnczsgKytpKSB7CisgICAgICAgICAgICBtX291dC5zdG9y
ZVB0cihsb3dKU1ZhbHVlKG1fZ3JhcGgudmFyQXJnQ2hpbGQobV9ub2RlLCAxICsgaSkpLAorICAg
ICAgICAgICAgICAgIGFkZHJlc3NGb3IobV9leGVjU3RvcmFnZSwgZHVtbXlUaGlzQXJndW1lbnQg
PyBKU1N0YWNrOjpGaXJzdEFyZ3VtZW50IDogSlNTdGFjazo6VGhpc0FyZ3VtZW50LCBpICogc2l6
ZW9mKFJlZ2lzdGVyKSkpOworICAgICAgICB9CisKKyAgICAgICAgTFZhbHVlIGNhbGxlZUNhbGxG
cmFtZSA9IG1fb3V0LmFkZHJlc3MobV9leGVjU3RhdGUsIG1faGVhcHMuQ2FsbEZyYW1lX2NhbGxl
ckZyYW1lKS52YWx1ZSgpOworICAgICAgICBtX291dC5zdG9yZVB0cihtX291dC5wdHJUb0ludChj
YWxsZWVDYWxsRnJhbWUsIG1fb3V0LmludFB0ciksIG1fb3V0LmFic29sdXRlKCZ2bSgpLnRvcENh
bGxGcmFtZSkpOworCisgICAgICAgIExUeXBlIHR5cGVDYWxsZWVBcmc7CisgICAgICAgIGdldFBh
cmFtVHlwZXMoZ2V0RWxlbWVudFR5cGUodHlwZU9mKGNhbGxlZSkpLCAmdHlwZUNhbGxlZUFyZyk7
CisKKyAgICAgICAgTFZhbHVlIGFyZ3VtZW50ID0gbm90SW5saW5hYmxlIAorICAgICAgICAgICAg
PyBtX291dC5wdHJUb0ludChjYWxsZWVDYWxsRnJhbWUsIHR5cGVDYWxsZWVBcmcpIAorICAgICAg
ICAgICAgOiBtX291dC5iaXRDYXN0KGNhbGxlZUNhbGxGcmFtZSwgdHlwZUNhbGxlZUFyZyk7Cisg
ICAgICAgIExWYWx1ZSBjYWxsID0gdm1DYWxsKGNhbGxlZSwgYXJndW1lbnQpOworCisgICAgICAg
IGlmIChPcHRpb25zOjp2ZXJib3NlQ29tcGlsYXRpb24oKSkKKyAgICAgICAgICAgIGRhdGFMb2co
Ik5hdGl2ZSBjYWxsaW5nOiAiLCBpbmZvLmRsaV9zbmFtZSwgIlxuIik7CisKKyAgICAgICAgc2V0
SlNWYWx1ZShjYWxsKTsKKyAgICB9CisKICAgICB2b2lkIGNvbXBpbGVDYWxsT3JDb25zdHJ1Y3Qo
KQogICAgIHsKICAgICAgICAgaW50IGR1bW15VGhpc0FyZ3VtZW50ID0gbV9ub2RlLT5vcCgpID09
IENhbGwgPyAwIDogMTsKICAgICAgICAgaW50IG51bVBhc3NlZEFyZ3MgPSBtX25vZGUtPm51bUNo
aWxkcmVuKCkgLSAxOwogICAgICAgICBpbnQgbnVtQXJncyA9IG51bVBhc3NlZEFyZ3MgKyBkdW1t
eVRoaXNBcmd1bWVudDsKIAotICAgICAgICBpZiAobV9ub2RlLT5oYXNLbm93bkZ1bmN0aW9uKCkK
LSAgICAgICAgICAgICYmIHBvc3NpYmx5Q29tcGlsZUlubGluZWFibGVOYXRpdmVDYWxsKGR1bW15
VGhpc0FyZ3VtZW50LCBudW1QYXNzZWRBcmdzLCBudW1BcmdzKSkKLSAgICAgICAgICAgIHJldHVy
bjsKLQogICAgICAgICBMVmFsdWUganNDYWxsZWUgPSBsb3dKU1ZhbHVlKG1fZ3JhcGgudmFyQXJn
Q2hpbGQobV9ub2RlLCAwKSk7CiAKICAgICAgICAgdW5zaWduZWQgc3RhY2ttYXBJRCA9IG1fc3Rh
Y2ttYXBJRHMrKzsKQEAgLTM5NjcsNTAgKzQwMTYsNiBAQCBwcml2YXRlOgogI2VuZGlmCiAgICAg
fQogICAgIAotICAgIGJvb2wgcG9zc2libHlDb21waWxlSW5saW5lYWJsZU5hdGl2ZUNhbGwoaW50
IGR1bW15VGhpc0FyZ3VtZW50LCBpbnQgbnVtUGFzc2VkQXJncywgaW50IG51bUFyZ3MpCi0gICAg
ewotICAgICAgICBKU0Z1bmN0aW9uKiBrbm93bkZ1bmN0aW9uID0gbV9ub2RlLT5rbm93bkZ1bmN0
aW9uKCk7Ci0gICAgICAgIE5hdGl2ZUZ1bmN0aW9uIGZ1bmN0aW9uID0ga25vd25GdW5jdGlvbi0+
bmF0aXZlRnVuY3Rpb24oKTsKLSAgICAgICAgRGxfaW5mbyBpbmZvOwotICAgICAgICBpZiAoZGxh
ZGRyKCh2b2lkKilmdW5jdGlvbiwgJmluZm8pKSB7Ci0gICAgICAgICAgICBMVmFsdWUgY2FsbGVl
ID0gZ2V0RnVuY3Rpb25CeVN5bWJvbChpbmZvLmRsaV9zbmFtZSk7Ci0gICAgICAgICAgICBMVHlw
ZSB0eXBlQ2FsbGVlOwotICAgICAgICAgICAgaWYgKGNhbGxlZSAmJiAodHlwZUNhbGxlZSA9IHR5
cGVPZihjYWxsZWUpKSAmJiAodHlwZUNhbGxlZSA9IGdldEVsZW1lbnRUeXBlKHR5cGVDYWxsZWUp
KSkgewotCi0gICAgICAgICAgICAgICAgSlNTY29wZSogc2NvcGUgPSBrbm93bkZ1bmN0aW9uLT5z
Y29wZVVuY2hlY2tlZCgpOwotICAgICAgICAgICAgICAgIG1fb3V0LnN0b3JlUHRyKG1fY2FsbEZy
YW1lLCBtX2V4ZWNTdG9yYWdlLCBtX2hlYXBzLkNhbGxGcmFtZV9jYWxsZXJGcmFtZSk7Ci0gICAg
ICAgICAgICAgICAgbV9vdXQuc3RvcmVQdHIoY29uc3ROdWxsKG1fb3V0LmludFB0ciksIGFkZHJl
c3NGb3IobV9leGVjU3RvcmFnZSwgSlNTdGFjazo6Q29kZUJsb2NrKSk7Ci0gICAgICAgICAgICAg
ICAgbV9vdXQuc3RvcmVQdHIod2Vha1BvaW50ZXIoc2NvcGUpLCBhZGRyZXNzRm9yKG1fZXhlY1N0
b3JhZ2UsIEpTU3RhY2s6OlNjb3BlQ2hhaW4pKTsKLSAgICAgICAgICAgICAgICBtX291dC5zdG9y
ZVB0cih3ZWFrUG9pbnRlcihrbm93bkZ1bmN0aW9uKSwgYWRkcmVzc0ZvcihtX2V4ZWNTdG9yYWdl
LCBKU1N0YWNrOjpDYWxsZWUpKTsKLQotICAgICAgICAgICAgICAgIG1fb3V0LnN0b3JlNjQobV9v
dXQuY29uc3RJbnQ2NChudW1BcmdzKSwgYWRkcmVzc0ZvcihtX2V4ZWNTdG9yYWdlLCBKU1N0YWNr
OjpBcmd1bWVudENvdW50KSk7Ci0KLSAgICAgICAgICAgICAgICBpZiAoZHVtbXlUaGlzQXJndW1l
bnQpIAotICAgICAgICAgICAgICAgICAgICBtX291dC5zdG9yZVB0cihnZXRVbmRlZihtX291dC5p
bnQ2NCksIGFkZHJlc3NGb3IobV9leGVjU3RvcmFnZSwgSlNTdGFjazo6VGhpc0FyZ3VtZW50KSk7
Ci0gICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBu
dW1QYXNzZWRBcmdzOyArK2kpIHsKLSAgICAgICAgICAgICAgICAgICAgbV9vdXQuc3RvcmVQdHIo
bG93SlNWYWx1ZShtX2dyYXBoLnZhckFyZ0NoaWxkKG1fbm9kZSwgMSArIGkpKSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgIGFkZHJlc3NGb3IobV9leGVjU3RvcmFnZSwgZHVtbXlUaGlzQXJndW1l
bnQgPyBKU1N0YWNrOjpGaXJzdEFyZ3VtZW50IDogSlNTdGFjazo6VGhpc0FyZ3VtZW50LCBpICog
c2l6ZW9mKFJlZ2lzdGVyKSkpOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAg
IExUeXBlIHR5cGVDYWxsZWVBcmc7Ci0gICAgICAgICAgICAgICAgZ2V0UGFyYW1UeXBlcyh0eXBl
Q2FsbGVlLCAmdHlwZUNhbGxlZUFyZyk7Ci0gICAgICAgICAgICAgICAgTFZhbHVlIGNhbGxlZUNh
bGxGcmFtZSA9IG1fb3V0LmFkZHJlc3MobV9leGVjU3RhdGUsIG1faGVhcHMuQ2FsbEZyYW1lX2Nh
bGxlckZyYW1lKS52YWx1ZSgpOwotICAgICAgICAgICAgICAgIG1fb3V0LnN0b3JlUHRyKG1fb3V0
LnB0clRvSW50KGNhbGxlZUNhbGxGcmFtZSwgbV9vdXQuaW50UHRyKSwgbV9vdXQuYWJzb2x1dGUo
JnZtKCkudG9wQ2FsbEZyYW1lKSk7Ci0gICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAg
TFZhbHVlIGNhbGwgPSB2bUNhbGwoY2FsbGVlLCAKLSAgICAgICAgICAgICAgICAgICAgbV9vdXQu
Yml0Q2FzdChjYWxsZWVDYWxsRnJhbWUsIHR5cGVDYWxsZWVBcmcpKTsKLQotICAgICAgICAgICAg
ICAgIGlmIChPcHRpb25zOjp2ZXJib3NlQ29tcGlsYXRpb24oKSkKLSAgICAgICAgICAgICAgICAg
ICAgZGF0YUxvZygiSW5saW5pbmc6ICIsIGluZm8uZGxpX3NuYW1lLCAiXG4iKTsKLQotICAgICAg
ICAgICAgICAgIHNldEpTVmFsdWUoY2FsbCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7
Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0K
LQogICAgIExWYWx1ZSBnZXRGdW5jdGlvbkJ5U3ltYm9sKGNvbnN0IENTdHJpbmcgc3ltYm9sKQog
ICAgIHsKICAgICAgICAgaWYgKCFtX2Z0bFN0YXRlLnN5bWJvbFRhYmxlLmNvbnRhaW5zKHN5bWJv
bCkpIApAQCAtNDE0Miw2ICs0MTQ3LDggQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBjYXNl
IFB1dEJ5SWQ6CiAgICAgICAgICAgICAgICAgY2FzZSBDYWxsOgogICAgICAgICAgICAgICAgIGNh
c2UgQ29uc3RydWN0OgorICAgICAgICAgICAgICAgIGNhc2UgTmF0aXZlQ2FsbDoKKyAgICAgICAg
ICAgICAgICBjYXNlIE5hdGl2ZUNvbnN0cnVjdDoKICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IG1fb3V0LmJlbG93KAogICAgICAgICAgICAgICAgICAgICAgICAgbV9jYWxsRnJhbWUsCiAgICAg
ICAgICAgICAgICAgICAgICAgICBtX291dC5sb2FkUHRyKApkaWZmIC0tZ2l0IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuaCBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0NKU1ZhbHVlLmgKaW5kZXggOGM2NjA4MS4uOTgyOWFjYiAxMDA2NDQKLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuaAorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5oCkBAIC0yNDEsNyArMjQxLDcgQEAgcHVibGljOgog
ICAgIEpTT2JqZWN0KiB0b09iamVjdChFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCopIGNvbnN0
OwogCiAgICAgLy8gSW50ZWdlciBjb252ZXJzaW9ucy4KLSAgICBkb3VibGUgdG9JbnRlZ2VyKEV4
ZWNTdGF0ZSopIGNvbnN0OworICAgIEpTX0VYUE9SVF9QUklWQVRFIGRvdWJsZSB0b0ludGVnZXIo
RXhlY1N0YXRlKikgY29uc3Q7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgZG91YmxlIHRvSW50ZWdl
clByZXNlcnZlTmFOKEV4ZWNTdGF0ZSopIGNvbnN0OwogICAgIGludDMyX3QgdG9JbnQzMihFeGVj
U3RhdGUqKSBjb25zdDsKICAgICB1aW50MzJfdCB0b1VJbnQzMihFeGVjU3RhdGUqKSBjb25zdDsK
</data>
<flag name="review"
          id="257374"
          type_id="1"
          status="-"
          setter="fpizlo"
    />
    <flag name="commit-queue"
          id="257375"
          type_id="3"
          status="-"
          setter="fpizlo"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>232917</attachid>
            <date>2014-06-11 15:45:45 -0700</date>
            <delta_ts>2014-06-11 16:42:02 -0700</delta_ts>
            <desc>Split Call and Construct DFG nodes into NativeCall and NativeConstruct </desc>
            <filename>0001-split-Call-and-Construct-into-NativeCall-and-NativeC.patch</filename>
            <type>text/plain</type>
            <size>20375</size>
            <attacher name="Matthew Mirman">mmirman</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9DaGFuZ2VMb2cKaW5kZXggZDcyYjE3Yy4uMDY1M2IzNCAxMDA2NDQKLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFu
Z2VMb2cKQEAgLTAsMCArMCw0OCBAQAorIDIwMTQtMDYtMTEgIE1hdHRoZXcgTWlybWFuICA8bW1p
cm1hbkBhcHBsZS5jb20+CisgCisgICAgICAgIFJlYWRkZWQgbmF0aXZlIGNhbGxpbmcgdG8gdGhl
IEZUTCBhbmQgU3BsaXQgdGhlIERGRyBub2RlcyAKKyAgICAgICAgQ2FsbCBhbmQgQ29uc3RydWN0
IGludG8gTmF0aXZlQ2FsbCBhbmQgTmF0aXZlQ29uc3RydWN0IAorICAgICAgICB0byBiZXR0ZXIg
cmVwcmVzZW50IHRoZWlyIHNlbWFudGljcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEzMzY2MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmg6
CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlw
ZT46OmV4ZWN1dGVFZmZlY3RzKTogCisgICAgICAgIEFkZGVkIE5hdGl2ZUNhbGwgYW5kIE5hdGl2
ZUNvbnN0cnVjdCBjYXNlCisgICAgICAgICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAg
ICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6YWRkQ2FsbCk6IGFkZGVkIE5hdGl2ZUNh
bGwgY2FzZS4gCisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUNhbGwp
OiAKKyAgICAgICAgc2V0IHRvIHJldHVybiBOYXRpdmVDYWxsIG9yIE5hdGl2ZUNvbnN0cnVjdCBp
bnN0ZWFkIG9mIENhbGwgb3IgQ29uc3RydWN0CisgICAgICAgIGluIHRoZSBwcmVzZW5jZSBvZiBh
IG5hdGl2ZSBmdW5jdGlvbi4KKyAgICAgICAgKiBkZmcvREZHQ2xvYmJlcml6ZS5oOgorICAgICAg
ICAoSlNDOjpERkc6OmNsb2JiZXJpemUpOiBhZGRlZCBOYXRpdmVDYWxsIGFuZCBOYXRpdmVDb25z
dHJ1Y3QgY2FzZS4KKyAgICAgICAgKiBkZmcvREZHRG9lc0dDLmNwcDoKKyAgICAgICAgKEpTQzo6
REZHOjpkb2VzR0MpOiBhZGRlZCBOYXRpdmVDYWxsIGFuZCBOYXRpdmVDb25zdHJ1Y3QgY2FzZS4K
KyAgICAgICAgKiBkZmcvREZHRml4dXBQaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Rml4
dXBQaGFzZTo6Zml4dXBOb2RlKTogYWRkZWQgTmF0aXZlQ2FsbCBhbmQgTmF0aXZlQ29uc3RydWN0
IGNhc2UuCisgICAgICAgICogZGZnL0RGR05vZGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpOb2Rl
OjpoYXNIZWFwUHJlZGljdGlvbik6IGFkZGVkIE5hdGl2ZUNhbGwgYW5kIE5hdGl2ZUNvbnN0cnVj
dCBjYXNlLgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6OmNhbkJlS25vd25GdW5jdGlvbik6IGNo
YW5nZWQgdG8gTmF0aXZlQ2FsbCBhbmQgTmF0aXZlQ29uc3RydWN0LgorICAgICAgICAoSlNDOjpE
Rkc6Ok5vZGU6Omhhc0tub3duRnVuY3Rpb24pOiBjaGFuZ2VkIHRvIE5hdGl2ZUNhbGwgYW5kIE5h
dGl2ZUNvbnN0cnVjdC4KKyAgICAgICAgKiBkZmcvREZHTm9kZVR5cGUuaDogYWRkZWQgTmF0aXZl
Q2FsbCBhbmQgTmF0aXZlQ29uc3RydWN0LgorICAgICAgICAqIGRmZy9ERkdQcmVkaWN0aW9uUHJv
cGFnYXRpb25QaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6UHJlZGljdGlvblByb3BhZ2F0
aW9uUGhhc2U6OnByb3BhZ2F0ZSk6IGFkZGVkIE5hdGl2ZUNhbGwgYW5kIE5hdGl2ZUNvbnN0cnVj
dCBjYXNlLgorICAgICAgICAqIGRmZy9ERkdTYWZlVG9FeGVjdXRlLmg6CisgICAgICAgIChKU0M6
OkRGRzo6c2FmZVRvRXhlY3V0ZSk6IGFkZGVkIE5hdGl2ZUNhbGwgYW5kIE5hdGl2ZUNvbnN0cnVj
dCBjYXNlLgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcDoKKyAgICAg
ICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZW1pdENhbGwpOiBkaXR0bworICAgICAgICAo
SlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKTogZGl0dG8KKyAgICAgICAgKiBkZmcv
REZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVK
SVQ6OmVtaXRDYWxsKTogZGl0dG8KKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZSk6IGRpdHRvCisgICAgICAgICogZnRsL0ZUTENhcGFiaWxpdGllcy5jcHA6CisgICAg
ICAgIChKU0M6OkZUTDo6Y2FuQ29tcGlsZSk6IGRpdHRvCisgICAgICAgICogZnRsL0ZUTExvd2Vy
REZHVG9MTFZNLmNwcDogIAorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjpsb3dl
cik6IGRpdHRvCisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OmNvbXBpbGVOb2Rl
KTogZGl0dG8uCisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OmNvbXBpbGVOYXRp
dmVDYWxsT3JDb25zdHJ1Y3QpOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1Rv
TExWTTo6Y29tcGlsZUNhbGxPckNvbnN0cnVjdCk6IHJlbW92ZWQgTmF0aXZlQ2FsbCBhbmQgTmF0
aXZlQ29uc3RydWN0IGZ1bmN0aW9uYWxpdHkuCisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdU
b0xMVk06OmRpZE92ZXJmbG93U3RhY2spOiBhZGRlZCBOYXRpdmVDYWxsIGFuZCBOYXRpdmVDb25z
dHJ1Y3QgY2FzZS4KKyAgICAgICAgKiBydW50aW1lL0pTQ0pTVmFsdWUuaDogYWRkZWQgSlNfRVhQ
T1JUX1BSSVZBVEUgdG8gdG9JbnRlZ2VyIGFzIGl0IGlzIGFwcGFyZW50bHkgbmVlZGVkLgorICAg
ICAgICAKZGlmZiAtLWdpdCBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50
ZXJwcmV0ZXJJbmxpbmVzLmggU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdElu
dGVycHJldGVySW5saW5lcy5oCmluZGV4IDhjMGI2ZDAuLjk0MmI4YmQgMTAwNjQ0Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMu
aApAQCAtMTg3MSw2ICsxODcxLDggQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0
U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQgY2xvYmJlckxpbWkKICAgICAgICAg
ICAgIAogICAgIGNhc2UgQ2FsbDoKICAgICBjYXNlIENvbnN0cnVjdDoKKyAgICBjYXNlIE5hdGl2
ZUNhbGw6CisgICAgY2FzZSBOYXRpdmVDb25zdHJ1Y3Q6CiAgICAgICAgIG5vZGUtPnNldENhbkV4
aXQodHJ1ZSk7CiAgICAgICAgIGNsb2JiZXJXb3JsZChub2RlLT5vcmlnaW4uc2VtYW50aWMsIGNs
b2JiZXJMaW1pdCk7CiAgICAgICAgIGZvck5vZGUobm9kZSkubWFrZUhlYXBUb3AoKTsKZGlmZiAt
LWdpdCBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcCBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAppbmRleCA4NjUwNzFl
Li5kNzE2MTEzIDEwMDY0NAotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29k
ZVBhcnNlci5jcHAKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJz
ZXIuY3BwCkBAIC02NDksNyArNjQ5LDcgQEAgcHJpdmF0ZToKICAgICAgICAgaWYgKHBhcmFtZXRl
clNsb3RzID4gbV9wYXJhbWV0ZXJTbG90cykKICAgICAgICAgICAgIG1fcGFyYW1ldGVyU2xvdHMg
PSBwYXJhbWV0ZXJTbG90czsKIAotICAgICAgICBpbnQgZHVtbXlUaGlzQXJndW1lbnQgPSBvcCA9
PSBDYWxsID8gMCA6IDE7CisgICAgICAgIGludCBkdW1teVRoaXNBcmd1bWVudCA9IG9wID09IENh
bGwgfHwgb3AgPT0gTmF0aXZlQ2FsbCA/IDAgOiAxOwogICAgICAgICBmb3IgKGludCBpID0gMCAr
IGR1bW15VGhpc0FyZ3VtZW50OyBpIDwgYXJnQ291bnQ7ICsraSkKICAgICAgICAgICAgIGFkZFZh
ckFyZ0NoaWxkKGdldCh2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudChpLCByZWdpc3Rlck9mZnNl
dCkpKTsKIApAQCAtMTA2OCwxMCArMTA2OCwxOSBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5k
bGVDYWxsKAogICAgICAgICBpZiAoZnVuY3Rpb24gJiYgZnVuY3Rpb24tPmlzSG9zdEZ1bmN0aW9u
KCkpIHsKICAgICAgICAgICAgIGVtaXRGdW5jdGlvbkNoZWNrcyhjYWxsTGlua1N0YXR1cywgY2Fs
bFRhcmdldCwgcmVnaXN0ZXJPZmZzZXQsIHNwZWNpYWxpemF0aW9uS2luZCk7CiAgICAgICAgICAg
ICBrbm93bkZ1bmN0aW9uID0gZnVuY3Rpb247CisKKyAgICAgICAgICAgIGlmIChvcCA9PSBDYWxs
KSAKKyAgICAgICAgICAgICAgICBvcCA9IE5hdGl2ZUNhbGw7CisgICAgICAgICAgICBlbHNlIHsK
KyAgICAgICAgICAgICAgICBBU1NFUlQob3AgPT0gQ29uc3RydWN0KTsKKyAgICAgICAgICAgICAg
ICBvcCA9IE5hdGl2ZUNvbnN0cnVjdDsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0K
LSAgICAKLSAgICBhZGRDYWxsKHJlc3VsdCwgb3AsIGNhbGxUYXJnZXQsIGFyZ3VtZW50Q291bnRJ
bmNsdWRpbmdUaGlzLCByZWdpc3Rlck9mZnNldCktPmdpdmVLbm93bkZ1bmN0aW9uKGtub3duRnVu
Y3Rpb24pOworICAgIE5vZGUqIGNhbGwgPSBhZGRDYWxsKHJlc3VsdCwgb3AsIGNhbGxUYXJnZXQs
IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCByZWdpc3Rlck9mZnNldCk7CisKKyAgICBpZiAo
a25vd25GdW5jdGlvbikgCisgICAgICAgIGNhbGwtPmdpdmVLbm93bkZ1bmN0aW9uKGtub3duRnVu
Y3Rpb24pOwogfQogCiB2b2lkIEJ5dGVDb2RlUGFyc2VyOjplbWl0RnVuY3Rpb25DaGVja3MoY29u
c3QgQ2FsbExpbmtTdGF0dXMmIGNhbGxMaW5rU3RhdHVzLCBOb2RlKiBjYWxsVGFyZ2V0LCBpbnQg
cmVnaXN0ZXJPZmZzZXQsIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkKZGlmZiAtLWdpdCBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaCBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAppbmRleCAxMWIyZjBjLi5hZWRiMWRmIDEwMDY0NAot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCkBAIC0xOTksNiArMTk5LDggQEAgdm9p
ZCBjbG9iYmVyaXplKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSwgUmVhZEZ1bmN0b3ImIHJlYWQs
IFdyaXRlRnVuY3RvciYgd3JpdGUKICAgICBjYXNlIEFycmF5UG9wOgogICAgIGNhc2UgQ2FsbDoK
ICAgICBjYXNlIENvbnN0cnVjdDoKKyAgICBjYXNlIE5hdGl2ZUNhbGw6CisgICAgY2FzZSBOYXRp
dmVDb25zdHJ1Y3Q6CiAgICAgY2FzZSBUb1ByaW1pdGl2ZToKICAgICBjYXNlIEluOgogICAgIGNh
c2UgR2V0TXlBcmd1bWVudHNMZW5ndGhTYWZlOgpkaWZmIC0tZ2l0IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHRG9lc0dDLmNwcCBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNH
Qy5jcHAKaW5kZXggNWUwZmY1NS4uMjA1ODg3OSAxMDA2NDQKLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHRG9lc0dDLmNwcAorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdE
b2VzR0MuY3BwCkBAIC0xMTYsNiArMTE2LDggQEAgYm9vbCBkb2VzR0MoR3JhcGgmIGdyYXBoLCBO
b2RlKiBub2RlKQogICAgIGNhc2UgQ29tcGFyZVN0cmljdEVxOgogICAgIGNhc2UgQ2FsbDoKICAg
ICBjYXNlIENvbnN0cnVjdDoKKyAgICBjYXNlIE5hdGl2ZUNhbGw6CisgICAgY2FzZSBOYXRpdmVD
b25zdHJ1Y3Q6CiAgICAgY2FzZSBCcmVha3BvaW50OgogICAgIGNhc2UgUHJvZmlsZVdpbGxDYWxs
OgogICAgIGNhc2UgUHJvZmlsZURpZENhbGw6CmRpZmYgLS1naXQgU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcCBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Zp
eHVwUGhhc2UuY3BwCmluZGV4IDkzZWE5YTkuLjkwOThhY2QgMTAwNjQ0Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCkBAIC0xMDgyLDYgKzEwODIsOCBAQCBwcml2YXRlOgog
ICAgICAgICBjYXNlIEFsbG9jYXRpb25Qcm9maWxlV2F0Y2hwb2ludDoKICAgICAgICAgY2FzZSBD
YWxsOgogICAgICAgICBjYXNlIENvbnN0cnVjdDoKKyAgICAgICAgY2FzZSBOYXRpdmVDYWxsOgor
ICAgICAgICBjYXNlIE5hdGl2ZUNvbnN0cnVjdDoKICAgICAgICAgY2FzZSBOZXdPYmplY3Q6CiAg
ICAgICAgIGNhc2UgTmV3QXJyYXlCdWZmZXI6CiAgICAgICAgIGNhc2UgTmV3UmVnZXhwOgpkaWZm
IC0tZ2l0IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHTm9kZS5oCmluZGV4IGIyN2MwM2IuLjg4Mzk0NGEgMTAwNjQ0Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdOb2RlLmgKQEAgLTk5Miw2ICs5OTIsOCBAQCBzdHJ1Y3QgTm9kZSB7CiAgICAg
ICAgIGNhc2UgR2V0TXlBcmd1bWVudEJ5VmFsU2FmZToKICAgICAgICAgY2FzZSBDYWxsOgogICAg
ICAgICBjYXNlIENvbnN0cnVjdDoKKyAgICAgICAgY2FzZSBOYXRpdmVDYWxsOgorICAgICAgICBj
YXNlIE5hdGl2ZUNvbnN0cnVjdDoKICAgICAgICAgY2FzZSBHZXRCeU9mZnNldDoKICAgICAgICAg
Y2FzZSBNdWx0aUdldEJ5T2Zmc2V0OgogICAgICAgICBjYXNlIEdldENsb3N1cmVWYXI6CkBAIC0x
MDIyLDggKzEwMjQsOCBAQCBzdHJ1Y3QgTm9kZSB7CiAgICAgYm9vbCBjYW5CZUtub3duRnVuY3Rp
b24oKQogICAgIHsKICAgICAgICAgc3dpdGNoIChvcCgpKSB7Ci0gICAgICAgIGNhc2UgQ29uc3Ry
dWN0OgotICAgICAgICBjYXNlIENhbGw6CisgICAgICAgIGNhc2UgTmF0aXZlQ29uc3RydWN0Ogor
ICAgICAgICBjYXNlIE5hdGl2ZUNhbGw6CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAg
ICAgZGVmYXVsdDoKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTEwMzMsOCArMTAzNSw4
IEBAIHN0cnVjdCBOb2RlIHsKICAgICBib29sIGhhc0tub3duRnVuY3Rpb24oKQogICAgIHsKICAg
ICAgICAgc3dpdGNoIChvcCgpKSB7Ci0gICAgICAgIGNhc2UgQ29uc3RydWN0OgotICAgICAgICBj
YXNlIENhbGw6CisgICAgICAgIGNhc2UgTmF0aXZlQ29uc3RydWN0OgorICAgICAgICBjYXNlIE5h
dGl2ZUNhbGw6CiAgICAgICAgICAgICByZXR1cm4gKGJvb2wpbV9vcEluZm87CiAgICAgICAgIGRl
ZmF1bHQ6CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Tm9kZVR5cGUuaAppbmRleCA4ZjU4NWRjLi5lZWZmMzBjIDEwMDY0NAotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR05vZGVUeXBlLmgKQEAgLTIxMSw2ICsyMTEsOCBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNw
YWNlIERGRyB7CiAgICAgLyogQ2FsbHMuICovXAogICAgIG1hY3JvKENhbGwsIE5vZGVSZXN1bHRK
UyB8IE5vZGVNdXN0R2VuZXJhdGUgfCBOb2RlSGFzVmFyQXJncyB8IE5vZGVDbG9iYmVyc1dvcmxk
KSBcCiAgICAgbWFjcm8oQ29uc3RydWN0LCBOb2RlUmVzdWx0SlMgfCBOb2RlTXVzdEdlbmVyYXRl
IHwgTm9kZUhhc1ZhckFyZ3MgfCBOb2RlQ2xvYmJlcnNXb3JsZCkgXAorICAgIG1hY3JvKE5hdGl2
ZUNhbGwsIE5vZGVSZXN1bHRKUyB8IE5vZGVNdXN0R2VuZXJhdGUgfCBOb2RlSGFzVmFyQXJncyB8
IE5vZGVDbG9iYmVyc1dvcmxkKSBcCisgICAgbWFjcm8oTmF0aXZlQ29uc3RydWN0LCBOb2RlUmVz
dWx0SlMgfCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9kZUhhc1ZhckFyZ3MgfCBOb2RlQ2xvYmJlcnNX
b3JsZCkgXAogICAgIFwKICAgICAvKiBBbGxvY2F0aW9ucy4gKi9cCiAgICAgbWFjcm8oTmV3T2Jq
ZWN0LCBOb2RlUmVzdWx0SlMpIFwKZGlmZiAtLWdpdCBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcCBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAppbmRleCBhZWE4OWU3Li4xODFl
NjA2IDEwMDY0NAotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJv
cGFnYXRpb25QaGFzZS5jcHAKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGlj
dGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCkBAIC0xODIsNiArMTgyLDggQEAgcHJpdmF0ZToKICAg
ICAgICAgY2FzZSBNdWx0aUdldEJ5T2Zmc2V0OgogICAgICAgICBjYXNlIENhbGw6CiAgICAgICAg
IGNhc2UgQ29uc3RydWN0OgorICAgICAgICBjYXNlIE5hdGl2ZUNhbGw6CisgICAgICAgIGNhc2Ug
TmF0aXZlQ29uc3RydWN0OgogICAgICAgICBjYXNlIEdldEdsb2JhbFZhcjoKICAgICAgICAgY2Fz
ZSBHZXRDbG9zdXJlVmFyOiB7CiAgICAgICAgICAgICBjaGFuZ2VkIHw9IHNldFByZWRpY3Rpb24o
bm9kZS0+Z2V0SGVhcFByZWRpY3Rpb24oKSk7CmRpZmYgLS1naXQgU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmggU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
YWZlVG9FeGVjdXRlLmgKaW5kZXggYTBjYTU5Ny4uYWE2NGFlNCAxMDA2NDQKLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaApAQCAtMjU1LDcgKzI1NSwxMSBAQCBib29sIHNh
ZmVUb0V4ZWN1dGUoQWJzdHJhY3RTdGF0ZVR5cGUmIHN0YXRlLCBHcmFwaCYgZ3JhcGgsIE5vZGUq
IG5vZGUpCiAgICAgY2FzZSBHZXRHZXR0ZXI6CiAgICAgY2FzZSBHZXRTZXR0ZXI6CiAgICAgICAg
IHJldHVybiB0cnVlOwotICAgICAgICAKKworICAgIGNhc2UgTmF0aXZlQ2FsbDoKKyAgICBjYXNl
IE5hdGl2ZUNvbnN0cnVjdDoKKyAgICAgICAgcmV0dXJuIGZhbHNlOyAvLyBUT0RPOiBhZGQgYSBj
aGVjayBmb3IgYWxyZWFkeSBjaGVja2VkLiAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTEzMzc2OQorCiAgICAgY2FzZSBHZXRCeVZhbDoKICAgICBjYXNlIEdldEluZGV4
ZWRQcm9wZXJ0eVN0b3JhZ2U6CiAgICAgY2FzZSBHZXRBcnJheUxlbmd0aDoKZGlmZiAtLWdpdCBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKaW5kZXggNzFl
ZjU5Ni4uODA1ZGM3ZiAxMDA2NDQKLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQzMl82NC5jcHAKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQzMl82NC5jcHAKQEAgLTYzOSwxNCArNjM5LDE1IEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVNaXNjU3RyaWN0RXEoTm9kZSogbm9kZSkKIAogdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6ZW1pdENhbGwoTm9kZSogbm9kZSkKIHsKLSAgICBpZiAobm9kZS0+b3AoKSAhPSBDYWxs
KQorICAgIGJvb2wgaXNDYWxsID0gbm9kZS0+b3AoKSA9PSBDYWxsOworICAgIGlmICghaXNDYWxs
KQogICAgICAgICBBU1NFUlQobm9kZS0+b3AoKSA9PSBDb25zdHJ1Y3QpOwogCiAgICAgLy8gRm9y
IGNvbnN0cnVjdG9ycywgdGhlIHRoaXMgYXJndW1lbnQgaXMgbm90IHBhc3NlZCBidXQgd2UgaGF2
ZSB0byBtYWtlIHNwYWNlCiAgICAgLy8gZm9yIGl0LgotICAgIGludCBkdW1teVRoaXNBcmd1bWVu
dCA9IG5vZGUtPm9wKCkgPT0gQ2FsbCA/IDAgOiAxOworICAgIGludCBkdW1teVRoaXNBcmd1bWVu
dCA9IGlzQ2FsbCA/IDAgOiAxOwogCi0gICAgQ2FsbExpbmtJbmZvOjpDYWxsVHlwZSBjYWxsVHlw
ZSA9IG5vZGUtPm9wKCkgPT0gQ2FsbCA/IENhbGxMaW5rSW5mbzo6Q2FsbCA6IENhbGxMaW5rSW5m
bzo6Q29uc3RydWN0OworICAgIENhbGxMaW5rSW5mbzo6Q2FsbFR5cGUgY2FsbFR5cGUgPSBpc0Nh
bGwgPyBDYWxsTGlua0luZm86OkNhbGwgOiBDYWxsTGlua0luZm86OkNvbnN0cnVjdDsKIAogICAg
IEVkZ2UgY2FsbGVlRWRnZSA9IG1faml0LmdyYXBoKCkubV92YXJBcmdDaGlsZHJlbltub2RlLT5m
aXJzdENoaWxkKCldOwogICAgIEpTVmFsdWVPcGVyYW5kIGNhbGxlZSh0aGlzLCBjYWxsZWVFZGdl
KTsKQEAgLTQ1OTEsNyArNDU5Miw4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9k
ZSogbm9kZSkKICAgICAgICAgLy8gVGhpcyBpcyBhIG5vLW9wLgogICAgICAgICBub1Jlc3VsdChu
b2RlKTsKICAgICAgICAgYnJlYWs7Ci0KKyAgICAgICAgCisgICAgICAgIAogICAgIGNhc2UgVW5y
ZWFjaGFibGU6CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAg
IGJyZWFrOwpAQCAtNDYxMCw2ICs0NjEyLDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZShOb2RlKiBub2RlKQogICAgIGNhc2UgQXJpdGhJTXVsOgogICAgIGNhc2UgTXVsdGlHZXRCeU9m
ZnNldDoKICAgICBjYXNlIE11bHRpUHV0QnlPZmZzZXQ6CisgICAgY2FzZSBOYXRpdmVDYWxsOgor
ICAgIGNhc2UgTmF0aXZlQ29uc3RydWN0OgogICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVB
Q0hFRCgpOwogICAgICAgICBicmVhazsKICAgICB9CmRpZmYgLS1naXQgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcCBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCmluZGV4IDBkYzgxYjMuLjcwMGI0ZWQgMTAwNjQ0
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCkBAIC02
MjUsMTQgKzYyNSwxNiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlTWlzY1N0cmljdEVx
KE5vZGUqIG5vZGUpCiAKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRDYWxsKE5vZGUqIG5vZGUp
CiB7Ci0gICAgaWYgKG5vZGUtPm9wKCkgIT0gQ2FsbCkKKworICAgIGJvb2wgaXNDYWxsID0gbm9k
ZS0+b3AoKSA9PSBDYWxsOworICAgIGlmICghaXNDYWxsKQogICAgICAgICBSRUxFQVNFX0FTU0VS
VChub2RlLT5vcCgpID09IENvbnN0cnVjdCk7CiAKICAgICAvLyBGb3IgY29uc3RydWN0b3JzLCB0
aGUgdGhpcyBhcmd1bWVudCBpcyBub3QgcGFzc2VkIGJ1dCB3ZSBoYXZlIHRvIG1ha2Ugc3BhY2UK
ICAgICAvLyBmb3IgaXQuCi0gICAgaW50IGR1bW15VGhpc0FyZ3VtZW50ID0gbm9kZS0+b3AoKSA9
PSBDYWxsID8gMCA6IDE7CisgICAgaW50IGR1bW15VGhpc0FyZ3VtZW50ID0gaXNDYWxsID8gMCA6
IDE7CiAgICAgCi0gICAgQ2FsbExpbmtJbmZvOjpDYWxsVHlwZSBjYWxsVHlwZSA9IG5vZGUtPm9w
KCkgPT0gQ2FsbCA/IENhbGxMaW5rSW5mbzo6Q2FsbCA6IENhbGxMaW5rSW5mbzo6Q29uc3RydWN0
OworICAgIENhbGxMaW5rSW5mbzo6Q2FsbFR5cGUgY2FsbFR5cGUgPSBpc0NhbGwgPyBDYWxsTGlu
a0luZm86OkNhbGwgOiBDYWxsTGlua0luZm86OkNvbnN0cnVjdDsKICAgICAKICAgICBFZGdlIGNh
bGxlZUVkZ2UgPSBtX2ppdC5ncmFwaCgpLm1fdmFyQXJnQ2hpbGRyZW5bbm9kZS0+Zmlyc3RDaGls
ZCgpXTsKICAgICBKU1ZhbHVlT3BlcmFuZCBjYWxsZWUodGhpcywgY2FsbGVlRWRnZSk7CkBAIC00
NjU0LDcgKzQ2NTYsOSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUp
CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIGJyZWFrOwog
I2VuZGlmIC8vIEVOQUJMRShGVExfSklUKQotICAgICAgICAKKworICAgIGNhc2UgTmF0aXZlQ2Fs
bDoKKyAgICBjYXNlIE5hdGl2ZUNvbnN0cnVjdDogICAgCiAgICAgY2FzZSBMYXN0Tm9kZVR5cGU6
CiAgICAgY2FzZSBQaGk6CiAgICAgY2FzZSBVcHNpbG9uOgpkaWZmIC0tZ2l0IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcCBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKaW5kZXggNThhNmM4Yi4uMDI0MTEzYiAxMDA2NDQKLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCkBAIC0xMTgsNiArMTE4LDgg
QEAgaW5saW5lIENhcGFiaWxpdHlMZXZlbCBjYW5Db21waWxlKE5vZGUqIG5vZGUpCiAgICAgY2Fz
ZSBTdG9yZUJhcnJpZXJXaXRoTnVsbENoZWNrOgogICAgIGNhc2UgQ2FsbDoKICAgICBjYXNlIENv
bnN0cnVjdDoKKyAgICBjYXNlIE5hdGl2ZUNhbGw6CisgICAgY2FzZSBOYXRpdmVDb25zdHJ1Y3Q6
CiAgICAgY2FzZSBWYWx1ZVRvSW50MzI6CiAgICAgY2FzZSBCcmFuY2g6CiAgICAgY2FzZSBMb2dp
Y2FsTm90OgpkaWZmIC0tZ2l0IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdU
b0xMVk0uY3BwIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0uY3Bw
CmluZGV4IDI4NDE3ZWEuLmRmNjRlNzYgMTAwNjQ0Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTExvd2VyREZHVG9MTFZNLmNwcAorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExMb3dlckRGR1RvTExWTS5jcHAKQEAgLTE1NCwxMyArMTU0LDggQEAgcHVibGljOgogICAgICAg
ICAgICAgICAgIE5vZGUqIG1fbm9kZSA9IGJsb2NrLT5hdChub2RlSW5kZXgpOwogICAgICAgICAg
ICAgICAgIGlmIChtX25vZGUtPmhhc0tub3duRnVuY3Rpb24oKSkgewogICAgICAgICAgICAgICAg
ICAgICBpbnQgbnVtQXJncyA9IG1fbm9kZS0+bnVtQ2hpbGRyZW4oKTsKLSAgICAgICAgICAgICAg
ICAgICAgTmF0aXZlRnVuY3Rpb24gZnVuYyA9IG1fbm9kZS0+a25vd25GdW5jdGlvbigpLT5uYXRp
dmVGdW5jdGlvbigpOwotICAgICAgICAgICAgICAgICAgICBEbF9pbmZvIGluZm87Ci0gICAgICAg
ICAgICAgICAgICAgIGlmIChkbGFkZHIoKHZvaWQqKWZ1bmMsICZpbmZvKSkgewotICAgICAgICAg
ICAgICAgICAgICAgICAgTFZhbHVlIGNhbGxlZSA9IGdldEZ1bmN0aW9uQnlTeW1ib2woaW5mby5k
bGlfc25hbWUpOwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNhbGxlZSAmJiBudW1Bcmdz
ID4gbWF4TnVtYmVyT2ZBcmd1bWVudHMpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4
TnVtYmVyT2ZBcmd1bWVudHMgPSBudW1BcmdzOwotICAgICAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgICAgIGlmIChudW1BcmdzID4gbWF4TnVtYmVyT2ZBcmd1bWVudHMpCisgICAg
ICAgICAgICAgICAgICAgICAgICBtYXhOdW1iZXJPZkFyZ3VtZW50cyA9IG51bUFyZ3M7CiAgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC02MzQsNiArNjI5LDEw
IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgQ29uc3RydWN0OgogICAgICAgICAgICAgY29tcGls
ZUNhbGxPckNvbnN0cnVjdCgpOwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgTmF0
aXZlQ2FsbDoKKyAgICAgICAgY2FzZSBOYXRpdmVDb25zdHJ1Y3Q6CisgICAgICAgICAgICBjb21w
aWxlTmF0aXZlQ2FsbE9yQ29uc3RydWN0KCk7CisgICAgICAgICAgICBicmVhazsKICAgICAgICAg
Y2FzZSBKdW1wOgogICAgICAgICAgICAgY29tcGlsZUp1bXAoKTsKICAgICAgICAgICAgIGJyZWFr
OwpAQCAtMzU3NywxNiArMzU3Niw2NiBAQCBwcml2YXRlOgogICAgICAgICBzZXRCb29sZWFuKG1f
b3V0LmJpdE5vdChib29saWZ5KG1fbm9kZS0+Y2hpbGQxKCkpKSk7CiAgICAgfQogCisgICAgdm9p
ZCBjb21waWxlTmF0aXZlQ2FsbE9yQ29uc3RydWN0KCkgCisgICAgeworICAgICAgICBpbnQgZHVt
bXlUaGlzQXJndW1lbnQgPSBtX25vZGUtPm9wKCkgPT0gTmF0aXZlQ2FsbCA/IDAgOiAxOworICAg
ICAgICBpbnQgbnVtUGFzc2VkQXJncyA9IG1fbm9kZS0+bnVtQ2hpbGRyZW4oKSAtIDE7CisgICAg
ICAgIGludCBudW1BcmdzID0gbnVtUGFzc2VkQXJncyArIGR1bW15VGhpc0FyZ3VtZW50OworCisg
ICAgICAgIEFTU0VSVChtX25vZGUtPmhhc0tub3duRnVuY3Rpb24oKSk7CisKKyAgICAgICAgSlNG
dW5jdGlvbioga25vd25GdW5jdGlvbiA9IG1fbm9kZS0+a25vd25GdW5jdGlvbigpOworICAgICAg
ICBOYXRpdmVGdW5jdGlvbiBmdW5jdGlvbiA9IGtub3duRnVuY3Rpb24tPm5hdGl2ZUZ1bmN0aW9u
KCk7CisKKyAgICAgICAgRGxfaW5mbyBpbmZvOworICAgICAgICBpZiAoIWRsYWRkcigodm9pZCop
ZnVuY3Rpb24sICZpbmZvKSkKKyAgICAgICAgICAgIEFTU0VSVChmYWxzZSk7IC8vIGlmIHdlIGNv
dWxkbid0IGZpbmQgdGhlIG5hdGl2ZSBmdW5jdGlvbiB0aGlzIGRvZXNuJ3QgYm9kZSB3ZWxsLgor
CisgICAgICAgIExWYWx1ZSBjYWxsZWUgPSBnZXRGdW5jdGlvbkJ5U3ltYm9sKGluZm8uZGxpX3Nu
YW1lKTsKKworICAgICAgICBib29sIG5vdElubGluYWJsZTsKKyAgICAgICAgaWYgKChub3RJbmxp
bmFibGUgPSAhY2FsbGVlKSkKKyAgICAgICAgICAgIGNhbGxlZSA9IG1fb3V0Lm9wZXJhdGlvbihm
dW5jdGlvbik7CisKKyAgICAgICAgSlNTY29wZSogc2NvcGUgPSBrbm93bkZ1bmN0aW9uLT5zY29w
ZVVuY2hlY2tlZCgpOworICAgICAgICBtX291dC5zdG9yZVB0cihtX2NhbGxGcmFtZSwgbV9leGVj
U3RvcmFnZSwgbV9oZWFwcy5DYWxsRnJhbWVfY2FsbGVyRnJhbWUpOworICAgICAgICBtX291dC5z
dG9yZVB0cihjb25zdE51bGwobV9vdXQuaW50UHRyKSwgYWRkcmVzc0ZvcihtX2V4ZWNTdG9yYWdl
LCBKU1N0YWNrOjpDb2RlQmxvY2spKTsKKyAgICAgICAgbV9vdXQuc3RvcmVQdHIod2Vha1BvaW50
ZXIoc2NvcGUpLCBhZGRyZXNzRm9yKG1fZXhlY1N0b3JhZ2UsIEpTU3RhY2s6OlNjb3BlQ2hhaW4p
KTsKKyAgICAgICAgbV9vdXQuc3RvcmVQdHIod2Vha1BvaW50ZXIoa25vd25GdW5jdGlvbiksIGFk
ZHJlc3NGb3IobV9leGVjU3RvcmFnZSwgSlNTdGFjazo6Q2FsbGVlKSk7CisKKyAgICAgICAgbV9v
dXQuc3RvcmU2NChtX291dC5jb25zdEludDY0KG51bUFyZ3MpLCBhZGRyZXNzRm9yKG1fZXhlY1N0
b3JhZ2UsIEpTU3RhY2s6OkFyZ3VtZW50Q291bnQpKTsKKworICAgICAgICBpZiAoZHVtbXlUaGlz
QXJndW1lbnQpIAorICAgICAgICAgICAgbV9vdXQuc3RvcmVQdHIoZ2V0VW5kZWYobV9vdXQuaW50
NjQpLCBhZGRyZXNzRm9yKG1fZXhlY1N0b3JhZ2UsIEpTU3RhY2s6OlRoaXNBcmd1bWVudCkpOwor
ICAgICAgICAKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1QYXNzZWRBcmdzOyArK2kp
IHsKKyAgICAgICAgICAgIG1fb3V0LnN0b3JlUHRyKGxvd0pTVmFsdWUobV9ncmFwaC52YXJBcmdD
aGlsZChtX25vZGUsIDEgKyBpKSksCisgICAgICAgICAgICAgICAgYWRkcmVzc0ZvcihtX2V4ZWNT
dG9yYWdlLCBkdW1teVRoaXNBcmd1bWVudCA/IEpTU3RhY2s6OkZpcnN0QXJndW1lbnQgOiBKU1N0
YWNrOjpUaGlzQXJndW1lbnQsIGkgKiBzaXplb2YoUmVnaXN0ZXIpKSk7CisgICAgICAgIH0KKwor
ICAgICAgICBMVmFsdWUgY2FsbGVlQ2FsbEZyYW1lID0gbV9vdXQuYWRkcmVzcyhtX2V4ZWNTdGF0
ZSwgbV9oZWFwcy5DYWxsRnJhbWVfY2FsbGVyRnJhbWUpLnZhbHVlKCk7CisgICAgICAgIG1fb3V0
LnN0b3JlUHRyKG1fb3V0LnB0clRvSW50KGNhbGxlZUNhbGxGcmFtZSwgbV9vdXQuaW50UHRyKSwg
bV9vdXQuYWJzb2x1dGUoJnZtKCkudG9wQ2FsbEZyYW1lKSk7CisKKyAgICAgICAgTFR5cGUgdHlw
ZUNhbGxlZUFyZzsKKyAgICAgICAgZ2V0UGFyYW1UeXBlcyhnZXRFbGVtZW50VHlwZSh0eXBlT2Yo
Y2FsbGVlKSksICZ0eXBlQ2FsbGVlQXJnKTsKKworICAgICAgICBMVmFsdWUgYXJndW1lbnQgPSBu
b3RJbmxpbmFibGUgCisgICAgICAgICAgICA/IG1fb3V0LnB0clRvSW50KGNhbGxlZUNhbGxGcmFt
ZSwgdHlwZUNhbGxlZUFyZykgCisgICAgICAgICAgICA6IG1fb3V0LmJpdENhc3QoY2FsbGVlQ2Fs
bEZyYW1lLCB0eXBlQ2FsbGVlQXJnKTsKKyAgICAgICAgTFZhbHVlIGNhbGwgPSB2bUNhbGwoY2Fs
bGVlLCBhcmd1bWVudCk7CisKKyAgICAgICAgaWYgKE9wdGlvbnM6OnZlcmJvc2VDb21waWxhdGlv
bigpKQorICAgICAgICAgICAgZGF0YUxvZygiTmF0aXZlIGNhbGxpbmc6ICIsIGluZm8uZGxpX3Nu
YW1lLCAiXG4iKTsKKworICAgICAgICBzZXRKU1ZhbHVlKGNhbGwpOworICAgIH0KKwogICAgIHZv
aWQgY29tcGlsZUNhbGxPckNvbnN0cnVjdCgpCiAgICAgewogICAgICAgICBpbnQgZHVtbXlUaGlz
QXJndW1lbnQgPSBtX25vZGUtPm9wKCkgPT0gQ2FsbCA/IDAgOiAxOwogICAgICAgICBpbnQgbnVt
UGFzc2VkQXJncyA9IG1fbm9kZS0+bnVtQ2hpbGRyZW4oKSAtIDE7CiAgICAgICAgIGludCBudW1B
cmdzID0gbnVtUGFzc2VkQXJncyArIGR1bW15VGhpc0FyZ3VtZW50OwogCi0gICAgICAgIGlmICht
X25vZGUtPmhhc0tub3duRnVuY3Rpb24oKQotICAgICAgICAgICAgJiYgcG9zc2libHlDb21waWxl
SW5saW5lYWJsZU5hdGl2ZUNhbGwoZHVtbXlUaGlzQXJndW1lbnQsIG51bVBhc3NlZEFyZ3MsIG51
bUFyZ3MpKQotICAgICAgICAgICAgcmV0dXJuOwotCiAgICAgICAgIExWYWx1ZSBqc0NhbGxlZSA9
IGxvd0pTVmFsdWUobV9ncmFwaC52YXJBcmdDaGlsZChtX25vZGUsIDApKTsKIAogICAgICAgICB1
bnNpZ25lZCBzdGFja21hcElEID0gbV9zdGFja21hcElEcysrOwpAQCAtMzk2Nyw1MCArNDAxNiw2
IEBAIHByaXZhdGU6CiAjZW5kaWYKICAgICB9CiAgICAgCi0gICAgYm9vbCBwb3NzaWJseUNvbXBp
bGVJbmxpbmVhYmxlTmF0aXZlQ2FsbChpbnQgZHVtbXlUaGlzQXJndW1lbnQsIGludCBudW1QYXNz
ZWRBcmdzLCBpbnQgbnVtQXJncykKLSAgICB7Ci0gICAgICAgIEpTRnVuY3Rpb24qIGtub3duRnVu
Y3Rpb24gPSBtX25vZGUtPmtub3duRnVuY3Rpb24oKTsKLSAgICAgICAgTmF0aXZlRnVuY3Rpb24g
ZnVuY3Rpb24gPSBrbm93bkZ1bmN0aW9uLT5uYXRpdmVGdW5jdGlvbigpOwotICAgICAgICBEbF9p
bmZvIGluZm87Ci0gICAgICAgIGlmIChkbGFkZHIoKHZvaWQqKWZ1bmN0aW9uLCAmaW5mbykpIHsK
LSAgICAgICAgICAgIExWYWx1ZSBjYWxsZWUgPSBnZXRGdW5jdGlvbkJ5U3ltYm9sKGluZm8uZGxp
X3NuYW1lKTsKLSAgICAgICAgICAgIExUeXBlIHR5cGVDYWxsZWU7Ci0gICAgICAgICAgICBpZiAo
Y2FsbGVlICYmICh0eXBlQ2FsbGVlID0gdHlwZU9mKGNhbGxlZSkpICYmICh0eXBlQ2FsbGVlID0g
Z2V0RWxlbWVudFR5cGUodHlwZUNhbGxlZSkpKSB7Ci0KLSAgICAgICAgICAgICAgICBKU1Njb3Bl
KiBzY29wZSA9IGtub3duRnVuY3Rpb24tPnNjb3BlVW5jaGVja2VkKCk7Ci0gICAgICAgICAgICAg
ICAgbV9vdXQuc3RvcmVQdHIobV9jYWxsRnJhbWUsIG1fZXhlY1N0b3JhZ2UsIG1faGVhcHMuQ2Fs
bEZyYW1lX2NhbGxlckZyYW1lKTsKLSAgICAgICAgICAgICAgICBtX291dC5zdG9yZVB0cihjb25z
dE51bGwobV9vdXQuaW50UHRyKSwgYWRkcmVzc0ZvcihtX2V4ZWNTdG9yYWdlLCBKU1N0YWNrOjpD
b2RlQmxvY2spKTsKLSAgICAgICAgICAgICAgICBtX291dC5zdG9yZVB0cih3ZWFrUG9pbnRlcihz
Y29wZSksIGFkZHJlc3NGb3IobV9leGVjU3RvcmFnZSwgSlNTdGFjazo6U2NvcGVDaGFpbikpOwot
ICAgICAgICAgICAgICAgIG1fb3V0LnN0b3JlUHRyKHdlYWtQb2ludGVyKGtub3duRnVuY3Rpb24p
LCBhZGRyZXNzRm9yKG1fZXhlY1N0b3JhZ2UsIEpTU3RhY2s6OkNhbGxlZSkpOwotCi0gICAgICAg
ICAgICAgICAgbV9vdXQuc3RvcmU2NChtX291dC5jb25zdEludDY0KG51bUFyZ3MpLCBhZGRyZXNz
Rm9yKG1fZXhlY1N0b3JhZ2UsIEpTU3RhY2s6OkFyZ3VtZW50Q291bnQpKTsKLQotICAgICAgICAg
ICAgICAgIGlmIChkdW1teVRoaXNBcmd1bWVudCkgCi0gICAgICAgICAgICAgICAgICAgIG1fb3V0
LnN0b3JlUHRyKGdldFVuZGVmKG1fb3V0LmludDY0KSwgYWRkcmVzc0ZvcihtX2V4ZWNTdG9yYWdl
LCBKU1N0YWNrOjpUaGlzQXJndW1lbnQpKTsKLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAg
ICAgICBmb3IgKGludCBpID0gMDsgaSA8IG51bVBhc3NlZEFyZ3M7ICsraSkgewotICAgICAgICAg
ICAgICAgICAgICBtX291dC5zdG9yZVB0cihsb3dKU1ZhbHVlKG1fZ3JhcGgudmFyQXJnQ2hpbGQo
bV9ub2RlLCAxICsgaSkpLAotICAgICAgICAgICAgICAgICAgICAgICAgYWRkcmVzc0ZvcihtX2V4
ZWNTdG9yYWdlLCBkdW1teVRoaXNBcmd1bWVudCA/IEpTU3RhY2s6OkZpcnN0QXJndW1lbnQgOiBK
U1N0YWNrOjpUaGlzQXJndW1lbnQsIGkgKiBzaXplb2YoUmVnaXN0ZXIpKSk7Ci0gICAgICAgICAg
ICAgICAgfQotCi0gICAgICAgICAgICAgICAgTFR5cGUgdHlwZUNhbGxlZUFyZzsKLSAgICAgICAg
ICAgICAgICBnZXRQYXJhbVR5cGVzKHR5cGVDYWxsZWUsICZ0eXBlQ2FsbGVlQXJnKTsKLSAgICAg
ICAgICAgICAgICBMVmFsdWUgY2FsbGVlQ2FsbEZyYW1lID0gbV9vdXQuYWRkcmVzcyhtX2V4ZWNT
dGF0ZSwgbV9oZWFwcy5DYWxsRnJhbWVfY2FsbGVyRnJhbWUpLnZhbHVlKCk7Ci0gICAgICAgICAg
ICAgICAgbV9vdXQuc3RvcmVQdHIobV9vdXQucHRyVG9JbnQoY2FsbGVlQ2FsbEZyYW1lLCBtX291
dC5pbnRQdHIpLCBtX291dC5hYnNvbHV0ZSgmdm0oKS50b3BDYWxsRnJhbWUpKTsKLSAgICAgICAg
ICAgICAgICAKLSAgICAgICAgICAgICAgICBMVmFsdWUgY2FsbCA9IHZtQ2FsbChjYWxsZWUsIAot
ICAgICAgICAgICAgICAgICAgICBtX291dC5iaXRDYXN0KGNhbGxlZUNhbGxGcmFtZSwgdHlwZUNh
bGxlZUFyZykpOwotCi0gICAgICAgICAgICAgICAgaWYgKE9wdGlvbnM6OnZlcmJvc2VDb21waWxh
dGlvbigpKQotICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKCJJbmxpbmluZzogIiwgaW5mby5k
bGlfc25hbWUsICJcbiIpOwotCi0gICAgICAgICAgICAgICAgc2V0SlNWYWx1ZShjYWxsKTsKLSAg
ICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCiAgICAgTFZhbHVlIGdldEZ1bmN0aW9uQnlTeW1i
b2woY29uc3QgQ1N0cmluZyBzeW1ib2wpCiAgICAgewogICAgICAgICBpZiAoIW1fZnRsU3RhdGUu
c3ltYm9sVGFibGUuY29udGFpbnMoc3ltYm9sKSkgCkBAIC00MTQyLDYgKzQxNDcsOCBAQCBwcml2
YXRlOgogICAgICAgICAgICAgICAgIGNhc2UgUHV0QnlJZDoKICAgICAgICAgICAgICAgICBjYXNl
IENhbGw6CiAgICAgICAgICAgICAgICAgY2FzZSBDb25zdHJ1Y3Q6CisgICAgICAgICAgICAgICAg
Y2FzZSBOYXRpdmVDYWxsOgorICAgICAgICAgICAgICAgIGNhc2UgTmF0aXZlQ29uc3RydWN0Ogog
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gbV9vdXQuYmVsb3coCiAgICAgICAgICAgICAgICAg
ICAgICAgICBtX2NhbGxGcmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgIG1fb3V0LmxvYWRQ
dHIoCmRpZmYgLS1naXQgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5o
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuaAppbmRleCA4YzY2MDgx
Li45ODI5YWNiIDEwMDY0NAotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNW
YWx1ZS5oCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmgKQEAg
LTI0MSw3ICsyNDEsNyBAQCBwdWJsaWM6CiAgICAgSlNPYmplY3QqIHRvT2JqZWN0KEV4ZWNTdGF0
ZSosIEpTR2xvYmFsT2JqZWN0KikgY29uc3Q7CiAKICAgICAvLyBJbnRlZ2VyIGNvbnZlcnNpb25z
LgotICAgIGRvdWJsZSB0b0ludGVnZXIoRXhlY1N0YXRlKikgY29uc3Q7CisgICAgSlNfRVhQT1JU
X1BSSVZBVEUgZG91YmxlIHRvSW50ZWdlcihFeGVjU3RhdGUqKSBjb25zdDsKICAgICBKU19FWFBP
UlRfUFJJVkFURSBkb3VibGUgdG9JbnRlZ2VyUHJlc2VydmVOYU4oRXhlY1N0YXRlKikgY29uc3Q7
CiAgICAgaW50MzJfdCB0b0ludDMyKEV4ZWNTdGF0ZSopIGNvbnN0OwogICAgIHVpbnQzMl90IHRv
VUludDMyKEV4ZWNTdGF0ZSopIGNvbnN0Owo=
</data>
<flag name="review"
          id="257412"
          type_id="1"
          status="+"
          setter="fpizlo"
    />
          </attachment>
      

    </bug>

</bugzilla>