<?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>200950</bug_id>
          
          <creation_ts>2019-08-20 16:22:21 -0700</creation_ts>
          <short_desc>Web Inspector: unify agent command error messages</short_desc>
          <delta_ts>2019-08-26 18:03:20 -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>Web Inspector</component>
          <version>WebKit 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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>200854</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Devin Rousso">hi</reporter>
          <assigned_to name="Devin Rousso">hi</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>hi</cc>
    
    <cc>inspector-bugzilla-changes</cc>
    
    <cc>joepeck</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1563289</commentid>
    <comment_count>0</comment_count>
    <who name="Devin Rousso">hi</who>
    <bug_when>2019-08-20 16:22:21 -0700</bug_when>
    <thetext>Different agents can sometimes have different error messages for commands that have a similar intended effect.  We should make our error messages more similar.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1563348</commentid>
    <comment_count>1</comment_count>
      <attachid>376836</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2019-08-20 18:11:58 -0700</bug_when>
    <thetext>Created attachment 376836
Patch

This will likely require rebasing some tests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1564824</commentid>
    <comment_count>2</comment_count>
      <attachid>376836</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2019-08-24 11:17:09 -0700</bug_when>
    <thetext>Comment on attachment 376836
Patch

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

rs=me

&gt; Source/WebCore/inspector/agents/InspectorDOMDebuggerAgent.cpp:544
&gt; -void InspectorDOMDebuggerAgent::removeURLBreakpoint(ErrorString&amp;, const String&amp; url)
&gt; +void InspectorDOMDebuggerAgent::removeURLBreakpoint(ErrorString&amp; errorString, const String&amp; url)
&gt;  {
&gt;      if (url.isEmpty()) {
&gt; +        if (!m_pauseOnAllURLsEnabled)
&gt; +            errorString = &quot;Breakpoint for all URLs missing&quot;_s;
&gt;          m_pauseOnAllURLsEnabled = false;
&gt;          return;
&gt;      }
&gt;  
&gt; -    m_urlBreakpoints.remove(url);
&gt; +    auto result = m_urlBreakpoints.remove(url);
&gt; +    if (!result)
&gt; +        errorString = &quot;Breakpoint for given url missing&quot;_s;
&gt;  }

I don&apos;t like the trend of sending back errors even though no error actually happened. Example: calling enable twice is harmless. That said, sending an error in these cases might help the frontend catch an error where it is doing something unbalanced.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1565091</commentid>
    <comment_count>3</comment_count>
      <attachid>376836</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2019-08-26 14:19:51 -0700</bug_when>
    <thetext>Comment on attachment 376836
Patch

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

&gt;&gt; Source/WebCore/inspector/agents/InspectorDOMDebuggerAgent.cpp:544
&gt;&gt;  }
&gt; 
&gt; I don&apos;t like the trend of sending back errors even though no error actually happened. Example: calling enable twice is harmless. That said, sending an error in these cases might help the frontend catch an error where it is doing something unbalanced.

Yeah, I think sending an error can help the frontend know when it&apos;s getting out of sync.  For most &quot;additive&quot; things (e.g. setting a breakpoint), I&apos;d agree that two calls is kinda harmless, unless there&apos;s some configuration change.  That having been said, these errors are things that shouldn&apos;t be seen, as otherwise it means that we&apos;ve gotten out of sync somehow, so I think the more errors the better.

For what it&apos;s worth, `enable` is probably a bad example because most agents actually do a lot of things inside their `enable` that can do serious havoc for the inspector frontend.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1565159</commentid>
    <comment_count>4</comment_count>
      <attachid>377288</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2019-08-26 16:36:43 -0700</bug_when>
    <thetext>Created attachment 377288
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1565215</commentid>
    <comment_count>5</comment_count>
      <attachid>377288</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-08-26 18:02:28 -0700</bug_when>
    <thetext>Comment on attachment 377288
Patch

Clearing flags on attachment: 377288

Committed r249128: &lt;https://trac.webkit.org/changeset/249128&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1565216</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-08-26 18:02:29 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1565217</commentid>
    <comment_count>7</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-08-26 18:03:20 -0700</bug_when>
    <thetext>&lt;rdar://problem/54730799&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>376836</attachid>
            <date>2019-08-20 18:11:58 -0700</date>
            <delta_ts>2019-08-26 16:36:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-200950-20190820181157.patch</filename>
            <type>text/plain</type>
            <size>99070</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IGUyZjNiNWJhY2JmNTcwMzBjZTM1YTJkMTcxMDZl
ODQ1OWVkZDhjZDEuLjdjZGU3OGI4NjJjN2MyMDAzNjE3YzRiYTZhOWQ4ODljYTE1YTRjNjUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDE5LTA4LTIwICBEZXZp
biBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiB1
bmlmeSBhZ2VudCBjb21tYW5kIGVycm9yIG1lc3NhZ2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDA5NTAKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBEaWZmZXJlbnQgYWdlbnRzIGNhbiBzb21ldGltZXMg
aGF2ZSBkaWZmZXJlbnQgZXJyb3IgbWVzc2FnZXMgZm9yIGNvbW1hbmRzIHRoYXQgaGF2ZSBhCisg
ICAgICAgIHNpbWlsYXIgaW50ZW5kZWQgZWZmZWN0LiAgV2Ugc2hvdWxkIG1ha2Ugb3VyIGVycm9y
IG1lc3NhZ2VzIG1vcmUgc2ltaWxhci4KKworICAgICAgICAqIGluc3BlY3Rvci9KU0dsb2JhbE9i
amVjdENvbnNvbGVDbGllbnQuY3BwOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVj
dG9yQWdlbnQuY3BwOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQXVkaXRB
Z2VudC5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDb25zb2xlQWdl
bnQuY3BwOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRGVidWdnZXJBZ2Vu
dC5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JIZWFwQWdlbnQuY3Bw
OgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUnVudGltZUFnZW50LmNwcDoK
KyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclRhcmdldEFnZW50LmNwcDoKKyAg
ICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0pTR2xvYmFsT2JqZWN0QXVkaXRBZ2VudC5jcHA6Cisg
ICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9KU0dsb2JhbE9iamVjdERlYnVnZ2VyQWdlbnQuY3Bw
OgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSlNHbG9iYWxPYmplY3RSdW50aW1lQWdlbnQu
Y3BwOgorICAgICAgICBFbGlkZSBmdW5jdGlvbiBsaXN0cyB0byBhdm9pZCBhbiBleHRyZW1lbHkg
bGFyZ2UgQ2hhbmdlTG9nIGVudHJ5LgorCiAyMDE5LTA4LTIwICBZdXN1a2UgU3V6dWtpICA8eXN1
enVraUBhcHBsZS5jb20+CiAKICAgICAgICAgW0pTQ10gQXJyYXkucHJvdG90eXBlLnRvU3RyaW5n
IHNob3VsZCBub3QgZ2V0ICJqb2luIiBmdW5jdGlvbiBlYWNoIHRpbWUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA3
NTY3MDhkNjU5NzkwODY4YzIwODA1NWZmNTRhNjQxNmNlYjA4NjgyLi5lNDhlODE5MzA5OTc1Y2Y2
NjY3OGJmYzZkMmRkYmZjYWNjODI1OWJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzggQEAKKzIw
MTktMDgtMjAgIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29tPgorCisgICAgICAgIFdl
YiBJbnNwZWN0b3I6IHVuaWZ5IGFnZW50IGNvbW1hbmQgZXJyb3IgbWVzc2FnZXMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMDk1MAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIERpZmZlcmVudCBhZ2VudHMg
Y2FuIHNvbWV0aW1lcyBoYXZlIGRpZmZlcmVudCBlcnJvciBtZXNzYWdlcyBmb3IgY29tbWFuZHMg
dGhhdCBoYXZlIGEKKyAgICAgICAgc2ltaWxhciBpbnRlbmRlZCBlZmZlY3QuICBXZSBzaG91bGQg
bWFrZSBvdXIgZXJyb3IgbWVzc2FnZXMgbW9yZSBzaW1pbGFyLgorCisgICAgICAgICogaW5zcGVj
dG9yL0NvbW1hbmRMaW5lQVBJSG9zdC5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9J
bnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQuY3BwOgorICAgICAgICAqIGluc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9yQ2FudmFzQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3RvckNhbnZhc0FnZW50LmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
ckRPTUFnZW50LmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTURl
YnVnZ2VyQWdlbnQuY3BwOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9N
U3RvcmFnZUFnZW50LmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvcklu
ZGV4ZWREQkFnZW50LmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvckxh
eWVyVHJlZUFnZW50LmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck1l
bW9yeUFnZW50LmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdv
cmtBZ2VudC5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdl
bnQuY3BwOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yVGltZWxpbmVBZ2Vu
dC5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JXb3JrZXJBZ2VudC5j
cHA6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9wYWdlL1BhZ2VBdWRpdEFnZW50LmNwcDoK
KyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZUNvbnNvbGVBZ2VudC5jcHA6Cisg
ICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9wYWdlL1BhZ2VEZWJ1Z2dlckFnZW50LmNwcDoKKyAg
ICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZU5ldHdvcmtBZ2VudC5jcHA6CisgICAg
ICAgICogaW5zcGVjdG9yL2FnZW50cy9wYWdlL1BhZ2VSdW50aW1lQWdlbnQuY3BwOgorICAgICAg
ICAqIGluc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlckF1ZGl0QWdlbnQuY3BwOgorICAgICAg
ICAqIGluc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlckRlYnVnZ2VyQWdlbnQuY3BwOgorICAg
ICAgICAqIGluc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlclJ1bnRpbWVBZ2VudC5jcHA6Cisg
ICAgICAgIEVsaWRlIGZ1bmN0aW9uIGxpc3RzIHRvIGF2b2lkIGFuIGV4dHJlbWVseSBsYXJnZSBD
aGFuZ2VMb2cgZW50cnkuCisKIDIwMTktMDgtMjAgIEp1c3RpbiBGYW4gIDxqdXN0aW5fZmFuQGFw
cGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkIGNvbW1lbnQgZm9sbG93LXVwIGZvciBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAwNzUyLgpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0dsb2JhbE9iamVjdENvbnNvbGVDbGll
bnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0dsb2JhbE9iamVjdENv
bnNvbGVDbGllbnQuY3BwCmluZGV4IDkwYjllM2EwOTI0YjNkZTExNGFlYjIzNmI0NDQ5NjBmY2U4
MDI1ODUuLmNmODBlZTI4YzBlZjRlMjQxOThjNTFiMDFkNjA1YWZhYjNhMzNiYjMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNHbG9iYWxPYmplY3RDb25zb2xl
Q2xpZW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTR2xvYmFs
T2JqZWN0Q29uc29sZUNsaWVudC5jcHAKQEAgLTEyOSwyOCArMTI5LDI4IEBAIHZvaWQgSlNHbG9i
YWxPYmplY3RDb25zb2xlQ2xpZW50Ojpwcm9maWxlRW5kKEpTQzo6RXhlY1N0YXRlKiwgY29uc3Qg
U3RyaW5nJiB0aXRsCiAKIHZvaWQgSlNHbG9iYWxPYmplY3RDb25zb2xlQ2xpZW50OjpzdGFydENv
bnNvbGVQcm9maWxlKCkKIHsKLSAgICBFcnJvclN0cmluZyB1bnVzZWQ7CisgICAgRXJyb3JTdHJp
bmcgaWdub3JlZDsKIAogICAgIGlmIChtX2RlYnVnZ2VyQWdlbnQpIHsKICAgICAgICAgbV9wcm9m
aWxlUmVzdG9yZUJyZWFrcG9pbnRBY3RpdmVWYWx1ZSA9IG1fZGVidWdnZXJBZ2VudC0+YnJlYWtw
b2ludHNBY3RpdmUoKTsKLSAgICAgICAgbV9kZWJ1Z2dlckFnZW50LT5zZXRCcmVha3BvaW50c0Fj
dGl2ZSh1bnVzZWQsIGZhbHNlKTsKKyAgICAgICAgbV9kZWJ1Z2dlckFnZW50LT5zZXRCcmVha3Bv
aW50c0FjdGl2ZShpZ25vcmVkLCBmYWxzZSk7CiAgICAgfQogCiAgICAgaWYgKG1fc2NyaXB0UHJv
ZmlsZXJBZ2VudCkgewogICAgICAgICBjb25zdCBib29sIGluY2x1ZGVTYW1wbGVzID0gdHJ1ZTsK
LSAgICAgICAgbV9zY3JpcHRQcm9maWxlckFnZW50LT5zdGFydFRyYWNraW5nKHVudXNlZCwgJmlu
Y2x1ZGVTYW1wbGVzKTsKKyAgICAgICAgbV9zY3JpcHRQcm9maWxlckFnZW50LT5zdGFydFRyYWNr
aW5nKGlnbm9yZWQsICZpbmNsdWRlU2FtcGxlcyk7CiAgICAgfQogfQogCiB2b2lkIEpTR2xvYmFs
T2JqZWN0Q29uc29sZUNsaWVudDo6c3RvcENvbnNvbGVQcm9maWxlKCkKIHsKLSAgICBFcnJvclN0
cmluZyB1bnVzZWQ7CisgICAgRXJyb3JTdHJpbmcgaWdub3JlZDsKIAogICAgIGlmIChtX3Njcmlw
dFByb2ZpbGVyQWdlbnQpCi0gICAgICAgIG1fc2NyaXB0UHJvZmlsZXJBZ2VudC0+c3RvcFRyYWNr
aW5nKHVudXNlZCk7CisgICAgICAgIG1fc2NyaXB0UHJvZmlsZXJBZ2VudC0+c3RvcFRyYWNraW5n
KGlnbm9yZWQpOwogCiAgICAgaWYgKG1fZGVidWdnZXJBZ2VudCkKLSAgICAgICAgbV9kZWJ1Z2dl
ckFnZW50LT5zZXRCcmVha3BvaW50c0FjdGl2ZSh1bnVzZWQsIG1fcHJvZmlsZVJlc3RvcmVCcmVh
a3BvaW50QWN0aXZlVmFsdWUpOworICAgICAgICBtX2RlYnVnZ2VyQWdlbnQtPnNldEJyZWFrcG9p
bnRzQWN0aXZlKGlnbm9yZWQsIG1fcHJvZmlsZVJlc3RvcmVCcmVha3BvaW50QWN0aXZlVmFsdWUp
OwogfQogCiB2b2lkIEpTR2xvYmFsT2JqZWN0Q29uc29sZUNsaWVudDo6dGFrZUhlYXBTbmFwc2hv
dChKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IFN0cmluZyYgdGl0bGUpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JBZ2VudC5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JBZ2VudC5jcHAK
aW5kZXggNDE3ZTc3NWZiODAyNDljMDQwMzEzN2E4Mjc4MjEzNzMyN2QzMzJiNC4uN2IwZDQ2YWQ5
NmM4NzU4YTg3ZGMwMTUxYzAyZDA3MmE3OGU4MzI2ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQWdlbnQuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckFnZW50LmNwcApAQCAt
NTMsOCArNTMsOCBAQCB2b2lkIEluc3BlY3RvckFnZW50Ojp3aWxsRGVzdHJveUZyb250ZW5kQW5k
QmFja2VuZChEaXNjb25uZWN0UmVhc29uKQogewogICAgIG1fcGVuZGluZ0V2YWx1YXRlVGVzdENv
bW1hbmRzLmNsZWFyKCk7CiAKLSAgICBFcnJvclN0cmluZyB1bnVzZWQ7Ci0gICAgZGlzYWJsZSh1
bnVzZWQpOworICAgIEVycm9yU3RyaW5nIGlnbm9yZWQ7CisgICAgZGlzYWJsZShpZ25vcmVkKTsK
IH0KIAogdm9pZCBJbnNwZWN0b3JBZ2VudDo6ZW5hYmxlKEVycm9yU3RyaW5nJikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckF1ZGl0
QWdlbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVj
dG9yQXVkaXRBZ2VudC5jcHAKaW5kZXggYjcxNzc5NTEwZDJmZjNlMDYwYjQ5NTc5MGEzODQyOWFl
MmU4OTFkMi4uZmY4NTgwOTE5NWY3NDY1M2I2Zjk1MjQ5Mzc1YTQ5NmM1YjJhYmVjNyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQXVk
aXRBZ2VudC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9yQXVkaXRBZ2VudC5jcHAKQEAgLTU5LDcgKzU5LDcgQEAgdm9pZCBJbnNwZWN0b3JB
dWRpdEFnZW50Ojp3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChEaXNjb25uZWN0UmVhc29u
KQogdm9pZCBJbnNwZWN0b3JBdWRpdEFnZW50OjpzZXR1cChFcnJvclN0cmluZyYgZXJyb3JTdHJp
bmcsIGNvbnN0IGludCogZXhlY3V0aW9uQ29udGV4dElkKQogewogICAgIGlmIChoYXNBY3RpdmVB
dWRpdCgpKSB7Ci0gICAgICAgIGVycm9yU3RyaW5nID0gIk11c3QgY2FsbCB0ZWFyZG93biBiZWZv
cmUgY2FsbGluZyBzZXR1cCBhZ2Fpbi4iX3M7CisgICAgICAgIGVycm9yU3RyaW5nID0gIk11c3Qg
Y2FsbCB0ZWFyZG93biBiZWZvcmUgY2FsbGluZyBzZXR1cCBhZ2FpbiJfczsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIApAQCAtNjksNyArNjksNyBAQCB2b2lkIEluc3BlY3RvckF1ZGl0QWdlbnQ6
OnNldHVwKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgaW50KiBleGVjdXRpb25Dbwog
CiAgICAgSlNDOjpFeGVjU3RhdGUqIGV4ZWNTdGF0ZSA9IGluamVjdGVkU2NyaXB0LnNjcmlwdFN0
YXRlKCk7CiAgICAgaWYgKCFleGVjU3RhdGUpIHsKLSAgICAgICAgZXJyb3JTdHJpbmcgPSAiTWlz
c2luZyBleGVjdXRpb24gc3RhdGUgZm9yIGluamVjdGVkIHNjcmlwdC4iX3M7CisgICAgICAgIGVy
cm9yU3RyaW5nID0gIk1pc3NpbmcgZXhlY3V0aW9uIHN0YXRlIG9mIGluamVjdGVkIHNjcmlwdCBm
b3IgZ2l2ZW4gZXhlY3V0aW9uQ29udGV4dElkIl9zOwogICAgICAgICByZXR1cm47CiAgICAgfQog
CkBAIC0xMTgsNyArMTE4LDcgQEAgdm9pZCBJbnNwZWN0b3JBdWRpdEFnZW50OjpydW4oRXJyb3JT
dHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIHRlc3QsIGNvbnMKIHZvaWQgSW5zcGVj
dG9yQXVkaXRBZ2VudDo6dGVhcmRvd24oRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nKQogewogICAg
IGlmICghaGFzQWN0aXZlQXVkaXQoKSkgewotICAgICAgICBlcnJvclN0cmluZyA9ICJNdXN0IGNh
bGwgc2V0dXAgYmVmb3JlIGNhbGxpbmcgdGVhcmRvd24uIl9zOworICAgICAgICBlcnJvclN0cmlu
ZyA9ICJNdXN0IGNhbGwgc2V0dXAgYmVmb3JlIGNhbGxpbmcgdGVhcmRvd24iX3M7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvYWdlbnRzL0luc3BlY3RvckNvbnNvbGVBZ2VudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDb25zb2xlQWdlbnQuY3BwCmluZGV4IDVk
MjRjNjllNmJmNDVkNzJmYjBiZGE1M2I0YzQ1NzU5ODYxM2NiY2IuLjRiODdjNzg1ZjI1NWEyOTIz
Yzg1OTM2MmNmY2VmNWM2MDZhZDljMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNvbnNvbGVBZ2VudC5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ29uc29sZUFnZW50LmNw
cApAQCAtMTA2LDggKzEwNiw4IEBAIHZvaWQgSW5zcGVjdG9yQ29uc29sZUFnZW50OjpjbGVhck1l
c3NhZ2VzKEVycm9yU3RyaW5nJikKIAogdm9pZCBJbnNwZWN0b3JDb25zb2xlQWdlbnQ6OnJlc2V0
KCkKIHsKLSAgICBFcnJvclN0cmluZyB1bnVzZWQ7Ci0gICAgY2xlYXJNZXNzYWdlcyh1bnVzZWQp
OworICAgIEVycm9yU3RyaW5nIGlnbm9yZWQ7CisgICAgY2xlYXJNZXNzYWdlcyhpZ25vcmVkKTsK
IAogICAgIG1fdGltZXMuY2xlYXIoKTsKICAgICBtX2NvdW50cy5jbGVhcigpOwpAQCAtMTE5LDgg
KzExOSw4IEBAIHZvaWQgSW5zcGVjdG9yQ29uc29sZUFnZW50OjphZGRNZXNzYWdlVG9Db25zb2xl
KHN0ZDo6dW5pcXVlX3B0cjxDb25zb2xlTWVzc2FnZT4KICAgICAgICAgcmV0dXJuOwogCiAgICAg
aWYgKG1lc3NhZ2UtPnR5cGUoKSA9PSBNZXNzYWdlVHlwZTo6Q2xlYXIpIHsKLSAgICAgICAgRXJy
b3JTdHJpbmcgdW51c2VkOwotICAgICAgICBjbGVhck1lc3NhZ2VzKHVudXNlZCk7CisgICAgICAg
IEVycm9yU3RyaW5nIGlnbm9yZWQ7CisgICAgICAgIGNsZWFyTWVzc2FnZXMoaWdub3JlZCk7CiAg
ICAgfQogCiAgICAgYWRkQ29uc29sZU1lc3NhZ2UoV1RGTW92ZShtZXNzYWdlKSk7CkBAIC0yODYs
NyArMjg2LDcgQEAgdm9pZCBJbnNwZWN0b3JDb25zb2xlQWdlbnQ6OmdldExvZ2dpbmdDaGFubmVs
cyhFcnJvclN0cmluZyYsIFJlZlB0cjxKU09OOjpBcnJheU8KIAogdm9pZCBJbnNwZWN0b3JDb25z
b2xlQWdlbnQ6OnNldExvZ2dpbmdDaGFubmVsTGV2ZWwoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5n
LCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmKQogewotICAgIGVycm9yU3RyaW5nID0gIk5v
IHN1Y2ggY2hhbm5lbCB0byBlbmFibGUiX3M7CisgICAgZXJyb3JTdHJpbmcgPSAiTm90IHN1cHBv
cnRlZCJfczsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSW5zcGVjdG9yCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRl
YnVnZ2VyQWdlbnQuY3BwCmluZGV4IDU4OTEzYzYwNTk5NTIyMTU5OTQ1MjFiY2JjNWJjZDMzZTFm
OWQ3ZjkuLjhiODU2ODQ2NTc0ZTUyMDAyMWMzYzlhMjM2MWM2ZWE0Mjc0OThjZDkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRlYnVn
Z2VyQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRz
L0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwCkBAIC0xNDQsNyArMTQ0LDcgQEAgdm9pZCBJbnNw
ZWN0b3JEZWJ1Z2dlckFnZW50OjpzZXRBc3luY1N0YWNrVHJhY2VEZXB0aChFcnJvclN0cmluZyYg
ZXJyb3JTdHJpbmcsIGkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKGRlcHRoIDwgMCkgewot
ICAgICAgICBlcnJvclN0cmluZyA9ICJkZXB0aCBtdXN0IGJlIGEgcG9zaXRpdmUgbnVtYmVyLiJf
czsKKyAgICAgICAgZXJyb3JTdHJpbmcgPSAiVW5leHBlY3RlZCBuZWdhdGl2ZSBkZXB0aCJfczsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMzc3LDE5ICszNzcsMTkgQEAgYm9vbCBJbnNw
ZWN0b3JEZWJ1Z2dlckFnZW50OjpicmVha3BvaW50QWN0aW9uc0Zyb21Qcm90b2NvbChFcnJvclN0
cmluZyYgZXJyb3JTdHIKICAgICAgICAgUmVmUHRyPEpTT046OlZhbHVlPiB2YWx1ZSA9IGFjdGlv
bnMtPmdldChpKTsKICAgICAgICAgUmVmUHRyPEpTT046Ok9iamVjdD4gb2JqZWN0OwogICAgICAg
ICBpZiAoIXZhbHVlLT5hc09iamVjdChvYmplY3QpKSB7Ci0gICAgICAgICAgICBlcnJvclN0cmlu
ZyA9ICJCcmVha3BvaW50QWN0aW9uIG9mIGluY29ycmVjdCB0eXBlLCBleHBlY3RlZCBvYmplY3Qi
X3M7CisgICAgICAgICAgICBlcnJvclN0cmluZyA9ICJVbmV4cGVjdGVkIG5vbi1vYmplY3QgaXRl
bSBpbiBnaXZlbiBhY3Rpb25zIl9zOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAg
ICB9CiAKICAgICAgICAgU3RyaW5nIHR5cGVTdHJpbmc7CiAgICAgICAgIGlmICghb2JqZWN0LT5n
ZXRTdHJpbmcoInR5cGUiX3MsIHR5cGVTdHJpbmcpKSB7Ci0gICAgICAgICAgICBlcnJvclN0cmlu
ZyA9ICJCcmVha3BvaW50QWN0aW9uIGhhZCB0eXBlIG1pc3NpbmciX3M7CisgICAgICAgICAgICBl
cnJvclN0cmluZyA9ICJNaXNzaW5nIHR5cGUgZm9yIGl0ZW0gaW4gZ2l2ZW4gYWN0aW9ucyJfczsK
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogCiAgICAgICAgIFNjcmlwdEJy
ZWFrcG9pbnRBY3Rpb25UeXBlIHR5cGU7CiAgICAgICAgIGlmICghYnJlYWtwb2ludEFjdGlvblR5
cGVGb3JTdHJpbmcodHlwZVN0cmluZywgJnR5cGUpKSB7Ci0gICAgICAgICAgICBlcnJvclN0cmlu
ZyA9ICJCcmVha3BvaW50QWN0aW9uIGhhZCB1bmtub3duIHR5cGUiX3M7CisgICAgICAgICAgICBl
cnJvclN0cmluZyA9ICJOb24tc3RyaW5nIHR5cGUgZm9yIGl0ZW0gaW4gZ2l2ZW4gYWN0aW9ucyJf
czsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogCkBAIC00MjIsMTAgKzQy
MiwxNiBAQCBzdGF0aWMgUmVmUHRyPFByb3RvY29sOjpEZWJ1Z2dlcjo6TG9jYXRpb24+IGJ1aWxk
RGVidWdnZXJMb2NhdGlvbihjb25zdCBKU0M6OkJyZQogCiBzdGF0aWMgYm9vbCBwYXJzZUxvY2F0
aW9uKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgSlNPTjo6T2JqZWN0JiBsb2NhdGlv
biwgSlNDOjpTb3VyY2VJRCYgc291cmNlSUQsIHVuc2lnbmVkJiBsaW5lTnVtYmVyLCB1bnNpZ25l
ZCYgY29sdW1uTnVtYmVyKQogewotICAgIFN0cmluZyBzY3JpcHRJRFN0cjsKLSAgICBpZiAoIWxv
Y2F0aW9uLmdldFN0cmluZygic2NyaXB0SWQiX3MsIHNjcmlwdElEU3RyKSB8fCAhbG9jYXRpb24u
Z2V0SW50ZWdlcigibGluZU51bWJlciJfcywgbGluZU51bWJlcikpIHsKKyAgICBpZiAoIWxvY2F0
aW9uLmdldEludGVnZXIoImxpbmVOdW1iZXIiX3MsIGxpbmVOdW1iZXIpKSB7CisgICAgICAgIGVy
cm9yU3RyaW5nID0gIlVuZXhwZWN0ZWQgbm9uLWludGVnZXIgbGluZU51bWJlciBpbiBnaXZlbiBs
b2NhdGlvbiJfczsKICAgICAgICAgc291cmNlSUQgPSBKU0M6Om5vU291cmNlSUQ7Ci0gICAgICAg
IGVycm9yU3RyaW5nID0gInNjcmlwdElkIGFuZCBsaW5lTnVtYmVyIGFyZSByZXF1aXJlZC4iX3M7
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBTdHJpbmcgc2NyaXB0SURTdHI7
CisgICAgaWYgKCFsb2NhdGlvbi5nZXRTdHJpbmcoInNjcmlwdElkIl9zLCBzY3JpcHRJRFN0cikp
IHsKKyAgICAgICAgc291cmNlSUQgPSBKU0M6Om5vU291cmNlSUQ7CisgICAgICAgIGVycm9yU3Ry
aW5nID0gIlVuZXhlcGN0ZWQgbm9uLXN0cmluZyBzY3JpcHRJZCBpbiBnaXZlbiBsb2NhdGlvbiJf
czsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApAQCAtNDM5LDcgKzQ0NSw3IEBAIHZv
aWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6c2V0QnJlYWtwb2ludEJ5VXJsKEVycm9yU3RyaW5n
JiBlcnJvclN0cmluZywgaW50IGxpCiB7CiAgICAgbG9jYXRpb25zID0gSlNPTjo6QXJyYXlPZjxQ
cm90b2NvbDo6RGVidWdnZXI6OkxvY2F0aW9uPjo6Y3JlYXRlKCk7CiAgICAgaWYgKCFvcHRpb25h
bFVSTCA9PSAhb3B0aW9uYWxVUkxSZWdleCkgewotICAgICAgICBlcnJvclN0cmluZyA9ICJFaXRo
ZXIgdXJsIG9yIHVybFJlZ2V4IG11c3QgYmUgc3BlY2lmaWVkLiJfczsKKyAgICAgICAgZXJyb3JT
dHJpbmcgPSAiRWl0aGVyIHVybCBvciB1cmxSZWdleCBtdXN0IGJlIHNwZWNpZmllZCJfczsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNDQ5LDcgKzQ1NSw3IEBAIHZvaWQgSW5zcGVjdG9y
RGVidWdnZXJBZ2VudDo6c2V0QnJlYWtwb2ludEJ5VXJsKEVycm9yU3RyaW5nJiBlcnJvclN0cmlu
ZywgaW50IGxpCiAKICAgICBTdHJpbmcgYnJlYWtwb2ludElkZW50aWZpZXIgPSBtYWtlU3RyaW5n
KGlzUmVnZXggPyAiLyIgOiAiIiwgdXJsLCBpc1JlZ2V4ID8gIi86IiA6ICI6IiwgbGluZU51bWJl
ciwgJzonLCBjb2x1bW5OdW1iZXIpOwogICAgIGlmIChtX2phdmFTY3JpcHRCcmVha3BvaW50cy5j
b250YWlucyhicmVha3BvaW50SWRlbnRpZmllcikpIHsKLSAgICAgICAgZXJyb3JTdHJpbmcgPSAi
QnJlYWtwb2ludCBhdCBzcGVjaWZpZWQgbG9jYXRpb24gYWxyZWFkeSBleGlzdHMuIl9zOworICAg
ICAgICBlcnJvclN0cmluZyA9ICJCcmVha3BvaW50IGZvciBnaXZlbiBsb2NhdGlvbiBhbHJlYWR5
IGV4aXN0cy4iX3M7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTUyMSw3ICs1MjcsNyBA
QCB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnNldEJyZWFrcG9pbnQoRXJyb3JTdHJpbmcm
IGVycm9yU3RyaW5nLCBjb25zdCBKU09OOgogCiAgICAgYXV0byBzY3JpcHRJdGVyYXRvciA9IG1f
c2NyaXB0cy5maW5kKHNvdXJjZUlEKTsKICAgICBpZiAoc2NyaXB0SXRlcmF0b3IgPT0gbV9zY3Jp
cHRzLmVuZCgpKSB7Ci0gICAgICAgIGVycm9yU3RyaW5nID0gbWFrZVN0cmluZygiTm8gc2NyaXB0
IGZvciBpZDogIl9zLCBzb3VyY2VJRCk7CisgICAgICAgIGVycm9yU3RyaW5nID0gIk1pc3Npbmcg
c2NyaXB0IGZvciBzY3JpcHRJZCBpbiBnaXZlbiBsb2NhdGlvbiJfczsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIApAQCAtNTM2LDcgKzU0Miw3IEBAIHZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2Vu
dDo6c2V0QnJlYWtwb2ludChFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IEpTT046CiAg
ICAgYm9vbCBleGlzdGluZzsKICAgICBzZXRCcmVha3BvaW50KGJyZWFrcG9pbnQsIGV4aXN0aW5n
KTsKICAgICBpZiAoZXhpc3RpbmcpIHsKLSAgICAgICAgZXJyb3JTdHJpbmcgPSAiQnJlYWtwb2lu
dCBhdCBzcGVjaWZpZWQgbG9jYXRpb24gYWxyZWFkeSBleGlzdHMiX3M7CisgICAgICAgIGVycm9y
U3RyaW5nID0gIkJyZWFrcG9pbnQgZm9yIGdpdmVuIGxvY2F0aW9uIGFscmVhZHkgZXhpc3RzIl9z
OwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC02MjQsNyArNjMwLDcgQEAgdm9pZCBJbnNw
ZWN0b3JEZWJ1Z2dlckFnZW50Ojpjb250aW51ZVRvTG9jYXRpb24oRXJyb3JTdHJpbmcmIGVycm9y
U3RyaW5nLCBjb25zdAogICAgIGlmIChzY3JpcHRJdGVyYXRvciA9PSBtX3NjcmlwdHMuZW5kKCkp
IHsKICAgICAgICAgbV9zY3JpcHREZWJ1Z1NlcnZlci5jb250aW51ZVByb2dyYW0oKTsKICAgICAg
ICAgbV9mcm9udGVuZERpc3BhdGNoZXItPnJlc3VtZWQoKTsKLSAgICAgICAgZXJyb3JTdHJpbmcg
PSBtYWtlU3RyaW5nKCJObyBzY3JpcHQgZm9yIGlkOiAiX3MsIHNvdXJjZUlEKTsKKyAgICAgICAg
ZXJyb3JTdHJpbmcgPSAiTWlzc2luZyBzY3JpcHQgZm9yIHNjcmlwdElkIGluIGdpdmVuIGxvY2F0
aW9uIl9zOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC02NjAsMTIgKzY2NiwxMiBAQCB2
b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmNvbnRpbnVlVG9Mb2NhdGlvbihFcnJvclN0cmlu
ZyYgZXJyb3JTdHJpbmcsIGNvbnN0CiAgICAgbV9zY3JpcHREZWJ1Z1NlcnZlci5jb250aW51ZVBy
b2dyYW0oKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpzZWFyY2hJbkNvbnRl
bnQoRXJyb3JTdHJpbmcmIGVycm9yLCBjb25zdCBTdHJpbmcmIHNjcmlwdElEU3RyLCBjb25zdCBT
dHJpbmcmIHF1ZXJ5LCBjb25zdCBib29sKiBvcHRpb25hbENhc2VTZW5zaXRpdmUsIGNvbnN0IGJv
b2wqIG9wdGlvbmFsSXNSZWdleCwgUmVmUHRyPEpTT046OkFycmF5T2Y8UHJvdG9jb2w6OkdlbmVy
aWNUeXBlczo6U2VhcmNoTWF0Y2g+PiYgcmVzdWx0cykKK3ZvaWQgSW5zcGVjdG9yRGVidWdnZXJB
Z2VudDo6c2VhcmNoSW5Db250ZW50KEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3Ry
aW5nJiBzY3JpcHRJRFN0ciwgY29uc3QgU3RyaW5nJiBxdWVyeSwgY29uc3QgYm9vbCogb3B0aW9u
YWxDYXNlU2Vuc2l0aXZlLCBjb25zdCBib29sKiBvcHRpb25hbElzUmVnZXgsIFJlZlB0cjxKU09O
OjpBcnJheU9mPFByb3RvY29sOjpHZW5lcmljVHlwZXM6OlNlYXJjaE1hdGNoPj4mIHJlc3VsdHMp
CiB7CiAgICAgSlNDOjpTb3VyY2VJRCBzb3VyY2VJRCA9IHNjcmlwdElEU3RyLnRvSW50UHRyKCk7
CiAgICAgYXV0byBpdCA9IG1fc2NyaXB0cy5maW5kKHNvdXJjZUlEKTsKICAgICBpZiAoaXQgPT0g
bV9zY3JpcHRzLmVuZCgpKSB7Ci0gICAgICAgIGVycm9yID0gbWFrZVN0cmluZygiTm8gc2NyaXB0
IGZvciBpZDogIl9zLCBzY3JpcHRJRFN0cik7CisgICAgICAgIGVycm9yU3RyaW5nID0gIk1pc3Np
bmcgc2NyaXB0IGZvciBnaXZlbiBzY3JpcHRJZCI7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
QEAgLTY3NCwyMSArNjgwLDIxIEBAIHZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6c2VhcmNo
SW5Db250ZW50KEVycm9yU3RyaW5nJiBlcnJvciwgY29uc3QgU3RyaW5nJiBzCiAgICAgcmVzdWx0
cyA9IENvbnRlbnRTZWFyY2hVdGlsaXRpZXM6OnNlYXJjaEluVGV4dEJ5TGluZXMoaXQtPnZhbHVl
LnNvdXJjZSwgcXVlcnksIGNhc2VTZW5zaXRpdmUsIGlzUmVnZXgpOwogfQogCi12b2lkIEluc3Bl
Y3RvckRlYnVnZ2VyQWdlbnQ6OmdldFNjcmlwdFNvdXJjZShFcnJvclN0cmluZyYgZXJyb3IsIGNv
bnN0IFN0cmluZyYgc2NyaXB0SURTdHIsIFN0cmluZyogc2NyaXB0U291cmNlKQordm9pZCBJbnNw
ZWN0b3JEZWJ1Z2dlckFnZW50OjpnZXRTY3JpcHRTb3VyY2UoRXJyb3JTdHJpbmcmIGVycm9yU3Ry
aW5nLCBjb25zdCBTdHJpbmcmIHNjcmlwdElEU3RyLCBTdHJpbmcqIHNjcmlwdFNvdXJjZSkKIHsK
ICAgICBKU0M6OlNvdXJjZUlEIHNvdXJjZUlEID0gc2NyaXB0SURTdHIudG9JbnRQdHIoKTsKICAg
ICBhdXRvIGl0ID0gbV9zY3JpcHRzLmZpbmQoc291cmNlSUQpOwogICAgIGlmIChpdCAhPSBtX3Nj
cmlwdHMuZW5kKCkpCiAgICAgICAgICpzY3JpcHRTb3VyY2UgPSBpdC0+dmFsdWUuc291cmNlOwog
ICAgIGVsc2UKLSAgICAgICAgZXJyb3IgPSBtYWtlU3RyaW5nKCJObyBzY3JpcHQgZm9yIGlkOiAi
X3MsIHNjcmlwdElEU3RyKTsKKyAgICAgICAgZXJyb3JTdHJpbmcgPSAiTWlzc2luZyBzY3JpcHQg
Zm9yIGdpdmVuIHNjcmlwdElkIjsKIH0KIAogdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50Ojpn
ZXRGdW5jdGlvbkRldGFpbHMoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcm
IGZ1bmN0aW9uSWQsIFJlZlB0cjxQcm90b2NvbDo6RGVidWdnZXI6OkZ1bmN0aW9uRGV0YWlscz4m
IGRldGFpbHMpCiB7CiAgICAgSW5qZWN0ZWRTY3JpcHQgaW5qZWN0ZWRTY3JpcHQgPSBtX2luamVj
dGVkU2NyaXB0TWFuYWdlci5pbmplY3RlZFNjcmlwdEZvck9iamVjdElkKGZ1bmN0aW9uSWQpOwog
ICAgIGlmIChpbmplY3RlZFNjcmlwdC5oYXNOb1ZhbHVlKCkpIHsKLSAgICAgICAgZXJyb3JTdHJp
bmcgPSAiRnVuY3Rpb24gb2JqZWN0IGlkIGlzIG9ic29sZXRlIl9zOworICAgICAgICBlcnJvclN0
cmluZyA9ICJNaXNzaW5nIGluamVjdGVkIHNjcmlwdCBmb3IgZ2l2ZW4gZnVuY3Rpb25JZCJfczsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNzI5LDcgKzczNSw3IEBAIHZvaWQgSW5zcGVj
dG9yRGVidWdnZXJBZ2VudDo6cGF1c2UoRXJyb3JTdHJpbmcmKQogdm9pZCBJbnNwZWN0b3JEZWJ1
Z2dlckFnZW50OjpyZXN1bWUoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nKQogewogICAgIGlmICgh
bV9wYXVzZWRTY3JpcHRTdGF0ZSAmJiAhbV9qYXZhU2NyaXB0UGF1c2VTY2hlZHVsZWQpIHsKLSAg
ICAgICAgZXJyb3JTdHJpbmcgPSAiV2FzIG5vdCBwYXVzZWQgb3Igd2FpdGluZyB0byBwYXVzZSJf
czsKKyAgICAgICAgZXJyb3JTdHJpbmcgPSAiTXVzdCBiZSBwYXVzZWQgb3Igd2FpdGluZyB0byBw
YXVzZSJfczsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtODEzLDcgKzgxOSw3IEBAIHZv
aWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6c2V0UGF1c2VPbkV4Y2VwdGlvbnMoRXJyb3JTdHJp
bmcmIGVycm9yU3RyaW5nLCBjb25zCiAgICAgZWxzZSBpZiAoc3RyaW5nUGF1c2VTdGF0ZSA9PSAi
dW5jYXVnaHQiKQogICAgICAgICBwYXVzZVN0YXRlID0gSlNDOjpEZWJ1Z2dlcjo6UGF1c2VPblVu
Y2F1Z2h0RXhjZXB0aW9uczsKICAgICBlbHNlIHsKLSAgICAgICAgZXJyb3JTdHJpbmcgPSBtYWtl
U3RyaW5nKCJVbmtub3duIHBhdXNlIG9uIGV4Y2VwdGlvbnMgbW9kZTogIl9zLCBzdHJpbmdQYXVz
ZVN0YXRlKTsKKyAgICAgICAgZXJyb3JTdHJpbmcgPSBtYWtlU3RyaW5nKCJVbmtub3duIHN0YXRl
OiAiX3MsIHN0cmluZ1BhdXNlU3RhdGUpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC04
MzQsMTQgKzg0MCwxMiBAQCB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnNldFBhdXNlT25N
aWNyb3Rhc2tzKEVycm9yU3RyaW5nJiwgYm9vbCBlbmFibGVkKQogCiB2b2lkIEluc3BlY3RvckRl
YnVnZ2VyQWdlbnQ6OmV2YWx1YXRlT25DYWxsRnJhbWUoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5n
LCBjb25zdCBTdHJpbmcmIGNhbGxGcmFtZUlkLCBjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24sIGNv
bnN0IFN0cmluZyogb2JqZWN0R3JvdXAsIGNvbnN0IGJvb2wqIGluY2x1ZGVDb21tYW5kTGluZUFQ
SSwgY29uc3QgYm9vbCogZG9Ob3RQYXVzZU9uRXhjZXB0aW9uc0FuZE11dGVDb25zb2xlLCBjb25z
dCBib29sKiByZXR1cm5CeVZhbHVlLCBjb25zdCBib29sKiBnZW5lcmF0ZVByZXZpZXcsIGNvbnN0
IGJvb2wqIHNhdmVSZXN1bHQsIGNvbnN0IGJvb2wqIC8qIGVtdWxhdGVVc2VyR2VzdHVyZSAqLywg
UmVmUHRyPFByb3RvY29sOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+JiByZXN1bHQsIE9wdGlvbmFs
PGJvb2w+JiB3YXNUaHJvd24sIE9wdGlvbmFsPGludD4mIHNhdmVkUmVzdWx0SW5kZXgpCiB7Ci0g
ICAgaWYgKCFtX2N1cnJlbnRDYWxsU3RhY2spIHsKLSAgICAgICAgZXJyb3JTdHJpbmcgPSAiTm90
IHBhdXNlZCJfczsKKyAgICBpZiAoIWFzc2VydFBhdXNlZChlcnJvclN0cmluZykpCiAgICAgICAg
IHJldHVybjsKLSAgICB9CiAKICAgICBJbmplY3RlZFNjcmlwdCBpbmplY3RlZFNjcmlwdCA9IG1f
aW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmluamVjdGVkU2NyaXB0Rm9yT2JqZWN0SWQoY2FsbEZyYW1l
SWQpOwogICAgIGlmIChpbmplY3RlZFNjcmlwdC5oYXNOb1ZhbHVlKCkpIHsKLSAgICAgICAgZXJy
b3JTdHJpbmcgPSAiQ291bGQgbm90IGZpbmQgSW5qZWN0ZWRTY3JpcHQgZm9yIGNhbGxGcmFtZUlk
Il9zOworICAgICAgICBlcnJvclN0cmluZyA9ICJNaXNzaW5nIGluamVjdGVkIHNjcmlwdCBmb3Ig
Z2l2ZW4gY2FsbEZyYW1lSWQiX3M7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTExMDIs
OSArMTEwNiw5IEBAIHZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6YnJlYWtQcm9ncmFtKERl
YnVnZ2VyRnJvbnRlbmREaXNwYXRjaGVyOjpSZWFzb24gYnJlCiAKIHZvaWQgSW5zcGVjdG9yRGVi
dWdnZXJBZ2VudDo6Y2xlYXJJbnNwZWN0b3JCcmVha3BvaW50U3RhdGUoKQogewotICAgIEVycm9y
U3RyaW5nIGR1bW15RXJyb3I7CisgICAgRXJyb3JTdHJpbmcgaWdub3JlZDsKICAgICBmb3IgKGNv
bnN0IFN0cmluZyYgaWRlbnRpZmllciA6IGNvcHlUb1ZlY3RvcihtX2JyZWFrcG9pbnRJZGVudGlm
aWVyVG9EZWJ1Z1NlcnZlckJyZWFrcG9pbnRJRHMua2V5cygpKSkKLSAgICAgICAgcmVtb3ZlQnJl
YWtwb2ludChkdW1teUVycm9yLCBpZGVudGlmaWVyKTsKKyAgICAgICAgcmVtb3ZlQnJlYWtwb2lu
dChpZ25vcmVkLCBpZGVudGlmaWVyKTsKIAogICAgIG1famF2YVNjcmlwdEJyZWFrcG9pbnRzLmNs
ZWFyKCk7CiAKQEAgLTExNTAsNyArMTE1NCw3IEBAIHZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2Vu
dDo6ZGlkQ2xlYXJHbG9iYWxPYmplY3QoKQogYm9vbCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50Ojph
c3NlcnRQYXVzZWQoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nKQogewogICAgIGlmICghbV9wYXVz
ZWRTY3JpcHRTdGF0ZSkgewotICAgICAgICBlcnJvclN0cmluZyA9ICJDYW4gb25seSBwZXJmb3Jt
IG9wZXJhdGlvbiB3aGlsZSBwYXVzZWQuIl9zOworICAgICAgICBlcnJvclN0cmluZyA9ICJNdXN0
IGJlIHBhdXNlZCJfczsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9ySGVhcEFn
ZW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
ckhlYXBBZ2VudC5jcHAKaW5kZXggYzE0NzM2ODlmYzBmMWI3ZGNiMmY1Y2Y1YTU2YzRiN2U5ZGMz
ZDJjNy4uN2FjNzIzNjRiMWVmNjE2NjIyZTZkNDg0NWUxNzJiZjRkODk4ZjRlNiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9ySGVhcEFn
ZW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JIZWFwQWdlbnQuY3BwCkBAIC02Miw3ICs2Miw3IEBAIHZvaWQgSW5zcGVjdG9ySGVhcEFn
ZW50Ojp3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChEaXNjb25uZWN0UmVhc29uKQogdm9p
ZCBJbnNwZWN0b3JIZWFwQWdlbnQ6OmVuYWJsZShFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcpCiB7
CiAgICAgaWYgKG1fZW5hYmxlZCkgewotICAgICAgICBlcnJvclN0cmluZyA9ICJIZWFwQWdlbnQg
YWxyZWFkeSBlbmFibGVkIl9zOworICAgICAgICBlcnJvclN0cmluZyA9ICJIZWFwIGRvbWFpbiBh
bHJlYWR5IGVuYWJsZWQiX3M7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTc0LDcgKzc0
LDcgQEAgdm9pZCBJbnNwZWN0b3JIZWFwQWdlbnQ6OmVuYWJsZShFcnJvclN0cmluZyYgZXJyb3JT
dHJpbmcpCiB2b2lkIEluc3BlY3RvckhlYXBBZ2VudDo6ZGlzYWJsZShFcnJvclN0cmluZyYgZXJy
b3JTdHJpbmcpCiB7CiAgICAgaWYgKCFtX2VuYWJsZWQpIHsKLSAgICAgICAgZXJyb3JTdHJpbmcg
PSAiSGVhcEFnZW50IGFscmVhZHkgZGlzYWJsZWQiX3M7CisgICAgICAgIGVycm9yU3RyaW5nID0g
IkhlYXAgZG9tYWluIGFscmVhZHkgZGlzYWJsZWQiX3M7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKQEAgLTIzNSwxMyArMjM1LDEzIEBAIHZvaWQgSW5zcGVjdG9ySGVhcEFnZW50OjpnZXRSZW1v
dGVPYmplY3QoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBpbnQgaGVhcE9iamVjCiAgICAgSlND
ZWxsKiBjZWxsID0gb3B0aW9uYWxOb2RlLT5jZWxsOwogICAgIFN0cnVjdHVyZSogc3RydWN0dXJl
ID0gY2VsbC0+c3RydWN0dXJlKHZtKTsKICAgICBpZiAoIXN0cnVjdHVyZSkgewotICAgICAgICBl
cnJvclN0cmluZyA9ICJVbmFibGUgdG8gZ2V0IG9iamVjdCBkZXRhaWxzIl9zOworICAgICAgICBl
cnJvclN0cmluZyA9ICJVbmFibGUgdG8gZ2V0IG9iamVjdCBkZXRhaWxzIC0gU3RydWN0dXJlIl9z
OwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCA9IHN0cnVjdHVyZS0+Z2xvYmFsT2JqZWN0KCk7CiAgICAgaWYgKCFnbG9iYWxPYmplY3Qp
IHsKLSAgICAgICAgZXJyb3JTdHJpbmcgPSAiVW5hYmxlIHRvIGdldCBvYmplY3QgZGV0YWlscyJf
czsKKyAgICAgICAgZXJyb3JTdHJpbmcgPSAiVW5hYmxlIHRvIGdldCBvYmplY3QgZGV0YWlscyAt
IEdsb2JhbE9iamVjdCJfczsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUnVudGltZUFn
ZW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
clJ1bnRpbWVBZ2VudC5jcHAKaW5kZXggNDU5ZDRhNGU5OWI0YTMyNDVmYzkwNDhhZDFiZTkwZWM0
MDIwZDY5Zi4uYzQ2NDU0MWYwZTk1OGI1YTMxMThmNDQ5MTYxOTJiMjc0MWRkYmYzYyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUnVu
dGltZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JSdW50aW1lQWdlbnQuY3BwCkBAIC0xMzUsNyArMTM1LDcgQEAgdm9pZCBJbnNw
ZWN0b3JSdW50aW1lQWdlbnQ6OmF3YWl0UHJvbWlzZShjb25zdCBTdHJpbmcmIHByb21pc2VPYmpl
Y3RJZCwgY29uc3QgYm8KIHsKICAgICBJbmplY3RlZFNjcmlwdCBpbmplY3RlZFNjcmlwdCA9IG1f
aW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmluamVjdGVkU2NyaXB0Rm9yT2JqZWN0SWQocHJvbWlzZU9i
amVjdElkKTsKICAgICBpZiAoaW5qZWN0ZWRTY3JpcHQuaGFzTm9WYWx1ZSgpKSB7Ci0gICAgICAg
IGNhbGxiYWNrLT5zZW5kRmFpbHVyZSgiQ291bGQgbm90IGZpbmQgSW5qZWN0ZWRTY3JpcHQgZm9y
IHByb21pc2VPYmplY3RJZCJfcyk7CisgICAgICAgIGNhbGxiYWNrLT5zZW5kRmFpbHVyZSgiTWlz
c2luZyBpbmplY3RlZCBzY3JpcHQgZm9yIGdpdmVuIHByb21pc2VPYmplY3RJZCJfcyk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKQEAgLTE1MSw3ICsxNTEsNyBAQCB2b2lkIEluc3BlY3RvclJ1
bnRpbWVBZ2VudDo6Y2FsbEZ1bmN0aW9uT24oRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25z
dCBTdHJpbgogewogICAgIEluamVjdGVkU2NyaXB0IGluamVjdGVkU2NyaXB0ID0gbV9pbmplY3Rl
ZFNjcmlwdE1hbmFnZXIuaW5qZWN0ZWRTY3JpcHRGb3JPYmplY3RJZChvYmplY3RJZCk7CiAgICAg
aWYgKGluamVjdGVkU2NyaXB0Lmhhc05vVmFsdWUoKSkgewotICAgICAgICBlcnJvclN0cmluZyA9
ICJDb3VsZCBub3QgZmluZCBJbmplY3RlZFNjcmlwdCBmb3Igb2JqZWN0SWQiX3M7CisgICAgICAg
IGVycm9yU3RyaW5nID0gIk1pc3NpbmcgaW5qZWN0ZWQgc2NyaXB0IGZvciBnaXZlbiBvYmplY3RJ
ZCJfczsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTc3LDcgKzE3Nyw3IEBAIHZvaWQg
SW5zcGVjdG9yUnVudGltZUFnZW50OjpnZXRQcmV2aWV3KEVycm9yU3RyaW5nJiBlcnJvclN0cmlu
ZywgY29uc3QgU3RyaW5nJiBvCiB7CiAgICAgSW5qZWN0ZWRTY3JpcHQgaW5qZWN0ZWRTY3JpcHQg
PSBtX2luamVjdGVkU2NyaXB0TWFuYWdlci5pbmplY3RlZFNjcmlwdEZvck9iamVjdElkKG9iamVj
dElkKTsKICAgICBpZiAoaW5qZWN0ZWRTY3JpcHQuaGFzTm9WYWx1ZSgpKSB7Ci0gICAgICAgIGVy
cm9yU3RyaW5nID0gIkNvdWxkIG5vdCBmaW5kIEluamVjdGVkU2NyaXB0IGZvciBvYmplY3RJZCJf
czsKKyAgICAgICAgZXJyb3JTdHJpbmcgPSAiTWlzc2luZyBpbmplY3RlZCBzY3JpcHQgZm9yIGdp
dmVuIG9iamVjdElkIl9zOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0xOTQsNyArMTk0
LDcgQEAgdm9pZCBJbnNwZWN0b3JSdW50aW1lQWdlbnQ6OmdldFByb3BlcnRpZXMoRXJyb3JTdHJp
bmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcKIHsKICAgICBJbmplY3RlZFNjcmlwdCBpbmpl
Y3RlZFNjcmlwdCA9IG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmluamVjdGVkU2NyaXB0Rm9yT2Jq
ZWN0SWQob2JqZWN0SWQpOwogICAgIGlmIChpbmplY3RlZFNjcmlwdC5oYXNOb1ZhbHVlKCkpIHsK
LSAgICAgICAgZXJyb3JTdHJpbmcgPSAiQ291bGQgbm90IGZpbmQgSW5qZWN0ZWRTY3JpcHQgZm9y
IG9iamVjdElkIl9zOworICAgICAgICBlcnJvclN0cmluZyA9ICJNaXNzaW5nIGluamVjdGVkIHNj
cmlwdCBmb3IgZ2l2ZW4gb2JqZWN0SWQiX3M7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAg
LTIxMiw3ICsyMTIsNyBAQCB2b2lkIEluc3BlY3RvclJ1bnRpbWVBZ2VudDo6Z2V0RGlzcGxheWFi
bGVQcm9wZXJ0aWVzKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgYwogewogICAgIEluamVjdGVk
U2NyaXB0IGluamVjdGVkU2NyaXB0ID0gbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIuaW5qZWN0ZWRT
Y3JpcHRGb3JPYmplY3RJZChvYmplY3RJZCk7CiAgICAgaWYgKGluamVjdGVkU2NyaXB0Lmhhc05v
VmFsdWUoKSkgewotICAgICAgICBlcnJvclN0cmluZyA9ICJDb3VsZCBub3QgZmluZCBJbmplY3Rl
ZFNjcmlwdCBmb3Igb2JqZWN0SWQiX3M7CisgICAgICAgIGVycm9yU3RyaW5nID0gIk1pc3Npbmcg
aW5qZWN0ZWQgc2NyaXB0IGZvciBnaXZlbiBvYmplY3RJZCJfczsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIApAQCAtMjMwLDcgKzIzMCw3IEBAIHZvaWQgSW5zcGVjdG9yUnVudGltZUFnZW50Ojpn
ZXRDb2xsZWN0aW9uRW50cmllcyhFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0CiB7CiAg
ICAgSW5qZWN0ZWRTY3JpcHQgaW5qZWN0ZWRTY3JpcHQgPSBtX2luamVjdGVkU2NyaXB0TWFuYWdl
ci5pbmplY3RlZFNjcmlwdEZvck9iamVjdElkKG9iamVjdElkKTsKICAgICBpZiAoaW5qZWN0ZWRT
Y3JpcHQuaGFzTm9WYWx1ZSgpKSB7Ci0gICAgICAgIGVycm9yU3RyaW5nID0gIkNvdWxkIG5vdCBm
aW5kIEluamVjdGVkU2NyaXB0IGZvciBvYmplY3RJZCJfczsKKyAgICAgICAgZXJyb3JTdHJpbmcg
PSAiTWlzc2luZyBpbmplY3RlZCBzY3JpcHQgZm9yIGdpdmVuIG9iamVjdElkIl9zOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogCkBAIC0yNDgsNyArMjQ4LDcgQEAgdm9pZCBJbnNwZWN0b3JSdW50
aW1lQWdlbnQ6OnNhdmVSZXN1bHQoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBKU09O
OjpPYmoKICAgICBpZiAoY2FsbEFyZ3VtZW50LmdldFN0cmluZygib2JqZWN0SWQiX3MsIG9iamVj
dElkKSkgewogICAgICAgICBpbmplY3RlZFNjcmlwdCA9IG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2Vy
LmluamVjdGVkU2NyaXB0Rm9yT2JqZWN0SWQob2JqZWN0SWQpOwogICAgICAgICBpZiAoaW5qZWN0
ZWRTY3JpcHQuaGFzTm9WYWx1ZSgpKSB7Ci0gICAgICAgICAgICBlcnJvclN0cmluZyA9ICJDb3Vs
ZCBub3QgZmluZCBJbmplY3RlZFNjcmlwdCBmb3Igb2JqZWN0SWQiX3M7CisgICAgICAgICAgICBl
cnJvclN0cmluZyA9ICJNaXNzaW5nIGluamVjdGVkIHNjcmlwdCBmb3IgZ2l2ZW4gb2JqZWN0SWQi
X3M7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICB9IGVsc2UgewpAQCAtMjg2
LDcgKzI4Niw3IEBAIHZvaWQgSW5zcGVjdG9yUnVudGltZUFnZW50OjpnZXRSdW50aW1lVHlwZXNG
b3JWYXJpYWJsZXNBdE9mZnNldHMoRXJyb3JTdHJpbmcmIGVyCiAKICAgICB0eXBlRGVzY3JpcHRp
b25zID0gSlNPTjo6QXJyYXlPZjxQcm90b2NvbDo6UnVudGltZTo6VHlwZURlc2NyaXB0aW9uPjo6
Y3JlYXRlKCk7CiAgICAgaWYgKCFtX3ZtLnR5cGVQcm9maWxlcigpKSB7Ci0gICAgICAgIGVycm9y
U3RyaW5nID0gIlRoZSBWTSBkb2VzIG5vdCBjdXJyZW50bHkgaGF2ZSBUeXBlIEluZm9ybWF0aW9u
LiJfczsKKyAgICAgICAgZXJyb3JTdHJpbmcgPSAiVk0gaGFzIG5vIHR5cGUgaW5mb3JtYXRpb24i
X3M7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTI5Nyw3ICsyOTcsNyBAQCB2b2lkIElu
c3BlY3RvclJ1bnRpbWVBZ2VudDo6Z2V0UnVudGltZVR5cGVzRm9yVmFyaWFibGVzQXRPZmZzZXRz
KEVycm9yU3RyaW5nJiBlcgogICAgICAgICBSZWZQdHI8SlNPTjo6VmFsdWU+IHZhbHVlID0gbG9j
YXRpb25zLmdldChpKTsKICAgICAgICAgUmVmUHRyPEpTT046Ok9iamVjdD4gbG9jYXRpb247CiAg
ICAgICAgIGlmICghdmFsdWUtPmFzT2JqZWN0KGxvY2F0aW9uKSkgewotICAgICAgICAgICAgZXJy
b3JTdHJpbmcgPSAiQXJyYXkgb2YgVHlwZUxvY2F0aW9uIG9iamVjdHMgaGFzIGFuIG9iamVjdCB0
aGF0IGRvZXMgbm90IGhhdmUgdHlwZSBvZiBUeXBlTG9jYXRpb24uIl9zOworICAgICAgICAgICAg
ZXJyb3JTdHJpbmcgPSAiVW5leHBlY3RlZCBub24tb2JqZWN0IGl0ZW0gaW4gbG9jYXRpb25zIl9z
OwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKQEAgLTQwNSw3ICs0MDUsNyBAQCB2
b2lkIEluc3BlY3RvclJ1bnRpbWVBZ2VudDo6c2V0Q29udHJvbEZsb3dQcm9maWxlckVuYWJsZWRT
dGF0ZShib29sIGlzQ29udHJvbEZsbwogdm9pZCBJbnNwZWN0b3JSdW50aW1lQWdlbnQ6OmdldEJh
c2ljQmxvY2tzKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBzb3VyY2VJ
REFzU3RyaW5nLCBSZWZQdHI8SlNPTjo6QXJyYXlPZjxQcm90b2NvbDo6UnVudGltZTo6QmFzaWNC
bG9jaz4+JiBiYXNpY0Jsb2NrcykKIHsKICAgICBpZiAoIW1fdm0uY29udHJvbEZsb3dQcm9maWxl
cigpKSB7Ci0gICAgICAgIGVycm9yU3RyaW5nID0gIlRoZSBWTSBkb2VzIG5vdCBjdXJyZW50bHkg
aGF2ZSBhIENvbnRyb2wgRmxvdyBQcm9maWxlci4iX3M7CisgICAgICAgIGVycm9yU3RyaW5nID0g
IlZNIGhhcyBubyBjb250cm9sIGZsb3cgaW5mb3JtYXRpb24iX3M7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3RvclRhcmdldEFnZW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvYWdlbnRzL0luc3BlY3RvclRhcmdldEFnZW50LmNwcAppbmRleCA5MzUwNjhjN2FlMTE5
NzEwNTQ0YzFmNzY3OTgyMmRmYjY2ZTU2Yjg3Li4zNDQwZDA4OWJjNjQ5YzM2YWExMmNlODM1MTkz
M2RiNjAzZDZmNzQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JUYXJnZXRBZ2VudC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yVGFyZ2V0QWdlbnQuY3BwCkBAIC02MSw3ICs2
MSw3IEBAIHZvaWQgSW5zcGVjdG9yVGFyZ2V0QWdlbnQ6OnNlbmRNZXNzYWdlVG9UYXJnZXQoRXJy
b3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTCiB7CiAgICAgSW5zcGVjdG9yVGFyZ2V0KiB0
YXJnZXQgPSBtX3RhcmdldHMuZ2V0KHRhcmdldElkKTsKICAgICBpZiAoIXRhcmdldCkgewotICAg
ICAgICBlcnJvclN0cmluZyA9ICJUYXJnZXQgbm90IGZvdW5kLiJfczsKKyAgICAgICAgZXJyb3JT
dHJpbmcgPSAiTWlzc2luZyB0YXJnZXQgZm9yIGdpdmVuIHRhcmdldElkIl9zOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL2FnZW50cy9KU0dsb2JhbE9iamVjdEF1ZGl0QWdlbnQuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSlNHbG9iYWxPYmplY3RBdWRpdEFnZW50LmNwcAppbmRl
eCA4NmU3NjdiYTBkYWZmMTdmNTMyZDA3NWRhZjY1NWM3ZGNkNjEzZDU4Li43NDM1NGJhMzIwYWUx
YmZmZDAyOTljY2I2ZTM1NjgyNWI1ZDg5OTM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL2FnZW50cy9KU0dsb2JhbE9iamVjdEF1ZGl0QWdlbnQuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0pTR2xvYmFsT2JqZWN0QXVk
aXRBZ2VudC5jcHAKQEAgLTQ3LDE0ICs0NywxNCBAQCBKU0dsb2JhbE9iamVjdEF1ZGl0QWdlbnQ6
OkpTR2xvYmFsT2JqZWN0QXVkaXRBZ2VudChKU0FnZW50Q29udGV4dCYgY29udGV4dCkKIEluamVj
dGVkU2NyaXB0IEpTR2xvYmFsT2JqZWN0QXVkaXRBZ2VudDo6aW5qZWN0ZWRTY3JpcHRGb3JFdmFs
KEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgaW50KiBleGVjdXRpb25Db250ZXh0SWQp
CiB7CiAgICAgaWYgKGV4ZWN1dGlvbkNvbnRleHRJZCkgewotICAgICAgICBlcnJvclN0cmluZyA9
ICJFeGVjdXRpb24gY29udGV4dCBpZCBpcyBub3Qgc3VwcG9ydGVkIGZvciBKU0NvbnRleHRzIGFz
IHRoZXJlIGlzIG9ubHkgb25lIGV4ZWN1dGlvbiBjb250ZXh0LiJfczsKKyAgICAgICAgZXJyb3JT
dHJpbmcgPSAiZXhlY3V0aW9uQ29udGV4dElkIGlzIG5vdCBzdXBwb3J0ZWQgZm9yIEpTQ29udGV4
dHMgYXMgdGhlcmUgaXMgb25seSBvbmUgZXhlY3V0aW9uIGNvbnRleHQiX3M7CiAgICAgICAgIHJl
dHVybiBJbmplY3RlZFNjcmlwdCgpOwogICAgIH0KIAogICAgIEpTQzo6RXhlY1N0YXRlKiBzY3Jp
cHRTdGF0ZSA9IG1fZ2xvYmFsT2JqZWN0Lmdsb2JhbEV4ZWMoKTsKICAgICBJbmplY3RlZFNjcmlw
dCBpbmplY3RlZFNjcmlwdCA9IGluamVjdGVkU2NyaXB0TWFuYWdlcigpLmluamVjdGVkU2NyaXB0
Rm9yKHNjcmlwdFN0YXRlKTsKICAgICBpZiAoaW5qZWN0ZWRTY3JpcHQuaGFzTm9WYWx1ZSgpKQot
ICAgICAgICBlcnJvclN0cmluZyA9ICJJbnRlcm5hbCBlcnJvcjogbWFpbiB3b3JsZCBleGVjdXRp
b24gY29udGV4dCBub3QgZm91bmQuIl9zOworICAgICAgICBlcnJvclN0cmluZyA9ICJJbnRlcm5h
bCBlcnJvcjogbWFpbiB3b3JsZCBleGVjdXRpb24gY29udGV4dCBub3QgZm91bmQiX3M7CiAKICAg
ICByZXR1cm4gaW5qZWN0ZWRTY3JpcHQ7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL2FnZW50cy9KU0dsb2JhbE9iamVjdERlYnVnZ2VyQWdlbnQuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSlNHbG9iYWxPYmplY3REZWJ1
Z2dlckFnZW50LmNwcAppbmRleCA5YjNmMzc5ZDVlNWE0OTBkYmUzNzVjNzJhYzk5ZmE3MjBiOWFj
Y2VmLi5hMmFmNTEwNWNiYWFjNjBmZDZjNDA4YTZlMGEzZDRlOTMyYzRjZjUxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9KU0dsb2JhbE9iamVjdERl
YnVnZ2VyQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdl
bnRzL0pTR2xvYmFsT2JqZWN0RGVidWdnZXJBZ2VudC5jcHAKQEAgLTQ1LDEwICs0NSwxMCBAQCBK
U0dsb2JhbE9iamVjdERlYnVnZ2VyQWdlbnQ6OkpTR2xvYmFsT2JqZWN0RGVidWdnZXJBZ2VudChK
U0FnZW50Q29udGV4dCYgY29udGV4dAogewogfQogCi1JbmplY3RlZFNjcmlwdCBKU0dsb2JhbE9i
amVjdERlYnVnZ2VyQWdlbnQ6OmluamVjdGVkU2NyaXB0Rm9yRXZhbChFcnJvclN0cmluZyYgZXJy
b3IsIGNvbnN0IGludCogZXhlY3V0aW9uQ29udGV4dElkKQorSW5qZWN0ZWRTY3JpcHQgSlNHbG9i
YWxPYmplY3REZWJ1Z2dlckFnZW50OjppbmplY3RlZFNjcmlwdEZvckV2YWwoRXJyb3JTdHJpbmcm
IGVycm9yU3RyaW5nLCBjb25zdCBpbnQqIGV4ZWN1dGlvbkNvbnRleHRJZCkKIHsKICAgICBpZiAo
ZXhlY3V0aW9uQ29udGV4dElkKSB7Ci0gICAgICAgIGVycm9yID0gIkV4ZWN1dGlvbiBjb250ZXh0
IGlkIGlzIG5vdCBzdXBwb3J0ZWQgZm9yIEpTQ29udGV4dCBpbnNwZWN0aW9uIGFzIHRoZXJlIGlz
IG9ubHkgb25lIGV4ZWN1dGlvbiBjb250ZXh0LiJfczsKKyAgICAgICAgZXJyb3JTdHJpbmcgPSAi
ZXhlY3V0aW9uQ29udGV4dElkIGlzIG5vdCBzdXBwb3J0ZWQgZm9yIEpTQ29udGV4dHMgYXMgdGhl
cmUgaXMgb25seSBvbmUgZXhlY3V0aW9uIGNvbnRleHQiX3M7CiAgICAgICAgIHJldHVybiBJbmpl
Y3RlZFNjcmlwdCgpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9hZ2VudHMvSlNHbG9iYWxPYmplY3RSdW50aW1lQWdlbnQuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSlNHbG9iYWxPYmplY3RSdW50aW1lQWdl
bnQuY3BwCmluZGV4IDNiN2MzZTIxZDMxYzFjMmY1YjZkMWJhMGMxNmY0ODg4M2U2Y2YzMTcuLjNk
OWQ0ODg5MDc2YmE4MzlmNmU5NzdkNTM0YjUyYzJhMjE1NzA3ZGUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0pTR2xvYmFsT2JqZWN0UnVudGltZUFn
ZW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9KU0ds
b2JhbE9iamVjdFJ1bnRpbWVBZ2VudC5jcHAKQEAgLTQ5LDcgKzQ5LDcgQEAgSW5qZWN0ZWRTY3Jp
cHQgSlNHbG9iYWxPYmplY3RSdW50aW1lQWdlbnQ6OmluamVjdGVkU2NyaXB0Rm9yRXZhbChFcnJv
clN0cmluZyYgZXIKICAgICBKU0M6OkV4ZWNTdGF0ZSogc2NyaXB0U3RhdGUgPSBtX2dsb2JhbE9i
amVjdC5nbG9iYWxFeGVjKCk7CiAgICAgSW5qZWN0ZWRTY3JpcHQgaW5qZWN0ZWRTY3JpcHQgPSBp
bmplY3RlZFNjcmlwdE1hbmFnZXIoKS5pbmplY3RlZFNjcmlwdEZvcihzY3JpcHRTdGF0ZSk7CiAg
ICAgaWYgKGluamVjdGVkU2NyaXB0Lmhhc05vVmFsdWUoKSkKLSAgICAgICAgZXJyb3JTdHJpbmcg
PSAiSW50ZXJuYWwgZXJyb3I6IG1haW4gd29ybGQgZXhlY3V0aW9uIGNvbnRleHQgbm90IGZvdW5k
LiJfczsKKyAgICAgICAgZXJyb3JTdHJpbmcgPSAiTWlzc2luZyBleGVjdXRpb24gY29udGV4dCBm
b3IgZ2l2ZW4gZXhlY3V0aW9uQ29udGV4dElkLiJfczsKIAogICAgIHJldHVybiBpbmplY3RlZFNj
cmlwdDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db21tYW5kTGlu
ZUFQSUhvc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJSG9z
dC5jcHAKaW5kZXggOTAyOWI5MmQ4YjgzZjJkN2JlZDZkOGU1NDU3NmMwYTE2OGNhNTI1Yi4uODc1
YWJmZjQ1MjRiY2YzYzM1YTNkYWJkNmEzODQxYmFhYWU5MzgwOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJSG9zdC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJSG9zdC5jcHAKQEAgLTEzNiw4ICsxMzYsOCBA
QCB2b2lkIENvbW1hbmRMaW5lQVBJSG9zdDo6Y2xlYXJDb25zb2xlTWVzc2FnZXMoKQogICAgIGlm
ICghY29uc29sZUFnZW50KQogICAgICAgICByZXR1cm47CiAKLSAgICBFcnJvclN0cmluZyB1bnVz
ZWQ7Ci0gICAgY29uc29sZUFnZW50LT5jbGVhck1lc3NhZ2VzKHVudXNlZCk7CisgICAgRXJyb3JT
dHJpbmcgaWdub3JlZDsKKyAgICBjb25zb2xlQWdlbnQtPmNsZWFyTWVzc2FnZXMoaWdub3JlZCk7
CiB9CiAKIHZvaWQgQ29tbWFuZExpbmVBUElIb3N0Ojpjb3B5VGV4dChjb25zdCBTdHJpbmcmIHRl
eHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
ckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5jcHAKaW5kZXggZmRmMDQ0YzU3OWIz
NjhjMzIwNTFiNjVkYzQ0MGUzODdmNjAxOGZiNy4uYmI4MjRjMTYwMjg5NTlkNWY2YmEwNjQ2NGZl
YzdlMWEwY2VkOWZiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmNwcApAQCAt
NTYsMTQgKzU2LDE0IEBAIHZvaWQgSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50OjpkaWRD
cmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoRnJvbnRlbmRSb3V0ZXIqCiAKIHZvaWQgSW5zcGVjdG9y
QXBwbGljYXRpb25DYWNoZUFnZW50Ojp3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChJbnNw
ZWN0b3I6OkRpc2Nvbm5lY3RSZWFzb24pCiB7Ci0gICAgRXJyb3JTdHJpbmcgdW51c2VkOwotICAg
IGRpc2FibGUodW51c2VkKTsKKyAgICBFcnJvclN0cmluZyBpZ25vcmVkOworICAgIGRpc2FibGUo
aWdub3JlZCk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50OjplbmFi
bGUoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nKQogewogICAgIGlmIChtX2luc3RydW1lbnRpbmdB
Z2VudHMuaW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50KCkgPT0gdGhpcykgewotICAgICAg
ICBlcnJvclN0cmluZyA9ICJBcHBsaWNhdGlvbkNhY2hlQWdlbnQgYWxyZWFkeSBlbmFibGVkIl9z
OworICAgICAgICBlcnJvclN0cmluZyA9ICJBcHBsaWNhdGlvbkNhY2hlIGRvbWFpbiBhbHJlYWR5
IGVuYWJsZWQiX3M7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTc2LDcgKzc2LDcgQEAg
dm9pZCBJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQ6OmVuYWJsZShFcnJvclN0cmluZyYg
ZXJyb3JTdHJpbmcpCiB2b2lkIEluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudDo6ZGlzYWJs
ZShFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcpCiB7CiAgICAgaWYgKG1faW5zdHJ1bWVudGluZ0Fn
ZW50cy5pbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQoKSAhPSB0aGlzKSB7Ci0gICAgICAg
IGVycm9yU3RyaW5nID0gIkFwcGxpY2F0aW9uQ2FjaGVBZ2VudCBhbHJlYWR5IGRpc2FibGVkIl9z
OworICAgICAgICBlcnJvclN0cmluZyA9ICJBcHBsaWNhdGlvbkNhY2hlIGRvbWFpbiBhbHJlYWR5
IGRpc2FibGVkIl9zOwogICAgICAgICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNTU0FnZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwCmluZGV4IDQ0
ZTljNWFiZWI0Yzk2NmFiYWVhOTQ0YTQwZDVlMDNkNDcyZDExZTguLjE4ZjIzNzZkNjE5MDBiM2Zj
NjVjYzlkN2Y3MDRjMWM3YWQxMjJmMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwCkBAIC00NzIsNyArNDcyLDcgQEAg
dm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6Z2V0TWF0Y2hlZFN0eWxlc0Zvck5vZGUoRXJyb3JTdHJp
bmcmIGVycm9yU3RyaW5nLCBpbnQgbm8KICAgICBpZiAoZWxlbWVudFBzZXVkb0lkICE9IFBzZXVk
b0lkOjpOb25lKSB7CiAgICAgICAgIGVsZW1lbnQgPSBkb3duY2FzdDxQc2V1ZG9FbGVtZW50Pigq
ZWxlbWVudCkuaG9zdEVsZW1lbnQoKTsKICAgICAgICAgaWYgKCFlbGVtZW50KSB7Ci0gICAgICAg
ICAgICBlcnJvclN0cmluZyA9ICJQc2V1ZG8gZWxlbWVudCBoYXMgbm8gcGFyZW50Il9zOworICAg
ICAgICAgICAgZXJyb3JTdHJpbmcgPSAiTWlzc2luZyBwYXJlbnQgb2YgcHNldWRvLWVsZW1lbnQg
bm9kZSBmb3IgZ2l2ZW4gbm9kZUlkIl9zOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9
CiAgICAgfQpAQCAtNjIyLDcgKzYyMiw3IEBAIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OnNldFN0
eWxlU2hlZXRUZXh0KEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nCiAKICAg
ICBhdXRvKiBkb21BZ2VudCA9IG1faW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JET01BZ2Vu
dCgpOwogICAgIGlmICghZG9tQWdlbnQpIHsKLSAgICAgICAgZXJyb3JTdHJpbmcgPSAiTWlzc2lu
ZyBET00gYWdlbnQiX3M7CisgICAgICAgIGVycm9yU3RyaW5nID0gIkRPTSBkb21haW4gbXVzdCBi
ZSBlbmFibGVkIl9zOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC02NDIsNyArNjQyLDcg
QEAgdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6c2V0U3R5bGVUZXh0KEVycm9yU3RyaW5nJiBlcnJv
clN0cmluZywgY29uc3QgSlNPTjo6T2JqZWMKIAogICAgIGF1dG8qIGRvbUFnZW50ID0gbV9pbnN0
cnVtZW50aW5nQWdlbnRzLmluc3BlY3RvckRPTUFnZW50KCk7CiAgICAgaWYgKCFkb21BZ2VudCkg
ewotICAgICAgICBlcnJvclN0cmluZyA9ICJNaXNzaW5nIERPTSBhZ2VudCJfczsKKyAgICAgICAg
ZXJyb3JTdHJpbmcgPSAiRE9NIGRvbWFpbiBtdXN0IGJlIGVuYWJsZWQiX3M7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKQEAgLTY2Niw3ICs2NjYsNyBAQCB2b2lkIEluc3BlY3RvckNTU0FnZW50
OjpzZXRSdWxlU2VsZWN0b3IoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBKU09OOjpP
YgogCiAgICAgYXV0byogZG9tQWdlbnQgPSBtX2luc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9y
RE9NQWdlbnQoKTsKICAgICBpZiAoIWRvbUFnZW50KSB7Ci0gICAgICAgIGVycm9yU3RyaW5nID0g
Ik1pc3NpbmcgRE9NIGFnZW50Il9zOworICAgICAgICBlcnJvclN0cmluZyA9ICJET00gZG9tYWlu
IG11c3QgYmUgZW5hYmxlZCJfczsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNjgxLDIx
ICs2ODEsMTkgQEAgdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6c2V0UnVsZVNlbGVjdG9yKEVycm9y
U3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgSlNPTjo6T2IKIAogdm9pZCBJbnNwZWN0b3JDU1NB
Z2VudDo6Y3JlYXRlU3R5bGVTaGVldChFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0
cmluZyYgZnJhbWVJZCwgU3RyaW5nKiBzdHlsZVNoZWV0SWQpCiB7Ci0gICAgRnJhbWUqIGZyYW1l
ID0gbV9pbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3RvclBhZ2VBZ2VudCgpLT5mcmFtZUZvcklk
KGZyYW1lSWQpOwotICAgIGlmICghZnJhbWUpIHsKLSAgICAgICAgZXJyb3JTdHJpbmcgPSAiTm8g
ZnJhbWUgZm9yIGdpdmVuIGlkIGZvdW5kIl9zOworICAgIGF1dG8qIGZyYW1lID0gbV9pbnN0cnVt
ZW50aW5nQWdlbnRzLmluc3BlY3RvclBhZ2VBZ2VudCgpLT5hc3NlcnRGcmFtZShlcnJvclN0cmlu
ZywgZnJhbWVJZCk7CisgICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuOwotICAgIH0KIAog
ICAgIERvY3VtZW50KiBkb2N1bWVudCA9IGZyYW1lLT5kb2N1bWVudCgpOwogICAgIGlmICghZG9j
dW1lbnQpIHsKLSAgICAgICAgZXJyb3JTdHJpbmcgPSAiTm8gZG9jdW1lbnQgZm9yIGZyYW1lIl9z
OworICAgICAgICBlcnJvclN0cmluZyA9ICJNaXNzaW5nIGRvY3VtZW50IG9mIGZyYW1lIGZvciBn
aXZlbiBmcmFtZUlkIl9zOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgSW5zcGVjdG9y
U3R5bGVTaGVldCogaW5zcGVjdG9yU3R5bGVTaGVldCA9IGNyZWF0ZUluc3BlY3RvclN0eWxlU2hl
ZXRGb3JEb2N1bWVudCgqZG9jdW1lbnQpOwogICAgIGlmICghaW5zcGVjdG9yU3R5bGVTaGVldCkg
ewotICAgICAgICBlcnJvclN0cmluZyA9ICJDb3VsZCBub3QgY3JlYXRlIHN0eWxlc2hlZXQgZm9y
IHRoZSBmcmFtZS4iX3M7CisgICAgICAgIGVycm9yU3RyaW5nID0gIkNvdWxkIG5vdCBjcmVhdGUg
c3R5bGUgc2hlZXQgZm9yIGRvY3VtZW50IG9mIGZyYW1lIGZvciBnaXZlbiBmcmFtZUlkIl9zOwog
ICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC03NDYsMTQgKzc0NCwxMiBAQCBJbnNwZWN0b3JT
dHlsZVNoZWV0KiBJbnNwZWN0b3JDU1NBZ2VudDo6Y3JlYXRlSW5zcGVjdG9yU3R5bGVTaGVldEZv
ckRvY3VtZW50KERvYwogdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6YWRkUnVsZShFcnJvclN0cmlu
ZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgc3R5bGVTaGVldElkLCBjb25zdCBTdHJpbmcm
IHNlbGVjdG9yLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NSdWxlPiYgcmVz
dWx0KQogewogICAgIEluc3BlY3RvclN0eWxlU2hlZXQqIGluc3BlY3RvclN0eWxlU2hlZXQgPSBh
c3NlcnRTdHlsZVNoZWV0Rm9ySWQoZXJyb3JTdHJpbmcsIHN0eWxlU2hlZXRJZCk7Ci0gICAgaWYg
KCFpbnNwZWN0b3JTdHlsZVNoZWV0KSB7Ci0gICAgICAgIGVycm9yU3RyaW5nID0gIk5vIHRhcmdl
dCBzdHlsZXNoZWV0IGZvdW5kIl9zOworICAgIGlmICghaW5zcGVjdG9yU3R5bGVTaGVldCkKICAg
ICAgICAgcmV0dXJuOwotICAgIH0KIAogICAgIGF1dG8qIGRvbUFnZW50ID0gbV9pbnN0cnVtZW50
aW5nQWdlbnRzLmluc3BlY3RvckRPTUFnZW50KCk7CiAgICAgaWYgKCFkb21BZ2VudCkgewotICAg
ICAgICBlcnJvclN0cmluZyA9ICJNaXNzaW5nIERPTSBhZ2VudCJfczsKKyAgICAgICAgZXJyb3JT
dHJpbmcgPSAiRE9NIGRvbWFpbiBtdXN0IGJlIGVuYWJsZWQiX3M7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKQEAgLTgzNSw3ICs4MzEsNyBAQCB2b2lkIEluc3BlY3RvckNTU0FnZW50Ojpmb3Jj
ZVBzZXVkb1N0YXRlKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgaW50IG5vZGVJZCwgYwogewog
ICAgIGF1dG8qIGRvbUFnZW50ID0gbV9pbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3RvckRPTUFn
ZW50KCk7CiAgICAgaWYgKCFkb21BZ2VudCkgewotICAgICAgICBlcnJvclN0cmluZyA9ICJNaXNz
aW5nIERPTSBhZ2VudCJfczsKKyAgICAgICAgZXJyb3JTdHJpbmcgPSAiRE9NIGRvbWFpbiBtdXN0
IGJlIGVuYWJsZWQiX3M7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTg3NSwyMCArODcx
LDExIEBAIEVsZW1lbnQqIEluc3BlY3RvckNTU0FnZW50OjplbGVtZW50Rm9ySWQoRXJyb3JTdHJp
bmcmIGVycm9yU3RyaW5nLCBpbnQgbm9kZUlkKQogewogICAgIGF1dG8qIGRvbUFnZW50ID0gbV9p
bnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3RvckRPTUFnZW50KCk7CiAgICAgaWYgKCFkb21BZ2Vu
dCkgewotICAgICAgICBlcnJvclN0cmluZyA9ICJNaXNzaW5nIERPTSBhZ2VudCJfczsKKyAgICAg
ICAgZXJyb3JTdHJpbmcgPSAiRE9NIGRvbWFpbiBtdXN0IGJlIGVuYWJsZWQiX3M7CiAgICAgICAg
IHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIE5vZGUqIG5vZGUgPSBkb21BZ2VudC0+bm9k
ZUZvcklkKG5vZGVJZCk7Ci0gICAgaWYgKCFub2RlKSB7Ci0gICAgICAgIGVycm9yU3RyaW5nID0g
Ik5vIG5vZGUgd2l0aCBnaXZlbiBpZCBmb3VuZCJfczsKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7
Ci0gICAgfQotICAgIGlmICghaXM8RWxlbWVudD4oKm5vZGUpKSB7Ci0gICAgICAgIGVycm9yU3Ry
aW5nID0gIk5vdCBhbiBlbGVtZW50IG5vZGUiX3M7Ci0gICAgICAgIHJldHVybiBudWxscHRyOwot
ICAgIH0KLSAgICByZXR1cm4gZG93bmNhc3Q8RWxlbWVudD4obm9kZSk7CisgICAgcmV0dXJuIGRv
bUFnZW50LT5hc3NlcnRFbGVtZW50KGVycm9yU3RyaW5nLCBub2RlSWQpOwogfQogCiBTdHJpbmcg
SW5zcGVjdG9yQ1NTQWdlbnQ6OnVuYmluZFN0eWxlU2hlZXQoSW5zcGVjdG9yU3R5bGVTaGVldCog
aW5zcGVjdG9yU3R5bGVTaGVldCkKQEAgLTkyMSw3ICs5MDgsNyBAQCBJbnNwZWN0b3JTdHlsZVNo
ZWV0KiBJbnNwZWN0b3JDU1NBZ2VudDo6YXNzZXJ0U3R5bGVTaGVldEZvcklkKEVycm9yU3RyaW5n
JiBlcnJvcgogewogICAgIElkVG9JbnNwZWN0b3JTdHlsZVNoZWV0OjppdGVyYXRvciBpdCA9IG1f
aWRUb0luc3BlY3RvclN0eWxlU2hlZXQuZmluZChzdHlsZVNoZWV0SWQpOwogICAgIGlmIChpdCA9
PSBtX2lkVG9JbnNwZWN0b3JTdHlsZVNoZWV0LmVuZCgpKSB7Ci0gICAgICAgIGVycm9yU3RyaW5n
ID0gIk5vIHN0eWxlc2hlZXQgd2l0aCBnaXZlbiBpZCBmb3VuZCJfczsKKyAgICAgICAgZXJyb3JT
dHJpbmcgPSAiTWlzc2luZyBzdHlsZSBzaGVldCBmb3IgZ2l2ZW4gc3R5bGVTaGVldElkIl9zOwog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAgICAgcmV0dXJuIGl0LT52YWx1ZS5nZXQo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
Q2FudmFzQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0
b3JDYW52YXNBZ2VudC5jcHAKaW5kZXggMGU1MGM3NWJhNDg3NTE1NTZlNDEyZGNiOTdhZDE5NjY5
NjVhOTk5MC4uMjA0N2MxMmJlOTZmMTdlNDAxMTgzM2FlMzEwMGVlNGFmMjhhMzE5MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDYW52YXNBZ2Vu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDYW52
YXNBZ2VudC5jcHAKQEAgLTE1MCwxMyArMTUwLDEzIEBAIHZvaWQgSW5zcGVjdG9yQ2FudmFzQWdl
bnQ6OnJlcXVlc3ROb2RlKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBj
CiAKICAgICBhdXRvKiBub2RlID0gaW5zcGVjdG9yQ2FudmFzLT5jYW52YXNFbGVtZW50KCk7CiAg
ICAgaWYgKCFub2RlKSB7Ci0gICAgICAgIGVycm9yU3RyaW5nID0gIk5vIG5vZGUgZm9yIGNhbnZh
cyJfczsKKyAgICAgICAgZXJyb3JTdHJpbmcgPSAiTWlzc2luZyBlbGVtZW50IG9mIGNhbnZhcyBm
b3IgZ2l2ZW4gY2FudmFzSWQiX3M7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBpbnQg
ZG9jdW1lbnROb2RlSWQgPSBtX2luc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yRE9NQWdlbnQo
KS0+Ym91bmROb2RlSWQoJm5vZGUtPmRvY3VtZW50KCkpOwogICAgIGlmICghZG9jdW1lbnROb2Rl
SWQpIHsKLSAgICAgICAgZXJyb3JTdHJpbmcgPSAiRG9jdW1lbnQgaGFzIG5vdCBiZWVuIHJlcXVl
c3RlZCJfczsKKyAgICAgICAgZXJyb3JTdHJpbmcgPSAiRG9jdW1lbnQgbXVzdCBoYXZlIGJlZW4g
cmVxdWVzdGVkIl9zOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0yMjIsNyArMjIyLDcg
QEAgdm9pZCBJbnNwZWN0b3JDYW52YXNBZ2VudDo6cmVzb2x2ZUNhbnZhc0NvbnRleHQoRXJyb3JT
dHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdAogICAgIEpTQzo6SlNWYWx1ZSB2YWx1ZSA9IGNvbnRl
eHRBc1NjcmlwdFZhbHVlKHN0YXRlLCBpbnNwZWN0b3JDYW52YXMtPmNvbnRleHQoKSk7CiAgICAg
aWYgKCF2YWx1ZSkgewogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgZXJy
b3JTdHJpbmcgPSAiVW5rbm93biBjb250ZXh0IHR5cGUiX3M7CisgICAgICAgIGVycm9yU3RyaW5n
ID0gIkludGVybmFsIGVycm9yOiB1bmtub3duIGNvbnRleHQgb2YgY2FudmFzIGZvciBnaXZlbiBj
YW52YXNJZCJfczsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMjY0LDcgKzI2NCw3IEBA
IHZvaWQgSW5zcGVjdG9yQ2FudmFzQWdlbnQ6OnN0b3BSZWNvcmRpbmcoRXJyb3JTdHJpbmcmIGVy
cm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmICghaW5z
cGVjdG9yQ2FudmFzLT5jb250ZXh0KCkuY2FsbFRyYWNpbmdBY3RpdmUoKSkgewotICAgICAgICBl
cnJvclN0cmluZyA9ICJObyBhY3RpdmUgcmVjb3JkaW5nIGZvciBjYW52YXMiX3M7CisgICAgICAg
IGVycm9yU3RyaW5nID0gIk5vdCByZWNvcmRpbmcgY2FudmFzIl9zOwogICAgICAgICByZXR1cm47
CiAgICAgfQogCkBAIC0yODAsNyArMjgwLDcgQEAgdm9pZCBJbnNwZWN0b3JDYW52YXNBZ2VudDo6
cmVxdWVzdFNoYWRlclNvdXJjZShFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFMKIAog
ICAgIGF1dG8qIHNoYWRlciA9IGluc3BlY3RvclByb2dyYW0tPnNoYWRlckZvclR5cGUoc2hhZGVy
VHlwZSk7CiAgICAgaWYgKCFzaGFkZXIpIHsKLSAgICAgICAgZXJyb3JTdHJpbmcgPSAiTm8gc2hh
ZGVyIGZvciBnaXZlbiB0eXBlLiJfczsKKyAgICAgICAgZXJyb3JTdHJpbmcgPSAiTWlzc2luZyBz
aGFkZXIgZm9yIGdpdmVuIHNoYWRlclR5cGUiX3M7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
QEAgLTI4OSw3ICsyODksNyBAQCB2b2lkIEluc3BlY3RvckNhbnZhc0FnZW50OjpyZXF1ZXN0U2hh
ZGVyU291cmNlKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgUwogICAgIFVOVVNFRF9Q
QVJBTShwcm9ncmFtSWQpOwogICAgIFVOVVNFRF9QQVJBTShzaGFkZXJUeXBlKTsKICAgICBVTlVT
RURfUEFSQU0oY29udGVudCk7Ci0gICAgZXJyb3JTdHJpbmcgPSAiV2ViR0wgaXMgbm90IHN1cHBv
cnRlZC4iX3M7CisgICAgZXJyb3JTdHJpbmcgPSAiTm90IHN1cHBvcnRlZCJfczsKICNlbmRpZgog
fQogCkBAIC0zMDIsNyArMzAyLDcgQEAgdm9pZCBJbnNwZWN0b3JDYW52YXNBZ2VudDo6dXBkYXRl
U2hhZGVyKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJgogCiAgICAgYXV0
byogc2hhZGVyID0gaW5zcGVjdG9yUHJvZ3JhbS0+c2hhZGVyRm9yVHlwZShzaGFkZXJUeXBlKTsK
ICAgICBpZiAoIXNoYWRlcikgewotICAgICAgICBlcnJvclN0cmluZyA9ICJObyBzaGFkZXIgZm9y
IGdpdmVuIHR5cGUuIl9zOworICAgICAgICBlcnJvclN0cmluZyA9ICJNaXNzaW5nIHNoYWRlciBm
b3IgZ2l2ZW4gc2hhZGVyVHlwZSJfczsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMzEx
LDcgKzMxMSw3IEBAIHZvaWQgSW5zcGVjdG9yQ2FudmFzQWdlbnQ6OnVwZGF0ZVNoYWRlcihFcnJv
clN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYKICAgICBjb250ZXh0V2ViR0wuY29t
cGlsZVNoYWRlcihzaGFkZXIpOwogCiAgICAgaWYgKCFzaGFkZXItPmlzVmFsaWQoKSkgewotICAg
ICAgICBlcnJvclN0cmluZyA9ICJTaGFkZXIgY29tcGlsYXRpb24gZmFpbGVkLiJfczsKKyAgICAg
ICAgZXJyb3JTdHJpbmcgPSAiRmFpbGVkIHRvIHVwZGF0ZSBzaGFkZXIiX3M7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKQEAgLTMyMCw3ICszMjAsNyBAQCB2b2lkIEluc3BlY3RvckNhbnZhc0Fn
ZW50Ojp1cGRhdGVTaGFkZXIoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcm
CiAgICAgVU5VU0VEX1BBUkFNKHByb2dyYW1JZCk7CiAgICAgVU5VU0VEX1BBUkFNKHNoYWRlclR5
cGUpOwogICAgIFVOVVNFRF9QQVJBTShzb3VyY2UpOwotICAgIGVycm9yU3RyaW5nID0gIldlYkdM
IGlzIG5vdCBzdXBwb3J0ZWQuIl9zOworICAgIGVycm9yU3RyaW5nID0gIk5vdCBzdXBwb3J0ZWQi
X3M7CiAjZW5kaWYKIH0KIApAQCAtMzM1LDcgKzMzNSw3IEBAIHZvaWQgSW5zcGVjdG9yQ2FudmFz
QWdlbnQ6OnNldFNoYWRlclByb2dyYW1EaXNhYmxlZChFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcs
IGNvCiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShwcm9ncmFtSWQpOwogICAgIFVOVVNFRF9QQVJB
TShkaXNhYmxlZCk7Ci0gICAgZXJyb3JTdHJpbmcgPSAiV2ViR0wgaXMgbm90IHN1cHBvcnRlZC4i
X3M7CisgICAgZXJyb3JTdHJpbmcgPSAiTm90IHN1cHBvcnRlZCJfczsKICNlbmRpZgogfQogCkBA
IC0zNTAsNyArMzUwLDcgQEAgdm9pZCBJbnNwZWN0b3JDYW52YXNBZ2VudDo6c2V0U2hhZGVyUHJv
Z3JhbUhpZ2hsaWdodGVkKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywKICNlbHNlCiAgICAgVU5V
U0VEX1BBUkFNKHByb2dyYW1JZCk7CiAgICAgVU5VU0VEX1BBUkFNKGhpZ2hsaWdodGVkKTsKLSAg
ICBlcnJvclN0cmluZyA9ICJXZWJHTCBpcyBub3Qgc3VwcG9ydGVkLiJfczsKKyAgICBlcnJvclN0
cmluZyA9ICJOb3Qgc3VwcG9ydGVkIl9zOwogI2VuZGlmCiB9CiAKQEAgLTY5NywxNCArNjk3LDEz
IEBAIFN0cmluZyBJbnNwZWN0b3JDYW52YXNBZ2VudDo6dW5iaW5kQ2FudmFzKEluc3BlY3RvckNh
bnZhcyYgaW5zcGVjdG9yQ2FudmFzKQogICAgIHJldHVybiBpZGVudGlmaWVyOwogfQogCi1SZWZQ
dHI8SW5zcGVjdG9yQ2FudmFzPiBJbnNwZWN0b3JDYW52YXNBZ2VudDo6YXNzZXJ0SW5zcGVjdG9y
Q2FudmFzKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBpZGVudGlmaWVy
KQorUmVmUHRyPEluc3BlY3RvckNhbnZhcz4gSW5zcGVjdG9yQ2FudmFzQWdlbnQ6OmFzc2VydElu
c3BlY3RvckNhbnZhcyhFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgY2Fu
dmFzSWQpCiB7Ci0gICAgYXV0byBpbnNwZWN0b3JDYW52YXMgPSBtX2lkZW50aWZpZXJUb0luc3Bl
Y3RvckNhbnZhcy5nZXQoaWRlbnRpZmllcik7CisgICAgYXV0byBpbnNwZWN0b3JDYW52YXMgPSBt
X2lkZW50aWZpZXJUb0luc3BlY3RvckNhbnZhcy5nZXQoY2FudmFzSWQpOwogICAgIGlmICghaW5z
cGVjdG9yQ2FudmFzKSB7Ci0gICAgICAgIGVycm9yU3RyaW5nID0gIk5vIGNhbnZhcyBmb3IgZ2l2
ZW4gaWRlbnRpZmllci4iX3M7CisgICAgICAgIGVycm9yU3RyaW5nID0gIk1pc3NpbmcgY2FudmFz
IGZvciBnaXZlbiBjYW52YXNJZCJfczsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQot
CiAgICAgcmV0dXJuIGluc3BlY3RvckNhbnZhczsKIH0KIApAQCAtNzE0LDcgKzcxMyw2IEBAIFJl
ZlB0cjxJbnNwZWN0b3JDYW52YXM+IEluc3BlY3RvckNhbnZhc0FnZW50OjpmaW5kSW5zcGVjdG9y
Q2FudmFzKENhbnZhc1JlbmRlcmluCiAgICAgICAgIGlmICgmaW5zcGVjdG9yQ2FudmFzLT5jb250
ZXh0KCkgPT0gJmNvbnRleHQpCiAgICAgICAgICAgICByZXR1cm4gaW5zcGVjdG9yQ2FudmFzOwog
ICAgIH0KLQogICAgIHJldHVybiBudWxscHRyOwogfQogCkBAIC03MjcsMTQgKzcyNSwxMyBAQCBT
dHJpbmcgSW5zcGVjdG9yQ2FudmFzQWdlbnQ6OnVuYmluZFByb2dyYW0oSW5zcGVjdG9yU2hhZGVy
UHJvZ3JhbSYgaW5zcGVjdG9yUHJvZwogICAgIHJldHVybiBpZGVudGlmaWVyOwogfQogCi1SZWZQ
dHI8SW5zcGVjdG9yU2hhZGVyUHJvZ3JhbT4gSW5zcGVjdG9yQ2FudmFzQWdlbnQ6OmFzc2VydElu
c3BlY3RvclByb2dyYW0oRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIGlk
ZW50aWZpZXIpCitSZWZQdHI8SW5zcGVjdG9yU2hhZGVyUHJvZ3JhbT4gSW5zcGVjdG9yQ2FudmFz
QWdlbnQ6OmFzc2VydEluc3BlY3RvclByb2dyYW0oRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBj
b25zdCBTdHJpbmcmIHByb2dyYW1JZCkKIHsKLSAgICBhdXRvIGluc3BlY3RvclByb2dyYW0gPSBt
X2lkZW50aWZpZXJUb0luc3BlY3RvclByb2dyYW0uZ2V0KGlkZW50aWZpZXIpOworICAgIGF1dG8g
aW5zcGVjdG9yUHJvZ3JhbSA9IG1faWRlbnRpZmllclRvSW5zcGVjdG9yUHJvZ3JhbS5nZXQocHJv
Z3JhbUlkKTsKICAgICBpZiAoIWluc3BlY3RvclByb2dyYW0pIHsKLSAgICAgICAgZXJyb3JTdHJp
bmcgPSAiTm8gc2hhZGVyIHByb2dyYW0gZm9yIGdpdmVuIGlkZW50aWZpZXIuIl9zOworICAgICAg
ICBlcnJvclN0cmluZyA9ICJNaXNzaW5nIHByb2dyYW0gZm9yIGdpdmVuIHByb2dyYW1JZCJfczsK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQotCiAgICAgcmV0dXJuIGluc3BlY3RvclBy
b2dyYW07CiB9CiAKQEAgLTc0NCw3ICs3NDEsNiBAQCBSZWZQdHI8SW5zcGVjdG9yU2hhZGVyUHJv
Z3JhbT4gSW5zcGVjdG9yQ2FudmFzQWdlbnQ6OmZpbmRJbnNwZWN0b3JQcm9ncmFtKFdlYkdMUAog
ICAgICAgICBpZiAoJmluc3BlY3RvclByb2dyYW0tPnByb2dyYW0oKSA9PSAmcHJvZ3JhbSkKICAg
ICAgICAgICAgIHJldHVybiBpbnNwZWN0b3JQcm9ncmFtOwogICAgIH0KLQogICAgIHJldHVybiBu
dWxscHRyOwogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3RvckNhbnZhc0FnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3RvckNhbnZhc0FnZW50LmgKaW5kZXggZmEwZjZjYzIzYjBlNDUxOWFlMTkw
MzUyMjdiZjk4ODFiZTFmMTIyNy4uYzdlMmZkNzI1OTIwZjlkZTE3NWIwZDkzZDNjN2Y1Mjc5NzI1
MTk1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0
b3JDYW52YXNBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9yQ2FudmFzQWdlbnQuaApAQCAtMTE2LDExICsxMTYsMTEgQEAgcHJpdmF0ZToKICAgICB2
b2lkIGNsZWFyQ2FudmFzRGF0YSgpOwogICAgIEluc3BlY3RvckNhbnZhcyYgYmluZENhbnZhcyhD
YW52YXNSZW5kZXJpbmdDb250ZXh0JiwgYm9vbCBjYXB0dXJlQmFja3RyYWNlKTsKICAgICBTdHJp
bmcgdW5iaW5kQ2FudmFzKEluc3BlY3RvckNhbnZhcyYpOwotICAgIFJlZlB0cjxJbnNwZWN0b3JD
YW52YXM+IGFzc2VydEluc3BlY3RvckNhbnZhcyhFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYg
aWRlbnRpZmllcik7CisgICAgUmVmUHRyPEluc3BlY3RvckNhbnZhcz4gYXNzZXJ0SW5zcGVjdG9y
Q2FudmFzKEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBjYW52YXNJZCk7CiAgICAgUmVmUHRy
PEluc3BlY3RvckNhbnZhcz4gZmluZEluc3BlY3RvckNhbnZhcyhDYW52YXNSZW5kZXJpbmdDb250
ZXh0Jik7CiAjaWYgRU5BQkxFKFdFQkdMKQogICAgIFN0cmluZyB1bmJpbmRQcm9ncmFtKEluc3Bl
Y3RvclNoYWRlclByb2dyYW0mKTsKLSAgICBSZWZQdHI8SW5zcGVjdG9yU2hhZGVyUHJvZ3JhbT4g
YXNzZXJ0SW5zcGVjdG9yUHJvZ3JhbShFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgaWRlbnRp
Zmllcik7CisgICAgUmVmUHRyPEluc3BlY3RvclNoYWRlclByb2dyYW0+IGFzc2VydEluc3BlY3Rv
clByb2dyYW0oRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHByb2dyYW1JZCk7CiAgICAgUmVm
UHRyPEluc3BlY3RvclNoYWRlclByb2dyYW0+IGZpbmRJbnNwZWN0b3JQcm9ncmFtKFdlYkdMUHJv
Z3JhbSYpOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9yRE9NQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JET01BZ2VudC5jcHAKaW5kZXggZjBhMjhjMTMzMWM1YmIzMDg4ZDUzZTcy
NDNkYmFmNGVlYjYzZTdiZC4uYWM4ODcwN2UyM2IzM2RmNmM5NWNhNmM1YmY4OTY2ZDYyYzRmZmE5
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JE
T01BZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0
b3JET01BZ2VudC5jcHAKQEAgLTMyNCw5ICszMjQsOSBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50
Ojp3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkRpc2Nvbm5lY3RSZWFz
bwogICAgIG1fbW91c2VkT3Zlck5vZGUgPSBudWxscHRyOwogICAgIG1faW5zcGVjdGVkTm9kZSA9
IG51bGxwdHI7CiAKLSAgICBFcnJvclN0cmluZyB1bnVzZWQ7Ci0gICAgc2V0U2VhcmNoaW5nRm9y
Tm9kZSh1bnVzZWQsIGZhbHNlLCBudWxscHRyLCBmYWxzZSk7Ci0gICAgaGlkZUhpZ2hsaWdodCh1
bnVzZWQpOworICAgIEVycm9yU3RyaW5nIGlnbm9yZWQ7CisgICAgc2V0U2VhcmNoaW5nRm9yTm9k
ZShpZ25vcmVkLCBmYWxzZSwgbnVsbHB0ciwgZmFsc2UpOworICAgIGhpZGVIaWdobGlnaHQoaWdu
b3JlZCk7CiAKICAgICBtX2luc3RydW1lbnRpbmdBZ2VudHMuc2V0SW5zcGVjdG9yRE9NQWdlbnQo
bnVsbHB0cik7CiAgICAgbV9kb2N1bWVudFJlcXVlc3RlZCA9IGZhbHNlOwpAQCAtNDMwLDcgKzQz
MCw3IEBAIE5vZGUqIEluc3BlY3RvckRPTUFnZW50Ojphc3NlcnROb2RlKEVycm9yU3RyaW5nJiBl
cnJvclN0cmluZywgaW50IG5vZGVJZCkKIHsKICAgICBOb2RlKiBub2RlID0gbm9kZUZvcklkKG5v
ZGVJZCk7CiAgICAgaWYgKCFub2RlKSB7Ci0gICAgICAgIGVycm9yU3RyaW5nID0gIkNvdWxkIG5v
dCBmaW5kIG5vZGUgd2l0aCBnaXZlbiBpZCJfczsKKyAgICAgICAgZXJyb3JTdHJpbmcgPSAiTWlz
c2luZyBub2RlIGZvciBnaXZlbiBub2RlSWQiX3M7CiAgICAgICAgIHJldHVybiBudWxscHRyOwog
ICAgIH0KICAgICByZXR1cm4gbm9kZTsKQEAgLTQ0MSw4ICs0NDEsOCBAQCBEb2N1bWVudCogSW5z
cGVjdG9yRE9NQWdlbnQ6OmFzc2VydERvY3VtZW50KEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywg
aW50IG5vZGVJZAogICAgIE5vZGUqIG5vZGUgPSBhc3NlcnROb2RlKGVycm9yU3RyaW5nLCBub2Rl
SWQpOwogICAgIGlmICghbm9kZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgaWYgKCFp
czxEb2N1bWVudD4oKm5vZGUpKSB7Ci0gICAgICAgIGVycm9yU3RyaW5nID0gIkRvY3VtZW50IGlz
IG5vdCBhdmFpbGFibGUiX3M7CisgICAgaWYgKCFpczxEb2N1bWVudD4obm9kZSkpIHsKKyAgICAg
ICAgZXJyb3JTdHJpbmcgPSAiTm9kZSBmb3IgZ2l2ZW4gbm9kZUlkIGlzIG5vdCBhIGRvY3VtZW50
Il9zOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAgICAgcmV0dXJuIGRvd25jYXN0
PERvY3VtZW50Pihub2RlKTsKQEAgLTQ1Myw4ICs0NTMsOCBAQCBFbGVtZW50KiBJbnNwZWN0b3JE
T01BZ2VudDo6YXNzZXJ0RWxlbWVudChFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGludCBub2Rl
SWQpCiAgICAgTm9kZSogbm9kZSA9IGFzc2VydE5vZGUoZXJyb3JTdHJpbmcsIG5vZGVJZCk7CiAg
ICAgaWYgKCFub2RlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBpZiAoIWlzPEVsZW1l
bnQ+KCpub2RlKSkgewotICAgICAgICBlcnJvclN0cmluZyA9ICJOb2RlIGlzIG5vdCBhbiBFbGVt
ZW50Il9zOworICAgIGlmICghaXM8RWxlbWVudD4obm9kZSkpIHsKKyAgICAgICAgZXJyb3JTdHJp
bmcgPSAiTm9kZSBmb3IgZ2l2ZW4gbm9kZUlkIGlzIG5vdCBhbiBlbGVtZW50Il9zOwogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAgICAgcmV0dXJuIGRvd25jYXN0PEVsZW1lbnQ+KG5v
ZGUpOwpAQCAtNDY2LDExICs0NjYsMTEgQEAgTm9kZSogSW5zcGVjdG9yRE9NQWdlbnQ6OmFzc2Vy
dEVkaXRhYmxlTm9kZShFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGludCBub2RlSWQKICAgICBp
ZiAoIW5vZGUpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIGlmIChub2RlLT5pc0luVXNl
ckFnZW50U2hhZG93VHJlZSgpKSB7Ci0gICAgICAgIGVycm9yU3RyaW5nID0gIkNhbm5vdCBlZGl0
IG5vZGVzIGluIHVzZXIgYWdlbnQgc2hhZG93IHRyZWVzIl9zOworICAgICAgICBlcnJvclN0cmlu
ZyA9ICJOb2RlIGZvciBnaXZlbiBub2RlSWQgaXMgaW4gYSBzaGFkb3cgdHJlZSJfczsKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogICAgIGlmIChub2RlLT5pc1BzZXVkb0VsZW1lbnQo
KSkgewotICAgICAgICBlcnJvclN0cmluZyA9ICJDYW5ub3QgZWRpdCBwc2V1ZG8gZWxlbWVudHMi
X3M7CisgICAgICAgIGVycm9yU3RyaW5nID0gIk5vZGUgZm9yIGdpdmVuIG5vZGVJZCBpcyBhIHBz
ZXVkby1lbGVtZW50Il9zOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAgICAgcmV0
dXJuIG5vZGU7CkBAIC00NzgsMTggKzQ3OCwxNCBAQCBOb2RlKiBJbnNwZWN0b3JET01BZ2VudDo6
YXNzZXJ0RWRpdGFibGVOb2RlKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgaW50IG5vZGVJZAog
CiBFbGVtZW50KiBJbnNwZWN0b3JET01BZ2VudDo6YXNzZXJ0RWRpdGFibGVFbGVtZW50KEVycm9y
U3RyaW5nJiBlcnJvclN0cmluZywgaW50IG5vZGVJZCkKIHsKLSAgICBFbGVtZW50KiBlbGVtZW50
ID0gYXNzZXJ0RWxlbWVudChlcnJvclN0cmluZywgbm9kZUlkKTsKLSAgICBpZiAoIWVsZW1lbnQp
CisgICAgTm9kZSogbm9kZSA9IGFzc2VydEVkaXRhYmxlTm9kZShlcnJvclN0cmluZywgbm9kZUlk
KTsKKyAgICBpZiAoIW5vZGUpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIGlmIChlbGVt
ZW50LT5pc0luVXNlckFnZW50U2hhZG93VHJlZSgpKSB7Ci0gICAgICAgIGVycm9yU3RyaW5nID0g
IkNhbm5vdCBlZGl0IGVsZW1lbnRzIGluIHVzZXIgYWdlbnQgc2hhZG93IHRyZWVzIl9zOworICAg
IGlmICghaXM8RWxlbWVudD4obm9kZSkpIHsKKyAgICAgICAgZXJyb3JTdHJpbmcgPSAiTm9kZSBm
b3IgZ2l2ZW4gbm9kZUlkIGlzIG5vdCBhbiBlbGVtZW50Il9zOwogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKICAgICB9Ci0gICAgaWYgKGVsZW1lbnQtPmlzUHNldWRvRWxlbWVudCgpKSB7Ci0gICAg
ICAgIGVycm9yU3RyaW5nID0gIkNhbm5vdCBlZGl0IHBzZXVkbyBlbGVtZW50cyJfczsKLSAgICAg
ICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgfQotICAgIHJldHVybiBlbGVtZW50OworICAgIHJldHVy
biBkb3duY2FzdDxFbGVtZW50Pihub2RlKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6
Z2V0RG9jdW1lbnQoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBSZWZQdHI8SW5zcGVjdG9yOjpQ
cm90b2NvbDo6RE9NOjpOb2RlPiYgcm9vdCkKQEAgLTQ5Nyw3ICs0OTMsNyBAQCB2b2lkIEluc3Bl
Y3RvckRPTUFnZW50OjpnZXREb2N1bWVudChFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIFJlZlB0
cjxJbnNwZWN0b3I6OgogICAgIG1fZG9jdW1lbnRSZXF1ZXN0ZWQgPSB0cnVlOwogCiAgICAgaWYg
KCFtX2RvY3VtZW50KSB7Ci0gICAgICAgIGVycm9yU3RyaW5nID0gIkRvY3VtZW50IGlzIG5vdCBh
dmFpbGFibGUiX3M7CisgICAgICAgIGVycm9yU3RyaW5nID0gIkludGVybmFsIGVycm9yOiBtaXNz
aW5nIGRvY3VtZW50Il9zOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC01NTUsNyArNTUx
LDcgQEAgaW50IEluc3BlY3RvckRPTUFnZW50OjpwdXNoTm9kZVRvRnJvbnRlbmQoRXJyb3JTdHJp
bmcmIGVycm9yU3RyaW5nLCBpbnQgZG9jdW1lbnQKICAgICBpZiAoIWRvY3VtZW50KQogICAgICAg
ICByZXR1cm4gMDsKICAgICBpZiAoJm5vZGVUb1B1c2gtPmRvY3VtZW50KCkgIT0gZG9jdW1lbnQp
IHsKLSAgICAgICAgZXJyb3JTdHJpbmcgPSAiTm9kZSBpcyBub3QgcGFydCBvZiB0aGUgZG9jdW1l
bnQgd2l0aCBnaXZlbiBpZCJfczsKKyAgICAgICAgZXJyb3JTdHJpbmcgPSAibm9kZVRvUHVzaCBp
cyBub3QgcGFydCBvZiB0aGUgZG9jdW1lbnQgd2l0aCBnaXZlbiBkb2N1bWVudE5vZGVJZCJfczsK
ICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCkBAIC01ODEsNyArNTc3LDcgQEAgdm9pZCBJbnNw
ZWN0b3JET01BZ2VudDo6cmVxdWVzdENoaWxkTm9kZXMoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5n
LCBpbnQgbm9kZUlkLAogICAgIGVsc2UgaWYgKCpkZXB0aCA+IDApCiAgICAgICAgIHNhbml0aXpl
ZERlcHRoID0gKmRlcHRoOwogICAgIGVsc2UgewotICAgICAgICBlcnJvclN0cmluZyA9ICJQbGVh
c2UgcHJvdmlkZSBhIHBvc2l0aXZlIGludGVnZXIgYXMgYSBkZXB0aCBvciAtMSBmb3IgZW50aXJl
IHN1YnRyZWUiX3M7CisgICAgICAgIGVycm9yU3RyaW5nID0gIlVuZXhwZWN0ZWQgdmFsdWUgYmVs
b3cgLTEgZm9yIGdpdmVuIGRlcHRoIl9zOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC02
MDEsNyArNTk3LDcgQEAgdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6cXVlcnlTZWxlY3RvcihFcnJv
clN0cmluZyYgZXJyb3JTdHJpbmcsIGludCBub2RlSWQsIGNvbnMKIAogICAgIGF1dG8gcXVlcnlS
ZXN1bHQgPSBkb3duY2FzdDxDb250YWluZXJOb2RlPigqbm9kZSkucXVlcnlTZWxlY3RvcihzZWxl
Y3RvcnMpOwogICAgIGlmIChxdWVyeVJlc3VsdC5oYXNFeGNlcHRpb24oKSkgewotICAgICAgICBl
cnJvclN0cmluZyA9ICJET00gRXJyb3Igd2hpbGUgcXVlcnlpbmciX3M7CisgICAgICAgIGVycm9y
U3RyaW5nID0gIkRPTSBFcnJvciB3aGlsZSBxdWVyeWluZyB3aXRoIGdpdmVuIHNlbGVjdG9ycyJf
czsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNjIxLDcgKzYxNyw3IEBAIHZvaWQgSW5z
cGVjdG9yRE9NQWdlbnQ6OnF1ZXJ5U2VsZWN0b3JBbGwoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5n
LCBpbnQgbm9kZUlkLCBjCiAKICAgICBhdXRvIHF1ZXJ5UmVzdWx0ID0gZG93bmNhc3Q8Q29udGFp
bmVyTm9kZT4oKm5vZGUpLnF1ZXJ5U2VsZWN0b3JBbGwoc2VsZWN0b3JzKTsKICAgICBpZiAocXVl
cnlSZXN1bHQuaGFzRXhjZXB0aW9uKCkpIHsKLSAgICAgICAgZXJyb3JTdHJpbmcgPSAiRE9NIEVy
cm9yIHdoaWxlIHF1ZXJ5aW5nIl9zOworICAgICAgICBlcnJvclN0cmluZyA9ICJET00gRXJyb3Ig
d2hpbGUgcXVlcnlpbmcgd2l0aCBnaXZlbiBzZWxlY3RvcnMiX3M7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKQEAgLTcwNyw3ICs3MDMsNyBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpzZXRB
dHRyaWJ1dGVzQXNUZXh0KEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgaW50IGVsZW1lbgogCiAg
ICAgTm9kZSogY2hpbGQgPSBwYXJzZWRFbGVtZW50LT5maXJzdENoaWxkKCk7CiAgICAgaWYgKCFj
aGlsZCkgewotICAgICAgICBlcnJvclN0cmluZyA9ICJDb3VsZCBub3QgcGFyc2UgdmFsdWUgYXMg
YXR0cmlidXRlcyJfczsKKyAgICAgICAgZXJyb3JTdHJpbmcgPSAiQ291bGQgbm90IHBhcnNlIGdp
dmVuIHRleHQiX3M7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTgxMCw3ICs4MDYsNyBA
QCB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpzZXRPdXRlckhUTUwoRXJyb3JTdHJpbmcmIGVycm9y
U3RyaW5nLCBpbnQgbm9kZUlkLCBjb25zdAogCiAgICAgRG9jdW1lbnQmIGRvY3VtZW50ID0gbm9k
ZS0+ZG9jdW1lbnQoKTsKICAgICBpZiAoIWRvY3VtZW50LmlzSFRNTERvY3VtZW50KCkgJiYgIWRv
Y3VtZW50LmlzWE1MRG9jdW1lbnQoKSkgewotICAgICAgICBlcnJvclN0cmluZyA9ICJOb3QgYW4g
SFRNTC9YTUwgZG9jdW1lbnQiX3M7CisgICAgICAgIGVycm9yU3RyaW5nID0gIkRvY3VtZW50IG9m
IG5vZGUgZm9yIGdpdmVuIG5vZGVJZCBpcyBub3QgSFRNTC9YTUwiX3M7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKQEAgLTgzNyw3ICs4MzMsNyBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50Ojpp
bnNlcnRBZGphY2VudEhUTUwoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBpbnQgbm9kZUlkLAog
ICAgICAgICByZXR1cm47CiAKICAgICBpZiAoIWlzPEVsZW1lbnQ+KG5vZGUpKSB7Ci0gICAgICAg
IGVycm9yU3RyaW5nID0gIkNhbiBvbmx5IGNhbGwgaW5zZXJ0QWRqYWNlbnRIVE1MIG9uIEVsZW1l
bnRzLiJfczsKKyAgICAgICAgZXJyb3JTdHJpbmcgPSAiTm9kZSBmb3IgZ2l2ZW4gbm9kZUlkIGlz
IG5vdCBhbiBlbGVtZW50Il9zOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC04NTEsNyAr
ODQ3LDcgQEAgdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6c2V0Tm9kZVZhbHVlKEVycm9yU3RyaW5n
JiBlcnJvclN0cmluZywgaW50IG5vZGVJZCwgY29uc3QKICAgICAgICAgcmV0dXJuOwogCiAgICAg
aWYgKCFpczxUZXh0Pigqbm9kZSkpIHsKLSAgICAgICAgZXJyb3JTdHJpbmcgPSAiQ2FuIG9ubHkg
c2V0IHZhbHVlIG9mIHRleHQgbm9kZXMiX3M7CisgICAgICAgIGVycm9yU3RyaW5nID0gIk5vZGUg
Zm9yIGdpdmVuIG5vZGVJZCBpcyBub3QgdGV4dCJfczsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IApAQCAtOTY1LDcgKzk2MSw3IEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OnNldEV2ZW50TGlz
dGVuZXJEaXNhYmxlZChFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGludCBlCiB7CiAgICAgYXV0
byBpdCA9IG1fZXZlbnRMaXN0ZW5lckVudHJpZXMuZmluZChldmVudExpc3RlbmVySWQpOwogICAg
IGlmIChpdCA9PSBtX2V2ZW50TGlzdGVuZXJFbnRyaWVzLmVuZCgpKSB7Ci0gICAgICAgIGVycm9y
U3RyaW5nID0gIk5vIGV2ZW50IGxpc3RlbmVyIGZvciBnaXZlbiBpZGVudGlmaWVyLiJfczsKKyAg
ICAgICAgZXJyb3JTdHJpbmcgPSAiTWlzc2luZyBldmVudCBsaXN0ZW5lciBmb3IgZ2l2ZW4gZXZl
bnRMaXN0ZW5lcklkIl9zOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC05NzYsNyArOTcy
LDcgQEAgdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6c2V0QnJlYWtwb2ludEZvckV2ZW50TGlzdGVu
ZXIoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLAogewogICAgIGF1dG8gaXQgPSBtX2V2ZW50TGlz
dGVuZXJFbnRyaWVzLmZpbmQoZXZlbnRMaXN0ZW5lcklkKTsKICAgICBpZiAoaXQgPT0gbV9ldmVu
dExpc3RlbmVyRW50cmllcy5lbmQoKSkgewotICAgICAgICBlcnJvclN0cmluZyA9ICJObyBldmVu
dCBsaXN0ZW5lciBmb3IgZ2l2ZW4gaWRlbnRpZmllci4iX3M7CisgICAgICAgIGVycm9yU3RyaW5n
ID0gIk1pc3NpbmcgZXZlbnQgbGlzdGVuZXIgZm9yIGdpdmVuIGV2ZW50TGlzdGVuZXJJZCJfczsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtOTg3LDcgKzk4Myw3IEBAIHZvaWQgSW5zcGVj
dG9yRE9NQWdlbnQ6OnJlbW92ZUJyZWFrcG9pbnRGb3JFdmVudExpc3RlbmVyKEVycm9yU3RyaW5n
JiBlcnJvclN0cmluCiB7CiAgICAgYXV0byBpdCA9IG1fZXZlbnRMaXN0ZW5lckVudHJpZXMuZmlu
ZChldmVudExpc3RlbmVySWQpOwogICAgIGlmIChpdCA9PSBtX2V2ZW50TGlzdGVuZXJFbnRyaWVz
LmVuZCgpKSB7Ci0gICAgICAgIGVycm9yU3RyaW5nID0gIk5vIGV2ZW50IGxpc3RlbmVyIGZvciBn
aXZlbiBpZGVudGlmaWVyLiJfczsKKyAgICAgICAgZXJyb3JTdHJpbmcgPSAiTWlzc2luZyBldmVu
dCBsaXN0ZW5lciBmb3IgZ2l2ZW4gZXZlbnRMaXN0ZW5lcklkIl9zOwogICAgICAgICByZXR1cm47
CiAgICAgfQogCkBAIC0xMDExLDEyICsxMDA3LDEyIEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6
OnBlcmZvcm1TZWFyY2goRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIHF1
CiAgICAgaWYgKG5vZGVJZHMpIHsKICAgICAgICAgZm9yIChhdXRvJiBub2RlVmFsdWUgOiAqbm9k
ZUlkcykgewogICAgICAgICAgICAgaWYgKCFub2RlVmFsdWUpIHsKLSAgICAgICAgICAgICAgICBl
cnJvclN0cmluZyA9ICJJbnZhbGlkIG5vZGVJZHMgaXRlbS4iX3M7CisgICAgICAgICAgICAgICAg
ZXJyb3JTdHJpbmcgPSAiVW5leHBlY3RlZCBub24taW50ZWdlciBpdGVtIGluIGdpdmVuIG5vZGVJ
ZHMiX3M7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogICAgICAgICAg
ICAgaW50IG5vZGVJZCA9IDA7CiAgICAgICAgICAgICBpZiAoIW5vZGVWYWx1ZS0+YXNJbnRlZ2Vy
KG5vZGVJZCkpIHsKLSAgICAgICAgICAgICAgICBlcnJvclN0cmluZyA9ICJJbnZhbGlkIG5vZGVJ
ZHMgaXRlbSB0eXBlLiBFeHBlY3RpbmcgaW50ZWdlciB0eXBlcy4iX3M7CisgICAgICAgICAgICAg
ICAgZXJyb3JTdHJpbmcgPSAiVW5leHBlY3RlZCBub24taW50ZWdlciBpdGVtIGluIGdpdmVuIG5v
ZGVJZHMiX3M7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogICAgICAg
ICAgICAgTm9kZSogbm9kZSA9IGFzc2VydE5vZGUoZXJyb3JTdHJpbmcsIG5vZGVJZCk7CkBAIC0x
MDQ2LDEzICsxMDQyLDEzIEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmdldFNlYXJjaFJlc3Vs
dHMoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmCiB7CiAgICAgU2VhcmNo
UmVzdWx0czo6aXRlcmF0b3IgaXQgPSBtX3NlYXJjaFJlc3VsdHMuZmluZChzZWFyY2hJZCk7CiAg
ICAgaWYgKGl0ID09IG1fc2VhcmNoUmVzdWx0cy5lbmQoKSkgewotICAgICAgICBlcnJvclN0cmlu
ZyA9ICJObyBzZWFyY2ggc2Vzc2lvbiB3aXRoIGdpdmVuIGlkIGZvdW5kIl9zOworICAgICAgICBl
cnJvclN0cmluZyA9ICJNaXNzaW5nIHNlYXJjaCByZXN1bHQgZm9yIGdpdmVuIHNlYXJjaElkIl9z
OwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgaW50IHNpemUgPSBpdC0+dmFsdWUuc2l6
ZSgpOwogICAgIGlmIChmcm9tSW5kZXggPCAwIHx8IHRvSW5kZXggPiBzaXplIHx8IGZyb21JbmRl
eCA+PSB0b0luZGV4KSB7Ci0gICAgICAgIGVycm9yU3RyaW5nID0gIkludmFsaWQgc2VhcmNoIHJl
c3VsdCByYW5nZSJfczsKKyAgICAgICAgZXJyb3JTdHJpbmcgPSAiSW52YWxpZCBzZWFyY2ggcmVz
dWx0IHJhbmdlIGZvciBnaXZlbiBmcm9tSW5kZXggYW5kIHRvSW5kZXgiX3M7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKQEAgLTEwOTIsOSArMTA4OCw5IEBAIGJvb2wgSW5zcGVjdG9yRE9NQWdl
bnQ6OmhhbmRsZVRvdWNoRXZlbnQoTm9kZSYgbm9kZSkKIAogdm9pZCBJbnNwZWN0b3JET01BZ2Vu
dDo6aW5zcGVjdChOb2RlKiBpbnNwZWN0ZWROb2RlKQogewotICAgIEVycm9yU3RyaW5nIHVudXNl
ZDsKKyAgICBFcnJvclN0cmluZyBpZ25vcmVkOwogICAgIFJlZlB0cjxOb2RlPiBub2RlID0gaW5z
cGVjdGVkTm9kZTsKLSAgICBzZXRTZWFyY2hpbmdGb3JOb2RlKHVudXNlZCwgZmFsc2UsIG51bGxw
dHIsIGZhbHNlKTsKKyAgICBzZXRTZWFyY2hpbmdGb3JOb2RlKGlnbm9yZWQsIGZhbHNlLCBudWxs
cHRyLCBmYWxzZSk7CiAKICAgICBpZiAobm9kZS0+bm9kZVR5cGUoKSAhPSBOb2RlOjpFTEVNRU5U
X05PREUgJiYgbm9kZS0+bm9kZVR5cGUoKSAhPSBOb2RlOjpET0NVTUVOVF9OT0RFKQogICAgICAg
ICBub2RlID0gbm9kZS0+cGFyZW50Tm9kZSgpOwpAQCAtMTIwNCw3ICsxMjAwLDcgQEAgdm9pZCBJ
bnNwZWN0b3JET01BZ2VudDo6aGlnaGxpZ2h0UXVhZChFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcs
IGNvbnN0IEpTT046OkFycmEKIHsKICAgICBhdXRvIHF1YWQgPSBtYWtlVW5pcXVlPEZsb2F0UXVh
ZD4oKTsKICAgICBpZiAoIXBhcnNlUXVhZChxdWFkQXJyYXksIHF1YWQuZ2V0KCkpKSB7Ci0gICAg
ICAgIGVycm9yU3RyaW5nID0gIkludmFsaWQgUXVhZCBmb3JtYXQiX3M7CisgICAgICAgIGVycm9y
U3RyaW5nID0gIlVuZXhwZWN0ZWQgaW52YWxpZCBxdWFkQXJyYXkiX3M7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAgICAgaW5uZXJIaWdobGlnaHRRdWFkKFdURk1vdmUocXVhZCksIGNvbG9yLCBv
dXRsaW5lQ29sb3IsIHVzZVBhZ2VDb29yZGluYXRlcyk7CkBAIC0xMjI0LDI1ICsxMjIwLDIzIEBA
IHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmhpZ2hsaWdodFNlbGVjdG9yKEVycm9yU3RyaW5nJiBl
cnJvclN0cmluZywgY29uc3QgSlNPTjo6CiAgICAgUmVmUHRyPERvY3VtZW50PiBkb2N1bWVudDsK
IAogICAgIGlmIChmcmFtZUlkKSB7Ci0gICAgICAgIEZyYW1lKiBmcmFtZSA9IG1faW5zdHJ1bWVu
dGluZ0FnZW50cy5pbnNwZWN0b3JQYWdlQWdlbnQoKS0+ZnJhbWVGb3JJZCgqZnJhbWVJZCk7Ci0g
ICAgICAgIGlmICghZnJhbWUpIHsKLSAgICAgICAgICAgIGVycm9yU3RyaW5nID0gIk5vIGZyYW1l
IGZvciBnaXZlbiBpZCBmb3VuZCJfczsKKyAgICAgICAgYXV0byogZnJhbWUgPSBtX2luc3RydW1l
bnRpbmdBZ2VudHMuaW5zcGVjdG9yUGFnZUFnZW50KCktPmFzc2VydEZyYW1lKGVycm9yU3RyaW5n
LCAqZnJhbWVJZCk7CisgICAgICAgIGlmICghZnJhbWUpCiAgICAgICAgICAgICByZXR1cm47Ci0g
ICAgICAgIH0KIAogICAgICAgICBkb2N1bWVudCA9IGZyYW1lLT5kb2N1bWVudCgpOwogICAgIH0g
ZWxzZQogICAgICAgICBkb2N1bWVudCA9IG1fZG9jdW1lbnQ7CiAKICAgICBpZiAoIWRvY3VtZW50
KSB7Ci0gICAgICAgIGVycm9yU3RyaW5nID0gIkRvY3VtZW50IGNvdWxkIG5vdCBiZSBmb3VuZCJf
czsKKyAgICAgICAgZXJyb3JTdHJpbmcgPSAiTWlzc2luZyBkb2N1bWVudCBvZiBmcmFtZSBmb3Ig
Z2l2ZW4gZnJhbWVJZCJfczsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGF1dG8gcXVl
cnlSZXN1bHQgPSBkb2N1bWVudC0+cXVlcnlTZWxlY3RvckFsbChzZWxlY3RvclN0cmluZyk7CiAg
ICAgLy8gRklYTUU6IDxodHRwczovL3dlYmtpdC5vcmcvYi8xNDYxNjE+IFdlYiBJbnNwZWN0b3I6
IERPTS5oaWdobGlnaHRTZWxlY3RvciBzaG91bGQgd29yayBmb3IgImE6dmlzaXRlZCIKICAgICBp
ZiAocXVlcnlSZXN1bHQuaGFzRXhjZXB0aW9uKCkpIHsKLSAgICAgICAgZXJyb3JTdHJpbmcgPSAi
RE9NIEVycm9yIHdoaWxlIHF1ZXJ5aW5nIl9zOworICAgICAgICBlcnJvclN0cmluZyA9ICJET00g
RXJyb3Igd2hpbGUgcXVlcnlpbmcgd2l0aCBnaXZlbiBzZWxlY3RvclN0cmluZyJfczsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTI2MSw3ICsxMjU1LDcgQEAgdm9pZCBJbnNwZWN0b3JE
T01BZ2VudDo6aGlnaGxpZ2h0Tm9kZShFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IEpT
T046Ok9iamUKICAgICBlbHNlIGlmIChvYmplY3RJZCkgewogICAgICAgICBub2RlID0gbm9kZUZv
ck9iamVjdElkKCpvYmplY3RJZCk7CiAgICAgICAgIGlmICghbm9kZSkKLSAgICAgICAgICAgIGVy
cm9yU3RyaW5nID0gIk5vZGUgZm9yIGdpdmVuIG9iamVjdElkIG5vdCBmb3VuZCJfczsKKyAgICAg
ICAgICAgIGVycm9yU3RyaW5nID0gIk1pc3Npbmcgbm9kZSBmb3IgZ2l2ZW4gb2JqZWN0SWQiX3M7
CiAgICAgfSBlbHNlCiAgICAgICAgIGVycm9yU3RyaW5nID0gIkVpdGhlciBub2RlSWQgb3Igb2Jq
ZWN0SWQgbXVzdCBiZSBzcGVjaWZpZWQiX3M7CiAKQEAgLTEyODAsMTMgKzEyNzQsMTMgQEAgdm9p
ZCBJbnNwZWN0b3JET01BZ2VudDo6aGlnaGxpZ2h0Tm9kZUxpc3QoRXJyb3JTdHJpbmcmIGVycm9y
U3RyaW5nLCBjb25zdCBKU09OOjoKICAgICBWZWN0b3I8UmVmPE5vZGU+PiBub2RlczsKICAgICBm
b3IgKGF1dG8mIG5vZGVWYWx1ZSA6IG5vZGVJZHMpIHsKICAgICAgICAgaWYgKCFub2RlVmFsdWUp
IHsKLSAgICAgICAgICAgIGVycm9yU3RyaW5nID0gIkludmFsaWQgbm9kZUlkcyBpdGVtLiJfczsK
KyAgICAgICAgICAgIGVycm9yU3RyaW5nID0gIlVuZXhwZWN0ZWQgbm9uLWludGVnZXIgaXRlbSBp
biBnaXZlbiBub2RlSWRzIl9zOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKICAg
ICAgICAgaW50IG5vZGVJZCA9IDA7CiAgICAgICAgIGlmICghbm9kZVZhbHVlLT5hc0ludGVnZXIo
bm9kZUlkKSkgewotICAgICAgICAgICAgZXJyb3JTdHJpbmcgPSAiSW52YWxpZCBub2RlSWRzIGl0
ZW0gdHlwZS4gRXhwZWN0aW5nIGludGVnZXIgdHlwZXMuIl9zOworICAgICAgICAgICAgZXJyb3JT
dHJpbmcgPSAiVW5leHBlY3RlZCBub24taW50ZWdlciBpdGVtIGluIGdpdmVuIG5vZGVJZHMiX3M7
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApAQCAtMTM0NSw3ICsxMzM5LDcgQEAg
dm9pZCBJbnNwZWN0b3JET01BZ2VudDo6bW92ZVRvKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywg
aW50IG5vZGVJZCwgaW50IHRhcmdldEUKICAgICAgICAgaWYgKCFhbmNob3JOb2RlKQogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICBpZiAoYW5jaG9yTm9kZS0+cGFyZW50Tm9kZSgpICE9IHRh
cmdldEVsZW1lbnQpIHsKLSAgICAgICAgICAgIGVycm9yU3RyaW5nID0gIkFuY2hvciBub2RlIG11
c3QgYmUgY2hpbGQgb2YgdGhlIHRhcmdldCBlbGVtZW50Il9zOworICAgICAgICAgICAgZXJyb3JT
dHJpbmcgPSAiR2l2ZW4gYW5jaG9yTm9kZUlkIG11c3QgYmUgYSBjaGlsZCBvZiBnaXZlbiB0YXJn
ZXRFbGVtZW50SWQiX3M7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICB9CkBA
IC0xMzgxLDcgKzEzNzUsNyBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50Ojpmb2N1cyhFcnJvclN0
cmluZyYgZXJyb3JTdHJpbmcsIGludCBub2RlSWQpCiAgICAgaWYgKCFlbGVtZW50KQogICAgICAg
ICByZXR1cm47CiAgICAgaWYgKCFlbGVtZW50LT5pc0ZvY3VzYWJsZSgpKSB7Ci0gICAgICAgIGVy
cm9yU3RyaW5nID0gIkVsZW1lbnQgaXMgbm90IGZvY3VzYWJsZSJfczsKKyAgICAgICAgZXJyb3JT
dHJpbmcgPSAiRWxlbWVudCBmb3IgZ2l2ZW4gbm9kZUlkIGlzIG5vdCBmb2N1c2FibGUiX3M7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAgICAgZWxlbWVudC0+Zm9jdXMoKTsKQEAgLTEzODksOSAr
MTM4MywxMiBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50Ojpmb2N1cyhFcnJvclN0cmluZyYgZXJy
b3JTdHJpbmcsIGludCBub2RlSWQpCiAKIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OnNldEluc3Bl
Y3RlZE5vZGUoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBpbnQgbm9kZUlkKQogewotICAgIE5v
ZGUqIG5vZGUgPSBub2RlRm9ySWQobm9kZUlkKTsKLSAgICBpZiAoIW5vZGUgfHwgbm9kZS0+aXNJ
blVzZXJBZ2VudFNoYWRvd1RyZWUoKSkgewotICAgICAgICBlcnJvclN0cmluZyA9ICJObyBub2Rl
IHdpdGggZ2l2ZW4gaWQgZm91bmQiX3M7CisgICAgTm9kZSogbm9kZSA9IGFzc2VydE5vZGUoZXJy
b3JTdHJpbmcsIG5vZGVJZCk7CisgICAgaWYgKCFub2RlKQorICAgICAgICByZXR1cm47CisKKyAg
ICBpZiAobm9kZS0+aXNJblVzZXJBZ2VudFNoYWRvd1RyZWUoKSkgeworICAgICAgICBlcnJvclN0
cmluZyA9ICJOb2RlIGZvciBnaXZlbiBub2RlSWQgaXMgaW4gYSBzaGFkb3cgdHJlZSJfczsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTQwNiwxNCArMTQwMywxMiBAQCB2b2lkIEluc3Bl
Y3RvckRPTUFnZW50OjpzZXRJbnNwZWN0ZWROb2RlKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywg
aW50IG5vZGVJZCkKIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OnJlc29sdmVOb2RlKEVycm9yU3Ry
aW5nJiBlcnJvclN0cmluZywgaW50IG5vZGVJZCwgY29uc3QgU3RyaW5nKiBvYmplY3RHcm91cCwg
UmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4mIHJlc3Vs
dCkKIHsKICAgICBTdHJpbmcgb2JqZWN0R3JvdXBOYW1lID0gb2JqZWN0R3JvdXAgPyAqb2JqZWN0
R3JvdXAgOiBlbXB0eVN0cmluZygpOwotICAgIE5vZGUqIG5vZGUgPSBub2RlRm9ySWQobm9kZUlk
KTsKLSAgICBpZiAoIW5vZGUpIHsKLSAgICAgICAgZXJyb3JTdHJpbmcgPSAiTm8gbm9kZSB3aXRo
IGdpdmVuIGlkIGZvdW5kIl9zOworICAgIE5vZGUqIG5vZGUgPSBhc3NlcnROb2RlKGVycm9yU3Ry
aW5nLCBub2RlSWQpOworICAgIGlmICghbm9kZSkKICAgICAgICAgcmV0dXJuOwotICAgIH0KICAg
ICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiBvYmpl
Y3QgPSByZXNvbHZlTm9kZShub2RlLCBvYmplY3RHcm91cE5hbWUpOwogICAgIGlmICghb2JqZWN0
KSB7Ci0gICAgICAgIGVycm9yU3RyaW5nID0gIk5vZGUgd2l0aCBnaXZlbiBpZCBkb2VzIG5vdCBi
ZWxvbmcgdG8gdGhlIGRvY3VtZW50Il9zOworICAgICAgICBlcnJvclN0cmluZyA9ICJNaXNzaW5n
IGluamVjdGVkIHNjcmlwdCBmb3IgZ2l2ZW4gbm9kZUlkIl9zOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogICAgIHJlc3VsdCA9IG9iamVjdDsKQEAgLTI1NzMsNyArMjU2OCw3IEBAIHZvaWQgSW5z
cGVjdG9yRE9NQWdlbnQ6OnB1c2hOb2RlQnlQYXRoVG9Gcm9udGVuZChFcnJvclN0cmluZyYgZXJy
b3JTdHJpbmcsIGNvbnN0CiAgICAgaWYgKE5vZGUqIG5vZGUgPSBub2RlRm9yUGF0aChwYXRoKSkK
ICAgICAgICAgKm5vZGVJZCA9IHB1c2hOb2RlUGF0aFRvRnJvbnRlbmQobm9kZSk7CiAgICAgZWxz
ZQotICAgICAgICBlcnJvclN0cmluZyA9ICJObyBub2RlIHdpdGggZ2l2ZW4gcGF0aCBmb3VuZCJf
czsKKyAgICAgICAgZXJyb3JTdHJpbmcgPSAiTWlzc2luZyBub2RlIGZvciBnaXZlbiBwYXRoIl9z
OwogfQogCiBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6UmVtb3RlT2JqZWN0
PiBJbnNwZWN0b3JET01BZ2VudDo6cmVzb2x2ZU5vZGUoTm9kZSogbm9kZSwgY29uc3QgU3RyaW5n
JiBvYmplY3RHcm91cCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2Vu
dHMvSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQuY3BwCmluZGV4IDQ1ZTJmYTlhOGRh
MTIwODY3Yjg3ZTE4ZDM4MWMyYWZiNTM5YzE5MDcuLmU2MDVmMTg5ZmJkZDg5Nzk2MDI2Y2YxMjky
OWIyYmQ2Mzk4YTBmNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2Vu
dHMvSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50LmNwcApAQCAtMTMwLDEzICsx
MzAsMTMgQEAgdm9pZCBJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50OjpmcmFtZURvY3VtZW50VXBk
YXRlZChGcmFtZSYgZnJhbWUpCiB2b2lkIEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6OnNldEV2
ZW50QnJlYWtwb2ludChFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgYnJl
YWtwb2ludFR5cGVTdHJpbmcsIGNvbnN0IFN0cmluZyogZXZlbnROYW1lKQogewogICAgIGlmIChi
cmVha3BvaW50VHlwZVN0cmluZy5pc0VtcHR5KCkpIHsKLSAgICAgICAgZXJyb3JTdHJpbmcgPSAi
RXZlbnQgYnJlYWtwb2ludCB0eXBlIGlzIGVtcHR5Il9zOworICAgICAgICBlcnJvclN0cmluZyA9
ICJicmVha3BvaW50VHlwZSBpcyBlbXB0eSJfczsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAog
ICAgIGF1dG8gYnJlYWtwb2ludFR5cGUgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpJbnNwZWN0b3JI
ZWxwZXJzOjpwYXJzZUVudW1WYWx1ZUZyb21TdHJpbmc8SW5zcGVjdG9yOjpQcm90b2NvbDo6RE9N
RGVidWdnZXI6OkV2ZW50QnJlYWtwb2ludFR5cGU+KGJyZWFrcG9pbnRUeXBlU3RyaW5nKTsKICAg
ICBpZiAoIWJyZWFrcG9pbnRUeXBlKSB7Ci0gICAgICAgIGVycm9yU3RyaW5nID0gbWFrZVN0cmlu
ZygiVW5rbm93biBldmVudCBicmVha3BvaW50IHR5cGU6ICJfcywgYnJlYWtwb2ludFR5cGVTdHJp
bmcpOworICAgICAgICBlcnJvclN0cmluZyA9IG1ha2VTdHJpbmcoIlVua25vd24gYnJlYWtwb2lu
dFR5cGU6ICJfcywgYnJlYWtwb2ludFR5cGVTdHJpbmcpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCkBAIC0xNDcsMzIgKzE0NywzMiBAQCB2b2lkIEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6
OnNldEV2ZW50QnJlYWtwb2ludChFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbgogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgZXJyb3JTdHJpbmcgPSAiVW5leHBl
Y3RlZCBldmVudE5hbWUgYXJndW1lbnQiX3M7CisgICAgICAgIGVycm9yU3RyaW5nID0gIlVuZXhw
ZWN0ZWQgZXZlbnROYW1lIl9zOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgc3dpdGNo
IChicmVha3BvaW50VHlwZS52YWx1ZSgpKSB7CiAgICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29s
OjpET01EZWJ1Z2dlcjo6RXZlbnRCcmVha3BvaW50VHlwZTo6QW5pbWF0aW9uRnJhbWU6CiAgICAg
ICAgIGlmIChtX3BhdXNlT25BbGxBbmltYXRpb25GcmFtZXNFbmFibGVkKQotICAgICAgICAgICAg
ZXJyb3JTdHJpbmcgPSAiQWxyZWFkeSBoYXZlIGJyZWFrcG9pbnQgZm9yIGFsbCBhbmltYXRpb24g
ZnJhbWVzIl9zOworICAgICAgICAgICAgZXJyb3JTdHJpbmcgPSAiQnJlYWtwb2ludCBmb3IgQW5p
bWF0aW9uRnJhbWUgYWxyZWFkeSBleGlzdHMiX3M7CiAgICAgICAgIG1fcGF1c2VPbkFsbEFuaW1h
dGlvbkZyYW1lc0VuYWJsZWQgPSB0cnVlOwogICAgICAgICBicmVhazsKIAogICAgIGNhc2UgSW5z
cGVjdG9yOjpQcm90b2NvbDo6RE9NRGVidWdnZXI6OkV2ZW50QnJlYWtwb2ludFR5cGU6OkludGVy
dmFsOgogICAgICAgICBpZiAobV9wYXVzZU9uQWxsSW50ZXJ2YWxzRW5hYmxlZCkKLSAgICAgICAg
ICAgIGVycm9yU3RyaW5nID0gIkFscmVhZHkgaGF2ZSBicmVha3BvaW50IGZvciBhbGwgaW50ZXJ2
YWxzIl9zOworICAgICAgICAgICAgZXJyb3JTdHJpbmcgPSAiQnJlYWtwb2ludCBmb3IgSW50ZXJ2
YWwgYWxyZWFkeSBleGlzdHMiX3M7CiAgICAgICAgIG1fcGF1c2VPbkFsbEludGVydmFsc0VuYWJs
ZWQgPSB0cnVlOwogICAgICAgICBicmVhazsKIAogICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2Nv
bDo6RE9NRGVidWdnZXI6OkV2ZW50QnJlYWtwb2ludFR5cGU6Okxpc3RlbmVyOgogICAgICAgICBp
ZiAobV9wYXVzZU9uQWxsTGlzdGVuZXJzRW5hYmxlZCkKLSAgICAgICAgICAgIGVycm9yU3RyaW5n
ID0gIkFscmVhZHkgaGF2ZSBicmVha3BvaW50IGZvciBhbGwgbGlzdGVuZXJzIl9zOworICAgICAg
ICAgICAgZXJyb3JTdHJpbmcgPSAiQnJlYWtwb2ludCBmb3IgTGlzdGVuZXIgYWxyZWFkeSBleGlz
dHMiX3M7CiAgICAgICAgIG1fcGF1c2VPbkFsbExpc3RlbmVyc0VuYWJsZWQgPSB0cnVlOwogICAg
ICAgICBicmVhazsKIAogICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NRGVidWdnZXI6
OkV2ZW50QnJlYWtwb2ludFR5cGU6OlRpbWVvdXQ6CiAgICAgICAgIGlmIChtX3BhdXNlT25BbGxU
aW1lb3V0c0VuYWJsZWQpCi0gICAgICAgICAgICBlcnJvclN0cmluZyA9ICJBbHJlYWR5IGhhdmUg
YnJlYWtwb2ludCBmb3IgYWxsIHRpbWVvdXRzIl9zOworICAgICAgICAgICAgZXJyb3JTdHJpbmcg
PSAiQnJlYWtwb2ludCBmb3IgVGltZW91dCBhbHJlYWR5IGV4aXN0cyJfczsKICAgICAgICAgbV9w
YXVzZU9uQWxsVGltZW91dHNFbmFibGVkID0gdHJ1ZTsKICAgICAgICAgYnJlYWs7CiAgICAgfQpA
QCAtMTgxLDQ5ICsxODEsNDkgQEAgdm9pZCBJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50OjpzZXRF
dmVudEJyZWFrcG9pbnQoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb24KIHZvaWQgSW5zcGVj
dG9yRE9NRGVidWdnZXJBZ2VudDo6cmVtb3ZlRXZlbnRCcmVha3BvaW50KEVycm9yU3RyaW5nJiBl
cnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBicmVha3BvaW50VHlwZVN0cmluZywgY29uc3QgU3Ry
aW5nKiBldmVudE5hbWUpCiB7CiAgICAgaWYgKGJyZWFrcG9pbnRUeXBlU3RyaW5nLmlzRW1wdHko
KSkgewotICAgICAgICBlcnJvclN0cmluZyA9ICJFdmVudCBicmVha3BvaW50IHR5cGUgaXMgZW1w
dHkiX3M7CisgICAgICAgIGVycm9yU3RyaW5nID0gImJyZWFrcG9pbnRUeXBlIGlzIGVtcHR5Il9z
OwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgYXV0byBicmVha3BvaW50VHlwZSA9IElu
c3BlY3Rvcjo6UHJvdG9jb2w6Okluc3BlY3RvckhlbHBlcnM6OnBhcnNlRW51bVZhbHVlRnJvbVN0
cmluZzxJbnNwZWN0b3I6OlByb3RvY29sOjpET01EZWJ1Z2dlcjo6RXZlbnRCcmVha3BvaW50VHlw
ZT4oYnJlYWtwb2ludFR5cGVTdHJpbmcpOwogICAgIGlmICghYnJlYWtwb2ludFR5cGUpIHsKLSAg
ICAgICAgZXJyb3JTdHJpbmcgPSBtYWtlU3RyaW5nKCJVbmtub3duIGV2ZW50IGJyZWFrcG9pbnQg
dHlwZTogIl9zLCBicmVha3BvaW50VHlwZVN0cmluZyk7CisgICAgICAgIGVycm9yU3RyaW5nID0g
bWFrZVN0cmluZygiVW5rbm93biBicmVha3BvaW50VHlwZTogIl9zLCBicmVha3BvaW50VHlwZVN0
cmluZyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBpZiAoZXZlbnROYW1lICYmICFl
dmVudE5hbWUtPmlzRW1wdHkoKSkgewogICAgICAgICBpZiAoYnJlYWtwb2ludFR5cGUudmFsdWUo
KSA9PSBJbnNwZWN0b3I6OlByb3RvY29sOjpET01EZWJ1Z2dlcjo6RXZlbnRCcmVha3BvaW50VHlw
ZTo6TGlzdGVuZXIpIHsKICAgICAgICAgICAgIGlmICghbV9saXN0ZW5lckJyZWFrcG9pbnRzLnJl
bW92ZSgqZXZlbnROYW1lKSkKLSAgICAgICAgICAgICAgICBlcnJvclN0cmluZyA9ICJNaXNzaW5n
IGJyZWFrcG9pbnQgZm9yIGV2ZW50TmFtZSJfczsKKyAgICAgICAgICAgICAgICBlcnJvclN0cmlu
ZyA9ICJCcmVha3BvaW50IGZvciBnaXZlbiBldmVudE5hbWUgbWlzc2luZyJfczsKICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIGVycm9yU3RyaW5nID0gIlVuZXhwZWN0
ZWQgZXZlbnROYW1lIGFyZ3VtZW50Il9zOworICAgICAgICBlcnJvclN0cmluZyA9ICJVbmV4cGVj
dGVkIGV2ZW50TmFtZSJfczsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIHN3aXRjaCAo
YnJlYWtwb2ludFR5cGUudmFsdWUoKSkgewogICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6
RE9NRGVidWdnZXI6OkV2ZW50QnJlYWtwb2ludFR5cGU6OkFuaW1hdGlvbkZyYW1lOgogICAgICAg
ICBpZiAoIW1fcGF1c2VPbkFsbEFuaW1hdGlvbkZyYW1lc0VuYWJsZWQpCi0gICAgICAgICAgICBl
cnJvclN0cmluZyA9ICJNaXNzaW5nIGJyZWFrcG9pbnQgZm9yIGFsbCBhbmltYXRpb24gZnJhbWVz
Il9zOworICAgICAgICAgICAgZXJyb3JTdHJpbmcgPSAiQnJlYWtwb2ludCBmb3IgQW5pbWF0aW9u
RnJhbWUgbWlzc2luZyJfczsKICAgICAgICAgbV9wYXVzZU9uQWxsQW5pbWF0aW9uRnJhbWVzRW5h
YmxlZCA9IGZhbHNlOwogICAgICAgICBicmVhazsKIAogICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90
b2NvbDo6RE9NRGVidWdnZXI6OkV2ZW50QnJlYWtwb2ludFR5cGU6OkludGVydmFsOgogICAgICAg
ICBpZiAoIW1fcGF1c2VPbkFsbEludGVydmFsc0VuYWJsZWQpCi0gICAgICAgICAgICBlcnJvclN0
cmluZyA9ICJNaXNzaW5nIGJyZWFrcG9pbnQgZm9yIGFsbCBpbnRlcnZhbHMiX3M7CisgICAgICAg
ICAgICBlcnJvclN0cmluZyA9ICJCcmVha3BvaW50IGZvciBJbnRlcnZhbHMgbWlzc2luZyJfczsK
ICAgICAgICAgbV9wYXVzZU9uQWxsSW50ZXJ2YWxzRW5hYmxlZCA9IGZhbHNlOwogICAgICAgICBi
cmVhazsKIAogICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NRGVidWdnZXI6OkV2ZW50
QnJlYWtwb2ludFR5cGU6Okxpc3RlbmVyOgogICAgICAgICBpZiAoIW1fcGF1c2VPbkFsbExpc3Rl
bmVyc0VuYWJsZWQpCi0gICAgICAgICAgICBlcnJvclN0cmluZyA9ICJNaXNzaW5nIGJyZWFrcG9p
bnQgZm9yIGFsbCBsaXN0ZW5lcnMiX3M7CisgICAgICAgICAgICBlcnJvclN0cmluZyA9ICJCcmVh
a3BvaW50IGZvciBMaXN0ZW5lcnMgbWlzc2luZyJfczsKICAgICAgICAgbV9wYXVzZU9uQWxsTGlz
dGVuZXJzRW5hYmxlZCA9IGZhbHNlOwogICAgICAgICBicmVhazsKIAogICAgIGNhc2UgSW5zcGVj
dG9yOjpQcm90b2NvbDo6RE9NRGVidWdnZXI6OkV2ZW50QnJlYWtwb2ludFR5cGU6OlRpbWVvdXQ6
CiAgICAgICAgIGlmICghbV9wYXVzZU9uQWxsVGltZW91dHNFbmFibGVkKQotICAgICAgICAgICAg
ZXJyb3JTdHJpbmcgPSAiTWlzc2luZyBicmVha3BvaW50IGZvciBhbGwgdGltZW91dHMiX3M7Cisg
ICAgICAgICAgICBlcnJvclN0cmluZyA9ICJCcmVha3BvaW50IGZvciBUaW1lb3V0cyBtaXNzaW5n
Il9zOwogICAgICAgICBtX3BhdXNlT25BbGxUaW1lb3V0c0VuYWJsZWQgPSBmYWxzZTsKICAgICAg
ICAgYnJlYWs7CiAgICAgfQpAQCAtMjc3LDcgKzI3Nyw3IEBAIHN0YXRpYyBpbnQgZG9tVHlwZUZv
ck5hbWUoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIHR5cGVTdHJpbmcp
CiAgICAgICAgIHJldHVybiBBdHRyaWJ1dGVNb2RpZmllZDsKICAgICBpZiAodHlwZVN0cmluZyA9
PSAibm9kZS1yZW1vdmVkIikKICAgICAgICAgcmV0dXJuIE5vZGVSZW1vdmVkOwotICAgIGVycm9y
U3RyaW5nID0gbWFrZVN0cmluZygiVW5rbm93biBET00gYnJlYWtwb2ludCB0eXBlOiAiLCB0eXBl
U3RyaW5nKTsKKyAgICBlcnJvclN0cmluZyA9IG1ha2VTdHJpbmcoIlVua25vd24gdHlwZTogIiwg
dHlwZVN0cmluZyk7CiAgICAgcmV0dXJuIC0xOwogfQogCkBAIC0yOTYsNyArMjk2LDcgQEAgdm9p
ZCBJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50OjpzZXRET01CcmVha3BvaW50KEVycm9yU3RyaW5n
JiBlcnJvclN0cmluZywgaW50IG4KIHsKICAgICBhdXRvKiBkb21BZ2VudCA9IG1faW5zdHJ1bWVu
dGluZ0FnZW50cy5pbnNwZWN0b3JET01BZ2VudCgpOwogICAgIGlmICghZG9tQWdlbnQpIHsKLSAg
ICAgICAgZXJyb3JTdHJpbmcgPSAiTWlzc2luZyBET00gYWdlbnQiX3M7CisgICAgICAgIGVycm9y
U3RyaW5nID0gIkRPTSBkb21haW4gbXVzdCBiZSBlbmFibGVkIl9zOwogICAgICAgICByZXR1cm47
CiAgICAgfQogCkBAIC0zMjAsNyArMzIwLDcgQEAgdm9pZCBJbnNwZWN0b3JET01EZWJ1Z2dlckFn
ZW50OjpyZW1vdmVET01CcmVha3BvaW50KEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgaW4KIHsK
ICAgICBhdXRvKiBkb21BZ2VudCA9IG1faW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JET01B
Z2VudCgpOwogICAgIGlmICghZG9tQWdlbnQpIHsKLSAgICAgICAgZXJyb3JTdHJpbmcgPSAiTWlz
c2luZyBET00gYWdlbnQiX3M7CisgICAgICAgIGVycm9yU3RyaW5nID0gIkRPTSBkb21haW4gbXVz
dCBiZSBlbmFibGVkIl9zOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC01MTQsMjUgKzUx
NCwzMyBAQCB2b2lkIEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6OndpbGxGaXJlQW5pbWF0aW9u
RnJhbWUoKQogICAgIG1fZGVidWdnZXJBZ2VudC0+c2NoZWR1bGVQYXVzZU9uTmV4dFN0YXRlbWVu
dChJbnNwZWN0b3I6OkRlYnVnZ2VyRnJvbnRlbmREaXNwYXRjaGVyOjpSZWFzb246OkFuaW1hdGlv
bkZyYW1lLCBudWxscHRyKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50Ojpz
ZXRVUkxCcmVha3BvaW50KEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IGJv
b2wqIG9wdGlvbmFsSXNSZWdleCkKK3ZvaWQgSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6c2V0
VVJMQnJlYWtwb2ludChFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgdXJs
LCBjb25zdCBib29sKiBvcHRpb25hbElzUmVnZXgpCiB7CiAgICAgaWYgKHVybC5pc0VtcHR5KCkp
IHsKKyAgICAgICAgaWYgKG1fcGF1c2VPbkFsbFVSTHNFbmFibGVkKQorICAgICAgICAgICAgZXJy
b3JTdHJpbmcgPSAiQnJlYWtwb2ludCBmb3IgYWxsIFVSTHMgYWxyZWFkeSBleGlzdHMiX3M7CiAg
ICAgICAgIG1fcGF1c2VPbkFsbFVSTHNFbmFibGVkID0gdHJ1ZTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAogICAgIGJvb2wgaXNSZWdleCA9IG9wdGlvbmFsSXNSZWdleCA/ICpvcHRpb25hbElz
UmVnZXggOiBmYWxzZTsKLSAgICBtX3VybEJyZWFrcG9pbnRzLnNldCh1cmwsIGlzUmVnZXggPyBV
UkxCcmVha3BvaW50VHlwZTo6UmVndWxhckV4cHJlc3Npb24gOiBVUkxCcmVha3BvaW50VHlwZTo6
VGV4dCk7CisgICAgYXV0byByZXN1bHQgPSBtX3VybEJyZWFrcG9pbnRzLnNldCh1cmwsIGlzUmVn
ZXggPyBVUkxCcmVha3BvaW50VHlwZTo6UmVndWxhckV4cHJlc3Npb24gOiBVUkxCcmVha3BvaW50
VHlwZTo6VGV4dCk7CisgICAgaWYgKCFyZXN1bHQuaXNOZXdFbnRyeSkKKyAgICAgICAgZXJyb3JT
dHJpbmcgPSAiQnJlYWtwb2ludCBmb3IgZ2l2ZW4gdXJsIGFscmVhZHkgZXhpc3RzIl9zOwogfQog
Ci12b2lkIEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6OnJlbW92ZVVSTEJyZWFrcG9pbnQoRXJy
b3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHVybCkKK3ZvaWQgSW5zcGVjdG9yRE9NRGVidWdnZXJB
Z2VudDo6cmVtb3ZlVVJMQnJlYWtwb2ludChFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0
IFN0cmluZyYgdXJsKQogewogICAgIGlmICh1cmwuaXNFbXB0eSgpKSB7CisgICAgICAgIGlmICgh
bV9wYXVzZU9uQWxsVVJMc0VuYWJsZWQpCisgICAgICAgICAgICBlcnJvclN0cmluZyA9ICJCcmVh
a3BvaW50IGZvciBhbGwgVVJMcyBtaXNzaW5nIl9zOwogICAgICAgICBtX3BhdXNlT25BbGxVUkxz
RW5hYmxlZCA9IGZhbHNlOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbV91cmxCcmVh
a3BvaW50cy5yZW1vdmUodXJsKTsKKyAgICBhdXRvIHJlc3VsdCA9IG1fdXJsQnJlYWtwb2ludHMu
cmVtb3ZlKHVybCk7CisgICAgaWYgKCFyZXN1bHQpCisgICAgICAgIGVycm9yU3RyaW5nID0gIkJy
ZWFrcG9pbnQgZm9yIGdpdmVuIHVybCBtaXNzaW5nIl9zOwogfQogCiB2b2lkIEluc3BlY3RvckRP
TURlYnVnZ2VyQWdlbnQ6OmJyZWFrT25VUkxJZk5lZWRlZChjb25zdCBTdHJpbmcmIHVybCwgVVJM
QnJlYWtwb2ludFNvdXJjZSBzb3VyY2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5jcHAKaW5kZXggODFm
MTRkYzE3YmZhMDQ3NDdlM2QyM2U0NTNmNWU0YWY4ZDA5ZmQ4My4uNmExMjE2MDM5NDA3NjdkNDU2
MWRiYjZhZDRlYjYwNDQzZTQyOWVlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2FnZW50cy9JbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmNwcApAQCAtNjgs
MTQgKzY4LDE0IEBAIHZvaWQgSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50OjpkaWRDcmVhdGVGcm9u
dGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpGcm9udGVuZFJvCiAKIHZvaWQgSW5zcGVjdG9yRE9N
U3RvcmFnZUFnZW50Ojp3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkRp
c2Nvbm5lY3RSZWFzb24pCiB7Ci0gICAgRXJyb3JTdHJpbmcgdW51c2VkOwotICAgIGRpc2FibGUo
dW51c2VkKTsKKyAgICBFcnJvclN0cmluZyBpZ25vcmVkOworICAgIGRpc2FibGUoaWdub3JlZCk7
CiB9CiAKIHZvaWQgSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50OjplbmFibGUoRXJyb3JTdHJpbmcm
IGVycm9yU3RyaW5nKQogewogICAgIGlmIChtX2luc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9y
RE9NU3RvcmFnZUFnZW50KCkgPT0gdGhpcykgewotICAgICAgICBlcnJvclN0cmluZyA9ICJET01T
dG9yYWdlQWdlbnQgYWxyZWFkeSBlbmFibGVkIl9zOworICAgICAgICBlcnJvclN0cmluZyA9ICJE
T01TdG9yYWdlIGRvbWFpbiBhbHJlYWR5IGVuYWJsZWQiX3M7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKQEAgLTg1LDcgKzg1LDcgQEAgdm9pZCBJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQ6OmVu
YWJsZShFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcpCiB2b2lkIEluc3BlY3RvckRPTVN0b3JhZ2VB
Z2VudDo6ZGlzYWJsZShFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcpCiB7CiAgICAgaWYgKG1faW5z
dHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JET01TdG9yYWdlQWdlbnQoKSAhPSB0aGlzKSB7Ci0g
ICAgICAgIGVycm9yU3RyaW5nID0gIkRPTVN0b3JhZ2VBZ2VudCBhbHJlYWR5IGRpc2FibGVkIl9z
OworICAgICAgICBlcnJvclN0cmluZyA9ICJET01TdG9yYWdlIGRvbWFpbiBhbHJlYWR5IGRpc2Fi
bGVkIl9zOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC05Nyw3ICs5Nyw3IEBAIHZvaWQg
SW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50OjpnZXRET01TdG9yYWdlSXRlbXMoRXJyb3JTdHJpbmcm
IGVycm9yU3RyaW5nLCBjb25zCiAgICAgRnJhbWUqIGZyYW1lOwogICAgIFJlZlB0cjxTdG9yYWdl
QXJlYT4gc3RvcmFnZUFyZWEgPSBmaW5kU3RvcmFnZUFyZWEoZXJyb3JTdHJpbmcsIHN0b3JhZ2VJ
ZCwgZnJhbWUpOwogICAgIGlmICghc3RvcmFnZUFyZWEpIHsKLSAgICAgICAgZXJyb3JTdHJpbmcg
PSAiTm8gU3RvcmFnZUFyZWEgZm9yIGdpdmVuIHN0b3JhZ2VJZCJfczsKKyAgICAgICAgZXJyb3JT
dHJpbmcgPSAiTWlzc2luZyBzdG9yYWdlIGZvciBnaXZlbiBzdG9yYWdlSWQiX3M7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKQEAgLTEyMSw3ICsxMjEsNyBAQCB2b2lkIEluc3BlY3RvckRPTVN0
b3JhZ2VBZ2VudDo6c2V0RE9NU3RvcmFnZUl0ZW0oRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBj
b25zdAogICAgIEZyYW1lKiBmcmFtZTsKICAgICBSZWZQdHI8U3RvcmFnZUFyZWE+IHN0b3JhZ2VB
cmVhID0gZmluZFN0b3JhZ2VBcmVhKGVycm9yU3RyaW5nLCBzdG9yYWdlSWQsIGZyYW1lKTsKICAg
ICBpZiAoIXN0b3JhZ2VBcmVhKSB7Ci0gICAgICAgIGVycm9yU3RyaW5nID0gIlN0b3JhZ2Ugbm90
IGZvdW5kIl9zOworICAgICAgICBlcnJvclN0cmluZyA9ICJNaXNzaW5nIHN0b3JhZ2UgZm9yIGdp
dmVuIHN0b3JhZ2VJZCJfczsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTM2LDcgKzEz
Niw3IEBAIHZvaWQgSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50OjpyZW1vdmVET01TdG9yYWdlSXRl
bShFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvCiAgICAgRnJhbWUqIGZyYW1lOwogICAgIFJl
ZlB0cjxTdG9yYWdlQXJlYT4gc3RvcmFnZUFyZWEgPSBmaW5kU3RvcmFnZUFyZWEoZXJyb3JTdHJp
bmcsIHN0b3JhZ2VJZCwgZnJhbWUpOwogICAgIGlmICghc3RvcmFnZUFyZWEpIHsKLSAgICAgICAg
ZXJyb3JTdHJpbmcgPSAiU3RvcmFnZSBub3QgZm91bmQiX3M7CisgICAgICAgIGVycm9yU3RyaW5n
ID0gIk1pc3Npbmcgc3RvcmFnZSBmb3IgZ2l2ZW4gc3RvcmFnZUlkIl9zOwogICAgICAgICByZXR1
cm47CiAgICAgfQogCkBAIC0xNzksMTkgKzE3OSwyMCBAQCB2b2lkIEluc3BlY3RvckRPTVN0b3Jh
Z2VBZ2VudDo6ZGlkRGlzcGF0Y2hET01TdG9yYWdlRXZlbnQoY29uc3QgU3RyaW5nJiBrZXksIGNv
bgogUmVmUHRyPFN0b3JhZ2VBcmVhPiBJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQ6OmZpbmRTdG9y
YWdlQXJlYShFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IEpTT046Ok9iamVjdCYgc3Rv
cmFnZUlkLCBGcmFtZSomIHRhcmdldEZyYW1lKQogewogICAgIFN0cmluZyBzZWN1cml0eU9yaWdp
bjsKKyAgICBpZiAoIXN0b3JhZ2VJZC5nZXRTdHJpbmcoInNlY3VyaXR5T3JpZ2luIl9zLCBzZWN1
cml0eU9yaWdpbikpIHsKKyAgICAgICAgZXJyb3JTdHJpbmcgPSAiTWlzc2luZyBzZWN1cml0eU9y
aWdpbiBpbiBnaXZlbiBzdG9yYWdlSWQiOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9
CisKICAgICBib29sIGlzTG9jYWxTdG9yYWdlID0gZmFsc2U7Ci0gICAgYm9vbCBzdWNjZXNzID0g
c3RvcmFnZUlkLmdldFN0cmluZygic2VjdXJpdHlPcmlnaW4iX3MsIHNlY3VyaXR5T3JpZ2luKTsK
LSAgICBpZiAoc3VjY2VzcykKLSAgICAgICAgc3VjY2VzcyA9IHN0b3JhZ2VJZC5nZXRCb29sZWFu
KCJpc0xvY2FsU3RvcmFnZSJfcywgaXNMb2NhbFN0b3JhZ2UpOwotICAgIGlmICghc3VjY2Vzcykg
ewotICAgICAgICBlcnJvclN0cmluZyA9ICJJbnZhbGlkIHN0b3JhZ2VJZCBmb3JtYXQiX3M7Ci0g
ICAgICAgIHRhcmdldEZyYW1lID0gbnVsbHB0cjsKKyAgICBpZiAoIXN0b3JhZ2VJZC5nZXRCb29s
ZWFuKCJpc0xvY2FsU3RvcmFnZSJfcywgaXNMb2NhbFN0b3JhZ2UpKSB7CisgICAgICAgIGVycm9y
U3RyaW5nID0gIk1pc3NpbmcgaXNMb2NhbFN0b3JhZ2UgaW4gZ2l2ZW4gc3RvcmFnZUlkIjsKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCiAgICAgdGFyZ2V0RnJhbWUgPSBJbnNwZWN0
b3JQYWdlQWdlbnQ6OmZpbmRGcmFtZVdpdGhTZWN1cml0eU9yaWdpbihtX2luc3BlY3RlZFBhZ2Us
IHNlY3VyaXR5T3JpZ2luKTsKICAgICBpZiAoIXRhcmdldEZyYW1lKSB7Ci0gICAgICAgIGVycm9y
U3RyaW5nID0gIkZyYW1lIG5vdCBmb3VuZCBmb3IgdGhlIGdpdmVuIHNlY3VyaXR5IG9yaWdpbiJf
czsKKyAgICAgICAgZXJyb3JTdHJpbmcgPSAiTWlzc2luZyBmcmFtZSBmb3IgZ2l2ZW4gc2VjdXJp
dHlPcmlnaW4iX3M7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEYXRhYmFzZUFnZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRGF0YWJhc2VB
Z2VudC5jcHAKaW5kZXggMzU4YTg1NjUxMmVhNGQ3MTk2MzMyYTIwNjk5MGRlMzI1MDA0MTBiZi4u
ZTljYWE2NjEwODcwMTA0N2RkOTUwZTAwMDc1YjJhMWQ5ODQ2YWEyOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEYXRhYmFzZUFnZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRhdGFiYXNlQWdl
bnQuY3BwCkBAIC0yMjgsMTQgKzIyOCwxNCBAQCB2b2lkIEluc3BlY3RvckRhdGFiYXNlQWdlbnQ6
OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkZyb250ZW5kUm91dAogCiB2
b2lkIEluc3BlY3RvckRhdGFiYXNlQWdlbnQ6OndpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5k
KEluc3BlY3Rvcjo6RGlzY29ubmVjdFJlYXNvbikKIHsKLSAgICBFcnJvclN0cmluZyB1bnVzZWQ7
Ci0gICAgZGlzYWJsZSh1bnVzZWQpOworICAgIEVycm9yU3RyaW5nIGlnbm9yZWQ7CisgICAgZGlz
YWJsZShpZ25vcmVkKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JEYXRhYmFzZUFnZW50OjplbmFibGUo
RXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nKQogewogICAgIGlmIChtX2luc3RydW1lbnRpbmdBZ2Vu
dHMuaW5zcGVjdG9yRGF0YWJhc2VBZ2VudCgpID09IHRoaXMpIHsKLSAgICAgICAgZXJyb3JTdHJp
bmcgPSAiRGF0YWJhc2VBZ2VudCBhbHJlYWR5IGVuYWJsZWQiX3M7CisgICAgICAgIGVycm9yU3Ry
aW5nID0gIkRhdGFiYXNlIGRvbWFpbiBhbHJlYWR5IGVuYWJsZWQiX3M7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKQEAgLTI0OCw3ICsyNDgsNyBAQCB2b2lkIEluc3BlY3RvckRhdGFiYXNlQWdl
bnQ6OmVuYWJsZShFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcpCiB2b2lkIEluc3BlY3RvckRhdGFi
YXNlQWdlbnQ6OmRpc2FibGUoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nKQogewogICAgIGlmICht
X2luc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yRGF0YWJhc2VBZ2VudCgpICE9IHRoaXMpIHsK
LSAgICAgICAgZXJyb3JTdHJpbmcgPSAiRGF0YWJhc2VBZ2VudCBhbHJlYWR5IGRpc2FibGVkIl9z
OworICAgICAgICBlcnJvclN0cmluZyA9ICJEYXRhYmFzZSBkb21haW4gYWxyZWFkeSBkaXNhYmxl
ZCJfczsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMjYwLDcgKzI2MCw3IEBAIHZvaWQg
SW5zcGVjdG9yRGF0YWJhc2VBZ2VudDo6ZGlzYWJsZShFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcp
CiB2b2lkIEluc3BlY3RvckRhdGFiYXNlQWdlbnQ6OmdldERhdGFiYXNlVGFibGVOYW1lcyhFcnJv
clN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgZGF0YWJhc2VJZCwgUmVmUHRyPEpT
T046OkFycmF5T2Y8U3RyaW5nPj4mIG5hbWVzKQogewogICAgIGlmIChtX2luc3RydW1lbnRpbmdB
Z2VudHMuaW5zcGVjdG9yRGF0YWJhc2VBZ2VudCgpICE9IHRoaXMpIHsKLSAgICAgICAgZXJyb3JT
dHJpbmcgPSAiRGF0YWJhc2UgYWdlbnQgaXMgbm90IGVuYWJsZWQiX3M7CisgICAgICAgIGVycm9y
U3RyaW5nID0gIkRhdGFiYXNlIGRvbWFpbiBtdXN0IGJlIGVuYWJsZWQiX3M7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKQEAgLTI3NSwxMyArMjc1LDEzIEBAIHZvaWQgSW5zcGVjdG9yRGF0YWJh
c2VBZ2VudDo6Z2V0RGF0YWJhc2VUYWJsZU5hbWVzKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywg
Y29uCiB2b2lkIEluc3BlY3RvckRhdGFiYXNlQWdlbnQ6OmV4ZWN1dGVTUUwoY29uc3QgU3RyaW5n
JiBkYXRhYmFzZUlkLCBjb25zdCBTdHJpbmcmIHF1ZXJ5LCBSZWY8RXhlY3V0ZVNRTENhbGxiYWNr
PiYmIHJlcXVlc3RDYWxsYmFjaykKIHsKICAgICBpZiAobV9pbnN0cnVtZW50aW5nQWdlbnRzLmlu
c3BlY3RvckRhdGFiYXNlQWdlbnQoKSAhPSB0aGlzKSB7Ci0gICAgICAgIHJlcXVlc3RDYWxsYmFj
ay0+c2VuZEZhaWx1cmUoIkRhdGFiYXNlIGFnZW50IGlzIG5vdCBlbmFibGVkIl9zKTsKKyAgICAg
ICAgcmVxdWVzdENhbGxiYWNrLT5zZW5kRmFpbHVyZSgiRGF0YWJhc2UgZG9tYWluIG11c3QgYmUg
ZW5hYmxlZCJfcyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBhdXRvKiBkYXRhYmFz
ZSA9IGRhdGFiYXNlRm9ySWQoZGF0YWJhc2VJZCk7CiAgICAgaWYgKCFkYXRhYmFzZSkgewotICAg
ICAgICByZXF1ZXN0Q2FsbGJhY2stPnNlbmRGYWlsdXJlKCJEYXRhYmFzZSBub3QgZm91bmQiKTsK
KyAgICAgICAgcmVxdWVzdENhbGxiYWNrLT5zZW5kRmFpbHVyZSgiTWlzc2luZyBkYXRhYmFzZSBm
b3IgZ2l2ZW4gZGF0YWJhc2VJZCIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckluZGV4ZWREQkFn
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9ySW5kZXhl
ZERCQWdlbnQuY3BwCmluZGV4IGRkNzE1Y2JkOGNhMTFiOWMxZDA4NWE2NmI1NDE2ZDlmMmU5NWE3
ZDIuLmExNTU0NWM1MTRkNjM0NDM0OTI4MGYwOWUzOGIyNGFkYzkwZjMyYTIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9ySW5kZXhl
ZERCQWdlbnQuY3BwCkBAIC01MzMsOCArNTMzLDggQEAgdm9pZCBJbnNwZWN0b3JJbmRleGVkREJB
Z2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6RnJvbnRlbmRSb3UK
IAogdm9pZCBJbnNwZWN0b3JJbmRleGVkREJBZ2VudDo6d2lsbERlc3Ryb3lGcm9udGVuZEFuZEJh
Y2tlbmQoSW5zcGVjdG9yOjpEaXNjb25uZWN0UmVhc29uKQogewotICAgIEVycm9yU3RyaW5nIHVu
dXNlZDsKLSAgICBkaXNhYmxlKHVudXNlZCk7CisgICAgRXJyb3JTdHJpbmcgaWdub3JlZDsKKyAg
ICBkaXNhYmxlKGlnbm9yZWQpOwogfQogCiB2b2lkIEluc3BlY3RvckluZGV4ZWREQkFnZW50Ojpl
bmFibGUoRXJyb3JTdHJpbmcmKQpAQCAtNTQ5LDcgKzU0OSw3IEBAIHN0YXRpYyBFcnJvclN0cmlu
Z09yPERvY3VtZW50Kj4gZG9jdW1lbnRGcm9tRnJhbWUoRnJhbWUqIGZyYW1lKQogewogICAgIERv
Y3VtZW50KiBkb2N1bWVudCA9IGZyYW1lID8gZnJhbWUtPmRvY3VtZW50KCkgOiBudWxscHRyOwog
ICAgIGlmICghZG9jdW1lbnQpCi0gICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZCgiTm8gZG9j
dW1lbnQgZm9yIGdpdmVuIGZyYW1lIGZvdW5kIl9zKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmV4
cGVjdGVkKCJNaXNzaW5nIGRvY3VtZW50IGZvciBnaXZlbiBmcmFtZSJfcyk7CiAgICAgCiAgICAg
cmV0dXJuIGRvY3VtZW50OwogfQpAQCAtNTU4LDExICs1NTgsMTEgQEAgc3RhdGljIEVycm9yU3Ry
aW5nT3I8SURCRmFjdG9yeSo+IElEQkZhY3RvcnlGcm9tRG9jdW1lbnQoRG9jdW1lbnQqIGRvY3Vt
ZW50KQogewogICAgIERPTVdpbmRvdyogZG9tV2luZG93ID0gZG9jdW1lbnQtPmRvbVdpbmRvdygp
OwogICAgIGlmICghZG9tV2luZG93KQotICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoIk5v
IEluZGV4ZWREQiBmYWN0b3J5IGZvciBnaXZlbiBmcmFtZSBmb3VuZCJfcyk7CisgICAgICAgIHJl
dHVybiBtYWtlVW5leHBlY3RlZCgiTWlzc2luZyB3aW5kb3cgZm9yIGdpdmVuIGRvY3VtZW50Il9z
KTsKIAogICAgIElEQkZhY3RvcnkqIGlkYkZhY3RvcnkgPSBET01XaW5kb3dJbmRleGVkRGF0YWJh
c2U6OmluZGV4ZWREQigqZG9tV2luZG93KTsKICAgICBpZiAoIWlkYkZhY3RvcnkpCi0gICAgICAg
IG1ha2VVbmV4cGVjdGVkKCJObyBJbmRleGVkREIgZmFjdG9yeSBmb3IgZ2l2ZW4gZnJhbWUgZm91
bmQiX3MpOworICAgICAgICBtYWtlVW5leHBlY3RlZCgiTWlzc2luZyBJbmRleGVkREIgZmFjdG9y
eSBvZiB3aW5kb3cgZm9yIGdpdmVuIGRvY3VtZW50Il9zKTsKICAgICAKICAgICByZXR1cm4gaWRi
RmFjdG9yeTsKIH0KQEAgLTYzMSw3ICs2MzEsNyBAQCB2b2lkIEluc3BlY3RvckluZGV4ZWREQkFn
ZW50OjpyZXF1ZXN0RGF0YShjb25zdCBTdHJpbmcmIHNlY3VyaXR5T3JpZ2luLCBjb25zdCBTdAog
ICAgIEluamVjdGVkU2NyaXB0IGluamVjdGVkU2NyaXB0ID0gbV9pbmplY3RlZFNjcmlwdE1hbmFn
ZXIuaW5qZWN0ZWRTY3JpcHRGb3IobWFpbldvcmxkRXhlY1N0YXRlKGZyYW1lKSk7CiAgICAgUmVm
UHRyPElEQktleVJhbmdlPiBpZGJLZXlSYW5nZSA9IGtleVJhbmdlID8gaWRiS2V5UmFuZ2VGcm9t
S2V5UmFuZ2Uoa2V5UmFuZ2UpIDogbnVsbHB0cjsKICAgICBpZiAoa2V5UmFuZ2UgJiYgIWlkYktl
eVJhbmdlKSB7Ci0gICAgICAgIGNhbGxiYWNrLT5zZW5kRmFpbHVyZSgiQ2FuIG5vdCBwYXJzZSBr
ZXkgcmFuZ2UuIl9zKTsKKyAgICAgICAgY2FsbGJhY2stPnNlbmRGYWlsdXJlKCJDb3VsZCBub3Qg
cGFyc2Uga2V5IHJhbmdlLiJfcyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTGF5ZXJUcmVlQWdl
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JMYXllclRy
ZWVBZ2VudC5jcHAKaW5kZXggYjU5ODJjZWUzN2UzNzQ0NzA1Mzk0NmJjZjRjNDM0YjQzMWVmOWE5
OC4uYTM1YjQ5YjAzMDNlNzgwNTY3MjExMTA0MDFiMDAyOTM3YTYyZDYwMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JMYXllclRyZWVBZ2VudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JMYXllclRy
ZWVBZ2VudC5jcHAKQEAgLTY0LDggKzY0LDggQEAgdm9pZCBJbnNwZWN0b3JMYXllclRyZWVBZ2Vu
dDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6RnJvbnRlbmRSb3UKIAog
dm9pZCBJbnNwZWN0b3JMYXllclRyZWVBZ2VudDo6d2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tl
bmQoSW5zcGVjdG9yOjpEaXNjb25uZWN0UmVhc29uKQogewotICAgIEVycm9yU3RyaW5nIHVudXNl
ZDsKLSAgICBkaXNhYmxlKHVudXNlZCk7CisgICAgRXJyb3JTdHJpbmcgaWdub3JlZDsKKyAgICBk
aXNhYmxlKGlnbm9yZWQpOwogfQogCiB2b2lkIEluc3BlY3RvckxheWVyVHJlZUFnZW50OjpyZXNl
dCgpCkBAIC0xMTMsMTMgKzExMywxMyBAQCB2b2lkIEluc3BlY3RvckxheWVyVHJlZUFnZW50Ojps
YXllcnNGb3JOb2RlKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgaW50IG5vZGVJZAogCiAgICAg
YXV0byogbm9kZSA9IG1faW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JET01BZ2VudCgpLT5u
b2RlRm9ySWQobm9kZUlkKTsKICAgICBpZiAoIW5vZGUpIHsKLSAgICAgICAgZXJyb3JTdHJpbmcg
PSAiUHJvdmlkZWQgbm9kZSBpZCBkb2Vzbid0IG1hdGNoIGFueSBrbm93biBub2RlIl9zOworICAg
ICAgICBlcnJvclN0cmluZyA9ICJNaXNzaW5nIG5vZGUgZm9yIGdpdmVuIG5vZGVJZCJfczsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGF1dG8qIHJlbmRlcmVyID0gbm9kZS0+cmVuZGVy
ZXIoKTsKICAgICBpZiAoIXJlbmRlcmVyKSB7Ci0gICAgICAgIGVycm9yU3RyaW5nID0gIk5vZGUg
Zm9yIHByb3ZpZGVkIG5vZGUgaWQgZG9lc24ndCBoYXZlIGEgcmVuZGVyZXIiX3M7CisgICAgICAg
IGVycm9yU3RyaW5nID0gIk1pc3NpbmcgcmVuZGVyZXIgb2Ygbm9kZSBmb3IgZ2l2ZW4gbm9kZUlk
Il9zOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0yMzksNyArMjM5LDcgQEAgdm9pZCBJ
bnNwZWN0b3JMYXllclRyZWVBZ2VudDo6cmVhc29uc0ZvckNvbXBvc2l0aW5nTGF5ZXIoRXJyb3JT
dHJpbmcmIGVycm9yU3RyaW4KICAgICBjb25zdCBSZW5kZXJMYXllciogcmVuZGVyTGF5ZXIgPSBt
X2lkVG9MYXllci5nZXQobGF5ZXJJZCk7CiAKICAgICBpZiAoIXJlbmRlckxheWVyKSB7Ci0gICAg
ICAgIGVycm9yU3RyaW5nID0gIkNvdWxkIG5vdCBmaW5kIGEgYm91bmQgbGF5ZXIgZm9yIHRoZSBw
cm92aWRlZCBpZCJfczsKKyAgICAgICAgZXJyb3JTdHJpbmcgPSAiTWlzc2luZyByZW5kZXIgbGF5
ZXIgZm9yIGdpdmVuIGxheWVySWQiX3M7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTWVtb3J5QWdl
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JNZW1vcnlB
Z2VudC5jcHAKaW5kZXggMjgzMjk1MWY1MzgwMTIxZmE0NTJiZmE4ZDQ3MGY0ZDM1ZTc4OWIxNi4u
MGNjZmE1MTQ0NjY5ZWI1N2IxZmVmYWE0OTJkNDQ0ZDNlZWRmZDc5ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JNZW1vcnlBZ2VudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JNZW1vcnlBZ2VudC5j
cHAKQEAgLTU4LDcgKzU4LDcgQEAgdm9pZCBJbnNwZWN0b3JNZW1vcnlBZ2VudDo6d2lsbERlc3Ry
b3lGcm9udGVuZEFuZEJhY2tlbmQoRGlzY29ubmVjdFJlYXNvbikKIHZvaWQgSW5zcGVjdG9yTWVt
b3J5QWdlbnQ6OmVuYWJsZShFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcpCiB7CiAgICAgaWYgKG1f
aW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JNZW1vcnlBZ2VudCgpID09IHRoaXMpIHsKLSAg
ICAgICAgZXJyb3JTdHJpbmcgPSAiTWVtb3J5QWdlbnQgYWxyZWFkeSBlbmFibGVkIl9zOworICAg
ICAgICBlcnJvclN0cmluZyA9ICJNZW1vcnkgZG9tYWluIGFscmVhZHkgZW5hYmxlZCJfczsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNjgsNyArNjgsNyBAQCB2b2lkIEluc3BlY3Rvck1l
bW9yeUFnZW50OjplbmFibGUoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nKQogdm9pZCBJbnNwZWN0
b3JNZW1vcnlBZ2VudDo6ZGlzYWJsZShFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcpCiB7CiAgICAg
aWYgKG1faW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JNZW1vcnlBZ2VudCgpICE9IHRoaXMp
IHsKLSAgICAgICAgZXJyb3JTdHJpbmcgPSAiTWVtb3J5QWdlbnQgYWxyZWFkeSBkaXNhYmxlZCJf
czsKKyAgICAgICAgZXJyb3JTdHJpbmcgPSAiTWVtb3J5IGRvbWFpbiBhbHJlYWR5IGRpc2FibGVk
Il9zOwogICAgICAgICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAKaW5kZXggNWQw
ODE2MzgwY2RjNjZjN2Q3OTYwYzEyZDM0OGEwZmJmM2Y3YjExOC4uZTc2Yjc0NDA4OGU5NWIyNTYz
NGMxN2QzNDVkNDE5MThkMDE3OTIwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcApAQCAtMTg1LDggKzE4
NSw4IEBAIHZvaWQgSW5zcGVjdG9yTmV0d29ya0FnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJh
Y2tlbmQoSW5zcGVjdG9yOjpGcm9udGVuZFJvdXRlCiAKIHZvaWQgSW5zcGVjdG9yTmV0d29ya0Fn
ZW50Ojp3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkRpc2Nvbm5lY3RS
ZWFzb24pCiB7Ci0gICAgRXJyb3JTdHJpbmcgdW51c2VkOwotICAgIGRpc2FibGUodW51c2VkKTsK
KyAgICBFcnJvclN0cmluZyBpZ25vcmVkOworICAgIGRpc2FibGUoaWdub3JlZCk7CiB9CiAKIHN0
YXRpYyBSZWY8SlNPTjo6T2JqZWN0PiBidWlsZE9iamVjdEZvckhlYWRlcnMoY29uc3QgSFRUUEhl
YWRlck1hcCYgaGVhZGVycykKQEAgLTM5Myw4ICszOTMsOCBAQCBSZWY8SW5zcGVjdG9yOjpQcm90
b2NvbDo6TmV0d29yazo6Q2FjaGVkUmVzb3VyY2U+IEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6YnVp
bGRPYgogSW5zcGVjdG9yTmV0d29ya0FnZW50Ojp+SW5zcGVjdG9yTmV0d29ya0FnZW50KCkKIHsK
ICAgICBpZiAobV9lbmFibGVkKSB7Ci0gICAgICAgIEVycm9yU3RyaW5nIHVudXNlZDsKLSAgICAg
ICAgZGlzYWJsZSh1bnVzZWQpOworICAgICAgICBFcnJvclN0cmluZyBpZ25vcmVkOworICAgICAg
ICBkaXNhYmxlKGlnbm9yZWQpOwogICAgIH0KICAgICBBU1NFUlQoIW1faW5zdHJ1bWVudGluZ0Fn
ZW50cy5pbnNwZWN0b3JOZXR3b3JrQWdlbnQoKSk7CiB9CkBAIC04NTQsNyArODU0LDcgQEAgdm9p
ZCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmdldFJlc3BvbnNlQm9keShFcnJvclN0cmluZyYgZXJy
b3JTdHJpbmcsIGNvbnN0IFN0cmkKIHsKICAgICBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3Vy
Y2VEYXRhIGNvbnN0KiByZXNvdXJjZURhdGEgPSBtX3Jlc291cmNlc0RhdGEtPmRhdGEocmVxdWVz
dElkKTsKICAgICBpZiAoIXJlc291cmNlRGF0YSkgewotICAgICAgICBlcnJvclN0cmluZyA9ICJO
byByZXNvdXJjZSB3aXRoIGdpdmVuIGlkZW50aWZpZXIgZm91bmQiX3M7CisgICAgICAgIGVycm9y
U3RyaW5nID0gIk1pc3NpbmcgcmVzb3VyY2UgZm9yIGdpdmVuIHJlcXVlc3RJZCJfczsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIApAQCAtODY1LDcgKzg2NSw3IEBAIHZvaWQgSW5zcGVjdG9yTmV0
d29ya0FnZW50OjpnZXRSZXNwb25zZUJvZHkoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25z
dCBTdHJpCiAgICAgfQogCiAgICAgaWYgKHJlc291cmNlRGF0YS0+aXNDb250ZW50RXZpY3RlZCgp
KSB7Ci0gICAgICAgIGVycm9yU3RyaW5nID0gIlJlcXVlc3QgY29udGVudCB3YXMgZXZpY3RlZCBm
cm9tIGluc3BlY3RvciBjYWNoZSJfczsKKyAgICAgICAgZXJyb3JTdHJpbmcgPSAiUmVzb3VyY2Ug
Y29udGVudCB3YXMgZXZpY3RlZCBmcm9tIGluc3BlY3RvciBjYWNoZSJfczsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIApAQCAtODgwLDcgKzg4MCw3IEBAIHZvaWQgSW5zcGVjdG9yTmV0d29ya0Fn
ZW50OjpnZXRSZXNwb25zZUJvZHkoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJp
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgZXJyb3JTdHJpbmcgPSAiTm8gZGF0
YSBmb3VuZCBmb3IgcmVzb3VyY2Ugd2l0aCBnaXZlbiBpZGVudGlmaWVyIl9zOworICAgIGVycm9y
U3RyaW5nID0gIk1pc3NpbmcgY29udGVudCBvZiByZXNvdXJjZSBmb3IgZ2l2ZW4gcmVxdWVzdElk
Il9zOwogfQogCiB2b2lkIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6c2V0UmVzb3VyY2VDYWNoaW5n
RGlzYWJsZWQoRXJyb3JTdHJpbmcmLCBib29sIGRpc2FibGVkKQpAQCAtODkwLDEwICs4OTAsMTAg
QEAgdm9pZCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OnNldFJlc291cmNlQ2FjaGluZ0Rpc2FibGVk
KEVycm9yU3RyaW5nJiwgYm9vbCBkaXNhYmwKIAogdm9pZCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6
OmxvYWRSZXNvdXJjZShjb25zdCBTdHJpbmcmIGZyYW1lSWQsIGNvbnN0IFN0cmluZyYgdXJsU3Ry
aW5nLCBSZWY8TG9hZFJlc291cmNlQ2FsbGJhY2s+JiYgY2FsbGJhY2spCiB7Ci0gICAgRXJyb3JT
dHJpbmcgZXJyb3I7Ci0gICAgYXV0byogY29udGV4dCA9IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
ZXJyb3IsIGZyYW1lSWQpOworICAgIEVycm9yU3RyaW5nIGVycm9yU3RyaW5nOworICAgIGF1dG8q
IGNvbnRleHQgPSBzY3JpcHRFeGVjdXRpb25Db250ZXh0KGVycm9yU3RyaW5nLCBmcmFtZUlkKTsK
ICAgICBpZiAoIWNvbnRleHQpIHsKLSAgICAgICAgY2FsbGJhY2stPnNlbmRGYWlsdXJlKGVycm9y
KTsKKyAgICAgICAgY2FsbGJhY2stPnNlbmRGYWlsdXJlKGVycm9yU3RyaW5nKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIApAQCAtOTI4LDEzICs5MjgsMTMgQEAgdm9pZCBJbnNwZWN0b3JOZXR3
b3JrQWdlbnQ6OmdldFNlcmlhbGl6ZWRDZXJ0aWZpY2F0ZShFcnJvclN0cmluZyYgZXJyb3JTdHJp
bmcsIGMKIHsKICAgICBhdXRvKiByZXNvdXJjZURhdGEgPSBtX3Jlc291cmNlc0RhdGEtPmRhdGEo
cmVxdWVzdElkKTsKICAgICBpZiAoIXJlc291cmNlRGF0YSkgewotICAgICAgICBlcnJvclN0cmlu
ZyA9ICJObyByZXNvdXJjZSB3aXRoIGdpdmVuIGlkZW50aWZpZXIgZm91bmQiX3M7CisgICAgICAg
IGVycm9yU3RyaW5nID0gIk1pc3NpbmcgcmVzb3VyY2UgZm9yIGdpdmVuIHJlcXVlc3RJZCJfczsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGF1dG8mIGNlcnRpZmljYXRlID0gcmVzb3Vy
Y2VEYXRhLT5jZXJ0aWZpY2F0ZUluZm8oKTsKICAgICBpZiAoIWNlcnRpZmljYXRlIHx8IGNlcnRp
ZmljYXRlLnZhbHVlKCkuaXNFbXB0eSgpKSB7Ci0gICAgICAgIGVycm9yU3RyaW5nID0gIk5vIGNl
cnRpZmljYXRlIGZvciByZXNvdXJjZSJfczsKKyAgICAgICAgZXJyb3JTdHJpbmcgPSAiTWlzc2lu
ZyBjZXJ0aWZpY2F0ZSBvZiByZXNvdXJjZSBmb3IgZ2l2ZW4gcmVxdWVzdElkIl9zOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogCkBAIC05NjcsNyArOTY3LDcgQEAgdm9pZCBJbnNwZWN0b3JOZXR3
b3JrQWdlbnQ6OnJlc29sdmVXZWJTb2NrZXQoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25z
dCBTdHIKIHsKICAgICBXZWJTb2NrZXQqIHdlYlNvY2tldCA9IHdlYlNvY2tldEZvclJlcXVlc3RJ
ZChyZXF1ZXN0SWQpOwogICAgIGlmICghd2ViU29ja2V0KSB7Ci0gICAgICAgIGVycm9yU3RyaW5n
ID0gIldlYlNvY2tldCBub3QgZm91bmQiX3M7CisgICAgICAgIGVycm9yU3RyaW5nID0gIk1pc3Np
bmcgd2ViIHNvY2tldCBmb3IgZ2l2ZW4gcmVxdWVzdElkIl9zOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogCkBAIC05NzgsNyArOTc4LDcgQEAgdm9pZCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OnJl
c29sdmVXZWJTb2NrZXQoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHIKICAgICBh
dXRvKiBkb2N1bWVudCA9IGRvd25jYXN0PERvY3VtZW50Pih3ZWJTb2NrZXQtPnNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKSk7CiAgICAgYXV0byogZnJhbWUgPSBkb2N1bWVudC0+ZnJhbWUoKTsKICAg
ICBpZiAoIWZyYW1lKSB7Ci0gICAgICAgIGVycm9yU3RyaW5nID0gIldlYlNvY2tldCBiZWxvbmdz
IHRvIGRvY3VtZW50IHdpdGhvdXQgYSBmcmFtZSJfczsKKyAgICAgICAgZXJyb3JTdHJpbmcgPSAi
TWlzc2luZyBmcmFtZSBvZiB3ZWIgc29ja2V0IGZvciBnaXZlbiByZXF1ZXN0SWQiX3M7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKQEAgLTExMDcsMTIgKzExMDcsMTIgQEAgdm9pZCBJbnNwZWN0
b3JOZXR3b3JrQWdlbnQ6OnNlYXJjaEluUmVxdWVzdChFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcs
IGNvbnN0IFN0cmkKIHsKICAgICBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhIGNv
bnN0KiByZXNvdXJjZURhdGEgPSBtX3Jlc291cmNlc0RhdGEtPmRhdGEocmVxdWVzdElkKTsKICAg
ICBpZiAoIXJlc291cmNlRGF0YSkgewotICAgICAgICBlcnJvclN0cmluZyA9ICJObyByZXNvdXJj
ZSB3aXRoIGdpdmVuIGlkZW50aWZpZXIgZm91bmQiX3M7CisgICAgICAgIGVycm9yU3RyaW5nID0g
Ik1pc3NpbmcgcmVzb3VyY2UgZm9yIGdpdmVuIHJlcXVlc3RJZCJfczsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIAogICAgIGlmICghcmVzb3VyY2VEYXRhLT5oYXNDb250ZW50KCkpIHsKLSAgICAg
ICAgZXJyb3JTdHJpbmcgPSAiTm8gcmVzb3VyY2UgY29udGVudCJfczsKKyAgICAgICAgZXJyb3JT
dHJpbmcgPSAiTWlzc2luZyBjb250ZW50IG9mIHJlc291cmNlIGZvciBnaXZlbiByZXF1ZXN0SWQi
X3M7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmNwcAppbmRleCBjNjQxYTZhMDQ4
NDE5MzI2OGUyOWU5MGZmMDEyNmFiOTExYzkzMGRmLi5kNzY1MDRlMzViYTQ5NmRmYWRkODk2NjVk
M2MxMjI4MjYyNjI1YzBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCkBAIC0xODEsNyArMTgxLDcgQEAgdm9pZCBJ
bnNwZWN0b3JQYWdlQWdlbnQ6OnJlc291cmNlQ29udGVudChFcnJvclN0cmluZyYgZXJyb3JTdHJp
bmcsIEZyYW1lKiBmcmFtZSwKICAgICB9CiAKICAgICBpZiAoIXN1Y2Nlc3MpCi0gICAgICAgIGVy
cm9yU3RyaW5nID0gIk5vIHJlc291cmNlIHdpdGggZ2l2ZW4gVVJMIGZvdW5kIl9zOworICAgICAg
ICBlcnJvclN0cmluZyA9ICJNaXNzaW5nIHJlc291cmNlIGZvciBnaXZlbiB1cmwiX3M7CiB9CiAK
IFN0cmluZyBJbnNwZWN0b3JQYWdlQWdlbnQ6OnNvdXJjZU1hcFVSTEZvclJlc291cmNlKENhY2hl
ZFJlc291cmNlKiBjYWNoZWRSZXNvdXJjZSkKQEAgLTMyNyw3ICszMjcsNyBAQCBEb2N1bWVudExv
YWRlciogSW5zcGVjdG9yUGFnZUFnZW50Ojphc3NlcnREb2N1bWVudExvYWRlcihFcnJvclN0cmlu
ZyYgZXJyb3JTdHJpbgogICAgIEZyYW1lTG9hZGVyJiBmcmFtZUxvYWRlciA9IGZyYW1lLT5sb2Fk
ZXIoKTsKICAgICBEb2N1bWVudExvYWRlciogZG9jdW1lbnRMb2FkZXIgPSBmcmFtZUxvYWRlci5k
b2N1bWVudExvYWRlcigpOwogICAgIGlmICghZG9jdW1lbnRMb2FkZXIpCi0gICAgICAgIGVycm9y
U3RyaW5nID0gIk5vIGRvY3VtZW50TG9hZGVyIGZvciBnaXZlbiBmcmFtZSBmb3VuZCJfczsKKyAg
ICAgICAgZXJyb3JTdHJpbmcgPSAiTWlzc2luZyBkb2N1bWVudCBsb2FkZXIgZm9yIGdpdmVuIGZy
YW1lIl9zOwogICAgIHJldHVybiBkb2N1bWVudExvYWRlcjsKIH0KIApAQCAtMzU2LDEyICszNTYs
MTIgQEAgdm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2Vu
ZChJbnNwZWN0b3I6OkZyb250ZW5kUm91dGVyKiwKIAogdm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6
OndpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6RGlzY29ubmVjdFJlYXNv
bikKIHsKLSAgICBFcnJvclN0cmluZyB1bnVzZWQ7Ci0gICAgc2V0U2hvd1BhaW50UmVjdHModW51
c2VkLCBmYWxzZSk7Ci0gICAgc2V0U2hvd1J1bGVycyh1bnVzZWQsIGZhbHNlKTsKLSAgICBvdmVy
cmlkZVVzZXJBZ2VudCh1bnVzZWQsIG51bGxwdHIpOwotICAgIHNldEVtdWxhdGVkTWVkaWEodW51
c2VkLCBlbXB0eVN0cmluZygpKTsKLSAgICBzZXRGb3JjZWRBcHBlYXJhbmNlKHVudXNlZCwgZW1w
dHlTdHJpbmcoKSk7CisgICAgRXJyb3JTdHJpbmcgaWdub3JlZDsKKyAgICBzZXRTaG93UGFpbnRS
ZWN0cyhpZ25vcmVkLCBmYWxzZSk7CisgICAgc2V0U2hvd1J1bGVycyhpZ25vcmVkLCBmYWxzZSk7
CisgICAgb3ZlcnJpZGVVc2VyQWdlbnQoaWdub3JlZCwgbnVsbHB0cik7CisgICAgc2V0RW11bGF0
ZWRNZWRpYShpZ25vcmVkLCBlbXB0eVN0cmluZygpKTsKKyAgICBzZXRGb3JjZWRBcHBlYXJhbmNl
KGlnbm9yZWQsIGVtcHR5U3RyaW5nKCkpOwogCiAjZGVmaW5lIERJU0FCTEVfSU5TUEVDVE9SX09W
RVJSSURFX1NFVFRJTkcobmFtZSkgXAogICAgIG1faW5zcGVjdGVkUGFnZS5zZXR0aW5ncygpLnNl
dCMjbmFtZSMjSW5zcGVjdG9yT3ZlcnJpZGUoV1RGOjpudWxsb3B0KTsKQEAgLTQxOSwxMyArNDE5
LDEzIEBAIHN0YXRpYyBpbmxpbmUgT3B0aW9uYWw8Ym9vbD4gYXNPcHRpb25hbEJvb2woY29uc3Qg
Ym9vbCogdmFsdWUpCiB2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6b3ZlcnJpZGVTZXR0aW5nKEVy
cm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBzZXR0aW5nU3RyaW5nLCBjb25z
dCBib29sKiB2YWx1ZSkKIHsKICAgICBpZiAoc2V0dGluZ1N0cmluZy5pc0VtcHR5KCkpIHsKLSAg
ICAgICAgZXJyb3JTdHJpbmcgPSAiUHJlZmVyZW5jZSBpcyBlbXB0eSJfczsKKyAgICAgICAgZXJy
b3JTdHJpbmcgPSAic2V0dGluZ1N0cmluZyBpcyBlbXB0eSJfczsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAogICAgIGF1dG8gc2V0dGluZyA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6Okluc3BlY3Rv
ckhlbHBlcnM6OnBhcnNlRW51bVZhbHVlRnJvbVN0cmluZzxJbnNwZWN0b3I6OlByb3RvY29sOjpQ
YWdlOjpTZXR0aW5nPihzZXR0aW5nU3RyaW5nKTsKICAgICBpZiAoIXNldHRpbmcpIHsKLSAgICAg
ICAgZXJyb3JTdHJpbmcgPSBtYWtlU3RyaW5nKCJVbmtub3duIHNldHRpbmc6ICJfcywgc2V0dGlu
Z1N0cmluZyk7CisgICAgICAgIGVycm9yU3RyaW5nID0gbWFrZVN0cmluZygiVW5rbm93biBzZXR0
aW5nU3RyaW5nOiAiX3MsIHNldHRpbmdTdHJpbmcpOwogICAgICAgICByZXR1cm47CiAgICAgfQog
CkBAIC03MDksNyArNzA5LDcgQEAgRnJhbWUqIEluc3BlY3RvclBhZ2VBZ2VudDo6YXNzZXJ0RnJh
bWUoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIGYKIHsKICAgICBGcmFt
ZSogZnJhbWUgPSBmcmFtZUZvcklkKGZyYW1lSWQpOwogICAgIGlmICghZnJhbWUpCi0gICAgICAg
IGVycm9yU3RyaW5nID0gIk5vIGZyYW1lIGZvciBnaXZlbiBpZCBmb3VuZCJfczsKKyAgICAgICAg
ZXJyb3JTdHJpbmcgPSAiTWlzc2luZyBmcmFtZSBmb3IgZ2l2ZW4gZnJhbWVJZCJfczsKICAgICBy
ZXR1cm4gZnJhbWU7CiB9CiAKQEAgLTk0Niw3ICs5NDYsNyBAQCB2b2lkIEluc3BlY3RvclBhZ2VB
Z2VudDo6YXJjaGl2ZShFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIFN0cmluZyogZGF0YSkKICAg
ICAqZGF0YSA9IGJhc2U2NEVuY29kZShDRkRhdGFHZXRCeXRlUHRyKGJ1ZmZlci5nZXQoKSksIENG
RGF0YUdldExlbmd0aChidWZmZXIuZ2V0KCkpKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGRh
dGEpOwotICAgIGVycm9yU3RyaW5nID0gIk5vIHN1cHBvcnQgZm9yIGNyZWF0aW5nIGFyY2hpdmVz
Il9zOworICAgIGVycm9yU3RyaW5nID0gIk5vdCBzdXBwb3J0ZWQiX3M7CiAjZW5kaWYKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JUaW1l
bGluZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
VGltZWxpbmVBZ2VudC5jcHAKaW5kZXggMzBkODZjNzQ2M2M0N2Y1YjNhZDJiMzhjZjVkZTI0OWQ0
NGViOWE1ZC4uYmYwZTA2YjE3YTIyMTBlZjBkOGU5ZWIyMDY1MjJkODEyOTI3ZTlhZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JUaW1lbGluZUFn
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclRp
bWVsaW5lQWdlbnQuY3BwCkBAIC0xMDgsNyArMTA4LDcgQEAgdm9pZCBJbnNwZWN0b3JUaW1lbGlu
ZUFnZW50Ojp3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkRpc2Nvbm5l
Y3QKIHZvaWQgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6ZW5hYmxlKEVycm9yU3RyaW5nJiBlcnJv
clN0cmluZykKIHsKICAgICBpZiAobV9pbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3RvclRpbWVs
aW5lQWdlbnQoKSA9PSB0aGlzKSB7Ci0gICAgICAgIGVycm9yU3RyaW5nID0gIlRpbWVsaW5lQWdl
bnQgYWxyZWFkeSBlbmFibGVkIl9zOworICAgICAgICBlcnJvclN0cmluZyA9ICJUaW1lbGluZSBk
b21haW4gYWxyZWFkeSBlbmFibGVkIl9zOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0x
MTgsMTQgKzExOCwxNCBAQCB2b2lkIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OmVuYWJsZShFcnJv
clN0cmluZyYgZXJyb3JTdHJpbmcpCiB2b2lkIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OmRpc2Fi
bGUoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nKQogewogICAgIGlmIChtX2luc3RydW1lbnRpbmdB
Z2VudHMuaW5zcGVjdG9yVGltZWxpbmVBZ2VudCgpICE9IHRoaXMpIHsKLSAgICAgICAgZXJyb3JT
dHJpbmcgPSAiVGltZWxpbmVBZ2VudCBhbHJlYWR5IGRpc2FibGVkIl9zOworICAgICAgICBlcnJv
clN0cmluZyA9ICJUaW1lbGluZSBkb21haW4gYWxyZWFkeSBkaXNhYmxlZCJfczsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIAogICAgIG1faW5zdHJ1bWVudGluZ0FnZW50cy5zZXRJbnNwZWN0b3JU
aW1lbGluZUFnZW50KG51bGxwdHIpOwogCi0gICAgRXJyb3JTdHJpbmcgdW51c2VkOwotICAgIHN0
b3AodW51c2VkKTsKKyAgICBFcnJvclN0cmluZyBpZ25vcmVkOworICAgIHN0b3AoaWdub3JlZCk7
CiAKICAgICBtX2F1dG9DYXB0dXJlRW5hYmxlZCA9IGZhbHNlOwogICAgIG1faW5zdHJ1bWVudHMu
Y2xlYXIoKTsKQEAgLTE1OCwxMyArMTU4LDEzIEBAIHZvaWQgSW5zcGVjdG9yVGltZWxpbmVBZ2Vu
dDo6c2V0SW5zdHJ1bWVudHMoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBKU09OCiAg
ICAgZm9yIChjb25zdCBhdXRvJiBpbnN0cnVtZW50VmFsdWUgOiBpbnN0cnVtZW50cykgewogICAg
ICAgICBTdHJpbmcgZW51bVZhbHVlU3RyaW5nOwogICAgICAgICBpZiAoIWluc3RydW1lbnRWYWx1
ZS0+YXNTdHJpbmcoZW51bVZhbHVlU3RyaW5nKSkgewotICAgICAgICAgICAgZXJyb3JTdHJpbmcg
PSAiVW5leHBlY3RlZCB0eXBlIGluIGluc3RydW1lbnRzIGxpc3QsIHNob3VsZCBiZSBzdHJpbmci
X3M7CisgICAgICAgICAgICBlcnJvclN0cmluZyA9ICJVbmV4cGVjdGVkIG5vbi1zdHJpbmcgdmFs
dWUgaW4gZ2l2ZW4gaW5zdHJ1bWVudHMiX3M7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IH0KIAogICAgICAgICBPcHRpb25hbDxQcm90b2NvbDo6VGltZWxpbmU6Okluc3RydW1lbnQ+IGlu
c3RydW1lbnRUeXBlID0gUHJvdG9jb2w6Okluc3BlY3RvckhlbHBlcnM6OnBhcnNlRW51bVZhbHVl
RnJvbVN0cmluZzxQcm90b2NvbDo6VGltZWxpbmU6Okluc3RydW1lbnQ+KGVudW1WYWx1ZVN0cmlu
Zyk7CiAgICAgICAgIGlmICghaW5zdHJ1bWVudFR5cGUpIHsKLSAgICAgICAgICAgIGVycm9yU3Ry
aW5nID0gbWFrZVN0cmluZygiVW5leHBlY3RlZCBlbnVtIHZhbHVlOiAiLCBlbnVtVmFsdWVTdHJp
bmcpOworICAgICAgICAgICAgZXJyb3JTdHJpbmcgPSBtYWtlU3RyaW5nKCJVbmtub3duIGl0ZW0g
aW4gZ2l2ZW4gaW5zdHJ1bWVudHM6ICIsIGVudW1WYWx1ZVN0cmluZyk7CiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIH0KIApAQCAtNDczLDggKzQ3Myw4IEBAIHZvaWQgSW5zcGVjdG9yVGlt
ZWxpbmVBZ2VudDo6bWFpbkZyYW1lU3RhcnRlZExvYWRpbmcoKQogCiAgICAgLy8gUHJlLWVtcHRp
dmVseSBkaXNhYmxlIGJyZWFrcG9pbnRzLiBUaGUgZnJvbnRlbmQgbXVzdCByZS1lbmFibGUgdGhl
bS4KICAgICBpZiAoSW5zcGVjdG9yRGVidWdnZXJBZ2VudCogZGVidWdnZXJBZ2VudCA9IG1faW5z
dHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JEZWJ1Z2dlckFnZW50KCkpIHsKLSAgICAgICAgRXJy
b3JTdHJpbmcgdW51c2VkOwotICAgICAgICBkZWJ1Z2dlckFnZW50LT5zZXRCcmVha3BvaW50c0Fj
dGl2ZSh1bnVzZWQsIGZhbHNlKTsKKyAgICAgICAgRXJyb3JTdHJpbmcgaWdub3JlZDsKKyAgICAg
ICAgZGVidWdnZXJBZ2VudC0+c2V0QnJlYWtwb2ludHNBY3RpdmUoaWdub3JlZCwgZmFsc2UpOwog
ICAgIH0KIAogICAgIC8vIEluZm9ybSB0aGUgZnJvbnRlbmQgd2Ugc3RhcnRlZCBhbiBhdXRvIGNh
cHR1cmUuIFRoZSBmcm9udGVuZCBtdXN0IHN0b3AgY2FwdHVyZS4KQEAgLTUwMCw4ICs1MDAsOCBA
QCB2b2lkIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OnN0YXJ0UHJvZ3JhbW1hdGljQ2FwdHVyZSgp
CiAgICAgaWYgKEluc3BlY3RvckRlYnVnZ2VyQWdlbnQqIGRlYnVnZ2VyQWdlbnQgPSBtX2luc3Ry
dW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yRGVidWdnZXJBZ2VudCgpKSB7CiAgICAgICAgIG1fcHJv
Z3JhbW1hdGljQ2FwdHVyZVJlc3RvcmVCcmVha3BvaW50QWN0aXZlVmFsdWUgPSBkZWJ1Z2dlckFn
ZW50LT5icmVha3BvaW50c0FjdGl2ZSgpOwogICAgICAgICBpZiAobV9wcm9ncmFtbWF0aWNDYXB0
dXJlUmVzdG9yZUJyZWFrcG9pbnRBY3RpdmVWYWx1ZSkgewotICAgICAgICAgICAgRXJyb3JTdHJp
bmcgdW51c2VkOwotICAgICAgICAgICAgZGVidWdnZXJBZ2VudC0+c2V0QnJlYWtwb2ludHNBY3Rp
dmUodW51c2VkLCBmYWxzZSk7CisgICAgICAgICAgICBFcnJvclN0cmluZyBpZ25vcmVkOworICAg
ICAgICAgICAgZGVidWdnZXJBZ2VudC0+c2V0QnJlYWtwb2ludHNBY3RpdmUoaWdub3JlZCwgZmFs
c2UpOwogICAgICAgICB9CiAgICAgfSBlbHNlCiAgICAgICAgIG1fcHJvZ3JhbW1hdGljQ2FwdHVy
ZVJlc3RvcmVCcmVha3BvaW50QWN0aXZlVmFsdWUgPSBmYWxzZTsKQEAgLTUyMyw4ICs1MjMsOCBA
QCB2b2lkIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OnN0b3BQcm9ncmFtbWF0aWNDYXB0dXJlKCkK
ICAgICAvLyBSZS1lbmFibGUgYnJlYWtwb2ludHMgaWYgdGhleSB3ZXJlIGVuYWJsZWQuCiAgICAg
aWYgKG1fcHJvZ3JhbW1hdGljQ2FwdHVyZVJlc3RvcmVCcmVha3BvaW50QWN0aXZlVmFsdWUpIHsK
ICAgICAgICAgaWYgKEluc3BlY3RvckRlYnVnZ2VyQWdlbnQqIGRlYnVnZ2VyQWdlbnQgPSBtX2lu
c3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yRGVidWdnZXJBZ2VudCgpKSB7Ci0gICAgICAgICAg
ICBFcnJvclN0cmluZyB1bnVzZWQ7Ci0gICAgICAgICAgICBkZWJ1Z2dlckFnZW50LT5zZXRCcmVh
a3BvaW50c0FjdGl2ZSh1bnVzZWQsIHRydWUpOworICAgICAgICAgICAgRXJyb3JTdHJpbmcgaWdu
b3JlZDsKKyAgICAgICAgICAgIGRlYnVnZ2VyQWdlbnQtPnNldEJyZWFrcG9pbnRzQWN0aXZlKGln
bm9yZWQsIHRydWUpOwogICAgICAgICB9CiAgICAgfQogfQpAQCAtNTU5LDI0ICs1NTksMjQgQEAg
dm9pZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50Ojp0b2dnbGVJbnN0cnVtZW50cyhJbnN0cnVtZW50
U3RhdGUgc3RhdGUpCiB2b2lkIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OnRvZ2dsZVNjcmlwdFBy
b2ZpbGVySW5zdHJ1bWVudChJbnN0cnVtZW50U3RhdGUgc3RhdGUpCiB7CiAgICAgaWYgKGF1dG8q
IHNjcmlwdFByb2ZpbGVyQWdlbnQgPSBtX2luc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yU2Ny
aXB0UHJvZmlsZXJBZ2VudCgpKSB7Ci0gICAgICAgIEVycm9yU3RyaW5nIHVudXNlZDsKKyAgICAg
ICAgRXJyb3JTdHJpbmcgaWdub3JlZDsKICAgICAgICAgaWYgKHN0YXRlID09IEluc3RydW1lbnRT
dGF0ZTo6U3RhcnQpIHsKICAgICAgICAgICAgIGNvbnN0IGJvb2wgaW5jbHVkZVNhbXBsZXMgPSB0
cnVlOwotICAgICAgICAgICAgc2NyaXB0UHJvZmlsZXJBZ2VudC0+c3RhcnRUcmFja2luZyh1bnVz
ZWQsICZpbmNsdWRlU2FtcGxlcyk7CisgICAgICAgICAgICBzY3JpcHRQcm9maWxlckFnZW50LT5z
dGFydFRyYWNraW5nKGlnbm9yZWQsICZpbmNsdWRlU2FtcGxlcyk7CiAgICAgICAgIH0gZWxzZQot
ICAgICAgICAgICAgc2NyaXB0UHJvZmlsZXJBZ2VudC0+c3RvcFRyYWNraW5nKHVudXNlZCk7Cisg
ICAgICAgICAgICBzY3JpcHRQcm9maWxlckFnZW50LT5zdG9wVHJhY2tpbmcoaWdub3JlZCk7CiAg
ICAgfQogfQogCiB2b2lkIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OnRvZ2dsZUhlYXBJbnN0cnVt
ZW50KEluc3RydW1lbnRTdGF0ZSBzdGF0ZSkKIHsKICAgICBpZiAoYXV0byogaGVhcEFnZW50ID0g
bV9pbnN0cnVtZW50aW5nQWdlbnRzLnBhZ2VIZWFwQWdlbnQoKSkgewotICAgICAgICBFcnJvclN0
cmluZyB1bnVzZWQ7CisgICAgICAgIEVycm9yU3RyaW5nIGlnbm9yZWQ7CiAgICAgICAgIGlmIChz
dGF0ZSA9PSBJbnN0cnVtZW50U3RhdGU6OlN0YXJ0KSB7CiAgICAgICAgICAgICBpZiAobV9hdXRv
Q2FwdHVyZVBoYXNlID09IEF1dG9DYXB0dXJlUGhhc2U6Ok5vbmUgfHwgbV9hdXRvQ2FwdHVyZVBo
YXNlID09IEF1dG9DYXB0dXJlUGhhc2U6OkZpcnN0TmF2aWdhdGlvbikKLSAgICAgICAgICAgICAg
ICBoZWFwQWdlbnQtPnN0YXJ0VHJhY2tpbmcodW51c2VkKTsKKyAgICAgICAgICAgICAgICBoZWFw
QWdlbnQtPnN0YXJ0VHJhY2tpbmcoaWdub3JlZCk7CiAgICAgICAgIH0gZWxzZQotICAgICAgICAg
ICAgaGVhcEFnZW50LT5zdG9wVHJhY2tpbmcodW51c2VkKTsKKyAgICAgICAgICAgIGhlYXBBZ2Vu
dC0+c3RvcFRyYWNraW5nKGlnbm9yZWQpOwogICAgIH0KIH0KIApAQCAtNTg0LDExICs1ODQsMTEg
QEAgdm9pZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50Ojp0b2dnbGVDUFVJbnN0cnVtZW50KEluc3Ry
dW1lbnRTdGF0ZSBzdGF0ZSkKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfVVNBR0UpCiAgICAgaWYg
KEluc3BlY3RvckNQVVByb2ZpbGVyQWdlbnQqIGNwdVByb2ZpbGVyQWdlbnQgPSBtX2luc3RydW1l
bnRpbmdBZ2VudHMuaW5zcGVjdG9yQ1BVUHJvZmlsZXJBZ2VudCgpKSB7Ci0gICAgICAgIEVycm9y
U3RyaW5nIHVudXNlZDsKKyAgICAgICAgRXJyb3JTdHJpbmcgaWdub3JlZDsKICAgICAgICAgaWYg
KHN0YXRlID09IEluc3RydW1lbnRTdGF0ZTo6U3RhcnQpCi0gICAgICAgICAgICBjcHVQcm9maWxl
ckFnZW50LT5zdGFydFRyYWNraW5nKHVudXNlZCk7CisgICAgICAgICAgICBjcHVQcm9maWxlckFn
ZW50LT5zdGFydFRyYWNraW5nKGlnbm9yZWQpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBj
cHVQcm9maWxlckFnZW50LT5zdG9wVHJhY2tpbmcodW51c2VkKTsKKyAgICAgICAgICAgIGNwdVBy
b2ZpbGVyQWdlbnQtPnN0b3BUcmFja2luZyhpZ25vcmVkKTsKICAgICB9CiAjZWxzZQogICAgIFVO
VVNFRF9QQVJBTShzdGF0ZSk7CkBAIC01OTksMTEgKzU5OSwxMSBAQCB2b2lkIEluc3BlY3RvclRp
bWVsaW5lQWdlbnQ6OnRvZ2dsZU1lbW9yeUluc3RydW1lbnQoSW5zdHJ1bWVudFN0YXRlIHN0YXRl
KQogewogI2lmIEVOQUJMRShSRVNPVVJDRV9VU0FHRSkKICAgICBpZiAoSW5zcGVjdG9yTWVtb3J5
QWdlbnQqIG1lbW9yeUFnZW50ID0gbV9pbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3Rvck1lbW9y
eUFnZW50KCkpIHsKLSAgICAgICAgRXJyb3JTdHJpbmcgdW51c2VkOworICAgICAgICBFcnJvclN0
cmluZyBpZ25vcmVkOwogICAgICAgICBpZiAoc3RhdGUgPT0gSW5zdHJ1bWVudFN0YXRlOjpTdGFy
dCkKLSAgICAgICAgICAgIG1lbW9yeUFnZW50LT5zdGFydFRyYWNraW5nKHVudXNlZCk7CisgICAg
ICAgICAgICBtZW1vcnlBZ2VudC0+c3RhcnRUcmFja2luZyhpZ25vcmVkKTsKICAgICAgICAgZWxz
ZQotICAgICAgICAgICAgbWVtb3J5QWdlbnQtPnN0b3BUcmFja2luZyh1bnVzZWQpOworICAgICAg
ICAgICAgbWVtb3J5QWdlbnQtPnN0b3BUcmFja2luZyhpZ25vcmVkKTsKICAgICB9CiAjZWxzZQog
ICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvYWdlbnRzL0luc3BlY3RvcldvcmtlckFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yV29ya2VyQWdlbnQuY3BwCmluZGV4IDFlMzk4ZWRkMWE5
ZWEzZWYyNmJlMDllYzAzZDZjNmMyY2QzOThkZTguLmExMDQwMGEwNGI3ZmJjMzE5Y2VmOTlkYjBl
YzgwMWJiNmMxNzEwYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2Vu
dHMvSW5zcGVjdG9yV29ya2VyQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvSW5zcGVjdG9yV29ya2VyQWdlbnQuY3BwCkBAIC03OSw3ICs3OSw3IEBAIHZvaWQg
SW5zcGVjdG9yV29ya2VyQWdlbnQ6OmluaXRpYWxpemVkKEVycm9yU3RyaW5nJiBlcnJvclN0cmlu
ZywgY29uc3QgU3RyaW5nJiB3CiB7CiAgICAgV29ya2VySW5zcGVjdG9yUHJveHkqIHByb3h5ID0g
bV9jb25uZWN0ZWRQcm94aWVzLmdldCh3b3JrZXJJZCk7CiAgICAgaWYgKCFwcm94eSkgewotICAg
ICAgICBlcnJvclN0cmluZyA9ICJXb3JrZXIgbm90IGZvdW5kLiJfczsKKyAgICAgICAgZXJyb3JT
dHJpbmcgPSAiTWlzc2luZyB3b3JrZXIgZm9yIGdpdmVuIHdvcmtlcklkIl9zOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCkBAIC04OSwxMyArODksMTMgQEAgdm9pZCBJbnNwZWN0b3JXb3JrZXJB
Z2VudDo6aW5pdGlhbGl6ZWQoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcm
IHcKIHZvaWQgSW5zcGVjdG9yV29ya2VyQWdlbnQ6OnNlbmRNZXNzYWdlVG9Xb3JrZXIoRXJyb3JT
dHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIHdvcmtlcklkLCBjb25zdCBTdHJpbmcm
IG1lc3NhZ2UpCiB7CiAgICAgaWYgKCFtX2VuYWJsZWQpIHsKLSAgICAgICAgZXJyb3JTdHJpbmcg
PSAiV29ya2VyIGluc3BlY3Rpb24gbXVzdCBiZSBlbmFibGVkLiJfczsKKyAgICAgICAgZXJyb3JT
dHJpbmcgPSAiV29ya2VyIGRvbWFpbiBtdXN0IGJlIGVuYWJsZWQiX3M7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKICAgICBXb3JrZXJJbnNwZWN0b3JQcm94eSogcHJveHkgPSBtX2Nvbm5lY3Rl
ZFByb3hpZXMuZ2V0KHdvcmtlcklkKTsKICAgICBpZiAoIXByb3h5KSB7Ci0gICAgICAgIGVycm9y
U3RyaW5nID0gIldvcmtlciBub3QgZm91bmQuIl9zOworICAgICAgICBlcnJvclN0cmluZyA9ICJN
aXNzaW5nIHdvcmtlciBmb3IgZ2l2ZW4gd29ya2VySWQiX3M7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvcGFnZS9Q
YWdlQXVkaXRBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3BhZ2Uv
UGFnZUF1ZGl0QWdlbnQuY3BwCmluZGV4IDVlNTAyZjZiZjhhNjNiMzkzMzNlZWE3NGM4ZDgwZmEw
NjlhZWNjNGQuLjk0ZjdhZTEzN2NiODkyMzU3YTgxNjEwYWZhYTBiNzNmNDdjOTU5ZjUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdlQXVkaXRBZ2Vu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9wYWdlL1BhZ2VBdWRp
dEFnZW50LmNwcApAQCAtNjgsOSArNjgsOSBAQCBJbmplY3RlZFNjcmlwdCBQYWdlQXVkaXRBZ2Vu
dDo6aW5qZWN0ZWRTY3JpcHRGb3JFdmFsKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgYwogICAg
IEluamVjdGVkU2NyaXB0IGluamVjdGVkU2NyaXB0ID0gaW5qZWN0ZWRTY3JpcHRGb3JFdmFsKGV4
ZWN1dGlvbkNvbnRleHRJZCk7CiAgICAgaWYgKGluamVjdGVkU2NyaXB0Lmhhc05vVmFsdWUoKSkg
ewogICAgICAgICBpZiAoZXhlY3V0aW9uQ29udGV4dElkKQotICAgICAgICAgICAgZXJyb3JTdHJp
bmcgPSAiRXhlY3V0aW9uIGNvbnRleHQgd2l0aCBnaXZlbiBpZCBub3QgZm91bmQuIl9zOworICAg
ICAgICAgICAgZXJyb3JTdHJpbmcgPSAiTWlzc2luZyBpbmplY3RlZCBzY3JpcHQgZm9yIGdpdmVu
IGV4ZWN1dGlvbkNvbnRleHRJZCJfczsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgZXJyb3JT
dHJpbmcgPSAiSW50ZXJuYWwgZXJyb3I6IG1haW4gd29ybGQgZXhlY3V0aW9uIGNvbnRleHQgbm90
IGZvdW5kLiJfczsKKyAgICAgICAgICAgIGVycm9yU3RyaW5nID0gIkludGVybmFsIGVycm9yOiBt
YWluIHdvcmxkIGV4ZWN1dGlvbiBjb250ZXh0IG5vdCBmb3VuZCJfczsKICAgICB9CiAgICAgcmV0
dXJuIGluamVjdGVkU2NyaXB0OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2FnZW50cy9wYWdlL1BhZ2VDb25zb2xlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2FnZW50cy9wYWdlL1BhZ2VDb25zb2xlQWdlbnQuY3BwCmluZGV4IDZlZWVjMGFjYzQy
YzFkYTQwMTRiYjdlNDM2ZTA5YThlNDhkMDMyNTYuLjc3ZjNkMmMxZmUyZmM5YWI4NDFiOGY1OTRm
NDY3OTBjN2I4OTM3ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2Vu
dHMvcGFnZS9QYWdlQ29uc29sZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvYWdlbnRzL3BhZ2UvUGFnZUNvbnNvbGVBZ2VudC5jcHAKQEAgLTEyMCw3ICsxMjAsNyBAQCB2
b2lkIFBhZ2VDb25zb2xlQWdlbnQ6OnNldExvZ2dpbmdDaGFubmVsTGV2ZWwoRXJyb3JTdHJpbmcm
IGVycm9yU3RyaW5nLCBjb25zdCBTdAogewogICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGNoYW5u
ZWxDb25maWd1cmF0aW9uRm9yU3RyaW5nKGNoYW5uZWxMZXZlbCk7CiAgICAgaWYgKCFjb25maWd1
cmF0aW9uKSB7Ci0gICAgICAgIGVycm9yU3RyaW5nID0gIkludmFsaWQgbG9nZ2luZyBsZXZlbCJf
czsKKyAgICAgICAgZXJyb3JTdHJpbmcgPSBtYWtlU3RyaW5nKCJVbmtub3duIGNoYW5uZWxMZXZl
bDogIl9zLCBjaGFubmVsTGV2ZWwpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZURlYnVnZ2VyQWdl
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9wYWdlL1BhZ2VEZWJ1Z2dl
ckFnZW50LmNwcAppbmRleCBiMzg4NWZiNThjYmFhZTNiYWUwNzI1ZjY3MTRmYmY3YWI5NmZmZjNk
Li44YmNmODViMjcxMWY4NWI5ZDc2NDI0YjM4MTFlYjVjYTY3YTFjYmYxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZURlYnVnZ2VyQWdlbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdlRGVidWdnZXJB
Z2VudC5jcHAKQEAgLTE1Miw3ICsxNTIsNyBAQCBJbmplY3RlZFNjcmlwdCBQYWdlRGVidWdnZXJB
Z2VudDo6aW5qZWN0ZWRTY3JpcHRGb3JFdmFsKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZwogCiAg
ICAgSW5qZWN0ZWRTY3JpcHQgaW5qZWN0ZWRTY3JpcHQgPSBpbmplY3RlZFNjcmlwdE1hbmFnZXIo
KS5pbmplY3RlZFNjcmlwdEZvcklkKCpleGVjdXRpb25Db250ZXh0SWQpOwogICAgIGlmIChpbmpl
Y3RlZFNjcmlwdC5oYXNOb1ZhbHVlKCkpCi0gICAgICAgIGVycm9yU3RyaW5nID0gIkV4ZWN1dGlv
biBjb250ZXh0IHdpdGggZ2l2ZW4gaWQgbm90IGZvdW5kLiJfczsKKyAgICAgICAgZXJyb3JTdHJp
bmcgPSAiTWlzc2luZyBpbmplY3RlZCBzY3JpcHQgZm9yIGdpdmVuIGV4ZWN1dGlvbkNvbnRleHRJ
ZC4iX3M7CiAKICAgICByZXR1cm4gaW5qZWN0ZWRTY3JpcHQ7CiB9CkBAIC0xNjYsOCArMTY2LDkg
QEAgdm9pZCBQYWdlRGVidWdnZXJBZ2VudDo6bWFpbkZyYW1lU3RhcnRlZExvYWRpbmcoKQogewog
ICAgIGlmIChpc1BhdXNlZCgpKSB7CiAgICAgICAgIHNldFN1cHByZXNzQWxsUGF1c2VzKHRydWUp
OwotICAgICAgICBFcnJvclN0cmluZyB1bnVzZWQ7Ci0gICAgICAgIHJlc3VtZSh1bnVzZWQpOwor
CisgICAgICAgIEVycm9yU3RyaW5nIGlnbm9yZWQ7CisgICAgICAgIHJlc3VtZShpZ25vcmVkKTsK
ICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMv
cGFnZS9QYWdlTmV0d29ya0FnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2Vu
dHMvcGFnZS9QYWdlTmV0d29ya0FnZW50LmNwcAppbmRleCA5ODBhZDgyYTUyNWYwMmUxZmU4NjNi
NzJhOTE0YmFkMmQ2NmU2MWUwLi5jNjk2MDZjOTZjODVmZDljOWU4MTc0YjYzNzU5NTE3MzAyMDNm
NTlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFn
ZU5ldHdvcmtBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9w
YWdlL1BhZ2VOZXR3b3JrQWdlbnQuY3BwCkBAIC0xMDIsNyArMTAyLDcgQEAgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogUGFnZU5ldHdvcmtBZ2VudDo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dChFcnJv
clN0cmluZyYgZXIKIAogICAgIGF1dG8qIGRvY3VtZW50ID0gZnJhbWUtPmRvY3VtZW50KCk7CiAg
ICAgaWYgKCFkb2N1bWVudCkgewotICAgICAgICBlcnJvclN0cmluZyA9ICJObyBEb2N1bWVudCBp
bnN0YW5jZSBmb3IgdGhlIHNwZWNpZmllZCBmcmFtZSJfczsKKyAgICAgICAgZXJyb3JTdHJpbmcg
PSAiTWlzc2luZyBmcmFtZSBvZiBkb2N1ZW1udCBmb3IgZ2l2ZW4gZnJhbWVJZCJfczsKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZVJ1bnRpbWVBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZVJ1bnRpbWVBZ2VudC5jcHAKaW5kZXggODk4NWJj
OTQ1ZmU3NWUwZTg1MWEzNmRlMzU4NGFiMDQ3MWMwZmRmZi4uN2NmNjJkNmUzMzhlNzhlYjJhOTNm
MmEyZTQyMTNhZTc5YjBmZDZlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2FnZW50cy9wYWdlL1BhZ2VSdW50aW1lQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdlUnVudGltZUFnZW50LmNwcApAQCAtOTYsMTMgKzk2LDEz
IEBAIEluamVjdGVkU2NyaXB0IFBhZ2VSdW50aW1lQWdlbnQ6OmluamVjdGVkU2NyaXB0Rm9yRXZh
bChFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsCiAgICAgICAgIEpTQzo6RXhlY1N0YXRlKiBzY3Jp
cHRTdGF0ZSA9IG1haW5Xb3JsZEV4ZWNTdGF0ZSgmbV9pbnNwZWN0ZWRQYWdlLm1haW5GcmFtZSgp
KTsKICAgICAgICAgSW5qZWN0ZWRTY3JpcHQgcmVzdWx0ID0gaW5qZWN0ZWRTY3JpcHRNYW5hZ2Vy
KCkuaW5qZWN0ZWRTY3JpcHRGb3Ioc2NyaXB0U3RhdGUpOwogICAgICAgICBpZiAocmVzdWx0Lmhh
c05vVmFsdWUoKSkKLSAgICAgICAgICAgIGVycm9yU3RyaW5nID0gIkludGVybmFsIGVycm9yOiBt
YWluIHdvcmxkIGV4ZWN1dGlvbiBjb250ZXh0IG5vdCBmb3VuZC4iX3M7CisgICAgICAgICAgICBl
cnJvclN0cmluZyA9ICJJbnRlcm5hbCBlcnJvcjogbWFpbiB3b3JsZCBleGVjdXRpb24gY29udGV4
dCBub3QgZm91bmQiX3M7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCiAgICAgSW5q
ZWN0ZWRTY3JpcHQgaW5qZWN0ZWRTY3JpcHQgPSBpbmplY3RlZFNjcmlwdE1hbmFnZXIoKS5pbmpl
Y3RlZFNjcmlwdEZvcklkKCpleGVjdXRpb25Db250ZXh0SWQpOwogICAgIGlmIChpbmplY3RlZFNj
cmlwdC5oYXNOb1ZhbHVlKCkpCi0gICAgICAgIGVycm9yU3RyaW5nID0gIkV4ZWN1dGlvbiBjb250
ZXh0IHdpdGggZ2l2ZW4gaWQgbm90IGZvdW5kLiJfczsKKyAgICAgICAgZXJyb3JTdHJpbmcgPSAi
TWlzc2luZyBpbmplY3RlZCBzY3JpcHQgZm9yIGdpdmVuIGV4ZWN1dGlvbkNvbnRleHRJZCJfczsK
ICAgICByZXR1cm4gaW5qZWN0ZWRTY3JpcHQ7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlckF1ZGl0QWdlbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2VyQXVkaXRBZ2VudC5jcHAKaW5k
ZXggOTE1MDRhMGU0ZmViZDJmZWU0NWIwZjE2OGM2MzQ1ZjM4YjM5ZTJlMi4uN2RlYzBjYjkwY2Vm
ZDU3MzgyNDMxMThhNGI1ZDA0MTZiYWUxZWI2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2VyQXVkaXRBZ2VudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2VyQXVkaXRBZ2VudC5jcHAKQEAg
LTQ5LDcgKzQ5LDcgQEAgV29ya2VyQXVkaXRBZ2VudDo6V29ya2VyQXVkaXRBZ2VudChXb3JrZXJB
Z2VudENvbnRleHQmIGNvbnRleHQpCiBJbmplY3RlZFNjcmlwdCBXb3JrZXJBdWRpdEFnZW50Ojpp
bmplY3RlZFNjcmlwdEZvckV2YWwoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBpbnQq
IGV4ZWN1dGlvbkNvbnRleHRJZCkKIHsKICAgICBpZiAoZXhlY3V0aW9uQ29udGV4dElkKSB7Ci0g
ICAgICAgIGVycm9yU3RyaW5nID0gIkV4ZWN1dGlvbiBjb250ZXh0IGlkIGlzIG5vdCBzdXBwb3J0
ZWQgZm9yIHdvcmtlcnMgYXMgdGhlcmUgaXMgb25seSBvbmUgZXhlY3V0aW9uIGNvbnRleHQuIl9z
OworICAgICAgICBlcnJvclN0cmluZyA9ICJleGVjdXRpb25Db250ZXh0SWQgaXMgbm90IHN1cHBv
cnRlZCBmb3Igd29ya2VycyBhcyB0aGVyZSBpcyBvbmx5IG9uZSBleGVjdXRpb24gY29udGV4dCJf
czsKICAgICAgICAgcmV0dXJuIEluamVjdGVkU2NyaXB0KCk7CiAgICAgfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJEZWJ1Z2dlckFn
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlckRl
YnVnZ2VyQWdlbnQuY3BwCmluZGV4IDgwODJlZTMxZWVjNjBhMmY2MDMyOWRiYWJkNGQ5ODQyZjZh
NTVmZmEuLjA3YmZjNjI0NjhiZDhhZThiMGRhOTg1MTJhMjg1ZmFiOTQ4ZGZlNjcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlckRlYnVnZ2Vy
QWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dv
cmtlckRlYnVnZ2VyQWdlbnQuY3BwCkBAIC01Niw3ICs1Niw3IEBAIHZvaWQgV29ya2VyRGVidWdn
ZXJBZ2VudDo6YnJlYWtwb2ludEFjdGlvbkxvZyhFeGVjU3RhdGUmIHN0YXRlLCBjb25zdCBTdHJp
bmcmIG1lCiBJbmplY3RlZFNjcmlwdCBXb3JrZXJEZWJ1Z2dlckFnZW50OjppbmplY3RlZFNjcmlw
dEZvckV2YWwoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBpbnQqIGV4ZWN1dGlvbkNv
bnRleHRJZCkKIHsKICAgICBpZiAoZXhlY3V0aW9uQ29udGV4dElkKSB7Ci0gICAgICAgIGVycm9y
U3RyaW5nID0gIkV4ZWN1dGlvbiBjb250ZXh0IGlkIGlzIG5vdCBzdXBwb3J0ZWQgZm9yIHdvcmtl
cnMgYXMgdGhlcmUgaXMgb25seSBvbmUgZXhlY3V0aW9uIGNvbnRleHQuIl9zOworICAgICAgICBl
cnJvclN0cmluZyA9ICJleGVjdXRpb25Db250ZXh0SWQgaXMgbm90IHN1cHBvcnRlZCBmb3Igd29y
a2VycyBhcyB0aGVyZSBpcyBvbmx5IG9uZSBleGVjdXRpb24gY29udGV4dCJfczsKICAgICAgICAg
cmV0dXJuIEluamVjdGVkU2NyaXB0KCk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJSdW50aW1lQWdlbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2VyUnVudGltZUFnZW50LmNw
cAppbmRleCAxYjBmN2QwOTJiY2ExZjUxOTQzNWQ4MzAzNGNiNzYzMjk3YWNmN2Q3Li40NWE3Y2Uw
YmM2MDJiMzhhMGIyZjM4YmUxZjc3NzRjZTk3ZjQxOGYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJSdW50aW1lQWdlbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlclJ1bnRpbWVBZ2Vu
dC5jcHAKQEAgLTUyLDcgKzUyLDcgQEAgV29ya2VyUnVudGltZUFnZW50OjpXb3JrZXJSdW50aW1l
QWdlbnQoV29ya2VyQWdlbnRDb250ZXh0JiBjb250ZXh0KQogSW5qZWN0ZWRTY3JpcHQgV29ya2Vy
UnVudGltZUFnZW50OjppbmplY3RlZFNjcmlwdEZvckV2YWwoRXJyb3JTdHJpbmcmIGVycm9yU3Ry
aW5nLCBjb25zdCBpbnQqIGV4ZWN1dGlvbkNvbnRleHRJZCkKIHsKICAgICBpZiAoZXhlY3V0aW9u
Q29udGV4dElkKSB7Ci0gICAgICAgIGVycm9yU3RyaW5nID0gIkV4ZWN1dGlvbiBjb250ZXh0IGlk
IGlzIG5vdCBzdXBwb3J0ZWQgZm9yIHdvcmtlcnMgYXMgdGhlcmUgaXMgb25seSBvbmUgZXhlY3V0
aW9uIGNvbnRleHQuIl9zOworICAgICAgICBlcnJvclN0cmluZyA9ICJleGVjdXRpb25Db250ZXh0
SWQgaXMgbm90IHN1cHBvcnRlZCBmb3Igd29ya2VycyBhcyB0aGVyZSBpcyBvbmx5IG9uZSBleGVj
dXRpb24gY29udGV4dCJfczsKICAgICAgICAgcmV0dXJuIEluamVjdGVkU2NyaXB0KCk7CiAgICAg
fQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>377288</attachid>
            <date>2019-08-26 16:36:43 -0700</date>
            <delta_ts>2019-08-26 18:02:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-200950-20190826163642.patch</filename>
            <type>text/plain</type>
            <size>122087</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDJhYWI4NmI0ZWRkYzMzYzRiODczMDg5ZjlhZjBm
ZmI2OTM3NWY0YTQuLmUxZjVlN2RjMGU3MWNkNzA0OTY3OTg5OTgzOTBmMGE1MDI0YjFjMjEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDE5LTA4LTI2ICBEZXZp
biBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiB1
bmlmeSBhZ2VudCBjb21tYW5kIGVycm9yIG1lc3NhZ2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDA5NTAKKworICAgICAgICBSZXZpZXdlZCBieSBK
b3NlcGggUGVjb3Jhcm8uCisKKyAgICAgICAgRGlmZmVyZW50IGFnZW50cyBjYW4gc29tZXRpbWVz
IGhhdmUgZGlmZmVyZW50IGVycm9yIG1lc3NhZ2VzIGZvciBjb21tYW5kcyB0aGF0IGhhdmUgYQor
ICAgICAgICBzaW1pbGFyIGludGVuZGVkIGVmZmVjdC4gIFdlIHNob3VsZCBtYWtlIG91ciBlcnJv
ciBtZXNzYWdlcyBtb3JlIHNpbWlsYXIuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvSlNHbG9iYWxP
YmplY3RDb25zb2xlQ2xpZW50LmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3RvckFnZW50LmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckF1ZGl0
QWdlbnQuY3BwOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ29uc29sZUFn
ZW50LmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRlYnVnZ2VyQWdl
bnQuY3BwOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9ySGVhcEFnZW50LmNw
cDoKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclJ1bnRpbWVBZ2VudC5jcHA6
CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JUYXJnZXRBZ2VudC5jcHA6Cisg
ICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9KU0dsb2JhbE9iamVjdEF1ZGl0QWdlbnQuY3BwOgor
ICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSlNHbG9iYWxPYmplY3REZWJ1Z2dlckFnZW50LmNw
cDoKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0pTR2xvYmFsT2JqZWN0UnVudGltZUFnZW50
LmNwcDoKKyAgICAgICAgRWxpZGUgZnVuY3Rpb24gbGlzdHMgdG8gYXZvaWQgYW4gZXh0cmVtZWx5
IGxhcmdlIENoYW5nZUxvZyBlbnRyeS4KKwogMjAxOS0wOC0yNiAgUm9zcyBLaXJzbGluZyAgPHJv
c3Mua2lyc2xpbmdAc29ueS5jb20+CiAKICAgICAgICAgW0pTQ10gRW5zdXJlIHg/LnkgPz8geiBp
cyBmYXN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKaW5kZXggYTQ1NzFiYzRkNmJkZGVmZGI0NjQwYzYyZTY4YjA4ZTg5MjZi
ZWI2Yy4uZDQ0NjQ5NGQ5M2JmNGEwMDc5MGVjOTQ3OTAzZDlkZTU5MmIxZTc1MSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDM4IEBACisyMDE5LTA4LTI2ICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFw
cGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiB1bmlmeSBhZ2VudCBjb21tYW5kIGVy
cm9yIG1lc3NhZ2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMDA5NTAKKworICAgICAgICBSZXZpZXdlZCBieSBKb3NlcGggUGVjb3Jhcm8uCisKKyAg
ICAgICAgRGlmZmVyZW50IGFnZW50cyBjYW4gc29tZXRpbWVzIGhhdmUgZGlmZmVyZW50IGVycm9y
IG1lc3NhZ2VzIGZvciBjb21tYW5kcyB0aGF0IGhhdmUgYQorICAgICAgICBzaW1pbGFyIGludGVu
ZGVkIGVmZmVjdC4gIFdlIHNob3VsZCBtYWtlIG91ciBlcnJvciBtZXNzYWdlcyBtb3JlIHNpbWls
YXIuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvQ29tbWFuZExpbmVBUElIb3N0LmNwcDoKKyAgICAg
ICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5jcHA6
CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDU1NBZ2VudC5jcHA6CisgICAg
ICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDYW52YXNBZ2VudC5oOgorICAgICAgICAq
IGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ2FudmFzQWdlbnQuY3BwOgorICAgICAgICAqIGlu
c3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQuY3BwOgorICAgICAgICAqIGluc3BlY3Rv
ci9hZ2VudHMvSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudC5jcHA6CisgICAgICAgICogaW5zcGVj
dG9yL2FnZW50cy9JbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuY3BwOgorICAgICAgICAqIGluc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuY3BwOgorICAgICAgICAqIGluc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuY3BwOgorICAgICAgICAqIGluc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9yTWVtb3J5QWdlbnQuY3BwOgorICAgICAgICAqIGluc3BlY3Rv
ci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRz
L0luc3BlY3RvcldvcmtlckFnZW50LmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL3Bh
Z2UvUGFnZUF1ZGl0QWdlbnQuY3BwOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvcGFnZS9Q
YWdlQ29uc29sZUFnZW50LmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFn
ZURlYnVnZ2VyQWdlbnQuY3BwOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdl
TmV0d29ya0FnZW50LmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZVJ1
bnRpbWVBZ2VudC5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2Vy
QXVkaXRBZ2VudC5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2Vy
RGVidWdnZXJBZ2VudC5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29y
a2VyUnVudGltZUFnZW50LmNwcDoKKyAgICAgICAgRWxpZGUgZnVuY3Rpb24gbGlzdHMgdG8gYXZv
aWQgYW4gZXh0cmVtZWx5IGxhcmdlIENoYW5nZUxvZyBlbnRyeS4KKwogMjAxOS0wOC0yNiAgU2lt
b24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBPcHRpbWl6ZSBj
b21wdXRhdGlvbiBvZiBBYnNvbHV0ZUNsaXBSZWN0cyBjbGlwIHJlY3RzCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTR2xvYmFsT2JqZWN0Q29uc29sZUNsaWVu
dC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTR2xvYmFsT2JqZWN0Q29u
c29sZUNsaWVudC5jcHAKaW5kZXggOTBiOWUzYTA5MjRiM2RlMTE0YWViMjM2YjQ0NDk2MGZjZTgw
MjU4NS4uY2Y4MGVlMjhjMGVmNGUyNDE5OGM1MWIwMWQ2MDVhZmFiM2EzM2JiMyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0dsb2JhbE9iamVjdENvbnNvbGVD
bGllbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNHbG9iYWxP
YmplY3RDb25zb2xlQ2xpZW50LmNwcApAQCAtMTI5LDI4ICsxMjksMjggQEAgdm9pZCBKU0dsb2Jh
bE9iamVjdENvbnNvbGVDbGllbnQ6OnByb2ZpbGVFbmQoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBT
dHJpbmcmIHRpdGwKIAogdm9pZCBKU0dsb2JhbE9iamVjdENvbnNvbGVDbGllbnQ6OnN0YXJ0Q29u
c29sZVByb2ZpbGUoKQogewotICAgIEVycm9yU3RyaW5nIHVudXNlZDsKKyAgICBFcnJvclN0cmlu
ZyBpZ25vcmVkOwogCiAgICAgaWYgKG1fZGVidWdnZXJBZ2VudCkgewogICAgICAgICBtX3Byb2Zp
bGVSZXN0b3JlQnJlYWtwb2ludEFjdGl2ZVZhbHVlID0gbV9kZWJ1Z2dlckFnZW50LT5icmVha3Bv
aW50c0FjdGl2ZSgpOwotICAgICAgICBtX2RlYnVnZ2VyQWdlbnQtPnNldEJyZWFrcG9pbnRzQWN0
aXZlKHVudXNlZCwgZmFsc2UpOworICAgICAgICBtX2RlYnVnZ2VyQWdlbnQtPnNldEJyZWFrcG9p
bnRzQWN0aXZlKGlnbm9yZWQsIGZhbHNlKTsKICAgICB9CiAKICAgICBpZiAobV9zY3JpcHRQcm9m
aWxlckFnZW50KSB7CiAgICAgICAgIGNvbnN0IGJvb2wgaW5jbHVkZVNhbXBsZXMgPSB0cnVlOwot
ICAgICAgICBtX3NjcmlwdFByb2ZpbGVyQWdlbnQtPnN0YXJ0VHJhY2tpbmcodW51c2VkLCAmaW5j
bHVkZVNhbXBsZXMpOworICAgICAgICBtX3NjcmlwdFByb2ZpbGVyQWdlbnQtPnN0YXJ0VHJhY2tp
bmcoaWdub3JlZCwgJmluY2x1ZGVTYW1wbGVzKTsKICAgICB9CiB9CiAKIHZvaWQgSlNHbG9iYWxP
YmplY3RDb25zb2xlQ2xpZW50OjpzdG9wQ29uc29sZVByb2ZpbGUoKQogewotICAgIEVycm9yU3Ry
aW5nIHVudXNlZDsKKyAgICBFcnJvclN0cmluZyBpZ25vcmVkOwogCiAgICAgaWYgKG1fc2NyaXB0
UHJvZmlsZXJBZ2VudCkKLSAgICAgICAgbV9zY3JpcHRQcm9maWxlckFnZW50LT5zdG9wVHJhY2tp
bmcodW51c2VkKTsKKyAgICAgICAgbV9zY3JpcHRQcm9maWxlckFnZW50LT5zdG9wVHJhY2tpbmco
aWdub3JlZCk7CiAKICAgICBpZiAobV9kZWJ1Z2dlckFnZW50KQotICAgICAgICBtX2RlYnVnZ2Vy
QWdlbnQtPnNldEJyZWFrcG9pbnRzQWN0aXZlKHVudXNlZCwgbV9wcm9maWxlUmVzdG9yZUJyZWFr
cG9pbnRBY3RpdmVWYWx1ZSk7CisgICAgICAgIG1fZGVidWdnZXJBZ2VudC0+c2V0QnJlYWtwb2lu
dHNBY3RpdmUoaWdub3JlZCwgbV9wcm9maWxlUmVzdG9yZUJyZWFrcG9pbnRBY3RpdmVWYWx1ZSk7
CiB9CiAKIHZvaWQgSlNHbG9iYWxPYmplY3RDb25zb2xlQ2xpZW50Ojp0YWtlSGVhcFNuYXBzaG90
KEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgU3RyaW5nJiB0aXRsZSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckFnZW50LmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckFnZW50LmNwcApp
bmRleCA0MTdlNzc1ZmI4MDI0OWMwNDAzMTM3YTgyNzgyMTM3MzI3ZDMzMmI0Li43YjBkNDZhZDk2
Yzg3NThhODdkYzAxNTFjMDJkMDcyYTc4ZTgzMjZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JBZ2VudC5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQWdlbnQuY3BwCkBAIC01
Myw4ICs1Myw4IEBAIHZvaWQgSW5zcGVjdG9yQWdlbnQ6OndpbGxEZXN0cm95RnJvbnRlbmRBbmRC
YWNrZW5kKERpc2Nvbm5lY3RSZWFzb24pCiB7CiAgICAgbV9wZW5kaW5nRXZhbHVhdGVUZXN0Q29t
bWFuZHMuY2xlYXIoKTsKIAotICAgIEVycm9yU3RyaW5nIHVudXNlZDsKLSAgICBkaXNhYmxlKHVu
dXNlZCk7CisgICAgRXJyb3JTdHJpbmcgaWdub3JlZDsKKyAgICBkaXNhYmxlKGlnbm9yZWQpOwog
fQogCiB2b2lkIEluc3BlY3RvckFnZW50OjplbmFibGUoRXJyb3JTdHJpbmcmKQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQXVkaXRB
Z2VudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0
b3JBdWRpdEFnZW50LmNwcAppbmRleCBiNzE3Nzk1MTBkMmZmM2UwNjBiNDk1NzkwYTM4NDI5YWUy
ZTg5MWQyLi5mZjg1ODA5MTk1Zjc0NjUzYjZmOTUyNDkzNzVhNDk2YzViMmFiZWM3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JBdWRp
dEFnZW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9J
bnNwZWN0b3JBdWRpdEFnZW50LmNwcApAQCAtNTksNyArNTksNyBAQCB2b2lkIEluc3BlY3RvckF1
ZGl0QWdlbnQ6OndpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKERpc2Nvbm5lY3RSZWFzb24p
CiB2b2lkIEluc3BlY3RvckF1ZGl0QWdlbnQ6OnNldHVwKEVycm9yU3RyaW5nJiBlcnJvclN0cmlu
ZywgY29uc3QgaW50KiBleGVjdXRpb25Db250ZXh0SWQpCiB7CiAgICAgaWYgKGhhc0FjdGl2ZUF1
ZGl0KCkpIHsKLSAgICAgICAgZXJyb3JTdHJpbmcgPSAiTXVzdCBjYWxsIHRlYXJkb3duIGJlZm9y
ZSBjYWxsaW5nIHNldHVwIGFnYWluLiJfczsKKyAgICAgICAgZXJyb3JTdHJpbmcgPSAiTXVzdCBj
YWxsIHRlYXJkb3duIGJlZm9yZSBjYWxsaW5nIHNldHVwIGFnYWluIl9zOwogICAgICAgICByZXR1
cm47CiAgICAgfQogCkBAIC02OSw3ICs2OSw3IEBAIHZvaWQgSW5zcGVjdG9yQXVkaXRBZ2VudDo6
c2V0dXAoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBpbnQqIGV4ZWN1dGlvbkNvCiAK
ICAgICBKU0M6OkV4ZWNTdGF0ZSogZXhlY1N0YXRlID0gaW5qZWN0ZWRTY3JpcHQuc2NyaXB0U3Rh
dGUoKTsKICAgICBpZiAoIWV4ZWNTdGF0ZSkgewotICAgICAgICBlcnJvclN0cmluZyA9ICJNaXNz
aW5nIGV4ZWN1dGlvbiBzdGF0ZSBmb3IgaW5qZWN0ZWQgc2NyaXB0LiJfczsKKyAgICAgICAgZXJy
b3JTdHJpbmcgPSAiTWlzc2luZyBleGVjdXRpb24gc3RhdGUgb2YgaW5qZWN0ZWQgc2NyaXB0IGZv
ciBnaXZlbiBleGVjdXRpb25Db250ZXh0SWQiX3M7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
QEAgLTExOCw3ICsxMTgsNyBAQCB2b2lkIEluc3BlY3RvckF1ZGl0QWdlbnQ6OnJ1bihFcnJvclN0
cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgdGVzdCwgY29ucwogdm9pZCBJbnNwZWN0
b3JBdWRpdEFnZW50Ojp0ZWFyZG93bihFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcpCiB7CiAgICAg
aWYgKCFoYXNBY3RpdmVBdWRpdCgpKSB7Ci0gICAgICAgIGVycm9yU3RyaW5nID0gIk11c3QgY2Fs
bCBzZXR1cCBiZWZvcmUgY2FsbGluZyB0ZWFyZG93bi4iX3M7CisgICAgICAgIGVycm9yU3RyaW5n
ID0gIk11c3QgY2FsbCBzZXR1cCBiZWZvcmUgY2FsbGluZyB0ZWFyZG93biJfczsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9yQ29uc29sZUFnZW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNvbnNvbGVBZ2VudC5jcHAKaW5kZXggNWQy
NGM2OWU2YmY0NWQ3MmZiMGJkYTUzYjRjNDU3NTk4NjEzY2JjYi4uNGI4N2M3ODVmMjU1YTI5MjNj
ODU5MzYyY2ZjZWY1YzYwNmFkOWMwOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ29uc29sZUFnZW50LmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDb25zb2xlQWdlbnQuY3Bw
CkBAIC0xMDYsOCArMTA2LDggQEAgdm9pZCBJbnNwZWN0b3JDb25zb2xlQWdlbnQ6OmNsZWFyTWVz
c2FnZXMoRXJyb3JTdHJpbmcmKQogCiB2b2lkIEluc3BlY3RvckNvbnNvbGVBZ2VudDo6cmVzZXQo
KQogewotICAgIEVycm9yU3RyaW5nIHVudXNlZDsKLSAgICBjbGVhck1lc3NhZ2VzKHVudXNlZCk7
CisgICAgRXJyb3JTdHJpbmcgaWdub3JlZDsKKyAgICBjbGVhck1lc3NhZ2VzKGlnbm9yZWQpOwog
CiAgICAgbV90aW1lcy5jbGVhcigpOwogICAgIG1fY291bnRzLmNsZWFyKCk7CkBAIC0xMTksOCAr
MTE5LDggQEAgdm9pZCBJbnNwZWN0b3JDb25zb2xlQWdlbnQ6OmFkZE1lc3NhZ2VUb0NvbnNvbGUo
c3RkOjp1bmlxdWVfcHRyPENvbnNvbGVNZXNzYWdlPgogICAgICAgICByZXR1cm47CiAKICAgICBp
ZiAobWVzc2FnZS0+dHlwZSgpID09IE1lc3NhZ2VUeXBlOjpDbGVhcikgewotICAgICAgICBFcnJv
clN0cmluZyB1bnVzZWQ7Ci0gICAgICAgIGNsZWFyTWVzc2FnZXModW51c2VkKTsKKyAgICAgICAg
RXJyb3JTdHJpbmcgaWdub3JlZDsKKyAgICAgICAgY2xlYXJNZXNzYWdlcyhpZ25vcmVkKTsKICAg
ICB9CiAKICAgICBhZGRDb25zb2xlTWVzc2FnZShXVEZNb3ZlKG1lc3NhZ2UpKTsKQEAgLTI4Niw3
ICsyODYsNyBAQCB2b2lkIEluc3BlY3RvckNvbnNvbGVBZ2VudDo6Z2V0TG9nZ2luZ0NoYW5uZWxz
KEVycm9yU3RyaW5nJiwgUmVmUHRyPEpTT046OkFycmF5TwogCiB2b2lkIEluc3BlY3RvckNvbnNv
bGVBZ2VudDo6c2V0TG9nZ2luZ0NoYW5uZWxMZXZlbChFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcs
IGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgZXJyb3JTdHJpbmcgPSAiTm8g
c3VjaCBjaGFubmVsIHRvIGVuYWJsZSJfczsKKyAgICBlcnJvclN0cmluZyA9ICJOb3Qgc3VwcG9y
dGVkIl9zOwogfQogCiB9IC8vIG5hbWVzcGFjZSBJbnNwZWN0b3IKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRGVi
dWdnZXJBZ2VudC5jcHAKaW5kZXggNTg5MTNjNjA1OTk1MjIxNTk5NDUyMWJjYmM1YmNkMzNlMWY5
ZDdmOS4uOGI4NTY4NDY1NzRlNTIwMDIxYzNjOWEyMzYxYzZlYTQyNzQ5OGNkOSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRGVidWdn
ZXJBZ2VudC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHAKQEAgLTE0NCw3ICsxNDQsNyBAQCB2b2lkIEluc3Bl
Y3RvckRlYnVnZ2VyQWdlbnQ6OnNldEFzeW5jU3RhY2tUcmFjZURlcHRoKEVycm9yU3RyaW5nJiBl
cnJvclN0cmluZywgaQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoZGVwdGggPCAwKSB7Ci0g
ICAgICAgIGVycm9yU3RyaW5nID0gImRlcHRoIG11c3QgYmUgYSBwb3NpdGl2ZSBudW1iZXIuIl9z
OworICAgICAgICBlcnJvclN0cmluZyA9ICJVbmV4cGVjdGVkIG5lZ2F0aXZlIGRlcHRoIl9zOwog
ICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0zNzcsMTkgKzM3NywxOSBAQCBib29sIEluc3Bl
Y3RvckRlYnVnZ2VyQWdlbnQ6OmJyZWFrcG9pbnRBY3Rpb25zRnJvbVByb3RvY29sKEVycm9yU3Ry
aW5nJiBlcnJvclN0cgogICAgICAgICBSZWZQdHI8SlNPTjo6VmFsdWU+IHZhbHVlID0gYWN0aW9u
cy0+Z2V0KGkpOwogICAgICAgICBSZWZQdHI8SlNPTjo6T2JqZWN0PiBvYmplY3Q7CiAgICAgICAg
IGlmICghdmFsdWUtPmFzT2JqZWN0KG9iamVjdCkpIHsKLSAgICAgICAgICAgIGVycm9yU3RyaW5n
ID0gIkJyZWFrcG9pbnRBY3Rpb24gb2YgaW5jb3JyZWN0IHR5cGUsIGV4cGVjdGVkIG9iamVjdCJf
czsKKyAgICAgICAgICAgIGVycm9yU3RyaW5nID0gIlVuZXhwZWN0ZWQgbm9uLW9iamVjdCBpdGVt
IGluIGdpdmVuIGFjdGlvbnMiX3M7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAg
IH0KIAogICAgICAgICBTdHJpbmcgdHlwZVN0cmluZzsKICAgICAgICAgaWYgKCFvYmplY3QtPmdl
dFN0cmluZygidHlwZSJfcywgdHlwZVN0cmluZykpIHsKLSAgICAgICAgICAgIGVycm9yU3RyaW5n
ID0gIkJyZWFrcG9pbnRBY3Rpb24gaGFkIHR5cGUgbWlzc2luZyJfczsKKyAgICAgICAgICAgIGVy
cm9yU3RyaW5nID0gIk1pc3NpbmcgdHlwZSBmb3IgaXRlbSBpbiBnaXZlbiBhY3Rpb25zIl9zOwog
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAKICAgICAgICAgU2NyaXB0QnJl
YWtwb2ludEFjdGlvblR5cGUgdHlwZTsKICAgICAgICAgaWYgKCFicmVha3BvaW50QWN0aW9uVHlw
ZUZvclN0cmluZyh0eXBlU3RyaW5nLCAmdHlwZSkpIHsKLSAgICAgICAgICAgIGVycm9yU3RyaW5n
ID0gIkJyZWFrcG9pbnRBY3Rpb24gaGFkIHVua25vd24gdHlwZSJfczsKKyAgICAgICAgICAgIGVy
cm9yU3RyaW5nID0gIk5vbi1zdHJpbmcgdHlwZSBmb3IgaXRlbSBpbiBnaXZlbiBhY3Rpb25zIl9z
OwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAKQEAgLTQyMiwxMCArNDIy
LDE2IEBAIHN0YXRpYyBSZWZQdHI8UHJvdG9jb2w6OkRlYnVnZ2VyOjpMb2NhdGlvbj4gYnVpbGRE
ZWJ1Z2dlckxvY2F0aW9uKGNvbnN0IEpTQzo6QnJlCiAKIHN0YXRpYyBib29sIHBhcnNlTG9jYXRp
b24oRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBKU09OOjpPYmplY3QmIGxvY2F0aW9u
LCBKU0M6OlNvdXJjZUlEJiBzb3VyY2VJRCwgdW5zaWduZWQmIGxpbmVOdW1iZXIsIHVuc2lnbmVk
JiBjb2x1bW5OdW1iZXIpCiB7Ci0gICAgU3RyaW5nIHNjcmlwdElEU3RyOwotICAgIGlmICghbG9j
YXRpb24uZ2V0U3RyaW5nKCJzY3JpcHRJZCJfcywgc2NyaXB0SURTdHIpIHx8ICFsb2NhdGlvbi5n
ZXRJbnRlZ2VyKCJsaW5lTnVtYmVyIl9zLCBsaW5lTnVtYmVyKSkgeworICAgIGlmICghbG9jYXRp
b24uZ2V0SW50ZWdlcigibGluZU51bWJlciJfcywgbGluZU51bWJlcikpIHsKKyAgICAgICAgZXJy
b3JTdHJpbmcgPSAiVW5leHBlY3RlZCBub24taW50ZWdlciBsaW5lTnVtYmVyIGluIGdpdmVuIGxv
Y2F0aW9uIl9zOwogICAgICAgICBzb3VyY2VJRCA9IEpTQzo6bm9Tb3VyY2VJRDsKLSAgICAgICAg
ZXJyb3JTdHJpbmcgPSAic2NyaXB0SWQgYW5kIGxpbmVOdW1iZXIgYXJlIHJlcXVpcmVkLiJfczsK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIFN0cmluZyBzY3JpcHRJRFN0cjsK
KyAgICBpZiAoIWxvY2F0aW9uLmdldFN0cmluZygic2NyaXB0SWQiX3MsIHNjcmlwdElEU3RyKSkg
eworICAgICAgICBzb3VyY2VJRCA9IEpTQzo6bm9Tb3VyY2VJRDsKKyAgICAgICAgZXJyb3JTdHJp
bmcgPSAiVW5leGVwY3RlZCBub24tc3RyaW5nIHNjcmlwdElkIGluIGdpdmVuIGxvY2F0aW9uIl9z
OwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCkBAIC00MzksNyArNDQ1LDcgQEAgdm9p
ZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpzZXRCcmVha3BvaW50QnlVcmwoRXJyb3JTdHJpbmcm
IGVycm9yU3RyaW5nLCBpbnQgbGkKIHsKICAgICBsb2NhdGlvbnMgPSBKU09OOjpBcnJheU9mPFBy
b3RvY29sOjpEZWJ1Z2dlcjo6TG9jYXRpb24+OjpjcmVhdGUoKTsKICAgICBpZiAoIW9wdGlvbmFs
VVJMID09ICFvcHRpb25hbFVSTFJlZ2V4KSB7Ci0gICAgICAgIGVycm9yU3RyaW5nID0gIkVpdGhl
ciB1cmwgb3IgdXJsUmVnZXggbXVzdCBiZSBzcGVjaWZpZWQuIl9zOworICAgICAgICBlcnJvclN0
cmluZyA9ICJFaXRoZXIgdXJsIG9yIHVybFJlZ2V4IG11c3QgYmUgc3BlY2lmaWVkIl9zOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogCkBAIC00NDksNyArNDU1LDcgQEAgdm9pZCBJbnNwZWN0b3JE
ZWJ1Z2dlckFnZW50OjpzZXRCcmVha3BvaW50QnlVcmwoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5n
LCBpbnQgbGkKIAogICAgIFN0cmluZyBicmVha3BvaW50SWRlbnRpZmllciA9IG1ha2VTdHJpbmco
aXNSZWdleCA/ICIvIiA6ICIiLCB1cmwsIGlzUmVnZXggPyAiLzoiIDogIjoiLCBsaW5lTnVtYmVy
LCAnOicsIGNvbHVtbk51bWJlcik7CiAgICAgaWYgKG1famF2YVNjcmlwdEJyZWFrcG9pbnRzLmNv
bnRhaW5zKGJyZWFrcG9pbnRJZGVudGlmaWVyKSkgewotICAgICAgICBlcnJvclN0cmluZyA9ICJC
cmVha3BvaW50IGF0IHNwZWNpZmllZCBsb2NhdGlvbiBhbHJlYWR5IGV4aXN0cy4iX3M7CisgICAg
ICAgIGVycm9yU3RyaW5nID0gIkJyZWFrcG9pbnQgZm9yIGdpdmVuIGxvY2F0aW9uIGFscmVhZHkg
ZXhpc3RzLiJfczsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNTIxLDcgKzUyNyw3IEBA
IHZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6c2V0QnJlYWtwb2ludChFcnJvclN0cmluZyYg
ZXJyb3JTdHJpbmcsIGNvbnN0IEpTT046CiAKICAgICBhdXRvIHNjcmlwdEl0ZXJhdG9yID0gbV9z
Y3JpcHRzLmZpbmQoc291cmNlSUQpOwogICAgIGlmIChzY3JpcHRJdGVyYXRvciA9PSBtX3Njcmlw
dHMuZW5kKCkpIHsKLSAgICAgICAgZXJyb3JTdHJpbmcgPSBtYWtlU3RyaW5nKCJObyBzY3JpcHQg
Zm9yIGlkOiAiX3MsIHNvdXJjZUlEKTsKKyAgICAgICAgZXJyb3JTdHJpbmcgPSAiTWlzc2luZyBz
Y3JpcHQgZm9yIHNjcmlwdElkIGluIGdpdmVuIGxvY2F0aW9uIl9zOwogICAgICAgICByZXR1cm47
CiAgICAgfQogCkBAIC01MzYsNyArNTQyLDcgQEAgdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50
OjpzZXRCcmVha3BvaW50KEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgSlNPTjoKICAg
ICBib29sIGV4aXN0aW5nOwogICAgIHNldEJyZWFrcG9pbnQoYnJlYWtwb2ludCwgZXhpc3Rpbmcp
OwogICAgIGlmIChleGlzdGluZykgewotICAgICAgICBlcnJvclN0cmluZyA9ICJCcmVha3BvaW50
IGF0IHNwZWNpZmllZCBsb2NhdGlvbiBhbHJlYWR5IGV4aXN0cyJfczsKKyAgICAgICAgZXJyb3JT
dHJpbmcgPSAiQnJlYWtwb2ludCBmb3IgZ2l2ZW4gbG9jYXRpb24gYWxyZWFkeSBleGlzdHMiX3M7
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTYyNCw3ICs2MzAsNyBAQCB2b2lkIEluc3Bl
Y3RvckRlYnVnZ2VyQWdlbnQ6OmNvbnRpbnVlVG9Mb2NhdGlvbihFcnJvclN0cmluZyYgZXJyb3JT
dHJpbmcsIGNvbnN0CiAgICAgaWYgKHNjcmlwdEl0ZXJhdG9yID09IG1fc2NyaXB0cy5lbmQoKSkg
ewogICAgICAgICBtX3NjcmlwdERlYnVnU2VydmVyLmNvbnRpbnVlUHJvZ3JhbSgpOwogICAgICAg
ICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+cmVzdW1lZCgpOwotICAgICAgICBlcnJvclN0cmluZyA9
IG1ha2VTdHJpbmcoIk5vIHNjcmlwdCBmb3IgaWQ6ICJfcywgc291cmNlSUQpOworICAgICAgICBl
cnJvclN0cmluZyA9ICJNaXNzaW5nIHNjcmlwdCBmb3Igc2NyaXB0SWQgaW4gZ2l2ZW4gbG9jYXRp
b24iX3M7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTY2MCwxMiArNjY2LDEyIEBAIHZv
aWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6Y29udGludWVUb0xvY2F0aW9uKEVycm9yU3RyaW5n
JiBlcnJvclN0cmluZywgY29uc3QKICAgICBtX3NjcmlwdERlYnVnU2VydmVyLmNvbnRpbnVlUHJv
Z3JhbSgpOwogfQogCi12b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnNlYXJjaEluQ29udGVu
dChFcnJvclN0cmluZyYgZXJyb3IsIGNvbnN0IFN0cmluZyYgc2NyaXB0SURTdHIsIGNvbnN0IFN0
cmluZyYgcXVlcnksIGNvbnN0IGJvb2wqIG9wdGlvbmFsQ2FzZVNlbnNpdGl2ZSwgY29uc3QgYm9v
bCogb3B0aW9uYWxJc1JlZ2V4LCBSZWZQdHI8SlNPTjo6QXJyYXlPZjxQcm90b2NvbDo6R2VuZXJp
Y1R5cGVzOjpTZWFyY2hNYXRjaD4+JiByZXN1bHRzKQordm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFn
ZW50OjpzZWFyY2hJbkNvbnRlbnQoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJp
bmcmIHNjcmlwdElEU3RyLCBjb25zdCBTdHJpbmcmIHF1ZXJ5LCBjb25zdCBib29sKiBvcHRpb25h
bENhc2VTZW5zaXRpdmUsIGNvbnN0IGJvb2wqIG9wdGlvbmFsSXNSZWdleCwgUmVmUHRyPEpTT046
OkFycmF5T2Y8UHJvdG9jb2w6OkdlbmVyaWNUeXBlczo6U2VhcmNoTWF0Y2g+PiYgcmVzdWx0cykK
IHsKICAgICBKU0M6OlNvdXJjZUlEIHNvdXJjZUlEID0gc2NyaXB0SURTdHIudG9JbnRQdHIoKTsK
ICAgICBhdXRvIGl0ID0gbV9zY3JpcHRzLmZpbmQoc291cmNlSUQpOwogICAgIGlmIChpdCA9PSBt
X3NjcmlwdHMuZW5kKCkpIHsKLSAgICAgICAgZXJyb3IgPSBtYWtlU3RyaW5nKCJObyBzY3JpcHQg
Zm9yIGlkOiAiX3MsIHNjcmlwdElEU3RyKTsKKyAgICAgICAgZXJyb3JTdHJpbmcgPSAiTWlzc2lu
ZyBzY3JpcHQgZm9yIGdpdmVuIHNjcmlwdElkIjsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApA
QCAtNjc0LDIxICs2ODAsMjEgQEAgdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpzZWFyY2hJ
bkNvbnRlbnQoRXJyb3JTdHJpbmcmIGVycm9yLCBjb25zdCBTdHJpbmcmIHMKICAgICByZXN1bHRz
ID0gQ29udGVudFNlYXJjaFV0aWxpdGllczo6c2VhcmNoSW5UZXh0QnlMaW5lcyhpdC0+dmFsdWUu
c291cmNlLCBxdWVyeSwgY2FzZVNlbnNpdGl2ZSwgaXNSZWdleCk7CiB9CiAKLXZvaWQgSW5zcGVj
dG9yRGVidWdnZXJBZ2VudDo6Z2V0U2NyaXB0U291cmNlKEVycm9yU3RyaW5nJiBlcnJvciwgY29u
c3QgU3RyaW5nJiBzY3JpcHRJRFN0ciwgU3RyaW5nKiBzY3JpcHRTb3VyY2UpCit2b2lkIEluc3Bl
Y3RvckRlYnVnZ2VyQWdlbnQ6OmdldFNjcmlwdFNvdXJjZShFcnJvclN0cmluZyYgZXJyb3JTdHJp
bmcsIGNvbnN0IFN0cmluZyYgc2NyaXB0SURTdHIsIFN0cmluZyogc2NyaXB0U291cmNlKQogewog
ICAgIEpTQzo6U291cmNlSUQgc291cmNlSUQgPSBzY3JpcHRJRFN0ci50b0ludFB0cigpOwogICAg
IGF1dG8gaXQgPSBtX3NjcmlwdHMuZmluZChzb3VyY2VJRCk7CiAgICAgaWYgKGl0ICE9IG1fc2Ny
aXB0cy5lbmQoKSkKICAgICAgICAgKnNjcmlwdFNvdXJjZSA9IGl0LT52YWx1ZS5zb3VyY2U7CiAg
ICAgZWxzZQotICAgICAgICBlcnJvciA9IG1ha2VTdHJpbmcoIk5vIHNjcmlwdCBmb3IgaWQ6ICJf
cywgc2NyaXB0SURTdHIpOworICAgICAgICBlcnJvclN0cmluZyA9ICJNaXNzaW5nIHNjcmlwdCBm
b3IgZ2l2ZW4gc2NyaXB0SWQiOwogfQogCiB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6Omdl
dEZ1bmN0aW9uRGV0YWlscyhFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYg
ZnVuY3Rpb25JZCwgUmVmUHRyPFByb3RvY29sOjpEZWJ1Z2dlcjo6RnVuY3Rpb25EZXRhaWxzPiYg
ZGV0YWlscykKIHsKICAgICBJbmplY3RlZFNjcmlwdCBpbmplY3RlZFNjcmlwdCA9IG1faW5qZWN0
ZWRTY3JpcHRNYW5hZ2VyLmluamVjdGVkU2NyaXB0Rm9yT2JqZWN0SWQoZnVuY3Rpb25JZCk7CiAg
ICAgaWYgKGluamVjdGVkU2NyaXB0Lmhhc05vVmFsdWUoKSkgewotICAgICAgICBlcnJvclN0cmlu
ZyA9ICJGdW5jdGlvbiBvYmplY3QgaWQgaXMgb2Jzb2xldGUiX3M7CisgICAgICAgIGVycm9yU3Ry
aW5nID0gIk1pc3NpbmcgaW5qZWN0ZWQgc2NyaXB0IGZvciBnaXZlbiBmdW5jdGlvbklkIl9zOwog
ICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC03MjksNyArNzM1LDcgQEAgdm9pZCBJbnNwZWN0
b3JEZWJ1Z2dlckFnZW50OjpwYXVzZShFcnJvclN0cmluZyYpCiB2b2lkIEluc3BlY3RvckRlYnVn
Z2VyQWdlbnQ6OnJlc3VtZShFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcpCiB7CiAgICAgaWYgKCFt
X3BhdXNlZFNjcmlwdFN0YXRlICYmICFtX2phdmFTY3JpcHRQYXVzZVNjaGVkdWxlZCkgewotICAg
ICAgICBlcnJvclN0cmluZyA9ICJXYXMgbm90IHBhdXNlZCBvciB3YWl0aW5nIHRvIHBhdXNlIl9z
OworICAgICAgICBlcnJvclN0cmluZyA9ICJNdXN0IGJlIHBhdXNlZCBvciB3YWl0aW5nIHRvIHBh
dXNlIl9zOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC04MTMsNyArODE5LDcgQEAgdm9p
ZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpzZXRQYXVzZU9uRXhjZXB0aW9ucyhFcnJvclN0cmlu
ZyYgZXJyb3JTdHJpbmcsIGNvbnMKICAgICBlbHNlIGlmIChzdHJpbmdQYXVzZVN0YXRlID09ICJ1
bmNhdWdodCIpCiAgICAgICAgIHBhdXNlU3RhdGUgPSBKU0M6OkRlYnVnZ2VyOjpQYXVzZU9uVW5j
YXVnaHRFeGNlcHRpb25zOwogICAgIGVsc2UgewotICAgICAgICBlcnJvclN0cmluZyA9IG1ha2VT
dHJpbmcoIlVua25vd24gcGF1c2Ugb24gZXhjZXB0aW9ucyBtb2RlOiAiX3MsIHN0cmluZ1BhdXNl
U3RhdGUpOworICAgICAgICBlcnJvclN0cmluZyA9IG1ha2VTdHJpbmcoIlVua25vd24gc3RhdGU6
ICJfcywgc3RyaW5nUGF1c2VTdGF0ZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTgz
NCwxNCArODQwLDEyIEBAIHZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6c2V0UGF1c2VPbk1p
Y3JvdGFza3MoRXJyb3JTdHJpbmcmLCBib29sIGVuYWJsZWQpCiAKIHZvaWQgSW5zcGVjdG9yRGVi
dWdnZXJBZ2VudDo6ZXZhbHVhdGVPbkNhbGxGcmFtZShFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcs
IGNvbnN0IFN0cmluZyYgY2FsbEZyYW1lSWQsIGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbiwgY29u
c3QgU3RyaW5nKiBvYmplY3RHcm91cCwgY29uc3QgYm9vbCogaW5jbHVkZUNvbW1hbmRMaW5lQVBJ
LCBjb25zdCBib29sKiBkb05vdFBhdXNlT25FeGNlcHRpb25zQW5kTXV0ZUNvbnNvbGUsIGNvbnN0
IGJvb2wqIHJldHVybkJ5VmFsdWUsIGNvbnN0IGJvb2wqIGdlbmVyYXRlUHJldmlldywgY29uc3Qg
Ym9vbCogc2F2ZVJlc3VsdCwgY29uc3QgYm9vbCogLyogZW11bGF0ZVVzZXJHZXN0dXJlICovLCBS
ZWZQdHI8UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4mIHJlc3VsdCwgT3B0aW9uYWw8
Ym9vbD4mIHdhc1Rocm93biwgT3B0aW9uYWw8aW50PiYgc2F2ZWRSZXN1bHRJbmRleCkKIHsKLSAg
ICBpZiAoIW1fY3VycmVudENhbGxTdGFjaykgewotICAgICAgICBlcnJvclN0cmluZyA9ICJOb3Qg
cGF1c2VkIl9zOworICAgIGlmICghYXNzZXJ0UGF1c2VkKGVycm9yU3RyaW5nKSkKICAgICAgICAg
cmV0dXJuOwotICAgIH0KIAogICAgIEluamVjdGVkU2NyaXB0IGluamVjdGVkU2NyaXB0ID0gbV9p
bmplY3RlZFNjcmlwdE1hbmFnZXIuaW5qZWN0ZWRTY3JpcHRGb3JPYmplY3RJZChjYWxsRnJhbWVJ
ZCk7CiAgICAgaWYgKGluamVjdGVkU2NyaXB0Lmhhc05vVmFsdWUoKSkgewotICAgICAgICBlcnJv
clN0cmluZyA9ICJDb3VsZCBub3QgZmluZCBJbmplY3RlZFNjcmlwdCBmb3IgY2FsbEZyYW1lSWQi
X3M7CisgICAgICAgIGVycm9yU3RyaW5nID0gIk1pc3NpbmcgaW5qZWN0ZWQgc2NyaXB0IGZvciBn
aXZlbiBjYWxsRnJhbWVJZCJfczsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTEwMiw5
ICsxMTA2LDkgQEAgdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpicmVha1Byb2dyYW0oRGVi
dWdnZXJGcm9udGVuZERpc3BhdGNoZXI6OlJlYXNvbiBicmUKIAogdm9pZCBJbnNwZWN0b3JEZWJ1
Z2dlckFnZW50OjpjbGVhckluc3BlY3RvckJyZWFrcG9pbnRTdGF0ZSgpCiB7Ci0gICAgRXJyb3JT
dHJpbmcgZHVtbXlFcnJvcjsKKyAgICBFcnJvclN0cmluZyBpZ25vcmVkOwogICAgIGZvciAoY29u
c3QgU3RyaW5nJiBpZGVudGlmaWVyIDogY29weVRvVmVjdG9yKG1fYnJlYWtwb2ludElkZW50aWZp
ZXJUb0RlYnVnU2VydmVyQnJlYWtwb2ludElEcy5rZXlzKCkpKQotICAgICAgICByZW1vdmVCcmVh
a3BvaW50KGR1bW15RXJyb3IsIGlkZW50aWZpZXIpOworICAgICAgICByZW1vdmVCcmVha3BvaW50
KGlnbm9yZWQsIGlkZW50aWZpZXIpOwogCiAgICAgbV9qYXZhU2NyaXB0QnJlYWtwb2ludHMuY2xl
YXIoKTsKIApAQCAtMTE1MCw3ICsxMTU0LDcgQEAgdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50
OjpkaWRDbGVhckdsb2JhbE9iamVjdCgpCiBib29sIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmFz
c2VydFBhdXNlZChFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcpCiB7CiAgICAgaWYgKCFtX3BhdXNl
ZFNjcmlwdFN0YXRlKSB7Ci0gICAgICAgIGVycm9yU3RyaW5nID0gIkNhbiBvbmx5IHBlcmZvcm0g
b3BlcmF0aW9uIHdoaWxlIHBhdXNlZC4iX3M7CisgICAgICAgIGVycm9yU3RyaW5nID0gIk11c3Qg
YmUgcGF1c2VkIl9zOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JIZWFwQWdl
bnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
SGVhcEFnZW50LmNwcAppbmRleCBjMTQ3MzY4OWZjMGYxYjdkY2IyZjVjZjVhNTZjNGI3ZTlkYzNk
MmM3Li43YWM3MjM2NGIxZWY2MTY2MjJlNmQ0ODQ1ZTE3MmJmNGQ4OThmNGU2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JIZWFwQWdl
bnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3RvckhlYXBBZ2VudC5jcHAKQEAgLTYyLDcgKzYyLDcgQEAgdm9pZCBJbnNwZWN0b3JIZWFwQWdl
bnQ6OndpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKERpc2Nvbm5lY3RSZWFzb24pCiB2b2lk
IEluc3BlY3RvckhlYXBBZ2VudDo6ZW5hYmxlKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZykKIHsK
ICAgICBpZiAobV9lbmFibGVkKSB7Ci0gICAgICAgIGVycm9yU3RyaW5nID0gIkhlYXBBZ2VudCBh
bHJlYWR5IGVuYWJsZWQiX3M7CisgICAgICAgIGVycm9yU3RyaW5nID0gIkhlYXAgZG9tYWluIGFs
cmVhZHkgZW5hYmxlZCJfczsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNzQsNyArNzQs
NyBAQCB2b2lkIEluc3BlY3RvckhlYXBBZ2VudDo6ZW5hYmxlKEVycm9yU3RyaW5nJiBlcnJvclN0
cmluZykKIHZvaWQgSW5zcGVjdG9ySGVhcEFnZW50OjpkaXNhYmxlKEVycm9yU3RyaW5nJiBlcnJv
clN0cmluZykKIHsKICAgICBpZiAoIW1fZW5hYmxlZCkgewotICAgICAgICBlcnJvclN0cmluZyA9
ICJIZWFwQWdlbnQgYWxyZWFkeSBkaXNhYmxlZCJfczsKKyAgICAgICAgZXJyb3JTdHJpbmcgPSAi
SGVhcCBkb21haW4gYWxyZWFkeSBkaXNhYmxlZCJfczsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IApAQCAtMjM1LDEzICsyMzUsMTMgQEAgdm9pZCBJbnNwZWN0b3JIZWFwQWdlbnQ6OmdldFJlbW90
ZU9iamVjdChFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGludCBoZWFwT2JqZWMKICAgICBKU0Nl
bGwqIGNlbGwgPSBvcHRpb25hbE5vZGUtPmNlbGw7CiAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUg
PSBjZWxsLT5zdHJ1Y3R1cmUodm0pOwogICAgIGlmICghc3RydWN0dXJlKSB7Ci0gICAgICAgIGVy
cm9yU3RyaW5nID0gIlVuYWJsZSB0byBnZXQgb2JqZWN0IGRldGFpbHMiX3M7CisgICAgICAgIGVy
cm9yU3RyaW5nID0gIlVuYWJsZSB0byBnZXQgb2JqZWN0IGRldGFpbHMgLSBTdHJ1Y3R1cmUiX3M7
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0ID0gc3RydWN0dXJlLT5nbG9iYWxPYmplY3QoKTsKICAgICBpZiAoIWdsb2JhbE9iamVjdCkg
ewotICAgICAgICBlcnJvclN0cmluZyA9ICJVbmFibGUgdG8gZ2V0IG9iamVjdCBkZXRhaWxzIl9z
OworICAgICAgICBlcnJvclN0cmluZyA9ICJVbmFibGUgdG8gZ2V0IG9iamVjdCBkZXRhaWxzIC0g
R2xvYmFsT2JqZWN0Il9zOwogICAgICAgICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JSdW50aW1lQWdl
bnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
UnVudGltZUFnZW50LmNwcAppbmRleCAxOGVhZjliY2EzZmQxNWVlYjc5NWUwZGUyNmVkYzc4YzNm
MjIzZmQ3Li40Y2IxY2IxZGRjMDgzNTFhZDgyZmE1NmRhZTM5OGYzYTFmYmU1ZDI5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JSdW50
aW1lQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRz
L0luc3BlY3RvclJ1bnRpbWVBZ2VudC5jcHAKQEAgLTEzNiw3ICsxMzYsNyBAQCB2b2lkIEluc3Bl
Y3RvclJ1bnRpbWVBZ2VudDo6YXdhaXRQcm9taXNlKGNvbnN0IFN0cmluZyYgcHJvbWlzZU9iamVj
dElkLCBjb25zdCBibwogewogICAgIEluamVjdGVkU2NyaXB0IGluamVjdGVkU2NyaXB0ID0gbV9p
bmplY3RlZFNjcmlwdE1hbmFnZXIuaW5qZWN0ZWRTY3JpcHRGb3JPYmplY3RJZChwcm9taXNlT2Jq
ZWN0SWQpOwogICAgIGlmIChpbmplY3RlZFNjcmlwdC5oYXNOb1ZhbHVlKCkpIHsKLSAgICAgICAg
Y2FsbGJhY2stPnNlbmRGYWlsdXJlKCJDb3VsZCBub3QgZmluZCBJbmplY3RlZFNjcmlwdCBmb3Ig
cHJvbWlzZU9iamVjdElkIl9zKTsKKyAgICAgICAgY2FsbGJhY2stPnNlbmRGYWlsdXJlKCJNaXNz
aW5nIGluamVjdGVkIHNjcmlwdCBmb3IgZ2l2ZW4gcHJvbWlzZU9iamVjdElkIl9zKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTUyLDcgKzE1Miw3IEBAIHZvaWQgSW5zcGVjdG9yUnVu
dGltZUFnZW50OjpjYWxsRnVuY3Rpb25PbihFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0
IFN0cmluCiB7CiAgICAgSW5qZWN0ZWRTY3JpcHQgaW5qZWN0ZWRTY3JpcHQgPSBtX2luamVjdGVk
U2NyaXB0TWFuYWdlci5pbmplY3RlZFNjcmlwdEZvck9iamVjdElkKG9iamVjdElkKTsKICAgICBp
ZiAoaW5qZWN0ZWRTY3JpcHQuaGFzTm9WYWx1ZSgpKSB7Ci0gICAgICAgIGVycm9yU3RyaW5nID0g
IkNvdWxkIG5vdCBmaW5kIEluamVjdGVkU2NyaXB0IGZvciBvYmplY3RJZCJfczsKKyAgICAgICAg
ZXJyb3JTdHJpbmcgPSAiTWlzc2luZyBpbmplY3RlZCBzY3JpcHQgZm9yIGdpdmVuIG9iamVjdElk
Il9zOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0xNzgsNyArMTc4LDcgQEAgdm9pZCBJ
bnNwZWN0b3JSdW50aW1lQWdlbnQ6OmdldFByZXZpZXcoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5n
LCBjb25zdCBTdHJpbmcmIG8KIHsKICAgICBJbmplY3RlZFNjcmlwdCBpbmplY3RlZFNjcmlwdCA9
IG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmluamVjdGVkU2NyaXB0Rm9yT2JqZWN0SWQob2JqZWN0
SWQpOwogICAgIGlmIChpbmplY3RlZFNjcmlwdC5oYXNOb1ZhbHVlKCkpIHsKLSAgICAgICAgZXJy
b3JTdHJpbmcgPSAiQ291bGQgbm90IGZpbmQgSW5qZWN0ZWRTY3JpcHQgZm9yIG9iamVjdElkIl9z
OworICAgICAgICBlcnJvclN0cmluZyA9ICJNaXNzaW5nIGluamVjdGVkIHNjcmlwdCBmb3IgZ2l2
ZW4gb2JqZWN0SWQiX3M7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTE5NSw3ICsxOTUs
NyBAQCB2b2lkIEluc3BlY3RvclJ1bnRpbWVBZ2VudDo6Z2V0UHJvcGVydGllcyhFcnJvclN0cmlu
ZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZwogewogICAgIEluamVjdGVkU2NyaXB0IGluamVj
dGVkU2NyaXB0ID0gbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIuaW5qZWN0ZWRTY3JpcHRGb3JPYmpl
Y3RJZChvYmplY3RJZCk7CiAgICAgaWYgKGluamVjdGVkU2NyaXB0Lmhhc05vVmFsdWUoKSkgewot
ICAgICAgICBlcnJvclN0cmluZyA9ICJDb3VsZCBub3QgZmluZCBJbmplY3RlZFNjcmlwdCBmb3Ig
b2JqZWN0SWQiX3M7CisgICAgICAgIGVycm9yU3RyaW5nID0gIk1pc3NpbmcgaW5qZWN0ZWQgc2Ny
aXB0IGZvciBnaXZlbiBvYmplY3RJZCJfczsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAt
MjEzLDcgKzIxMyw3IEBAIHZvaWQgSW5zcGVjdG9yUnVudGltZUFnZW50OjpnZXREaXNwbGF5YWJs
ZVByb3BlcnRpZXMoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjCiB7CiAgICAgSW5qZWN0ZWRT
Y3JpcHQgaW5qZWN0ZWRTY3JpcHQgPSBtX2luamVjdGVkU2NyaXB0TWFuYWdlci5pbmplY3RlZFNj
cmlwdEZvck9iamVjdElkKG9iamVjdElkKTsKICAgICBpZiAoaW5qZWN0ZWRTY3JpcHQuaGFzTm9W
YWx1ZSgpKSB7Ci0gICAgICAgIGVycm9yU3RyaW5nID0gIkNvdWxkIG5vdCBmaW5kIEluamVjdGVk
U2NyaXB0IGZvciBvYmplY3RJZCJfczsKKyAgICAgICAgZXJyb3JTdHJpbmcgPSAiTWlzc2luZyBp
bmplY3RlZCBzY3JpcHQgZm9yIGdpdmVuIG9iamVjdElkIl9zOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogCkBAIC0yMzEsNyArMjMxLDcgQEAgdm9pZCBJbnNwZWN0b3JSdW50aW1lQWdlbnQ6Omdl
dENvbGxlY3Rpb25FbnRyaWVzKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QKIHsKICAg
ICBJbmplY3RlZFNjcmlwdCBpbmplY3RlZFNjcmlwdCA9IG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2Vy
LmluamVjdGVkU2NyaXB0Rm9yT2JqZWN0SWQob2JqZWN0SWQpOwogICAgIGlmIChpbmplY3RlZFNj
cmlwdC5oYXNOb1ZhbHVlKCkpIHsKLSAgICAgICAgZXJyb3JTdHJpbmcgPSAiQ291bGQgbm90IGZp
bmQgSW5qZWN0ZWRTY3JpcHQgZm9yIG9iamVjdElkIl9zOworICAgICAgICBlcnJvclN0cmluZyA9
ICJNaXNzaW5nIGluamVjdGVkIHNjcmlwdCBmb3IgZ2l2ZW4gb2JqZWN0SWQiX3M7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKQEAgLTI0OSw3ICsyNDksNyBAQCB2b2lkIEluc3BlY3RvclJ1bnRp
bWVBZ2VudDo6c2F2ZVJlc3VsdChFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IEpTT046
Ok9iagogICAgIGlmIChjYWxsQXJndW1lbnQuZ2V0U3RyaW5nKCJvYmplY3RJZCJfcywgb2JqZWN0
SWQpKSB7CiAgICAgICAgIGluamVjdGVkU2NyaXB0ID0gbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIu
aW5qZWN0ZWRTY3JpcHRGb3JPYmplY3RJZChvYmplY3RJZCk7CiAgICAgICAgIGlmIChpbmplY3Rl
ZFNjcmlwdC5oYXNOb1ZhbHVlKCkpIHsKLSAgICAgICAgICAgIGVycm9yU3RyaW5nID0gIkNvdWxk
IG5vdCBmaW5kIEluamVjdGVkU2NyaXB0IGZvciBvYmplY3RJZCJfczsKKyAgICAgICAgICAgIGVy
cm9yU3RyaW5nID0gIk1pc3NpbmcgaW5qZWN0ZWQgc2NyaXB0IGZvciBnaXZlbiBvYmplY3RJZCJf
czsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgIH0gZWxzZSB7CkBAIC0yODcs
NyArMjg3LDcgQEAgdm9pZCBJbnNwZWN0b3JSdW50aW1lQWdlbnQ6OmdldFJ1bnRpbWVUeXBlc0Zv
clZhcmlhYmxlc0F0T2Zmc2V0cyhFcnJvclN0cmluZyYgZXIKIAogICAgIHR5cGVEZXNjcmlwdGlv
bnMgPSBKU09OOjpBcnJheU9mPFByb3RvY29sOjpSdW50aW1lOjpUeXBlRGVzY3JpcHRpb24+Ojpj
cmVhdGUoKTsKICAgICBpZiAoIW1fdm0udHlwZVByb2ZpbGVyKCkpIHsKLSAgICAgICAgZXJyb3JT
dHJpbmcgPSAiVGhlIFZNIGRvZXMgbm90IGN1cnJlbnRseSBoYXZlIFR5cGUgSW5mb3JtYXRpb24u
Il9zOworICAgICAgICBlcnJvclN0cmluZyA9ICJWTSBoYXMgbm8gdHlwZSBpbmZvcm1hdGlvbiJf
czsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMjk4LDcgKzI5OCw3IEBAIHZvaWQgSW5z
cGVjdG9yUnVudGltZUFnZW50OjpnZXRSdW50aW1lVHlwZXNGb3JWYXJpYWJsZXNBdE9mZnNldHMo
RXJyb3JTdHJpbmcmIGVyCiAgICAgICAgIFJlZlB0cjxKU09OOjpWYWx1ZT4gdmFsdWUgPSBsb2Nh
dGlvbnMuZ2V0KGkpOwogICAgICAgICBSZWZQdHI8SlNPTjo6T2JqZWN0PiBsb2NhdGlvbjsKICAg
ICAgICAgaWYgKCF2YWx1ZS0+YXNPYmplY3QobG9jYXRpb24pKSB7Ci0gICAgICAgICAgICBlcnJv
clN0cmluZyA9ICJBcnJheSBvZiBUeXBlTG9jYXRpb24gb2JqZWN0cyBoYXMgYW4gb2JqZWN0IHRo
YXQgZG9lcyBub3QgaGF2ZSB0eXBlIG9mIFR5cGVMb2NhdGlvbi4iX3M7CisgICAgICAgICAgICBl
cnJvclN0cmluZyA9ICJVbmV4cGVjdGVkIG5vbi1vYmplY3QgaXRlbSBpbiBsb2NhdGlvbnMiX3M7
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApAQCAtNDA2LDcgKzQwNiw3IEBAIHZv
aWQgSW5zcGVjdG9yUnVudGltZUFnZW50OjpzZXRDb250cm9sRmxvd1Byb2ZpbGVyRW5hYmxlZFN0
YXRlKGJvb2wgaXNDb250cm9sRmxvCiB2b2lkIEluc3BlY3RvclJ1bnRpbWVBZ2VudDo6Z2V0QmFz
aWNCbG9ja3MoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIHNvdXJjZUlE
QXNTdHJpbmcsIFJlZlB0cjxKU09OOjpBcnJheU9mPFByb3RvY29sOjpSdW50aW1lOjpCYXNpY0Js
b2NrPj4mIGJhc2ljQmxvY2tzKQogewogICAgIGlmICghbV92bS5jb250cm9sRmxvd1Byb2ZpbGVy
KCkpIHsKLSAgICAgICAgZXJyb3JTdHJpbmcgPSAiVGhlIFZNIGRvZXMgbm90IGN1cnJlbnRseSBo
YXZlIGEgQ29udHJvbCBGbG93IFByb2ZpbGVyLiJfczsKKyAgICAgICAgZXJyb3JTdHJpbmcgPSAi
Vk0gaGFzIG5vIGNvbnRyb2wgZmxvdyBpbmZvcm1hdGlvbiJfczsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2Vu
dHMvSW5zcGVjdG9yVGFyZ2V0QWdlbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9yVGFyZ2V0QWdlbnQuY3BwCmluZGV4IDkzNTA2OGM3YWUxMTk3
MTA1NDRjMWY3Njc5ODIyZGZiNjZlNTZiODcuLjM0NDBkMDg5YmM2NDljMzZhYTEyY2U4MzUxOTMz
ZGI2MDNkNmY3NDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3RvclRhcmdldEFnZW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JUYXJnZXRBZ2VudC5jcHAKQEAgLTYxLDcgKzYx
LDcgQEAgdm9pZCBJbnNwZWN0b3JUYXJnZXRBZ2VudDo6c2VuZE1lc3NhZ2VUb1RhcmdldChFcnJv
clN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFMKIHsKICAgICBJbnNwZWN0b3JUYXJnZXQqIHRh
cmdldCA9IG1fdGFyZ2V0cy5nZXQodGFyZ2V0SWQpOwogICAgIGlmICghdGFyZ2V0KSB7Ci0gICAg
ICAgIGVycm9yU3RyaW5nID0gIlRhcmdldCBub3QgZm91bmQuIl9zOworICAgICAgICBlcnJvclN0
cmluZyA9ICJNaXNzaW5nIHRhcmdldCBmb3IgZ2l2ZW4gdGFyZ2V0SWQiX3M7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3IvYWdlbnRzL0pTR2xvYmFsT2JqZWN0QXVkaXRBZ2VudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL2FnZW50cy9KU0dsb2JhbE9iamVjdEF1ZGl0QWdlbnQuY3BwCmluZGV4
IDg2ZTc2N2JhMGRhZmYxN2Y1MzJkMDc1ZGFmNjU1YzdkY2Q2MTNkNTguLjc0MzU0YmEzMjBhZTFi
ZmZkMDI5OWNjYjZlMzU2ODI1YjVkODk5MzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0pTR2xvYmFsT2JqZWN0QXVkaXRBZ2VudC5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSlNHbG9iYWxPYmplY3RBdWRp
dEFnZW50LmNwcApAQCAtNDcsMTQgKzQ3LDE0IEBAIEpTR2xvYmFsT2JqZWN0QXVkaXRBZ2VudDo6
SlNHbG9iYWxPYmplY3RBdWRpdEFnZW50KEpTQWdlbnRDb250ZXh0JiBjb250ZXh0KQogSW5qZWN0
ZWRTY3JpcHQgSlNHbG9iYWxPYmplY3RBdWRpdEFnZW50OjppbmplY3RlZFNjcmlwdEZvckV2YWwo
RXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBpbnQqIGV4ZWN1dGlvbkNvbnRleHRJZCkK
IHsKICAgICBpZiAoZXhlY3V0aW9uQ29udGV4dElkKSB7Ci0gICAgICAgIGVycm9yU3RyaW5nID0g
IkV4ZWN1dGlvbiBjb250ZXh0IGlkIGlzIG5vdCBzdXBwb3J0ZWQgZm9yIEpTQ29udGV4dHMgYXMg
dGhlcmUgaXMgb25seSBvbmUgZXhlY3V0aW9uIGNvbnRleHQuIl9zOworICAgICAgICBlcnJvclN0
cmluZyA9ICJleGVjdXRpb25Db250ZXh0SWQgaXMgbm90IHN1cHBvcnRlZCBmb3IgSlNDb250ZXh0
cyBhcyB0aGVyZSBpcyBvbmx5IG9uZSBleGVjdXRpb24gY29udGV4dCJfczsKICAgICAgICAgcmV0
dXJuIEluamVjdGVkU2NyaXB0KCk7CiAgICAgfQogCiAgICAgSlNDOjpFeGVjU3RhdGUqIHNjcmlw
dFN0YXRlID0gbV9nbG9iYWxPYmplY3QuZ2xvYmFsRXhlYygpOwogICAgIEluamVjdGVkU2NyaXB0
IGluamVjdGVkU2NyaXB0ID0gaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKCkuaW5qZWN0ZWRTY3JpcHRG
b3Ioc2NyaXB0U3RhdGUpOwogICAgIGlmIChpbmplY3RlZFNjcmlwdC5oYXNOb1ZhbHVlKCkpCi0g
ICAgICAgIGVycm9yU3RyaW5nID0gIkludGVybmFsIGVycm9yOiBtYWluIHdvcmxkIGV4ZWN1dGlv
biBjb250ZXh0IG5vdCBmb3VuZC4iX3M7CisgICAgICAgIGVycm9yU3RyaW5nID0gIkludGVybmFs
IGVycm9yOiBtYWluIHdvcmxkIGV4ZWN1dGlvbiBjb250ZXh0IG5vdCBmb3VuZCJfczsKIAogICAg
IHJldHVybiBpbmplY3RlZFNjcmlwdDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0pTR2xvYmFsT2JqZWN0RGVidWdnZXJBZ2VudC5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9KU0dsb2JhbE9iamVjdERlYnVn
Z2VyQWdlbnQuY3BwCmluZGV4IDliM2YzNzlkNWU1YTQ5MGRiZTM3NWM3MmFjOTlmYTcyMGI5YWNj
ZWYuLmEyYWY1MTA1Y2JhYWM2MGZkNmM0MDhhNmUwYTNkNGU5MzJjNGNmNTEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0pTR2xvYmFsT2JqZWN0RGVi
dWdnZXJBZ2VudC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2Vu
dHMvSlNHbG9iYWxPYmplY3REZWJ1Z2dlckFnZW50LmNwcApAQCAtNDUsMTAgKzQ1LDEwIEBAIEpT
R2xvYmFsT2JqZWN0RGVidWdnZXJBZ2VudDo6SlNHbG9iYWxPYmplY3REZWJ1Z2dlckFnZW50KEpT
QWdlbnRDb250ZXh0JiBjb250ZXh0CiB7CiB9CiAKLUluamVjdGVkU2NyaXB0IEpTR2xvYmFsT2Jq
ZWN0RGVidWdnZXJBZ2VudDo6aW5qZWN0ZWRTY3JpcHRGb3JFdmFsKEVycm9yU3RyaW5nJiBlcnJv
ciwgY29uc3QgaW50KiBleGVjdXRpb25Db250ZXh0SWQpCitJbmplY3RlZFNjcmlwdCBKU0dsb2Jh
bE9iamVjdERlYnVnZ2VyQWdlbnQ6OmluamVjdGVkU2NyaXB0Rm9yRXZhbChFcnJvclN0cmluZyYg
ZXJyb3JTdHJpbmcsIGNvbnN0IGludCogZXhlY3V0aW9uQ29udGV4dElkKQogewogICAgIGlmIChl
eGVjdXRpb25Db250ZXh0SWQpIHsKLSAgICAgICAgZXJyb3IgPSAiRXhlY3V0aW9uIGNvbnRleHQg
aWQgaXMgbm90IHN1cHBvcnRlZCBmb3IgSlNDb250ZXh0IGluc3BlY3Rpb24gYXMgdGhlcmUgaXMg
b25seSBvbmUgZXhlY3V0aW9uIGNvbnRleHQuIl9zOworICAgICAgICBlcnJvclN0cmluZyA9ICJl
eGVjdXRpb25Db250ZXh0SWQgaXMgbm90IHN1cHBvcnRlZCBmb3IgSlNDb250ZXh0cyBhcyB0aGVy
ZSBpcyBvbmx5IG9uZSBleGVjdXRpb24gY29udGV4dCJfczsKICAgICAgICAgcmV0dXJuIEluamVj
dGVkU2NyaXB0KCk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL2FnZW50cy9KU0dsb2JhbE9iamVjdFJ1bnRpbWVBZ2VudC5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9KU0dsb2JhbE9iamVjdFJ1bnRpbWVBZ2Vu
dC5jcHAKaW5kZXggM2I3YzNlMjFkMzFjMWMyZjViNmQxYmEwYzE2ZjQ4ODgzZTZjZjMxNy4uM2Q5
ZDQ4ODkwNzZiYTgzOWY2ZTk3N2Q1MzRiNTJjMmEyMTU3MDdkZSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSlNHbG9iYWxPYmplY3RSdW50aW1lQWdl
bnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0pTR2xv
YmFsT2JqZWN0UnVudGltZUFnZW50LmNwcApAQCAtNDksNyArNDksNyBAQCBJbmplY3RlZFNjcmlw
dCBKU0dsb2JhbE9iamVjdFJ1bnRpbWVBZ2VudDo6aW5qZWN0ZWRTY3JpcHRGb3JFdmFsKEVycm9y
U3RyaW5nJiBlcgogICAgIEpTQzo6RXhlY1N0YXRlKiBzY3JpcHRTdGF0ZSA9IG1fZ2xvYmFsT2Jq
ZWN0Lmdsb2JhbEV4ZWMoKTsKICAgICBJbmplY3RlZFNjcmlwdCBpbmplY3RlZFNjcmlwdCA9IGlu
amVjdGVkU2NyaXB0TWFuYWdlcigpLmluamVjdGVkU2NyaXB0Rm9yKHNjcmlwdFN0YXRlKTsKICAg
ICBpZiAoaW5qZWN0ZWRTY3JpcHQuaGFzTm9WYWx1ZSgpKQotICAgICAgICBlcnJvclN0cmluZyA9
ICJJbnRlcm5hbCBlcnJvcjogbWFpbiB3b3JsZCBleGVjdXRpb24gY29udGV4dCBub3QgZm91bmQu
Il9zOworICAgICAgICBlcnJvclN0cmluZyA9ICJNaXNzaW5nIGV4ZWN1dGlvbiBjb250ZXh0IGZv
ciBnaXZlbiBleGVjdXRpb25Db250ZXh0SWQuIl9zOwogCiAgICAgcmV0dXJuIGluamVjdGVkU2Ny
aXB0OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvbW1hbmRMaW5l
QVBJSG9zdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29tbWFuZExpbmVBUElIb3N0
LmNwcAppbmRleCA5MDI5YjkyZDhiODNmMmQ3YmVkNmQ4ZTU0NTc2YzBhMTY4Y2E1MjViLi44NzVh
YmZmNDUyNGJjZjNjMzVhM2RhYmQ2YTM4NDFiYWFhZTkzODA5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvQ29tbWFuZExpbmVBUElIb3N0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvQ29tbWFuZExpbmVBUElIb3N0LmNwcApAQCAtMTM2LDggKzEzNiw4IEBA
IHZvaWQgQ29tbWFuZExpbmVBUElIb3N0OjpjbGVhckNvbnNvbGVNZXNzYWdlcygpCiAgICAgaWYg
KCFjb25zb2xlQWdlbnQpCiAgICAgICAgIHJldHVybjsKIAotICAgIEVycm9yU3RyaW5nIHVudXNl
ZDsKLSAgICBjb25zb2xlQWdlbnQtPmNsZWFyTWVzc2FnZXModW51c2VkKTsKKyAgICBFcnJvclN0
cmluZyBpZ25vcmVkOworICAgIGNvbnNvbGVBZ2VudC0+Y2xlYXJNZXNzYWdlcyhpZ25vcmVkKTsK
IH0KIAogdm9pZCBDb21tYW5kTGluZUFQSUhvc3Q6OmNvcHlUZXh0KGNvbnN0IFN0cmluZyYgdGV4
dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
QXBwbGljYXRpb25DYWNoZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2Vu
dHMvSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmNwcAppbmRleCBlYzE2NWI3ZDk3ZDE0
YjkwMGU5NzdkMDNlNWQ3NzU0Nzc5YjhlOWZiLi43MWMwNzRmMTBhZmQ1MDUxMmQ2MGI4ODgzMzA4
ODYxYzVjOWI5ZjIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRz
L0luc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQuY3BwCkBAIC01
NiwxNCArNTYsMTQgQEAgdm9pZCBJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQ6OmRpZENy
ZWF0ZUZyb250ZW5kQW5kQmFja2VuZChGcm9udGVuZFJvdXRlcioKIAogdm9pZCBJbnNwZWN0b3JB
cHBsaWNhdGlvbkNhY2hlQWdlbnQ6OndpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKEluc3Bl
Y3Rvcjo6RGlzY29ubmVjdFJlYXNvbikKIHsKLSAgICBFcnJvclN0cmluZyB1bnVzZWQ7Ci0gICAg
ZGlzYWJsZSh1bnVzZWQpOworICAgIEVycm9yU3RyaW5nIGlnbm9yZWQ7CisgICAgZGlzYWJsZShp
Z25vcmVkKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQ6OmVuYWJs
ZShFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcpCiB7CiAgICAgaWYgKG1faW5zdHJ1bWVudGluZ0Fn
ZW50cy5pbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQoKSA9PSB0aGlzKSB7Ci0gICAgICAg
IGVycm9yU3RyaW5nID0gIkFwcGxpY2F0aW9uQ2FjaGVBZ2VudCBhbHJlYWR5IGVuYWJsZWQiX3M7
CisgICAgICAgIGVycm9yU3RyaW5nID0gIkFwcGxpY2F0aW9uQ2FjaGUgZG9tYWluIGFscmVhZHkg
ZW5hYmxlZCJfczsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNzYsNyArNzYsNyBAQCB2
b2lkIEluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudDo6ZW5hYmxlKEVycm9yU3RyaW5nJiBl
cnJvclN0cmluZykKIHZvaWQgSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50OjpkaXNhYmxl
KEVycm9yU3RyaW5nJiBlcnJvclN0cmluZykKIHsKICAgICBpZiAobV9pbnN0cnVtZW50aW5nQWdl
bnRzLmluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudCgpICE9IHRoaXMpIHsKLSAgICAgICAg
ZXJyb3JTdHJpbmcgPSAiQXBwbGljYXRpb25DYWNoZUFnZW50IGFscmVhZHkgZGlzYWJsZWQiX3M7
CisgICAgICAgIGVycm9yU3RyaW5nID0gIkFwcGxpY2F0aW9uQ2FjaGUgZG9tYWluIGFscmVhZHkg
ZGlzYWJsZWQiX3M7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDU1NBZ2VudC5jcHAKaW5kZXggZjRj
M2ZmNWI2NDczZjAyZjJhMTEzZWY5Mzk2Nzg4ZjNhMjgxMjZkYy4uZGVlODkxNTA2NjFhN2IxOWJj
NTc5MTk0NGUwNTI5Y2MwODJjNzJiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2FnZW50cy9JbnNwZWN0b3JDU1NBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDU1NBZ2VudC5jcHAKQEAgLTQ3Miw3ICs0NzIsNyBAQCB2
b2lkIEluc3BlY3RvckNTU0FnZW50OjpnZXRNYXRjaGVkU3R5bGVzRm9yTm9kZShFcnJvclN0cmlu
ZyYgZXJyb3JTdHJpbmcsIGludCBubwogICAgIGlmIChlbGVtZW50UHNldWRvSWQgIT0gUHNldWRv
SWQ6Ok5vbmUpIHsKICAgICAgICAgZWxlbWVudCA9IGRvd25jYXN0PFBzZXVkb0VsZW1lbnQ+KCpl
bGVtZW50KS5ob3N0RWxlbWVudCgpOwogICAgICAgICBpZiAoIWVsZW1lbnQpIHsKLSAgICAgICAg
ICAgIGVycm9yU3RyaW5nID0gIlBzZXVkbyBlbGVtZW50IGhhcyBubyBwYXJlbnQiX3M7CisgICAg
ICAgICAgICBlcnJvclN0cmluZyA9ICJNaXNzaW5nIHBhcmVudCBvZiBwc2V1ZG8tZWxlbWVudCBu
b2RlIGZvciBnaXZlbiBub2RlSWQiX3M7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0K
ICAgICB9CkBAIC02MjIsNyArNjIyLDcgQEAgdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6c2V0U3R5
bGVTaGVldFRleHQoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcKIAogICAg
IGF1dG8qIGRvbUFnZW50ID0gbV9pbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3RvckRPTUFnZW50
KCk7CiAgICAgaWYgKCFkb21BZ2VudCkgewotICAgICAgICBlcnJvclN0cmluZyA9ICJNaXNzaW5n
IERPTSBhZ2VudCJfczsKKyAgICAgICAgZXJyb3JTdHJpbmcgPSAiRE9NIGRvbWFpbiBtdXN0IGJl
IGVuYWJsZWQiX3M7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTY0Miw3ICs2NDIsNyBA
QCB2b2lkIEluc3BlY3RvckNTU0FnZW50OjpzZXRTdHlsZVRleHQoRXJyb3JTdHJpbmcmIGVycm9y
U3RyaW5nLCBjb25zdCBKU09OOjpPYmplYwogCiAgICAgYXV0byogZG9tQWdlbnQgPSBtX2luc3Ry
dW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yRE9NQWdlbnQoKTsKICAgICBpZiAoIWRvbUFnZW50KSB7
Ci0gICAgICAgIGVycm9yU3RyaW5nID0gIk1pc3NpbmcgRE9NIGFnZW50Il9zOworICAgICAgICBl
cnJvclN0cmluZyA9ICJET00gZG9tYWluIG11c3QgYmUgZW5hYmxlZCJfczsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIApAQCAtNjY2LDcgKzY2Niw3IEBAIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6
OnNldFJ1bGVTZWxlY3RvcihFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IEpTT046Ok9i
CiAKICAgICBhdXRvKiBkb21BZ2VudCA9IG1faW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JE
T01BZ2VudCgpOwogICAgIGlmICghZG9tQWdlbnQpIHsKLSAgICAgICAgZXJyb3JTdHJpbmcgPSAi
TWlzc2luZyBET00gYWdlbnQiX3M7CisgICAgICAgIGVycm9yU3RyaW5nID0gIkRPTSBkb21haW4g
bXVzdCBiZSBlbmFibGVkIl9zOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC02OTMsMTMg
KzY5MywxMyBAQCB2b2lkIEluc3BlY3RvckNTU0FnZW50OjpjcmVhdGVTdHlsZVNoZWV0KEVycm9y
U3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJgogCiAgICAgRG9jdW1lbnQqIGRvY3Vt
ZW50ID0gZnJhbWUtPmRvY3VtZW50KCk7CiAgICAgaWYgKCFkb2N1bWVudCkgewotICAgICAgICBl
cnJvclN0cmluZyA9ICJObyBkb2N1bWVudCBmb3IgZnJhbWUiX3M7CisgICAgICAgIGVycm9yU3Ry
aW5nID0gIk1pc3NpbmcgZG9jdW1lbnQgb2YgZnJhbWUgZm9yIGdpdmVuIGZyYW1lSWQiX3M7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBJbnNwZWN0b3JTdHlsZVNoZWV0KiBpbnNwZWN0
b3JTdHlsZVNoZWV0ID0gY3JlYXRlSW5zcGVjdG9yU3R5bGVTaGVldEZvckRvY3VtZW50KCpkb2N1
bWVudCk7CiAgICAgaWYgKCFpbnNwZWN0b3JTdHlsZVNoZWV0KSB7Ci0gICAgICAgIGVycm9yU3Ry
aW5nID0gIkNvdWxkIG5vdCBjcmVhdGUgc3R5bGVzaGVldCBmb3IgdGhlIGZyYW1lLiJfczsKKyAg
ICAgICAgZXJyb3JTdHJpbmcgPSAiQ291bGQgbm90IGNyZWF0ZSBzdHlsZSBzaGVldCBmb3IgZG9j
dW1lbnQgb2YgZnJhbWUgZm9yIGdpdmVuIGZyYW1lSWQiX3M7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKQEAgLTc1MCwxNCArNzUwLDEyIEBAIEluc3BlY3RvclN0eWxlU2hlZXQqIEluc3BlY3Rv
ckNTU0FnZW50OjpjcmVhdGVJbnNwZWN0b3JTdHlsZVNoZWV0Rm9yRG9jdW1lbnQoRG9jCiB2b2lk
IEluc3BlY3RvckNTU0FnZW50OjphZGRSdWxlKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29u
c3QgU3RyaW5nJiBzdHlsZVNoZWV0SWQsIGNvbnN0IFN0cmluZyYgc2VsZWN0b3IsIFJlZlB0cjxJ
bnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU1J1bGU+JiByZXN1bHQpCiB7CiAgICAgSW5zcGVj
dG9yU3R5bGVTaGVldCogaW5zcGVjdG9yU3R5bGVTaGVldCA9IGFzc2VydFN0eWxlU2hlZXRGb3JJ
ZChlcnJvclN0cmluZywgc3R5bGVTaGVldElkKTsKLSAgICBpZiAoIWluc3BlY3RvclN0eWxlU2hl
ZXQpIHsKLSAgICAgICAgZXJyb3JTdHJpbmcgPSAiTm8gdGFyZ2V0IHN0eWxlc2hlZXQgZm91bmQi
X3M7CisgICAgaWYgKCFpbnNwZWN0b3JTdHlsZVNoZWV0KQogICAgICAgICByZXR1cm47Ci0gICAg
fQogCiAgICAgYXV0byogZG9tQWdlbnQgPSBtX2luc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9y
RE9NQWdlbnQoKTsKICAgICBpZiAoIWRvbUFnZW50KSB7Ci0gICAgICAgIGVycm9yU3RyaW5nID0g
Ik1pc3NpbmcgRE9NIGFnZW50Il9zOworICAgICAgICBlcnJvclN0cmluZyA9ICJET00gZG9tYWlu
IG11c3QgYmUgZW5hYmxlZCJfczsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtODM5LDcg
KzgzNyw3IEBAIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmZvcmNlUHNldWRvU3RhdGUoRXJyb3JT
dHJpbmcmIGVycm9yU3RyaW5nLCBpbnQgbm9kZUlkLCBjCiB7CiAgICAgYXV0byogZG9tQWdlbnQg
PSBtX2luc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yRE9NQWdlbnQoKTsKICAgICBpZiAoIWRv
bUFnZW50KSB7Ci0gICAgICAgIGVycm9yU3RyaW5nID0gIk1pc3NpbmcgRE9NIGFnZW50Il9zOwor
ICAgICAgICBlcnJvclN0cmluZyA9ICJET00gZG9tYWluIG11c3QgYmUgZW5hYmxlZCJfczsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtODc5LDIwICs4NzcsMTEgQEAgRWxlbWVudCogSW5z
cGVjdG9yQ1NTQWdlbnQ6OmVsZW1lbnRGb3JJZChFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGlu
dCBub2RlSWQpCiB7CiAgICAgYXV0byogZG9tQWdlbnQgPSBtX2luc3RydW1lbnRpbmdBZ2VudHMu
aW5zcGVjdG9yRE9NQWdlbnQoKTsKICAgICBpZiAoIWRvbUFnZW50KSB7Ci0gICAgICAgIGVycm9y
U3RyaW5nID0gIk1pc3NpbmcgRE9NIGFnZW50Il9zOworICAgICAgICBlcnJvclN0cmluZyA9ICJE
T00gZG9tYWluIG11c3QgYmUgZW5hYmxlZCJfczsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAg
ICAgfQogCi0gICAgTm9kZSogbm9kZSA9IGRvbUFnZW50LT5ub2RlRm9ySWQobm9kZUlkKTsKLSAg
ICBpZiAoIW5vZGUpIHsKLSAgICAgICAgZXJyb3JTdHJpbmcgPSAiTm8gbm9kZSB3aXRoIGdpdmVu
IGlkIGZvdW5kIl9zOwotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICB9Ci0gICAgaWYgKCFp
czxFbGVtZW50Pigqbm9kZSkpIHsKLSAgICAgICAgZXJyb3JTdHJpbmcgPSAiTm90IGFuIGVsZW1l
bnQgbm9kZSJfczsKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgfQotICAgIHJldHVybiBk
b3duY2FzdDxFbGVtZW50Pihub2RlKTsKKyAgICByZXR1cm4gZG9tQWdlbnQtPmFzc2VydEVsZW1l
bnQoZXJyb3JTdHJpbmcsIG5vZGVJZCk7CiB9CiAKIFN0cmluZyBJbnNwZWN0b3JDU1NBZ2VudDo6
dW5iaW5kU3R5bGVTaGVldChJbnNwZWN0b3JTdHlsZVNoZWV0KiBpbnNwZWN0b3JTdHlsZVNoZWV0
KQpAQCAtOTI1LDcgKzkxNCw3IEBAIEluc3BlY3RvclN0eWxlU2hlZXQqIEluc3BlY3RvckNTU0Fn
ZW50Ojphc3NlcnRTdHlsZVNoZWV0Rm9ySWQoRXJyb3JTdHJpbmcmIGVycm9yCiB7CiAgICAgSWRU
b0luc3BlY3RvclN0eWxlU2hlZXQ6Oml0ZXJhdG9yIGl0ID0gbV9pZFRvSW5zcGVjdG9yU3R5bGVT
aGVldC5maW5kKHN0eWxlU2hlZXRJZCk7CiAgICAgaWYgKGl0ID09IG1faWRUb0luc3BlY3RvclN0
eWxlU2hlZXQuZW5kKCkpIHsKLSAgICAgICAgZXJyb3JTdHJpbmcgPSAiTm8gc3R5bGVzaGVldCB3
aXRoIGdpdmVuIGlkIGZvdW5kIl9zOworICAgICAgICBlcnJvclN0cmluZyA9ICJNaXNzaW5nIHN0
eWxlIHNoZWV0IGZvciBnaXZlbiBzdHlsZVNoZWV0SWQiX3M7CiAgICAgICAgIHJldHVybiBudWxs
cHRyOwogICAgIH0KICAgICByZXR1cm4gaXQtPnZhbHVlLmdldCgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDYW52YXNBZ2VudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNhbnZhc0FnZW50LmNwcApp
bmRleCAwZTUwYzc1YmE0ODc1MTU1NmU0MTJkY2I5N2FkMTk2Njk2NWE5OTkwLi4yMDQ3YzEyYmU5
NmYxN2U0MDExODMzYWUzMTAwZWU0YWYyOGEzMTkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNhbnZhc0FnZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNhbnZhc0FnZW50LmNwcApAQCAtMTUw
LDEzICsxNTAsMTMgQEAgdm9pZCBJbnNwZWN0b3JDYW52YXNBZ2VudDo6cmVxdWVzdE5vZGUoRXJy
b3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIGMKIAogICAgIGF1dG8qIG5vZGUg
PSBpbnNwZWN0b3JDYW52YXMtPmNhbnZhc0VsZW1lbnQoKTsKICAgICBpZiAoIW5vZGUpIHsKLSAg
ICAgICAgZXJyb3JTdHJpbmcgPSAiTm8gbm9kZSBmb3IgY2FudmFzIl9zOworICAgICAgICBlcnJv
clN0cmluZyA9ICJNaXNzaW5nIGVsZW1lbnQgb2YgY2FudmFzIGZvciBnaXZlbiBjYW52YXNJZCJf
czsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGludCBkb2N1bWVudE5vZGVJZCA9IG1f
aW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JET01BZ2VudCgpLT5ib3VuZE5vZGVJZCgmbm9k
ZS0+ZG9jdW1lbnQoKSk7CiAgICAgaWYgKCFkb2N1bWVudE5vZGVJZCkgewotICAgICAgICBlcnJv
clN0cmluZyA9ICJEb2N1bWVudCBoYXMgbm90IGJlZW4gcmVxdWVzdGVkIl9zOworICAgICAgICBl
cnJvclN0cmluZyA9ICJEb2N1bWVudCBtdXN0IGhhdmUgYmVlbiByZXF1ZXN0ZWQiX3M7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKQEAgLTIyMiw3ICsyMjIsNyBAQCB2b2lkIEluc3BlY3RvckNh
bnZhc0FnZW50OjpyZXNvbHZlQ2FudmFzQ29udGV4dChFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcs
IGNvbnN0CiAgICAgSlNDOjpKU1ZhbHVlIHZhbHVlID0gY29udGV4dEFzU2NyaXB0VmFsdWUoc3Rh
dGUsIGluc3BlY3RvckNhbnZhcy0+Y29udGV4dCgpKTsKICAgICBpZiAoIXZhbHVlKSB7CiAgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICBlcnJvclN0cmluZyA9ICJVbmtub3du
IGNvbnRleHQgdHlwZSJfczsKKyAgICAgICAgZXJyb3JTdHJpbmcgPSAiSW50ZXJuYWwgZXJyb3I6
IHVua25vd24gY29udGV4dCBvZiBjYW52YXMgZm9yIGdpdmVuIGNhbnZhc0lkIl9zOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogCkBAIC0yNjQsNyArMjY0LDcgQEAgdm9pZCBJbnNwZWN0b3JDYW52
YXNBZ2VudDo6c3RvcFJlY29yZGluZyhFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0
cmluZyYKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKCFpbnNwZWN0b3JDYW52YXMtPmNvbnRl
eHQoKS5jYWxsVHJhY2luZ0FjdGl2ZSgpKSB7Ci0gICAgICAgIGVycm9yU3RyaW5nID0gIk5vIGFj
dGl2ZSByZWNvcmRpbmcgZm9yIGNhbnZhcyJfczsKKyAgICAgICAgZXJyb3JTdHJpbmcgPSAiTm90
IHJlY29yZGluZyBjYW52YXMiX3M7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTI4MCw3
ICsyODAsNyBAQCB2b2lkIEluc3BlY3RvckNhbnZhc0FnZW50OjpyZXF1ZXN0U2hhZGVyU291cmNl
KEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgUwogCiAgICAgYXV0byogc2hhZGVyID0g
aW5zcGVjdG9yUHJvZ3JhbS0+c2hhZGVyRm9yVHlwZShzaGFkZXJUeXBlKTsKICAgICBpZiAoIXNo
YWRlcikgewotICAgICAgICBlcnJvclN0cmluZyA9ICJObyBzaGFkZXIgZm9yIGdpdmVuIHR5cGUu
Il9zOworICAgICAgICBlcnJvclN0cmluZyA9ICJNaXNzaW5nIHNoYWRlciBmb3IgZ2l2ZW4gc2hh
ZGVyVHlwZSJfczsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMjg5LDcgKzI4OSw3IEBA
IHZvaWQgSW5zcGVjdG9yQ2FudmFzQWdlbnQ6OnJlcXVlc3RTaGFkZXJTb3VyY2UoRXJyb3JTdHJp
bmcmIGVycm9yU3RyaW5nLCBjb25zdCBTCiAgICAgVU5VU0VEX1BBUkFNKHByb2dyYW1JZCk7CiAg
ICAgVU5VU0VEX1BBUkFNKHNoYWRlclR5cGUpOwogICAgIFVOVVNFRF9QQVJBTShjb250ZW50KTsK
LSAgICBlcnJvclN0cmluZyA9ICJXZWJHTCBpcyBub3Qgc3VwcG9ydGVkLiJfczsKKyAgICBlcnJv
clN0cmluZyA9ICJOb3Qgc3VwcG9ydGVkIl9zOwogI2VuZGlmCiB9CiAKQEAgLTMwMiw3ICszMDIs
NyBAQCB2b2lkIEluc3BlY3RvckNhbnZhc0FnZW50Ojp1cGRhdGVTaGFkZXIoRXJyb3JTdHJpbmcm
IGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmCiAKICAgICBhdXRvKiBzaGFkZXIgPSBpbnNwZWN0
b3JQcm9ncmFtLT5zaGFkZXJGb3JUeXBlKHNoYWRlclR5cGUpOwogICAgIGlmICghc2hhZGVyKSB7
Ci0gICAgICAgIGVycm9yU3RyaW5nID0gIk5vIHNoYWRlciBmb3IgZ2l2ZW4gdHlwZS4iX3M7Cisg
ICAgICAgIGVycm9yU3RyaW5nID0gIk1pc3Npbmcgc2hhZGVyIGZvciBnaXZlbiBzaGFkZXJUeXBl
Il9zOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0zMTEsNyArMzExLDcgQEAgdm9pZCBJ
bnNwZWN0b3JDYW52YXNBZ2VudDo6dXBkYXRlU2hhZGVyKEVycm9yU3RyaW5nJiBlcnJvclN0cmlu
ZywgY29uc3QgU3RyaW5nJgogICAgIGNvbnRleHRXZWJHTC5jb21waWxlU2hhZGVyKHNoYWRlcik7
CiAKICAgICBpZiAoIXNoYWRlci0+aXNWYWxpZCgpKSB7Ci0gICAgICAgIGVycm9yU3RyaW5nID0g
IlNoYWRlciBjb21waWxhdGlvbiBmYWlsZWQuIl9zOworICAgICAgICBlcnJvclN0cmluZyA9ICJG
YWlsZWQgdG8gdXBkYXRlIHNoYWRlciJfczsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAt
MzIwLDcgKzMyMCw3IEBAIHZvaWQgSW5zcGVjdG9yQ2FudmFzQWdlbnQ6OnVwZGF0ZVNoYWRlcihF
cnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYKICAgICBVTlVTRURfUEFSQU0o
cHJvZ3JhbUlkKTsKICAgICBVTlVTRURfUEFSQU0oc2hhZGVyVHlwZSk7CiAgICAgVU5VU0VEX1BB
UkFNKHNvdXJjZSk7Ci0gICAgZXJyb3JTdHJpbmcgPSAiV2ViR0wgaXMgbm90IHN1cHBvcnRlZC4i
X3M7CisgICAgZXJyb3JTdHJpbmcgPSAiTm90IHN1cHBvcnRlZCJfczsKICNlbmRpZgogfQogCkBA
IC0zMzUsNyArMzM1LDcgQEAgdm9pZCBJbnNwZWN0b3JDYW52YXNBZ2VudDo6c2V0U2hhZGVyUHJv
Z3JhbURpc2FibGVkKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY28KICNlbHNlCiAgICAgVU5V
U0VEX1BBUkFNKHByb2dyYW1JZCk7CiAgICAgVU5VU0VEX1BBUkFNKGRpc2FibGVkKTsKLSAgICBl
cnJvclN0cmluZyA9ICJXZWJHTCBpcyBub3Qgc3VwcG9ydGVkLiJfczsKKyAgICBlcnJvclN0cmlu
ZyA9ICJOb3Qgc3VwcG9ydGVkIl9zOwogI2VuZGlmCiB9CiAKQEAgLTM1MCw3ICszNTAsNyBAQCB2
b2lkIEluc3BlY3RvckNhbnZhc0FnZW50OjpzZXRTaGFkZXJQcm9ncmFtSGlnaGxpZ2h0ZWQoRXJy
b3JTdHJpbmcmIGVycm9yU3RyaW5nLAogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0ocHJvZ3JhbUlk
KTsKICAgICBVTlVTRURfUEFSQU0oaGlnaGxpZ2h0ZWQpOwotICAgIGVycm9yU3RyaW5nID0gIldl
YkdMIGlzIG5vdCBzdXBwb3J0ZWQuIl9zOworICAgIGVycm9yU3RyaW5nID0gIk5vdCBzdXBwb3J0
ZWQiX3M7CiAjZW5kaWYKIH0KIApAQCAtNjk3LDE0ICs2OTcsMTMgQEAgU3RyaW5nIEluc3BlY3Rv
ckNhbnZhc0FnZW50Ojp1bmJpbmRDYW52YXMoSW5zcGVjdG9yQ2FudmFzJiBpbnNwZWN0b3JDYW52
YXMpCiAgICAgcmV0dXJuIGlkZW50aWZpZXI7CiB9CiAKLVJlZlB0cjxJbnNwZWN0b3JDYW52YXM+
IEluc3BlY3RvckNhbnZhc0FnZW50Ojphc3NlcnRJbnNwZWN0b3JDYW52YXMoRXJyb3JTdHJpbmcm
IGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIpCitSZWZQdHI8SW5zcGVjdG9y
Q2FudmFzPiBJbnNwZWN0b3JDYW52YXNBZ2VudDo6YXNzZXJ0SW5zcGVjdG9yQ2FudmFzKEVycm9y
U3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBjYW52YXNJZCkKIHsKLSAgICBhdXRv
IGluc3BlY3RvckNhbnZhcyA9IG1faWRlbnRpZmllclRvSW5zcGVjdG9yQ2FudmFzLmdldChpZGVu
dGlmaWVyKTsKKyAgICBhdXRvIGluc3BlY3RvckNhbnZhcyA9IG1faWRlbnRpZmllclRvSW5zcGVj
dG9yQ2FudmFzLmdldChjYW52YXNJZCk7CiAgICAgaWYgKCFpbnNwZWN0b3JDYW52YXMpIHsKLSAg
ICAgICAgZXJyb3JTdHJpbmcgPSAiTm8gY2FudmFzIGZvciBnaXZlbiBpZGVudGlmaWVyLiJfczsK
KyAgICAgICAgZXJyb3JTdHJpbmcgPSAiTWlzc2luZyBjYW52YXMgZm9yIGdpdmVuIGNhbnZhc0lk
Il9zOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9Ci0KICAgICByZXR1cm4gaW5zcGVj
dG9yQ2FudmFzOwogfQogCkBAIC03MTQsNyArNzEzLDYgQEAgUmVmUHRyPEluc3BlY3RvckNhbnZh
cz4gSW5zcGVjdG9yQ2FudmFzQWdlbnQ6OmZpbmRJbnNwZWN0b3JDYW52YXMoQ2FudmFzUmVuZGVy
aW4KICAgICAgICAgaWYgKCZpbnNwZWN0b3JDYW52YXMtPmNvbnRleHQoKSA9PSAmY29udGV4dCkK
ICAgICAgICAgICAgIHJldHVybiBpbnNwZWN0b3JDYW52YXM7CiAgICAgfQotCiAgICAgcmV0dXJu
IG51bGxwdHI7CiB9CiAKQEAgLTcyNywxNCArNzI1LDEzIEBAIFN0cmluZyBJbnNwZWN0b3JDYW52
YXNBZ2VudDo6dW5iaW5kUHJvZ3JhbShJbnNwZWN0b3JTaGFkZXJQcm9ncmFtJiBpbnNwZWN0b3JQ
cm9nCiAgICAgcmV0dXJuIGlkZW50aWZpZXI7CiB9CiAKLVJlZlB0cjxJbnNwZWN0b3JTaGFkZXJQ
cm9ncmFtPiBJbnNwZWN0b3JDYW52YXNBZ2VudDo6YXNzZXJ0SW5zcGVjdG9yUHJvZ3JhbShFcnJv
clN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgaWRlbnRpZmllcikKK1JlZlB0cjxJ
bnNwZWN0b3JTaGFkZXJQcm9ncmFtPiBJbnNwZWN0b3JDYW52YXNBZ2VudDo6YXNzZXJ0SW5zcGVj
dG9yUHJvZ3JhbShFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgcHJvZ3Jh
bUlkKQogewotICAgIGF1dG8gaW5zcGVjdG9yUHJvZ3JhbSA9IG1faWRlbnRpZmllclRvSW5zcGVj
dG9yUHJvZ3JhbS5nZXQoaWRlbnRpZmllcik7CisgICAgYXV0byBpbnNwZWN0b3JQcm9ncmFtID0g
bV9pZGVudGlmaWVyVG9JbnNwZWN0b3JQcm9ncmFtLmdldChwcm9ncmFtSWQpOwogICAgIGlmICgh
aW5zcGVjdG9yUHJvZ3JhbSkgewotICAgICAgICBlcnJvclN0cmluZyA9ICJObyBzaGFkZXIgcHJv
Z3JhbSBmb3IgZ2l2ZW4gaWRlbnRpZmllci4iX3M7CisgICAgICAgIGVycm9yU3RyaW5nID0gIk1p
c3NpbmcgcHJvZ3JhbSBmb3IgZ2l2ZW4gcHJvZ3JhbUlkIl9zOwogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKICAgICB9Ci0KICAgICByZXR1cm4gaW5zcGVjdG9yUHJvZ3JhbTsKIH0KIApAQCAtNzQ0
LDcgKzc0MSw2IEBAIFJlZlB0cjxJbnNwZWN0b3JTaGFkZXJQcm9ncmFtPiBJbnNwZWN0b3JDYW52
YXNBZ2VudDo6ZmluZEluc3BlY3RvclByb2dyYW0oV2ViR0xQCiAgICAgICAgIGlmICgmaW5zcGVj
dG9yUHJvZ3JhbS0+cHJvZ3JhbSgpID09ICZwcm9ncmFtKQogICAgICAgICAgICAgcmV0dXJuIGlu
c3BlY3RvclByb2dyYW07CiAgICAgfQotCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ2Fu
dmFzQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ2Fu
dmFzQWdlbnQuaAppbmRleCBmYTBmNmNjMjNiMGU0NTE5YWUxOTAzNTIyN2JmOTg4MWJlMWYxMjI3
Li5jN2UyZmQ3MjU5MjBmOWRlMTc1YjBkOTNkM2M3ZjUyNzk3MjUxOTVjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNhbnZhc0FnZW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDYW52YXNBZ2VudC5o
CkBAIC0xMTYsMTEgKzExNiwxMSBAQCBwcml2YXRlOgogICAgIHZvaWQgY2xlYXJDYW52YXNEYXRh
KCk7CiAgICAgSW5zcGVjdG9yQ2FudmFzJiBiaW5kQ2FudmFzKENhbnZhc1JlbmRlcmluZ0NvbnRl
eHQmLCBib29sIGNhcHR1cmVCYWNrdHJhY2UpOwogICAgIFN0cmluZyB1bmJpbmRDYW52YXMoSW5z
cGVjdG9yQ2FudmFzJik7Ci0gICAgUmVmUHRyPEluc3BlY3RvckNhbnZhcz4gYXNzZXJ0SW5zcGVj
dG9yQ2FudmFzKEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyKTsKKyAgICBS
ZWZQdHI8SW5zcGVjdG9yQ2FudmFzPiBhc3NlcnRJbnNwZWN0b3JDYW52YXMoRXJyb3JTdHJpbmcm
LCBjb25zdCBTdHJpbmcmIGNhbnZhc0lkKTsKICAgICBSZWZQdHI8SW5zcGVjdG9yQ2FudmFzPiBm
aW5kSW5zcGVjdG9yQ2FudmFzKENhbnZhc1JlbmRlcmluZ0NvbnRleHQmKTsKICNpZiBFTkFCTEUo
V0VCR0wpCiAgICAgU3RyaW5nIHVuYmluZFByb2dyYW0oSW5zcGVjdG9yU2hhZGVyUHJvZ3JhbSYp
OwotICAgIFJlZlB0cjxJbnNwZWN0b3JTaGFkZXJQcm9ncmFtPiBhc3NlcnRJbnNwZWN0b3JQcm9n
cmFtKEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyKTsKKyAgICBSZWZQdHI8
SW5zcGVjdG9yU2hhZGVyUHJvZ3JhbT4gYXNzZXJ0SW5zcGVjdG9yUHJvZ3JhbShFcnJvclN0cmlu
ZyYsIGNvbnN0IFN0cmluZyYgcHJvZ3JhbUlkKTsKICAgICBSZWZQdHI8SW5zcGVjdG9yU2hhZGVy
UHJvZ3JhbT4gZmluZEluc3BlY3RvclByb2dyYW0oV2ViR0xQcm9ncmFtJik7CiAjZW5kaWYKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01B
Z2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTUFn
ZW50LmNwcAppbmRleCAwZGYwNDU0ODU1OWUxNDA2M2I5NDJiN2MxMWVjY2QzYjQ2ZTcwYjc5Li45
MmFlNjJhZjk5MmEyMjdmZjI1MjgzOWFmZTY3OGJhM2ZhM2NhNDRiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50LmNwcApAQCAt
MzI0LDkgKzMyNCw5IEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OndpbGxEZXN0cm95RnJvbnRl
bmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6RGlzY29ubmVjdFJlYXNvCiAgICAgbV9tb3VzZWRPdmVy
Tm9kZSA9IG51bGxwdHI7CiAgICAgbV9pbnNwZWN0ZWROb2RlID0gbnVsbHB0cjsKIAotICAgIEVy
cm9yU3RyaW5nIHVudXNlZDsKLSAgICBzZXRTZWFyY2hpbmdGb3JOb2RlKHVudXNlZCwgZmFsc2Us
IG51bGxwdHIsIGZhbHNlKTsKLSAgICBoaWRlSGlnaGxpZ2h0KHVudXNlZCk7CisgICAgRXJyb3JT
dHJpbmcgaWdub3JlZDsKKyAgICBzZXRTZWFyY2hpbmdGb3JOb2RlKGlnbm9yZWQsIGZhbHNlLCBu
dWxscHRyLCBmYWxzZSk7CisgICAgaGlkZUhpZ2hsaWdodChpZ25vcmVkKTsKIAogICAgIG1faW5z
dHJ1bWVudGluZ0FnZW50cy5zZXRJbnNwZWN0b3JET01BZ2VudChudWxscHRyKTsKICAgICBtX2Rv
Y3VtZW50UmVxdWVzdGVkID0gZmFsc2U7CkBAIC00MzAsNyArNDMwLDcgQEAgTm9kZSogSW5zcGVj
dG9yRE9NQWdlbnQ6OmFzc2VydE5vZGUoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBpbnQgbm9k
ZUlkKQogewogICAgIE5vZGUqIG5vZGUgPSBub2RlRm9ySWQobm9kZUlkKTsKICAgICBpZiAoIW5v
ZGUpIHsKLSAgICAgICAgZXJyb3JTdHJpbmcgPSAiQ291bGQgbm90IGZpbmQgbm9kZSB3aXRoIGdp
dmVuIGlkIl9zOworICAgICAgICBlcnJvclN0cmluZyA9ICJNaXNzaW5nIG5vZGUgZm9yIGdpdmVu
IG5vZGVJZCJfczsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogICAgIHJldHVybiBu
b2RlOwpAQCAtNDQxLDggKzQ0MSw4IEBAIERvY3VtZW50KiBJbnNwZWN0b3JET01BZ2VudDo6YXNz
ZXJ0RG9jdW1lbnQoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBpbnQgbm9kZUlkCiAgICAgTm9k
ZSogbm9kZSA9IGFzc2VydE5vZGUoZXJyb3JTdHJpbmcsIG5vZGVJZCk7CiAgICAgaWYgKCFub2Rl
KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBpZiAoIWlzPERvY3VtZW50Pigqbm9kZSkp
IHsKLSAgICAgICAgZXJyb3JTdHJpbmcgPSAiRG9jdW1lbnQgaXMgbm90IGF2YWlsYWJsZSJfczsK
KyAgICBpZiAoIWlzPERvY3VtZW50Pihub2RlKSkgeworICAgICAgICBlcnJvclN0cmluZyA9ICJO
b2RlIGZvciBnaXZlbiBub2RlSWQgaXMgbm90IGEgZG9jdW1lbnQiX3M7CiAgICAgICAgIHJldHVy
biBudWxscHRyOwogICAgIH0KICAgICByZXR1cm4gZG93bmNhc3Q8RG9jdW1lbnQ+KG5vZGUpOwpA
QCAtNDUzLDggKzQ1Myw4IEBAIEVsZW1lbnQqIEluc3BlY3RvckRPTUFnZW50Ojphc3NlcnRFbGVt
ZW50KEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgaW50IG5vZGVJZCkKICAgICBOb2RlKiBub2Rl
ID0gYXNzZXJ0Tm9kZShlcnJvclN0cmluZywgbm9kZUlkKTsKICAgICBpZiAoIW5vZGUpCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwotICAgIGlmICghaXM8RWxlbWVudD4oKm5vZGUpKSB7Ci0gICAg
ICAgIGVycm9yU3RyaW5nID0gIk5vZGUgaXMgbm90IGFuIEVsZW1lbnQiX3M7CisgICAgaWYgKCFp
czxFbGVtZW50Pihub2RlKSkgeworICAgICAgICBlcnJvclN0cmluZyA9ICJOb2RlIGZvciBnaXZl
biBub2RlSWQgaXMgbm90IGFuIGVsZW1lbnQiX3M7CiAgICAgICAgIHJldHVybiBudWxscHRyOwog
ICAgIH0KICAgICByZXR1cm4gZG93bmNhc3Q8RWxlbWVudD4obm9kZSk7CkBAIC00NjYsMTEgKzQ2
NiwxMSBAQCBOb2RlKiBJbnNwZWN0b3JET01BZ2VudDo6YXNzZXJ0RWRpdGFibGVOb2RlKEVycm9y
U3RyaW5nJiBlcnJvclN0cmluZywgaW50IG5vZGVJZAogICAgIGlmICghbm9kZSkKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAgICAgaWYgKG5vZGUtPmlzSW5Vc2VyQWdlbnRTaGFkb3dUcmVlKCkp
IHsKLSAgICAgICAgZXJyb3JTdHJpbmcgPSAiQ2Fubm90IGVkaXQgbm9kZXMgaW4gdXNlciBhZ2Vu
dCBzaGFkb3cgdHJlZXMiX3M7CisgICAgICAgIGVycm9yU3RyaW5nID0gIk5vZGUgZm9yIGdpdmVu
IG5vZGVJZCBpcyBpbiBhIHNoYWRvdyB0cmVlIl9zOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
ICAgICB9CiAgICAgaWYgKG5vZGUtPmlzUHNldWRvRWxlbWVudCgpKSB7Ci0gICAgICAgIGVycm9y
U3RyaW5nID0gIkNhbm5vdCBlZGl0IHBzZXVkbyBlbGVtZW50cyJfczsKKyAgICAgICAgZXJyb3JT
dHJpbmcgPSAiTm9kZSBmb3IgZ2l2ZW4gbm9kZUlkIGlzIGEgcHNldWRvLWVsZW1lbnQiX3M7CiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KICAgICByZXR1cm4gbm9kZTsKQEAgLTQ3OCwx
OCArNDc4LDE0IEBAIE5vZGUqIEluc3BlY3RvckRPTUFnZW50Ojphc3NlcnRFZGl0YWJsZU5vZGUo
RXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBpbnQgbm9kZUlkCiAKIEVsZW1lbnQqIEluc3BlY3Rv
ckRPTUFnZW50Ojphc3NlcnRFZGl0YWJsZUVsZW1lbnQoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5n
LCBpbnQgbm9kZUlkKQogewotICAgIEVsZW1lbnQqIGVsZW1lbnQgPSBhc3NlcnRFbGVtZW50KGVy
cm9yU3RyaW5nLCBub2RlSWQpOwotICAgIGlmICghZWxlbWVudCkKKyAgICBOb2RlKiBub2RlID0g
YXNzZXJ0RWRpdGFibGVOb2RlKGVycm9yU3RyaW5nLCBub2RlSWQpOworICAgIGlmICghbm9kZSkK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgaWYgKGVsZW1lbnQtPmlzSW5Vc2VyQWdlbnRT
aGFkb3dUcmVlKCkpIHsKLSAgICAgICAgZXJyb3JTdHJpbmcgPSAiQ2Fubm90IGVkaXQgZWxlbWVu
dHMgaW4gdXNlciBhZ2VudCBzaGFkb3cgdHJlZXMiX3M7CisgICAgaWYgKCFpczxFbGVtZW50Pihu
b2RlKSkgeworICAgICAgICBlcnJvclN0cmluZyA9ICJOb2RlIGZvciBnaXZlbiBub2RlSWQgaXMg
bm90IGFuIGVsZW1lbnQiX3M7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KLSAgICBp
ZiAoZWxlbWVudC0+aXNQc2V1ZG9FbGVtZW50KCkpIHsKLSAgICAgICAgZXJyb3JTdHJpbmcgPSAi
Q2Fubm90IGVkaXQgcHNldWRvIGVsZW1lbnRzIl9zOwotICAgICAgICByZXR1cm4gbnVsbHB0cjsK
LSAgICB9Ci0gICAgcmV0dXJuIGVsZW1lbnQ7CisgICAgcmV0dXJuIGRvd25jYXN0PEVsZW1lbnQ+
KG5vZGUpOwogfQogCiB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpnZXREb2N1bWVudChFcnJvclN0
cmluZyYgZXJyb3JTdHJpbmcsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpET006Ok5vZGU+
JiByb290KQpAQCAtNDk3LDcgKzQ5Myw3IEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmdldERv
Y3VtZW50KEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgUmVmUHRyPEluc3BlY3Rvcjo6CiAgICAg
bV9kb2N1bWVudFJlcXVlc3RlZCA9IHRydWU7CiAKICAgICBpZiAoIW1fZG9jdW1lbnQpIHsKLSAg
ICAgICAgZXJyb3JTdHJpbmcgPSAiRG9jdW1lbnQgaXMgbm90IGF2YWlsYWJsZSJfczsKKyAgICAg
ICAgZXJyb3JTdHJpbmcgPSAiSW50ZXJuYWwgZXJyb3I6IG1pc3NpbmcgZG9jdW1lbnQiX3M7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTU1NSw3ICs1NTEsNyBAQCBpbnQgSW5zcGVjdG9y
RE9NQWdlbnQ6OnB1c2hOb2RlVG9Gcm9udGVuZChFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGlu
dCBkb2N1bWVudAogICAgIGlmICghZG9jdW1lbnQpCiAgICAgICAgIHJldHVybiAwOwogICAgIGlm
ICgmbm9kZVRvUHVzaC0+ZG9jdW1lbnQoKSAhPSBkb2N1bWVudCkgewotICAgICAgICBlcnJvclN0
cmluZyA9ICJOb2RlIGlzIG5vdCBwYXJ0IG9mIHRoZSBkb2N1bWVudCB3aXRoIGdpdmVuIGlkIl9z
OworICAgICAgICBlcnJvclN0cmluZyA9ICJub2RlVG9QdXNoIGlzIG5vdCBwYXJ0IG9mIHRoZSBk
b2N1bWVudCB3aXRoIGdpdmVuIGRvY3VtZW50Tm9kZUlkIl9zOwogICAgICAgICByZXR1cm4gMDsK
ICAgICB9CiAKQEAgLTU4MSw3ICs1NzcsNyBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpyZXF1
ZXN0Q2hpbGROb2RlcyhFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGludCBub2RlSWQsCiAgICAg
ZWxzZSBpZiAoKmRlcHRoID4gMCkKICAgICAgICAgc2FuaXRpemVkRGVwdGggPSAqZGVwdGg7CiAg
ICAgZWxzZSB7Ci0gICAgICAgIGVycm9yU3RyaW5nID0gIlBsZWFzZSBwcm92aWRlIGEgcG9zaXRp
dmUgaW50ZWdlciBhcyBhIGRlcHRoIG9yIC0xIGZvciBlbnRpcmUgc3VidHJlZSJfczsKKyAgICAg
ICAgZXJyb3JTdHJpbmcgPSAiVW5leHBlY3RlZCB2YWx1ZSBiZWxvdyAtMSBmb3IgZ2l2ZW4gZGVw
dGgiX3M7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTYwMSw3ICs1OTcsNyBAQCB2b2lk
IEluc3BlY3RvckRPTUFnZW50OjpxdWVyeVNlbGVjdG9yKEVycm9yU3RyaW5nJiBlcnJvclN0cmlu
ZywgaW50IG5vZGVJZCwgY29ucwogCiAgICAgYXV0byBxdWVyeVJlc3VsdCA9IGRvd25jYXN0PENv
bnRhaW5lck5vZGU+KCpub2RlKS5xdWVyeVNlbGVjdG9yKHNlbGVjdG9ycyk7CiAgICAgaWYgKHF1
ZXJ5UmVzdWx0Lmhhc0V4Y2VwdGlvbigpKSB7Ci0gICAgICAgIGVycm9yU3RyaW5nID0gIkRPTSBF
cnJvciB3aGlsZSBxdWVyeWluZyJfczsKKyAgICAgICAgZXJyb3JTdHJpbmcgPSAiRE9NIEVycm9y
IHdoaWxlIHF1ZXJ5aW5nIHdpdGggZ2l2ZW4gc2VsZWN0b3JzIl9zOwogICAgICAgICByZXR1cm47
CiAgICAgfQogCkBAIC02MjEsNyArNjE3LDcgQEAgdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6cXVl
cnlTZWxlY3RvckFsbChFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGludCBub2RlSWQsIGMKIAog
ICAgIGF1dG8gcXVlcnlSZXN1bHQgPSBkb3duY2FzdDxDb250YWluZXJOb2RlPigqbm9kZSkucXVl
cnlTZWxlY3RvckFsbChzZWxlY3RvcnMpOwogICAgIGlmIChxdWVyeVJlc3VsdC5oYXNFeGNlcHRp
b24oKSkgewotICAgICAgICBlcnJvclN0cmluZyA9ICJET00gRXJyb3Igd2hpbGUgcXVlcnlpbmci
X3M7CisgICAgICAgIGVycm9yU3RyaW5nID0gIkRPTSBFcnJvciB3aGlsZSBxdWVyeWluZyB3aXRo
IGdpdmVuIHNlbGVjdG9ycyJfczsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNzA3LDcg
KzcwMyw3IEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OnNldEF0dHJpYnV0ZXNBc1RleHQoRXJy
b3JTdHJpbmcmIGVycm9yU3RyaW5nLCBpbnQgZWxlbWVuCiAKICAgICBOb2RlKiBjaGlsZCA9IHBh
cnNlZEVsZW1lbnQtPmZpcnN0Q2hpbGQoKTsKICAgICBpZiAoIWNoaWxkKSB7Ci0gICAgICAgIGVy
cm9yU3RyaW5nID0gIkNvdWxkIG5vdCBwYXJzZSB2YWx1ZSBhcyBhdHRyaWJ1dGVzIl9zOworICAg
ICAgICBlcnJvclN0cmluZyA9ICJDb3VsZCBub3QgcGFyc2UgZ2l2ZW4gdGV4dCJfczsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIApAQCAtODEwLDcgKzgwNiw3IEBAIHZvaWQgSW5zcGVjdG9yRE9N
QWdlbnQ6OnNldE91dGVySFRNTChFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGludCBub2RlSWQs
IGNvbnN0CiAKICAgICBEb2N1bWVudCYgZG9jdW1lbnQgPSBub2RlLT5kb2N1bWVudCgpOwogICAg
IGlmICghZG9jdW1lbnQuaXNIVE1MRG9jdW1lbnQoKSAmJiAhZG9jdW1lbnQuaXNYTUxEb2N1bWVu
dCgpKSB7Ci0gICAgICAgIGVycm9yU3RyaW5nID0gIk5vdCBhbiBIVE1ML1hNTCBkb2N1bWVudCJf
czsKKyAgICAgICAgZXJyb3JTdHJpbmcgPSAiRG9jdW1lbnQgb2Ygbm9kZSBmb3IgZ2l2ZW4gbm9k
ZUlkIGlzIG5vdCBIVE1ML1hNTCJfczsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtODM3
LDcgKzgzMyw3IEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6Omluc2VydEFkamFjZW50SFRNTChF
cnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGludCBub2RlSWQsCiAgICAgICAgIHJldHVybjsKIAog
ICAgIGlmICghaXM8RWxlbWVudD4obm9kZSkpIHsKLSAgICAgICAgZXJyb3JTdHJpbmcgPSAiQ2Fu
IG9ubHkgY2FsbCBpbnNlcnRBZGphY2VudEhUTUwgb24gRWxlbWVudHMuIl9zOworICAgICAgICBl
cnJvclN0cmluZyA9ICJOb2RlIGZvciBnaXZlbiBub2RlSWQgaXMgbm90IGFuIGVsZW1lbnQiX3M7
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTg1MSw3ICs4NDcsNyBAQCB2b2lkIEluc3Bl
Y3RvckRPTUFnZW50OjpzZXROb2RlVmFsdWUoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBpbnQg
bm9kZUlkLCBjb25zdAogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoIWlzPFRleHQ+KCpub2Rl
KSkgewotICAgICAgICBlcnJvclN0cmluZyA9ICJDYW4gb25seSBzZXQgdmFsdWUgb2YgdGV4dCBu
b2RlcyJfczsKKyAgICAgICAgZXJyb3JTdHJpbmcgPSAiTm9kZSBmb3IgZ2l2ZW4gbm9kZUlkIGlz
IG5vdCB0ZXh0Il9zOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC05NjUsNyArOTYxLDcg
QEAgdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6c2V0RXZlbnRMaXN0ZW5lckRpc2FibGVkKEVycm9y
U3RyaW5nJiBlcnJvclN0cmluZywgaW50IGUKIHsKICAgICBhdXRvIGl0ID0gbV9ldmVudExpc3Rl
bmVyRW50cmllcy5maW5kKGV2ZW50TGlzdGVuZXJJZCk7CiAgICAgaWYgKGl0ID09IG1fZXZlbnRM
aXN0ZW5lckVudHJpZXMuZW5kKCkpIHsKLSAgICAgICAgZXJyb3JTdHJpbmcgPSAiTm8gZXZlbnQg
bGlzdGVuZXIgZm9yIGdpdmVuIGlkZW50aWZpZXIuIl9zOworICAgICAgICBlcnJvclN0cmluZyA9
ICJNaXNzaW5nIGV2ZW50IGxpc3RlbmVyIGZvciBnaXZlbiBldmVudExpc3RlbmVySWQiX3M7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTk3Niw3ICs5NzIsNyBAQCB2b2lkIEluc3BlY3Rv
ckRPTUFnZW50OjpzZXRCcmVha3BvaW50Rm9yRXZlbnRMaXN0ZW5lcihFcnJvclN0cmluZyYgZXJy
b3JTdHJpbmcsCiB7CiAgICAgYXV0byBpdCA9IG1fZXZlbnRMaXN0ZW5lckVudHJpZXMuZmluZChl
dmVudExpc3RlbmVySWQpOwogICAgIGlmIChpdCA9PSBtX2V2ZW50TGlzdGVuZXJFbnRyaWVzLmVu
ZCgpKSB7Ci0gICAgICAgIGVycm9yU3RyaW5nID0gIk5vIGV2ZW50IGxpc3RlbmVyIGZvciBnaXZl
biBpZGVudGlmaWVyLiJfczsKKyAgICAgICAgZXJyb3JTdHJpbmcgPSAiTWlzc2luZyBldmVudCBs
aXN0ZW5lciBmb3IgZ2l2ZW4gZXZlbnRMaXN0ZW5lcklkIl9zOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogCkBAIC05ODcsNyArOTgzLDcgQEAgdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6cmVtb3Zl
QnJlYWtwb2ludEZvckV2ZW50TGlzdGVuZXIoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW4KIHsKICAg
ICBhdXRvIGl0ID0gbV9ldmVudExpc3RlbmVyRW50cmllcy5maW5kKGV2ZW50TGlzdGVuZXJJZCk7
CiAgICAgaWYgKGl0ID09IG1fZXZlbnRMaXN0ZW5lckVudHJpZXMuZW5kKCkpIHsKLSAgICAgICAg
ZXJyb3JTdHJpbmcgPSAiTm8gZXZlbnQgbGlzdGVuZXIgZm9yIGdpdmVuIGlkZW50aWZpZXIuIl9z
OworICAgICAgICBlcnJvclN0cmluZyA9ICJNaXNzaW5nIGV2ZW50IGxpc3RlbmVyIGZvciBnaXZl
biBldmVudExpc3RlbmVySWQiX3M7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTEwMTEs
MTIgKzEwMDcsMTIgQEAgdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6cGVyZm9ybVNlYXJjaChFcnJv
clN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgcXUKICAgICBpZiAobm9kZUlkcykg
ewogICAgICAgICBmb3IgKGF1dG8mIG5vZGVWYWx1ZSA6ICpub2RlSWRzKSB7CiAgICAgICAgICAg
ICBpZiAoIW5vZGVWYWx1ZSkgewotICAgICAgICAgICAgICAgIGVycm9yU3RyaW5nID0gIkludmFs
aWQgbm9kZUlkcyBpdGVtLiJfczsKKyAgICAgICAgICAgICAgICBlcnJvclN0cmluZyA9ICJVbmV4
cGVjdGVkIG5vbi1pbnRlZ2VyIGl0ZW0gaW4gZ2l2ZW4gbm9kZUlkcyJfczsKICAgICAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpbnQgbm9kZUlkID0gMDsK
ICAgICAgICAgICAgIGlmICghbm9kZVZhbHVlLT5hc0ludGVnZXIobm9kZUlkKSkgewotICAgICAg
ICAgICAgICAgIGVycm9yU3RyaW5nID0gIkludmFsaWQgbm9kZUlkcyBpdGVtIHR5cGUuIEV4cGVj
dGluZyBpbnRlZ2VyIHR5cGVzLiJfczsKKyAgICAgICAgICAgICAgICBlcnJvclN0cmluZyA9ICJV
bmV4cGVjdGVkIG5vbi1pbnRlZ2VyIGl0ZW0gaW4gZ2l2ZW4gbm9kZUlkcyJfczsKICAgICAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBOb2RlKiBub2RlID0g
YXNzZXJ0Tm9kZShlcnJvclN0cmluZywgbm9kZUlkKTsKQEAgLTEwNDYsMTMgKzEwNDIsMTMgQEAg
dm9pZCBJbnNwZWN0b3JET01BZ2VudDo6Z2V0U2VhcmNoUmVzdWx0cyhFcnJvclN0cmluZyYgZXJy
b3JTdHJpbmcsIGNvbnN0IFN0cmluZyYKIHsKICAgICBTZWFyY2hSZXN1bHRzOjppdGVyYXRvciBp
dCA9IG1fc2VhcmNoUmVzdWx0cy5maW5kKHNlYXJjaElkKTsKICAgICBpZiAoaXQgPT0gbV9zZWFy
Y2hSZXN1bHRzLmVuZCgpKSB7Ci0gICAgICAgIGVycm9yU3RyaW5nID0gIk5vIHNlYXJjaCBzZXNz
aW9uIHdpdGggZ2l2ZW4gaWQgZm91bmQiX3M7CisgICAgICAgIGVycm9yU3RyaW5nID0gIk1pc3Np
bmcgc2VhcmNoIHJlc3VsdCBmb3IgZ2l2ZW4gc2VhcmNoSWQiX3M7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKICAgICBpbnQgc2l6ZSA9IGl0LT52YWx1ZS5zaXplKCk7CiAgICAgaWYgKGZyb21J
bmRleCA8IDAgfHwgdG9JbmRleCA+IHNpemUgfHwgZnJvbUluZGV4ID49IHRvSW5kZXgpIHsKLSAg
ICAgICAgZXJyb3JTdHJpbmcgPSAiSW52YWxpZCBzZWFyY2ggcmVzdWx0IHJhbmdlIl9zOworICAg
ICAgICBlcnJvclN0cmluZyA9ICJJbnZhbGlkIHNlYXJjaCByZXN1bHQgcmFuZ2UgZm9yIGdpdmVu
IGZyb21JbmRleCBhbmQgdG9JbmRleCJfczsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAt
MTA5Miw5ICsxMDg4LDkgQEAgYm9vbCBJbnNwZWN0b3JET01BZ2VudDo6aGFuZGxlVG91Y2hFdmVu
dChOb2RlJiBub2RlKQogCiB2b2lkIEluc3BlY3RvckRPTUFnZW50OjppbnNwZWN0KE5vZGUqIGlu
c3BlY3RlZE5vZGUpCiB7Ci0gICAgRXJyb3JTdHJpbmcgdW51c2VkOworICAgIEVycm9yU3RyaW5n
IGlnbm9yZWQ7CiAgICAgUmVmUHRyPE5vZGU+IG5vZGUgPSBpbnNwZWN0ZWROb2RlOwotICAgIHNl
dFNlYXJjaGluZ0Zvck5vZGUodW51c2VkLCBmYWxzZSwgbnVsbHB0ciwgZmFsc2UpOworICAgIHNl
dFNlYXJjaGluZ0Zvck5vZGUoaWdub3JlZCwgZmFsc2UsIG51bGxwdHIsIGZhbHNlKTsKIAogICAg
IGlmIChub2RlLT5ub2RlVHlwZSgpICE9IE5vZGU6OkVMRU1FTlRfTk9ERSAmJiBub2RlLT5ub2Rl
VHlwZSgpICE9IE5vZGU6OkRPQ1VNRU5UX05PREUpCiAgICAgICAgIG5vZGUgPSBub2RlLT5wYXJl
bnROb2RlKCk7CkBAIC0xMjA0LDcgKzEyMDAsNyBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50Ojpo
aWdobGlnaHRRdWFkKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgSlNPTjo6QXJyYQog
ewogICAgIGF1dG8gcXVhZCA9IG1ha2VVbmlxdWU8RmxvYXRRdWFkPigpOwogICAgIGlmICghcGFy
c2VRdWFkKHF1YWRBcnJheSwgcXVhZC5nZXQoKSkpIHsKLSAgICAgICAgZXJyb3JTdHJpbmcgPSAi
SW52YWxpZCBRdWFkIGZvcm1hdCJfczsKKyAgICAgICAgZXJyb3JTdHJpbmcgPSAiVW5leHBlY3Rl
ZCBpbnZhbGlkIHF1YWRBcnJheSJfczsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBpbm5l
ckhpZ2hsaWdodFF1YWQoV1RGTW92ZShxdWFkKSwgY29sb3IsIG91dGxpbmVDb2xvciwgdXNlUGFn
ZUNvb3JkaW5hdGVzKTsKQEAgLTEyMzksMTQgKzEyMzUsMTQgQEAgdm9pZCBJbnNwZWN0b3JET01B
Z2VudDo6aGlnaGxpZ2h0U2VsZWN0b3IoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBK
U09OOjoKICAgICAgICAgZG9jdW1lbnQgPSBtX2RvY3VtZW50OwogCiAgICAgaWYgKCFkb2N1bWVu
dCkgewotICAgICAgICBlcnJvclN0cmluZyA9ICJEb2N1bWVudCBjb3VsZCBub3QgYmUgZm91bmQi
X3M7CisgICAgICAgIGVycm9yU3RyaW5nID0gIk1pc3NpbmcgZG9jdW1lbnQgb2YgZnJhbWUgZm9y
IGdpdmVuIGZyYW1lSWQiX3M7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBhdXRvIHF1
ZXJ5UmVzdWx0ID0gZG9jdW1lbnQtPnF1ZXJ5U2VsZWN0b3JBbGwoc2VsZWN0b3JTdHJpbmcpOwog
ICAgIC8vIEZJWE1FOiA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMTQ2MTYxPiBXZWIgSW5zcGVjdG9y
OiBET00uaGlnaGxpZ2h0U2VsZWN0b3Igc2hvdWxkIHdvcmsgZm9yICJhOnZpc2l0ZWQiCiAgICAg
aWYgKHF1ZXJ5UmVzdWx0Lmhhc0V4Y2VwdGlvbigpKSB7Ci0gICAgICAgIGVycm9yU3RyaW5nID0g
IkRPTSBFcnJvciB3aGlsZSBxdWVyeWluZyJfczsKKyAgICAgICAgZXJyb3JTdHJpbmcgPSAiRE9N
IEVycm9yIHdoaWxlIHF1ZXJ5aW5nIHdpdGggZ2l2ZW4gc2VsZWN0b3JTdHJpbmciX3M7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKQEAgLTEyNjUsNyArMTI2MSw3IEBAIHZvaWQgSW5zcGVjdG9y
RE9NQWdlbnQ6OmhpZ2hsaWdodE5vZGUoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBK
U09OOjpPYmplCiAgICAgZWxzZSBpZiAob2JqZWN0SWQpIHsKICAgICAgICAgbm9kZSA9IG5vZGVG
b3JPYmplY3RJZCgqb2JqZWN0SWQpOwogICAgICAgICBpZiAoIW5vZGUpCi0gICAgICAgICAgICBl
cnJvclN0cmluZyA9ICJOb2RlIGZvciBnaXZlbiBvYmplY3RJZCBub3QgZm91bmQiX3M7CisgICAg
ICAgICAgICBlcnJvclN0cmluZyA9ICJNaXNzaW5nIG5vZGUgZm9yIGdpdmVuIG9iamVjdElkIl9z
OwogICAgIH0gZWxzZQogICAgICAgICBlcnJvclN0cmluZyA9ICJFaXRoZXIgbm9kZUlkIG9yIG9i
amVjdElkIG11c3QgYmUgc3BlY2lmaWVkIl9zOwogCkBAIC0xMjg0LDEzICsxMjgwLDEzIEBAIHZv
aWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmhpZ2hsaWdodE5vZGVMaXN0KEVycm9yU3RyaW5nJiBlcnJv
clN0cmluZywgY29uc3QgSlNPTjo6CiAgICAgVmVjdG9yPFJlZjxOb2RlPj4gbm9kZXM7CiAgICAg
Zm9yIChhdXRvJiBub2RlVmFsdWUgOiBub2RlSWRzKSB7CiAgICAgICAgIGlmICghbm9kZVZhbHVl
KSB7Ci0gICAgICAgICAgICBlcnJvclN0cmluZyA9ICJJbnZhbGlkIG5vZGVJZHMgaXRlbS4iX3M7
CisgICAgICAgICAgICBlcnJvclN0cmluZyA9ICJVbmV4cGVjdGVkIG5vbi1pbnRlZ2VyIGl0ZW0g
aW4gZ2l2ZW4gbm9kZUlkcyJfczsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCiAg
ICAgICAgIGludCBub2RlSWQgPSAwOwogICAgICAgICBpZiAoIW5vZGVWYWx1ZS0+YXNJbnRlZ2Vy
KG5vZGVJZCkpIHsKLSAgICAgICAgICAgIGVycm9yU3RyaW5nID0gIkludmFsaWQgbm9kZUlkcyBp
dGVtIHR5cGUuIEV4cGVjdGluZyBpbnRlZ2VyIHR5cGVzLiJfczsKKyAgICAgICAgICAgIGVycm9y
U3RyaW5nID0gIlVuZXhwZWN0ZWQgbm9uLWludGVnZXIgaXRlbSBpbiBnaXZlbiBub2RlSWRzIl9z
OwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKQEAgLTEzNTUsNyArMTM1MSw3IEBA
IHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6Om1vdmVUbyhFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcs
IGludCBub2RlSWQsIGludCB0YXJnZXRFCiAgICAgICAgIGlmICghYW5jaG9yTm9kZSkKICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgaWYgKGFuY2hvck5vZGUtPnBhcmVudE5vZGUoKSAhPSB0
YXJnZXRFbGVtZW50KSB7Ci0gICAgICAgICAgICBlcnJvclN0cmluZyA9ICJBbmNob3Igbm9kZSBt
dXN0IGJlIGNoaWxkIG9mIHRoZSB0YXJnZXQgZWxlbWVudCJfczsKKyAgICAgICAgICAgIGVycm9y
U3RyaW5nID0gIkdpdmVuIGFuY2hvck5vZGVJZCBtdXN0IGJlIGEgY2hpbGQgb2YgZ2l2ZW4gdGFy
Z2V0RWxlbWVudElkIl9zOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgfQpA
QCAtMTM5MSw3ICsxMzg3LDcgQEAgdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6Zm9jdXMoRXJyb3JT
dHJpbmcmIGVycm9yU3RyaW5nLCBpbnQgbm9kZUlkKQogICAgIGlmICghZWxlbWVudCkKICAgICAg
ICAgcmV0dXJuOwogICAgIGlmICghZWxlbWVudC0+aXNGb2N1c2FibGUoKSkgewotICAgICAgICBl
cnJvclN0cmluZyA9ICJFbGVtZW50IGlzIG5vdCBmb2N1c2FibGUiX3M7CisgICAgICAgIGVycm9y
U3RyaW5nID0gIkVsZW1lbnQgZm9yIGdpdmVuIG5vZGVJZCBpcyBub3QgZm9jdXNhYmxlIl9zOwog
ICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGVsZW1lbnQtPmZvY3VzKCk7CkBAIC0xMzk5LDkg
KzEzOTUsMTIgQEAgdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6Zm9jdXMoRXJyb3JTdHJpbmcmIGVy
cm9yU3RyaW5nLCBpbnQgbm9kZUlkKQogCiB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpzZXRJbnNw
ZWN0ZWROb2RlKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgaW50IG5vZGVJZCkKIHsKLSAgICBO
b2RlKiBub2RlID0gbm9kZUZvcklkKG5vZGVJZCk7Ci0gICAgaWYgKCFub2RlIHx8IG5vZGUtPmlz
SW5Vc2VyQWdlbnRTaGFkb3dUcmVlKCkpIHsKLSAgICAgICAgZXJyb3JTdHJpbmcgPSAiTm8gbm9k
ZSB3aXRoIGdpdmVuIGlkIGZvdW5kIl9zOworICAgIE5vZGUqIG5vZGUgPSBhc3NlcnROb2RlKGVy
cm9yU3RyaW5nLCBub2RlSWQpOworICAgIGlmICghbm9kZSkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgaWYgKG5vZGUtPmlzSW5Vc2VyQWdlbnRTaGFkb3dUcmVlKCkpIHsKKyAgICAgICAgZXJyb3JT
dHJpbmcgPSAiTm9kZSBmb3IgZ2l2ZW4gbm9kZUlkIGlzIGluIGEgc2hhZG93IHRyZWUiX3M7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTE0MTYsMTQgKzE0MTUsMTIgQEAgdm9pZCBJbnNw
ZWN0b3JET01BZ2VudDo6c2V0SW5zcGVjdGVkTm9kZShFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcs
IGludCBub2RlSWQpCiB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpyZXNvbHZlTm9kZShFcnJvclN0
cmluZyYgZXJyb3JTdHJpbmcsIGludCBub2RlSWQsIGNvbnN0IFN0cmluZyogb2JqZWN0R3JvdXAs
IFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+JiByZXN1
bHQpCiB7CiAgICAgU3RyaW5nIG9iamVjdEdyb3VwTmFtZSA9IG9iamVjdEdyb3VwID8gKm9iamVj
dEdyb3VwIDogZW1wdHlTdHJpbmcoKTsKLSAgICBOb2RlKiBub2RlID0gbm9kZUZvcklkKG5vZGVJ
ZCk7Ci0gICAgaWYgKCFub2RlKSB7Ci0gICAgICAgIGVycm9yU3RyaW5nID0gIk5vIG5vZGUgd2l0
aCBnaXZlbiBpZCBmb3VuZCJfczsKKyAgICBOb2RlKiBub2RlID0gYXNzZXJ0Tm9kZShlcnJvclN0
cmluZywgbm9kZUlkKTsKKyAgICBpZiAoIW5vZGUpCiAgICAgICAgIHJldHVybjsKLSAgICB9CiAg
ICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4gb2Jq
ZWN0ID0gcmVzb2x2ZU5vZGUobm9kZSwgb2JqZWN0R3JvdXBOYW1lKTsKICAgICBpZiAoIW9iamVj
dCkgewotICAgICAgICBlcnJvclN0cmluZyA9ICJOb2RlIHdpdGggZ2l2ZW4gaWQgZG9lcyBub3Qg
YmVsb25nIHRvIHRoZSBkb2N1bWVudCJfczsKKyAgICAgICAgZXJyb3JTdHJpbmcgPSAiTWlzc2lu
ZyBpbmplY3RlZCBzY3JpcHQgZm9yIGdpdmVuIG5vZGVJZCJfczsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KICAgICByZXN1bHQgPSBvYmplY3Q7CkBAIC0yNTg3LDcgKzI1ODQsNyBAQCB2b2lkIElu
c3BlY3RvckRPTUFnZW50OjpwdXNoTm9kZUJ5UGF0aFRvRnJvbnRlbmQoRXJyb3JTdHJpbmcmIGVy
cm9yU3RyaW5nLCBjb25zdAogICAgIGlmIChOb2RlKiBub2RlID0gbm9kZUZvclBhdGgocGF0aCkp
CiAgICAgICAgICpub2RlSWQgPSBwdXNoTm9kZVBhdGhUb0Zyb250ZW5kKG5vZGUpOwogICAgIGVs
c2UKLSAgICAgICAgZXJyb3JTdHJpbmcgPSAiTm8gbm9kZSB3aXRoIGdpdmVuIHBhdGggZm91bmQi
X3M7CisgICAgICAgIGVycm9yU3RyaW5nID0gIk1pc3Npbmcgbm9kZSBmb3IgZ2l2ZW4gcGF0aCJf
czsKIH0KIAogUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVj
dD4gSW5zcGVjdG9yRE9NQWdlbnQ6OnJlc29sdmVOb2RlKE5vZGUqIG5vZGUsIGNvbnN0IFN0cmlu
ZyYgb2JqZWN0R3JvdXApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2FnZW50cy9JbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50LmNwcAppbmRleCA0NWUyZmE5YThk
YTEyMDg2N2I4N2UxOGQzODFjMmFmYjUzOWMxOTA3Li5lNjA1ZjE4OWZiZGQ4OTc5NjAyNmNmMTI5
MjliMmJkNjM5OGEwZjYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudC5jcHAKQEAgLTEzMCwxMyAr
MTMwLDEzIEBAIHZvaWQgSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6ZnJhbWVEb2N1bWVudFVw
ZGF0ZWQoRnJhbWUmIGZyYW1lKQogdm9pZCBJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50OjpzZXRF
dmVudEJyZWFrcG9pbnQoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIGJy
ZWFrcG9pbnRUeXBlU3RyaW5nLCBjb25zdCBTdHJpbmcqIGV2ZW50TmFtZSkKIHsKICAgICBpZiAo
YnJlYWtwb2ludFR5cGVTdHJpbmcuaXNFbXB0eSgpKSB7Ci0gICAgICAgIGVycm9yU3RyaW5nID0g
IkV2ZW50IGJyZWFrcG9pbnQgdHlwZSBpcyBlbXB0eSJfczsKKyAgICAgICAgZXJyb3JTdHJpbmcg
PSAiYnJlYWtwb2ludFR5cGUgaXMgZW1wdHkiX3M7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
ICAgICBhdXRvIGJyZWFrcG9pbnRUeXBlID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6SW5zcGVjdG9y
SGVscGVyczo6cGFyc2VFbnVtVmFsdWVGcm9tU3RyaW5nPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRP
TURlYnVnZ2VyOjpFdmVudEJyZWFrcG9pbnRUeXBlPihicmVha3BvaW50VHlwZVN0cmluZyk7CiAg
ICAgaWYgKCFicmVha3BvaW50VHlwZSkgewotICAgICAgICBlcnJvclN0cmluZyA9IG1ha2VTdHJp
bmcoIlVua25vd24gZXZlbnQgYnJlYWtwb2ludCB0eXBlOiAiX3MsIGJyZWFrcG9pbnRUeXBlU3Ry
aW5nKTsKKyAgICAgICAgZXJyb3JTdHJpbmcgPSBtYWtlU3RyaW5nKCJVbmtub3duIGJyZWFrcG9p
bnRUeXBlOiAiX3MsIGJyZWFrcG9pbnRUeXBlU3RyaW5nKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIApAQCAtMTQ3LDMyICsxNDcsMzIgQEAgdm9pZCBJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50
OjpzZXRFdmVudEJyZWFrcG9pbnQoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb24KICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIGVycm9yU3RyaW5nID0gIlVuZXhw
ZWN0ZWQgZXZlbnROYW1lIGFyZ3VtZW50Il9zOworICAgICAgICBlcnJvclN0cmluZyA9ICJVbmV4
cGVjdGVkIGV2ZW50TmFtZSJfczsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIHN3aXRj
aCAoYnJlYWtwb2ludFR5cGUudmFsdWUoKSkgewogICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2Nv
bDo6RE9NRGVidWdnZXI6OkV2ZW50QnJlYWtwb2ludFR5cGU6OkFuaW1hdGlvbkZyYW1lOgogICAg
ICAgICBpZiAobV9wYXVzZU9uQWxsQW5pbWF0aW9uRnJhbWVzRW5hYmxlZCkKLSAgICAgICAgICAg
IGVycm9yU3RyaW5nID0gIkFscmVhZHkgaGF2ZSBicmVha3BvaW50IGZvciBhbGwgYW5pbWF0aW9u
IGZyYW1lcyJfczsKKyAgICAgICAgICAgIGVycm9yU3RyaW5nID0gIkJyZWFrcG9pbnQgZm9yIEFu
aW1hdGlvbkZyYW1lIGFscmVhZHkgZXhpc3RzIl9zOwogICAgICAgICBtX3BhdXNlT25BbGxBbmlt
YXRpb25GcmFtZXNFbmFibGVkID0gdHJ1ZTsKICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkRPTURlYnVnZ2VyOjpFdmVudEJyZWFrcG9pbnRUeXBlOjpJbnRl
cnZhbDoKICAgICAgICAgaWYgKG1fcGF1c2VPbkFsbEludGVydmFsc0VuYWJsZWQpCi0gICAgICAg
ICAgICBlcnJvclN0cmluZyA9ICJBbHJlYWR5IGhhdmUgYnJlYWtwb2ludCBmb3IgYWxsIGludGVy
dmFscyJfczsKKyAgICAgICAgICAgIGVycm9yU3RyaW5nID0gIkJyZWFrcG9pbnQgZm9yIEludGVy
dmFsIGFscmVhZHkgZXhpc3RzIl9zOwogICAgICAgICBtX3BhdXNlT25BbGxJbnRlcnZhbHNFbmFi
bGVkID0gdHJ1ZTsKICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkRPTURlYnVnZ2VyOjpFdmVudEJyZWFrcG9pbnRUeXBlOjpMaXN0ZW5lcjoKICAgICAgICAg
aWYgKG1fcGF1c2VPbkFsbExpc3RlbmVyc0VuYWJsZWQpCi0gICAgICAgICAgICBlcnJvclN0cmlu
ZyA9ICJBbHJlYWR5IGhhdmUgYnJlYWtwb2ludCBmb3IgYWxsIGxpc3RlbmVycyJfczsKKyAgICAg
ICAgICAgIGVycm9yU3RyaW5nID0gIkJyZWFrcG9pbnQgZm9yIExpc3RlbmVyIGFscmVhZHkgZXhp
c3RzIl9zOwogICAgICAgICBtX3BhdXNlT25BbGxMaXN0ZW5lcnNFbmFibGVkID0gdHJ1ZTsKICAg
ICAgICAgYnJlYWs7CiAKICAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTURlYnVnZ2Vy
OjpFdmVudEJyZWFrcG9pbnRUeXBlOjpUaW1lb3V0OgogICAgICAgICBpZiAobV9wYXVzZU9uQWxs
VGltZW91dHNFbmFibGVkKQotICAgICAgICAgICAgZXJyb3JTdHJpbmcgPSAiQWxyZWFkeSBoYXZl
IGJyZWFrcG9pbnQgZm9yIGFsbCB0aW1lb3V0cyJfczsKKyAgICAgICAgICAgIGVycm9yU3RyaW5n
ID0gIkJyZWFrcG9pbnQgZm9yIFRpbWVvdXQgYWxyZWFkeSBleGlzdHMiX3M7CiAgICAgICAgIG1f
cGF1c2VPbkFsbFRpbWVvdXRzRW5hYmxlZCA9IHRydWU7CiAgICAgICAgIGJyZWFrOwogICAgIH0K
QEAgLTE4MSw0OSArMTgxLDQ5IEBAIHZvaWQgSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6c2V0
RXZlbnRCcmVha3BvaW50KEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uCiB2b2lkIEluc3Bl
Y3RvckRPTURlYnVnZ2VyQWdlbnQ6OnJlbW92ZUV2ZW50QnJlYWtwb2ludChFcnJvclN0cmluZyYg
ZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgYnJlYWtwb2ludFR5cGVTdHJpbmcsIGNvbnN0IFN0
cmluZyogZXZlbnROYW1lKQogewogICAgIGlmIChicmVha3BvaW50VHlwZVN0cmluZy5pc0VtcHR5
KCkpIHsKLSAgICAgICAgZXJyb3JTdHJpbmcgPSAiRXZlbnQgYnJlYWtwb2ludCB0eXBlIGlzIGVt
cHR5Il9zOworICAgICAgICBlcnJvclN0cmluZyA9ICJicmVha3BvaW50VHlwZSBpcyBlbXB0eSJf
czsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGF1dG8gYnJlYWtwb2ludFR5cGUgPSBJ
bnNwZWN0b3I6OlByb3RvY29sOjpJbnNwZWN0b3JIZWxwZXJzOjpwYXJzZUVudW1WYWx1ZUZyb21T
dHJpbmc8SW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NRGVidWdnZXI6OkV2ZW50QnJlYWtwb2ludFR5
cGU+KGJyZWFrcG9pbnRUeXBlU3RyaW5nKTsKICAgICBpZiAoIWJyZWFrcG9pbnRUeXBlKSB7Ci0g
ICAgICAgIGVycm9yU3RyaW5nID0gbWFrZVN0cmluZygiVW5rbm93biBldmVudCBicmVha3BvaW50
IHR5cGU6ICJfcywgYnJlYWtwb2ludFR5cGVTdHJpbmcpOworICAgICAgICBlcnJvclN0cmluZyA9
IG1ha2VTdHJpbmcoIlVua25vd24gYnJlYWtwb2ludFR5cGU6ICJfcywgYnJlYWtwb2ludFR5cGVT
dHJpbmcpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgaWYgKGV2ZW50TmFtZSAmJiAh
ZXZlbnROYW1lLT5pc0VtcHR5KCkpIHsKICAgICAgICAgaWYgKGJyZWFrcG9pbnRUeXBlLnZhbHVl
KCkgPT0gSW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NRGVidWdnZXI6OkV2ZW50QnJlYWtwb2ludFR5
cGU6Okxpc3RlbmVyKSB7CiAgICAgICAgICAgICBpZiAoIW1fbGlzdGVuZXJCcmVha3BvaW50cy5y
ZW1vdmUoKmV2ZW50TmFtZSkpCi0gICAgICAgICAgICAgICAgZXJyb3JTdHJpbmcgPSAiTWlzc2lu
ZyBicmVha3BvaW50IGZvciBldmVudE5hbWUiX3M7CisgICAgICAgICAgICAgICAgZXJyb3JTdHJp
bmcgPSAiQnJlYWtwb2ludCBmb3IgZ2l2ZW4gZXZlbnROYW1lIG1pc3NpbmciX3M7CiAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBlcnJvclN0cmluZyA9ICJVbmV4cGVj
dGVkIGV2ZW50TmFtZSBhcmd1bWVudCJfczsKKyAgICAgICAgZXJyb3JTdHJpbmcgPSAiVW5leHBl
Y3RlZCBldmVudE5hbWUiX3M7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBzd2l0Y2gg
KGJyZWFrcG9pbnRUeXBlLnZhbHVlKCkpIHsKICAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkRPTURlYnVnZ2VyOjpFdmVudEJyZWFrcG9pbnRUeXBlOjpBbmltYXRpb25GcmFtZToKICAgICAg
ICAgaWYgKCFtX3BhdXNlT25BbGxBbmltYXRpb25GcmFtZXNFbmFibGVkKQotICAgICAgICAgICAg
ZXJyb3JTdHJpbmcgPSAiTWlzc2luZyBicmVha3BvaW50IGZvciBhbGwgYW5pbWF0aW9uIGZyYW1l
cyJfczsKKyAgICAgICAgICAgIGVycm9yU3RyaW5nID0gIkJyZWFrcG9pbnQgZm9yIEFuaW1hdGlv
bkZyYW1lIG1pc3NpbmciX3M7CiAgICAgICAgIG1fcGF1c2VPbkFsbEFuaW1hdGlvbkZyYW1lc0Vu
YWJsZWQgPSBmYWxzZTsKICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkRPTURlYnVnZ2VyOjpFdmVudEJyZWFrcG9pbnRUeXBlOjpJbnRlcnZhbDoKICAgICAg
ICAgaWYgKCFtX3BhdXNlT25BbGxJbnRlcnZhbHNFbmFibGVkKQotICAgICAgICAgICAgZXJyb3JT
dHJpbmcgPSAiTWlzc2luZyBicmVha3BvaW50IGZvciBhbGwgaW50ZXJ2YWxzIl9zOworICAgICAg
ICAgICAgZXJyb3JTdHJpbmcgPSAiQnJlYWtwb2ludCBmb3IgSW50ZXJ2YWxzIG1pc3NpbmciX3M7
CiAgICAgICAgIG1fcGF1c2VPbkFsbEludGVydmFsc0VuYWJsZWQgPSBmYWxzZTsKICAgICAgICAg
YnJlYWs7CiAKICAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTURlYnVnZ2VyOjpFdmVu
dEJyZWFrcG9pbnRUeXBlOjpMaXN0ZW5lcjoKICAgICAgICAgaWYgKCFtX3BhdXNlT25BbGxMaXN0
ZW5lcnNFbmFibGVkKQotICAgICAgICAgICAgZXJyb3JTdHJpbmcgPSAiTWlzc2luZyBicmVha3Bv
aW50IGZvciBhbGwgbGlzdGVuZXJzIl9zOworICAgICAgICAgICAgZXJyb3JTdHJpbmcgPSAiQnJl
YWtwb2ludCBmb3IgTGlzdGVuZXJzIG1pc3NpbmciX3M7CiAgICAgICAgIG1fcGF1c2VPbkFsbExp
c3RlbmVyc0VuYWJsZWQgPSBmYWxzZTsKICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkRPTURlYnVnZ2VyOjpFdmVudEJyZWFrcG9pbnRUeXBlOjpUaW1lb3V0
OgogICAgICAgICBpZiAoIW1fcGF1c2VPbkFsbFRpbWVvdXRzRW5hYmxlZCkKLSAgICAgICAgICAg
IGVycm9yU3RyaW5nID0gIk1pc3NpbmcgYnJlYWtwb2ludCBmb3IgYWxsIHRpbWVvdXRzIl9zOwor
ICAgICAgICAgICAgZXJyb3JTdHJpbmcgPSAiQnJlYWtwb2ludCBmb3IgVGltZW91dHMgbWlzc2lu
ZyJfczsKICAgICAgICAgbV9wYXVzZU9uQWxsVGltZW91dHNFbmFibGVkID0gZmFsc2U7CiAgICAg
ICAgIGJyZWFrOwogICAgIH0KQEAgLTI3Nyw3ICsyNzcsNyBAQCBzdGF0aWMgaW50IGRvbVR5cGVG
b3JOYW1lKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiB0eXBlU3RyaW5n
KQogICAgICAgICByZXR1cm4gQXR0cmlidXRlTW9kaWZpZWQ7CiAgICAgaWYgKHR5cGVTdHJpbmcg
PT0gIm5vZGUtcmVtb3ZlZCIpCiAgICAgICAgIHJldHVybiBOb2RlUmVtb3ZlZDsKLSAgICBlcnJv
clN0cmluZyA9IG1ha2VTdHJpbmcoIlVua25vd24gRE9NIGJyZWFrcG9pbnQgdHlwZTogIiwgdHlw
ZVN0cmluZyk7CisgICAgZXJyb3JTdHJpbmcgPSBtYWtlU3RyaW5nKCJVbmtub3duIHR5cGU6ICIs
IHR5cGVTdHJpbmcpOwogICAgIHJldHVybiAtMTsKIH0KIApAQCAtMjk2LDcgKzI5Niw3IEBAIHZv
aWQgSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6c2V0RE9NQnJlYWtwb2ludChFcnJvclN0cmlu
ZyYgZXJyb3JTdHJpbmcsIGludCBuCiB7CiAgICAgYXV0byogZG9tQWdlbnQgPSBtX2luc3RydW1l
bnRpbmdBZ2VudHMuaW5zcGVjdG9yRE9NQWdlbnQoKTsKICAgICBpZiAoIWRvbUFnZW50KSB7Ci0g
ICAgICAgIGVycm9yU3RyaW5nID0gIk1pc3NpbmcgRE9NIGFnZW50Il9zOworICAgICAgICBlcnJv
clN0cmluZyA9ICJET00gZG9tYWluIG11c3QgYmUgZW5hYmxlZCJfczsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIApAQCAtMzIwLDcgKzMyMCw3IEBAIHZvaWQgSW5zcGVjdG9yRE9NRGVidWdnZXJB
Z2VudDo6cmVtb3ZlRE9NQnJlYWtwb2ludChFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGluCiB7
CiAgICAgYXV0byogZG9tQWdlbnQgPSBtX2luc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yRE9N
QWdlbnQoKTsKICAgICBpZiAoIWRvbUFnZW50KSB7Ci0gICAgICAgIGVycm9yU3RyaW5nID0gIk1p
c3NpbmcgRE9NIGFnZW50Il9zOworICAgICAgICBlcnJvclN0cmluZyA9ICJET00gZG9tYWluIG11
c3QgYmUgZW5hYmxlZCJfczsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNTE0LDI1ICs1
MTQsMzMgQEAgdm9pZCBJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50Ojp3aWxsRmlyZUFuaW1hdGlv
bkZyYW1lKCkKICAgICBtX2RlYnVnZ2VyQWdlbnQtPnNjaGVkdWxlUGF1c2VPbk5leHRTdGF0ZW1l
bnQoSW5zcGVjdG9yOjpEZWJ1Z2dlckZyb250ZW5kRGlzcGF0Y2hlcjo6UmVhc29uOjpBbmltYXRp
b25GcmFtZSwgbnVsbHB0cik7CiB9CiAKLXZvaWQgSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6
c2V0VVJMQnJlYWtwb2ludChFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBi
b29sKiBvcHRpb25hbElzUmVnZXgpCit2b2lkIEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6OnNl
dFVSTEJyZWFrcG9pbnQoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIHVy
bCwgY29uc3QgYm9vbCogb3B0aW9uYWxJc1JlZ2V4KQogewogICAgIGlmICh1cmwuaXNFbXB0eSgp
KSB7CisgICAgICAgIGlmIChtX3BhdXNlT25BbGxVUkxzRW5hYmxlZCkKKyAgICAgICAgICAgIGVy
cm9yU3RyaW5nID0gIkJyZWFrcG9pbnQgZm9yIGFsbCBVUkxzIGFscmVhZHkgZXhpc3RzIl9zOwog
ICAgICAgICBtX3BhdXNlT25BbGxVUkxzRW5hYmxlZCA9IHRydWU7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKICAgICBib29sIGlzUmVnZXggPSBvcHRpb25hbElzUmVnZXggPyAqb3B0aW9uYWxJ
c1JlZ2V4IDogZmFsc2U7Ci0gICAgbV91cmxCcmVha3BvaW50cy5zZXQodXJsLCBpc1JlZ2V4ID8g
VVJMQnJlYWtwb2ludFR5cGU6OlJlZ3VsYXJFeHByZXNzaW9uIDogVVJMQnJlYWtwb2ludFR5cGU6
OlRleHQpOworICAgIGF1dG8gcmVzdWx0ID0gbV91cmxCcmVha3BvaW50cy5zZXQodXJsLCBpc1Jl
Z2V4ID8gVVJMQnJlYWtwb2ludFR5cGU6OlJlZ3VsYXJFeHByZXNzaW9uIDogVVJMQnJlYWtwb2lu
dFR5cGU6OlRleHQpOworICAgIGlmICghcmVzdWx0LmlzTmV3RW50cnkpCisgICAgICAgIGVycm9y
U3RyaW5nID0gIkJyZWFrcG9pbnQgZm9yIGdpdmVuIHVybCBhbHJlYWR5IGV4aXN0cyJfczsKIH0K
IAotdm9pZCBJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50OjpyZW1vdmVVUkxCcmVha3BvaW50KEVy
cm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiB1cmwpCit2b2lkIEluc3BlY3RvckRPTURlYnVnZ2Vy
QWdlbnQ6OnJlbW92ZVVSTEJyZWFrcG9pbnQoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25z
dCBTdHJpbmcmIHVybCkKIHsKICAgICBpZiAodXJsLmlzRW1wdHkoKSkgeworICAgICAgICBpZiAo
IW1fcGF1c2VPbkFsbFVSTHNFbmFibGVkKQorICAgICAgICAgICAgZXJyb3JTdHJpbmcgPSAiQnJl
YWtwb2ludCBmb3IgYWxsIFVSTHMgbWlzc2luZyJfczsKICAgICAgICAgbV9wYXVzZU9uQWxsVVJM
c0VuYWJsZWQgPSBmYWxzZTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIG1fdXJsQnJl
YWtwb2ludHMucmVtb3ZlKHVybCk7CisgICAgYXV0byByZXN1bHQgPSBtX3VybEJyZWFrcG9pbnRz
LnJlbW92ZSh1cmwpOworICAgIGlmICghcmVzdWx0KQorICAgICAgICBlcnJvclN0cmluZyA9ICJC
cmVha3BvaW50IGZvciBnaXZlbiB1cmwgbWlzc2luZyJfczsKIH0KIAogdm9pZCBJbnNwZWN0b3JE
T01EZWJ1Z2dlckFnZW50OjpicmVha09uVVJMSWZOZWVkZWQoY29uc3QgU3RyaW5nJiB1cmwsIFVS
TEJyZWFrcG9pbnRTb3VyY2Ugc291cmNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuY3BwCmluZGV4IDgx
ZjE0ZGMxN2JmYTA0NzQ3ZTNkMjNlNDUzZjVlNGFmOGQwOWZkODMuLjZhMTIxNjAzOTQwNzY3ZDQ1
NjFkYmI2YWQ0ZWI2MDQ0M2U0MjllZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5jcHAKQEAgLTY4
LDE0ICs2OCwxNCBAQCB2b2lkIEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudDo6ZGlkQ3JlYXRlRnJv
bnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6RnJvbnRlbmRSbwogCiB2b2lkIEluc3BlY3RvckRP
TVN0b3JhZ2VBZ2VudDo6d2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpE
aXNjb25uZWN0UmVhc29uKQogewotICAgIEVycm9yU3RyaW5nIHVudXNlZDsKLSAgICBkaXNhYmxl
KHVudXNlZCk7CisgICAgRXJyb3JTdHJpbmcgaWdub3JlZDsKKyAgICBkaXNhYmxlKGlnbm9yZWQp
OwogfQogCiB2b2lkIEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudDo6ZW5hYmxlKEVycm9yU3RyaW5n
JiBlcnJvclN0cmluZykKIHsKICAgICBpZiAobV9pbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3Rv
ckRPTVN0b3JhZ2VBZ2VudCgpID09IHRoaXMpIHsKLSAgICAgICAgZXJyb3JTdHJpbmcgPSAiRE9N
U3RvcmFnZUFnZW50IGFscmVhZHkgZW5hYmxlZCJfczsKKyAgICAgICAgZXJyb3JTdHJpbmcgPSAi
RE9NU3RvcmFnZSBkb21haW4gYWxyZWFkeSBlbmFibGVkIl9zOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogCkBAIC04NSw3ICs4NSw3IEBAIHZvaWQgSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50Ojpl
bmFibGUoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nKQogdm9pZCBJbnNwZWN0b3JET01TdG9yYWdl
QWdlbnQ6OmRpc2FibGUoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nKQogewogICAgIGlmIChtX2lu
c3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50KCkgIT0gdGhpcykgewot
ICAgICAgICBlcnJvclN0cmluZyA9ICJET01TdG9yYWdlQWdlbnQgYWxyZWFkeSBkaXNhYmxlZCJf
czsKKyAgICAgICAgZXJyb3JTdHJpbmcgPSAiRE9NU3RvcmFnZSBkb21haW4gYWxyZWFkeSBkaXNh
YmxlZCJfczsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtOTcsNyArOTcsNyBAQCB2b2lk
IEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudDo6Z2V0RE9NU3RvcmFnZUl0ZW1zKEVycm9yU3RyaW5n
JiBlcnJvclN0cmluZywgY29ucwogICAgIEZyYW1lKiBmcmFtZTsKICAgICBSZWZQdHI8U3RvcmFn
ZUFyZWE+IHN0b3JhZ2VBcmVhID0gZmluZFN0b3JhZ2VBcmVhKGVycm9yU3RyaW5nLCBzdG9yYWdl
SWQsIGZyYW1lKTsKICAgICBpZiAoIXN0b3JhZ2VBcmVhKSB7Ci0gICAgICAgIGVycm9yU3RyaW5n
ID0gIk5vIFN0b3JhZ2VBcmVhIGZvciBnaXZlbiBzdG9yYWdlSWQiX3M7CisgICAgICAgIGVycm9y
U3RyaW5nID0gIk1pc3Npbmcgc3RvcmFnZSBmb3IgZ2l2ZW4gc3RvcmFnZUlkIl9zOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogCkBAIC0xMjEsNyArMTIxLDcgQEAgdm9pZCBJbnNwZWN0b3JET01T
dG9yYWdlQWdlbnQ6OnNldERPTVN0b3JhZ2VJdGVtKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywg
Y29uc3QKICAgICBGcmFtZSogZnJhbWU7CiAgICAgUmVmUHRyPFN0b3JhZ2VBcmVhPiBzdG9yYWdl
QXJlYSA9IGZpbmRTdG9yYWdlQXJlYShlcnJvclN0cmluZywgc3RvcmFnZUlkLCBmcmFtZSk7CiAg
ICAgaWYgKCFzdG9yYWdlQXJlYSkgewotICAgICAgICBlcnJvclN0cmluZyA9ICJTdG9yYWdlIG5v
dCBmb3VuZCJfczsKKyAgICAgICAgZXJyb3JTdHJpbmcgPSAiTWlzc2luZyBzdG9yYWdlIGZvciBn
aXZlbiBzdG9yYWdlSWQiX3M7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTEzNiw3ICsx
MzYsNyBAQCB2b2lkIEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudDo6cmVtb3ZlRE9NU3RvcmFnZUl0
ZW0oRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjbwogICAgIEZyYW1lKiBmcmFtZTsKICAgICBS
ZWZQdHI8U3RvcmFnZUFyZWE+IHN0b3JhZ2VBcmVhID0gZmluZFN0b3JhZ2VBcmVhKGVycm9yU3Ry
aW5nLCBzdG9yYWdlSWQsIGZyYW1lKTsKICAgICBpZiAoIXN0b3JhZ2VBcmVhKSB7Ci0gICAgICAg
IGVycm9yU3RyaW5nID0gIlN0b3JhZ2Ugbm90IGZvdW5kIl9zOworICAgICAgICBlcnJvclN0cmlu
ZyA9ICJNaXNzaW5nIHN0b3JhZ2UgZm9yIGdpdmVuIHN0b3JhZ2VJZCJfczsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIApAQCAtMTc5LDE5ICsxNzksMjAgQEAgdm9pZCBJbnNwZWN0b3JET01TdG9y
YWdlQWdlbnQ6OmRpZERpc3BhdGNoRE9NU3RvcmFnZUV2ZW50KGNvbnN0IFN0cmluZyYga2V5LCBj
b24KIFJlZlB0cjxTdG9yYWdlQXJlYT4gSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50OjpmaW5kU3Rv
cmFnZUFyZWEoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBKU09OOjpPYmplY3QmIHN0
b3JhZ2VJZCwgRnJhbWUqJiB0YXJnZXRGcmFtZSkKIHsKICAgICBTdHJpbmcgc2VjdXJpdHlPcmln
aW47CisgICAgaWYgKCFzdG9yYWdlSWQuZ2V0U3RyaW5nKCJzZWN1cml0eU9yaWdpbiJfcywgc2Vj
dXJpdHlPcmlnaW4pKSB7CisgICAgICAgIGVycm9yU3RyaW5nID0gIk1pc3Npbmcgc2VjdXJpdHlP
cmlnaW4gaW4gZ2l2ZW4gc3RvcmFnZUlkIjsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAg
fQorCiAgICAgYm9vbCBpc0xvY2FsU3RvcmFnZSA9IGZhbHNlOwotICAgIGJvb2wgc3VjY2VzcyA9
IHN0b3JhZ2VJZC5nZXRTdHJpbmcoInNlY3VyaXR5T3JpZ2luIl9zLCBzZWN1cml0eU9yaWdpbik7
Ci0gICAgaWYgKHN1Y2Nlc3MpCi0gICAgICAgIHN1Y2Nlc3MgPSBzdG9yYWdlSWQuZ2V0Qm9vbGVh
bigiaXNMb2NhbFN0b3JhZ2UiX3MsIGlzTG9jYWxTdG9yYWdlKTsKLSAgICBpZiAoIXN1Y2Nlc3Mp
IHsKLSAgICAgICAgZXJyb3JTdHJpbmcgPSAiSW52YWxpZCBzdG9yYWdlSWQgZm9ybWF0Il9zOwot
ICAgICAgICB0YXJnZXRGcmFtZSA9IG51bGxwdHI7CisgICAgaWYgKCFzdG9yYWdlSWQuZ2V0Qm9v
bGVhbigiaXNMb2NhbFN0b3JhZ2UiX3MsIGlzTG9jYWxTdG9yYWdlKSkgeworICAgICAgICBlcnJv
clN0cmluZyA9ICJNaXNzaW5nIGlzTG9jYWxTdG9yYWdlIGluIGdpdmVuIHN0b3JhZ2VJZCI7CiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAogICAgIHRhcmdldEZyYW1lID0gSW5zcGVj
dG9yUGFnZUFnZW50OjpmaW5kRnJhbWVXaXRoU2VjdXJpdHlPcmlnaW4obV9pbnNwZWN0ZWRQYWdl
LCBzZWN1cml0eU9yaWdpbik7CiAgICAgaWYgKCF0YXJnZXRGcmFtZSkgewotICAgICAgICBlcnJv
clN0cmluZyA9ICJGcmFtZSBub3QgZm91bmQgZm9yIHRoZSBnaXZlbiBzZWN1cml0eSBvcmlnaW4i
X3M7CisgICAgICAgIGVycm9yU3RyaW5nID0gIk1pc3NpbmcgZnJhbWUgZm9yIGdpdmVuIHNlY3Vy
aXR5T3JpZ2luIl9zOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRGF0YWJhc2VBZ2Vu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRhdGFiYXNl
QWdlbnQuY3BwCmluZGV4IDM1OGE4NTY1MTJlYTRkNzE5NjMzMmEyMDY5OTBkZTMyNTAwNDEwYmYu
LmU5Y2FhNjYxMDg3MDEwNDdkZDk1MGUwMDA3NWIyYTFkOTg0NmFhMjggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEYXRhYmFzZUFn
ZW50LmNwcApAQCAtMjI4LDE0ICsyMjgsMTQgQEAgdm9pZCBJbnNwZWN0b3JEYXRhYmFzZUFnZW50
OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpGcm9udGVuZFJvdXQKIAog
dm9pZCBJbnNwZWN0b3JEYXRhYmFzZUFnZW50Ojp3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2Vu
ZChJbnNwZWN0b3I6OkRpc2Nvbm5lY3RSZWFzb24pCiB7Ci0gICAgRXJyb3JTdHJpbmcgdW51c2Vk
OwotICAgIGRpc2FibGUodW51c2VkKTsKKyAgICBFcnJvclN0cmluZyBpZ25vcmVkOworICAgIGRp
c2FibGUoaWdub3JlZCk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yRGF0YWJhc2VBZ2VudDo6ZW5hYmxl
KEVycm9yU3RyaW5nJiBlcnJvclN0cmluZykKIHsKICAgICBpZiAobV9pbnN0cnVtZW50aW5nQWdl
bnRzLmluc3BlY3RvckRhdGFiYXNlQWdlbnQoKSA9PSB0aGlzKSB7Ci0gICAgICAgIGVycm9yU3Ry
aW5nID0gIkRhdGFiYXNlQWdlbnQgYWxyZWFkeSBlbmFibGVkIl9zOworICAgICAgICBlcnJvclN0
cmluZyA9ICJEYXRhYmFzZSBkb21haW4gYWxyZWFkeSBlbmFibGVkIl9zOwogICAgICAgICByZXR1
cm47CiAgICAgfQogCkBAIC0yNDgsNyArMjQ4LDcgQEAgdm9pZCBJbnNwZWN0b3JEYXRhYmFzZUFn
ZW50OjplbmFibGUoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nKQogdm9pZCBJbnNwZWN0b3JEYXRh
YmFzZUFnZW50OjpkaXNhYmxlKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZykKIHsKICAgICBpZiAo
bV9pbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3RvckRhdGFiYXNlQWdlbnQoKSAhPSB0aGlzKSB7
Ci0gICAgICAgIGVycm9yU3RyaW5nID0gIkRhdGFiYXNlQWdlbnQgYWxyZWFkeSBkaXNhYmxlZCJf
czsKKyAgICAgICAgZXJyb3JTdHJpbmcgPSAiRGF0YWJhc2UgZG9tYWluIGFscmVhZHkgZGlzYWJs
ZWQiX3M7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTI2MCw3ICsyNjAsNyBAQCB2b2lk
IEluc3BlY3RvckRhdGFiYXNlQWdlbnQ6OmRpc2FibGUoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5n
KQogdm9pZCBJbnNwZWN0b3JEYXRhYmFzZUFnZW50OjpnZXREYXRhYmFzZVRhYmxlTmFtZXMoRXJy
b3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIGRhdGFiYXNlSWQsIFJlZlB0cjxK
U09OOjpBcnJheU9mPFN0cmluZz4+JiBuYW1lcykKIHsKICAgICBpZiAobV9pbnN0cnVtZW50aW5n
QWdlbnRzLmluc3BlY3RvckRhdGFiYXNlQWdlbnQoKSAhPSB0aGlzKSB7Ci0gICAgICAgIGVycm9y
U3RyaW5nID0gIkRhdGFiYXNlIGFnZW50IGlzIG5vdCBlbmFibGVkIl9zOworICAgICAgICBlcnJv
clN0cmluZyA9ICJEYXRhYmFzZSBkb21haW4gbXVzdCBiZSBlbmFibGVkIl9zOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCkBAIC0yNzUsMTMgKzI3NSwxMyBAQCB2b2lkIEluc3BlY3RvckRhdGFi
YXNlQWdlbnQ6OmdldERhdGFiYXNlVGFibGVOYW1lcyhFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcs
IGNvbgogdm9pZCBJbnNwZWN0b3JEYXRhYmFzZUFnZW50OjpleGVjdXRlU1FMKGNvbnN0IFN0cmlu
ZyYgZGF0YWJhc2VJZCwgY29uc3QgU3RyaW5nJiBxdWVyeSwgUmVmPEV4ZWN1dGVTUUxDYWxsYmFj
az4mJiByZXF1ZXN0Q2FsbGJhY2spCiB7CiAgICAgaWYgKG1faW5zdHJ1bWVudGluZ0FnZW50cy5p
bnNwZWN0b3JEYXRhYmFzZUFnZW50KCkgIT0gdGhpcykgewotICAgICAgICByZXF1ZXN0Q2FsbGJh
Y2stPnNlbmRGYWlsdXJlKCJEYXRhYmFzZSBhZ2VudCBpcyBub3QgZW5hYmxlZCJfcyk7CisgICAg
ICAgIHJlcXVlc3RDYWxsYmFjay0+c2VuZEZhaWx1cmUoIkRhdGFiYXNlIGRvbWFpbiBtdXN0IGJl
IGVuYWJsZWQiX3MpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgYXV0byogZGF0YWJh
c2UgPSBkYXRhYmFzZUZvcklkKGRhdGFiYXNlSWQpOwogICAgIGlmICghZGF0YWJhc2UpIHsKLSAg
ICAgICAgcmVxdWVzdENhbGxiYWNrLT5zZW5kRmFpbHVyZSgiRGF0YWJhc2Ugbm90IGZvdW5kIik7
CisgICAgICAgIHJlcXVlc3RDYWxsYmFjay0+c2VuZEZhaWx1cmUoIk1pc3NpbmcgZGF0YWJhc2Ug
Zm9yIGdpdmVuIGRhdGFiYXNlSWQiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JJbmRleGVkREJB
Z2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckluZGV4
ZWREQkFnZW50LmNwcAppbmRleCBkZDcxNWNiZDhjYTExYjljMWQwODVhNjZiNTQxNmQ5ZjJlOTVh
N2QyLi5hMTU1NDVjNTE0ZDYzNDQzNDkyODBmMDllMzhiMjRhZGM5MGYzMmEyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckluZGV4ZWREQkFnZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckluZGV4
ZWREQkFnZW50LmNwcApAQCAtNTMzLDggKzUzMyw4IEBAIHZvaWQgSW5zcGVjdG9ySW5kZXhlZERC
QWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkZyb250ZW5kUm91
CiAKIHZvaWQgSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQ6OndpbGxEZXN0cm95RnJvbnRlbmRBbmRC
YWNrZW5kKEluc3BlY3Rvcjo6RGlzY29ubmVjdFJlYXNvbikKIHsKLSAgICBFcnJvclN0cmluZyB1
bnVzZWQ7Ci0gICAgZGlzYWJsZSh1bnVzZWQpOworICAgIEVycm9yU3RyaW5nIGlnbm9yZWQ7Cisg
ICAgZGlzYWJsZShpZ25vcmVkKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JJbmRleGVkREJBZ2VudDo6
ZW5hYmxlKEVycm9yU3RyaW5nJikKQEAgLTU0OSw3ICs1NDksNyBAQCBzdGF0aWMgRXJyb3JTdHJp
bmdPcjxEb2N1bWVudCo+IGRvY3VtZW50RnJvbUZyYW1lKEZyYW1lKiBmcmFtZSkKIHsKICAgICBE
b2N1bWVudCogZG9jdW1lbnQgPSBmcmFtZSA/IGZyYW1lLT5kb2N1bWVudCgpIDogbnVsbHB0cjsK
ICAgICBpZiAoIWRvY3VtZW50KQotICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoIk5vIGRv
Y3VtZW50IGZvciBnaXZlbiBmcmFtZSBmb3VuZCJfcyk7CisgICAgICAgIHJldHVybiBtYWtlVW5l
eHBlY3RlZCgiTWlzc2luZyBkb2N1bWVudCBmb3IgZ2l2ZW4gZnJhbWUiX3MpOwogICAgIAogICAg
IHJldHVybiBkb2N1bWVudDsKIH0KQEAgLTU1OCwxMSArNTU4LDExIEBAIHN0YXRpYyBFcnJvclN0
cmluZ09yPElEQkZhY3RvcnkqPiBJREJGYWN0b3J5RnJvbURvY3VtZW50KERvY3VtZW50KiBkb2N1
bWVudCkKIHsKICAgICBET01XaW5kb3cqIGRvbVdpbmRvdyA9IGRvY3VtZW50LT5kb21XaW5kb3co
KTsKICAgICBpZiAoIWRvbVdpbmRvdykKLSAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKCJO
byBJbmRleGVkREIgZmFjdG9yeSBmb3IgZ2l2ZW4gZnJhbWUgZm91bmQiX3MpOworICAgICAgICBy
ZXR1cm4gbWFrZVVuZXhwZWN0ZWQoIk1pc3Npbmcgd2luZG93IGZvciBnaXZlbiBkb2N1bWVudCJf
cyk7CiAKICAgICBJREJGYWN0b3J5KiBpZGJGYWN0b3J5ID0gRE9NV2luZG93SW5kZXhlZERhdGFi
YXNlOjppbmRleGVkREIoKmRvbVdpbmRvdyk7CiAgICAgaWYgKCFpZGJGYWN0b3J5KQotICAgICAg
ICBtYWtlVW5leHBlY3RlZCgiTm8gSW5kZXhlZERCIGZhY3RvcnkgZm9yIGdpdmVuIGZyYW1lIGZv
dW5kIl9zKTsKKyAgICAgICAgbWFrZVVuZXhwZWN0ZWQoIk1pc3NpbmcgSW5kZXhlZERCIGZhY3Rv
cnkgb2Ygd2luZG93IGZvciBnaXZlbiBkb2N1bWVudCJfcyk7CiAgICAgCiAgICAgcmV0dXJuIGlk
YkZhY3Rvcnk7CiB9CkBAIC02MzEsNyArNjMxLDcgQEAgdm9pZCBJbnNwZWN0b3JJbmRleGVkREJB
Z2VudDo6cmVxdWVzdERhdGEoY29uc3QgU3RyaW5nJiBzZWN1cml0eU9yaWdpbiwgY29uc3QgU3QK
ICAgICBJbmplY3RlZFNjcmlwdCBpbmplY3RlZFNjcmlwdCA9IG1faW5qZWN0ZWRTY3JpcHRNYW5h
Z2VyLmluamVjdGVkU2NyaXB0Rm9yKG1haW5Xb3JsZEV4ZWNTdGF0ZShmcmFtZSkpOwogICAgIFJl
ZlB0cjxJREJLZXlSYW5nZT4gaWRiS2V5UmFuZ2UgPSBrZXlSYW5nZSA/IGlkYktleVJhbmdlRnJv
bUtleVJhbmdlKGtleVJhbmdlKSA6IG51bGxwdHI7CiAgICAgaWYgKGtleVJhbmdlICYmICFpZGJL
ZXlSYW5nZSkgewotICAgICAgICBjYWxsYmFjay0+c2VuZEZhaWx1cmUoIkNhbiBub3QgcGFyc2Ug
a2V5IHJhbmdlLiJfcyk7CisgICAgICAgIGNhbGxiYWNrLT5zZW5kRmFpbHVyZSgiQ291bGQgbm90
IHBhcnNlIGtleSByYW5nZS4iX3MpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckxheWVyVHJlZUFn
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTGF5ZXJU
cmVlQWdlbnQuY3BwCmluZGV4IGI1OTgyY2VlMzdlMzc0NDcwNTM5NDZiY2Y0YzQzNGI0MzFlZjlh
OTguLmEzNWI0OWIwMzAzZTc4MDU2NzIxMTEwNDAxYjAwMjkzN2E2MmQ2MDMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTGF5ZXJU
cmVlQWdlbnQuY3BwCkBAIC02NCw4ICs2NCw4IEBAIHZvaWQgSW5zcGVjdG9yTGF5ZXJUcmVlQWdl
bnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkZyb250ZW5kUm91CiAK
IHZvaWQgSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6OndpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNr
ZW5kKEluc3BlY3Rvcjo6RGlzY29ubmVjdFJlYXNvbikKIHsKLSAgICBFcnJvclN0cmluZyB1bnVz
ZWQ7Ci0gICAgZGlzYWJsZSh1bnVzZWQpOworICAgIEVycm9yU3RyaW5nIGlnbm9yZWQ7CisgICAg
ZGlzYWJsZShpZ25vcmVkKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JMYXllclRyZWVBZ2VudDo6cmVz
ZXQoKQpAQCAtMTEzLDEzICsxMTMsMTMgQEAgdm9pZCBJbnNwZWN0b3JMYXllclRyZWVBZ2VudDo6
bGF5ZXJzRm9yTm9kZShFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGludCBub2RlSWQKIAogICAg
IGF1dG8qIG5vZGUgPSBtX2luc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yRE9NQWdlbnQoKS0+
bm9kZUZvcklkKG5vZGVJZCk7CiAgICAgaWYgKCFub2RlKSB7Ci0gICAgICAgIGVycm9yU3RyaW5n
ID0gIlByb3ZpZGVkIG5vZGUgaWQgZG9lc24ndCBtYXRjaCBhbnkga25vd24gbm9kZSJfczsKKyAg
ICAgICAgZXJyb3JTdHJpbmcgPSAiTWlzc2luZyBub2RlIGZvciBnaXZlbiBub2RlSWQiX3M7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBhdXRvKiByZW5kZXJlciA9IG5vZGUtPnJlbmRl
cmVyKCk7CiAgICAgaWYgKCFyZW5kZXJlcikgewotICAgICAgICBlcnJvclN0cmluZyA9ICJOb2Rl
IGZvciBwcm92aWRlZCBub2RlIGlkIGRvZXNuJ3QgaGF2ZSBhIHJlbmRlcmVyIl9zOworICAgICAg
ICBlcnJvclN0cmluZyA9ICJNaXNzaW5nIHJlbmRlcmVyIG9mIG5vZGUgZm9yIGdpdmVuIG5vZGVJ
ZCJfczsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMjM5LDcgKzIzOSw3IEBAIHZvaWQg
SW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6OnJlYXNvbnNGb3JDb21wb3NpdGluZ0xheWVyKEVycm9y
U3RyaW5nJiBlcnJvclN0cmluCiAgICAgY29uc3QgUmVuZGVyTGF5ZXIqIHJlbmRlckxheWVyID0g
bV9pZFRvTGF5ZXIuZ2V0KGxheWVySWQpOwogCiAgICAgaWYgKCFyZW5kZXJMYXllcikgewotICAg
ICAgICBlcnJvclN0cmluZyA9ICJDb3VsZCBub3QgZmluZCBhIGJvdW5kIGxheWVyIGZvciB0aGUg
cHJvdmlkZWQgaWQiX3M7CisgICAgICAgIGVycm9yU3RyaW5nID0gIk1pc3NpbmcgcmVuZGVyIGxh
eWVyIGZvciBnaXZlbiBsYXllcklkIl9zOwogICAgICAgICByZXR1cm47CiAgICAgfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck1lbW9yeUFn
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTWVtb3J5
QWdlbnQuY3BwCmluZGV4IDI4MzI5NTFmNTM4MDEyMWZhNDUyYmZhOGQ0NzBmNGQzNWU3ODliMTYu
LjBjY2ZhNTE0NDY2OWViNTdiMWZlZmFhNDkyZDQ0NGQzZWVkZmQ3OWUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTWVtb3J5QWdlbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTWVtb3J5QWdlbnQu
Y3BwCkBAIC01OCw3ICs1OCw3IEBAIHZvaWQgSW5zcGVjdG9yTWVtb3J5QWdlbnQ6OndpbGxEZXN0
cm95RnJvbnRlbmRBbmRCYWNrZW5kKERpc2Nvbm5lY3RSZWFzb24pCiB2b2lkIEluc3BlY3Rvck1l
bW9yeUFnZW50OjplbmFibGUoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nKQogewogICAgIGlmICht
X2luc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yTWVtb3J5QWdlbnQoKSA9PSB0aGlzKSB7Ci0g
ICAgICAgIGVycm9yU3RyaW5nID0gIk1lbW9yeUFnZW50IGFscmVhZHkgZW5hYmxlZCJfczsKKyAg
ICAgICAgZXJyb3JTdHJpbmcgPSAiTWVtb3J5IGRvbWFpbiBhbHJlYWR5IGVuYWJsZWQiX3M7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTY4LDcgKzY4LDcgQEAgdm9pZCBJbnNwZWN0b3JN
ZW1vcnlBZ2VudDo6ZW5hYmxlKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZykKIHZvaWQgSW5zcGVj
dG9yTWVtb3J5QWdlbnQ6OmRpc2FibGUoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nKQogewogICAg
IGlmIChtX2luc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yTWVtb3J5QWdlbnQoKSAhPSB0aGlz
KSB7Ci0gICAgICAgIGVycm9yU3RyaW5nID0gIk1lbW9yeUFnZW50IGFscmVhZHkgZGlzYWJsZWQi
X3M7CisgICAgICAgIGVycm9yU3RyaW5nID0gIk1lbW9yeSBkb21haW4gYWxyZWFkeSBkaXNhYmxl
ZCJfczsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwCmluZGV4IDVk
MDgxNjM4MGNkYzY2YzdkNzk2MGMxMmQzNDhhMGZiZjNmN2IxMTguLmU3NmI3NDQwODhlOTViMjU2
MzRjMTdkMzQ1ZDQxOTE4ZDAxNzkyMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAKQEAgLTE4NSw4ICsx
ODUsOCBAQCB2b2lkIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRC
YWNrZW5kKEluc3BlY3Rvcjo6RnJvbnRlbmRSb3V0ZQogCiB2b2lkIEluc3BlY3Rvck5ldHdvcmtB
Z2VudDo6d2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpEaXNjb25uZWN0
UmVhc29uKQogewotICAgIEVycm9yU3RyaW5nIHVudXNlZDsKLSAgICBkaXNhYmxlKHVudXNlZCk7
CisgICAgRXJyb3JTdHJpbmcgaWdub3JlZDsKKyAgICBkaXNhYmxlKGlnbm9yZWQpOwogfQogCiBz
dGF0aWMgUmVmPEpTT046Ok9iamVjdD4gYnVpbGRPYmplY3RGb3JIZWFkZXJzKGNvbnN0IEhUVFBI
ZWFkZXJNYXAmIGhlYWRlcnMpCkBAIC0zOTMsOCArMzkzLDggQEAgUmVmPEluc3BlY3Rvcjo6UHJv
dG9jb2w6Ok5ldHdvcms6OkNhY2hlZFJlc291cmNlPiBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmJ1
aWxkT2IKIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6fkluc3BlY3Rvck5ldHdvcmtBZ2VudCgpCiB7
CiAgICAgaWYgKG1fZW5hYmxlZCkgewotICAgICAgICBFcnJvclN0cmluZyB1bnVzZWQ7Ci0gICAg
ICAgIGRpc2FibGUodW51c2VkKTsKKyAgICAgICAgRXJyb3JTdHJpbmcgaWdub3JlZDsKKyAgICAg
ICAgZGlzYWJsZShpZ25vcmVkKTsKICAgICB9CiAgICAgQVNTRVJUKCFtX2luc3RydW1lbnRpbmdB
Z2VudHMuaW5zcGVjdG9yTmV0d29ya0FnZW50KCkpOwogfQpAQCAtODU0LDcgKzg1NCw3IEBAIHZv
aWQgSW5zcGVjdG9yTmV0d29ya0FnZW50OjpnZXRSZXNwb25zZUJvZHkoRXJyb3JTdHJpbmcmIGVy
cm9yU3RyaW5nLCBjb25zdCBTdHJpCiB7CiAgICAgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291
cmNlRGF0YSBjb25zdCogcmVzb3VyY2VEYXRhID0gbV9yZXNvdXJjZXNEYXRhLT5kYXRhKHJlcXVl
c3RJZCk7CiAgICAgaWYgKCFyZXNvdXJjZURhdGEpIHsKLSAgICAgICAgZXJyb3JTdHJpbmcgPSAi
Tm8gcmVzb3VyY2Ugd2l0aCBnaXZlbiBpZGVudGlmaWVyIGZvdW5kIl9zOworICAgICAgICBlcnJv
clN0cmluZyA9ICJNaXNzaW5nIHJlc291cmNlIGZvciBnaXZlbiByZXF1ZXN0SWQiX3M7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKQEAgLTg2NSw3ICs4NjUsNyBAQCB2b2lkIEluc3BlY3Rvck5l
dHdvcmtBZ2VudDo6Z2V0UmVzcG9uc2VCb2R5KEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29u
c3QgU3RyaQogICAgIH0KIAogICAgIGlmIChyZXNvdXJjZURhdGEtPmlzQ29udGVudEV2aWN0ZWQo
KSkgewotICAgICAgICBlcnJvclN0cmluZyA9ICJSZXF1ZXN0IGNvbnRlbnQgd2FzIGV2aWN0ZWQg
ZnJvbSBpbnNwZWN0b3IgY2FjaGUiX3M7CisgICAgICAgIGVycm9yU3RyaW5nID0gIlJlc291cmNl
IGNvbnRlbnQgd2FzIGV2aWN0ZWQgZnJvbSBpbnNwZWN0b3IgY2FjaGUiX3M7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKQEAgLTg4MCw3ICs4ODAsNyBAQCB2b2lkIEluc3BlY3Rvck5ldHdvcmtB
Z2VudDo6Z2V0UmVzcG9uc2VCb2R5KEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3Ry
aQogICAgICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGVycm9yU3RyaW5nID0gIk5vIGRh
dGEgZm91bmQgZm9yIHJlc291cmNlIHdpdGggZ2l2ZW4gaWRlbnRpZmllciJfczsKKyAgICBlcnJv
clN0cmluZyA9ICJNaXNzaW5nIGNvbnRlbnQgb2YgcmVzb3VyY2UgZm9yIGdpdmVuIHJlcXVlc3RJ
ZCJfczsKIH0KIAogdm9pZCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OnNldFJlc291cmNlQ2FjaGlu
Z0Rpc2FibGVkKEVycm9yU3RyaW5nJiwgYm9vbCBkaXNhYmxlZCkKQEAgLTg5MCwxMCArODkwLDEw
IEBAIHZvaWQgSW5zcGVjdG9yTmV0d29ya0FnZW50OjpzZXRSZXNvdXJjZUNhY2hpbmdEaXNhYmxl
ZChFcnJvclN0cmluZyYsIGJvb2wgZGlzYWJsCiAKIHZvaWQgSW5zcGVjdG9yTmV0d29ya0FnZW50
Ojpsb2FkUmVzb3VyY2UoY29uc3QgU3RyaW5nJiBmcmFtZUlkLCBjb25zdCBTdHJpbmcmIHVybFN0
cmluZywgUmVmPExvYWRSZXNvdXJjZUNhbGxiYWNrPiYmIGNhbGxiYWNrKQogewotICAgIEVycm9y
U3RyaW5nIGVycm9yOwotICAgIGF1dG8qIGNvbnRleHQgPSBzY3JpcHRFeGVjdXRpb25Db250ZXh0
KGVycm9yLCBmcmFtZUlkKTsKKyAgICBFcnJvclN0cmluZyBlcnJvclN0cmluZzsKKyAgICBhdXRv
KiBjb250ZXh0ID0gc2NyaXB0RXhlY3V0aW9uQ29udGV4dChlcnJvclN0cmluZywgZnJhbWVJZCk7
CiAgICAgaWYgKCFjb250ZXh0KSB7Ci0gICAgICAgIGNhbGxiYWNrLT5zZW5kRmFpbHVyZShlcnJv
cik7CisgICAgICAgIGNhbGxiYWNrLT5zZW5kRmFpbHVyZShlcnJvclN0cmluZyk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKQEAgLTkyOCwxMyArOTI4LDEzIEBAIHZvaWQgSW5zcGVjdG9yTmV0
d29ya0FnZW50OjpnZXRTZXJpYWxpemVkQ2VydGlmaWNhdGUoRXJyb3JTdHJpbmcmIGVycm9yU3Ry
aW5nLCBjCiB7CiAgICAgYXV0byogcmVzb3VyY2VEYXRhID0gbV9yZXNvdXJjZXNEYXRhLT5kYXRh
KHJlcXVlc3RJZCk7CiAgICAgaWYgKCFyZXNvdXJjZURhdGEpIHsKLSAgICAgICAgZXJyb3JTdHJp
bmcgPSAiTm8gcmVzb3VyY2Ugd2l0aCBnaXZlbiBpZGVudGlmaWVyIGZvdW5kIl9zOworICAgICAg
ICBlcnJvclN0cmluZyA9ICJNaXNzaW5nIHJlc291cmNlIGZvciBnaXZlbiByZXF1ZXN0SWQiX3M7
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBhdXRvJiBjZXJ0aWZpY2F0ZSA9IHJlc291
cmNlRGF0YS0+Y2VydGlmaWNhdGVJbmZvKCk7CiAgICAgaWYgKCFjZXJ0aWZpY2F0ZSB8fCBjZXJ0
aWZpY2F0ZS52YWx1ZSgpLmlzRW1wdHkoKSkgewotICAgICAgICBlcnJvclN0cmluZyA9ICJObyBj
ZXJ0aWZpY2F0ZSBmb3IgcmVzb3VyY2UiX3M7CisgICAgICAgIGVycm9yU3RyaW5nID0gIk1pc3Np
bmcgY2VydGlmaWNhdGUgb2YgcmVzb3VyY2UgZm9yIGdpdmVuIHJlcXVlc3RJZCJfczsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIApAQCAtOTY3LDcgKzk2Nyw3IEBAIHZvaWQgSW5zcGVjdG9yTmV0
d29ya0FnZW50OjpyZXNvbHZlV2ViU29ja2V0KEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29u
c3QgU3RyCiB7CiAgICAgV2ViU29ja2V0KiB3ZWJTb2NrZXQgPSB3ZWJTb2NrZXRGb3JSZXF1ZXN0
SWQocmVxdWVzdElkKTsKICAgICBpZiAoIXdlYlNvY2tldCkgewotICAgICAgICBlcnJvclN0cmlu
ZyA9ICJXZWJTb2NrZXQgbm90IGZvdW5kIl9zOworICAgICAgICBlcnJvclN0cmluZyA9ICJNaXNz
aW5nIHdlYiBzb2NrZXQgZm9yIGdpdmVuIHJlcXVlc3RJZCJfczsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIApAQCAtOTc4LDcgKzk3OCw3IEBAIHZvaWQgSW5zcGVjdG9yTmV0d29ya0FnZW50Ojpy
ZXNvbHZlV2ViU29ja2V0KEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyCiAgICAg
YXV0byogZG9jdW1lbnQgPSBkb3duY2FzdDxEb2N1bWVudD4od2ViU29ja2V0LT5zY3JpcHRFeGVj
dXRpb25Db250ZXh0KCkpOwogICAgIGF1dG8qIGZyYW1lID0gZG9jdW1lbnQtPmZyYW1lKCk7CiAg
ICAgaWYgKCFmcmFtZSkgewotICAgICAgICBlcnJvclN0cmluZyA9ICJXZWJTb2NrZXQgYmVsb25n
cyB0byBkb2N1bWVudCB3aXRob3V0IGEgZnJhbWUiX3M7CisgICAgICAgIGVycm9yU3RyaW5nID0g
Ik1pc3NpbmcgZnJhbWUgb2Ygd2ViIHNvY2tldCBmb3IgZ2l2ZW4gcmVxdWVzdElkIl9zOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogCkBAIC0xMTA3LDEyICsxMTA3LDEyIEBAIHZvaWQgSW5zcGVj
dG9yTmV0d29ya0FnZW50OjpzZWFyY2hJblJlcXVlc3QoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5n
LCBjb25zdCBTdHJpCiB7CiAgICAgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YSBj
b25zdCogcmVzb3VyY2VEYXRhID0gbV9yZXNvdXJjZXNEYXRhLT5kYXRhKHJlcXVlc3RJZCk7CiAg
ICAgaWYgKCFyZXNvdXJjZURhdGEpIHsKLSAgICAgICAgZXJyb3JTdHJpbmcgPSAiTm8gcmVzb3Vy
Y2Ugd2l0aCBnaXZlbiBpZGVudGlmaWVyIGZvdW5kIl9zOworICAgICAgICBlcnJvclN0cmluZyA9
ICJNaXNzaW5nIHJlc291cmNlIGZvciBnaXZlbiByZXF1ZXN0SWQiX3M7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKICAgICBpZiAoIXJlc291cmNlRGF0YS0+aGFzQ29udGVudCgpKSB7Ci0gICAg
ICAgIGVycm9yU3RyaW5nID0gIk5vIHJlc291cmNlIGNvbnRlbnQiX3M7CisgICAgICAgIGVycm9y
U3RyaW5nID0gIk1pc3NpbmcgY29udGVudCBvZiByZXNvdXJjZSBmb3IgZ2l2ZW4gcmVxdWVzdElk
Il9zOwogICAgICAgICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKaW5kZXggYmZlYTZkMTYy
MjFkYjJjNmExNDA4NTEyZWI0YjViYTUxNThjYjc0Ni4uZDhiNzgxMDYyYjk1NjZhNzQ1NGRhYjg3
OTVlZWNmMjgyZTc5NmIyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmNwcApAQCAtMTgxLDcgKzE4MSw3IEBAIHZvaWQg
SW5zcGVjdG9yUGFnZUFnZW50OjpyZXNvdXJjZUNvbnRlbnQoRXJyb3JTdHJpbmcmIGVycm9yU3Ry
aW5nLCBGcmFtZSogZnJhbWUsCiAgICAgfQogCiAgICAgaWYgKCFzdWNjZXNzKQotICAgICAgICBl
cnJvclN0cmluZyA9ICJObyByZXNvdXJjZSB3aXRoIGdpdmVuIFVSTCBmb3VuZCJfczsKKyAgICAg
ICAgZXJyb3JTdHJpbmcgPSAiTWlzc2luZyByZXNvdXJjZSBmb3IgZ2l2ZW4gdXJsIl9zOwogfQog
CiBTdHJpbmcgSW5zcGVjdG9yUGFnZUFnZW50Ojpzb3VyY2VNYXBVUkxGb3JSZXNvdXJjZShDYWNo
ZWRSZXNvdXJjZSogY2FjaGVkUmVzb3VyY2UpCkBAIC0zMjcsNyArMzI3LDcgQEAgRG9jdW1lbnRM
b2FkZXIqIEluc3BlY3RvclBhZ2VBZ2VudDo6YXNzZXJ0RG9jdW1lbnRMb2FkZXIoRXJyb3JTdHJp
bmcmIGVycm9yU3RyaW4KICAgICBGcmFtZUxvYWRlciYgZnJhbWVMb2FkZXIgPSBmcmFtZS0+bG9h
ZGVyKCk7CiAgICAgRG9jdW1lbnRMb2FkZXIqIGRvY3VtZW50TG9hZGVyID0gZnJhbWVMb2FkZXIu
ZG9jdW1lbnRMb2FkZXIoKTsKICAgICBpZiAoIWRvY3VtZW50TG9hZGVyKQotICAgICAgICBlcnJv
clN0cmluZyA9ICJObyBkb2N1bWVudExvYWRlciBmb3IgZ2l2ZW4gZnJhbWUgZm91bmQiX3M7Cisg
ICAgICAgIGVycm9yU3RyaW5nID0gIk1pc3NpbmcgZG9jdW1lbnQgbG9hZGVyIGZvciBnaXZlbiBm
cmFtZSJfczsKICAgICByZXR1cm4gZG9jdW1lbnRMb2FkZXI7CiB9CiAKQEAgLTQzNCwxMyArNDM0
LDEzIEBAIHN0YXRpYyBpbmxpbmUgT3B0aW9uYWw8Ym9vbD4gYXNPcHRpb25hbEJvb2woY29uc3Qg
Ym9vbCogdmFsdWUpCiB2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6b3ZlcnJpZGVTZXR0aW5nKEVy
cm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBzZXR0aW5nU3RyaW5nLCBjb25z
dCBib29sKiB2YWx1ZSkKIHsKICAgICBpZiAoc2V0dGluZ1N0cmluZy5pc0VtcHR5KCkpIHsKLSAg
ICAgICAgZXJyb3JTdHJpbmcgPSAiUHJlZmVyZW5jZSBpcyBlbXB0eSJfczsKKyAgICAgICAgZXJy
b3JTdHJpbmcgPSAic2V0dGluZ1N0cmluZyBpcyBlbXB0eSJfczsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAogICAgIGF1dG8gc2V0dGluZyA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6Okluc3BlY3Rv
ckhlbHBlcnM6OnBhcnNlRW51bVZhbHVlRnJvbVN0cmluZzxJbnNwZWN0b3I6OlByb3RvY29sOjpQ
YWdlOjpTZXR0aW5nPihzZXR0aW5nU3RyaW5nKTsKICAgICBpZiAoIXNldHRpbmcpIHsKLSAgICAg
ICAgZXJyb3JTdHJpbmcgPSBtYWtlU3RyaW5nKCJVbmtub3duIHNldHRpbmc6ICJfcywgc2V0dGlu
Z1N0cmluZyk7CisgICAgICAgIGVycm9yU3RyaW5nID0gbWFrZVN0cmluZygiVW5rbm93biBzZXR0
aW5nU3RyaW5nOiAiX3MsIHNldHRpbmdTdHJpbmcpOwogICAgICAgICByZXR1cm47CiAgICAgfQog
CkBAIC03MjQsNyArNzI0LDcgQEAgRnJhbWUqIEluc3BlY3RvclBhZ2VBZ2VudDo6YXNzZXJ0RnJh
bWUoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIGYKIHsKICAgICBGcmFt
ZSogZnJhbWUgPSBmcmFtZUZvcklkKGZyYW1lSWQpOwogICAgIGlmICghZnJhbWUpCi0gICAgICAg
IGVycm9yU3RyaW5nID0gIk5vIGZyYW1lIGZvciBnaXZlbiBpZCBmb3VuZCJfczsKKyAgICAgICAg
ZXJyb3JTdHJpbmcgPSAiTWlzc2luZyBmcmFtZSBmb3IgZ2l2ZW4gZnJhbWVJZCJfczsKICAgICBy
ZXR1cm4gZnJhbWU7CiB9CiAKQEAgLTk2MSw3ICs5NjEsNyBAQCB2b2lkIEluc3BlY3RvclBhZ2VB
Z2VudDo6YXJjaGl2ZShFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIFN0cmluZyogZGF0YSkKICAg
ICAqZGF0YSA9IGJhc2U2NEVuY29kZShDRkRhdGFHZXRCeXRlUHRyKGJ1ZmZlci5nZXQoKSksIENG
RGF0YUdldExlbmd0aChidWZmZXIuZ2V0KCkpKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGRh
dGEpOwotICAgIGVycm9yU3RyaW5nID0gIk5vIHN1cHBvcnQgZm9yIGNyZWF0aW5nIGFyY2hpdmVz
Il9zOworICAgIGVycm9yU3RyaW5nID0gIk5vdCBzdXBwb3J0ZWQiX3M7CiAjZW5kaWYKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JUaW1l
bGluZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
VGltZWxpbmVBZ2VudC5jcHAKaW5kZXggZTBlODYwZDg2NjA2ZTk1MWIzZTQ2MDA3YjE5ZDIyNTli
ZWI1N2JiYy4uMmMyMDY1MTllN2Y0M2IzMGEwOTUyZjZkOGRkMTYyNzM5NmMxYjczOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JUaW1lbGluZUFn
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclRp
bWVsaW5lQWdlbnQuY3BwCkBAIC0xMDgsNyArMTA4LDcgQEAgdm9pZCBJbnNwZWN0b3JUaW1lbGlu
ZUFnZW50Ojp3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkRpc2Nvbm5l
Y3QKIHZvaWQgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6ZW5hYmxlKEVycm9yU3RyaW5nJiBlcnJv
clN0cmluZykKIHsKICAgICBpZiAobV9pbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3RvclRpbWVs
aW5lQWdlbnQoKSA9PSB0aGlzKSB7Ci0gICAgICAgIGVycm9yU3RyaW5nID0gIlRpbWVsaW5lQWdl
bnQgYWxyZWFkeSBlbmFibGVkIl9zOworICAgICAgICBlcnJvclN0cmluZyA9ICJUaW1lbGluZSBk
b21haW4gYWxyZWFkeSBlbmFibGVkIl9zOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0x
MTgsMTQgKzExOCwxNCBAQCB2b2lkIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OmVuYWJsZShFcnJv
clN0cmluZyYgZXJyb3JTdHJpbmcpCiB2b2lkIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OmRpc2Fi
bGUoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nKQogewogICAgIGlmIChtX2luc3RydW1lbnRpbmdB
Z2VudHMuaW5zcGVjdG9yVGltZWxpbmVBZ2VudCgpICE9IHRoaXMpIHsKLSAgICAgICAgZXJyb3JT
dHJpbmcgPSAiVGltZWxpbmVBZ2VudCBhbHJlYWR5IGRpc2FibGVkIl9zOworICAgICAgICBlcnJv
clN0cmluZyA9ICJUaW1lbGluZSBkb21haW4gYWxyZWFkeSBkaXNhYmxlZCJfczsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIAogICAgIG1faW5zdHJ1bWVudGluZ0FnZW50cy5zZXRJbnNwZWN0b3JU
aW1lbGluZUFnZW50KG51bGxwdHIpOwogCi0gICAgRXJyb3JTdHJpbmcgdW51c2VkOwotICAgIHN0
b3AodW51c2VkKTsKKyAgICBFcnJvclN0cmluZyBpZ25vcmVkOworICAgIHN0b3AoaWdub3JlZCk7
CiAKICAgICBtX2F1dG9DYXB0dXJlRW5hYmxlZCA9IGZhbHNlOwogICAgIG1faW5zdHJ1bWVudHMu
Y2xlYXIoKTsKQEAgLTE1OCwxMyArMTU4LDEzIEBAIHZvaWQgSW5zcGVjdG9yVGltZWxpbmVBZ2Vu
dDo6c2V0SW5zdHJ1bWVudHMoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBKU09OCiAg
ICAgZm9yIChjb25zdCBhdXRvJiBpbnN0cnVtZW50VmFsdWUgOiBpbnN0cnVtZW50cykgewogICAg
ICAgICBTdHJpbmcgZW51bVZhbHVlU3RyaW5nOwogICAgICAgICBpZiAoIWluc3RydW1lbnRWYWx1
ZS0+YXNTdHJpbmcoZW51bVZhbHVlU3RyaW5nKSkgewotICAgICAgICAgICAgZXJyb3JTdHJpbmcg
PSAiVW5leHBlY3RlZCB0eXBlIGluIGluc3RydW1lbnRzIGxpc3QsIHNob3VsZCBiZSBzdHJpbmci
X3M7CisgICAgICAgICAgICBlcnJvclN0cmluZyA9ICJVbmV4cGVjdGVkIG5vbi1zdHJpbmcgdmFs
dWUgaW4gZ2l2ZW4gaW5zdHJ1bWVudHMiX3M7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IH0KIAogICAgICAgICBPcHRpb25hbDxQcm90b2NvbDo6VGltZWxpbmU6Okluc3RydW1lbnQ+IGlu
c3RydW1lbnRUeXBlID0gUHJvdG9jb2w6Okluc3BlY3RvckhlbHBlcnM6OnBhcnNlRW51bVZhbHVl
RnJvbVN0cmluZzxQcm90b2NvbDo6VGltZWxpbmU6Okluc3RydW1lbnQ+KGVudW1WYWx1ZVN0cmlu
Zyk7CiAgICAgICAgIGlmICghaW5zdHJ1bWVudFR5cGUpIHsKLSAgICAgICAgICAgIGVycm9yU3Ry
aW5nID0gbWFrZVN0cmluZygiVW5leHBlY3RlZCBlbnVtIHZhbHVlOiAiLCBlbnVtVmFsdWVTdHJp
bmcpOworICAgICAgICAgICAgZXJyb3JTdHJpbmcgPSBtYWtlU3RyaW5nKCJVbmtub3duIGl0ZW0g
aW4gZ2l2ZW4gaW5zdHJ1bWVudHM6ICIsIGVudW1WYWx1ZVN0cmluZyk7CiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIH0KIApAQCAtNDczLDggKzQ3Myw4IEBAIHZvaWQgSW5zcGVjdG9yVGlt
ZWxpbmVBZ2VudDo6bWFpbkZyYW1lU3RhcnRlZExvYWRpbmcoKQogCiAgICAgLy8gUHJlLWVtcHRp
dmVseSBkaXNhYmxlIGJyZWFrcG9pbnRzLiBUaGUgZnJvbnRlbmQgbXVzdCByZS1lbmFibGUgdGhl
bS4KICAgICBpZiAoSW5zcGVjdG9yRGVidWdnZXJBZ2VudCogZGVidWdnZXJBZ2VudCA9IG1faW5z
dHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JEZWJ1Z2dlckFnZW50KCkpIHsKLSAgICAgICAgRXJy
b3JTdHJpbmcgdW51c2VkOwotICAgICAgICBkZWJ1Z2dlckFnZW50LT5zZXRCcmVha3BvaW50c0Fj
dGl2ZSh1bnVzZWQsIGZhbHNlKTsKKyAgICAgICAgRXJyb3JTdHJpbmcgaWdub3JlZDsKKyAgICAg
ICAgZGVidWdnZXJBZ2VudC0+c2V0QnJlYWtwb2ludHNBY3RpdmUoaWdub3JlZCwgZmFsc2UpOwog
ICAgIH0KIAogICAgIC8vIEluZm9ybSB0aGUgZnJvbnRlbmQgd2Ugc3RhcnRlZCBhbiBhdXRvIGNh
cHR1cmUuIFRoZSBmcm9udGVuZCBtdXN0IHN0b3AgY2FwdHVyZS4KQEAgLTUwMCw4ICs1MDAsOCBA
QCB2b2lkIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OnN0YXJ0UHJvZ3JhbW1hdGljQ2FwdHVyZSgp
CiAgICAgaWYgKEluc3BlY3RvckRlYnVnZ2VyQWdlbnQqIGRlYnVnZ2VyQWdlbnQgPSBtX2luc3Ry
dW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yRGVidWdnZXJBZ2VudCgpKSB7CiAgICAgICAgIG1fcHJv
Z3JhbW1hdGljQ2FwdHVyZVJlc3RvcmVCcmVha3BvaW50QWN0aXZlVmFsdWUgPSBkZWJ1Z2dlckFn
ZW50LT5icmVha3BvaW50c0FjdGl2ZSgpOwogICAgICAgICBpZiAobV9wcm9ncmFtbWF0aWNDYXB0
dXJlUmVzdG9yZUJyZWFrcG9pbnRBY3RpdmVWYWx1ZSkgewotICAgICAgICAgICAgRXJyb3JTdHJp
bmcgdW51c2VkOwotICAgICAgICAgICAgZGVidWdnZXJBZ2VudC0+c2V0QnJlYWtwb2ludHNBY3Rp
dmUodW51c2VkLCBmYWxzZSk7CisgICAgICAgICAgICBFcnJvclN0cmluZyBpZ25vcmVkOworICAg
ICAgICAgICAgZGVidWdnZXJBZ2VudC0+c2V0QnJlYWtwb2ludHNBY3RpdmUoaWdub3JlZCwgZmFs
c2UpOwogICAgICAgICB9CiAgICAgfSBlbHNlCiAgICAgICAgIG1fcHJvZ3JhbW1hdGljQ2FwdHVy
ZVJlc3RvcmVCcmVha3BvaW50QWN0aXZlVmFsdWUgPSBmYWxzZTsKQEAgLTUyMyw4ICs1MjMsOCBA
QCB2b2lkIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OnN0b3BQcm9ncmFtbWF0aWNDYXB0dXJlKCkK
ICAgICAvLyBSZS1lbmFibGUgYnJlYWtwb2ludHMgaWYgdGhleSB3ZXJlIGVuYWJsZWQuCiAgICAg
aWYgKG1fcHJvZ3JhbW1hdGljQ2FwdHVyZVJlc3RvcmVCcmVha3BvaW50QWN0aXZlVmFsdWUpIHsK
ICAgICAgICAgaWYgKEluc3BlY3RvckRlYnVnZ2VyQWdlbnQqIGRlYnVnZ2VyQWdlbnQgPSBtX2lu
c3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yRGVidWdnZXJBZ2VudCgpKSB7Ci0gICAgICAgICAg
ICBFcnJvclN0cmluZyB1bnVzZWQ7Ci0gICAgICAgICAgICBkZWJ1Z2dlckFnZW50LT5zZXRCcmVh
a3BvaW50c0FjdGl2ZSh1bnVzZWQsIHRydWUpOworICAgICAgICAgICAgRXJyb3JTdHJpbmcgaWdu
b3JlZDsKKyAgICAgICAgICAgIGRlYnVnZ2VyQWdlbnQtPnNldEJyZWFrcG9pbnRzQWN0aXZlKGln
bm9yZWQsIHRydWUpOwogICAgICAgICB9CiAgICAgfQogfQpAQCAtNTU5LDI0ICs1NTksMjQgQEAg
dm9pZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50Ojp0b2dnbGVJbnN0cnVtZW50cyhJbnN0cnVtZW50
U3RhdGUgc3RhdGUpCiB2b2lkIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OnRvZ2dsZVNjcmlwdFBy
b2ZpbGVySW5zdHJ1bWVudChJbnN0cnVtZW50U3RhdGUgc3RhdGUpCiB7CiAgICAgaWYgKGF1dG8q
IHNjcmlwdFByb2ZpbGVyQWdlbnQgPSBtX2luc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yU2Ny
aXB0UHJvZmlsZXJBZ2VudCgpKSB7Ci0gICAgICAgIEVycm9yU3RyaW5nIHVudXNlZDsKKyAgICAg
ICAgRXJyb3JTdHJpbmcgaWdub3JlZDsKICAgICAgICAgaWYgKHN0YXRlID09IEluc3RydW1lbnRT
dGF0ZTo6U3RhcnQpIHsKICAgICAgICAgICAgIGNvbnN0IGJvb2wgaW5jbHVkZVNhbXBsZXMgPSB0
cnVlOwotICAgICAgICAgICAgc2NyaXB0UHJvZmlsZXJBZ2VudC0+c3RhcnRUcmFja2luZyh1bnVz
ZWQsICZpbmNsdWRlU2FtcGxlcyk7CisgICAgICAgICAgICBzY3JpcHRQcm9maWxlckFnZW50LT5z
dGFydFRyYWNraW5nKGlnbm9yZWQsICZpbmNsdWRlU2FtcGxlcyk7CiAgICAgICAgIH0gZWxzZQot
ICAgICAgICAgICAgc2NyaXB0UHJvZmlsZXJBZ2VudC0+c3RvcFRyYWNraW5nKHVudXNlZCk7Cisg
ICAgICAgICAgICBzY3JpcHRQcm9maWxlckFnZW50LT5zdG9wVHJhY2tpbmcoaWdub3JlZCk7CiAg
ICAgfQogfQogCiB2b2lkIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OnRvZ2dsZUhlYXBJbnN0cnVt
ZW50KEluc3RydW1lbnRTdGF0ZSBzdGF0ZSkKIHsKICAgICBpZiAoYXV0byogaGVhcEFnZW50ID0g
bV9pbnN0cnVtZW50aW5nQWdlbnRzLnBhZ2VIZWFwQWdlbnQoKSkgewotICAgICAgICBFcnJvclN0
cmluZyB1bnVzZWQ7CisgICAgICAgIEVycm9yU3RyaW5nIGlnbm9yZWQ7CiAgICAgICAgIGlmIChz
dGF0ZSA9PSBJbnN0cnVtZW50U3RhdGU6OlN0YXJ0KSB7CiAgICAgICAgICAgICBpZiAobV9hdXRv
Q2FwdHVyZVBoYXNlID09IEF1dG9DYXB0dXJlUGhhc2U6Ok5vbmUgfHwgbV9hdXRvQ2FwdHVyZVBo
YXNlID09IEF1dG9DYXB0dXJlUGhhc2U6OkZpcnN0TmF2aWdhdGlvbikKLSAgICAgICAgICAgICAg
ICBoZWFwQWdlbnQtPnN0YXJ0VHJhY2tpbmcodW51c2VkKTsKKyAgICAgICAgICAgICAgICBoZWFw
QWdlbnQtPnN0YXJ0VHJhY2tpbmcoaWdub3JlZCk7CiAgICAgICAgIH0gZWxzZQotICAgICAgICAg
ICAgaGVhcEFnZW50LT5zdG9wVHJhY2tpbmcodW51c2VkKTsKKyAgICAgICAgICAgIGhlYXBBZ2Vu
dC0+c3RvcFRyYWNraW5nKGlnbm9yZWQpOwogICAgIH0KIH0KIApAQCAtNTg0LDExICs1ODQsMTEg
QEAgdm9pZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50Ojp0b2dnbGVDUFVJbnN0cnVtZW50KEluc3Ry
dW1lbnRTdGF0ZSBzdGF0ZSkKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfVVNBR0UpCiAgICAgaWYg
KEluc3BlY3RvckNQVVByb2ZpbGVyQWdlbnQqIGNwdVByb2ZpbGVyQWdlbnQgPSBtX2luc3RydW1l
bnRpbmdBZ2VudHMuaW5zcGVjdG9yQ1BVUHJvZmlsZXJBZ2VudCgpKSB7Ci0gICAgICAgIEVycm9y
U3RyaW5nIHVudXNlZDsKKyAgICAgICAgRXJyb3JTdHJpbmcgaWdub3JlZDsKICAgICAgICAgaWYg
KHN0YXRlID09IEluc3RydW1lbnRTdGF0ZTo6U3RhcnQpCi0gICAgICAgICAgICBjcHVQcm9maWxl
ckFnZW50LT5zdGFydFRyYWNraW5nKHVudXNlZCk7CisgICAgICAgICAgICBjcHVQcm9maWxlckFn
ZW50LT5zdGFydFRyYWNraW5nKGlnbm9yZWQpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBj
cHVQcm9maWxlckFnZW50LT5zdG9wVHJhY2tpbmcodW51c2VkKTsKKyAgICAgICAgICAgIGNwdVBy
b2ZpbGVyQWdlbnQtPnN0b3BUcmFja2luZyhpZ25vcmVkKTsKICAgICB9CiAjZWxzZQogICAgIFVO
VVNFRF9QQVJBTShzdGF0ZSk7CkBAIC01OTksMTEgKzU5OSwxMSBAQCB2b2lkIEluc3BlY3RvclRp
bWVsaW5lQWdlbnQ6OnRvZ2dsZU1lbW9yeUluc3RydW1lbnQoSW5zdHJ1bWVudFN0YXRlIHN0YXRl
KQogewogI2lmIEVOQUJMRShSRVNPVVJDRV9VU0FHRSkKICAgICBpZiAoSW5zcGVjdG9yTWVtb3J5
QWdlbnQqIG1lbW9yeUFnZW50ID0gbV9pbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3Rvck1lbW9y
eUFnZW50KCkpIHsKLSAgICAgICAgRXJyb3JTdHJpbmcgdW51c2VkOworICAgICAgICBFcnJvclN0
cmluZyBpZ25vcmVkOwogICAgICAgICBpZiAoc3RhdGUgPT0gSW5zdHJ1bWVudFN0YXRlOjpTdGFy
dCkKLSAgICAgICAgICAgIG1lbW9yeUFnZW50LT5zdGFydFRyYWNraW5nKHVudXNlZCk7CisgICAg
ICAgICAgICBtZW1vcnlBZ2VudC0+c3RhcnRUcmFja2luZyhpZ25vcmVkKTsKICAgICAgICAgZWxz
ZQotICAgICAgICAgICAgbWVtb3J5QWdlbnQtPnN0b3BUcmFja2luZyh1bnVzZWQpOworICAgICAg
ICAgICAgbWVtb3J5QWdlbnQtPnN0b3BUcmFja2luZyhpZ25vcmVkKTsKICAgICB9CiAjZWxzZQog
ICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvYWdlbnRzL0luc3BlY3RvcldvcmtlckFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yV29ya2VyQWdlbnQuY3BwCmluZGV4IDFlMzk4ZWRkMWE5
ZWEzZWYyNmJlMDllYzAzZDZjNmMyY2QzOThkZTguLmExMDQwMGEwNGI3ZmJjMzE5Y2VmOTlkYjBl
YzgwMWJiNmMxNzEwYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2Vu
dHMvSW5zcGVjdG9yV29ya2VyQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvSW5zcGVjdG9yV29ya2VyQWdlbnQuY3BwCkBAIC03OSw3ICs3OSw3IEBAIHZvaWQg
SW5zcGVjdG9yV29ya2VyQWdlbnQ6OmluaXRpYWxpemVkKEVycm9yU3RyaW5nJiBlcnJvclN0cmlu
ZywgY29uc3QgU3RyaW5nJiB3CiB7CiAgICAgV29ya2VySW5zcGVjdG9yUHJveHkqIHByb3h5ID0g
bV9jb25uZWN0ZWRQcm94aWVzLmdldCh3b3JrZXJJZCk7CiAgICAgaWYgKCFwcm94eSkgewotICAg
ICAgICBlcnJvclN0cmluZyA9ICJXb3JrZXIgbm90IGZvdW5kLiJfczsKKyAgICAgICAgZXJyb3JT
dHJpbmcgPSAiTWlzc2luZyB3b3JrZXIgZm9yIGdpdmVuIHdvcmtlcklkIl9zOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCkBAIC04OSwxMyArODksMTMgQEAgdm9pZCBJbnNwZWN0b3JXb3JrZXJB
Z2VudDo6aW5pdGlhbGl6ZWQoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcm
IHcKIHZvaWQgSW5zcGVjdG9yV29ya2VyQWdlbnQ6OnNlbmRNZXNzYWdlVG9Xb3JrZXIoRXJyb3JT
dHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIHdvcmtlcklkLCBjb25zdCBTdHJpbmcm
IG1lc3NhZ2UpCiB7CiAgICAgaWYgKCFtX2VuYWJsZWQpIHsKLSAgICAgICAgZXJyb3JTdHJpbmcg
PSAiV29ya2VyIGluc3BlY3Rpb24gbXVzdCBiZSBlbmFibGVkLiJfczsKKyAgICAgICAgZXJyb3JT
dHJpbmcgPSAiV29ya2VyIGRvbWFpbiBtdXN0IGJlIGVuYWJsZWQiX3M7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKICAgICBXb3JrZXJJbnNwZWN0b3JQcm94eSogcHJveHkgPSBtX2Nvbm5lY3Rl
ZFByb3hpZXMuZ2V0KHdvcmtlcklkKTsKICAgICBpZiAoIXByb3h5KSB7Ci0gICAgICAgIGVycm9y
U3RyaW5nID0gIldvcmtlciBub3QgZm91bmQuIl9zOworICAgICAgICBlcnJvclN0cmluZyA9ICJN
aXNzaW5nIHdvcmtlciBmb3IgZ2l2ZW4gd29ya2VySWQiX3M7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvcGFnZS9Q
YWdlQXVkaXRBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3BhZ2Uv
UGFnZUF1ZGl0QWdlbnQuY3BwCmluZGV4IDVlNTAyZjZiZjhhNjNiMzkzMzNlZWE3NGM4ZDgwZmEw
NjlhZWNjNGQuLjk0ZjdhZTEzN2NiODkyMzU3YTgxNjEwYWZhYTBiNzNmNDdjOTU5ZjUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdlQXVkaXRBZ2Vu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9wYWdlL1BhZ2VBdWRp
dEFnZW50LmNwcApAQCAtNjgsOSArNjgsOSBAQCBJbmplY3RlZFNjcmlwdCBQYWdlQXVkaXRBZ2Vu
dDo6aW5qZWN0ZWRTY3JpcHRGb3JFdmFsKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgYwogICAg
IEluamVjdGVkU2NyaXB0IGluamVjdGVkU2NyaXB0ID0gaW5qZWN0ZWRTY3JpcHRGb3JFdmFsKGV4
ZWN1dGlvbkNvbnRleHRJZCk7CiAgICAgaWYgKGluamVjdGVkU2NyaXB0Lmhhc05vVmFsdWUoKSkg
ewogICAgICAgICBpZiAoZXhlY3V0aW9uQ29udGV4dElkKQotICAgICAgICAgICAgZXJyb3JTdHJp
bmcgPSAiRXhlY3V0aW9uIGNvbnRleHQgd2l0aCBnaXZlbiBpZCBub3QgZm91bmQuIl9zOworICAg
ICAgICAgICAgZXJyb3JTdHJpbmcgPSAiTWlzc2luZyBpbmplY3RlZCBzY3JpcHQgZm9yIGdpdmVu
IGV4ZWN1dGlvbkNvbnRleHRJZCJfczsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgZXJyb3JT
dHJpbmcgPSAiSW50ZXJuYWwgZXJyb3I6IG1haW4gd29ybGQgZXhlY3V0aW9uIGNvbnRleHQgbm90
IGZvdW5kLiJfczsKKyAgICAgICAgICAgIGVycm9yU3RyaW5nID0gIkludGVybmFsIGVycm9yOiBt
YWluIHdvcmxkIGV4ZWN1dGlvbiBjb250ZXh0IG5vdCBmb3VuZCJfczsKICAgICB9CiAgICAgcmV0
dXJuIGluamVjdGVkU2NyaXB0OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2FnZW50cy9wYWdlL1BhZ2VDb25zb2xlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2FnZW50cy9wYWdlL1BhZ2VDb25zb2xlQWdlbnQuY3BwCmluZGV4IDZlZWVjMGFjYzQy
YzFkYTQwMTRiYjdlNDM2ZTA5YThlNDhkMDMyNTYuLjc3ZjNkMmMxZmUyZmM5YWI4NDFiOGY1OTRm
NDY3OTBjN2I4OTM3ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2Vu
dHMvcGFnZS9QYWdlQ29uc29sZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvYWdlbnRzL3BhZ2UvUGFnZUNvbnNvbGVBZ2VudC5jcHAKQEAgLTEyMCw3ICsxMjAsNyBAQCB2
b2lkIFBhZ2VDb25zb2xlQWdlbnQ6OnNldExvZ2dpbmdDaGFubmVsTGV2ZWwoRXJyb3JTdHJpbmcm
IGVycm9yU3RyaW5nLCBjb25zdCBTdAogewogICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGNoYW5u
ZWxDb25maWd1cmF0aW9uRm9yU3RyaW5nKGNoYW5uZWxMZXZlbCk7CiAgICAgaWYgKCFjb25maWd1
cmF0aW9uKSB7Ci0gICAgICAgIGVycm9yU3RyaW5nID0gIkludmFsaWQgbG9nZ2luZyBsZXZlbCJf
czsKKyAgICAgICAgZXJyb3JTdHJpbmcgPSBtYWtlU3RyaW5nKCJVbmtub3duIGNoYW5uZWxMZXZl
bDogIl9zLCBjaGFubmVsTGV2ZWwpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZURlYnVnZ2VyQWdl
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9wYWdlL1BhZ2VEZWJ1Z2dl
ckFnZW50LmNwcAppbmRleCBiMzg4NWZiNThjYmFhZTNiYWUwNzI1ZjY3MTRmYmY3YWI5NmZmZjNk
Li44YmNmODViMjcxMWY4NWI5ZDc2NDI0YjM4MTFlYjVjYTY3YTFjYmYxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZURlYnVnZ2VyQWdlbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdlRGVidWdnZXJB
Z2VudC5jcHAKQEAgLTE1Miw3ICsxNTIsNyBAQCBJbmplY3RlZFNjcmlwdCBQYWdlRGVidWdnZXJB
Z2VudDo6aW5qZWN0ZWRTY3JpcHRGb3JFdmFsKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZwogCiAg
ICAgSW5qZWN0ZWRTY3JpcHQgaW5qZWN0ZWRTY3JpcHQgPSBpbmplY3RlZFNjcmlwdE1hbmFnZXIo
KS5pbmplY3RlZFNjcmlwdEZvcklkKCpleGVjdXRpb25Db250ZXh0SWQpOwogICAgIGlmIChpbmpl
Y3RlZFNjcmlwdC5oYXNOb1ZhbHVlKCkpCi0gICAgICAgIGVycm9yU3RyaW5nID0gIkV4ZWN1dGlv
biBjb250ZXh0IHdpdGggZ2l2ZW4gaWQgbm90IGZvdW5kLiJfczsKKyAgICAgICAgZXJyb3JTdHJp
bmcgPSAiTWlzc2luZyBpbmplY3RlZCBzY3JpcHQgZm9yIGdpdmVuIGV4ZWN1dGlvbkNvbnRleHRJ
ZC4iX3M7CiAKICAgICByZXR1cm4gaW5qZWN0ZWRTY3JpcHQ7CiB9CkBAIC0xNjYsOCArMTY2LDkg
QEAgdm9pZCBQYWdlRGVidWdnZXJBZ2VudDo6bWFpbkZyYW1lU3RhcnRlZExvYWRpbmcoKQogewog
ICAgIGlmIChpc1BhdXNlZCgpKSB7CiAgICAgICAgIHNldFN1cHByZXNzQWxsUGF1c2VzKHRydWUp
OwotICAgICAgICBFcnJvclN0cmluZyB1bnVzZWQ7Ci0gICAgICAgIHJlc3VtZSh1bnVzZWQpOwor
CisgICAgICAgIEVycm9yU3RyaW5nIGlnbm9yZWQ7CisgICAgICAgIHJlc3VtZShpZ25vcmVkKTsK
ICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMv
cGFnZS9QYWdlTmV0d29ya0FnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2Vu
dHMvcGFnZS9QYWdlTmV0d29ya0FnZW50LmNwcAppbmRleCBjYzhjZDQxY2RmOGJiNGY5NzBkM2Vj
NTZjMGNjNmVlOTNmY2M5NWZiLi40NGYyZGMwZjNjZWQzNWIyYjc5OTkyNGYxN2QyYmMxYzQxYmUw
ZTc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFn
ZU5ldHdvcmtBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9w
YWdlL1BhZ2VOZXR3b3JrQWdlbnQuY3BwCkBAIC0xMTIsNyArMTEyLDcgQEAgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogUGFnZU5ldHdvcmtBZ2VudDo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dChFcnJv
clN0cmluZyYgZXIKIAogICAgIGF1dG8qIGRvY3VtZW50ID0gZnJhbWUtPmRvY3VtZW50KCk7CiAg
ICAgaWYgKCFkb2N1bWVudCkgewotICAgICAgICBlcnJvclN0cmluZyA9ICJObyBEb2N1bWVudCBp
bnN0YW5jZSBmb3IgdGhlIHNwZWNpZmllZCBmcmFtZSJfczsKKyAgICAgICAgZXJyb3JTdHJpbmcg
PSAiTWlzc2luZyBmcmFtZSBvZiBkb2N1ZW1udCBmb3IgZ2l2ZW4gZnJhbWVJZCJfczsKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZVJ1bnRpbWVBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZVJ1bnRpbWVBZ2VudC5jcHAKaW5kZXggMjg0ZDI4
Njg1Y2Q5YTEyZTg1MGFkZmU0ZGJmMmYyNzE2MzQ3MDk4Mi4uOTg4MzU4ZmY0ZjY1ODVlMmEwMWZh
ODZkY2JkYjkwNjRiMjI2MTljMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2FnZW50cy9wYWdlL1BhZ2VSdW50aW1lQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdlUnVudGltZUFnZW50LmNwcApAQCAtMTAwLDEzICsxMDAs
MTMgQEAgSW5qZWN0ZWRTY3JpcHQgUGFnZVJ1bnRpbWVBZ2VudDo6aW5qZWN0ZWRTY3JpcHRGb3JF
dmFsKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywKICAgICAgICAgSlNDOjpFeGVjU3RhdGUqIHNj
cmlwdFN0YXRlID0gbWFpbldvcmxkRXhlY1N0YXRlKCZtX2luc3BlY3RlZFBhZ2UubWFpbkZyYW1l
KCkpOwogICAgICAgICBJbmplY3RlZFNjcmlwdCByZXN1bHQgPSBpbmplY3RlZFNjcmlwdE1hbmFn
ZXIoKS5pbmplY3RlZFNjcmlwdEZvcihzY3JpcHRTdGF0ZSk7CiAgICAgICAgIGlmIChyZXN1bHQu
aGFzTm9WYWx1ZSgpKQotICAgICAgICAgICAgZXJyb3JTdHJpbmcgPSAiSW50ZXJuYWwgZXJyb3I6
IG1haW4gd29ybGQgZXhlY3V0aW9uIGNvbnRleHQgbm90IGZvdW5kLiJfczsKKyAgICAgICAgICAg
IGVycm9yU3RyaW5nID0gIkludGVybmFsIGVycm9yOiBtYWluIHdvcmxkIGV4ZWN1dGlvbiBjb250
ZXh0IG5vdCBmb3VuZCJfczsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKICAgICBJ
bmplY3RlZFNjcmlwdCBpbmplY3RlZFNjcmlwdCA9IGluamVjdGVkU2NyaXB0TWFuYWdlcigpLmlu
amVjdGVkU2NyaXB0Rm9ySWQoKmV4ZWN1dGlvbkNvbnRleHRJZCk7CiAgICAgaWYgKGluamVjdGVk
U2NyaXB0Lmhhc05vVmFsdWUoKSkKLSAgICAgICAgZXJyb3JTdHJpbmcgPSAiRXhlY3V0aW9uIGNv
bnRleHQgd2l0aCBnaXZlbiBpZCBub3QgZm91bmQuIl9zOworICAgICAgICBlcnJvclN0cmluZyA9
ICJNaXNzaW5nIGluamVjdGVkIHNjcmlwdCBmb3IgZ2l2ZW4gZXhlY3V0aW9uQ29udGV4dElkIl9z
OwogICAgIHJldHVybiBpbmplY3RlZFNjcmlwdDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2VyQXVkaXRBZ2VudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJBdWRpdEFnZW50LmNwcApp
bmRleCA5MTUwNGEwZTRmZWJkMmZlZTQ1YjBmMTY4YzYzNDVmMzhiMzllMmUyLi43ZGVjMGNiOTBj
ZWZkNTczODI0MzExOGE0YjVkMDQxNmJhZTFlYjZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJBdWRpdEFnZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJBdWRpdEFnZW50LmNwcApA
QCAtNDksNyArNDksNyBAQCBXb3JrZXJBdWRpdEFnZW50OjpXb3JrZXJBdWRpdEFnZW50KFdvcmtl
ckFnZW50Q29udGV4dCYgY29udGV4dCkKIEluamVjdGVkU2NyaXB0IFdvcmtlckF1ZGl0QWdlbnQ6
OmluamVjdGVkU2NyaXB0Rm9yRXZhbChFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IGlu
dCogZXhlY3V0aW9uQ29udGV4dElkKQogewogICAgIGlmIChleGVjdXRpb25Db250ZXh0SWQpIHsK
LSAgICAgICAgZXJyb3JTdHJpbmcgPSAiRXhlY3V0aW9uIGNvbnRleHQgaWQgaXMgbm90IHN1cHBv
cnRlZCBmb3Igd29ya2VycyBhcyB0aGVyZSBpcyBvbmx5IG9uZSBleGVjdXRpb24gY29udGV4dC4i
X3M7CisgICAgICAgIGVycm9yU3RyaW5nID0gImV4ZWN1dGlvbkNvbnRleHRJZCBpcyBub3Qgc3Vw
cG9ydGVkIGZvciB3b3JrZXJzIGFzIHRoZXJlIGlzIG9ubHkgb25lIGV4ZWN1dGlvbiBjb250ZXh0
Il9zOwogICAgICAgICByZXR1cm4gSW5qZWN0ZWRTY3JpcHQoKTsKICAgICB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlckRlYnVnZ2Vy
QWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2Vy
RGVidWdnZXJBZ2VudC5jcHAKaW5kZXggODA4MmVlMzFlZWM2MGEyZjYwMzI5ZGJhYmQ0ZDk4NDJm
NmE1NWZmYS4uMDdiZmM2MjQ2OGJkOGFlOGIwZGE5ODUxMmEyODVmYWI5NDhkZmU2NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2VyRGVidWdn
ZXJBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy93b3JrZXIv
V29ya2VyRGVidWdnZXJBZ2VudC5jcHAKQEAgLTU2LDcgKzU2LDcgQEAgdm9pZCBXb3JrZXJEZWJ1
Z2dlckFnZW50OjpicmVha3BvaW50QWN0aW9uTG9nKEV4ZWNTdGF0ZSYgc3RhdGUsIGNvbnN0IFN0
cmluZyYgbWUKIEluamVjdGVkU2NyaXB0IFdvcmtlckRlYnVnZ2VyQWdlbnQ6OmluamVjdGVkU2Ny
aXB0Rm9yRXZhbChFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IGludCogZXhlY3V0aW9u
Q29udGV4dElkKQogewogICAgIGlmIChleGVjdXRpb25Db250ZXh0SWQpIHsKLSAgICAgICAgZXJy
b3JTdHJpbmcgPSAiRXhlY3V0aW9uIGNvbnRleHQgaWQgaXMgbm90IHN1cHBvcnRlZCBmb3Igd29y
a2VycyBhcyB0aGVyZSBpcyBvbmx5IG9uZSBleGVjdXRpb24gY29udGV4dC4iX3M7CisgICAgICAg
IGVycm9yU3RyaW5nID0gImV4ZWN1dGlvbkNvbnRleHRJZCBpcyBub3Qgc3VwcG9ydGVkIGZvciB3
b3JrZXJzIGFzIHRoZXJlIGlzIG9ubHkgb25lIGV4ZWN1dGlvbiBjb250ZXh0Il9zOwogICAgICAg
ICByZXR1cm4gSW5qZWN0ZWRTY3JpcHQoKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlclJ1bnRpbWVBZ2VudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJSdW50aW1lQWdlbnQu
Y3BwCmluZGV4IDFiMGY3ZDA5MmJjYTFmNTE5NDM1ZDgzMDM0Y2I3NjMyOTdhY2Y3ZDcuLjQ1YTdj
ZTBiYzYwMmIzOGEwYjJmMzhiZTFmNzc3NGNlOTdmNDE4ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlclJ1bnRpbWVBZ2VudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2VyUnVudGltZUFn
ZW50LmNwcApAQCAtNTIsNyArNTIsNyBAQCBXb3JrZXJSdW50aW1lQWdlbnQ6OldvcmtlclJ1bnRp
bWVBZ2VudChXb3JrZXJBZ2VudENvbnRleHQmIGNvbnRleHQpCiBJbmplY3RlZFNjcmlwdCBXb3Jr
ZXJSdW50aW1lQWdlbnQ6OmluamVjdGVkU2NyaXB0Rm9yRXZhbChFcnJvclN0cmluZyYgZXJyb3JT
dHJpbmcsIGNvbnN0IGludCogZXhlY3V0aW9uQ29udGV4dElkKQogewogICAgIGlmIChleGVjdXRp
b25Db250ZXh0SWQpIHsKLSAgICAgICAgZXJyb3JTdHJpbmcgPSAiRXhlY3V0aW9uIGNvbnRleHQg
aWQgaXMgbm90IHN1cHBvcnRlZCBmb3Igd29ya2VycyBhcyB0aGVyZSBpcyBvbmx5IG9uZSBleGVj
dXRpb24gY29udGV4dC4iX3M7CisgICAgICAgIGVycm9yU3RyaW5nID0gImV4ZWN1dGlvbkNvbnRl
eHRJZCBpcyBub3Qgc3VwcG9ydGVkIGZvciB3b3JrZXJzIGFzIHRoZXJlIGlzIG9ubHkgb25lIGV4
ZWN1dGlvbiBjb250ZXh0Il9zOwogICAgICAgICByZXR1cm4gSW5qZWN0ZWRTY3JpcHQoKTsKICAg
ICB9CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0No
YW5nZUxvZwppbmRleCAyNWQ2NDFmYjZhMGU0ZjJjNzYxMzIxNjBjMmZhNjE5MGExNzJjYTQ2Li5h
ODJkYWIzNzIyNWExNjhiY2M3MmJjNDdkN2NkYzBkYTQzYmUyMzc1IDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MzkgQEAKKzIwMTktMDgtMjYgIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29tPgorCisg
ICAgICAgIFdlYiBJbnNwZWN0b3I6IHVuaWZ5IGFnZW50IGNvbW1hbmQgZXJyb3IgbWVzc2FnZXMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMDk1MAor
CisgICAgICAgIFJldmlld2VkIGJ5IEpvc2VwaCBQZWNvcmFyby4KKworICAgICAgICAqIGh0dHAv
dGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvZ2V0U2VyaWFsaXplZENlcnRpZmljYXRlLWV4cGVjdGVk
LnR4dDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2luc3BlY3Rv
ci9yZXNvbHZlV2ViU29ja2V0LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBpbnNwZWN0b3IvYXVk
aXQvc2V0dXAtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGluc3BlY3Rvci9hdWRpdC90ZWFyZG93
bi1leHBlY3RlZC50eHQ6CisgICAgICAgICogaW5zcGVjdG9yL2NhbnZhcy9jc3MtY2FudmFzLWNs
aWVudHMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGluc3BlY3Rvci9jYW52YXMvcmVjb3JkaW5n
LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBpbnNwZWN0b3IvY2FudmFzL3JlcXVlc3RDb250ZW50
LTJkLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBpbnNwZWN0b3IvY2FudmFzL3JlcXVlc3ROb2Rl
LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBpbnNwZWN0b3IvY2FudmFzL3JlcXVlc3RTaGFkZXJT
b3VyY2UtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGluc3BlY3Rvci9jYW52YXMvcmVzb2x2ZUNh
bnZhc0NvbnRleHQtMmQtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGluc3BlY3Rvci9jYW52YXMv
c2V0U2hhZGVyUHJvZ3JhbURpc2FibGVkLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBpbnNwZWN0
b3IvY2FudmFzL3NldFNoYWRlclByb2dyYW1IaWdobGlnaHRlZC1leHBlY3RlZC50eHQ6CisgICAg
ICAgICogaW5zcGVjdG9yL2NhbnZhcy91cGRhdGVTaGFkZXItZXhwZWN0ZWQudHh0OgorICAgICAg
ICAqIGluc3BlY3Rvci9jb25zb2xlL3dlYmNvcmUtbG9nZ2luZy1leHBlY3RlZC50eHQ6CisgICAg
ICAgICogaW5zcGVjdG9yL2Nzcy9hZGQtcnVsZS1leHBlY3RlZC50eHQ6CisgICAgICAgICogaW5z
cGVjdG9yL2RlYnVnZ2VyL2NvbnRpbnVlVW50aWxOZXh0UnVuTG9vcC1leHBlY3RlZC50eHQ6Cisg
ICAgICAgICogaW5zcGVjdG9yL2RlYnVnZ2VyL2V2YWx1YXRlT25DYWxsRnJhbWUtZXJyb3JzLWV4
cGVjdGVkLnR4dDoKKyAgICAgICAgKiBpbnNwZWN0b3IvZGVidWdnZXIvc2V0QnJlYWtwb2ludC1l
eHBlY3RlZC50eHQ6CisgICAgICAgICogaW5zcGVjdG9yL2RvbS1kZWJ1Z2dlci9kb20tYnJlYWtw
b2ludHMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGluc3BlY3Rvci9kb20vYnJlYWtwb2ludC1m
b3ItZXZlbnQtbGlzdGVuZXItZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGluc3BlY3Rvci9kb20v
aGlnaGxpZ2h0UXVhZC1leHBlY3RlZC50eHQ6CisgICAgICAgICogaW5zcGVjdG9yL2RvbS9pbnNl
cnRBZGphY2VudEhUTUwtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGluc3BlY3Rvci9kb20vcmVx
dWVzdC1jaGlsZC1ub2Rlcy1kZXB0aC1leHBlY3RlZC50eHQ6CisgICAgICAgICogaW5zcGVjdG9y
L2RvbS9zZXRFdmVudExpc3RlbmVyRGlzYWJsZWQtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGlu
c3BlY3Rvci9wcm90b2NvbC9iYWNrZW5kLWRpc3BhdGNoZXItYXJndW1lbnQtZXJyb3JzLWV4cGVj
dGVkLnR4dDoKKyAgICAgICAgKiBpbnNwZWN0b3IvcnVudGltZS9hd2FpdFByb21pc2UtZXhwZWN0
ZWQudHh0OgorICAgICAgICAqIGluc3BlY3Rvci9ydW50aW1lL2dldFByZXZpZXctZXhwZWN0ZWQu
dHh0OgorICAgICAgICAqIGluc3BlY3Rvci90aW1lbGluZS9zZXRJbnN0cnVtZW50cy1lcnJvcnMt
ZXhwZWN0ZWQudHh0OgorCiAyMDE5LTA4LTI2ICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFwcGxl
LmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCBmaXggdGVzdCBmYWlsdXJlIGFmdGVyIHIyMDA5
NzEKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsv
Z2V0U2VyaWFsaXplZENlcnRpZmljYXRlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvZ2V0U2VyaWFsaXplZENlcnRpZmljYXRlLWV4cGVjdGVk
LnR4dAppbmRleCBjOWM2NmRlNzEzZWFhOTk2YWJjYmU2ZTgzNjQxY2Q2ODgxNTQzYWJhLi5mMjE1
MDZjOGI0ZTVmZjA3YjExZDgyM2YxYjYwNTZmNjNiMTQwNDU4IDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2dldFNlcmlhbGl6ZWRDZXJ0aWZpY2F0
ZS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0
d29yay9nZXRTZXJpYWxpemVkQ2VydGlmaWNhdGUtZXhwZWN0ZWQudHh0CkBAIC00LDEyICs0LDEy
IEBAIFRlc3RzIHRoYXQgdGhlIE5ldHdvcmtBZ2VudCBpcyBhYmxlIHRvIGdldCBhIHNlcmlhbGl6
ZWQgY2VydGlmaWNhdGUgZm9yIGEgZ2l2ZW4KID09IFJ1bm5pbmcgdGVzdCBzdWl0ZTogTmV0d29y
ay5nZXRTZXJpYWxpemVkQ2VydGlmaWNhdGUKIC0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBOZXR3b3Jr
LmdldFNlcmlhbGl6ZWRDZXJ0aWZpY2F0ZS5IVFRQCiBQQVNTOiBTaG91bGQgcHJvZHVjZSBhbiBl
eGNlcHRpb24uCi1FcnJvcjogTm8gY2VydGlmaWNhdGUgZm9yIHJlc291cmNlCitFcnJvcjogTWlz
c2luZyBjZXJ0aWZpY2F0ZSBvZiByZXNvdXJjZSBmb3IgZ2l2ZW4gcmVxdWVzdElkCiAKIC0tIFJ1
bm5pbmcgdGVzdCBjYXNlOiBOZXR3b3JrLmdldFNlcmlhbGl6ZWRDZXJ0aWZpY2F0ZS5IVFRQUwog
UEFTUzogUmVxdWVzdCBzaG91bGQgaGF2ZSBzZXJpYWxpemFibGUgY2VydGlmaWNhdGUuCiAKIC0t
IFJ1bm5pbmcgdGVzdCBjYXNlOiBOZXR3b3JrLmdldFNlcmlhbGl6ZWRDZXJ0aWZpY2F0ZS5JbnZh
bGlkCiBQQVNTOiBTaG91bGQgcHJvZHVjZSBhbiBleGNlcHRpb24uCi1FcnJvcjogTm8gcmVzb3Vy
Y2Ugd2l0aCBnaXZlbiBpZGVudGlmaWVyIGZvdW5kCitFcnJvcjogTWlzc2luZyByZXNvdXJjZSBm
b3IgZ2l2ZW4gcmVxdWVzdElkCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
d2Vic29ja2V0L3Rlc3RzL2h5YmkvaW5zcGVjdG9yL3Jlc29sdmVXZWJTb2NrZXQtZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9pbnNwZWN0
b3IvcmVzb2x2ZVdlYlNvY2tldC1leHBlY3RlZC50eHQKaW5kZXggMDExNWRjMDdhNDU3ZjhkMmY3
Y2Q4ZDEzZTI2ZjAzYzY1MmFhMmY2ZS4uZDdhM2VmM2JjOGYyNjU2ZDQ5MGNkOWNjZGMyNjVkMDg4
MzVkYmYxYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVz
dHMvaHliaS9pbnNwZWN0b3IvcmVzb2x2ZVdlYlNvY2tldC1leHBlY3RlZC50eHQKKysrIGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9pbnNwZWN0b3IvcmVzb2x2
ZVdlYlNvY2tldC1leHBlY3RlZC50eHQKQEAgLTksNSArOSw1IEBAIFBBU1M6IFBheWxvYWQgc2hv
dWxkIGhhdmUgZGVzY3JpcHRpb24gIldlYlNvY2tldCIuCiAKIC0tIFJ1bm5pbmcgdGVzdCBjYXNl
OiBOZXR3b3JrLnJlc29sdmVXZWJTb2NrZXQuaW52YWxpZFJlcXVlc3RJZGVudGlmaWVyCiBQQVNT
OiBTaG91bGQgcHJvZHVjZSBhbiBlcnJvci4KLUVycm9yOiBXZWJTb2NrZXQgbm90IGZvdW5kCitF
cnJvcjogTWlzc2luZyB3ZWIgc29ja2V0IGZvciBnaXZlbiByZXF1ZXN0SWQKIApkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2F1ZGl0L3NldHVwLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL2luc3BlY3Rvci9hdWRpdC9zZXR1cC1leHBlY3RlZC50eHQKaW5kZXggZDcyNThhOWI4
ZGIyZmExMTFlZjJhYWVmYTczODk5ZjgwNjY0N2M5OS4uOTc1MTQyZDljZTViNzc2YTBkZDA1MWIz
YTA5NmUyMGM0OWViOWEwNiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2F1ZGl0
L3NldHVwLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvYXVkaXQvc2V0
dXAtZXhwZWN0ZWQudHh0CkBAIC02LDYgKzYsNiBAQCBUZXN0cyBmb3IgdGhlIEF1ZGl0LnNldHVw
IGNvbW1hbmQuCiBBdWRpdCBzZXR1cC4uLgogQXVkaXQgc2V0dXAuLi4KIFBBU1M6IFNob3VsZCBw
cm9kdWNlIGFuIGV4Y2VwdGlvbi4KLUVycm9yOiBNdXN0IGNhbGwgdGVhcmRvd24gYmVmb3JlIGNh
bGxpbmcgc2V0dXAgYWdhaW4uCitFcnJvcjogTXVzdCBjYWxsIHRlYXJkb3duIGJlZm9yZSBjYWxs
aW5nIHNldHVwIGFnYWluCiBBdWRpdCB0ZWFyZG93bi4uLgogCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbnNwZWN0b3IvYXVkaXQvdGVhcmRvd24tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL2F1ZGl0L3RlYXJkb3duLWV4cGVjdGVkLnR4dAppbmRleCBmOTEwMjQ5YjMwODdk
YzZmZTBhMDZmMzI5MGQ4OGZiNDAwMzFlMTJjLi5kYTRlZjY0Y2ZlMjFlYTQwZTM2ODY4ZjgxZTE5
MzY3ZWRmY2I3Yzg5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvYXVkaXQvdGVh
cmRvd24tZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9hdWRpdC90ZWFy
ZG93bi1leHBlY3RlZC50eHQKQEAgLTUsMTIgKzUsMTIgQEAgVGVzdHMgZm9yIHRoZSBBdWRpdC50
ZWFyZG93biBjb21tYW5kLgogLS0gUnVubmluZyB0ZXN0IGNhc2U6IEF1ZGl0LnRlYXJkb3duLklu
dmFsaWQuV2l0aG91dFNldHVwCiBBdWRpdCB0ZWFyZG93bi4uLgogUEFTUzogU2hvdWxkIHByb2R1
Y2UgYW4gZXhjZXB0aW9uLgotRXJyb3I6IE11c3QgY2FsbCBzZXR1cCBiZWZvcmUgY2FsbGluZyB0
ZWFyZG93bi4KK0Vycm9yOiBNdXN0IGNhbGwgc2V0dXAgYmVmb3JlIGNhbGxpbmcgdGVhcmRvd24K
IAogLS0gUnVubmluZyB0ZXN0IGNhc2U6IEF1ZGl0LnRlYXJkb3duLkludmFsaWQuU2VxdWVudGlh
bENhbGxzCiBBdWRpdCBzZXR1cC4uLgogQXVkaXQgdGVhcmRvd24uLi4KIEF1ZGl0IHRlYXJkb3du
Li4uCiBQQVNTOiBTaG91bGQgcHJvZHVjZSBhbiBleGNlcHRpb24uCi1FcnJvcjogTXVzdCBjYWxs
IHNldHVwIGJlZm9yZSBjYWxsaW5nIHRlYXJkb3duLgorRXJyb3I6IE11c3QgY2FsbCBzZXR1cCBi
ZWZvcmUgY2FsbGluZyB0ZWFyZG93bgogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0
b3IvY2FudmFzL2Nzcy1jYW52YXMtY2xpZW50cy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9p
bnNwZWN0b3IvY2FudmFzL2Nzcy1jYW52YXMtY2xpZW50cy1leHBlY3RlZC50eHQKaW5kZXggOWFl
YjNmZGM2OTQ3NGU4MTY1ODExMjA5YjIzNDFiNmIxYjgyM2Y1Yi4uYzYwZWFjMzhkYjM3OTI1MDAz
NDQ4MjNkMjZmYjQzZThiY2QxNzYyMyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9y
L2NhbnZhcy9jc3MtY2FudmFzLWNsaWVudHMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3Rz
L2luc3BlY3Rvci9jYW52YXMvY3NzLWNhbnZhcy1jbGllbnRzLWV4cGVjdGVkLnR4dApAQCAtMTgs
NSArMTgsNSBAQCBQQVNTOiBUaGVyZSBzaG91bGQgYmUgbm8gY2xpZW50IG5vZGVzLgogCiAtLSBS
dW5uaW5nIHRlc3QgY2FzZTogQ2FudmFzLkNTU0NhbnZhc0NsaWVudHMuSW52YWxpZENhbnZhc0lk
CiBQQVNTOiBTaG91bGQgcHJvZHVjZSBhbiBlcnJvci4KLUVycm9yOiBObyBjYW52YXMgZm9yIGdp
dmVuIGlkZW50aWZpZXIuCitFcnJvcjogTWlzc2luZyBjYW52YXMgZm9yIGdpdmVuIGNhbnZhc0lk
CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9jYW52YXMvcmVjb3JkaW5nLWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9jYW52YXMvcmVjb3JkaW5nLWV4cGVj
dGVkLnR4dAppbmRleCA4MTQzMWY3OTk1MzUwZTlhMjhkNDkzZDlhMzY3ZTdhYmFmMGM0ZjZiLi5l
OGVmZTliNjI1MTllMTNiNWUzYzUzYmQ5ZDk5OThmNzBmMDY3YzY3IDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9pbnNwZWN0b3IvY2FudmFzL3JlY29yZGluZy1leHBlY3RlZC50eHQKKysrIGIvTGF5
b3V0VGVzdHMvaW5zcGVjdG9yL2NhbnZhcy9yZWNvcmRpbmctZXhwZWN0ZWQudHh0CkBAIC0yNiw5
ICsyNiw5IEBAIFBBU1M6IEEgcmVjb3JkaW5nIHNob3VsZCBoYXZlIGJlZW4gc3RhcnRlZCBhbmQg
c3RvcHBlZCB0d2ljZS4KIAogLS0gUnVubmluZyB0ZXN0IGNhc2U6IENhbnZhcy5zdGFydFJlY29y
ZGluZy5JbnZhbGlkQ2FudmFzSWQKIFBBU1M6IFNob3VsZCBwcm9kdWNlIGFuIGVycm9yLgotRXJy
b3I6IE5vIGNhbnZhcyBmb3IgZ2l2ZW4gaWRlbnRpZmllci4KK0Vycm9yOiBNaXNzaW5nIGNhbnZh
cyBmb3IgZ2l2ZW4gY2FudmFzSWQKIAogLS0gUnVubmluZyB0ZXN0IGNhc2U6IENhbnZhcy5zdG9w
UmVjb3JkaW5nLkludmFsaWRDYW52YXNJZAogUEFTUzogU2hvdWxkIHByb2R1Y2UgYW4gZXJyb3Iu
Ci1FcnJvcjogTm8gY2FudmFzIGZvciBnaXZlbiBpZGVudGlmaWVyLgorRXJyb3I6IE1pc3Npbmcg
Y2FudmFzIGZvciBnaXZlbiBjYW52YXNJZAogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNw
ZWN0b3IvY2FudmFzL3JlcXVlc3RDb250ZW50LTJkLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L2luc3BlY3Rvci9jYW52YXMvcmVxdWVzdENvbnRlbnQtMmQtZXhwZWN0ZWQudHh0CmluZGV4IDM1
NGI3YjY3ZDM4NGRjMjA5Yzk0MzZmZmY0NzYyOGQ5MzgzNzBmOWQuLjRhMjkzOGE2ZDg2YjdhMzRm
MGNkNTNiZTc1OGMzOTQ2OWQ0ZDkzNTkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rv
ci9jYW52YXMvcmVxdWVzdENvbnRlbnQtMmQtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3Rz
L2luc3BlY3Rvci9jYW52YXMvcmVxdWVzdENvbnRlbnQtMmQtZXhwZWN0ZWQudHh0CkBAIC03LDUg
KzcsNSBAQCBQQVNTOiBDb250ZW50IHNob3VsZCBub3QgYmUgZW1wdHkuCiAKIC0tIFJ1bm5pbmcg
dGVzdCBjYXNlOiBDYW52YXMucmVxdWVzdENvbnRlbnQuaW52YWxpZENhbnZhc0lkCiBQQVNTOiBT
aG91bGQgcHJvZHVjZSBhbiBlcnJvci4KLUVycm9yOiBObyBjYW52YXMgZm9yIGdpdmVuIGlkZW50
aWZpZXIuCitFcnJvcjogTWlzc2luZyBjYW52YXMgZm9yIGdpdmVuIGNhbnZhc0lkCiAKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9jYW52YXMvcmVxdWVzdE5vZGUtZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2NhbnZhcy9yZXF1ZXN0Tm9kZS1leHBlY3RlZC50
eHQKaW5kZXggYjdjZGVlOGI4ZTc5NzRlOTZiZTE3YjZlOTVhNzY3MzMyNDliYjQ0OC4uY2JmZmNi
ODdjM2MzOWI4YmI2YzkxZWFhYTQ1YjBlZmY0M2IyYjE1MiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvaW5zcGVjdG9yL2NhbnZhcy9yZXF1ZXN0Tm9kZS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0
VGVzdHMvaW5zcGVjdG9yL2NhbnZhcy9yZXF1ZXN0Tm9kZS1leHBlY3RlZC50eHQKQEAgLTEyLDUg
KzEyLDUgQEAgUEFTUzogQ2FudmFzICJDYW52YXMgMiIgaGFzIG5vZGUgd2l0aCB0eXBlICJDQU5W
QVMiLgogCiAtLSBSdW5uaW5nIHRlc3QgY2FzZTogQ2FudmFzLnJlcXVlc3ROb2RlLmludmFsaWRD
YW52YXNJZAogUEFTUzogU2hvdWxkIHByb2R1Y2UgYW4gZXJyb3IuCi1FcnJvcjogTm8gY2FudmFz
IGZvciBnaXZlbiBpZGVudGlmaWVyLgorRXJyb3I6IE1pc3NpbmcgY2FudmFzIGZvciBnaXZlbiBj
YW52YXNJZAogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvY2FudmFzL3JlcXVl
c3RTaGFkZXJTb3VyY2UtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2NhbnZh
cy9yZXF1ZXN0U2hhZGVyU291cmNlLWV4cGVjdGVkLnR4dAppbmRleCA0MGNiNDM3ZWUyZDk1ZmZi
NmUzYzY1MGZhMGZkMjBhOTAwYTFkYjJmLi42NGJjZGYzYzZjZmE5NjA0ZmE0MmNmZjY3ZDQ0NmVj
NzJhYzk2MDYzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvY2FudmFzL3JlcXVl
c3RTaGFkZXJTb3VyY2UtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9j
YW52YXMvcmVxdWVzdFNoYWRlclNvdXJjZS1leHBlY3RlZC50eHQKQEAgLTIwLDkgKzIwLDkgQEAg
VGVzdCBjb21waWxhdGlvbiBvZiBzaGFkZXJzIGFmdGVyIGJlaW5nIGF0dGFjaGVkIHRvIGEgcHJv
Z3JhbSwgd2l0aCBhbmQgd2l0aG91dAogCiAtLSBSdW5uaW5nIHRlc3QgY2FzZTogQ2FudmFzLnJl
cXVlc3RTaGFkZXJTb3VyY2UuaW52YWxpZFByb2dyYW1JZAogUEFTUzogU2hvdWxkIHByb2R1Y2Ug
YW4gZXJyb3IuCi1FcnJvcjogTm8gc2hhZGVyIHByb2dyYW0gZm9yIGdpdmVuIGlkZW50aWZpZXIu
CitFcnJvcjogTWlzc2luZyBwcm9ncmFtIGZvciBnaXZlbiBwcm9ncmFtSWQKIAogLS0gUnVubmlu
ZyB0ZXN0IGNhc2U6IENhbnZhcy5yZXF1ZXN0U2hhZGVyU291cmNlLmludmFsaWRTaGFkZXJUeXBl
CiBQQVNTOiBTaG91bGQgcHJvZHVjZSBhbiBlcnJvci4KLUVycm9yOiBObyBzaGFkZXIgZm9yIGdp
dmVuIHR5cGUuCitFcnJvcjogTWlzc2luZyBzaGFkZXIgZm9yIGdpdmVuIHNoYWRlclR5cGUKIApk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2NhbnZhcy9yZXNvbHZlQ2FudmFzQ29u
dGV4dC0yZC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvY2FudmFzL3Jlc29s
dmVDYW52YXNDb250ZXh0LTJkLWV4cGVjdGVkLnR4dAppbmRleCA2ZWQ2MzNkYTg0ODM2OGQ5NjVi
OTA0YjI0NjI2NGY5NmY1MDA2ODk1Li43NWQ5MzNjYzM5MTQ4ZDlkMmVkNjYzZTQwNjU2N2RiODJj
OWQ2OTk4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvY2FudmFzL3Jlc29sdmVD
YW52YXNDb250ZXh0LTJkLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3Iv
Y2FudmFzL3Jlc29sdmVDYW52YXNDb250ZXh0LTJkLWV4cGVjdGVkLnR4dApAQCAtOCw1ICs4LDUg
QEAgUEFTUzogUGF5bG9hZCBzaG91bGQgaGF2ZSBjbGFzc05hbWUgIkNhbnZhc1JlbmRlcmluZ0Nv
bnRleHQyRCIuCiAKIC0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBDYW52YXMucmVzb2x2ZUNhbnZhc0Nv
bnRleHQuaW52YWxpZElkZW50aWZpZXIKIFBBU1M6IFNob3VsZCBwcm9kdWNlIGFuIGVycm9yLgot
RXJyb3I6IE5vIGNhbnZhcyBmb3IgZ2l2ZW4gaWRlbnRpZmllci4KK0Vycm9yOiBNaXNzaW5nIGNh
bnZhcyBmb3IgZ2l2ZW4gY2FudmFzSWQKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL2NhbnZhcy9zZXRTaGFkZXJQcm9ncmFtRGlzYWJsZWQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvaW5zcGVjdG9yL2NhbnZhcy9zZXRTaGFkZXJQcm9ncmFtRGlzYWJsZWQtZXhwZWN0ZWQu
dHh0CmluZGV4IDU2MjZiMzI4MGRkNTNmYzcxNzJiZWJiNDQ1ODFmYzdjNjEwMTI3NTAuLjA1Y2Vk
ZTc5ZDg4MjViYTU3NGIyMjkxYmViN2NkZWY1NDBiYTQwN2YgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2luc3BlY3Rvci9jYW52YXMvc2V0U2hhZGVyUHJvZ3JhbURpc2FibGVkLWV4cGVjdGVkLnR4
dAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvY2FudmFzL3NldFNoYWRlclByb2dyYW1EaXNh
YmxlZC1leHBlY3RlZC50eHQKQEAgLTE2LDUgKzE2LDUgQEAgUEFTUzogUmUtZW5hYmxpbmcgYSBz
aGFkZXIgcHJvZ3JhbSBzaG91bGQgYWxsb3cgaXQgdG8gZHJhdy4KIAogLS0gUnVubmluZyB0ZXN0
IGNhc2U6IENhbnZhcy5zZXRTaGFkZXJQcm9ncmFtRGlzYWJsZWQuaW52YWxpZFByb2dyYW1JZAog
UEFTUzogU2hvdWxkIHByb2R1Y2UgYW4gZXJyb3IuCi1FcnJvcjogTm8gc2hhZGVyIHByb2dyYW0g
Zm9yIGdpdmVuIGlkZW50aWZpZXIuCitFcnJvcjogTWlzc2luZyBwcm9ncmFtIGZvciBnaXZlbiBw
cm9ncmFtSWQKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2NhbnZhcy9zZXRT
aGFkZXJQcm9ncmFtSGlnaGxpZ2h0ZWQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL2NhbnZhcy9zZXRTaGFkZXJQcm9ncmFtSGlnaGxpZ2h0ZWQtZXhwZWN0ZWQudHh0CmluZGV4
IDdhOWI2ZmQzZmJmZDIwNDQzZWFmY2VjYTZmOGNjOGNjYzEyYWRmOTAuLjFhNDM0MjFlN2M1Mzgz
YzE2MmYzZjQwZmIxYmQ5MzgyNDcxMjJkNmMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3Bl
Y3Rvci9jYW52YXMvc2V0U2hhZGVyUHJvZ3JhbUhpZ2hsaWdodGVkLWV4cGVjdGVkLnR4dAorKysg
Yi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvY2FudmFzL3NldFNoYWRlclByb2dyYW1IaWdobGlnaHRl
ZC1leHBlY3RlZC50eHQKQEAgLTE2LDUgKzE2LDUgQEAgUEFTUzogVW5oaWdobGlnaHRpbmcgYSBz
aGFkZXIgcHJvZ3JhbSBzaG91bGQgY2hhbmdlIHRoZSBjb250ZW50LgogCiAtLSBSdW5uaW5nIHRl
c3QgY2FzZTogQ2FudmFzLnNldFNoYWRlclByb2dyYW1IaWdobGlnaHRlZC5pbnZhbGlkUHJvZ3Jh
bUlkCiBQQVNTOiBTaG91bGQgcHJvZHVjZSBhbiBlcnJvci4KLUVycm9yOiBObyBzaGFkZXIgcHJv
Z3JhbSBmb3IgZ2l2ZW4gaWRlbnRpZmllci4KK0Vycm9yOiBNaXNzaW5nIHByb2dyYW0gZm9yIGdp
dmVuIHByb2dyYW1JZAogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvY2FudmFz
L3VwZGF0ZVNoYWRlci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvY2FudmFz
L3VwZGF0ZVNoYWRlci1leHBlY3RlZC50eHQKaW5kZXggZGViMTcxZjRjZDQzMDhlYjhlMWNhZGQ4
YTNlZmIzYmRkMmE2YWVmZi4uOGYzZmVlOWUxNDA0ZWIyYzRkMDg0MjA2YjZjZWY3YzhjNDRhNzRj
MSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2NhbnZhcy91cGRhdGVTaGFkZXIt
ZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9jYW52YXMvdXBkYXRlU2hh
ZGVyLWV4cGVjdGVkLnR4dApAQCAtMjIsMTcgKzIyLDE3IEBAIFRlc3QgY29tcGlsYXRpb24gb2Yg
c2hhZGVycyBhZnRlciBiZWluZyBhdHRhY2hlZCB0byBhIHByb2dyYW0sIHdpdGggYW5kIHdpdGhv
dXQKIAogLS0gUnVubmluZyB0ZXN0IGNhc2U6IENhbnZhcy51cGRhdGVTaGFkZXIuaW52YWxpZFBy
b2dyYW1JZAogUEFTUzogU2hvdWxkIHByb2R1Y2UgYW4gZXJyb3IuCi1FcnJvcjogTm8gc2hhZGVy
IHByb2dyYW0gZm9yIGdpdmVuIGlkZW50aWZpZXIuCitFcnJvcjogTWlzc2luZyBwcm9ncmFtIGZv
ciBnaXZlbiBwcm9ncmFtSWQKIAogLS0gUnVubmluZyB0ZXN0IGNhc2U6IENhbnZhcy51cGRhdGVT
aGFkZXIuaW52YWxpZFNoYWRlclR5cGUKIFBBU1M6IFNob3VsZCBwcm9kdWNlIGFuIGVycm9yLgot
RXJyb3I6IE5vIHNoYWRlciBmb3IgZ2l2ZW4gdHlwZS4KK0Vycm9yOiBNaXNzaW5nIHNoYWRlciBm
b3IgZ2l2ZW4gc2hhZGVyVHlwZQogCiAtLSBSdW5uaW5nIHRlc3QgY2FzZTogQ2FudmFzLnVwZGF0
ZVNoYWRlci5pbnZhbGlkVmVydGV4U2hhZGVyU291cmNlCiBQQVNTOiBTaG91bGQgcHJvZHVjZSBl
cnJvci4KLUVycm9yOiBTaGFkZXIgY29tcGlsYXRpb24gZmFpbGVkLgorRXJyb3I6IEZhaWxlZCB0
byB1cGRhdGUgc2hhZGVyCiAKIC0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBDYW52YXMudXBkYXRlU2hh
ZGVyLmludmFsaWRGcmFnbWVudFNoYWRlclNvdXJjZQogUEFTUzogU2hvdWxkIHByb2R1Y2UgZXJy
b3IuCi1FcnJvcjogU2hhZGVyIGNvbXBpbGF0aW9uIGZhaWxlZC4KK0Vycm9yOiBGYWlsZWQgdG8g
dXBkYXRlIHNoYWRlcgogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvY29uc29s
ZS93ZWJjb3JlLWxvZ2dpbmctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Nv
bnNvbGUvd2ViY29yZS1sb2dnaW5nLWV4cGVjdGVkLnR4dAppbmRleCBhMTYwYjQxZTRkOWRkNjJl
MWQ2ODQ0ZWQ2MWRjNDY4M2E4ZTdmODFhLi41YjUyZTJhNzJjYTgxYzcwMmNiYmY1ZmU1OWMzYzZi
MGZhMjc1N2EzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvY29uc29sZS93ZWJj
b3JlLWxvZ2dpbmctZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9jb25z
b2xlL3dlYmNvcmUtbG9nZ2luZy1leHBlY3RlZC50eHQKQEAgLTE3LDcgKzE3LDcgQEAgUEFTUzog
TG9nIGNoYW5uZWwgaGFzIGtub3duIHNvdXJjZS4KIFBBU1M6IExvZyBjaGFubmVsIGRpc2FibGVk
IGJ5IGRlZmF1bHQuCiAKIC0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBDb25zb2xlLkxvZ2dpbmcuSW52
YWxpZExldmVsCi1QQVNTOiBJbnZhbGlkIGxvZ2dpbmcgbGV2ZWwKK1BBU1M6IFVua25vd24gY2hh
bm5lbExldmVsOiBET0VTX05PVF9FWElTVAogCiAtLSBSdW5uaW5nIHRlc3QgY2FzZTogQ29uc29s
ZS5Mb2dnaW5nLk5vTG9nZ2luZwogUEFTUzogTWVkaWEgbG9nZ2luZyBkaXNhYmxlZC4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9jc3MvYWRkLXJ1bGUtZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Nzcy9hZGQtcnVsZS1leHBlY3RlZC50eHQKaW5kZXggZDlk
Yzc0YjM1MGI5MGFiNTg0MzgzNTk0NjJkM2IzMDAzNTRmZjdjZC4uNDZkNWVhODllNDMxNTkxNGMx
NDJlNmNhNDE2ZDk1NjQ1MWMzOWVlMyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9y
L2Nzcy9hZGQtcnVsZS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Nz
cy9hZGQtcnVsZS1leHBlY3RlZC50eHQKQEAgLTE5LDUgKzE5LDUgQEAgUEFTUzogUnVsZSByYW5n
ZSBzaG91bGQgYmUgWzI6MCwyOjNdCiBQQVNTOiBSdWxlIG9yaWdpbiBzaG91bGQgYmUgInJlZ3Vs
YXIiCiAKIC0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBDU1MuYWRkUnVsZS5CYWRTdHlsZVNoZWV0SWQK
LVBBU1M6IE5vIHRhcmdldCBzdHlsZXNoZWV0IGZvdW5kCitQQVNTOiBNaXNzaW5nIHN0eWxlIHNo
ZWV0IGZvciBnaXZlbiBzdHlsZVNoZWV0SWQKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5z
cGVjdG9yL2RlYnVnZ2VyL2NvbnRpbnVlVW50aWxOZXh0UnVuTG9vcC1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvY29udGludWVVbnRpbE5leHRSdW5Mb29wLWV4
cGVjdGVkLnR4dAppbmRleCBmYTNjMjJmZjMzY2U0NmJlNjRmYzNkMWQ3NDM3OTg5Y2UzYjM3NjMw
Li5hZGZmNTNlZGQwYjFiYTA3OTNkNGU4NGI3NTFlYmJjY2I1ODVlMTczIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvY29udGludWVVbnRpbE5leHRSdW5Mb29wLWV4
cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvY29udGludWVV
bnRpbE5leHRSdW5Mb29wLWV4cGVjdGVkLnR4dApAQCAtNCw3ICs0LDcgQEAgRGVidWdnZXIuY29u
dGludWVVbnRpbE5leHRSdW5Mb29wCiA9PSBSdW5uaW5nIHRlc3Qgc3VpdGU6IERlYnVnZ2VyLmNv
bnRpbnVlVW50aWxOZXh0UnVuTG9vcAogLS0gUnVubmluZyB0ZXN0IGNhc2U6IERlYnVnZ2VyLlVu
cGF1c2VkLmNvbnRpbnVlVW50aWxOZXh0UnVuTG9vcAogUEFTUzogU2hvdWxkIHByb2R1Y2UgYW4g
ZXJyb3IgaWYgbm90IHBhdXNlZC4KLUNhbiBvbmx5IHBlcmZvcm0gb3BlcmF0aW9uIHdoaWxlIHBh
dXNlZC4KK011c3QgYmUgcGF1c2VkCiAKIC0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBEZWJ1Z2dlci5V
bnBhdXNlZC5jb250aW51ZVVudGlsTmV4dFJ1bkxvb3AKIFBBU1M6IFJlY2VpdmVkIEZpcnN0IFBh
dXNlIEV2ZW50LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL2V2
YWx1YXRlT25DYWxsRnJhbWUtZXJyb3JzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2luc3Bl
Y3Rvci9kZWJ1Z2dlci9ldmFsdWF0ZU9uQ2FsbEZyYW1lLWVycm9ycy1leHBlY3RlZC50eHQKaW5k
ZXggYTg1ZTI1MjRjYmU3MzVmMTc4ZWUzYThjN2YyNzNjYWEwZmVmZDdiOC4uNjgxMDUyZTg3MmMy
MWM3ZjU2ZGM4NjRhMjkzM2QwNzZhNjgzYzRmNCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5z
cGVjdG9yL2RlYnVnZ2VyL2V2YWx1YXRlT25DYWxsRnJhbWUtZXJyb3JzLWV4cGVjdGVkLnR4dAor
KysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvZXZhbHVhdGVPbkNhbGxGcmFtZS1l
cnJvcnMtZXhwZWN0ZWQudHh0CkBAIC01LDEwICs1LDEwIEBAIENhbGxpbmcgRGVidWdnZXIuZXZh
bHVhdGVPbkNhbGxGcmFtZSBwcm90b2NvbCBlcnJvciBjYXNlcy4KIC0tIFJ1bm5pbmcgdGVzdCBj
YXNlOiBFdmFsdWF0ZU9uQ2FsbEZyYW1lTm90UGF1c2VkCiBQQVNTOiBQYXVzZWQKIFBBU1M6IFJl
c3VtZWQKLVBBU1M6IFNob3VsZCBiZSBhbiBlcnJvcjogTm90IHBhdXNlZAorUEFTUzogU2hvdWxk
IGJlIGFuIGVycm9yOiBNdXN0IGJlIHBhdXNlZAogCiAtLSBSdW5uaW5nIHRlc3QgY2FzZTogRXZh
bHVhdGVPbkNhbGxGcmFtZUJhZENhbGxGcmFtZUlkZW50aWZpZXIKIFBBU1M6IFBhdXNlZAotUEFT
UzogU2hvdWxkIGJlIGFuIGVycm9yOiBDb3VsZCBub3QgZmluZCBJbmplY3RlZFNjcmlwdCBmb3Ig
Y2FsbEZyYW1lSWQKK1BBU1M6IFNob3VsZCBiZSBhbiBlcnJvcjogTWlzc2luZyBpbmplY3RlZCBz
Y3JpcHQgZm9yIGdpdmVuIGNhbGxGcmFtZUlkCiBQQVNTOiBSZXN1bWVkCiAKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9zZXRCcmVha3BvaW50LWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9zZXRCcmVha3BvaW50LWV4cGVjdGVk
LnR4dAppbmRleCA4Mzk3MTQ4ZWQwYTRlNjYzNWNkYTQzYzdiYjE0ZDNjNjE3N2UyZTUyLi5hZTA4
ZGE0N2QyOTg4NTZiYmNiYWVlYjFhZTA1ZjUwMDNjMzNjMzA4IDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvc2V0QnJlYWtwb2ludC1leHBlY3RlZC50eHQKKysrIGIv
TGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3NldEJyZWFrcG9pbnQtZXhwZWN0ZWQudHh0
CkBAIC0xLDcgKzEsNyBAQAogRGVidWdnZXIuc2V0QnJlYWtwb2ludCBvbiBsaW5lOjAgaW4gPHNj
cmlwdCBzcmM9Ii4uLiI+CiAKIEZvdW5kIGJyZWFrcG9pbnQuanMKLVBBU1M6IFJlY2VpdmVkIGVy
cm9yIHNldHRpbmcgZHVwbGljYXRlIGJyZWFrcG9pbnQ6IEJyZWFrcG9pbnQgYXQgc3BlY2lmaWVk
IGxvY2F0aW9uIGFscmVhZHkgZXhpc3RzCitQQVNTOiBSZWNlaXZlZCBlcnJvciBzZXR0aW5nIGR1
cGxpY2F0ZSBicmVha3BvaW50OiBCcmVha3BvaW50IGZvciBnaXZlbiBsb2NhdGlvbiBhbHJlYWR5
IGV4aXN0cwogUnVubmluZyBicmVha3BvaW50QmFzaWMKIGluc2lkZSBicmVha3BvaW50QmFzaWMK
IEhpdCBCcmVha3BvaW50IQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS1k
ZWJ1Z2dlci9kb20tYnJlYWtwb2ludHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL2RvbS1kZWJ1Z2dlci9kb20tYnJlYWtwb2ludHMtZXhwZWN0ZWQudHh0CmluZGV4IDNmNzg5
ZjViOTQ3ZjBjMGFmN2I3ZTY3MmI4MWYwNzg0MDJmYTQ3YmUuLjlhODhmODE3NDNkNTExYmQ2M2Rm
YzIwZDJiMzlhY2I0ODUzY2I3MzMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9k
b20tZGVidWdnZXIvZG9tLWJyZWFrcG9pbnRzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0
cy9pbnNwZWN0b3IvZG9tLWRlYnVnZ2VyL2RvbS1icmVha3BvaW50cy1leHBlY3RlZC50eHQKQEAg
LTEwOSwyNSArMTA5LDI1IEBAIFBBU1M6IERPTSBub2RlIHNob3VsZCBoYXZlIG5vIGJyZWFrcG9p
bnRzLgogCiAtLSBSdW5uaW5nIHRlc3QgY2FzZTogU2V0QnJlYWtwb2ludFdpdGhJbnZhbGlkTm9k
ZUlkCiBBdHRlbXB0aW5nIHRvIHNldCBicmVha3BvaW50LgotUHJvdG9jb2wgcmVzdWx0OiBDb3Vs
ZCBub3QgZmluZCBub2RlIHdpdGggZ2l2ZW4gaWQKK1Byb3RvY29sIHJlc3VsdDogTWlzc2luZyBu
b2RlIGZvciBnaXZlbiBub2RlSWQKIFBBU1M6IFByb3RvY29sIHNob3VsZCByZXR1cm4gYW4gZXJy
b3IuCiAtLSBSdW5uaW5nIHRlc3QgdGVhcmRvd24uCiAKIC0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBT
ZXRCcmVha3BvaW50V2l0aEludmFsaWRUeXBlCiBBdHRlbXB0aW5nIHRvIHNldCBicmVha3BvaW50
LgotUHJvdG9jb2wgcmVzdWx0OiBVbmtub3duIERPTSBicmVha3BvaW50IHR5cGU6IGN1c3RvbS1i
cmVha3BvaW50LXR5cGUKK1Byb3RvY29sIHJlc3VsdDogVW5rbm93biB0eXBlOiBjdXN0b20tYnJl
YWtwb2ludC10eXBlCiBQQVNTOiBQcm90b2NvbCBzaG91bGQgcmV0dXJuIGFuIGVycm9yLgogLS0g
UnVubmluZyB0ZXN0IHRlYXJkb3duLgogCiAtLSBSdW5uaW5nIHRlc3QgY2FzZTogUmVtb3ZlQnJl
YWtwb2ludFdpdGhJbnZhbGlkTm9kZUlkCiBBdHRlbXB0aW5nIHRvIHJlbW92ZSBicmVha3BvaW50
LgotUHJvdG9jb2wgcmVzdWx0OiBDb3VsZCBub3QgZmluZCBub2RlIHdpdGggZ2l2ZW4gaWQKK1By
b3RvY29sIHJlc3VsdDogTWlzc2luZyBub2RlIGZvciBnaXZlbiBub2RlSWQKIFBBU1M6IFByb3Rv
Y29sIHNob3VsZCByZXR1cm4gYW4gZXJyb3IuCiAtLSBSdW5uaW5nIHRlc3QgdGVhcmRvd24uCiAK
IC0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBSZW1vdmVCcmVha3BvaW50V2l0aEludmFsaWRUeXBlCiBB
dHRlbXB0aW5nIHRvIHJlbW92ZSBicmVha3BvaW50LgotUHJvdG9jb2wgcmVzdWx0OiBVbmtub3du
IERPTSBicmVha3BvaW50IHR5cGU6IGN1c3RvbS1icmVha3BvaW50LXR5cGUKK1Byb3RvY29sIHJl
c3VsdDogVW5rbm93biB0eXBlOiBjdXN0b20tYnJlYWtwb2ludC10eXBlCiBQQVNTOiBQcm90b2Nv
bCBzaG91bGQgcmV0dXJuIGFuIGVycm9yLgogLS0gUnVubmluZyB0ZXN0IHRlYXJkb3duLgogCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZG9tL2JyZWFrcG9pbnQtZm9yLWV2ZW50
LWxpc3RlbmVyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kb20vYnJlYWtw
b2ludC1mb3ItZXZlbnQtbGlzdGVuZXItZXhwZWN0ZWQudHh0CmluZGV4IGRlMmM4ZDA5ZTY0YzY3
ZjMwNjFkYjk3NTY0YjMzOWJjZmMyNjJlYjMuLjc2YTg2NDQ4YmM5ZTE3M2YzNmQ2ZDdjZjMwNGYw
Y2U3NzA2YWE1MGYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kb20vYnJlYWtw
b2ludC1mb3ItZXZlbnQtbGlzdGVuZXItZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2lu
c3BlY3Rvci9kb20vYnJlYWtwb2ludC1mb3ItZXZlbnQtbGlzdGVuZXItZXhwZWN0ZWQudHh0CkBA
IC0yMSw5ICsyMSw5IEBAIFBBU1M6IFNob3VsZCBub3QgcGF1c2UgYmVmb3JlIGJ1dHRvbjEgZXZl
bnQgaGFuZGxlciBpcyBydW4uCiAKIC0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBET00uc2V0QnJlYWtw
b2ludEZvckV2ZW50TGlzdGVuZXIuSW52YWxpZAogUEFTUzogU2hvdWxkIHByb2R1Y2UgYW4gZXJy
b3IuCi1FcnJvcjogTm8gZXZlbnQgbGlzdGVuZXIgZm9yIGdpdmVuIGlkZW50aWZpZXIuCitFcnJv
cjogTWlzc2luZyBldmVudCBsaXN0ZW5lciBmb3IgZ2l2ZW4gZXZlbnRMaXN0ZW5lcklkCiAKIC0t
IFJ1bm5pbmcgdGVzdCBjYXNlOiBET00ucmVtb3ZlQnJlYWtwb2ludEZvckV2ZW50TGlzdGVuZXIu
SW52YWxpZAogUEFTUzogU2hvdWxkIHByb2R1Y2UgYW4gZXJyb3IuCi1FcnJvcjogTm8gZXZlbnQg
bGlzdGVuZXIgZm9yIGdpdmVuIGlkZW50aWZpZXIuCitFcnJvcjogTWlzc2luZyBldmVudCBsaXN0
ZW5lciBmb3IgZ2l2ZW4gZXZlbnRMaXN0ZW5lcklkCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2luc3BlY3Rvci9kb20vaGlnaGxpZ2h0UXVhZC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9p
bnNwZWN0b3IvZG9tL2hpZ2hsaWdodFF1YWQtZXhwZWN0ZWQudHh0CmluZGV4IDI4NTI4YzMxYWFk
NzRlOWU3M2FhZTBlMDgyY2FhMGFiMWRmODk3OTIuLmU3ODExN2EzYTUwZmFjOTc1OWI0ZjM0ZTFl
ODI1Y2UwN2VkMTFhODUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kb20vaGln
aGxpZ2h0UXVhZC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS9o
aWdobGlnaHRRdWFkLWV4cGVjdGVkLnR4dApAQCAtMzEsNSArMzEsNSBAQCBIaWdobGlnaHQgUmVj
dDogeyJ4IjotMTAsInkiOi0xMCwid2lkdGgiOjEwMDAsImhlaWdodCI6MjAwMCwidG9wIjotMTAs
InJpZ2h0Ijo5OQogCiAtLSBSdW5uaW5nIHRlc3QgY2FzZTogQmFkUXVhZFNob3VsZEVycm9yCiBQ
QVNTOiBTaG91bGQgcHJvZHVjZSBhbiBlcnJvci4KLUVycm9yOiBJbnZhbGlkIFF1YWQgZm9ybWF0
CitFcnJvcjogVW5leHBlY3RlZCBpbnZhbGlkIHF1YWRBcnJheQogCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbnNwZWN0b3IvZG9tL2luc2VydEFkamFjZW50SFRNTC1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9pbnNwZWN0b3IvZG9tL2luc2VydEFkamFjZW50SFRNTC1leHBlY3RlZC50eHQK
aW5kZXggMGZhNGNhMzQwNWIwZmFjOTQ4MzFiMTZkMDIwODEzNGQxNmM4N2YxOS4uMWYxODlhYjk3
MDQ5ZThlYzNjNDhkMjIwNjg5ZmZkM2JlYjdhMjE2ZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL2RvbS9pbnNlcnRBZGphY2VudEhUTUwtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91
dFRlc3RzL2luc3BlY3Rvci9kb20vaW5zZXJ0QWRqYWNlbnRIVE1MLWV4cGVjdGVkLnR4dApAQCAt
MjQsNyArMjQsNyBAQCBQQVNTOiBUaGUgZ2l2ZW4gSFRNTCBzaG91bGQgaGF2ZSBiZWVuIGFkZGVk
IGJhY2sgdG8gdGhlIERPTSB0cmVlLgogCiAtLSBSdW5uaW5nIHRlc3QgY2FzZTogRE9NLmluc2Vy
dEFkamFjZW50SFRNTC5JbnZhbGlkTm9kZUlkCiBQQVNTOiBTaG91bGQgcHJvZHVjZSBhbiBlcnJv
ci4KLVBBU1M6IEVycm9yOiBDb3VsZCBub3QgZmluZCBub2RlIHdpdGggZ2l2ZW4gaWQKK1BBU1M6
IEVycm9yOiBNaXNzaW5nIG5vZGUgZm9yIGdpdmVuIG5vZGVJZAogCiAtLSBSdW5uaW5nIHRlc3Qg
Y2FzZTogRE9NLmluc2VydEFkamFjZW50SFRNTC5JbnZhbGlkUG9zaXRpb24KIFBBU1M6IFNob3Vs
ZCBwcm9kdWNlIGFuIGVycm9yLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Rv
bS9yZXF1ZXN0LWNoaWxkLW5vZGVzLWRlcHRoLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2lu
c3BlY3Rvci9kb20vcmVxdWVzdC1jaGlsZC1ub2Rlcy1kZXB0aC1leHBlY3RlZC50eHQKaW5kZXgg
Nzk0NDYzMGNjMGE1YWUwODIzOWJjZjdhMjNmZWM1MjMyNjkwMWQwOC4uOWFhZWFmMjM5ZWU2Yzgw
NTQ3NTQ0NzhiODI3ZWQ2MjIzNTY5YjhlYiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL2RvbS9yZXF1ZXN0LWNoaWxkLW5vZGVzLWRlcHRoLWV4cGVjdGVkLnR4dAorKysgYi9MYXlv
dXRUZXN0cy9pbnNwZWN0b3IvZG9tL3JlcXVlc3QtY2hpbGQtbm9kZXMtZGVwdGgtZXhwZWN0ZWQu
dHh0CkBAIC0xOSw3ICsxOSw3IEBAIFBBU1M6IGRpdiNkZXB0aC0xIGhhcyBub2RlcyA5IGxldmVs
cyBkZWVwCiAKID09PSBQYXNzIGFuIGludmFsaWQgZGVwdGggPT09CiAKLUJhY2tlbmQgZXJyb3I6
IFBsZWFzZSBwcm92aWRlIGEgcG9zaXRpdmUgaW50ZWdlciBhcyBhIGRlcHRoIG9yIC0xIGZvciBl
bnRpcmUgc3VidHJlZSAoLTMyMDAwKQorQmFja2VuZCBlcnJvcjogVW5leHBlY3RlZCB2YWx1ZSBi
ZWxvdyAtMSBmb3IgZ2l2ZW4gZGVwdGggKC0zMjAwMCkKIAogUEFTUzogRXhwZWN0ZWQgbnVtYmVy
IG9mIHNldENoaWxkTm9kZXMgZXZlbnRzCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3Bl
Y3Rvci9kb20vc2V0RXZlbnRMaXN0ZW5lckRpc2FibGVkLWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL2luc3BlY3Rvci9kb20vc2V0RXZlbnRMaXN0ZW5lckRpc2FibGVkLWV4cGVjdGVkLnR4dApp
bmRleCA3OWQ0YjE0MWU2NzM4NTZkZWFkYWVmMjAxNDlkODBjZDFhMjI2NjFkLi4yNzNmNjAzYWIx
YThmN2Q2ZjQ1MGQ4MGZmMTlkMDczZjQxZmQwOGYwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9p
bnNwZWN0b3IvZG9tL3NldEV2ZW50TGlzdGVuZXJEaXNhYmxlZC1leHBlY3RlZC50eHQKKysrIGIv
TGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS9zZXRFdmVudExpc3RlbmVyRGlzYWJsZWQtZXhwZWN0
ZWQudHh0CkBAIC0xOCw1ICsxOCw1IEBAIENsaWNrIGV2ZW50IGxpc3RlbmVyIGlzIGVuYWJsZWQu
CiAKIC0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBET00uc2V0RXZlbnRMaXN0ZW5lckRpc2FibGVkLklu
dmFsaWQKIFBBU1M6IFNob3VsZCBwcm9kdWNlIGFuIGVycm9yLgotRXJyb3I6IE5vIGV2ZW50IGxp
c3RlbmVyIGZvciBnaXZlbiBpZGVudGlmaWVyLgorRXJyb3I6IE1pc3NpbmcgZXZlbnQgbGlzdGVu
ZXIgZm9yIGdpdmVuIGV2ZW50TGlzdGVuZXJJZAogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bnNwZWN0b3IvcHJvdG9jb2wvYmFja2VuZC1kaXNwYXRjaGVyLWFyZ3VtZW50LWVycm9ycy1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcHJvdG9jb2wvYmFja2VuZC1kaXNwYXRj
aGVyLWFyZ3VtZW50LWVycm9ycy1leHBlY3RlZC50eHQKaW5kZXggOTU0MTdkZGQ0N2M5NjM3MjJh
MGM2MGI4M2Q5NmUxN2I4MTI5NzhlOS4uZDU1MGIwNDY5MTJhYzAxMDljNzg0OGJmMzQyNjBjYWVh
MzVhMjI1NiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3Byb3RvY29sL2JhY2tl
bmQtZGlzcGF0Y2hlci1hcmd1bWVudC1lcnJvcnMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRl
c3RzL2luc3BlY3Rvci9wcm90b2NvbC9iYWNrZW5kLWRpc3BhdGNoZXItYXJndW1lbnQtZXJyb3Jz
LWV4cGVjdGVkLnR4dApAQCAtMzksMTQgKzM5LDE0IEBAIFNlbmRpbmcgbWVzc2FnZTogeyJpZCI6
MTIzLCJtZXRob2QiOiJSdW50aW1lLmdldFByb3BlcnRpZXMiLCJwYXJhbXMiOnsib2JqZWN0SWQi
CiBQQVNTOiB0aGUgYmFja2VuZCBzaG91bGQgc2VuZCBhIHByb3RvY29sIGVycm9yIHdoZW4gcmVj
ZWl2aW5nIGFuIGludmFsaWQgbWVzc2FnZS4KIFBBU1M6IHRoZSByZXBvcnRlZCBlcnJvciBzaG91
bGQgYmUgIlNlcnZlckVycm9yIiAoLTMyMDAwKQogQWN0dWFsIGVycm9yIGNvZGU6IC0zMjAwMAot
QWN0dWFsIGVycm9yIG1lc3NhZ2U6IENvdWxkIG5vdCBmaW5kIEluamVjdGVkU2NyaXB0IGZvciBv
YmplY3RJZAotQWN0dWFsIGVycm9yIGRhdGE6IFt7ImNvZGUiOi0zMjAwMCwibWVzc2FnZSI6IkNv
dWxkIG5vdCBmaW5kIEluamVjdGVkU2NyaXB0IGZvciBvYmplY3RJZCJ9XQorQWN0dWFsIGVycm9y
IG1lc3NhZ2U6IE1pc3NpbmcgaW5qZWN0ZWQgc2NyaXB0IGZvciBnaXZlbiBvYmplY3RJZAorQWN0
dWFsIGVycm9yIGRhdGE6IFt7ImNvZGUiOi0zMjAwMCwibWVzc2FnZSI6Ik1pc3NpbmcgaW5qZWN0
ZWQgc2NyaXB0IGZvciBnaXZlbiBvYmplY3RJZCJ9XQogCiAtLSBSdW5uaW5nIHRlc3QgY2FzZTog
VGVzdEVycm9yQ29kZUZvckFzeW5jU2VydmVyRXJyb3IKIFNlbmRpbmcgbWVzc2FnZTogeyJpZCI6
MTIzLCJtZXRob2QiOiJSdW50aW1lLmF3YWl0UHJvbWlzZSIsInBhcmFtcyI6eyJwcm9taXNlT2Jq
ZWN0SWQiOiJ0aGlzaXNOb3RBbklkIn19CiBQQVNTOiB0aGUgYmFja2VuZCBzaG91bGQgc2VuZCBh
IHByb3RvY29sIGVycm9yIHdoZW4gcmVjZWl2aW5nIGFuIGludmFsaWQgbWVzc2FnZS4KIFBBU1M6
IHRoZSByZXBvcnRlZCBlcnJvciBzaG91bGQgYmUgIlNlcnZlckVycm9yIiAoLTMyMDAwKQogQWN0
dWFsIGVycm9yIGNvZGU6IC0zMjAwMAotQWN0dWFsIGVycm9yIG1lc3NhZ2U6IENvdWxkIG5vdCBm
aW5kIEluamVjdGVkU2NyaXB0IGZvciBwcm9taXNlT2JqZWN0SWQKLUFjdHVhbCBlcnJvciBkYXRh
OiBbeyJjb2RlIjotMzIwMDAsIm1lc3NhZ2UiOiJDb3VsZCBub3QgZmluZCBJbmplY3RlZFNjcmlw
dCBmb3IgcHJvbWlzZU9iamVjdElkIn1dCitBY3R1YWwgZXJyb3IgbWVzc2FnZTogTWlzc2luZyBp
bmplY3RlZCBzY3JpcHQgZm9yIGdpdmVuIHByb21pc2VPYmplY3RJZAorQWN0dWFsIGVycm9yIGRh
dGE6IFt7ImNvZGUiOi0zMjAwMCwibWVzc2FnZSI6Ik1pc3NpbmcgaW5qZWN0ZWQgc2NyaXB0IGZv
ciBnaXZlbiBwcm9taXNlT2JqZWN0SWQifV0KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5z
cGVjdG9yL3J1bnRpbWUvYXdhaXRQcm9taXNlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2lu
c3BlY3Rvci9ydW50aW1lL2F3YWl0UHJvbWlzZS1leHBlY3RlZC50eHQKaW5kZXggZTc0ZjdjNjQx
NmNkZGMwZmYwN2JmM2Q1YmZjMDhhZWEzYjRhOTViNC4uYjk1NGRmNDg0NjY1NDJlYTc0MDRjZWRh
NGQ4MmE5ZmNlZTNhNmZjMCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3J1bnRp
bWUvYXdhaXRQcm9taXNlLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3Iv
cnVudGltZS9hd2FpdFByb21pc2UtZXhwZWN0ZWQudHh0CkBAIC01Niw1ICs1Niw1IEBAIEVycm9y
OiBFcnJvcjogT2JqZWN0IHdpdGggZ2l2ZW4gaWQgaXMgbm90IGEgUHJvbWlzZQogCiAtLSBSdW5u
aW5nIHRlc3QgY2FzZTogUnVudGltZS5hd2FpdFByb21pc2UuRXJyb3IuSW52YWxpZFByb21pc2VP
YmplY3RJZAogUEFTUzogU2hvdWxkIHByb2R1Y2UgYW4gZXJyb3IuCi1FcnJvcjogQ291bGQgbm90
IGZpbmQgSW5qZWN0ZWRTY3JpcHQgZm9yIHByb21pc2VPYmplY3RJZAorRXJyb3I6IE1pc3Npbmcg
aW5qZWN0ZWQgc2NyaXB0IGZvciBnaXZlbiBwcm9taXNlT2JqZWN0SWQKIApkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW5zcGVjdG9yL3J1bnRpbWUvZ2V0UHJldmlldy1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9pbnNwZWN0b3IvcnVudGltZS9nZXRQcmV2aWV3LWV4cGVjdGVkLnR4dAppbmRl
eCA3NzBjZDE4MjgyMmM3ZmQ2YThjNWE3YjUwZDgxODBkZjU5YjhiZjRhLi5kMmJkYzQ5MzhmYzg1
MTI0MjJiNjU5MjViODk5NmI5YjJkNGQ5ZWFmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNw
ZWN0b3IvcnVudGltZS9nZXRQcmV2aWV3LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9p
bnNwZWN0b3IvcnVudGltZS9nZXRQcmV2aWV3LWV4cGVjdGVkLnR4dApAQCAtNDcsNSArNDcsNSBA
QCBQQVNTOiBSZW1vdGVPYmplY3QudXBkYXRlUHJldmlldyBzaG91bGQgcmV0dXJuIG51bGwgZm9y
IGEgbnVsbCBSZW1vdGVPYmplY3QuCiAKIC0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBSdW50aW1lLmdl
dFByZXZpZXcuSW52YWxpZE9iamVjdElkCiBQQVNTOiBTaG91bGQgcHJvZHVjZSBhbiBlcnJvci4K
LUVycm9yOiBDb3VsZCBub3QgZmluZCBJbmplY3RlZFNjcmlwdCBmb3Igb2JqZWN0SWQKK0Vycm9y
OiBNaXNzaW5nIGluamVjdGVkIHNjcmlwdCBmb3IgZ2l2ZW4gb2JqZWN0SWQKIApkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3RpbWVsaW5lL3NldEluc3RydW1lbnRzLWVycm9ycy1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvdGltZWxpbmUvc2V0SW5zdHJ1bWVu
dHMtZXJyb3JzLWV4cGVjdGVkLnR4dAppbmRleCA2MGYzZjJjZTllZGMyYTQyNzE2Mzk4NGNhMGJi
MzNmZjE1NmVmODA0Li5lYWVkNDA5YmIzYTIwMGE5Y2QwZTVjYjU2ZDJkOWJkYTA2YTdlZDQ1IDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvdGltZWxpbmUvc2V0SW5zdHJ1bWVudHMt
ZXJyb3JzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvdGltZWxpbmUv
c2V0SW5zdHJ1bWVudHMtZXJyb3JzLWV4cGVjdGVkLnR4dApAQCAtNiwxMCArNiwxMCBAQCBUZXN0
cyBmb3IgZXJyb3IgY2FzZXMgd2l0aCBUaW1lbGluZS5zZXRJbnN0cnVtZW50cy4KIFBBU1M6IFNo
b3VsZCBiZSBhbiBlcnJvcjogU29tZSBhcmd1bWVudHMgb2YgbWV0aG9kICdUaW1lbGluZS5zZXRJ
bnN0cnVtZW50cycgY2FuJ3QgYmUgcHJvY2Vzc2VkCiAKIC0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBJ
bnZhbGlkVHlwZUluSW5zdHJ1bWVudHNMaXN0Ci1QQVNTOiBTaG91bGQgYmUgYW4gZXJyb3I6IFVu
ZXhwZWN0ZWQgdHlwZSBpbiBpbnN0cnVtZW50cyBsaXN0LCBzaG91bGQgYmUgc3RyaW5nCitQQVNT
OiBTaG91bGQgYmUgYW4gZXJyb3I6IFVuZXhwZWN0ZWQgbm9uLXN0cmluZyB2YWx1ZSBpbiBnaXZl
biBpbnN0cnVtZW50cwogCiAtLSBSdW5uaW5nIHRlc3QgY2FzZTogSW52YWxpZEluc3RydW1lbnRJ
bkluc3RydW1lbnRzTGlzdAotUEFTUzogU2hvdWxkIGJlIGFuIGVycm9yOiBVbmV4cGVjdGVkIGVu
dW0gdmFsdWU6IE5vU3VjaEluc3RydW1lbnQKK1BBU1M6IFNob3VsZCBiZSBhbiBlcnJvcjogVW5r
bm93biBpdGVtIGluIGdpdmVuIGluc3RydW1lbnRzOiBOb1N1Y2hJbnN0cnVtZW50CiAKIC0tIFJ1
bm5pbmcgdGVzdCBjYXNlOiBWYWxpZEluc3RydW1lbnRJbkluc3RydW1lbnRzTGlzdAogUEFTUzog
U2hvdWxkIG5vdCBiZSBhbiBlcnJvciBzZXR0aW5nIHZhbGlkIGluc3RydW1lbnRzLgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>