<?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>95633</bug_id>
          
          <creation_ts>2012-08-31 21:43:16 -0700</creation_ts>
          <short_desc>Improve JSC use of Strings after the UString-&gt;String change</short_desc>
          <delta_ts>2012-09-04 14:18:57 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Benjamin Poulain">benjamin</reporter>
          <assigned_to name="Benjamin Poulain">benjamin</assigned_to>
          <cc>ggaren</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>710153</commentid>
    <comment_count>0</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2012-08-31 21:43:16 -0700</bug_when>
    <thetext>Take advantage of the goodness of String.

Some microbenchmark improved: http://jsperf.com/js-error-bench</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>710155</commentid>
    <comment_count>1</comment_count>
      <attachid>161815</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2012-08-31 22:33:32 -0700</bug_when>
    <thetext>Created attachment 161815
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>710160</commentid>
    <comment_count>2</comment_count>
      <attachid>161817</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2012-08-31 23:03:57 -0700</bug_when>
    <thetext>Created attachment 161817
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>710165</commentid>
    <comment_count>3</comment_count>
      <attachid>161817</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-08-31 23:21:34 -0700</bug_when>
    <thetext>Comment on attachment 161817
Patch

Attachment 161817 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/13724456</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>710200</commentid>
    <comment_count>4</comment_count>
      <attachid>161817</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2012-09-01 01:23:34 -0700</bug_when>
    <thetext>Comment on attachment 161817
Patch

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

This patch looks good, but I&apos;m wondering about these null -&gt; empty string changes.

&gt; Source/JavaScriptCore/runtime/Error.h:92
&gt; -            function-&gt;finishCreation(exec-&gt;globalData(), &quot;&quot;);
&gt; +            function-&gt;finishCreation(exec-&gt;globalData(), String());

Why is this change from empty string to null string OK?

&gt; Source/JavaScriptCore/runtime/FunctionPrototype.h:35
&gt; -            prototype-&gt;finishCreation(exec, &quot;&quot;);
&gt; +            prototype-&gt;finishCreation(exec, String());

Why is this change from empty string to null string OK?

&gt; Source/JavaScriptCore/runtime/InternalFunction.cpp:47
&gt; -    putDirect(globalData, globalData.propertyNames-&gt;name, jsString(&amp;globalData, name.isNull() ? &quot;&quot; : name), DontDelete | ReadOnly | DontEnum);
&gt; +    putDirect(globalData, globalData.propertyNames-&gt;name, jsString(&amp;globalData, name), DontDelete | ReadOnly | DontEnum);

Why is this change from empty string to null string OK?

&gt; Source/JavaScriptCore/runtime/JSFunction.cpp:99
&gt; -    putDirect(exec-&gt;globalData(), exec-&gt;globalData().propertyNames-&gt;name, jsString(exec, name.isNull() ? &quot;&quot; : name), DontDelete | ReadOnly | DontEnum);
&gt; +    putDirect(exec-&gt;globalData(), exec-&gt;globalData().propertyNames-&gt;name, jsString(exec, name), DontDelete | ReadOnly | DontEnum);

Why is this change from empty string to null string OK?

&gt; Source/JavaScriptCore/runtime/JSGlobalObject.cpp:210
&gt; -    protoAccessor-&gt;setGetter(exec-&gt;globalData(), JSFunction::create(exec, this, 0, &quot;&quot;, globalFuncProtoGetter));
&gt; -    protoAccessor-&gt;setSetter(exec-&gt;globalData(), JSFunction::create(exec, this, 0, &quot;&quot;, globalFuncProtoSetter));
&gt; +    protoAccessor-&gt;setGetter(exec-&gt;globalData(), JSFunction::create(exec, this, 0, String(), globalFuncProtoGetter));
&gt; +    protoAccessor-&gt;setSetter(exec-&gt;globalData(), JSFunction::create(exec, this, 0, String(), globalFuncProtoSetter));

Why is this change from empty string to null string OK?

&gt; Source/JavaScriptCore/runtime/JSGlobalObject.cpp:329
&gt; -    JSFunction* thrower = JSFunction::create(exec, this, 0, &quot;&quot;, globalFuncThrowTypeError);
&gt; +    JSFunction* thrower = JSFunction::create(exec, this, 0, String(), globalFuncThrowTypeError);

Why is this change from empty string to null string OK?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>710202</commentid>
    <comment_count>5</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2012-09-01 01:29:38 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 161817 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=161817&amp;action=review
&gt; 
&gt; This patch looks good, but I&apos;m wondering about these null -&gt; empty string changes.

Every case is described in the ChangeLog.

They are in the comments per function, not at the beginning.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>710269</commentid>
    <comment_count>6</comment_count>
      <attachid>161817</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2012-09-01 10:56:20 -0700</bug_when>
    <thetext>Comment on attachment 161817
Patch

Reading is fundamental! :)

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>710352</commentid>
    <comment_count>7</comment_count>
      <attachid>161847</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2012-09-02 13:27:22 -0700</bug_when>
    <thetext>Created attachment 161847
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>710355</commentid>
    <comment_count>8</comment_count>
      <attachid>161849</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2012-09-02 14:09:47 -0700</bug_when>
    <thetext>Created attachment 161849
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>710356</commentid>
    <comment_count>9</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2012-09-02 14:11:22 -0700</bug_when>
    <thetext>GCC 4.2 has a bug with CFSTR and strict-aliasing. I don&apos;t really get why it believes there is aliasing there...

Anyway, I added a workaround for EWS, just using the old code. I think every other bot use Clang.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>711343</commentid>
    <comment_count>10</comment_count>
      <attachid>162079</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2012-09-04 12:31:34 -0700</bug_when>
    <thetext>Created attachment 162079
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>711447</commentid>
    <comment_count>11</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2012-09-04 14:18:57 -0700</bug_when>
    <thetext>Committed r127505: &lt;http://trac.webkit.org/changeset/127505&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>161815</attachid>
            <date>2012-08-31 22:33:32 -0700</date>
            <delta_ts>2012-08-31 23:03:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-95633-20120831223320.patch</filename>
            <type>text/plain</type>
            <size>106245</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI3Mjk5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBi
NWU0ZDgzMjk3ZjdmMzlkMGQ3ZTM2OTg5Nzc4YWQ3OGQ4ZGRhNWM3Li45ZDg1M2MwNjZmYzE4ZjA5
NzdkNWE5NDM1MTljMTUyZTE1YTIyN2QxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxODYgQEAKKzIwMTItMDgtMzEgIEJlbmphbWluIFBvdWxhaW4gIDxicG91bGFpbkBhcHBs
ZS5jb20+CisKKyAgICAgICAgSW1wcm92ZSBKU0MgdXNlIG9mIFN0cmluZ3MgYWZ0ZXIgdGhlIFVT
dHJpbmctPlN0cmluZyBjaGFuZ2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTk1NjMzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgVGhpcyBwYXRjaCBpbXByb3ZlIHRoZSB1c2Ugb2Ygc3RyaW5nIGluIHRoZSBK
U0MgcnVudGltZS4KKworICAgICAgICBUaGUgaW5pdGlhbGl6YXRpb24gb2YgSWRlbnRpZmllciBp
cyBsZWZ0IGZvciBmdXR1cmUgcGF0Y2hlcy4KKworICAgICAgICBUaGUgaW1wcm92ZW1lbnQgYXJl
IHRoZSBmb2xsb3dpbmc6CisgICAgICAgIC01JSBmYXN0ZXIgdG8gcmFpc2Ugb25lIG9mIHRoZSBt
b2RpZmllZCBleGNlcHRpb24uCisgICAgICAgIC0zIHRpbWVzIGZhc3RlciB0byBleGVjdXRlIEJv
b2xlYW46OnRvU3RyaW5nKCkKKworICAgICAgICBNb3N0IG9mIHRoZSBjaGFuZ2VzIGFyZSBqdXN0
IGFib3V0IHVzaW5nIHRoZSBuZXcgbWV0aG9kcworICAgICAgICBmb3Igc3RyaW5nIGxpdGVyYWxz
LgorCisgICAgICAgIFdpdGggdGhlIGNoYW5nZXMsIHRoZSBiaW5hcnkgb24geDg2XzY0IGdldHMg
MTc2IGJ5dGVzIHNtYWxsZXIuCisKKyAgICAgICAgKiBBUEkvSlNDYWxsYmFja09iamVjdEZ1bmN0
aW9ucy5oOgorICAgICAgICAoSlNDOjo6OnN0YXRpY0Z1bmN0aW9uR2V0dGVyKToKKyAgICAgICAg
KEpTQzo6OjpjYWxsYmFja0dldHRlcik6CisgICAgICAgICogQVBJL0pTQ29udGV4dFJlZi5jcHA6
CisgICAgICAgIChKU0NvbnRleHRDcmVhdGVCYWNrdHJhY2UpOgorICAgICAgICAqIEFQSS9KU09i
amVjdFJlZi5jcHA6CisgICAgICAgIChKU09iamVjdE1ha2VGdW5jdGlvbldpdGhDYWxsYmFjayk6
CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6dmFsdWVU
b1NvdXJjZVN0cmluZyk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6bmFtZUZvclJlZ2lzdGVy
KToKKyAgICAgICAgKiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHA6CisgICAgICAgIChKU0M6
OkludGVycHJldGVyOjphZGRTdGFja1RyYWNlSWZOZWNlc3NhcnkpOgorICAgICAgICAqIHJ1bnRp
bWUvQXJyYXlDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OmNvbnN0cnVjdEFycmF5V2l0
aFNpemVRdWlyayk6CisgICAgICAgICogcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHA6CisgICAg
ICAgIChKU0M6OnNoaWZ0KToKKyAgICAgICAgKEpTQzo6dW5zaGlmdCk6CisgICAgICAgIChKU0M6
OmFycmF5UHJvdG9GdW5jUG9wKToKKyAgICAgICAgKEpTQzo6YXJyYXlQcm90b0Z1bmNSZXZlcnNl
KToKKyAgICAgICAgKiBydW50aW1lL0Jvb2xlYW5Qcm90b3R5cGUuY3BwOgorICAgICAgICAoSlND
Ojpib29sZWFuUHJvdG9GdW5jVG9TdHJpbmcpOiBJbnN0ZWFkIG9mIGluc3RhbmNpYXRpbmcgbmV3
IHN0cmluZ3MsIHJldXNlIHRoZQorICAgICAgICBrZXl3b3JkcyBhdmFpbGFibGUgaW4gU21hbGxT
dHJpbmdzLiBBdm9pZGluZyB0aGUgY3JlYXRpb24gb2YgdGhlIEpTU3RyaW5nIGFuZCBTdHJpbmdJ
bXBsLAorICAgICAgICBtYWtlcyB0aGUgbWV0aG9kIHNpZ25pZmljYW50bHkgZmFzdGVyLgorCisg
ICAgICAgICogcnVudGltZS9EYXRlQ29udmVyc2lvbi5jcHA6CisgICAgICAgIChKU0M6OmZvcm1h
dERhdGVUaW1lKToKKyAgICAgICAgKiBydW50aW1lL0RhdGVQcm90b3R5cGUuY3BwOgorICAgICAg
ICAoSlNDOjpmb3JtYXRMb2NhbGVEYXRlKToKKyAgICAgICAgKEpTQzo6Zm9ybWF0ZURhdGVJbnN0
YW5jZSk6CisgICAgICAgIChKU0M6OmRhdGVQcm90b0Z1bmNUb0lTT1N0cmluZyk6CisgICAgICAg
IENoYW5nZSB0aGUgd2F5IHdlIHVzZSBzbnByaW50ZigpIGZvciBjbGFyaXR5IGFuZCBwZXJmb3Jt
YW5jZS4KKworICAgICAgICBJbnN0ZWFkIG9mIGFsbG9jYXRpbmcgb25lIGV4dHJhIGJ5dGUgdG8g
cHV0IGEgemVybyAianVzdCBpbiBjYXNlIiwgd2UgdXNlIHRoZSBzaXplIHJldHVybmVkCisgICAg
ICAgIGJ5IHNucHJpbnRmKCkuCisgICAgICAgIFRvIHByZXZlbnQgYW55IG92ZXJmbG93IGZyb20g
YSBwcm9ncmFtbWluZyBtaXN0YWtlLCB3ZSBleHBsaWNpdGVseSB0ZXN0IGZvciBvdmVyZmxvdyBh
bmQKKyAgICAgICAgcmV0dXJuIGFuIGVtcHR5IHN0cmluZy4KKworICAgICAgICAoSlNDOjpkYXRl
UHJvdG9GdW5jVG9KU09OKToKKyAgICAgICAgKiBydW50aW1lL0Vycm9yLmNwcDoKKyAgICAgICAg
KEpTQzo6Y3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IpOgorICAgICAgICAoSlNDOjp0aHJv
d1R5cGVFcnJvcik6CisgICAgICAgIChKU0M6OnRocm93U3ludGF4RXJyb3IpOgorICAgICAgICAq
IHJ1bnRpbWUvRXJyb3IuaDoKKyAgICAgICAgKEpTQzo6U3RyaWN0TW9kZVR5cGVFcnJvckZ1bmN0
aW9uOjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvRXJyb3JQcm90b3R5cGUuY3BwOgorICAg
ICAgICAoSlNDOjpFcnJvclByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlND
OjplcnJvclByb3RvRnVuY1RvU3RyaW5nKToKKyAgICAgICAgVXNpbmcgYSBudWxsIFN0cmluZyBp
cyBjb3JyZWN0IGJlY2F1c2UgKDgpIHVzZSBqc1N0cmluZygpLCAoOSkgdGVzdCBmb3IgYSBsZW5n
dGggb2YgMC4KKworICAgICAgICAqIHJ1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5jcHA6CisgICAg
ICAgIChKU0M6OkludGVycnVwdGVkRXhlY3V0aW9uRXJyb3I6OmRlZmF1bHRWYWx1ZSk6CisgICAg
ICAgIChKU0M6OlRlcm1pbmF0ZWRFeGVjdXRpb25FcnJvcjo6ZGVmYXVsdFZhbHVlKToKKyAgICAg
ICAgKEpTQzo6Y3JlYXRlU3RhY2tPdmVyZmxvd0Vycm9yKToKKyAgICAgICAgKEpTQzo6Y3JlYXRl
T3V0T2ZNZW1vcnlFcnJvcik6CisgICAgICAgICogcnVudGltZS9FeGVjdXRhYmxlLmNwcDoKKyAg
ICAgICAgKEpTQzo6RXZhbEV4ZWN1dGFibGU6OmNvbXBpbGVJbnRlcm5hbCk6CisgICAgICAgIChK
U0M6OkZ1bmN0aW9uRXhlY3V0YWJsZTo6cGFyYW1TdHJpbmcpOgorICAgICAgICAqIHJ1bnRpbWUv
RnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OmNvbnN0cnVjdEZ1bmN0aW9u
KToKKyAgICAgICAgKEpTQzo6Y29uc3RydWN0RnVuY3Rpb25Ta2lwcGluZ0V2YWxFbmFibGVkQ2hl
Y2spOgorICAgICAgICAqIHJ1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuaDoKKyAgICAgICAgKEpT
Qzo6RnVuY3Rpb25Qcm90b3R5cGU6OmNyZWF0ZSk6CisgICAgICAgIFVzaW5nIGEgbnVsbCBTdHJp
bmcgZm9yIHRoZSBuYW1lIGlzIGNvcnJlY3QgYmVjYXVzZSBJbnRlcm5hbEZ1bmN0aW9uIGpzU3Ry
aW5nKCkKKyAgICAgICAgdG8gY3JlYXRlIHRoZSBuYW1lIHZhbHVlLgorCisgICAgICAgICogcnVu
dGltZS9JbnRlcm5hbEZ1bmN0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6SW50ZXJuYWxGdW5jdGlv
bjo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICBUaGVyZSBpcyBubyBuZWVkIHRvIGNyZWF0ZSBh
biBlbXB0eSBzdHJpbmcgZm9yIGEgbnVsbCBzdHJpbmcsIGpzU3RyaW5nKCkgaGFuZGxlIGJvdGgK
KyAgICAgICAgY2FzZXMgYXMgZW1wdHkgc3RyaW5nLgorCisgICAgICAgICogcnVudGltZS9KU0Fy
cmF5LmNwcDoKKyAgICAgICAgKEpTQzo6cmVqZWN0KToKKyAgICAgICAgKEpTQzo6U3BhcnNlQXJy
YXlWYWx1ZU1hcDo6cHV0KToKKyAgICAgICAgKEpTQzo6SlNBcnJheTo6cHV0KToKKyAgICAgICAg
KEpTQzo6SlNBcnJheTo6cHV0QnlJbmRleEJleW9uZFZlY3Rvckxlbmd0aCk6CisgICAgICAgIChK
U0M6OkpTQXJyYXk6OnB1dERpcmVjdEluZGV4QmV5b25kVmVjdG9yTGVuZ3RoKToKKyAgICAgICAg
KEpTQzo6SlNBcnJheTo6c2V0TGVuZ3RoKToKKyAgICAgICAgKEpTQzo6SlNBcnJheTo6cG9wKToK
KyAgICAgICAgKEpTQzo6SlNBcnJheTo6cHVzaCk6CisgICAgICAgICogcnVudGltZS9KU0Z1bmN0
aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6ZmluaXNoQ3JlYXRpb24pOiBTYW1l
IGlzc3VlIGFzIEludGVybmFsRnVuY3Rpb246OmZpbmlzaENyZWF0aW9uLgorCisgICAgICAgIChK
U0M6OkpTRnVuY3Rpb246OmNhbGxlckdldHRlcik6CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246
OmRlZmluZU93blByb3BlcnR5KToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsRGF0YS5jcHA6
CisgICAgICAgIChKU0M6OmVuYWJsZUFzc2VtYmxlcik6IFVzZSBDRlNUUigpIGluc3RlYWQgb2Yg
Q0ZTdHJpbmdDcmVhdGVXaXRoQ1N0cmluZygpLgorICAgICAgICBDRlN0cmluZ0NyZWF0ZVdpdGhD
U3RyaW5nKCkgY29weSB0aGUgY29udGVudCBhbmQgbWF5IGNob29zZSB0byBkZWNvZGUgdGhlIGRh
dGEuCisgICAgICAgIENGU1RSKCkgaXMgbXVjaCBtb3JlIGVmZmljaWVudC4KKworICAgICAgICAq
IHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVj
dDo6cmVzZXQpOgorICAgICAgICBKU0Z1bmN0aW9uIHVzZXMganNTdHJpbmcoKSB0byBjcmVhdGUg
dGhlIG5hbWUsIHdlIGNhbiB1c2UgbnVsbCBzdHJpbmdzIGluc3RlYWQKKyAgICAgICAgb2YgY3Jl
YXRpbmcgZW1wdHkgc3RyaW5ncy4KKworICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6Y3Jl
YXRlVGhyb3dUeXBlRXJyb3IpOiBkaXR0by4KKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2Jq
ZWN0RnVuY3Rpb25zLmNwcDoKKyAgICAgICAgKEpTQzo6ZW5jb2RlKToKKyAgICAgICAgKEpTQzo6
ZGVjb2RlKToKKyAgICAgICAgKEpTQzo6Z2xvYmFsRnVuY0V2YWwpOgorICAgICAgICAqIHJ1bnRp
bWUvSlNPTk9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OlN0cmluZ2lmaWVyOjphcHBlbmRTdHJp
bmdpZmllZFZhbHVlKToKKyAgICAgICAgKEpTQzo6U3RyaW5naWZpZXI6OkhvbGRlcjo6YXBwZW5k
TmV4dFByb3BlcnR5KToKKyAgICAgICAgKEpTQzo6SlNPTlByb3RvRnVuY1BhcnNlKToKKyAgICAg
ICAgKEpTQzo6SlNPTlByb3RvRnVuY1N0cmluZ2lmeSk6CisgICAgICAgICogcnVudGltZS9KU09i
amVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpwdXQpOgorICAgICAgICAoSlNDOjpK
U09iamVjdDo6ZGVmYXVsdFZhbHVlKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6Omhhc0luc3Rh
bmNlKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmRlZmluZU93blByb3BlcnR5KToKKyAgICAg
ICAgKiBydW50aW1lL0pTU3RyaW5nLmNwcDoKKyAgICAgICAgUmV0dXJuIGFuIGVtcHR5IEpTU3Ry
aW5nIHRvIGF2b2lkIHRoZSBjcmVhdGlvbiBvZiBhIHRlbXBvcmFyeSBlbXB0eSBTdHJpbmcuCisK
KyAgICAgICAgKEpTQzo6SlNSb3BlU3RyaW5nOjpnZXRJbmRleFNsb3dDYXNlKToKKyAgICAgICAg
KiBydW50aW1lL0pTU3RyaW5nLmg6CisgICAgICAgIChKU0MpOiBSZW1vdmUgdGhlIHZlcnNpb25z
IG9mIGpzTm9udHJpdmlhbFN0cmluZygpIHRha2luZyBhIGNoYXIqLiBBbGwgdGhlIGNhbGxlcgor
ICAgICAgICBoYXZlIGJlZW4gcmVwbGFjZWQgYnkgY2FsbCB1c2luZyBBU0NJSUxpdGVyYWwuCisK
KyAgICAgICAgKiBydW50aW1lL0pTVmFsdWUuY3BwOgorICAgICAgICAoSlNDOjpKU1ZhbHVlOjpw
dXRUb1ByaW1pdGl2ZSk6CisgICAgICAgICogcnVudGltZS9MaXRlcmFsUGFyc2VyLmNwcDoKKyAg
ICAgICAgKEpTQzo6OjpMZXhlcjo6bGV4KToKKyAgICAgICAgKEpTQzo6OjpMZXhlcjo6bGV4U3Ry
aW5nKToKKyAgICAgICAgKEpTQzo6OjpMZXhlcjo6bGV4TnVtYmVyKToKKyAgICAgICAgKEpTQzo6
OjpwYXJzZSk6CisgICAgICAgICogcnVudGltZS9MaXRlcmFsUGFyc2VyLmg6CisgICAgICAgIChK
U0M6OkxpdGVyYWxQYXJzZXI6OmdldEVycm9yTWVzc2FnZSk6CisgICAgICAgICogcnVudGltZS9O
dW1iZXJQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpudW1iZXJQcm90b0Z1bmNUb0V4cG9u
ZW50aWFsKToKKyAgICAgICAgKEpTQzo6bnVtYmVyUHJvdG9GdW5jVG9GaXhlZCk6CisgICAgICAg
IChKU0M6Om51bWJlclByb3RvRnVuY1RvUHJlY2lzaW9uKToKKyAgICAgICAgKEpTQzo6bnVtYmVy
UHJvdG9GdW5jVG9TdHJpbmcpOgorICAgICAgICAqIHJ1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3Iu
Y3BwOgorICAgICAgICAoSlNDOjpvYmplY3RDb25zdHJ1Y3RvckdldFByb3RvdHlwZU9mKToKKyAg
ICAgICAgKEpTQzo6b2JqZWN0Q29uc3RydWN0b3JHZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IpOgor
ICAgICAgICAoSlNDOjpvYmplY3RDb25zdHJ1Y3RvckdldE93blByb3BlcnR5TmFtZXMpOgorICAg
ICAgICAoSlNDOjpvYmplY3RDb25zdHJ1Y3RvcktleXMpOgorICAgICAgICAoSlNDOjp0b1Byb3Bl
cnR5RGVzY3JpcHRvcik6CisgICAgICAgIChKU0M6Om9iamVjdENvbnN0cnVjdG9yRGVmaW5lUHJv
cGVydHkpOgorICAgICAgICAoSlNDOjpvYmplY3RDb25zdHJ1Y3RvckRlZmluZVByb3BlcnRpZXMp
OgorICAgICAgICAoSlNDOjpvYmplY3RDb25zdHJ1Y3RvckNyZWF0ZSk6CisgICAgICAgIChKU0M6
Om9iamVjdENvbnN0cnVjdG9yU2VhbCk6CisgICAgICAgIChKU0M6Om9iamVjdENvbnN0cnVjdG9y
RnJlZXplKToKKyAgICAgICAgKEpTQzo6b2JqZWN0Q29uc3RydWN0b3JQcmV2ZW50RXh0ZW5zaW9u
cyk6CisgICAgICAgIChKU0M6Om9iamVjdENvbnN0cnVjdG9ySXNTZWFsZWQpOgorICAgICAgICAo
SlNDOjpvYmplY3RDb25zdHJ1Y3RvcklzRnJvemVuKToKKyAgICAgICAgKEpTQzo6b2JqZWN0Q29u
c3RydWN0b3JJc0V4dGVuc2libGUpOgorICAgICAgICAqIHJ1bnRpbWUvT2JqZWN0UHJvdG90eXBl
LmNwcDoKKyAgICAgICAgKEpTQzo6b2JqZWN0UHJvdG9GdW5jRGVmaW5lR2V0dGVyKToKKyAgICAg
ICAgKEpTQzo6b2JqZWN0UHJvdG9GdW5jRGVmaW5lU2V0dGVyKToKKyAgICAgICAgKEpTQzo6b2Jq
ZWN0UHJvdG9GdW5jVG9TdHJpbmcpOgorICAgICAgICAqIHJ1bnRpbWUvUmVnRXhwQ29uc3RydWN0
b3IuY3BwOgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RSZWdFeHApOgorICAgICAgICAqIHJ1bnRp
bWUvUmVnRXhwT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6cmVqZWN0KToKKyAgICAgICAgKEpT
Qzo6cmVnRXhwT2JqZWN0U291cmNlKToKKyAgICAgICAgKiBydW50aW1lL1JlZ0V4cFByb3RvdHlw
ZS5jcHA6CisgICAgICAgIChKU0M6OnJlZ0V4cFByb3RvRnVuY0NvbXBpbGUpOgorICAgICAgICAq
IHJ1bnRpbWUvU3RyaW5nT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6U3RyaW5nT2JqZWN0Ojpk
ZWZpbmVPd25Qcm9wZXJ0eSk6CisgICAgICAgICogcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3Bw
OgorICAgICAgICAoSlNDOjpqc1NwbGljZVN1YnN0cmluZ3MpOgorICAgICAgICAoSlNDOjpqc1Nw
bGljZVN1YnN0cmluZ3NXaXRoU2VwYXJhdG9ycyk6CisKIDIwMTItMDgtMzEgIEdlb2ZmcmV5IEdh
cmVuICA8Z2dhcmVuQGFwcGxlLmNvbT4KIAogICAgICAgICBTaHJpbmsgYWN0aXZhdGlvbiBvYmpl
Y3RzIGJ5IGhhbGYKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxs
YmFja09iamVjdEZ1bmN0aW9ucy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxi
YWNrT2JqZWN0RnVuY3Rpb25zLmgKaW5kZXggODMyNmMwNTc5YWEwNzFjMzc1NzM3ZWY2NDI3Y2Uz
MWQ3YWM2MDE1Ny4uMDY5MWRhZmMzMDU1NTc0NDE3YzExOTFmYmUyYTAzODBkMjg4MjEyYiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0RnVuY3Rp
b25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0RnVu
Y3Rpb25zLmgKQEAgLTU2OCw3ICs1NjgsNyBAQCBKU1ZhbHVlIEpTQ2FsbGJhY2tPYmplY3Q8UGFy
ZW50Pjo6c3RhdGljRnVuY3Rpb25HZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlCiAgICAg
ICAgIH0KICAgICB9CiAKLSAgICByZXR1cm4gdGhyb3dFcnJvcihleGVjLCBjcmVhdGVSZWZlcmVu
Y2VFcnJvcihleGVjLCAiU3RhdGljIGZ1bmN0aW9uIHByb3BlcnR5IGRlZmluZWQgd2l0aCBOVUxM
IGNhbGxBc0Z1bmN0aW9uIGNhbGxiYWNrLiIpKTsKKyAgICByZXR1cm4gdGhyb3dFcnJvcihleGVj
LCBjcmVhdGVSZWZlcmVuY2VFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlN0YXRpYyBmdW5jdGlv
biBwcm9wZXJ0eSBkZWZpbmVkIHdpdGggTlVMTCBjYWxsQXNGdW5jdGlvbiBjYWxsYmFjay4iKSkp
OwogfQogCiB0ZW1wbGF0ZSA8Y2xhc3MgUGFyZW50PgpAQCAtNjAwLDcgKzYwMCw3IEBAIEpTVmFs
dWUgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpjYWxsYmFja0dldHRlcihFeGVjU3RhdGUqIGV4
ZWMsIEpTVmFsdWUgc2xvdFBhCiAgICAgICAgIH0KICAgICB9CiAKLSAgICByZXR1cm4gdGhyb3dF
cnJvcihleGVjLCBjcmVhdGVSZWZlcmVuY2VFcnJvcihleGVjLCAiaGFzUHJvcGVydHkgY2FsbGJh
Y2sgcmV0dXJuZWQgdHJ1ZSBmb3IgYSBwcm9wZXJ0eSB0aGF0IGRvZXNuJ3QgZXhpc3QuIikpOwor
ICAgIHJldHVybiB0aHJvd0Vycm9yKGV4ZWMsIGNyZWF0ZVJlZmVyZW5jZUVycm9yKGV4ZWMsIEFT
Q0lJTGl0ZXJhbCgiaGFzUHJvcGVydHkgY2FsbGJhY2sgcmV0dXJuZWQgdHJ1ZSBmb3IgYSBwcm9w
ZXJ0eSB0aGF0IGRvZXNuJ3QgZXhpc3QuIikpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dFJlZi5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dFJlZi5jcHAKaW5kZXggYmFlMzEwMTA1
YjI0YjZhMmQxZmI0NmVkZjMyNjRlYWY5ZWQxM2M2OC4uMzYwZTMzN2VlY2VlMjE5NmM3YTRiOWY1
MmI2YTBhZWU4Y2MyMzBmZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9K
U0NvbnRleHRSZWYuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0
UmVmLmNwcApAQCAtMTczLDkgKzE3Myw5IEBAIEpTU3RyaW5nUmVmIEpTQ29udGV4dENyZWF0ZUJh
Y2t0cmFjZShKU0NvbnRleHRSZWYgY3R4LCB1bnNpZ25lZCBtYXhTdGFja1NpemUpCiAgICAgaWYg
KGV4ZWMtPmNhbGxlZSgpKSB7CiAgICAgICAgIGlmIChhc09iamVjdChleGVjLT5jYWxsZWUoKSkt
PmluaGVyaXRzKCZJbnRlcm5hbEZ1bmN0aW9uOjpzX2luZm8pKSB7CiAgICAgICAgICAgICBmdW5j
dGlvbk5hbWUgPSBhc0ludGVybmFsRnVuY3Rpb24oZXhlYy0+Y2FsbGVlKCkpLT5uYW1lKGV4ZWMp
OwotICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoIiMwICIpOworICAgICAgICAgICAgYnVpbGRl
ci5hcHBlbmRMaXRlcmFsKCIjMCAiKTsKICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKGZ1bmN0
aW9uTmFtZSk7Ci0gICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgiKCkgIik7CisgICAgICAgICAg
ICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIigpICIpOwogICAgICAgICAgICAgY291bnQrKzsKICAg
ICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNP
YmplY3RSZWYuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU09iamVjdFJlZi5jcHAK
aW5kZXggZTZjMGM1MjhhNzA2ZDMwYzQwNTc2ODFlYzkyOThmOWE4OWNkMjczYy4uOGIwZDRhMDlm
Y2Q1ZTZjZDNjY2Y2ODE3NmY0NWFhMWVhMDg3ZTUwNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0FQSS9KU09iamVjdFJlZi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS9KU09iamVjdFJlZi5jcHAKQEAgLTkyLDcgKzkyLDcgQEAgSlNPYmplY3RSZWYgSlNPYmpl
Y3RNYWtlRnVuY3Rpb25XaXRoQ2FsbGJhY2soSlNDb250ZXh0UmVmIGN0eCwgSlNTdHJpbmdSZWYg
bmFtZSwKIHsKICAgICBFeGVjU3RhdGUqIGV4ZWMgPSB0b0pTKGN0eCk7CiAgICAgQVBJRW50cnlT
aGltIGVudHJ5U2hpbShleGVjKTsKLSAgICByZXR1cm4gdG9SZWYoSlNDYWxsYmFja0Z1bmN0aW9u
OjpjcmVhdGUoZXhlYywgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBjYWxsQXNGdW5jdGlv
biwgbmFtZSA/IG5hbWUtPnVzdHJpbmcoKSA6ICJhbm9ueW1vdXMiKSk7CisgICAgcmV0dXJuIHRv
UmVmKEpTQ2FsbGJhY2tGdW5jdGlvbjo6Y3JlYXRlKGV4ZWMsIGV4ZWMtPmxleGljYWxHbG9iYWxP
YmplY3QoKSwgY2FsbEFzRnVuY3Rpb24sIG5hbWUgPyBuYW1lLT51c3RyaW5nKCkgOiBBU0NJSUxp
dGVyYWwoImFub255bW91cyIpKSk7CiB9CiAKIEpTT2JqZWN0UmVmIEpTT2JqZWN0TWFrZUNvbnN0
cnVjdG9yKEpTQ29udGV4dFJlZiBjdHgsIEpTQ2xhc3NSZWYganNDbGFzcywgSlNPYmplY3RDYWxs
QXNDb25zdHJ1Y3RvckNhbGxiYWNrIGNhbGxBc0NvbnN0cnVjdG9yKQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAppbmRleCBmMmEwZmE1ZjdhNDZlNGNkOTM4
OWM5OTQ3ZTA5NjU2ZjI4ZGFmNjFhLi4wMTgyNGQ2Mjc2YmFjYzRjNjBiODdhZDlmZTFmODljYzVh
ZTE2ZTcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJs
b2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNw
cApAQCAtNzUsNyArNzUsNyBAQCBzdGF0aWMgU3RyaW5nIGVzY2FwZVF1b3Rlcyhjb25zdCBTdHJp
bmcmIHN0cikKIHN0YXRpYyBTdHJpbmcgdmFsdWVUb1NvdXJjZVN0cmluZyhFeGVjU3RhdGUqIGV4
ZWMsIEpTVmFsdWUgdmFsKQogewogICAgIGlmICghdmFsKQotICAgICAgICByZXR1cm4gIjAiOwor
ICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCIwIik7CiAKICAgICBpZiAodmFsLmlzU3RyaW5n
KCkpCiAgICAgICAgIHJldHVybiBtYWtlU3RyaW5nKCJcIiIsIGVzY2FwZVF1b3Rlcyh2YWwudG9T
dHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpKSwgIlwiIik7CkBAIC0zMDE1LDE0ICszMDE1LDE0IEBA
IFN0cmluZyBDb2RlQmxvY2s6Om5hbWVGb3JSZWdpc3RlcihpbnQgcmVnaXN0ZXJOdW1iZXIpCiAg
ICAgICAgICAgICByZXR1cm4gU3RyaW5nKHB0ci0+Zmlyc3QpOwogICAgIH0KICAgICBpZiAobmVl
ZHNBY3RpdmF0aW9uKCkgJiYgcmVnaXN0ZXJOdW1iZXIgPT0gYWN0aXZhdGlvblJlZ2lzdGVyKCkp
Ci0gICAgICAgIHJldHVybiAiYWN0aXZhdGlvbiI7CisgICAgICAgIHJldHVybiBBU0NJSUxpdGVy
YWwoImFjdGl2YXRpb24iKTsKICAgICBpZiAocmVnaXN0ZXJOdW1iZXIgPT0gdGhpc1JlZ2lzdGVy
KCkpCi0gICAgICAgIHJldHVybiAidGhpcyI7CisgICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwo
InRoaXMiKTsKICAgICBpZiAodXNlc0FyZ3VtZW50cygpKSB7CiAgICAgICAgIGlmIChyZWdpc3Rl
ck51bWJlciA9PSBhcmd1bWVudHNSZWdpc3RlcigpKQotICAgICAgICAgICAgcmV0dXJuICJhcmd1
bWVudHMiOworICAgICAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgiYXJndW1lbnRzIik7CiAg
ICAgICAgIGlmICh1bm1vZGlmaWVkQXJndW1lbnRzUmVnaXN0ZXIoYXJndW1lbnRzUmVnaXN0ZXIo
KSkgPT0gcmVnaXN0ZXJOdW1iZXIpCi0gICAgICAgICAgICByZXR1cm4gInJlYWwgYXJndW1lbnRz
IjsKKyAgICAgICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwoInJlYWwgYXJndW1lbnRzIik7CiAg
ICAgfQogICAgIGlmIChyZWdpc3Rlck51bWJlciA8IDApIHsKICAgICAgICAgaW50IGFyZ3VtZW50
UG9zaXRpb24gPSAtcmVnaXN0ZXJOdW1iZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAppbmRleCBkNmI3Yjg1MTY3N2Y3NDk2Zjg5YjRi
MjE4NGM0OTU1M2E3MjY4YTlkLi4zNTEyZTMzNmNkMjNiZDE5NDc0YzNkZDE0NWQzNGU4NzE0ZTc4
NGYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJw
cmV0ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnBy
ZXRlci5jcHAKQEAgLTc0MSw2ICs3NDEsOCBAQCB2b2lkIEludGVycHJldGVyOjphZGRTdGFja1Ry
YWNlSWZOZWNlc3NhcnkoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEpTT2JqZWN0KiBlcnJvcgogICAg
ICAgICBnbG9iYWxPYmplY3QgPSBnbG9iYWxEYXRhLT5keW5hbWljR2xvYmFsT2JqZWN0OwogICAg
IGVsc2UKICAgICAgICAgZ2xvYmFsT2JqZWN0ID0gZXJyb3ItPmdsb2JhbE9iamVjdCgpOworCisg
ICAgLy8gRklYTUU6IEpTU3RyaW5nSm9pbmVyIGNvdWxkIGJlIG1vcmUgZWZmaWNpZW50IHRoYW4g
U3RyaW5nQnVpbGRlciBoZXJlLgogICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgc3RhY2tUcmFjZS5zaXplKCk7IGkrKykgewogICAgICAgICBi
dWlsZGVyLmFwcGVuZChTdHJpbmcoc3RhY2tUcmFjZVtpXS50b1N0cmluZyhnbG9iYWxPYmplY3Qt
Pmdsb2JhbEV4ZWMoKSkuaW1wbCgpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9BcnJheUNvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0FycmF5Q29uc3RydWN0b3IuY3BwCmluZGV4IDgzZTQ4Y2ExYjJkMTg2YWZhM2Q3MTBk
NWEzYWY0ZmY4ZThlMWJkYzguLmM5YTZkYzYwMGM0MjJkZmY1YjQ5OGFmY2JmN2JkYjU0YWVkMmZk
YjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5Q29uc3Ry
dWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5Q29uc3Ry
dWN0b3IuY3BwCkBAIC04NSw3ICs4NSw3IEBAIHN0YXRpYyBpbmxpbmUgSlNPYmplY3QqIGNvbnN0
cnVjdEFycmF5V2l0aFNpemVRdWlyayhFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEFyZ0xpCiAgICAg
aWYgKGFyZ3Muc2l6ZSgpID09IDEgJiYgYXJncy5hdCgwKS5pc051bWJlcigpKSB7CiAgICAgICAg
IHVpbnQzMl90IG4gPSBhcmdzLmF0KDApLnRvVUludDMyKGV4ZWMpOwogICAgICAgICBpZiAobiAh
PSBhcmdzLmF0KDApLnRvTnVtYmVyKGV4ZWMpKQotICAgICAgICAgICAgcmV0dXJuIHRocm93RXJy
b3IoZXhlYywgY3JlYXRlUmFuZ2VFcnJvcihleGVjLCAiQXJyYXkgc2l6ZSBpcyBub3QgYSBzbWFs
bCBlbm91Z2ggcG9zaXRpdmUgaW50ZWdlci4iKSk7CisgICAgICAgICAgICByZXR1cm4gdGhyb3dF
cnJvcihleGVjLCBjcmVhdGVSYW5nZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiQXJyYXkgc2l6
ZSBpcyBub3QgYSBzbWFsbCBlbm91Z2ggcG9zaXRpdmUgaW50ZWdlci4iKSkpOwogICAgICAgICBy
ZXR1cm4gY29uc3RydWN0RW1wdHlBcnJheShleGVjLCBnbG9iYWxPYmplY3QsIG4pOwogICAgIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5
cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3Bw
CmluZGV4IGQwM2NlNTMxNjdlNDYwZWFmNGE5MDUxMDQ5OGI2NTJjOWE0NzFjMDkuLjRiMTNmOTkz
Y2VkMjNiODAxM2MxOTBmY2M4YTZhYzJmOTNjMGVmMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHAKQEAgLTIwNSwxMyArMjA1LDEzIEBA
IHN0YXRpYyBpbmxpbmUgdm9pZCBzaGlmdChFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiB0aGlz
T2JqLCB1bnNpZ25lZCBoZWFkZXIsIHVuCiAgICAgICAgICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0
aW9uKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9IGVsc2UgaWYgKCF0aGlz
T2JqLT5tZXRob2RUYWJsZSgpLT5kZWxldGVQcm9wZXJ0eUJ5SW5kZXgodGhpc09iaiwgZXhlYywg
dG8pKSB7Ci0gICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCAiVW5hYmxlIHRvIGRlbGV0
ZSBwcm9wZXJ0eS4iKTsKKyAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0
ZXJhbCgiVW5hYmxlIHRvIGRlbGV0ZSBwcm9wZXJ0eS4iKSk7CiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIH0KICAgICB9CiAgICAgZm9yICh1bnNpZ25lZCBrID0gbGVuZ3RoOyBrID4gbGVu
Z3RoIC0gY291bnQ7IC0taykgewogICAgICAgICBpZiAoIXRoaXNPYmotPm1ldGhvZFRhYmxlKCkt
PmRlbGV0ZVByb3BlcnR5QnlJbmRleCh0aGlzT2JqLCBleGVjLCBrIC0gMSkpIHsKLSAgICAgICAg
ICAgIHRocm93VHlwZUVycm9yKGV4ZWMsICJVbmFibGUgdG8gZGVsZXRlIHByb3BlcnR5LiIpOwor
ICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJVbmFibGUgdG8g
ZGVsZXRlIHByb3BlcnR5LiIpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAg
IH0KQEAgLTI0Myw3ICsyNDMsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgdW5zaGlmdChFeGVjU3Rh
dGUqIGV4ZWMsIEpTT2JqZWN0KiB0aGlzT2JqLCB1bnNpZ25lZCBoZWFkZXIsCiAgICAgICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICAgICAgdGhpc09iai0+bWV0aG9kVGFibGUoKS0+cHV0QnlJ
bmRleCh0aGlzT2JqLCBleGVjLCB0bywgdmFsdWUsIHRydWUpOwogICAgICAgICB9IGVsc2UgaWYg
KCF0aGlzT2JqLT5tZXRob2RUYWJsZSgpLT5kZWxldGVQcm9wZXJ0eUJ5SW5kZXgodGhpc09iaiwg
ZXhlYywgdG8pKSB7Ci0gICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCAiVW5hYmxlIHRv
IGRlbGV0ZSBwcm9wZXJ0eS4iKTsKKyAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIEFT
Q0lJTGl0ZXJhbCgiVW5hYmxlIHRvIGRlbGV0ZSBwcm9wZXJ0eS4iKSk7CiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQpAQCAt
NDkxLDcgKzQ5MSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1
bmNQb3AoRXhlY1N0YXRlKiBleGVjKQogICAgICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkp
CiAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAg
ICAgICBpZiAoIXRoaXNPYmotPm1ldGhvZFRhYmxlKCktPmRlbGV0ZVByb3BlcnR5QnlJbmRleCh0
aGlzT2JqLCBleGVjLCBsZW5ndGggLSAxKSkgewotICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3Io
ZXhlYywgIlVuYWJsZSB0byBkZWxldGUgcHJvcGVydHkuIik7CisgICAgICAgICAgICB0aHJvd1R5
cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlVuYWJsZSB0byBkZWxldGUgcHJvcGVydHkuIikp
OwogICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAg
ICAgICAgfQogICAgICAgICBwdXRQcm9wZXJ0eShleGVjLCB0aGlzT2JqLCBleGVjLT5wcm9wZXJ0
eU5hbWVzKCkubGVuZ3RoLCBqc051bWJlcihsZW5ndGggLSAxKSk7CkBAIC01NTMsNyArNTUzLDcg
QEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY1JldmVyc2UoRXhl
Y1N0YXRlKiBleGVjKQogICAgICAgICAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAg
ICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAg
ICAgIH0gZWxzZSBpZiAoIXRoaXNPYmotPm1ldGhvZFRhYmxlKCktPmRlbGV0ZVByb3BlcnR5QnlJ
bmRleCh0aGlzT2JqLCBleGVjLCBrKSkgewotICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhl
YywgIlVuYWJsZSB0byBkZWxldGUgcHJvcGVydHkuIik7CisgICAgICAgICAgICB0aHJvd1R5cGVF
cnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlVuYWJsZSB0byBkZWxldGUgcHJvcGVydHkuIikpOwog
ICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICAg
ICAgfQogCkBAIC01NjIsNyArNTYyLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBh
cnJheVByb3RvRnVuY1JldmVyc2UoRXhlY1N0YXRlKiBleGVjKQogICAgICAgICAgICAgaWYgKGV4
ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNVbmRlZmluZWQoKSk7CiAgICAgICAgIH0gZWxzZSBpZiAoIXRoaXNPYmotPm1ldGhvZFRh
YmxlKCktPmRlbGV0ZVByb3BlcnR5QnlJbmRleCh0aGlzT2JqLCBleGVjLCBsazEpKSB7Ci0gICAg
ICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCAiVW5hYmxlIHRvIGRlbGV0ZSBwcm9wZXJ0eS4i
KTsKKyAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiVW5hYmxl
IHRvIGRlbGV0ZSBwcm9wZXJ0eS4iKSk7CiAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzVW5kZWZpbmVkKCkpOwogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQm9vbGVhblByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Cb29sZWFuUHJvdG90eXBlLmNwcAppbmRleCAxNTUxZWFiZjI2
ODIwYzRiM2FkZGE5ZTk2NmI0NDNkZDk4ZDkwNTYxLi5jOGM3NzIyMGE5NGMzNjliMTZkODViYzcy
MjE0NGUyYjc0ZmFmMjVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Cb29sZWFuUHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Cb29sZWFuUHJvdG90eXBlLmNwcApAQCAtNzcsMjEgKzc3LDIyIEBAIGJvb2wgQm9vbGVhblBy
b3RvdHlwZTo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNT
dGF0ZSogZXhlCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYm9vbGVhblByb3RvRnVu
Y1RvU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBKU0dsb2JhbERhdGEqIGdsb2JhbERh
dGEgPSAmZXhlYy0+Z2xvYmFsRGF0YSgpOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+
aG9zdFRoaXNWYWx1ZSgpOwogICAgIGlmICh0aGlzVmFsdWUgPT0ganNCb29sZWFuKGZhbHNlKSkK
LSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc05vbnRyaXZpYWxTdHJpbmcoZXhlYywg
ImZhbHNlIikpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGdsb2JhbERhdGEtPnNt
YWxsU3RyaW5ncy5mYWxzZVN0cmluZyhnbG9iYWxEYXRhKSk7CiAKICAgICBpZiAodGhpc1ZhbHVl
ID09IGpzQm9vbGVhbih0cnVlKSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc05v
bnRyaXZpYWxTdHJpbmcoZXhlYywgInRydWUiKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoZ2xvYmFsRGF0YS0+c21hbGxTdHJpbmdzLnRydWVTdHJpbmcoZ2xvYmFsRGF0YSkpOwog
CiAgICAgaWYgKCF0aGlzVmFsdWUuaW5oZXJpdHMoJkJvb2xlYW5PYmplY3Q6OnNfaW5mbykpCiAg
ICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOwogCiAgICAgaWYgKGFzQm9vbGVh
bk9iamVjdCh0aGlzVmFsdWUpLT5pbnRlcm5hbFZhbHVlKCkgPT0ganNCb29sZWFuKGZhbHNlKSkK
LSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc05vbnRyaXZpYWxTdHJpbmcoZXhlYywg
ImZhbHNlIikpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGdsb2JhbERhdGEtPnNt
YWxsU3RyaW5ncy5mYWxzZVN0cmluZyhnbG9iYWxEYXRhKSk7CiAKICAgICBBU1NFUlQoYXNCb29s
ZWFuT2JqZWN0KHRoaXNWYWx1ZSktPmludGVybmFsVmFsdWUoKSA9PSBqc0Jvb2xlYW4odHJ1ZSkp
OwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOb250cml2aWFsU3RyaW5nKGV4ZWMsICJ0
cnVlIikpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoZ2xvYmFsRGF0YS0+c21hbGxTdHJp
bmdzLnRydWVTdHJpbmcoZ2xvYmFsRGF0YSkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGJvb2xlYW5Qcm90b0Z1bmNWYWx1ZU9mKEV4ZWNTdGF0ZSogZXhlYykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVDb252ZXJzaW9uLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVDb252ZXJzaW9uLmNwcAppbmRleCA5MzMx
NTQxYTg0ODZiNTM0ZWE0ZTU2Y2JjZWRjYzA3NTM2ZjI0NWIwLi4wYjU3ZjAxMmQ1NjE0YzAyNDdh
MDdiNDM0MDBkZTk3NWJkODhmODQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9EYXRlQ29udmVyc2lvbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRGF0ZUNvbnZlcnNpb24uY3BwCkBAIC03Myw3ICs3Myw3IEBAIFN0cmluZyBmb3JtYXRE
YXRlVGltZShjb25zdCBHcmVnb3JpYW5EYXRlVGltZSYgdCwgRGF0ZVRpbWVGb3JtYXQgZm9ybWF0
LCBib29sIGFzCiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKHdlZWtkYXlOYW1lWyh0LndlZWtEYXko
KSArIDYpICUgN10pOwogCiAgICAgICAgIGlmIChhc1VUQ1ZhcmlhbnQpIHsKLSAgICAgICAgICAg
IGJ1aWxkZXIuYXBwZW5kKCIsICIpOworICAgICAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFs
KCIsICIpOwogICAgICAgICAgICAgYXBwZW5kTnVtYmVyPDI+KGJ1aWxkZXIsIHQubW9udGhEYXko
KSk7CiAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgnICcpOwogICAgICAgICAgICAgYnVpbGRl
ci5hcHBlbmQobW9udGhOYW1lW3QubW9udGgoKV0pOwpAQCAtOTYsNyArOTYsNyBAQCBTdHJpbmcg
Zm9ybWF0RGF0ZVRpbWUoY29uc3QgR3JlZ29yaWFuRGF0ZVRpbWUmIHQsIERhdGVUaW1lRm9ybWF0
IGZvcm1hdCwgYm9vbCBhcwogICAgICAgICBhcHBlbmROdW1iZXI8Mj4oYnVpbGRlciwgdC5taW51
dGUoKSk7CiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCc6Jyk7CiAgICAgICAgIGFwcGVuZE51bWJl
cjwyPihidWlsZGVyLCB0LnNlY29uZCgpKTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmQoIiBHTVQi
KTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCIgR01UIik7CiAKICAgICAgICAgaWYg
KCFhc1VUQ1ZhcmlhbnQpIHsKICAgICAgICAgICAgIGludCBvZmZzZXQgPSBhYnModC51dGNPZmZz
ZXQoKSkgLyA2MDsKQEAgLTExNCw3ICsxMTQsNyBAQCBTdHJpbmcgZm9ybWF0RGF0ZVRpbWUoY29u
c3QgR3JlZ29yaWFuRGF0ZVRpbWUmIHQsIERhdGVUaW1lRm9ybWF0IGZvcm1hdCwgYm9vbCBhcwog
ICAgICAgICAgICAgc3RyZnRpbWUodGltZVpvbmVOYW1lLCBzaXplb2YodGltZVpvbmVOYW1lKSwg
IiVaIiwgJmd0bSk7CiAjZW5kaWYKICAgICAgICAgICAgIGlmICh0aW1lWm9uZU5hbWVbMF0pIHsK
LSAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgiICgiKTsKKyAgICAgICAgICAgICAgICBi
dWlsZGVyLmFwcGVuZExpdGVyYWwoIiAoIik7CiAgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBl
bmQodGltZVpvbmVOYW1lKTsKICAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgnKScpOwog
ICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RGF0ZVByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlUHJv
dG90eXBlLmNwcAppbmRleCA4Y2ZkNDRlZWY4NzE0NDEyOWI3NjBmMDZkYjk3MjgyNDg4ZTgzNjVi
Li42MjIxMWQzMDI0NzJjYWViNGJhYzBiNzgxMDc3M2MxMWM4NWRiZjBlIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlUHJvdG90eXBlLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlUHJvdG90eXBlLmNwcApAQCAtMzM0LDcgKzMz
NCw3IEBAIHN0YXRpYyBKU0NlbGwqIGZvcm1hdExvY2FsZURhdGUoRXhlY1N0YXRlKiBleGVjLCBE
YXRlSW5zdGFuY2UqIGRhdGVPYmplY3QsIGRvdWJsCiB7CiAgICAgY29uc3QgR3JlZ29yaWFuRGF0
ZVRpbWUqIGdyZWdvcmlhbkRhdGVUaW1lID0gZGF0ZU9iamVjdC0+Z3JlZ29yaWFuRGF0ZVRpbWUo
ZXhlYyk7CiAgICAgaWYgKCFncmVnb3JpYW5EYXRlVGltZSkKLSAgICAgICAgcmV0dXJuIGpzTm9u
dHJpdmlhbFN0cmluZyhleGVjLCAiSW52YWxpZCBEYXRlIik7CisgICAgICAgIHJldHVybiBqc05v
bnRyaXZpYWxTdHJpbmcoZXhlYywgQVNDSUlMaXRlcmFsKCJJbnZhbGlkIERhdGUiKSk7CiAgICAg
cmV0dXJuIGZvcm1hdExvY2FsZURhdGUoZXhlYywgKmdyZWdvcmlhbkRhdGVUaW1lLCBmb3JtYXQp
OwogfQogCkBAIC0zNTIsNyArMzUyLDcgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIGZvcm1hdGVE
YXRlSW5zdGFuY2UoRXhlY1N0YXRlKiBleGVjLCBEYXRlVGltZUZvcm1hdCBmb3JtYXQKICAgICAg
ICAgPyB0aGlzRGF0ZU9iai0+Z3JlZ29yaWFuRGF0ZVRpbWVVVEMoZXhlYykKICAgICAgICAgOiB0
aGlzRGF0ZU9iai0+Z3JlZ29yaWFuRGF0ZVRpbWUoZXhlYyk7CiAgICAgaWYgKCFncmVnb3JpYW5E
YXRlVGltZSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc05vbnRyaXZpYWxTdHJp
bmcoZXhlYywgIkludmFsaWQgRGF0ZSIpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc05vbnRyaXZpYWxTdHJpbmcoZXhlYywgU3RyaW5nKEFTQ0lJTGl0ZXJhbCgiSW52YWxpZCBE
YXRlIikpKSk7CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTm9udHJpdmlhbFN0cmlu
ZyhleGVjLCBmb3JtYXREYXRlVGltZSgqZ3JlZ29yaWFuRGF0ZVRpbWUsIGZvcm1hdCwgYXNVVENW
YXJpYW50KSkpOwogfQpAQCAtNTQ4LDI0ICs1NDgsMzAgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBkYXRlUHJvdG9GdW5jVG9JU09TdHJpbmcoRXhlY1N0YXRlKiBleGVjKQogICAgIAog
ICAgIERhdGVJbnN0YW5jZSogdGhpc0RhdGVPYmogPSBhc0RhdGVJbnN0YW5jZSh0aGlzVmFsdWUp
OyAKICAgICBpZiAoIWlzZmluaXRlKHRoaXNEYXRlT2JqLT5pbnRlcm5hbE51bWJlcigpKSkKLSAg
ICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVSYW5nZUVycm9yKGV4ZWMsICJJ
bnZhbGlkIERhdGUiKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRl
UmFuZ2VFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkludmFsaWQgRGF0ZSIpKSk7CiAKICAgICBj
b25zdCBHcmVnb3JpYW5EYXRlVGltZSogZ3JlZ29yaWFuRGF0ZVRpbWUgPSB0aGlzRGF0ZU9iai0+
Z3JlZ29yaWFuRGF0ZVRpbWVVVEMoZXhlYyk7CiAgICAgaWYgKCFncmVnb3JpYW5EYXRlVGltZSkK
LSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc05vbnRyaXZpYWxTdHJpbmcoZXhlYywg
IkludmFsaWQgRGF0ZSIpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc05vbnRy
aXZpYWxTdHJpbmcoZXhlYywgU3RyaW5nKEFTQ0lJTGl0ZXJhbCgiSW52YWxpZCBEYXRlIikpKSk7
CiAgICAgLy8gTWF4aW11bSBhbW91bnQgb2Ygc3BhY2Ugd2UgbmVlZCBpbiBidWZmZXI6IDcgKG1h
eC4gZGlnaXRzIGluIHllYXIpICsgMiAqIDUgKDIgY2hhcmFjdGVycyBlYWNoIGZvciBtb250aCwg
ZGF5LCBob3VyLCBtaW51dGUsIHNlY29uZCkgKyA0ICguICsgMyBkaWdpdHMgZm9yIG1pbGxpc2Vj
b25kcykKICAgICAvLyA2IGZvciBmb3JtYXR0aW5nIGFuZCBvbmUgZm9yIG51bGwgdGVybWluYXRp
b24gPSAyOC4gV2UgYWRkIG9uZSBleHRyYSBjaGFyYWN0ZXIgdG8gYWxsb3cgdXMgdG8gZm9yY2Ug
bnVsbCB0ZXJtaW5hdGlvbi4KLSAgICBjaGFyIGJ1ZmZlclsyOV07CisgICAgY2hhciBidWZmZXJb
MjhdOwogICAgIC8vIElmIHRoZSB5ZWFyIGlzIG91dHNpZGUgdGhlIGJvdW5kcyBvZiAwIGFuZCA5
OTk5IGluY2x1c2l2ZSB3ZSB3YW50IHRvIHVzZSB0aGUgZXh0ZW5kZWQgeWVhciBmb3JtYXQgKEVT
IDE1LjkuMS4xNS4xKS4KICAgICBpbnQgbXMgPSBzdGF0aWNfY2FzdDxpbnQ+KGZtb2QodGhpc0Rh
dGVPYmotPmludGVybmFsTnVtYmVyKCksIG1zUGVyU2Vjb25kKSk7CiAgICAgaWYgKG1zIDwgMCkK
ICAgICAgICAgbXMgKz0gbXNQZXJTZWNvbmQ7CisKKyAgICBpbnQgY2hhcmFjdGVyc1dyaXR0ZW47
CiAgICAgaWYgKGdyZWdvcmlhbkRhdGVUaW1lLT55ZWFyKCkgPiA5OTk5IHx8IGdyZWdvcmlhbkRh
dGVUaW1lLT55ZWFyKCkgPCAwKQotICAgICAgICBzbnByaW50ZihidWZmZXIsIHNpemVvZihidWZm
ZXIpIC0gMSwgIiUrMDdkLSUwMmQtJTAyZFQlMDJkOiUwMmQ6JTAyZC4lMDNkWiIsIGdyZWdvcmlh
bkRhdGVUaW1lLT55ZWFyKCksIGdyZWdvcmlhbkRhdGVUaW1lLT5tb250aCgpICsgMSwgZ3JlZ29y
aWFuRGF0ZVRpbWUtPm1vbnRoRGF5KCksIGdyZWdvcmlhbkRhdGVUaW1lLT5ob3VyKCksIGdyZWdv
cmlhbkRhdGVUaW1lLT5taW51dGUoKSwgZ3JlZ29yaWFuRGF0ZVRpbWUtPnNlY29uZCgpLCBtcyk7
CisgICAgICAgIGNoYXJhY3RlcnNXcml0dGVuID0gc25wcmludGYoYnVmZmVyLCBzaXplb2YoYnVm
ZmVyKSwgIiUrMDdkLSUwMmQtJTAyZFQlMDJkOiUwMmQ6JTAyZC4lMDNkWiIsIGdyZWdvcmlhbkRh
dGVUaW1lLT55ZWFyKCksIGdyZWdvcmlhbkRhdGVUaW1lLT5tb250aCgpICsgMSwgZ3JlZ29yaWFu
RGF0ZVRpbWUtPm1vbnRoRGF5KCksIGdyZWdvcmlhbkRhdGVUaW1lLT5ob3VyKCksIGdyZWdvcmlh
bkRhdGVUaW1lLT5taW51dGUoKSwgZ3JlZ29yaWFuRGF0ZVRpbWUtPnNlY29uZCgpLCBtcyk7CiAg
ICAgZWxzZQotICAgICAgICBzbnByaW50ZihidWZmZXIsIHNpemVvZihidWZmZXIpIC0gMSwgIiUw
NGQtJTAyZC0lMDJkVCUwMmQ6JTAyZDolMDJkLiUwM2RaIiwgZ3JlZ29yaWFuRGF0ZVRpbWUtPnll
YXIoKSwgZ3JlZ29yaWFuRGF0ZVRpbWUtPm1vbnRoKCkgKyAxLCBncmVnb3JpYW5EYXRlVGltZS0+
bW9udGhEYXkoKSwgZ3JlZ29yaWFuRGF0ZVRpbWUtPmhvdXIoKSwgZ3JlZ29yaWFuRGF0ZVRpbWUt
Pm1pbnV0ZSgpLCBncmVnb3JpYW5EYXRlVGltZS0+c2Vjb25kKCksIG1zKTsKLSAgICBidWZmZXJb
c2l6ZW9mKGJ1ZmZlcikgLSAxXSA9IDA7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc05v
bnRyaXZpYWxTdHJpbmcoZXhlYywgYnVmZmVyKSk7CisgICAgICAgIGNoYXJhY3RlcnNXcml0dGVu
ID0gc25wcmludGYoYnVmZmVyLCBzaXplb2YoYnVmZmVyKSwgIiUwNGQtJTAyZC0lMDJkVCUwMmQ6
JTAyZDolMDJkLiUwM2RaIiwgZ3JlZ29yaWFuRGF0ZVRpbWUtPnllYXIoKSwgZ3JlZ29yaWFuRGF0
ZVRpbWUtPm1vbnRoKCkgKyAxLCBncmVnb3JpYW5EYXRlVGltZS0+bW9udGhEYXkoKSwgZ3JlZ29y
aWFuRGF0ZVRpbWUtPmhvdXIoKSwgZ3JlZ29yaWFuRGF0ZVRpbWUtPm1pbnV0ZSgpLCBncmVnb3Jp
YW5EYXRlVGltZS0+c2Vjb25kKCksIG1zKTsKKworICAgIEFTU0VSVChjaGFyYWN0ZXJzV3JpdHRl
biA+IDAgJiYgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGNoYXJhY3RlcnNXcml0dGVuKSA8IHNpemVv
ZihidWZmZXIpKTsKKyAgICBpZiAoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGNoYXJhY3RlcnNXcml0
dGVuKSA+PSBzaXplb2YoYnVmZmVyKSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c0VtcHR5U3RyaW5nKGV4ZWMpKTsKKworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOb250
cml2aWFsU3RyaW5nKGV4ZWMsIFN0cmluZyhidWZmZXIsIGNoYXJhY3RlcnNXcml0dGVuKSkpOwog
fQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNUb0RhdGVTdHJp
bmcoRXhlY1N0YXRlKiBleGVjKQpAQCAtMTExMywxMyArMTExOSwxMyBAQCBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNUb0pTT04oRXhlY1N0YXRlKiBleGVjKQogICAg
IENhbGxEYXRhIGNhbGxEYXRhOwogICAgIENhbGxUeXBlIGNhbGxUeXBlID0gZ2V0Q2FsbERhdGEo
dG9JU09WYWx1ZSwgY2FsbERhdGEpOwogICAgIGlmIChjYWxsVHlwZSA9PSBDYWxsVHlwZU5vbmUp
Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMs
ICJ0b0lTT1N0cmluZyBpcyBub3QgYSBmdW5jdGlvbiIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93
Vk1FcnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJ0b0lTT1N0
cmluZyBpcyBub3QgYSBmdW5jdGlvbiIpKSk7CiAKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGNhbGwo
ZXhlYywgYXNPYmplY3QodG9JU09WYWx1ZSksIGNhbGxUeXBlLCBjYWxsRGF0YSwgb2JqZWN0LCBl
eGVjLT5lbXB0eUxpc3QoKSk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVsbCgpKTsKICAgICBpZiAocmVzdWx0LmlzT2Jq
ZWN0KCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9y
KGV4ZWMsICJ0b0lTT1N0cmluZyBkaWQgbm90IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZSIpKTsK
KyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywg
QVNDSUlMaXRlcmFsKCJ0b0lTT1N0cmluZyBkaWQgbm90IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1
ZSIpKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvci5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9FcnJvci5jcHAKaW5kZXggMGE1MjJjNGZkMDAzZGFkMDY2NDhh
OGQxMzlhY2FmYzA0ZmU1YjdjMC4uMjdhNzI5ZDBhYWRkYThmYjg0MjYyYWE3NGJjNWRiNTJhMjAw
ZmFhNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3IuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yLmNwcApAQCAtODEsNyAr
ODEsNyBAQCBKU09iamVjdCogY3JlYXRlVHlwZUVycm9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKIAogSlNPYmplY3QqIGNyZWF0ZU5vdEVub3Vn
aEFyZ3VtZW50c0Vycm9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiB7Ci0gICAgcmV0
dXJuIGNyZWF0ZVR5cGVFcnJvcihnbG9iYWxPYmplY3QsICJOb3QgZW5vdWdoIGFyZ3VtZW50cyIp
OworICAgIHJldHVybiBjcmVhdGVUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBBU0NJSUxpdGVyYWwo
Ik5vdCBlbm91Z2ggYXJndW1lbnRzIikpOwogfQogCiBKU09iamVjdCogY3JlYXRlVVJJRXJyb3Io
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKQpAQCAt
MTY5LDEyICsxNjksMTIgQEAgSlNPYmplY3QqIHRocm93RXJyb3IoRXhlY1N0YXRlKiBleGVjLCBK
U09iamVjdCogZXJyb3IpCiAKIEpTT2JqZWN0KiB0aHJvd1R5cGVFcnJvcihFeGVjU3RhdGUqIGV4
ZWMpCiB7Ci0gICAgcmV0dXJuIHRocm93RXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMs
ICJUeXBlIGVycm9yIikpOworICAgIHJldHVybiB0aHJvd0Vycm9yKGV4ZWMsIGNyZWF0ZVR5cGVF
cnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlR5cGUgZXJyb3IiKSkpOwogfQogCiBKU09iamVjdCog
dGhyb3dTeW50YXhFcnJvcihFeGVjU3RhdGUqIGV4ZWMpCiB7Ci0gICAgcmV0dXJuIHRocm93RXJy
b3IoZXhlYywgY3JlYXRlU3ludGF4RXJyb3IoZXhlYywgIlN5bnRheCBlcnJvciIpKTsKKyAgICBy
ZXR1cm4gdGhyb3dFcnJvcihleGVjLCBjcmVhdGVTeW50YXhFcnJvcihleGVjLCBBU0NJSUxpdGVy
YWwoIlN5bnRheCBlcnJvciIpKSk7CiB9CiAKIEFTU0VSVF9DTEFTU19GSVRTX0lOX0NFTEwoU3Ry
aWN0TW9kZVR5cGVFcnJvckZ1bmN0aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0Vycm9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJv
ci5oCmluZGV4IGJjNzFmNzBiMTkwNWU0YTNmODg0Zjc5ZTU0NzZlZjIwNWZmZjZjNTMuLjljMzRh
MDU3NDY5NzIzMDQ0OWNlY2QyZjQ0MmI1OGQ5MDA0Yzk2YWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRXJyb3IuaApAQCAtODksNyArODksNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgc3RhdGljIFN0cmljdE1vZGVUeXBlRXJyb3JGdW5jdGlvbiogY3JlYXRlKEV4ZWNTdGF0ZSog
ZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUs
IGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKICAgICAgICAgewogICAgICAgICAgICAgU3RyaWN0TW9k
ZVR5cGVFcnJvckZ1bmN0aW9uKiBmdW5jdGlvbiA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxs
PFN0cmljdE1vZGVUeXBlRXJyb3JGdW5jdGlvbj4oKmV4ZWMtPmhlYXAoKSkpIFN0cmljdE1vZGVU
eXBlRXJyb3JGdW5jdGlvbihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgbWVzc2FnZSk7Ci0gICAg
ICAgICAgICBmdW5jdGlvbi0+ZmluaXNoQ3JlYXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCAiIik7
CisgICAgICAgICAgICBmdW5jdGlvbi0+ZmluaXNoQ3JlYXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgp
LCBTdHJpbmcoKSk7CiAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb247CiAgICAgICAgIH0KICAg
ICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yUHJvdG90
eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yUHJvdG90eXBlLmNw
cAppbmRleCAzNTRhMzEyMWE0Yjg3YTM2NDA0YjlkN2M5ZmVjMmM0NDE0YzI3MGYyLi42YzlkNmRm
MDRkMzdkNGFlYTY3MTBkZjdmNDY2OWRjMTlhMjk5YTAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9FcnJvclByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JQcm90b3R5cGUuY3BwCkBAIC01OSw3ICs1OSw3IEBAIHZv
aWQgRXJyb3JQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9i
YWxPYmplY3QqKQogewogICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKGV4ZWMtPmdsb2JhbERhdGEo
KSwgIiIpOwogICAgIEFTU0VSVChpbmhlcml0cygmc19pbmZvKSk7Ci0gICAgcHV0RGlyZWN0KGV4
ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLm5hbWUsIGpzTm9udHJpdmlh
bFN0cmluZyhleGVjLCAiRXJyb3IiKSwgRG9udEVudW0pOworICAgIHB1dERpcmVjdChleGVjLT5n
bG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5uYW1lLCBqc05vbnRyaXZpYWxTdHJp
bmcoZXhlYywgU3RyaW5nKEFTQ0lJTGl0ZXJhbCgiRXJyb3IiKSkpLCBEb250RW51bSk7CiB9CiAK
IGJvb2wgRXJyb3JQcm90b3R5cGU6OmdldE93blByb3BlcnR5U2xvdChKU0NlbGwqIGNlbGwsIEV4
ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90ICZz
bG90KQpAQCAtOTgsNyArOTgsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGVycm9y
UHJvdG9GdW5jVG9TdHJpbmcoRXhlY1N0YXRlKiBleGVjKQogICAgIC8vIDQuIElmIG5hbWUgaXMg
dW5kZWZpbmVkLCB0aGVuIGxldCBuYW1lIGJlICJFcnJvciI7IGVsc2UgbGV0IG5hbWUgYmUgVG9T
dHJpbmcobmFtZSkuCiAgICAgU3RyaW5nIG5hbWVTdHJpbmc7CiAgICAgaWYgKG5hbWUuaXNVbmRl
ZmluZWQoKSkKLSAgICAgICAgbmFtZVN0cmluZyA9ICJFcnJvciI7CisgICAgICAgIG5hbWVTdHJp
bmcgPSBBU0NJSUxpdGVyYWwoIkVycm9yIik7CiAgICAgZWxzZSB7CiAgICAgICAgIG5hbWVTdHJp
bmcgPSBuYW1lLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKICAgICAgICAgaWYgKGV4ZWMt
PmhhZEV4Y2VwdGlvbigpKQpAQCAtMTE1LDcgKzExNSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgZXJyb3JQcm90b0Z1bmNUb1N0cmluZyhFeGVjU3RhdGUqIGV4ZWMpCiAgICAgLy8g
Ny4gSWYgbXNnIGlzIHVuZGVmaW5lZCwgdGhlbiBsZXQgbXNnIGJlIHRoZSBlbXB0eSBTdHJpbmc7
IGVsc2UgbGV0IG1zZyBiZSBUb1N0cmluZyhtc2cpLgogICAgIFN0cmluZyBtZXNzYWdlU3RyaW5n
OwogICAgIGlmIChtZXNzYWdlLmlzVW5kZWZpbmVkKCkpCi0gICAgICAgIG1lc3NhZ2VTdHJpbmcg
PSAiIjsKKyAgICAgICAgbWVzc2FnZVN0cmluZyA9IFN0cmluZygpOwogICAgIGVsc2UgewogICAg
ICAgICBtZXNzYWdlU3RyaW5nID0gbWVzc2FnZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7
CiAgICAgICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5jcHAKaW5kZXggODNhNGUwM2MzYjNi
NzA0MzUzNDk5YzRjYzczZjIxYmE0YmZhY2E5NC4uNzcxZWRjZTEyYmUxZmM4NTc3YjAyMGFlMjBj
YTFiNGNmYTRkYzc0NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RXhjZXB0aW9uSGVscGVycy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RXhjZXB0aW9uSGVscGVycy5jcHAKQEAgLTQ3LDcgKzQ3LDcgQEAgY29uc3QgQ2xhc3NJbmZvIElu
dGVycnVwdGVkRXhlY3V0aW9uRXJyb3I6OnNfaW5mbyA9IHsgIkludGVycnVwdGVkRXhlY3V0aW9u
RXJyb3IKIEpTVmFsdWUgSW50ZXJydXB0ZWRFeGVjdXRpb25FcnJvcjo6ZGVmYXVsdFZhbHVlKGNv
bnN0IEpTT2JqZWN0KiwgRXhlY1N0YXRlKiBleGVjLCBQcmVmZXJyZWRQcmltaXRpdmVUeXBlIGhp
bnQpCiB7CiAgICAgaWYgKGhpbnQgPT0gUHJlZmVyU3RyaW5nKQotICAgICAgICByZXR1cm4ganNO
b250cml2aWFsU3RyaW5nKGV4ZWMsICJKYXZhU2NyaXB0IGV4ZWN1dGlvbiBleGNlZWRlZCB0aW1l
b3V0LiIpOworICAgICAgICByZXR1cm4ganNOb250cml2aWFsU3RyaW5nKGV4ZWMsIFN0cmluZyhB
U0NJSUxpdGVyYWwoIkphdmFTY3JpcHQgZXhlY3V0aW9uIGV4Y2VlZGVkIHRpbWVvdXQuIikpKTsK
ICAgICByZXR1cm4gSlNWYWx1ZShzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46OnF1aWV0X05h
TigpKTsKIH0KIApAQCAtNzQsNyArNzQsNyBAQCBjb25zdCBDbGFzc0luZm8gVGVybWluYXRlZEV4
ZWN1dGlvbkVycm9yOjpzX2luZm8gPSB7ICJUZXJtaW5hdGVkRXhlY3V0aW9uRXJyb3IiLAogSlNW
YWx1ZSBUZXJtaW5hdGVkRXhlY3V0aW9uRXJyb3I6OmRlZmF1bHRWYWx1ZShjb25zdCBKU09iamVj
dCosIEV4ZWNTdGF0ZSogZXhlYywgUHJlZmVycmVkUHJpbWl0aXZlVHlwZSBoaW50KQogewogICAg
IGlmIChoaW50ID09IFByZWZlclN0cmluZykKLSAgICAgICAgcmV0dXJuIGpzTm9udHJpdmlhbFN0
cmluZyhleGVjLCAiSmF2YVNjcmlwdCBleGVjdXRpb24gdGVybWluYXRlZC4iKTsKKyAgICAgICAg
cmV0dXJuIGpzTm9udHJpdmlhbFN0cmluZyhleGVjLCBTdHJpbmcoQVNDSUlMaXRlcmFsKCJKYXZh
U2NyaXB0IGV4ZWN1dGlvbiB0ZXJtaW5hdGVkLiIpKSk7CiAgICAgcmV0dXJuIEpTVmFsdWUoc3Rk
OjpudW1lcmljX2xpbWl0czxkb3VibGU+OjpxdWlldF9OYU4oKSk7CiB9CiAKQEAgLTk2LDEyICs5
NiwxMiBAQCBib29sIGlzVGVybWluYXRlZEV4ZWN1dGlvbkV4Y2VwdGlvbihKU1ZhbHVlIHZhbHVl
KQogCiBKU09iamVjdCogY3JlYXRlU3RhY2tPdmVyZmxvd0Vycm9yKEV4ZWNTdGF0ZSogZXhlYykK
IHsKLSAgICByZXR1cm4gY3JlYXRlUmFuZ2VFcnJvcihleGVjLCAiTWF4aW11bSBjYWxsIHN0YWNr
IHNpemUgZXhjZWVkZWQuIik7CisgICAgcmV0dXJuIGNyZWF0ZVJhbmdlRXJyb3IoZXhlYywgQVND
SUlMaXRlcmFsKCJNYXhpbXVtIGNhbGwgc3RhY2sgc2l6ZSBleGNlZWRlZC4iKSk7CiB9CiAKIEpT
T2JqZWN0KiBjcmVhdGVTdGFja092ZXJmbG93RXJyb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCkKIHsKLSAgICByZXR1cm4gY3JlYXRlUmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsICJNYXhp
bXVtIGNhbGwgc3RhY2sgc2l6ZSBleGNlZWRlZC4iKTsKKyAgICByZXR1cm4gY3JlYXRlUmFuZ2VF
cnJvcihnbG9iYWxPYmplY3QsIEFTQ0lJTGl0ZXJhbCgiTWF4aW11bSBjYWxsIHN0YWNrIHNpemUg
ZXhjZWVkZWQuIikpOwogfQogCiBKU09iamVjdCogY3JlYXRlVW5kZWZpbmVkVmFyaWFibGVFcnJv
cihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIGlkZW50KQpAQCAtMTUzLDcgKzE1
Myw3IEBAIEpTT2JqZWN0KiBjcmVhdGVFcnJvckZvckludmFsaWRHbG9iYWxBc3NpZ25tZW50KEV4
ZWNTdGF0ZSogZXhlYywgY29uc3QgU3RyaW5nJiBwCiAKIEpTT2JqZWN0KiBjcmVhdGVPdXRPZk1l
bW9yeUVycm9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiB7Ci0gICAgcmV0dXJuIGNy
ZWF0ZUVycm9yKGdsb2JhbE9iamVjdCwgIk91dCBvZiBtZW1vcnkiKTsKKyAgICByZXR1cm4gY3Jl
YXRlRXJyb3IoZ2xvYmFsT2JqZWN0LCBBU0NJSUxpdGVyYWwoIk91dCBvZiBtZW1vcnkiKSk7CiB9
CiAKIEpTT2JqZWN0KiB0aHJvd091dE9mTWVtb3J5RXJyb3IoRXhlY1N0YXRlKiBleGVjKQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcAppbmRleCAxZTkwMTQ3
ZjZhNjdiZjQ0ZTliY2VmMTdhY2M2MTMzNDFjMzJjYThhLi43N2MyNzQ5MDM1YTY5NDA5OTg0MjYy
ZWQ2OGQwMzNkODQzYjk0NmNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9FeGVjdXRhYmxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9F
eGVjdXRhYmxlLmNwcApAQCAtMjA5LDcgKzIwOSw3IEBAIEpTT2JqZWN0KiBFdmFsRXhlY3V0YWJs
ZTo6Y29tcGlsZUludGVybmFsKEV4ZWNTdGF0ZSogZXhlYywgSlNTY29wZSogc2NvcGUsIEpJVENv
CiAgICAgICAgIG1fZXZhbENvZGVCbG9jayA9IG5ld0NvZGVCbG9jay5yZWxlYXNlKCk7CiAgICAg
fSBlbHNlIHsKICAgICAgICAgaWYgKCFsZXhpY2FsR2xvYmFsT2JqZWN0LT5ldmFsRW5hYmxlZCgp
KQotICAgICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoZXhlYywgY3JlYXRlRXZhbEVycm9yKGV4
ZWMsICJFdmFsIGlzIGRpc2FibGVkIikpOworICAgICAgICAgICAgcmV0dXJuIHRocm93RXJyb3Io
ZXhlYywgY3JlYXRlRXZhbEVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiRXZhbCBpcyBkaXNhYmxl
ZCIpKSk7CiAgICAgICAgIFJlZlB0cjxFdmFsTm9kZT4gZXZhbE5vZGUgPSBwYXJzZTxFdmFsTm9k
ZT4oZ2xvYmFsRGF0YSwgbGV4aWNhbEdsb2JhbE9iamVjdCwgbV9zb3VyY2UsIDAsIGlzU3RyaWN0
TW9kZSgpID8gSlNQYXJzZVN0cmljdCA6IEpTUGFyc2VOb3JtYWwsIEV2YWxOb2RlOjppc0Z1bmN0
aW9uTm9kZSA/IEpTUGFyc2VGdW5jdGlvbkNvZGUgOiBKU1BhcnNlUHJvZ3JhbUNvZGUsIGxleGlj
YWxHbG9iYWxPYmplY3QtPmRlYnVnZ2VyKCksIGV4ZWMsICZleGNlcHRpb24pOwogICAgICAgICBp
ZiAoIWV2YWxOb2RlKSB7CiAgICAgICAgICAgICBBU1NFUlQoZXhjZXB0aW9uKTsKQEAgLTY3NSw3
ICs2NzUsNyBAQCBTdHJpbmcgRnVuY3Rpb25FeGVjdXRhYmxlOjpwYXJhbVN0cmluZygpIGNvbnN0
CiAgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwogICAgIGZvciAoc2l6ZV90IHBvcyA9IDA7IHBv
cyA8IHBhcmFtZXRlcnMuc2l6ZSgpOyArK3BvcykgewogICAgICAgICBpZiAoIWJ1aWxkZXIuaXNF
bXB0eSgpKQotICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoIiwgIik7CisgICAgICAgICAgICBi
dWlsZGVyLmFwcGVuZExpdGVyYWwoIiwgIik7CiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKHBhcmFt
ZXRlcnNbcG9zXS51c3RyaW5nKCkpOwogICAgIH0KICAgICByZXR1cm4gYnVpbGRlci50b1N0cmlu
ZygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25D
b25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkNv
bnN0cnVjdG9yLmNwcAppbmRleCAwNDExYTBjNTA4YTFlNzYwNTViMTdmNjQ0ZDdmODg3NzhmNTFh
ODQ0Li40MDUwN2RhZTE2NmJlNzE2MTE3ZThkZjEzYjlhY2MzYTYwMzk0NDViIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmNw
cApAQCAtODIsNyArODIsNyBAQCBDYWxsVHlwZSBGdW5jdGlvbkNvbnN0cnVjdG9yOjpnZXRDYWxs
RGF0YShKU0NlbGwqLCBDYWxsRGF0YSYgY2FsbERhdGEpCiBKU09iamVjdCogY29uc3RydWN0RnVu
Y3Rpb24oRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25z
dCBBcmdMaXN0JiBhcmdzLCBjb25zdCBJZGVudGlmaWVyJiBmdW5jdGlvbk5hbWUsIGNvbnN0IFN0
cmluZyYgc291cmNlVVJMLCBjb25zdCBUZXh0UG9zaXRpb24mIHBvc2l0aW9uKQogewogICAgIGlm
ICghZ2xvYmFsT2JqZWN0LT5ldmFsRW5hYmxlZCgpKQotICAgICAgICByZXR1cm4gdGhyb3dFcnJv
cihleGVjLCBjcmVhdGVFdmFsRXJyb3IoZXhlYywgIkZ1bmN0aW9uIGNvbnN0cnVjdG9yIGlzIGRp
c2FibGVkIikpOworICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihleGVjLCBjcmVhdGVFdmFsRXJy
b3IoZXhlYywgQVNDSUlMaXRlcmFsKCJGdW5jdGlvbiBjb25zdHJ1Y3RvciBpcyBkaXNhYmxlZCIp
KSk7CiAgICAgcmV0dXJuIGNvbnN0cnVjdEZ1bmN0aW9uU2tpcHBpbmdFdmFsRW5hYmxlZENoZWNr
KGV4ZWMsIGdsb2JhbE9iamVjdCwgYXJncywgZnVuY3Rpb25OYW1lLCBzb3VyY2VVUkwsIHBvc2l0
aW9uKTsKIH0KIApAQCAtOTMsMjAgKzkzLDIwIEBAIEpTT2JqZWN0KiBjb25zdHJ1Y3RGdW5jdGlv
blNraXBwaW5nRXZhbEVuYWJsZWRDaGVjayhFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqCiAg
ICAgLy8gV2UgYWxzbyBuZWVkIFxuIGJlZm9yZSB0aGUgY2xvc2luZyB9IHRvIGhhbmRsZSAvLyBj
b21tZW50cyBhdCB0aGUgZW5kIG9mIHRoZSBsYXN0IGxpbmUKICAgICBTdHJpbmcgcHJvZ3JhbTsK
ICAgICBpZiAoYXJncy5pc0VtcHR5KCkpCi0gICAgICAgIHByb2dyYW0gPSAiKGZ1bmN0aW9uKCkg
eyBcbn0pIjsKKyAgICAgICAgcHJvZ3JhbSA9IEFTQ0lJTGl0ZXJhbCgiKGZ1bmN0aW9uKCkgeyBc
bn0pIik7CiAgICAgZWxzZSBpZiAoYXJncy5zaXplKCkgPT0gMSkKICAgICAgICAgcHJvZ3JhbSA9
IG1ha2VTdHJpbmcoIihmdW5jdGlvbigpIHsgIiwgYXJncy5hdCgwKS50b1N0cmluZyhleGVjKS0+
dmFsdWUoZXhlYyksICJcbn0pIik7CiAgICAgZWxzZSB7CiAgICAgICAgIFN0cmluZ0J1aWxkZXIg
YnVpbGRlcjsKLSAgICAgICAgYnVpbGRlci5hcHBlbmQoIihmdW5jdGlvbigiKTsKKyAgICAgICAg
YnVpbGRlci5hcHBlbmRMaXRlcmFsKCIoZnVuY3Rpb24oIik7CiAgICAgICAgIGJ1aWxkZXIuYXBw
ZW5kKGFyZ3MuYXQoMCkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpKTsKICAgICAgICAgZm9y
IChzaXplX3QgaSA9IDE7IGkgPCBhcmdzLnNpemUoKSAtIDE7IGkrKykgewotICAgICAgICAgICAg
YnVpbGRlci5hcHBlbmQoIiwiKTsKKyAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcsJyk7CiAg
ICAgICAgICAgICBidWlsZGVyLmFwcGVuZChhcmdzLmF0KGkpLnRvU3RyaW5nKGV4ZWMpLT52YWx1
ZShleGVjKSk7CiAgICAgICAgIH0KLSAgICAgICAgYnVpbGRlci5hcHBlbmQoIikgeyAiKTsKKyAg
ICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCIpIHsgIik7CiAgICAgICAgIGJ1aWxkZXIuYXBw
ZW5kKGFyZ3MuYXQoYXJncy5zaXplKCkgLSAxKS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykp
OwotICAgICAgICBidWlsZGVyLmFwcGVuZCgiXG59KSIpOworICAgICAgICBidWlsZGVyLmFwcGVu
ZExpdGVyYWwoIlxufSkiKTsKICAgICAgICAgcHJvZ3JhbSA9IGJ1aWxkZXIudG9TdHJpbmcoKTsK
ICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0
aW9uUHJvdG90eXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvblBy
b3RvdHlwZS5oCmluZGV4IDlmZmViZjdhOWVkZDUwN2Q2MjNjZWUzNmEwZTM1NjkzM2E4NTI1MzMu
LjA3ZjM4MTMwNjNmMDI0YmVmNDhkNWQyMzMxOTAzYzc3NTEwNzRjNGIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuaApAQCAtMzIsNyAr
MzIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgc3RhdGljIEZ1bmN0aW9uUHJvdG90eXBl
KiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICAgICAgewogICAgICAgICAgICAgRnVuY3Rpb25Qcm90
b3R5cGUqIHByb3RvdHlwZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEZ1bmN0aW9uUHJv
dG90eXBlPigqZXhlYy0+aGVhcCgpKSkgRnVuY3Rpb25Qcm90b3R5cGUoZ2xvYmFsT2JqZWN0LCBz
dHJ1Y3R1cmUpOwotICAgICAgICAgICAgcHJvdG90eXBlLT5maW5pc2hDcmVhdGlvbihleGVjLCAi
Iik7CisgICAgICAgICAgICBwcm90b3R5cGUtPmZpbmlzaENyZWF0aW9uKGV4ZWMsIFN0cmluZygp
KTsKICAgICAgICAgICAgIHJldHVybiBwcm90b3R5cGU7CiAgICAgICAgIH0KICAgICAgICAgCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9u
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGVybmFsRnVuY3Rpb24uY3Bw
CmluZGV4IDIxNmRjZTM3OTU1ZmQ0Nzc5ZTVhNWQ0OTdhNDA1MmYxNzdlMzU2YWYuLmUyZGUwM2Q5
Mjk2MGU0OGM0MmM4YThhZWU5MjU5NzUxYmJiYmEyZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0ludGVybmFsRnVuY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0ludGVybmFsRnVuY3Rpb24uY3BwCkBAIC00NCw3ICs0NCw3IEBA
IHZvaWQgSW50ZXJuYWxGdW5jdGlvbjo6ZmluaXNoQ3JlYXRpb24oSlNHbG9iYWxEYXRhJiBnbG9i
YWxEYXRhLCBjb25zdCBTdHJpbmcmIG5hCiAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24oZ2xvYmFs
RGF0YSk7CiAgICAgQVNTRVJUKGluaGVyaXRzKCZzX2luZm8pKTsKICAgICBBU1NFUlQobWV0aG9k
VGFibGUoKS0+Z2V0Q2FsbERhdGEgIT0gSW50ZXJuYWxGdW5jdGlvbjo6c19pbmZvLm1ldGhvZFRh
YmxlLmdldENhbGxEYXRhKTsKLSAgICBwdXREaXJlY3QoZ2xvYmFsRGF0YSwgZ2xvYmFsRGF0YS5w
cm9wZXJ0eU5hbWVzLT5uYW1lLCBqc1N0cmluZygmZ2xvYmFsRGF0YSwgbmFtZS5pc051bGwoKSA/
ICIiIDogbmFtZSksIERvbnREZWxldGUgfCBSZWFkT25seSB8IERvbnRFbnVtKTsKKyAgICBwdXRE
aXJlY3QoZ2xvYmFsRGF0YSwgZ2xvYmFsRGF0YS5wcm9wZXJ0eU5hbWVzLT5uYW1lLCBqc1N0cmlu
ZygmZ2xvYmFsRGF0YSwgbmFtZSksIERvbnREZWxldGUgfCBSZWFkT25seSB8IERvbnRFbnVtKTsK
IH0KIAogY29uc3QgU3RyaW5nJiBJbnRlcm5hbEZ1bmN0aW9uOjpuYW1lKEV4ZWNTdGF0ZSogZXhl
YykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5jcHAKaW5kZXggZjI0ZGM3
NTFkYmM4OTFmZjZiZjQxY2E5YTg4NmVmYmYxYmFkODIxMy4uYTBmYWZjNzc4YWY2ZWQyYmZjYjA1
OTBkMzU0Mzg3NWI4ZDNmMjM0NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNBcnJheS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNB
cnJheS5jcHAKQEAgLTExMyw3ICsxMTMsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaXNEZW5zZUVu
b3VnaEZvclZlY3Rvcih1bnNpZ25lZCBsZW5ndGgsIHVuc2lnbmVkIG51bVZhbHVlcykKIHN0YXRp
YyBib29sIHJlamVjdChFeGVjU3RhdGUqIGV4ZWMsIGJvb2wgdGhyb3dFeGNlcHRpb24sIGNvbnN0
IGNoYXIqIG1lc3NhZ2UpCiB7CiAgICAgaWYgKHRocm93RXhjZXB0aW9uKQotICAgICAgICB0aHJv
d1R5cGVFcnJvcihleGVjLCBtZXNzYWdlKTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywg
QVNDSUlMaXRlcmFsKG1lc3NhZ2UpKTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKQEAgLTIxMiwx
NCArMjEyLDE0IEBAIGlubGluZSB2b2lkIFNwYXJzZUFycmF5VmFsdWVNYXA6OnB1dChFeGVjU3Rh
dGUqIGV4ZWMsIEpTQXJyYXkqIGFycmF5LCB1bnNpZ25lZCBpCiAgICAgaWYgKHJlc3VsdC5pc05l
d0VudHJ5ICYmICFhcnJheS0+aXNFeHRlbnNpYmxlKCkpIHsKICAgICAgICAgcmVtb3ZlKHJlc3Vs
dC5pdGVyYXRvcik7CiAgICAgICAgIGlmIChzaG91bGRUaHJvdykKLSAgICAgICAgICAgIHRocm93
VHlwZUVycm9yKGV4ZWMsIFN0cmljdE1vZGVSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcik7Cisg
ICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoU3RyaWN0TW9kZVJl
YWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAg
ICBpZiAoIShlbnRyeS5hdHRyaWJ1dGVzICYgQWNjZXNzb3IpKSB7CiAgICAgICAgIGlmIChlbnRy
eS5hdHRyaWJ1dGVzICYgUmVhZE9ubHkpIHsKICAgICAgICAgICAgIGlmIChzaG91bGRUaHJvdykK
LSAgICAgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBTdHJpY3RNb2RlUmVhZG9ubHlQ
cm9wZXJ0eVdyaXRlRXJyb3IpOworICAgICAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMs
IEFTQ0lJTGl0ZXJhbChTdHJpY3RNb2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpKTsKICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCkBAIC0yMzMsNyArMjMzLDcgQEAgaW5saW5l
IHZvaWQgU3BhcnNlQXJyYXlWYWx1ZU1hcDo6cHV0KEV4ZWNTdGF0ZSogZXhlYywgSlNBcnJheSog
YXJyYXksIHVuc2lnbmVkIGkKICAgICAKICAgICBpZiAoIXNldHRlcikgewogICAgICAgICBpZiAo
c2hvdWxkVGhyb3cpCi0gICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBTdHJpY3RNb2Rl
UmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpOworICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3Io
ZXhlYywgQVNDSUlMaXRlcmFsKFN0cmljdE1vZGVSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcikp
OwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC03MjMsNyArNzIzLDcgQEAgdm9pZCBKU0Fy
cmF5OjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9w
ZXJ0eU5hbWUsIEpTVmEKICAgICBpZiAocHJvcGVydHlOYW1lID09IGV4ZWMtPnByb3BlcnR5TmFt
ZXMoKS5sZW5ndGgpIHsKICAgICAgICAgdW5zaWduZWQgbmV3TGVuZ3RoID0gdmFsdWUudG9VSW50
MzIoZXhlYyk7CiAgICAgICAgIGlmICh2YWx1ZS50b051bWJlcihleGVjKSAhPSBzdGF0aWNfY2Fz
dDxkb3VibGU+KG5ld0xlbmd0aCkpIHsKLSAgICAgICAgICAgIHRocm93RXJyb3IoZXhlYywgY3Jl
YXRlUmFuZ2VFcnJvcihleGVjLCAiSW52YWxpZCBhcnJheSBsZW5ndGgiKSk7CisgICAgICAgICAg
ICB0aHJvd0Vycm9yKGV4ZWMsIGNyZWF0ZVJhbmdlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJJ
bnZhbGlkIGFycmF5IGxlbmd0aCIpKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0K
ICAgICAgICAgdGhpc09iamVjdC0+c2V0TGVuZ3RoKGV4ZWMsIG5ld0xlbmd0aCwgc2xvdC5pc1N0
cmljdE1vZGUoKSk7CkBAIC04MTEsNyArODExLDcgQEAgdm9pZCBKU0FycmF5OjpwdXRCeUluZGV4
QmV5b25kVmVjdG9yTGVuZ3RoKEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgaSwgSlNWYWx1ZQog
ICAgICAgICAvLyBQcm9oaWJpdCBncm93aW5nIHRoZSBhcnJheSBpZiBsZW5ndGggaXMgbm90IHdy
aXRhYmxlLgogICAgICAgICBpZiAobWFwLT5sZW5ndGhJc1JlYWRPbmx5KCkgfHwgIWlzRXh0ZW5z
aWJsZSgpKSB7CiAgICAgICAgICAgICBpZiAoc2hvdWxkVGhyb3cpCi0gICAgICAgICAgICAgICAg
dGhyb3dUeXBlRXJyb3IoZXhlYywgU3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9y
KTsKKyAgICAgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoU3Ry
aWN0TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKSk7CiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIH0KICAgICAgICAgbGVuZ3RoID0gaSArIDE7CkBAIC04ODMsNyArODgzLDcgQEAg
Ym9vbCBKU0FycmF5OjpwdXREaXJlY3RJbmRleEJleW9uZFZlY3Rvckxlbmd0aChFeGVjU3RhdGUq
IGV4ZWMsIHVuc2lnbmVkIGksIEpTVmEKICAgICBpZiAoaSA+PSBsZW5ndGgpIHsKICAgICAgICAg
Ly8gUHJvaGliaXQgZ3Jvd2luZyB0aGUgYXJyYXkgaWYgbGVuZ3RoIGlzIG5vdCB3cml0YWJsZS4K
ICAgICAgICAgaWYgKG1hcC0+bGVuZ3RoSXNSZWFkT25seSgpKQotICAgICAgICAgICAgcmV0dXJu
IHJlamVjdChleGVjLCBzaG91bGRUaHJvdywgU3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0
ZUVycm9yKTsKKyAgICAgICAgICAgIHJldHVybiByZWplY3QoZXhlYywgc2hvdWxkVGhyb3csIEFT
Q0lJTGl0ZXJhbChTdHJpY3RNb2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpKTsKICAgICAg
ICAgaWYgKCFpc0V4dGVuc2libGUoKSkKICAgICAgICAgICAgIHJldHVybiByZWplY3QoZXhlYywg
c2hvdWxkVGhyb3csICJBdHRlbXB0aW5nIHRvIGRlZmluZSBwcm9wZXJ0eSBvbiBvYmplY3QgdGhh
dCBpcyBub3QgZXh0ZW5zaWJsZS4iKTsKICAgICAgICAgbGVuZ3RoID0gaSArIDE7CkBAIC0xMTcx
LDcgKzExNzEsNyBAQCBib29sIEpTQXJyYXk6OnNldExlbmd0aChFeGVjU3RhdGUqIGV4ZWMsIHVu
c2lnbmVkIG5ld0xlbmd0aCwgYm9vbCB0aHJvd0V4Y2VwdGlvbgogICAgIGlmIChTcGFyc2VBcnJh
eVZhbHVlTWFwKiBtYXAgPSBtX3NwYXJzZVZhbHVlTWFwKSB7CiAgICAgICAgIC8vIEZhaWwgaWYg
dGhlIGxlbmd0aCBpcyBub3Qgd3JpdGFibGUuCiAgICAgICAgIGlmIChtYXAtPmxlbmd0aElzUmVh
ZE9ubHkoKSkKLSAgICAgICAgICAgIHJldHVybiByZWplY3QoZXhlYywgdGhyb3dFeGNlcHRpb24s
IFN0cmljdE1vZGVSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcik7CisgICAgICAgICAgICByZXR1
cm4gcmVqZWN0KGV4ZWMsIHRocm93RXhjZXB0aW9uLCBBU0NJSUxpdGVyYWwoU3RyaWN0TW9kZVJl
YWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKSk7CiAKICAgICAgICAgaWYgKG5ld0xlbmd0aCA8IGxl
bmd0aCkgewogICAgICAgICAgICAgLy8gQ29weSBhbnkga2V5cyB3ZSBtaWdodCBiZSBpbnRlcmVz
dGVkIGluIGludG8gYSB2ZWN0b3IuCkBAIC0xMjM0LDcgKzEyMzQsNyBAQCBKU1ZhbHVlIEpTQXJy
YXk6OnBvcChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgdW5zaWduZWQgbGVuZ3RoID0gc3RvcmFnZS0+
bV9sZW5ndGg7CiAgICAgaWYgKCFsZW5ndGgpIHsKICAgICAgICAgaWYgKCFpc0xlbmd0aFdyaXRh
YmxlKCkpCi0gICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBTdHJpY3RNb2RlUmVhZG9u
bHlQcm9wZXJ0eVdyaXRlRXJyb3IpOworICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywg
QVNDSUlMaXRlcmFsKFN0cmljdE1vZGVSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcikpOwogICAg
ICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKICAgICB9CiAKQEAgLTEyNTksNyArMTI1OSw3IEBA
IEpTVmFsdWUgSlNBcnJheTo6cG9wKEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgcmV0dXJuIGpz
VW5kZWZpbmVkKCk7CiAgICAgLy8gQ2FsbCB0aGUgW1tEZWxldGVdXSBpbnRlcm5hbCBtZXRob2Qg
b2YgTyB3aXRoIGFyZ3VtZW50cyBpbmR4IGFuZCB0cnVlLgogICAgIGlmICghZGVsZXRlUHJvcGVy
dHlCeUluZGV4KHRoaXMsIGV4ZWMsIGluZGV4KSkgewotICAgICAgICB0aHJvd1R5cGVFcnJvcihl
eGVjLCAiVW5hYmxlIHRvIGRlbGV0ZSBwcm9wZXJ0eS4iKTsKKyAgICAgICAgdGhyb3dUeXBlRXJy
b3IoZXhlYywgQVNDSUlMaXRlcmFsKCJVbmFibGUgdG8gZGVsZXRlIHByb3BlcnR5LiIpKTsKICAg
ICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAgICAgfQogICAgIC8vIENhbGwgdGhlIFtbUHV0
XV0gaW50ZXJuYWwgbWV0aG9kIG9mIE8gd2l0aCBhcmd1bWVudHMgImxlbmd0aCIsIGluZHgsIGFu
ZCB0cnVlLgpAQCAtMTI5Miw3ICsxMjkyLDcgQEAgdm9pZCBKU0FycmF5OjpwdXNoKEV4ZWNTdGF0
ZSogZXhlYywgSlNWYWx1ZSB2YWx1ZSkKICAgICAgICAgbWV0aG9kVGFibGUoKS0+cHV0QnlJbmRl
eCh0aGlzLCBleGVjLCBzdG9yYWdlLT5tX2xlbmd0aCwgdmFsdWUsIHRydWUpOwogICAgICAgICAv
LyBQZXIgRVM1LjEgMTUuNC40Ljcgc3RlcCA2ICYgMTUuNC41LjEgc3RlcCAzLmQuCiAgICAgICAg
IGlmICghZXhlYy0+aGFkRXhjZXB0aW9uKCkpCi0gICAgICAgICAgICB0aHJvd0Vycm9yKGV4ZWMs
IGNyZWF0ZVJhbmdlRXJyb3IoZXhlYywgIkludmFsaWQgYXJyYXkgbGVuZ3RoIikpOworICAgICAg
ICAgICAgdGhyb3dFcnJvcihleGVjLCBjcmVhdGVSYW5nZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJh
bCgiSW52YWxpZCBhcnJheSBsZW5ndGgiKSkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCmluZGV4IDRkZDNm
MDVkZDUyNDdlZTUxNWNiZjM4N2Y1MzA3ZThlNTVkNDQzMWMuLjlkODQzYzc3NGFiMmY3YWM3OTQx
M2I2YWNkZTJkNTc5OGYxYzJhMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTRnVuY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTRnVuY3Rpb24uY3BwCkBAIC05Niw3ICs5Niw3IEBAIHZvaWQgSlNGdW5jdGlvbjo6ZmluaXNo
Q3JlYXRpb24oRXhlY1N0YXRlKiBleGVjLCBOYXRpdmVFeGVjdXRhYmxlKiBleGVjdXRhYmxlLCBp
CiAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpKTsKICAgICBBU1NF
UlQoaW5oZXJpdHMoJnNfaW5mbykpOwogICAgIG1fZXhlY3V0YWJsZS5zZXQoZXhlYy0+Z2xvYmFs
RGF0YSgpLCB0aGlzLCBleGVjdXRhYmxlKTsKLSAgICBwdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0
YSgpLCBleGVjLT5nbG9iYWxEYXRhKCkucHJvcGVydHlOYW1lcy0+bmFtZSwganNTdHJpbmcoZXhl
YywgbmFtZS5pc051bGwoKSA/ICIiIDogbmFtZSksIERvbnREZWxldGUgfCBSZWFkT25seSB8IERv
bnRFbnVtKTsKKyAgICBwdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5nbG9iYWxE
YXRhKCkucHJvcGVydHlOYW1lcy0+bmFtZSwganNTdHJpbmcoZXhlYywgbmFtZSksIERvbnREZWxl
dGUgfCBSZWFkT25seSB8IERvbnRFbnVtKTsKICAgICBwdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0
YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoLCBqc051bWJlcihsZW5ndGgpLCBEb250
RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250RW51bSk7CiB9CiAKQEAgLTIwMyw3ICsyMDMsNyBAQCBK
U1ZhbHVlIEpTRnVuY3Rpb246OmNhbGxlckdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUg
c2xvdEJhc2UsIFByb3BlcnR5TmFtZQogICAgIEpTRnVuY3Rpb24qIGZ1bmN0aW9uID0ganNDYXN0
PEpTRnVuY3Rpb24qPihjYWxsZXIpOwogICAgIGlmIChmdW5jdGlvbi0+aXNIb3N0RnVuY3Rpb24o
KSB8fCAhZnVuY3Rpb24tPmpzRXhlY3V0YWJsZSgpLT5pc1N0cmljdE1vZGUoKSkKICAgICAgICAg
cmV0dXJuIGNhbGxlcjsKLSAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZXhlYywgIkZ1bmN0aW9u
LmNhbGxlciB1c2VkIHRvIHJldHJpZXZlIHN0cmljdCBjYWxsZXIiKTsKKyAgICByZXR1cm4gdGhy
b3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJGdW5jdGlvbi5jYWxsZXIgdXNlZCB0byBy
ZXRyaWV2ZSBzdHJpY3QgY2FsbGVyIikpOwogfQogCiBKU1ZhbHVlIEpTRnVuY3Rpb246Omxlbmd0
aEdldHRlcihFeGVjU3RhdGUqLCBKU1ZhbHVlIHNsb3RCYXNlLCBQcm9wZXJ0eU5hbWUpCkBAIC00
MTQsMjcgKzQxNCwyNyBAQCBib29sIEpTRnVuY3Rpb246OmRlZmluZU93blByb3BlcnR5KEpTT2Jq
ZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYQogICAgICAKICAgICBpZiAo
ZGVzY3JpcHRvci5jb25maWd1cmFibGVQcmVzZW50KCkgJiYgZGVzY3JpcHRvci5jb25maWd1cmFi
bGUoKSkgewogICAgICAgICBpZiAodGhyb3dFeGNlcHRpb24pCi0gICAgICAgICAgICB0aHJvd0Vy
cm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCAiQXR0ZW1wdGluZyB0byBjb25maWd1cmFi
bGUgYXR0cmlidXRlIG9mIHVuY29uZmlndXJhYmxlIHByb3BlcnR5LiIpKTsKKyAgICAgICAgICAg
IHRocm93RXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiQXR0
ZW1wdGluZyB0byBjb25maWd1cmFibGUgYXR0cmlidXRlIG9mIHVuY29uZmlndXJhYmxlIHByb3Bl
cnR5LiIpKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgaWYgKGRlc2NyaXB0
b3IuZW51bWVyYWJsZVByZXNlbnQoKSAmJiBkZXNjcmlwdG9yLmVudW1lcmFibGUoKSkgewogICAg
ICAgICBpZiAodGhyb3dFeGNlcHRpb24pCi0gICAgICAgICAgICB0aHJvd0Vycm9yKGV4ZWMsIGNy
ZWF0ZVR5cGVFcnJvcihleGVjLCAiQXR0ZW1wdGluZyB0byBjaGFuZ2UgZW51bWVyYWJsZSBhdHRy
aWJ1dGUgb2YgdW5jb25maWd1cmFibGUgcHJvcGVydHkuIikpOworICAgICAgICAgICAgdGhyb3dF
cnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJBdHRlbXB0aW5n
IHRvIGNoYW5nZSBlbnVtZXJhYmxlIGF0dHJpYnV0ZSBvZiB1bmNvbmZpZ3VyYWJsZSBwcm9wZXJ0
eS4iKSkpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIGlmIChkZXNjcmlwdG9y
LmlzQWNjZXNzb3JEZXNjcmlwdG9yKCkpIHsKICAgICAgICAgaWYgKHRocm93RXhjZXB0aW9uKQot
ICAgICAgICAgICAgdGhyb3dFcnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgIkF0dGVt
cHRpbmcgdG8gY2hhbmdlIGFjY2VzcyBtZWNoYW5pc20gZm9yIGFuIHVuY29uZmlndXJhYmxlIHBy
b3BlcnR5LiIpKTsKKyAgICAgICAgICAgIHRocm93RXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9y
KGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiQXR0ZW1wdGluZyB0byBjaGFuZ2UgYWNjZXNzIG1lY2hhbmlz
bSBmb3IgYW4gdW5jb25maWd1cmFibGUgcHJvcGVydHkuIikpKTsKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIH0KICAgICBpZiAoZGVzY3JpcHRvci53cml0YWJsZVByZXNlbnQoKSAmJiBkZXNj
cmlwdG9yLndyaXRhYmxlKCkpIHsKICAgICAgICAgaWYgKHRocm93RXhjZXB0aW9uKQotICAgICAg
ICAgICAgdGhyb3dFcnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgIkF0dGVtcHRpbmcg
dG8gY2hhbmdlIHdyaXRhYmxlIGF0dHJpYnV0ZSBvZiB1bmNvbmZpZ3VyYWJsZSBwcm9wZXJ0eS4i
KSk7CisgICAgICAgICAgICB0aHJvd0Vycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCBB
U0NJSUxpdGVyYWwoIkF0dGVtcHRpbmcgdG8gY2hhbmdlIHdyaXRhYmxlIGF0dHJpYnV0ZSBvZiB1
bmNvbmZpZ3VyYWJsZSBwcm9wZXJ0eS4iKSkpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
fQogICAgIGlmICghdmFsdWVDaGVjaykgewogICAgICAgICBpZiAodGhyb3dFeGNlcHRpb24pCi0g
ICAgICAgICAgICB0aHJvd0Vycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCAiQXR0ZW1w
dGluZyB0byBjaGFuZ2UgdmFsdWUgb2YgYSByZWFkb25seSBwcm9wZXJ0eS4iKSk7CisgICAgICAg
ICAgICB0aHJvd0Vycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwo
IkF0dGVtcHRpbmcgdG8gY2hhbmdlIHZhbHVlIG9mIGEgcmVhZG9ubHkgcHJvcGVydHkuIikpKTsK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuY3BwCmluZGV4IDUxNDFhMTkx
MDlhOTJmNzMxZThmN2EzYTgyMTJlYWEyMTY4NzEwN2MuLjEwZDA3OGEyMGY0MjI3ZTUyZDQyM2Vh
Y2RjMTJjMDc1NTZlYmJjZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2xvYmFsRGF0YS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHbG9iYWxEYXRhLmNwcApAQCAtMTA0LDggKzEwNCw3IEBAIHN0YXRpYyBib29sIGVuYWJsZUFz
c2VtYmxlcihFeGVjdXRhYmxlQWxsb2NhdG9yJiBleGVjdXRhYmxlQWxsb2NhdG9yKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKICNpZiBVU0UoQ0YpCi0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVm
PiBjYW5Vc2VKSVRLZXkoQWRvcHRDRiwgQ0ZTdHJpbmdDcmVhdGVXaXRoQ1N0cmluZygwICwgIkph
dmFTY3JpcHRDb3JlVXNlSklUIiwga0NGU3RyaW5nRW5jb2RpbmdNYWNSb21hbikpOwotICAgIFJl
dGFpblB0cjxDRkJvb2xlYW5SZWY+IGNhblVzZUpJVChBZG9wdENGLCAoQ0ZCb29sZWFuUmVmKUNG
UHJlZmVyZW5jZXNDb3B5QXBwVmFsdWUoY2FuVXNlSklUS2V5LmdldCgpLCBrQ0ZQcmVmZXJlbmNl
c0N1cnJlbnRBcHBsaWNhdGlvbikpOworICAgIFJldGFpblB0cjxDRkJvb2xlYW5SZWY+IGNhblVz
ZUpJVChBZG9wdENGLCAoQ0ZCb29sZWFuUmVmKUNGUHJlZmVyZW5jZXNDb3B5QXBwVmFsdWUoQ0ZT
VFIoIkphdmFTY3JpcHRDb3JlVXNlSklUIiksIGtDRlByZWZlcmVuY2VzQ3VycmVudEFwcGxpY2F0
aW9uKSk7CiAgICAgaWYgKGNhblVzZUpJVCkKICAgICAgICAgcmV0dXJuIGtDRkJvb2xlYW5UcnVl
ID09IGNhblVzZUpJVC5nZXQoKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCmluZGV4IDMxYjI3YzUxZTAxYWE2MmM3NTY3Yzcz
Mjg1ZTZhNzIxZDQzYmE1NDMuLmQwNGE3MDMxMzk2MGYxODUwOWYwN2VkYmI1YTc1ZWY2NzM3MTc4
YjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2Jq
ZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVj
dC5jcHAKQEAgLTIxMSw4ICsyMTEsOCBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0OjpyZXNldChKU1Zh
bHVlIHByb3RvdHlwZSkKICAgICBtX2FwcGx5RnVuY3Rpb24uc2V0KGV4ZWMtPmdsb2JhbERhdGEo
KSwgdGhpcywgYXBwbHlGdW5jdGlvbik7CiAgICAgbV9vYmplY3RQcm90b3R5cGUuc2V0KGV4ZWMt
Pmdsb2JhbERhdGEoKSwgdGhpcywgT2JqZWN0UHJvdG90eXBlOjpjcmVhdGUoZXhlYywgdGhpcywg
T2JqZWN0UHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlz
LCBqc051bGwoKSkpKTsKICAgICBHZXR0ZXJTZXR0ZXIqIHByb3RvQWNjZXNzb3IgPSBHZXR0ZXJT
ZXR0ZXI6OmNyZWF0ZShleGVjKTsKLSAgICBwcm90b0FjY2Vzc29yLT5zZXRHZXR0ZXIoZXhlYy0+
Z2xvYmFsRGF0YSgpLCBKU0Z1bmN0aW9uOjpjcmVhdGUoZXhlYywgdGhpcywgMCwgIiIsIGdsb2Jh
bEZ1bmNQcm90b0dldHRlcikpOwotICAgIHByb3RvQWNjZXNzb3ItPnNldFNldHRlcihleGVjLT5n
bG9iYWxEYXRhKCksIEpTRnVuY3Rpb246OmNyZWF0ZShleGVjLCB0aGlzLCAwLCAiIiwgZ2xvYmFs
RnVuY1Byb3RvU2V0dGVyKSk7CisgICAgcHJvdG9BY2Nlc3Nvci0+c2V0R2V0dGVyKGV4ZWMtPmds
b2JhbERhdGEoKSwgSlNGdW5jdGlvbjo6Y3JlYXRlKGV4ZWMsIHRoaXMsIDAsIFN0cmluZygpLCBn
bG9iYWxGdW5jUHJvdG9HZXR0ZXIpKTsKKyAgICBwcm90b0FjY2Vzc29yLT5zZXRTZXR0ZXIoZXhl
Yy0+Z2xvYmFsRGF0YSgpLCBKU0Z1bmN0aW9uOjpjcmVhdGUoZXhlYywgdGhpcywgMCwgU3RyaW5n
KCksIGdsb2JhbEZ1bmNQcm90b1NldHRlcikpOwogICAgIG1fb2JqZWN0UHJvdG90eXBlLT5wdXRE
aXJlY3RBY2Nlc3NvcihleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS51
bmRlcnNjb3JlUHJvdG8sIHByb3RvQWNjZXNzb3IsIEFjY2Vzc29yIHwgRG9udEVudW0pOwogICAg
IG1fZnVuY3Rpb25Qcm90b3R5cGUtPnN0cnVjdHVyZSgpLT5zZXRQcm90b3R5cGVXaXRob3V0VHJh
bnNpdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIG1fb2JqZWN0UHJvdG90eXBlLmdldCgpKTsKIApA
QCAtMjcxLDEyICsyNzEsMTIgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6cmVzZXQoSlNWYWx1ZSBw
cm90b3R5cGUpCiAKICAgICBTdHJ1Y3R1cmUqIG5hdGl2ZUVycm9yUHJvdG90eXBlU3RydWN0dXJl
ID0gTmF0aXZlRXJyb3JQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZShleGVjLT5nbG9iYWxEYXRh
KCksIHRoaXMsIG1fZXJyb3JQcm90b3R5cGUuZ2V0KCkpOwogICAgIFN0cnVjdHVyZSogbmF0aXZl
RXJyb3JTdHJ1Y3R1cmUgPSBOYXRpdmVFcnJvckNvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUo
ZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlzLCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgpKTsKLSAg
ICBtX2V2YWxFcnJvckNvbnN0cnVjdG9yLnNldChleGVjLT5nbG9iYWxEYXRhKCksIHRoaXMsIE5h
dGl2ZUVycm9yQ29uc3RydWN0b3I6OmNyZWF0ZShleGVjLCB0aGlzLCBuYXRpdmVFcnJvclN0cnVj
dHVyZSwgbmF0aXZlRXJyb3JQcm90b3R5cGVTdHJ1Y3R1cmUsICJFdmFsRXJyb3IiKSk7Ci0gICAg
bV9yYW5nZUVycm9yQ29uc3RydWN0b3Iuc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywgTmF0
aXZlRXJyb3JDb25zdHJ1Y3Rvcjo6Y3JlYXRlKGV4ZWMsIHRoaXMsIG5hdGl2ZUVycm9yU3RydWN0
dXJlLCBuYXRpdmVFcnJvclByb3RvdHlwZVN0cnVjdHVyZSwgIlJhbmdlRXJyb3IiKSk7Ci0gICAg
bV9yZWZlcmVuY2VFcnJvckNvbnN0cnVjdG9yLnNldChleGVjLT5nbG9iYWxEYXRhKCksIHRoaXMs
IE5hdGl2ZUVycm9yQ29uc3RydWN0b3I6OmNyZWF0ZShleGVjLCB0aGlzLCBuYXRpdmVFcnJvclN0
cnVjdHVyZSwgbmF0aXZlRXJyb3JQcm90b3R5cGVTdHJ1Y3R1cmUsICJSZWZlcmVuY2VFcnJvciIp
KTsKLSAgICBtX3N5bnRheEVycm9yQ29uc3RydWN0b3Iuc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwg
dGhpcywgTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcjo6Y3JlYXRlKGV4ZWMsIHRoaXMsIG5hdGl2ZUVy
cm9yU3RydWN0dXJlLCBuYXRpdmVFcnJvclByb3RvdHlwZVN0cnVjdHVyZSwgIlN5bnRheEVycm9y
IikpOwotICAgIG1fdHlwZUVycm9yQ29uc3RydWN0b3Iuc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwg
dGhpcywgTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcjo6Y3JlYXRlKGV4ZWMsIHRoaXMsIG5hdGl2ZUVy
cm9yU3RydWN0dXJlLCBuYXRpdmVFcnJvclByb3RvdHlwZVN0cnVjdHVyZSwgIlR5cGVFcnJvciIp
KTsKLSAgICBtX1VSSUVycm9yQ29uc3RydWN0b3Iuc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhp
cywgTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcjo6Y3JlYXRlKGV4ZWMsIHRoaXMsIG5hdGl2ZUVycm9y
U3RydWN0dXJlLCBuYXRpdmVFcnJvclByb3RvdHlwZVN0cnVjdHVyZSwgIlVSSUVycm9yIikpOwor
ICAgIG1fZXZhbEVycm9yQ29uc3RydWN0b3Iuc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywg
TmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcjo6Y3JlYXRlKGV4ZWMsIHRoaXMsIG5hdGl2ZUVycm9yU3Ry
dWN0dXJlLCBuYXRpdmVFcnJvclByb3RvdHlwZVN0cnVjdHVyZSwgQVNDSUlMaXRlcmFsKCJFdmFs
RXJyb3IiKSkpOworICAgIG1fcmFuZ2VFcnJvckNvbnN0cnVjdG9yLnNldChleGVjLT5nbG9iYWxE
YXRhKCksIHRoaXMsIE5hdGl2ZUVycm9yQ29uc3RydWN0b3I6OmNyZWF0ZShleGVjLCB0aGlzLCBu
YXRpdmVFcnJvclN0cnVjdHVyZSwgbmF0aXZlRXJyb3JQcm90b3R5cGVTdHJ1Y3R1cmUsIEFTQ0lJ
TGl0ZXJhbCgiUmFuZ2VFcnJvciIpKSk7CisgICAgbV9yZWZlcmVuY2VFcnJvckNvbnN0cnVjdG9y
LnNldChleGVjLT5nbG9iYWxEYXRhKCksIHRoaXMsIE5hdGl2ZUVycm9yQ29uc3RydWN0b3I6OmNy
ZWF0ZShleGVjLCB0aGlzLCBuYXRpdmVFcnJvclN0cnVjdHVyZSwgbmF0aXZlRXJyb3JQcm90b3R5
cGVTdHJ1Y3R1cmUsIEFTQ0lJTGl0ZXJhbCgiUmVmZXJlbmNlRXJyb3IiKSkpOworICAgIG1fc3lu
dGF4RXJyb3JDb25zdHJ1Y3Rvci5zZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlzLCBOYXRpdmVF
cnJvckNvbnN0cnVjdG9yOjpjcmVhdGUoZXhlYywgdGhpcywgbmF0aXZlRXJyb3JTdHJ1Y3R1cmUs
IG5hdGl2ZUVycm9yUHJvdG90eXBlU3RydWN0dXJlLCBBU0NJSUxpdGVyYWwoIlN5bnRheEVycm9y
IikpKTsKKyAgICBtX3R5cGVFcnJvckNvbnN0cnVjdG9yLnNldChleGVjLT5nbG9iYWxEYXRhKCks
IHRoaXMsIE5hdGl2ZUVycm9yQ29uc3RydWN0b3I6OmNyZWF0ZShleGVjLCB0aGlzLCBuYXRpdmVF
cnJvclN0cnVjdHVyZSwgbmF0aXZlRXJyb3JQcm90b3R5cGVTdHJ1Y3R1cmUsIEFTQ0lJTGl0ZXJh
bCgiVHlwZUVycm9yIikpKTsKKyAgICBtX1VSSUVycm9yQ29uc3RydWN0b3Iuc2V0KGV4ZWMtPmds
b2JhbERhdGEoKSwgdGhpcywgTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcjo6Y3JlYXRlKGV4ZWMsIHRo
aXMsIG5hdGl2ZUVycm9yU3RydWN0dXJlLCBuYXRpdmVFcnJvclByb3RvdHlwZVN0cnVjdHVyZSwg
QVNDSUlMaXRlcmFsKCJVUklFcnJvciIpKSk7CiAKICAgICBtX29iamVjdFByb3RvdHlwZS0+cHV0
RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0
eU5hbWVzKCkuY29uc3RydWN0b3IsIG9iamVjdENvbnN0cnVjdG9yLCBEb250RW51bSk7CiAgICAg
bV9mdW5jdGlvblByb3RvdHlwZS0+cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oZXhlYy0+Z2xv
YmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuY29uc3RydWN0b3IsIGZ1bmN0aW9uQ29u
c3RydWN0b3IsIERvbnRFbnVtKTsKQEAgLTMzMSw3ICszMzEsNyBAQCB2b2lkIEpTR2xvYmFsT2Jq
ZWN0OjpyZXNldChKU1ZhbHVlIHByb3RvdHlwZSkKIAogdm9pZCBKU0dsb2JhbE9iamVjdDo6Y3Jl
YXRlVGhyb3dUeXBlRXJyb3IoRXhlY1N0YXRlKiBleGVjKQogewotICAgIEpTRnVuY3Rpb24qIHRo
cm93ZXIgPSBKU0Z1bmN0aW9uOjpjcmVhdGUoZXhlYywgdGhpcywgMCwgIiIsIGdsb2JhbEZ1bmNU
aHJvd1R5cGVFcnJvcik7CisgICAgSlNGdW5jdGlvbiogdGhyb3dlciA9IEpTRnVuY3Rpb246OmNy
ZWF0ZShleGVjLCB0aGlzLCAwLCBTdHJpbmcoKSwgZ2xvYmFsRnVuY1Rocm93VHlwZUVycm9yKTsK
ICAgICBHZXR0ZXJTZXR0ZXIqIGdldHRlclNldHRlciA9IEdldHRlclNldHRlcjo6Y3JlYXRlKGV4
ZWMpOwogICAgIGdldHRlclNldHRlci0+c2V0R2V0dGVyKGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhy
b3dlcik7CiAgICAgZ2V0dGVyU2V0dGVyLT5zZXRTZXR0ZXIoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0
aHJvd2VyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xv
YmFsT2JqZWN0RnVuY3Rpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2xvYmFsT2JqZWN0RnVuY3Rpb25zLmNwcAppbmRleCBiYzg5NzJjMmU0YzRkY2RjYzE2MTBiYTVi
ZGJiODU2ZDkxNjY3MDFiLi40NTg4ZWMyZDkxZmQ4OTlmNTg1YzI3OTgyOTczOTFmYmYzMjRhNjFh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVj
dEZ1bmN0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9i
YWxPYmplY3RGdW5jdGlvbnMuY3BwCkBAIC01Myw3ICs1Myw3IEBAIHN0YXRpYyBKU1ZhbHVlIGVu
Y29kZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IGNoYXIqIGRvTm90RXNjYXBlKQogewogICAgIENT
dHJpbmcgY3N0ciA9IGV4ZWMtPmFyZ3VtZW50KDApLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVj
KS51dGY4KHRydWUpOwogICAgIGlmICghY3N0ci5kYXRhKCkpCi0gICAgICAgIHJldHVybiB0aHJv
d0Vycm9yKGV4ZWMsIGNyZWF0ZVVSSUVycm9yKGV4ZWMsICJTdHJpbmcgY29udGFpbmVkIGFuIGls
bGVnYWwgVVRGLTE2IHNlcXVlbmNlLiIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoZXhl
YywgY3JlYXRlVVJJRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJTdHJpbmcgY29udGFpbmVkIGFu
IGlsbGVnYWwgVVRGLTE2IHNlcXVlbmNlLiIpKSk7CiAKICAgICBKU1N0cmluZ0J1aWxkZXIgYnVp
bGRlcjsKICAgICBjb25zdCBjaGFyKiBwID0gY3N0ci5kYXRhKCk7CkBAIC0xMTQsNyArMTE0LDcg
QEAgc3RhdGljIEpTVmFsdWUgZGVjb2RlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgQ2hhclR5cGUq
IGNoYXJhY3RlcnMsIGludCBsZW5ndGgsIGMKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlm
IChjaGFyTGVuID09IDApIHsKICAgICAgICAgICAgICAgICBpZiAoc3RyaWN0KQotICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihleGVjLCBjcmVhdGVVUklFcnJvcihleGVjLCAi
VVJJIGVycm9yIikpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihleGVj
LCBjcmVhdGVVUklFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlVSSSBlcnJvciIpKSk7CiAgICAg
ICAgICAgICAgICAgLy8gVGhlIG9ubHkgY2FzZSB3aGVyZSB3ZSBkb24ndCB1c2UgInN0cmljdCIg
bW9kZSBpcyB0aGUgInVuZXNjYXBlIiBmdW5jdGlvbi4KICAgICAgICAgICAgICAgICAvLyBGb3Ig
dGhhdCwgaXQncyBnb29kIHRvIHN1cHBvcnQgdGhlIHdvbmt5ICIldSIgc3ludGF4IGZvciBjb21w
YXRpYmlsaXR5IHdpdGggV2luSUUuCiAgICAgICAgICAgICAgICAgaWYgKGsgPD0gbGVuZ3RoIC0g
NiAmJiBwWzFdID09ICd1JwpAQCAtNDk5LDcgKzQ5OSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgZ2xvYmFsRnVuY0V2YWwoRXhlY1N0YXRlKiBleGVjKQogICAgIEpTT2JqZWN0KiB0
aGlzT2JqZWN0ID0gZXhlYy0+aG9zdFRoaXNWYWx1ZSgpLnRvVGhpc09iamVjdChleGVjKTsKICAg
ICBKU09iamVjdCogdW53cmFwcGVkT2JqZWN0ID0gdGhpc09iamVjdC0+dW53cmFwcGVkT2JqZWN0
KCk7CiAgICAgaWYgKCF1bndyYXBwZWRPYmplY3QtPmlzR2xvYmFsT2JqZWN0KCkgfHwganNDYXN0
PEpTR2xvYmFsT2JqZWN0Kj4odW53cmFwcGVkT2JqZWN0KS0+ZXZhbEZ1bmN0aW9uKCkgIT0gZXhl
Yy0+Y2FsbGVlKCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlRXZh
bEVycm9yKGV4ZWMsICJUaGUgXCJ0aGlzXCIgdmFsdWUgcGFzc2VkIHRvIGV2YWwgbXVzdCBiZSB0
aGUgZ2xvYmFsIG9iamVjdCBmcm9tIHdoaWNoIGV2YWwgb3JpZ2luYXRlZCIpKTsKKyAgICAgICAg
cmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVFdmFsRXJyb3IoZXhlYywgQVNDSUlMaXRl
cmFsKCJUaGUgXCJ0aGlzXCIgdmFsdWUgcGFzc2VkIHRvIGV2YWwgbXVzdCBiZSB0aGUgZ2xvYmFs
IG9iamVjdCBmcm9tIHdoaWNoIGV2YWwgb3JpZ2luYXRlZCIpKSk7CiAKICAgICBKU1ZhbHVlIHgg
PSBleGVjLT5hcmd1bWVudCgwKTsKICAgICBpZiAoIXguaXNTdHJpbmcoKSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT05PYmplY3QuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPTk9iamVjdC5jcHAKaW5kZXggOWMwMTg5NTc1ZTAzOWZi
NjA2MWMzOTU2YjlkMTUwZDk1YzAwZDY5YS4uNjdkYmY0YTQ2YWJmODdmNjVmYWNkOWMyZjM4NDAz
YmRiZjFhYmQyZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNP
Tk9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPTk9iamVj
dC5jcHAKQEAgLTM2MSw3ICszNjEsNyBAQCBTdHJpbmdpZmllcjo6U3RyaW5naWZ5UmVzdWx0IFN0
cmluZ2lmaWVyOjphcHBlbmRTdHJpbmdpZmllZFZhbHVlKFN0cmluZ0J1aWxkZXImCiAgICAgICAg
IHJldHVybiBTdHJpbmdpZnlGYWlsZWREdWVUb1VuZGVmaW5lZFZhbHVlOwogCiAgICAgaWYgKHZh
bHVlLmlzTnVsbCgpKSB7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kKCJudWxsIik7CisgICAgICAg
IGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgibnVsbCIpOwogICAgICAgICByZXR1cm4gU3RyaW5naWZ5
U3VjY2VlZGVkOwogICAgIH0KIApAQCAtMzcxLDcgKzM3MSwxMCBAQCBTdHJpbmdpZmllcjo6U3Ry
aW5naWZ5UmVzdWx0IFN0cmluZ2lmaWVyOjphcHBlbmRTdHJpbmdpZmllZFZhbHVlKFN0cmluZ0J1
aWxkZXImCiAgICAgICAgIHJldHVybiBTdHJpbmdpZnlGYWlsZWQ7CiAKICAgICBpZiAodmFsdWUu
aXNCb29sZWFuKCkpIHsKLSAgICAgICAgYnVpbGRlci5hcHBlbmQodmFsdWUuaXNUcnVlKCkgPyAi
dHJ1ZSIgOiAiZmFsc2UiKTsKKyAgICAgICAgaWYgKHZhbHVlLmlzVHJ1ZSgpKQorICAgICAgICAg
ICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCJ0cnVlIik7CisgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiZmFsc2UiKTsKICAgICAgICAgcmV0dXJuIFN0cmlu
Z2lmeVN1Y2NlZWRlZDsKICAgICB9CiAKQEAgLTM4NCw3ICszODcsNyBAQCBTdHJpbmdpZmllcjo6
U3RyaW5naWZ5UmVzdWx0IFN0cmluZ2lmaWVyOjphcHBlbmRTdHJpbmdpZmllZFZhbHVlKFN0cmlu
Z0J1aWxkZXImCiAgICAgaWYgKHZhbHVlLmlzTnVtYmVyKCkpIHsKICAgICAgICAgZG91YmxlIG51
bWJlciA9IHZhbHVlLmFzTnVtYmVyKCk7CiAgICAgICAgIGlmICghaXNmaW5pdGUobnVtYmVyKSkK
LSAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCJudWxsIik7CisgICAgICAgICAgICBidWlsZGVy
LmFwcGVuZExpdGVyYWwoIm51bGwiKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgYnVpbGRl
ci5hcHBlbmQoU3RyaW5nOjpudW1iZXJUb1N0cmluZ0VDTUFTY3JpcHQobnVtYmVyKSk7CiAgICAg
ICAgIHJldHVybiBTdHJpbmdpZnlTdWNjZWVkZWQ7CkBAIC0zOTgsNyArNDAxLDcgQEAgU3RyaW5n
aWZpZXI6OlN0cmluZ2lmeVJlc3VsdCBTdHJpbmdpZmllcjo6YXBwZW5kU3RyaW5naWZpZWRWYWx1
ZShTdHJpbmdCdWlsZGVyJgogICAgIENhbGxEYXRhIGNhbGxEYXRhOwogICAgIGlmIChvYmplY3Qt
Pm1ldGhvZFRhYmxlKCktPmdldENhbGxEYXRhKG9iamVjdCwgY2FsbERhdGEpICE9IENhbGxUeXBl
Tm9uZSkgewogICAgICAgICBpZiAoaG9sZGVyLT5pbmhlcml0cygmSlNBcnJheTo6c19pbmZvKSkg
ewotICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoIm51bGwiKTsKKyAgICAgICAgICAgIGJ1aWxk
ZXIuYXBwZW5kTGl0ZXJhbCgibnVsbCIpOwogICAgICAgICAgICAgcmV0dXJuIFN0cmluZ2lmeVN1
Y2NlZWRlZDsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gU3RyaW5naWZ5RmFpbGVkRHVlVG9V
bmRlZmluZWRWYWx1ZTsKQEAgLTQwNyw3ICs0MTAsNyBAQCBTdHJpbmdpZmllcjo6U3RyaW5naWZ5
UmVzdWx0IFN0cmluZ2lmaWVyOjphcHBlbmRTdHJpbmdpZmllZFZhbHVlKFN0cmluZ0J1aWxkZXIm
CiAgICAgLy8gSGFuZGxlIGN5Y2xlIGRldGVjdGlvbiwgYW5kIHB1dCB0aGUgaG9sZGVyIG9uIHRo
ZSBzdGFjay4KICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9ob2xkZXJTdGFjay5zaXpl
KCk7IGkrKykgewogICAgICAgICBpZiAobV9ob2xkZXJTdGFja1tpXS5vYmplY3QoKSA9PSBvYmpl
Y3QpIHsKLSAgICAgICAgICAgIHRocm93RXJyb3IobV9leGVjLCBjcmVhdGVUeXBlRXJyb3IobV9l
eGVjLCAiSlNPTi5zdHJpbmdpZnkgY2Fubm90IHNlcmlhbGl6ZSBjeWNsaWMgc3RydWN0dXJlcy4i
KSk7CisgICAgICAgICAgICB0aHJvd0Vycm9yKG1fZXhlYywgY3JlYXRlVHlwZUVycm9yKG1fZXhl
YywgQVNDSUlMaXRlcmFsKCJKU09OLnN0cmluZ2lmeSBjYW5ub3Qgc2VyaWFsaXplIGN5Y2xpYyBz
dHJ1Y3R1cmVzLiIpKSk7CiAgICAgICAgICAgICByZXR1cm4gU3RyaW5naWZ5RmFpbGVkOwogICAg
ICAgICB9CiAgICAgfQpAQCAtNTY5LDcgKzU3Miw3IEBAIGJvb2wgU3RyaW5naWZpZXI6OkhvbGRl
cjo6YXBwZW5kTmV4dFByb3BlcnR5KFN0cmluZ2lmaWVyJiBzdHJpbmdpZmllciwgU3RyaW5nQnVp
CiAKICAgICBzd2l0Y2ggKHN0cmluZ2lmeVJlc3VsdCkgewogICAgICAgICBjYXNlIFN0cmluZ2lm
eUZhaWxlZDoKLSAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCJudWxsIik7CisgICAgICAgICAg
ICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIm51bGwiKTsKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICBjYXNlIFN0cmluZ2lmeVN1Y2NlZWRlZDoKICAgICAgICAgICAgIGJyZWFrOwpAQCAtODA5
LDcgKzgxMiw3IEBAIE5FVkVSX0lOTElORSBKU1ZhbHVlIFdhbGtlcjo6d2FsayhKU1ZhbHVlIHVu
ZmlsdGVyZWQpCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpTT05Qcm90b0Z1bmNQYXJz
ZShFeGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAgaWYgKCFleGVjLT5hcmd1bWVudENvdW50KCkpCi0g
ICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlRXJyb3IoZXhlYywgIkpTT04u
cGFyc2UgcmVxdWlyZXMgYXQgbGVhc3Qgb25lIHBhcmFtZXRlciIpKTsKKyAgICAgICAgcmV0dXJu
IHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkpTT04u
cGFyc2UgcmVxdWlyZXMgYXQgbGVhc3Qgb25lIHBhcmFtZXRlciIpKSk7CiAgICAgU3RyaW5nIHNv
dXJjZSA9IGV4ZWMtPmFyZ3VtZW50KDApLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKICAg
ICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNOdWxsKCkpOwpAQCAtODQzLDcgKzg0Niw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgSlNPTlByb3RvRnVuY1BhcnNlKEV4ZWNTdGF0ZSogZXhlYykKIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgSlNPTlByb3RvRnVuY1N0cmluZ2lmeShFeGVjU3RhdGUqIGV4ZWMpCiB7
CiAgICAgaWYgKCFleGVjLT5hcmd1bWVudENvdW50KCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZN
RXJyb3IoZXhlYywgY3JlYXRlRXJyb3IoZXhlYywgIk5vIGlucHV0IHRvIHN0cmluZ2lmeSIpKTsK
KyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVFcnJvcihleGVjLCBBU0NJ
SUxpdGVyYWwoIk5vIGlucHV0IHRvIHN0cmluZ2lmeSIpKSk7CiAgICAgTG9jYWxTY29wZSBzY29w
ZShleGVjLT5nbG9iYWxEYXRhKCkpOwogICAgIExvY2FsPFVua25vd24+IHZhbHVlKGV4ZWMtPmds
b2JhbERhdGEoKSwgZXhlYy0+YXJndW1lbnQoMCkpOwogICAgIExvY2FsPFVua25vd24+IHJlcGxh
Y2VyKGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+YXJndW1lbnQoMSkpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCmluZGV4IDMyNzViMjIyYjVjZWZmYjgwMDNh
MDhjMjdlNzk5MmQwYWYyNTMwMTMuLjgxMmJhM2JjODM0YzZkOGJmMmJhNzg4ZGRjYTBjYzAzZjU3
MTcxN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAKQEAg
LTE4Miw3ICsxODIsNyBAQCB2b2lkIEpTT2JqZWN0OjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3Rh
dGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVgogICAgICAgICAgICAgcHJv
dG90eXBlID0gb2JqLT5wcm90b3R5cGUoKTsKICAgICAgICAgICAgIGlmIChwcm90b3R5cGUuaXNO
dWxsKCkpIHsKICAgICAgICAgICAgICAgICBpZiAoIXRoaXNPYmplY3QtPnB1dERpcmVjdEludGVy
bmFsPFB1dE1vZGVQdXQ+KGdsb2JhbERhdGEsIHByb3BlcnR5TmFtZSwgdmFsdWUsIDAsIHNsb3Qs
IGdldENhbGxhYmxlT2JqZWN0KHZhbHVlKSkgJiYgc2xvdC5pc1N0cmljdE1vZGUoKSkKLSAgICAg
ICAgICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgU3RyaWN0TW9kZVJlYWRvbmx5UHJv
cGVydHlXcml0ZUVycm9yKTsKKyAgICAgICAgICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhl
YywgQVNDSUlMaXRlcmFsKFN0cmljdE1vZGVSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcikpOwog
ICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtMTk1
LDcgKzE5NSw3IEBAIHZvaWQgSlNPYmplY3Q6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSog
ZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWCiAgICAgICAgIGlmIChvZmZzZXQg
IT0gaW52YWxpZE9mZnNldCkgewogICAgICAgICAgICAgaWYgKGF0dHJpYnV0ZXMgJiBSZWFkT25s
eSkgewogICAgICAgICAgICAgICAgIGlmIChzbG90LmlzU3RyaWN0TW9kZSgpKQotICAgICAgICAg
ICAgICAgICAgICB0aHJvd0Vycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCBTdHJpY3RN
b2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpKTsKKyAgICAgICAgICAgICAgICAgICAgdGhy
b3dFcnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKFN0cmljdE1v
ZGVSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcikpKTsKICAgICAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgICAgICB9CiAKQEAgLTIwNCw3ICsyMDQsNyBAQCB2b2lkIEpTT2JqZWN0OjpwdXQo
SlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUs
IEpTVgogICAgICAgICAgICAgICAgIEpTT2JqZWN0KiBzZXR0ZXJGdW5jID0gYXNHZXR0ZXJTZXR0
ZXIoZ3MpLT5zZXR0ZXIoKTsgICAgICAgIAogICAgICAgICAgICAgICAgIGlmICghc2V0dGVyRnVu
YykgewogICAgICAgICAgICAgICAgICAgICBpZiAoc2xvdC5pc1N0cmljdE1vZGUoKSkKLSAgICAg
ICAgICAgICAgICAgICAgICAgIHRocm93RXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMs
ICJzZXR0aW5nIGEgcHJvcGVydHkgdGhhdCBoYXMgb25seSBhIGdldHRlciIpKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHRocm93RXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsIEFT
Q0lJTGl0ZXJhbCgic2V0dGluZyBhIHByb3BlcnR5IHRoYXQgaGFzIG9ubHkgYSBnZXR0ZXIiKSkp
OwogICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgICAgIApAQCAtMjI5LDcgKzIyOSw3IEBAIHZvaWQgSlNPYmplY3Q6OnB1dChKU0NlbGwq
IGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWCiAg
ICAgfQogICAgIAogICAgIGlmICghdGhpc09iamVjdC0+cHV0RGlyZWN0SW50ZXJuYWw8UHV0TW9k
ZVB1dD4oZ2xvYmFsRGF0YSwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgMCwgc2xvdCwgZ2V0Q2FsbGFi
bGVPYmplY3QodmFsdWUpKSAmJiBzbG90LmlzU3RyaWN0TW9kZSgpKQotICAgICAgICB0aHJvd1R5
cGVFcnJvcihleGVjLCBTdHJpY3RNb2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpOworICAg
ICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoU3RyaWN0TW9kZVJlYWRvbmx5
UHJvcGVydHlXcml0ZUVycm9yKSk7CiAgICAgcmV0dXJuOwogfQogCkBAIC0zODksNyArMzg5LDcg
QEAgSlNWYWx1ZSBKU09iamVjdDo6ZGVmYXVsdFZhbHVlKGNvbnN0IEpTT2JqZWN0KiBvYmplY3Qs
IEV4ZWNTdGF0ZSogZXhlYywgUHJlZmVycmUKIAogICAgIEFTU0VSVCghZXhlYy0+aGFkRXhjZXB0
aW9uKCkpOwogCi0gICAgcmV0dXJuIHRocm93RXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4
ZWMsICJObyBkZWZhdWx0IHZhbHVlIikpOworICAgIHJldHVybiB0aHJvd0Vycm9yKGV4ZWMsIGNy
ZWF0ZVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIk5vIGRlZmF1bHQgdmFsdWUiKSkpOwog
fQogCiBjb25zdCBIYXNoRW50cnkqIEpTT2JqZWN0OjpmaW5kUHJvcGVydHlIYXNoRW50cnkoRXhl
Y1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKSBjb25zdApAQCAtNDA5LDcg
KzQwOSw3IEBAIGJvb2wgSlNPYmplY3Q6Omhhc0luc3RhbmNlKEpTT2JqZWN0KiwgRXhlY1N0YXRl
KiBleGVjLCBKU1ZhbHVlIHZhbHVlLCBKU1ZhbHVlIHByCiAgICAgICAgIHJldHVybiBmYWxzZTsK
IAogICAgIGlmICghcHJvdG8uaXNPYmplY3QoKSkgewotICAgICAgICB0aHJvd0Vycm9yKGV4ZWMs
IGNyZWF0ZVR5cGVFcnJvcihleGVjLCAiaW5zdGFuY2VvZiBjYWxsZWQgb24gYW4gb2JqZWN0IHdp
dGggYW4gaW52YWxpZCBwcm90b3R5cGUgcHJvcGVydHkuIikpOworICAgICAgICB0aHJvd0Vycm9y
KGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoImluc3RhbmNlb2YgY2Fs
bGVkIG9uIGFuIG9iamVjdCB3aXRoIGFuIGludmFsaWQgcHJvdG90eXBlIHByb3BlcnR5LiIpKSk7
CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKQEAgLTcxOCw3ICs3MTgsNyBAQCBib29s
IEpTT2JqZWN0OjpkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUq
IGV4ZWMsIFByb3BlcnR5TmFtZQogICAgICAgICAvLyB1bmxlc3MgZXh0ZW5zaW9ucyBhcmUgcHJl
dmVudGVkIQogICAgICAgICBpZiAoIW9iamVjdC0+aXNFeHRlbnNpYmxlKCkpIHsKICAgICAgICAg
ICAgIGlmICh0aHJvd0V4Y2VwdGlvbikKLSAgICAgICAgICAgICAgICB0aHJvd0Vycm9yKGV4ZWMs
IGNyZWF0ZVR5cGVFcnJvcihleGVjLCAiQXR0ZW1wdGluZyB0byBkZWZpbmUgcHJvcGVydHkgb24g
b2JqZWN0IHRoYXQgaXMgbm90IGV4dGVuc2libGUuIikpOworICAgICAgICAgICAgICAgIHRocm93
RXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiQXR0ZW1wdGlu
ZyB0byBkZWZpbmUgcHJvcGVydHkgb24gb2JqZWN0IHRoYXQgaXMgbm90IGV4dGVuc2libGUuIikp
KTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogICAgICAgICBQcm9wZXJ0
eURlc2NyaXB0b3Igb2xkRGVzY3JpcHRvcjsKQEAgLTczNiwxMiArNzM2LDEyIEBAIGJvb2wgSlNP
YmplY3Q6OmRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhl
YywgUHJvcGVydHlOYW1lCiAgICAgaWYgKCFjdXJyZW50LmNvbmZpZ3VyYWJsZSgpKSB7CiAgICAg
ICAgIGlmIChkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSgpKSB7CiAgICAgICAgICAgICBpZiAodGhy
b3dFeGNlcHRpb24pCi0gICAgICAgICAgICAgICAgdGhyb3dFcnJvcihleGVjLCBjcmVhdGVUeXBl
RXJyb3IoZXhlYywgIkF0dGVtcHRpbmcgdG8gY29uZmlndXJhYmxlIGF0dHJpYnV0ZSBvZiB1bmNv
bmZpZ3VyYWJsZSBwcm9wZXJ0eS4iKSk7CisgICAgICAgICAgICAgICAgdGhyb3dFcnJvcihleGVj
LCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJBdHRlbXB0aW5nIHRvIGNvbmZp
Z3VyYWJsZSBhdHRyaWJ1dGUgb2YgdW5jb25maWd1cmFibGUgcHJvcGVydHkuIikpKTsKICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogICAgICAgICBpZiAoZGVzY3JpcHRvci5l
bnVtZXJhYmxlUHJlc2VudCgpICYmIGRlc2NyaXB0b3IuZW51bWVyYWJsZSgpICE9IGN1cnJlbnQu
ZW51bWVyYWJsZSgpKSB7CiAgICAgICAgICAgICBpZiAodGhyb3dFeGNlcHRpb24pCi0gICAgICAg
ICAgICAgICAgdGhyb3dFcnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgIkF0dGVtcHRp
bmcgdG8gY2hhbmdlIGVudW1lcmFibGUgYXR0cmlidXRlIG9mIHVuY29uZmlndXJhYmxlIHByb3Bl
cnR5LiIpKTsKKyAgICAgICAgICAgICAgICB0aHJvd0Vycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJv
cihleGVjLCBBU0NJSUxpdGVyYWwoIkF0dGVtcHRpbmcgdG8gY2hhbmdlIGVudW1lcmFibGUgYXR0
cmlidXRlIG9mIHVuY29uZmlndXJhYmxlIHByb3BlcnR5LiIpKSk7CiAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICB9CkBAIC03NTksNyArNzU5LDcgQEAgYm9vbCBKU09i
amVjdDo6ZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVj
LCBQcm9wZXJ0eU5hbWUKICAgICBpZiAoZGVzY3JpcHRvci5pc0RhdGFEZXNjcmlwdG9yKCkgIT0g
Y3VycmVudC5pc0RhdGFEZXNjcmlwdG9yKCkpIHsKICAgICAgICAgaWYgKCFjdXJyZW50LmNvbmZp
Z3VyYWJsZSgpKSB7CiAgICAgICAgICAgICBpZiAodGhyb3dFeGNlcHRpb24pCi0gICAgICAgICAg
ICAgICAgdGhyb3dFcnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgIkF0dGVtcHRpbmcg
dG8gY2hhbmdlIGFjY2VzcyBtZWNoYW5pc20gZm9yIGFuIHVuY29uZmlndXJhYmxlIHByb3BlcnR5
LiIpKTsKKyAgICAgICAgICAgICAgICB0aHJvd0Vycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihl
eGVjLCBBU0NJSUxpdGVyYWwoIkF0dGVtcHRpbmcgdG8gY2hhbmdlIGFjY2VzcyBtZWNoYW5pc20g
Zm9yIGFuIHVuY29uZmlndXJhYmxlIHByb3BlcnR5LiIpKSk7CiAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgICAgIH0KICAgICAgICAgb2JqZWN0LT5tZXRob2RUYWJsZSgpLT5kZWxldGVQ
cm9wZXJ0eShvYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSk7CkBAIC03NzEsMTMgKzc3MSwxMyBA
QCBib29sIEpTT2JqZWN0OjpkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCogb2JqZWN0LCBFeGVj
U3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZQogICAgICAgICBpZiAoIWN1cnJlbnQuY29uZmlndXJh
YmxlKCkpIHsKICAgICAgICAgICAgIGlmICghY3VycmVudC53cml0YWJsZSgpICYmIGRlc2NyaXB0
b3Iud3JpdGFibGUoKSkgewogICAgICAgICAgICAgICAgIGlmICh0aHJvd0V4Y2VwdGlvbikKLSAg
ICAgICAgICAgICAgICAgICAgdGhyb3dFcnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywg
IkF0dGVtcHRpbmcgdG8gY2hhbmdlIHdyaXRhYmxlIGF0dHJpYnV0ZSBvZiB1bmNvbmZpZ3VyYWJs
ZSBwcm9wZXJ0eS4iKSk7CisgICAgICAgICAgICAgICAgICAgIHRocm93RXJyb3IoZXhlYywgY3Jl
YXRlVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiQXR0ZW1wdGluZyB0byBjaGFuZ2Ugd3Jp
dGFibGUgYXR0cmlidXRlIG9mIHVuY29uZmlndXJhYmxlIHByb3BlcnR5LiIpKSk7CiAgICAgICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKCFj
dXJyZW50LndyaXRhYmxlKCkpIHsKICAgICAgICAgICAgICAgICBpZiAoZGVzY3JpcHRvci52YWx1
ZSgpICYmICFzYW1lVmFsdWUoZXhlYywgY3VycmVudC52YWx1ZSgpLCBkZXNjcmlwdG9yLnZhbHVl
KCkpKSB7CiAgICAgICAgICAgICAgICAgICAgIGlmICh0aHJvd0V4Y2VwdGlvbikKLSAgICAgICAg
ICAgICAgICAgICAgICAgIHRocm93RXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsICJB
dHRlbXB0aW5nIHRvIGNoYW5nZSB2YWx1ZSBvZiBhIHJlYWRvbmx5IHByb3BlcnR5LiIpKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHRocm93RXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4
ZWMsIEFTQ0lJTGl0ZXJhbCgiQXR0ZW1wdGluZyB0byBjaGFuZ2UgdmFsdWUgb2YgYSByZWFkb25s
eSBwcm9wZXJ0eS4iKSkpOwogICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgfQpAQCAtNzkzLDEyICs3OTMsMTIgQEAgYm9vbCBK
U09iamVjdDo6ZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBl
eGVjLCBQcm9wZXJ0eU5hbWUKICAgICBpZiAoIWN1cnJlbnQuY29uZmlndXJhYmxlKCkpIHsKICAg
ICAgICAgaWYgKGRlc2NyaXB0b3Iuc2V0dGVyUHJlc2VudCgpICYmICEoY3VycmVudC5zZXR0ZXJQ
cmVzZW50KCkgJiYgSlNWYWx1ZTo6c3RyaWN0RXF1YWwoZXhlYywgY3VycmVudC5zZXR0ZXIoKSwg
ZGVzY3JpcHRvci5zZXR0ZXIoKSkpKSB7CiAgICAgICAgICAgICBpZiAodGhyb3dFeGNlcHRpb24p
Ci0gICAgICAgICAgICAgICAgdGhyb3dFcnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywg
IkF0dGVtcHRpbmcgdG8gY2hhbmdlIHRoZSBzZXR0ZXIgb2YgYW4gdW5jb25maWd1cmFibGUgcHJv
cGVydHkuIikpOworICAgICAgICAgICAgICAgIHRocm93RXJyb3IoZXhlYywgY3JlYXRlVHlwZUVy
cm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiQXR0ZW1wdGluZyB0byBjaGFuZ2UgdGhlIHNldHRlciBv
ZiBhbiB1bmNvbmZpZ3VyYWJsZSBwcm9wZXJ0eS4iKSkpOwogICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgICAgICB9CiAgICAgICAgIGlmIChkZXNjcmlwdG9yLmdldHRlclByZXNlbnQoKSAm
JiAhKGN1cnJlbnQuZ2V0dGVyUHJlc2VudCgpICYmIEpTVmFsdWU6OnN0cmljdEVxdWFsKGV4ZWMs
IGN1cnJlbnQuZ2V0dGVyKCksIGRlc2NyaXB0b3IuZ2V0dGVyKCkpKSkgewogICAgICAgICAgICAg
aWYgKHRocm93RXhjZXB0aW9uKQotICAgICAgICAgICAgICAgIHRocm93RXJyb3IoZXhlYywgY3Jl
YXRlVHlwZUVycm9yKGV4ZWMsICJBdHRlbXB0aW5nIHRvIGNoYW5nZSB0aGUgZ2V0dGVyIG9mIGFu
IHVuY29uZmlndXJhYmxlIHByb3BlcnR5LiIpKTsKKyAgICAgICAgICAgICAgICB0aHJvd0Vycm9y
KGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkF0dGVtcHRpbmcgdG8g
Y2hhbmdlIHRoZSBnZXR0ZXIgb2YgYW4gdW5jb25maWd1cmFibGUgcHJvcGVydHkuIikpKTsKICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmNwcAppbmRleCA5NzdmMGQxMDAzYzg1YTk4NjEzYzJi
ODhmNGQzZTUwY2Q4ZWJmYjIzLi40MjZjMDI2MzQ2MzYwZTk1MDhlMWU1NTk5N2ZmMmI0MWFjNmM1
MWNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuY3BwCkBAIC0y
MjUsNyArMjI1LDcgQEAgSlNTdHJpbmcqIEpTUm9wZVN0cmluZzo6Z2V0SW5kZXhTbG93Q2FzZShF
eGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIGkpCiAgICAgcmVzb2x2ZVJvcGUoZXhlYyk7CiAgICAg
Ly8gUmV0dXJuIGEgc2FmZSBuby12YWx1ZSByZXN1bHQsIHRoaXMgc2hvdWxkIG5ldmVyIGJlIHVz
ZWQsIHNpbmNlIHRoZSBleGNldGlvbiB3aWxsIGJlIHRocm93bi4KICAgICBpZiAoZXhlYy0+ZXhj
ZXB0aW9uKCkpCi0gICAgICAgIHJldHVybiBqc1N0cmluZyhleGVjLCAiIik7CisgICAgICAgIHJl
dHVybiBqc0VtcHR5U3RyaW5nKGV4ZWMpOwogICAgIEFTU0VSVCghaXNSb3BlKCkpOwogICAgIEFT
U0VSVChpIDwgbV92YWx1ZS5sZW5ndGgoKSk7CiAgICAgcmV0dXJuIGpzU2luZ2xlQ2hhcmFjdGVy
U3Vic3RyaW5nKGV4ZWMsIG1fdmFsdWUsIGkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTU3RyaW5nLmgKaW5kZXggOWYxNzZhZDIzY2ZkMjAzNGUyNGI1NzAwZjE0YjQwNDM2ZjFjZWU4
My4uN2M0ZDY1ZmM2YTJmOWQ4NGQzNTQxZDJmMjk0ZTc1NWIzMGE2OTU4ZiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5oCkBAIC01MCw4ICs1MCw2IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgIC8vIFRoZXNlIGZ1bmN0aW9ucyBhcmUgZmFzdGVyIHRoYW4ganVzdCBjYWxs
aW5nIGpzU3RyaW5nLgogICAgIEpTU3RyaW5nKiBqc05vbnRyaXZpYWxTdHJpbmcoSlNHbG9iYWxE
YXRhKiwgY29uc3QgU3RyaW5nJik7CiAgICAgSlNTdHJpbmcqIGpzTm9udHJpdmlhbFN0cmluZyhF
eGVjU3RhdGUqLCBjb25zdCBTdHJpbmcmKTsKLSAgICBKU1N0cmluZyoganNOb250cml2aWFsU3Ry
aW5nKEpTR2xvYmFsRGF0YSosIGNvbnN0IGNoYXIqKTsKLSAgICBKU1N0cmluZyoganNOb250cml2
aWFsU3RyaW5nKEV4ZWNTdGF0ZSosIGNvbnN0IGNoYXIqKTsKIAogICAgIC8vIFNob3VsZCBiZSB1
c2VkIGZvciBzdHJpbmdzIHRoYXQgYXJlIG93bmVkIGJ5IGFuIG9iamVjdCB0aGF0IHdpbGwKICAg
ICAvLyBsaWtlbHkgb3V0bGl2ZSB0aGUgSlNWYWx1ZSB0aGlzIG1ha2VzLCBzdWNoIGFzIHRoZSBw
YXJzZSB0cmVlIG9yIGEKQEAgLTM1MywxNCArMzUxLDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgIHJldHVybiBKU1N0cmluZzo6Y3JlYXRlKCpnbG9iYWxEYXRhLCBTdHJpbmdJbXBsOjpjcmVh
dGUocy5pbXBsKCksIG9mZnNldCwgMSkpOwogICAgIH0KIAotICAgIGlubGluZSBKU1N0cmluZyog
anNOb250cml2aWFsU3RyaW5nKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgY29uc3QgY2hhciog
cykKLSAgICB7Ci0gICAgICAgIEFTU0VSVChzKTsKLSAgICAgICAgQVNTRVJUKHNbMF0pOwotICAg
ICAgICBBU1NFUlQoc1sxXSk7Ci0gICAgICAgIHJldHVybiBKU1N0cmluZzo6Y3JlYXRlKCpnbG9i
YWxEYXRhLCBTdHJpbmcocykuaW1wbCgpKTsKLSAgICB9Ci0KICAgICBpbmxpbmUgSlNTdHJpbmcq
IGpzTm9udHJpdmlhbFN0cmluZyhKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIGNvbnN0IFN0cmlu
ZyYgcykKICAgICB7CiAgICAgICAgIEFTU0VSVChzLmxlbmd0aCgpID4gMSk7CkBAIC00NjgsNyAr
NDU4LDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgaW5saW5lIEpTU3RyaW5nKiBqc1N1YnN0cmlu
ZzgoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBTdHJpbmcmIHMsIHVuc2lnbmVkIG9mZnNldCwgdW5z
aWduZWQgbGVuZ3RoKSB7IHJldHVybiBqc1N1YnN0cmluZzgoJmV4ZWMtPmdsb2JhbERhdGEoKSwg
cywgb2Zmc2V0LCBsZW5ndGgpOyB9CiAgICAgaW5saW5lIEpTU3RyaW5nKiBqc1N1YnN0cmluZyhF
eGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFN0cmluZyYgcywgdW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25l
ZCBsZW5ndGgpIHsgcmV0dXJuIGpzU3Vic3RyaW5nKCZleGVjLT5nbG9iYWxEYXRhKCksIHMsIG9m
ZnNldCwgbGVuZ3RoKTsgfQogICAgIGlubGluZSBKU1N0cmluZyoganNOb250cml2aWFsU3RyaW5n
KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU3RyaW5nJiBzKSB7IHJldHVybiBqc05vbnRyaXZpYWxT
dHJpbmcoJmV4ZWMtPmdsb2JhbERhdGEoKSwgcyk7IH0KLSAgICBpbmxpbmUgSlNTdHJpbmcqIGpz
Tm9udHJpdmlhbFN0cmluZyhFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IGNoYXIqIHMpIHsgcmV0dXJu
IGpzTm9udHJpdmlhbFN0cmluZygmZXhlYy0+Z2xvYmFsRGF0YSgpLCBzKTsgfQogICAgIGlubGlu
ZSBKU1N0cmluZyoganNPd25lZFN0cmluZyhFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFN0cmluZyYg
cykgeyByZXR1cm4ganNPd25lZFN0cmluZygmZXhlYy0+Z2xvYmFsRGF0YSgpLCBzKTsgfQogCiAg
ICAgQUxXQVlTX0lOTElORSBib29sIEpTU3RyaW5nOjpnZXRTdHJpbmdQcm9wZXJ0eVNsb3QoRXhl
Y1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNs
b3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1ZhbHVlLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFsdWUuY3BwCmluZGV4IDBiZWRh
YTMzZjI2MjMwMjcyYzA3MzliNzNjMzVmYzAyZmUwZjdhNDcuLmNhZmY5OTczYjRkNDYwNjdhZWRk
MTY2YTk4Zjc5ZTI0ZjU2ZjVhYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
VmFsdWUuY3BwCkBAIC0xNDMsNyArMTQzLDcgQEAgdm9pZCBKU1ZhbHVlOjpwdXRUb1ByaW1pdGl2
ZShFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUKICAg
ICAgICAgICAgICAgICBKU09iamVjdCogc2V0dGVyRnVuYyA9IGFzR2V0dGVyU2V0dGVyKGdzKS0+
c2V0dGVyKCk7ICAgICAgICAKICAgICAgICAgICAgICAgICBpZiAoIXNldHRlckZ1bmMpIHsKICAg
ICAgICAgICAgICAgICAgICAgaWYgKHNsb3QuaXNTdHJpY3RNb2RlKCkpCi0gICAgICAgICAgICAg
ICAgICAgICAgICB0aHJvd0Vycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCAic2V0dGlu
ZyBhIHByb3BlcnR5IHRoYXQgaGFzIG9ubHkgYSBnZXR0ZXIiKSk7CisgICAgICAgICAgICAgICAg
ICAgICAgICB0aHJvd0Vycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVy
YWwoInNldHRpbmcgYSBwcm9wZXJ0eSB0aGF0IGhhcyBvbmx5IGEgZ2V0dGVyIikpKTsKICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAg
ICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xpdGVyYWxQYXJz
ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTGl0ZXJhbFBhcnNlci5jcHAK
aW5kZXggYWE2NTQxYjZhZWQ1YmYwY2VjZDhlNWY2Mzk5NDc5Yzg2YzIyMDllMS4uMjBiMGMzMDVh
YzgyZDdmYTZhMWIyMTgwOTg1ODg3NWFlYTgwOTY4MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvTGl0ZXJhbFBhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvTGl0ZXJhbFBhcnNlci5jcHAKQEAgLTI2OSw3ICsyNjksNyBAQCB0ZW1w
bGF0ZSA8UGFyc2VyTW9kZSBtb2RlPiBUb2tlblR5cGUgTGl0ZXJhbFBhcnNlcjxDaGFyVHlwZT46
OkxleGVyOjpsZXgoTGl0ZXJhbAogICAgICAgICAgICAgcmV0dXJuIGxleElkZW50aWZpZXIodG9r
ZW4pOwogICAgICAgICBpZiAoKm1fcHRyID09ICdcJycpIHsKICAgICAgICAgICAgIGlmIChtb2Rl
ID09IFN0cmljdEpTT04pIHsKLSAgICAgICAgICAgICAgICBtX2xleEVycm9yTWVzc2FnZSA9ICJT
aW5nbGUgcXVvdGVzIChcJykgYXJlIG5vdCBhbGxvd2VkIGluIEpTT04iOworICAgICAgICAgICAg
ICAgIG1fbGV4RXJyb3JNZXNzYWdlID0gQVNDSUlMaXRlcmFsKCJTaW5nbGUgcXVvdGVzIChcJykg
YXJlIG5vdCBhbGxvd2VkIGluIEpTT04iKTsKICAgICAgICAgICAgICAgICByZXR1cm4gVG9rRXJy
b3I7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICByZXR1cm4gbGV4U3RyaW5nPG1vZGUsICdc
Jyc+KHRva2VuKTsKQEAgLTM1Niw3ICszNTYsNyBAQCB0ZW1wbGF0ZSA8UGFyc2VyTW9kZSBtb2Rl
LCBjaGFyIHRlcm1pbmF0b3I+IEFMV0FZU19JTkxJTkUgVG9rZW5UeXBlIExpdGVyYWxQYXJzZQog
ICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKHJ1blN0YXJ0LCBtX3B0ciAtIHJ1blN0YXJ0
KTsKICAgICAgICAgICAgICsrbV9wdHI7CiAgICAgICAgICAgICBpZiAobV9wdHIgPj0gbV9lbmQp
IHsKLSAgICAgICAgICAgICAgICBtX2xleEVycm9yTWVzc2FnZSA9ICJVbnRlcm1pbmF0ZWQgc3Ry
aW5nIjsKKyAgICAgICAgICAgICAgICBtX2xleEVycm9yTWVzc2FnZSA9IEFTQ0lJTGl0ZXJhbCgi
VW50ZXJtaW5hdGVkIHN0cmluZyIpOwogICAgICAgICAgICAgICAgIHJldHVybiBUb2tFcnJvcjsK
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHN3aXRjaCAoKm1fcHRyKSB7CkBAIC0zOTUsNyAr
Mzk1LDcgQEAgdGVtcGxhdGUgPFBhcnNlck1vZGUgbW9kZSwgY2hhciB0ZXJtaW5hdG9yPiBBTFdB
WVNfSU5MSU5FIFRva2VuVHlwZSBMaXRlcmFsUGFyc2UKIAogICAgICAgICAgICAgICAgIGNhc2Ug
J3UnOgogICAgICAgICAgICAgICAgICAgICBpZiAoKG1fZW5kIC0gbV9wdHIpIDwgNSkgeyAKLSAg
ICAgICAgICAgICAgICAgICAgICAgIG1fbGV4RXJyb3JNZXNzYWdlID0gIlxcdSBtdXN0IGJlIGZv
bGxvd2VkIGJ5IDQgaGV4IGRpZ2l0cyI7CisgICAgICAgICAgICAgICAgICAgICAgICBtX2xleEVy
cm9yTWVzc2FnZSA9IEFTQ0lJTGl0ZXJhbCgiXFx1IG11c3QgYmUgZm9sbG93ZWQgYnkgNCBoZXgg
ZGlnaXRzIik7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gVG9rRXJyb3I7CiAgICAg
ICAgICAgICAgICAgICAgIH0gLy8gdU5OTk4gPT0gNSBjaGFyYWN0ZXJzCiAgICAgICAgICAgICAg
ICAgICAgIGZvciAoaW50IGkgPSAxOyBpIDwgNTsgaSsrKSB7CkBAIC00MjEsNyArNDIxLDcgQEAg
dGVtcGxhdGUgPFBhcnNlck1vZGUgbW9kZSwgY2hhciB0ZXJtaW5hdG9yPiBBTFdBWVNfSU5MSU5F
IFRva2VuVHlwZSBMaXRlcmFsUGFyc2UKICAgICB9IHdoaWxlICgobW9kZSAhPSBOb25TdHJpY3RK
U09OKSAmJiBtX3B0ciAhPSBydW5TdGFydCAmJiAobV9wdHIgPCBtX2VuZCkgJiYgKm1fcHRyICE9
IHRlcm1pbmF0b3IpOwogCiAgICAgaWYgKG1fcHRyID49IG1fZW5kIHx8ICptX3B0ciAhPSB0ZXJt
aW5hdG9yKSB7Ci0gICAgICAgIG1fbGV4RXJyb3JNZXNzYWdlID0gIlVudGVybWluYXRlZCBzdHJp
bmciOworICAgICAgICBtX2xleEVycm9yTWVzc2FnZSA9IEFTQ0lJTGl0ZXJhbCgiVW50ZXJtaW5h
dGVkIHN0cmluZyIpOwogICAgICAgICByZXR1cm4gVG9rRXJyb3I7CiAgICAgfQogCkBAIC00NzQs
NyArNDc0LDcgQEAgVG9rZW5UeXBlIExpdGVyYWxQYXJzZXI8Q2hhclR5cGU+OjpMZXhlcjo6bGV4
TnVtYmVyKExpdGVyYWxQYXJzZXJUb2tlbjxDaGFyVHlwZT4KICAgICAgICAgd2hpbGUgKG1fcHRy
IDwgbV9lbmQgJiYgaXNBU0NJSURpZ2l0KCptX3B0cikpCiAgICAgICAgICAgICArK21fcHRyOwog
ICAgIH0gZWxzZSB7Ci0gICAgICAgIG1fbGV4RXJyb3JNZXNzYWdlID0gIkludmFsaWQgbnVtYmVy
IjsKKyAgICAgICAgbV9sZXhFcnJvck1lc3NhZ2UgPSBBU0NJSUxpdGVyYWwoIkludmFsaWQgbnVt
YmVyIik7CiAgICAgICAgIHJldHVybiBUb2tFcnJvcjsKICAgICB9CiAKQEAgLTQ4Myw3ICs0ODMs
NyBAQCBUb2tlblR5cGUgTGl0ZXJhbFBhcnNlcjxDaGFyVHlwZT46OkxleGVyOjpsZXhOdW1iZXIo
TGl0ZXJhbFBhcnNlclRva2VuPENoYXJUeXBlPgogICAgICAgICArK21fcHRyOwogICAgICAgICAv
LyBbMC05XSsKICAgICAgICAgaWYgKG1fcHRyID49IG1fZW5kIHx8ICFpc0FTQ0lJRGlnaXQoKm1f
cHRyKSkgewotICAgICAgICAgICAgbV9sZXhFcnJvck1lc3NhZ2UgPSAiSW52YWxpZCBkaWdpdHMg
YWZ0ZXIgZGVjaW1hbCBwb2ludCI7CisgICAgICAgICAgICBtX2xleEVycm9yTWVzc2FnZSA9IEFT
Q0lJTGl0ZXJhbCgiSW52YWxpZCBkaWdpdHMgYWZ0ZXIgZGVjaW1hbCBwb2ludCIpOwogICAgICAg
ICAgICAgcmV0dXJuIFRva0Vycm9yOwogICAgICAgICB9CiAKQEAgLTUxOCw3ICs1MTgsNyBAQCBU
b2tlblR5cGUgTGl0ZXJhbFBhcnNlcjxDaGFyVHlwZT46OkxleGVyOjpsZXhOdW1iZXIoTGl0ZXJh
bFBhcnNlclRva2VuPENoYXJUeXBlPgogCiAgICAgICAgIC8vIFswLTldKwogICAgICAgICBpZiAo
bV9wdHIgPj0gbV9lbmQgfHwgIWlzQVNDSUlEaWdpdCgqbV9wdHIpKSB7Ci0gICAgICAgICAgICBt
X2xleEVycm9yTWVzc2FnZSA9ICJFeHBvbmVudCBzeW1ib2xzIHNob3VsZCBiZSBmb2xsb3dlZCBi
eSBhbiBvcHRpb25hbCAnKycgb3IgJy0nIGFuZCB0aGVuIGJ5IGF0IGxlYXN0IG9uZSBudW1iZXIi
OworICAgICAgICAgICAgbV9sZXhFcnJvck1lc3NhZ2UgPSBBU0NJSUxpdGVyYWwoIkV4cG9uZW50
IHN5bWJvbHMgc2hvdWxkIGJlIGZvbGxvd2VkIGJ5IGFuIG9wdGlvbmFsICcrJyBvciAnLScgYW5k
IHRoZW4gYnkgYXQgbGVhc3Qgb25lIG51bWJlciIpOwogICAgICAgICAgICAgcmV0dXJuIFRva0Vy
cm9yOwogICAgICAgICB9CiAgICAgICAgIApAQCAtNTU1LDcgKzU1NSw3IEBAIEpTVmFsdWUgTGl0
ZXJhbFBhcnNlcjxDaGFyVHlwZT46OnBhcnNlKFBhcnNlclN0YXRlIGluaXRpYWxTdGF0ZSkKICAg
ICAgICAgICAgICAgICBUb2tlblR5cGUgbGFzdFRva2VuID0gbV9sZXhlci5jdXJyZW50VG9rZW4o
KS50eXBlOwogICAgICAgICAgICAgICAgIGlmIChtX2xleGVyLm5leHQoKSA9PSBUb2tSQnJhY2tl
dCkgewogICAgICAgICAgICAgICAgICAgICBpZiAobGFzdFRva2VuID09IFRva0NvbW1hKSB7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBtX3BhcnNlRXJyb3JNZXNzYWdlID0gIlVuZXhwZWN0ZWQg
Y29tbWEgYXQgdGhlIGVuZCBvZiBhcnJheSBleHByZXNzaW9uIjsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIG1fcGFyc2VFcnJvck1lc3NhZ2UgPSBBU0NJSUxpdGVyYWwoIlVuZXhwZWN0ZWQgY29t
bWEgYXQgdGhlIGVuZCBvZiBhcnJheSBleHByZXNzaW9uIik7CiAgICAgICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gSlNWYWx1ZSgpOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICAgICAgICAgIG1fbGV4ZXIubmV4dCgpOwpAQCAtNTc0LDcgKzU3NCw3IEBAIEpTVmFsdWUgTGl0
ZXJhbFBhcnNlcjxDaGFyVHlwZT46OnBhcnNlKFBhcnNlclN0YXRlIGluaXRpYWxTdGF0ZSkKICAg
ICAgICAgICAgICAgICAgICAgZ290byBkb1BhcnNlQXJyYXlTdGFydEV4cHJlc3Npb247CiAKICAg
ICAgICAgICAgICAgICBpZiAobV9sZXhlci5jdXJyZW50VG9rZW4oKS50eXBlICE9IFRva1JCcmFj
a2V0KSB7Ci0gICAgICAgICAgICAgICAgICAgIG1fcGFyc2VFcnJvck1lc3NhZ2UgPSAiRXhwZWN0
ZWQgJ10nIjsKKyAgICAgICAgICAgICAgICAgICAgbV9wYXJzZUVycm9yTWVzc2FnZSA9IEFTQ0lJ
TGl0ZXJhbCgiRXhwZWN0ZWQgJ10nIik7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBKU1Zh
bHVlKCk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIApAQCAtNTk0LDcgKzU5
NCw3IEBAIEpTVmFsdWUgTGl0ZXJhbFBhcnNlcjxDaGFyVHlwZT46OnBhcnNlKFBhcnNlclN0YXRl
IGluaXRpYWxTdGF0ZSkKIAogICAgICAgICAgICAgICAgICAgICAvLyBDaGVjayBmb3IgY29sb24K
ICAgICAgICAgICAgICAgICAgICAgaWYgKG1fbGV4ZXIubmV4dCgpICE9IFRva0NvbG9uKSB7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBtX3BhcnNlRXJyb3JNZXNzYWdlID0gIkV4cGVjdGVkICc6
JyBiZWZvcmUgdmFsdWUgaW4gb2JqZWN0IHByb3BlcnR5IGRlZmluaXRpb24iOworICAgICAgICAg
ICAgICAgICAgICAgICAgbV9wYXJzZUVycm9yTWVzc2FnZSA9IEFTQ0lJTGl0ZXJhbCgiRXhwZWN0
ZWQgJzonIGJlZm9yZSB2YWx1ZSBpbiBvYmplY3QgcHJvcGVydHkgZGVmaW5pdGlvbiIpOwogICAg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKICAgICAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgICAgICAgICAKQEAgLTYwNyw3ICs2MDcsNyBAQCBKU1ZhbHVlIExp
dGVyYWxQYXJzZXI8Q2hhclR5cGU+OjpwYXJzZShQYXJzZXJTdGF0ZSBpbml0aWFsU3RhdGUpCiAg
ICAgICAgICAgICAgICAgICAgIGdvdG8gc3RhcnRQYXJzZUV4cHJlc3Npb247CiAgICAgICAgICAg
ICAgICAgfQogICAgICAgICAgICAgICAgIGlmICh0eXBlICE9IFRva1JCcmFjZSkgIHsKLSAgICAg
ICAgICAgICAgICAgICAgbV9wYXJzZUVycm9yTWVzc2FnZSA9ICJFeHBlY3RlZCAnfSciOworICAg
ICAgICAgICAgICAgICAgICBtX3BhcnNlRXJyb3JNZXNzYWdlID0gQVNDSUlMaXRlcmFsKCJFeHBl
Y3RlZCAnfSciKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKICAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgbV9sZXhlci5uZXh0KCk7CkBAIC02MTksMTQg
KzYxOSwxNCBAQCBKU1ZhbHVlIExpdGVyYWxQYXJzZXI8Q2hhclR5cGU+OjpwYXJzZShQYXJzZXJT
dGF0ZSBpbml0aWFsU3RhdGUpCiAgICAgICAgICAgICBjYXNlIERvUGFyc2VPYmplY3RTdGFydEV4
cHJlc3Npb246IHsKICAgICAgICAgICAgICAgICBUb2tlblR5cGUgdHlwZSA9IG1fbGV4ZXIubmV4
dCgpOwogICAgICAgICAgICAgICAgIGlmICh0eXBlICE9IFRva1N0cmluZyAmJiAobV9tb2RlID09
IFN0cmljdEpTT04gfHwgdHlwZSAhPSBUb2tJZGVudGlmaWVyKSkgewotICAgICAgICAgICAgICAg
ICAgICBtX3BhcnNlRXJyb3JNZXNzYWdlID0gIlByb3BlcnR5IG5hbWUgbXVzdCBiZSBhIHN0cmlu
ZyBsaXRlcmFsIjsKKyAgICAgICAgICAgICAgICAgICAgbV9wYXJzZUVycm9yTWVzc2FnZSA9IEFT
Q0lJTGl0ZXJhbCgiUHJvcGVydHkgbmFtZSBtdXN0IGJlIGEgc3RyaW5nIGxpdGVyYWwiKTsKICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKICAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICAgICAgTGl0ZXJhbFBhcnNlclRva2VuPENoYXJUeXBlPiBpZGVudGlmaWVyVG9r
ZW4gPSBtX2xleGVyLmN1cnJlbnRUb2tlbigpOwogCiAgICAgICAgICAgICAgICAgLy8gQ2hlY2sg
Zm9yIGNvbG9uCiAgICAgICAgICAgICAgICAgaWYgKG1fbGV4ZXIubmV4dCgpICE9IFRva0NvbG9u
KSB7Ci0gICAgICAgICAgICAgICAgICAgIG1fcGFyc2VFcnJvck1lc3NhZ2UgPSAiRXhwZWN0ZWQg
JzonIjsKKyAgICAgICAgICAgICAgICAgICAgbV9wYXJzZUVycm9yTWVzc2FnZSA9IEFTQ0lJTGl0
ZXJhbCgiRXhwZWN0ZWQgJzonIik7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVl
KCk7CiAgICAgICAgICAgICAgICAgfQogCkBAIC02NDUsNyArNjQ1LDcgQEAgSlNWYWx1ZSBMaXRl
cmFsUGFyc2VyPENoYXJUeXBlPjo6cGFyc2UoUGFyc2VyU3RhdGUgaW5pdGlhbFN0YXRlKQogICAg
ICAgICAgICAgICAgIGlmIChtX2xleGVyLmN1cnJlbnRUb2tlbigpLnR5cGUgPT0gVG9rQ29tbWEp
CiAgICAgICAgICAgICAgICAgICAgIGdvdG8gZG9QYXJzZU9iamVjdFN0YXJ0RXhwcmVzc2lvbjsK
ICAgICAgICAgICAgICAgICBpZiAobV9sZXhlci5jdXJyZW50VG9rZW4oKS50eXBlICE9IFRva1JC
cmFjZSkgewotICAgICAgICAgICAgICAgICAgICBtX3BhcnNlRXJyb3JNZXNzYWdlID0gIkV4cGVj
dGVkICd9JyI7CisgICAgICAgICAgICAgICAgICAgIG1fcGFyc2VFcnJvck1lc3NhZ2UgPSBBU0NJ
SUxpdGVyYWwoIkV4cGVjdGVkICd9JyIpOwogICAgICAgICAgICAgICAgICAgICByZXR1cm4gSlNW
YWx1ZSgpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBtX2xleGVyLm5leHQo
KTsKQEAgLTY5MCwxMCArNjkwLDEwIEBAIEpTVmFsdWUgTGl0ZXJhbFBhcnNlcjxDaGFyVHlwZT46
OnBhcnNlKFBhcnNlclN0YXRlIGluaXRpYWxTdGF0ZSkKICAgICAgICAgICAgICAgICAgICAgICAg
IGxhc3RWYWx1ZSA9IGpzQm9vbGVhbihmYWxzZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgICAgICAgICAgICAgY2FzZSBUb2tSQnJhY2tldDoKLSAgICAgICAgICAg
ICAgICAgICAgICAgIG1fcGFyc2VFcnJvck1lc3NhZ2UgPSAiVW5leHBlY3RlZCB0b2tlbiAnXSci
OworICAgICAgICAgICAgICAgICAgICAgICAgbV9wYXJzZUVycm9yTWVzc2FnZSA9IEFTQ0lJTGl0
ZXJhbCgiVW5leHBlY3RlZCB0b2tlbiAnXSciKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBKU1ZhbHVlKCk7CiAgICAgICAgICAgICAgICAgICAgIGNhc2UgVG9rUkJyYWNlOgotICAg
ICAgICAgICAgICAgICAgICAgICAgbV9wYXJzZUVycm9yTWVzc2FnZSA9ICJVbmV4cGVjdGVkIHRv
a2VuICd9JyI7CisgICAgICAgICAgICAgICAgICAgICAgICBtX3BhcnNlRXJyb3JNZXNzYWdlID0g
QVNDSUlMaXRlcmFsKCJVbmV4cGVjdGVkIHRva2VuICd9JyIpOwogICAgICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKICAgICAgICAgICAgICAgICAgICAgY2FzZSBUb2tJZGVu
dGlmaWVyOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBMaXRlcmFsUGFyc2VyVG9r
ZW48Q2hhclR5cGU+JiB0b2tlbiA9IG1fbGV4ZXIuY3VycmVudFRva2VuKCk7CkBAIC03MDQsMzMg
KzcwNCwzMyBAQCBKU1ZhbHVlIExpdGVyYWxQYXJzZXI8Q2hhclR5cGU+OjpwYXJzZShQYXJzZXJT
dGF0ZSBpbml0aWFsU3RhdGUpCiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1
ZSgpOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIGNhc2UgVG9r
Q29sb246Ci0gICAgICAgICAgICAgICAgICAgICAgICBtX3BhcnNlRXJyb3JNZXNzYWdlID0gIlVu
ZXhwZWN0ZWQgdG9rZW4gJzonIjsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fcGFyc2VFcnJv
ck1lc3NhZ2UgPSBBU0NJSUxpdGVyYWwoIlVuZXhwZWN0ZWQgdG9rZW4gJzonIik7CiAgICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOwogICAgICAgICAgICAgICAgICAgICBj
YXNlIFRva0xQYXJlbjoKLSAgICAgICAgICAgICAgICAgICAgICAgIG1fcGFyc2VFcnJvck1lc3Nh
Z2UgPSAiVW5leHBlY3RlZCB0b2tlbiAnKCciOworICAgICAgICAgICAgICAgICAgICAgICAgbV9w
YXJzZUVycm9yTWVzc2FnZSA9IEFTQ0lJTGl0ZXJhbCgiVW5leHBlY3RlZCB0b2tlbiAnKCciKTsK
ICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7CiAgICAgICAgICAgICAg
ICAgICAgIGNhc2UgVG9rUlBhcmVuOgotICAgICAgICAgICAgICAgICAgICAgICAgbV9wYXJzZUVy
cm9yTWVzc2FnZSA9ICJVbmV4cGVjdGVkIHRva2VuICcpJyI7CisgICAgICAgICAgICAgICAgICAg
ICAgICBtX3BhcnNlRXJyb3JNZXNzYWdlID0gQVNDSUlMaXRlcmFsKCJVbmV4cGVjdGVkIHRva2Vu
ICcpJyIpOwogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKICAgICAg
ICAgICAgICAgICAgICAgY2FzZSBUb2tDb21tYToKLSAgICAgICAgICAgICAgICAgICAgICAgIG1f
cGFyc2VFcnJvck1lc3NhZ2UgPSAiVW5leHBlY3RlZCB0b2tlbiAnLCciOworICAgICAgICAgICAg
ICAgICAgICAgICAgbV9wYXJzZUVycm9yTWVzc2FnZSA9IEFTQ0lJTGl0ZXJhbCgiVW5leHBlY3Rl
ZCB0b2tlbiAnLCciKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7
CiAgICAgICAgICAgICAgICAgICAgIGNhc2UgVG9rRG90OgotICAgICAgICAgICAgICAgICAgICAg
ICAgbV9wYXJzZUVycm9yTWVzc2FnZSA9ICJVbmV4cGVjdGVkIHRva2VuICcuJyI7CisgICAgICAg
ICAgICAgICAgICAgICAgICBtX3BhcnNlRXJyb3JNZXNzYWdlID0gQVNDSUlMaXRlcmFsKCJVbmV4
cGVjdGVkIHRva2VuICcuJyIpOwogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFs
dWUoKTsKICAgICAgICAgICAgICAgICAgICAgY2FzZSBUb2tBc3NpZ246Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBtX3BhcnNlRXJyb3JNZXNzYWdlID0gIlVuZXhwZWN0ZWQgdG9rZW4gJz0nIjsK
KyAgICAgICAgICAgICAgICAgICAgICAgIG1fcGFyc2VFcnJvck1lc3NhZ2UgPSBBU0NJSUxpdGVy
YWwoIlVuZXhwZWN0ZWQgdG9rZW4gJz0nIik7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4gSlNWYWx1ZSgpOwogICAgICAgICAgICAgICAgICAgICBjYXNlIFRva1NlbWk6Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBtX3BhcnNlRXJyb3JNZXNzYWdlID0gIlVuZXhwZWN0ZWQgdG9rZW4g
JzsnIjsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fcGFyc2VFcnJvck1lc3NhZ2UgPSBBU0NJ
SUxpdGVyYWwoIlVuZXhwZWN0ZWQgdG9rZW4gJzsnIik7CiAgICAgICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gSlNWYWx1ZSgpOwogICAgICAgICAgICAgICAgICAgICBjYXNlIFRva0VuZDoKLSAg
ICAgICAgICAgICAgICAgICAgICAgIG1fcGFyc2VFcnJvck1lc3NhZ2UgPSAiVW5leHBlY3RlZCBF
T0YiOworICAgICAgICAgICAgICAgICAgICAgICAgbV9wYXJzZUVycm9yTWVzc2FnZSA9IEFTQ0lJ
TGl0ZXJhbCgiVW5leHBlY3RlZCBFT0YiKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
biBKU1ZhbHVlKCk7CiAgICAgICAgICAgICAgICAgICAgIGNhc2UgVG9rRXJyb3I6CiAgICAgICAg
ICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgICAgICAgICAvLyBFcnJvcgot
ICAgICAgICAgICAgICAgICAgICAgICAgbV9wYXJzZUVycm9yTWVzc2FnZSA9ICJDb3VsZCBub3Qg
cGFyc2UgdmFsdWUgZXhwcmVzc2lvbiI7CisgICAgICAgICAgICAgICAgICAgICAgICBtX3BhcnNl
RXJyb3JNZXNzYWdlID0gQVNDSUlMaXRlcmFsKCJDb3VsZCBub3QgcGFyc2UgdmFsdWUgZXhwcmVz
c2lvbiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKICAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC03NDgsNTAgKzc0OCw1MCBA
QCBKU1ZhbHVlIExpdGVyYWxQYXJzZXI8Q2hhclR5cGU+OjpwYXJzZShQYXJzZXJTdGF0ZSBpbml0
aWFsU3RhdGUpCiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIHN0YXJ0UGFyc2VFeHByZXNz
aW9uOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIGNhc2UgVG9r
UkJyYWNrZXQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICBtX3BhcnNlRXJyb3JNZXNzYWdlID0g
IlVuZXhwZWN0ZWQgdG9rZW4gJ10nIjsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fcGFyc2VF
cnJvck1lc3NhZ2UgPSBBU0NJSUxpdGVyYWwoIlVuZXhwZWN0ZWQgdG9rZW4gJ10nIik7CiAgICAg
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOwogICAgICAgICAgICAgICAgICAg
ICBjYXNlIFRva0xCcmFjZToKLSAgICAgICAgICAgICAgICAgICAgICAgIG1fcGFyc2VFcnJvck1l
c3NhZ2UgPSAiVW5leHBlY3RlZCB0b2tlbiAneyciOworICAgICAgICAgICAgICAgICAgICAgICAg
bV9wYXJzZUVycm9yTWVzc2FnZSA9IEFTQ0lJTGl0ZXJhbCgiVW5leHBlY3RlZCB0b2tlbiAneyci
KTsKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7CiAgICAgICAgICAg
ICAgICAgICAgIGNhc2UgVG9rUkJyYWNlOgotICAgICAgICAgICAgICAgICAgICAgICAgbV9wYXJz
ZUVycm9yTWVzc2FnZSA9ICJVbmV4cGVjdGVkIHRva2VuICd9JyI7CisgICAgICAgICAgICAgICAg
ICAgICAgICBtX3BhcnNlRXJyb3JNZXNzYWdlID0gQVNDSUlMaXRlcmFsKCJVbmV4cGVjdGVkIHRv
a2VuICd9JyIpOwogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKICAg
ICAgICAgICAgICAgICAgICAgY2FzZSBUb2tJZGVudGlmaWVyOgotICAgICAgICAgICAgICAgICAg
ICAgICAgbV9wYXJzZUVycm9yTWVzc2FnZSA9ICJVbmV4cGVjdGVkIGlkZW50aWZpZXIiOworICAg
ICAgICAgICAgICAgICAgICAgICAgbV9wYXJzZUVycm9yTWVzc2FnZSA9IEFTQ0lJTGl0ZXJhbCgi
VW5leHBlY3RlZCBpZGVudGlmaWVyIik7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4g
SlNWYWx1ZSgpOwogICAgICAgICAgICAgICAgICAgICBjYXNlIFRva0NvbG9uOgotICAgICAgICAg
ICAgICAgICAgICAgICAgbV9wYXJzZUVycm9yTWVzc2FnZSA9ICJVbmV4cGVjdGVkIHRva2VuICc6
JyI7CisgICAgICAgICAgICAgICAgICAgICAgICBtX3BhcnNlRXJyb3JNZXNzYWdlID0gQVNDSUlM
aXRlcmFsKCJVbmV4cGVjdGVkIHRva2VuICc6JyIpOwogICAgICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIEpTVmFsdWUoKTsKICAgICAgICAgICAgICAgICAgICAgY2FzZSBUb2tSUGFyZW46Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBtX3BhcnNlRXJyb3JNZXNzYWdlID0gIlVuZXhwZWN0ZWQg
dG9rZW4gJyknIjsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fcGFyc2VFcnJvck1lc3NhZ2Ug
PSBBU0NJSUxpdGVyYWwoIlVuZXhwZWN0ZWQgdG9rZW4gJyknIik7CiAgICAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOwogICAgICAgICAgICAgICAgICAgICBjYXNlIFRva0Nv
bW1hOgotICAgICAgICAgICAgICAgICAgICAgICAgbV9wYXJzZUVycm9yTWVzc2FnZSA9ICJVbmV4
cGVjdGVkIHRva2VuICcsJyI7CisgICAgICAgICAgICAgICAgICAgICAgICBtX3BhcnNlRXJyb3JN
ZXNzYWdlID0gQVNDSUlMaXRlcmFsKCJVbmV4cGVjdGVkIHRva2VuICcsJyIpOwogICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKICAgICAgICAgICAgICAgICAgICAgY2Fz
ZSBUb2tUcnVlOgotICAgICAgICAgICAgICAgICAgICAgICAgbV9wYXJzZUVycm9yTWVzc2FnZSA9
ICJVbmV4cGVjdGVkIHRva2VuICd0cnVlJyI7CisgICAgICAgICAgICAgICAgICAgICAgICBtX3Bh
cnNlRXJyb3JNZXNzYWdlID0gQVNDSUlMaXRlcmFsKCJVbmV4cGVjdGVkIHRva2VuICd0cnVlJyIp
OwogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKICAgICAgICAgICAg
ICAgICAgICAgY2FzZSBUb2tGYWxzZToKLSAgICAgICAgICAgICAgICAgICAgICAgIG1fcGFyc2VF
cnJvck1lc3NhZ2UgPSAiVW5leHBlY3RlZCB0b2tlbiAnZmFsc2UnIjsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIG1fcGFyc2VFcnJvck1lc3NhZ2UgPSBBU0NJSUxpdGVyYWwoIlVuZXhwZWN0ZWQg
dG9rZW4gJ2ZhbHNlJyIpOwogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWUo
KTsKICAgICAgICAgICAgICAgICAgICAgY2FzZSBUb2tOdWxsOgotICAgICAgICAgICAgICAgICAg
ICAgICAgbV9wYXJzZUVycm9yTWVzc2FnZSA9ICJVbmV4cGVjdGVkIHRva2VuICdudWxsJyI7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBtX3BhcnNlRXJyb3JNZXNzYWdlID0gQVNDSUlMaXRlcmFs
KCJVbmV4cGVjdGVkIHRva2VuICdudWxsJyIpOwogICAgICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIEpTVmFsdWUoKTsKICAgICAgICAgICAgICAgICAgICAgY2FzZSBUb2tFbmQ6Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBtX3BhcnNlRXJyb3JNZXNzYWdlID0gIlVuZXhwZWN0ZWQgRU9GIjsK
KyAgICAgICAgICAgICAgICAgICAgICAgIG1fcGFyc2VFcnJvck1lc3NhZ2UgPSBBU0NJSUxpdGVy
YWwoIlVuZXhwZWN0ZWQgRU9GIik7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gSlNW
YWx1ZSgpOwogICAgICAgICAgICAgICAgICAgICBjYXNlIFRva0RvdDoKLSAgICAgICAgICAgICAg
ICAgICAgICAgIG1fcGFyc2VFcnJvck1lc3NhZ2UgPSAiVW5leHBlY3RlZCB0b2tlbiAnLiciOwor
ICAgICAgICAgICAgICAgICAgICAgICAgbV9wYXJzZUVycm9yTWVzc2FnZSA9IEFTQ0lJTGl0ZXJh
bCgiVW5leHBlY3RlZCB0b2tlbiAnLiciKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
biBKU1ZhbHVlKCk7CiAgICAgICAgICAgICAgICAgICAgIGNhc2UgVG9rQXNzaWduOgotICAgICAg
ICAgICAgICAgICAgICAgICAgbV9wYXJzZUVycm9yTWVzc2FnZSA9ICJVbmV4cGVjdGVkIHRva2Vu
ICc9JyI7CisgICAgICAgICAgICAgICAgICAgICAgICBtX3BhcnNlRXJyb3JNZXNzYWdlID0gQVND
SUlMaXRlcmFsKCJVbmV4cGVjdGVkIHRva2VuICc9JyIpOwogICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIEpTVmFsdWUoKTsKICAgICAgICAgICAgICAgICAgICAgY2FzZSBUb2tTZW1pOgot
ICAgICAgICAgICAgICAgICAgICAgICAgbV9wYXJzZUVycm9yTWVzc2FnZSA9ICJVbmV4cGVjdGVk
IHRva2VuICc7JyI7CisgICAgICAgICAgICAgICAgICAgICAgICBtX3BhcnNlRXJyb3JNZXNzYWdl
ID0gQVNDSUlMaXRlcmFsKCJVbmV4cGVjdGVkIHRva2VuICc7JyIpOwogICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKICAgICAgICAgICAgICAgICAgICAgY2FzZSBUb2tF
cnJvcjoKICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICAgICAg
ICAgIG1fcGFyc2VFcnJvck1lc3NhZ2UgPSAiQ291bGQgbm90IHBhcnNlIHN0YXRlbWVudCI7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBtX3BhcnNlRXJyb3JNZXNzYWdlID0gQVNDSUlMaXRlcmFs
KCJDb3VsZCBub3QgcGFyc2Ugc3RhdGVtZW50Iik7CiAgICAgICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gSlNWYWx1ZSgpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KQEAgLTgw
MSw3ICs4MDEsNyBAQCBKU1ZhbHVlIExpdGVyYWxQYXJzZXI8Q2hhclR5cGU+OjpwYXJzZShQYXJz
ZXJTdGF0ZSBpbml0aWFsU3RhdGUpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVl
KCk7CiAgICAgICAgICAgICAgICAgaWYgKG1fbGV4ZXIubmV4dCgpID09IFRva0VuZCkKICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIGxhc3RWYWx1ZTsKLSAgICAgICAgICAgICAgICBtX3BhcnNl
RXJyb3JNZXNzYWdlID0gIlVuZXhwZWN0ZWQgY29udGVudCBhdCBlbmQgb2YgSlNPTiBsaXRlcmFs
IjsKKyAgICAgICAgICAgICAgICBtX3BhcnNlRXJyb3JNZXNzYWdlID0gQVNDSUlMaXRlcmFsKCJV
bmV4cGVjdGVkIGNvbnRlbnQgYXQgZW5kIG9mIEpTT04gbGl0ZXJhbCIpOwogICAgICAgICAgICAg
ICAgIHJldHVybiBKU1ZhbHVlKCk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBkZWZhdWx0
OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTGl0ZXJhbFBhcnNl
ci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTGl0ZXJhbFBhcnNlci5oCmluZGV4
IDYxYThlZjM0ZGM2MjAxNmMxZGRjNjY5ZDUzN2I5MjljZjBlN2RlZmIuLmMwZjMwOGVlNWQxMDI1
ZDNkZjE3MWVhZjlkMDk2MWFiYmI2YzU2ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0xpdGVyYWxQYXJzZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9MaXRlcmFsUGFyc2VyLmgKQEAgLTEwMCw3ICsxMDAsNyBAQCBwdWJsaWM6CiAgICAg
ICAgICAgICByZXR1cm4gU3RyaW5nOjpmb3JtYXQoIkpTT04gUGFyc2UgZXJyb3I6ICVzIiwgbV9s
ZXhlci5nZXRFcnJvck1lc3NhZ2UoKS5hc2NpaSgpLmRhdGEoKSkuaW1wbCgpOwogICAgICAgICBp
ZiAoIW1fcGFyc2VFcnJvck1lc3NhZ2UuaXNFbXB0eSgpKQogICAgICAgICAgICAgcmV0dXJuIFN0
cmluZzo6Zm9ybWF0KCJKU09OIFBhcnNlIGVycm9yOiAlcyIsIG1fcGFyc2VFcnJvck1lc3NhZ2Uu
YXNjaWkoKS5kYXRhKCkpLmltcGwoKTsKLSAgICAgICAgcmV0dXJuICJKU09OIFBhcnNlIGVycm9y
OiBVbmFibGUgdG8gcGFyc2UgSlNPTiBzdHJpbmciOworICAgICAgICByZXR1cm4gQVNDSUlMaXRl
cmFsKCJKU09OIFBhcnNlIGVycm9yOiBVbmFibGUgdG8gcGFyc2UgSlNPTiBzdHJpbmciKTsKICAg
ICB9CiAgICAgCiAgICAgSlNWYWx1ZSB0cnlMaXRlcmFsUGFyc2UoKQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlclByb3RvdHlwZS5jcHAKaW5kZXggMWQ3OTM5MjI1
MjQ2YjJkYmVjZTgyMWEzZTQzMWMwYjdkYmZmZTViYi4uNGExMGVmZDZkNjRkYjI4MGI3NzYwNTI3
ZDA3OWU4OWMyNTBlNzBiYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvTnVtYmVyUHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9OdW1iZXJQcm90b3R5cGUuY3BwCkBAIC0zNzgsNyArMzc4LDcgQEAgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBudW1iZXJQcm90b0Z1bmNUb0V4cG9uZW50aWFsKEV4ZWNTdGF0ZSogZXhl
YykKICAgICBpbnQgZGVjaW1hbFBsYWNlc0luRXhwb25lbnQ7CiAgICAgYm9vbCBpc1VuZGVmaW5l
ZDsKICAgICBpZiAoIWdldEludGVnZXJBcmd1bWVudEluUmFuZ2UoZXhlYywgMCwgMjAsIGRlY2lt
YWxQbGFjZXNJbkV4cG9uZW50LCBpc1VuZGVmaW5lZCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZN
RXJyb3IoZXhlYywgY3JlYXRlUmFuZ2VFcnJvcihleGVjLCAidG9FeHBvbmVudGlhbCgpIGFyZ3Vt
ZW50IG11c3QgYmUgYmV0d2VlbiAwIGFuZCAyMCIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1F
cnJvcihleGVjLCBjcmVhdGVSYW5nZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgidG9FeHBvbmVu
dGlhbCgpIGFyZ3VtZW50IG11c3QgYmUgYmV0d2VlbiAwIGFuZCAyMCIpKSk7CiAKICAgICAvLyBI
YW5kbGUgTmFOIGFuZCBJbmZpbml0eS4KICAgICBpZiAoIWlzZmluaXRlKHgpKQpAQCAtNDA5LDcg
KzQwOSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbnVtYmVyUHJvdG9GdW5jVG9G
aXhlZChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgaW50IGRlY2ltYWxQbGFjZXM7CiAgICAgYm9vbCBp
c1VuZGVmaW5lZDsgLy8gVGhpcyBpcyBpZ25vcmVkOyB1bmRlZmluZWQgdHJlYXRlZCBhcyAwLgog
ICAgIGlmICghZ2V0SW50ZWdlckFyZ3VtZW50SW5SYW5nZShleGVjLCAwLCAyMCwgZGVjaW1hbFBs
YWNlcywgaXNVbmRlZmluZWQpKQotICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNy
ZWF0ZVJhbmdlRXJyb3IoZXhlYywgInRvRml4ZWQoKSBhcmd1bWVudCBtdXN0IGJlIGJldHdlZW4g
MCBhbmQgMjAiKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlUmFu
Z2VFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoInRvRml4ZWQoKSBhcmd1bWVudCBtdXN0IGJlIGJl
dHdlZW4gMCBhbmQgMjAiKSkpOwogCiAgICAgLy8gMTUuNy40LjUuNyBzdGF0ZXMgIklmIHggPj0g
MTBeMjEsIHRoZW4gbGV0IG0gPSBUb1N0cmluZyh4KSIKICAgICAvLyBUaGlzIGFsc28gY292ZXJz
IEluaW5pdHksIGFuZCBzdHJ1Y3R1cmUgdGhlIGNoZWNrIHNvIHRoYXQgTmFOCkBAIC00NDIsNyAr
NDQyLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBudW1iZXJQcm90b0Z1bmNUb1By
ZWNpc2lvbihFeGVjU3RhdGUqIGV4ZWMpCiAgICAgaW50IHNpZ25pZmljYW50RmlndXJlczsKICAg
ICBib29sIGlzVW5kZWZpbmVkOwogICAgIGlmICghZ2V0SW50ZWdlckFyZ3VtZW50SW5SYW5nZShl
eGVjLCAxLCAyMSwgc2lnbmlmaWNhbnRGaWd1cmVzLCBpc1VuZGVmaW5lZCkpCi0gICAgICAgIHJl
dHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlUmFuZ2VFcnJvcihleGVjLCAidG9QcmVjaXNp
b24oKSBhcmd1bWVudCBtdXN0IGJlIGJldHdlZW4gMSBhbmQgMjEiKSk7CisgICAgICAgIHJldHVy
biB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlUmFuZ2VFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwo
InRvUHJlY2lzaW9uKCkgYXJndW1lbnQgbXVzdCBiZSBiZXR3ZWVuIDEgYW5kIDIxIikpKTsKIAog
ICAgIC8vIFRvIHByZWNpc2lvbiBjYWxsZWQgd2l0aCBubyBhcmd1bWVudCBpcyB0cmVhdGVkIGFz
IFRvU3RyaW5nLgogICAgIGlmIChpc1VuZGVmaW5lZCkKQEAgLTQ5Nyw3ICs0OTcsNyBAQCBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG51bWJlclByb3RvRnVuY1RvU3RyaW5nKEV4ZWNTdGF0
ZSogZXhlYykKIAogICAgIGludDMyX3QgcmFkaXggPSBleHRyYWN0UmFkaXhGcm9tQXJncyhleGVj
KTsKICAgICBpZiAocmFkaXggPCAyIHx8IHJhZGl4ID4gMzYpCi0gICAgICAgIHJldHVybiB0aHJv
d1ZNRXJyb3IoZXhlYywgY3JlYXRlUmFuZ2VFcnJvcihleGVjLCAidG9TdHJpbmcoKSByYWRpeCBh
cmd1bWVudCBtdXN0IGJlIGJldHdlZW4gMiBhbmQgMzYiKSk7CisgICAgICAgIHJldHVybiB0aHJv
d1ZNRXJyb3IoZXhlYywgY3JlYXRlUmFuZ2VFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoInRvU3Ry
aW5nKCkgcmFkaXggYXJndW1lbnQgbXVzdCBiZSBiZXR3ZWVuIDIgYW5kIDM2IikpKTsKIAogICAg
IGludDMyX3QgaW50ZWdlclZhbHVlID0gc3RhdGljX2Nhc3Q8aW50MzJfdD4oZG91YmxlVmFsdWUp
OwogICAgIGlmIChpbnRlZ2VyVmFsdWUgPT0gZG91YmxlVmFsdWUpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHAKaW5kZXggMjFlY2Nk
MzBlOTliYmMwY2VlYjJmOWU5ZTFhNWM3ZjhiODI2YmVhNi4uMTllOTI3ZTU1MjU0ZTk0OGM2MjUx
NjBkZDAzODFjNDg5YmJmY2UzNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL09iamVjdENvbnN0cnVjdG9yLmNwcApAQCAtMTM3LDcgKzEzNyw3IEBAIENhbGxUeXBl
IE9iamVjdENvbnN0cnVjdG9yOjpnZXRDYWxsRGF0YShKU0NlbGwqLCBDYWxsRGF0YSYgY2FsbERh
dGEpCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9yR2V0UHJv
dG90eXBlT2YoRXhlY1N0YXRlKiBleGVjKQogewogICAgIGlmICghZXhlYy0+YXJndW1lbnQoMCku
aXNPYmplY3QoKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVUeXBl
RXJyb3IoZXhlYywgIlJlcXVlc3RlZCBwcm90b3R5cGUgb2YgYSB2YWx1ZSB0aGF0IGlzIG5vdCBh
biBvYmplY3QuIikpOworICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVR5
cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlJlcXVlc3RlZCBwcm90b3R5cGUgb2YgYSB2YWx1
ZSB0aGF0IGlzIG5vdCBhbiBvYmplY3QuIikpKTsKICAgICBKU09iamVjdCogb2JqZWN0ID0gYXNP
YmplY3QoZXhlYy0+YXJndW1lbnQoMCkpOwogICAgIGlmICghb2JqZWN0LT5hbGxvd3NBY2Nlc3NG
cm9tKGV4ZWMtPnRydWVDYWxsZXJGcmFtZSgpKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc1VuZGVmaW5lZCgpKTsKQEAgLTE0Nyw3ICsxNDcsNyBAQCBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9yR2V0UHJvdG90eXBlT2YoRXhlY1N0YXRlKiBl
eGVjKQogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3RvckdldE93
blByb3BlcnR5RGVzY3JpcHRvcihFeGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAgaWYgKCFleGVjLT5h
cmd1bWVudCgwKS5pc09iamVjdCgpKQotICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMs
IGNyZWF0ZVR5cGVFcnJvcihleGVjLCAiUmVxdWVzdGVkIHByb3BlcnR5IGRlc2NyaXB0b3Igb2Yg
YSB2YWx1ZSB0aGF0IGlzIG5vdCBhbiBvYmplY3QuIikpOworICAgICAgICByZXR1cm4gdGhyb3dW
TUVycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlJlcXVlc3Rl
ZCBwcm9wZXJ0eSBkZXNjcmlwdG9yIG9mIGEgdmFsdWUgdGhhdCBpcyBub3QgYW4gb2JqZWN0LiIp
KSk7CiAgICAgU3RyaW5nIHByb3BlcnR5TmFtZSA9IGV4ZWMtPmFyZ3VtZW50KDEpLnRvU3RyaW5n
KGV4ZWMpLT52YWx1ZShleGVjKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdWxsKCkpOwpAQCAtMTc5LDcgKzE3OSw3IEBA
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JHZXRPd25Qcm9w
ZXJ0eURlc2NyaXB0b3IoRXhlY1N0YXRlCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9i
amVjdENvbnN0cnVjdG9yR2V0T3duUHJvcGVydHlOYW1lcyhFeGVjU3RhdGUqIGV4ZWMpCiB7CiAg
ICAgaWYgKCFleGVjLT5hcmd1bWVudCgwKS5pc09iamVjdCgpKQotICAgICAgICByZXR1cm4gdGhy
b3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCAiUmVxdWVzdGVkIHByb3BlcnR5
IG5hbWVzIG9mIGEgdmFsdWUgdGhhdCBpcyBub3QgYW4gb2JqZWN0LiIpKTsKKyAgICAgICAgcmV0
dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFs
KCJSZXF1ZXN0ZWQgcHJvcGVydHkgbmFtZXMgb2YgYSB2YWx1ZSB0aGF0IGlzIG5vdCBhbiBvYmpl
Y3QuIikpKTsKICAgICBQcm9wZXJ0eU5hbWVBcnJheSBwcm9wZXJ0aWVzKGV4ZWMpOwogICAgIGFz
T2JqZWN0KGV4ZWMtPmFyZ3VtZW50KDApKS0+bWV0aG9kVGFibGUoKS0+Z2V0T3duUHJvcGVydHlO
YW1lcyhhc09iamVjdChleGVjLT5hcmd1bWVudCgwKSksIGV4ZWMsIHByb3BlcnRpZXMsIEluY2x1
ZGVEb250RW51bVByb3BlcnRpZXMpOwogICAgIEpTQXJyYXkqIG5hbWVzID0gY29uc3RydWN0RW1w
dHlBcnJheShleGVjKTsKQEAgLTE5Myw3ICsxOTMsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIG9iamVjdENvbnN0cnVjdG9yR2V0T3duUHJvcGVydHlOYW1lcyhFeGVjU3RhdGUqIGV4
ZQogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3RvcktleXMoRXhl
Y1N0YXRlKiBleGVjKQogewogICAgIGlmICghZXhlYy0+YXJndW1lbnQoMCkuaXNPYmplY3QoKSkK
LSAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywg
IlJlcXVlc3RlZCBrZXlzIG9mIGEgdmFsdWUgdGhhdCBpcyBub3QgYW4gb2JqZWN0LiIpKTsKKyAg
ICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgQVND
SUlMaXRlcmFsKCJSZXF1ZXN0ZWQga2V5cyBvZiBhIHZhbHVlIHRoYXQgaXMgbm90IGFuIG9iamVj
dC4iKSkpOwogICAgIFByb3BlcnR5TmFtZUFycmF5IHByb3BlcnRpZXMoZXhlYyk7CiAgICAgYXNP
YmplY3QoZXhlYy0+YXJndW1lbnQoMCkpLT5tZXRob2RUYWJsZSgpLT5nZXRPd25Qcm9wZXJ0eU5h
bWVzKGFzT2JqZWN0KGV4ZWMtPmFyZ3VtZW50KDApKSwgZXhlYywgcHJvcGVydGllcywgRXhjbHVk
ZURvbnRFbnVtUHJvcGVydGllcyk7CiAgICAgSlNBcnJheSoga2V5cyA9IGNvbnN0cnVjdEVtcHR5
QXJyYXkoZXhlYyk7CkBAIC0yMDcsNyArMjA3LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBvYmplY3RDb25zdHJ1Y3RvcktleXMoRXhlY1N0YXRlKiBleGVjKQogc3RhdGljIGJvb2wg
dG9Qcm9wZXJ0eURlc2NyaXB0b3IoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGluLCBQcm9wZXJ0
eURlc2NyaXB0b3ImIGRlc2MpCiB7CiAgICAgaWYgKCFpbi5pc09iamVjdCgpKSB7Ci0gICAgICAg
IHRocm93RXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsICJQcm9wZXJ0eSBkZXNjcmlw
dGlvbiBtdXN0IGJlIGFuIG9iamVjdC4iKSk7CisgICAgICAgIHRocm93RXJyb3IoZXhlYywgY3Jl
YXRlVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiUHJvcGVydHkgZGVzY3JpcHRpb24gbXVz
dCBiZSBhbiBvYmplY3QuIikpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICBK
U09iamVjdCogZGVzY3JpcHRpb24gPSBhc09iamVjdChpbik7CkBAIC0yNDksNyArMjQ5LDcgQEAg
c3RhdGljIGJvb2wgdG9Qcm9wZXJ0eURlc2NyaXB0b3IoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVl
IGluLCBQcm9wZXJ0eURlc2NyaXB0b3IKICAgICAgICAgaWYgKCFnZXQuaXNVbmRlZmluZWQoKSkg
ewogICAgICAgICAgICAgQ2FsbERhdGEgY2FsbERhdGE7CiAgICAgICAgICAgICBpZiAoZ2V0Q2Fs
bERhdGEoZ2V0LCBjYWxsRGF0YSkgPT0gQ2FsbFR5cGVOb25lKSB7Ci0gICAgICAgICAgICAgICAg
dGhyb3dFcnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgIkdldHRlciBtdXN0IGJlIGEg
ZnVuY3Rpb24uIikpOworICAgICAgICAgICAgICAgIHRocm93RXJyb3IoZXhlYywgY3JlYXRlVHlw
ZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiR2V0dGVyIG11c3QgYmUgYSBmdW5jdGlvbi4iKSkp
OwogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIH0KICAgICAgICAg
fQpAQCAtMjY0LDcgKzI2NCw3IEBAIHN0YXRpYyBib29sIHRvUHJvcGVydHlEZXNjcmlwdG9yKEV4
ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBpbiwgUHJvcGVydHlEZXNjcmlwdG9yCiAgICAgICAgIGlm
ICghc2V0LmlzVW5kZWZpbmVkKCkpIHsKICAgICAgICAgICAgIENhbGxEYXRhIGNhbGxEYXRhOwog
ICAgICAgICAgICAgaWYgKGdldENhbGxEYXRhKHNldCwgY2FsbERhdGEpID09IENhbGxUeXBlTm9u
ZSkgewotICAgICAgICAgICAgICAgIHRocm93RXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4
ZWMsICJTZXR0ZXIgbXVzdCBiZSBhIGZ1bmN0aW9uLiIpKTsKKyAgICAgICAgICAgICAgICB0aHJv
d0Vycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlNldHRlciBt
dXN0IGJlIGEgZnVuY3Rpb24uIikpKTsKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTI3NSwxMiArMjc1LDEyIEBAIHN0YXRpYyBib29s
IHRvUHJvcGVydHlEZXNjcmlwdG9yKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBpbiwgUHJvcGVy
dHlEZXNjcmlwdG9yCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgaWYgKGRlc2MudmFsdWUo
KSkgewotICAgICAgICB0aHJvd0Vycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCAiSW52
YWxpZCBwcm9wZXJ0eS4gICd2YWx1ZScgcHJlc2VudCBvbiBwcm9wZXJ0eSB3aXRoIGdldHRlciBv
ciBzZXR0ZXIuIikpOworICAgICAgICB0aHJvd0Vycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihl
eGVjLCBBU0NJSUxpdGVyYWwoIkludmFsaWQgcHJvcGVydHkuICAndmFsdWUnIHByZXNlbnQgb24g
cHJvcGVydHkgd2l0aCBnZXR0ZXIgb3Igc2V0dGVyLiIpKSk7CiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICB9CiAKICAgICBpZiAoZGVzYy53cml0YWJsZVByZXNlbnQoKSkgewotICAgICAgICB0
aHJvd0Vycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCAiSW52YWxpZCBwcm9wZXJ0eS4g
ICd3cml0YWJsZScgcHJlc2VudCBvbiBwcm9wZXJ0eSB3aXRoIGdldHRlciBvciBzZXR0ZXIuIikp
OworICAgICAgICB0aHJvd0Vycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCBBU0NJSUxp
dGVyYWwoIkludmFsaWQgcHJvcGVydHkuICAnd3JpdGFibGUnIHByZXNlbnQgb24gcHJvcGVydHkg
d2l0aCBnZXR0ZXIgb3Igc2V0dGVyLiIpKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9
CiAgICAgcmV0dXJuIHRydWU7CkBAIC0yODksNyArMjg5LDcgQEAgc3RhdGljIGJvb2wgdG9Qcm9w
ZXJ0eURlc2NyaXB0b3IoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGluLCBQcm9wZXJ0eURlc2Ny
aXB0b3IKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JEZWZp
bmVQcm9wZXJ0eShFeGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAgaWYgKCFleGVjLT5hcmd1bWVudCgw
KS5pc09iamVjdCgpKQotICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVR5
cGVFcnJvcihleGVjLCAiUHJvcGVydGllcyBjYW4gb25seSBiZSBkZWZpbmVkIG9uIE9iamVjdHMu
IikpOworICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihl
eGVjLCBBU0NJSUxpdGVyYWwoIlByb3BlcnRpZXMgY2FuIG9ubHkgYmUgZGVmaW5lZCBvbiBPYmpl
Y3RzLiIpKSk7CiAgICAgSlNPYmplY3QqIE8gPSBhc09iamVjdChleGVjLT5hcmd1bWVudCgwKSk7
CiAgICAgU3RyaW5nIHByb3BlcnR5TmFtZSA9IGV4ZWMtPmFyZ3VtZW50KDEpLnRvU3RyaW5nKGV4
ZWMpLT52YWx1ZShleGVjKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCkBAIC0zNDAs
MjAgKzM0MCwyMCBAQCBzdGF0aWMgSlNWYWx1ZSBkZWZpbmVQcm9wZXJ0aWVzKEV4ZWNTdGF0ZSog
ZXhlYywgSlNPYmplY3QqIG9iamVjdCwgSlNPYmplY3QqIHBybwogRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3RvckRlZmluZVByb3BlcnRpZXMoRXhlY1N0YXRlKiBl
eGVjKQogewogICAgIGlmICghZXhlYy0+YXJndW1lbnQoMCkuaXNPYmplY3QoKSkKLSAgICAgICAg
cmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgIlByb3BlcnRp
ZXMgY2FuIG9ubHkgYmUgZGVmaW5lZCBvbiBPYmplY3RzLiIpKTsKKyAgICAgICAgcmV0dXJuIHRo
cm93Vk1FcnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJQcm9w
ZXJ0aWVzIGNhbiBvbmx5IGJlIGRlZmluZWQgb24gT2JqZWN0cy4iKSkpOwogICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoZGVmaW5lUHJvcGVydGllcyhleGVjLCBhc09iamVjdChleGVjLT5hcmd1
bWVudCgwKSksIGV4ZWMtPmFyZ3VtZW50KDEpLnRvT2JqZWN0KGV4ZWMpKSk7CiB9CiAKIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JDcmVhdGUoRXhlY1N0YXRl
KiBleGVjKQogewogICAgIGlmICghZXhlYy0+YXJndW1lbnQoMCkuaXNPYmplY3QoKSAmJiAhZXhl
Yy0+YXJndW1lbnQoMCkuaXNOdWxsKCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhl
YywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsICJPYmplY3QgcHJvdG90eXBlIG1heSBvbmx5IGJlIGFu
IE9iamVjdCBvciBudWxsLiIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBj
cmVhdGVUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJPYmplY3QgcHJvdG90eXBlIG1heSBv
bmx5IGJlIGFuIE9iamVjdCBvciBudWxsLiIpKSk7CiAgICAgSlNWYWx1ZSBwcm90byA9IGV4ZWMt
PmFyZ3VtZW50KDApOwogICAgIEpTT2JqZWN0KiBuZXdPYmplY3QgPSBwcm90by5pc09iamVjdCgp
ID8gY29uc3RydWN0RW1wdHlPYmplY3QoZXhlYywgYXNPYmplY3QocHJvdG8pLT5pbmhlcml0b3JJ
RChleGVjLT5nbG9iYWxEYXRhKCkpKSA6IGNvbnN0cnVjdEVtcHR5T2JqZWN0KGV4ZWMsIGV4ZWMt
PmxleGljYWxHbG9iYWxPYmplY3QoKS0+bnVsbFByb3RvdHlwZU9iamVjdFN0cnVjdHVyZSgpKTsK
ICAgICBpZiAoZXhlYy0+YXJndW1lbnQoMSkuaXNVbmRlZmluZWQoKSkKICAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShuZXdPYmplY3QpOwogICAgIGlmICghZXhlYy0+YXJndW1lbnQoMSku
aXNPYmplY3QoKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVUeXBl
RXJyb3IoZXhlYywgIlByb3BlcnR5IGRlc2NyaXB0b3IgbGlzdCBtdXN0IGJlIGFuIE9iamVjdC4i
KSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4
ZWMsIEFTQ0lJTGl0ZXJhbCgiUHJvcGVydHkgZGVzY3JpcHRvciBsaXN0IG11c3QgYmUgYW4gT2Jq
ZWN0LiIpKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShkZWZpbmVQcm9wZXJ0aWVzKGV4
ZWMsIG5ld09iamVjdCwgYXNPYmplY3QoZXhlYy0+YXJndW1lbnQoMSkpKSk7CiB9CiAKQEAgLTM2
Miw3ICszNjIsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVj
dG9yU2VhbChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgLy8gMS4gSWYgVHlwZShPKSBpcyBub3QgT2Jq
ZWN0IHRocm93IGEgVHlwZUVycm9yIGV4Y2VwdGlvbi4KICAgICBKU1ZhbHVlIG9iaiA9IGV4ZWMt
PmFyZ3VtZW50KDApOwogICAgIGlmICghb2JqLmlzT2JqZWN0KCkpCi0gICAgICAgIHJldHVybiB0
aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsICJPYmplY3Quc2VhbCBjYW4g
b25seSBiZSBjYWxsZWQgb24gT2JqZWN0cy4iKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJy
b3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiT2JqZWN0LnNlYWwg
Y2FuIG9ubHkgYmUgY2FsbGVkIG9uIE9iamVjdHMuIikpKTsKICAgICBKU09iamVjdCogb2JqZWN0
ID0gYXNPYmplY3Qob2JqKTsKIAogICAgIGlmIChpc0pTRmluYWxPYmplY3Qob2JqZWN0KSkgewpA
QCAtMzk5LDcgKzM5OSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29u
c3RydWN0b3JGcmVlemUoRXhlY1N0YXRlKiBleGVjKQogICAgIC8vIDEuIElmIFR5cGUoTykgaXMg
bm90IE9iamVjdCB0aHJvdyBhIFR5cGVFcnJvciBleGNlcHRpb24uCiAgICAgSlNWYWx1ZSBvYmog
PSBleGVjLT5hcmd1bWVudCgwKTsKICAgICBpZiAoIW9iai5pc09iamVjdCgpKQotICAgICAgICBy
ZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCAiT2JqZWN0LmZy
ZWV6ZSBjYW4gb25seSBiZSBjYWxsZWQgb24gT2JqZWN0cy4iKSk7CisgICAgICAgIHJldHVybiB0
aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiT2Jq
ZWN0LmZyZWV6ZSBjYW4gb25seSBiZSBjYWxsZWQgb24gT2JqZWN0cy4iKSkpOwogICAgIEpTT2Jq
ZWN0KiBvYmplY3QgPSBhc09iamVjdChvYmopOwogCiAgICAgaWYgKGlzSlNGaW5hbE9iamVjdChv
YmplY3QpKSB7CkBAIC00MzksNyArNDM5LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBvYmplY3RDb25zdHJ1Y3RvclByZXZlbnRFeHRlbnNpb25zKEV4ZWNTdGF0ZSogZXhlYykKIHsK
ICAgICBKU1ZhbHVlIG9iaiA9IGV4ZWMtPmFyZ3VtZW50KDApOwogICAgIGlmICghb2JqLmlzT2Jq
ZWN0KCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9y
KGV4ZWMsICJPYmplY3QucHJldmVudEV4dGVuc2lvbnMgY2FuIG9ubHkgYmUgY2FsbGVkIG9uIE9i
amVjdHMuIikpOworICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVR5cGVF
cnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIk9iamVjdC5wcmV2ZW50RXh0ZW5zaW9ucyBjYW4gb25s
eSBiZSBjYWxsZWQgb24gT2JqZWN0cy4iKSkpOwogICAgIGFzT2JqZWN0KG9iaiktPnByZXZlbnRF
eHRlbnNpb25zKGV4ZWMtPmdsb2JhbERhdGEoKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShvYmopOwogfQpAQCAtNDQ5LDcgKzQ0OSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgb2JqZWN0Q29uc3RydWN0b3JJc1NlYWxlZChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgLy8gMS4g
SWYgVHlwZShPKSBpcyBub3QgT2JqZWN0IHRocm93IGEgVHlwZUVycm9yIGV4Y2VwdGlvbi4KICAg
ICBKU1ZhbHVlIG9iaiA9IGV4ZWMtPmFyZ3VtZW50KDApOwogICAgIGlmICghb2JqLmlzT2JqZWN0
KCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4
ZWMsICJPYmplY3QuaXNTZWFsZWQgY2FuIG9ubHkgYmUgY2FsbGVkIG9uIE9iamVjdHMuIikpOwor
ICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCBB
U0NJSUxpdGVyYWwoIk9iamVjdC5pc1NlYWxlZCBjYW4gb25seSBiZSBjYWxsZWQgb24gT2JqZWN0
cy4iKSkpOwogICAgIEpTT2JqZWN0KiBvYmplY3QgPSBhc09iamVjdChvYmopOwogCiAgICAgaWYg
KGlzSlNGaW5hbE9iamVjdChvYmplY3QpKQpAQCAtNDc5LDcgKzQ3OSw3IEBAIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JJc0Zyb3plbihFeGVjU3RhdGUqIGV4
ZWMpCiAgICAgLy8gMS4gSWYgVHlwZShPKSBpcyBub3QgT2JqZWN0IHRocm93IGEgVHlwZUVycm9y
IGV4Y2VwdGlvbi4KICAgICBKU1ZhbHVlIG9iaiA9IGV4ZWMtPmFyZ3VtZW50KDApOwogICAgIGlm
ICghb2JqLmlzT2JqZWN0KCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3Jl
YXRlVHlwZUVycm9yKGV4ZWMsICJPYmplY3QuaXNGcm96ZW4gY2FuIG9ubHkgYmUgY2FsbGVkIG9u
IE9iamVjdHMuIikpOworICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVR5
cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIk9iamVjdC5pc0Zyb3plbiBjYW4gb25seSBiZSBj
YWxsZWQgb24gT2JqZWN0cy4iKSkpOwogICAgIEpTT2JqZWN0KiBvYmplY3QgPSBhc09iamVjdChv
YmopOwogCiAgICAgaWYgKGlzSlNGaW5hbE9iamVjdChvYmplY3QpKQpAQCAtNTA5LDcgKzUwOSw3
IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JJc0V4dGVu
c2libGUoRXhlY1N0YXRlKiBleGVjKQogewogICAgIEpTVmFsdWUgb2JqID0gZXhlYy0+YXJndW1l
bnQoMCk7CiAgICAgaWYgKCFvYmouaXNPYmplY3QoKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1F
cnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgIk9iamVjdC5pc0V4dGVuc2libGUgY2Fu
IG9ubHkgYmUgY2FsbGVkIG9uIE9iamVjdHMuIikpOworICAgICAgICByZXR1cm4gdGhyb3dWTUVy
cm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIk9iamVjdC5pc0V4
dGVuc2libGUgY2FuIG9ubHkgYmUgY2FsbGVkIG9uIE9iamVjdHMuIikpKTsKICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihhc09iamVjdChvYmopLT5pc0V4dGVuc2libGUoKSkp
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RQ
cm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0UHJvdG90
eXBlLmNwcAppbmRleCA2ZmFhMTY4NDg1ZGJjZjAwYWY4ZjY3NDVmMGJjNWVmMGRhYmIwODEyLi41
YWZiMGQyZjA4NDZjN2VkYzRiMDYxNjUzOTU3MTllNTQ3MDhkZmVlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdFByb3RvdHlwZS5jcHAKQEAgLTE1Nyw3ICsx
NTcsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdFByb3RvRnVuY0RlZmlu
ZUdldHRlcihFeGVjU3RhdGUqIGV4ZWMpCiAgICAgSlNWYWx1ZSBnZXQgPSBleGVjLT5hcmd1bWVu
dCgxKTsKICAgICBDYWxsRGF0YSBjYWxsRGF0YTsKICAgICBpZiAoZ2V0Q2FsbERhdGEoZ2V0LCBj
YWxsRGF0YSkgPT0gQ2FsbFR5cGVOb25lKQotICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4
ZWMsIGNyZWF0ZVN5bnRheEVycm9yKGV4ZWMsICJpbnZhbGlkIGdldHRlciB1c2FnZSIpKTsKKyAg
ICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVTeW50YXhFcnJvcihleGVjLCBB
U0NJSUxpdGVyYWwoImludmFsaWQgZ2V0dGVyIHVzYWdlIikpKTsKIAogICAgIFByb3BlcnR5RGVz
Y3JpcHRvciBkZXNjcmlwdG9yOwogICAgIGRlc2NyaXB0b3Iuc2V0R2V0dGVyKGdldCk7CkBAIC0x
NzcsNyArMTc3LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RQcm90b0Z1
bmNEZWZpbmVTZXR0ZXIoRXhlY1N0YXRlKiBleGVjKQogICAgIEpTVmFsdWUgc2V0ID0gZXhlYy0+
YXJndW1lbnQoMSk7CiAgICAgQ2FsbERhdGEgY2FsbERhdGE7CiAgICAgaWYgKGdldENhbGxEYXRh
KHNldCwgY2FsbERhdGEpID09IENhbGxUeXBlTm9uZSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1F
cnJvcihleGVjLCBjcmVhdGVTeW50YXhFcnJvcihleGVjLCAiaW52YWxpZCBzZXR0ZXIgdXNhZ2Ui
KSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlU3ludGF4RXJyb3Io
ZXhlYywgQVNDSUlMaXRlcmFsKCJpbnZhbGlkIHNldHRlciB1c2FnZSIpKSk7CiAKICAgICBQcm9w
ZXJ0eURlc2NyaXB0b3IgZGVzY3JpcHRvcjsKICAgICBkZXNjcmlwdG9yLnNldFNldHRlcihzZXQp
OwpAQCAtMjQ3LDcgKzI0Nyw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0
UHJvdG9GdW5jVG9TdHJpbmcoRXhlY1N0YXRlKiBleGVjKQogewogICAgIEpTVmFsdWUgdGhpc1Zh
bHVlID0gZXhlYy0+aG9zdFRoaXNWYWx1ZSgpOwogICAgIGlmICh0aGlzVmFsdWUuaXNVbmRlZmlu
ZWRPck51bGwoKSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc05vbnRyaXZpYWxT
dHJpbmcoZXhlYywgdGhpc1ZhbHVlLmlzVW5kZWZpbmVkKCkgPyAiW29iamVjdCBVbmRlZmluZWRd
IiA6ICJbb2JqZWN0IE51bGxdIikpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
Tm9udHJpdmlhbFN0cmluZyhleGVjLCBTdHJpbmcodGhpc1ZhbHVlLmlzVW5kZWZpbmVkKCkgPyBB
U0NJSUxpdGVyYWwoIltvYmplY3QgVW5kZWZpbmVkXSIpIDogQVNDSUlMaXRlcmFsKCJbb2JqZWN0
IE51bGxdIikpKSk7CiAgICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSB0aGlzVmFsdWUudG9PYmpl
Y3QoZXhlYyk7CiAKICAgICBKU1N0cmluZyogcmVzdWx0ID0gdGhpc09iamVjdC0+c3RydWN0dXJl
KCktPm9iamVjdFRvU3RyaW5nVmFsdWUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1JlZ0V4cENvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1JlZ0V4cENvbnN0cnVjdG9yLmNwcAppbmRleCA1N2VlN2RmMTRiNDk3NGJkZDQx
MmQ0YzYyMGVlOTRjMDFjMGM4YmRkLi4xMjQ4ZmI0ZGFlYTAxNDk3NGMxMzJhMDg5MzQzNWVhNjky
MzNlYjc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBD
b25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhw
Q29uc3RydWN0b3IuY3BwCkBAIC0yNjIsNyArMjYyLDcgQEAgSlNPYmplY3QqIGNvbnN0cnVjdFJl
Z0V4cChFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0
IEEKIAogICAgIGlmIChhcmcwLmluaGVyaXRzKCZSZWdFeHBPYmplY3Q6OnNfaW5mbykpIHsKICAg
ICAgICAgaWYgKCFhcmcxLmlzVW5kZWZpbmVkKCkpCi0gICAgICAgICAgICByZXR1cm4gdGhyb3dF
cnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgIkNhbm5vdCBzdXBwbHkgZmxhZ3Mgd2hl
biBjb25zdHJ1Y3Rpbmcgb25lIFJlZ0V4cCBmcm9tIGFub3RoZXIuIikpOworICAgICAgICAgICAg
cmV0dXJuIHRocm93RXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJh
bCgiQ2Fubm90IHN1cHBseSBmbGFncyB3aGVuIGNvbnN0cnVjdGluZyBvbmUgUmVnRXhwIGZyb20g
YW5vdGhlci4iKSkpOwogICAgICAgICAvLyBJZiBjYWxsZWQgYXMgYSBmdW5jdGlvbiwgdGhpcyBq
dXN0IHJldHVybnMgdGhlIGZpcnN0IGFyZ3VtZW50IChzZWUgMTUuMTAuMy4xKS4KICAgICAgICAg
aWYgKGNhbGxBc0NvbnN0cnVjdG9yKSB7CiAgICAgICAgICAgICBSZWdFeHAqIHJlZ0V4cCA9IHN0
YXRpY19jYXN0PFJlZ0V4cE9iamVjdCo+KGFzT2JqZWN0KGFyZzApKS0+cmVnRXhwKCk7CkBAIC0y
ODEsNyArMjgxLDcgQEAgSlNPYmplY3QqIGNvbnN0cnVjdFJlZ0V4cChFeGVjU3RhdGUqIGV4ZWMs
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IEEKICAgICAgICAgaWYgKGV4ZWMt
PmhhZEV4Y2VwdGlvbigpKQogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIGlmIChmbGFn
cyA9PSBJbnZhbGlkRmxhZ3MpCi0gICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihleGVjLCBj
cmVhdGVTeW50YXhFcnJvcihleGVjLCAiSW52YWxpZCBmbGFncyBzdXBwbGllZCB0byBSZWdFeHAg
Y29uc3RydWN0b3IuIikpOworICAgICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoZXhlYywgY3Jl
YXRlU3ludGF4RXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJJbnZhbGlkIGZsYWdzIHN1cHBsaWVk
IHRvIFJlZ0V4cCBjb25zdHJ1Y3Rvci4iKSkpOwogICAgIH0KIAogICAgIFJlZ0V4cCogcmVnRXhw
ID0gUmVnRXhwOjpjcmVhdGUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBwYXR0ZXJuLCBmbGFncyk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBPYmplY3QuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0LmNwcAppbmRleCA2
ZmQ5ZGIyOWMwNGFhMzZiOTNlYmZjYzhiMTU0ZmNkZmRlMDNiYjBlLi5iMzQ2Yzc3Njk1NTJlNWE3
NzgxNjU2ODI0YjMwNDhlZjViMzZlMWZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9SZWdFeHBPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1JlZ0V4cE9iamVjdC5jcHAKQEAgLTEzMCw3ICsxMzAsNyBAQCB2b2lkIFJlZ0V4cE9i
amVjdDo6Z2V0UHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMs
IFByb3BlcnR5Tgogc3RhdGljIGJvb2wgcmVqZWN0KEV4ZWNTdGF0ZSogZXhlYywgYm9vbCB0aHJv
d0V4Y2VwdGlvbiwgY29uc3QgY2hhciogbWVzc2FnZSkKIHsKICAgICBpZiAodGhyb3dFeGNlcHRp
b24pCi0gICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIG1lc3NhZ2UpOworICAgICAgICB0aHJv
d1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwobWVzc2FnZSkpOwogICAgIHJldHVybiBmYWxz
ZTsKIH0KIApAQCAtMTkxLDcgKzE5MSw3IEBAIEpTVmFsdWUgcmVnRXhwT2JqZWN0U291cmNlKEV4
ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgUHJvcGVydHlOYW1lKQogICAgIC8vIHNv
dXJjZSBjYW5ub3QgZXZlciB2YWxpZGx5IGJlICIiLiBJZiB0aGUgc291cmNlIGlzIGVtcHR5LCBy
ZXR1cm4gYSBkaWZmZXJlbnQgUGF0dGVybgogICAgIC8vIHRoYXQgd291bGQgbWF0Y2ggdGhlIHNh
bWUgdGhpbmcuCiAgICAgaWYgKCFsZW5ndGgpCi0gICAgICAgIHJldHVybiBqc1N0cmluZyhleGVj
LCAiKD86KSIpOworICAgICAgICByZXR1cm4ganNOb250cml2aWFsU3RyaW5nKGV4ZWMsIEFTQ0lJ
TGl0ZXJhbCgiKD86KSIpKTsKIAogICAgIC8vIGVhcmx5IHJldHVybiBmb3Igc3RyaW5ncyB0aGF0
IGRvbid0IGNvbnRhaW4gYSBmb3J3YXJkcyBzbGFzaCBhbmQgTGluZVRlcm1pbmF0b3IKICAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKQEAgLTI1MSw5ICsyNTEsOSBA
QCBKU1ZhbHVlIHJlZ0V4cE9iamVjdFNvdXJjZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xv
dEJhc2UsIFByb3BlcnR5TmFtZSkKICAgICAgICAgICAgIGVsc2UgaWYgKGNoID09ICdccicpCiAg
ICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgncicpOwogICAgICAgICAgICAgZWxzZSBpZiAo
Y2ggPT0gMHgyMDI4KQotICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoInUyMDI4Iik7Cisg
ICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZExpdGVyYWwoInUyMDI4Iik7CiAgICAgICAgICAg
ICBlbHNlCi0gICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgidTIwMjkiKTsKKyAgICAgICAg
ICAgICAgICByZXN1bHQuYXBwZW5kTGl0ZXJhbCgidTIwMjkiKTsKICAgICAgICAgfSBlbHNlCiAg
ICAgICAgICAgICByZXN1bHQuYXBwZW5kKGNoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1JlZ0V4cFByb3RvdHlwZS5jcHAKaW5kZXggYzIyZTZkMDM5ZDMyOTkxZjI0
NzJlYTkyNTU1M2UwYzFiYTIzNjEzMC4uM2M3NDJhMGQzMDUxNTA3YTMxNWE4N2I0ZmQzNTI3Mjg5
NGNiZDFhMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhw
UHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBQ
cm90b3R5cGUuY3BwCkBAIC0xMDYsNyArMTA2LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCByZWdFeHBQcm90b0Z1bmNDb21waWxlKEV4ZWNTdGF0ZSogZXhlYykKICAgICAKICAgICBp
ZiAoYXJnMC5pbmhlcml0cygmUmVnRXhwT2JqZWN0OjpzX2luZm8pKSB7CiAgICAgICAgIGlmICgh
YXJnMS5pc1VuZGVmaW5lZCgpKQotICAgICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVj
LCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgIkNhbm5vdCBzdXBwbHkgZmxhZ3Mgd2hlbiBjb25zdHJ1
Y3Rpbmcgb25lIFJlZ0V4cCBmcm9tIGFub3RoZXIuIikpOworICAgICAgICAgICAgcmV0dXJuIHRo
cm93Vk1FcnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJDYW5u
b3Qgc3VwcGx5IGZsYWdzIHdoZW4gY29uc3RydWN0aW5nIG9uZSBSZWdFeHAgZnJvbSBhbm90aGVy
LiIpKSk7CiAgICAgICAgIHJlZ0V4cCA9IGFzUmVnRXhwT2JqZWN0KGFyZzApLT5yZWdFeHAoKTsK
ICAgICB9IGVsc2UgewogICAgICAgICBTdHJpbmcgcGF0dGVybiA9ICFleGVjLT5hcmd1bWVudENv
dW50KCkgPyBTdHJpbmcoIiIpIDogYXJnMC50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CkBA
IC0xMTksNyArMTE5LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWdFeHBQcm90
b0Z1bmNDb21waWxlKEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgICAgIGlmIChleGVjLT5oYWRF
eGNlcHRpb24oKSkKICAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5k
ZWZpbmVkKCkpOwogICAgICAgICAgICAgaWYgKGZsYWdzID09IEludmFsaWRGbGFncykKLSAgICAg
ICAgICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVN5bnRheEVycm9yKGV4
ZWMsICJJbnZhbGlkIGZsYWdzIHN1cHBsaWVkIHRvIFJlZ0V4cCBjb25zdHJ1Y3Rvci4iKSk7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVTeW50YXhFcnJv
cihleGVjLCBBU0NJSUxpdGVyYWwoIkludmFsaWQgZmxhZ3Mgc3VwcGxpZWQgdG8gUmVnRXhwIGNv
bnN0cnVjdG9yLiIpKSk7CiAgICAgICAgIH0KICAgICAgICAgcmVnRXhwID0gUmVnRXhwOjpjcmVh
dGUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBwYXR0ZXJuLCBmbGFncyk7CiAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdC5jcHAKaW5kZXggNmMxZjE2ZDYz
ZWI3ZmIyOWI4ZDA1MWRmMTQwYmNkMzBlZmRhMjU3OS4uMTEzZGVlMTY1YzUxMTQ4NDUwZDE0YzZi
ZDZiNjVjYzYwNjc2NjQ5YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3RyaW5nT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
dHJpbmdPYmplY3QuY3BwCkBAIC04NSwyNyArODUsMjcgQEAgYm9vbCBTdHJpbmdPYmplY3Q6OmRl
ZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVy
dHkKICAgICBpZiAocHJvcGVydHlOYW1lID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgp
IHsKICAgICAgICAgaWYgKCFvYmplY3QtPmlzRXh0ZW5zaWJsZSgpKSB7CiAgICAgICAgICAgICBp
ZiAodGhyb3dFeGNlcHRpb24pCi0gICAgICAgICAgICAgICAgdGhyb3dFcnJvcihleGVjLCBjcmVh
dGVUeXBlRXJyb3IoZXhlYywgIkF0dGVtcHRpbmcgdG8gZGVmaW5lIHByb3BlcnR5IG9uIG9iamVj
dCB0aGF0IGlzIG5vdCBleHRlbnNpYmxlLiIpKTsKKyAgICAgICAgICAgICAgICB0aHJvd0Vycm9y
KGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkF0dGVtcHRpbmcgdG8g
ZGVmaW5lIHByb3BlcnR5IG9uIG9iamVjdCB0aGF0IGlzIG5vdCBleHRlbnNpYmxlLiIpKSk7CiAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICAgICAgaWYgKGRlc2NyaXB0
b3IuY29uZmlndXJhYmxlUHJlc2VudCgpICYmIGRlc2NyaXB0b3IuY29uZmlndXJhYmxlKCkpIHsK
ICAgICAgICAgICAgIGlmICh0aHJvd0V4Y2VwdGlvbikKLSAgICAgICAgICAgICAgICB0aHJvd0Vy
cm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCAiQXR0ZW1wdGluZyB0byBjb25maWd1cmFi
bGUgYXR0cmlidXRlIG9mIHVuY29uZmlndXJhYmxlIHByb3BlcnR5LiIpKTsKKyAgICAgICAgICAg
ICAgICB0aHJvd0Vycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwo
IkF0dGVtcHRpbmcgdG8gY29uZmlndXJhYmxlIGF0dHJpYnV0ZSBvZiB1bmNvbmZpZ3VyYWJsZSBw
cm9wZXJ0eS4iKSkpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAg
ICAgIGlmIChkZXNjcmlwdG9yLmVudW1lcmFibGVQcmVzZW50KCkgJiYgZGVzY3JpcHRvci5lbnVt
ZXJhYmxlKCkpIHsKICAgICAgICAgICAgIGlmICh0aHJvd0V4Y2VwdGlvbikKLSAgICAgICAgICAg
ICAgICB0aHJvd0Vycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCAiQXR0ZW1wdGluZyB0
byBjaGFuZ2UgZW51bWVyYWJsZSBhdHRyaWJ1dGUgb2YgdW5jb25maWd1cmFibGUgcHJvcGVydHku
IikpOworICAgICAgICAgICAgICAgIHRocm93RXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4
ZWMsIEFTQ0lJTGl0ZXJhbCgiQXR0ZW1wdGluZyB0byBjaGFuZ2UgZW51bWVyYWJsZSBhdHRyaWJ1
dGUgb2YgdW5jb25maWd1cmFibGUgcHJvcGVydHkuIikpKTsKICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICAgICAgfQogICAgICAgICBpZiAoZGVzY3JpcHRvci5pc0FjY2Vzc29yRGVzY3Jp
cHRvcigpKSB7CiAgICAgICAgICAgICBpZiAodGhyb3dFeGNlcHRpb24pCi0gICAgICAgICAgICAg
ICAgdGhyb3dFcnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgIkF0dGVtcHRpbmcgdG8g
Y2hhbmdlIGFjY2VzcyBtZWNoYW5pc20gZm9yIGFuIHVuY29uZmlndXJhYmxlIHByb3BlcnR5LiIp
KTsKKyAgICAgICAgICAgICAgICB0aHJvd0Vycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVj
LCBBU0NJSUxpdGVyYWwoIkF0dGVtcHRpbmcgdG8gY2hhbmdlIGFjY2VzcyBtZWNoYW5pc20gZm9y
IGFuIHVuY29uZmlndXJhYmxlIHByb3BlcnR5LiIpKSk7CiAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgICAgIH0KICAgICAgICAgaWYgKGRlc2NyaXB0b3Iud3JpdGFibGVQcmVzZW50KCkg
JiYgZGVzY3JpcHRvci53cml0YWJsZSgpKSB7CiAgICAgICAgICAgICBpZiAodGhyb3dFeGNlcHRp
b24pCi0gICAgICAgICAgICAgICAgdGhyb3dFcnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhl
YywgIkF0dGVtcHRpbmcgdG8gY2hhbmdlIHdyaXRhYmxlIGF0dHJpYnV0ZSBvZiB1bmNvbmZpZ3Vy
YWJsZSBwcm9wZXJ0eS4iKSk7CisgICAgICAgICAgICAgICAgdGhyb3dFcnJvcihleGVjLCBjcmVh
dGVUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJBdHRlbXB0aW5nIHRvIGNoYW5nZSB3cml0
YWJsZSBhdHRyaWJ1dGUgb2YgdW5jb25maWd1cmFibGUgcHJvcGVydHkuIikpKTsKICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogICAgICAgICBpZiAoIWRlc2NyaXB0b3IudmFs
dWUoKSkKQEAgLTExMyw3ICsxMTMsNyBAQCBib29sIFN0cmluZ09iamVjdDo6ZGVmaW5lT3duUHJv
cGVydHkoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eQogICAgICAg
ICBpZiAocHJvcGVydHlOYW1lID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGggJiYgc2Ft
ZVZhbHVlKGV4ZWMsIGRlc2NyaXB0b3IudmFsdWUoKSwganNOdW1iZXIodGhpc09iamVjdC0+aW50
ZXJuYWxWYWx1ZSgpLT5sZW5ndGgoKSkpKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
ICAgIGlmICh0aHJvd0V4Y2VwdGlvbikKLSAgICAgICAgICAgIHRocm93RXJyb3IoZXhlYywgY3Jl
YXRlVHlwZUVycm9yKGV4ZWMsICJBdHRlbXB0aW5nIHRvIGNoYW5nZSB2YWx1ZSBvZiBhIHJlYWRv
bmx5IHByb3BlcnR5LiIpKTsKKyAgICAgICAgICAgIHRocm93RXJyb3IoZXhlYywgY3JlYXRlVHlw
ZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiQXR0ZW1wdGluZyB0byBjaGFuZ2UgdmFsdWUgb2Yg
YSByZWFkb25seSBwcm9wZXJ0eS4iKSkpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5
cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNw
cAppbmRleCA3OTVlNGU2OGE2ZmQ4YjUxZDZlNmJiYTJiZDIxMDBlNjAyZGI0NjNhLi4xNTdiN2U2
MzM1Nzc5ZWVkYTMyNDdmODlkNWFiOTJhYjRkODI5MDU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAKQEAgLTI4Nyw3ICsyODcsNyBA
QCBzdGF0aWMgQUxXQVlTX0lOTElORSBKU1ZhbHVlIGpzU3BsaWNlU3Vic3RyaW5ncyhFeGVjU3Rh
dGUqIGV4ZWMsIEpTU3RyaW5nKiBzb3VyYwogICAgICAgICB0b3RhbExlbmd0aCArPSBzdWJzdHJp
bmdSYW5nZXNbaV0ubGVuZ3RoOwogCiAgICAgaWYgKCF0b3RhbExlbmd0aCkKLSAgICAgICAgcmV0
dXJuIGpzU3RyaW5nKGV4ZWMsICIiKTsKKyAgICAgICAgcmV0dXJuIGpzRW1wdHlTdHJpbmcoZXhl
Yyk7CiAKICAgICBpZiAoc291cmNlLmlzOEJpdCgpKSB7CiAgICAgICAgIExDaGFyKiBidWZmZXI7
CkBAIC0zNDgsNyArMzQ4LDcgQEAgc3RhdGljIEFMV0FZU19JTkxJTkUgSlNWYWx1ZSBqc1NwbGlj
ZVN1YnN0cmluZ3NXaXRoU2VwYXJhdG9ycyhFeGVjU3RhdGUqIGV4ZWMsIEoKICAgICB9CiAKICAg
ICBpZiAoIXRvdGFsTGVuZ3RoKQotICAgICAgICByZXR1cm4ganNTdHJpbmcoZXhlYywgIiIpOwor
ICAgICAgICByZXR1cm4ganNFbXB0eVN0cmluZyhleGVjKTsKIAogICAgIGlmIChzb3VyY2UuaXM4
Qml0KCkgJiYgYWxsU2VwZXJhdG9yczhCaXQpIHsKICAgICAgICAgTENoYXIqIGJ1ZmZlcjsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>161817</attachid>
            <date>2012-08-31 23:03:57 -0700</date>
            <delta_ts>2012-09-02 13:27:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-95633-20120831230344.patch</filename>
            <type>text/plain</type>
            <size>105129</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI3MzU5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA4
MzcwNGQ0ZGY5NzMwOWRkZWY5YTQ0YmFkNDlhYzhkN2JiYTM0Nzk0Li5kNzY4ZjEzNGI2Mjk0Mzhm
NWM0MzM0OWU2NDgyMjU3Nzc1NTA2ZmRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxODYgQEAKKzIwMTItMDgtMzEgIEJlbmphbWluIFBvdWxhaW4gIDxicG91bGFpbkBhcHBs
ZS5jb20+CisKKyAgICAgICAgSW1wcm92ZSBKU0MgdXNlIG9mIFN0cmluZ3MgYWZ0ZXIgdGhlIFVT
dHJpbmctPlN0cmluZyBjaGFuZ2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTk1NjMzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgVGhpcyBwYXRjaCBpbXByb3ZlIHRoZSB1c2Ugb2Ygc3RyaW5nIGluIHRoZSBK
U0MgcnVudGltZS4KKworICAgICAgICBUaGUgaW5pdGlhbGl6YXRpb24gb2YgSWRlbnRpZmllciBp
cyBsZWZ0IGZvciBmdXR1cmUgcGF0Y2hlcy4KKworICAgICAgICBUaGUgaW1wcm92ZW1lbnQgYXJl
IHRoZSBmb2xsb3dpbmc6CisgICAgICAgIC01JSBmYXN0ZXIgdG8gcmFpc2Ugb25lIG9mIHRoZSBt
b2RpZmllZCBleGNlcHRpb24uCisgICAgICAgIC0zIHRpbWVzIGZhc3RlciB0byBleGVjdXRlIEJv
b2xlYW46OnRvU3RyaW5nKCkKKworICAgICAgICBNb3N0IG9mIHRoZSBjaGFuZ2VzIGFyZSBqdXN0
IGFib3V0IHVzaW5nIHRoZSBuZXcgbWV0aG9kcworICAgICAgICBmb3Igc3RyaW5nIGxpdGVyYWxz
LgorCisgICAgICAgIFdpdGggdGhlIGNoYW5nZXMsIHRoZSBiaW5hcnkgb24geDg2XzY0IGdldHMg
MTc2IGJ5dGVzIHNtYWxsZXIuCisKKyAgICAgICAgKiBBUEkvSlNDYWxsYmFja09iamVjdEZ1bmN0
aW9ucy5oOgorICAgICAgICAoSlNDOjo6OnN0YXRpY0Z1bmN0aW9uR2V0dGVyKToKKyAgICAgICAg
KEpTQzo6OjpjYWxsYmFja0dldHRlcik6CisgICAgICAgICogQVBJL0pTQ29udGV4dFJlZi5jcHA6
CisgICAgICAgIChKU0NvbnRleHRDcmVhdGVCYWNrdHJhY2UpOgorICAgICAgICAqIEFQSS9KU09i
amVjdFJlZi5jcHA6CisgICAgICAgIChKU09iamVjdE1ha2VGdW5jdGlvbldpdGhDYWxsYmFjayk6
CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6dmFsdWVU
b1NvdXJjZVN0cmluZyk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6bmFtZUZvclJlZ2lzdGVy
KToKKyAgICAgICAgKiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHA6CisgICAgICAgIChKU0M6
OkludGVycHJldGVyOjphZGRTdGFja1RyYWNlSWZOZWNlc3NhcnkpOgorICAgICAgICAqIHJ1bnRp
bWUvQXJyYXlDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OmNvbnN0cnVjdEFycmF5V2l0
aFNpemVRdWlyayk6CisgICAgICAgICogcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHA6CisgICAg
ICAgIChKU0M6OnNoaWZ0KToKKyAgICAgICAgKEpTQzo6dW5zaGlmdCk6CisgICAgICAgIChKU0M6
OmFycmF5UHJvdG9GdW5jUG9wKToKKyAgICAgICAgKEpTQzo6YXJyYXlQcm90b0Z1bmNSZXZlcnNl
KToKKyAgICAgICAgKiBydW50aW1lL0Jvb2xlYW5Qcm90b3R5cGUuY3BwOgorICAgICAgICAoSlND
Ojpib29sZWFuUHJvdG9GdW5jVG9TdHJpbmcpOiBJbnN0ZWFkIG9mIGluc3RhbmNpYXRpbmcgbmV3
IHN0cmluZ3MsIHJldXNlIHRoZQorICAgICAgICBrZXl3b3JkcyBhdmFpbGFibGUgaW4gU21hbGxT
dHJpbmdzLiBBdm9pZGluZyB0aGUgY3JlYXRpb24gb2YgdGhlIEpTU3RyaW5nIGFuZCBTdHJpbmdJ
bXBsLAorICAgICAgICBtYWtlcyB0aGUgbWV0aG9kIHNpZ25pZmljYW50bHkgZmFzdGVyLgorCisg
ICAgICAgICogcnVudGltZS9EYXRlQ29udmVyc2lvbi5jcHA6CisgICAgICAgIChKU0M6OmZvcm1h
dERhdGVUaW1lKToKKyAgICAgICAgKiBydW50aW1lL0RhdGVQcm90b3R5cGUuY3BwOgorICAgICAg
ICAoSlNDOjpmb3JtYXRMb2NhbGVEYXRlKToKKyAgICAgICAgKEpTQzo6Zm9ybWF0ZURhdGVJbnN0
YW5jZSk6CisgICAgICAgIChKU0M6OmRhdGVQcm90b0Z1bmNUb0lTT1N0cmluZyk6CisgICAgICAg
IENoYW5nZSB0aGUgd2F5IHdlIHVzZSBzbnByaW50ZigpIGZvciBjbGFyaXR5IGFuZCBwZXJmb3Jt
YW5jZS4KKworICAgICAgICBJbnN0ZWFkIG9mIGFsbG9jYXRpbmcgb25lIGV4dHJhIGJ5dGUgdG8g
cHV0IGEgemVybyAianVzdCBpbiBjYXNlIiwgd2UgdXNlIHRoZSBzaXplIHJldHVybmVkCisgICAg
ICAgIGJ5IHNucHJpbnRmKCkuCisgICAgICAgIFRvIHByZXZlbnQgYW55IG92ZXJmbG93IGZyb20g
YSBwcm9ncmFtbWluZyBtaXN0YWtlLCB3ZSBleHBsaWNpdGVseSB0ZXN0IGZvciBvdmVyZmxvdyBh
bmQKKyAgICAgICAgcmV0dXJuIGFuIGVtcHR5IHN0cmluZy4KKworICAgICAgICAoSlNDOjpkYXRl
UHJvdG9GdW5jVG9KU09OKToKKyAgICAgICAgKiBydW50aW1lL0Vycm9yLmNwcDoKKyAgICAgICAg
KEpTQzo6Y3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IpOgorICAgICAgICAoSlNDOjp0aHJv
d1R5cGVFcnJvcik6CisgICAgICAgIChKU0M6OnRocm93U3ludGF4RXJyb3IpOgorICAgICAgICAq
IHJ1bnRpbWUvRXJyb3IuaDoKKyAgICAgICAgKEpTQzo6U3RyaWN0TW9kZVR5cGVFcnJvckZ1bmN0
aW9uOjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvRXJyb3JQcm90b3R5cGUuY3BwOgorICAg
ICAgICAoSlNDOjpFcnJvclByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlND
OjplcnJvclByb3RvRnVuY1RvU3RyaW5nKToKKyAgICAgICAgVXNpbmcgYSBudWxsIFN0cmluZyBp
cyBjb3JyZWN0IGJlY2F1c2UgKDgpIHVzZSBqc1N0cmluZygpLCAoOSkgdGVzdCBmb3IgYSBsZW5n
dGggb2YgMC4KKworICAgICAgICAqIHJ1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5jcHA6CisgICAg
ICAgIChKU0M6OkludGVycnVwdGVkRXhlY3V0aW9uRXJyb3I6OmRlZmF1bHRWYWx1ZSk6CisgICAg
ICAgIChKU0M6OlRlcm1pbmF0ZWRFeGVjdXRpb25FcnJvcjo6ZGVmYXVsdFZhbHVlKToKKyAgICAg
ICAgKEpTQzo6Y3JlYXRlU3RhY2tPdmVyZmxvd0Vycm9yKToKKyAgICAgICAgKEpTQzo6Y3JlYXRl
T3V0T2ZNZW1vcnlFcnJvcik6CisgICAgICAgICogcnVudGltZS9FeGVjdXRhYmxlLmNwcDoKKyAg
ICAgICAgKEpTQzo6RXZhbEV4ZWN1dGFibGU6OmNvbXBpbGVJbnRlcm5hbCk6CisgICAgICAgIChK
U0M6OkZ1bmN0aW9uRXhlY3V0YWJsZTo6cGFyYW1TdHJpbmcpOgorICAgICAgICAqIHJ1bnRpbWUv
RnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OmNvbnN0cnVjdEZ1bmN0aW9u
KToKKyAgICAgICAgKEpTQzo6Y29uc3RydWN0RnVuY3Rpb25Ta2lwcGluZ0V2YWxFbmFibGVkQ2hl
Y2spOgorICAgICAgICAqIHJ1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuaDoKKyAgICAgICAgKEpT
Qzo6RnVuY3Rpb25Qcm90b3R5cGU6OmNyZWF0ZSk6CisgICAgICAgIFVzaW5nIGEgbnVsbCBTdHJp
bmcgZm9yIHRoZSBuYW1lIGlzIGNvcnJlY3QgYmVjYXVzZSBJbnRlcm5hbEZ1bmN0aW9uIGpzU3Ry
aW5nKCkKKyAgICAgICAgdG8gY3JlYXRlIHRoZSBuYW1lIHZhbHVlLgorCisgICAgICAgICogcnVu
dGltZS9JbnRlcm5hbEZ1bmN0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6SW50ZXJuYWxGdW5jdGlv
bjo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICBUaGVyZSBpcyBubyBuZWVkIHRvIGNyZWF0ZSBh
biBlbXB0eSBzdHJpbmcgZm9yIGEgbnVsbCBzdHJpbmcsIGpzU3RyaW5nKCkgaGFuZGxlIGJvdGgK
KyAgICAgICAgY2FzZXMgYXMgZW1wdHkgc3RyaW5nLgorCisgICAgICAgICogcnVudGltZS9KU0Fy
cmF5LmNwcDoKKyAgICAgICAgKEpTQzo6cmVqZWN0KToKKyAgICAgICAgKEpTQzo6U3BhcnNlQXJy
YXlWYWx1ZU1hcDo6cHV0KToKKyAgICAgICAgKEpTQzo6SlNBcnJheTo6cHV0KToKKyAgICAgICAg
KEpTQzo6SlNBcnJheTo6cHV0QnlJbmRleEJleW9uZFZlY3Rvckxlbmd0aCk6CisgICAgICAgIChK
U0M6OkpTQXJyYXk6OnB1dERpcmVjdEluZGV4QmV5b25kVmVjdG9yTGVuZ3RoKToKKyAgICAgICAg
KEpTQzo6SlNBcnJheTo6c2V0TGVuZ3RoKToKKyAgICAgICAgKEpTQzo6SlNBcnJheTo6cG9wKToK
KyAgICAgICAgKEpTQzo6SlNBcnJheTo6cHVzaCk6CisgICAgICAgICogcnVudGltZS9KU0Z1bmN0
aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6ZmluaXNoQ3JlYXRpb24pOiBTYW1l
IGlzc3VlIGFzIEludGVybmFsRnVuY3Rpb246OmZpbmlzaENyZWF0aW9uLgorCisgICAgICAgIChK
U0M6OkpTRnVuY3Rpb246OmNhbGxlckdldHRlcik6CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246
OmRlZmluZU93blByb3BlcnR5KToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsRGF0YS5jcHA6
CisgICAgICAgIChKU0M6OmVuYWJsZUFzc2VtYmxlcik6IFVzZSBDRlNUUigpIGluc3RlYWQgb2Yg
Q0ZTdHJpbmdDcmVhdGVXaXRoQ1N0cmluZygpLgorICAgICAgICBDRlN0cmluZ0NyZWF0ZVdpdGhD
U3RyaW5nKCkgY29weSB0aGUgY29udGVudCBhbmQgbWF5IGNob29zZSB0byBkZWNvZGUgdGhlIGRh
dGEuCisgICAgICAgIENGU1RSKCkgaXMgbXVjaCBtb3JlIGVmZmljaWVudC4KKworICAgICAgICAq
IHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVj
dDo6cmVzZXQpOgorICAgICAgICBKU0Z1bmN0aW9uIHVzZXMganNTdHJpbmcoKSB0byBjcmVhdGUg
dGhlIG5hbWUsIHdlIGNhbiB1c2UgbnVsbCBzdHJpbmdzIGluc3RlYWQKKyAgICAgICAgb2YgY3Jl
YXRpbmcgZW1wdHkgc3RyaW5ncy4KKworICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6Y3Jl
YXRlVGhyb3dUeXBlRXJyb3IpOiBkaXR0by4KKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2Jq
ZWN0RnVuY3Rpb25zLmNwcDoKKyAgICAgICAgKEpTQzo6ZW5jb2RlKToKKyAgICAgICAgKEpTQzo6
ZGVjb2RlKToKKyAgICAgICAgKEpTQzo6Z2xvYmFsRnVuY0V2YWwpOgorICAgICAgICAqIHJ1bnRp
bWUvSlNPTk9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OlN0cmluZ2lmaWVyOjphcHBlbmRTdHJp
bmdpZmllZFZhbHVlKToKKyAgICAgICAgKEpTQzo6U3RyaW5naWZpZXI6OkhvbGRlcjo6YXBwZW5k
TmV4dFByb3BlcnR5KToKKyAgICAgICAgKEpTQzo6SlNPTlByb3RvRnVuY1BhcnNlKToKKyAgICAg
ICAgKEpTQzo6SlNPTlByb3RvRnVuY1N0cmluZ2lmeSk6CisgICAgICAgICogcnVudGltZS9KU09i
amVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpwdXQpOgorICAgICAgICAoSlNDOjpK
U09iamVjdDo6ZGVmYXVsdFZhbHVlKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6Omhhc0luc3Rh
bmNlKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmRlZmluZU93blByb3BlcnR5KToKKyAgICAg
ICAgKiBydW50aW1lL0pTU3RyaW5nLmNwcDoKKyAgICAgICAgUmV0dXJuIGFuIGVtcHR5IEpTU3Ry
aW5nIHRvIGF2b2lkIHRoZSBjcmVhdGlvbiBvZiBhIHRlbXBvcmFyeSBlbXB0eSBTdHJpbmcuCisK
KyAgICAgICAgKEpTQzo6SlNSb3BlU3RyaW5nOjpnZXRJbmRleFNsb3dDYXNlKToKKyAgICAgICAg
KiBydW50aW1lL0pTU3RyaW5nLmg6CisgICAgICAgIChKU0MpOiBSZW1vdmUgdGhlIHZlcnNpb25z
IG9mIGpzTm9udHJpdmlhbFN0cmluZygpIHRha2luZyBhIGNoYXIqLiBBbGwgdGhlIGNhbGxlcgor
ICAgICAgICBoYXZlIGJlZW4gcmVwbGFjZWQgYnkgY2FsbCB1c2luZyBBU0NJSUxpdGVyYWwuCisK
KyAgICAgICAgKiBydW50aW1lL0pTVmFsdWUuY3BwOgorICAgICAgICAoSlNDOjpKU1ZhbHVlOjpw
dXRUb1ByaW1pdGl2ZSk6CisgICAgICAgICogcnVudGltZS9MaXRlcmFsUGFyc2VyLmNwcDoKKyAg
ICAgICAgKEpTQzo6OjpMZXhlcjo6bGV4KToKKyAgICAgICAgKEpTQzo6OjpMZXhlcjo6bGV4U3Ry
aW5nKToKKyAgICAgICAgKEpTQzo6OjpMZXhlcjo6bGV4TnVtYmVyKToKKyAgICAgICAgKEpTQzo6
OjpwYXJzZSk6CisgICAgICAgICogcnVudGltZS9MaXRlcmFsUGFyc2VyLmg6CisgICAgICAgIChK
U0M6OkxpdGVyYWxQYXJzZXI6OmdldEVycm9yTWVzc2FnZSk6CisgICAgICAgICogcnVudGltZS9O
dW1iZXJQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpudW1iZXJQcm90b0Z1bmNUb0V4cG9u
ZW50aWFsKToKKyAgICAgICAgKEpTQzo6bnVtYmVyUHJvdG9GdW5jVG9GaXhlZCk6CisgICAgICAg
IChKU0M6Om51bWJlclByb3RvRnVuY1RvUHJlY2lzaW9uKToKKyAgICAgICAgKEpTQzo6bnVtYmVy
UHJvdG9GdW5jVG9TdHJpbmcpOgorICAgICAgICAqIHJ1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3Iu
Y3BwOgorICAgICAgICAoSlNDOjpvYmplY3RDb25zdHJ1Y3RvckdldFByb3RvdHlwZU9mKToKKyAg
ICAgICAgKEpTQzo6b2JqZWN0Q29uc3RydWN0b3JHZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IpOgor
ICAgICAgICAoSlNDOjpvYmplY3RDb25zdHJ1Y3RvckdldE93blByb3BlcnR5TmFtZXMpOgorICAg
ICAgICAoSlNDOjpvYmplY3RDb25zdHJ1Y3RvcktleXMpOgorICAgICAgICAoSlNDOjp0b1Byb3Bl
cnR5RGVzY3JpcHRvcik6CisgICAgICAgIChKU0M6Om9iamVjdENvbnN0cnVjdG9yRGVmaW5lUHJv
cGVydHkpOgorICAgICAgICAoSlNDOjpvYmplY3RDb25zdHJ1Y3RvckRlZmluZVByb3BlcnRpZXMp
OgorICAgICAgICAoSlNDOjpvYmplY3RDb25zdHJ1Y3RvckNyZWF0ZSk6CisgICAgICAgIChKU0M6
Om9iamVjdENvbnN0cnVjdG9yU2VhbCk6CisgICAgICAgIChKU0M6Om9iamVjdENvbnN0cnVjdG9y
RnJlZXplKToKKyAgICAgICAgKEpTQzo6b2JqZWN0Q29uc3RydWN0b3JQcmV2ZW50RXh0ZW5zaW9u
cyk6CisgICAgICAgIChKU0M6Om9iamVjdENvbnN0cnVjdG9ySXNTZWFsZWQpOgorICAgICAgICAo
SlNDOjpvYmplY3RDb25zdHJ1Y3RvcklzRnJvemVuKToKKyAgICAgICAgKEpTQzo6b2JqZWN0Q29u
c3RydWN0b3JJc0V4dGVuc2libGUpOgorICAgICAgICAqIHJ1bnRpbWUvT2JqZWN0UHJvdG90eXBl
LmNwcDoKKyAgICAgICAgKEpTQzo6b2JqZWN0UHJvdG9GdW5jRGVmaW5lR2V0dGVyKToKKyAgICAg
ICAgKEpTQzo6b2JqZWN0UHJvdG9GdW5jRGVmaW5lU2V0dGVyKToKKyAgICAgICAgKEpTQzo6b2Jq
ZWN0UHJvdG9GdW5jVG9TdHJpbmcpOgorICAgICAgICAqIHJ1bnRpbWUvUmVnRXhwQ29uc3RydWN0
b3IuY3BwOgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RSZWdFeHApOgorICAgICAgICAqIHJ1bnRp
bWUvUmVnRXhwT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6cmVqZWN0KToKKyAgICAgICAgKEpT
Qzo6cmVnRXhwT2JqZWN0U291cmNlKToKKyAgICAgICAgKiBydW50aW1lL1JlZ0V4cFByb3RvdHlw
ZS5jcHA6CisgICAgICAgIChKU0M6OnJlZ0V4cFByb3RvRnVuY0NvbXBpbGUpOgorICAgICAgICAq
IHJ1bnRpbWUvU3RyaW5nT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6U3RyaW5nT2JqZWN0Ojpk
ZWZpbmVPd25Qcm9wZXJ0eSk6CisgICAgICAgICogcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3Bw
OgorICAgICAgICAoSlNDOjpqc1NwbGljZVN1YnN0cmluZ3MpOgorICAgICAgICAoSlNDOjpqc1Nw
bGljZVN1YnN0cmluZ3NXaXRoU2VwYXJhdG9ycyk6CisKIDIwMTItMDgtMzEgIEZpbGlwIFBpemxv
ICA8ZnBpemxvQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCBhdHRlbXB0IHRvIGZp
eCBXaW5kb3dzLCB0YWtlIHR3by4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvSlNDYWxsYmFja09iamVjdEZ1bmN0aW9ucy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQ
SS9KU0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25zLmgKaW5kZXggODMyNmMwNTc5YWEwNzFjMzc1NzM3
ZWY2NDI3Y2UzMWQ3YWM2MDE1Ny4uMDY5MWRhZmMzMDU1NTc0NDE3YzExOTFmYmUyYTAzODBkMjg4
MjEyYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2Jq
ZWN0RnVuY3Rpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNr
T2JqZWN0RnVuY3Rpb25zLmgKQEAgLTU2OCw3ICs1NjgsNyBAQCBKU1ZhbHVlIEpTQ2FsbGJhY2tP
YmplY3Q8UGFyZW50Pjo6c3RhdGljRnVuY3Rpb25HZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBKU1Zh
bHVlCiAgICAgICAgIH0KICAgICB9CiAKLSAgICByZXR1cm4gdGhyb3dFcnJvcihleGVjLCBjcmVh
dGVSZWZlcmVuY2VFcnJvcihleGVjLCAiU3RhdGljIGZ1bmN0aW9uIHByb3BlcnR5IGRlZmluZWQg
d2l0aCBOVUxMIGNhbGxBc0Z1bmN0aW9uIGNhbGxiYWNrLiIpKTsKKyAgICByZXR1cm4gdGhyb3dF
cnJvcihleGVjLCBjcmVhdGVSZWZlcmVuY2VFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlN0YXRp
YyBmdW5jdGlvbiBwcm9wZXJ0eSBkZWZpbmVkIHdpdGggTlVMTCBjYWxsQXNGdW5jdGlvbiBjYWxs
YmFjay4iKSkpOwogfQogCiB0ZW1wbGF0ZSA8Y2xhc3MgUGFyZW50PgpAQCAtNjAwLDcgKzYwMCw3
IEBAIEpTVmFsdWUgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpjYWxsYmFja0dldHRlcihFeGVj
U3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdFBhCiAgICAgICAgIH0KICAgICB9CiAKLSAgICByZXR1
cm4gdGhyb3dFcnJvcihleGVjLCBjcmVhdGVSZWZlcmVuY2VFcnJvcihleGVjLCAiaGFzUHJvcGVy
dHkgY2FsbGJhY2sgcmV0dXJuZWQgdHJ1ZSBmb3IgYSBwcm9wZXJ0eSB0aGF0IGRvZXNuJ3QgZXhp
c3QuIikpOworICAgIHJldHVybiB0aHJvd0Vycm9yKGV4ZWMsIGNyZWF0ZVJlZmVyZW5jZUVycm9y
KGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiaGFzUHJvcGVydHkgY2FsbGJhY2sgcmV0dXJuZWQgdHJ1ZSBm
b3IgYSBwcm9wZXJ0eSB0aGF0IGRvZXNuJ3QgZXhpc3QuIikpKTsKIH0KIAogfSAvLyBuYW1lc3Bh
Y2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dFJl
Zi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dFJlZi5jcHAKaW5kZXgg
YmFlMzEwMTA1YjI0YjZhMmQxZmI0NmVkZjMyNjRlYWY5ZWQxM2M2OC4uMzYwZTMzN2VlY2VlMjE5
NmM3YTRiOWY1MmI2YTBhZWU4Y2MyMzBmZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9KU0NvbnRleHRSZWYuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkv
SlNDb250ZXh0UmVmLmNwcApAQCAtMTczLDkgKzE3Myw5IEBAIEpTU3RyaW5nUmVmIEpTQ29udGV4
dENyZWF0ZUJhY2t0cmFjZShKU0NvbnRleHRSZWYgY3R4LCB1bnNpZ25lZCBtYXhTdGFja1NpemUp
CiAgICAgaWYgKGV4ZWMtPmNhbGxlZSgpKSB7CiAgICAgICAgIGlmIChhc09iamVjdChleGVjLT5j
YWxsZWUoKSktPmluaGVyaXRzKCZJbnRlcm5hbEZ1bmN0aW9uOjpzX2luZm8pKSB7CiAgICAgICAg
ICAgICBmdW5jdGlvbk5hbWUgPSBhc0ludGVybmFsRnVuY3Rpb24oZXhlYy0+Y2FsbGVlKCkpLT5u
YW1lKGV4ZWMpOwotICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoIiMwICIpOworICAgICAgICAg
ICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCIjMCAiKTsKICAgICAgICAgICAgIGJ1aWxkZXIuYXBw
ZW5kKGZ1bmN0aW9uTmFtZSk7Ci0gICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgiKCkgIik7Cisg
ICAgICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIigpICIpOwogICAgICAgICAgICAgY291
bnQrKzsKICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9BUEkvSlNPYmplY3RSZWYuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU09iamVj
dFJlZi5jcHAKaW5kZXggZTZjMGM1MjhhNzA2ZDMwYzQwNTc2ODFlYzkyOThmOWE4OWNkMjczYy4u
OGIwZDRhMDlmY2Q1ZTZjZDNjY2Y2ODE3NmY0NWFhMWVhMDg3ZTUwNSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU09iamVjdFJlZi5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0FQSS9KU09iamVjdFJlZi5jcHAKQEAgLTkyLDcgKzkyLDcgQEAgSlNPYmplY3RS
ZWYgSlNPYmplY3RNYWtlRnVuY3Rpb25XaXRoQ2FsbGJhY2soSlNDb250ZXh0UmVmIGN0eCwgSlNT
dHJpbmdSZWYgbmFtZSwKIHsKICAgICBFeGVjU3RhdGUqIGV4ZWMgPSB0b0pTKGN0eCk7CiAgICAg
QVBJRW50cnlTaGltIGVudHJ5U2hpbShleGVjKTsKLSAgICByZXR1cm4gdG9SZWYoSlNDYWxsYmFj
a0Z1bmN0aW9uOjpjcmVhdGUoZXhlYywgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBjYWxs
QXNGdW5jdGlvbiwgbmFtZSA/IG5hbWUtPnVzdHJpbmcoKSA6ICJhbm9ueW1vdXMiKSk7CisgICAg
cmV0dXJuIHRvUmVmKEpTQ2FsbGJhY2tGdW5jdGlvbjo6Y3JlYXRlKGV4ZWMsIGV4ZWMtPmxleGlj
YWxHbG9iYWxPYmplY3QoKSwgY2FsbEFzRnVuY3Rpb24sIG5hbWUgPyBuYW1lLT51c3RyaW5nKCkg
OiBBU0NJSUxpdGVyYWwoImFub255bW91cyIpKSk7CiB9CiAKIEpTT2JqZWN0UmVmIEpTT2JqZWN0
TWFrZUNvbnN0cnVjdG9yKEpTQ29udGV4dFJlZiBjdHgsIEpTQ2xhc3NSZWYganNDbGFzcywgSlNP
YmplY3RDYWxsQXNDb25zdHJ1Y3RvckNhbGxiYWNrIGNhbGxBc0NvbnN0cnVjdG9yKQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAppbmRleCBmMmEwZmE1Zjdh
NDZlNGNkOTM4OWM5OTQ3ZTA5NjU2ZjI4ZGFmNjFhLi4wMTgyNGQ2Mjc2YmFjYzRjNjBiODdhZDlm
ZTFmODljYzVhZTE2ZTcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQ29kZUJsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29k
ZUJsb2NrLmNwcApAQCAtNzUsNyArNzUsNyBAQCBzdGF0aWMgU3RyaW5nIGVzY2FwZVF1b3Rlcyhj
b25zdCBTdHJpbmcmIHN0cikKIHN0YXRpYyBTdHJpbmcgdmFsdWVUb1NvdXJjZVN0cmluZyhFeGVj
U3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsKQogewogICAgIGlmICghdmFsKQotICAgICAgICByZXR1
cm4gIjAiOworICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCIwIik7CiAKICAgICBpZiAodmFs
LmlzU3RyaW5nKCkpCiAgICAgICAgIHJldHVybiBtYWtlU3RyaW5nKCJcIiIsIGVzY2FwZVF1b3Rl
cyh2YWwudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpKSwgIlwiIik7CkBAIC0zMDE1LDE0ICsz
MDE1LDE0IEBAIFN0cmluZyBDb2RlQmxvY2s6Om5hbWVGb3JSZWdpc3RlcihpbnQgcmVnaXN0ZXJO
dW1iZXIpCiAgICAgICAgICAgICByZXR1cm4gU3RyaW5nKHB0ci0+Zmlyc3QpOwogICAgIH0KICAg
ICBpZiAobmVlZHNBY3RpdmF0aW9uKCkgJiYgcmVnaXN0ZXJOdW1iZXIgPT0gYWN0aXZhdGlvblJl
Z2lzdGVyKCkpCi0gICAgICAgIHJldHVybiAiYWN0aXZhdGlvbiI7CisgICAgICAgIHJldHVybiBB
U0NJSUxpdGVyYWwoImFjdGl2YXRpb24iKTsKICAgICBpZiAocmVnaXN0ZXJOdW1iZXIgPT0gdGhp
c1JlZ2lzdGVyKCkpCi0gICAgICAgIHJldHVybiAidGhpcyI7CisgICAgICAgIHJldHVybiBBU0NJ
SUxpdGVyYWwoInRoaXMiKTsKICAgICBpZiAodXNlc0FyZ3VtZW50cygpKSB7CiAgICAgICAgIGlm
IChyZWdpc3Rlck51bWJlciA9PSBhcmd1bWVudHNSZWdpc3RlcigpKQotICAgICAgICAgICAgcmV0
dXJuICJhcmd1bWVudHMiOworICAgICAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgiYXJndW1l
bnRzIik7CiAgICAgICAgIGlmICh1bm1vZGlmaWVkQXJndW1lbnRzUmVnaXN0ZXIoYXJndW1lbnRz
UmVnaXN0ZXIoKSkgPT0gcmVnaXN0ZXJOdW1iZXIpCi0gICAgICAgICAgICByZXR1cm4gInJlYWwg
YXJndW1lbnRzIjsKKyAgICAgICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwoInJlYWwgYXJndW1l
bnRzIik7CiAgICAgfQogICAgIGlmIChyZWdpc3Rlck51bWJlciA8IDApIHsKICAgICAgICAgaW50
IGFyZ3VtZW50UG9zaXRpb24gPSAtcmVnaXN0ZXJOdW1iZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAppbmRleCA4YmRiMDE2MDFhZTMx
NWVkODg0YTM5NmZhYWMzYzRlNjQxZmFiMGRiLi4xNTVmZDFiOTdlY2ZkM2Q5YzgxNjBjNjNjMzc5
YjcwNDIwYTY3NmVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0
ZXIvSW50ZXJwcmV0ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRl
ci9JbnRlcnByZXRlci5jcHAKQEAgLTc0MSw2ICs3NDEsOCBAQCB2b2lkIEludGVycHJldGVyOjph
ZGRTdGFja1RyYWNlSWZOZWNlc3NhcnkoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEpTT2JqZWN0KiBl
cnJvcgogICAgICAgICBnbG9iYWxPYmplY3QgPSBnbG9iYWxEYXRhLT5keW5hbWljR2xvYmFsT2Jq
ZWN0OwogICAgIGVsc2UKICAgICAgICAgZ2xvYmFsT2JqZWN0ID0gZXJyb3ItPmdsb2JhbE9iamVj
dCgpOworCisgICAgLy8gRklYTUU6IEpTU3RyaW5nSm9pbmVyIGNvdWxkIGJlIG1vcmUgZWZmaWNp
ZW50IHRoYW4gU3RyaW5nQnVpbGRlciBoZXJlLgogICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsK
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc3RhY2tUcmFjZS5zaXplKCk7IGkrKykgewog
ICAgICAgICBidWlsZGVyLmFwcGVuZChTdHJpbmcoc3RhY2tUcmFjZVtpXS50b1N0cmluZyhnbG9i
YWxPYmplY3QtPmdsb2JhbEV4ZWMoKSkuaW1wbCgpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUNvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0FycmF5Q29uc3RydWN0b3IuY3BwCmluZGV4IDgzZTQ4Y2ExYjJkMTg2
YWZhM2Q3MTBkNWEzYWY0ZmY4ZThlMWJkYzguLmM5YTZkYzYwMGM0MjJkZmY1YjQ5OGFmY2JmN2Jk
YjU0YWVkMmZkYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Fy
cmF5Q29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Fy
cmF5Q29uc3RydWN0b3IuY3BwCkBAIC04NSw3ICs4NSw3IEBAIHN0YXRpYyBpbmxpbmUgSlNPYmpl
Y3QqIGNvbnN0cnVjdEFycmF5V2l0aFNpemVRdWlyayhFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEFy
Z0xpCiAgICAgaWYgKGFyZ3Muc2l6ZSgpID09IDEgJiYgYXJncy5hdCgwKS5pc051bWJlcigpKSB7
CiAgICAgICAgIHVpbnQzMl90IG4gPSBhcmdzLmF0KDApLnRvVUludDMyKGV4ZWMpOwogICAgICAg
ICBpZiAobiAhPSBhcmdzLmF0KDApLnRvTnVtYmVyKGV4ZWMpKQotICAgICAgICAgICAgcmV0dXJu
IHRocm93RXJyb3IoZXhlYywgY3JlYXRlUmFuZ2VFcnJvcihleGVjLCAiQXJyYXkgc2l6ZSBpcyBu
b3QgYSBzbWFsbCBlbm91Z2ggcG9zaXRpdmUgaW50ZWdlci4iKSk7CisgICAgICAgICAgICByZXR1
cm4gdGhyb3dFcnJvcihleGVjLCBjcmVhdGVSYW5nZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgi
QXJyYXkgc2l6ZSBpcyBub3QgYSBzbWFsbCBlbm91Z2ggcG9zaXRpdmUgaW50ZWdlci4iKSkpOwog
ICAgICAgICByZXR1cm4gY29uc3RydWN0RW1wdHlBcnJheShleGVjLCBnbG9iYWxPYmplY3QsIG4p
OwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJy
YXlQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90
b3R5cGUuY3BwCmluZGV4IGQwM2NlNTMxNjdlNDYwZWFmNGE5MDUxMDQ5OGI2NTJjOWE0NzFjMDku
LjRiMTNmOTkzY2VkMjNiODAxM2MxOTBmY2M4YTZhYzJmOTNjMGVmMGEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHAKQEAgLTIwNSwxMyAr
MjA1LDEzIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBzaGlmdChFeGVjU3RhdGUqIGV4ZWMsIEpTT2Jq
ZWN0KiB0aGlzT2JqLCB1bnNpZ25lZCBoZWFkZXIsIHVuCiAgICAgICAgICAgICBpZiAoZXhlYy0+
aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9IGVsc2Ug
aWYgKCF0aGlzT2JqLT5tZXRob2RUYWJsZSgpLT5kZWxldGVQcm9wZXJ0eUJ5SW5kZXgodGhpc09i
aiwgZXhlYywgdG8pKSB7Ci0gICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCAiVW5hYmxl
IHRvIGRlbGV0ZSBwcm9wZXJ0eS4iKTsKKyAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMs
IEFTQ0lJTGl0ZXJhbCgiVW5hYmxlIHRvIGRlbGV0ZSBwcm9wZXJ0eS4iKSk7CiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgIH0KICAgICB9CiAgICAgZm9yICh1bnNpZ25lZCBrID0gbGVuZ3Ro
OyBrID4gbGVuZ3RoIC0gY291bnQ7IC0taykgewogICAgICAgICBpZiAoIXRoaXNPYmotPm1ldGhv
ZFRhYmxlKCktPmRlbGV0ZVByb3BlcnR5QnlJbmRleCh0aGlzT2JqLCBleGVjLCBrIC0gMSkpIHsK
LSAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsICJVbmFibGUgdG8gZGVsZXRlIHByb3Bl
cnR5LiIpOworICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJV
bmFibGUgdG8gZGVsZXRlIHByb3BlcnR5LiIpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgfQogICAgIH0KQEAgLTI0Myw3ICsyNDMsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgdW5zaGlm
dChFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiB0aGlzT2JqLCB1bnNpZ25lZCBoZWFkZXIsCiAg
ICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgdGhpc09iai0+bWV0aG9kVGFibGUo
KS0+cHV0QnlJbmRleCh0aGlzT2JqLCBleGVjLCB0bywgdmFsdWUsIHRydWUpOwogICAgICAgICB9
IGVsc2UgaWYgKCF0aGlzT2JqLT5tZXRob2RUYWJsZSgpLT5kZWxldGVQcm9wZXJ0eUJ5SW5kZXgo
dGhpc09iaiwgZXhlYywgdG8pKSB7Ci0gICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCAi
VW5hYmxlIHRvIGRlbGV0ZSBwcm9wZXJ0eS4iKTsKKyAgICAgICAgICAgIHRocm93VHlwZUVycm9y
KGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiVW5hYmxlIHRvIGRlbGV0ZSBwcm9wZXJ0eS4iKSk7CiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlv
bigpKQpAQCAtNDkxLDcgKzQ5MSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJy
YXlQcm90b0Z1bmNQb3AoRXhlY1N0YXRlKiBleGVjKQogICAgICAgICBpZiAoZXhlYy0+aGFkRXhj
ZXB0aW9uKCkpCiAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVk
KCkpOwogICAgICAgICBpZiAoIXRoaXNPYmotPm1ldGhvZFRhYmxlKCktPmRlbGV0ZVByb3BlcnR5
QnlJbmRleCh0aGlzT2JqLCBleGVjLCBsZW5ndGggLSAxKSkgewotICAgICAgICAgICAgdGhyb3dU
eXBlRXJyb3IoZXhlYywgIlVuYWJsZSB0byBkZWxldGUgcHJvcGVydHkuIik7CisgICAgICAgICAg
ICB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlVuYWJsZSB0byBkZWxldGUgcHJv
cGVydHkuIikpOwogICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5l
ZCgpKTsKICAgICAgICAgfQogICAgICAgICBwdXRQcm9wZXJ0eShleGVjLCB0aGlzT2JqLCBleGVj
LT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoLCBqc051bWJlcihsZW5ndGggLSAxKSk7CkBAIC01NTMs
NyArNTUzLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY1Jl
dmVyc2UoRXhlY1N0YXRlKiBleGVjKQogICAgICAgICAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlv
bigpKQogICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQo
KSk7CiAgICAgICAgIH0gZWxzZSBpZiAoIXRoaXNPYmotPm1ldGhvZFRhYmxlKCktPmRlbGV0ZVBy
b3BlcnR5QnlJbmRleCh0aGlzT2JqLCBleGVjLCBrKSkgewotICAgICAgICAgICAgdGhyb3dUeXBl
RXJyb3IoZXhlYywgIlVuYWJsZSB0byBkZWxldGUgcHJvcGVydHkuIik7CisgICAgICAgICAgICB0
aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlVuYWJsZSB0byBkZWxldGUgcHJvcGVy
dHkuIikpOwogICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgp
KTsKICAgICAgICAgfQogCkBAIC01NjIsNyArNTYyLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBhcnJheVByb3RvRnVuY1JldmVyc2UoRXhlY1N0YXRlKiBleGVjKQogICAgICAgICAg
ICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICAgICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgICAgIH0gZWxzZSBpZiAoIXRoaXNPYmot
Pm1ldGhvZFRhYmxlKCktPmRlbGV0ZVByb3BlcnR5QnlJbmRleCh0aGlzT2JqLCBleGVjLCBsazEp
KSB7Ci0gICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCAiVW5hYmxlIHRvIGRlbGV0ZSBw
cm9wZXJ0eS4iKTsKKyAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJh
bCgiVW5hYmxlIHRvIGRlbGV0ZSBwcm9wZXJ0eS4iKSk7CiAgICAgICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQm9vbGVhblByb3RvdHlwZS5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Cb29sZWFuUHJvdG90eXBlLmNwcAppbmRleCAx
NTUxZWFiZjI2ODIwYzRiM2FkZGE5ZTk2NmI0NDNkZDk4ZDkwNTYxLi5jOGM3NzIyMGE5NGMzNjli
MTZkODViYzcyMjE0NGUyYjc0ZmFmMjVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Cb29sZWFuUHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Cb29sZWFuUHJvdG90eXBlLmNwcApAQCAtNzcsMjEgKzc3LDIyIEBAIGJvb2wg
Qm9vbGVhblByb3RvdHlwZTo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiBvYmpl
Y3QsIEV4ZWNTdGF0ZSogZXhlCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYm9vbGVh
blByb3RvRnVuY1RvU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBKU0dsb2JhbERhdGEq
IGdsb2JhbERhdGEgPSAmZXhlYy0+Z2xvYmFsRGF0YSgpOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVl
ID0gZXhlYy0+aG9zdFRoaXNWYWx1ZSgpOwogICAgIGlmICh0aGlzVmFsdWUgPT0ganNCb29sZWFu
KGZhbHNlKSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc05vbnRyaXZpYWxTdHJp
bmcoZXhlYywgImZhbHNlIikpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGdsb2Jh
bERhdGEtPnNtYWxsU3RyaW5ncy5mYWxzZVN0cmluZyhnbG9iYWxEYXRhKSk7CiAKICAgICBpZiAo
dGhpc1ZhbHVlID09IGpzQm9vbGVhbih0cnVlKSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc05vbnRyaXZpYWxTdHJpbmcoZXhlYywgInRydWUiKSk7CisgICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoZ2xvYmFsRGF0YS0+c21hbGxTdHJpbmdzLnRydWVTdHJpbmcoZ2xvYmFs
RGF0YSkpOwogCiAgICAgaWYgKCF0aGlzVmFsdWUuaW5oZXJpdHMoJkJvb2xlYW5PYmplY3Q6OnNf
aW5mbykpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOwogCiAgICAgaWYg
KGFzQm9vbGVhbk9iamVjdCh0aGlzVmFsdWUpLT5pbnRlcm5hbFZhbHVlKCkgPT0ganNCb29sZWFu
KGZhbHNlKSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc05vbnRyaXZpYWxTdHJp
bmcoZXhlYywgImZhbHNlIikpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGdsb2Jh
bERhdGEtPnNtYWxsU3RyaW5ncy5mYWxzZVN0cmluZyhnbG9iYWxEYXRhKSk7CiAKICAgICBBU1NF
UlQoYXNCb29sZWFuT2JqZWN0KHRoaXNWYWx1ZSktPmludGVybmFsVmFsdWUoKSA9PSBqc0Jvb2xl
YW4odHJ1ZSkpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOb250cml2aWFsU3RyaW5n
KGV4ZWMsICJ0cnVlIikpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoZ2xvYmFsRGF0YS0+
c21hbGxTdHJpbmdzLnRydWVTdHJpbmcoZ2xvYmFsRGF0YSkpOwogfQogCiBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGJvb2xlYW5Qcm90b0Z1bmNWYWx1ZU9mKEV4ZWNTdGF0ZSogZXhlYykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVDb252ZXJzaW9u
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVDb252ZXJzaW9uLmNwcApp
bmRleCA5MzMxNTQxYTg0ODZiNTM0ZWE0ZTU2Y2JjZWRjYzA3NTM2ZjI0NWIwLi4wYjU3ZjAxMmQ1
NjE0YzAyNDdhMDdiNDM0MDBkZTk3NWJkODhmODQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9EYXRlQ29udmVyc2lvbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRGF0ZUNvbnZlcnNpb24uY3BwCkBAIC03Myw3ICs3Myw3IEBAIFN0cmlu
ZyBmb3JtYXREYXRlVGltZShjb25zdCBHcmVnb3JpYW5EYXRlVGltZSYgdCwgRGF0ZVRpbWVGb3Jt
YXQgZm9ybWF0LCBib29sIGFzCiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKHdlZWtkYXlOYW1lWyh0
LndlZWtEYXkoKSArIDYpICUgN10pOwogCiAgICAgICAgIGlmIChhc1VUQ1ZhcmlhbnQpIHsKLSAg
ICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCIsICIpOworICAgICAgICAgICAgYnVpbGRlci5hcHBl
bmRMaXRlcmFsKCIsICIpOwogICAgICAgICAgICAgYXBwZW5kTnVtYmVyPDI+KGJ1aWxkZXIsIHQu
bW9udGhEYXkoKSk7CiAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgnICcpOwogICAgICAgICAg
ICAgYnVpbGRlci5hcHBlbmQobW9udGhOYW1lW3QubW9udGgoKV0pOwpAQCAtOTYsNyArOTYsNyBA
QCBTdHJpbmcgZm9ybWF0RGF0ZVRpbWUoY29uc3QgR3JlZ29yaWFuRGF0ZVRpbWUmIHQsIERhdGVU
aW1lRm9ybWF0IGZvcm1hdCwgYm9vbCBhcwogICAgICAgICBhcHBlbmROdW1iZXI8Mj4oYnVpbGRl
ciwgdC5taW51dGUoKSk7CiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCc6Jyk7CiAgICAgICAgIGFw
cGVuZE51bWJlcjwyPihidWlsZGVyLCB0LnNlY29uZCgpKTsKLSAgICAgICAgYnVpbGRlci5hcHBl
bmQoIiBHTVQiKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCIgR01UIik7CiAKICAg
ICAgICAgaWYgKCFhc1VUQ1ZhcmlhbnQpIHsKICAgICAgICAgICAgIGludCBvZmZzZXQgPSBhYnMo
dC51dGNPZmZzZXQoKSkgLyA2MDsKQEAgLTExNCw3ICsxMTQsNyBAQCBTdHJpbmcgZm9ybWF0RGF0
ZVRpbWUoY29uc3QgR3JlZ29yaWFuRGF0ZVRpbWUmIHQsIERhdGVUaW1lRm9ybWF0IGZvcm1hdCwg
Ym9vbCBhcwogICAgICAgICAgICAgc3RyZnRpbWUodGltZVpvbmVOYW1lLCBzaXplb2YodGltZVpv
bmVOYW1lKSwgIiVaIiwgJmd0bSk7CiAjZW5kaWYKICAgICAgICAgICAgIGlmICh0aW1lWm9uZU5h
bWVbMF0pIHsKLSAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgiICgiKTsKKyAgICAgICAg
ICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIiAoIik7CiAgICAgICAgICAgICAgICAgYnVp
bGRlci5hcHBlbmQodGltZVpvbmVOYW1lKTsKICAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVu
ZCgnKScpOwogICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRGF0ZVByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9EYXRlUHJvdG90eXBlLmNwcAppbmRleCA4Y2ZkNDRlZWY4NzE0NDEyOWI3NjBmMDZkYjk3Mjgy
NDg4ZTgzNjViLi42MjIxMWQzMDI0NzJjYWViNGJhYzBiNzgxMDc3M2MxMWM4NWRiZjBlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlUHJvdG90eXBlLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlUHJvdG90eXBlLmNwcApAQCAt
MzM0LDcgKzMzNCw3IEBAIHN0YXRpYyBKU0NlbGwqIGZvcm1hdExvY2FsZURhdGUoRXhlY1N0YXRl
KiBleGVjLCBEYXRlSW5zdGFuY2UqIGRhdGVPYmplY3QsIGRvdWJsCiB7CiAgICAgY29uc3QgR3Jl
Z29yaWFuRGF0ZVRpbWUqIGdyZWdvcmlhbkRhdGVUaW1lID0gZGF0ZU9iamVjdC0+Z3JlZ29yaWFu
RGF0ZVRpbWUoZXhlYyk7CiAgICAgaWYgKCFncmVnb3JpYW5EYXRlVGltZSkKLSAgICAgICAgcmV0
dXJuIGpzTm9udHJpdmlhbFN0cmluZyhleGVjLCAiSW52YWxpZCBEYXRlIik7CisgICAgICAgIHJl
dHVybiBqc05vbnRyaXZpYWxTdHJpbmcoZXhlYywgQVNDSUlMaXRlcmFsKCJJbnZhbGlkIERhdGUi
KSk7CiAgICAgcmV0dXJuIGZvcm1hdExvY2FsZURhdGUoZXhlYywgKmdyZWdvcmlhbkRhdGVUaW1l
LCBmb3JtYXQpOwogfQogCkBAIC0zNTIsNyArMzUyLDcgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVl
IGZvcm1hdGVEYXRlSW5zdGFuY2UoRXhlY1N0YXRlKiBleGVjLCBEYXRlVGltZUZvcm1hdCBmb3Jt
YXQKICAgICAgICAgPyB0aGlzRGF0ZU9iai0+Z3JlZ29yaWFuRGF0ZVRpbWVVVEMoZXhlYykKICAg
ICAgICAgOiB0aGlzRGF0ZU9iai0+Z3JlZ29yaWFuRGF0ZVRpbWUoZXhlYyk7CiAgICAgaWYgKCFn
cmVnb3JpYW5EYXRlVGltZSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc05vbnRy
aXZpYWxTdHJpbmcoZXhlYywgIkludmFsaWQgRGF0ZSIpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc05vbnRyaXZpYWxTdHJpbmcoZXhlYywgU3RyaW5nKEFTQ0lJTGl0ZXJhbCgi
SW52YWxpZCBEYXRlIikpKSk7CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTm9udHJp
dmlhbFN0cmluZyhleGVjLCBmb3JtYXREYXRlVGltZSgqZ3JlZ29yaWFuRGF0ZVRpbWUsIGZvcm1h
dCwgYXNVVENWYXJpYW50KSkpOwogfQpAQCAtNTQ4LDI0ICs1NDgsMzAgQEAgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jVG9JU09TdHJpbmcoRXhlY1N0YXRlKiBleGVj
KQogICAgIAogICAgIERhdGVJbnN0YW5jZSogdGhpc0RhdGVPYmogPSBhc0RhdGVJbnN0YW5jZSh0
aGlzVmFsdWUpOyAKICAgICBpZiAoIWlzZmluaXRlKHRoaXNEYXRlT2JqLT5pbnRlcm5hbE51bWJl
cigpKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVSYW5nZUVycm9y
KGV4ZWMsICJJbnZhbGlkIERhdGUiKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhl
YywgY3JlYXRlUmFuZ2VFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkludmFsaWQgRGF0ZSIpKSk7
CiAKICAgICBjb25zdCBHcmVnb3JpYW5EYXRlVGltZSogZ3JlZ29yaWFuRGF0ZVRpbWUgPSB0aGlz
RGF0ZU9iai0+Z3JlZ29yaWFuRGF0ZVRpbWVVVEMoZXhlYyk7CiAgICAgaWYgKCFncmVnb3JpYW5E
YXRlVGltZSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc05vbnRyaXZpYWxTdHJp
bmcoZXhlYywgIkludmFsaWQgRGF0ZSIpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc05vbnRyaXZpYWxTdHJpbmcoZXhlYywgU3RyaW5nKEFTQ0lJTGl0ZXJhbCgiSW52YWxpZCBE
YXRlIikpKSk7CiAgICAgLy8gTWF4aW11bSBhbW91bnQgb2Ygc3BhY2Ugd2UgbmVlZCBpbiBidWZm
ZXI6IDcgKG1heC4gZGlnaXRzIGluIHllYXIpICsgMiAqIDUgKDIgY2hhcmFjdGVycyBlYWNoIGZv
ciBtb250aCwgZGF5LCBob3VyLCBtaW51dGUsIHNlY29uZCkgKyA0ICguICsgMyBkaWdpdHMgZm9y
IG1pbGxpc2Vjb25kcykKICAgICAvLyA2IGZvciBmb3JtYXR0aW5nIGFuZCBvbmUgZm9yIG51bGwg
dGVybWluYXRpb24gPSAyOC4gV2UgYWRkIG9uZSBleHRyYSBjaGFyYWN0ZXIgdG8gYWxsb3cgdXMg
dG8gZm9yY2UgbnVsbCB0ZXJtaW5hdGlvbi4KLSAgICBjaGFyIGJ1ZmZlclsyOV07CisgICAgY2hh
ciBidWZmZXJbMjhdOwogICAgIC8vIElmIHRoZSB5ZWFyIGlzIG91dHNpZGUgdGhlIGJvdW5kcyBv
ZiAwIGFuZCA5OTk5IGluY2x1c2l2ZSB3ZSB3YW50IHRvIHVzZSB0aGUgZXh0ZW5kZWQgeWVhciBm
b3JtYXQgKEVTIDE1LjkuMS4xNS4xKS4KICAgICBpbnQgbXMgPSBzdGF0aWNfY2FzdDxpbnQ+KGZt
b2QodGhpc0RhdGVPYmotPmludGVybmFsTnVtYmVyKCksIG1zUGVyU2Vjb25kKSk7CiAgICAgaWYg
KG1zIDwgMCkKICAgICAgICAgbXMgKz0gbXNQZXJTZWNvbmQ7CisKKyAgICBpbnQgY2hhcmFjdGVy
c1dyaXR0ZW47CiAgICAgaWYgKGdyZWdvcmlhbkRhdGVUaW1lLT55ZWFyKCkgPiA5OTk5IHx8IGdy
ZWdvcmlhbkRhdGVUaW1lLT55ZWFyKCkgPCAwKQotICAgICAgICBzbnByaW50ZihidWZmZXIsIHNp
emVvZihidWZmZXIpIC0gMSwgIiUrMDdkLSUwMmQtJTAyZFQlMDJkOiUwMmQ6JTAyZC4lMDNkWiIs
IGdyZWdvcmlhbkRhdGVUaW1lLT55ZWFyKCksIGdyZWdvcmlhbkRhdGVUaW1lLT5tb250aCgpICsg
MSwgZ3JlZ29yaWFuRGF0ZVRpbWUtPm1vbnRoRGF5KCksIGdyZWdvcmlhbkRhdGVUaW1lLT5ob3Vy
KCksIGdyZWdvcmlhbkRhdGVUaW1lLT5taW51dGUoKSwgZ3JlZ29yaWFuRGF0ZVRpbWUtPnNlY29u
ZCgpLCBtcyk7CisgICAgICAgIGNoYXJhY3RlcnNXcml0dGVuID0gc25wcmludGYoYnVmZmVyLCBz
aXplb2YoYnVmZmVyKSwgIiUrMDdkLSUwMmQtJTAyZFQlMDJkOiUwMmQ6JTAyZC4lMDNkWiIsIGdy
ZWdvcmlhbkRhdGVUaW1lLT55ZWFyKCksIGdyZWdvcmlhbkRhdGVUaW1lLT5tb250aCgpICsgMSwg
Z3JlZ29yaWFuRGF0ZVRpbWUtPm1vbnRoRGF5KCksIGdyZWdvcmlhbkRhdGVUaW1lLT5ob3VyKCks
IGdyZWdvcmlhbkRhdGVUaW1lLT5taW51dGUoKSwgZ3JlZ29yaWFuRGF0ZVRpbWUtPnNlY29uZCgp
LCBtcyk7CiAgICAgZWxzZQotICAgICAgICBzbnByaW50ZihidWZmZXIsIHNpemVvZihidWZmZXIp
IC0gMSwgIiUwNGQtJTAyZC0lMDJkVCUwMmQ6JTAyZDolMDJkLiUwM2RaIiwgZ3JlZ29yaWFuRGF0
ZVRpbWUtPnllYXIoKSwgZ3JlZ29yaWFuRGF0ZVRpbWUtPm1vbnRoKCkgKyAxLCBncmVnb3JpYW5E
YXRlVGltZS0+bW9udGhEYXkoKSwgZ3JlZ29yaWFuRGF0ZVRpbWUtPmhvdXIoKSwgZ3JlZ29yaWFu
RGF0ZVRpbWUtPm1pbnV0ZSgpLCBncmVnb3JpYW5EYXRlVGltZS0+c2Vjb25kKCksIG1zKTsKLSAg
ICBidWZmZXJbc2l6ZW9mKGJ1ZmZlcikgLSAxXSA9IDA7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc05vbnRyaXZpYWxTdHJpbmcoZXhlYywgYnVmZmVyKSk7CisgICAgICAgIGNoYXJhY3Rl
cnNXcml0dGVuID0gc25wcmludGYoYnVmZmVyLCBzaXplb2YoYnVmZmVyKSwgIiUwNGQtJTAyZC0l
MDJkVCUwMmQ6JTAyZDolMDJkLiUwM2RaIiwgZ3JlZ29yaWFuRGF0ZVRpbWUtPnllYXIoKSwgZ3Jl
Z29yaWFuRGF0ZVRpbWUtPm1vbnRoKCkgKyAxLCBncmVnb3JpYW5EYXRlVGltZS0+bW9udGhEYXko
KSwgZ3JlZ29yaWFuRGF0ZVRpbWUtPmhvdXIoKSwgZ3JlZ29yaWFuRGF0ZVRpbWUtPm1pbnV0ZSgp
LCBncmVnb3JpYW5EYXRlVGltZS0+c2Vjb25kKCksIG1zKTsKKworICAgIEFTU0VSVChjaGFyYWN0
ZXJzV3JpdHRlbiA+IDAgJiYgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGNoYXJhY3RlcnNXcml0dGVu
KSA8IHNpemVvZihidWZmZXIpKTsKKyAgICBpZiAoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGNoYXJh
Y3RlcnNXcml0dGVuKSA+PSBzaXplb2YoYnVmZmVyKSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc0VtcHR5U3RyaW5nKGV4ZWMpKTsKKworICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNOb250cml2aWFsU3RyaW5nKGV4ZWMsIFN0cmluZyhidWZmZXIsIGNoYXJhY3RlcnNXcml0
dGVuKSkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNU
b0RhdGVTdHJpbmcoRXhlY1N0YXRlKiBleGVjKQpAQCAtMTExMywxMyArMTExOSwxMyBAQCBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNUb0pTT04oRXhlY1N0YXRlKiBl
eGVjKQogICAgIENhbGxEYXRhIGNhbGxEYXRhOwogICAgIENhbGxUeXBlIGNhbGxUeXBlID0gZ2V0
Q2FsbERhdGEodG9JU09WYWx1ZSwgY2FsbERhdGEpOwogICAgIGlmIChjYWxsVHlwZSA9PSBDYWxs
VHlwZU5vbmUpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlVHlwZUVy
cm9yKGV4ZWMsICJ0b0lTT1N0cmluZyBpcyBub3QgYSBmdW5jdGlvbiIpKTsKKyAgICAgICAgcmV0
dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFs
KCJ0b0lTT1N0cmluZyBpcyBub3QgYSBmdW5jdGlvbiIpKSk7CiAKICAgICBKU1ZhbHVlIHJlc3Vs
dCA9IGNhbGwoZXhlYywgYXNPYmplY3QodG9JU09WYWx1ZSksIGNhbGxUeXBlLCBjYWxsRGF0YSwg
b2JqZWN0LCBleGVjLT5lbXB0eUxpc3QoKSk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigp
KQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVsbCgpKTsKICAgICBpZiAocmVz
dWx0LmlzT2JqZWN0KCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRl
VHlwZUVycm9yKGV4ZWMsICJ0b0lTT1N0cmluZyBkaWQgbm90IHJldHVybiBhIHByaW1pdGl2ZSB2
YWx1ZSIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVUeXBlRXJy
b3IoZXhlYywgQVNDSUlMaXRlcmFsKCJ0b0lTT1N0cmluZyBkaWQgbm90IHJldHVybiBhIHByaW1p
dGl2ZSB2YWx1ZSIpKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvci5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvci5jcHAKaW5kZXggMGE1MjJjNGZkMDAz
ZGFkMDY2NDhhOGQxMzlhY2FmYzA0ZmU1YjdjMC4uMjdhNzI5ZDBhYWRkYThmYjg0MjYyYWE3NGJj
NWRiNTJhMjAwZmFhNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RXJyb3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yLmNwcApA
QCAtODEsNyArODEsNyBAQCBKU09iamVjdCogY3JlYXRlVHlwZUVycm9yKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKIAogSlNPYmplY3QqIGNyZWF0
ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiB7
Ci0gICAgcmV0dXJuIGNyZWF0ZVR5cGVFcnJvcihnbG9iYWxPYmplY3QsICJOb3QgZW5vdWdoIGFy
Z3VtZW50cyIpOworICAgIHJldHVybiBjcmVhdGVUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBBU0NJ
SUxpdGVyYWwoIk5vdCBlbm91Z2ggYXJndW1lbnRzIikpOwogfQogCiBKU09iamVjdCogY3JlYXRl
VVJJRXJyb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgU3RyaW5nJiBtZXNz
YWdlKQpAQCAtMTY5LDEyICsxNjksMTIgQEAgSlNPYmplY3QqIHRocm93RXJyb3IoRXhlY1N0YXRl
KiBleGVjLCBKU09iamVjdCogZXJyb3IpCiAKIEpTT2JqZWN0KiB0aHJvd1R5cGVFcnJvcihFeGVj
U3RhdGUqIGV4ZWMpCiB7Ci0gICAgcmV0dXJuIHRocm93RXJyb3IoZXhlYywgY3JlYXRlVHlwZUVy
cm9yKGV4ZWMsICJUeXBlIGVycm9yIikpOworICAgIHJldHVybiB0aHJvd0Vycm9yKGV4ZWMsIGNy
ZWF0ZVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlR5cGUgZXJyb3IiKSkpOwogfQogCiBK
U09iamVjdCogdGhyb3dTeW50YXhFcnJvcihFeGVjU3RhdGUqIGV4ZWMpCiB7Ci0gICAgcmV0dXJu
IHRocm93RXJyb3IoZXhlYywgY3JlYXRlU3ludGF4RXJyb3IoZXhlYywgIlN5bnRheCBlcnJvciIp
KTsKKyAgICByZXR1cm4gdGhyb3dFcnJvcihleGVjLCBjcmVhdGVTeW50YXhFcnJvcihleGVjLCBB
U0NJSUxpdGVyYWwoIlN5bnRheCBlcnJvciIpKSk7CiB9CiAKIEFTU0VSVF9DTEFTU19GSVRTX0lO
X0NFTEwoU3RyaWN0TW9kZVR5cGVFcnJvckZ1bmN0aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9FcnJvci5oCmluZGV4IGJjNzFmNzBiMTkwNWU0YTNmODg0Zjc5ZTU0NzZlZjIwNWZmZjZj
NTMuLjljMzRhMDU3NDY5NzIzMDQ0OWNlY2QyZjQ0MmI1OGQ5MDA0Yzk2YWIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvRXJyb3IuaApAQCAtODksNyArODksNyBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgc3RhdGljIFN0cmljdE1vZGVUeXBlRXJyb3JGdW5jdGlvbiogY3JlYXRlKEV4
ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKICAgICAgICAgewogICAgICAgICAgICAg
U3RyaWN0TW9kZVR5cGVFcnJvckZ1bmN0aW9uKiBmdW5jdGlvbiA9IG5ldyAoTm90TnVsbCwgYWxs
b2NhdGVDZWxsPFN0cmljdE1vZGVUeXBlRXJyb3JGdW5jdGlvbj4oKmV4ZWMtPmhlYXAoKSkpIFN0
cmljdE1vZGVUeXBlRXJyb3JGdW5jdGlvbihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgbWVzc2Fn
ZSk7Ci0gICAgICAgICAgICBmdW5jdGlvbi0+ZmluaXNoQ3JlYXRpb24oZXhlYy0+Z2xvYmFsRGF0
YSgpLCAiIik7CisgICAgICAgICAgICBmdW5jdGlvbi0+ZmluaXNoQ3JlYXRpb24oZXhlYy0+Z2xv
YmFsRGF0YSgpLCBTdHJpbmcoKSk7CiAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb247CiAgICAg
ICAgIH0KICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vy
cm9yUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yUHJv
dG90eXBlLmNwcAppbmRleCAzNTRhMzEyMWE0Yjg3YTM2NDA0YjlkN2M5ZmVjMmM0NDE0YzI3MGYy
Li42YzlkNmRmMDRkMzdkNGFlYTY3MTBkZjdmNDY2OWRjMTlhMjk5YTAxIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvclByb3RvdHlwZS5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JQcm90b3R5cGUuY3BwCkBAIC01OSw3ICs1
OSw3IEBAIHZvaWQgRXJyb3JQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKEV4ZWNTdGF0ZSogZXhl
YywgSlNHbG9iYWxPYmplY3QqKQogewogICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKGV4ZWMtPmds
b2JhbERhdGEoKSwgIiIpOwogICAgIEFTU0VSVChpbmhlcml0cygmc19pbmZvKSk7Ci0gICAgcHV0
RGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLm5hbWUsIGpz
Tm9udHJpdmlhbFN0cmluZyhleGVjLCAiRXJyb3IiKSwgRG9udEVudW0pOworICAgIHB1dERpcmVj
dChleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5uYW1lLCBqc05vbnRy
aXZpYWxTdHJpbmcoZXhlYywgU3RyaW5nKEFTQ0lJTGl0ZXJhbCgiRXJyb3IiKSkpLCBEb250RW51
bSk7CiB9CiAKIGJvb2wgRXJyb3JQcm90b3R5cGU6OmdldE93blByb3BlcnR5U2xvdChKU0NlbGwq
IGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVy
dHlTbG90ICZzbG90KQpAQCAtOTgsNyArOTgsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGVycm9yUHJvdG9GdW5jVG9TdHJpbmcoRXhlY1N0YXRlKiBleGVjKQogICAgIC8vIDQuIElm
IG5hbWUgaXMgdW5kZWZpbmVkLCB0aGVuIGxldCBuYW1lIGJlICJFcnJvciI7IGVsc2UgbGV0IG5h
bWUgYmUgVG9TdHJpbmcobmFtZSkuCiAgICAgU3RyaW5nIG5hbWVTdHJpbmc7CiAgICAgaWYgKG5h
bWUuaXNVbmRlZmluZWQoKSkKLSAgICAgICAgbmFtZVN0cmluZyA9ICJFcnJvciI7CisgICAgICAg
IG5hbWVTdHJpbmcgPSBBU0NJSUxpdGVyYWwoIkVycm9yIik7CiAgICAgZWxzZSB7CiAgICAgICAg
IG5hbWVTdHJpbmcgPSBuYW1lLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKICAgICAgICAg
aWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQpAQCAtMTE1LDcgKzExNSw3IEBAIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgZXJyb3JQcm90b0Z1bmNUb1N0cmluZyhFeGVjU3RhdGUqIGV4ZWMp
CiAgICAgLy8gNy4gSWYgbXNnIGlzIHVuZGVmaW5lZCwgdGhlbiBsZXQgbXNnIGJlIHRoZSBlbXB0
eSBTdHJpbmc7IGVsc2UgbGV0IG1zZyBiZSBUb1N0cmluZyhtc2cpLgogICAgIFN0cmluZyBtZXNz
YWdlU3RyaW5nOwogICAgIGlmIChtZXNzYWdlLmlzVW5kZWZpbmVkKCkpCi0gICAgICAgIG1lc3Nh
Z2VTdHJpbmcgPSAiIjsKKyAgICAgICAgbWVzc2FnZVN0cmluZyA9IFN0cmluZygpOwogICAgIGVs
c2UgewogICAgICAgICBtZXNzYWdlU3RyaW5nID0gbWVzc2FnZS50b1N0cmluZyhleGVjKS0+dmFs
dWUoZXhlYyk7CiAgICAgICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5jcHAKaW5kZXggODNh
NGUwM2MzYjNiNzA0MzUzNDk5YzRjYzczZjIxYmE0YmZhY2E5NC4uNzcxZWRjZTEyYmUxZmM4NTc3
YjAyMGFlMjBjYTFiNGNmYTRkYzc0NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5jcHAKQEAgLTQ3LDcgKzQ3LDcgQEAgY29uc3QgQ2xh
c3NJbmZvIEludGVycnVwdGVkRXhlY3V0aW9uRXJyb3I6OnNfaW5mbyA9IHsgIkludGVycnVwdGVk
RXhlY3V0aW9uRXJyb3IKIEpTVmFsdWUgSW50ZXJydXB0ZWRFeGVjdXRpb25FcnJvcjo6ZGVmYXVs
dFZhbHVlKGNvbnN0IEpTT2JqZWN0KiwgRXhlY1N0YXRlKiBleGVjLCBQcmVmZXJyZWRQcmltaXRp
dmVUeXBlIGhpbnQpCiB7CiAgICAgaWYgKGhpbnQgPT0gUHJlZmVyU3RyaW5nKQotICAgICAgICBy
ZXR1cm4ganNOb250cml2aWFsU3RyaW5nKGV4ZWMsICJKYXZhU2NyaXB0IGV4ZWN1dGlvbiBleGNl
ZWRlZCB0aW1lb3V0LiIpOworICAgICAgICByZXR1cm4ganNOb250cml2aWFsU3RyaW5nKGV4ZWMs
IFN0cmluZyhBU0NJSUxpdGVyYWwoIkphdmFTY3JpcHQgZXhlY3V0aW9uIGV4Y2VlZGVkIHRpbWVv
dXQuIikpKTsKICAgICByZXR1cm4gSlNWYWx1ZShzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46
OnF1aWV0X05hTigpKTsKIH0KIApAQCAtNzQsNyArNzQsNyBAQCBjb25zdCBDbGFzc0luZm8gVGVy
bWluYXRlZEV4ZWN1dGlvbkVycm9yOjpzX2luZm8gPSB7ICJUZXJtaW5hdGVkRXhlY3V0aW9uRXJy
b3IiLAogSlNWYWx1ZSBUZXJtaW5hdGVkRXhlY3V0aW9uRXJyb3I6OmRlZmF1bHRWYWx1ZShjb25z
dCBKU09iamVjdCosIEV4ZWNTdGF0ZSogZXhlYywgUHJlZmVycmVkUHJpbWl0aXZlVHlwZSBoaW50
KQogewogICAgIGlmIChoaW50ID09IFByZWZlclN0cmluZykKLSAgICAgICAgcmV0dXJuIGpzTm9u
dHJpdmlhbFN0cmluZyhleGVjLCAiSmF2YVNjcmlwdCBleGVjdXRpb24gdGVybWluYXRlZC4iKTsK
KyAgICAgICAgcmV0dXJuIGpzTm9udHJpdmlhbFN0cmluZyhleGVjLCBTdHJpbmcoQVNDSUlMaXRl
cmFsKCJKYXZhU2NyaXB0IGV4ZWN1dGlvbiB0ZXJtaW5hdGVkLiIpKSk7CiAgICAgcmV0dXJuIEpT
VmFsdWUoc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjpxdWlldF9OYU4oKSk7CiB9CiAKQEAg
LTk2LDEyICs5NiwxMiBAQCBib29sIGlzVGVybWluYXRlZEV4ZWN1dGlvbkV4Y2VwdGlvbihKU1Zh
bHVlIHZhbHVlKQogCiBKU09iamVjdCogY3JlYXRlU3RhY2tPdmVyZmxvd0Vycm9yKEV4ZWNTdGF0
ZSogZXhlYykKIHsKLSAgICByZXR1cm4gY3JlYXRlUmFuZ2VFcnJvcihleGVjLCAiTWF4aW11bSBj
YWxsIHN0YWNrIHNpemUgZXhjZWVkZWQuIik7CisgICAgcmV0dXJuIGNyZWF0ZVJhbmdlRXJyb3Io
ZXhlYywgQVNDSUlMaXRlcmFsKCJNYXhpbXVtIGNhbGwgc3RhY2sgc2l6ZSBleGNlZWRlZC4iKSk7
CiB9CiAKIEpTT2JqZWN0KiBjcmVhdGVTdGFja092ZXJmbG93RXJyb3IoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCkKIHsKLSAgICByZXR1cm4gY3JlYXRlUmFuZ2VFcnJvcihnbG9iYWxPYmpl
Y3QsICJNYXhpbXVtIGNhbGwgc3RhY2sgc2l6ZSBleGNlZWRlZC4iKTsKKyAgICByZXR1cm4gY3Jl
YXRlUmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIEFTQ0lJTGl0ZXJhbCgiTWF4aW11bSBjYWxsIHN0
YWNrIHNpemUgZXhjZWVkZWQuIikpOwogfQogCiBKU09iamVjdCogY3JlYXRlVW5kZWZpbmVkVmFy
aWFibGVFcnJvcihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIGlkZW50KQpAQCAt
MTUzLDcgKzE1Myw3IEBAIEpTT2JqZWN0KiBjcmVhdGVFcnJvckZvckludmFsaWRHbG9iYWxBc3Np
Z25tZW50KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU3RyaW5nJiBwCiAKIEpTT2JqZWN0KiBjcmVh
dGVPdXRPZk1lbW9yeUVycm9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiB7Ci0gICAg
cmV0dXJuIGNyZWF0ZUVycm9yKGdsb2JhbE9iamVjdCwgIk91dCBvZiBtZW1vcnkiKTsKKyAgICBy
ZXR1cm4gY3JlYXRlRXJyb3IoZ2xvYmFsT2JqZWN0LCBBU0NJSUxpdGVyYWwoIk91dCBvZiBtZW1v
cnkiKSk7CiB9CiAKIEpTT2JqZWN0KiB0aHJvd091dE9mTWVtb3J5RXJyb3IoRXhlY1N0YXRlKiBl
eGVjKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJs
ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcAppbmRl
eCAxZTkwMTQ3ZjZhNjdiZjQ0ZTliY2VmMTdhY2M2MTMzNDFjMzJjYThhLi43N2MyNzQ5MDM1YTY5
NDA5OTg0MjYyZWQ2OGQwMzNkODQzYjk0NmNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9FeGVjdXRhYmxlLmNwcApAQCAtMjA5LDcgKzIwOSw3IEBAIEpTT2JqZWN0KiBFdmFs
RXhlY3V0YWJsZTo6Y29tcGlsZUludGVybmFsKEV4ZWNTdGF0ZSogZXhlYywgSlNTY29wZSogc2Nv
cGUsIEpJVENvCiAgICAgICAgIG1fZXZhbENvZGVCbG9jayA9IG5ld0NvZGVCbG9jay5yZWxlYXNl
KCk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgaWYgKCFsZXhpY2FsR2xvYmFsT2JqZWN0LT5ldmFs
RW5hYmxlZCgpKQotICAgICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoZXhlYywgY3JlYXRlRXZh
bEVycm9yKGV4ZWMsICJFdmFsIGlzIGRpc2FibGVkIikpOworICAgICAgICAgICAgcmV0dXJuIHRo
cm93RXJyb3IoZXhlYywgY3JlYXRlRXZhbEVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiRXZhbCBp
cyBkaXNhYmxlZCIpKSk7CiAgICAgICAgIFJlZlB0cjxFdmFsTm9kZT4gZXZhbE5vZGUgPSBwYXJz
ZTxFdmFsTm9kZT4oZ2xvYmFsRGF0YSwgbGV4aWNhbEdsb2JhbE9iamVjdCwgbV9zb3VyY2UsIDAs
IGlzU3RyaWN0TW9kZSgpID8gSlNQYXJzZVN0cmljdCA6IEpTUGFyc2VOb3JtYWwsIEV2YWxOb2Rl
Ojppc0Z1bmN0aW9uTm9kZSA/IEpTUGFyc2VGdW5jdGlvbkNvZGUgOiBKU1BhcnNlUHJvZ3JhbUNv
ZGUsIGxleGljYWxHbG9iYWxPYmplY3QtPmRlYnVnZ2VyKCksIGV4ZWMsICZleGNlcHRpb24pOwog
ICAgICAgICBpZiAoIWV2YWxOb2RlKSB7CiAgICAgICAgICAgICBBU1NFUlQoZXhjZXB0aW9uKTsK
QEAgLTY3NSw3ICs2NzUsNyBAQCBTdHJpbmcgRnVuY3Rpb25FeGVjdXRhYmxlOjpwYXJhbVN0cmlu
ZygpIGNvbnN0CiAgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwogICAgIGZvciAoc2l6ZV90IHBv
cyA9IDA7IHBvcyA8IHBhcmFtZXRlcnMuc2l6ZSgpOyArK3BvcykgewogICAgICAgICBpZiAoIWJ1
aWxkZXIuaXNFbXB0eSgpKQotICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoIiwgIik7CisgICAg
ICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIiwgIik7CiAgICAgICAgIGJ1aWxkZXIuYXBw
ZW5kKHBhcmFtZXRlcnNbcG9zXS51c3RyaW5nKCkpOwogICAgIH0KICAgICByZXR1cm4gYnVpbGRl
ci50b1N0cmluZygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9G
dW5jdGlvbkNvbnN0cnVjdG9yLmNwcAppbmRleCAwNDExYTBjNTA4YTFlNzYwNTViMTdmNjQ0ZDdm
ODg3NzhmNTFhODQ0Li40MDUwN2RhZTE2NmJlNzE2MTE3ZThkZjEzYjlhY2MzYTYwMzk0NDViIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkNvbnN0cnVj
dG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkNvbnN0
cnVjdG9yLmNwcApAQCAtODIsNyArODIsNyBAQCBDYWxsVHlwZSBGdW5jdGlvbkNvbnN0cnVjdG9y
OjpnZXRDYWxsRGF0YShKU0NlbGwqLCBDYWxsRGF0YSYgY2FsbERhdGEpCiBKU09iamVjdCogY29u
c3RydWN0RnVuY3Rpb24oRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBjb25zdCBBcmdMaXN0JiBhcmdzLCBjb25zdCBJZGVudGlmaWVyJiBmdW5jdGlvbk5hbWUs
IGNvbnN0IFN0cmluZyYgc291cmNlVVJMLCBjb25zdCBUZXh0UG9zaXRpb24mIHBvc2l0aW9uKQog
ewogICAgIGlmICghZ2xvYmFsT2JqZWN0LT5ldmFsRW5hYmxlZCgpKQotICAgICAgICByZXR1cm4g
dGhyb3dFcnJvcihleGVjLCBjcmVhdGVFdmFsRXJyb3IoZXhlYywgIkZ1bmN0aW9uIGNvbnN0cnVj
dG9yIGlzIGRpc2FibGVkIikpOworICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihleGVjLCBjcmVh
dGVFdmFsRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJGdW5jdGlvbiBjb25zdHJ1Y3RvciBpcyBk
aXNhYmxlZCIpKSk7CiAgICAgcmV0dXJuIGNvbnN0cnVjdEZ1bmN0aW9uU2tpcHBpbmdFdmFsRW5h
YmxlZENoZWNrKGV4ZWMsIGdsb2JhbE9iamVjdCwgYXJncywgZnVuY3Rpb25OYW1lLCBzb3VyY2VV
UkwsIHBvc2l0aW9uKTsKIH0KIApAQCAtOTMsMjAgKzkzLDIwIEBAIEpTT2JqZWN0KiBjb25zdHJ1
Y3RGdW5jdGlvblNraXBwaW5nRXZhbEVuYWJsZWRDaGVjayhFeGVjU3RhdGUqIGV4ZWMsIEpTR2xv
YmFsT2JqCiAgICAgLy8gV2UgYWxzbyBuZWVkIFxuIGJlZm9yZSB0aGUgY2xvc2luZyB9IHRvIGhh
bmRsZSAvLyBjb21tZW50cyBhdCB0aGUgZW5kIG9mIHRoZSBsYXN0IGxpbmUKICAgICBTdHJpbmcg
cHJvZ3JhbTsKICAgICBpZiAoYXJncy5pc0VtcHR5KCkpCi0gICAgICAgIHByb2dyYW0gPSAiKGZ1
bmN0aW9uKCkgeyBcbn0pIjsKKyAgICAgICAgcHJvZ3JhbSA9IEFTQ0lJTGl0ZXJhbCgiKGZ1bmN0
aW9uKCkgeyBcbn0pIik7CiAgICAgZWxzZSBpZiAoYXJncy5zaXplKCkgPT0gMSkKICAgICAgICAg
cHJvZ3JhbSA9IG1ha2VTdHJpbmcoIihmdW5jdGlvbigpIHsgIiwgYXJncy5hdCgwKS50b1N0cmlu
ZyhleGVjKS0+dmFsdWUoZXhlYyksICJcbn0pIik7CiAgICAgZWxzZSB7CiAgICAgICAgIFN0cmlu
Z0J1aWxkZXIgYnVpbGRlcjsKLSAgICAgICAgYnVpbGRlci5hcHBlbmQoIihmdW5jdGlvbigiKTsK
KyAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCIoZnVuY3Rpb24oIik7CiAgICAgICAgIGJ1
aWxkZXIuYXBwZW5kKGFyZ3MuYXQoMCkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpKTsKICAg
ICAgICAgZm9yIChzaXplX3QgaSA9IDE7IGkgPCBhcmdzLnNpemUoKSAtIDE7IGkrKykgewotICAg
ICAgICAgICAgYnVpbGRlci5hcHBlbmQoIiwiKTsKKyAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5k
KCcsJyk7CiAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZChhcmdzLmF0KGkpLnRvU3RyaW5nKGV4
ZWMpLT52YWx1ZShleGVjKSk7CiAgICAgICAgIH0KLSAgICAgICAgYnVpbGRlci5hcHBlbmQoIikg
eyAiKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCIpIHsgIik7CiAgICAgICAgIGJ1
aWxkZXIuYXBwZW5kKGFyZ3MuYXQoYXJncy5zaXplKCkgLSAxKS50b1N0cmluZyhleGVjKS0+dmFs
dWUoZXhlYykpOwotICAgICAgICBidWlsZGVyLmFwcGVuZCgiXG59KSIpOworICAgICAgICBidWls
ZGVyLmFwcGVuZExpdGVyYWwoIlxufSkiKTsKICAgICAgICAgcHJvZ3JhbSA9IGJ1aWxkZXIudG9T
dHJpbmcoKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9G
dW5jdGlvblByb3RvdHlwZS5oCmluZGV4IDlmZmViZjdhOWVkZDUwN2Q2MjNjZWUzNmEwZTM1Njkz
M2E4NTI1MzMuLjA3ZjM4MTMwNjNmMDI0YmVmNDhkNWQyMzMxOTAzYzc3NTEwNzRjNGIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuaApA
QCAtMzIsNyArMzIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgc3RhdGljIEZ1bmN0aW9u
UHJvdG90eXBlKiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICAgICAgewogICAgICAgICAgICAgRnVu
Y3Rpb25Qcm90b3R5cGUqIHByb3RvdHlwZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEZ1
bmN0aW9uUHJvdG90eXBlPigqZXhlYy0+aGVhcCgpKSkgRnVuY3Rpb25Qcm90b3R5cGUoZ2xvYmFs
T2JqZWN0LCBzdHJ1Y3R1cmUpOwotICAgICAgICAgICAgcHJvdG90eXBlLT5maW5pc2hDcmVhdGlv
bihleGVjLCAiIik7CisgICAgICAgICAgICBwcm90b3R5cGUtPmZpbmlzaENyZWF0aW9uKGV4ZWMs
IFN0cmluZygpKTsKICAgICAgICAgICAgIHJldHVybiBwcm90b3R5cGU7CiAgICAgICAgIH0KICAg
ICAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRlcm5h
bEZ1bmN0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGVybmFsRnVu
Y3Rpb24uY3BwCmluZGV4IDIxNmRjZTM3OTU1ZmQ0Nzc5ZTVhNWQ0OTdhNDA1MmYxNzdlMzU2YWYu
LmUyZGUwM2Q5Mjk2MGU0OGM0MmM4YThhZWU5MjU5NzUxYmJiYmEyZGIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGVybmFsRnVuY3Rpb24uY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGVybmFsRnVuY3Rpb24uY3BwCkBAIC00NCw3
ICs0NCw3IEBAIHZvaWQgSW50ZXJuYWxGdW5jdGlvbjo6ZmluaXNoQ3JlYXRpb24oSlNHbG9iYWxE
YXRhJiBnbG9iYWxEYXRhLCBjb25zdCBTdHJpbmcmIG5hCiAgICAgQmFzZTo6ZmluaXNoQ3JlYXRp
b24oZ2xvYmFsRGF0YSk7CiAgICAgQVNTRVJUKGluaGVyaXRzKCZzX2luZm8pKTsKICAgICBBU1NF
UlQobWV0aG9kVGFibGUoKS0+Z2V0Q2FsbERhdGEgIT0gSW50ZXJuYWxGdW5jdGlvbjo6c19pbmZv
Lm1ldGhvZFRhYmxlLmdldENhbGxEYXRhKTsKLSAgICBwdXREaXJlY3QoZ2xvYmFsRGF0YSwgZ2xv
YmFsRGF0YS5wcm9wZXJ0eU5hbWVzLT5uYW1lLCBqc1N0cmluZygmZ2xvYmFsRGF0YSwgbmFtZS5p
c051bGwoKSA/ICIiIDogbmFtZSksIERvbnREZWxldGUgfCBSZWFkT25seSB8IERvbnRFbnVtKTsK
KyAgICBwdXREaXJlY3QoZ2xvYmFsRGF0YSwgZ2xvYmFsRGF0YS5wcm9wZXJ0eU5hbWVzLT5uYW1l
LCBqc1N0cmluZygmZ2xvYmFsRGF0YSwgbmFtZSksIERvbnREZWxldGUgfCBSZWFkT25seSB8IERv
bnRFbnVtKTsKIH0KIAogY29uc3QgU3RyaW5nJiBJbnRlcm5hbEZ1bmN0aW9uOjpuYW1lKEV4ZWNT
dGF0ZSogZXhlYykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
QXJyYXkuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5jcHAKaW5k
ZXggM2MwYjQzMjBmNWE4ODdkODA3MzA2M2I0OTdiMDQyM2IzMjBlMmEyOC4uOGUxNjA2ZmQ4Mjkw
MTRkNWEwY2NmMGFlZjM0YWE1MWRhZjkwZGU3MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNBcnJheS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNBcnJheS5jcHAKQEAgLTExMyw3ICsxMTMsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wg
aXNEZW5zZUVub3VnaEZvclZlY3Rvcih1bnNpZ25lZCBsZW5ndGgsIHVuc2lnbmVkIG51bVZhbHVl
cykKIHN0YXRpYyBib29sIHJlamVjdChFeGVjU3RhdGUqIGV4ZWMsIGJvb2wgdGhyb3dFeGNlcHRp
b24sIGNvbnN0IGNoYXIqIG1lc3NhZ2UpCiB7CiAgICAgaWYgKHRocm93RXhjZXB0aW9uKQotICAg
ICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBtZXNzYWdlKTsKKyAgICAgICAgdGhyb3dUeXBlRXJy
b3IoZXhlYywgQVNDSUlMaXRlcmFsKG1lc3NhZ2UpKTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAK
QEAgLTIxMiwxNCArMjEyLDE0IEBAIGlubGluZSB2b2lkIFNwYXJzZUFycmF5VmFsdWVNYXA6OnB1
dChFeGVjU3RhdGUqIGV4ZWMsIEpTQXJyYXkqIGFycmF5LCB1bnNpZ25lZCBpCiAgICAgaWYgKHJl
c3VsdC5pc05ld0VudHJ5ICYmICFhcnJheS0+aXNFeHRlbnNpYmxlKCkpIHsKICAgICAgICAgcmVt
b3ZlKHJlc3VsdC5pdGVyYXRvcik7CiAgICAgICAgIGlmIChzaG91bGRUaHJvdykKLSAgICAgICAg
ICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIFN0cmljdE1vZGVSZWFkb25seVByb3BlcnR5V3JpdGVF
cnJvcik7CisgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoU3Ry
aWN0TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKSk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKICAgICBpZiAoIShlbnRyeS5hdHRyaWJ1dGVzICYgQWNjZXNzb3IpKSB7CiAgICAgICAg
IGlmIChlbnRyeS5hdHRyaWJ1dGVzICYgUmVhZE9ubHkpIHsKICAgICAgICAgICAgIGlmIChzaG91
bGRUaHJvdykKLSAgICAgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBTdHJpY3RNb2Rl
UmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpOworICAgICAgICAgICAgICAgIHRocm93VHlwZUVy
cm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbChTdHJpY3RNb2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJy
b3IpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCkBAIC0yMzMsNyArMjMzLDcg
QEAgaW5saW5lIHZvaWQgU3BhcnNlQXJyYXlWYWx1ZU1hcDo6cHV0KEV4ZWNTdGF0ZSogZXhlYywg
SlNBcnJheSogYXJyYXksIHVuc2lnbmVkIGkKICAgICAKICAgICBpZiAoIXNldHRlcikgewogICAg
ICAgICBpZiAoc2hvdWxkVGhyb3cpCi0gICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBT
dHJpY3RNb2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpOworICAgICAgICAgICAgdGhyb3dU
eXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKFN0cmljdE1vZGVSZWFkb25seVByb3BlcnR5V3Jp
dGVFcnJvcikpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC03MjMsNyArNzIzLDcgQEAg
dm9pZCBKU0FycmF5OjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5
TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmEKICAgICBpZiAocHJvcGVydHlOYW1lID09IGV4ZWMtPnBy
b3BlcnR5TmFtZXMoKS5sZW5ndGgpIHsKICAgICAgICAgdW5zaWduZWQgbmV3TGVuZ3RoID0gdmFs
dWUudG9VSW50MzIoZXhlYyk7CiAgICAgICAgIGlmICh2YWx1ZS50b051bWJlcihleGVjKSAhPSBz
dGF0aWNfY2FzdDxkb3VibGU+KG5ld0xlbmd0aCkpIHsKLSAgICAgICAgICAgIHRocm93RXJyb3Io
ZXhlYywgY3JlYXRlUmFuZ2VFcnJvcihleGVjLCAiSW52YWxpZCBhcnJheSBsZW5ndGgiKSk7Cisg
ICAgICAgICAgICB0aHJvd0Vycm9yKGV4ZWMsIGNyZWF0ZVJhbmdlRXJyb3IoZXhlYywgQVNDSUlM
aXRlcmFsKCJJbnZhbGlkIGFycmF5IGxlbmd0aCIpKSk7CiAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIH0KICAgICAgICAgdGhpc09iamVjdC0+c2V0TGVuZ3RoKGV4ZWMsIG5ld0xlbmd0aCwg
c2xvdC5pc1N0cmljdE1vZGUoKSk7CkBAIC04MTEsNyArODExLDcgQEAgdm9pZCBKU0FycmF5Ojpw
dXRCeUluZGV4QmV5b25kVmVjdG9yTGVuZ3RoKEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgaSwg
SlNWYWx1ZQogICAgICAgICAvLyBQcm9oaWJpdCBncm93aW5nIHRoZSBhcnJheSBpZiBsZW5ndGgg
aXMgbm90IHdyaXRhYmxlLgogICAgICAgICBpZiAobWFwLT5sZW5ndGhJc1JlYWRPbmx5KCkgfHwg
IWlzRXh0ZW5zaWJsZSgpKSB7CiAgICAgICAgICAgICBpZiAoc2hvdWxkVGhyb3cpCi0gICAgICAg
ICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgU3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVydHlX
cml0ZUVycm9yKTsKKyAgICAgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxp
dGVyYWwoU3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKSk7CiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgbGVuZ3RoID0gaSArIDE7CkBAIC0xMjM2LDcg
KzEyMzYsNyBAQCBKU1ZhbHVlIEpTQXJyYXk6OnBvcChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgdW5z
aWduZWQgbGVuZ3RoID0gc3RvcmFnZS0+bV9sZW5ndGg7CiAgICAgaWYgKCFsZW5ndGgpIHsKICAg
ICAgICAgaWYgKCFpc0xlbmd0aFdyaXRhYmxlKCkpCi0gICAgICAgICAgICB0aHJvd1R5cGVFcnJv
cihleGVjLCBTdHJpY3RNb2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpOworICAgICAgICAg
ICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKFN0cmljdE1vZGVSZWFkb25seVBy
b3BlcnR5V3JpdGVFcnJvcikpOwogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKICAgICB9
CiAKQEAgLTEyNjEsNyArMTI2MSw3IEBAIEpTVmFsdWUgSlNBcnJheTo6cG9wKEV4ZWNTdGF0ZSog
ZXhlYykKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAgICAgLy8gQ2FsbCB0aGUgW1tE
ZWxldGVdXSBpbnRlcm5hbCBtZXRob2Qgb2YgTyB3aXRoIGFyZ3VtZW50cyBpbmR4IGFuZCB0cnVl
LgogICAgIGlmICghZGVsZXRlUHJvcGVydHlCeUluZGV4KHRoaXMsIGV4ZWMsIGluZGV4KSkgewot
ICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCAiVW5hYmxlIHRvIGRlbGV0ZSBwcm9wZXJ0eS4i
KTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJVbmFibGUgdG8g
ZGVsZXRlIHByb3BlcnR5LiIpKTsKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAgICAg
fQogICAgIC8vIENhbGwgdGhlIFtbUHV0XV0gaW50ZXJuYWwgbWV0aG9kIG9mIE8gd2l0aCBhcmd1
bWVudHMgImxlbmd0aCIsIGluZHgsIGFuZCB0cnVlLgpAQCAtMTI5NCw3ICsxMjk0LDcgQEAgdm9p
ZCBKU0FycmF5OjpwdXNoKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2YWx1ZSkKICAgICAgICAg
bWV0aG9kVGFibGUoKS0+cHV0QnlJbmRleCh0aGlzLCBleGVjLCBzdG9yYWdlLT5tX2xlbmd0aCwg
dmFsdWUsIHRydWUpOwogICAgICAgICAvLyBQZXIgRVM1LjEgMTUuNC40Ljcgc3RlcCA2ICYgMTUu
NC41LjEgc3RlcCAzLmQuCiAgICAgICAgIGlmICghZXhlYy0+aGFkRXhjZXB0aW9uKCkpCi0gICAg
ICAgICAgICB0aHJvd0Vycm9yKGV4ZWMsIGNyZWF0ZVJhbmdlRXJyb3IoZXhlYywgIkludmFsaWQg
YXJyYXkgbGVuZ3RoIikpOworICAgICAgICAgICAgdGhyb3dFcnJvcihleGVjLCBjcmVhdGVSYW5n
ZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiSW52YWxpZCBhcnJheSBsZW5ndGgiKSkpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0Z1bmN0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
RnVuY3Rpb24uY3BwCmluZGV4IDRkZDNmMDVkZDUyNDdlZTUxNWNiZjM4N2Y1MzA3ZThlNTVkNDQz
MWMuLjlkODQzYzc3NGFiMmY3YWM3OTQxM2I2YWNkZTJkNTc5OGYxYzJhMzIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCkBAIC05Niw3ICs5Niw3IEBA
IHZvaWQgSlNGdW5jdGlvbjo6ZmluaXNoQ3JlYXRpb24oRXhlY1N0YXRlKiBleGVjLCBOYXRpdmVF
eGVjdXRhYmxlKiBleGVjdXRhYmxlLCBpCiAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24oZXhlYy0+
Z2xvYmFsRGF0YSgpKTsKICAgICBBU1NFUlQoaW5oZXJpdHMoJnNfaW5mbykpOwogICAgIG1fZXhl
Y3V0YWJsZS5zZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlzLCBleGVjdXRhYmxlKTsKLSAgICBw
dXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5nbG9iYWxEYXRhKCkucHJvcGVydHlO
YW1lcy0+bmFtZSwganNTdHJpbmcoZXhlYywgbmFtZS5pc051bGwoKSA/ICIiIDogbmFtZSksIERv
bnREZWxldGUgfCBSZWFkT25seSB8IERvbnRFbnVtKTsKKyAgICBwdXREaXJlY3QoZXhlYy0+Z2xv
YmFsRGF0YSgpLCBleGVjLT5nbG9iYWxEYXRhKCkucHJvcGVydHlOYW1lcy0+bmFtZSwganNTdHJp
bmcoZXhlYywgbmFtZSksIERvbnREZWxldGUgfCBSZWFkT25seSB8IERvbnRFbnVtKTsKICAgICBw
dXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3Ro
LCBqc051bWJlcihsZW5ndGgpLCBEb250RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250RW51bSk7CiB9
CiAKQEAgLTIwMyw3ICsyMDMsNyBAQCBKU1ZhbHVlIEpTRnVuY3Rpb246OmNhbGxlckdldHRlcihF
eGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIFByb3BlcnR5TmFtZQogICAgIEpTRnVu
Y3Rpb24qIGZ1bmN0aW9uID0ganNDYXN0PEpTRnVuY3Rpb24qPihjYWxsZXIpOwogICAgIGlmIChm
dW5jdGlvbi0+aXNIb3N0RnVuY3Rpb24oKSB8fCAhZnVuY3Rpb24tPmpzRXhlY3V0YWJsZSgpLT5p
c1N0cmljdE1vZGUoKSkKICAgICAgICAgcmV0dXJuIGNhbGxlcjsKLSAgICByZXR1cm4gdGhyb3dU
eXBlRXJyb3IoZXhlYywgIkZ1bmN0aW9uLmNhbGxlciB1c2VkIHRvIHJldHJpZXZlIHN0cmljdCBj
YWxsZXIiKTsKKyAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJG
dW5jdGlvbi5jYWxsZXIgdXNlZCB0byByZXRyaWV2ZSBzdHJpY3QgY2FsbGVyIikpOwogfQogCiBK
U1ZhbHVlIEpTRnVuY3Rpb246Omxlbmd0aEdldHRlcihFeGVjU3RhdGUqLCBKU1ZhbHVlIHNsb3RC
YXNlLCBQcm9wZXJ0eU5hbWUpCkBAIC00MTQsMjcgKzQxNCwyNyBAQCBib29sIEpTRnVuY3Rpb246
OmRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJv
cGVydHlOYQogICAgICAKICAgICBpZiAoZGVzY3JpcHRvci5jb25maWd1cmFibGVQcmVzZW50KCkg
JiYgZGVzY3JpcHRvci5jb25maWd1cmFibGUoKSkgewogICAgICAgICBpZiAodGhyb3dFeGNlcHRp
b24pCi0gICAgICAgICAgICB0aHJvd0Vycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCAi
QXR0ZW1wdGluZyB0byBjb25maWd1cmFibGUgYXR0cmlidXRlIG9mIHVuY29uZmlndXJhYmxlIHBy
b3BlcnR5LiIpKTsKKyAgICAgICAgICAgIHRocm93RXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9y
KGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiQXR0ZW1wdGluZyB0byBjb25maWd1cmFibGUgYXR0cmlidXRl
IG9mIHVuY29uZmlndXJhYmxlIHByb3BlcnR5LiIpKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICB9CiAgICAgaWYgKGRlc2NyaXB0b3IuZW51bWVyYWJsZVByZXNlbnQoKSAmJiBkZXNjcmlw
dG9yLmVudW1lcmFibGUoKSkgewogICAgICAgICBpZiAodGhyb3dFeGNlcHRpb24pCi0gICAgICAg
ICAgICB0aHJvd0Vycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCAiQXR0ZW1wdGluZyB0
byBjaGFuZ2UgZW51bWVyYWJsZSBhdHRyaWJ1dGUgb2YgdW5jb25maWd1cmFibGUgcHJvcGVydHku
IikpOworICAgICAgICAgICAgdGhyb3dFcnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywg
QVNDSUlMaXRlcmFsKCJBdHRlbXB0aW5nIHRvIGNoYW5nZSBlbnVtZXJhYmxlIGF0dHJpYnV0ZSBv
ZiB1bmNvbmZpZ3VyYWJsZSBwcm9wZXJ0eS4iKSkpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgfQogICAgIGlmIChkZXNjcmlwdG9yLmlzQWNjZXNzb3JEZXNjcmlwdG9yKCkpIHsKICAgICAg
ICAgaWYgKHRocm93RXhjZXB0aW9uKQotICAgICAgICAgICAgdGhyb3dFcnJvcihleGVjLCBjcmVh
dGVUeXBlRXJyb3IoZXhlYywgIkF0dGVtcHRpbmcgdG8gY2hhbmdlIGFjY2VzcyBtZWNoYW5pc20g
Zm9yIGFuIHVuY29uZmlndXJhYmxlIHByb3BlcnR5LiIpKTsKKyAgICAgICAgICAgIHRocm93RXJy
b3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiQXR0ZW1wdGluZyB0
byBjaGFuZ2UgYWNjZXNzIG1lY2hhbmlzbSBmb3IgYW4gdW5jb25maWd1cmFibGUgcHJvcGVydHku
IikpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICBpZiAoZGVzY3JpcHRvci53
cml0YWJsZVByZXNlbnQoKSAmJiBkZXNjcmlwdG9yLndyaXRhYmxlKCkpIHsKICAgICAgICAgaWYg
KHRocm93RXhjZXB0aW9uKQotICAgICAgICAgICAgdGhyb3dFcnJvcihleGVjLCBjcmVhdGVUeXBl
RXJyb3IoZXhlYywgIkF0dGVtcHRpbmcgdG8gY2hhbmdlIHdyaXRhYmxlIGF0dHJpYnV0ZSBvZiB1
bmNvbmZpZ3VyYWJsZSBwcm9wZXJ0eS4iKSk7CisgICAgICAgICAgICB0aHJvd0Vycm9yKGV4ZWMs
IGNyZWF0ZVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkF0dGVtcHRpbmcgdG8gY2hhbmdl
IHdyaXRhYmxlIGF0dHJpYnV0ZSBvZiB1bmNvbmZpZ3VyYWJsZSBwcm9wZXJ0eS4iKSkpOwogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIGlmICghdmFsdWVDaGVjaykgewogICAgICAg
ICBpZiAodGhyb3dFeGNlcHRpb24pCi0gICAgICAgICAgICB0aHJvd0Vycm9yKGV4ZWMsIGNyZWF0
ZVR5cGVFcnJvcihleGVjLCAiQXR0ZW1wdGluZyB0byBjaGFuZ2UgdmFsdWUgb2YgYSByZWFkb25s
eSBwcm9wZXJ0eS4iKSk7CisgICAgICAgICAgICB0aHJvd0Vycm9yKGV4ZWMsIGNyZWF0ZVR5cGVF
cnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkF0dGVtcHRpbmcgdG8gY2hhbmdlIHZhbHVlIG9mIGEg
cmVhZG9ubHkgcHJvcGVydHkuIikpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAg
ICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2xvYmFsRGF0YS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2Jh
bERhdGEuY3BwCmluZGV4IGVhMDc0ZWVjZjQ1ZDZlM2ZkNzk3YmUwYWM2ZDM5YTFjZDdjYTQ0NDku
LmJlOGIxMjQ1ODk0YmNmMTBhYmY1MDY3NDJjYmNmMGVjMDE0MTYxNWIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmNwcApAQCAtMTA0LDggKzEwNCw3
IEBAIHN0YXRpYyBib29sIGVuYWJsZUFzc2VtYmxlcihFeGVjdXRhYmxlQWxsb2NhdG9yJiBleGVj
dXRhYmxlQWxsb2NhdG9yKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICNpZiBVU0UoQ0YpCi0g
ICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBjYW5Vc2VKSVRLZXkoQWRvcHRDRiwgQ0ZTdHJpbmdD
cmVhdGVXaXRoQ1N0cmluZygwICwgIkphdmFTY3JpcHRDb3JlVXNlSklUIiwga0NGU3RyaW5nRW5j
b2RpbmdNYWNSb21hbikpOwotICAgIFJldGFpblB0cjxDRkJvb2xlYW5SZWY+IGNhblVzZUpJVChB
ZG9wdENGLCAoQ0ZCb29sZWFuUmVmKUNGUHJlZmVyZW5jZXNDb3B5QXBwVmFsdWUoY2FuVXNlSklU
S2V5LmdldCgpLCBrQ0ZQcmVmZXJlbmNlc0N1cnJlbnRBcHBsaWNhdGlvbikpOworICAgIFJldGFp
blB0cjxDRkJvb2xlYW5SZWY+IGNhblVzZUpJVChBZG9wdENGLCAoQ0ZCb29sZWFuUmVmKUNGUHJl
ZmVyZW5jZXNDb3B5QXBwVmFsdWUoQ0ZTVFIoIkphdmFTY3JpcHRDb3JlVXNlSklUIiksIGtDRlBy
ZWZlcmVuY2VzQ3VycmVudEFwcGxpY2F0aW9uKSk7CiAgICAgaWYgKGNhblVzZUpJVCkKICAgICAg
ICAgcmV0dXJuIGtDRkJvb2xlYW5UcnVlID09IGNhblVzZUpJVC5nZXQoKTsKICNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCmluZGV4
IDE0NzNmZTAyNDFjNTI1YWQyODdlMTAwOTgyM2Q3NWMyMzAxMjFjODYuLmRiNzEzOTYzNTRhMGJh
NDMwNWRmNjk4Y2NlZWRkYjk1YjU4ZTRkZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKQEAgLTIwNiw4ICsyMDYsOCBAQCB2b2lkIEpT
R2xvYmFsT2JqZWN0OjpyZXNldChKU1ZhbHVlIHByb3RvdHlwZSkKICAgICBtX2FwcGx5RnVuY3Rp
b24uc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywgYXBwbHlGdW5jdGlvbik7CiAgICAgbV9v
YmplY3RQcm90b3R5cGUuc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywgT2JqZWN0UHJvdG90
eXBlOjpjcmVhdGUoZXhlYywgdGhpcywgT2JqZWN0UHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUo
ZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlzLCBqc051bGwoKSkpKTsKICAgICBHZXR0ZXJTZXR0ZXIq
IHByb3RvQWNjZXNzb3IgPSBHZXR0ZXJTZXR0ZXI6OmNyZWF0ZShleGVjKTsKLSAgICBwcm90b0Fj
Y2Vzc29yLT5zZXRHZXR0ZXIoZXhlYy0+Z2xvYmFsRGF0YSgpLCBKU0Z1bmN0aW9uOjpjcmVhdGUo
ZXhlYywgdGhpcywgMCwgIiIsIGdsb2JhbEZ1bmNQcm90b0dldHRlcikpOwotICAgIHByb3RvQWNj
ZXNzb3ItPnNldFNldHRlcihleGVjLT5nbG9iYWxEYXRhKCksIEpTRnVuY3Rpb246OmNyZWF0ZShl
eGVjLCB0aGlzLCAwLCAiIiwgZ2xvYmFsRnVuY1Byb3RvU2V0dGVyKSk7CisgICAgcHJvdG9BY2Nl
c3Nvci0+c2V0R2V0dGVyKGV4ZWMtPmdsb2JhbERhdGEoKSwgSlNGdW5jdGlvbjo6Y3JlYXRlKGV4
ZWMsIHRoaXMsIDAsIFN0cmluZygpLCBnbG9iYWxGdW5jUHJvdG9HZXR0ZXIpKTsKKyAgICBwcm90
b0FjY2Vzc29yLT5zZXRTZXR0ZXIoZXhlYy0+Z2xvYmFsRGF0YSgpLCBKU0Z1bmN0aW9uOjpjcmVh
dGUoZXhlYywgdGhpcywgMCwgU3RyaW5nKCksIGdsb2JhbEZ1bmNQcm90b1NldHRlcikpOwogICAg
IG1fb2JqZWN0UHJvdG90eXBlLT5wdXREaXJlY3RBY2Nlc3NvcihleGVjLT5nbG9iYWxEYXRhKCks
IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS51bmRlcnNjb3JlUHJvdG8sIHByb3RvQWNjZXNzb3IsIEFj
Y2Vzc29yIHwgRG9udEVudW0pOwogICAgIG1fZnVuY3Rpb25Qcm90b3R5cGUtPnN0cnVjdHVyZSgp
LT5zZXRQcm90b3R5cGVXaXRob3V0VHJhbnNpdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIG1fb2Jq
ZWN0UHJvdG90eXBlLmdldCgpKTsKIApAQCAtMjY2LDEyICsyNjYsMTIgQEAgdm9pZCBKU0dsb2Jh
bE9iamVjdDo6cmVzZXQoSlNWYWx1ZSBwcm90b3R5cGUpCiAKICAgICBTdHJ1Y3R1cmUqIG5hdGl2
ZUVycm9yUHJvdG90eXBlU3RydWN0dXJlID0gTmF0aXZlRXJyb3JQcm90b3R5cGU6OmNyZWF0ZVN0
cnVjdHVyZShleGVjLT5nbG9iYWxEYXRhKCksIHRoaXMsIG1fZXJyb3JQcm90b3R5cGUuZ2V0KCkp
OwogICAgIFN0cnVjdHVyZSogbmF0aXZlRXJyb3JTdHJ1Y3R1cmUgPSBOYXRpdmVFcnJvckNvbnN0
cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlzLCBtX2Z1bmN0
aW9uUHJvdG90eXBlLmdldCgpKTsKLSAgICBtX2V2YWxFcnJvckNvbnN0cnVjdG9yLnNldChleGVj
LT5nbG9iYWxEYXRhKCksIHRoaXMsIE5hdGl2ZUVycm9yQ29uc3RydWN0b3I6OmNyZWF0ZShleGVj
LCB0aGlzLCBuYXRpdmVFcnJvclN0cnVjdHVyZSwgbmF0aXZlRXJyb3JQcm90b3R5cGVTdHJ1Y3R1
cmUsICJFdmFsRXJyb3IiKSk7Ci0gICAgbV9yYW5nZUVycm9yQ29uc3RydWN0b3Iuc2V0KGV4ZWMt
Pmdsb2JhbERhdGEoKSwgdGhpcywgTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcjo6Y3JlYXRlKGV4ZWMs
IHRoaXMsIG5hdGl2ZUVycm9yU3RydWN0dXJlLCBuYXRpdmVFcnJvclByb3RvdHlwZVN0cnVjdHVy
ZSwgIlJhbmdlRXJyb3IiKSk7Ci0gICAgbV9yZWZlcmVuY2VFcnJvckNvbnN0cnVjdG9yLnNldChl
eGVjLT5nbG9iYWxEYXRhKCksIHRoaXMsIE5hdGl2ZUVycm9yQ29uc3RydWN0b3I6OmNyZWF0ZShl
eGVjLCB0aGlzLCBuYXRpdmVFcnJvclN0cnVjdHVyZSwgbmF0aXZlRXJyb3JQcm90b3R5cGVTdHJ1
Y3R1cmUsICJSZWZlcmVuY2VFcnJvciIpKTsKLSAgICBtX3N5bnRheEVycm9yQ29uc3RydWN0b3Iu
c2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywgTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcjo6Y3Jl
YXRlKGV4ZWMsIHRoaXMsIG5hdGl2ZUVycm9yU3RydWN0dXJlLCBuYXRpdmVFcnJvclByb3RvdHlw
ZVN0cnVjdHVyZSwgIlN5bnRheEVycm9yIikpOwotICAgIG1fdHlwZUVycm9yQ29uc3RydWN0b3Iu
c2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywgTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcjo6Y3Jl
YXRlKGV4ZWMsIHRoaXMsIG5hdGl2ZUVycm9yU3RydWN0dXJlLCBuYXRpdmVFcnJvclByb3RvdHlw
ZVN0cnVjdHVyZSwgIlR5cGVFcnJvciIpKTsKLSAgICBtX1VSSUVycm9yQ29uc3RydWN0b3Iuc2V0
KGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywgTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcjo6Y3JlYXRl
KGV4ZWMsIHRoaXMsIG5hdGl2ZUVycm9yU3RydWN0dXJlLCBuYXRpdmVFcnJvclByb3RvdHlwZVN0
cnVjdHVyZSwgIlVSSUVycm9yIikpOworICAgIG1fZXZhbEVycm9yQ29uc3RydWN0b3Iuc2V0KGV4
ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywgTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcjo6Y3JlYXRlKGV4
ZWMsIHRoaXMsIG5hdGl2ZUVycm9yU3RydWN0dXJlLCBuYXRpdmVFcnJvclByb3RvdHlwZVN0cnVj
dHVyZSwgQVNDSUlMaXRlcmFsKCJFdmFsRXJyb3IiKSkpOworICAgIG1fcmFuZ2VFcnJvckNvbnN0
cnVjdG9yLnNldChleGVjLT5nbG9iYWxEYXRhKCksIHRoaXMsIE5hdGl2ZUVycm9yQ29uc3RydWN0
b3I6OmNyZWF0ZShleGVjLCB0aGlzLCBuYXRpdmVFcnJvclN0cnVjdHVyZSwgbmF0aXZlRXJyb3JQ
cm90b3R5cGVTdHJ1Y3R1cmUsIEFTQ0lJTGl0ZXJhbCgiUmFuZ2VFcnJvciIpKSk7CisgICAgbV9y
ZWZlcmVuY2VFcnJvckNvbnN0cnVjdG9yLnNldChleGVjLT5nbG9iYWxEYXRhKCksIHRoaXMsIE5h
dGl2ZUVycm9yQ29uc3RydWN0b3I6OmNyZWF0ZShleGVjLCB0aGlzLCBuYXRpdmVFcnJvclN0cnVj
dHVyZSwgbmF0aXZlRXJyb3JQcm90b3R5cGVTdHJ1Y3R1cmUsIEFTQ0lJTGl0ZXJhbCgiUmVmZXJl
bmNlRXJyb3IiKSkpOworICAgIG1fc3ludGF4RXJyb3JDb25zdHJ1Y3Rvci5zZXQoZXhlYy0+Z2xv
YmFsRGF0YSgpLCB0aGlzLCBOYXRpdmVFcnJvckNvbnN0cnVjdG9yOjpjcmVhdGUoZXhlYywgdGhp
cywgbmF0aXZlRXJyb3JTdHJ1Y3R1cmUsIG5hdGl2ZUVycm9yUHJvdG90eXBlU3RydWN0dXJlLCBB
U0NJSUxpdGVyYWwoIlN5bnRheEVycm9yIikpKTsKKyAgICBtX3R5cGVFcnJvckNvbnN0cnVjdG9y
LnNldChleGVjLT5nbG9iYWxEYXRhKCksIHRoaXMsIE5hdGl2ZUVycm9yQ29uc3RydWN0b3I6OmNy
ZWF0ZShleGVjLCB0aGlzLCBuYXRpdmVFcnJvclN0cnVjdHVyZSwgbmF0aXZlRXJyb3JQcm90b3R5
cGVTdHJ1Y3R1cmUsIEFTQ0lJTGl0ZXJhbCgiVHlwZUVycm9yIikpKTsKKyAgICBtX1VSSUVycm9y
Q29uc3RydWN0b3Iuc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywgTmF0aXZlRXJyb3JDb25z
dHJ1Y3Rvcjo6Y3JlYXRlKGV4ZWMsIHRoaXMsIG5hdGl2ZUVycm9yU3RydWN0dXJlLCBuYXRpdmVF
cnJvclByb3RvdHlwZVN0cnVjdHVyZSwgQVNDSUlMaXRlcmFsKCJVUklFcnJvciIpKSk7CiAKICAg
ICBtX29iamVjdFByb3RvdHlwZS0+cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oZXhlYy0+Z2xv
YmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuY29uc3RydWN0b3IsIG9iamVjdENvbnN0
cnVjdG9yLCBEb250RW51bSk7CiAgICAgbV9mdW5jdGlvblByb3RvdHlwZS0+cHV0RGlyZWN0V2l0
aG91dFRyYW5zaXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCku
Y29uc3RydWN0b3IsIGZ1bmN0aW9uQ29uc3RydWN0b3IsIERvbnRFbnVtKTsKQEAgLTMyNiw3ICsz
MjYsNyBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0OjpyZXNldChKU1ZhbHVlIHByb3RvdHlwZSkKIAog
dm9pZCBKU0dsb2JhbE9iamVjdDo6Y3JlYXRlVGhyb3dUeXBlRXJyb3IoRXhlY1N0YXRlKiBleGVj
KQogewotICAgIEpTRnVuY3Rpb24qIHRocm93ZXIgPSBKU0Z1bmN0aW9uOjpjcmVhdGUoZXhlYywg
dGhpcywgMCwgIiIsIGdsb2JhbEZ1bmNUaHJvd1R5cGVFcnJvcik7CisgICAgSlNGdW5jdGlvbiog
dGhyb3dlciA9IEpTRnVuY3Rpb246OmNyZWF0ZShleGVjLCB0aGlzLCAwLCBTdHJpbmcoKSwgZ2xv
YmFsRnVuY1Rocm93VHlwZUVycm9yKTsKICAgICBHZXR0ZXJTZXR0ZXIqIGdldHRlclNldHRlciA9
IEdldHRlclNldHRlcjo6Y3JlYXRlKGV4ZWMpOwogICAgIGdldHRlclNldHRlci0+c2V0R2V0dGVy
KGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhyb3dlcik7CiAgICAgZ2V0dGVyU2V0dGVyLT5zZXRTZXR0
ZXIoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aHJvd2VyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmNwcAppbmRleCBi
Yzg5NzJjMmU0YzRkY2RjYzE2MTBiYTViZGJiODU2ZDkxNjY3MDFiLi40NTg4ZWMyZDkxZmQ4OTlm
NTg1YzI3OTgyOTczOTFmYmYzMjRhNjFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuY3BwCkBAIC01Myw3ICs1
Myw3IEBAIHN0YXRpYyBKU1ZhbHVlIGVuY29kZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IGNoYXIq
IGRvTm90RXNjYXBlKQogewogICAgIENTdHJpbmcgY3N0ciA9IGV4ZWMtPmFyZ3VtZW50KDApLnRv
U3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKS51dGY4KHRydWUpOwogICAgIGlmICghY3N0ci5kYXRh
KCkpCi0gICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGV4ZWMsIGNyZWF0ZVVSSUVycm9yKGV4ZWMs
ICJTdHJpbmcgY29udGFpbmVkIGFuIGlsbGVnYWwgVVRGLTE2IHNlcXVlbmNlLiIpKTsKKyAgICAg
ICAgcmV0dXJuIHRocm93RXJyb3IoZXhlYywgY3JlYXRlVVJJRXJyb3IoZXhlYywgQVNDSUlMaXRl
cmFsKCJTdHJpbmcgY29udGFpbmVkIGFuIGlsbGVnYWwgVVRGLTE2IHNlcXVlbmNlLiIpKSk7CiAK
ICAgICBKU1N0cmluZ0J1aWxkZXIgYnVpbGRlcjsKICAgICBjb25zdCBjaGFyKiBwID0gY3N0ci5k
YXRhKCk7CkBAIC0xMTQsNyArMTE0LDcgQEAgc3RhdGljIEpTVmFsdWUgZGVjb2RlKEV4ZWNTdGF0
ZSogZXhlYywgY29uc3QgQ2hhclR5cGUqIGNoYXJhY3RlcnMsIGludCBsZW5ndGgsIGMKICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgIGlmIChjaGFyTGVuID09IDApIHsKICAgICAgICAgICAgICAg
ICBpZiAoc3RyaWN0KQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihleGVj
LCBjcmVhdGVVUklFcnJvcihleGVjLCAiVVJJIGVycm9yIikpOworICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gdGhyb3dFcnJvcihleGVjLCBjcmVhdGVVUklFcnJvcihleGVjLCBBU0NJSUxpdGVy
YWwoIlVSSSBlcnJvciIpKSk7CiAgICAgICAgICAgICAgICAgLy8gVGhlIG9ubHkgY2FzZSB3aGVy
ZSB3ZSBkb24ndCB1c2UgInN0cmljdCIgbW9kZSBpcyB0aGUgInVuZXNjYXBlIiBmdW5jdGlvbi4K
ICAgICAgICAgICAgICAgICAvLyBGb3IgdGhhdCwgaXQncyBnb29kIHRvIHN1cHBvcnQgdGhlIHdv
bmt5ICIldSIgc3ludGF4IGZvciBjb21wYXRpYmlsaXR5IHdpdGggV2luSUUuCiAgICAgICAgICAg
ICAgICAgaWYgKGsgPD0gbGVuZ3RoIC0gNiAmJiBwWzFdID09ICd1JwpAQCAtNDk5LDcgKzQ5OSw3
IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2xvYmFsRnVuY0V2YWwoRXhlY1N0YXRl
KiBleGVjKQogICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0gZXhlYy0+aG9zdFRoaXNWYWx1ZSgp
LnRvVGhpc09iamVjdChleGVjKTsKICAgICBKU09iamVjdCogdW53cmFwcGVkT2JqZWN0ID0gdGhp
c09iamVjdC0+dW53cmFwcGVkT2JqZWN0KCk7CiAgICAgaWYgKCF1bndyYXBwZWRPYmplY3QtPmlz
R2xvYmFsT2JqZWN0KCkgfHwganNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4odW53cmFwcGVkT2JqZWN0
KS0+ZXZhbEZ1bmN0aW9uKCkgIT0gZXhlYy0+Y2FsbGVlKCkpCi0gICAgICAgIHJldHVybiB0aHJv
d1ZNRXJyb3IoZXhlYywgY3JlYXRlRXZhbEVycm9yKGV4ZWMsICJUaGUgXCJ0aGlzXCIgdmFsdWUg
cGFzc2VkIHRvIGV2YWwgbXVzdCBiZSB0aGUgZ2xvYmFsIG9iamVjdCBmcm9tIHdoaWNoIGV2YWwg
b3JpZ2luYXRlZCIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVF
dmFsRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJUaGUgXCJ0aGlzXCIgdmFsdWUgcGFzc2VkIHRv
IGV2YWwgbXVzdCBiZSB0aGUgZ2xvYmFsIG9iamVjdCBmcm9tIHdoaWNoIGV2YWwgb3JpZ2luYXRl
ZCIpKSk7CiAKICAgICBKU1ZhbHVlIHggPSBleGVjLT5hcmd1bWVudCgwKTsKICAgICBpZiAoIXgu
aXNTdHJpbmcoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
T05PYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPTk9iamVjdC5j
cHAKaW5kZXggMTUzNWMxZDEyMGI3ZWE3ZjUwZDM1NzJmOGM4N2I2NDRmNzY4NTJjNy4uOTc1ZDRm
YmM2M2NmY2M4ZDdmNDQxYzdjMDc1YzhlMTQyYzQ4Yzg0ZCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPTk9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNPTk9iamVjdC5jcHAKQEAgLTM2MSw3ICszNjEsNyBAQCBTdHJpbmdp
Zmllcjo6U3RyaW5naWZ5UmVzdWx0IFN0cmluZ2lmaWVyOjphcHBlbmRTdHJpbmdpZmllZFZhbHVl
KFN0cmluZ0J1aWxkZXImCiAgICAgICAgIHJldHVybiBTdHJpbmdpZnlGYWlsZWREdWVUb1VuZGVm
aW5lZFZhbHVlOwogCiAgICAgaWYgKHZhbHVlLmlzTnVsbCgpKSB7Ci0gICAgICAgIGJ1aWxkZXIu
YXBwZW5kKCJudWxsIik7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgibnVsbCIpOwog
ICAgICAgICByZXR1cm4gU3RyaW5naWZ5U3VjY2VlZGVkOwogICAgIH0KIApAQCAtMzcxLDcgKzM3
MSwxMCBAQCBTdHJpbmdpZmllcjo6U3RyaW5naWZ5UmVzdWx0IFN0cmluZ2lmaWVyOjphcHBlbmRT
dHJpbmdpZmllZFZhbHVlKFN0cmluZ0J1aWxkZXImCiAgICAgICAgIHJldHVybiBTdHJpbmdpZnlG
YWlsZWQ7CiAKICAgICBpZiAodmFsdWUuaXNCb29sZWFuKCkpIHsKLSAgICAgICAgYnVpbGRlci5h
cHBlbmQodmFsdWUuaXNUcnVlKCkgPyAidHJ1ZSIgOiAiZmFsc2UiKTsKKyAgICAgICAgaWYgKHZh
bHVlLmlzVHJ1ZSgpKQorICAgICAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCJ0cnVlIik7
CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiZmFsc2Ui
KTsKICAgICAgICAgcmV0dXJuIFN0cmluZ2lmeVN1Y2NlZWRlZDsKICAgICB9CiAKQEAgLTM4NCw3
ICszODcsNyBAQCBTdHJpbmdpZmllcjo6U3RyaW5naWZ5UmVzdWx0IFN0cmluZ2lmaWVyOjphcHBl
bmRTdHJpbmdpZmllZFZhbHVlKFN0cmluZ0J1aWxkZXImCiAgICAgaWYgKHZhbHVlLmlzTnVtYmVy
KCkpIHsKICAgICAgICAgZG91YmxlIG51bWJlciA9IHZhbHVlLmFzTnVtYmVyKCk7CiAgICAgICAg
IGlmICghaXNmaW5pdGUobnVtYmVyKSkKLSAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCJudWxs
Iik7CisgICAgICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIm51bGwiKTsKICAgICAgICAg
ZWxzZQogICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoU3RyaW5nOjpudW1iZXJUb1N0cmluZ0VD
TUFTY3JpcHQobnVtYmVyKSk7CiAgICAgICAgIHJldHVybiBTdHJpbmdpZnlTdWNjZWVkZWQ7CkBA
IC0zOTgsNyArNDAxLDcgQEAgU3RyaW5naWZpZXI6OlN0cmluZ2lmeVJlc3VsdCBTdHJpbmdpZmll
cjo6YXBwZW5kU3RyaW5naWZpZWRWYWx1ZShTdHJpbmdCdWlsZGVyJgogICAgIENhbGxEYXRhIGNh
bGxEYXRhOwogICAgIGlmIChvYmplY3QtPm1ldGhvZFRhYmxlKCktPmdldENhbGxEYXRhKG9iamVj
dCwgY2FsbERhdGEpICE9IENhbGxUeXBlTm9uZSkgewogICAgICAgICBpZiAoaG9sZGVyLT5pbmhl
cml0cygmSlNBcnJheTo6c19pbmZvKSkgewotICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoIm51
bGwiKTsKKyAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgibnVsbCIpOwogICAgICAg
ICAgICAgcmV0dXJuIFN0cmluZ2lmeVN1Y2NlZWRlZDsKICAgICAgICAgfQogICAgICAgICByZXR1
cm4gU3RyaW5naWZ5RmFpbGVkRHVlVG9VbmRlZmluZWRWYWx1ZTsKQEAgLTQwNyw3ICs0MTAsNyBA
QCBTdHJpbmdpZmllcjo6U3RyaW5naWZ5UmVzdWx0IFN0cmluZ2lmaWVyOjphcHBlbmRTdHJpbmdp
ZmllZFZhbHVlKFN0cmluZ0J1aWxkZXImCiAgICAgLy8gSGFuZGxlIGN5Y2xlIGRldGVjdGlvbiwg
YW5kIHB1dCB0aGUgaG9sZGVyIG9uIHRoZSBzdGFjay4KICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgbV9ob2xkZXJTdGFjay5zaXplKCk7IGkrKykgewogICAgICAgICBpZiAobV9ob2xkZXJT
dGFja1tpXS5vYmplY3QoKSA9PSBvYmplY3QpIHsKLSAgICAgICAgICAgIHRocm93RXJyb3IobV9l
eGVjLCBjcmVhdGVUeXBlRXJyb3IobV9leGVjLCAiSlNPTi5zdHJpbmdpZnkgY2Fubm90IHNlcmlh
bGl6ZSBjeWNsaWMgc3RydWN0dXJlcy4iKSk7CisgICAgICAgICAgICB0aHJvd0Vycm9yKG1fZXhl
YywgY3JlYXRlVHlwZUVycm9yKG1fZXhlYywgQVNDSUlMaXRlcmFsKCJKU09OLnN0cmluZ2lmeSBj
YW5ub3Qgc2VyaWFsaXplIGN5Y2xpYyBzdHJ1Y3R1cmVzLiIpKSk7CiAgICAgICAgICAgICByZXR1
cm4gU3RyaW5naWZ5RmFpbGVkOwogICAgICAgICB9CiAgICAgfQpAQCAtNTY5LDcgKzU3Miw3IEBA
IGJvb2wgU3RyaW5naWZpZXI6OkhvbGRlcjo6YXBwZW5kTmV4dFByb3BlcnR5KFN0cmluZ2lmaWVy
JiBzdHJpbmdpZmllciwgU3RyaW5nQnVpCiAKICAgICBzd2l0Y2ggKHN0cmluZ2lmeVJlc3VsdCkg
ewogICAgICAgICBjYXNlIFN0cmluZ2lmeUZhaWxlZDoKLSAgICAgICAgICAgIGJ1aWxkZXIuYXBw
ZW5kKCJudWxsIik7CisgICAgICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIm51bGwiKTsK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFN0cmluZ2lmeVN1Y2NlZWRlZDoKICAg
ICAgICAgICAgIGJyZWFrOwpAQCAtODA5LDcgKzgxMiw3IEBAIE5FVkVSX0lOTElORSBKU1ZhbHVl
IFdhbGtlcjo6d2FsayhKU1ZhbHVlIHVuZmlsdGVyZWQpCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIEpTT05Qcm90b0Z1bmNQYXJzZShFeGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAgaWYgKCFl
eGVjLT5hcmd1bWVudENvdW50KCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywg
Y3JlYXRlRXJyb3IoZXhlYywgIkpTT04ucGFyc2UgcmVxdWlyZXMgYXQgbGVhc3Qgb25lIHBhcmFt
ZXRlciIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVFcnJvcihl
eGVjLCBBU0NJSUxpdGVyYWwoIkpTT04ucGFyc2UgcmVxdWlyZXMgYXQgbGVhc3Qgb25lIHBhcmFt
ZXRlciIpKSk7CiAgICAgU3RyaW5nIHNvdXJjZSA9IGV4ZWMtPmFyZ3VtZW50KDApLnRvU3RyaW5n
KGV4ZWMpLT52YWx1ZShleGVjKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdWxsKCkpOwpAQCAtODQzLDcgKzg0Niw3IEBA
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSlNPTlByb3RvRnVuY1BhcnNlKEV4ZWNTdGF0
ZSogZXhlYykKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSlNPTlByb3RvRnVuY1N0cmlu
Z2lmeShFeGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAgaWYgKCFleGVjLT5hcmd1bWVudENvdW50KCkp
Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlRXJyb3IoZXhlYywgIk5v
IGlucHV0IHRvIHN0cmluZ2lmeSIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVj
LCBjcmVhdGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIk5vIGlucHV0IHRvIHN0cmluZ2lmeSIp
KSk7CiAgICAgTG9jYWxTY29wZSBzY29wZShleGVjLT5nbG9iYWxEYXRhKCkpOwogICAgIExvY2Fs
PFVua25vd24+IHZhbHVlKGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+YXJndW1lbnQoMCkpOwog
ICAgIExvY2FsPFVua25vd24+IHJlcGxhY2VyKGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+YXJn
dW1lbnQoMSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNP
YmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCmlu
ZGV4IDMyNzViMjIyYjVjZWZmYjgwMDNhMDhjMjdlNzk5MmQwYWYyNTMwMTMuLjgxMmJhM2JjODM0
YzZkOGJmMmJhNzg4ZGRjYTBjYzAzZjU3MTcxN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU09iamVjdC5jcHAKQEAgLTE4Miw3ICsxODIsNyBAQCB2b2lkIEpTT2JqZWN0Ojpw
dXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5h
bWUsIEpTVgogICAgICAgICAgICAgcHJvdG90eXBlID0gb2JqLT5wcm90b3R5cGUoKTsKICAgICAg
ICAgICAgIGlmIChwcm90b3R5cGUuaXNOdWxsKCkpIHsKICAgICAgICAgICAgICAgICBpZiAoIXRo
aXNPYmplY3QtPnB1dERpcmVjdEludGVybmFsPFB1dE1vZGVQdXQ+KGdsb2JhbERhdGEsIHByb3Bl
cnR5TmFtZSwgdmFsdWUsIDAsIHNsb3QsIGdldENhbGxhYmxlT2JqZWN0KHZhbHVlKSkgJiYgc2xv
dC5pc1N0cmljdE1vZGUoKSkKLSAgICAgICAgICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhl
YywgU3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKTsKKyAgICAgICAgICAgICAg
ICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKFN0cmljdE1vZGVSZWFkb25s
eVByb3BlcnR5V3JpdGVFcnJvcikpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
ICAgIH0KICAgICAgICAgfQpAQCAtMTk1LDcgKzE5NSw3IEBAIHZvaWQgSlNPYmplY3Q6OnB1dChK
U0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwg
SlNWCiAgICAgICAgIGlmIChvZmZzZXQgIT0gaW52YWxpZE9mZnNldCkgewogICAgICAgICAgICAg
aWYgKGF0dHJpYnV0ZXMgJiBSZWFkT25seSkgewogICAgICAgICAgICAgICAgIGlmIChzbG90Lmlz
U3RyaWN0TW9kZSgpKQotICAgICAgICAgICAgICAgICAgICB0aHJvd0Vycm9yKGV4ZWMsIGNyZWF0
ZVR5cGVFcnJvcihleGVjLCBTdHJpY3RNb2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpKTsK
KyAgICAgICAgICAgICAgICAgICAgdGhyb3dFcnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhl
YywgQVNDSUlMaXRlcmFsKFN0cmljdE1vZGVSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcikpKTsK
ICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAKQEAgLTIwNCw3ICsyMDQs
NyBAQCB2b2lkIEpTT2JqZWN0OjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFBy
b3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVgogICAgICAgICAgICAgICAgIEpTT2JqZWN0KiBz
ZXR0ZXJGdW5jID0gYXNHZXR0ZXJTZXR0ZXIoZ3MpLT5zZXR0ZXIoKTsgICAgICAgIAogICAgICAg
ICAgICAgICAgIGlmICghc2V0dGVyRnVuYykgewogICAgICAgICAgICAgICAgICAgICBpZiAoc2xv
dC5pc1N0cmljdE1vZGUoKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHRocm93RXJyb3IoZXhl
YywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsICJzZXR0aW5nIGEgcHJvcGVydHkgdGhhdCBoYXMgb25s
eSBhIGdldHRlciIpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRocm93RXJyb3IoZXhlYywg
Y3JlYXRlVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgic2V0dGluZyBhIHByb3BlcnR5IHRo
YXQgaGFzIG9ubHkgYSBnZXR0ZXIiKSkpOwogICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIApAQCAtMjI5LDcgKzIyOSw3IEBAIHZv
aWQgSlNPYmplY3Q6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlO
YW1lIHByb3BlcnR5TmFtZSwgSlNWCiAgICAgfQogICAgIAogICAgIGlmICghdGhpc09iamVjdC0+
cHV0RGlyZWN0SW50ZXJuYWw8UHV0TW9kZVB1dD4oZ2xvYmFsRGF0YSwgcHJvcGVydHlOYW1lLCB2
YWx1ZSwgMCwgc2xvdCwgZ2V0Q2FsbGFibGVPYmplY3QodmFsdWUpKSAmJiBzbG90LmlzU3RyaWN0
TW9kZSgpKQotICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBTdHJpY3RNb2RlUmVhZG9ubHlQ
cm9wZXJ0eVdyaXRlRXJyb3IpOworICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxp
dGVyYWwoU3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKSk7CiAgICAgcmV0dXJu
OwogfQogCkBAIC0zODksNyArMzg5LDcgQEAgSlNWYWx1ZSBKU09iamVjdDo6ZGVmYXVsdFZhbHVl
KGNvbnN0IEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJlZmVycmUKIAogICAg
IEFTU0VSVCghZXhlYy0+aGFkRXhjZXB0aW9uKCkpOwogCi0gICAgcmV0dXJuIHRocm93RXJyb3Io
ZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsICJObyBkZWZhdWx0IHZhbHVlIikpOworICAgIHJl
dHVybiB0aHJvd0Vycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwo
Ik5vIGRlZmF1bHQgdmFsdWUiKSkpOwogfQogCiBjb25zdCBIYXNoRW50cnkqIEpTT2JqZWN0Ojpm
aW5kUHJvcGVydHlIYXNoRW50cnkoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVy
dHlOYW1lKSBjb25zdApAQCAtNDA5LDcgKzQwOSw3IEBAIGJvb2wgSlNPYmplY3Q6Omhhc0luc3Rh
bmNlKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVlLCBKU1ZhbHVlIHBy
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmICghcHJvdG8uaXNPYmplY3QoKSkgewot
ICAgICAgICB0aHJvd0Vycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCAiaW5zdGFuY2Vv
ZiBjYWxsZWQgb24gYW4gb2JqZWN0IHdpdGggYW4gaW52YWxpZCBwcm90b3R5cGUgcHJvcGVydHku
IikpOworICAgICAgICB0aHJvd0Vycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCBBU0NJ
SUxpdGVyYWwoImluc3RhbmNlb2YgY2FsbGVkIG9uIGFuIG9iamVjdCB3aXRoIGFuIGludmFsaWQg
cHJvdG90eXBlIHByb3BlcnR5LiIpKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAK
QEAgLTcxOCw3ICs3MTgsNyBAQCBib29sIEpTT2JqZWN0OjpkZWZpbmVPd25Qcm9wZXJ0eShKU09i
amVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZQogICAgICAgICAvLyB1
bmxlc3MgZXh0ZW5zaW9ucyBhcmUgcHJldmVudGVkIQogICAgICAgICBpZiAoIW9iamVjdC0+aXNF
eHRlbnNpYmxlKCkpIHsKICAgICAgICAgICAgIGlmICh0aHJvd0V4Y2VwdGlvbikKLSAgICAgICAg
ICAgICAgICB0aHJvd0Vycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCAiQXR0ZW1wdGlu
ZyB0byBkZWZpbmUgcHJvcGVydHkgb24gb2JqZWN0IHRoYXQgaXMgbm90IGV4dGVuc2libGUuIikp
OworICAgICAgICAgICAgICAgIHRocm93RXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMs
IEFTQ0lJTGl0ZXJhbCgiQXR0ZW1wdGluZyB0byBkZWZpbmUgcHJvcGVydHkgb24gb2JqZWN0IHRo
YXQgaXMgbm90IGV4dGVuc2libGUuIikpKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICAgICAgfQogICAgICAgICBQcm9wZXJ0eURlc2NyaXB0b3Igb2xkRGVzY3JpcHRvcjsKQEAgLTcz
NiwxMiArNzM2LDEyIEBAIGJvb2wgSlNPYmplY3Q6OmRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0
KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lCiAgICAgaWYgKCFjdXJyZW50
LmNvbmZpZ3VyYWJsZSgpKSB7CiAgICAgICAgIGlmIChkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSgp
KSB7CiAgICAgICAgICAgICBpZiAodGhyb3dFeGNlcHRpb24pCi0gICAgICAgICAgICAgICAgdGhy
b3dFcnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgIkF0dGVtcHRpbmcgdG8gY29uZmln
dXJhYmxlIGF0dHJpYnV0ZSBvZiB1bmNvbmZpZ3VyYWJsZSBwcm9wZXJ0eS4iKSk7CisgICAgICAg
ICAgICAgICAgdGhyb3dFcnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRl
cmFsKCJBdHRlbXB0aW5nIHRvIGNvbmZpZ3VyYWJsZSBhdHRyaWJ1dGUgb2YgdW5jb25maWd1cmFi
bGUgcHJvcGVydHkuIikpKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQog
ICAgICAgICBpZiAoZGVzY3JpcHRvci5lbnVtZXJhYmxlUHJlc2VudCgpICYmIGRlc2NyaXB0b3Iu
ZW51bWVyYWJsZSgpICE9IGN1cnJlbnQuZW51bWVyYWJsZSgpKSB7CiAgICAgICAgICAgICBpZiAo
dGhyb3dFeGNlcHRpb24pCi0gICAgICAgICAgICAgICAgdGhyb3dFcnJvcihleGVjLCBjcmVhdGVU
eXBlRXJyb3IoZXhlYywgIkF0dGVtcHRpbmcgdG8gY2hhbmdlIGVudW1lcmFibGUgYXR0cmlidXRl
IG9mIHVuY29uZmlndXJhYmxlIHByb3BlcnR5LiIpKTsKKyAgICAgICAgICAgICAgICB0aHJvd0Vy
cm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkF0dGVtcHRpbmcg
dG8gY2hhbmdlIGVudW1lcmFibGUgYXR0cmlidXRlIG9mIHVuY29uZmlndXJhYmxlIHByb3BlcnR5
LiIpKSk7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICB9CkBAIC03
NTksNyArNzU5LDcgQEAgYm9vbCBKU09iamVjdDo6ZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3Qq
IG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUKICAgICBpZiAoZGVzY3JpcHRv
ci5pc0RhdGFEZXNjcmlwdG9yKCkgIT0gY3VycmVudC5pc0RhdGFEZXNjcmlwdG9yKCkpIHsKICAg
ICAgICAgaWYgKCFjdXJyZW50LmNvbmZpZ3VyYWJsZSgpKSB7CiAgICAgICAgICAgICBpZiAodGhy
b3dFeGNlcHRpb24pCi0gICAgICAgICAgICAgICAgdGhyb3dFcnJvcihleGVjLCBjcmVhdGVUeXBl
RXJyb3IoZXhlYywgIkF0dGVtcHRpbmcgdG8gY2hhbmdlIGFjY2VzcyBtZWNoYW5pc20gZm9yIGFu
IHVuY29uZmlndXJhYmxlIHByb3BlcnR5LiIpKTsKKyAgICAgICAgICAgICAgICB0aHJvd0Vycm9y
KGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkF0dGVtcHRpbmcgdG8g
Y2hhbmdlIGFjY2VzcyBtZWNoYW5pc20gZm9yIGFuIHVuY29uZmlndXJhYmxlIHByb3BlcnR5LiIp
KSk7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICAgICAgb2JqZWN0
LT5tZXRob2RUYWJsZSgpLT5kZWxldGVQcm9wZXJ0eShvYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFt
ZSk7CkBAIC03NzEsMTMgKzc3MSwxMyBAQCBib29sIEpTT2JqZWN0OjpkZWZpbmVPd25Qcm9wZXJ0
eShKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZQogICAgICAg
ICBpZiAoIWN1cnJlbnQuY29uZmlndXJhYmxlKCkpIHsKICAgICAgICAgICAgIGlmICghY3VycmVu
dC53cml0YWJsZSgpICYmIGRlc2NyaXB0b3Iud3JpdGFibGUoKSkgewogICAgICAgICAgICAgICAg
IGlmICh0aHJvd0V4Y2VwdGlvbikKLSAgICAgICAgICAgICAgICAgICAgdGhyb3dFcnJvcihleGVj
LCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgIkF0dGVtcHRpbmcgdG8gY2hhbmdlIHdyaXRhYmxlIGF0
dHJpYnV0ZSBvZiB1bmNvbmZpZ3VyYWJsZSBwcm9wZXJ0eS4iKSk7CisgICAgICAgICAgICAgICAg
ICAgIHRocm93RXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgi
QXR0ZW1wdGluZyB0byBjaGFuZ2Ugd3JpdGFibGUgYXR0cmlidXRlIG9mIHVuY29uZmlndXJhYmxl
IHByb3BlcnR5LiIpKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAg
ICAgfQogICAgICAgICAgICAgaWYgKCFjdXJyZW50LndyaXRhYmxlKCkpIHsKICAgICAgICAgICAg
ICAgICBpZiAoZGVzY3JpcHRvci52YWx1ZSgpICYmICFzYW1lVmFsdWUoZXhlYywgY3VycmVudC52
YWx1ZSgpLCBkZXNjcmlwdG9yLnZhbHVlKCkpKSB7CiAgICAgICAgICAgICAgICAgICAgIGlmICh0
aHJvd0V4Y2VwdGlvbikKLSAgICAgICAgICAgICAgICAgICAgICAgIHRocm93RXJyb3IoZXhlYywg
Y3JlYXRlVHlwZUVycm9yKGV4ZWMsICJBdHRlbXB0aW5nIHRvIGNoYW5nZSB2YWx1ZSBvZiBhIHJl
YWRvbmx5IHByb3BlcnR5LiIpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRocm93RXJyb3Io
ZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiQXR0ZW1wdGluZyB0byBj
aGFuZ2UgdmFsdWUgb2YgYSByZWFkb25seSBwcm9wZXJ0eS4iKSkpOwogICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQpAQCAt
NzkzLDEyICs3OTMsMTIgQEAgYm9vbCBKU09iamVjdDo6ZGVmaW5lT3duUHJvcGVydHkoSlNPYmpl
Y3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUKICAgICBpZiAoIWN1cnJl
bnQuY29uZmlndXJhYmxlKCkpIHsKICAgICAgICAgaWYgKGRlc2NyaXB0b3Iuc2V0dGVyUHJlc2Vu
dCgpICYmICEoY3VycmVudC5zZXR0ZXJQcmVzZW50KCkgJiYgSlNWYWx1ZTo6c3RyaWN0RXF1YWwo
ZXhlYywgY3VycmVudC5zZXR0ZXIoKSwgZGVzY3JpcHRvci5zZXR0ZXIoKSkpKSB7CiAgICAgICAg
ICAgICBpZiAodGhyb3dFeGNlcHRpb24pCi0gICAgICAgICAgICAgICAgdGhyb3dFcnJvcihleGVj
LCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgIkF0dGVtcHRpbmcgdG8gY2hhbmdlIHRoZSBzZXR0ZXIg
b2YgYW4gdW5jb25maWd1cmFibGUgcHJvcGVydHkuIikpOworICAgICAgICAgICAgICAgIHRocm93
RXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiQXR0ZW1wdGlu
ZyB0byBjaGFuZ2UgdGhlIHNldHRlciBvZiBhbiB1bmNvbmZpZ3VyYWJsZSBwcm9wZXJ0eS4iKSkp
OwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAgICAgIGlmIChkZXNj
cmlwdG9yLmdldHRlclByZXNlbnQoKSAmJiAhKGN1cnJlbnQuZ2V0dGVyUHJlc2VudCgpICYmIEpT
VmFsdWU6OnN0cmljdEVxdWFsKGV4ZWMsIGN1cnJlbnQuZ2V0dGVyKCksIGRlc2NyaXB0b3IuZ2V0
dGVyKCkpKSkgewogICAgICAgICAgICAgaWYgKHRocm93RXhjZXB0aW9uKQotICAgICAgICAgICAg
ICAgIHRocm93RXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsICJBdHRlbXB0aW5nIHRv
IGNoYW5nZSB0aGUgZ2V0dGVyIG9mIGFuIHVuY29uZmlndXJhYmxlIHByb3BlcnR5LiIpKTsKKyAg
ICAgICAgICAgICAgICB0aHJvd0Vycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCBBU0NJ
SUxpdGVyYWwoIkF0dGVtcHRpbmcgdG8gY2hhbmdlIHRoZSBnZXR0ZXIgb2YgYW4gdW5jb25maWd1
cmFibGUgcHJvcGVydHkuIikpKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAg
fQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3Ry
aW5nLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmNwcAppbmRl
eCA5NzdmMGQxMDAzYzg1YTk4NjEzYzJiODhmNGQzZTUwY2Q4ZWJmYjIzLi40MjZjMDI2MzQ2MzYw
ZTk1MDhlMWU1NTk5N2ZmMmI0MWFjNmM1MWNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU1N0cmluZy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNTdHJpbmcuY3BwCkBAIC0yMjUsNyArMjI1LDcgQEAgSlNTdHJpbmcqIEpTUm9wZVN0
cmluZzo6Z2V0SW5kZXhTbG93Q2FzZShFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIGkpCiAgICAg
cmVzb2x2ZVJvcGUoZXhlYyk7CiAgICAgLy8gUmV0dXJuIGEgc2FmZSBuby12YWx1ZSByZXN1bHQs
IHRoaXMgc2hvdWxkIG5ldmVyIGJlIHVzZWQsIHNpbmNlIHRoZSBleGNldGlvbiB3aWxsIGJlIHRo
cm93bi4KICAgICBpZiAoZXhlYy0+ZXhjZXB0aW9uKCkpCi0gICAgICAgIHJldHVybiBqc1N0cmlu
ZyhleGVjLCAiIik7CisgICAgICAgIHJldHVybiBqc0VtcHR5U3RyaW5nKGV4ZWMpOwogICAgIEFT
U0VSVCghaXNSb3BlKCkpOwogICAgIEFTU0VSVChpIDwgbV92YWx1ZS5sZW5ndGgoKSk7CiAgICAg
cmV0dXJuIGpzU2luZ2xlQ2hhcmFjdGVyU3Vic3RyaW5nKGV4ZWMsIG1fdmFsdWUsIGkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmgKaW5kZXggOWYxNzZhZDIzY2ZkMjAz
NGUyNGI1NzAwZjE0YjQwNDM2ZjFjZWU4My4uN2M0ZDY1ZmM2YTJmOWQ4NGQzNTQxZDJmMjk0ZTc1
NWIzMGE2OTU4ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNT
dHJpbmcuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5oCkBA
IC01MCw4ICs1MCw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIC8vIFRoZXNlIGZ1bmN0aW9ucyBh
cmUgZmFzdGVyIHRoYW4ganVzdCBjYWxsaW5nIGpzU3RyaW5nLgogICAgIEpTU3RyaW5nKiBqc05v
bnRyaXZpYWxTdHJpbmcoSlNHbG9iYWxEYXRhKiwgY29uc3QgU3RyaW5nJik7CiAgICAgSlNTdHJp
bmcqIGpzTm9udHJpdmlhbFN0cmluZyhFeGVjU3RhdGUqLCBjb25zdCBTdHJpbmcmKTsKLSAgICBK
U1N0cmluZyoganNOb250cml2aWFsU3RyaW5nKEpTR2xvYmFsRGF0YSosIGNvbnN0IGNoYXIqKTsK
LSAgICBKU1N0cmluZyoganNOb250cml2aWFsU3RyaW5nKEV4ZWNTdGF0ZSosIGNvbnN0IGNoYXIq
KTsKIAogICAgIC8vIFNob3VsZCBiZSB1c2VkIGZvciBzdHJpbmdzIHRoYXQgYXJlIG93bmVkIGJ5
IGFuIG9iamVjdCB0aGF0IHdpbGwKICAgICAvLyBsaWtlbHkgb3V0bGl2ZSB0aGUgSlNWYWx1ZSB0
aGlzIG1ha2VzLCBzdWNoIGFzIHRoZSBwYXJzZSB0cmVlIG9yIGEKQEAgLTM1MywxNCArMzUxLDYg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHJldHVybiBKU1N0cmluZzo6Y3JlYXRlKCpnbG9i
YWxEYXRhLCBTdHJpbmdJbXBsOjpjcmVhdGUocy5pbXBsKCksIG9mZnNldCwgMSkpOwogICAgIH0K
IAotICAgIGlubGluZSBKU1N0cmluZyoganNOb250cml2aWFsU3RyaW5nKEpTR2xvYmFsRGF0YSog
Z2xvYmFsRGF0YSwgY29uc3QgY2hhciogcykKLSAgICB7Ci0gICAgICAgIEFTU0VSVChzKTsKLSAg
ICAgICAgQVNTRVJUKHNbMF0pOwotICAgICAgICBBU1NFUlQoc1sxXSk7Ci0gICAgICAgIHJldHVy
biBKU1N0cmluZzo6Y3JlYXRlKCpnbG9iYWxEYXRhLCBTdHJpbmcocykuaW1wbCgpKTsKLSAgICB9
Ci0KICAgICBpbmxpbmUgSlNTdHJpbmcqIGpzTm9udHJpdmlhbFN0cmluZyhKU0dsb2JhbERhdGEq
IGdsb2JhbERhdGEsIGNvbnN0IFN0cmluZyYgcykKICAgICB7CiAgICAgICAgIEFTU0VSVChzLmxl
bmd0aCgpID4gMSk7CkBAIC00NjgsNyArNDU4LDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgaW5s
aW5lIEpTU3RyaW5nKiBqc1N1YnN0cmluZzgoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBTdHJpbmcm
IHMsIHVuc2lnbmVkIG9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKSB7IHJldHVybiBqc1N1YnN0cmlu
ZzgoJmV4ZWMtPmdsb2JhbERhdGEoKSwgcywgb2Zmc2V0LCBsZW5ndGgpOyB9CiAgICAgaW5saW5l
IEpTU3RyaW5nKiBqc1N1YnN0cmluZyhFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFN0cmluZyYgcywg
dW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpIHsgcmV0dXJuIGpzU3Vic3RyaW5nKCZl
eGVjLT5nbG9iYWxEYXRhKCksIHMsIG9mZnNldCwgbGVuZ3RoKTsgfQogICAgIGlubGluZSBKU1N0
cmluZyoganNOb250cml2aWFsU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU3RyaW5nJiBz
KSB7IHJldHVybiBqc05vbnRyaXZpYWxTdHJpbmcoJmV4ZWMtPmdsb2JhbERhdGEoKSwgcyk7IH0K
LSAgICBpbmxpbmUgSlNTdHJpbmcqIGpzTm9udHJpdmlhbFN0cmluZyhFeGVjU3RhdGUqIGV4ZWMs
IGNvbnN0IGNoYXIqIHMpIHsgcmV0dXJuIGpzTm9udHJpdmlhbFN0cmluZygmZXhlYy0+Z2xvYmFs
RGF0YSgpLCBzKTsgfQogICAgIGlubGluZSBKU1N0cmluZyoganNPd25lZFN0cmluZyhFeGVjU3Rh
dGUqIGV4ZWMsIGNvbnN0IFN0cmluZyYgcykgeyByZXR1cm4ganNPd25lZFN0cmluZygmZXhlYy0+
Z2xvYmFsRGF0YSgpLCBzKTsgfQogCiAgICAgQUxXQVlTX0lOTElORSBib29sIEpTU3RyaW5nOjpn
ZXRTdHJpbmdQcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVy
dHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU1ZhbHVlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTVmFsdWUuY3BwCmluZGV4IDBiZWRhYTMzZjI2MjMwMjcyYzA3MzliNzNjMzVmYzAyZmUwZjdh
NDcuLmNhZmY5OTczYjRkNDYwNjdhZWRkMTY2YTk4Zjc5ZTI0ZjU2ZjVhYjAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFsdWUuY3BwCkBAIC0xNDMsNyArMTQzLDcgQEAgdm9p
ZCBKU1ZhbHVlOjpwdXRUb1ByaW1pdGl2ZShFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBw
cm9wZXJ0eU5hbWUsIEpTVmFsdWUKICAgICAgICAgICAgICAgICBKU09iamVjdCogc2V0dGVyRnVu
YyA9IGFzR2V0dGVyU2V0dGVyKGdzKS0+c2V0dGVyKCk7ICAgICAgICAKICAgICAgICAgICAgICAg
ICBpZiAoIXNldHRlckZ1bmMpIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKHNsb3QuaXNTdHJp
Y3RNb2RlKCkpCi0gICAgICAgICAgICAgICAgICAgICAgICB0aHJvd0Vycm9yKGV4ZWMsIGNyZWF0
ZVR5cGVFcnJvcihleGVjLCAic2V0dGluZyBhIHByb3BlcnR5IHRoYXQgaGFzIG9ubHkgYSBnZXR0
ZXIiKSk7CisgICAgICAgICAgICAgICAgICAgICAgICB0aHJvd0Vycm9yKGV4ZWMsIGNyZWF0ZVR5
cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoInNldHRpbmcgYSBwcm9wZXJ0eSB0aGF0IGhhcyBv
bmx5IGEgZ2V0dGVyIikpKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0xpdGVyYWxQYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvTGl0ZXJhbFBhcnNlci5jcHAKaW5kZXggYWE2NTQxYjZhZWQ1YmYwY2VjZDhlNWY2Mzk5
NDc5Yzg2YzIyMDllMS4uMjBiMGMzMDVhYzgyZDdmYTZhMWIyMTgwOTg1ODg3NWFlYTgwOTY4MSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTGl0ZXJhbFBhcnNlci5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTGl0ZXJhbFBhcnNlci5jcHAK
QEAgLTI2OSw3ICsyNjksNyBAQCB0ZW1wbGF0ZSA8UGFyc2VyTW9kZSBtb2RlPiBUb2tlblR5cGUg
TGl0ZXJhbFBhcnNlcjxDaGFyVHlwZT46OkxleGVyOjpsZXgoTGl0ZXJhbAogICAgICAgICAgICAg
cmV0dXJuIGxleElkZW50aWZpZXIodG9rZW4pOwogICAgICAgICBpZiAoKm1fcHRyID09ICdcJycp
IHsKICAgICAgICAgICAgIGlmIChtb2RlID09IFN0cmljdEpTT04pIHsKLSAgICAgICAgICAgICAg
ICBtX2xleEVycm9yTWVzc2FnZSA9ICJTaW5nbGUgcXVvdGVzIChcJykgYXJlIG5vdCBhbGxvd2Vk
IGluIEpTT04iOworICAgICAgICAgICAgICAgIG1fbGV4RXJyb3JNZXNzYWdlID0gQVNDSUlMaXRl
cmFsKCJTaW5nbGUgcXVvdGVzIChcJykgYXJlIG5vdCBhbGxvd2VkIGluIEpTT04iKTsKICAgICAg
ICAgICAgICAgICByZXR1cm4gVG9rRXJyb3I7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBy
ZXR1cm4gbGV4U3RyaW5nPG1vZGUsICdcJyc+KHRva2VuKTsKQEAgLTM1Niw3ICszNTYsNyBAQCB0
ZW1wbGF0ZSA8UGFyc2VyTW9kZSBtb2RlLCBjaGFyIHRlcm1pbmF0b3I+IEFMV0FZU19JTkxJTkUg
VG9rZW5UeXBlIExpdGVyYWxQYXJzZQogICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKHJ1
blN0YXJ0LCBtX3B0ciAtIHJ1blN0YXJ0KTsKICAgICAgICAgICAgICsrbV9wdHI7CiAgICAgICAg
ICAgICBpZiAobV9wdHIgPj0gbV9lbmQpIHsKLSAgICAgICAgICAgICAgICBtX2xleEVycm9yTWVz
c2FnZSA9ICJVbnRlcm1pbmF0ZWQgc3RyaW5nIjsKKyAgICAgICAgICAgICAgICBtX2xleEVycm9y
TWVzc2FnZSA9IEFTQ0lJTGl0ZXJhbCgiVW50ZXJtaW5hdGVkIHN0cmluZyIpOwogICAgICAgICAg
ICAgICAgIHJldHVybiBUb2tFcnJvcjsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHN3aXRj
aCAoKm1fcHRyKSB7CkBAIC0zOTUsNyArMzk1LDcgQEAgdGVtcGxhdGUgPFBhcnNlck1vZGUgbW9k
ZSwgY2hhciB0ZXJtaW5hdG9yPiBBTFdBWVNfSU5MSU5FIFRva2VuVHlwZSBMaXRlcmFsUGFyc2UK
IAogICAgICAgICAgICAgICAgIGNhc2UgJ3UnOgogICAgICAgICAgICAgICAgICAgICBpZiAoKG1f
ZW5kIC0gbV9wdHIpIDwgNSkgeyAKLSAgICAgICAgICAgICAgICAgICAgICAgIG1fbGV4RXJyb3JN
ZXNzYWdlID0gIlxcdSBtdXN0IGJlIGZvbGxvd2VkIGJ5IDQgaGV4IGRpZ2l0cyI7CisgICAgICAg
ICAgICAgICAgICAgICAgICBtX2xleEVycm9yTWVzc2FnZSA9IEFTQ0lJTGl0ZXJhbCgiXFx1IG11
c3QgYmUgZm9sbG93ZWQgYnkgNCBoZXggZGlnaXRzIik7CiAgICAgICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gVG9rRXJyb3I7CiAgICAgICAgICAgICAgICAgICAgIH0gLy8gdU5OTk4gPT0gNSBj
aGFyYWN0ZXJzCiAgICAgICAgICAgICAgICAgICAgIGZvciAoaW50IGkgPSAxOyBpIDwgNTsgaSsr
KSB7CkBAIC00MjEsNyArNDIxLDcgQEAgdGVtcGxhdGUgPFBhcnNlck1vZGUgbW9kZSwgY2hhciB0
ZXJtaW5hdG9yPiBBTFdBWVNfSU5MSU5FIFRva2VuVHlwZSBMaXRlcmFsUGFyc2UKICAgICB9IHdo
aWxlICgobW9kZSAhPSBOb25TdHJpY3RKU09OKSAmJiBtX3B0ciAhPSBydW5TdGFydCAmJiAobV9w
dHIgPCBtX2VuZCkgJiYgKm1fcHRyICE9IHRlcm1pbmF0b3IpOwogCiAgICAgaWYgKG1fcHRyID49
IG1fZW5kIHx8ICptX3B0ciAhPSB0ZXJtaW5hdG9yKSB7Ci0gICAgICAgIG1fbGV4RXJyb3JNZXNz
YWdlID0gIlVudGVybWluYXRlZCBzdHJpbmciOworICAgICAgICBtX2xleEVycm9yTWVzc2FnZSA9
IEFTQ0lJTGl0ZXJhbCgiVW50ZXJtaW5hdGVkIHN0cmluZyIpOwogICAgICAgICByZXR1cm4gVG9r
RXJyb3I7CiAgICAgfQogCkBAIC00NzQsNyArNDc0LDcgQEAgVG9rZW5UeXBlIExpdGVyYWxQYXJz
ZXI8Q2hhclR5cGU+OjpMZXhlcjo6bGV4TnVtYmVyKExpdGVyYWxQYXJzZXJUb2tlbjxDaGFyVHlw
ZT4KICAgICAgICAgd2hpbGUgKG1fcHRyIDwgbV9lbmQgJiYgaXNBU0NJSURpZ2l0KCptX3B0cikp
CiAgICAgICAgICAgICArK21fcHRyOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIG1fbGV4RXJyb3JN
ZXNzYWdlID0gIkludmFsaWQgbnVtYmVyIjsKKyAgICAgICAgbV9sZXhFcnJvck1lc3NhZ2UgPSBB
U0NJSUxpdGVyYWwoIkludmFsaWQgbnVtYmVyIik7CiAgICAgICAgIHJldHVybiBUb2tFcnJvcjsK
ICAgICB9CiAKQEAgLTQ4Myw3ICs0ODMsNyBAQCBUb2tlblR5cGUgTGl0ZXJhbFBhcnNlcjxDaGFy
VHlwZT46OkxleGVyOjpsZXhOdW1iZXIoTGl0ZXJhbFBhcnNlclRva2VuPENoYXJUeXBlPgogICAg
ICAgICArK21fcHRyOwogICAgICAgICAvLyBbMC05XSsKICAgICAgICAgaWYgKG1fcHRyID49IG1f
ZW5kIHx8ICFpc0FTQ0lJRGlnaXQoKm1fcHRyKSkgewotICAgICAgICAgICAgbV9sZXhFcnJvck1l
c3NhZ2UgPSAiSW52YWxpZCBkaWdpdHMgYWZ0ZXIgZGVjaW1hbCBwb2ludCI7CisgICAgICAgICAg
ICBtX2xleEVycm9yTWVzc2FnZSA9IEFTQ0lJTGl0ZXJhbCgiSW52YWxpZCBkaWdpdHMgYWZ0ZXIg
ZGVjaW1hbCBwb2ludCIpOwogICAgICAgICAgICAgcmV0dXJuIFRva0Vycm9yOwogICAgICAgICB9
CiAKQEAgLTUxOCw3ICs1MTgsNyBAQCBUb2tlblR5cGUgTGl0ZXJhbFBhcnNlcjxDaGFyVHlwZT46
OkxleGVyOjpsZXhOdW1iZXIoTGl0ZXJhbFBhcnNlclRva2VuPENoYXJUeXBlPgogCiAgICAgICAg
IC8vIFswLTldKwogICAgICAgICBpZiAobV9wdHIgPj0gbV9lbmQgfHwgIWlzQVNDSUlEaWdpdCgq
bV9wdHIpKSB7Ci0gICAgICAgICAgICBtX2xleEVycm9yTWVzc2FnZSA9ICJFeHBvbmVudCBzeW1i
b2xzIHNob3VsZCBiZSBmb2xsb3dlZCBieSBhbiBvcHRpb25hbCAnKycgb3IgJy0nIGFuZCB0aGVu
IGJ5IGF0IGxlYXN0IG9uZSBudW1iZXIiOworICAgICAgICAgICAgbV9sZXhFcnJvck1lc3NhZ2Ug
PSBBU0NJSUxpdGVyYWwoIkV4cG9uZW50IHN5bWJvbHMgc2hvdWxkIGJlIGZvbGxvd2VkIGJ5IGFu
IG9wdGlvbmFsICcrJyBvciAnLScgYW5kIHRoZW4gYnkgYXQgbGVhc3Qgb25lIG51bWJlciIpOwog
ICAgICAgICAgICAgcmV0dXJuIFRva0Vycm9yOwogICAgICAgICB9CiAgICAgICAgIApAQCAtNTU1
LDcgKzU1NSw3IEBAIEpTVmFsdWUgTGl0ZXJhbFBhcnNlcjxDaGFyVHlwZT46OnBhcnNlKFBhcnNl
clN0YXRlIGluaXRpYWxTdGF0ZSkKICAgICAgICAgICAgICAgICBUb2tlblR5cGUgbGFzdFRva2Vu
ID0gbV9sZXhlci5jdXJyZW50VG9rZW4oKS50eXBlOwogICAgICAgICAgICAgICAgIGlmIChtX2xl
eGVyLm5leHQoKSA9PSBUb2tSQnJhY2tldCkgewogICAgICAgICAgICAgICAgICAgICBpZiAobGFz
dFRva2VuID09IFRva0NvbW1hKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBtX3BhcnNlRXJy
b3JNZXNzYWdlID0gIlVuZXhwZWN0ZWQgY29tbWEgYXQgdGhlIGVuZCBvZiBhcnJheSBleHByZXNz
aW9uIjsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fcGFyc2VFcnJvck1lc3NhZ2UgPSBBU0NJ
SUxpdGVyYWwoIlVuZXhwZWN0ZWQgY29tbWEgYXQgdGhlIGVuZCBvZiBhcnJheSBleHByZXNzaW9u
Iik7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOwogICAgICAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIG1fbGV4ZXIubmV4dCgpOwpAQCAtNTc0
LDcgKzU3NCw3IEBAIEpTVmFsdWUgTGl0ZXJhbFBhcnNlcjxDaGFyVHlwZT46OnBhcnNlKFBhcnNl
clN0YXRlIGluaXRpYWxTdGF0ZSkKICAgICAgICAgICAgICAgICAgICAgZ290byBkb1BhcnNlQXJy
YXlTdGFydEV4cHJlc3Npb247CiAKICAgICAgICAgICAgICAgICBpZiAobV9sZXhlci5jdXJyZW50
VG9rZW4oKS50eXBlICE9IFRva1JCcmFja2V0KSB7Ci0gICAgICAgICAgICAgICAgICAgIG1fcGFy
c2VFcnJvck1lc3NhZ2UgPSAiRXhwZWN0ZWQgJ10nIjsKKyAgICAgICAgICAgICAgICAgICAgbV9w
YXJzZUVycm9yTWVzc2FnZSA9IEFTQ0lJTGl0ZXJhbCgiRXhwZWN0ZWQgJ10nIik7CiAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7CiAgICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgICAgIApAQCAtNTk0LDcgKzU5NCw3IEBAIEpTVmFsdWUgTGl0ZXJhbFBhcnNlcjxDaGFy
VHlwZT46OnBhcnNlKFBhcnNlclN0YXRlIGluaXRpYWxTdGF0ZSkKIAogICAgICAgICAgICAgICAg
ICAgICAvLyBDaGVjayBmb3IgY29sb24KICAgICAgICAgICAgICAgICAgICAgaWYgKG1fbGV4ZXIu
bmV4dCgpICE9IFRva0NvbG9uKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBtX3BhcnNlRXJy
b3JNZXNzYWdlID0gIkV4cGVjdGVkICc6JyBiZWZvcmUgdmFsdWUgaW4gb2JqZWN0IHByb3BlcnR5
IGRlZmluaXRpb24iOworICAgICAgICAgICAgICAgICAgICAgICAgbV9wYXJzZUVycm9yTWVzc2Fn
ZSA9IEFTQ0lJTGl0ZXJhbCgiRXhwZWN0ZWQgJzonIGJlZm9yZSB2YWx1ZSBpbiBvYmplY3QgcHJv
cGVydHkgZGVmaW5pdGlvbiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFs
dWUoKTsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAKQEAgLTYw
Nyw3ICs2MDcsNyBAQCBKU1ZhbHVlIExpdGVyYWxQYXJzZXI8Q2hhclR5cGU+OjpwYXJzZShQYXJz
ZXJTdGF0ZSBpbml0aWFsU3RhdGUpCiAgICAgICAgICAgICAgICAgICAgIGdvdG8gc3RhcnRQYXJz
ZUV4cHJlc3Npb247CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGlmICh0eXBl
ICE9IFRva1JCcmFjZSkgIHsKLSAgICAgICAgICAgICAgICAgICAgbV9wYXJzZUVycm9yTWVzc2Fn
ZSA9ICJFeHBlY3RlZCAnfSciOworICAgICAgICAgICAgICAgICAgICBtX3BhcnNlRXJyb3JNZXNz
YWdlID0gQVNDSUlMaXRlcmFsKCJFeHBlY3RlZCAnfSciKTsKICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIEpTVmFsdWUoKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgbV9s
ZXhlci5uZXh0KCk7CkBAIC02MTksMTQgKzYxOSwxNCBAQCBKU1ZhbHVlIExpdGVyYWxQYXJzZXI8
Q2hhclR5cGU+OjpwYXJzZShQYXJzZXJTdGF0ZSBpbml0aWFsU3RhdGUpCiAgICAgICAgICAgICBj
YXNlIERvUGFyc2VPYmplY3RTdGFydEV4cHJlc3Npb246IHsKICAgICAgICAgICAgICAgICBUb2tl
blR5cGUgdHlwZSA9IG1fbGV4ZXIubmV4dCgpOwogICAgICAgICAgICAgICAgIGlmICh0eXBlICE9
IFRva1N0cmluZyAmJiAobV9tb2RlID09IFN0cmljdEpTT04gfHwgdHlwZSAhPSBUb2tJZGVudGlm
aWVyKSkgewotICAgICAgICAgICAgICAgICAgICBtX3BhcnNlRXJyb3JNZXNzYWdlID0gIlByb3Bl
cnR5IG5hbWUgbXVzdCBiZSBhIHN0cmluZyBsaXRlcmFsIjsKKyAgICAgICAgICAgICAgICAgICAg
bV9wYXJzZUVycm9yTWVzc2FnZSA9IEFTQ0lJTGl0ZXJhbCgiUHJvcGVydHkgbmFtZSBtdXN0IGJl
IGEgc3RyaW5nIGxpdGVyYWwiKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWUo
KTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgTGl0ZXJhbFBhcnNlclRva2Vu
PENoYXJUeXBlPiBpZGVudGlmaWVyVG9rZW4gPSBtX2xleGVyLmN1cnJlbnRUb2tlbigpOwogCiAg
ICAgICAgICAgICAgICAgLy8gQ2hlY2sgZm9yIGNvbG9uCiAgICAgICAgICAgICAgICAgaWYgKG1f
bGV4ZXIubmV4dCgpICE9IFRva0NvbG9uKSB7Ci0gICAgICAgICAgICAgICAgICAgIG1fcGFyc2VF
cnJvck1lc3NhZ2UgPSAiRXhwZWN0ZWQgJzonIjsKKyAgICAgICAgICAgICAgICAgICAgbV9wYXJz
ZUVycm9yTWVzc2FnZSA9IEFTQ0lJTGl0ZXJhbCgiRXhwZWN0ZWQgJzonIik7CiAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7CiAgICAgICAgICAgICAgICAgfQogCkBAIC02NDUs
NyArNjQ1LDcgQEAgSlNWYWx1ZSBMaXRlcmFsUGFyc2VyPENoYXJUeXBlPjo6cGFyc2UoUGFyc2Vy
U3RhdGUgaW5pdGlhbFN0YXRlKQogICAgICAgICAgICAgICAgIGlmIChtX2xleGVyLmN1cnJlbnRU
b2tlbigpLnR5cGUgPT0gVG9rQ29tbWEpCiAgICAgICAgICAgICAgICAgICAgIGdvdG8gZG9QYXJz
ZU9iamVjdFN0YXJ0RXhwcmVzc2lvbjsKICAgICAgICAgICAgICAgICBpZiAobV9sZXhlci5jdXJy
ZW50VG9rZW4oKS50eXBlICE9IFRva1JCcmFjZSkgewotICAgICAgICAgICAgICAgICAgICBtX3Bh
cnNlRXJyb3JNZXNzYWdlID0gIkV4cGVjdGVkICd9JyI7CisgICAgICAgICAgICAgICAgICAgIG1f
cGFyc2VFcnJvck1lc3NhZ2UgPSBBU0NJSUxpdGVyYWwoIkV4cGVjdGVkICd9JyIpOwogICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOwogICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgICAgICBtX2xleGVyLm5leHQoKTsKQEAgLTY5MCwxMCArNjkwLDEwIEBAIEpTVmFsdWUg
TGl0ZXJhbFBhcnNlcjxDaGFyVHlwZT46OnBhcnNlKFBhcnNlclN0YXRlIGluaXRpYWxTdGF0ZSkK
ICAgICAgICAgICAgICAgICAgICAgICAgIGxhc3RWYWx1ZSA9IGpzQm9vbGVhbihmYWxzZSk7CiAg
ICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgY2FzZSBU
b2tSQnJhY2tldDoKLSAgICAgICAgICAgICAgICAgICAgICAgIG1fcGFyc2VFcnJvck1lc3NhZ2Ug
PSAiVW5leHBlY3RlZCB0b2tlbiAnXSciOworICAgICAgICAgICAgICAgICAgICAgICAgbV9wYXJz
ZUVycm9yTWVzc2FnZSA9IEFTQ0lJTGl0ZXJhbCgiVW5leHBlY3RlZCB0b2tlbiAnXSciKTsKICAg
ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7CiAgICAgICAgICAgICAgICAg
ICAgIGNhc2UgVG9rUkJyYWNlOgotICAgICAgICAgICAgICAgICAgICAgICAgbV9wYXJzZUVycm9y
TWVzc2FnZSA9ICJVbmV4cGVjdGVkIHRva2VuICd9JyI7CisgICAgICAgICAgICAgICAgICAgICAg
ICBtX3BhcnNlRXJyb3JNZXNzYWdlID0gQVNDSUlMaXRlcmFsKCJVbmV4cGVjdGVkIHRva2VuICd9
JyIpOwogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKICAgICAgICAg
ICAgICAgICAgICAgY2FzZSBUb2tJZGVudGlmaWVyOiB7CiAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBMaXRlcmFsUGFyc2VyVG9rZW48Q2hhclR5cGU+JiB0b2tlbiA9IG1fbGV4ZXIuY3Vy
cmVudFRva2VuKCk7CkBAIC03MDQsMzMgKzcwNCwzMyBAQCBKU1ZhbHVlIExpdGVyYWxQYXJzZXI8
Q2hhclR5cGU+OjpwYXJzZShQYXJzZXJTdGF0ZSBpbml0aWFsU3RhdGUpCiAgICAgICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAgICAgICAgIGNhc2UgVG9rQ29sb246Ci0gICAgICAgICAgICAgICAgICAgICAgICBt
X3BhcnNlRXJyb3JNZXNzYWdlID0gIlVuZXhwZWN0ZWQgdG9rZW4gJzonIjsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIG1fcGFyc2VFcnJvck1lc3NhZ2UgPSBBU0NJSUxpdGVyYWwoIlVuZXhwZWN0
ZWQgdG9rZW4gJzonIik7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZSgp
OwogICAgICAgICAgICAgICAgICAgICBjYXNlIFRva0xQYXJlbjoKLSAgICAgICAgICAgICAgICAg
ICAgICAgIG1fcGFyc2VFcnJvck1lc3NhZ2UgPSAiVW5leHBlY3RlZCB0b2tlbiAnKCciOworICAg
ICAgICAgICAgICAgICAgICAgICAgbV9wYXJzZUVycm9yTWVzc2FnZSA9IEFTQ0lJTGl0ZXJhbCgi
VW5leHBlY3RlZCB0b2tlbiAnKCciKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBK
U1ZhbHVlKCk7CiAgICAgICAgICAgICAgICAgICAgIGNhc2UgVG9rUlBhcmVuOgotICAgICAgICAg
ICAgICAgICAgICAgICAgbV9wYXJzZUVycm9yTWVzc2FnZSA9ICJVbmV4cGVjdGVkIHRva2VuICcp
JyI7CisgICAgICAgICAgICAgICAgICAgICAgICBtX3BhcnNlRXJyb3JNZXNzYWdlID0gQVNDSUlM
aXRlcmFsKCJVbmV4cGVjdGVkIHRva2VuICcpJyIpOwogICAgICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIEpTVmFsdWUoKTsKICAgICAgICAgICAgICAgICAgICAgY2FzZSBUb2tDb21tYToKLSAg
ICAgICAgICAgICAgICAgICAgICAgIG1fcGFyc2VFcnJvck1lc3NhZ2UgPSAiVW5leHBlY3RlZCB0
b2tlbiAnLCciOworICAgICAgICAgICAgICAgICAgICAgICAgbV9wYXJzZUVycm9yTWVzc2FnZSA9
IEFTQ0lJTGl0ZXJhbCgiVW5leHBlY3RlZCB0b2tlbiAnLCciKTsKICAgICAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBKU1ZhbHVlKCk7CiAgICAgICAgICAgICAgICAgICAgIGNhc2UgVG9rRG90
OgotICAgICAgICAgICAgICAgICAgICAgICAgbV9wYXJzZUVycm9yTWVzc2FnZSA9ICJVbmV4cGVj
dGVkIHRva2VuICcuJyI7CisgICAgICAgICAgICAgICAgICAgICAgICBtX3BhcnNlRXJyb3JNZXNz
YWdlID0gQVNDSUlMaXRlcmFsKCJVbmV4cGVjdGVkIHRva2VuICcuJyIpOwogICAgICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKICAgICAgICAgICAgICAgICAgICAgY2FzZSBU
b2tBc3NpZ246Ci0gICAgICAgICAgICAgICAgICAgICAgICBtX3BhcnNlRXJyb3JNZXNzYWdlID0g
IlVuZXhwZWN0ZWQgdG9rZW4gJz0nIjsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fcGFyc2VF
cnJvck1lc3NhZ2UgPSBBU0NJSUxpdGVyYWwoIlVuZXhwZWN0ZWQgdG9rZW4gJz0nIik7CiAgICAg
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOwogICAgICAgICAgICAgICAgICAg
ICBjYXNlIFRva1NlbWk6Ci0gICAgICAgICAgICAgICAgICAgICAgICBtX3BhcnNlRXJyb3JNZXNz
YWdlID0gIlVuZXhwZWN0ZWQgdG9rZW4gJzsnIjsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1f
cGFyc2VFcnJvck1lc3NhZ2UgPSBBU0NJSUxpdGVyYWwoIlVuZXhwZWN0ZWQgdG9rZW4gJzsnIik7
CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOwogICAgICAgICAgICAg
ICAgICAgICBjYXNlIFRva0VuZDoKLSAgICAgICAgICAgICAgICAgICAgICAgIG1fcGFyc2VFcnJv
ck1lc3NhZ2UgPSAiVW5leHBlY3RlZCBFT0YiOworICAgICAgICAgICAgICAgICAgICAgICAgbV9w
YXJzZUVycm9yTWVzc2FnZSA9IEFTQ0lJTGl0ZXJhbCgiVW5leHBlY3RlZCBFT0YiKTsKICAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7CiAgICAgICAgICAgICAgICAgICAg
IGNhc2UgVG9rRXJyb3I6CiAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAg
ICAgICAgICAgICAgICAvLyBFcnJvcgotICAgICAgICAgICAgICAgICAgICAgICAgbV9wYXJzZUVy
cm9yTWVzc2FnZSA9ICJDb3VsZCBub3QgcGFyc2UgdmFsdWUgZXhwcmVzc2lvbiI7CisgICAgICAg
ICAgICAgICAgICAgICAgICBtX3BhcnNlRXJyb3JNZXNzYWdlID0gQVNDSUlMaXRlcmFsKCJDb3Vs
ZCBub3QgcGFyc2UgdmFsdWUgZXhwcmVzc2lvbiIpOwogICAgICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIEpTVmFsdWUoKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgYnJl
YWs7CkBAIC03NDgsNTAgKzc0OCw1MCBAQCBKU1ZhbHVlIExpdGVyYWxQYXJzZXI8Q2hhclR5cGU+
OjpwYXJzZShQYXJzZXJTdGF0ZSBpbml0aWFsU3RhdGUpCiAgICAgICAgICAgICAgICAgICAgICAg
ICBnb3RvIHN0YXJ0UGFyc2VFeHByZXNzaW9uOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAgICAgICAgIGNhc2UgVG9rUkJyYWNrZXQ6Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBtX3BhcnNlRXJyb3JNZXNzYWdlID0gIlVuZXhwZWN0ZWQgdG9rZW4gJ10nIjsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIG1fcGFyc2VFcnJvck1lc3NhZ2UgPSBBU0NJSUxpdGVyYWwoIlVuZXhw
ZWN0ZWQgdG9rZW4gJ10nIik7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1
ZSgpOwogICAgICAgICAgICAgICAgICAgICBjYXNlIFRva0xCcmFjZToKLSAgICAgICAgICAgICAg
ICAgICAgICAgIG1fcGFyc2VFcnJvck1lc3NhZ2UgPSAiVW5leHBlY3RlZCB0b2tlbiAneyciOwor
ICAgICAgICAgICAgICAgICAgICAgICAgbV9wYXJzZUVycm9yTWVzc2FnZSA9IEFTQ0lJTGl0ZXJh
bCgiVW5leHBlY3RlZCB0b2tlbiAneyciKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
biBKU1ZhbHVlKCk7CiAgICAgICAgICAgICAgICAgICAgIGNhc2UgVG9rUkJyYWNlOgotICAgICAg
ICAgICAgICAgICAgICAgICAgbV9wYXJzZUVycm9yTWVzc2FnZSA9ICJVbmV4cGVjdGVkIHRva2Vu
ICd9JyI7CisgICAgICAgICAgICAgICAgICAgICAgICBtX3BhcnNlRXJyb3JNZXNzYWdlID0gQVND
SUlMaXRlcmFsKCJVbmV4cGVjdGVkIHRva2VuICd9JyIpOwogICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIEpTVmFsdWUoKTsKICAgICAgICAgICAgICAgICAgICAgY2FzZSBUb2tJZGVudGlm
aWVyOgotICAgICAgICAgICAgICAgICAgICAgICAgbV9wYXJzZUVycm9yTWVzc2FnZSA9ICJVbmV4
cGVjdGVkIGlkZW50aWZpZXIiOworICAgICAgICAgICAgICAgICAgICAgICAgbV9wYXJzZUVycm9y
TWVzc2FnZSA9IEFTQ0lJTGl0ZXJhbCgiVW5leHBlY3RlZCBpZGVudGlmaWVyIik7CiAgICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOwogICAgICAgICAgICAgICAgICAgICBj
YXNlIFRva0NvbG9uOgotICAgICAgICAgICAgICAgICAgICAgICAgbV9wYXJzZUVycm9yTWVzc2Fn
ZSA9ICJVbmV4cGVjdGVkIHRva2VuICc6JyI7CisgICAgICAgICAgICAgICAgICAgICAgICBtX3Bh
cnNlRXJyb3JNZXNzYWdlID0gQVNDSUlMaXRlcmFsKCJVbmV4cGVjdGVkIHRva2VuICc6JyIpOwog
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKICAgICAgICAgICAgICAg
ICAgICAgY2FzZSBUb2tSUGFyZW46Ci0gICAgICAgICAgICAgICAgICAgICAgICBtX3BhcnNlRXJy
b3JNZXNzYWdlID0gIlVuZXhwZWN0ZWQgdG9rZW4gJyknIjsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIG1fcGFyc2VFcnJvck1lc3NhZ2UgPSBBU0NJSUxpdGVyYWwoIlVuZXhwZWN0ZWQgdG9rZW4g
JyknIik7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOwogICAgICAg
ICAgICAgICAgICAgICBjYXNlIFRva0NvbW1hOgotICAgICAgICAgICAgICAgICAgICAgICAgbV9w
YXJzZUVycm9yTWVzc2FnZSA9ICJVbmV4cGVjdGVkIHRva2VuICcsJyI7CisgICAgICAgICAgICAg
ICAgICAgICAgICBtX3BhcnNlRXJyb3JNZXNzYWdlID0gQVNDSUlMaXRlcmFsKCJVbmV4cGVjdGVk
IHRva2VuICcsJyIpOwogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsK
ICAgICAgICAgICAgICAgICAgICAgY2FzZSBUb2tUcnVlOgotICAgICAgICAgICAgICAgICAgICAg
ICAgbV9wYXJzZUVycm9yTWVzc2FnZSA9ICJVbmV4cGVjdGVkIHRva2VuICd0cnVlJyI7CisgICAg
ICAgICAgICAgICAgICAgICAgICBtX3BhcnNlRXJyb3JNZXNzYWdlID0gQVNDSUlMaXRlcmFsKCJV
bmV4cGVjdGVkIHRva2VuICd0cnVlJyIpOwogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IEpTVmFsdWUoKTsKICAgICAgICAgICAgICAgICAgICAgY2FzZSBUb2tGYWxzZToKLSAgICAgICAg
ICAgICAgICAgICAgICAgIG1fcGFyc2VFcnJvck1lc3NhZ2UgPSAiVW5leHBlY3RlZCB0b2tlbiAn
ZmFsc2UnIjsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fcGFyc2VFcnJvck1lc3NhZ2UgPSBB
U0NJSUxpdGVyYWwoIlVuZXhwZWN0ZWQgdG9rZW4gJ2ZhbHNlJyIpOwogICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKICAgICAgICAgICAgICAgICAgICAgY2FzZSBUb2tO
dWxsOgotICAgICAgICAgICAgICAgICAgICAgICAgbV9wYXJzZUVycm9yTWVzc2FnZSA9ICJVbmV4
cGVjdGVkIHRva2VuICdudWxsJyI7CisgICAgICAgICAgICAgICAgICAgICAgICBtX3BhcnNlRXJy
b3JNZXNzYWdlID0gQVNDSUlMaXRlcmFsKCJVbmV4cGVjdGVkIHRva2VuICdudWxsJyIpOwogICAg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKICAgICAgICAgICAgICAgICAg
ICAgY2FzZSBUb2tFbmQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICBtX3BhcnNlRXJyb3JNZXNz
YWdlID0gIlVuZXhwZWN0ZWQgRU9GIjsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fcGFyc2VF
cnJvck1lc3NhZ2UgPSBBU0NJSUxpdGVyYWwoIlVuZXhwZWN0ZWQgRU9GIik7CiAgICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOwogICAgICAgICAgICAgICAgICAgICBjYXNl
IFRva0RvdDoKLSAgICAgICAgICAgICAgICAgICAgICAgIG1fcGFyc2VFcnJvck1lc3NhZ2UgPSAi
VW5leHBlY3RlZCB0b2tlbiAnLiciOworICAgICAgICAgICAgICAgICAgICAgICAgbV9wYXJzZUVy
cm9yTWVzc2FnZSA9IEFTQ0lJTGl0ZXJhbCgiVW5leHBlY3RlZCB0b2tlbiAnLiciKTsKICAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7CiAgICAgICAgICAgICAgICAgICAg
IGNhc2UgVG9rQXNzaWduOgotICAgICAgICAgICAgICAgICAgICAgICAgbV9wYXJzZUVycm9yTWVz
c2FnZSA9ICJVbmV4cGVjdGVkIHRva2VuICc9JyI7CisgICAgICAgICAgICAgICAgICAgICAgICBt
X3BhcnNlRXJyb3JNZXNzYWdlID0gQVNDSUlMaXRlcmFsKCJVbmV4cGVjdGVkIHRva2VuICc9JyIp
OwogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKICAgICAgICAgICAg
ICAgICAgICAgY2FzZSBUb2tTZW1pOgotICAgICAgICAgICAgICAgICAgICAgICAgbV9wYXJzZUVy
cm9yTWVzc2FnZSA9ICJVbmV4cGVjdGVkIHRva2VuICc7JyI7CisgICAgICAgICAgICAgICAgICAg
ICAgICBtX3BhcnNlRXJyb3JNZXNzYWdlID0gQVNDSUlMaXRlcmFsKCJVbmV4cGVjdGVkIHRva2Vu
ICc7JyIpOwogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKICAgICAg
ICAgICAgICAgICAgICAgY2FzZSBUb2tFcnJvcjoKICAgICAgICAgICAgICAgICAgICAgZGVmYXVs
dDoKLSAgICAgICAgICAgICAgICAgICAgICAgIG1fcGFyc2VFcnJvck1lc3NhZ2UgPSAiQ291bGQg
bm90IHBhcnNlIHN0YXRlbWVudCI7CisgICAgICAgICAgICAgICAgICAgICAgICBtX3BhcnNlRXJy
b3JNZXNzYWdlID0gQVNDSUlMaXRlcmFsKCJDb3VsZCBub3QgcGFyc2Ugc3RhdGVtZW50Iik7CiAg
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOwogICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgIH0KQEAgLTgwMSw3ICs4MDEsNyBAQCBKU1ZhbHVlIExpdGVyYWxQYXJz
ZXI8Q2hhclR5cGU+OjpwYXJzZShQYXJzZXJTdGF0ZSBpbml0aWFsU3RhdGUpCiAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7CiAgICAgICAgICAgICAgICAgaWYgKG1fbGV4ZXIu
bmV4dCgpID09IFRva0VuZCkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxhc3RWYWx1ZTsK
LSAgICAgICAgICAgICAgICBtX3BhcnNlRXJyb3JNZXNzYWdlID0gIlVuZXhwZWN0ZWQgY29udGVu
dCBhdCBlbmQgb2YgSlNPTiBsaXRlcmFsIjsKKyAgICAgICAgICAgICAgICBtX3BhcnNlRXJyb3JN
ZXNzYWdlID0gQVNDSUlMaXRlcmFsKCJVbmV4cGVjdGVkIGNvbnRlbnQgYXQgZW5kIG9mIEpTT04g
bGl0ZXJhbCIpOwogICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7CiAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICBkZWZhdWx0OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvTGl0ZXJhbFBhcnNlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvTGl0ZXJhbFBhcnNlci5oCmluZGV4IDYxYThlZjM0ZGM2MjAxNmMxZGRjNjY5ZDUzN2I5Mjlj
ZjBlN2RlZmIuLmMwZjMwOGVlNWQxMDI1ZDNkZjE3MWVhZjlkMDk2MWFiYmI2YzU2ZmIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xpdGVyYWxQYXJzZXIuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9MaXRlcmFsUGFyc2VyLmgKQEAgLTEwMCw3
ICsxMDAsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1cm4gU3RyaW5nOjpmb3JtYXQoIkpT
T04gUGFyc2UgZXJyb3I6ICVzIiwgbV9sZXhlci5nZXRFcnJvck1lc3NhZ2UoKS5hc2NpaSgpLmRh
dGEoKSkuaW1wbCgpOwogICAgICAgICBpZiAoIW1fcGFyc2VFcnJvck1lc3NhZ2UuaXNFbXB0eSgp
KQogICAgICAgICAgICAgcmV0dXJuIFN0cmluZzo6Zm9ybWF0KCJKU09OIFBhcnNlIGVycm9yOiAl
cyIsIG1fcGFyc2VFcnJvck1lc3NhZ2UuYXNjaWkoKS5kYXRhKCkpLmltcGwoKTsKLSAgICAgICAg
cmV0dXJuICJKU09OIFBhcnNlIGVycm9yOiBVbmFibGUgdG8gcGFyc2UgSlNPTiBzdHJpbmciOwor
ICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJKU09OIFBhcnNlIGVycm9yOiBVbmFibGUgdG8g
cGFyc2UgSlNPTiBzdHJpbmciKTsKICAgICB9CiAgICAgCiAgICAgSlNWYWx1ZSB0cnlMaXRlcmFs
UGFyc2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVy
UHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlclByb3Rv
dHlwZS5jcHAKaW5kZXggMWQ3OTM5MjI1MjQ2YjJkYmVjZTgyMWEzZTQzMWMwYjdkYmZmZTViYi4u
NGExMGVmZDZkNjRkYjI4MGI3NzYwNTI3ZDA3OWU4OWMyNTBlNzBiYSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyUHJvdG90eXBlLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJQcm90b3R5cGUuY3BwCkBAIC0zNzgsNyAr
Mzc4LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBudW1iZXJQcm90b0Z1bmNUb0V4
cG9uZW50aWFsKEV4ZWNTdGF0ZSogZXhlYykKICAgICBpbnQgZGVjaW1hbFBsYWNlc0luRXhwb25l
bnQ7CiAgICAgYm9vbCBpc1VuZGVmaW5lZDsKICAgICBpZiAoIWdldEludGVnZXJBcmd1bWVudElu
UmFuZ2UoZXhlYywgMCwgMjAsIGRlY2ltYWxQbGFjZXNJbkV4cG9uZW50LCBpc1VuZGVmaW5lZCkp
Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlUmFuZ2VFcnJvcihleGVj
LCAidG9FeHBvbmVudGlhbCgpIGFyZ3VtZW50IG11c3QgYmUgYmV0d2VlbiAwIGFuZCAyMCIpKTsK
KyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVSYW5nZUVycm9yKGV4ZWMs
IEFTQ0lJTGl0ZXJhbCgidG9FeHBvbmVudGlhbCgpIGFyZ3VtZW50IG11c3QgYmUgYmV0d2VlbiAw
IGFuZCAyMCIpKSk7CiAKICAgICAvLyBIYW5kbGUgTmFOIGFuZCBJbmZpbml0eS4KICAgICBpZiAo
IWlzZmluaXRlKHgpKQpAQCAtNDA5LDcgKzQwOSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgbnVtYmVyUHJvdG9GdW5jVG9GaXhlZChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgaW50IGRl
Y2ltYWxQbGFjZXM7CiAgICAgYm9vbCBpc1VuZGVmaW5lZDsgLy8gVGhpcyBpcyBpZ25vcmVkOyB1
bmRlZmluZWQgdHJlYXRlZCBhcyAwLgogICAgIGlmICghZ2V0SW50ZWdlckFyZ3VtZW50SW5SYW5n
ZShleGVjLCAwLCAyMCwgZGVjaW1hbFBsYWNlcywgaXNVbmRlZmluZWQpKQotICAgICAgICByZXR1
cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVJhbmdlRXJyb3IoZXhlYywgInRvRml4ZWQoKSBh
cmd1bWVudCBtdXN0IGJlIGJldHdlZW4gMCBhbmQgMjAiKSk7CisgICAgICAgIHJldHVybiB0aHJv
d1ZNRXJyb3IoZXhlYywgY3JlYXRlUmFuZ2VFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoInRvRml4
ZWQoKSBhcmd1bWVudCBtdXN0IGJlIGJldHdlZW4gMCBhbmQgMjAiKSkpOwogCiAgICAgLy8gMTUu
Ny40LjUuNyBzdGF0ZXMgIklmIHggPj0gMTBeMjEsIHRoZW4gbGV0IG0gPSBUb1N0cmluZyh4KSIK
ICAgICAvLyBUaGlzIGFsc28gY292ZXJzIEluaW5pdHksIGFuZCBzdHJ1Y3R1cmUgdGhlIGNoZWNr
IHNvIHRoYXQgTmFOCkBAIC00NDIsNyArNDQyLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBudW1iZXJQcm90b0Z1bmNUb1ByZWNpc2lvbihFeGVjU3RhdGUqIGV4ZWMpCiAgICAgaW50
IHNpZ25pZmljYW50RmlndXJlczsKICAgICBib29sIGlzVW5kZWZpbmVkOwogICAgIGlmICghZ2V0
SW50ZWdlckFyZ3VtZW50SW5SYW5nZShleGVjLCAxLCAyMSwgc2lnbmlmaWNhbnRGaWd1cmVzLCBp
c1VuZGVmaW5lZCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlUmFu
Z2VFcnJvcihleGVjLCAidG9QcmVjaXNpb24oKSBhcmd1bWVudCBtdXN0IGJlIGJldHdlZW4gMSBh
bmQgMjEiKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlUmFuZ2VF
cnJvcihleGVjLCBBU0NJSUxpdGVyYWwoInRvUHJlY2lzaW9uKCkgYXJndW1lbnQgbXVzdCBiZSBi
ZXR3ZWVuIDEgYW5kIDIxIikpKTsKIAogICAgIC8vIFRvIHByZWNpc2lvbiBjYWxsZWQgd2l0aCBu
byBhcmd1bWVudCBpcyB0cmVhdGVkIGFzIFRvU3RyaW5nLgogICAgIGlmIChpc1VuZGVmaW5lZCkK
QEAgLTQ5Nyw3ICs0OTcsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG51bWJlclBy
b3RvRnVuY1RvU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYykKIAogICAgIGludDMyX3QgcmFkaXggPSBl
eHRyYWN0UmFkaXhGcm9tQXJncyhleGVjKTsKICAgICBpZiAocmFkaXggPCAyIHx8IHJhZGl4ID4g
MzYpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlUmFuZ2VFcnJvcihl
eGVjLCAidG9TdHJpbmcoKSByYWRpeCBhcmd1bWVudCBtdXN0IGJlIGJldHdlZW4gMiBhbmQgMzYi
KSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlUmFuZ2VFcnJvcihl
eGVjLCBBU0NJSUxpdGVyYWwoInRvU3RyaW5nKCkgcmFkaXggYXJndW1lbnQgbXVzdCBiZSBiZXR3
ZWVuIDIgYW5kIDM2IikpKTsKIAogICAgIGludDMyX3QgaW50ZWdlclZhbHVlID0gc3RhdGljX2Nh
c3Q8aW50MzJfdD4oZG91YmxlVmFsdWUpOwogICAgIGlmIChpbnRlZ2VyVmFsdWUgPT0gZG91Ymxl
VmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RD
b25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RDb25z
dHJ1Y3Rvci5jcHAKaW5kZXggMjFlY2NkMzBlOTliYmMwY2VlYjJmOWU5ZTFhNWM3ZjhiODI2YmVh
Ni4uMTllOTI3ZTU1MjU0ZTk0OGM2MjUxNjBkZDAzODFjNDg5YmJmY2UzNyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmNwcApAQCAt
MTM3LDcgKzEzNyw3IEBAIENhbGxUeXBlIE9iamVjdENvbnN0cnVjdG9yOjpnZXRDYWxsRGF0YShK
U0NlbGwqLCBDYWxsRGF0YSYgY2FsbERhdGEpCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IG9iamVjdENvbnN0cnVjdG9yR2V0UHJvdG90eXBlT2YoRXhlY1N0YXRlKiBleGVjKQogewogICAg
IGlmICghZXhlYy0+YXJndW1lbnQoMCkuaXNPYmplY3QoKSkKLSAgICAgICAgcmV0dXJuIHRocm93
Vk1FcnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgIlJlcXVlc3RlZCBwcm90b3R5cGUg
b2YgYSB2YWx1ZSB0aGF0IGlzIG5vdCBhbiBvYmplY3QuIikpOworICAgICAgICByZXR1cm4gdGhy
b3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlJlcXVl
c3RlZCBwcm90b3R5cGUgb2YgYSB2YWx1ZSB0aGF0IGlzIG5vdCBhbiBvYmplY3QuIikpKTsKICAg
ICBKU09iamVjdCogb2JqZWN0ID0gYXNPYmplY3QoZXhlYy0+YXJndW1lbnQoMCkpOwogICAgIGlm
ICghb2JqZWN0LT5hbGxvd3NBY2Nlc3NGcm9tKGV4ZWMtPnRydWVDYWxsZXJGcmFtZSgpKSkKICAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKQEAgLTE0Nyw3ICsx
NDcsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9yR2V0
UHJvdG90eXBlT2YoRXhlY1N0YXRlKiBleGVjKQogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBvYmplY3RDb25zdHJ1Y3RvckdldE93blByb3BlcnR5RGVzY3JpcHRvcihFeGVjU3RhdGUqIGV4
ZWMpCiB7CiAgICAgaWYgKCFleGVjLT5hcmd1bWVudCgwKS5pc09iamVjdCgpKQotICAgICAgICBy
ZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCAiUmVxdWVzdGVk
IHByb3BlcnR5IGRlc2NyaXB0b3Igb2YgYSB2YWx1ZSB0aGF0IGlzIG5vdCBhbiBvYmplY3QuIikp
OworICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVj
LCBBU0NJSUxpdGVyYWwoIlJlcXVlc3RlZCBwcm9wZXJ0eSBkZXNjcmlwdG9yIG9mIGEgdmFsdWUg
dGhhdCBpcyBub3QgYW4gb2JqZWN0LiIpKSk7CiAgICAgU3RyaW5nIHByb3BlcnR5TmFtZSA9IGV4
ZWMtPmFyZ3VtZW50KDEpLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKICAgICBpZiAoZXhl
Yy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdWxs
KCkpOwpAQCAtMTc5LDcgKzE3OSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2Jq
ZWN0Q29uc3RydWN0b3JHZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoRXhlY1N0YXRlCiBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9yR2V0T3duUHJvcGVydHlOYW1l
cyhFeGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAgaWYgKCFleGVjLT5hcmd1bWVudCgwKS5pc09iamVj
dCgpKQotICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihl
eGVjLCAiUmVxdWVzdGVkIHByb3BlcnR5IG5hbWVzIG9mIGEgdmFsdWUgdGhhdCBpcyBub3QgYW4g
b2JqZWN0LiIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVUeXBl
RXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJSZXF1ZXN0ZWQgcHJvcGVydHkgbmFtZXMgb2YgYSB2
YWx1ZSB0aGF0IGlzIG5vdCBhbiBvYmplY3QuIikpKTsKICAgICBQcm9wZXJ0eU5hbWVBcnJheSBw
cm9wZXJ0aWVzKGV4ZWMpOwogICAgIGFzT2JqZWN0KGV4ZWMtPmFyZ3VtZW50KDApKS0+bWV0aG9k
VGFibGUoKS0+Z2V0T3duUHJvcGVydHlOYW1lcyhhc09iamVjdChleGVjLT5hcmd1bWVudCgwKSks
IGV4ZWMsIHByb3BlcnRpZXMsIEluY2x1ZGVEb250RW51bVByb3BlcnRpZXMpOwogICAgIEpTQXJy
YXkqIG5hbWVzID0gY29uc3RydWN0RW1wdHlBcnJheShleGVjKTsKQEAgLTE5Myw3ICsxOTMsNyBA
QCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9yR2V0T3duUHJv
cGVydHlOYW1lcyhFeGVjU3RhdGUqIGV4ZQogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBv
YmplY3RDb25zdHJ1Y3RvcktleXMoRXhlY1N0YXRlKiBleGVjKQogewogICAgIGlmICghZXhlYy0+
YXJndW1lbnQoMCkuaXNPYmplY3QoKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVj
LCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgIlJlcXVlc3RlZCBrZXlzIG9mIGEgdmFsdWUgdGhhdCBp
cyBub3QgYW4gb2JqZWN0LiIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBj
cmVhdGVUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJSZXF1ZXN0ZWQga2V5cyBvZiBhIHZh
bHVlIHRoYXQgaXMgbm90IGFuIG9iamVjdC4iKSkpOwogICAgIFByb3BlcnR5TmFtZUFycmF5IHBy
b3BlcnRpZXMoZXhlYyk7CiAgICAgYXNPYmplY3QoZXhlYy0+YXJndW1lbnQoMCkpLT5tZXRob2RU
YWJsZSgpLT5nZXRPd25Qcm9wZXJ0eU5hbWVzKGFzT2JqZWN0KGV4ZWMtPmFyZ3VtZW50KDApKSwg
ZXhlYywgcHJvcGVydGllcywgRXhjbHVkZURvbnRFbnVtUHJvcGVydGllcyk7CiAgICAgSlNBcnJh
eSoga2V5cyA9IGNvbnN0cnVjdEVtcHR5QXJyYXkoZXhlYyk7CkBAIC0yMDcsNyArMjA3LDcgQEAg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3RvcktleXMoRXhlY1N0
YXRlKiBleGVjKQogc3RhdGljIGJvb2wgdG9Qcm9wZXJ0eURlc2NyaXB0b3IoRXhlY1N0YXRlKiBl
eGVjLCBKU1ZhbHVlIGluLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2MpCiB7CiAgICAgaWYgKCFp
bi5pc09iamVjdCgpKSB7Ci0gICAgICAgIHRocm93RXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9y
KGV4ZWMsICJQcm9wZXJ0eSBkZXNjcmlwdGlvbiBtdXN0IGJlIGFuIG9iamVjdC4iKSk7CisgICAg
ICAgIHRocm93RXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgi
UHJvcGVydHkgZGVzY3JpcHRpb24gbXVzdCBiZSBhbiBvYmplY3QuIikpKTsKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIH0KICAgICBKU09iamVjdCogZGVzY3JpcHRpb24gPSBhc09iamVjdChp
bik7CkBAIC0yNDksNyArMjQ5LDcgQEAgc3RhdGljIGJvb2wgdG9Qcm9wZXJ0eURlc2NyaXB0b3Io
RXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGluLCBQcm9wZXJ0eURlc2NyaXB0b3IKICAgICAgICAg
aWYgKCFnZXQuaXNVbmRlZmluZWQoKSkgewogICAgICAgICAgICAgQ2FsbERhdGEgY2FsbERhdGE7
CiAgICAgICAgICAgICBpZiAoZ2V0Q2FsbERhdGEoZ2V0LCBjYWxsRGF0YSkgPT0gQ2FsbFR5cGVO
b25lKSB7Ci0gICAgICAgICAgICAgICAgdGhyb3dFcnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3Io
ZXhlYywgIkdldHRlciBtdXN0IGJlIGEgZnVuY3Rpb24uIikpOworICAgICAgICAgICAgICAgIHRo
cm93RXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiR2V0dGVy
IG11c3QgYmUgYSBmdW5jdGlvbi4iKSkpOwogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtMjY0LDcgKzI2NCw3IEBAIHN0YXRpYyBib29s
IHRvUHJvcGVydHlEZXNjcmlwdG9yKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBpbiwgUHJvcGVy
dHlEZXNjcmlwdG9yCiAgICAgICAgIGlmICghc2V0LmlzVW5kZWZpbmVkKCkpIHsKICAgICAgICAg
ICAgIENhbGxEYXRhIGNhbGxEYXRhOwogICAgICAgICAgICAgaWYgKGdldENhbGxEYXRhKHNldCwg
Y2FsbERhdGEpID09IENhbGxUeXBlTm9uZSkgewotICAgICAgICAgICAgICAgIHRocm93RXJyb3Io
ZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsICJTZXR0ZXIgbXVzdCBiZSBhIGZ1bmN0aW9uLiIp
KTsKKyAgICAgICAgICAgICAgICB0aHJvd0Vycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVj
LCBBU0NJSUxpdGVyYWwoIlNldHRlciBtdXN0IGJlIGEgZnVuY3Rpb24uIikpKTsKICAgICAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTI3NSwx
MiArMjc1LDEyIEBAIHN0YXRpYyBib29sIHRvUHJvcGVydHlEZXNjcmlwdG9yKEV4ZWNTdGF0ZSog
ZXhlYywgSlNWYWx1ZSBpbiwgUHJvcGVydHlEZXNjcmlwdG9yCiAgICAgICAgIHJldHVybiB0cnVl
OwogCiAgICAgaWYgKGRlc2MudmFsdWUoKSkgewotICAgICAgICB0aHJvd0Vycm9yKGV4ZWMsIGNy
ZWF0ZVR5cGVFcnJvcihleGVjLCAiSW52YWxpZCBwcm9wZXJ0eS4gICd2YWx1ZScgcHJlc2VudCBv
biBwcm9wZXJ0eSB3aXRoIGdldHRlciBvciBzZXR0ZXIuIikpOworICAgICAgICB0aHJvd0Vycm9y
KGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkludmFsaWQgcHJvcGVy
dHkuICAndmFsdWUnIHByZXNlbnQgb24gcHJvcGVydHkgd2l0aCBnZXR0ZXIgb3Igc2V0dGVyLiIp
KSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKICAgICBpZiAoZGVzYy53cml0YWJs
ZVByZXNlbnQoKSkgewotICAgICAgICB0aHJvd0Vycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihl
eGVjLCAiSW52YWxpZCBwcm9wZXJ0eS4gICd3cml0YWJsZScgcHJlc2VudCBvbiBwcm9wZXJ0eSB3
aXRoIGdldHRlciBvciBzZXR0ZXIuIikpOworICAgICAgICB0aHJvd0Vycm9yKGV4ZWMsIGNyZWF0
ZVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkludmFsaWQgcHJvcGVydHkuICAnd3JpdGFi
bGUnIHByZXNlbnQgb24gcHJvcGVydHkgd2l0aCBnZXR0ZXIgb3Igc2V0dGVyLiIpKSk7CiAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgcmV0dXJuIHRydWU7CkBAIC0yODksNyArMjg5
LDcgQEAgc3RhdGljIGJvb2wgdG9Qcm9wZXJ0eURlc2NyaXB0b3IoRXhlY1N0YXRlKiBleGVjLCBK
U1ZhbHVlIGluLCBQcm9wZXJ0eURlc2NyaXB0b3IKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgb2JqZWN0Q29uc3RydWN0b3JEZWZpbmVQcm9wZXJ0eShFeGVjU3RhdGUqIGV4ZWMpCiB7CiAg
ICAgaWYgKCFleGVjLT5hcmd1bWVudCgwKS5pc09iamVjdCgpKQotICAgICAgICByZXR1cm4gdGhy
b3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCAiUHJvcGVydGllcyBjYW4gb25s
eSBiZSBkZWZpbmVkIG9uIE9iamVjdHMuIikpOworICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9y
KGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlByb3BlcnRpZXMgY2Fu
IG9ubHkgYmUgZGVmaW5lZCBvbiBPYmplY3RzLiIpKSk7CiAgICAgSlNPYmplY3QqIE8gPSBhc09i
amVjdChleGVjLT5hcmd1bWVudCgwKSk7CiAgICAgU3RyaW5nIHByb3BlcnR5TmFtZSA9IGV4ZWMt
PmFyZ3VtZW50KDEpLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKICAgICBpZiAoZXhlYy0+
aGFkRXhjZXB0aW9uKCkpCkBAIC0zNDAsMjAgKzM0MCwyMCBAQCBzdGF0aWMgSlNWYWx1ZSBkZWZp
bmVQcm9wZXJ0aWVzKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIG9iamVjdCwgSlNPYmplY3Qq
IHBybwogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3RvckRlZmlu
ZVByb3BlcnRpZXMoRXhlY1N0YXRlKiBleGVjKQogewogICAgIGlmICghZXhlYy0+YXJndW1lbnQo
MCkuaXNPYmplY3QoKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVU
eXBlRXJyb3IoZXhlYywgIlByb3BlcnRpZXMgY2FuIG9ubHkgYmUgZGVmaW5lZCBvbiBPYmplY3Rz
LiIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3Io
ZXhlYywgQVNDSUlMaXRlcmFsKCJQcm9wZXJ0aWVzIGNhbiBvbmx5IGJlIGRlZmluZWQgb24gT2Jq
ZWN0cy4iKSkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoZGVmaW5lUHJvcGVydGllcyhl
eGVjLCBhc09iamVjdChleGVjLT5hcmd1bWVudCgwKSksIGV4ZWMtPmFyZ3VtZW50KDEpLnRvT2Jq
ZWN0KGV4ZWMpKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29u
c3RydWN0b3JDcmVhdGUoRXhlY1N0YXRlKiBleGVjKQogewogICAgIGlmICghZXhlYy0+YXJndW1l
bnQoMCkuaXNPYmplY3QoKSAmJiAhZXhlYy0+YXJndW1lbnQoMCkuaXNOdWxsKCkpCi0gICAgICAg
IHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsICJPYmplY3Qg
cHJvdG90eXBlIG1heSBvbmx5IGJlIGFuIE9iamVjdCBvciBudWxsLiIpKTsKKyAgICAgICAgcmV0
dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFs
KCJPYmplY3QgcHJvdG90eXBlIG1heSBvbmx5IGJlIGFuIE9iamVjdCBvciBudWxsLiIpKSk7CiAg
ICAgSlNWYWx1ZSBwcm90byA9IGV4ZWMtPmFyZ3VtZW50KDApOwogICAgIEpTT2JqZWN0KiBuZXdP
YmplY3QgPSBwcm90by5pc09iamVjdCgpID8gY29uc3RydWN0RW1wdHlPYmplY3QoZXhlYywgYXNP
YmplY3QocHJvdG8pLT5pbmhlcml0b3JJRChleGVjLT5nbG9iYWxEYXRhKCkpKSA6IGNvbnN0cnVj
dEVtcHR5T2JqZWN0KGV4ZWMsIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+bnVsbFByb3Rv
dHlwZU9iamVjdFN0cnVjdHVyZSgpKTsKICAgICBpZiAoZXhlYy0+YXJndW1lbnQoMSkuaXNVbmRl
ZmluZWQoKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShuZXdPYmplY3QpOwogICAg
IGlmICghZXhlYy0+YXJndW1lbnQoMSkuaXNPYmplY3QoKSkKLSAgICAgICAgcmV0dXJuIHRocm93
Vk1FcnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgIlByb3BlcnR5IGRlc2NyaXB0b3Ig
bGlzdCBtdXN0IGJlIGFuIE9iamVjdC4iKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Io
ZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiUHJvcGVydHkgZGVzY3Jp
cHRvciBsaXN0IG11c3QgYmUgYW4gT2JqZWN0LiIpKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShkZWZpbmVQcm9wZXJ0aWVzKGV4ZWMsIG5ld09iamVjdCwgYXNPYmplY3QoZXhlYy0+YXJn
dW1lbnQoMSkpKSk7CiB9CiAKQEAgLTM2Miw3ICszNjIsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9yU2VhbChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgLy8g
MS4gSWYgVHlwZShPKSBpcyBub3QgT2JqZWN0IHRocm93IGEgVHlwZUVycm9yIGV4Y2VwdGlvbi4K
ICAgICBKU1ZhbHVlIG9iaiA9IGV4ZWMtPmFyZ3VtZW50KDApOwogICAgIGlmICghb2JqLmlzT2Jq
ZWN0KCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9y
KGV4ZWMsICJPYmplY3Quc2VhbCBjYW4gb25seSBiZSBjYWxsZWQgb24gT2JqZWN0cy4iKSk7Cisg
ICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsIEFT
Q0lJTGl0ZXJhbCgiT2JqZWN0LnNlYWwgY2FuIG9ubHkgYmUgY2FsbGVkIG9uIE9iamVjdHMuIikp
KTsKICAgICBKU09iamVjdCogb2JqZWN0ID0gYXNPYmplY3Qob2JqKTsKIAogICAgIGlmIChpc0pT
RmluYWxPYmplY3Qob2JqZWN0KSkgewpAQCAtMzk5LDcgKzM5OSw3IEBAIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JGcmVlemUoRXhlY1N0YXRlKiBleGVjKQog
ICAgIC8vIDEuIElmIFR5cGUoTykgaXMgbm90IE9iamVjdCB0aHJvdyBhIFR5cGVFcnJvciBleGNl
cHRpb24uCiAgICAgSlNWYWx1ZSBvYmogPSBleGVjLT5hcmd1bWVudCgwKTsKICAgICBpZiAoIW9i
ai5pc09iamVjdCgpKQotICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVR5
cGVFcnJvcihleGVjLCAiT2JqZWN0LmZyZWV6ZSBjYW4gb25seSBiZSBjYWxsZWQgb24gT2JqZWN0
cy4iKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9y
KGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiT2JqZWN0LmZyZWV6ZSBjYW4gb25seSBiZSBjYWxsZWQgb24g
T2JqZWN0cy4iKSkpOwogICAgIEpTT2JqZWN0KiBvYmplY3QgPSBhc09iamVjdChvYmopOwogCiAg
ICAgaWYgKGlzSlNGaW5hbE9iamVjdChvYmplY3QpKSB7CkBAIC00MzksNyArNDM5LDcgQEAgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3RvclByZXZlbnRFeHRlbnNp
b25zKEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICBKU1ZhbHVlIG9iaiA9IGV4ZWMtPmFyZ3VtZW50
KDApOwogICAgIGlmICghb2JqLmlzT2JqZWN0KCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJy
b3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsICJPYmplY3QucHJldmVudEV4dGVuc2lvbnMg
Y2FuIG9ubHkgYmUgY2FsbGVkIG9uIE9iamVjdHMuIikpOworICAgICAgICByZXR1cm4gdGhyb3dW
TUVycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIk9iamVjdC5w
cmV2ZW50RXh0ZW5zaW9ucyBjYW4gb25seSBiZSBjYWxsZWQgb24gT2JqZWN0cy4iKSkpOwogICAg
IGFzT2JqZWN0KG9iaiktPnByZXZlbnRFeHRlbnNpb25zKGV4ZWMtPmdsb2JhbERhdGEoKSk7CiAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShvYmopOwogfQpAQCAtNDQ5LDcgKzQ0OSw3IEBAIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JJc1NlYWxlZChFeGVj
U3RhdGUqIGV4ZWMpCiAgICAgLy8gMS4gSWYgVHlwZShPKSBpcyBub3QgT2JqZWN0IHRocm93IGEg
VHlwZUVycm9yIGV4Y2VwdGlvbi4KICAgICBKU1ZhbHVlIG9iaiA9IGV4ZWMtPmFyZ3VtZW50KDAp
OwogICAgIGlmICghb2JqLmlzT2JqZWN0KCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Io
ZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsICJPYmplY3QuaXNTZWFsZWQgY2FuIG9ubHkgYmUg
Y2FsbGVkIG9uIE9iamVjdHMuIikpOworICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMs
IGNyZWF0ZVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIk9iamVjdC5pc1NlYWxlZCBjYW4g
b25seSBiZSBjYWxsZWQgb24gT2JqZWN0cy4iKSkpOwogICAgIEpTT2JqZWN0KiBvYmplY3QgPSBh
c09iamVjdChvYmopOwogCiAgICAgaWYgKGlzSlNGaW5hbE9iamVjdChvYmplY3QpKQpAQCAtNDc5
LDcgKzQ3OSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0
b3JJc0Zyb3plbihFeGVjU3RhdGUqIGV4ZWMpCiAgICAgLy8gMS4gSWYgVHlwZShPKSBpcyBub3Qg
T2JqZWN0IHRocm93IGEgVHlwZUVycm9yIGV4Y2VwdGlvbi4KICAgICBKU1ZhbHVlIG9iaiA9IGV4
ZWMtPmFyZ3VtZW50KDApOwogICAgIGlmICghb2JqLmlzT2JqZWN0KCkpCi0gICAgICAgIHJldHVy
biB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsICJPYmplY3QuaXNGcm96
ZW4gY2FuIG9ubHkgYmUgY2FsbGVkIG9uIE9iamVjdHMuIikpOworICAgICAgICByZXR1cm4gdGhy
b3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIk9iamVj
dC5pc0Zyb3plbiBjYW4gb25seSBiZSBjYWxsZWQgb24gT2JqZWN0cy4iKSkpOwogICAgIEpTT2Jq
ZWN0KiBvYmplY3QgPSBhc09iamVjdChvYmopOwogCiAgICAgaWYgKGlzSlNGaW5hbE9iamVjdChv
YmplY3QpKQpAQCAtNTA5LDcgKzUwOSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
b2JqZWN0Q29uc3RydWN0b3JJc0V4dGVuc2libGUoRXhlY1N0YXRlKiBleGVjKQogewogICAgIEpT
VmFsdWUgb2JqID0gZXhlYy0+YXJndW1lbnQoMCk7CiAgICAgaWYgKCFvYmouaXNPYmplY3QoKSkK
LSAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywg
Ik9iamVjdC5pc0V4dGVuc2libGUgY2FuIG9ubHkgYmUgY2FsbGVkIG9uIE9iamVjdHMuIikpOwor
ICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCBB
U0NJSUxpdGVyYWwoIk9iamVjdC5pc0V4dGVuc2libGUgY2FuIG9ubHkgYmUgY2FsbGVkIG9uIE9i
amVjdHMuIikpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihhc09iamVj
dChvYmopLT5pc0V4dGVuc2libGUoKSkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9PYmplY3RQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvT2JqZWN0UHJvdG90eXBlLmNwcAppbmRleCA2ZmFhMTY4NDg1ZGJjZjAwYWY4
ZjY3NDVmMGJjNWVmMGRhYmIwODEyLi41YWZiMGQyZjA4NDZjN2VkYzRiMDYxNjUzOTU3MTllNTQ3
MDhkZmVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RQ
cm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdFBy
b3RvdHlwZS5jcHAKQEAgLTE1Nyw3ICsxNTcsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIG9iamVjdFByb3RvRnVuY0RlZmluZUdldHRlcihFeGVjU3RhdGUqIGV4ZWMpCiAgICAgSlNW
YWx1ZSBnZXQgPSBleGVjLT5hcmd1bWVudCgxKTsKICAgICBDYWxsRGF0YSBjYWxsRGF0YTsKICAg
ICBpZiAoZ2V0Q2FsbERhdGEoZ2V0LCBjYWxsRGF0YSkgPT0gQ2FsbFR5cGVOb25lKQotICAgICAg
ICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVN5bnRheEVycm9yKGV4ZWMsICJpbnZh
bGlkIGdldHRlciB1c2FnZSIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBj
cmVhdGVTeW50YXhFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoImludmFsaWQgZ2V0dGVyIHVzYWdl
IikpKTsKIAogICAgIFByb3BlcnR5RGVzY3JpcHRvciBkZXNjcmlwdG9yOwogICAgIGRlc2NyaXB0
b3Iuc2V0R2V0dGVyKGdldCk7CkBAIC0xNzcsNyArMTc3LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBvYmplY3RQcm90b0Z1bmNEZWZpbmVTZXR0ZXIoRXhlY1N0YXRlKiBleGVjKQog
ICAgIEpTVmFsdWUgc2V0ID0gZXhlYy0+YXJndW1lbnQoMSk7CiAgICAgQ2FsbERhdGEgY2FsbERh
dGE7CiAgICAgaWYgKGdldENhbGxEYXRhKHNldCwgY2FsbERhdGEpID09IENhbGxUeXBlTm9uZSkK
LSAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVTeW50YXhFcnJvcihleGVj
LCAiaW52YWxpZCBzZXR0ZXIgdXNhZ2UiKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Io
ZXhlYywgY3JlYXRlU3ludGF4RXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJpbnZhbGlkIHNldHRl
ciB1c2FnZSIpKSk7CiAKICAgICBQcm9wZXJ0eURlc2NyaXB0b3IgZGVzY3JpcHRvcjsKICAgICBk
ZXNjcmlwdG9yLnNldFNldHRlcihzZXQpOwpAQCAtMjQ3LDcgKzI0Nyw3IEBAIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0UHJvdG9GdW5jVG9TdHJpbmcoRXhlY1N0YXRlKiBleGVj
KQogewogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+aG9zdFRoaXNWYWx1ZSgpOwogICAg
IGlmICh0aGlzVmFsdWUuaXNVbmRlZmluZWRPck51bGwoKSkKLSAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc05vbnRyaXZpYWxTdHJpbmcoZXhlYywgdGhpc1ZhbHVlLmlzVW5kZWZpbmVk
KCkgPyAiW29iamVjdCBVbmRlZmluZWRdIiA6ICJbb2JqZWN0IE51bGxdIikpOworICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTm9udHJpdmlhbFN0cmluZyhleGVjLCBTdHJpbmcodGhp
c1ZhbHVlLmlzVW5kZWZpbmVkKCkgPyBBU0NJSUxpdGVyYWwoIltvYmplY3QgVW5kZWZpbmVkXSIp
IDogQVNDSUlMaXRlcmFsKCJbb2JqZWN0IE51bGxdIikpKSk7CiAgICAgSlNPYmplY3QqIHRoaXNP
YmplY3QgPSB0aGlzVmFsdWUudG9PYmplY3QoZXhlYyk7CiAKICAgICBKU1N0cmluZyogcmVzdWx0
ID0gdGhpc09iamVjdC0+c3RydWN0dXJlKCktPm9iamVjdFRvU3RyaW5nVmFsdWUoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cENvbnN0cnVjdG9yLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cENvbnN0cnVjdG9yLmNwcApp
bmRleCA1N2VlN2RmMTRiNDk3NGJkZDQxMmQ0YzYyMGVlOTRjMDFjMGM4YmRkLi4xMjQ4ZmI0ZGFl
YTAxNDk3NGMxMzJhMDg5MzQzNWVhNjkyMzNlYjc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9SZWdFeHBDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwQ29uc3RydWN0b3IuY3BwCkBAIC0yNjIsNyArMjYyLDcg
QEAgSlNPYmplY3QqIGNvbnN0cnVjdFJlZ0V4cChFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IEEKIAogICAgIGlmIChhcmcwLmluaGVyaXRzKCZSZWdF
eHBPYmplY3Q6OnNfaW5mbykpIHsKICAgICAgICAgaWYgKCFhcmcxLmlzVW5kZWZpbmVkKCkpCi0g
ICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywg
IkNhbm5vdCBzdXBwbHkgZmxhZ3Mgd2hlbiBjb25zdHJ1Y3Rpbmcgb25lIFJlZ0V4cCBmcm9tIGFu
b3RoZXIuIikpOworICAgICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoZXhlYywgY3JlYXRlVHlw
ZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiQ2Fubm90IHN1cHBseSBmbGFncyB3aGVuIGNvbnN0
cnVjdGluZyBvbmUgUmVnRXhwIGZyb20gYW5vdGhlci4iKSkpOwogICAgICAgICAvLyBJZiBjYWxs
ZWQgYXMgYSBmdW5jdGlvbiwgdGhpcyBqdXN0IHJldHVybnMgdGhlIGZpcnN0IGFyZ3VtZW50IChz
ZWUgMTUuMTAuMy4xKS4KICAgICAgICAgaWYgKGNhbGxBc0NvbnN0cnVjdG9yKSB7CiAgICAgICAg
ICAgICBSZWdFeHAqIHJlZ0V4cCA9IHN0YXRpY19jYXN0PFJlZ0V4cE9iamVjdCo+KGFzT2JqZWN0
KGFyZzApKS0+cmVnRXhwKCk7CkBAIC0yODEsNyArMjgxLDcgQEAgSlNPYmplY3QqIGNvbnN0cnVj
dFJlZ0V4cChFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNv
bnN0IEEKICAgICAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICAgICAgcmV0
dXJuIDA7CiAgICAgICAgIGlmIChmbGFncyA9PSBJbnZhbGlkRmxhZ3MpCi0gICAgICAgICAgICBy
ZXR1cm4gdGhyb3dFcnJvcihleGVjLCBjcmVhdGVTeW50YXhFcnJvcihleGVjLCAiSW52YWxpZCBm
bGFncyBzdXBwbGllZCB0byBSZWdFeHAgY29uc3RydWN0b3IuIikpOworICAgICAgICAgICAgcmV0
dXJuIHRocm93RXJyb3IoZXhlYywgY3JlYXRlU3ludGF4RXJyb3IoZXhlYywgQVNDSUlMaXRlcmFs
KCJJbnZhbGlkIGZsYWdzIHN1cHBsaWVkIHRvIFJlZ0V4cCBjb25zdHJ1Y3Rvci4iKSkpOwogICAg
IH0KIAogICAgIFJlZ0V4cCogcmVnRXhwID0gUmVnRXhwOjpjcmVhdGUoZXhlYy0+Z2xvYmFsRGF0
YSgpLCBwYXR0ZXJuLCBmbGFncyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9SZWdFeHBPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
UmVnRXhwT2JqZWN0LmNwcAppbmRleCA2ZmQ5ZGIyOWMwNGFhMzZiOTNlYmZjYzhiMTU0ZmNkZmRl
MDNiYjBlLi5iMzQ2Yzc3Njk1NTJlNWE3NzgxNjU2ODI0YjMwNDhlZjViMzZlMWZmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBPYmplY3QuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVjdC5jcHAKQEAgLTEzMCw3
ICsxMzAsNyBAQCB2b2lkIFJlZ0V4cE9iamVjdDo6Z2V0UHJvcGVydHlOYW1lcyhKU09iamVjdCog
b2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5Tgogc3RhdGljIGJvb2wgcmVqZWN0KEV4
ZWNTdGF0ZSogZXhlYywgYm9vbCB0aHJvd0V4Y2VwdGlvbiwgY29uc3QgY2hhciogbWVzc2FnZSkK
IHsKICAgICBpZiAodGhyb3dFeGNlcHRpb24pCi0gICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMs
IG1lc3NhZ2UpOworICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwobWVz
c2FnZSkpOwogICAgIHJldHVybiBmYWxzZTsKIH0KIApAQCAtMTkxLDcgKzE5MSw3IEBAIEpTVmFs
dWUgcmVnRXhwT2JqZWN0U291cmNlKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwg
UHJvcGVydHlOYW1lKQogICAgIC8vIHNvdXJjZSBjYW5ub3QgZXZlciB2YWxpZGx5IGJlICIiLiBJ
ZiB0aGUgc291cmNlIGlzIGVtcHR5LCByZXR1cm4gYSBkaWZmZXJlbnQgUGF0dGVybgogICAgIC8v
IHRoYXQgd291bGQgbWF0Y2ggdGhlIHNhbWUgdGhpbmcuCiAgICAgaWYgKCFsZW5ndGgpCi0gICAg
ICAgIHJldHVybiBqc1N0cmluZyhleGVjLCAiKD86KSIpOworICAgICAgICByZXR1cm4ganNOb250
cml2aWFsU3RyaW5nKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiKD86KSIpKTsKIAogICAgIC8vIGVhcmx5
IHJldHVybiBmb3Igc3RyaW5ncyB0aGF0IGRvbid0IGNvbnRhaW4gYSBmb3J3YXJkcyBzbGFzaCBh
bmQgTGluZVRlcm1pbmF0b3IKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyAr
K2kpIHsKQEAgLTI1MSw5ICsyNTEsOSBAQCBKU1ZhbHVlIHJlZ0V4cE9iamVjdFNvdXJjZShFeGVj
U3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIFByb3BlcnR5TmFtZSkKICAgICAgICAgICAg
IGVsc2UgaWYgKGNoID09ICdccicpCiAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgncicp
OwogICAgICAgICAgICAgZWxzZSBpZiAoY2ggPT0gMHgyMDI4KQotICAgICAgICAgICAgICAgIHJl
c3VsdC5hcHBlbmQoInUyMDI4Iik7CisgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZExpdGVy
YWwoInUyMDI4Iik7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgcmVzdWx0LmFw
cGVuZCgidTIwMjkiKTsKKyAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kTGl0ZXJhbCgidTIw
MjkiKTsKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKGNoKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwUHJvdG90eXBl
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cFByb3RvdHlwZS5jcHAK
aW5kZXggYzIyZTZkMDM5ZDMyOTkxZjI0NzJlYTkyNTU1M2UwYzFiYTIzNjEzMC4uM2M3NDJhMGQz
MDUxNTA3YTMxNWE4N2I0ZmQzNTI3Mjg5NGNiZDFhMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwUHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9SZWdFeHBQcm90b3R5cGUuY3BwCkBAIC0xMDYsNyArMTA2LDcgQEAg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWdFeHBQcm90b0Z1bmNDb21waWxlKEV4ZWNT
dGF0ZSogZXhlYykKICAgICAKICAgICBpZiAoYXJnMC5pbmhlcml0cygmUmVnRXhwT2JqZWN0Ojpz
X2luZm8pKSB7CiAgICAgICAgIGlmICghYXJnMS5pc1VuZGVmaW5lZCgpKQotICAgICAgICAgICAg
cmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgIkNhbm5vdCBz
dXBwbHkgZmxhZ3Mgd2hlbiBjb25zdHJ1Y3Rpbmcgb25lIFJlZ0V4cCBmcm9tIGFub3RoZXIuIikp
OworICAgICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3Io
ZXhlYywgQVNDSUlMaXRlcmFsKCJDYW5ub3Qgc3VwcGx5IGZsYWdzIHdoZW4gY29uc3RydWN0aW5n
IG9uZSBSZWdFeHAgZnJvbSBhbm90aGVyLiIpKSk7CiAgICAgICAgIHJlZ0V4cCA9IGFzUmVnRXhw
T2JqZWN0KGFyZzApLT5yZWdFeHAoKTsKICAgICB9IGVsc2UgewogICAgICAgICBTdHJpbmcgcGF0
dGVybiA9ICFleGVjLT5hcmd1bWVudENvdW50KCkgPyBTdHJpbmcoIiIpIDogYXJnMC50b1N0cmlu
ZyhleGVjKS0+dmFsdWUoZXhlYyk7CkBAIC0xMTksNyArMTE5LDcgQEAgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCByZWdFeHBQcm90b0Z1bmNDb21waWxlKEV4ZWNTdGF0ZSogZXhlYykKICAg
ICAgICAgICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgICAgICAgICAgaWYgKGZsYWdz
ID09IEludmFsaWRGbGFncykKLSAgICAgICAgICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4
ZWMsIGNyZWF0ZVN5bnRheEVycm9yKGV4ZWMsICJJbnZhbGlkIGZsYWdzIHN1cHBsaWVkIHRvIFJl
Z0V4cCBjb25zdHJ1Y3Rvci4iKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJv
cihleGVjLCBjcmVhdGVTeW50YXhFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkludmFsaWQgZmxh
Z3Mgc3VwcGxpZWQgdG8gUmVnRXhwIGNvbnN0cnVjdG9yLiIpKSk7CiAgICAgICAgIH0KICAgICAg
ICAgcmVnRXhwID0gUmVnRXhwOjpjcmVhdGUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBwYXR0ZXJuLCBm
bGFncyk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U3RyaW5nT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ09i
amVjdC5jcHAKaW5kZXggNmMxZjE2ZDYzZWI3ZmIyOWI4ZDA1MWRmMTQwYmNkMzBlZmRhMjU3OS4u
MTEzZGVlMTY1YzUxMTQ4NDUwZDE0YzZiZDZiNjVjYzYwNjc2NjQ5YyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3QuY3BwCkBAIC04NSwyNyArODUsMjcg
QEAgYm9vbCBTdHJpbmdPYmplY3Q6OmRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiBvYmplY3Qs
IEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHkKICAgICBpZiAocHJvcGVydHlOYW1lID09IGV4ZWMt
PnByb3BlcnR5TmFtZXMoKS5sZW5ndGgpIHsKICAgICAgICAgaWYgKCFvYmplY3QtPmlzRXh0ZW5z
aWJsZSgpKSB7CiAgICAgICAgICAgICBpZiAodGhyb3dFeGNlcHRpb24pCi0gICAgICAgICAgICAg
ICAgdGhyb3dFcnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgIkF0dGVtcHRpbmcgdG8g
ZGVmaW5lIHByb3BlcnR5IG9uIG9iamVjdCB0aGF0IGlzIG5vdCBleHRlbnNpYmxlLiIpKTsKKyAg
ICAgICAgICAgICAgICB0aHJvd0Vycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCBBU0NJ
SUxpdGVyYWwoIkF0dGVtcHRpbmcgdG8gZGVmaW5lIHByb3BlcnR5IG9uIG9iamVjdCB0aGF0IGlz
IG5vdCBleHRlbnNpYmxlLiIpKSk7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAg
IH0KICAgICAgICAgaWYgKGRlc2NyaXB0b3IuY29uZmlndXJhYmxlUHJlc2VudCgpICYmIGRlc2Ny
aXB0b3IuY29uZmlndXJhYmxlKCkpIHsKICAgICAgICAgICAgIGlmICh0aHJvd0V4Y2VwdGlvbikK
LSAgICAgICAgICAgICAgICB0aHJvd0Vycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCAi
QXR0ZW1wdGluZyB0byBjb25maWd1cmFibGUgYXR0cmlidXRlIG9mIHVuY29uZmlndXJhYmxlIHBy
b3BlcnR5LiIpKTsKKyAgICAgICAgICAgICAgICB0aHJvd0Vycm9yKGV4ZWMsIGNyZWF0ZVR5cGVF
cnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkF0dGVtcHRpbmcgdG8gY29uZmlndXJhYmxlIGF0dHJp
YnV0ZSBvZiB1bmNvbmZpZ3VyYWJsZSBwcm9wZXJ0eS4iKSkpOwogICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgICAgICB9CiAgICAgICAgIGlmIChkZXNjcmlwdG9yLmVudW1lcmFibGVQcmVz
ZW50KCkgJiYgZGVzY3JpcHRvci5lbnVtZXJhYmxlKCkpIHsKICAgICAgICAgICAgIGlmICh0aHJv
d0V4Y2VwdGlvbikKLSAgICAgICAgICAgICAgICB0aHJvd0Vycm9yKGV4ZWMsIGNyZWF0ZVR5cGVF
cnJvcihleGVjLCAiQXR0ZW1wdGluZyB0byBjaGFuZ2UgZW51bWVyYWJsZSBhdHRyaWJ1dGUgb2Yg
dW5jb25maWd1cmFibGUgcHJvcGVydHkuIikpOworICAgICAgICAgICAgICAgIHRocm93RXJyb3Io
ZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiQXR0ZW1wdGluZyB0byBj
aGFuZ2UgZW51bWVyYWJsZSBhdHRyaWJ1dGUgb2YgdW5jb25maWd1cmFibGUgcHJvcGVydHkuIikp
KTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogICAgICAgICBpZiAoZGVz
Y3JpcHRvci5pc0FjY2Vzc29yRGVzY3JpcHRvcigpKSB7CiAgICAgICAgICAgICBpZiAodGhyb3dF
eGNlcHRpb24pCi0gICAgICAgICAgICAgICAgdGhyb3dFcnJvcihleGVjLCBjcmVhdGVUeXBlRXJy
b3IoZXhlYywgIkF0dGVtcHRpbmcgdG8gY2hhbmdlIGFjY2VzcyBtZWNoYW5pc20gZm9yIGFuIHVu
Y29uZmlndXJhYmxlIHByb3BlcnR5LiIpKTsKKyAgICAgICAgICAgICAgICB0aHJvd0Vycm9yKGV4
ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkF0dGVtcHRpbmcgdG8gY2hh
bmdlIGFjY2VzcyBtZWNoYW5pc20gZm9yIGFuIHVuY29uZmlndXJhYmxlIHByb3BlcnR5LiIpKSk7
CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICAgICAgaWYgKGRlc2Ny
aXB0b3Iud3JpdGFibGVQcmVzZW50KCkgJiYgZGVzY3JpcHRvci53cml0YWJsZSgpKSB7CiAgICAg
ICAgICAgICBpZiAodGhyb3dFeGNlcHRpb24pCi0gICAgICAgICAgICAgICAgdGhyb3dFcnJvcihl
eGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgIkF0dGVtcHRpbmcgdG8gY2hhbmdlIHdyaXRhYmxl
IGF0dHJpYnV0ZSBvZiB1bmNvbmZpZ3VyYWJsZSBwcm9wZXJ0eS4iKSk7CisgICAgICAgICAgICAg
ICAgdGhyb3dFcnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJB
dHRlbXB0aW5nIHRvIGNoYW5nZSB3cml0YWJsZSBhdHRyaWJ1dGUgb2YgdW5jb25maWd1cmFibGUg
cHJvcGVydHkuIikpKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogICAg
ICAgICBpZiAoIWRlc2NyaXB0b3IudmFsdWUoKSkKQEAgLTExMyw3ICsxMTMsNyBAQCBib29sIFN0
cmluZ09iamVjdDo6ZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRl
KiBleGVjLCBQcm9wZXJ0eQogICAgICAgICBpZiAocHJvcGVydHlOYW1lID09IGV4ZWMtPnByb3Bl
cnR5TmFtZXMoKS5sZW5ndGggJiYgc2FtZVZhbHVlKGV4ZWMsIGRlc2NyaXB0b3IudmFsdWUoKSwg
anNOdW1iZXIodGhpc09iamVjdC0+aW50ZXJuYWxWYWx1ZSgpLT5sZW5ndGgoKSkpKQogICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIGlmICh0aHJvd0V4Y2VwdGlvbikKLSAgICAgICAg
ICAgIHRocm93RXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsICJBdHRlbXB0aW5nIHRv
IGNoYW5nZSB2YWx1ZSBvZiBhIHJlYWRvbmx5IHByb3BlcnR5LiIpKTsKKyAgICAgICAgICAgIHRo
cm93RXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiQXR0ZW1w
dGluZyB0byBjaGFuZ2UgdmFsdWUgb2YgYSByZWFkb25seSBwcm9wZXJ0eS4iKSkpOwogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcAppbmRleCBhMWUwMTMzOWNjMDE0MjhkYmJlMzI4OWE5
YzVmNGJmNzc1ZTNkMjVmLi43MzYzM2E2MGIzMzQxM2NmMDVhNjNhMDEwYThkMmRlNjgzMDMyNGMx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5
cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlw
ZS5jcHAKQEAgLTI4Nyw3ICsyODcsNyBAQCBzdGF0aWMgQUxXQVlTX0lOTElORSBKU1ZhbHVlIGpz
U3BsaWNlU3Vic3RyaW5ncyhFeGVjU3RhdGUqIGV4ZWMsIEpTU3RyaW5nKiBzb3VyYwogICAgICAg
ICB0b3RhbExlbmd0aCArPSBzdWJzdHJpbmdSYW5nZXNbaV0ubGVuZ3RoOwogCiAgICAgaWYgKCF0
b3RhbExlbmd0aCkKLSAgICAgICAgcmV0dXJuIGpzU3RyaW5nKGV4ZWMsICIiKTsKKyAgICAgICAg
cmV0dXJuIGpzRW1wdHlTdHJpbmcoZXhlYyk7CiAKICAgICBpZiAoc291cmNlLmlzOEJpdCgpKSB7
CiAgICAgICAgIExDaGFyKiBidWZmZXI7CkBAIC0zNDgsNyArMzQ4LDcgQEAgc3RhdGljIEFMV0FZ
U19JTkxJTkUgSlNWYWx1ZSBqc1NwbGljZVN1YnN0cmluZ3NXaXRoU2VwYXJhdG9ycyhFeGVjU3Rh
dGUqIGV4ZWMsIEoKICAgICB9CiAKICAgICBpZiAoIXRvdGFsTGVuZ3RoKQotICAgICAgICByZXR1
cm4ganNTdHJpbmcoZXhlYywgIiIpOworICAgICAgICByZXR1cm4ganNFbXB0eVN0cmluZyhleGVj
KTsKIAogICAgIGlmIChzb3VyY2UuaXM4Qml0KCkgJiYgYWxsU2VwZXJhdG9yczhCaXQpIHsKICAg
ICAgICAgTENoYXIqIGJ1ZmZlcjsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>161847</attachid>
            <date>2012-09-02 13:27:22 -0700</date>
            <delta_ts>2012-09-02 14:09:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-95633-20120902132708.patch</filename>
            <type>text/plain</type>
            <size>105213</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI3MzkxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
ZmYxM2EzMGY2MjM4MWIzZjQxNGIxMzhlMjI0MDFhZjY2MWYzMjIzLi5kYzZkNmU5NGZiYjk0NjYw
Y2M1NTBiZjZkN2U1MjI0MzQ3ZTUwMTRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxODYgQEAKKzIwMTItMDktMDIgIEJlbmphbWluIFBvdWxhaW4gIDxicG91bGFpbkBhcHBs
ZS5jb20+CisKKyAgICAgICAgSW1wcm92ZSBKU0MgdXNlIG9mIFN0cmluZ3MgYWZ0ZXIgdGhlIFVT
dHJpbmctPlN0cmluZyBjaGFuZ2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTk1NjMzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgR2VvZmZyZXkgR2FyZW4u
CisKKyAgICAgICAgVGhpcyBwYXRjaCBpbXByb3ZlIHRoZSB1c2Ugb2Ygc3RyaW5ncyBpbiB0aGUg
SlNDIHJ1bnRpbWUuCisKKyAgICAgICAgVGhlIGluaXRpYWxpemF0aW9uIG9mIElkZW50aWZpZXIg
aXMgbGVmdCBmb3IgZnV0dXJlIHBhdGNoZXMuCisKKyAgICAgICAgVGhlIGltcHJvdmVtZW50cyBh
cmUgdGhlIGZvbGxvd2luZzoKKyAgICAgICAgLTUlIGZhc3RlciB0byByYWlzZSBvbmUgb2YgdGhl
IG1vZGlmaWVkIGV4Y2VwdGlvbi4KKyAgICAgICAgLTMgdGltZXMgZmFzdGVyIHRvIGV4ZWN1dGUg
Qm9vbGVhbjo6dG9TdHJpbmcoKQorCisgICAgICAgIE1vc3Qgb2YgdGhlIGNoYW5nZXMgYXJlIGp1
c3QgYWJvdXQgdXNpbmcgdGhlIG5ldyBtZXRob2RzCisgICAgICAgIGZvciBzdHJpbmcgbGl0ZXJh
bHMuCisKKyAgICAgICAgV2l0aCB0aGUgY2hhbmdlcywgdGhlIGJpbmFyeSBvbiB4ODZfNjQgZ2V0
cyAxNzYgYnl0ZXMgc21hbGxlci4KKworICAgICAgICAqIEFQSS9KU0NhbGxiYWNrT2JqZWN0RnVu
Y3Rpb25zLmg6CisgICAgICAgIChKU0M6Ojo6c3RhdGljRnVuY3Rpb25HZXR0ZXIpOgorICAgICAg
ICAoSlNDOjo6OmNhbGxiYWNrR2V0dGVyKToKKyAgICAgICAgKiBBUEkvSlNDb250ZXh0UmVmLmNw
cDoKKyAgICAgICAgKEpTQ29udGV4dENyZWF0ZUJhY2t0cmFjZSk6CisgICAgICAgICogQVBJL0pT
T2JqZWN0UmVmLmNwcDoKKyAgICAgICAgKEpTT2JqZWN0TWFrZUZ1bmN0aW9uV2l0aENhbGxiYWNr
KToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suY3BwOgorICAgICAgICAoSlNDOjp2YWx1
ZVRvU291cmNlU3RyaW5nKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpuYW1lRm9yUmVnaXN0
ZXIpOgorICAgICAgICAqIGludGVycHJldGVyL0ludGVycHJldGVyLmNwcDoKKyAgICAgICAgKEpT
Qzo6SW50ZXJwcmV0ZXI6OmFkZFN0YWNrVHJhY2VJZk5lY2Vzc2FyeSk6CisgICAgICAgICogcnVu
dGltZS9BcnJheUNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Y29uc3RydWN0QXJyYXlX
aXRoU2l6ZVF1aXJrKToKKyAgICAgICAgKiBydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcDoKKyAg
ICAgICAgKEpTQzo6c2hpZnQpOgorICAgICAgICAoSlNDOjp1bnNoaWZ0KToKKyAgICAgICAgKEpT
Qzo6YXJyYXlQcm90b0Z1bmNQb3ApOgorICAgICAgICAoSlNDOjphcnJheVByb3RvRnVuY1JldmVy
c2UpOgorICAgICAgICAqIHJ1bnRpbWUvQm9vbGVhblByb3RvdHlwZS5jcHA6CisgICAgICAgIChK
U0M6OmJvb2xlYW5Qcm90b0Z1bmNUb1N0cmluZyk6IEluc3RlYWQgb2YgaW5zdGFuY2lhdGluZyBu
ZXcgc3RyaW5ncywgcmV1c2UgdGhlCisgICAgICAgIGtleXdvcmRzIGF2YWlsYWJsZSBpbiBTbWFs
bFN0cmluZ3MuIEF2b2lkaW5nIHRoZSBjcmVhdGlvbiBvZiB0aGUgSlNTdHJpbmcgYW5kIFN0cmlu
Z0ltcGwKKyAgICAgICAgbWFrZXMgdGhlIG1ldGhvZCBzaWduaWZpY2FudGx5IGZhc3Rlci4KKwor
ICAgICAgICAqIHJ1bnRpbWUvRGF0ZUNvbnZlcnNpb24uY3BwOgorICAgICAgICAoSlNDOjpmb3Jt
YXREYXRlVGltZSk6CisgICAgICAgICogcnVudGltZS9EYXRlUHJvdG90eXBlLmNwcDoKKyAgICAg
ICAgKEpTQzo6Zm9ybWF0TG9jYWxlRGF0ZSk6CisgICAgICAgIChKU0M6OmZvcm1hdGVEYXRlSW5z
dGFuY2UpOgorICAgICAgICAoSlNDOjpkYXRlUHJvdG9GdW5jVG9JU09TdHJpbmcpOgorICAgICAg
ICBDaGFuZ2UgdGhlIHdheSB3ZSB1c2Ugc25wcmludGYoKSBmb3IgY2xhcml0eSBhbmQgcGVyZm9y
bWFuY2UuCisKKyAgICAgICAgSW5zdGVhZCBvZiBhbGxvY2F0aW5nIG9uZSBleHRyYSBieXRlIHRv
IHB1dCBhIHplcm8gImp1c3QgaW4gY2FzZSIsIHdlIHVzZSB0aGUgc2l6ZSByZXR1cm5lZAorICAg
ICAgICBieSBzbnByaW50ZigpLgorICAgICAgICBUbyBwcmV2ZW50IGFueSBvdmVyZmxvdyBmcm9t
IGEgcHJvZ3JhbW1pbmcgbWlzdGFrZSwgd2UgZXhwbGljaXRlbHkgdGVzdCBmb3Igb3ZlcmZsb3cg
YW5kCisgICAgICAgIHJldHVybiBhbiBlbXB0eSBzdHJpbmcuCisKKyAgICAgICAgKEpTQzo6ZGF0
ZVByb3RvRnVuY1RvSlNPTik6CisgICAgICAgICogcnVudGltZS9FcnJvci5jcHA6CisgICAgICAg
IChKU0M6OmNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKToKKyAgICAgICAgKEpTQzo6dGhy
b3dUeXBlRXJyb3IpOgorICAgICAgICAoSlNDOjp0aHJvd1N5bnRheEVycm9yKToKKyAgICAgICAg
KiBydW50aW1lL0Vycm9yLmg6CisgICAgICAgIChKU0M6OlN0cmljdE1vZGVUeXBlRXJyb3JGdW5j
dGlvbjo6Y3JlYXRlKToKKyAgICAgICAgKiBydW50aW1lL0Vycm9yUHJvdG90eXBlLmNwcDoKKyAg
ICAgICAgKEpTQzo6RXJyb3JQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpT
Qzo6ZXJyb3JQcm90b0Z1bmNUb1N0cmluZyk6CisgICAgICAgIFVzaW5nIGEgbnVsbCBTdHJpbmcg
aXMgY29ycmVjdCBiZWNhdXNlICg4KSB1c2VzIGpzU3RyaW5nKCksICg5KSB0ZXN0cyBmb3IgYSBs
ZW5ndGggb2YgMC4KKworICAgICAgICAqIHJ1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5jcHA6Cisg
ICAgICAgIChKU0M6OkludGVycnVwdGVkRXhlY3V0aW9uRXJyb3I6OmRlZmF1bHRWYWx1ZSk6Cisg
ICAgICAgIChKU0M6OlRlcm1pbmF0ZWRFeGVjdXRpb25FcnJvcjo6ZGVmYXVsdFZhbHVlKToKKyAg
ICAgICAgKEpTQzo6Y3JlYXRlU3RhY2tPdmVyZmxvd0Vycm9yKToKKyAgICAgICAgKEpTQzo6Y3Jl
YXRlT3V0T2ZNZW1vcnlFcnJvcik6CisgICAgICAgICogcnVudGltZS9FeGVjdXRhYmxlLmNwcDoK
KyAgICAgICAgKEpTQzo6RXZhbEV4ZWN1dGFibGU6OmNvbXBpbGVJbnRlcm5hbCk6CisgICAgICAg
IChKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZTo6cGFyYW1TdHJpbmcpOgorICAgICAgICAqIHJ1bnRp
bWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OmNvbnN0cnVjdEZ1bmN0
aW9uKToKKyAgICAgICAgKEpTQzo6Y29uc3RydWN0RnVuY3Rpb25Ta2lwcGluZ0V2YWxFbmFibGVk
Q2hlY2spOgorICAgICAgICAqIHJ1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuaDoKKyAgICAgICAg
KEpTQzo6RnVuY3Rpb25Qcm90b3R5cGU6OmNyZWF0ZSk6CisgICAgICAgIFVzaW5nIGEgbnVsbCBT
dHJpbmcgZm9yIHRoZSBuYW1lIGlzIGNvcnJlY3QgYmVjYXVzZSBJbnRlcm5hbEZ1bmN0aW9uIHVz
ZXMganNTdHJpbmcoKQorICAgICAgICB0byBjcmVhdGUgdGhlIG5hbWUgdmFsdWUuCisKKyAgICAg
ICAgKiBydW50aW1lL0ludGVybmFsRnVuY3Rpb24uY3BwOgorICAgICAgICAoSlNDOjpJbnRlcm5h
bEZ1bmN0aW9uOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIFRoZXJlIGlzIG5vIG5lZWQgdG8g
Y3JlYXRlIGFuIGVtcHR5IHN0cmluZyBmb3IgYSBudWxsIHN0cmluZywganNTdHJpbmcoKSBoYW5k
bGUgYm90aAorICAgICAgICBjYXNlcyBhcyBlbXB0eSBKU1N0cmluZy4KKworICAgICAgICAqIHJ1
bnRpbWUvSlNBcnJheS5jcHA6CisgICAgICAgIChKU0M6OnJlamVjdCk6CisgICAgICAgIChKU0M6
OlNwYXJzZUFycmF5VmFsdWVNYXA6OnB1dCk6CisgICAgICAgIChKU0M6OkpTQXJyYXk6OnB1dCk6
CisgICAgICAgIChKU0M6OkpTQXJyYXk6OnB1dEJ5SW5kZXhCZXlvbmRWZWN0b3JMZW5ndGgpOgor
ICAgICAgICAoSlNDOjpKU0FycmF5OjpwdXREaXJlY3RJbmRleEJleW9uZFZlY3Rvckxlbmd0aCk6
CisgICAgICAgIChKU0M6OkpTQXJyYXk6OnNldExlbmd0aCk6CisgICAgICAgIChKU0M6OkpTQXJy
YXk6OnBvcCk6CisgICAgICAgIChKU0M6OkpTQXJyYXk6OnB1c2gpOgorICAgICAgICAqIHJ1bnRp
bWUvSlNGdW5jdGlvbi5jcHA6CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246OmZpbmlzaENyZWF0
aW9uKTogU2FtZSBpc3N1ZSBhcyBJbnRlcm5hbEZ1bmN0aW9uOjpmaW5pc2hDcmVhdGlvbi4KKwor
ICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpjYWxsZXJHZXR0ZXIpOgorICAgICAgICAoSlNDOjpK
U0Z1bmN0aW9uOjpkZWZpbmVPd25Qcm9wZXJ0eSk6CisgICAgICAgICogcnVudGltZS9KU0dsb2Jh
bERhdGEuY3BwOgorICAgICAgICAoSlNDOjplbmFibGVBc3NlbWJsZXIpOiBVc2UgQ0ZTVFIoKSBp
bnN0ZWFkIG9mIENGU3RyaW5nQ3JlYXRlV2l0aENTdHJpbmcoKS4KKyAgICAgICAgQ0ZTdHJpbmdD
cmVhdGVXaXRoQ1N0cmluZygpIGNvcHkgdGhlIGNvbnRlbnQgYW5kIG1heSBjaG9vc2UgdG8gZGVj
b2RlIHRoZSBkYXRhLgorICAgICAgICBDRlNUUigpIGlzIG11Y2ggbW9yZSBlZmZpY2llbnQuCisK
KyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNH
bG9iYWxPYmplY3Q6OnJlc2V0KToKKyAgICAgICAgSlNGdW5jdGlvbiB1c2VzIGpzU3RyaW5nKCkg
dG8gY3JlYXRlIHRoZSBuYW1lLCB3ZSBjYW4gdXNlIG51bGwgc3RyaW5ncyBpbnN0ZWFkCisgICAg
ICAgIG9mIGNyZWF0aW5nIGVtcHR5IHN0cmluZ3MuCisKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxP
YmplY3Q6OmNyZWF0ZVRocm93VHlwZUVycm9yKTogZGl0dG8uCisgICAgICAgICogcnVudGltZS9K
U0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5jcHA6CisgICAgICAgIChKU0M6OmVuY29kZSk6CisgICAg
ICAgIChKU0M6OmRlY29kZSk6CisgICAgICAgIChKU0M6Omdsb2JhbEZ1bmNFdmFsKToKKyAgICAg
ICAgKiBydW50aW1lL0pTT05PYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpTdHJpbmdpZmllcjo6
YXBwZW5kU3RyaW5naWZpZWRWYWx1ZSk6CisgICAgICAgIChKU0M6OlN0cmluZ2lmaWVyOjpIb2xk
ZXI6OmFwcGVuZE5leHRQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OkpTT05Qcm90b0Z1bmNQYXJz
ZSk6CisgICAgICAgIChKU0M6OkpTT05Qcm90b0Z1bmNTdHJpbmdpZnkpOgorICAgICAgICAqIHJ1
bnRpbWUvSlNPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6cHV0KToKKyAgICAg
ICAgKEpTQzo6SlNPYmplY3Q6OmRlZmF1bHRWYWx1ZSk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0
OjpoYXNJbnN0YW5jZSk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpkZWZpbmVPd25Qcm9wZXJ0
eSk6CisgICAgICAgICogcnVudGltZS9KU1N0cmluZy5jcHA6CisgICAgICAgIFJldHVybiBhbiBl
bXB0eSBKU1N0cmluZyB0byBhdm9pZCB0aGUgY3JlYXRpb24gb2YgYSB0ZW1wb3JhcnkgZW1wdHkg
U3RyaW5nLgorCisgICAgICAgIChKU0M6OkpTUm9wZVN0cmluZzo6Z2V0SW5kZXhTbG93Q2FzZSk6
CisgICAgICAgICogcnVudGltZS9KU1N0cmluZy5oOgorICAgICAgICAoSlNDKTogUmVtb3ZlIHRo
ZSB2ZXJzaW9ucyBvZiBqc05vbnRyaXZpYWxTdHJpbmcoKSB0YWtpbmcgYSBjaGFyKi4gQWxsIHRo
ZSBjYWxsZXJzCisgICAgICAgIGhhdmUgYmVlbiByZXBsYWNlZCBieSBjYWxscyB1c2luZyBBU0NJ
SUxpdGVyYWwuCisKKyAgICAgICAgKiBydW50aW1lL0pTVmFsdWUuY3BwOgorICAgICAgICAoSlND
OjpKU1ZhbHVlOjpwdXRUb1ByaW1pdGl2ZSk6CisgICAgICAgICogcnVudGltZS9MaXRlcmFsUGFy
c2VyLmNwcDoKKyAgICAgICAgKEpTQzo6OjpMZXhlcjo6bGV4KToKKyAgICAgICAgKEpTQzo6OjpM
ZXhlcjo6bGV4U3RyaW5nKToKKyAgICAgICAgKEpTQzo6OjpMZXhlcjo6bGV4TnVtYmVyKToKKyAg
ICAgICAgKEpTQzo6OjpwYXJzZSk6CisgICAgICAgICogcnVudGltZS9MaXRlcmFsUGFyc2VyLmg6
CisgICAgICAgIChKU0M6OkxpdGVyYWxQYXJzZXI6OmdldEVycm9yTWVzc2FnZSk6CisgICAgICAg
ICogcnVudGltZS9OdW1iZXJQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpudW1iZXJQcm90
b0Z1bmNUb0V4cG9uZW50aWFsKToKKyAgICAgICAgKEpTQzo6bnVtYmVyUHJvdG9GdW5jVG9GaXhl
ZCk6CisgICAgICAgIChKU0M6Om51bWJlclByb3RvRnVuY1RvUHJlY2lzaW9uKToKKyAgICAgICAg
KEpTQzo6bnVtYmVyUHJvdG9GdW5jVG9TdHJpbmcpOgorICAgICAgICAqIHJ1bnRpbWUvT2JqZWN0
Q29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpvYmplY3RDb25zdHJ1Y3RvckdldFByb3Rv
dHlwZU9mKToKKyAgICAgICAgKEpTQzo6b2JqZWN0Q29uc3RydWN0b3JHZXRPd25Qcm9wZXJ0eURl
c2NyaXB0b3IpOgorICAgICAgICAoSlNDOjpvYmplY3RDb25zdHJ1Y3RvckdldE93blByb3BlcnR5
TmFtZXMpOgorICAgICAgICAoSlNDOjpvYmplY3RDb25zdHJ1Y3RvcktleXMpOgorICAgICAgICAo
SlNDOjp0b1Byb3BlcnR5RGVzY3JpcHRvcik6CisgICAgICAgIChKU0M6Om9iamVjdENvbnN0cnVj
dG9yRGVmaW5lUHJvcGVydHkpOgorICAgICAgICAoSlNDOjpvYmplY3RDb25zdHJ1Y3RvckRlZmlu
ZVByb3BlcnRpZXMpOgorICAgICAgICAoSlNDOjpvYmplY3RDb25zdHJ1Y3RvckNyZWF0ZSk6Cisg
ICAgICAgIChKU0M6Om9iamVjdENvbnN0cnVjdG9yU2VhbCk6CisgICAgICAgIChKU0M6Om9iamVj
dENvbnN0cnVjdG9yRnJlZXplKToKKyAgICAgICAgKEpTQzo6b2JqZWN0Q29uc3RydWN0b3JQcmV2
ZW50RXh0ZW5zaW9ucyk6CisgICAgICAgIChKU0M6Om9iamVjdENvbnN0cnVjdG9ySXNTZWFsZWQp
OgorICAgICAgICAoSlNDOjpvYmplY3RDb25zdHJ1Y3RvcklzRnJvemVuKToKKyAgICAgICAgKEpT
Qzo6b2JqZWN0Q29uc3RydWN0b3JJc0V4dGVuc2libGUpOgorICAgICAgICAqIHJ1bnRpbWUvT2Jq
ZWN0UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6b2JqZWN0UHJvdG9GdW5jRGVmaW5lR2V0
dGVyKToKKyAgICAgICAgKEpTQzo6b2JqZWN0UHJvdG9GdW5jRGVmaW5lU2V0dGVyKToKKyAgICAg
ICAgKEpTQzo6b2JqZWN0UHJvdG9GdW5jVG9TdHJpbmcpOgorICAgICAgICAqIHJ1bnRpbWUvUmVn
RXhwQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RSZWdFeHApOgorICAg
ICAgICAqIHJ1bnRpbWUvUmVnRXhwT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6cmVqZWN0KToK
KyAgICAgICAgKEpTQzo6cmVnRXhwT2JqZWN0U291cmNlKToKKyAgICAgICAgKiBydW50aW1lL1Jl
Z0V4cFByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OnJlZ0V4cFByb3RvRnVuY0NvbXBpbGUp
OgorICAgICAgICAqIHJ1bnRpbWUvU3RyaW5nT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6U3Ry
aW5nT2JqZWN0OjpkZWZpbmVPd25Qcm9wZXJ0eSk6CisgICAgICAgICogcnVudGltZS9TdHJpbmdQ
cm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpqc1NwbGljZVN1YnN0cmluZ3MpOgorICAgICAg
ICAoSlNDOjpqc1NwbGljZVN1YnN0cmluZ3NXaXRoU2VwYXJhdG9ycyk6CisKIDIwMTItMDktMDEg
IEdlb2ZmcmV5IEdhcmVuICA8Z2dhcmVuQGFwcGxlLmNvbT4KIAogICAgICAgICBSb2xsZWQgYmFj
ayBvdXQgYSBwaWVjZSBvZiA8aHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMTI3Mjkz
PgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0
RnVuY3Rpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3RG
dW5jdGlvbnMuaAppbmRleCA4MzI2YzA1NzlhYTA3MWMzNzU3MzdlZjY0MjdjZTMxZDdhYzYwMTU3
Li4wNjkxZGFmYzMwNTU1NzQ0MTdjMTE5MWZiZTJhMDM4MGQyODgyMTJiIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMuaApA
QCAtNTY4LDcgKzU2OCw3IEBAIEpTVmFsdWUgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpzdGF0
aWNGdW5jdGlvbkdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUKICAgICAgICAgfQogICAg
IH0KIAotICAgIHJldHVybiB0aHJvd0Vycm9yKGV4ZWMsIGNyZWF0ZVJlZmVyZW5jZUVycm9yKGV4
ZWMsICJTdGF0aWMgZnVuY3Rpb24gcHJvcGVydHkgZGVmaW5lZCB3aXRoIE5VTEwgY2FsbEFzRnVu
Y3Rpb24gY2FsbGJhY2suIikpOworICAgIHJldHVybiB0aHJvd0Vycm9yKGV4ZWMsIGNyZWF0ZVJl
ZmVyZW5jZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiU3RhdGljIGZ1bmN0aW9uIHByb3BlcnR5
IGRlZmluZWQgd2l0aCBOVUxMIGNhbGxBc0Z1bmN0aW9uIGNhbGxiYWNrLiIpKSk7CiB9CiAKIHRl
bXBsYXRlIDxjbGFzcyBQYXJlbnQ+CkBAIC02MDAsNyArNjAwLDcgQEAgSlNWYWx1ZSBKU0NhbGxi
YWNrT2JqZWN0PFBhcmVudD46OmNhbGxiYWNrR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1
ZSBzbG90UGEKICAgICAgICAgfQogICAgIH0KIAotICAgIHJldHVybiB0aHJvd0Vycm9yKGV4ZWMs
IGNyZWF0ZVJlZmVyZW5jZUVycm9yKGV4ZWMsICJoYXNQcm9wZXJ0eSBjYWxsYmFjayByZXR1cm5l
ZCB0cnVlIGZvciBhIHByb3BlcnR5IHRoYXQgZG9lc24ndCBleGlzdC4iKSk7CisgICAgcmV0dXJu
IHRocm93RXJyb3IoZXhlYywgY3JlYXRlUmVmZXJlbmNlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFs
KCJoYXNQcm9wZXJ0eSBjYWxsYmFjayByZXR1cm5lZCB0cnVlIGZvciBhIHByb3BlcnR5IHRoYXQg
ZG9lc24ndCBleGlzdC4iKSkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0UmVmLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0UmVmLmNwcAppbmRleCBiYWUzMTAxMDViMjRiNmEyZDFm
YjQ2ZWRmMzI2NGVhZjllZDEzYzY4Li4zNjBlMzM3ZWVjZWUyMTk2YzdhNGI5ZjUyYjZhMGFlZThj
YzIzMGZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dFJl
Zi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHRSZWYuY3BwCkBA
IC0xNzMsOSArMTczLDkgQEAgSlNTdHJpbmdSZWYgSlNDb250ZXh0Q3JlYXRlQmFja3RyYWNlKEpT
Q29udGV4dFJlZiBjdHgsIHVuc2lnbmVkIG1heFN0YWNrU2l6ZSkKICAgICBpZiAoZXhlYy0+Y2Fs
bGVlKCkpIHsKICAgICAgICAgaWYgKGFzT2JqZWN0KGV4ZWMtPmNhbGxlZSgpKS0+aW5oZXJpdHMo
JkludGVybmFsRnVuY3Rpb246OnNfaW5mbykpIHsKICAgICAgICAgICAgIGZ1bmN0aW9uTmFtZSA9
IGFzSW50ZXJuYWxGdW5jdGlvbihleGVjLT5jYWxsZWUoKSktPm5hbWUoZXhlYyk7Ci0gICAgICAg
ICAgICBidWlsZGVyLmFwcGVuZCgiIzAgIik7CisgICAgICAgICAgICBidWlsZGVyLmFwcGVuZExp
dGVyYWwoIiMwICIpOwogICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoZnVuY3Rpb25OYW1lKTsK
LSAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCIoKSAiKTsKKyAgICAgICAgICAgIGJ1aWxkZXIu
YXBwZW5kTGl0ZXJhbCgiKCkgIik7CiAgICAgICAgICAgICBjb3VudCsrOwogICAgICAgICB9CiAg
ICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU09iamVjdFJlZi5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTT2JqZWN0UmVmLmNwcAppbmRleCBlNmMw
YzUyOGE3MDZkMzBjNDA1NzY4MWVjOTI5OGY5YTg5Y2QyNzNjLi44YjBkNGEwOWZjZDVlNmNkM2Nj
ZjY4MTc2ZjQ1YWExZWEwODdlNTA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
QVBJL0pTT2JqZWN0UmVmLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTT2Jq
ZWN0UmVmLmNwcApAQCAtOTIsNyArOTIsNyBAQCBKU09iamVjdFJlZiBKU09iamVjdE1ha2VGdW5j
dGlvbldpdGhDYWxsYmFjayhKU0NvbnRleHRSZWYgY3R4LCBKU1N0cmluZ1JlZiBuYW1lLAogewog
ICAgIEV4ZWNTdGF0ZSogZXhlYyA9IHRvSlMoY3R4KTsKICAgICBBUElFbnRyeVNoaW0gZW50cnlT
aGltKGV4ZWMpOwotICAgIHJldHVybiB0b1JlZihKU0NhbGxiYWNrRnVuY3Rpb246OmNyZWF0ZShl
eGVjLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIGNhbGxBc0Z1bmN0aW9uLCBuYW1lID8g
bmFtZS0+dXN0cmluZygpIDogImFub255bW91cyIpKTsKKyAgICByZXR1cm4gdG9SZWYoSlNDYWxs
YmFja0Z1bmN0aW9uOjpjcmVhdGUoZXhlYywgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBj
YWxsQXNGdW5jdGlvbiwgbmFtZSA/IG5hbWUtPnVzdHJpbmcoKSA6IEFTQ0lJTGl0ZXJhbCgiYW5v
bnltb3VzIikpKTsKIH0KIAogSlNPYmplY3RSZWYgSlNPYmplY3RNYWtlQ29uc3RydWN0b3IoSlND
b250ZXh0UmVmIGN0eCwgSlNDbGFzc1JlZiBqc0NsYXNzLCBKU09iamVjdENhbGxBc0NvbnN0cnVj
dG9yQ2FsbGJhY2sgY2FsbEFzQ29uc3RydWN0b3IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9Db2RlQmxvY2suY3BwCmluZGV4IDJlODYwZGVhMGVhZDI1ZDhkMWVkNjgzMDdlMTk4
MzZhODIwOGUzYjMuLmVmODk4MTJhN2EyMGZjMzhiOWM4Njc4MGI3MGUzNmFlZTIwODJkYmIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCkBAIC03NSw3
ICs3NSw3IEBAIHN0YXRpYyBTdHJpbmcgZXNjYXBlUXVvdGVzKGNvbnN0IFN0cmluZyYgc3RyKQog
c3RhdGljIFN0cmluZyB2YWx1ZVRvU291cmNlU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1
ZSB2YWwpCiB7CiAgICAgaWYgKCF2YWwpCi0gICAgICAgIHJldHVybiAiMCI7CisgICAgICAgIHJl
dHVybiBBU0NJSUxpdGVyYWwoIjAiKTsKIAogICAgIGlmICh2YWwuaXNTdHJpbmcoKSkKICAgICAg
ICAgcmV0dXJuIG1ha2VTdHJpbmcoIlwiIiwgZXNjYXBlUXVvdGVzKHZhbC50b1N0cmluZyhleGVj
KS0+dmFsdWUoZXhlYykpLCAiXCIiKTsKQEAgLTMwMzIsMTQgKzMwMzIsMTQgQEAgU3RyaW5nIENv
ZGVCbG9jazo6bmFtZUZvclJlZ2lzdGVyKGludCByZWdpc3Rlck51bWJlcikKICAgICAgICAgICAg
IHJldHVybiBTdHJpbmcocHRyLT5maXJzdCk7CiAgICAgfQogICAgIGlmIChuZWVkc0FjdGl2YXRp
b24oKSAmJiByZWdpc3Rlck51bWJlciA9PSBhY3RpdmF0aW9uUmVnaXN0ZXIoKSkKLSAgICAgICAg
cmV0dXJuICJhY3RpdmF0aW9uIjsKKyAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgiYWN0aXZh
dGlvbiIpOwogICAgIGlmIChyZWdpc3Rlck51bWJlciA9PSB0aGlzUmVnaXN0ZXIoKSkKLSAgICAg
ICAgcmV0dXJuICJ0aGlzIjsKKyAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgidGhpcyIpOwog
ICAgIGlmICh1c2VzQXJndW1lbnRzKCkpIHsKICAgICAgICAgaWYgKHJlZ2lzdGVyTnVtYmVyID09
IGFyZ3VtZW50c1JlZ2lzdGVyKCkpCi0gICAgICAgICAgICByZXR1cm4gImFyZ3VtZW50cyI7Cisg
ICAgICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJhcmd1bWVudHMiKTsKICAgICAgICAgaWYg
KHVubW9kaWZpZWRBcmd1bWVudHNSZWdpc3Rlcihhcmd1bWVudHNSZWdpc3RlcigpKSA9PSByZWdp
c3Rlck51bWJlcikKLSAgICAgICAgICAgIHJldHVybiAicmVhbCBhcmd1bWVudHMiOworICAgICAg
ICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgicmVhbCBhcmd1bWVudHMiKTsKICAgICB9CiAgICAg
aWYgKHJlZ2lzdGVyTnVtYmVyIDwgMCkgewogICAgICAgICBpbnQgYXJndW1lbnRQb3NpdGlvbiA9
IC1yZWdpc3Rlck51bWJlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRl
cnByZXRlci9JbnRlcnByZXRlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0
ZXIvSW50ZXJwcmV0ZXIuY3BwCmluZGV4IDdjNGViMGQzOWU1OGFkNDVlODA0NjgyNmJhNzg3N2M0
MDIzNjI1NGUuLmMzZDIzMjE5ZjJjNzUwODIwNWYxNmZjZjE2M2ViNjJjYTVkZmIxZTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcApA
QCAtNzQyLDYgKzc0Miw4IEBAIHZvaWQgSW50ZXJwcmV0ZXI6OmFkZFN0YWNrVHJhY2VJZk5lY2Vz
c2FyeShDYWxsRnJhbWUqIGNhbGxGcmFtZSwgSlNPYmplY3QqIGVycm9yCiAgICAgICAgIGdsb2Jh
bE9iamVjdCA9IGdsb2JhbERhdGEtPmR5bmFtaWNHbG9iYWxPYmplY3Q7CiAgICAgZWxzZQogICAg
ICAgICBnbG9iYWxPYmplY3QgPSBlcnJvci0+Z2xvYmFsT2JqZWN0KCk7CisKKyAgICAvLyBGSVhN
RTogSlNTdHJpbmdKb2luZXIgY291bGQgYmUgbW9yZSBlZmZpY2llbnQgdGhhbiBTdHJpbmdCdWls
ZGVyIGhlcmUuCiAgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwogICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCBzdGFja1RyYWNlLnNpemUoKTsgaSsrKSB7CiAgICAgICAgIGJ1aWxkZXIuYXBw
ZW5kKFN0cmluZyhzdGFja1RyYWNlW2ldLnRvU3RyaW5nKGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhl
YygpKS5pbXBsKCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0FycmF5Q29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJy
YXlDb25zdHJ1Y3Rvci5jcHAKaW5kZXggODNlNDhjYTFiMmQxODZhZmEzZDcxMGQ1YTNhZjRmZjhl
OGUxYmRjOC4uYzlhNmRjNjAwYzQyMmRmZjViNDk4YWZjYmY3YmRiNTRhZWQyZmRiOSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlDb25zdHJ1Y3Rvci5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlDb25zdHJ1Y3Rvci5jcHAK
QEAgLTg1LDcgKzg1LDcgQEAgc3RhdGljIGlubGluZSBKU09iamVjdCogY29uc3RydWN0QXJyYXlX
aXRoU2l6ZVF1aXJrKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgQXJnTGkKICAgICBpZiAoYXJncy5z
aXplKCkgPT0gMSAmJiBhcmdzLmF0KDApLmlzTnVtYmVyKCkpIHsKICAgICAgICAgdWludDMyX3Qg
biA9IGFyZ3MuYXQoMCkudG9VSW50MzIoZXhlYyk7CiAgICAgICAgIGlmIChuICE9IGFyZ3MuYXQo
MCkudG9OdW1iZXIoZXhlYykpCi0gICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihleGVjLCBj
cmVhdGVSYW5nZUVycm9yKGV4ZWMsICJBcnJheSBzaXplIGlzIG5vdCBhIHNtYWxsIGVub3VnaCBw
b3NpdGl2ZSBpbnRlZ2VyLiIpKTsKKyAgICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGV4ZWMs
IGNyZWF0ZVJhbmdlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJBcnJheSBzaXplIGlzIG5vdCBh
IHNtYWxsIGVub3VnaCBwb3NpdGl2ZSBpbnRlZ2VyLiIpKSk7CiAgICAgICAgIHJldHVybiBjb25z
dHJ1Y3RFbXB0eUFycmF5KGV4ZWMsIGdsb2JhbE9iamVjdCwgbik7CiAgICAgfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHAKaW5kZXggZDAz
Y2U1MzE2N2U0NjBlYWY0YTkwNTEwNDk4YjY1MmM5YTQ3MWMwOS4uNGIxM2Y5OTNjZWQyM2I4MDEz
YzE5MGZjYzhhNmFjMmY5M2MwZWYwYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0FycmF5UHJvdG90eXBlLmNwcApAQCAtMjA1LDEzICsyMDUsMTMgQEAgc3RhdGljIGlu
bGluZSB2b2lkIHNoaWZ0KEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHRoaXNPYmosIHVuc2ln
bmVkIGhlYWRlciwgdW4KICAgICAgICAgICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAg
ICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0gZWxzZSBpZiAoIXRoaXNPYmotPm1ldGhv
ZFRhYmxlKCktPmRlbGV0ZVByb3BlcnR5QnlJbmRleCh0aGlzT2JqLCBleGVjLCB0bykpIHsKLSAg
ICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsICJVbmFibGUgdG8gZGVsZXRlIHByb3BlcnR5
LiIpOworICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJVbmFi
bGUgdG8gZGVsZXRlIHByb3BlcnR5LiIpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
fQogICAgIH0KICAgICBmb3IgKHVuc2lnbmVkIGsgPSBsZW5ndGg7IGsgPiBsZW5ndGggLSBjb3Vu
dDsgLS1rKSB7CiAgICAgICAgIGlmICghdGhpc09iai0+bWV0aG9kVGFibGUoKS0+ZGVsZXRlUHJv
cGVydHlCeUluZGV4KHRoaXNPYmosIGV4ZWMsIGsgLSAxKSkgewotICAgICAgICAgICAgdGhyb3dU
eXBlRXJyb3IoZXhlYywgIlVuYWJsZSB0byBkZWxldGUgcHJvcGVydHkuIik7CisgICAgICAgICAg
ICB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlVuYWJsZSB0byBkZWxldGUgcHJv
cGVydHkuIikpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgfQpAQCAtMjQz
LDcgKzI0Myw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCB1bnNoaWZ0KEV4ZWNTdGF0ZSogZXhlYywg
SlNPYmplY3QqIHRoaXNPYmosIHVuc2lnbmVkIGhlYWRlciwKICAgICAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgICAgICB0aGlzT2JqLT5tZXRob2RUYWJsZSgpLT5wdXRCeUluZGV4KHRoaXNP
YmosIGV4ZWMsIHRvLCB2YWx1ZSwgdHJ1ZSk7CiAgICAgICAgIH0gZWxzZSBpZiAoIXRoaXNPYmot
Pm1ldGhvZFRhYmxlKCktPmRlbGV0ZVByb3BlcnR5QnlJbmRleCh0aGlzT2JqLCBleGVjLCB0bykp
IHsKLSAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsICJVbmFibGUgdG8gZGVsZXRlIHBy
b3BlcnR5LiIpOworICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFs
KCJVbmFibGUgdG8gZGVsZXRlIHByb3BlcnR5LiIpKTsKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgfQogICAgICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCkBAIC00OTEsNyArNDkx
LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY1BvcChFeGVj
U3RhdGUqIGV4ZWMpCiAgICAgICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgICAgIGlmICgh
dGhpc09iai0+bWV0aG9kVGFibGUoKS0+ZGVsZXRlUHJvcGVydHlCeUluZGV4KHRoaXNPYmosIGV4
ZWMsIGxlbmd0aCAtIDEpKSB7Ci0gICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCAiVW5h
YmxlIHRvIGRlbGV0ZSBwcm9wZXJ0eS4iKTsKKyAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4
ZWMsIEFTQ0lJTGl0ZXJhbCgiVW5hYmxlIHRvIGRlbGV0ZSBwcm9wZXJ0eS4iKSk7CiAgICAgICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgICAgICB9CiAg
ICAgICAgIHB1dFByb3BlcnR5KGV4ZWMsIHRoaXNPYmosIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5s
ZW5ndGgsIGpzTnVtYmVyKGxlbmd0aCAtIDEpKTsKQEAgLTU1Myw3ICs1NTMsNyBAQCBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jUmV2ZXJzZShFeGVjU3RhdGUqIGV4
ZWMpCiAgICAgICAgICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgICAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICAgICAgfSBlbHNl
IGlmICghdGhpc09iai0+bWV0aG9kVGFibGUoKS0+ZGVsZXRlUHJvcGVydHlCeUluZGV4KHRoaXNP
YmosIGV4ZWMsIGspKSB7Ci0gICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCAiVW5hYmxl
IHRvIGRlbGV0ZSBwcm9wZXJ0eS4iKTsKKyAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMs
IEFTQ0lJTGl0ZXJhbCgiVW5hYmxlIHRvIGRlbGV0ZSBwcm9wZXJ0eS4iKSk7CiAgICAgICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgICAgICB9CiAKQEAg
LTU2Miw3ICs1NjIsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9G
dW5jUmV2ZXJzZShFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgICAgICBpZiAoZXhlYy0+aGFkRXhj
ZXB0aW9uKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVm
aW5lZCgpKTsKICAgICAgICAgfSBlbHNlIGlmICghdGhpc09iai0+bWV0aG9kVGFibGUoKS0+ZGVs
ZXRlUHJvcGVydHlCeUluZGV4KHRoaXNPYmosIGV4ZWMsIGxrMSkpIHsKLSAgICAgICAgICAgIHRo
cm93VHlwZUVycm9yKGV4ZWMsICJVbmFibGUgdG8gZGVsZXRlIHByb3BlcnR5LiIpOworICAgICAg
ICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJVbmFibGUgdG8gZGVsZXRl
IHByb3BlcnR5LiIpKTsKICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRl
ZmluZWQoKSk7CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Cb29sZWFuUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0Jvb2xlYW5Qcm90b3R5cGUuY3BwCmluZGV4IDE1NTFlYWJmMjY4MjBjNGIzYWRk
YTllOTY2YjQ0M2RkOThkOTA1NjEuLmM4Yzc3MjIwYTk0YzM2OWIxNmQ4NWJjNzIyMTQ0ZTJiNzRm
YWYyNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Jvb2xlYW5Q
cm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Jvb2xlYW5Q
cm90b3R5cGUuY3BwCkBAIC03NywyMSArNzcsMjIgQEAgYm9vbCBCb29sZWFuUHJvdG90eXBlOjpn
ZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGUK
IAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBib29sZWFuUHJvdG9GdW5jVG9TdHJpbmco
RXhlY1N0YXRlKiBleGVjKQogeworICAgIEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSA9ICZleGVj
LT5nbG9iYWxEYXRhKCk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT5ob3N0VGhpc1Zh
bHVlKCk7CiAgICAgaWYgKHRoaXNWYWx1ZSA9PSBqc0Jvb2xlYW4oZmFsc2UpKQotICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTm9udHJpdmlhbFN0cmluZyhleGVjLCAiZmFsc2UiKSk7
CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoZ2xvYmFsRGF0YS0+c21hbGxTdHJpbmdz
LmZhbHNlU3RyaW5nKGdsb2JhbERhdGEpKTsKIAogICAgIGlmICh0aGlzVmFsdWUgPT0ganNCb29s
ZWFuKHRydWUpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTm9udHJpdmlhbFN0
cmluZyhleGVjLCAidHJ1ZSIpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShnbG9i
YWxEYXRhLT5zbWFsbFN0cmluZ3MudHJ1ZVN0cmluZyhnbG9iYWxEYXRhKSk7CiAKICAgICBpZiAo
IXRoaXNWYWx1ZS5pbmhlcml0cygmQm9vbGVhbk9iamVjdDo6c19pbmZvKSkKICAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7CiAKICAgICBpZiAoYXNCb29sZWFuT2JqZWN0KHRo
aXNWYWx1ZSktPmludGVybmFsVmFsdWUoKSA9PSBqc0Jvb2xlYW4oZmFsc2UpKQotICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTm9udHJpdmlhbFN0cmluZyhleGVjLCAiZmFsc2UiKSk7
CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoZ2xvYmFsRGF0YS0+c21hbGxTdHJpbmdz
LmZhbHNlU3RyaW5nKGdsb2JhbERhdGEpKTsKIAogICAgIEFTU0VSVChhc0Jvb2xlYW5PYmplY3Qo
dGhpc1ZhbHVlKS0+aW50ZXJuYWxWYWx1ZSgpID09IGpzQm9vbGVhbih0cnVlKSk7Ci0gICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc05vbnRyaXZpYWxTdHJpbmcoZXhlYywgInRydWUiKSk7Cisg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShnbG9iYWxEYXRhLT5zbWFsbFN0cmluZ3MudHJ1ZVN0
cmluZyhnbG9iYWxEYXRhKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYm9v
bGVhblByb3RvRnVuY1ZhbHVlT2YoRXhlY1N0YXRlKiBleGVjKQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUNvbnZlcnNpb24uY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUNvbnZlcnNpb24uY3BwCmluZGV4IDkzMzE1NDFhODQ4NmI1
MzRlYTRlNTZjYmNlZGNjMDc1MzZmMjQ1YjAuLjBiNTdmMDEyZDU2MTRjMDI0N2EwN2I0MzQwMGRl
OTc1YmQ4OGY4NDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Rh
dGVDb252ZXJzaW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRl
Q29udmVyc2lvbi5jcHAKQEAgLTczLDcgKzczLDcgQEAgU3RyaW5nIGZvcm1hdERhdGVUaW1lKGNv
bnN0IEdyZWdvcmlhbkRhdGVUaW1lJiB0LCBEYXRlVGltZUZvcm1hdCBmb3JtYXQsIGJvb2wgYXMK
ICAgICAgICAgYnVpbGRlci5hcHBlbmQod2Vla2RheU5hbWVbKHQud2Vla0RheSgpICsgNikgJSA3
XSk7CiAKICAgICAgICAgaWYgKGFzVVRDVmFyaWFudCkgewotICAgICAgICAgICAgYnVpbGRlci5h
cHBlbmQoIiwgIik7CisgICAgICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIiwgIik7CiAg
ICAgICAgICAgICBhcHBlbmROdW1iZXI8Mj4oYnVpbGRlciwgdC5tb250aERheSgpKTsKICAgICAg
ICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcgJyk7CiAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCht
b250aE5hbWVbdC5tb250aCgpXSk7CkBAIC05Niw3ICs5Niw3IEBAIFN0cmluZyBmb3JtYXREYXRl
VGltZShjb25zdCBHcmVnb3JpYW5EYXRlVGltZSYgdCwgRGF0ZVRpbWVGb3JtYXQgZm9ybWF0LCBi
b29sIGFzCiAgICAgICAgIGFwcGVuZE51bWJlcjwyPihidWlsZGVyLCB0Lm1pbnV0ZSgpKTsKICAg
ICAgICAgYnVpbGRlci5hcHBlbmQoJzonKTsKICAgICAgICAgYXBwZW5kTnVtYmVyPDI+KGJ1aWxk
ZXIsIHQuc2Vjb25kKCkpOwotICAgICAgICBidWlsZGVyLmFwcGVuZCgiIEdNVCIpOworICAgICAg
ICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIiBHTVQiKTsKIAogICAgICAgICBpZiAoIWFzVVRDVmFy
aWFudCkgewogICAgICAgICAgICAgaW50IG9mZnNldCA9IGFicyh0LnV0Y09mZnNldCgpKSAvIDYw
OwpAQCAtMTE0LDcgKzExNCw3IEBAIFN0cmluZyBmb3JtYXREYXRlVGltZShjb25zdCBHcmVnb3Jp
YW5EYXRlVGltZSYgdCwgRGF0ZVRpbWVGb3JtYXQgZm9ybWF0LCBib29sIGFzCiAgICAgICAgICAg
ICBzdHJmdGltZSh0aW1lWm9uZU5hbWUsIHNpemVvZih0aW1lWm9uZU5hbWUpLCAiJVoiLCAmZ3Rt
KTsKICNlbmRpZgogICAgICAgICAgICAgaWYgKHRpbWVab25lTmFtZVswXSkgewotICAgICAgICAg
ICAgICAgIGJ1aWxkZXIuYXBwZW5kKCIgKCIpOworICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBw
ZW5kTGl0ZXJhbCgiICgiKTsKICAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCh0aW1lWm9u
ZU5hbWUpOwogICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcpJyk7CiAgICAgICAgICAg
ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlUHJvdG90
eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVQcm90b3R5cGUuY3Bw
CmluZGV4IDhjZmQ0NGVlZjg3MTQ0MTI5Yjc2MGYwNmRiOTcyODI0ODhlODM2NWIuLjYyMjExZDMw
MjQ3MmNhZWI0YmFjMGI3ODEwNzczYzExYzg1ZGJmMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0RhdGVQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0RhdGVQcm90b3R5cGUuY3BwCkBAIC0zMzQsNyArMzM0LDcgQEAgc3Rh
dGljIEpTQ2VsbCogZm9ybWF0TG9jYWxlRGF0ZShFeGVjU3RhdGUqIGV4ZWMsIERhdGVJbnN0YW5j
ZSogZGF0ZU9iamVjdCwgZG91YmwKIHsKICAgICBjb25zdCBHcmVnb3JpYW5EYXRlVGltZSogZ3Jl
Z29yaWFuRGF0ZVRpbWUgPSBkYXRlT2JqZWN0LT5ncmVnb3JpYW5EYXRlVGltZShleGVjKTsKICAg
ICBpZiAoIWdyZWdvcmlhbkRhdGVUaW1lKQotICAgICAgICByZXR1cm4ganNOb250cml2aWFsU3Ry
aW5nKGV4ZWMsICJJbnZhbGlkIERhdGUiKTsKKyAgICAgICAgcmV0dXJuIGpzTm9udHJpdmlhbFN0
cmluZyhleGVjLCBBU0NJSUxpdGVyYWwoIkludmFsaWQgRGF0ZSIpKTsKICAgICByZXR1cm4gZm9y
bWF0TG9jYWxlRGF0ZShleGVjLCAqZ3JlZ29yaWFuRGF0ZVRpbWUsIGZvcm1hdCk7CiB9CiAKQEAg
LTM1Miw3ICszNTIsNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgZm9ybWF0ZURhdGVJbnN0YW5j
ZShFeGVjU3RhdGUqIGV4ZWMsIERhdGVUaW1lRm9ybWF0IGZvcm1hdAogICAgICAgICA/IHRoaXNE
YXRlT2JqLT5ncmVnb3JpYW5EYXRlVGltZVVUQyhleGVjKQogICAgICAgICA6IHRoaXNEYXRlT2Jq
LT5ncmVnb3JpYW5EYXRlVGltZShleGVjKTsKICAgICBpZiAoIWdyZWdvcmlhbkRhdGVUaW1lKQot
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTm9udHJpdmlhbFN0cmluZyhleGVjLCAi
SW52YWxpZCBEYXRlIikpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTm9udHJp
dmlhbFN0cmluZyhleGVjLCBTdHJpbmcoQVNDSUlMaXRlcmFsKCJJbnZhbGlkIERhdGUiKSkpKTsK
IAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOb250cml2aWFsU3RyaW5nKGV4ZWMsIGZv
cm1hdERhdGVUaW1lKCpncmVnb3JpYW5EYXRlVGltZSwgZm9ybWF0LCBhc1VUQ1ZhcmlhbnQpKSk7
CiB9CkBAIC01NDgsMjQgKzU0OCwzMCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRh
dGVQcm90b0Z1bmNUb0lTT1N0cmluZyhFeGVjU3RhdGUqIGV4ZWMpCiAgICAgCiAgICAgRGF0ZUlu
c3RhbmNlKiB0aGlzRGF0ZU9iaiA9IGFzRGF0ZUluc3RhbmNlKHRoaXNWYWx1ZSk7IAogICAgIGlm
ICghaXNmaW5pdGUodGhpc0RhdGVPYmotPmludGVybmFsTnVtYmVyKCkpKQotICAgICAgICByZXR1
cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVJhbmdlRXJyb3IoZXhlYywgIkludmFsaWQgRGF0
ZSIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVSYW5nZUVycm9y
KGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiSW52YWxpZCBEYXRlIikpKTsKIAogICAgIGNvbnN0IEdyZWdv
cmlhbkRhdGVUaW1lKiBncmVnb3JpYW5EYXRlVGltZSA9IHRoaXNEYXRlT2JqLT5ncmVnb3JpYW5E
YXRlVGltZVVUQyhleGVjKTsKICAgICBpZiAoIWdyZWdvcmlhbkRhdGVUaW1lKQotICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTm9udHJpdmlhbFN0cmluZyhleGVjLCAiSW52YWxpZCBE
YXRlIikpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTm9udHJpdmlhbFN0cmlu
ZyhleGVjLCBTdHJpbmcoQVNDSUlMaXRlcmFsKCJJbnZhbGlkIERhdGUiKSkpKTsKICAgICAvLyBN
YXhpbXVtIGFtb3VudCBvZiBzcGFjZSB3ZSBuZWVkIGluIGJ1ZmZlcjogNyAobWF4LiBkaWdpdHMg
aW4geWVhcikgKyAyICogNSAoMiBjaGFyYWN0ZXJzIGVhY2ggZm9yIG1vbnRoLCBkYXksIGhvdXIs
IG1pbnV0ZSwgc2Vjb25kKSArIDQgKC4gKyAzIGRpZ2l0cyBmb3IgbWlsbGlzZWNvbmRzKQogICAg
IC8vIDYgZm9yIGZvcm1hdHRpbmcgYW5kIG9uZSBmb3IgbnVsbCB0ZXJtaW5hdGlvbiA9IDI4LiBX
ZSBhZGQgb25lIGV4dHJhIGNoYXJhY3RlciB0byBhbGxvdyB1cyB0byBmb3JjZSBudWxsIHRlcm1p
bmF0aW9uLgotICAgIGNoYXIgYnVmZmVyWzI5XTsKKyAgICBjaGFyIGJ1ZmZlclsyOF07CiAgICAg
Ly8gSWYgdGhlIHllYXIgaXMgb3V0c2lkZSB0aGUgYm91bmRzIG9mIDAgYW5kIDk5OTkgaW5jbHVz
aXZlIHdlIHdhbnQgdG8gdXNlIHRoZSBleHRlbmRlZCB5ZWFyIGZvcm1hdCAoRVMgMTUuOS4xLjE1
LjEpLgogICAgIGludCBtcyA9IHN0YXRpY19jYXN0PGludD4oZm1vZCh0aGlzRGF0ZU9iai0+aW50
ZXJuYWxOdW1iZXIoKSwgbXNQZXJTZWNvbmQpKTsKICAgICBpZiAobXMgPCAwKQogICAgICAgICBt
cyArPSBtc1BlclNlY29uZDsKKworICAgIGludCBjaGFyYWN0ZXJzV3JpdHRlbjsKICAgICBpZiAo
Z3JlZ29yaWFuRGF0ZVRpbWUtPnllYXIoKSA+IDk5OTkgfHwgZ3JlZ29yaWFuRGF0ZVRpbWUtPnll
YXIoKSA8IDApCi0gICAgICAgIHNucHJpbnRmKGJ1ZmZlciwgc2l6ZW9mKGJ1ZmZlcikgLSAxLCAi
JSswN2QtJTAyZC0lMDJkVCUwMmQ6JTAyZDolMDJkLiUwM2RaIiwgZ3JlZ29yaWFuRGF0ZVRpbWUt
PnllYXIoKSwgZ3JlZ29yaWFuRGF0ZVRpbWUtPm1vbnRoKCkgKyAxLCBncmVnb3JpYW5EYXRlVGlt
ZS0+bW9udGhEYXkoKSwgZ3JlZ29yaWFuRGF0ZVRpbWUtPmhvdXIoKSwgZ3JlZ29yaWFuRGF0ZVRp
bWUtPm1pbnV0ZSgpLCBncmVnb3JpYW5EYXRlVGltZS0+c2Vjb25kKCksIG1zKTsKKyAgICAgICAg
Y2hhcmFjdGVyc1dyaXR0ZW4gPSBzbnByaW50ZihidWZmZXIsIHNpemVvZihidWZmZXIpLCAiJSsw
N2QtJTAyZC0lMDJkVCUwMmQ6JTAyZDolMDJkLiUwM2RaIiwgZ3JlZ29yaWFuRGF0ZVRpbWUtPnll
YXIoKSwgZ3JlZ29yaWFuRGF0ZVRpbWUtPm1vbnRoKCkgKyAxLCBncmVnb3JpYW5EYXRlVGltZS0+
bW9udGhEYXkoKSwgZ3JlZ29yaWFuRGF0ZVRpbWUtPmhvdXIoKSwgZ3JlZ29yaWFuRGF0ZVRpbWUt
Pm1pbnV0ZSgpLCBncmVnb3JpYW5EYXRlVGltZS0+c2Vjb25kKCksIG1zKTsKICAgICBlbHNlCi0g
ICAgICAgIHNucHJpbnRmKGJ1ZmZlciwgc2l6ZW9mKGJ1ZmZlcikgLSAxLCAiJTA0ZC0lMDJkLSUw
MmRUJTAyZDolMDJkOiUwMmQuJTAzZFoiLCBncmVnb3JpYW5EYXRlVGltZS0+eWVhcigpLCBncmVn
b3JpYW5EYXRlVGltZS0+bW9udGgoKSArIDEsIGdyZWdvcmlhbkRhdGVUaW1lLT5tb250aERheSgp
LCBncmVnb3JpYW5EYXRlVGltZS0+aG91cigpLCBncmVnb3JpYW5EYXRlVGltZS0+bWludXRlKCks
IGdyZWdvcmlhbkRhdGVUaW1lLT5zZWNvbmQoKSwgbXMpOwotICAgIGJ1ZmZlcltzaXplb2YoYnVm
ZmVyKSAtIDFdID0gMDsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTm9udHJpdmlhbFN0
cmluZyhleGVjLCBidWZmZXIpKTsKKyAgICAgICAgY2hhcmFjdGVyc1dyaXR0ZW4gPSBzbnByaW50
ZihidWZmZXIsIHNpemVvZihidWZmZXIpLCAiJTA0ZC0lMDJkLSUwMmRUJTAyZDolMDJkOiUwMmQu
JTAzZFoiLCBncmVnb3JpYW5EYXRlVGltZS0+eWVhcigpLCBncmVnb3JpYW5EYXRlVGltZS0+bW9u
dGgoKSArIDEsIGdyZWdvcmlhbkRhdGVUaW1lLT5tb250aERheSgpLCBncmVnb3JpYW5EYXRlVGlt
ZS0+aG91cigpLCBncmVnb3JpYW5EYXRlVGltZS0+bWludXRlKCksIGdyZWdvcmlhbkRhdGVUaW1l
LT5zZWNvbmQoKSwgbXMpOworCisgICAgQVNTRVJUKGNoYXJhY3RlcnNXcml0dGVuID4gMCAmJiBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oY2hhcmFjdGVyc1dyaXR0ZW4pIDwgc2l6ZW9mKGJ1ZmZlcikp
OworICAgIGlmIChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oY2hhcmFjdGVyc1dyaXR0ZW4pID49IHNp
emVvZihidWZmZXIpKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzRW1wdHlTdHJp
bmcoZXhlYykpOworCisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc05vbnRyaXZpYWxTdHJp
bmcoZXhlYywgU3RyaW5nKGJ1ZmZlciwgY2hhcmFjdGVyc1dyaXR0ZW4pKSk7CiB9CiAKIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY1RvRGF0ZVN0cmluZyhFeGVjU3Rh
dGUqIGV4ZWMpCkBAIC0xMTEzLDEzICsxMTE5LDEzIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgZGF0ZVByb3RvRnVuY1RvSlNPTihFeGVjU3RhdGUqIGV4ZWMpCiAgICAgQ2FsbERhdGEg
Y2FsbERhdGE7CiAgICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBnZXRDYWxsRGF0YSh0b0lTT1ZhbHVl
LCBjYWxsRGF0YSk7CiAgICAgaWYgKGNhbGxUeXBlID09IENhbGxUeXBlTm9uZSkKLSAgICAgICAg
cmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgInRvSVNPU3Ry
aW5nIGlzIG5vdCBhIGZ1bmN0aW9uIikpOworICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4
ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoInRvSVNPU3RyaW5nIGlzIG5v
dCBhIGZ1bmN0aW9uIikpKTsKIAogICAgIEpTVmFsdWUgcmVzdWx0ID0gY2FsbChleGVjLCBhc09i
amVjdCh0b0lTT1ZhbHVlKSwgY2FsbFR5cGUsIGNhbGxEYXRhLCBvYmplY3QsIGV4ZWMtPmVtcHR5
TGlzdCgpKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNOdWxsKCkpOwogICAgIGlmIChyZXN1bHQuaXNPYmplY3QoKSkKLSAg
ICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgInRv
SVNPU3RyaW5nIGRpZCBub3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlIikpOworICAgICAgICBy
ZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVy
YWwoInRvSVNPU3RyaW5nIGRpZCBub3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlIikpKTsKICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0Vycm9yLmNwcAppbmRleCAwYTUyMmM0ZmQwMDNkYWQwNjY0OGE4ZDEzOWFjYWZj
MDRmZTViN2MwLi4yN2E3MjlkMGFhZGRhOGZiODQyNjJhYTc0YmM1ZGI1MmEyMDBmYWE3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvci5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3IuY3BwCkBAIC04MSw3ICs4MSw3IEBAIEpT
T2JqZWN0KiBjcmVhdGVUeXBlRXJyb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29u
c3QgU3RyaW5nJiBtZXNzYWdlKQogCiBKU09iamVjdCogY3JlYXRlTm90RW5vdWdoQXJndW1lbnRz
RXJyb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKIHsKLSAgICByZXR1cm4gY3JlYXRl
VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgIk5vdCBlbm91Z2ggYXJndW1lbnRzIik7CisgICAgcmV0
dXJuIGNyZWF0ZVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIEFTQ0lJTGl0ZXJhbCgiTm90IGVub3Vn
aCBhcmd1bWVudHMiKSk7CiB9CiAKIEpTT2JqZWN0KiBjcmVhdGVVUklFcnJvcihKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCkBAIC0xNjksMTIgKzE2
OSwxMiBAQCBKU09iamVjdCogdGhyb3dFcnJvcihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBl
cnJvcikKIAogSlNPYmplY3QqIHRocm93VHlwZUVycm9yKEV4ZWNTdGF0ZSogZXhlYykKIHsKLSAg
ICByZXR1cm4gdGhyb3dFcnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgIlR5cGUgZXJy
b3IiKSk7CisgICAgcmV0dXJuIHRocm93RXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMs
IEFTQ0lJTGl0ZXJhbCgiVHlwZSBlcnJvciIpKSk7CiB9CiAKIEpTT2JqZWN0KiB0aHJvd1N5bnRh
eEVycm9yKEV4ZWNTdGF0ZSogZXhlYykKIHsKLSAgICByZXR1cm4gdGhyb3dFcnJvcihleGVjLCBj
cmVhdGVTeW50YXhFcnJvcihleGVjLCAiU3ludGF4IGVycm9yIikpOworICAgIHJldHVybiB0aHJv
d0Vycm9yKGV4ZWMsIGNyZWF0ZVN5bnRheEVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiU3ludGF4
IGVycm9yIikpKTsKIH0KIAogQVNTRVJUX0NMQVNTX0ZJVFNfSU5fQ0VMTChTdHJpY3RNb2RlVHlw
ZUVycm9yRnVuY3Rpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRXJyb3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yLmgKaW5kZXgg
YmM3MWY3MGIxOTA1ZTRhM2Y4ODRmNzllNTQ3NmVmMjA1ZmZmNmM1My4uOWMzNGEwNTc0Njk3MjMw
NDQ5Y2VjZDJmNDQyYjU4ZDkwMDRjOTZhYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRXJyb3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9F
cnJvci5oCkBAIC04OSw3ICs4OSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBzdGF0aWMg
U3RyaWN0TW9kZVR5cGVFcnJvckZ1bmN0aW9uKiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgU3Ry
aW5nJiBtZXNzYWdlKQogICAgICAgICB7CiAgICAgICAgICAgICBTdHJpY3RNb2RlVHlwZUVycm9y
RnVuY3Rpb24qIGZ1bmN0aW9uID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8U3RyaWN0TW9k
ZVR5cGVFcnJvckZ1bmN0aW9uPigqZXhlYy0+aGVhcCgpKSkgU3RyaWN0TW9kZVR5cGVFcnJvckZ1
bmN0aW9uKGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBtZXNzYWdlKTsKLSAgICAgICAgICAgIGZ1
bmN0aW9uLT5maW5pc2hDcmVhdGlvbihleGVjLT5nbG9iYWxEYXRhKCksICIiKTsKKyAgICAgICAg
ICAgIGZ1bmN0aW9uLT5maW5pc2hDcmVhdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIFN0cmluZygp
KTsKICAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbjsKICAgICAgICAgfQogICAgIApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JQcm90b3R5cGUuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JQcm90b3R5cGUuY3BwCmluZGV4IDM1
NGEzMTIxYTRiODdhMzY0MDRiOWQ3YzlmZWMyYzQ0MTRjMjcwZjIuLjZjOWQ2ZGYwNGQzN2Q0YWVh
NjcxMGRmN2Y0NjY5ZGMxOWEyOTlhMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0Vycm9yUHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9FcnJvclByb3RvdHlwZS5jcHAKQEAgLTU5LDcgKzU5LDcgQEAgdm9pZCBFcnJvclBy
b3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCop
CiB7CiAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCAiIik7CiAg
ICAgQVNTRVJUKGluaGVyaXRzKCZzX2luZm8pKTsKLSAgICBwdXREaXJlY3QoZXhlYy0+Z2xvYmFs
RGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubmFtZSwganNOb250cml2aWFsU3RyaW5nKGV4
ZWMsICJFcnJvciIpLCBEb250RW51bSk7CisgICAgcHV0RGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEo
KSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLm5hbWUsIGpzTm9udHJpdmlhbFN0cmluZyhleGVjLCBT
dHJpbmcoQVNDSUlMaXRlcmFsKCJFcnJvciIpKSksIERvbnRFbnVtKTsKIH0KIAogYm9vbCBFcnJv
clByb3RvdHlwZTo6Z2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBl
eGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QgJnNsb3QpCkBAIC05
OCw3ICs5OCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZXJyb3JQcm90b0Z1bmNU
b1N0cmluZyhFeGVjU3RhdGUqIGV4ZWMpCiAgICAgLy8gNC4gSWYgbmFtZSBpcyB1bmRlZmluZWQs
IHRoZW4gbGV0IG5hbWUgYmUgIkVycm9yIjsgZWxzZSBsZXQgbmFtZSBiZSBUb1N0cmluZyhuYW1l
KS4KICAgICBTdHJpbmcgbmFtZVN0cmluZzsKICAgICBpZiAobmFtZS5pc1VuZGVmaW5lZCgpKQot
ICAgICAgICBuYW1lU3RyaW5nID0gIkVycm9yIjsKKyAgICAgICAgbmFtZVN0cmluZyA9IEFTQ0lJ
TGl0ZXJhbCgiRXJyb3IiKTsKICAgICBlbHNlIHsKICAgICAgICAgbmFtZVN0cmluZyA9IG5hbWUu
dG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOwogICAgICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0
aW9uKCkpCkBAIC0xMTUsNyArMTE1LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBl
cnJvclByb3RvRnVuY1RvU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYykKICAgICAvLyA3LiBJZiBtc2cg
aXMgdW5kZWZpbmVkLCB0aGVuIGxldCBtc2cgYmUgdGhlIGVtcHR5IFN0cmluZzsgZWxzZSBsZXQg
bXNnIGJlIFRvU3RyaW5nKG1zZykuCiAgICAgU3RyaW5nIG1lc3NhZ2VTdHJpbmc7CiAgICAgaWYg
KG1lc3NhZ2UuaXNVbmRlZmluZWQoKSkKLSAgICAgICAgbWVzc2FnZVN0cmluZyA9ICIiOworICAg
ICAgICBtZXNzYWdlU3RyaW5nID0gU3RyaW5nKCk7CiAgICAgZWxzZSB7CiAgICAgICAgIG1lc3Nh
Z2VTdHJpbmcgPSBtZXNzYWdlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKICAgICAgICAg
aWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmNwcAppbmRleCA4M2E0ZTAzYzNiM2I3MDQzNTM0OTlj
NGNjNzNmMjFiYTRiZmFjYTk0Li43NzFlZGNlMTJiZTFmYzg1NzdiMDIwYWUyMGNhMWI0Y2ZhNGRj
NzQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25I
ZWxwZXJzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25I
ZWxwZXJzLmNwcApAQCAtNDcsNyArNDcsNyBAQCBjb25zdCBDbGFzc0luZm8gSW50ZXJydXB0ZWRF
eGVjdXRpb25FcnJvcjo6c19pbmZvID0geyAiSW50ZXJydXB0ZWRFeGVjdXRpb25FcnJvcgogSlNW
YWx1ZSBJbnRlcnJ1cHRlZEV4ZWN1dGlvbkVycm9yOjpkZWZhdWx0VmFsdWUoY29uc3QgSlNPYmpl
Y3QqLCBFeGVjU3RhdGUqIGV4ZWMsIFByZWZlcnJlZFByaW1pdGl2ZVR5cGUgaGludCkKIHsKICAg
ICBpZiAoaGludCA9PSBQcmVmZXJTdHJpbmcpCi0gICAgICAgIHJldHVybiBqc05vbnRyaXZpYWxT
dHJpbmcoZXhlYywgIkphdmFTY3JpcHQgZXhlY3V0aW9uIGV4Y2VlZGVkIHRpbWVvdXQuIik7Cisg
ICAgICAgIHJldHVybiBqc05vbnRyaXZpYWxTdHJpbmcoZXhlYywgU3RyaW5nKEFTQ0lJTGl0ZXJh
bCgiSmF2YVNjcmlwdCBleGVjdXRpb24gZXhjZWVkZWQgdGltZW91dC4iKSkpOwogICAgIHJldHVy
biBKU1ZhbHVlKHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6cXVpZXRfTmFOKCkpOwogfQog
CkBAIC03NCw3ICs3NCw3IEBAIGNvbnN0IENsYXNzSW5mbyBUZXJtaW5hdGVkRXhlY3V0aW9uRXJy
b3I6OnNfaW5mbyA9IHsgIlRlcm1pbmF0ZWRFeGVjdXRpb25FcnJvciIsCiBKU1ZhbHVlIFRlcm1p
bmF0ZWRFeGVjdXRpb25FcnJvcjo6ZGVmYXVsdFZhbHVlKGNvbnN0IEpTT2JqZWN0KiwgRXhlY1N0
YXRlKiBleGVjLCBQcmVmZXJyZWRQcmltaXRpdmVUeXBlIGhpbnQpCiB7CiAgICAgaWYgKGhpbnQg
PT0gUHJlZmVyU3RyaW5nKQotICAgICAgICByZXR1cm4ganNOb250cml2aWFsU3RyaW5nKGV4ZWMs
ICJKYXZhU2NyaXB0IGV4ZWN1dGlvbiB0ZXJtaW5hdGVkLiIpOworICAgICAgICByZXR1cm4ganNO
b250cml2aWFsU3RyaW5nKGV4ZWMsIFN0cmluZyhBU0NJSUxpdGVyYWwoIkphdmFTY3JpcHQgZXhl
Y3V0aW9uIHRlcm1pbmF0ZWQuIikpKTsKICAgICByZXR1cm4gSlNWYWx1ZShzdGQ6Om51bWVyaWNf
bGltaXRzPGRvdWJsZT46OnF1aWV0X05hTigpKTsKIH0KIApAQCAtOTYsMTIgKzk2LDEyIEBAIGJv
b2wgaXNUZXJtaW5hdGVkRXhlY3V0aW9uRXhjZXB0aW9uKEpTVmFsdWUgdmFsdWUpCiAKIEpTT2Jq
ZWN0KiBjcmVhdGVTdGFja092ZXJmbG93RXJyb3IoRXhlY1N0YXRlKiBleGVjKQogewotICAgIHJl
dHVybiBjcmVhdGVSYW5nZUVycm9yKGV4ZWMsICJNYXhpbXVtIGNhbGwgc3RhY2sgc2l6ZSBleGNl
ZWRlZC4iKTsKKyAgICByZXR1cm4gY3JlYXRlUmFuZ2VFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwo
Ik1heGltdW0gY2FsbCBzdGFjayBzaXplIGV4Y2VlZGVkLiIpKTsKIH0KIAogSlNPYmplY3QqIGNy
ZWF0ZVN0YWNrT3ZlcmZsb3dFcnJvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogewot
ICAgIHJldHVybiBjcmVhdGVSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgIk1heGltdW0gY2FsbCBz
dGFjayBzaXplIGV4Y2VlZGVkLiIpOworICAgIHJldHVybiBjcmVhdGVSYW5nZUVycm9yKGdsb2Jh
bE9iamVjdCwgQVNDSUlMaXRlcmFsKCJNYXhpbXVtIGNhbGwgc3RhY2sgc2l6ZSBleGNlZWRlZC4i
KSk7CiB9CiAKIEpTT2JqZWN0KiBjcmVhdGVVbmRlZmluZWRWYXJpYWJsZUVycm9yKEV4ZWNTdGF0
ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgaWRlbnQpCkBAIC0xNTMsNyArMTUzLDcgQEAgSlNP
YmplY3QqIGNyZWF0ZUVycm9yRm9ySW52YWxpZEdsb2JhbEFzc2lnbm1lbnQoRXhlY1N0YXRlKiBl
eGVjLCBjb25zdCBTdHJpbmcmIHAKIAogSlNPYmplY3QqIGNyZWF0ZU91dE9mTWVtb3J5RXJyb3Io
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKIHsKLSAgICByZXR1cm4gY3JlYXRlRXJyb3Io
Z2xvYmFsT2JqZWN0LCAiT3V0IG9mIG1lbW9yeSIpOworICAgIHJldHVybiBjcmVhdGVFcnJvcihn
bG9iYWxPYmplY3QsIEFTQ0lJTGl0ZXJhbCgiT3V0IG9mIG1lbW9yeSIpKTsKIH0KIAogSlNPYmpl
Y3QqIHRocm93T3V0T2ZNZW1vcnlFcnJvcihFeGVjU3RhdGUqIGV4ZWMpCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuY3BwCmluZGV4IDFlOTAxNDdmNmE2N2JmNDRl
OWJjZWYxN2FjYzYxMzM0MWMzMmNhOGEuLjc3YzI3NDkwMzVhNjk0MDk5ODQyNjJlZDY4ZDAzM2Q4
NDNiOTQ2Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1
dGFibGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUu
Y3BwCkBAIC0yMDksNyArMjA5LDcgQEAgSlNPYmplY3QqIEV2YWxFeGVjdXRhYmxlOjpjb21waWxl
SW50ZXJuYWwoRXhlY1N0YXRlKiBleGVjLCBKU1Njb3BlKiBzY29wZSwgSklUQ28KICAgICAgICAg
bV9ldmFsQ29kZUJsb2NrID0gbmV3Q29kZUJsb2NrLnJlbGVhc2UoKTsKICAgICB9IGVsc2Ugewog
ICAgICAgICBpZiAoIWxleGljYWxHbG9iYWxPYmplY3QtPmV2YWxFbmFibGVkKCkpCi0gICAgICAg
ICAgICByZXR1cm4gdGhyb3dFcnJvcihleGVjLCBjcmVhdGVFdmFsRXJyb3IoZXhlYywgIkV2YWwg
aXMgZGlzYWJsZWQiKSk7CisgICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihleGVjLCBjcmVh
dGVFdmFsRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJFdmFsIGlzIGRpc2FibGVkIikpKTsKICAg
ICAgICAgUmVmUHRyPEV2YWxOb2RlPiBldmFsTm9kZSA9IHBhcnNlPEV2YWxOb2RlPihnbG9iYWxE
YXRhLCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBtX3NvdXJjZSwgMCwgaXNTdHJpY3RNb2RlKCkgPyBK
U1BhcnNlU3RyaWN0IDogSlNQYXJzZU5vcm1hbCwgRXZhbE5vZGU6OmlzRnVuY3Rpb25Ob2RlID8g
SlNQYXJzZUZ1bmN0aW9uQ29kZSA6IEpTUGFyc2VQcm9ncmFtQ29kZSwgbGV4aWNhbEdsb2JhbE9i
amVjdC0+ZGVidWdnZXIoKSwgZXhlYywgJmV4Y2VwdGlvbik7CiAgICAgICAgIGlmICghZXZhbE5v
ZGUpIHsKICAgICAgICAgICAgIEFTU0VSVChleGNlcHRpb24pOwpAQCAtNjc1LDcgKzY3NSw3IEBA
IFN0cmluZyBGdW5jdGlvbkV4ZWN1dGFibGU6OnBhcmFtU3RyaW5nKCkgY29uc3QKICAgICBTdHJp
bmdCdWlsZGVyIGJ1aWxkZXI7CiAgICAgZm9yIChzaXplX3QgcG9zID0gMDsgcG9zIDwgcGFyYW1l
dGVycy5zaXplKCk7ICsrcG9zKSB7CiAgICAgICAgIGlmICghYnVpbGRlci5pc0VtcHR5KCkpCi0g
ICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgiLCAiKTsKKyAgICAgICAgICAgIGJ1aWxkZXIuYXBw
ZW5kTGl0ZXJhbCgiLCAiKTsKICAgICAgICAgYnVpbGRlci5hcHBlbmQocGFyYW1ldGVyc1twb3Nd
LnVzdHJpbmcoKSk7CiAgICAgfQogICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9y
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3Iu
Y3BwCmluZGV4IDA0MTFhMGM1MDhhMWU3NjA1NWIxN2Y2NDRkN2Y4ODc3OGY1MWE4NDQuLjQwNTA3
ZGFlMTY2YmU3MTYxMTdlOGRmMTNiOWFjYzNhNjAzOTQ0NWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuY3BwCkBAIC04Miw3
ICs4Miw3IEBAIENhbGxUeXBlIEZ1bmN0aW9uQ29uc3RydWN0b3I6OmdldENhbGxEYXRhKEpTQ2Vs
bCosIENhbGxEYXRhJiBjYWxsRGF0YSkKIEpTT2JqZWN0KiBjb25zdHJ1Y3RGdW5jdGlvbihFeGVj
U3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IEFyZ0xpc3Qm
IGFyZ3MsIGNvbnN0IElkZW50aWZpZXImIGZ1bmN0aW9uTmFtZSwgY29uc3QgU3RyaW5nJiBzb3Vy
Y2VVUkwsIGNvbnN0IFRleHRQb3NpdGlvbiYgcG9zaXRpb24pCiB7CiAgICAgaWYgKCFnbG9iYWxP
YmplY3QtPmV2YWxFbmFibGVkKCkpCi0gICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGV4ZWMsIGNy
ZWF0ZUV2YWxFcnJvcihleGVjLCAiRnVuY3Rpb24gY29uc3RydWN0b3IgaXMgZGlzYWJsZWQiKSk7
CisgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGV4ZWMsIGNyZWF0ZUV2YWxFcnJvcihleGVjLCBB
U0NJSUxpdGVyYWwoIkZ1bmN0aW9uIGNvbnN0cnVjdG9yIGlzIGRpc2FibGVkIikpKTsKICAgICBy
ZXR1cm4gY29uc3RydWN0RnVuY3Rpb25Ta2lwcGluZ0V2YWxFbmFibGVkQ2hlY2soZXhlYywgZ2xv
YmFsT2JqZWN0LCBhcmdzLCBmdW5jdGlvbk5hbWUsIHNvdXJjZVVSTCwgcG9zaXRpb24pOwogfQog
CkBAIC05MywyMCArOTMsMjAgQEAgSlNPYmplY3QqIGNvbnN0cnVjdEZ1bmN0aW9uU2tpcHBpbmdF
dmFsRW5hYmxlZENoZWNrKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmoKICAgICAvLyBXZSBh
bHNvIG5lZWQgXG4gYmVmb3JlIHRoZSBjbG9zaW5nIH0gdG8gaGFuZGxlIC8vIGNvbW1lbnRzIGF0
IHRoZSBlbmQgb2YgdGhlIGxhc3QgbGluZQogICAgIFN0cmluZyBwcm9ncmFtOwogICAgIGlmIChh
cmdzLmlzRW1wdHkoKSkKLSAgICAgICAgcHJvZ3JhbSA9ICIoZnVuY3Rpb24oKSB7IFxufSkiOwor
ICAgICAgICBwcm9ncmFtID0gQVNDSUlMaXRlcmFsKCIoZnVuY3Rpb24oKSB7IFxufSkiKTsKICAg
ICBlbHNlIGlmIChhcmdzLnNpemUoKSA9PSAxKQogICAgICAgICBwcm9ncmFtID0gbWFrZVN0cmlu
ZygiKGZ1bmN0aW9uKCkgeyAiLCBhcmdzLmF0KDApLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVj
KSwgIlxufSkiKTsKICAgICBlbHNlIHsKICAgICAgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwot
ICAgICAgICBidWlsZGVyLmFwcGVuZCgiKGZ1bmN0aW9uKCIpOworICAgICAgICBidWlsZGVyLmFw
cGVuZExpdGVyYWwoIihmdW5jdGlvbigiKTsKICAgICAgICAgYnVpbGRlci5hcHBlbmQoYXJncy5h
dCgwKS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpOwogICAgICAgICBmb3IgKHNpemVfdCBp
ID0gMTsgaSA8IGFyZ3Muc2l6ZSgpIC0gMTsgaSsrKSB7Ci0gICAgICAgICAgICBidWlsZGVyLmFw
cGVuZCgiLCIpOworICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoJywnKTsKICAgICAgICAgICAg
IGJ1aWxkZXIuYXBwZW5kKGFyZ3MuYXQoaSkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpKTsK
ICAgICAgICAgfQotICAgICAgICBidWlsZGVyLmFwcGVuZCgiKSB7ICIpOworICAgICAgICBidWls
ZGVyLmFwcGVuZExpdGVyYWwoIikgeyAiKTsKICAgICAgICAgYnVpbGRlci5hcHBlbmQoYXJncy5h
dChhcmdzLnNpemUoKSAtIDEpLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSk7Ci0gICAgICAg
IGJ1aWxkZXIuYXBwZW5kKCJcbn0pIik7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgi
XG59KSIpOwogICAgICAgICBwcm9ncmFtID0gYnVpbGRlci50b1N0cmluZygpOwogICAgIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Qcm90b3R5
cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmgK
aW5kZXggOWZmZWJmN2E5ZWRkNTA3ZDYyM2NlZTM2YTBlMzU2OTMzYTg1MjUzMy4uMDdmMzgxMzA2
M2YwMjRiZWY0OGQ1ZDIzMzE5MDNjNzc1MTA3NGM0YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5oCkBAIC0zMiw3ICszMiw3IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICBzdGF0aWMgRnVuY3Rpb25Qcm90b3R5cGUqIGNyZWF0ZShF
eGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSog
c3RydWN0dXJlKQogICAgICAgICB7CiAgICAgICAgICAgICBGdW5jdGlvblByb3RvdHlwZSogcHJv
dG90eXBlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8RnVuY3Rpb25Qcm90b3R5cGU+KCpl
eGVjLT5oZWFwKCkpKSBGdW5jdGlvblByb3RvdHlwZShnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSk7
Ci0gICAgICAgICAgICBwcm90b3R5cGUtPmZpbmlzaENyZWF0aW9uKGV4ZWMsICIiKTsKKyAgICAg
ICAgICAgIHByb3RvdHlwZS0+ZmluaXNoQ3JlYXRpb24oZXhlYywgU3RyaW5nKCkpOwogICAgICAg
ICAgICAgcmV0dXJuIHByb3RvdHlwZTsKICAgICAgICAgfQogICAgICAgICAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGVybmFsRnVuY3Rpb24uY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5jcHAKaW5kZXggMjE2
ZGNlMzc5NTVmZDQ3NzllNWE1ZDQ5N2E0MDUyZjE3N2UzNTZhZi4uZTJkZTAzZDkyOTYwZTQ4YzQy
YzhhOGFlZTkyNTk3NTFiYmJiYTJkYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5jcHAKQEAgLTQ0LDcgKzQ0LDcgQEAgdm9pZCBJbnRl
cm5hbEZ1bmN0aW9uOjpmaW5pc2hDcmVhdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGNv
bnN0IFN0cmluZyYgbmEKICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbihnbG9iYWxEYXRhKTsKICAg
ICBBU1NFUlQoaW5oZXJpdHMoJnNfaW5mbykpOwogICAgIEFTU0VSVChtZXRob2RUYWJsZSgpLT5n
ZXRDYWxsRGF0YSAhPSBJbnRlcm5hbEZ1bmN0aW9uOjpzX2luZm8ubWV0aG9kVGFibGUuZ2V0Q2Fs
bERhdGEpOwotICAgIHB1dERpcmVjdChnbG9iYWxEYXRhLCBnbG9iYWxEYXRhLnByb3BlcnR5TmFt
ZXMtPm5hbWUsIGpzU3RyaW5nKCZnbG9iYWxEYXRhLCBuYW1lLmlzTnVsbCgpID8gIiIgOiBuYW1l
KSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0pOworICAgIHB1dERpcmVjdChnbG9i
YWxEYXRhLCBnbG9iYWxEYXRhLnByb3BlcnR5TmFtZXMtPm5hbWUsIGpzU3RyaW5nKCZnbG9iYWxE
YXRhLCBuYW1lKSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0pOwogfQogCiBjb25z
dCBTdHJpbmcmIEludGVybmFsRnVuY3Rpb246Om5hbWUoRXhlY1N0YXRlKiBleGVjKQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNwcAppbmRleCAzYzBiNDMyMGY1YTg4N2Q4
MDczMDYzYjQ5N2IwNDIzYjMyMGUyYTI4Li44ZTE2MDZmZDgyOTAxNGQ1YTBjY2YwYWVmMzRhYTUx
ZGFmOTBkZTcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Fy
cmF5LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNwcApA
QCAtMTEzLDcgKzExMyw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBpc0RlbnNlRW5vdWdoRm9yVmVj
dG9yKHVuc2lnbmVkIGxlbmd0aCwgdW5zaWduZWQgbnVtVmFsdWVzKQogc3RhdGljIGJvb2wgcmVq
ZWN0KEV4ZWNTdGF0ZSogZXhlYywgYm9vbCB0aHJvd0V4Y2VwdGlvbiwgY29uc3QgY2hhciogbWVz
c2FnZSkKIHsKICAgICBpZiAodGhyb3dFeGNlcHRpb24pCi0gICAgICAgIHRocm93VHlwZUVycm9y
KGV4ZWMsIG1lc3NhZ2UpOworICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVy
YWwobWVzc2FnZSkpOwogICAgIHJldHVybiBmYWxzZTsKIH0KIApAQCAtMjEyLDE0ICsyMTIsMTQg
QEAgaW5saW5lIHZvaWQgU3BhcnNlQXJyYXlWYWx1ZU1hcDo6cHV0KEV4ZWNTdGF0ZSogZXhlYywg
SlNBcnJheSogYXJyYXksIHVuc2lnbmVkIGkKICAgICBpZiAocmVzdWx0LmlzTmV3RW50cnkgJiYg
IWFycmF5LT5pc0V4dGVuc2libGUoKSkgewogICAgICAgICByZW1vdmUocmVzdWx0Lml0ZXJhdG9y
KTsKICAgICAgICAgaWYgKHNob3VsZFRocm93KQotICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3Io
ZXhlYywgU3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKTsKKyAgICAgICAgICAg
IHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbChTdHJpY3RNb2RlUmVhZG9ubHlQcm9w
ZXJ0eVdyaXRlRXJyb3IpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGlmICghKGVu
dHJ5LmF0dHJpYnV0ZXMgJiBBY2Nlc3NvcikpIHsKICAgICAgICAgaWYgKGVudHJ5LmF0dHJpYnV0
ZXMgJiBSZWFkT25seSkgewogICAgICAgICAgICAgaWYgKHNob3VsZFRocm93KQotICAgICAgICAg
ICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIFN0cmljdE1vZGVSZWFkb25seVByb3BlcnR5V3Jp
dGVFcnJvcik7CisgICAgICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRl
cmFsKFN0cmljdE1vZGVSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcikpOwogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICB9CiAKQEAgLTIzMyw3ICsyMzMsNyBAQCBpbmxpbmUgdm9pZCBTcGFy
c2VBcnJheVZhbHVlTWFwOjpwdXQoRXhlY1N0YXRlKiBleGVjLCBKU0FycmF5KiBhcnJheSwgdW5z
aWduZWQgaQogICAgIAogICAgIGlmICghc2V0dGVyKSB7CiAgICAgICAgIGlmIChzaG91bGRUaHJv
dykKLSAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIFN0cmljdE1vZGVSZWFkb25seVBy
b3BlcnR5V3JpdGVFcnJvcik7CisgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJ
SUxpdGVyYWwoU3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKSk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKQEAgLTcyMyw3ICs3MjMsNyBAQCB2b2lkIEpTQXJyYXk6OnB1dChK
U0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwg
SlNWYQogICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLmxlbmd0
aCkgewogICAgICAgICB1bnNpZ25lZCBuZXdMZW5ndGggPSB2YWx1ZS50b1VJbnQzMihleGVjKTsK
ICAgICAgICAgaWYgKHZhbHVlLnRvTnVtYmVyKGV4ZWMpICE9IHN0YXRpY19jYXN0PGRvdWJsZT4o
bmV3TGVuZ3RoKSkgewotICAgICAgICAgICAgdGhyb3dFcnJvcihleGVjLCBjcmVhdGVSYW5nZUVy
cm9yKGV4ZWMsICJJbnZhbGlkIGFycmF5IGxlbmd0aCIpKTsKKyAgICAgICAgICAgIHRocm93RXJy
b3IoZXhlYywgY3JlYXRlUmFuZ2VFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkludmFsaWQgYXJy
YXkgbGVuZ3RoIikpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICB0
aGlzT2JqZWN0LT5zZXRMZW5ndGgoZXhlYywgbmV3TGVuZ3RoLCBzbG90LmlzU3RyaWN0TW9kZSgp
KTsKQEAgLTgxMSw3ICs4MTEsNyBAQCB2b2lkIEpTQXJyYXk6OnB1dEJ5SW5kZXhCZXlvbmRWZWN0
b3JMZW5ndGgoRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBpLCBKU1ZhbHVlCiAgICAgICAgIC8v
IFByb2hpYml0IGdyb3dpbmcgdGhlIGFycmF5IGlmIGxlbmd0aCBpcyBub3Qgd3JpdGFibGUuCiAg
ICAgICAgIGlmIChtYXAtPmxlbmd0aElzUmVhZE9ubHkoKSB8fCAhaXNFeHRlbnNpYmxlKCkpIHsK
ICAgICAgICAgICAgIGlmIChzaG91bGRUaHJvdykKLSAgICAgICAgICAgICAgICB0aHJvd1R5cGVF
cnJvcihleGVjLCBTdHJpY3RNb2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpOworICAgICAg
ICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbChTdHJpY3RNb2RlUmVh
ZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
fQogICAgICAgICBsZW5ndGggPSBpICsgMTsKQEAgLTEyMzYsNyArMTIzNiw3IEBAIEpTVmFsdWUg
SlNBcnJheTo6cG9wKEV4ZWNTdGF0ZSogZXhlYykKICAgICB1bnNpZ25lZCBsZW5ndGggPSBzdG9y
YWdlLT5tX2xlbmd0aDsKICAgICBpZiAoIWxlbmd0aCkgewogICAgICAgICBpZiAoIWlzTGVuZ3Ro
V3JpdGFibGUoKSkKLSAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIFN0cmljdE1vZGVS
ZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcik7CisgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihl
eGVjLCBBU0NJSUxpdGVyYWwoU3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKSk7
CiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogICAgIH0KIApAQCAtMTI2MSw3ICsxMjYx
LDcgQEAgSlNWYWx1ZSBKU0FycmF5Ojpwb3AoRXhlY1N0YXRlKiBleGVjKQogICAgICAgICByZXR1
cm4ganNVbmRlZmluZWQoKTsKICAgICAvLyBDYWxsIHRoZSBbW0RlbGV0ZV1dIGludGVybmFsIG1l
dGhvZCBvZiBPIHdpdGggYXJndW1lbnRzIGluZHggYW5kIHRydWUuCiAgICAgaWYgKCFkZWxldGVQ
cm9wZXJ0eUJ5SW5kZXgodGhpcywgZXhlYywgaW5kZXgpKSB7Ci0gICAgICAgIHRocm93VHlwZUVy
cm9yKGV4ZWMsICJVbmFibGUgdG8gZGVsZXRlIHByb3BlcnR5LiIpOworICAgICAgICB0aHJvd1R5
cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlVuYWJsZSB0byBkZWxldGUgcHJvcGVydHkuIikp
OwogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKICAgICB9CiAgICAgLy8gQ2FsbCB0aGUg
W1tQdXRdXSBpbnRlcm5hbCBtZXRob2Qgb2YgTyB3aXRoIGFyZ3VtZW50cyAibGVuZ3RoIiwgaW5k
eCwgYW5kIHRydWUuCkBAIC0xMjk0LDcgKzEyOTQsNyBAQCB2b2lkIEpTQXJyYXk6OnB1c2goRXhl
Y1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVlKQogICAgICAgICBtZXRob2RUYWJsZSgpLT5wdXRC
eUluZGV4KHRoaXMsIGV4ZWMsIHN0b3JhZ2UtPm1fbGVuZ3RoLCB2YWx1ZSwgdHJ1ZSk7CiAgICAg
ICAgIC8vIFBlciBFUzUuMSAxNS40LjQuNyBzdGVwIDYgJiAxNS40LjUuMSBzdGVwIDMuZC4KICAg
ICAgICAgaWYgKCFleGVjLT5oYWRFeGNlcHRpb24oKSkKLSAgICAgICAgICAgIHRocm93RXJyb3Io
ZXhlYywgY3JlYXRlUmFuZ2VFcnJvcihleGVjLCAiSW52YWxpZCBhcnJheSBsZW5ndGgiKSk7Cisg
ICAgICAgICAgICB0aHJvd0Vycm9yKGV4ZWMsIGNyZWF0ZVJhbmdlRXJyb3IoZXhlYywgQVNDSUlM
aXRlcmFsKCJJbnZhbGlkIGFycmF5IGxlbmd0aCIpKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24u
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAKaW5kZXgg
NGRkM2YwNWRkNTI0N2VlNTE1Y2JmMzg3ZjUzMDdlOGU1NWQ0NDMxYy4uOWQ4NDNjNzc0YWIyZjdh
Yzc5NDEzYjZhY2RlMmQ1Nzk4ZjFjMmEzMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNGdW5jdGlvbi5jcHAKQEAgLTk2LDcgKzk2LDcgQEAgdm9pZCBKU0Z1bmN0aW9uOjpm
aW5pc2hDcmVhdGlvbihFeGVjU3RhdGUqIGV4ZWMsIE5hdGl2ZUV4ZWN1dGFibGUqIGV4ZWN1dGFi
bGUsIGkKICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbihleGVjLT5nbG9iYWxEYXRhKCkpOwogICAg
IEFTU0VSVChpbmhlcml0cygmc19pbmZvKSk7CiAgICAgbV9leGVjdXRhYmxlLnNldChleGVjLT5n
bG9iYWxEYXRhKCksIHRoaXMsIGV4ZWN1dGFibGUpOwotICAgIHB1dERpcmVjdChleGVjLT5nbG9i
YWxEYXRhKCksIGV4ZWMtPmdsb2JhbERhdGEoKS5wcm9wZXJ0eU5hbWVzLT5uYW1lLCBqc1N0cmlu
ZyhleGVjLCBuYW1lLmlzTnVsbCgpID8gIiIgOiBuYW1lKSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5
IHwgRG9udEVudW0pOworICAgIHB1dERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPmds
b2JhbERhdGEoKS5wcm9wZXJ0eU5hbWVzLT5uYW1lLCBqc1N0cmluZyhleGVjLCBuYW1lKSwgRG9u
dERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0pOwogICAgIHB1dERpcmVjdChleGVjLT5nbG9i
YWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgsIGpzTnVtYmVyKGxlbmd0aCks
IERvbnREZWxldGUgfCBSZWFkT25seSB8IERvbnRFbnVtKTsKIH0KIApAQCAtMjAzLDcgKzIwMyw3
IEBAIEpTVmFsdWUgSlNGdW5jdGlvbjo6Y2FsbGVyR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNW
YWx1ZSBzbG90QmFzZSwgUHJvcGVydHlOYW1lCiAgICAgSlNGdW5jdGlvbiogZnVuY3Rpb24gPSBq
c0Nhc3Q8SlNGdW5jdGlvbio+KGNhbGxlcik7CiAgICAgaWYgKGZ1bmN0aW9uLT5pc0hvc3RGdW5j
dGlvbigpIHx8ICFmdW5jdGlvbi0+anNFeGVjdXRhYmxlKCktPmlzU3RyaWN0TW9kZSgpKQogICAg
ICAgICByZXR1cm4gY2FsbGVyOwotICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihleGVjLCAiRnVu
Y3Rpb24uY2FsbGVyIHVzZWQgdG8gcmV0cmlldmUgc3RyaWN0IGNhbGxlciIpOworICAgIHJldHVy
biB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkZ1bmN0aW9uLmNhbGxlciB1c2Vk
IHRvIHJldHJpZXZlIHN0cmljdCBjYWxsZXIiKSk7CiB9CiAKIEpTVmFsdWUgSlNGdW5jdGlvbjo6
bGVuZ3RoR2V0dGVyKEV4ZWNTdGF0ZSosIEpTVmFsdWUgc2xvdEJhc2UsIFByb3BlcnR5TmFtZSkK
QEAgLTQxNCwyNyArNDE0LDI3IEBAIGJvb2wgSlNGdW5jdGlvbjo6ZGVmaW5lT3duUHJvcGVydHko
SlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hCiAgICAgIAogICAg
IGlmIChkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZVByZXNlbnQoKSAmJiBkZXNjcmlwdG9yLmNvbmZp
Z3VyYWJsZSgpKSB7CiAgICAgICAgIGlmICh0aHJvd0V4Y2VwdGlvbikKLSAgICAgICAgICAgIHRo
cm93RXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsICJBdHRlbXB0aW5nIHRvIGNvbmZp
Z3VyYWJsZSBhdHRyaWJ1dGUgb2YgdW5jb25maWd1cmFibGUgcHJvcGVydHkuIikpOworICAgICAg
ICAgICAgdGhyb3dFcnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFs
KCJBdHRlbXB0aW5nIHRvIGNvbmZpZ3VyYWJsZSBhdHRyaWJ1dGUgb2YgdW5jb25maWd1cmFibGUg
cHJvcGVydHkuIikpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICBpZiAoZGVz
Y3JpcHRvci5lbnVtZXJhYmxlUHJlc2VudCgpICYmIGRlc2NyaXB0b3IuZW51bWVyYWJsZSgpKSB7
CiAgICAgICAgIGlmICh0aHJvd0V4Y2VwdGlvbikKLSAgICAgICAgICAgIHRocm93RXJyb3IoZXhl
YywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsICJBdHRlbXB0aW5nIHRvIGNoYW5nZSBlbnVtZXJhYmxl
IGF0dHJpYnV0ZSBvZiB1bmNvbmZpZ3VyYWJsZSBwcm9wZXJ0eS4iKSk7CisgICAgICAgICAgICB0
aHJvd0Vycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkF0dGVt
cHRpbmcgdG8gY2hhbmdlIGVudW1lcmFibGUgYXR0cmlidXRlIG9mIHVuY29uZmlndXJhYmxlIHBy
b3BlcnR5LiIpKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgaWYgKGRlc2Ny
aXB0b3IuaXNBY2Nlc3NvckRlc2NyaXB0b3IoKSkgewogICAgICAgICBpZiAodGhyb3dFeGNlcHRp
b24pCi0gICAgICAgICAgICB0aHJvd0Vycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCAi
QXR0ZW1wdGluZyB0byBjaGFuZ2UgYWNjZXNzIG1lY2hhbmlzbSBmb3IgYW4gdW5jb25maWd1cmFi
bGUgcHJvcGVydHkuIikpOworICAgICAgICAgICAgdGhyb3dFcnJvcihleGVjLCBjcmVhdGVUeXBl
RXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJBdHRlbXB0aW5nIHRvIGNoYW5nZSBhY2Nlc3MgbWVj
aGFuaXNtIGZvciBhbiB1bmNvbmZpZ3VyYWJsZSBwcm9wZXJ0eS4iKSkpOwogICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgfQogICAgIGlmIChkZXNjcmlwdG9yLndyaXRhYmxlUHJlc2VudCgpICYm
IGRlc2NyaXB0b3Iud3JpdGFibGUoKSkgewogICAgICAgICBpZiAodGhyb3dFeGNlcHRpb24pCi0g
ICAgICAgICAgICB0aHJvd0Vycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCAiQXR0ZW1w
dGluZyB0byBjaGFuZ2Ugd3JpdGFibGUgYXR0cmlidXRlIG9mIHVuY29uZmlndXJhYmxlIHByb3Bl
cnR5LiIpKTsKKyAgICAgICAgICAgIHRocm93RXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4
ZWMsIEFTQ0lJTGl0ZXJhbCgiQXR0ZW1wdGluZyB0byBjaGFuZ2Ugd3JpdGFibGUgYXR0cmlidXRl
IG9mIHVuY29uZmlndXJhYmxlIHByb3BlcnR5LiIpKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICB9CiAgICAgaWYgKCF2YWx1ZUNoZWNrKSB7CiAgICAgICAgIGlmICh0aHJvd0V4Y2VwdGlv
bikKLSAgICAgICAgICAgIHRocm93RXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsICJB
dHRlbXB0aW5nIHRvIGNoYW5nZSB2YWx1ZSBvZiBhIHJlYWRvbmx5IHByb3BlcnR5LiIpKTsKKyAg
ICAgICAgICAgIHRocm93RXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0
ZXJhbCgiQXR0ZW1wdGluZyB0byBjaGFuZ2UgdmFsdWUgb2YgYSByZWFkb25seSBwcm9wZXJ0eS4i
KSkpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIHJldHVybiB0cnVlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5jcHAKaW5kZXggZWEw
NzRlZWNmNDVkNmUzZmQ3OTdiZTBhYzZkMzlhMWNkN2NhNDQ0OS4uZDdlYTkxOTdjZDY0OTJiYzgx
MjBiMTk1MmFmYjBlNDFlNTBhMjEwNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHbG9iYWxEYXRhLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dsb2JhbERhdGEuY3BwCkBAIC0xMDQsOCArMTA0LDggQEAgc3RhdGljIGJvb2wgZW5h
YmxlQXNzZW1ibGVyKEV4ZWN1dGFibGVBbGxvY2F0b3ImIGV4ZWN1dGFibGVBbGxvY2F0b3IpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAogI2lmIFVTRShDRikKLSAgICBSZXRhaW5QdHI8Q0ZTdHJp
bmdSZWY+IGNhblVzZUpJVEtleShBZG9wdENGLCBDRlN0cmluZ0NyZWF0ZVdpdGhDU3RyaW5nKDAg
LCAiSmF2YVNjcmlwdENvcmVVc2VKSVQiLCBrQ0ZTdHJpbmdFbmNvZGluZ01hY1JvbWFuKSk7Ci0g
ICAgUmV0YWluUHRyPENGQm9vbGVhblJlZj4gY2FuVXNlSklUKEFkb3B0Q0YsIChDRkJvb2xlYW5S
ZWYpQ0ZQcmVmZXJlbmNlc0NvcHlBcHBWYWx1ZShjYW5Vc2VKSVRLZXkuZ2V0KCksIGtDRlByZWZl
cmVuY2VzQ3VycmVudEFwcGxpY2F0aW9uKSk7CisgICAgQ0ZTdHJpbmdSZWYgY2FuVXNlSklUS2V5
ID0gQ0ZTVFIoIkphdmFTY3JpcHRDb3JlVXNlSklUIik7CisgICAgUmV0YWluUHRyPENGQm9vbGVh
blJlZj4gY2FuVXNlSklUKEFkb3B0Q0YsIChDRkJvb2xlYW5SZWYpQ0ZQcmVmZXJlbmNlc0NvcHlB
cHBWYWx1ZShjYW5Vc2VKSVRLZXksIGtDRlByZWZlcmVuY2VzQ3VycmVudEFwcGxpY2F0aW9uKSk7
CiAgICAgaWYgKGNhblVzZUpJVCkKICAgICAgICAgcmV0dXJuIGtDRkJvb2xlYW5UcnVlID09IGNh
blVzZUpJVC5nZXQoKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHbG9iYWxPYmplY3QuY3BwCmluZGV4IDMxYjI3YzUxZTAxYWE2MmM3NTY3YzczMjg1ZTZh
NzIxZDQzYmE1NDMuLmQwNGE3MDMxMzk2MGYxODUwOWYwN2VkYmI1YTc1ZWY2NzM3MTc4YjAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAK
QEAgLTIxMSw4ICsyMTEsOCBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0OjpyZXNldChKU1ZhbHVlIHBy
b3RvdHlwZSkKICAgICBtX2FwcGx5RnVuY3Rpb24uc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhp
cywgYXBwbHlGdW5jdGlvbik7CiAgICAgbV9vYmplY3RQcm90b3R5cGUuc2V0KGV4ZWMtPmdsb2Jh
bERhdGEoKSwgdGhpcywgT2JqZWN0UHJvdG90eXBlOjpjcmVhdGUoZXhlYywgdGhpcywgT2JqZWN0
UHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlzLCBqc051
bGwoKSkpKTsKICAgICBHZXR0ZXJTZXR0ZXIqIHByb3RvQWNjZXNzb3IgPSBHZXR0ZXJTZXR0ZXI6
OmNyZWF0ZShleGVjKTsKLSAgICBwcm90b0FjY2Vzc29yLT5zZXRHZXR0ZXIoZXhlYy0+Z2xvYmFs
RGF0YSgpLCBKU0Z1bmN0aW9uOjpjcmVhdGUoZXhlYywgdGhpcywgMCwgIiIsIGdsb2JhbEZ1bmNQ
cm90b0dldHRlcikpOwotICAgIHByb3RvQWNjZXNzb3ItPnNldFNldHRlcihleGVjLT5nbG9iYWxE
YXRhKCksIEpTRnVuY3Rpb246OmNyZWF0ZShleGVjLCB0aGlzLCAwLCAiIiwgZ2xvYmFsRnVuY1By
b3RvU2V0dGVyKSk7CisgICAgcHJvdG9BY2Nlc3Nvci0+c2V0R2V0dGVyKGV4ZWMtPmdsb2JhbERh
dGEoKSwgSlNGdW5jdGlvbjo6Y3JlYXRlKGV4ZWMsIHRoaXMsIDAsIFN0cmluZygpLCBnbG9iYWxG
dW5jUHJvdG9HZXR0ZXIpKTsKKyAgICBwcm90b0FjY2Vzc29yLT5zZXRTZXR0ZXIoZXhlYy0+Z2xv
YmFsRGF0YSgpLCBKU0Z1bmN0aW9uOjpjcmVhdGUoZXhlYywgdGhpcywgMCwgU3RyaW5nKCksIGds
b2JhbEZ1bmNQcm90b1NldHRlcikpOwogICAgIG1fb2JqZWN0UHJvdG90eXBlLT5wdXREaXJlY3RB
Y2Nlc3NvcihleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS51bmRlcnNj
b3JlUHJvdG8sIHByb3RvQWNjZXNzb3IsIEFjY2Vzc29yIHwgRG9udEVudW0pOwogICAgIG1fZnVu
Y3Rpb25Qcm90b3R5cGUtPnN0cnVjdHVyZSgpLT5zZXRQcm90b3R5cGVXaXRob3V0VHJhbnNpdGlv
bihleGVjLT5nbG9iYWxEYXRhKCksIG1fb2JqZWN0UHJvdG90eXBlLmdldCgpKTsKIApAQCAtMjcx
LDEyICsyNzEsMTIgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6cmVzZXQoSlNWYWx1ZSBwcm90b3R5
cGUpCiAKICAgICBTdHJ1Y3R1cmUqIG5hdGl2ZUVycm9yUHJvdG90eXBlU3RydWN0dXJlID0gTmF0
aXZlRXJyb3JQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZShleGVjLT5nbG9iYWxEYXRhKCksIHRo
aXMsIG1fZXJyb3JQcm90b3R5cGUuZ2V0KCkpOwogICAgIFN0cnVjdHVyZSogbmF0aXZlRXJyb3JT
dHJ1Y3R1cmUgPSBOYXRpdmVFcnJvckNvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUoZXhlYy0+
Z2xvYmFsRGF0YSgpLCB0aGlzLCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgpKTsKLSAgICBtX2V2
YWxFcnJvckNvbnN0cnVjdG9yLnNldChleGVjLT5nbG9iYWxEYXRhKCksIHRoaXMsIE5hdGl2ZUVy
cm9yQ29uc3RydWN0b3I6OmNyZWF0ZShleGVjLCB0aGlzLCBuYXRpdmVFcnJvclN0cnVjdHVyZSwg
bmF0aXZlRXJyb3JQcm90b3R5cGVTdHJ1Y3R1cmUsICJFdmFsRXJyb3IiKSk7Ci0gICAgbV9yYW5n
ZUVycm9yQ29uc3RydWN0b3Iuc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywgTmF0aXZlRXJy
b3JDb25zdHJ1Y3Rvcjo6Y3JlYXRlKGV4ZWMsIHRoaXMsIG5hdGl2ZUVycm9yU3RydWN0dXJlLCBu
YXRpdmVFcnJvclByb3RvdHlwZVN0cnVjdHVyZSwgIlJhbmdlRXJyb3IiKSk7Ci0gICAgbV9yZWZl
cmVuY2VFcnJvckNvbnN0cnVjdG9yLnNldChleGVjLT5nbG9iYWxEYXRhKCksIHRoaXMsIE5hdGl2
ZUVycm9yQ29uc3RydWN0b3I6OmNyZWF0ZShleGVjLCB0aGlzLCBuYXRpdmVFcnJvclN0cnVjdHVy
ZSwgbmF0aXZlRXJyb3JQcm90b3R5cGVTdHJ1Y3R1cmUsICJSZWZlcmVuY2VFcnJvciIpKTsKLSAg
ICBtX3N5bnRheEVycm9yQ29uc3RydWN0b3Iuc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywg
TmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcjo6Y3JlYXRlKGV4ZWMsIHRoaXMsIG5hdGl2ZUVycm9yU3Ry
dWN0dXJlLCBuYXRpdmVFcnJvclByb3RvdHlwZVN0cnVjdHVyZSwgIlN5bnRheEVycm9yIikpOwot
ICAgIG1fdHlwZUVycm9yQ29uc3RydWN0b3Iuc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywg
TmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcjo6Y3JlYXRlKGV4ZWMsIHRoaXMsIG5hdGl2ZUVycm9yU3Ry
dWN0dXJlLCBuYXRpdmVFcnJvclByb3RvdHlwZVN0cnVjdHVyZSwgIlR5cGVFcnJvciIpKTsKLSAg
ICBtX1VSSUVycm9yQ29uc3RydWN0b3Iuc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywgTmF0
aXZlRXJyb3JDb25zdHJ1Y3Rvcjo6Y3JlYXRlKGV4ZWMsIHRoaXMsIG5hdGl2ZUVycm9yU3RydWN0
dXJlLCBuYXRpdmVFcnJvclByb3RvdHlwZVN0cnVjdHVyZSwgIlVSSUVycm9yIikpOworICAgIG1f
ZXZhbEVycm9yQ29uc3RydWN0b3Iuc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywgTmF0aXZl
RXJyb3JDb25zdHJ1Y3Rvcjo6Y3JlYXRlKGV4ZWMsIHRoaXMsIG5hdGl2ZUVycm9yU3RydWN0dXJl
LCBuYXRpdmVFcnJvclByb3RvdHlwZVN0cnVjdHVyZSwgQVNDSUlMaXRlcmFsKCJFdmFsRXJyb3Ii
KSkpOworICAgIG1fcmFuZ2VFcnJvckNvbnN0cnVjdG9yLnNldChleGVjLT5nbG9iYWxEYXRhKCks
IHRoaXMsIE5hdGl2ZUVycm9yQ29uc3RydWN0b3I6OmNyZWF0ZShleGVjLCB0aGlzLCBuYXRpdmVF
cnJvclN0cnVjdHVyZSwgbmF0aXZlRXJyb3JQcm90b3R5cGVTdHJ1Y3R1cmUsIEFTQ0lJTGl0ZXJh
bCgiUmFuZ2VFcnJvciIpKSk7CisgICAgbV9yZWZlcmVuY2VFcnJvckNvbnN0cnVjdG9yLnNldChl
eGVjLT5nbG9iYWxEYXRhKCksIHRoaXMsIE5hdGl2ZUVycm9yQ29uc3RydWN0b3I6OmNyZWF0ZShl
eGVjLCB0aGlzLCBuYXRpdmVFcnJvclN0cnVjdHVyZSwgbmF0aXZlRXJyb3JQcm90b3R5cGVTdHJ1
Y3R1cmUsIEFTQ0lJTGl0ZXJhbCgiUmVmZXJlbmNlRXJyb3IiKSkpOworICAgIG1fc3ludGF4RXJy
b3JDb25zdHJ1Y3Rvci5zZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlzLCBOYXRpdmVFcnJvckNv
bnN0cnVjdG9yOjpjcmVhdGUoZXhlYywgdGhpcywgbmF0aXZlRXJyb3JTdHJ1Y3R1cmUsIG5hdGl2
ZUVycm9yUHJvdG90eXBlU3RydWN0dXJlLCBBU0NJSUxpdGVyYWwoIlN5bnRheEVycm9yIikpKTsK
KyAgICBtX3R5cGVFcnJvckNvbnN0cnVjdG9yLnNldChleGVjLT5nbG9iYWxEYXRhKCksIHRoaXMs
IE5hdGl2ZUVycm9yQ29uc3RydWN0b3I6OmNyZWF0ZShleGVjLCB0aGlzLCBuYXRpdmVFcnJvclN0
cnVjdHVyZSwgbmF0aXZlRXJyb3JQcm90b3R5cGVTdHJ1Y3R1cmUsIEFTQ0lJTGl0ZXJhbCgiVHlw
ZUVycm9yIikpKTsKKyAgICBtX1VSSUVycm9yQ29uc3RydWN0b3Iuc2V0KGV4ZWMtPmdsb2JhbERh
dGEoKSwgdGhpcywgTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcjo6Y3JlYXRlKGV4ZWMsIHRoaXMsIG5h
dGl2ZUVycm9yU3RydWN0dXJlLCBuYXRpdmVFcnJvclByb3RvdHlwZVN0cnVjdHVyZSwgQVNDSUlM
aXRlcmFsKCJVUklFcnJvciIpKSk7CiAKICAgICBtX29iamVjdFByb3RvdHlwZS0+cHV0RGlyZWN0
V2l0aG91dFRyYW5zaXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVz
KCkuY29uc3RydWN0b3IsIG9iamVjdENvbnN0cnVjdG9yLCBEb250RW51bSk7CiAgICAgbV9mdW5j
dGlvblByb3RvdHlwZS0+cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oZXhlYy0+Z2xvYmFsRGF0
YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuY29uc3RydWN0b3IsIGZ1bmN0aW9uQ29uc3RydWN0
b3IsIERvbnRFbnVtKTsKQEAgLTMzMSw3ICszMzEsNyBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojpy
ZXNldChKU1ZhbHVlIHByb3RvdHlwZSkKIAogdm9pZCBKU0dsb2JhbE9iamVjdDo6Y3JlYXRlVGhy
b3dUeXBlRXJyb3IoRXhlY1N0YXRlKiBleGVjKQogewotICAgIEpTRnVuY3Rpb24qIHRocm93ZXIg
PSBKU0Z1bmN0aW9uOjpjcmVhdGUoZXhlYywgdGhpcywgMCwgIiIsIGdsb2JhbEZ1bmNUaHJvd1R5
cGVFcnJvcik7CisgICAgSlNGdW5jdGlvbiogdGhyb3dlciA9IEpTRnVuY3Rpb246OmNyZWF0ZShl
eGVjLCB0aGlzLCAwLCBTdHJpbmcoKSwgZ2xvYmFsRnVuY1Rocm93VHlwZUVycm9yKTsKICAgICBH
ZXR0ZXJTZXR0ZXIqIGdldHRlclNldHRlciA9IEdldHRlclNldHRlcjo6Y3JlYXRlKGV4ZWMpOwog
ICAgIGdldHRlclNldHRlci0+c2V0R2V0dGVyKGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhyb3dlcik7
CiAgICAgZ2V0dGVyU2V0dGVyLT5zZXRTZXR0ZXIoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aHJvd2Vy
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2Jq
ZWN0RnVuY3Rpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFs
T2JqZWN0RnVuY3Rpb25zLmNwcAppbmRleCBiYzg5NzJjMmU0YzRkY2RjYzE2MTBiYTViZGJiODU2
ZDkxNjY3MDFiLi40NTg4ZWMyZDkxZmQ4OTlmNTg1YzI3OTgyOTczOTFmYmYzMjRhNjFhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdEZ1bmN0
aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmpl
Y3RGdW5jdGlvbnMuY3BwCkBAIC01Myw3ICs1Myw3IEBAIHN0YXRpYyBKU1ZhbHVlIGVuY29kZShF
eGVjU3RhdGUqIGV4ZWMsIGNvbnN0IGNoYXIqIGRvTm90RXNjYXBlKQogewogICAgIENTdHJpbmcg
Y3N0ciA9IGV4ZWMtPmFyZ3VtZW50KDApLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKS51dGY4
KHRydWUpOwogICAgIGlmICghY3N0ci5kYXRhKCkpCi0gICAgICAgIHJldHVybiB0aHJvd0Vycm9y
KGV4ZWMsIGNyZWF0ZVVSSUVycm9yKGV4ZWMsICJTdHJpbmcgY29udGFpbmVkIGFuIGlsbGVnYWwg
VVRGLTE2IHNlcXVlbmNlLiIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoZXhlYywgY3Jl
YXRlVVJJRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJTdHJpbmcgY29udGFpbmVkIGFuIGlsbGVn
YWwgVVRGLTE2IHNlcXVlbmNlLiIpKSk7CiAKICAgICBKU1N0cmluZ0J1aWxkZXIgYnVpbGRlcjsK
ICAgICBjb25zdCBjaGFyKiBwID0gY3N0ci5kYXRhKCk7CkBAIC0xMTQsNyArMTE0LDcgQEAgc3Rh
dGljIEpTVmFsdWUgZGVjb2RlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgQ2hhclR5cGUqIGNoYXJh
Y3RlcnMsIGludCBsZW5ndGgsIGMKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChjaGFy
TGVuID09IDApIHsKICAgICAgICAgICAgICAgICBpZiAoc3RyaWN0KQotICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gdGhyb3dFcnJvcihleGVjLCBjcmVhdGVVUklFcnJvcihleGVjLCAiVVJJIGVy
cm9yIikpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihleGVjLCBjcmVh
dGVVUklFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlVSSSBlcnJvciIpKSk7CiAgICAgICAgICAg
ICAgICAgLy8gVGhlIG9ubHkgY2FzZSB3aGVyZSB3ZSBkb24ndCB1c2UgInN0cmljdCIgbW9kZSBp
cyB0aGUgInVuZXNjYXBlIiBmdW5jdGlvbi4KICAgICAgICAgICAgICAgICAvLyBGb3IgdGhhdCwg
aXQncyBnb29kIHRvIHN1cHBvcnQgdGhlIHdvbmt5ICIldSIgc3ludGF4IGZvciBjb21wYXRpYmls
aXR5IHdpdGggV2luSUUuCiAgICAgICAgICAgICAgICAgaWYgKGsgPD0gbGVuZ3RoIC0gNiAmJiBw
WzFdID09ICd1JwpAQCAtNDk5LDcgKzQ5OSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgZ2xvYmFsRnVuY0V2YWwoRXhlY1N0YXRlKiBleGVjKQogICAgIEpTT2JqZWN0KiB0aGlzT2Jq
ZWN0ID0gZXhlYy0+aG9zdFRoaXNWYWx1ZSgpLnRvVGhpc09iamVjdChleGVjKTsKICAgICBKU09i
amVjdCogdW53cmFwcGVkT2JqZWN0ID0gdGhpc09iamVjdC0+dW53cmFwcGVkT2JqZWN0KCk7CiAg
ICAgaWYgKCF1bndyYXBwZWRPYmplY3QtPmlzR2xvYmFsT2JqZWN0KCkgfHwganNDYXN0PEpTR2xv
YmFsT2JqZWN0Kj4odW53cmFwcGVkT2JqZWN0KS0+ZXZhbEZ1bmN0aW9uKCkgIT0gZXhlYy0+Y2Fs
bGVlKCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlRXZhbEVycm9y
KGV4ZWMsICJUaGUgXCJ0aGlzXCIgdmFsdWUgcGFzc2VkIHRvIGV2YWwgbXVzdCBiZSB0aGUgZ2xv
YmFsIG9iamVjdCBmcm9tIHdoaWNoIGV2YWwgb3JpZ2luYXRlZCIpKTsKKyAgICAgICAgcmV0dXJu
IHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVFdmFsRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJU
aGUgXCJ0aGlzXCIgdmFsdWUgcGFzc2VkIHRvIGV2YWwgbXVzdCBiZSB0aGUgZ2xvYmFsIG9iamVj
dCBmcm9tIHdoaWNoIGV2YWwgb3JpZ2luYXRlZCIpKSk7CiAKICAgICBKU1ZhbHVlIHggPSBleGVj
LT5hcmd1bWVudCgwKTsKICAgICBpZiAoIXguaXNTdHJpbmcoKSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT05PYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNPTk9iamVjdC5jcHAKaW5kZXggMTUzNWMxZDEyMGI3ZWE3ZjUwZDM1
NzJmOGM4N2I2NDRmNzY4NTJjNy4uOTc1ZDRmYmM2M2NmY2M4ZDdmNDQxYzdjMDc1YzhlMTQyYzQ4
Yzg0ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPTk9iamVj
dC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPTk9iamVjdC5jcHAK
QEAgLTM2MSw3ICszNjEsNyBAQCBTdHJpbmdpZmllcjo6U3RyaW5naWZ5UmVzdWx0IFN0cmluZ2lm
aWVyOjphcHBlbmRTdHJpbmdpZmllZFZhbHVlKFN0cmluZ0J1aWxkZXImCiAgICAgICAgIHJldHVy
biBTdHJpbmdpZnlGYWlsZWREdWVUb1VuZGVmaW5lZFZhbHVlOwogCiAgICAgaWYgKHZhbHVlLmlz
TnVsbCgpKSB7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kKCJudWxsIik7CisgICAgICAgIGJ1aWxk
ZXIuYXBwZW5kTGl0ZXJhbCgibnVsbCIpOwogICAgICAgICByZXR1cm4gU3RyaW5naWZ5U3VjY2Vl
ZGVkOwogICAgIH0KIApAQCAtMzcxLDcgKzM3MSwxMCBAQCBTdHJpbmdpZmllcjo6U3RyaW5naWZ5
UmVzdWx0IFN0cmluZ2lmaWVyOjphcHBlbmRTdHJpbmdpZmllZFZhbHVlKFN0cmluZ0J1aWxkZXIm
CiAgICAgICAgIHJldHVybiBTdHJpbmdpZnlGYWlsZWQ7CiAKICAgICBpZiAodmFsdWUuaXNCb29s
ZWFuKCkpIHsKLSAgICAgICAgYnVpbGRlci5hcHBlbmQodmFsdWUuaXNUcnVlKCkgPyAidHJ1ZSIg
OiAiZmFsc2UiKTsKKyAgICAgICAgaWYgKHZhbHVlLmlzVHJ1ZSgpKQorICAgICAgICAgICAgYnVp
bGRlci5hcHBlbmRMaXRlcmFsKCJ0cnVlIik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGJ1
aWxkZXIuYXBwZW5kTGl0ZXJhbCgiZmFsc2UiKTsKICAgICAgICAgcmV0dXJuIFN0cmluZ2lmeVN1
Y2NlZWRlZDsKICAgICB9CiAKQEAgLTM4NCw3ICszODcsNyBAQCBTdHJpbmdpZmllcjo6U3RyaW5n
aWZ5UmVzdWx0IFN0cmluZ2lmaWVyOjphcHBlbmRTdHJpbmdpZmllZFZhbHVlKFN0cmluZ0J1aWxk
ZXImCiAgICAgaWYgKHZhbHVlLmlzTnVtYmVyKCkpIHsKICAgICAgICAgZG91YmxlIG51bWJlciA9
IHZhbHVlLmFzTnVtYmVyKCk7CiAgICAgICAgIGlmICghaXNmaW5pdGUobnVtYmVyKSkKLSAgICAg
ICAgICAgIGJ1aWxkZXIuYXBwZW5kKCJudWxsIik7CisgICAgICAgICAgICBidWlsZGVyLmFwcGVu
ZExpdGVyYWwoIm51bGwiKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgYnVpbGRlci5hcHBl
bmQoU3RyaW5nOjpudW1iZXJUb1N0cmluZ0VDTUFTY3JpcHQobnVtYmVyKSk7CiAgICAgICAgIHJl
dHVybiBTdHJpbmdpZnlTdWNjZWVkZWQ7CkBAIC0zOTgsNyArNDAxLDcgQEAgU3RyaW5naWZpZXI6
OlN0cmluZ2lmeVJlc3VsdCBTdHJpbmdpZmllcjo6YXBwZW5kU3RyaW5naWZpZWRWYWx1ZShTdHJp
bmdCdWlsZGVyJgogICAgIENhbGxEYXRhIGNhbGxEYXRhOwogICAgIGlmIChvYmplY3QtPm1ldGhv
ZFRhYmxlKCktPmdldENhbGxEYXRhKG9iamVjdCwgY2FsbERhdGEpICE9IENhbGxUeXBlTm9uZSkg
ewogICAgICAgICBpZiAoaG9sZGVyLT5pbmhlcml0cygmSlNBcnJheTo6c19pbmZvKSkgewotICAg
ICAgICAgICAgYnVpbGRlci5hcHBlbmQoIm51bGwiKTsKKyAgICAgICAgICAgIGJ1aWxkZXIuYXBw
ZW5kTGl0ZXJhbCgibnVsbCIpOwogICAgICAgICAgICAgcmV0dXJuIFN0cmluZ2lmeVN1Y2NlZWRl
ZDsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gU3RyaW5naWZ5RmFpbGVkRHVlVG9VbmRlZmlu
ZWRWYWx1ZTsKQEAgLTQwNyw3ICs0MTAsNyBAQCBTdHJpbmdpZmllcjo6U3RyaW5naWZ5UmVzdWx0
IFN0cmluZ2lmaWVyOjphcHBlbmRTdHJpbmdpZmllZFZhbHVlKFN0cmluZ0J1aWxkZXImCiAgICAg
Ly8gSGFuZGxlIGN5Y2xlIGRldGVjdGlvbiwgYW5kIHB1dCB0aGUgaG9sZGVyIG9uIHRoZSBzdGFj
ay4KICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9ob2xkZXJTdGFjay5zaXplKCk7IGkr
KykgewogICAgICAgICBpZiAobV9ob2xkZXJTdGFja1tpXS5vYmplY3QoKSA9PSBvYmplY3QpIHsK
LSAgICAgICAgICAgIHRocm93RXJyb3IobV9leGVjLCBjcmVhdGVUeXBlRXJyb3IobV9leGVjLCAi
SlNPTi5zdHJpbmdpZnkgY2Fubm90IHNlcmlhbGl6ZSBjeWNsaWMgc3RydWN0dXJlcy4iKSk7Cisg
ICAgICAgICAgICB0aHJvd0Vycm9yKG1fZXhlYywgY3JlYXRlVHlwZUVycm9yKG1fZXhlYywgQVND
SUlMaXRlcmFsKCJKU09OLnN0cmluZ2lmeSBjYW5ub3Qgc2VyaWFsaXplIGN5Y2xpYyBzdHJ1Y3R1
cmVzLiIpKSk7CiAgICAgICAgICAgICByZXR1cm4gU3RyaW5naWZ5RmFpbGVkOwogICAgICAgICB9
CiAgICAgfQpAQCAtNTY5LDcgKzU3Miw3IEBAIGJvb2wgU3RyaW5naWZpZXI6OkhvbGRlcjo6YXBw
ZW5kTmV4dFByb3BlcnR5KFN0cmluZ2lmaWVyJiBzdHJpbmdpZmllciwgU3RyaW5nQnVpCiAKICAg
ICBzd2l0Y2ggKHN0cmluZ2lmeVJlc3VsdCkgewogICAgICAgICBjYXNlIFN0cmluZ2lmeUZhaWxl
ZDoKLSAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCJudWxsIik7CisgICAgICAgICAgICBidWls
ZGVyLmFwcGVuZExpdGVyYWwoIm51bGwiKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBj
YXNlIFN0cmluZ2lmeVN1Y2NlZWRlZDoKICAgICAgICAgICAgIGJyZWFrOwpAQCAtODA5LDcgKzgx
Miw3IEBAIE5FVkVSX0lOTElORSBKU1ZhbHVlIFdhbGtlcjo6d2FsayhKU1ZhbHVlIHVuZmlsdGVy
ZWQpCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpTT05Qcm90b0Z1bmNQYXJzZShFeGVj
U3RhdGUqIGV4ZWMpCiB7CiAgICAgaWYgKCFleGVjLT5hcmd1bWVudENvdW50KCkpCi0gICAgICAg
IHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlRXJyb3IoZXhlYywgIkpTT04ucGFyc2Ug
cmVxdWlyZXMgYXQgbGVhc3Qgb25lIHBhcmFtZXRlciIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93
Vk1FcnJvcihleGVjLCBjcmVhdGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkpTT04ucGFyc2Ug
cmVxdWlyZXMgYXQgbGVhc3Qgb25lIHBhcmFtZXRlciIpKSk7CiAgICAgU3RyaW5nIHNvdXJjZSA9
IGV4ZWMtPmFyZ3VtZW50KDApLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKICAgICBpZiAo
ZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNO
dWxsKCkpOwpAQCAtODQzLDcgKzg0Niw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
SlNPTlByb3RvRnVuY1BhcnNlKEV4ZWNTdGF0ZSogZXhlYykKIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgSlNPTlByb3RvRnVuY1N0cmluZ2lmeShFeGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAg
aWYgKCFleGVjLT5hcmd1bWVudENvdW50KCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Io
ZXhlYywgY3JlYXRlRXJyb3IoZXhlYywgIk5vIGlucHV0IHRvIHN0cmluZ2lmeSIpKTsKKyAgICAg
ICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVFcnJvcihleGVjLCBBU0NJSUxpdGVy
YWwoIk5vIGlucHV0IHRvIHN0cmluZ2lmeSIpKSk7CiAgICAgTG9jYWxTY29wZSBzY29wZShleGVj
LT5nbG9iYWxEYXRhKCkpOwogICAgIExvY2FsPFVua25vd24+IHZhbHVlKGV4ZWMtPmdsb2JhbERh
dGEoKSwgZXhlYy0+YXJndW1lbnQoMCkpOwogICAgIExvY2FsPFVua25vd24+IHJlcGxhY2VyKGV4
ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+YXJndW1lbnQoMSkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCmluZGV4IDMyNzViMjIyYjVjZWZmYjgwMDNhMDhjMjdl
Nzk5MmQwYWYyNTMwMTMuLjgxMmJhM2JjODM0YzZkOGJmMmJhNzg4ZGRjYTBjYzAzZjU3MTcxN2Mg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAKQEAgLTE4Miw3
ICsxODIsNyBAQCB2b2lkIEpTT2JqZWN0OjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4
ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVgogICAgICAgICAgICAgcHJvdG90eXBl
ID0gb2JqLT5wcm90b3R5cGUoKTsKICAgICAgICAgICAgIGlmIChwcm90b3R5cGUuaXNOdWxsKCkp
IHsKICAgICAgICAgICAgICAgICBpZiAoIXRoaXNPYmplY3QtPnB1dERpcmVjdEludGVybmFsPFB1
dE1vZGVQdXQ+KGdsb2JhbERhdGEsIHByb3BlcnR5TmFtZSwgdmFsdWUsIDAsIHNsb3QsIGdldENh
bGxhYmxlT2JqZWN0KHZhbHVlKSkgJiYgc2xvdC5pc1N0cmljdE1vZGUoKSkKLSAgICAgICAgICAg
ICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgU3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVydHlX
cml0ZUVycm9yKTsKKyAgICAgICAgICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgQVND
SUlMaXRlcmFsKFN0cmljdE1vZGVSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcikpOwogICAgICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtMTk1LDcgKzE5
NSw3IEBAIHZvaWQgSlNPYmplY3Q6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywg
UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWCiAgICAgICAgIGlmIChvZmZzZXQgIT0gaW52
YWxpZE9mZnNldCkgewogICAgICAgICAgICAgaWYgKGF0dHJpYnV0ZXMgJiBSZWFkT25seSkgewog
ICAgICAgICAgICAgICAgIGlmIChzbG90LmlzU3RyaWN0TW9kZSgpKQotICAgICAgICAgICAgICAg
ICAgICB0aHJvd0Vycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCBTdHJpY3RNb2RlUmVh
ZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpKTsKKyAgICAgICAgICAgICAgICAgICAgdGhyb3dFcnJv
cihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKFN0cmljdE1vZGVSZWFk
b25seVByb3BlcnR5V3JpdGVFcnJvcikpKTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgICAgICB9CiAKQEAgLTIwNCw3ICsyMDQsNyBAQCB2b2lkIEpTT2JqZWN0OjpwdXQoSlNDZWxs
KiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVgog
ICAgICAgICAgICAgICAgIEpTT2JqZWN0KiBzZXR0ZXJGdW5jID0gYXNHZXR0ZXJTZXR0ZXIoZ3Mp
LT5zZXR0ZXIoKTsgICAgICAgIAogICAgICAgICAgICAgICAgIGlmICghc2V0dGVyRnVuYykgewog
ICAgICAgICAgICAgICAgICAgICBpZiAoc2xvdC5pc1N0cmljdE1vZGUoKSkKLSAgICAgICAgICAg
ICAgICAgICAgICAgIHRocm93RXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsICJzZXR0
aW5nIGEgcHJvcGVydHkgdGhhdCBoYXMgb25seSBhIGdldHRlciIpKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHRocm93RXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0
ZXJhbCgic2V0dGluZyBhIHByb3BlcnR5IHRoYXQgaGFzIG9ubHkgYSBnZXR0ZXIiKSkpOwogICAg
ICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
ICAgIApAQCAtMjI5LDcgKzIyOSw3IEBAIHZvaWQgSlNPYmplY3Q6OnB1dChKU0NlbGwqIGNlbGws
IEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWCiAgICAgfQog
ICAgIAogICAgIGlmICghdGhpc09iamVjdC0+cHV0RGlyZWN0SW50ZXJuYWw8UHV0TW9kZVB1dD4o
Z2xvYmFsRGF0YSwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgMCwgc2xvdCwgZ2V0Q2FsbGFibGVPYmpl
Y3QodmFsdWUpKSAmJiBzbG90LmlzU3RyaWN0TW9kZSgpKQotICAgICAgICB0aHJvd1R5cGVFcnJv
cihleGVjLCBTdHJpY3RNb2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpOworICAgICAgICB0
aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoU3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVy
dHlXcml0ZUVycm9yKSk7CiAgICAgcmV0dXJuOwogfQogCkBAIC0zODksNyArMzg5LDcgQEAgSlNW
YWx1ZSBKU09iamVjdDo6ZGVmYXVsdFZhbHVlKGNvbnN0IEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNT
dGF0ZSogZXhlYywgUHJlZmVycmUKIAogICAgIEFTU0VSVCghZXhlYy0+aGFkRXhjZXB0aW9uKCkp
OwogCi0gICAgcmV0dXJuIHRocm93RXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsICJO
byBkZWZhdWx0IHZhbHVlIikpOworICAgIHJldHVybiB0aHJvd0Vycm9yKGV4ZWMsIGNyZWF0ZVR5
cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIk5vIGRlZmF1bHQgdmFsdWUiKSkpOwogfQogCiBj
b25zdCBIYXNoRW50cnkqIEpTT2JqZWN0OjpmaW5kUHJvcGVydHlIYXNoRW50cnkoRXhlY1N0YXRl
KiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKSBjb25zdApAQCAtNDA5LDcgKzQwOSw3
IEBAIGJvb2wgSlNPYmplY3Q6Omhhc0luc3RhbmNlKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiBleGVj
LCBKU1ZhbHVlIHZhbHVlLCBKU1ZhbHVlIHByCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAg
IGlmICghcHJvdG8uaXNPYmplY3QoKSkgewotICAgICAgICB0aHJvd0Vycm9yKGV4ZWMsIGNyZWF0
ZVR5cGVFcnJvcihleGVjLCAiaW5zdGFuY2VvZiBjYWxsZWQgb24gYW4gb2JqZWN0IHdpdGggYW4g
aW52YWxpZCBwcm90b3R5cGUgcHJvcGVydHkuIikpOworICAgICAgICB0aHJvd0Vycm9yKGV4ZWMs
IGNyZWF0ZVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoImluc3RhbmNlb2YgY2FsbGVkIG9u
IGFuIG9iamVjdCB3aXRoIGFuIGludmFsaWQgcHJvdG90eXBlIHByb3BlcnR5LiIpKSk7CiAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKQEAgLTcxOCw3ICs3MTgsNyBAQCBib29sIEpTT2Jq
ZWN0OjpkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMs
IFByb3BlcnR5TmFtZQogICAgICAgICAvLyB1bmxlc3MgZXh0ZW5zaW9ucyBhcmUgcHJldmVudGVk
IQogICAgICAgICBpZiAoIW9iamVjdC0+aXNFeHRlbnNpYmxlKCkpIHsKICAgICAgICAgICAgIGlm
ICh0aHJvd0V4Y2VwdGlvbikKLSAgICAgICAgICAgICAgICB0aHJvd0Vycm9yKGV4ZWMsIGNyZWF0
ZVR5cGVFcnJvcihleGVjLCAiQXR0ZW1wdGluZyB0byBkZWZpbmUgcHJvcGVydHkgb24gb2JqZWN0
IHRoYXQgaXMgbm90IGV4dGVuc2libGUuIikpOworICAgICAgICAgICAgICAgIHRocm93RXJyb3Io
ZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiQXR0ZW1wdGluZyB0byBk
ZWZpbmUgcHJvcGVydHkgb24gb2JqZWN0IHRoYXQgaXMgbm90IGV4dGVuc2libGUuIikpKTsKICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogICAgICAgICBQcm9wZXJ0eURlc2Ny
aXB0b3Igb2xkRGVzY3JpcHRvcjsKQEAgLTczNiwxMiArNzM2LDEyIEBAIGJvb2wgSlNPYmplY3Q6
OmRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJv
cGVydHlOYW1lCiAgICAgaWYgKCFjdXJyZW50LmNvbmZpZ3VyYWJsZSgpKSB7CiAgICAgICAgIGlm
IChkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSgpKSB7CiAgICAgICAgICAgICBpZiAodGhyb3dFeGNl
cHRpb24pCi0gICAgICAgICAgICAgICAgdGhyb3dFcnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3Io
ZXhlYywgIkF0dGVtcHRpbmcgdG8gY29uZmlndXJhYmxlIGF0dHJpYnV0ZSBvZiB1bmNvbmZpZ3Vy
YWJsZSBwcm9wZXJ0eS4iKSk7CisgICAgICAgICAgICAgICAgdGhyb3dFcnJvcihleGVjLCBjcmVh
dGVUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJBdHRlbXB0aW5nIHRvIGNvbmZpZ3VyYWJs
ZSBhdHRyaWJ1dGUgb2YgdW5jb25maWd1cmFibGUgcHJvcGVydHkuIikpKTsKICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICAgICAgfQogICAgICAgICBpZiAoZGVzY3JpcHRvci5lbnVtZXJh
YmxlUHJlc2VudCgpICYmIGRlc2NyaXB0b3IuZW51bWVyYWJsZSgpICE9IGN1cnJlbnQuZW51bWVy
YWJsZSgpKSB7CiAgICAgICAgICAgICBpZiAodGhyb3dFeGNlcHRpb24pCi0gICAgICAgICAgICAg
ICAgdGhyb3dFcnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgIkF0dGVtcHRpbmcgdG8g
Y2hhbmdlIGVudW1lcmFibGUgYXR0cmlidXRlIG9mIHVuY29uZmlndXJhYmxlIHByb3BlcnR5LiIp
KTsKKyAgICAgICAgICAgICAgICB0aHJvd0Vycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVj
LCBBU0NJSUxpdGVyYWwoIkF0dGVtcHRpbmcgdG8gY2hhbmdlIGVudW1lcmFibGUgYXR0cmlidXRl
IG9mIHVuY29uZmlndXJhYmxlIHByb3BlcnR5LiIpKSk7CiAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgICAgIH0KICAgICB9CkBAIC03NTksNyArNzU5LDcgQEAgYm9vbCBKU09iamVjdDo6
ZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9w
ZXJ0eU5hbWUKICAgICBpZiAoZGVzY3JpcHRvci5pc0RhdGFEZXNjcmlwdG9yKCkgIT0gY3VycmVu
dC5pc0RhdGFEZXNjcmlwdG9yKCkpIHsKICAgICAgICAgaWYgKCFjdXJyZW50LmNvbmZpZ3VyYWJs
ZSgpKSB7CiAgICAgICAgICAgICBpZiAodGhyb3dFeGNlcHRpb24pCi0gICAgICAgICAgICAgICAg
dGhyb3dFcnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgIkF0dGVtcHRpbmcgdG8gY2hh
bmdlIGFjY2VzcyBtZWNoYW5pc20gZm9yIGFuIHVuY29uZmlndXJhYmxlIHByb3BlcnR5LiIpKTsK
KyAgICAgICAgICAgICAgICB0aHJvd0Vycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCBB
U0NJSUxpdGVyYWwoIkF0dGVtcHRpbmcgdG8gY2hhbmdlIGFjY2VzcyBtZWNoYW5pc20gZm9yIGFu
IHVuY29uZmlndXJhYmxlIHByb3BlcnR5LiIpKSk7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgICAgIH0KICAgICAgICAgb2JqZWN0LT5tZXRob2RUYWJsZSgpLT5kZWxldGVQcm9wZXJ0
eShvYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSk7CkBAIC03NzEsMTMgKzc3MSwxMyBAQCBib29s
IEpTT2JqZWN0OjpkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUq
IGV4ZWMsIFByb3BlcnR5TmFtZQogICAgICAgICBpZiAoIWN1cnJlbnQuY29uZmlndXJhYmxlKCkp
IHsKICAgICAgICAgICAgIGlmICghY3VycmVudC53cml0YWJsZSgpICYmIGRlc2NyaXB0b3Iud3Jp
dGFibGUoKSkgewogICAgICAgICAgICAgICAgIGlmICh0aHJvd0V4Y2VwdGlvbikKLSAgICAgICAg
ICAgICAgICAgICAgdGhyb3dFcnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgIkF0dGVt
cHRpbmcgdG8gY2hhbmdlIHdyaXRhYmxlIGF0dHJpYnV0ZSBvZiB1bmNvbmZpZ3VyYWJsZSBwcm9w
ZXJ0eS4iKSk7CisgICAgICAgICAgICAgICAgICAgIHRocm93RXJyb3IoZXhlYywgY3JlYXRlVHlw
ZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiQXR0ZW1wdGluZyB0byBjaGFuZ2Ugd3JpdGFibGUg
YXR0cmlidXRlIG9mIHVuY29uZmlndXJhYmxlIHByb3BlcnR5LiIpKSk7CiAgICAgICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKCFjdXJyZW50
LndyaXRhYmxlKCkpIHsKICAgICAgICAgICAgICAgICBpZiAoZGVzY3JpcHRvci52YWx1ZSgpICYm
ICFzYW1lVmFsdWUoZXhlYywgY3VycmVudC52YWx1ZSgpLCBkZXNjcmlwdG9yLnZhbHVlKCkpKSB7
CiAgICAgICAgICAgICAgICAgICAgIGlmICh0aHJvd0V4Y2VwdGlvbikKLSAgICAgICAgICAgICAg
ICAgICAgICAgIHRocm93RXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsICJBdHRlbXB0
aW5nIHRvIGNoYW5nZSB2YWx1ZSBvZiBhIHJlYWRvbmx5IHByb3BlcnR5LiIpKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHRocm93RXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsIEFT
Q0lJTGl0ZXJhbCgiQXR0ZW1wdGluZyB0byBjaGFuZ2UgdmFsdWUgb2YgYSByZWFkb25seSBwcm9w
ZXJ0eS4iKSkpOwogICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAg
ICAgICAgfQogICAgICAgICAgICAgfQpAQCAtNzkzLDEyICs3OTMsMTIgQEAgYm9vbCBKU09iamVj
dDo6ZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQ
cm9wZXJ0eU5hbWUKICAgICBpZiAoIWN1cnJlbnQuY29uZmlndXJhYmxlKCkpIHsKICAgICAgICAg
aWYgKGRlc2NyaXB0b3Iuc2V0dGVyUHJlc2VudCgpICYmICEoY3VycmVudC5zZXR0ZXJQcmVzZW50
KCkgJiYgSlNWYWx1ZTo6c3RyaWN0RXF1YWwoZXhlYywgY3VycmVudC5zZXR0ZXIoKSwgZGVzY3Jp
cHRvci5zZXR0ZXIoKSkpKSB7CiAgICAgICAgICAgICBpZiAodGhyb3dFeGNlcHRpb24pCi0gICAg
ICAgICAgICAgICAgdGhyb3dFcnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgIkF0dGVt
cHRpbmcgdG8gY2hhbmdlIHRoZSBzZXR0ZXIgb2YgYW4gdW5jb25maWd1cmFibGUgcHJvcGVydHku
IikpOworICAgICAgICAgICAgICAgIHRocm93RXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4
ZWMsIEFTQ0lJTGl0ZXJhbCgiQXR0ZW1wdGluZyB0byBjaGFuZ2UgdGhlIHNldHRlciBvZiBhbiB1
bmNvbmZpZ3VyYWJsZSBwcm9wZXJ0eS4iKSkpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgICAgICB9CiAgICAgICAgIGlmIChkZXNjcmlwdG9yLmdldHRlclByZXNlbnQoKSAmJiAhKGN1
cnJlbnQuZ2V0dGVyUHJlc2VudCgpICYmIEpTVmFsdWU6OnN0cmljdEVxdWFsKGV4ZWMsIGN1cnJl
bnQuZ2V0dGVyKCksIGRlc2NyaXB0b3IuZ2V0dGVyKCkpKSkgewogICAgICAgICAgICAgaWYgKHRo
cm93RXhjZXB0aW9uKQotICAgICAgICAgICAgICAgIHRocm93RXJyb3IoZXhlYywgY3JlYXRlVHlw
ZUVycm9yKGV4ZWMsICJBdHRlbXB0aW5nIHRvIGNoYW5nZSB0aGUgZ2V0dGVyIG9mIGFuIHVuY29u
ZmlndXJhYmxlIHByb3BlcnR5LiIpKTsKKyAgICAgICAgICAgICAgICB0aHJvd0Vycm9yKGV4ZWMs
IGNyZWF0ZVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkF0dGVtcHRpbmcgdG8gY2hhbmdl
IHRoZSBnZXR0ZXIgb2YgYW4gdW5jb25maWd1cmFibGUgcHJvcGVydHkuIikpKTsKICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTU3RyaW5nLmNwcAppbmRleCA5NzdmMGQxMDAzYzg1YTk4NjEzYzJiODhmNGQz
ZTUwY2Q4ZWJmYjIzLi40MjZjMDI2MzQ2MzYwZTk1MDhlMWU1NTk5N2ZmMmI0MWFjNmM1MWNjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuY3BwCkBAIC0yMjUsNyAr
MjI1LDcgQEAgSlNTdHJpbmcqIEpTUm9wZVN0cmluZzo6Z2V0SW5kZXhTbG93Q2FzZShFeGVjU3Rh
dGUqIGV4ZWMsIHVuc2lnbmVkIGkpCiAgICAgcmVzb2x2ZVJvcGUoZXhlYyk7CiAgICAgLy8gUmV0
dXJuIGEgc2FmZSBuby12YWx1ZSByZXN1bHQsIHRoaXMgc2hvdWxkIG5ldmVyIGJlIHVzZWQsIHNp
bmNlIHRoZSBleGNldGlvbiB3aWxsIGJlIHRocm93bi4KICAgICBpZiAoZXhlYy0+ZXhjZXB0aW9u
KCkpCi0gICAgICAgIHJldHVybiBqc1N0cmluZyhleGVjLCAiIik7CisgICAgICAgIHJldHVybiBq
c0VtcHR5U3RyaW5nKGV4ZWMpOwogICAgIEFTU0VSVCghaXNSb3BlKCkpOwogICAgIEFTU0VSVChp
IDwgbV92YWx1ZS5sZW5ndGgoKSk7CiAgICAgcmV0dXJuIGpzU2luZ2xlQ2hhcmFjdGVyU3Vic3Ry
aW5nKGV4ZWMsIG1fdmFsdWUsIGkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNTdHJpbmcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3Ry
aW5nLmgKaW5kZXggOWYxNzZhZDIzY2ZkMjAzNGUyNGI1NzAwZjE0YjQwNDM2ZjFjZWU4My4uN2M0
ZDY1ZmM2YTJmOWQ4NGQzNTQxZDJmMjk0ZTc1NWIzMGE2OTU4ZiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU1N0cmluZy5oCkBAIC01MCw4ICs1MCw2IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgIC8vIFRoZXNlIGZ1bmN0aW9ucyBhcmUgZmFzdGVyIHRoYW4ganVzdCBjYWxsaW5nIGpz
U3RyaW5nLgogICAgIEpTU3RyaW5nKiBqc05vbnRyaXZpYWxTdHJpbmcoSlNHbG9iYWxEYXRhKiwg
Y29uc3QgU3RyaW5nJik7CiAgICAgSlNTdHJpbmcqIGpzTm9udHJpdmlhbFN0cmluZyhFeGVjU3Rh
dGUqLCBjb25zdCBTdHJpbmcmKTsKLSAgICBKU1N0cmluZyoganNOb250cml2aWFsU3RyaW5nKEpT
R2xvYmFsRGF0YSosIGNvbnN0IGNoYXIqKTsKLSAgICBKU1N0cmluZyoganNOb250cml2aWFsU3Ry
aW5nKEV4ZWNTdGF0ZSosIGNvbnN0IGNoYXIqKTsKIAogICAgIC8vIFNob3VsZCBiZSB1c2VkIGZv
ciBzdHJpbmdzIHRoYXQgYXJlIG93bmVkIGJ5IGFuIG9iamVjdCB0aGF0IHdpbGwKICAgICAvLyBs
aWtlbHkgb3V0bGl2ZSB0aGUgSlNWYWx1ZSB0aGlzIG1ha2VzLCBzdWNoIGFzIHRoZSBwYXJzZSB0
cmVlIG9yIGEKQEAgLTM1MywxNCArMzUxLDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHJl
dHVybiBKU1N0cmluZzo6Y3JlYXRlKCpnbG9iYWxEYXRhLCBTdHJpbmdJbXBsOjpjcmVhdGUocy5p
bXBsKCksIG9mZnNldCwgMSkpOwogICAgIH0KIAotICAgIGlubGluZSBKU1N0cmluZyoganNOb250
cml2aWFsU3RyaW5nKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgY29uc3QgY2hhciogcykKLSAg
ICB7Ci0gICAgICAgIEFTU0VSVChzKTsKLSAgICAgICAgQVNTRVJUKHNbMF0pOwotICAgICAgICBB
U1NFUlQoc1sxXSk7Ci0gICAgICAgIHJldHVybiBKU1N0cmluZzo6Y3JlYXRlKCpnbG9iYWxEYXRh
LCBTdHJpbmcocykuaW1wbCgpKTsKLSAgICB9Ci0KICAgICBpbmxpbmUgSlNTdHJpbmcqIGpzTm9u
dHJpdmlhbFN0cmluZyhKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIGNvbnN0IFN0cmluZyYgcykK
ICAgICB7CiAgICAgICAgIEFTU0VSVChzLmxlbmd0aCgpID4gMSk7CkBAIC00NjgsNyArNDU4LDYg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgaW5saW5lIEpTU3RyaW5nKiBqc1N1YnN0cmluZzgoRXhl
Y1N0YXRlKiBleGVjLCBjb25zdCBTdHJpbmcmIHMsIHVuc2lnbmVkIG9mZnNldCwgdW5zaWduZWQg
bGVuZ3RoKSB7IHJldHVybiBqc1N1YnN0cmluZzgoJmV4ZWMtPmdsb2JhbERhdGEoKSwgcywgb2Zm
c2V0LCBsZW5ndGgpOyB9CiAgICAgaW5saW5lIEpTU3RyaW5nKiBqc1N1YnN0cmluZyhFeGVjU3Rh
dGUqIGV4ZWMsIGNvbnN0IFN0cmluZyYgcywgdW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBsZW5n
dGgpIHsgcmV0dXJuIGpzU3Vic3RyaW5nKCZleGVjLT5nbG9iYWxEYXRhKCksIHMsIG9mZnNldCwg
bGVuZ3RoKTsgfQogICAgIGlubGluZSBKU1N0cmluZyoganNOb250cml2aWFsU3RyaW5nKEV4ZWNT
dGF0ZSogZXhlYywgY29uc3QgU3RyaW5nJiBzKSB7IHJldHVybiBqc05vbnRyaXZpYWxTdHJpbmco
JmV4ZWMtPmdsb2JhbERhdGEoKSwgcyk7IH0KLSAgICBpbmxpbmUgSlNTdHJpbmcqIGpzTm9udHJp
dmlhbFN0cmluZyhFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IGNoYXIqIHMpIHsgcmV0dXJuIGpzTm9u
dHJpdmlhbFN0cmluZygmZXhlYy0+Z2xvYmFsRGF0YSgpLCBzKTsgfQogICAgIGlubGluZSBKU1N0
cmluZyoganNPd25lZFN0cmluZyhFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFN0cmluZyYgcykgeyBy
ZXR1cm4ganNPd25lZFN0cmluZygmZXhlYy0+Z2xvYmFsRGF0YSgpLCBzKTsgfQogCiAgICAgQUxX
QVlTX0lOTElORSBib29sIEpTU3RyaW5nOjpnZXRTdHJpbmdQcm9wZXJ0eVNsb3QoRXhlY1N0YXRl
KiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1ZhbHVlLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFsdWUuY3BwCmluZGV4IDBiZWRhYTMzZjI2
MjMwMjcyYzA3MzliNzNjMzVmYzAyZmUwZjdhNDcuLmNhZmY5OTczYjRkNDYwNjdhZWRkMTY2YTk4
Zjc5ZTI0ZjU2ZjVhYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFsdWUu
Y3BwCkBAIC0xNDMsNyArMTQzLDcgQEAgdm9pZCBKU1ZhbHVlOjpwdXRUb1ByaW1pdGl2ZShFeGVj
U3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUKICAgICAgICAg
ICAgICAgICBKU09iamVjdCogc2V0dGVyRnVuYyA9IGFzR2V0dGVyU2V0dGVyKGdzKS0+c2V0dGVy
KCk7ICAgICAgICAKICAgICAgICAgICAgICAgICBpZiAoIXNldHRlckZ1bmMpIHsKICAgICAgICAg
ICAgICAgICAgICAgaWYgKHNsb3QuaXNTdHJpY3RNb2RlKCkpCi0gICAgICAgICAgICAgICAgICAg
ICAgICB0aHJvd0Vycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCAic2V0dGluZyBhIHBy
b3BlcnR5IHRoYXQgaGFzIG9ubHkgYSBnZXR0ZXIiKSk7CisgICAgICAgICAgICAgICAgICAgICAg
ICB0aHJvd0Vycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoInNl
dHRpbmcgYSBwcm9wZXJ0eSB0aGF0IGhhcyBvbmx5IGEgZ2V0dGVyIikpKTsKICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xpdGVyYWxQYXJzZXIuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTGl0ZXJhbFBhcnNlci5jcHAKaW5kZXgg
YWE2NTQxYjZhZWQ1YmYwY2VjZDhlNWY2Mzk5NDc5Yzg2YzIyMDllMS4uMjBiMGMzMDVhYzgyZDdm
YTZhMWIyMTgwOTg1ODg3NWFlYTgwOTY4MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvTGl0ZXJhbFBhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvTGl0ZXJhbFBhcnNlci5jcHAKQEAgLTI2OSw3ICsyNjksNyBAQCB0ZW1wbGF0ZSA8
UGFyc2VyTW9kZSBtb2RlPiBUb2tlblR5cGUgTGl0ZXJhbFBhcnNlcjxDaGFyVHlwZT46OkxleGVy
OjpsZXgoTGl0ZXJhbAogICAgICAgICAgICAgcmV0dXJuIGxleElkZW50aWZpZXIodG9rZW4pOwog
ICAgICAgICBpZiAoKm1fcHRyID09ICdcJycpIHsKICAgICAgICAgICAgIGlmIChtb2RlID09IFN0
cmljdEpTT04pIHsKLSAgICAgICAgICAgICAgICBtX2xleEVycm9yTWVzc2FnZSA9ICJTaW5nbGUg
cXVvdGVzIChcJykgYXJlIG5vdCBhbGxvd2VkIGluIEpTT04iOworICAgICAgICAgICAgICAgIG1f
bGV4RXJyb3JNZXNzYWdlID0gQVNDSUlMaXRlcmFsKCJTaW5nbGUgcXVvdGVzIChcJykgYXJlIG5v
dCBhbGxvd2VkIGluIEpTT04iKTsKICAgICAgICAgICAgICAgICByZXR1cm4gVG9rRXJyb3I7CiAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICByZXR1cm4gbGV4U3RyaW5nPG1vZGUsICdcJyc+KHRv
a2VuKTsKQEAgLTM1Niw3ICszNTYsNyBAQCB0ZW1wbGF0ZSA8UGFyc2VyTW9kZSBtb2RlLCBjaGFy
IHRlcm1pbmF0b3I+IEFMV0FZU19JTkxJTkUgVG9rZW5UeXBlIExpdGVyYWxQYXJzZQogICAgICAg
ICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKHJ1blN0YXJ0LCBtX3B0ciAtIHJ1blN0YXJ0KTsKICAg
ICAgICAgICAgICsrbV9wdHI7CiAgICAgICAgICAgICBpZiAobV9wdHIgPj0gbV9lbmQpIHsKLSAg
ICAgICAgICAgICAgICBtX2xleEVycm9yTWVzc2FnZSA9ICJVbnRlcm1pbmF0ZWQgc3RyaW5nIjsK
KyAgICAgICAgICAgICAgICBtX2xleEVycm9yTWVzc2FnZSA9IEFTQ0lJTGl0ZXJhbCgiVW50ZXJt
aW5hdGVkIHN0cmluZyIpOwogICAgICAgICAgICAgICAgIHJldHVybiBUb2tFcnJvcjsKICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgIHN3aXRjaCAoKm1fcHRyKSB7CkBAIC0zOTUsNyArMzk1LDcg
QEAgdGVtcGxhdGUgPFBhcnNlck1vZGUgbW9kZSwgY2hhciB0ZXJtaW5hdG9yPiBBTFdBWVNfSU5M
SU5FIFRva2VuVHlwZSBMaXRlcmFsUGFyc2UKIAogICAgICAgICAgICAgICAgIGNhc2UgJ3UnOgog
ICAgICAgICAgICAgICAgICAgICBpZiAoKG1fZW5kIC0gbV9wdHIpIDwgNSkgeyAKLSAgICAgICAg
ICAgICAgICAgICAgICAgIG1fbGV4RXJyb3JNZXNzYWdlID0gIlxcdSBtdXN0IGJlIGZvbGxvd2Vk
IGJ5IDQgaGV4IGRpZ2l0cyI7CisgICAgICAgICAgICAgICAgICAgICAgICBtX2xleEVycm9yTWVz
c2FnZSA9IEFTQ0lJTGl0ZXJhbCgiXFx1IG11c3QgYmUgZm9sbG93ZWQgYnkgNCBoZXggZGlnaXRz
Iik7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gVG9rRXJyb3I7CiAgICAgICAgICAg
ICAgICAgICAgIH0gLy8gdU5OTk4gPT0gNSBjaGFyYWN0ZXJzCiAgICAgICAgICAgICAgICAgICAg
IGZvciAoaW50IGkgPSAxOyBpIDwgNTsgaSsrKSB7CkBAIC00MjEsNyArNDIxLDcgQEAgdGVtcGxh
dGUgPFBhcnNlck1vZGUgbW9kZSwgY2hhciB0ZXJtaW5hdG9yPiBBTFdBWVNfSU5MSU5FIFRva2Vu
VHlwZSBMaXRlcmFsUGFyc2UKICAgICB9IHdoaWxlICgobW9kZSAhPSBOb25TdHJpY3RKU09OKSAm
JiBtX3B0ciAhPSBydW5TdGFydCAmJiAobV9wdHIgPCBtX2VuZCkgJiYgKm1fcHRyICE9IHRlcm1p
bmF0b3IpOwogCiAgICAgaWYgKG1fcHRyID49IG1fZW5kIHx8ICptX3B0ciAhPSB0ZXJtaW5hdG9y
KSB7Ci0gICAgICAgIG1fbGV4RXJyb3JNZXNzYWdlID0gIlVudGVybWluYXRlZCBzdHJpbmciOwor
ICAgICAgICBtX2xleEVycm9yTWVzc2FnZSA9IEFTQ0lJTGl0ZXJhbCgiVW50ZXJtaW5hdGVkIHN0
cmluZyIpOwogICAgICAgICByZXR1cm4gVG9rRXJyb3I7CiAgICAgfQogCkBAIC00NzQsNyArNDc0
LDcgQEAgVG9rZW5UeXBlIExpdGVyYWxQYXJzZXI8Q2hhclR5cGU+OjpMZXhlcjo6bGV4TnVtYmVy
KExpdGVyYWxQYXJzZXJUb2tlbjxDaGFyVHlwZT4KICAgICAgICAgd2hpbGUgKG1fcHRyIDwgbV9l
bmQgJiYgaXNBU0NJSURpZ2l0KCptX3B0cikpCiAgICAgICAgICAgICArK21fcHRyOwogICAgIH0g
ZWxzZSB7Ci0gICAgICAgIG1fbGV4RXJyb3JNZXNzYWdlID0gIkludmFsaWQgbnVtYmVyIjsKKyAg
ICAgICAgbV9sZXhFcnJvck1lc3NhZ2UgPSBBU0NJSUxpdGVyYWwoIkludmFsaWQgbnVtYmVyIik7
CiAgICAgICAgIHJldHVybiBUb2tFcnJvcjsKICAgICB9CiAKQEAgLTQ4Myw3ICs0ODMsNyBAQCBU
b2tlblR5cGUgTGl0ZXJhbFBhcnNlcjxDaGFyVHlwZT46OkxleGVyOjpsZXhOdW1iZXIoTGl0ZXJh
bFBhcnNlclRva2VuPENoYXJUeXBlPgogICAgICAgICArK21fcHRyOwogICAgICAgICAvLyBbMC05
XSsKICAgICAgICAgaWYgKG1fcHRyID49IG1fZW5kIHx8ICFpc0FTQ0lJRGlnaXQoKm1fcHRyKSkg
ewotICAgICAgICAgICAgbV9sZXhFcnJvck1lc3NhZ2UgPSAiSW52YWxpZCBkaWdpdHMgYWZ0ZXIg
ZGVjaW1hbCBwb2ludCI7CisgICAgICAgICAgICBtX2xleEVycm9yTWVzc2FnZSA9IEFTQ0lJTGl0
ZXJhbCgiSW52YWxpZCBkaWdpdHMgYWZ0ZXIgZGVjaW1hbCBwb2ludCIpOwogICAgICAgICAgICAg
cmV0dXJuIFRva0Vycm9yOwogICAgICAgICB9CiAKQEAgLTUxOCw3ICs1MTgsNyBAQCBUb2tlblR5
cGUgTGl0ZXJhbFBhcnNlcjxDaGFyVHlwZT46OkxleGVyOjpsZXhOdW1iZXIoTGl0ZXJhbFBhcnNl
clRva2VuPENoYXJUeXBlPgogCiAgICAgICAgIC8vIFswLTldKwogICAgICAgICBpZiAobV9wdHIg
Pj0gbV9lbmQgfHwgIWlzQVNDSUlEaWdpdCgqbV9wdHIpKSB7Ci0gICAgICAgICAgICBtX2xleEVy
cm9yTWVzc2FnZSA9ICJFeHBvbmVudCBzeW1ib2xzIHNob3VsZCBiZSBmb2xsb3dlZCBieSBhbiBv
cHRpb25hbCAnKycgb3IgJy0nIGFuZCB0aGVuIGJ5IGF0IGxlYXN0IG9uZSBudW1iZXIiOworICAg
ICAgICAgICAgbV9sZXhFcnJvck1lc3NhZ2UgPSBBU0NJSUxpdGVyYWwoIkV4cG9uZW50IHN5bWJv
bHMgc2hvdWxkIGJlIGZvbGxvd2VkIGJ5IGFuIG9wdGlvbmFsICcrJyBvciAnLScgYW5kIHRoZW4g
YnkgYXQgbGVhc3Qgb25lIG51bWJlciIpOwogICAgICAgICAgICAgcmV0dXJuIFRva0Vycm9yOwog
ICAgICAgICB9CiAgICAgICAgIApAQCAtNTU1LDcgKzU1NSw3IEBAIEpTVmFsdWUgTGl0ZXJhbFBh
cnNlcjxDaGFyVHlwZT46OnBhcnNlKFBhcnNlclN0YXRlIGluaXRpYWxTdGF0ZSkKICAgICAgICAg
ICAgICAgICBUb2tlblR5cGUgbGFzdFRva2VuID0gbV9sZXhlci5jdXJyZW50VG9rZW4oKS50eXBl
OwogICAgICAgICAgICAgICAgIGlmIChtX2xleGVyLm5leHQoKSA9PSBUb2tSQnJhY2tldCkgewog
ICAgICAgICAgICAgICAgICAgICBpZiAobGFzdFRva2VuID09IFRva0NvbW1hKSB7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBtX3BhcnNlRXJyb3JNZXNzYWdlID0gIlVuZXhwZWN0ZWQgY29tbWEg
YXQgdGhlIGVuZCBvZiBhcnJheSBleHByZXNzaW9uIjsKKyAgICAgICAgICAgICAgICAgICAgICAg
IG1fcGFyc2VFcnJvck1lc3NhZ2UgPSBBU0NJSUxpdGVyYWwoIlVuZXhwZWN0ZWQgY29tbWEgYXQg
dGhlIGVuZCBvZiBhcnJheSBleHByZXNzaW9uIik7CiAgICAgICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gSlNWYWx1ZSgpOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAg
ICAgIG1fbGV4ZXIubmV4dCgpOwpAQCAtNTc0LDcgKzU3NCw3IEBAIEpTVmFsdWUgTGl0ZXJhbFBh
cnNlcjxDaGFyVHlwZT46OnBhcnNlKFBhcnNlclN0YXRlIGluaXRpYWxTdGF0ZSkKICAgICAgICAg
ICAgICAgICAgICAgZ290byBkb1BhcnNlQXJyYXlTdGFydEV4cHJlc3Npb247CiAKICAgICAgICAg
ICAgICAgICBpZiAobV9sZXhlci5jdXJyZW50VG9rZW4oKS50eXBlICE9IFRva1JCcmFja2V0KSB7
Ci0gICAgICAgICAgICAgICAgICAgIG1fcGFyc2VFcnJvck1lc3NhZ2UgPSAiRXhwZWN0ZWQgJ10n
IjsKKyAgICAgICAgICAgICAgICAgICAgbV9wYXJzZUVycm9yTWVzc2FnZSA9IEFTQ0lJTGl0ZXJh
bCgiRXhwZWN0ZWQgJ10nIik7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7
CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIApAQCAtNTk0LDcgKzU5NCw3IEBA
IEpTVmFsdWUgTGl0ZXJhbFBhcnNlcjxDaGFyVHlwZT46OnBhcnNlKFBhcnNlclN0YXRlIGluaXRp
YWxTdGF0ZSkKIAogICAgICAgICAgICAgICAgICAgICAvLyBDaGVjayBmb3IgY29sb24KICAgICAg
ICAgICAgICAgICAgICAgaWYgKG1fbGV4ZXIubmV4dCgpICE9IFRva0NvbG9uKSB7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBtX3BhcnNlRXJyb3JNZXNzYWdlID0gIkV4cGVjdGVkICc6JyBiZWZv
cmUgdmFsdWUgaW4gb2JqZWN0IHByb3BlcnR5IGRlZmluaXRpb24iOworICAgICAgICAgICAgICAg
ICAgICAgICAgbV9wYXJzZUVycm9yTWVzc2FnZSA9IEFTQ0lJTGl0ZXJhbCgiRXhwZWN0ZWQgJzon
IGJlZm9yZSB2YWx1ZSBpbiBvYmplY3QgcHJvcGVydHkgZGVmaW5pdGlvbiIpOwogICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKICAgICAgICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICAgICAgICAgICAKQEAgLTYwNyw3ICs2MDcsNyBAQCBKU1ZhbHVlIExpdGVyYWxQ
YXJzZXI8Q2hhclR5cGU+OjpwYXJzZShQYXJzZXJTdGF0ZSBpbml0aWFsU3RhdGUpCiAgICAgICAg
ICAgICAgICAgICAgIGdvdG8gc3RhcnRQYXJzZUV4cHJlc3Npb247CiAgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgICAgIGlmICh0eXBlICE9IFRva1JCcmFjZSkgIHsKLSAgICAgICAgICAg
ICAgICAgICAgbV9wYXJzZUVycm9yTWVzc2FnZSA9ICJFeHBlY3RlZCAnfSciOworICAgICAgICAg
ICAgICAgICAgICBtX3BhcnNlRXJyb3JNZXNzYWdlID0gQVNDSUlMaXRlcmFsKCJFeHBlY3RlZCAn
fSciKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAgICAgbV9sZXhlci5uZXh0KCk7CkBAIC02MTksMTQgKzYxOSwx
NCBAQCBKU1ZhbHVlIExpdGVyYWxQYXJzZXI8Q2hhclR5cGU+OjpwYXJzZShQYXJzZXJTdGF0ZSBp
bml0aWFsU3RhdGUpCiAgICAgICAgICAgICBjYXNlIERvUGFyc2VPYmplY3RTdGFydEV4cHJlc3Np
b246IHsKICAgICAgICAgICAgICAgICBUb2tlblR5cGUgdHlwZSA9IG1fbGV4ZXIubmV4dCgpOwog
ICAgICAgICAgICAgICAgIGlmICh0eXBlICE9IFRva1N0cmluZyAmJiAobV9tb2RlID09IFN0cmlj
dEpTT04gfHwgdHlwZSAhPSBUb2tJZGVudGlmaWVyKSkgewotICAgICAgICAgICAgICAgICAgICBt
X3BhcnNlRXJyb3JNZXNzYWdlID0gIlByb3BlcnR5IG5hbWUgbXVzdCBiZSBhIHN0cmluZyBsaXRl
cmFsIjsKKyAgICAgICAgICAgICAgICAgICAgbV9wYXJzZUVycm9yTWVzc2FnZSA9IEFTQ0lJTGl0
ZXJhbCgiUHJvcGVydHkgbmFtZSBtdXN0IGJlIGEgc3RyaW5nIGxpdGVyYWwiKTsKICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICAgICAgTGl0ZXJhbFBhcnNlclRva2VuPENoYXJUeXBlPiBpZGVudGlmaWVyVG9rZW4gPSBt
X2xleGVyLmN1cnJlbnRUb2tlbigpOwogCiAgICAgICAgICAgICAgICAgLy8gQ2hlY2sgZm9yIGNv
bG9uCiAgICAgICAgICAgICAgICAgaWYgKG1fbGV4ZXIubmV4dCgpICE9IFRva0NvbG9uKSB7Ci0g
ICAgICAgICAgICAgICAgICAgIG1fcGFyc2VFcnJvck1lc3NhZ2UgPSAiRXhwZWN0ZWQgJzonIjsK
KyAgICAgICAgICAgICAgICAgICAgbV9wYXJzZUVycm9yTWVzc2FnZSA9IEFTQ0lJTGl0ZXJhbCgi
RXhwZWN0ZWQgJzonIik7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7CiAg
ICAgICAgICAgICAgICAgfQogCkBAIC02NDUsNyArNjQ1LDcgQEAgSlNWYWx1ZSBMaXRlcmFsUGFy
c2VyPENoYXJUeXBlPjo6cGFyc2UoUGFyc2VyU3RhdGUgaW5pdGlhbFN0YXRlKQogICAgICAgICAg
ICAgICAgIGlmIChtX2xleGVyLmN1cnJlbnRUb2tlbigpLnR5cGUgPT0gVG9rQ29tbWEpCiAgICAg
ICAgICAgICAgICAgICAgIGdvdG8gZG9QYXJzZU9iamVjdFN0YXJ0RXhwcmVzc2lvbjsKICAgICAg
ICAgICAgICAgICBpZiAobV9sZXhlci5jdXJyZW50VG9rZW4oKS50eXBlICE9IFRva1JCcmFjZSkg
ewotICAgICAgICAgICAgICAgICAgICBtX3BhcnNlRXJyb3JNZXNzYWdlID0gIkV4cGVjdGVkICd9
JyI7CisgICAgICAgICAgICAgICAgICAgIG1fcGFyc2VFcnJvck1lc3NhZ2UgPSBBU0NJSUxpdGVy
YWwoIkV4cGVjdGVkICd9JyIpOwogICAgICAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZSgp
OwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBtX2xleGVyLm5leHQoKTsKQEAg
LTY5MCwxMCArNjkwLDEwIEBAIEpTVmFsdWUgTGl0ZXJhbFBhcnNlcjxDaGFyVHlwZT46OnBhcnNl
KFBhcnNlclN0YXRlIGluaXRpYWxTdGF0ZSkKICAgICAgICAgICAgICAgICAgICAgICAgIGxhc3RW
YWx1ZSA9IGpzQm9vbGVhbihmYWxzZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgICAgICAgICAgICAgY2FzZSBUb2tSQnJhY2tldDoKLSAgICAgICAgICAgICAgICAg
ICAgICAgIG1fcGFyc2VFcnJvck1lc3NhZ2UgPSAiVW5leHBlY3RlZCB0b2tlbiAnXSciOworICAg
ICAgICAgICAgICAgICAgICAgICAgbV9wYXJzZUVycm9yTWVzc2FnZSA9IEFTQ0lJTGl0ZXJhbCgi
VW5leHBlY3RlZCB0b2tlbiAnXSciKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBK
U1ZhbHVlKCk7CiAgICAgICAgICAgICAgICAgICAgIGNhc2UgVG9rUkJyYWNlOgotICAgICAgICAg
ICAgICAgICAgICAgICAgbV9wYXJzZUVycm9yTWVzc2FnZSA9ICJVbmV4cGVjdGVkIHRva2VuICd9
JyI7CisgICAgICAgICAgICAgICAgICAgICAgICBtX3BhcnNlRXJyb3JNZXNzYWdlID0gQVNDSUlM
aXRlcmFsKCJVbmV4cGVjdGVkIHRva2VuICd9JyIpOwogICAgICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIEpTVmFsdWUoKTsKICAgICAgICAgICAgICAgICAgICAgY2FzZSBUb2tJZGVudGlmaWVy
OiB7CiAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBMaXRlcmFsUGFyc2VyVG9rZW48Q2hh
clR5cGU+JiB0b2tlbiA9IG1fbGV4ZXIuY3VycmVudFRva2VuKCk7CkBAIC03MDQsMzMgKzcwNCwz
MyBAQCBKU1ZhbHVlIExpdGVyYWxQYXJzZXI8Q2hhclR5cGU+OjpwYXJzZShQYXJzZXJTdGF0ZSBp
bml0aWFsU3RhdGUpCiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOwog
ICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIGNhc2UgVG9rQ29sb246
Ci0gICAgICAgICAgICAgICAgICAgICAgICBtX3BhcnNlRXJyb3JNZXNzYWdlID0gIlVuZXhwZWN0
ZWQgdG9rZW4gJzonIjsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fcGFyc2VFcnJvck1lc3Nh
Z2UgPSBBU0NJSUxpdGVyYWwoIlVuZXhwZWN0ZWQgdG9rZW4gJzonIik7CiAgICAgICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOwogICAgICAgICAgICAgICAgICAgICBjYXNlIFRv
a0xQYXJlbjoKLSAgICAgICAgICAgICAgICAgICAgICAgIG1fcGFyc2VFcnJvck1lc3NhZ2UgPSAi
VW5leHBlY3RlZCB0b2tlbiAnKCciOworICAgICAgICAgICAgICAgICAgICAgICAgbV9wYXJzZUVy
cm9yTWVzc2FnZSA9IEFTQ0lJTGl0ZXJhbCgiVW5leHBlY3RlZCB0b2tlbiAnKCciKTsKICAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7CiAgICAgICAgICAgICAgICAgICAg
IGNhc2UgVG9rUlBhcmVuOgotICAgICAgICAgICAgICAgICAgICAgICAgbV9wYXJzZUVycm9yTWVz
c2FnZSA9ICJVbmV4cGVjdGVkIHRva2VuICcpJyI7CisgICAgICAgICAgICAgICAgICAgICAgICBt
X3BhcnNlRXJyb3JNZXNzYWdlID0gQVNDSUlMaXRlcmFsKCJVbmV4cGVjdGVkIHRva2VuICcpJyIp
OwogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKICAgICAgICAgICAg
ICAgICAgICAgY2FzZSBUb2tDb21tYToKLSAgICAgICAgICAgICAgICAgICAgICAgIG1fcGFyc2VF
cnJvck1lc3NhZ2UgPSAiVW5leHBlY3RlZCB0b2tlbiAnLCciOworICAgICAgICAgICAgICAgICAg
ICAgICAgbV9wYXJzZUVycm9yTWVzc2FnZSA9IEFTQ0lJTGl0ZXJhbCgiVW5leHBlY3RlZCB0b2tl
biAnLCciKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7CiAgICAg
ICAgICAgICAgICAgICAgIGNhc2UgVG9rRG90OgotICAgICAgICAgICAgICAgICAgICAgICAgbV9w
YXJzZUVycm9yTWVzc2FnZSA9ICJVbmV4cGVjdGVkIHRva2VuICcuJyI7CisgICAgICAgICAgICAg
ICAgICAgICAgICBtX3BhcnNlRXJyb3JNZXNzYWdlID0gQVNDSUlMaXRlcmFsKCJVbmV4cGVjdGVk
IHRva2VuICcuJyIpOwogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsK
ICAgICAgICAgICAgICAgICAgICAgY2FzZSBUb2tBc3NpZ246Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBtX3BhcnNlRXJyb3JNZXNzYWdlID0gIlVuZXhwZWN0ZWQgdG9rZW4gJz0nIjsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIG1fcGFyc2VFcnJvck1lc3NhZ2UgPSBBU0NJSUxpdGVyYWwoIlVu
ZXhwZWN0ZWQgdG9rZW4gJz0nIik7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gSlNW
YWx1ZSgpOwogICAgICAgICAgICAgICAgICAgICBjYXNlIFRva1NlbWk6Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBtX3BhcnNlRXJyb3JNZXNzYWdlID0gIlVuZXhwZWN0ZWQgdG9rZW4gJzsnIjsK
KyAgICAgICAgICAgICAgICAgICAgICAgIG1fcGFyc2VFcnJvck1lc3NhZ2UgPSBBU0NJSUxpdGVy
YWwoIlVuZXhwZWN0ZWQgdG9rZW4gJzsnIik7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4gSlNWYWx1ZSgpOwogICAgICAgICAgICAgICAgICAgICBjYXNlIFRva0VuZDoKLSAgICAgICAg
ICAgICAgICAgICAgICAgIG1fcGFyc2VFcnJvck1lc3NhZ2UgPSAiVW5leHBlY3RlZCBFT0YiOwor
ICAgICAgICAgICAgICAgICAgICAgICAgbV9wYXJzZUVycm9yTWVzc2FnZSA9IEFTQ0lJTGl0ZXJh
bCgiVW5leHBlY3RlZCBFT0YiKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBKU1Zh
bHVlKCk7CiAgICAgICAgICAgICAgICAgICAgIGNhc2UgVG9rRXJyb3I6CiAgICAgICAgICAgICAg
ICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgICAgICAgICAvLyBFcnJvcgotICAgICAg
ICAgICAgICAgICAgICAgICAgbV9wYXJzZUVycm9yTWVzc2FnZSA9ICJDb3VsZCBub3QgcGFyc2Ug
dmFsdWUgZXhwcmVzc2lvbiI7CisgICAgICAgICAgICAgICAgICAgICAgICBtX3BhcnNlRXJyb3JN
ZXNzYWdlID0gQVNDSUlMaXRlcmFsKCJDb3VsZCBub3QgcGFyc2UgdmFsdWUgZXhwcmVzc2lvbiIp
OwogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC03NDgsNTAgKzc0OCw1MCBAQCBKU1Zh
bHVlIExpdGVyYWxQYXJzZXI8Q2hhclR5cGU+OjpwYXJzZShQYXJzZXJTdGF0ZSBpbml0aWFsU3Rh
dGUpCiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIHN0YXJ0UGFyc2VFeHByZXNzaW9uOwog
ICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIGNhc2UgVG9rUkJyYWNr
ZXQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICBtX3BhcnNlRXJyb3JNZXNzYWdlID0gIlVuZXhw
ZWN0ZWQgdG9rZW4gJ10nIjsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fcGFyc2VFcnJvck1l
c3NhZ2UgPSBBU0NJSUxpdGVyYWwoIlVuZXhwZWN0ZWQgdG9rZW4gJ10nIik7CiAgICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOwogICAgICAgICAgICAgICAgICAgICBjYXNl
IFRva0xCcmFjZToKLSAgICAgICAgICAgICAgICAgICAgICAgIG1fcGFyc2VFcnJvck1lc3NhZ2Ug
PSAiVW5leHBlY3RlZCB0b2tlbiAneyciOworICAgICAgICAgICAgICAgICAgICAgICAgbV9wYXJz
ZUVycm9yTWVzc2FnZSA9IEFTQ0lJTGl0ZXJhbCgiVW5leHBlY3RlZCB0b2tlbiAneyciKTsKICAg
ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7CiAgICAgICAgICAgICAgICAg
ICAgIGNhc2UgVG9rUkJyYWNlOgotICAgICAgICAgICAgICAgICAgICAgICAgbV9wYXJzZUVycm9y
TWVzc2FnZSA9ICJVbmV4cGVjdGVkIHRva2VuICd9JyI7CisgICAgICAgICAgICAgICAgICAgICAg
ICBtX3BhcnNlRXJyb3JNZXNzYWdlID0gQVNDSUlMaXRlcmFsKCJVbmV4cGVjdGVkIHRva2VuICd9
JyIpOwogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKICAgICAgICAg
ICAgICAgICAgICAgY2FzZSBUb2tJZGVudGlmaWVyOgotICAgICAgICAgICAgICAgICAgICAgICAg
bV9wYXJzZUVycm9yTWVzc2FnZSA9ICJVbmV4cGVjdGVkIGlkZW50aWZpZXIiOworICAgICAgICAg
ICAgICAgICAgICAgICAgbV9wYXJzZUVycm9yTWVzc2FnZSA9IEFTQ0lJTGl0ZXJhbCgiVW5leHBl
Y3RlZCBpZGVudGlmaWVyIik7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1
ZSgpOwogICAgICAgICAgICAgICAgICAgICBjYXNlIFRva0NvbG9uOgotICAgICAgICAgICAgICAg
ICAgICAgICAgbV9wYXJzZUVycm9yTWVzc2FnZSA9ICJVbmV4cGVjdGVkIHRva2VuICc6JyI7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBtX3BhcnNlRXJyb3JNZXNzYWdlID0gQVNDSUlMaXRlcmFs
KCJVbmV4cGVjdGVkIHRva2VuICc6JyIpOwogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IEpTVmFsdWUoKTsKICAgICAgICAgICAgICAgICAgICAgY2FzZSBUb2tSUGFyZW46Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBtX3BhcnNlRXJyb3JNZXNzYWdlID0gIlVuZXhwZWN0ZWQgdG9rZW4g
JyknIjsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fcGFyc2VFcnJvck1lc3NhZ2UgPSBBU0NJ
SUxpdGVyYWwoIlVuZXhwZWN0ZWQgdG9rZW4gJyknIik7CiAgICAgICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gSlNWYWx1ZSgpOwogICAgICAgICAgICAgICAgICAgICBjYXNlIFRva0NvbW1hOgot
ICAgICAgICAgICAgICAgICAgICAgICAgbV9wYXJzZUVycm9yTWVzc2FnZSA9ICJVbmV4cGVjdGVk
IHRva2VuICcsJyI7CisgICAgICAgICAgICAgICAgICAgICAgICBtX3BhcnNlRXJyb3JNZXNzYWdl
ID0gQVNDSUlMaXRlcmFsKCJVbmV4cGVjdGVkIHRva2VuICcsJyIpOwogICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKICAgICAgICAgICAgICAgICAgICAgY2FzZSBUb2tU
cnVlOgotICAgICAgICAgICAgICAgICAgICAgICAgbV9wYXJzZUVycm9yTWVzc2FnZSA9ICJVbmV4
cGVjdGVkIHRva2VuICd0cnVlJyI7CisgICAgICAgICAgICAgICAgICAgICAgICBtX3BhcnNlRXJy
b3JNZXNzYWdlID0gQVNDSUlMaXRlcmFsKCJVbmV4cGVjdGVkIHRva2VuICd0cnVlJyIpOwogICAg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKICAgICAgICAgICAgICAgICAg
ICAgY2FzZSBUb2tGYWxzZToKLSAgICAgICAgICAgICAgICAgICAgICAgIG1fcGFyc2VFcnJvck1l
c3NhZ2UgPSAiVW5leHBlY3RlZCB0b2tlbiAnZmFsc2UnIjsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIG1fcGFyc2VFcnJvck1lc3NhZ2UgPSBBU0NJSUxpdGVyYWwoIlVuZXhwZWN0ZWQgdG9rZW4g
J2ZhbHNlJyIpOwogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKICAg
ICAgICAgICAgICAgICAgICAgY2FzZSBUb2tOdWxsOgotICAgICAgICAgICAgICAgICAgICAgICAg
bV9wYXJzZUVycm9yTWVzc2FnZSA9ICJVbmV4cGVjdGVkIHRva2VuICdudWxsJyI7CisgICAgICAg
ICAgICAgICAgICAgICAgICBtX3BhcnNlRXJyb3JNZXNzYWdlID0gQVNDSUlMaXRlcmFsKCJVbmV4
cGVjdGVkIHRva2VuICdudWxsJyIpOwogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEpT
VmFsdWUoKTsKICAgICAgICAgICAgICAgICAgICAgY2FzZSBUb2tFbmQ6Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBtX3BhcnNlRXJyb3JNZXNzYWdlID0gIlVuZXhwZWN0ZWQgRU9GIjsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIG1fcGFyc2VFcnJvck1lc3NhZ2UgPSBBU0NJSUxpdGVyYWwoIlVu
ZXhwZWN0ZWQgRU9GIik7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZSgp
OwogICAgICAgICAgICAgICAgICAgICBjYXNlIFRva0RvdDoKLSAgICAgICAgICAgICAgICAgICAg
ICAgIG1fcGFyc2VFcnJvck1lc3NhZ2UgPSAiVW5leHBlY3RlZCB0b2tlbiAnLiciOworICAgICAg
ICAgICAgICAgICAgICAgICAgbV9wYXJzZUVycm9yTWVzc2FnZSA9IEFTQ0lJTGl0ZXJhbCgiVW5l
eHBlY3RlZCB0b2tlbiAnLiciKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBKU1Zh
bHVlKCk7CiAgICAgICAgICAgICAgICAgICAgIGNhc2UgVG9rQXNzaWduOgotICAgICAgICAgICAg
ICAgICAgICAgICAgbV9wYXJzZUVycm9yTWVzc2FnZSA9ICJVbmV4cGVjdGVkIHRva2VuICc9JyI7
CisgICAgICAgICAgICAgICAgICAgICAgICBtX3BhcnNlRXJyb3JNZXNzYWdlID0gQVNDSUlMaXRl
cmFsKCJVbmV4cGVjdGVkIHRva2VuICc9JyIpOwogICAgICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIEpTVmFsdWUoKTsKICAgICAgICAgICAgICAgICAgICAgY2FzZSBUb2tTZW1pOgotICAgICAg
ICAgICAgICAgICAgICAgICAgbV9wYXJzZUVycm9yTWVzc2FnZSA9ICJVbmV4cGVjdGVkIHRva2Vu
ICc7JyI7CisgICAgICAgICAgICAgICAgICAgICAgICBtX3BhcnNlRXJyb3JNZXNzYWdlID0gQVND
SUlMaXRlcmFsKCJVbmV4cGVjdGVkIHRva2VuICc7JyIpOwogICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIEpTVmFsdWUoKTsKICAgICAgICAgICAgICAgICAgICAgY2FzZSBUb2tFcnJvcjoK
ICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICAgICAgICAgIG1f
cGFyc2VFcnJvck1lc3NhZ2UgPSAiQ291bGQgbm90IHBhcnNlIHN0YXRlbWVudCI7CisgICAgICAg
ICAgICAgICAgICAgICAgICBtX3BhcnNlRXJyb3JNZXNzYWdlID0gQVNDSUlMaXRlcmFsKCJDb3Vs
ZCBub3QgcGFyc2Ugc3RhdGVtZW50Iik7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4g
SlNWYWx1ZSgpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KQEAgLTgwMSw3ICs4
MDEsNyBAQCBKU1ZhbHVlIExpdGVyYWxQYXJzZXI8Q2hhclR5cGU+OjpwYXJzZShQYXJzZXJTdGF0
ZSBpbml0aWFsU3RhdGUpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7CiAg
ICAgICAgICAgICAgICAgaWYgKG1fbGV4ZXIubmV4dCgpID09IFRva0VuZCkKICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIGxhc3RWYWx1ZTsKLSAgICAgICAgICAgICAgICBtX3BhcnNlRXJyb3JN
ZXNzYWdlID0gIlVuZXhwZWN0ZWQgY29udGVudCBhdCBlbmQgb2YgSlNPTiBsaXRlcmFsIjsKKyAg
ICAgICAgICAgICAgICBtX3BhcnNlRXJyb3JNZXNzYWdlID0gQVNDSUlMaXRlcmFsKCJVbmV4cGVj
dGVkIGNvbnRlbnQgYXQgZW5kIG9mIEpTT04gbGl0ZXJhbCIpOwogICAgICAgICAgICAgICAgIHJl
dHVybiBKU1ZhbHVlKCk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBkZWZhdWx0OgpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTGl0ZXJhbFBhcnNlci5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTGl0ZXJhbFBhcnNlci5oCmluZGV4IDYxYThl
ZjM0ZGM2MjAxNmMxZGRjNjY5ZDUzN2I5MjljZjBlN2RlZmIuLmMwZjMwOGVlNWQxMDI1ZDNkZjE3
MWVhZjlkMDk2MWFiYmI2YzU2ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0xpdGVyYWxQYXJzZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9MaXRlcmFsUGFyc2VyLmgKQEAgLTEwMCw3ICsxMDAsNyBAQCBwdWJsaWM6CiAgICAgICAgICAg
ICByZXR1cm4gU3RyaW5nOjpmb3JtYXQoIkpTT04gUGFyc2UgZXJyb3I6ICVzIiwgbV9sZXhlci5n
ZXRFcnJvck1lc3NhZ2UoKS5hc2NpaSgpLmRhdGEoKSkuaW1wbCgpOwogICAgICAgICBpZiAoIW1f
cGFyc2VFcnJvck1lc3NhZ2UuaXNFbXB0eSgpKQogICAgICAgICAgICAgcmV0dXJuIFN0cmluZzo6
Zm9ybWF0KCJKU09OIFBhcnNlIGVycm9yOiAlcyIsIG1fcGFyc2VFcnJvck1lc3NhZ2UuYXNjaWko
KS5kYXRhKCkpLmltcGwoKTsKLSAgICAgICAgcmV0dXJuICJKU09OIFBhcnNlIGVycm9yOiBVbmFi
bGUgdG8gcGFyc2UgSlNPTiBzdHJpbmciOworICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJK
U09OIFBhcnNlIGVycm9yOiBVbmFibGUgdG8gcGFyc2UgSlNPTiBzdHJpbmciKTsKICAgICB9CiAg
ICAgCiAgICAgSlNWYWx1ZSB0cnlMaXRlcmFsUGFyc2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL051bWJlclByb3RvdHlwZS5jcHAKaW5kZXggMWQ3OTM5MjI1MjQ2YjJk
YmVjZTgyMWEzZTQzMWMwYjdkYmZmZTViYi4uNGExMGVmZDZkNjRkYjI4MGI3NzYwNTI3ZDA3OWU4
OWMyNTBlNzBiYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVt
YmVyUHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1i
ZXJQcm90b3R5cGUuY3BwCkBAIC0zNzgsNyArMzc4LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBudW1iZXJQcm90b0Z1bmNUb0V4cG9uZW50aWFsKEV4ZWNTdGF0ZSogZXhlYykKICAg
ICBpbnQgZGVjaW1hbFBsYWNlc0luRXhwb25lbnQ7CiAgICAgYm9vbCBpc1VuZGVmaW5lZDsKICAg
ICBpZiAoIWdldEludGVnZXJBcmd1bWVudEluUmFuZ2UoZXhlYywgMCwgMjAsIGRlY2ltYWxQbGFj
ZXNJbkV4cG9uZW50LCBpc1VuZGVmaW5lZCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Io
ZXhlYywgY3JlYXRlUmFuZ2VFcnJvcihleGVjLCAidG9FeHBvbmVudGlhbCgpIGFyZ3VtZW50IG11
c3QgYmUgYmV0d2VlbiAwIGFuZCAyMCIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihl
eGVjLCBjcmVhdGVSYW5nZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgidG9FeHBvbmVudGlhbCgp
IGFyZ3VtZW50IG11c3QgYmUgYmV0d2VlbiAwIGFuZCAyMCIpKSk7CiAKICAgICAvLyBIYW5kbGUg
TmFOIGFuZCBJbmZpbml0eS4KICAgICBpZiAoIWlzZmluaXRlKHgpKQpAQCAtNDA5LDcgKzQwOSw3
IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbnVtYmVyUHJvdG9GdW5jVG9GaXhlZChF
eGVjU3RhdGUqIGV4ZWMpCiAgICAgaW50IGRlY2ltYWxQbGFjZXM7CiAgICAgYm9vbCBpc1VuZGVm
aW5lZDsgLy8gVGhpcyBpcyBpZ25vcmVkOyB1bmRlZmluZWQgdHJlYXRlZCBhcyAwLgogICAgIGlm
ICghZ2V0SW50ZWdlckFyZ3VtZW50SW5SYW5nZShleGVjLCAwLCAyMCwgZGVjaW1hbFBsYWNlcywg
aXNVbmRlZmluZWQpKQotICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVJh
bmdlRXJyb3IoZXhlYywgInRvRml4ZWQoKSBhcmd1bWVudCBtdXN0IGJlIGJldHdlZW4gMCBhbmQg
MjAiKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlUmFuZ2VFcnJv
cihleGVjLCBBU0NJSUxpdGVyYWwoInRvRml4ZWQoKSBhcmd1bWVudCBtdXN0IGJlIGJldHdlZW4g
MCBhbmQgMjAiKSkpOwogCiAgICAgLy8gMTUuNy40LjUuNyBzdGF0ZXMgIklmIHggPj0gMTBeMjEs
IHRoZW4gbGV0IG0gPSBUb1N0cmluZyh4KSIKICAgICAvLyBUaGlzIGFsc28gY292ZXJzIEluaW5p
dHksIGFuZCBzdHJ1Y3R1cmUgdGhlIGNoZWNrIHNvIHRoYXQgTmFOCkBAIC00NDIsNyArNDQyLDcg
QEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBudW1iZXJQcm90b0Z1bmNUb1ByZWNpc2lv
bihFeGVjU3RhdGUqIGV4ZWMpCiAgICAgaW50IHNpZ25pZmljYW50RmlndXJlczsKICAgICBib29s
IGlzVW5kZWZpbmVkOwogICAgIGlmICghZ2V0SW50ZWdlckFyZ3VtZW50SW5SYW5nZShleGVjLCAx
LCAyMSwgc2lnbmlmaWNhbnRGaWd1cmVzLCBpc1VuZGVmaW5lZCkpCi0gICAgICAgIHJldHVybiB0
aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlUmFuZ2VFcnJvcihleGVjLCAidG9QcmVjaXNpb24oKSBh
cmd1bWVudCBtdXN0IGJlIGJldHdlZW4gMSBhbmQgMjEiKSk7CisgICAgICAgIHJldHVybiB0aHJv
d1ZNRXJyb3IoZXhlYywgY3JlYXRlUmFuZ2VFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoInRvUHJl
Y2lzaW9uKCkgYXJndW1lbnQgbXVzdCBiZSBiZXR3ZWVuIDEgYW5kIDIxIikpKTsKIAogICAgIC8v
IFRvIHByZWNpc2lvbiBjYWxsZWQgd2l0aCBubyBhcmd1bWVudCBpcyB0cmVhdGVkIGFzIFRvU3Ry
aW5nLgogICAgIGlmIChpc1VuZGVmaW5lZCkKQEAgLTQ5Nyw3ICs0OTcsNyBAQCBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIG51bWJlclByb3RvRnVuY1RvU3RyaW5nKEV4ZWNTdGF0ZSogZXhl
YykKIAogICAgIGludDMyX3QgcmFkaXggPSBleHRyYWN0UmFkaXhGcm9tQXJncyhleGVjKTsKICAg
ICBpZiAocmFkaXggPCAyIHx8IHJhZGl4ID4gMzYpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJy
b3IoZXhlYywgY3JlYXRlUmFuZ2VFcnJvcihleGVjLCAidG9TdHJpbmcoKSByYWRpeCBhcmd1bWVu
dCBtdXN0IGJlIGJldHdlZW4gMiBhbmQgMzYiKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJy
b3IoZXhlYywgY3JlYXRlUmFuZ2VFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoInRvU3RyaW5nKCkg
cmFkaXggYXJndW1lbnQgbXVzdCBiZSBiZXR3ZWVuIDIgYW5kIDM2IikpKTsKIAogICAgIGludDMy
X3QgaW50ZWdlclZhbHVlID0gc3RhdGljX2Nhc3Q8aW50MzJfdD4oZG91YmxlVmFsdWUpOwogICAg
IGlmIChpbnRlZ2VyVmFsdWUgPT0gZG91YmxlVmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHAKaW5kZXggMjFlY2NkMzBlOTli
YmMwY2VlYjJmOWU5ZTFhNWM3ZjhiODI2YmVhNi4uMTllOTI3ZTU1MjU0ZTk0OGM2MjUxNjBkZDAz
ODFjNDg5YmJmY2UzNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
T2JqZWN0Q29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L09iamVjdENvbnN0cnVjdG9yLmNwcApAQCAtMTM3LDcgKzEzNyw3IEBAIENhbGxUeXBlIE9iamVj
dENvbnN0cnVjdG9yOjpnZXRDYWxsRGF0YShKU0NlbGwqLCBDYWxsRGF0YSYgY2FsbERhdGEpCiBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9yR2V0UHJvdG90eXBl
T2YoRXhlY1N0YXRlKiBleGVjKQogewogICAgIGlmICghZXhlYy0+YXJndW1lbnQoMCkuaXNPYmpl
Y3QoKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3Io
ZXhlYywgIlJlcXVlc3RlZCBwcm90b3R5cGUgb2YgYSB2YWx1ZSB0aGF0IGlzIG5vdCBhbiBvYmpl
Y3QuIikpOworICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJv
cihleGVjLCBBU0NJSUxpdGVyYWwoIlJlcXVlc3RlZCBwcm90b3R5cGUgb2YgYSB2YWx1ZSB0aGF0
IGlzIG5vdCBhbiBvYmplY3QuIikpKTsKICAgICBKU09iamVjdCogb2JqZWN0ID0gYXNPYmplY3Qo
ZXhlYy0+YXJndW1lbnQoMCkpOwogICAgIGlmICghb2JqZWN0LT5hbGxvd3NBY2Nlc3NGcm9tKGV4
ZWMtPnRydWVDYWxsZXJGcmFtZSgpKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c1VuZGVmaW5lZCgpKTsKQEAgLTE0Nyw3ICsxNDcsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIG9iamVjdENvbnN0cnVjdG9yR2V0UHJvdG90eXBlT2YoRXhlY1N0YXRlKiBleGVjKQog
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3RvckdldE93blByb3Bl
cnR5RGVzY3JpcHRvcihFeGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAgaWYgKCFleGVjLT5hcmd1bWVu
dCgwKS5pc09iamVjdCgpKQotICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0
ZVR5cGVFcnJvcihleGVjLCAiUmVxdWVzdGVkIHByb3BlcnR5IGRlc2NyaXB0b3Igb2YgYSB2YWx1
ZSB0aGF0IGlzIG5vdCBhbiBvYmplY3QuIikpOworICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9y
KGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlJlcXVlc3RlZCBwcm9w
ZXJ0eSBkZXNjcmlwdG9yIG9mIGEgdmFsdWUgdGhhdCBpcyBub3QgYW4gb2JqZWN0LiIpKSk7CiAg
ICAgU3RyaW5nIHByb3BlcnR5TmFtZSA9IGV4ZWMtPmFyZ3VtZW50KDEpLnRvU3RyaW5nKGV4ZWMp
LT52YWx1ZShleGVjKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdWxsKCkpOwpAQCAtMTc5LDcgKzE3OSw3IEBAIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JHZXRPd25Qcm9wZXJ0eURl
c2NyaXB0b3IoRXhlY1N0YXRlCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENv
bnN0cnVjdG9yR2V0T3duUHJvcGVydHlOYW1lcyhFeGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAgaWYg
KCFleGVjLT5hcmd1bWVudCgwKS5pc09iamVjdCgpKQotICAgICAgICByZXR1cm4gdGhyb3dWTUVy
cm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCAiUmVxdWVzdGVkIHByb3BlcnR5IG5hbWVz
IG9mIGEgdmFsdWUgdGhhdCBpcyBub3QgYW4gb2JqZWN0LiIpKTsKKyAgICAgICAgcmV0dXJuIHRo
cm93Vk1FcnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJSZXF1
ZXN0ZWQgcHJvcGVydHkgbmFtZXMgb2YgYSB2YWx1ZSB0aGF0IGlzIG5vdCBhbiBvYmplY3QuIikp
KTsKICAgICBQcm9wZXJ0eU5hbWVBcnJheSBwcm9wZXJ0aWVzKGV4ZWMpOwogICAgIGFzT2JqZWN0
KGV4ZWMtPmFyZ3VtZW50KDApKS0+bWV0aG9kVGFibGUoKS0+Z2V0T3duUHJvcGVydHlOYW1lcyhh
c09iamVjdChleGVjLT5hcmd1bWVudCgwKSksIGV4ZWMsIHByb3BlcnRpZXMsIEluY2x1ZGVEb250
RW51bVByb3BlcnRpZXMpOwogICAgIEpTQXJyYXkqIG5hbWVzID0gY29uc3RydWN0RW1wdHlBcnJh
eShleGVjKTsKQEAgLTE5Myw3ICsxOTMsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IG9iamVjdENvbnN0cnVjdG9yR2V0T3duUHJvcGVydHlOYW1lcyhFeGVjU3RhdGUqIGV4ZQogRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3RvcktleXMoRXhlY1N0YXRl
KiBleGVjKQogewogICAgIGlmICghZXhlYy0+YXJndW1lbnQoMCkuaXNPYmplY3QoKSkKLSAgICAg
ICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgIlJlcXVl
c3RlZCBrZXlzIG9mIGEgdmFsdWUgdGhhdCBpcyBub3QgYW4gb2JqZWN0LiIpKTsKKyAgICAgICAg
cmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRl
cmFsKCJSZXF1ZXN0ZWQga2V5cyBvZiBhIHZhbHVlIHRoYXQgaXMgbm90IGFuIG9iamVjdC4iKSkp
OwogICAgIFByb3BlcnR5TmFtZUFycmF5IHByb3BlcnRpZXMoZXhlYyk7CiAgICAgYXNPYmplY3Qo
ZXhlYy0+YXJndW1lbnQoMCkpLT5tZXRob2RUYWJsZSgpLT5nZXRPd25Qcm9wZXJ0eU5hbWVzKGFz
T2JqZWN0KGV4ZWMtPmFyZ3VtZW50KDApKSwgZXhlYywgcHJvcGVydGllcywgRXhjbHVkZURvbnRF
bnVtUHJvcGVydGllcyk7CiAgICAgSlNBcnJheSoga2V5cyA9IGNvbnN0cnVjdEVtcHR5QXJyYXko
ZXhlYyk7CkBAIC0yMDcsNyArMjA3LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBv
YmplY3RDb25zdHJ1Y3RvcktleXMoRXhlY1N0YXRlKiBleGVjKQogc3RhdGljIGJvb2wgdG9Qcm9w
ZXJ0eURlc2NyaXB0b3IoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGluLCBQcm9wZXJ0eURlc2Ny
aXB0b3ImIGRlc2MpCiB7CiAgICAgaWYgKCFpbi5pc09iamVjdCgpKSB7Ci0gICAgICAgIHRocm93
RXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsICJQcm9wZXJ0eSBkZXNjcmlwdGlvbiBt
dXN0IGJlIGFuIG9iamVjdC4iKSk7CisgICAgICAgIHRocm93RXJyb3IoZXhlYywgY3JlYXRlVHlw
ZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiUHJvcGVydHkgZGVzY3JpcHRpb24gbXVzdCBiZSBh
biBvYmplY3QuIikpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICBKU09iamVj
dCogZGVzY3JpcHRpb24gPSBhc09iamVjdChpbik7CkBAIC0yNDksNyArMjQ5LDcgQEAgc3RhdGlj
IGJvb2wgdG9Qcm9wZXJ0eURlc2NyaXB0b3IoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGluLCBQ
cm9wZXJ0eURlc2NyaXB0b3IKICAgICAgICAgaWYgKCFnZXQuaXNVbmRlZmluZWQoKSkgewogICAg
ICAgICAgICAgQ2FsbERhdGEgY2FsbERhdGE7CiAgICAgICAgICAgICBpZiAoZ2V0Q2FsbERhdGEo
Z2V0LCBjYWxsRGF0YSkgPT0gQ2FsbFR5cGVOb25lKSB7Ci0gICAgICAgICAgICAgICAgdGhyb3dF
cnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgIkdldHRlciBtdXN0IGJlIGEgZnVuY3Rp
b24uIikpOworICAgICAgICAgICAgICAgIHRocm93RXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9y
KGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiR2V0dGVyIG11c3QgYmUgYSBmdW5jdGlvbi4iKSkpOwogICAg
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAt
MjY0LDcgKzI2NCw3IEBAIHN0YXRpYyBib29sIHRvUHJvcGVydHlEZXNjcmlwdG9yKEV4ZWNTdGF0
ZSogZXhlYywgSlNWYWx1ZSBpbiwgUHJvcGVydHlEZXNjcmlwdG9yCiAgICAgICAgIGlmICghc2V0
LmlzVW5kZWZpbmVkKCkpIHsKICAgICAgICAgICAgIENhbGxEYXRhIGNhbGxEYXRhOwogICAgICAg
ICAgICAgaWYgKGdldENhbGxEYXRhKHNldCwgY2FsbERhdGEpID09IENhbGxUeXBlTm9uZSkgewot
ICAgICAgICAgICAgICAgIHRocm93RXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsICJT
ZXR0ZXIgbXVzdCBiZSBhIGZ1bmN0aW9uLiIpKTsKKyAgICAgICAgICAgICAgICB0aHJvd0Vycm9y
KGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlNldHRlciBtdXN0IGJl
IGEgZnVuY3Rpb24uIikpKTsKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAg
ICAgICB9CiAgICAgICAgIH0KQEAgLTI3NSwxMiArMjc1LDEyIEBAIHN0YXRpYyBib29sIHRvUHJv
cGVydHlEZXNjcmlwdG9yKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBpbiwgUHJvcGVydHlEZXNj
cmlwdG9yCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgaWYgKGRlc2MudmFsdWUoKSkgewot
ICAgICAgICB0aHJvd0Vycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCAiSW52YWxpZCBw
cm9wZXJ0eS4gICd2YWx1ZScgcHJlc2VudCBvbiBwcm9wZXJ0eSB3aXRoIGdldHRlciBvciBzZXR0
ZXIuIikpOworICAgICAgICB0aHJvd0Vycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCBB
U0NJSUxpdGVyYWwoIkludmFsaWQgcHJvcGVydHkuICAndmFsdWUnIHByZXNlbnQgb24gcHJvcGVy
dHkgd2l0aCBnZXR0ZXIgb3Igc2V0dGVyLiIpKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICB9CiAKICAgICBpZiAoZGVzYy53cml0YWJsZVByZXNlbnQoKSkgewotICAgICAgICB0aHJvd0Vy
cm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCAiSW52YWxpZCBwcm9wZXJ0eS4gICd3cml0
YWJsZScgcHJlc2VudCBvbiBwcm9wZXJ0eSB3aXRoIGdldHRlciBvciBzZXR0ZXIuIikpOworICAg
ICAgICB0aHJvd0Vycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwo
IkludmFsaWQgcHJvcGVydHkuICAnd3JpdGFibGUnIHByZXNlbnQgb24gcHJvcGVydHkgd2l0aCBn
ZXR0ZXIgb3Igc2V0dGVyLiIpKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAg
cmV0dXJuIHRydWU7CkBAIC0yODksNyArMjg5LDcgQEAgc3RhdGljIGJvb2wgdG9Qcm9wZXJ0eURl
c2NyaXB0b3IoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGluLCBQcm9wZXJ0eURlc2NyaXB0b3IK
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JEZWZpbmVQcm9w
ZXJ0eShFeGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAgaWYgKCFleGVjLT5hcmd1bWVudCgwKS5pc09i
amVjdCgpKQotICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJv
cihleGVjLCAiUHJvcGVydGllcyBjYW4gb25seSBiZSBkZWZpbmVkIG9uIE9iamVjdHMuIikpOwor
ICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCBB
U0NJSUxpdGVyYWwoIlByb3BlcnRpZXMgY2FuIG9ubHkgYmUgZGVmaW5lZCBvbiBPYmplY3RzLiIp
KSk7CiAgICAgSlNPYmplY3QqIE8gPSBhc09iamVjdChleGVjLT5hcmd1bWVudCgwKSk7CiAgICAg
U3RyaW5nIHByb3BlcnR5TmFtZSA9IGV4ZWMtPmFyZ3VtZW50KDEpLnRvU3RyaW5nKGV4ZWMpLT52
YWx1ZShleGVjKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCkBAIC0zNDAsMjAgKzM0
MCwyMCBAQCBzdGF0aWMgSlNWYWx1ZSBkZWZpbmVQcm9wZXJ0aWVzKEV4ZWNTdGF0ZSogZXhlYywg
SlNPYmplY3QqIG9iamVjdCwgSlNPYmplY3QqIHBybwogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBvYmplY3RDb25zdHJ1Y3RvckRlZmluZVByb3BlcnRpZXMoRXhlY1N0YXRlKiBleGVjKQog
ewogICAgIGlmICghZXhlYy0+YXJndW1lbnQoMCkuaXNPYmplY3QoKSkKLSAgICAgICAgcmV0dXJu
IHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgIlByb3BlcnRpZXMgY2Fu
IG9ubHkgYmUgZGVmaW5lZCBvbiBPYmplY3RzLiIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1F
cnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJQcm9wZXJ0aWVz
IGNhbiBvbmx5IGJlIGRlZmluZWQgb24gT2JqZWN0cy4iKSkpOwogICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoZGVmaW5lUHJvcGVydGllcyhleGVjLCBhc09iamVjdChleGVjLT5hcmd1bWVudCgw
KSksIGV4ZWMtPmFyZ3VtZW50KDEpLnRvT2JqZWN0KGV4ZWMpKSk7CiB9CiAKIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JDcmVhdGUoRXhlY1N0YXRlKiBleGVj
KQogewogICAgIGlmICghZXhlYy0+YXJndW1lbnQoMCkuaXNPYmplY3QoKSAmJiAhZXhlYy0+YXJn
dW1lbnQoMCkuaXNOdWxsKCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3Jl
YXRlVHlwZUVycm9yKGV4ZWMsICJPYmplY3QgcHJvdG90eXBlIG1heSBvbmx5IGJlIGFuIE9iamVj
dCBvciBudWxsLiIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVU
eXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJPYmplY3QgcHJvdG90eXBlIG1heSBvbmx5IGJl
IGFuIE9iamVjdCBvciBudWxsLiIpKSk7CiAgICAgSlNWYWx1ZSBwcm90byA9IGV4ZWMtPmFyZ3Vt
ZW50KDApOwogICAgIEpTT2JqZWN0KiBuZXdPYmplY3QgPSBwcm90by5pc09iamVjdCgpID8gY29u
c3RydWN0RW1wdHlPYmplY3QoZXhlYywgYXNPYmplY3QocHJvdG8pLT5pbmhlcml0b3JJRChleGVj
LT5nbG9iYWxEYXRhKCkpKSA6IGNvbnN0cnVjdEVtcHR5T2JqZWN0KGV4ZWMsIGV4ZWMtPmxleGlj
YWxHbG9iYWxPYmplY3QoKS0+bnVsbFByb3RvdHlwZU9iamVjdFN0cnVjdHVyZSgpKTsKICAgICBp
ZiAoZXhlYy0+YXJndW1lbnQoMSkuaXNVbmRlZmluZWQoKSkKICAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShuZXdPYmplY3QpOwogICAgIGlmICghZXhlYy0+YXJndW1lbnQoMSkuaXNPYmpl
Y3QoKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3Io
ZXhlYywgIlByb3BlcnR5IGRlc2NyaXB0b3IgbGlzdCBtdXN0IGJlIGFuIE9iamVjdC4iKSk7Cisg
ICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsIEFT
Q0lJTGl0ZXJhbCgiUHJvcGVydHkgZGVzY3JpcHRvciBsaXN0IG11c3QgYmUgYW4gT2JqZWN0LiIp
KSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShkZWZpbmVQcm9wZXJ0aWVzKGV4ZWMsIG5l
d09iamVjdCwgYXNPYmplY3QoZXhlYy0+YXJndW1lbnQoMSkpKSk7CiB9CiAKQEAgLTM2Miw3ICsz
NjIsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9yU2Vh
bChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgLy8gMS4gSWYgVHlwZShPKSBpcyBub3QgT2JqZWN0IHRo
cm93IGEgVHlwZUVycm9yIGV4Y2VwdGlvbi4KICAgICBKU1ZhbHVlIG9iaiA9IGV4ZWMtPmFyZ3Vt
ZW50KDApOwogICAgIGlmICghb2JqLmlzT2JqZWN0KCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZN
RXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsICJPYmplY3Quc2VhbCBjYW4gb25seSBi
ZSBjYWxsZWQgb24gT2JqZWN0cy4iKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhl
YywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiT2JqZWN0LnNlYWwgY2FuIG9u
bHkgYmUgY2FsbGVkIG9uIE9iamVjdHMuIikpKTsKICAgICBKU09iamVjdCogb2JqZWN0ID0gYXNP
YmplY3Qob2JqKTsKIAogICAgIGlmIChpc0pTRmluYWxPYmplY3Qob2JqZWN0KSkgewpAQCAtMzk5
LDcgKzM5OSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0
b3JGcmVlemUoRXhlY1N0YXRlKiBleGVjKQogICAgIC8vIDEuIElmIFR5cGUoTykgaXMgbm90IE9i
amVjdCB0aHJvdyBhIFR5cGVFcnJvciBleGNlcHRpb24uCiAgICAgSlNWYWx1ZSBvYmogPSBleGVj
LT5hcmd1bWVudCgwKTsKICAgICBpZiAoIW9iai5pc09iamVjdCgpKQotICAgICAgICByZXR1cm4g
dGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCAiT2JqZWN0LmZyZWV6ZSBj
YW4gb25seSBiZSBjYWxsZWQgb24gT2JqZWN0cy4iKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZN
RXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiT2JqZWN0LmZy
ZWV6ZSBjYW4gb25seSBiZSBjYWxsZWQgb24gT2JqZWN0cy4iKSkpOwogICAgIEpTT2JqZWN0KiBv
YmplY3QgPSBhc09iamVjdChvYmopOwogCiAgICAgaWYgKGlzSlNGaW5hbE9iamVjdChvYmplY3Qp
KSB7CkBAIC00MzksNyArNDM5LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmpl
Y3RDb25zdHJ1Y3RvclByZXZlbnRFeHRlbnNpb25zKEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICBK
U1ZhbHVlIG9iaiA9IGV4ZWMtPmFyZ3VtZW50KDApOwogICAgIGlmICghb2JqLmlzT2JqZWN0KCkp
Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMs
ICJPYmplY3QucHJldmVudEV4dGVuc2lvbnMgY2FuIG9ubHkgYmUgY2FsbGVkIG9uIE9iamVjdHMu
IikpOworICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihl
eGVjLCBBU0NJSUxpdGVyYWwoIk9iamVjdC5wcmV2ZW50RXh0ZW5zaW9ucyBjYW4gb25seSBiZSBj
YWxsZWQgb24gT2JqZWN0cy4iKSkpOwogICAgIGFzT2JqZWN0KG9iaiktPnByZXZlbnRFeHRlbnNp
b25zKGV4ZWMtPmdsb2JhbERhdGEoKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShvYmop
OwogfQpAQCAtNDQ5LDcgKzQ0OSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2Jq
ZWN0Q29uc3RydWN0b3JJc1NlYWxlZChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgLy8gMS4gSWYgVHlw
ZShPKSBpcyBub3QgT2JqZWN0IHRocm93IGEgVHlwZUVycm9yIGV4Y2VwdGlvbi4KICAgICBKU1Zh
bHVlIG9iaiA9IGV4ZWMtPmFyZ3VtZW50KDApOwogICAgIGlmICghb2JqLmlzT2JqZWN0KCkpCi0g
ICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsICJP
YmplY3QuaXNTZWFsZWQgY2FuIG9ubHkgYmUgY2FsbGVkIG9uIE9iamVjdHMuIikpOworICAgICAg
ICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCBBU0NJSUxp
dGVyYWwoIk9iamVjdC5pc1NlYWxlZCBjYW4gb25seSBiZSBjYWxsZWQgb24gT2JqZWN0cy4iKSkp
OwogICAgIEpTT2JqZWN0KiBvYmplY3QgPSBhc09iamVjdChvYmopOwogCiAgICAgaWYgKGlzSlNG
aW5hbE9iamVjdChvYmplY3QpKQpAQCAtNDc5LDcgKzQ3OSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JJc0Zyb3plbihFeGVjU3RhdGUqIGV4ZWMpCiAg
ICAgLy8gMS4gSWYgVHlwZShPKSBpcyBub3QgT2JqZWN0IHRocm93IGEgVHlwZUVycm9yIGV4Y2Vw
dGlvbi4KICAgICBKU1ZhbHVlIG9iaiA9IGV4ZWMtPmFyZ3VtZW50KDApOwogICAgIGlmICghb2Jq
LmlzT2JqZWN0KCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlVHlw
ZUVycm9yKGV4ZWMsICJPYmplY3QuaXNGcm96ZW4gY2FuIG9ubHkgYmUgY2FsbGVkIG9uIE9iamVj
dHMuIikpOworICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJv
cihleGVjLCBBU0NJSUxpdGVyYWwoIk9iamVjdC5pc0Zyb3plbiBjYW4gb25seSBiZSBjYWxsZWQg
b24gT2JqZWN0cy4iKSkpOwogICAgIEpTT2JqZWN0KiBvYmplY3QgPSBhc09iamVjdChvYmopOwog
CiAgICAgaWYgKGlzSlNGaW5hbE9iamVjdChvYmplY3QpKQpAQCAtNTA5LDcgKzUwOSw3IEBAIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JJc0V4dGVuc2libGUo
RXhlY1N0YXRlKiBleGVjKQogewogICAgIEpTVmFsdWUgb2JqID0gZXhlYy0+YXJndW1lbnQoMCk7
CiAgICAgaWYgKCFvYmouaXNPYmplY3QoKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihl
eGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgIk9iamVjdC5pc0V4dGVuc2libGUgY2FuIG9ubHkg
YmUgY2FsbGVkIG9uIE9iamVjdHMuIikpOworICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4
ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIk9iamVjdC5pc0V4dGVuc2li
bGUgY2FuIG9ubHkgYmUgY2FsbGVkIG9uIE9iamVjdHMuIikpKTsKICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzQm9vbGVhbihhc09iamVjdChvYmopLT5pc0V4dGVuc2libGUoKSkpOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RQcm90b3R5
cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0UHJvdG90eXBlLmNw
cAppbmRleCA2ZmFhMTY4NDg1ZGJjZjAwYWY4ZjY3NDVmMGJjNWVmMGRhYmIwODEyLi41YWZiMGQy
ZjA4NDZjN2VkYzRiMDYxNjUzOTU3MTllNTQ3MDhkZmVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL09iamVjdFByb3RvdHlwZS5jcHAKQEAgLTE1Nyw3ICsxNTcsNyBA
QCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdFByb3RvRnVuY0RlZmluZUdldHRl
cihFeGVjU3RhdGUqIGV4ZWMpCiAgICAgSlNWYWx1ZSBnZXQgPSBleGVjLT5hcmd1bWVudCgxKTsK
ICAgICBDYWxsRGF0YSBjYWxsRGF0YTsKICAgICBpZiAoZ2V0Q2FsbERhdGEoZ2V0LCBjYWxsRGF0
YSkgPT0gQ2FsbFR5cGVOb25lKQotICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNy
ZWF0ZVN5bnRheEVycm9yKGV4ZWMsICJpbnZhbGlkIGdldHRlciB1c2FnZSIpKTsKKyAgICAgICAg
cmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVTeW50YXhFcnJvcihleGVjLCBBU0NJSUxp
dGVyYWwoImludmFsaWQgZ2V0dGVyIHVzYWdlIikpKTsKIAogICAgIFByb3BlcnR5RGVzY3JpcHRv
ciBkZXNjcmlwdG9yOwogICAgIGRlc2NyaXB0b3Iuc2V0R2V0dGVyKGdldCk7CkBAIC0xNzcsNyAr
MTc3LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RQcm90b0Z1bmNEZWZp
bmVTZXR0ZXIoRXhlY1N0YXRlKiBleGVjKQogICAgIEpTVmFsdWUgc2V0ID0gZXhlYy0+YXJndW1l
bnQoMSk7CiAgICAgQ2FsbERhdGEgY2FsbERhdGE7CiAgICAgaWYgKGdldENhbGxEYXRhKHNldCwg
Y2FsbERhdGEpID09IENhbGxUeXBlTm9uZSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihl
eGVjLCBjcmVhdGVTeW50YXhFcnJvcihleGVjLCAiaW52YWxpZCBzZXR0ZXIgdXNhZ2UiKSk7Cisg
ICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlU3ludGF4RXJyb3IoZXhlYywg
QVNDSUlMaXRlcmFsKCJpbnZhbGlkIHNldHRlciB1c2FnZSIpKSk7CiAKICAgICBQcm9wZXJ0eURl
c2NyaXB0b3IgZGVzY3JpcHRvcjsKICAgICBkZXNjcmlwdG9yLnNldFNldHRlcihzZXQpOwpAQCAt
MjQ3LDcgKzI0Nyw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0UHJvdG9G
dW5jVG9TdHJpbmcoRXhlY1N0YXRlKiBleGVjKQogewogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0g
ZXhlYy0+aG9zdFRoaXNWYWx1ZSgpOwogICAgIGlmICh0aGlzVmFsdWUuaXNVbmRlZmluZWRPck51
bGwoKSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc05vbnRyaXZpYWxTdHJpbmco
ZXhlYywgdGhpc1ZhbHVlLmlzVW5kZWZpbmVkKCkgPyAiW29iamVjdCBVbmRlZmluZWRdIiA6ICJb
b2JqZWN0IE51bGxdIikpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTm9udHJp
dmlhbFN0cmluZyhleGVjLCBTdHJpbmcodGhpc1ZhbHVlLmlzVW5kZWZpbmVkKCkgPyBBU0NJSUxp
dGVyYWwoIltvYmplY3QgVW5kZWZpbmVkXSIpIDogQVNDSUlMaXRlcmFsKCJbb2JqZWN0IE51bGxd
IikpKSk7CiAgICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSB0aGlzVmFsdWUudG9PYmplY3QoZXhl
Yyk7CiAKICAgICBKU1N0cmluZyogcmVzdWx0ID0gdGhpc09iamVjdC0+c3RydWN0dXJlKCktPm9i
amVjdFRvU3RyaW5nVmFsdWUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1JlZ0V4cENvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1JlZ0V4cENvbnN0cnVjdG9yLmNwcAppbmRleCA1N2VlN2RmMTRiNDk3NGJkZDQxMmQ0YzYy
MGVlOTRjMDFjMGM4YmRkLi4xMjQ4ZmI0ZGFlYTAxNDk3NGMxMzJhMDg5MzQzNWVhNjkyMzNlYjc2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDb25zdHJ1
Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwQ29uc3Ry
dWN0b3IuY3BwCkBAIC0yNjIsNyArMjYyLDcgQEAgSlNPYmplY3QqIGNvbnN0cnVjdFJlZ0V4cChF
eGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IEEKIAog
ICAgIGlmIChhcmcwLmluaGVyaXRzKCZSZWdFeHBPYmplY3Q6OnNfaW5mbykpIHsKICAgICAgICAg
aWYgKCFhcmcxLmlzVW5kZWZpbmVkKCkpCi0gICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihl
eGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgIkNhbm5vdCBzdXBwbHkgZmxhZ3Mgd2hlbiBjb25z
dHJ1Y3Rpbmcgb25lIFJlZ0V4cCBmcm9tIGFub3RoZXIuIikpOworICAgICAgICAgICAgcmV0dXJu
IHRocm93RXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiQ2Fu
bm90IHN1cHBseSBmbGFncyB3aGVuIGNvbnN0cnVjdGluZyBvbmUgUmVnRXhwIGZyb20gYW5vdGhl
ci4iKSkpOwogICAgICAgICAvLyBJZiBjYWxsZWQgYXMgYSBmdW5jdGlvbiwgdGhpcyBqdXN0IHJl
dHVybnMgdGhlIGZpcnN0IGFyZ3VtZW50IChzZWUgMTUuMTAuMy4xKS4KICAgICAgICAgaWYgKGNh
bGxBc0NvbnN0cnVjdG9yKSB7CiAgICAgICAgICAgICBSZWdFeHAqIHJlZ0V4cCA9IHN0YXRpY19j
YXN0PFJlZ0V4cE9iamVjdCo+KGFzT2JqZWN0KGFyZzApKS0+cmVnRXhwKCk7CkBAIC0yODEsNyAr
MjgxLDcgQEAgSlNPYmplY3QqIGNvbnN0cnVjdFJlZ0V4cChFeGVjU3RhdGUqIGV4ZWMsIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IEEKICAgICAgICAgaWYgKGV4ZWMtPmhhZEV4
Y2VwdGlvbigpKQogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIGlmIChmbGFncyA9PSBJ
bnZhbGlkRmxhZ3MpCi0gICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihleGVjLCBjcmVhdGVT
eW50YXhFcnJvcihleGVjLCAiSW52YWxpZCBmbGFncyBzdXBwbGllZCB0byBSZWdFeHAgY29uc3Ry
dWN0b3IuIikpOworICAgICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoZXhlYywgY3JlYXRlU3lu
dGF4RXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJJbnZhbGlkIGZsYWdzIHN1cHBsaWVkIHRvIFJl
Z0V4cCBjb25zdHJ1Y3Rvci4iKSkpOwogICAgIH0KIAogICAgIFJlZ0V4cCogcmVnRXhwID0gUmVn
RXhwOjpjcmVhdGUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBwYXR0ZXJuLCBmbGFncyk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBPYmplY3QuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0LmNwcAppbmRleCA2ZmQ5ZGIy
OWMwNGFhMzZiOTNlYmZjYzhiMTU0ZmNkZmRlMDNiYjBlLi5iMzQ2Yzc3Njk1NTJlNWE3NzgxNjU2
ODI0YjMwNDhlZjViMzZlMWZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9SZWdFeHBPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1JlZ0V4cE9iamVjdC5jcHAKQEAgLTEzMCw3ICsxMzAsNyBAQCB2b2lkIFJlZ0V4cE9iamVjdDo6
Z2V0UHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3Bl
cnR5Tgogc3RhdGljIGJvb2wgcmVqZWN0KEV4ZWNTdGF0ZSogZXhlYywgYm9vbCB0aHJvd0V4Y2Vw
dGlvbiwgY29uc3QgY2hhciogbWVzc2FnZSkKIHsKICAgICBpZiAodGhyb3dFeGNlcHRpb24pCi0g
ICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIG1lc3NhZ2UpOworICAgICAgICB0aHJvd1R5cGVF
cnJvcihleGVjLCBBU0NJSUxpdGVyYWwobWVzc2FnZSkpOwogICAgIHJldHVybiBmYWxzZTsKIH0K
IApAQCAtMTkxLDcgKzE5MSw3IEBAIEpTVmFsdWUgcmVnRXhwT2JqZWN0U291cmNlKEV4ZWNTdGF0
ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgUHJvcGVydHlOYW1lKQogICAgIC8vIHNvdXJjZSBj
YW5ub3QgZXZlciB2YWxpZGx5IGJlICIiLiBJZiB0aGUgc291cmNlIGlzIGVtcHR5LCByZXR1cm4g
YSBkaWZmZXJlbnQgUGF0dGVybgogICAgIC8vIHRoYXQgd291bGQgbWF0Y2ggdGhlIHNhbWUgdGhp
bmcuCiAgICAgaWYgKCFsZW5ndGgpCi0gICAgICAgIHJldHVybiBqc1N0cmluZyhleGVjLCAiKD86
KSIpOworICAgICAgICByZXR1cm4ganNOb250cml2aWFsU3RyaW5nKGV4ZWMsIEFTQ0lJTGl0ZXJh
bCgiKD86KSIpKTsKIAogICAgIC8vIGVhcmx5IHJldHVybiBmb3Igc3RyaW5ncyB0aGF0IGRvbid0
IGNvbnRhaW4gYSBmb3J3YXJkcyBzbGFzaCBhbmQgTGluZVRlcm1pbmF0b3IKICAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKQEAgLTI1MSw5ICsyNTEsOSBAQCBKU1Zh
bHVlIHJlZ0V4cE9iamVjdFNvdXJjZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2Us
IFByb3BlcnR5TmFtZSkKICAgICAgICAgICAgIGVsc2UgaWYgKGNoID09ICdccicpCiAgICAgICAg
ICAgICAgICAgcmVzdWx0LmFwcGVuZCgncicpOwogICAgICAgICAgICAgZWxzZSBpZiAoY2ggPT0g
MHgyMDI4KQotICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoInUyMDI4Iik7CisgICAgICAg
ICAgICAgICAgcmVzdWx0LmFwcGVuZExpdGVyYWwoInUyMDI4Iik7CiAgICAgICAgICAgICBlbHNl
Ci0gICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgidTIwMjkiKTsKKyAgICAgICAgICAgICAg
ICByZXN1bHQuYXBwZW5kTGl0ZXJhbCgidTIwMjkiKTsKICAgICAgICAgfSBlbHNlCiAgICAgICAg
ICAgICByZXN1bHQuYXBwZW5kKGNoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvUmVnRXhwUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1JlZ0V4cFByb3RvdHlwZS5jcHAKaW5kZXggYzIyZTZkMDM5ZDMyOTkxZjI0NzJlYTky
NTU1M2UwYzFiYTIzNjEzMC4uM2M3NDJhMGQzMDUxNTA3YTMxNWE4N2I0ZmQzNTI3Mjg5NGNiZDFh
MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwUHJvdG90
eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBQcm90b3R5
cGUuY3BwCkBAIC0xMDYsNyArMTA2LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBy
ZWdFeHBQcm90b0Z1bmNDb21waWxlKEV4ZWNTdGF0ZSogZXhlYykKICAgICAKICAgICBpZiAoYXJn
MC5pbmhlcml0cygmUmVnRXhwT2JqZWN0OjpzX2luZm8pKSB7CiAgICAgICAgIGlmICghYXJnMS5p
c1VuZGVmaW5lZCgpKQotICAgICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVh
dGVUeXBlRXJyb3IoZXhlYywgIkNhbm5vdCBzdXBwbHkgZmxhZ3Mgd2hlbiBjb25zdHJ1Y3Rpbmcg
b25lIFJlZ0V4cCBmcm9tIGFub3RoZXIuIikpOworICAgICAgICAgICAgcmV0dXJuIHRocm93Vk1F
cnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJDYW5ub3Qgc3Vw
cGx5IGZsYWdzIHdoZW4gY29uc3RydWN0aW5nIG9uZSBSZWdFeHAgZnJvbSBhbm90aGVyLiIpKSk7
CiAgICAgICAgIHJlZ0V4cCA9IGFzUmVnRXhwT2JqZWN0KGFyZzApLT5yZWdFeHAoKTsKICAgICB9
IGVsc2UgewogICAgICAgICBTdHJpbmcgcGF0dGVybiA9ICFleGVjLT5hcmd1bWVudENvdW50KCkg
PyBTdHJpbmcoIiIpIDogYXJnMC50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CkBAIC0xMTks
NyArMTE5LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWdFeHBQcm90b0Z1bmND
b21waWxlKEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgICAgIGlmIChleGVjLT5oYWRFeGNlcHRp
b24oKSkKICAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVk
KCkpOwogICAgICAgICAgICAgaWYgKGZsYWdzID09IEludmFsaWRGbGFncykKLSAgICAgICAgICAg
ICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVN5bnRheEVycm9yKGV4ZWMsICJJ
bnZhbGlkIGZsYWdzIHN1cHBsaWVkIHRvIFJlZ0V4cCBjb25zdHJ1Y3Rvci4iKSk7CisgICAgICAg
ICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVTeW50YXhFcnJvcihleGVj
LCBBU0NJSUxpdGVyYWwoIkludmFsaWQgZmxhZ3Mgc3VwcGxpZWQgdG8gUmVnRXhwIGNvbnN0cnVj
dG9yLiIpKSk7CiAgICAgICAgIH0KICAgICAgICAgcmVnRXhwID0gUmVnRXhwOjpjcmVhdGUoZXhl
Yy0+Z2xvYmFsRGF0YSgpLCBwYXR0ZXJuLCBmbGFncyk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdC5jcHAKaW5kZXggNmMxZjE2ZDYzZWI3ZmIy
OWI4ZDA1MWRmMTQwYmNkMzBlZmRhMjU3OS4uMTEzZGVlMTY1YzUxMTQ4NDUwZDE0YzZiZDZiNjVj
YzYwNjc2NjQ5YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3Ry
aW5nT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdP
YmplY3QuY3BwCkBAIC04NSwyNyArODUsMjcgQEAgYm9vbCBTdHJpbmdPYmplY3Q6OmRlZmluZU93
blByb3BlcnR5KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHkKICAg
ICBpZiAocHJvcGVydHlOYW1lID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgpIHsKICAg
ICAgICAgaWYgKCFvYmplY3QtPmlzRXh0ZW5zaWJsZSgpKSB7CiAgICAgICAgICAgICBpZiAodGhy
b3dFeGNlcHRpb24pCi0gICAgICAgICAgICAgICAgdGhyb3dFcnJvcihleGVjLCBjcmVhdGVUeXBl
RXJyb3IoZXhlYywgIkF0dGVtcHRpbmcgdG8gZGVmaW5lIHByb3BlcnR5IG9uIG9iamVjdCB0aGF0
IGlzIG5vdCBleHRlbnNpYmxlLiIpKTsKKyAgICAgICAgICAgICAgICB0aHJvd0Vycm9yKGV4ZWMs
IGNyZWF0ZVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkF0dGVtcHRpbmcgdG8gZGVmaW5l
IHByb3BlcnR5IG9uIG9iamVjdCB0aGF0IGlzIG5vdCBleHRlbnNpYmxlLiIpKSk7CiAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICAgICAgaWYgKGRlc2NyaXB0b3IuY29u
ZmlndXJhYmxlUHJlc2VudCgpICYmIGRlc2NyaXB0b3IuY29uZmlndXJhYmxlKCkpIHsKICAgICAg
ICAgICAgIGlmICh0aHJvd0V4Y2VwdGlvbikKLSAgICAgICAgICAgICAgICB0aHJvd0Vycm9yKGV4
ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCAiQXR0ZW1wdGluZyB0byBjb25maWd1cmFibGUgYXR0
cmlidXRlIG9mIHVuY29uZmlndXJhYmxlIHByb3BlcnR5LiIpKTsKKyAgICAgICAgICAgICAgICB0
aHJvd0Vycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkF0dGVt
cHRpbmcgdG8gY29uZmlndXJhYmxlIGF0dHJpYnV0ZSBvZiB1bmNvbmZpZ3VyYWJsZSBwcm9wZXJ0
eS4iKSkpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAgICAgIGlm
IChkZXNjcmlwdG9yLmVudW1lcmFibGVQcmVzZW50KCkgJiYgZGVzY3JpcHRvci5lbnVtZXJhYmxl
KCkpIHsKICAgICAgICAgICAgIGlmICh0aHJvd0V4Y2VwdGlvbikKLSAgICAgICAgICAgICAgICB0
aHJvd0Vycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCAiQXR0ZW1wdGluZyB0byBjaGFu
Z2UgZW51bWVyYWJsZSBhdHRyaWJ1dGUgb2YgdW5jb25maWd1cmFibGUgcHJvcGVydHkuIikpOwor
ICAgICAgICAgICAgICAgIHRocm93RXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsIEFT
Q0lJTGl0ZXJhbCgiQXR0ZW1wdGluZyB0byBjaGFuZ2UgZW51bWVyYWJsZSBhdHRyaWJ1dGUgb2Yg
dW5jb25maWd1cmFibGUgcHJvcGVydHkuIikpKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICAgICAgfQogICAgICAgICBpZiAoZGVzY3JpcHRvci5pc0FjY2Vzc29yRGVzY3JpcHRvcigp
KSB7CiAgICAgICAgICAgICBpZiAodGhyb3dFeGNlcHRpb24pCi0gICAgICAgICAgICAgICAgdGhy
b3dFcnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgIkF0dGVtcHRpbmcgdG8gY2hhbmdl
IGFjY2VzcyBtZWNoYW5pc20gZm9yIGFuIHVuY29uZmlndXJhYmxlIHByb3BlcnR5LiIpKTsKKyAg
ICAgICAgICAgICAgICB0aHJvd0Vycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCBBU0NJ
SUxpdGVyYWwoIkF0dGVtcHRpbmcgdG8gY2hhbmdlIGFjY2VzcyBtZWNoYW5pc20gZm9yIGFuIHVu
Y29uZmlndXJhYmxlIHByb3BlcnR5LiIpKSk7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgICAgIH0KICAgICAgICAgaWYgKGRlc2NyaXB0b3Iud3JpdGFibGVQcmVzZW50KCkgJiYgZGVz
Y3JpcHRvci53cml0YWJsZSgpKSB7CiAgICAgICAgICAgICBpZiAodGhyb3dFeGNlcHRpb24pCi0g
ICAgICAgICAgICAgICAgdGhyb3dFcnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgIkF0
dGVtcHRpbmcgdG8gY2hhbmdlIHdyaXRhYmxlIGF0dHJpYnV0ZSBvZiB1bmNvbmZpZ3VyYWJsZSBw
cm9wZXJ0eS4iKSk7CisgICAgICAgICAgICAgICAgdGhyb3dFcnJvcihleGVjLCBjcmVhdGVUeXBl
RXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJBdHRlbXB0aW5nIHRvIGNoYW5nZSB3cml0YWJsZSBh
dHRyaWJ1dGUgb2YgdW5jb25maWd1cmFibGUgcHJvcGVydHkuIikpKTsKICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICAgICAgfQogICAgICAgICBpZiAoIWRlc2NyaXB0b3IudmFsdWUoKSkK
QEAgLTExMyw3ICsxMTMsNyBAQCBib29sIFN0cmluZ09iamVjdDo6ZGVmaW5lT3duUHJvcGVydHko
SlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eQogICAgICAgICBpZiAo
cHJvcGVydHlOYW1lID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGggJiYgc2FtZVZhbHVl
KGV4ZWMsIGRlc2NyaXB0b3IudmFsdWUoKSwganNOdW1iZXIodGhpc09iamVjdC0+aW50ZXJuYWxW
YWx1ZSgpLT5sZW5ndGgoKSkpKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIGlm
ICh0aHJvd0V4Y2VwdGlvbikKLSAgICAgICAgICAgIHRocm93RXJyb3IoZXhlYywgY3JlYXRlVHlw
ZUVycm9yKGV4ZWMsICJBdHRlbXB0aW5nIHRvIGNoYW5nZSB2YWx1ZSBvZiBhIHJlYWRvbmx5IHBy
b3BlcnR5LiIpKTsKKyAgICAgICAgICAgIHRocm93RXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9y
KGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiQXR0ZW1wdGluZyB0byBjaGFuZ2UgdmFsdWUgb2YgYSByZWFk
b25seSBwcm9wZXJ0eS4iKSkpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcAppbmRl
eCBhMWUwMTMzOWNjMDE0MjhkYmJlMzI4OWE5YzVmNGJmNzc1ZTNkMjVmLi43MzYzM2E2MGIzMzQx
M2NmMDVhNjNhMDEwYThkMmRlNjgzMDMyNGMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAKQEAgLTI4Nyw3ICsyODcsNyBAQCBzdGF0
aWMgQUxXQVlTX0lOTElORSBKU1ZhbHVlIGpzU3BsaWNlU3Vic3RyaW5ncyhFeGVjU3RhdGUqIGV4
ZWMsIEpTU3RyaW5nKiBzb3VyYwogICAgICAgICB0b3RhbExlbmd0aCArPSBzdWJzdHJpbmdSYW5n
ZXNbaV0ubGVuZ3RoOwogCiAgICAgaWYgKCF0b3RhbExlbmd0aCkKLSAgICAgICAgcmV0dXJuIGpz
U3RyaW5nKGV4ZWMsICIiKTsKKyAgICAgICAgcmV0dXJuIGpzRW1wdHlTdHJpbmcoZXhlYyk7CiAK
ICAgICBpZiAoc291cmNlLmlzOEJpdCgpKSB7CiAgICAgICAgIExDaGFyKiBidWZmZXI7CkBAIC0z
NDgsNyArMzQ4LDcgQEAgc3RhdGljIEFMV0FZU19JTkxJTkUgSlNWYWx1ZSBqc1NwbGljZVN1YnN0
cmluZ3NXaXRoU2VwYXJhdG9ycyhFeGVjU3RhdGUqIGV4ZWMsIEoKICAgICB9CiAKICAgICBpZiAo
IXRvdGFsTGVuZ3RoKQotICAgICAgICByZXR1cm4ganNTdHJpbmcoZXhlYywgIiIpOworICAgICAg
ICByZXR1cm4ganNFbXB0eVN0cmluZyhleGVjKTsKIAogICAgIGlmIChzb3VyY2UuaXM4Qml0KCkg
JiYgYWxsU2VwZXJhdG9yczhCaXQpIHsKICAgICAgICAgTENoYXIqIGJ1ZmZlcjsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>161849</attachid>
            <date>2012-09-02 14:09:47 -0700</date>
            <delta_ts>2012-09-04 12:31:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-95633-20120902140933.patch</filename>
            <type>text/plain</type>
            <size>105625</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI3MzkxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
ZmYxM2EzMGY2MjM4MWIzZjQxNGIxMzhlMjI0MDFhZjY2MWYzMjIzLi5kYzZkNmU5NGZiYjk0NjYw
Y2M1NTBiZjZkN2U1MjI0MzQ3ZTUwMTRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxODYgQEAKKzIwMTItMDktMDIgIEJlbmphbWluIFBvdWxhaW4gIDxicG91bGFpbkBhcHBs
ZS5jb20+CisKKyAgICAgICAgSW1wcm92ZSBKU0MgdXNlIG9mIFN0cmluZ3MgYWZ0ZXIgdGhlIFVT
dHJpbmctPlN0cmluZyBjaGFuZ2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTk1NjMzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgR2VvZmZyZXkgR2FyZW4u
CisKKyAgICAgICAgVGhpcyBwYXRjaCBpbXByb3ZlIHRoZSB1c2Ugb2Ygc3RyaW5ncyBpbiB0aGUg
SlNDIHJ1bnRpbWUuCisKKyAgICAgICAgVGhlIGluaXRpYWxpemF0aW9uIG9mIElkZW50aWZpZXIg
aXMgbGVmdCBmb3IgZnV0dXJlIHBhdGNoZXMuCisKKyAgICAgICAgVGhlIGltcHJvdmVtZW50cyBh
cmUgdGhlIGZvbGxvd2luZzoKKyAgICAgICAgLTUlIGZhc3RlciB0byByYWlzZSBvbmUgb2YgdGhl
IG1vZGlmaWVkIGV4Y2VwdGlvbi4KKyAgICAgICAgLTMgdGltZXMgZmFzdGVyIHRvIGV4ZWN1dGUg
Qm9vbGVhbjo6dG9TdHJpbmcoKQorCisgICAgICAgIE1vc3Qgb2YgdGhlIGNoYW5nZXMgYXJlIGp1
c3QgYWJvdXQgdXNpbmcgdGhlIG5ldyBtZXRob2RzCisgICAgICAgIGZvciBzdHJpbmcgbGl0ZXJh
bHMuCisKKyAgICAgICAgV2l0aCB0aGUgY2hhbmdlcywgdGhlIGJpbmFyeSBvbiB4ODZfNjQgZ2V0
cyAxNzYgYnl0ZXMgc21hbGxlci4KKworICAgICAgICAqIEFQSS9KU0NhbGxiYWNrT2JqZWN0RnVu
Y3Rpb25zLmg6CisgICAgICAgIChKU0M6Ojo6c3RhdGljRnVuY3Rpb25HZXR0ZXIpOgorICAgICAg
ICAoSlNDOjo6OmNhbGxiYWNrR2V0dGVyKToKKyAgICAgICAgKiBBUEkvSlNDb250ZXh0UmVmLmNw
cDoKKyAgICAgICAgKEpTQ29udGV4dENyZWF0ZUJhY2t0cmFjZSk6CisgICAgICAgICogQVBJL0pT
T2JqZWN0UmVmLmNwcDoKKyAgICAgICAgKEpTT2JqZWN0TWFrZUZ1bmN0aW9uV2l0aENhbGxiYWNr
KToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suY3BwOgorICAgICAgICAoSlNDOjp2YWx1
ZVRvU291cmNlU3RyaW5nKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpuYW1lRm9yUmVnaXN0
ZXIpOgorICAgICAgICAqIGludGVycHJldGVyL0ludGVycHJldGVyLmNwcDoKKyAgICAgICAgKEpT
Qzo6SW50ZXJwcmV0ZXI6OmFkZFN0YWNrVHJhY2VJZk5lY2Vzc2FyeSk6CisgICAgICAgICogcnVu
dGltZS9BcnJheUNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Y29uc3RydWN0QXJyYXlX
aXRoU2l6ZVF1aXJrKToKKyAgICAgICAgKiBydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcDoKKyAg
ICAgICAgKEpTQzo6c2hpZnQpOgorICAgICAgICAoSlNDOjp1bnNoaWZ0KToKKyAgICAgICAgKEpT
Qzo6YXJyYXlQcm90b0Z1bmNQb3ApOgorICAgICAgICAoSlNDOjphcnJheVByb3RvRnVuY1JldmVy
c2UpOgorICAgICAgICAqIHJ1bnRpbWUvQm9vbGVhblByb3RvdHlwZS5jcHA6CisgICAgICAgIChK
U0M6OmJvb2xlYW5Qcm90b0Z1bmNUb1N0cmluZyk6IEluc3RlYWQgb2YgaW5zdGFuY2lhdGluZyBu
ZXcgc3RyaW5ncywgcmV1c2UgdGhlCisgICAgICAgIGtleXdvcmRzIGF2YWlsYWJsZSBpbiBTbWFs
bFN0cmluZ3MuIEF2b2lkaW5nIHRoZSBjcmVhdGlvbiBvZiB0aGUgSlNTdHJpbmcgYW5kIFN0cmlu
Z0ltcGwKKyAgICAgICAgbWFrZXMgdGhlIG1ldGhvZCBzaWduaWZpY2FudGx5IGZhc3Rlci4KKwor
ICAgICAgICAqIHJ1bnRpbWUvRGF0ZUNvbnZlcnNpb24uY3BwOgorICAgICAgICAoSlNDOjpmb3Jt
YXREYXRlVGltZSk6CisgICAgICAgICogcnVudGltZS9EYXRlUHJvdG90eXBlLmNwcDoKKyAgICAg
ICAgKEpTQzo6Zm9ybWF0TG9jYWxlRGF0ZSk6CisgICAgICAgIChKU0M6OmZvcm1hdGVEYXRlSW5z
dGFuY2UpOgorICAgICAgICAoSlNDOjpkYXRlUHJvdG9GdW5jVG9JU09TdHJpbmcpOgorICAgICAg
ICBDaGFuZ2UgdGhlIHdheSB3ZSB1c2Ugc25wcmludGYoKSBmb3IgY2xhcml0eSBhbmQgcGVyZm9y
bWFuY2UuCisKKyAgICAgICAgSW5zdGVhZCBvZiBhbGxvY2F0aW5nIG9uZSBleHRyYSBieXRlIHRv
IHB1dCBhIHplcm8gImp1c3QgaW4gY2FzZSIsIHdlIHVzZSB0aGUgc2l6ZSByZXR1cm5lZAorICAg
ICAgICBieSBzbnByaW50ZigpLgorICAgICAgICBUbyBwcmV2ZW50IGFueSBvdmVyZmxvdyBmcm9t
IGEgcHJvZ3JhbW1pbmcgbWlzdGFrZSwgd2UgZXhwbGljaXRlbHkgdGVzdCBmb3Igb3ZlcmZsb3cg
YW5kCisgICAgICAgIHJldHVybiBhbiBlbXB0eSBzdHJpbmcuCisKKyAgICAgICAgKEpTQzo6ZGF0
ZVByb3RvRnVuY1RvSlNPTik6CisgICAgICAgICogcnVudGltZS9FcnJvci5jcHA6CisgICAgICAg
IChKU0M6OmNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKToKKyAgICAgICAgKEpTQzo6dGhy
b3dUeXBlRXJyb3IpOgorICAgICAgICAoSlNDOjp0aHJvd1N5bnRheEVycm9yKToKKyAgICAgICAg
KiBydW50aW1lL0Vycm9yLmg6CisgICAgICAgIChKU0M6OlN0cmljdE1vZGVUeXBlRXJyb3JGdW5j
dGlvbjo6Y3JlYXRlKToKKyAgICAgICAgKiBydW50aW1lL0Vycm9yUHJvdG90eXBlLmNwcDoKKyAg
ICAgICAgKEpTQzo6RXJyb3JQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpT
Qzo6ZXJyb3JQcm90b0Z1bmNUb1N0cmluZyk6CisgICAgICAgIFVzaW5nIGEgbnVsbCBTdHJpbmcg
aXMgY29ycmVjdCBiZWNhdXNlICg4KSB1c2VzIGpzU3RyaW5nKCksICg5KSB0ZXN0cyBmb3IgYSBs
ZW5ndGggb2YgMC4KKworICAgICAgICAqIHJ1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5jcHA6Cisg
ICAgICAgIChKU0M6OkludGVycnVwdGVkRXhlY3V0aW9uRXJyb3I6OmRlZmF1bHRWYWx1ZSk6Cisg
ICAgICAgIChKU0M6OlRlcm1pbmF0ZWRFeGVjdXRpb25FcnJvcjo6ZGVmYXVsdFZhbHVlKToKKyAg
ICAgICAgKEpTQzo6Y3JlYXRlU3RhY2tPdmVyZmxvd0Vycm9yKToKKyAgICAgICAgKEpTQzo6Y3Jl
YXRlT3V0T2ZNZW1vcnlFcnJvcik6CisgICAgICAgICogcnVudGltZS9FeGVjdXRhYmxlLmNwcDoK
KyAgICAgICAgKEpTQzo6RXZhbEV4ZWN1dGFibGU6OmNvbXBpbGVJbnRlcm5hbCk6CisgICAgICAg
IChKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZTo6cGFyYW1TdHJpbmcpOgorICAgICAgICAqIHJ1bnRp
bWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OmNvbnN0cnVjdEZ1bmN0
aW9uKToKKyAgICAgICAgKEpTQzo6Y29uc3RydWN0RnVuY3Rpb25Ta2lwcGluZ0V2YWxFbmFibGVk
Q2hlY2spOgorICAgICAgICAqIHJ1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuaDoKKyAgICAgICAg
KEpTQzo6RnVuY3Rpb25Qcm90b3R5cGU6OmNyZWF0ZSk6CisgICAgICAgIFVzaW5nIGEgbnVsbCBT
dHJpbmcgZm9yIHRoZSBuYW1lIGlzIGNvcnJlY3QgYmVjYXVzZSBJbnRlcm5hbEZ1bmN0aW9uIHVz
ZXMganNTdHJpbmcoKQorICAgICAgICB0byBjcmVhdGUgdGhlIG5hbWUgdmFsdWUuCisKKyAgICAg
ICAgKiBydW50aW1lL0ludGVybmFsRnVuY3Rpb24uY3BwOgorICAgICAgICAoSlNDOjpJbnRlcm5h
bEZ1bmN0aW9uOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIFRoZXJlIGlzIG5vIG5lZWQgdG8g
Y3JlYXRlIGFuIGVtcHR5IHN0cmluZyBmb3IgYSBudWxsIHN0cmluZywganNTdHJpbmcoKSBoYW5k
bGUgYm90aAorICAgICAgICBjYXNlcyBhcyBlbXB0eSBKU1N0cmluZy4KKworICAgICAgICAqIHJ1
bnRpbWUvSlNBcnJheS5jcHA6CisgICAgICAgIChKU0M6OnJlamVjdCk6CisgICAgICAgIChKU0M6
OlNwYXJzZUFycmF5VmFsdWVNYXA6OnB1dCk6CisgICAgICAgIChKU0M6OkpTQXJyYXk6OnB1dCk6
CisgICAgICAgIChKU0M6OkpTQXJyYXk6OnB1dEJ5SW5kZXhCZXlvbmRWZWN0b3JMZW5ndGgpOgor
ICAgICAgICAoSlNDOjpKU0FycmF5OjpwdXREaXJlY3RJbmRleEJleW9uZFZlY3Rvckxlbmd0aCk6
CisgICAgICAgIChKU0M6OkpTQXJyYXk6OnNldExlbmd0aCk6CisgICAgICAgIChKU0M6OkpTQXJy
YXk6OnBvcCk6CisgICAgICAgIChKU0M6OkpTQXJyYXk6OnB1c2gpOgorICAgICAgICAqIHJ1bnRp
bWUvSlNGdW5jdGlvbi5jcHA6CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246OmZpbmlzaENyZWF0
aW9uKTogU2FtZSBpc3N1ZSBhcyBJbnRlcm5hbEZ1bmN0aW9uOjpmaW5pc2hDcmVhdGlvbi4KKwor
ICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpjYWxsZXJHZXR0ZXIpOgorICAgICAgICAoSlNDOjpK
U0Z1bmN0aW9uOjpkZWZpbmVPd25Qcm9wZXJ0eSk6CisgICAgICAgICogcnVudGltZS9KU0dsb2Jh
bERhdGEuY3BwOgorICAgICAgICAoSlNDOjplbmFibGVBc3NlbWJsZXIpOiBVc2UgQ0ZTVFIoKSBp
bnN0ZWFkIG9mIENGU3RyaW5nQ3JlYXRlV2l0aENTdHJpbmcoKS4KKyAgICAgICAgQ0ZTdHJpbmdD
cmVhdGVXaXRoQ1N0cmluZygpIGNvcHkgdGhlIGNvbnRlbnQgYW5kIG1heSBjaG9vc2UgdG8gZGVj
b2RlIHRoZSBkYXRhLgorICAgICAgICBDRlNUUigpIGlzIG11Y2ggbW9yZSBlZmZpY2llbnQuCisK
KyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNH
bG9iYWxPYmplY3Q6OnJlc2V0KToKKyAgICAgICAgSlNGdW5jdGlvbiB1c2VzIGpzU3RyaW5nKCkg
dG8gY3JlYXRlIHRoZSBuYW1lLCB3ZSBjYW4gdXNlIG51bGwgc3RyaW5ncyBpbnN0ZWFkCisgICAg
ICAgIG9mIGNyZWF0aW5nIGVtcHR5IHN0cmluZ3MuCisKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxP
YmplY3Q6OmNyZWF0ZVRocm93VHlwZUVycm9yKTogZGl0dG8uCisgICAgICAgICogcnVudGltZS9K
U0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5jcHA6CisgICAgICAgIChKU0M6OmVuY29kZSk6CisgICAg
ICAgIChKU0M6OmRlY29kZSk6CisgICAgICAgIChKU0M6Omdsb2JhbEZ1bmNFdmFsKToKKyAgICAg
ICAgKiBydW50aW1lL0pTT05PYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpTdHJpbmdpZmllcjo6
YXBwZW5kU3RyaW5naWZpZWRWYWx1ZSk6CisgICAgICAgIChKU0M6OlN0cmluZ2lmaWVyOjpIb2xk
ZXI6OmFwcGVuZE5leHRQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OkpTT05Qcm90b0Z1bmNQYXJz
ZSk6CisgICAgICAgIChKU0M6OkpTT05Qcm90b0Z1bmNTdHJpbmdpZnkpOgorICAgICAgICAqIHJ1
bnRpbWUvSlNPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6cHV0KToKKyAgICAg
ICAgKEpTQzo6SlNPYmplY3Q6OmRlZmF1bHRWYWx1ZSk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0
OjpoYXNJbnN0YW5jZSk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpkZWZpbmVPd25Qcm9wZXJ0
eSk6CisgICAgICAgICogcnVudGltZS9KU1N0cmluZy5jcHA6CisgICAgICAgIFJldHVybiBhbiBl
bXB0eSBKU1N0cmluZyB0byBhdm9pZCB0aGUgY3JlYXRpb24gb2YgYSB0ZW1wb3JhcnkgZW1wdHkg
U3RyaW5nLgorCisgICAgICAgIChKU0M6OkpTUm9wZVN0cmluZzo6Z2V0SW5kZXhTbG93Q2FzZSk6
CisgICAgICAgICogcnVudGltZS9KU1N0cmluZy5oOgorICAgICAgICAoSlNDKTogUmVtb3ZlIHRo
ZSB2ZXJzaW9ucyBvZiBqc05vbnRyaXZpYWxTdHJpbmcoKSB0YWtpbmcgYSBjaGFyKi4gQWxsIHRo
ZSBjYWxsZXJzCisgICAgICAgIGhhdmUgYmVlbiByZXBsYWNlZCBieSBjYWxscyB1c2luZyBBU0NJ
SUxpdGVyYWwuCisKKyAgICAgICAgKiBydW50aW1lL0pTVmFsdWUuY3BwOgorICAgICAgICAoSlND
OjpKU1ZhbHVlOjpwdXRUb1ByaW1pdGl2ZSk6CisgICAgICAgICogcnVudGltZS9MaXRlcmFsUGFy
c2VyLmNwcDoKKyAgICAgICAgKEpTQzo6OjpMZXhlcjo6bGV4KToKKyAgICAgICAgKEpTQzo6OjpM
ZXhlcjo6bGV4U3RyaW5nKToKKyAgICAgICAgKEpTQzo6OjpMZXhlcjo6bGV4TnVtYmVyKToKKyAg
ICAgICAgKEpTQzo6OjpwYXJzZSk6CisgICAgICAgICogcnVudGltZS9MaXRlcmFsUGFyc2VyLmg6
CisgICAgICAgIChKU0M6OkxpdGVyYWxQYXJzZXI6OmdldEVycm9yTWVzc2FnZSk6CisgICAgICAg
ICogcnVudGltZS9OdW1iZXJQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpudW1iZXJQcm90
b0Z1bmNUb0V4cG9uZW50aWFsKToKKyAgICAgICAgKEpTQzo6bnVtYmVyUHJvdG9GdW5jVG9GaXhl
ZCk6CisgICAgICAgIChKU0M6Om51bWJlclByb3RvRnVuY1RvUHJlY2lzaW9uKToKKyAgICAgICAg
KEpTQzo6bnVtYmVyUHJvdG9GdW5jVG9TdHJpbmcpOgorICAgICAgICAqIHJ1bnRpbWUvT2JqZWN0
Q29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpvYmplY3RDb25zdHJ1Y3RvckdldFByb3Rv
dHlwZU9mKToKKyAgICAgICAgKEpTQzo6b2JqZWN0Q29uc3RydWN0b3JHZXRPd25Qcm9wZXJ0eURl
c2NyaXB0b3IpOgorICAgICAgICAoSlNDOjpvYmplY3RDb25zdHJ1Y3RvckdldE93blByb3BlcnR5
TmFtZXMpOgorICAgICAgICAoSlNDOjpvYmplY3RDb25zdHJ1Y3RvcktleXMpOgorICAgICAgICAo
SlNDOjp0b1Byb3BlcnR5RGVzY3JpcHRvcik6CisgICAgICAgIChKU0M6Om9iamVjdENvbnN0cnVj
dG9yRGVmaW5lUHJvcGVydHkpOgorICAgICAgICAoSlNDOjpvYmplY3RDb25zdHJ1Y3RvckRlZmlu
ZVByb3BlcnRpZXMpOgorICAgICAgICAoSlNDOjpvYmplY3RDb25zdHJ1Y3RvckNyZWF0ZSk6Cisg
ICAgICAgIChKU0M6Om9iamVjdENvbnN0cnVjdG9yU2VhbCk6CisgICAgICAgIChKU0M6Om9iamVj
dENvbnN0cnVjdG9yRnJlZXplKToKKyAgICAgICAgKEpTQzo6b2JqZWN0Q29uc3RydWN0b3JQcmV2
ZW50RXh0ZW5zaW9ucyk6CisgICAgICAgIChKU0M6Om9iamVjdENvbnN0cnVjdG9ySXNTZWFsZWQp
OgorICAgICAgICAoSlNDOjpvYmplY3RDb25zdHJ1Y3RvcklzRnJvemVuKToKKyAgICAgICAgKEpT
Qzo6b2JqZWN0Q29uc3RydWN0b3JJc0V4dGVuc2libGUpOgorICAgICAgICAqIHJ1bnRpbWUvT2Jq
ZWN0UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6b2JqZWN0UHJvdG9GdW5jRGVmaW5lR2V0
dGVyKToKKyAgICAgICAgKEpTQzo6b2JqZWN0UHJvdG9GdW5jRGVmaW5lU2V0dGVyKToKKyAgICAg
ICAgKEpTQzo6b2JqZWN0UHJvdG9GdW5jVG9TdHJpbmcpOgorICAgICAgICAqIHJ1bnRpbWUvUmVn
RXhwQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RSZWdFeHApOgorICAg
ICAgICAqIHJ1bnRpbWUvUmVnRXhwT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6cmVqZWN0KToK
KyAgICAgICAgKEpTQzo6cmVnRXhwT2JqZWN0U291cmNlKToKKyAgICAgICAgKiBydW50aW1lL1Jl
Z0V4cFByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OnJlZ0V4cFByb3RvRnVuY0NvbXBpbGUp
OgorICAgICAgICAqIHJ1bnRpbWUvU3RyaW5nT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6U3Ry
aW5nT2JqZWN0OjpkZWZpbmVPd25Qcm9wZXJ0eSk6CisgICAgICAgICogcnVudGltZS9TdHJpbmdQ
cm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpqc1NwbGljZVN1YnN0cmluZ3MpOgorICAgICAg
ICAoSlNDOjpqc1NwbGljZVN1YnN0cmluZ3NXaXRoU2VwYXJhdG9ycyk6CisKIDIwMTItMDktMDEg
IEdlb2ZmcmV5IEdhcmVuICA8Z2dhcmVuQGFwcGxlLmNvbT4KIAogICAgICAgICBSb2xsZWQgYmFj
ayBvdXQgYSBwaWVjZSBvZiA8aHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMTI3Mjkz
PgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0
RnVuY3Rpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3RG
dW5jdGlvbnMuaAppbmRleCA4MzI2YzA1NzlhYTA3MWMzNzU3MzdlZjY0MjdjZTMxZDdhYzYwMTU3
Li4wNjkxZGFmYzMwNTU1NzQ0MTdjMTE5MWZiZTJhMDM4MGQyODgyMTJiIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMuaApA
QCAtNTY4LDcgKzU2OCw3IEBAIEpTVmFsdWUgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpzdGF0
aWNGdW5jdGlvbkdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUKICAgICAgICAgfQogICAg
IH0KIAotICAgIHJldHVybiB0aHJvd0Vycm9yKGV4ZWMsIGNyZWF0ZVJlZmVyZW5jZUVycm9yKGV4
ZWMsICJTdGF0aWMgZnVuY3Rpb24gcHJvcGVydHkgZGVmaW5lZCB3aXRoIE5VTEwgY2FsbEFzRnVu
Y3Rpb24gY2FsbGJhY2suIikpOworICAgIHJldHVybiB0aHJvd0Vycm9yKGV4ZWMsIGNyZWF0ZVJl
ZmVyZW5jZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiU3RhdGljIGZ1bmN0aW9uIHByb3BlcnR5
IGRlZmluZWQgd2l0aCBOVUxMIGNhbGxBc0Z1bmN0aW9uIGNhbGxiYWNrLiIpKSk7CiB9CiAKIHRl
bXBsYXRlIDxjbGFzcyBQYXJlbnQ+CkBAIC02MDAsNyArNjAwLDcgQEAgSlNWYWx1ZSBKU0NhbGxi
YWNrT2JqZWN0PFBhcmVudD46OmNhbGxiYWNrR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1
ZSBzbG90UGEKICAgICAgICAgfQogICAgIH0KIAotICAgIHJldHVybiB0aHJvd0Vycm9yKGV4ZWMs
IGNyZWF0ZVJlZmVyZW5jZUVycm9yKGV4ZWMsICJoYXNQcm9wZXJ0eSBjYWxsYmFjayByZXR1cm5l
ZCB0cnVlIGZvciBhIHByb3BlcnR5IHRoYXQgZG9lc24ndCBleGlzdC4iKSk7CisgICAgcmV0dXJu
IHRocm93RXJyb3IoZXhlYywgY3JlYXRlUmVmZXJlbmNlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFs
KCJoYXNQcm9wZXJ0eSBjYWxsYmFjayByZXR1cm5lZCB0cnVlIGZvciBhIHByb3BlcnR5IHRoYXQg
ZG9lc24ndCBleGlzdC4iKSkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0UmVmLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0UmVmLmNwcAppbmRleCBiYWUzMTAxMDViMjRiNmEyZDFm
YjQ2ZWRmMzI2NGVhZjllZDEzYzY4Li4zNjBlMzM3ZWVjZWUyMTk2YzdhNGI5ZjUyYjZhMGFlZThj
YzIzMGZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dFJl
Zi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHRSZWYuY3BwCkBA
IC0xNzMsOSArMTczLDkgQEAgSlNTdHJpbmdSZWYgSlNDb250ZXh0Q3JlYXRlQmFja3RyYWNlKEpT
Q29udGV4dFJlZiBjdHgsIHVuc2lnbmVkIG1heFN0YWNrU2l6ZSkKICAgICBpZiAoZXhlYy0+Y2Fs
bGVlKCkpIHsKICAgICAgICAgaWYgKGFzT2JqZWN0KGV4ZWMtPmNhbGxlZSgpKS0+aW5oZXJpdHMo
JkludGVybmFsRnVuY3Rpb246OnNfaW5mbykpIHsKICAgICAgICAgICAgIGZ1bmN0aW9uTmFtZSA9
IGFzSW50ZXJuYWxGdW5jdGlvbihleGVjLT5jYWxsZWUoKSktPm5hbWUoZXhlYyk7Ci0gICAgICAg
ICAgICBidWlsZGVyLmFwcGVuZCgiIzAgIik7CisgICAgICAgICAgICBidWlsZGVyLmFwcGVuZExp
dGVyYWwoIiMwICIpOwogICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoZnVuY3Rpb25OYW1lKTsK
LSAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCIoKSAiKTsKKyAgICAgICAgICAgIGJ1aWxkZXIu
YXBwZW5kTGl0ZXJhbCgiKCkgIik7CiAgICAgICAgICAgICBjb3VudCsrOwogICAgICAgICB9CiAg
ICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU09iamVjdFJlZi5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTT2JqZWN0UmVmLmNwcAppbmRleCBlNmMw
YzUyOGE3MDZkMzBjNDA1NzY4MWVjOTI5OGY5YTg5Y2QyNzNjLi44YjBkNGEwOWZjZDVlNmNkM2Nj
ZjY4MTc2ZjQ1YWExZWEwODdlNTA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
QVBJL0pTT2JqZWN0UmVmLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTT2Jq
ZWN0UmVmLmNwcApAQCAtOTIsNyArOTIsNyBAQCBKU09iamVjdFJlZiBKU09iamVjdE1ha2VGdW5j
dGlvbldpdGhDYWxsYmFjayhKU0NvbnRleHRSZWYgY3R4LCBKU1N0cmluZ1JlZiBuYW1lLAogewog
ICAgIEV4ZWNTdGF0ZSogZXhlYyA9IHRvSlMoY3R4KTsKICAgICBBUElFbnRyeVNoaW0gZW50cnlT
aGltKGV4ZWMpOwotICAgIHJldHVybiB0b1JlZihKU0NhbGxiYWNrRnVuY3Rpb246OmNyZWF0ZShl
eGVjLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIGNhbGxBc0Z1bmN0aW9uLCBuYW1lID8g
bmFtZS0+dXN0cmluZygpIDogImFub255bW91cyIpKTsKKyAgICByZXR1cm4gdG9SZWYoSlNDYWxs
YmFja0Z1bmN0aW9uOjpjcmVhdGUoZXhlYywgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBj
YWxsQXNGdW5jdGlvbiwgbmFtZSA/IG5hbWUtPnVzdHJpbmcoKSA6IEFTQ0lJTGl0ZXJhbCgiYW5v
bnltb3VzIikpKTsKIH0KIAogSlNPYmplY3RSZWYgSlNPYmplY3RNYWtlQ29uc3RydWN0b3IoSlND
b250ZXh0UmVmIGN0eCwgSlNDbGFzc1JlZiBqc0NsYXNzLCBKU09iamVjdENhbGxBc0NvbnN0cnVj
dG9yQ2FsbGJhY2sgY2FsbEFzQ29uc3RydWN0b3IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9Db2RlQmxvY2suY3BwCmluZGV4IDJlODYwZGVhMGVhZDI1ZDhkMWVkNjgzMDdlMTk4
MzZhODIwOGUzYjMuLmVmODk4MTJhN2EyMGZjMzhiOWM4Njc4MGI3MGUzNmFlZTIwODJkYmIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCkBAIC03NSw3
ICs3NSw3IEBAIHN0YXRpYyBTdHJpbmcgZXNjYXBlUXVvdGVzKGNvbnN0IFN0cmluZyYgc3RyKQog
c3RhdGljIFN0cmluZyB2YWx1ZVRvU291cmNlU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1
ZSB2YWwpCiB7CiAgICAgaWYgKCF2YWwpCi0gICAgICAgIHJldHVybiAiMCI7CisgICAgICAgIHJl
dHVybiBBU0NJSUxpdGVyYWwoIjAiKTsKIAogICAgIGlmICh2YWwuaXNTdHJpbmcoKSkKICAgICAg
ICAgcmV0dXJuIG1ha2VTdHJpbmcoIlwiIiwgZXNjYXBlUXVvdGVzKHZhbC50b1N0cmluZyhleGVj
KS0+dmFsdWUoZXhlYykpLCAiXCIiKTsKQEAgLTMwMzIsMTQgKzMwMzIsMTQgQEAgU3RyaW5nIENv
ZGVCbG9jazo6bmFtZUZvclJlZ2lzdGVyKGludCByZWdpc3Rlck51bWJlcikKICAgICAgICAgICAg
IHJldHVybiBTdHJpbmcocHRyLT5maXJzdCk7CiAgICAgfQogICAgIGlmIChuZWVkc0FjdGl2YXRp
b24oKSAmJiByZWdpc3Rlck51bWJlciA9PSBhY3RpdmF0aW9uUmVnaXN0ZXIoKSkKLSAgICAgICAg
cmV0dXJuICJhY3RpdmF0aW9uIjsKKyAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgiYWN0aXZh
dGlvbiIpOwogICAgIGlmIChyZWdpc3Rlck51bWJlciA9PSB0aGlzUmVnaXN0ZXIoKSkKLSAgICAg
ICAgcmV0dXJuICJ0aGlzIjsKKyAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgidGhpcyIpOwog
ICAgIGlmICh1c2VzQXJndW1lbnRzKCkpIHsKICAgICAgICAgaWYgKHJlZ2lzdGVyTnVtYmVyID09
IGFyZ3VtZW50c1JlZ2lzdGVyKCkpCi0gICAgICAgICAgICByZXR1cm4gImFyZ3VtZW50cyI7Cisg
ICAgICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJhcmd1bWVudHMiKTsKICAgICAgICAgaWYg
KHVubW9kaWZpZWRBcmd1bWVudHNSZWdpc3Rlcihhcmd1bWVudHNSZWdpc3RlcigpKSA9PSByZWdp
c3Rlck51bWJlcikKLSAgICAgICAgICAgIHJldHVybiAicmVhbCBhcmd1bWVudHMiOworICAgICAg
ICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgicmVhbCBhcmd1bWVudHMiKTsKICAgICB9CiAgICAg
aWYgKHJlZ2lzdGVyTnVtYmVyIDwgMCkgewogICAgICAgICBpbnQgYXJndW1lbnRQb3NpdGlvbiA9
IC1yZWdpc3Rlck51bWJlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRl
cnByZXRlci9JbnRlcnByZXRlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0
ZXIvSW50ZXJwcmV0ZXIuY3BwCmluZGV4IDdjNGViMGQzOWU1OGFkNDVlODA0NjgyNmJhNzg3N2M0
MDIzNjI1NGUuLmMzZDIzMjE5ZjJjNzUwODIwNWYxNmZjZjE2M2ViNjJjYTVkZmIxZTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcApA
QCAtNzQyLDYgKzc0Miw4IEBAIHZvaWQgSW50ZXJwcmV0ZXI6OmFkZFN0YWNrVHJhY2VJZk5lY2Vz
c2FyeShDYWxsRnJhbWUqIGNhbGxGcmFtZSwgSlNPYmplY3QqIGVycm9yCiAgICAgICAgIGdsb2Jh
bE9iamVjdCA9IGdsb2JhbERhdGEtPmR5bmFtaWNHbG9iYWxPYmplY3Q7CiAgICAgZWxzZQogICAg
ICAgICBnbG9iYWxPYmplY3QgPSBlcnJvci0+Z2xvYmFsT2JqZWN0KCk7CisKKyAgICAvLyBGSVhN
RTogSlNTdHJpbmdKb2luZXIgY291bGQgYmUgbW9yZSBlZmZpY2llbnQgdGhhbiBTdHJpbmdCdWls
ZGVyIGhlcmUuCiAgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwogICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCBzdGFja1RyYWNlLnNpemUoKTsgaSsrKSB7CiAgICAgICAgIGJ1aWxkZXIuYXBw
ZW5kKFN0cmluZyhzdGFja1RyYWNlW2ldLnRvU3RyaW5nKGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhl
YygpKS5pbXBsKCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0FycmF5Q29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJy
YXlDb25zdHJ1Y3Rvci5jcHAKaW5kZXggODNlNDhjYTFiMmQxODZhZmEzZDcxMGQ1YTNhZjRmZjhl
OGUxYmRjOC4uYzlhNmRjNjAwYzQyMmRmZjViNDk4YWZjYmY3YmRiNTRhZWQyZmRiOSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlDb25zdHJ1Y3Rvci5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlDb25zdHJ1Y3Rvci5jcHAK
QEAgLTg1LDcgKzg1LDcgQEAgc3RhdGljIGlubGluZSBKU09iamVjdCogY29uc3RydWN0QXJyYXlX
aXRoU2l6ZVF1aXJrKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgQXJnTGkKICAgICBpZiAoYXJncy5z
aXplKCkgPT0gMSAmJiBhcmdzLmF0KDApLmlzTnVtYmVyKCkpIHsKICAgICAgICAgdWludDMyX3Qg
biA9IGFyZ3MuYXQoMCkudG9VSW50MzIoZXhlYyk7CiAgICAgICAgIGlmIChuICE9IGFyZ3MuYXQo
MCkudG9OdW1iZXIoZXhlYykpCi0gICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihleGVjLCBj
cmVhdGVSYW5nZUVycm9yKGV4ZWMsICJBcnJheSBzaXplIGlzIG5vdCBhIHNtYWxsIGVub3VnaCBw
b3NpdGl2ZSBpbnRlZ2VyLiIpKTsKKyAgICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGV4ZWMs
IGNyZWF0ZVJhbmdlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJBcnJheSBzaXplIGlzIG5vdCBh
IHNtYWxsIGVub3VnaCBwb3NpdGl2ZSBpbnRlZ2VyLiIpKSk7CiAgICAgICAgIHJldHVybiBjb25z
dHJ1Y3RFbXB0eUFycmF5KGV4ZWMsIGdsb2JhbE9iamVjdCwgbik7CiAgICAgfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHAKaW5kZXggZDAz
Y2U1MzE2N2U0NjBlYWY0YTkwNTEwNDk4YjY1MmM5YTQ3MWMwOS4uNGIxM2Y5OTNjZWQyM2I4MDEz
YzE5MGZjYzhhNmFjMmY5M2MwZWYwYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0FycmF5UHJvdG90eXBlLmNwcApAQCAtMjA1LDEzICsyMDUsMTMgQEAgc3RhdGljIGlu
bGluZSB2b2lkIHNoaWZ0KEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHRoaXNPYmosIHVuc2ln
bmVkIGhlYWRlciwgdW4KICAgICAgICAgICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAg
ICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0gZWxzZSBpZiAoIXRoaXNPYmotPm1ldGhv
ZFRhYmxlKCktPmRlbGV0ZVByb3BlcnR5QnlJbmRleCh0aGlzT2JqLCBleGVjLCB0bykpIHsKLSAg
ICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsICJVbmFibGUgdG8gZGVsZXRlIHByb3BlcnR5
LiIpOworICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJVbmFi
bGUgdG8gZGVsZXRlIHByb3BlcnR5LiIpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
fQogICAgIH0KICAgICBmb3IgKHVuc2lnbmVkIGsgPSBsZW5ndGg7IGsgPiBsZW5ndGggLSBjb3Vu
dDsgLS1rKSB7CiAgICAgICAgIGlmICghdGhpc09iai0+bWV0aG9kVGFibGUoKS0+ZGVsZXRlUHJv
cGVydHlCeUluZGV4KHRoaXNPYmosIGV4ZWMsIGsgLSAxKSkgewotICAgICAgICAgICAgdGhyb3dU
eXBlRXJyb3IoZXhlYywgIlVuYWJsZSB0byBkZWxldGUgcHJvcGVydHkuIik7CisgICAgICAgICAg
ICB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlVuYWJsZSB0byBkZWxldGUgcHJv
cGVydHkuIikpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgfQpAQCAtMjQz
LDcgKzI0Myw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCB1bnNoaWZ0KEV4ZWNTdGF0ZSogZXhlYywg
SlNPYmplY3QqIHRoaXNPYmosIHVuc2lnbmVkIGhlYWRlciwKICAgICAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgICAgICB0aGlzT2JqLT5tZXRob2RUYWJsZSgpLT5wdXRCeUluZGV4KHRoaXNP
YmosIGV4ZWMsIHRvLCB2YWx1ZSwgdHJ1ZSk7CiAgICAgICAgIH0gZWxzZSBpZiAoIXRoaXNPYmot
Pm1ldGhvZFRhYmxlKCktPmRlbGV0ZVByb3BlcnR5QnlJbmRleCh0aGlzT2JqLCBleGVjLCB0bykp
IHsKLSAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsICJVbmFibGUgdG8gZGVsZXRlIHBy
b3BlcnR5LiIpOworICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFs
KCJVbmFibGUgdG8gZGVsZXRlIHByb3BlcnR5LiIpKTsKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgfQogICAgICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCkBAIC00OTEsNyArNDkx
LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY1BvcChFeGVj
U3RhdGUqIGV4ZWMpCiAgICAgICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgICAgIGlmICgh
dGhpc09iai0+bWV0aG9kVGFibGUoKS0+ZGVsZXRlUHJvcGVydHlCeUluZGV4KHRoaXNPYmosIGV4
ZWMsIGxlbmd0aCAtIDEpKSB7Ci0gICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCAiVW5h
YmxlIHRvIGRlbGV0ZSBwcm9wZXJ0eS4iKTsKKyAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4
ZWMsIEFTQ0lJTGl0ZXJhbCgiVW5hYmxlIHRvIGRlbGV0ZSBwcm9wZXJ0eS4iKSk7CiAgICAgICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgICAgICB9CiAg
ICAgICAgIHB1dFByb3BlcnR5KGV4ZWMsIHRoaXNPYmosIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5s
ZW5ndGgsIGpzTnVtYmVyKGxlbmd0aCAtIDEpKTsKQEAgLTU1Myw3ICs1NTMsNyBAQCBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jUmV2ZXJzZShFeGVjU3RhdGUqIGV4
ZWMpCiAgICAgICAgICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgICAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICAgICAgfSBlbHNl
IGlmICghdGhpc09iai0+bWV0aG9kVGFibGUoKS0+ZGVsZXRlUHJvcGVydHlCeUluZGV4KHRoaXNP
YmosIGV4ZWMsIGspKSB7Ci0gICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCAiVW5hYmxl
IHRvIGRlbGV0ZSBwcm9wZXJ0eS4iKTsKKyAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMs
IEFTQ0lJTGl0ZXJhbCgiVW5hYmxlIHRvIGRlbGV0ZSBwcm9wZXJ0eS4iKSk7CiAgICAgICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgICAgICB9CiAKQEAg
LTU2Miw3ICs1NjIsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9G
dW5jUmV2ZXJzZShFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgICAgICBpZiAoZXhlYy0+aGFkRXhj
ZXB0aW9uKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVm
aW5lZCgpKTsKICAgICAgICAgfSBlbHNlIGlmICghdGhpc09iai0+bWV0aG9kVGFibGUoKS0+ZGVs
ZXRlUHJvcGVydHlCeUluZGV4KHRoaXNPYmosIGV4ZWMsIGxrMSkpIHsKLSAgICAgICAgICAgIHRo
cm93VHlwZUVycm9yKGV4ZWMsICJVbmFibGUgdG8gZGVsZXRlIHByb3BlcnR5LiIpOworICAgICAg
ICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJVbmFibGUgdG8gZGVsZXRl
IHByb3BlcnR5LiIpKTsKICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRl
ZmluZWQoKSk7CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Cb29sZWFuUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0Jvb2xlYW5Qcm90b3R5cGUuY3BwCmluZGV4IDE1NTFlYWJmMjY4MjBjNGIzYWRk
YTllOTY2YjQ0M2RkOThkOTA1NjEuLmM4Yzc3MjIwYTk0YzM2OWIxNmQ4NWJjNzIyMTQ0ZTJiNzRm
YWYyNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Jvb2xlYW5Q
cm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Jvb2xlYW5Q
cm90b3R5cGUuY3BwCkBAIC03NywyMSArNzcsMjIgQEAgYm9vbCBCb29sZWFuUHJvdG90eXBlOjpn
ZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGUK
IAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBib29sZWFuUHJvdG9GdW5jVG9TdHJpbmco
RXhlY1N0YXRlKiBleGVjKQogeworICAgIEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSA9ICZleGVj
LT5nbG9iYWxEYXRhKCk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT5ob3N0VGhpc1Zh
bHVlKCk7CiAgICAgaWYgKHRoaXNWYWx1ZSA9PSBqc0Jvb2xlYW4oZmFsc2UpKQotICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTm9udHJpdmlhbFN0cmluZyhleGVjLCAiZmFsc2UiKSk7
CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoZ2xvYmFsRGF0YS0+c21hbGxTdHJpbmdz
LmZhbHNlU3RyaW5nKGdsb2JhbERhdGEpKTsKIAogICAgIGlmICh0aGlzVmFsdWUgPT0ganNCb29s
ZWFuKHRydWUpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTm9udHJpdmlhbFN0
cmluZyhleGVjLCAidHJ1ZSIpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShnbG9i
YWxEYXRhLT5zbWFsbFN0cmluZ3MudHJ1ZVN0cmluZyhnbG9iYWxEYXRhKSk7CiAKICAgICBpZiAo
IXRoaXNWYWx1ZS5pbmhlcml0cygmQm9vbGVhbk9iamVjdDo6c19pbmZvKSkKICAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7CiAKICAgICBpZiAoYXNCb29sZWFuT2JqZWN0KHRo
aXNWYWx1ZSktPmludGVybmFsVmFsdWUoKSA9PSBqc0Jvb2xlYW4oZmFsc2UpKQotICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTm9udHJpdmlhbFN0cmluZyhleGVjLCAiZmFsc2UiKSk7
CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoZ2xvYmFsRGF0YS0+c21hbGxTdHJpbmdz
LmZhbHNlU3RyaW5nKGdsb2JhbERhdGEpKTsKIAogICAgIEFTU0VSVChhc0Jvb2xlYW5PYmplY3Qo
dGhpc1ZhbHVlKS0+aW50ZXJuYWxWYWx1ZSgpID09IGpzQm9vbGVhbih0cnVlKSk7Ci0gICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc05vbnRyaXZpYWxTdHJpbmcoZXhlYywgInRydWUiKSk7Cisg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShnbG9iYWxEYXRhLT5zbWFsbFN0cmluZ3MudHJ1ZVN0
cmluZyhnbG9iYWxEYXRhKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYm9v
bGVhblByb3RvRnVuY1ZhbHVlT2YoRXhlY1N0YXRlKiBleGVjKQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUNvbnZlcnNpb24uY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUNvbnZlcnNpb24uY3BwCmluZGV4IDkzMzE1NDFhODQ4NmI1
MzRlYTRlNTZjYmNlZGNjMDc1MzZmMjQ1YjAuLjBiNTdmMDEyZDU2MTRjMDI0N2EwN2I0MzQwMGRl
OTc1YmQ4OGY4NDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Rh
dGVDb252ZXJzaW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRl
Q29udmVyc2lvbi5jcHAKQEAgLTczLDcgKzczLDcgQEAgU3RyaW5nIGZvcm1hdERhdGVUaW1lKGNv
bnN0IEdyZWdvcmlhbkRhdGVUaW1lJiB0LCBEYXRlVGltZUZvcm1hdCBmb3JtYXQsIGJvb2wgYXMK
ICAgICAgICAgYnVpbGRlci5hcHBlbmQod2Vla2RheU5hbWVbKHQud2Vla0RheSgpICsgNikgJSA3
XSk7CiAKICAgICAgICAgaWYgKGFzVVRDVmFyaWFudCkgewotICAgICAgICAgICAgYnVpbGRlci5h
cHBlbmQoIiwgIik7CisgICAgICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIiwgIik7CiAg
ICAgICAgICAgICBhcHBlbmROdW1iZXI8Mj4oYnVpbGRlciwgdC5tb250aERheSgpKTsKICAgICAg
ICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcgJyk7CiAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCht
b250aE5hbWVbdC5tb250aCgpXSk7CkBAIC05Niw3ICs5Niw3IEBAIFN0cmluZyBmb3JtYXREYXRl
VGltZShjb25zdCBHcmVnb3JpYW5EYXRlVGltZSYgdCwgRGF0ZVRpbWVGb3JtYXQgZm9ybWF0LCBi
b29sIGFzCiAgICAgICAgIGFwcGVuZE51bWJlcjwyPihidWlsZGVyLCB0Lm1pbnV0ZSgpKTsKICAg
ICAgICAgYnVpbGRlci5hcHBlbmQoJzonKTsKICAgICAgICAgYXBwZW5kTnVtYmVyPDI+KGJ1aWxk
ZXIsIHQuc2Vjb25kKCkpOwotICAgICAgICBidWlsZGVyLmFwcGVuZCgiIEdNVCIpOworICAgICAg
ICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIiBHTVQiKTsKIAogICAgICAgICBpZiAoIWFzVVRDVmFy
aWFudCkgewogICAgICAgICAgICAgaW50IG9mZnNldCA9IGFicyh0LnV0Y09mZnNldCgpKSAvIDYw
OwpAQCAtMTE0LDcgKzExNCw3IEBAIFN0cmluZyBmb3JtYXREYXRlVGltZShjb25zdCBHcmVnb3Jp
YW5EYXRlVGltZSYgdCwgRGF0ZVRpbWVGb3JtYXQgZm9ybWF0LCBib29sIGFzCiAgICAgICAgICAg
ICBzdHJmdGltZSh0aW1lWm9uZU5hbWUsIHNpemVvZih0aW1lWm9uZU5hbWUpLCAiJVoiLCAmZ3Rt
KTsKICNlbmRpZgogICAgICAgICAgICAgaWYgKHRpbWVab25lTmFtZVswXSkgewotICAgICAgICAg
ICAgICAgIGJ1aWxkZXIuYXBwZW5kKCIgKCIpOworICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBw
ZW5kTGl0ZXJhbCgiICgiKTsKICAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCh0aW1lWm9u
ZU5hbWUpOwogICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcpJyk7CiAgICAgICAgICAg
ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlUHJvdG90
eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVQcm90b3R5cGUuY3Bw
CmluZGV4IDhjZmQ0NGVlZjg3MTQ0MTI5Yjc2MGYwNmRiOTcyODI0ODhlODM2NWIuLjYyMjExZDMw
MjQ3MmNhZWI0YmFjMGI3ODEwNzczYzExYzg1ZGJmMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0RhdGVQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0RhdGVQcm90b3R5cGUuY3BwCkBAIC0zMzQsNyArMzM0LDcgQEAgc3Rh
dGljIEpTQ2VsbCogZm9ybWF0TG9jYWxlRGF0ZShFeGVjU3RhdGUqIGV4ZWMsIERhdGVJbnN0YW5j
ZSogZGF0ZU9iamVjdCwgZG91YmwKIHsKICAgICBjb25zdCBHcmVnb3JpYW5EYXRlVGltZSogZ3Jl
Z29yaWFuRGF0ZVRpbWUgPSBkYXRlT2JqZWN0LT5ncmVnb3JpYW5EYXRlVGltZShleGVjKTsKICAg
ICBpZiAoIWdyZWdvcmlhbkRhdGVUaW1lKQotICAgICAgICByZXR1cm4ganNOb250cml2aWFsU3Ry
aW5nKGV4ZWMsICJJbnZhbGlkIERhdGUiKTsKKyAgICAgICAgcmV0dXJuIGpzTm9udHJpdmlhbFN0
cmluZyhleGVjLCBBU0NJSUxpdGVyYWwoIkludmFsaWQgRGF0ZSIpKTsKICAgICByZXR1cm4gZm9y
bWF0TG9jYWxlRGF0ZShleGVjLCAqZ3JlZ29yaWFuRGF0ZVRpbWUsIGZvcm1hdCk7CiB9CiAKQEAg
LTM1Miw3ICszNTIsNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgZm9ybWF0ZURhdGVJbnN0YW5j
ZShFeGVjU3RhdGUqIGV4ZWMsIERhdGVUaW1lRm9ybWF0IGZvcm1hdAogICAgICAgICA/IHRoaXNE
YXRlT2JqLT5ncmVnb3JpYW5EYXRlVGltZVVUQyhleGVjKQogICAgICAgICA6IHRoaXNEYXRlT2Jq
LT5ncmVnb3JpYW5EYXRlVGltZShleGVjKTsKICAgICBpZiAoIWdyZWdvcmlhbkRhdGVUaW1lKQot
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTm9udHJpdmlhbFN0cmluZyhleGVjLCAi
SW52YWxpZCBEYXRlIikpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTm9udHJp
dmlhbFN0cmluZyhleGVjLCBTdHJpbmcoQVNDSUlMaXRlcmFsKCJJbnZhbGlkIERhdGUiKSkpKTsK
IAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOb250cml2aWFsU3RyaW5nKGV4ZWMsIGZv
cm1hdERhdGVUaW1lKCpncmVnb3JpYW5EYXRlVGltZSwgZm9ybWF0LCBhc1VUQ1ZhcmlhbnQpKSk7
CiB9CkBAIC01NDgsMjQgKzU0OCwzMCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRh
dGVQcm90b0Z1bmNUb0lTT1N0cmluZyhFeGVjU3RhdGUqIGV4ZWMpCiAgICAgCiAgICAgRGF0ZUlu
c3RhbmNlKiB0aGlzRGF0ZU9iaiA9IGFzRGF0ZUluc3RhbmNlKHRoaXNWYWx1ZSk7IAogICAgIGlm
ICghaXNmaW5pdGUodGhpc0RhdGVPYmotPmludGVybmFsTnVtYmVyKCkpKQotICAgICAgICByZXR1
cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVJhbmdlRXJyb3IoZXhlYywgIkludmFsaWQgRGF0
ZSIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVSYW5nZUVycm9y
KGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiSW52YWxpZCBEYXRlIikpKTsKIAogICAgIGNvbnN0IEdyZWdv
cmlhbkRhdGVUaW1lKiBncmVnb3JpYW5EYXRlVGltZSA9IHRoaXNEYXRlT2JqLT5ncmVnb3JpYW5E
YXRlVGltZVVUQyhleGVjKTsKICAgICBpZiAoIWdyZWdvcmlhbkRhdGVUaW1lKQotICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTm9udHJpdmlhbFN0cmluZyhleGVjLCAiSW52YWxpZCBE
YXRlIikpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTm9udHJpdmlhbFN0cmlu
ZyhleGVjLCBTdHJpbmcoQVNDSUlMaXRlcmFsKCJJbnZhbGlkIERhdGUiKSkpKTsKICAgICAvLyBN
YXhpbXVtIGFtb3VudCBvZiBzcGFjZSB3ZSBuZWVkIGluIGJ1ZmZlcjogNyAobWF4LiBkaWdpdHMg
aW4geWVhcikgKyAyICogNSAoMiBjaGFyYWN0ZXJzIGVhY2ggZm9yIG1vbnRoLCBkYXksIGhvdXIs
IG1pbnV0ZSwgc2Vjb25kKSArIDQgKC4gKyAzIGRpZ2l0cyBmb3IgbWlsbGlzZWNvbmRzKQogICAg
IC8vIDYgZm9yIGZvcm1hdHRpbmcgYW5kIG9uZSBmb3IgbnVsbCB0ZXJtaW5hdGlvbiA9IDI4LiBX
ZSBhZGQgb25lIGV4dHJhIGNoYXJhY3RlciB0byBhbGxvdyB1cyB0byBmb3JjZSBudWxsIHRlcm1p
bmF0aW9uLgotICAgIGNoYXIgYnVmZmVyWzI5XTsKKyAgICBjaGFyIGJ1ZmZlclsyOF07CiAgICAg
Ly8gSWYgdGhlIHllYXIgaXMgb3V0c2lkZSB0aGUgYm91bmRzIG9mIDAgYW5kIDk5OTkgaW5jbHVz
aXZlIHdlIHdhbnQgdG8gdXNlIHRoZSBleHRlbmRlZCB5ZWFyIGZvcm1hdCAoRVMgMTUuOS4xLjE1
LjEpLgogICAgIGludCBtcyA9IHN0YXRpY19jYXN0PGludD4oZm1vZCh0aGlzRGF0ZU9iai0+aW50
ZXJuYWxOdW1iZXIoKSwgbXNQZXJTZWNvbmQpKTsKICAgICBpZiAobXMgPCAwKQogICAgICAgICBt
cyArPSBtc1BlclNlY29uZDsKKworICAgIGludCBjaGFyYWN0ZXJzV3JpdHRlbjsKICAgICBpZiAo
Z3JlZ29yaWFuRGF0ZVRpbWUtPnllYXIoKSA+IDk5OTkgfHwgZ3JlZ29yaWFuRGF0ZVRpbWUtPnll
YXIoKSA8IDApCi0gICAgICAgIHNucHJpbnRmKGJ1ZmZlciwgc2l6ZW9mKGJ1ZmZlcikgLSAxLCAi
JSswN2QtJTAyZC0lMDJkVCUwMmQ6JTAyZDolMDJkLiUwM2RaIiwgZ3JlZ29yaWFuRGF0ZVRpbWUt
PnllYXIoKSwgZ3JlZ29yaWFuRGF0ZVRpbWUtPm1vbnRoKCkgKyAxLCBncmVnb3JpYW5EYXRlVGlt
ZS0+bW9udGhEYXkoKSwgZ3JlZ29yaWFuRGF0ZVRpbWUtPmhvdXIoKSwgZ3JlZ29yaWFuRGF0ZVRp
bWUtPm1pbnV0ZSgpLCBncmVnb3JpYW5EYXRlVGltZS0+c2Vjb25kKCksIG1zKTsKKyAgICAgICAg
Y2hhcmFjdGVyc1dyaXR0ZW4gPSBzbnByaW50ZihidWZmZXIsIHNpemVvZihidWZmZXIpLCAiJSsw
N2QtJTAyZC0lMDJkVCUwMmQ6JTAyZDolMDJkLiUwM2RaIiwgZ3JlZ29yaWFuRGF0ZVRpbWUtPnll
YXIoKSwgZ3JlZ29yaWFuRGF0ZVRpbWUtPm1vbnRoKCkgKyAxLCBncmVnb3JpYW5EYXRlVGltZS0+
bW9udGhEYXkoKSwgZ3JlZ29yaWFuRGF0ZVRpbWUtPmhvdXIoKSwgZ3JlZ29yaWFuRGF0ZVRpbWUt
Pm1pbnV0ZSgpLCBncmVnb3JpYW5EYXRlVGltZS0+c2Vjb25kKCksIG1zKTsKICAgICBlbHNlCi0g
ICAgICAgIHNucHJpbnRmKGJ1ZmZlciwgc2l6ZW9mKGJ1ZmZlcikgLSAxLCAiJTA0ZC0lMDJkLSUw
MmRUJTAyZDolMDJkOiUwMmQuJTAzZFoiLCBncmVnb3JpYW5EYXRlVGltZS0+eWVhcigpLCBncmVn
b3JpYW5EYXRlVGltZS0+bW9udGgoKSArIDEsIGdyZWdvcmlhbkRhdGVUaW1lLT5tb250aERheSgp
LCBncmVnb3JpYW5EYXRlVGltZS0+aG91cigpLCBncmVnb3JpYW5EYXRlVGltZS0+bWludXRlKCks
IGdyZWdvcmlhbkRhdGVUaW1lLT5zZWNvbmQoKSwgbXMpOwotICAgIGJ1ZmZlcltzaXplb2YoYnVm
ZmVyKSAtIDFdID0gMDsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTm9udHJpdmlhbFN0
cmluZyhleGVjLCBidWZmZXIpKTsKKyAgICAgICAgY2hhcmFjdGVyc1dyaXR0ZW4gPSBzbnByaW50
ZihidWZmZXIsIHNpemVvZihidWZmZXIpLCAiJTA0ZC0lMDJkLSUwMmRUJTAyZDolMDJkOiUwMmQu
JTAzZFoiLCBncmVnb3JpYW5EYXRlVGltZS0+eWVhcigpLCBncmVnb3JpYW5EYXRlVGltZS0+bW9u
dGgoKSArIDEsIGdyZWdvcmlhbkRhdGVUaW1lLT5tb250aERheSgpLCBncmVnb3JpYW5EYXRlVGlt
ZS0+aG91cigpLCBncmVnb3JpYW5EYXRlVGltZS0+bWludXRlKCksIGdyZWdvcmlhbkRhdGVUaW1l
LT5zZWNvbmQoKSwgbXMpOworCisgICAgQVNTRVJUKGNoYXJhY3RlcnNXcml0dGVuID4gMCAmJiBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oY2hhcmFjdGVyc1dyaXR0ZW4pIDwgc2l6ZW9mKGJ1ZmZlcikp
OworICAgIGlmIChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oY2hhcmFjdGVyc1dyaXR0ZW4pID49IHNp
emVvZihidWZmZXIpKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzRW1wdHlTdHJp
bmcoZXhlYykpOworCisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc05vbnRyaXZpYWxTdHJp
bmcoZXhlYywgU3RyaW5nKGJ1ZmZlciwgY2hhcmFjdGVyc1dyaXR0ZW4pKSk7CiB9CiAKIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY1RvRGF0ZVN0cmluZyhFeGVjU3Rh
dGUqIGV4ZWMpCkBAIC0xMTEzLDEzICsxMTE5LDEzIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgZGF0ZVByb3RvRnVuY1RvSlNPTihFeGVjU3RhdGUqIGV4ZWMpCiAgICAgQ2FsbERhdGEg
Y2FsbERhdGE7CiAgICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBnZXRDYWxsRGF0YSh0b0lTT1ZhbHVl
LCBjYWxsRGF0YSk7CiAgICAgaWYgKGNhbGxUeXBlID09IENhbGxUeXBlTm9uZSkKLSAgICAgICAg
cmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgInRvSVNPU3Ry
aW5nIGlzIG5vdCBhIGZ1bmN0aW9uIikpOworICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4
ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoInRvSVNPU3RyaW5nIGlzIG5v
dCBhIGZ1bmN0aW9uIikpKTsKIAogICAgIEpTVmFsdWUgcmVzdWx0ID0gY2FsbChleGVjLCBhc09i
amVjdCh0b0lTT1ZhbHVlKSwgY2FsbFR5cGUsIGNhbGxEYXRhLCBvYmplY3QsIGV4ZWMtPmVtcHR5
TGlzdCgpKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNOdWxsKCkpOwogICAgIGlmIChyZXN1bHQuaXNPYmplY3QoKSkKLSAg
ICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgInRv
SVNPU3RyaW5nIGRpZCBub3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlIikpOworICAgICAgICBy
ZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVy
YWwoInRvSVNPU3RyaW5nIGRpZCBub3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlIikpKTsKICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0Vycm9yLmNwcAppbmRleCAwYTUyMmM0ZmQwMDNkYWQwNjY0OGE4ZDEzOWFjYWZj
MDRmZTViN2MwLi4yN2E3MjlkMGFhZGRhOGZiODQyNjJhYTc0YmM1ZGI1MmEyMDBmYWE3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvci5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3IuY3BwCkBAIC04MSw3ICs4MSw3IEBAIEpT
T2JqZWN0KiBjcmVhdGVUeXBlRXJyb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29u
c3QgU3RyaW5nJiBtZXNzYWdlKQogCiBKU09iamVjdCogY3JlYXRlTm90RW5vdWdoQXJndW1lbnRz
RXJyb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKIHsKLSAgICByZXR1cm4gY3JlYXRl
VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgIk5vdCBlbm91Z2ggYXJndW1lbnRzIik7CisgICAgcmV0
dXJuIGNyZWF0ZVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIEFTQ0lJTGl0ZXJhbCgiTm90IGVub3Vn
aCBhcmd1bWVudHMiKSk7CiB9CiAKIEpTT2JqZWN0KiBjcmVhdGVVUklFcnJvcihKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCkBAIC0xNjksMTIgKzE2
OSwxMiBAQCBKU09iamVjdCogdGhyb3dFcnJvcihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBl
cnJvcikKIAogSlNPYmplY3QqIHRocm93VHlwZUVycm9yKEV4ZWNTdGF0ZSogZXhlYykKIHsKLSAg
ICByZXR1cm4gdGhyb3dFcnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgIlR5cGUgZXJy
b3IiKSk7CisgICAgcmV0dXJuIHRocm93RXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMs
IEFTQ0lJTGl0ZXJhbCgiVHlwZSBlcnJvciIpKSk7CiB9CiAKIEpTT2JqZWN0KiB0aHJvd1N5bnRh
eEVycm9yKEV4ZWNTdGF0ZSogZXhlYykKIHsKLSAgICByZXR1cm4gdGhyb3dFcnJvcihleGVjLCBj
cmVhdGVTeW50YXhFcnJvcihleGVjLCAiU3ludGF4IGVycm9yIikpOworICAgIHJldHVybiB0aHJv
d0Vycm9yKGV4ZWMsIGNyZWF0ZVN5bnRheEVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiU3ludGF4
IGVycm9yIikpKTsKIH0KIAogQVNTRVJUX0NMQVNTX0ZJVFNfSU5fQ0VMTChTdHJpY3RNb2RlVHlw
ZUVycm9yRnVuY3Rpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRXJyb3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yLmgKaW5kZXgg
YmM3MWY3MGIxOTA1ZTRhM2Y4ODRmNzllNTQ3NmVmMjA1ZmZmNmM1My4uOWMzNGEwNTc0Njk3MjMw
NDQ5Y2VjZDJmNDQyYjU4ZDkwMDRjOTZhYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRXJyb3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9F
cnJvci5oCkBAIC04OSw3ICs4OSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBzdGF0aWMg
U3RyaWN0TW9kZVR5cGVFcnJvckZ1bmN0aW9uKiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgU3Ry
aW5nJiBtZXNzYWdlKQogICAgICAgICB7CiAgICAgICAgICAgICBTdHJpY3RNb2RlVHlwZUVycm9y
RnVuY3Rpb24qIGZ1bmN0aW9uID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8U3RyaWN0TW9k
ZVR5cGVFcnJvckZ1bmN0aW9uPigqZXhlYy0+aGVhcCgpKSkgU3RyaWN0TW9kZVR5cGVFcnJvckZ1
bmN0aW9uKGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBtZXNzYWdlKTsKLSAgICAgICAgICAgIGZ1
bmN0aW9uLT5maW5pc2hDcmVhdGlvbihleGVjLT5nbG9iYWxEYXRhKCksICIiKTsKKyAgICAgICAg
ICAgIGZ1bmN0aW9uLT5maW5pc2hDcmVhdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIFN0cmluZygp
KTsKICAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbjsKICAgICAgICAgfQogICAgIApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JQcm90b3R5cGUuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JQcm90b3R5cGUuY3BwCmluZGV4IDM1
NGEzMTIxYTRiODdhMzY0MDRiOWQ3YzlmZWMyYzQ0MTRjMjcwZjIuLjZjOWQ2ZGYwNGQzN2Q0YWVh
NjcxMGRmN2Y0NjY5ZGMxOWEyOTlhMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0Vycm9yUHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9FcnJvclByb3RvdHlwZS5jcHAKQEAgLTU5LDcgKzU5LDcgQEAgdm9pZCBFcnJvclBy
b3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCop
CiB7CiAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCAiIik7CiAg
ICAgQVNTRVJUKGluaGVyaXRzKCZzX2luZm8pKTsKLSAgICBwdXREaXJlY3QoZXhlYy0+Z2xvYmFs
RGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubmFtZSwganNOb250cml2aWFsU3RyaW5nKGV4
ZWMsICJFcnJvciIpLCBEb250RW51bSk7CisgICAgcHV0RGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEo
KSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLm5hbWUsIGpzTm9udHJpdmlhbFN0cmluZyhleGVjLCBT
dHJpbmcoQVNDSUlMaXRlcmFsKCJFcnJvciIpKSksIERvbnRFbnVtKTsKIH0KIAogYm9vbCBFcnJv
clByb3RvdHlwZTo6Z2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBl
eGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QgJnNsb3QpCkBAIC05
OCw3ICs5OCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZXJyb3JQcm90b0Z1bmNU
b1N0cmluZyhFeGVjU3RhdGUqIGV4ZWMpCiAgICAgLy8gNC4gSWYgbmFtZSBpcyB1bmRlZmluZWQs
IHRoZW4gbGV0IG5hbWUgYmUgIkVycm9yIjsgZWxzZSBsZXQgbmFtZSBiZSBUb1N0cmluZyhuYW1l
KS4KICAgICBTdHJpbmcgbmFtZVN0cmluZzsKICAgICBpZiAobmFtZS5pc1VuZGVmaW5lZCgpKQot
ICAgICAgICBuYW1lU3RyaW5nID0gIkVycm9yIjsKKyAgICAgICAgbmFtZVN0cmluZyA9IEFTQ0lJ
TGl0ZXJhbCgiRXJyb3IiKTsKICAgICBlbHNlIHsKICAgICAgICAgbmFtZVN0cmluZyA9IG5hbWUu
dG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOwogICAgICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0
aW9uKCkpCkBAIC0xMTUsNyArMTE1LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBl
cnJvclByb3RvRnVuY1RvU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYykKICAgICAvLyA3LiBJZiBtc2cg
aXMgdW5kZWZpbmVkLCB0aGVuIGxldCBtc2cgYmUgdGhlIGVtcHR5IFN0cmluZzsgZWxzZSBsZXQg
bXNnIGJlIFRvU3RyaW5nKG1zZykuCiAgICAgU3RyaW5nIG1lc3NhZ2VTdHJpbmc7CiAgICAgaWYg
KG1lc3NhZ2UuaXNVbmRlZmluZWQoKSkKLSAgICAgICAgbWVzc2FnZVN0cmluZyA9ICIiOworICAg
ICAgICBtZXNzYWdlU3RyaW5nID0gU3RyaW5nKCk7CiAgICAgZWxzZSB7CiAgICAgICAgIG1lc3Nh
Z2VTdHJpbmcgPSBtZXNzYWdlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKICAgICAgICAg
aWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmNwcAppbmRleCA4M2E0ZTAzYzNiM2I3MDQzNTM0OTlj
NGNjNzNmMjFiYTRiZmFjYTk0Li43NzFlZGNlMTJiZTFmYzg1NzdiMDIwYWUyMGNhMWI0Y2ZhNGRj
NzQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25I
ZWxwZXJzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25I
ZWxwZXJzLmNwcApAQCAtNDcsNyArNDcsNyBAQCBjb25zdCBDbGFzc0luZm8gSW50ZXJydXB0ZWRF
eGVjdXRpb25FcnJvcjo6c19pbmZvID0geyAiSW50ZXJydXB0ZWRFeGVjdXRpb25FcnJvcgogSlNW
YWx1ZSBJbnRlcnJ1cHRlZEV4ZWN1dGlvbkVycm9yOjpkZWZhdWx0VmFsdWUoY29uc3QgSlNPYmpl
Y3QqLCBFeGVjU3RhdGUqIGV4ZWMsIFByZWZlcnJlZFByaW1pdGl2ZVR5cGUgaGludCkKIHsKICAg
ICBpZiAoaGludCA9PSBQcmVmZXJTdHJpbmcpCi0gICAgICAgIHJldHVybiBqc05vbnRyaXZpYWxT
dHJpbmcoZXhlYywgIkphdmFTY3JpcHQgZXhlY3V0aW9uIGV4Y2VlZGVkIHRpbWVvdXQuIik7Cisg
ICAgICAgIHJldHVybiBqc05vbnRyaXZpYWxTdHJpbmcoZXhlYywgU3RyaW5nKEFTQ0lJTGl0ZXJh
bCgiSmF2YVNjcmlwdCBleGVjdXRpb24gZXhjZWVkZWQgdGltZW91dC4iKSkpOwogICAgIHJldHVy
biBKU1ZhbHVlKHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6cXVpZXRfTmFOKCkpOwogfQog
CkBAIC03NCw3ICs3NCw3IEBAIGNvbnN0IENsYXNzSW5mbyBUZXJtaW5hdGVkRXhlY3V0aW9uRXJy
b3I6OnNfaW5mbyA9IHsgIlRlcm1pbmF0ZWRFeGVjdXRpb25FcnJvciIsCiBKU1ZhbHVlIFRlcm1p
bmF0ZWRFeGVjdXRpb25FcnJvcjo6ZGVmYXVsdFZhbHVlKGNvbnN0IEpTT2JqZWN0KiwgRXhlY1N0
YXRlKiBleGVjLCBQcmVmZXJyZWRQcmltaXRpdmVUeXBlIGhpbnQpCiB7CiAgICAgaWYgKGhpbnQg
PT0gUHJlZmVyU3RyaW5nKQotICAgICAgICByZXR1cm4ganNOb250cml2aWFsU3RyaW5nKGV4ZWMs
ICJKYXZhU2NyaXB0IGV4ZWN1dGlvbiB0ZXJtaW5hdGVkLiIpOworICAgICAgICByZXR1cm4ganNO
b250cml2aWFsU3RyaW5nKGV4ZWMsIFN0cmluZyhBU0NJSUxpdGVyYWwoIkphdmFTY3JpcHQgZXhl
Y3V0aW9uIHRlcm1pbmF0ZWQuIikpKTsKICAgICByZXR1cm4gSlNWYWx1ZShzdGQ6Om51bWVyaWNf
bGltaXRzPGRvdWJsZT46OnF1aWV0X05hTigpKTsKIH0KIApAQCAtOTYsMTIgKzk2LDEyIEBAIGJv
b2wgaXNUZXJtaW5hdGVkRXhlY3V0aW9uRXhjZXB0aW9uKEpTVmFsdWUgdmFsdWUpCiAKIEpTT2Jq
ZWN0KiBjcmVhdGVTdGFja092ZXJmbG93RXJyb3IoRXhlY1N0YXRlKiBleGVjKQogewotICAgIHJl
dHVybiBjcmVhdGVSYW5nZUVycm9yKGV4ZWMsICJNYXhpbXVtIGNhbGwgc3RhY2sgc2l6ZSBleGNl
ZWRlZC4iKTsKKyAgICByZXR1cm4gY3JlYXRlUmFuZ2VFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwo
Ik1heGltdW0gY2FsbCBzdGFjayBzaXplIGV4Y2VlZGVkLiIpKTsKIH0KIAogSlNPYmplY3QqIGNy
ZWF0ZVN0YWNrT3ZlcmZsb3dFcnJvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogewot
ICAgIHJldHVybiBjcmVhdGVSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgIk1heGltdW0gY2FsbCBz
dGFjayBzaXplIGV4Y2VlZGVkLiIpOworICAgIHJldHVybiBjcmVhdGVSYW5nZUVycm9yKGdsb2Jh
bE9iamVjdCwgQVNDSUlMaXRlcmFsKCJNYXhpbXVtIGNhbGwgc3RhY2sgc2l6ZSBleGNlZWRlZC4i
KSk7CiB9CiAKIEpTT2JqZWN0KiBjcmVhdGVVbmRlZmluZWRWYXJpYWJsZUVycm9yKEV4ZWNTdGF0
ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgaWRlbnQpCkBAIC0xNTMsNyArMTUzLDcgQEAgSlNP
YmplY3QqIGNyZWF0ZUVycm9yRm9ySW52YWxpZEdsb2JhbEFzc2lnbm1lbnQoRXhlY1N0YXRlKiBl
eGVjLCBjb25zdCBTdHJpbmcmIHAKIAogSlNPYmplY3QqIGNyZWF0ZU91dE9mTWVtb3J5RXJyb3Io
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKIHsKLSAgICByZXR1cm4gY3JlYXRlRXJyb3Io
Z2xvYmFsT2JqZWN0LCAiT3V0IG9mIG1lbW9yeSIpOworICAgIHJldHVybiBjcmVhdGVFcnJvcihn
bG9iYWxPYmplY3QsIEFTQ0lJTGl0ZXJhbCgiT3V0IG9mIG1lbW9yeSIpKTsKIH0KIAogSlNPYmpl
Y3QqIHRocm93T3V0T2ZNZW1vcnlFcnJvcihFeGVjU3RhdGUqIGV4ZWMpCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuY3BwCmluZGV4IDFlOTAxNDdmNmE2N2JmNDRl
OWJjZWYxN2FjYzYxMzM0MWMzMmNhOGEuLjc3YzI3NDkwMzVhNjk0MDk5ODQyNjJlZDY4ZDAzM2Q4
NDNiOTQ2Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1
dGFibGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUu
Y3BwCkBAIC0yMDksNyArMjA5LDcgQEAgSlNPYmplY3QqIEV2YWxFeGVjdXRhYmxlOjpjb21waWxl
SW50ZXJuYWwoRXhlY1N0YXRlKiBleGVjLCBKU1Njb3BlKiBzY29wZSwgSklUQ28KICAgICAgICAg
bV9ldmFsQ29kZUJsb2NrID0gbmV3Q29kZUJsb2NrLnJlbGVhc2UoKTsKICAgICB9IGVsc2Ugewog
ICAgICAgICBpZiAoIWxleGljYWxHbG9iYWxPYmplY3QtPmV2YWxFbmFibGVkKCkpCi0gICAgICAg
ICAgICByZXR1cm4gdGhyb3dFcnJvcihleGVjLCBjcmVhdGVFdmFsRXJyb3IoZXhlYywgIkV2YWwg
aXMgZGlzYWJsZWQiKSk7CisgICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihleGVjLCBjcmVh
dGVFdmFsRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJFdmFsIGlzIGRpc2FibGVkIikpKTsKICAg
ICAgICAgUmVmUHRyPEV2YWxOb2RlPiBldmFsTm9kZSA9IHBhcnNlPEV2YWxOb2RlPihnbG9iYWxE
YXRhLCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBtX3NvdXJjZSwgMCwgaXNTdHJpY3RNb2RlKCkgPyBK
U1BhcnNlU3RyaWN0IDogSlNQYXJzZU5vcm1hbCwgRXZhbE5vZGU6OmlzRnVuY3Rpb25Ob2RlID8g
SlNQYXJzZUZ1bmN0aW9uQ29kZSA6IEpTUGFyc2VQcm9ncmFtQ29kZSwgbGV4aWNhbEdsb2JhbE9i
amVjdC0+ZGVidWdnZXIoKSwgZXhlYywgJmV4Y2VwdGlvbik7CiAgICAgICAgIGlmICghZXZhbE5v
ZGUpIHsKICAgICAgICAgICAgIEFTU0VSVChleGNlcHRpb24pOwpAQCAtNjc1LDcgKzY3NSw3IEBA
IFN0cmluZyBGdW5jdGlvbkV4ZWN1dGFibGU6OnBhcmFtU3RyaW5nKCkgY29uc3QKICAgICBTdHJp
bmdCdWlsZGVyIGJ1aWxkZXI7CiAgICAgZm9yIChzaXplX3QgcG9zID0gMDsgcG9zIDwgcGFyYW1l
dGVycy5zaXplKCk7ICsrcG9zKSB7CiAgICAgICAgIGlmICghYnVpbGRlci5pc0VtcHR5KCkpCi0g
ICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgiLCAiKTsKKyAgICAgICAgICAgIGJ1aWxkZXIuYXBw
ZW5kTGl0ZXJhbCgiLCAiKTsKICAgICAgICAgYnVpbGRlci5hcHBlbmQocGFyYW1ldGVyc1twb3Nd
LnVzdHJpbmcoKSk7CiAgICAgfQogICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9y
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3Iu
Y3BwCmluZGV4IDA0MTFhMGM1MDhhMWU3NjA1NWIxN2Y2NDRkN2Y4ODc3OGY1MWE4NDQuLjQwNTA3
ZGFlMTY2YmU3MTYxMTdlOGRmMTNiOWFjYzNhNjAzOTQ0NWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuY3BwCkBAIC04Miw3
ICs4Miw3IEBAIENhbGxUeXBlIEZ1bmN0aW9uQ29uc3RydWN0b3I6OmdldENhbGxEYXRhKEpTQ2Vs
bCosIENhbGxEYXRhJiBjYWxsRGF0YSkKIEpTT2JqZWN0KiBjb25zdHJ1Y3RGdW5jdGlvbihFeGVj
U3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IEFyZ0xpc3Qm
IGFyZ3MsIGNvbnN0IElkZW50aWZpZXImIGZ1bmN0aW9uTmFtZSwgY29uc3QgU3RyaW5nJiBzb3Vy
Y2VVUkwsIGNvbnN0IFRleHRQb3NpdGlvbiYgcG9zaXRpb24pCiB7CiAgICAgaWYgKCFnbG9iYWxP
YmplY3QtPmV2YWxFbmFibGVkKCkpCi0gICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGV4ZWMsIGNy
ZWF0ZUV2YWxFcnJvcihleGVjLCAiRnVuY3Rpb24gY29uc3RydWN0b3IgaXMgZGlzYWJsZWQiKSk7
CisgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGV4ZWMsIGNyZWF0ZUV2YWxFcnJvcihleGVjLCBB
U0NJSUxpdGVyYWwoIkZ1bmN0aW9uIGNvbnN0cnVjdG9yIGlzIGRpc2FibGVkIikpKTsKICAgICBy
ZXR1cm4gY29uc3RydWN0RnVuY3Rpb25Ta2lwcGluZ0V2YWxFbmFibGVkQ2hlY2soZXhlYywgZ2xv
YmFsT2JqZWN0LCBhcmdzLCBmdW5jdGlvbk5hbWUsIHNvdXJjZVVSTCwgcG9zaXRpb24pOwogfQog
CkBAIC05MywyMCArOTMsMjAgQEAgSlNPYmplY3QqIGNvbnN0cnVjdEZ1bmN0aW9uU2tpcHBpbmdF
dmFsRW5hYmxlZENoZWNrKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmoKICAgICAvLyBXZSBh
bHNvIG5lZWQgXG4gYmVmb3JlIHRoZSBjbG9zaW5nIH0gdG8gaGFuZGxlIC8vIGNvbW1lbnRzIGF0
IHRoZSBlbmQgb2YgdGhlIGxhc3QgbGluZQogICAgIFN0cmluZyBwcm9ncmFtOwogICAgIGlmIChh
cmdzLmlzRW1wdHkoKSkKLSAgICAgICAgcHJvZ3JhbSA9ICIoZnVuY3Rpb24oKSB7IFxufSkiOwor
ICAgICAgICBwcm9ncmFtID0gQVNDSUlMaXRlcmFsKCIoZnVuY3Rpb24oKSB7IFxufSkiKTsKICAg
ICBlbHNlIGlmIChhcmdzLnNpemUoKSA9PSAxKQogICAgICAgICBwcm9ncmFtID0gbWFrZVN0cmlu
ZygiKGZ1bmN0aW9uKCkgeyAiLCBhcmdzLmF0KDApLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVj
KSwgIlxufSkiKTsKICAgICBlbHNlIHsKICAgICAgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwot
ICAgICAgICBidWlsZGVyLmFwcGVuZCgiKGZ1bmN0aW9uKCIpOworICAgICAgICBidWlsZGVyLmFw
cGVuZExpdGVyYWwoIihmdW5jdGlvbigiKTsKICAgICAgICAgYnVpbGRlci5hcHBlbmQoYXJncy5h
dCgwKS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpOwogICAgICAgICBmb3IgKHNpemVfdCBp
ID0gMTsgaSA8IGFyZ3Muc2l6ZSgpIC0gMTsgaSsrKSB7Ci0gICAgICAgICAgICBidWlsZGVyLmFw
cGVuZCgiLCIpOworICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoJywnKTsKICAgICAgICAgICAg
IGJ1aWxkZXIuYXBwZW5kKGFyZ3MuYXQoaSkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpKTsK
ICAgICAgICAgfQotICAgICAgICBidWlsZGVyLmFwcGVuZCgiKSB7ICIpOworICAgICAgICBidWls
ZGVyLmFwcGVuZExpdGVyYWwoIikgeyAiKTsKICAgICAgICAgYnVpbGRlci5hcHBlbmQoYXJncy5h
dChhcmdzLnNpemUoKSAtIDEpLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSk7Ci0gICAgICAg
IGJ1aWxkZXIuYXBwZW5kKCJcbn0pIik7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgi
XG59KSIpOwogICAgICAgICBwcm9ncmFtID0gYnVpbGRlci50b1N0cmluZygpOwogICAgIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Qcm90b3R5
cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmgK
aW5kZXggOWZmZWJmN2E5ZWRkNTA3ZDYyM2NlZTM2YTBlMzU2OTMzYTg1MjUzMy4uMDdmMzgxMzA2
M2YwMjRiZWY0OGQ1ZDIzMzE5MDNjNzc1MTA3NGM0YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5oCkBAIC0zMiw3ICszMiw3IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICBzdGF0aWMgRnVuY3Rpb25Qcm90b3R5cGUqIGNyZWF0ZShF
eGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSog
c3RydWN0dXJlKQogICAgICAgICB7CiAgICAgICAgICAgICBGdW5jdGlvblByb3RvdHlwZSogcHJv
dG90eXBlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8RnVuY3Rpb25Qcm90b3R5cGU+KCpl
eGVjLT5oZWFwKCkpKSBGdW5jdGlvblByb3RvdHlwZShnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSk7
Ci0gICAgICAgICAgICBwcm90b3R5cGUtPmZpbmlzaENyZWF0aW9uKGV4ZWMsICIiKTsKKyAgICAg
ICAgICAgIHByb3RvdHlwZS0+ZmluaXNoQ3JlYXRpb24oZXhlYywgU3RyaW5nKCkpOwogICAgICAg
ICAgICAgcmV0dXJuIHByb3RvdHlwZTsKICAgICAgICAgfQogICAgICAgICAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGVybmFsRnVuY3Rpb24uY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5jcHAKaW5kZXggMjE2
ZGNlMzc5NTVmZDQ3NzllNWE1ZDQ5N2E0MDUyZjE3N2UzNTZhZi4uZTJkZTAzZDkyOTYwZTQ4YzQy
YzhhOGFlZTkyNTk3NTFiYmJiYTJkYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5jcHAKQEAgLTQ0LDcgKzQ0LDcgQEAgdm9pZCBJbnRl
cm5hbEZ1bmN0aW9uOjpmaW5pc2hDcmVhdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGNv
bnN0IFN0cmluZyYgbmEKICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbihnbG9iYWxEYXRhKTsKICAg
ICBBU1NFUlQoaW5oZXJpdHMoJnNfaW5mbykpOwogICAgIEFTU0VSVChtZXRob2RUYWJsZSgpLT5n
ZXRDYWxsRGF0YSAhPSBJbnRlcm5hbEZ1bmN0aW9uOjpzX2luZm8ubWV0aG9kVGFibGUuZ2V0Q2Fs
bERhdGEpOwotICAgIHB1dERpcmVjdChnbG9iYWxEYXRhLCBnbG9iYWxEYXRhLnByb3BlcnR5TmFt
ZXMtPm5hbWUsIGpzU3RyaW5nKCZnbG9iYWxEYXRhLCBuYW1lLmlzTnVsbCgpID8gIiIgOiBuYW1l
KSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0pOworICAgIHB1dERpcmVjdChnbG9i
YWxEYXRhLCBnbG9iYWxEYXRhLnByb3BlcnR5TmFtZXMtPm5hbWUsIGpzU3RyaW5nKCZnbG9iYWxE
YXRhLCBuYW1lKSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0pOwogfQogCiBjb25z
dCBTdHJpbmcmIEludGVybmFsRnVuY3Rpb246Om5hbWUoRXhlY1N0YXRlKiBleGVjKQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNwcAppbmRleCAzYzBiNDMyMGY1YTg4N2Q4
MDczMDYzYjQ5N2IwNDIzYjMyMGUyYTI4Li44ZTE2MDZmZDgyOTAxNGQ1YTBjY2YwYWVmMzRhYTUx
ZGFmOTBkZTcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Fy
cmF5LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNwcApA
QCAtMTEzLDcgKzExMyw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBpc0RlbnNlRW5vdWdoRm9yVmVj
dG9yKHVuc2lnbmVkIGxlbmd0aCwgdW5zaWduZWQgbnVtVmFsdWVzKQogc3RhdGljIGJvb2wgcmVq
ZWN0KEV4ZWNTdGF0ZSogZXhlYywgYm9vbCB0aHJvd0V4Y2VwdGlvbiwgY29uc3QgY2hhciogbWVz
c2FnZSkKIHsKICAgICBpZiAodGhyb3dFeGNlcHRpb24pCi0gICAgICAgIHRocm93VHlwZUVycm9y
KGV4ZWMsIG1lc3NhZ2UpOworICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVy
YWwobWVzc2FnZSkpOwogICAgIHJldHVybiBmYWxzZTsKIH0KIApAQCAtMjEyLDE0ICsyMTIsMTQg
QEAgaW5saW5lIHZvaWQgU3BhcnNlQXJyYXlWYWx1ZU1hcDo6cHV0KEV4ZWNTdGF0ZSogZXhlYywg
SlNBcnJheSogYXJyYXksIHVuc2lnbmVkIGkKICAgICBpZiAocmVzdWx0LmlzTmV3RW50cnkgJiYg
IWFycmF5LT5pc0V4dGVuc2libGUoKSkgewogICAgICAgICByZW1vdmUocmVzdWx0Lml0ZXJhdG9y
KTsKICAgICAgICAgaWYgKHNob3VsZFRocm93KQotICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3Io
ZXhlYywgU3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKTsKKyAgICAgICAgICAg
IHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbChTdHJpY3RNb2RlUmVhZG9ubHlQcm9w
ZXJ0eVdyaXRlRXJyb3IpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGlmICghKGVu
dHJ5LmF0dHJpYnV0ZXMgJiBBY2Nlc3NvcikpIHsKICAgICAgICAgaWYgKGVudHJ5LmF0dHJpYnV0
ZXMgJiBSZWFkT25seSkgewogICAgICAgICAgICAgaWYgKHNob3VsZFRocm93KQotICAgICAgICAg
ICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIFN0cmljdE1vZGVSZWFkb25seVByb3BlcnR5V3Jp
dGVFcnJvcik7CisgICAgICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRl
cmFsKFN0cmljdE1vZGVSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcikpOwogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICB9CiAKQEAgLTIzMyw3ICsyMzMsNyBAQCBpbmxpbmUgdm9pZCBTcGFy
c2VBcnJheVZhbHVlTWFwOjpwdXQoRXhlY1N0YXRlKiBleGVjLCBKU0FycmF5KiBhcnJheSwgdW5z
aWduZWQgaQogICAgIAogICAgIGlmICghc2V0dGVyKSB7CiAgICAgICAgIGlmIChzaG91bGRUaHJv
dykKLSAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIFN0cmljdE1vZGVSZWFkb25seVBy
b3BlcnR5V3JpdGVFcnJvcik7CisgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJ
SUxpdGVyYWwoU3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKSk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKQEAgLTcyMyw3ICs3MjMsNyBAQCB2b2lkIEpTQXJyYXk6OnB1dChK
U0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwg
SlNWYQogICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLmxlbmd0
aCkgewogICAgICAgICB1bnNpZ25lZCBuZXdMZW5ndGggPSB2YWx1ZS50b1VJbnQzMihleGVjKTsK
ICAgICAgICAgaWYgKHZhbHVlLnRvTnVtYmVyKGV4ZWMpICE9IHN0YXRpY19jYXN0PGRvdWJsZT4o
bmV3TGVuZ3RoKSkgewotICAgICAgICAgICAgdGhyb3dFcnJvcihleGVjLCBjcmVhdGVSYW5nZUVy
cm9yKGV4ZWMsICJJbnZhbGlkIGFycmF5IGxlbmd0aCIpKTsKKyAgICAgICAgICAgIHRocm93RXJy
b3IoZXhlYywgY3JlYXRlUmFuZ2VFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkludmFsaWQgYXJy
YXkgbGVuZ3RoIikpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICB0
aGlzT2JqZWN0LT5zZXRMZW5ndGgoZXhlYywgbmV3TGVuZ3RoLCBzbG90LmlzU3RyaWN0TW9kZSgp
KTsKQEAgLTgxMSw3ICs4MTEsNyBAQCB2b2lkIEpTQXJyYXk6OnB1dEJ5SW5kZXhCZXlvbmRWZWN0
b3JMZW5ndGgoRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBpLCBKU1ZhbHVlCiAgICAgICAgIC8v
IFByb2hpYml0IGdyb3dpbmcgdGhlIGFycmF5IGlmIGxlbmd0aCBpcyBub3Qgd3JpdGFibGUuCiAg
ICAgICAgIGlmIChtYXAtPmxlbmd0aElzUmVhZE9ubHkoKSB8fCAhaXNFeHRlbnNpYmxlKCkpIHsK
ICAgICAgICAgICAgIGlmIChzaG91bGRUaHJvdykKLSAgICAgICAgICAgICAgICB0aHJvd1R5cGVF
cnJvcihleGVjLCBTdHJpY3RNb2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpOworICAgICAg
ICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbChTdHJpY3RNb2RlUmVh
ZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
fQogICAgICAgICBsZW5ndGggPSBpICsgMTsKQEAgLTEyMzYsNyArMTIzNiw3IEBAIEpTVmFsdWUg
SlNBcnJheTo6cG9wKEV4ZWNTdGF0ZSogZXhlYykKICAgICB1bnNpZ25lZCBsZW5ndGggPSBzdG9y
YWdlLT5tX2xlbmd0aDsKICAgICBpZiAoIWxlbmd0aCkgewogICAgICAgICBpZiAoIWlzTGVuZ3Ro
V3JpdGFibGUoKSkKLSAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIFN0cmljdE1vZGVS
ZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcik7CisgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihl
eGVjLCBBU0NJSUxpdGVyYWwoU3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKSk7
CiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogICAgIH0KIApAQCAtMTI2MSw3ICsxMjYx
LDcgQEAgSlNWYWx1ZSBKU0FycmF5Ojpwb3AoRXhlY1N0YXRlKiBleGVjKQogICAgICAgICByZXR1
cm4ganNVbmRlZmluZWQoKTsKICAgICAvLyBDYWxsIHRoZSBbW0RlbGV0ZV1dIGludGVybmFsIG1l
dGhvZCBvZiBPIHdpdGggYXJndW1lbnRzIGluZHggYW5kIHRydWUuCiAgICAgaWYgKCFkZWxldGVQ
cm9wZXJ0eUJ5SW5kZXgodGhpcywgZXhlYywgaW5kZXgpKSB7Ci0gICAgICAgIHRocm93VHlwZUVy
cm9yKGV4ZWMsICJVbmFibGUgdG8gZGVsZXRlIHByb3BlcnR5LiIpOworICAgICAgICB0aHJvd1R5
cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlVuYWJsZSB0byBkZWxldGUgcHJvcGVydHkuIikp
OwogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKICAgICB9CiAgICAgLy8gQ2FsbCB0aGUg
W1tQdXRdXSBpbnRlcm5hbCBtZXRob2Qgb2YgTyB3aXRoIGFyZ3VtZW50cyAibGVuZ3RoIiwgaW5k
eCwgYW5kIHRydWUuCkBAIC0xMjk0LDcgKzEyOTQsNyBAQCB2b2lkIEpTQXJyYXk6OnB1c2goRXhl
Y1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVlKQogICAgICAgICBtZXRob2RUYWJsZSgpLT5wdXRC
eUluZGV4KHRoaXMsIGV4ZWMsIHN0b3JhZ2UtPm1fbGVuZ3RoLCB2YWx1ZSwgdHJ1ZSk7CiAgICAg
ICAgIC8vIFBlciBFUzUuMSAxNS40LjQuNyBzdGVwIDYgJiAxNS40LjUuMSBzdGVwIDMuZC4KICAg
ICAgICAgaWYgKCFleGVjLT5oYWRFeGNlcHRpb24oKSkKLSAgICAgICAgICAgIHRocm93RXJyb3Io
ZXhlYywgY3JlYXRlUmFuZ2VFcnJvcihleGVjLCAiSW52YWxpZCBhcnJheSBsZW5ndGgiKSk7Cisg
ICAgICAgICAgICB0aHJvd0Vycm9yKGV4ZWMsIGNyZWF0ZVJhbmdlRXJyb3IoZXhlYywgQVNDSUlM
aXRlcmFsKCJJbnZhbGlkIGFycmF5IGxlbmd0aCIpKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24u
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAKaW5kZXgg
NGRkM2YwNWRkNTI0N2VlNTE1Y2JmMzg3ZjUzMDdlOGU1NWQ0NDMxYy4uOWQ4NDNjNzc0YWIyZjdh
Yzc5NDEzYjZhY2RlMmQ1Nzk4ZjFjMmEzMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNGdW5jdGlvbi5jcHAKQEAgLTk2LDcgKzk2LDcgQEAgdm9pZCBKU0Z1bmN0aW9uOjpm
aW5pc2hDcmVhdGlvbihFeGVjU3RhdGUqIGV4ZWMsIE5hdGl2ZUV4ZWN1dGFibGUqIGV4ZWN1dGFi
bGUsIGkKICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbihleGVjLT5nbG9iYWxEYXRhKCkpOwogICAg
IEFTU0VSVChpbmhlcml0cygmc19pbmZvKSk7CiAgICAgbV9leGVjdXRhYmxlLnNldChleGVjLT5n
bG9iYWxEYXRhKCksIHRoaXMsIGV4ZWN1dGFibGUpOwotICAgIHB1dERpcmVjdChleGVjLT5nbG9i
YWxEYXRhKCksIGV4ZWMtPmdsb2JhbERhdGEoKS5wcm9wZXJ0eU5hbWVzLT5uYW1lLCBqc1N0cmlu
ZyhleGVjLCBuYW1lLmlzTnVsbCgpID8gIiIgOiBuYW1lKSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5
IHwgRG9udEVudW0pOworICAgIHB1dERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPmds
b2JhbERhdGEoKS5wcm9wZXJ0eU5hbWVzLT5uYW1lLCBqc1N0cmluZyhleGVjLCBuYW1lKSwgRG9u
dERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0pOwogICAgIHB1dERpcmVjdChleGVjLT5nbG9i
YWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgsIGpzTnVtYmVyKGxlbmd0aCks
IERvbnREZWxldGUgfCBSZWFkT25seSB8IERvbnRFbnVtKTsKIH0KIApAQCAtMjAzLDcgKzIwMyw3
IEBAIEpTVmFsdWUgSlNGdW5jdGlvbjo6Y2FsbGVyR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNW
YWx1ZSBzbG90QmFzZSwgUHJvcGVydHlOYW1lCiAgICAgSlNGdW5jdGlvbiogZnVuY3Rpb24gPSBq
c0Nhc3Q8SlNGdW5jdGlvbio+KGNhbGxlcik7CiAgICAgaWYgKGZ1bmN0aW9uLT5pc0hvc3RGdW5j
dGlvbigpIHx8ICFmdW5jdGlvbi0+anNFeGVjdXRhYmxlKCktPmlzU3RyaWN0TW9kZSgpKQogICAg
ICAgICByZXR1cm4gY2FsbGVyOwotICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihleGVjLCAiRnVu
Y3Rpb24uY2FsbGVyIHVzZWQgdG8gcmV0cmlldmUgc3RyaWN0IGNhbGxlciIpOworICAgIHJldHVy
biB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkZ1bmN0aW9uLmNhbGxlciB1c2Vk
IHRvIHJldHJpZXZlIHN0cmljdCBjYWxsZXIiKSk7CiB9CiAKIEpTVmFsdWUgSlNGdW5jdGlvbjo6
bGVuZ3RoR2V0dGVyKEV4ZWNTdGF0ZSosIEpTVmFsdWUgc2xvdEJhc2UsIFByb3BlcnR5TmFtZSkK
QEAgLTQxNCwyNyArNDE0LDI3IEBAIGJvb2wgSlNGdW5jdGlvbjo6ZGVmaW5lT3duUHJvcGVydHko
SlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hCiAgICAgIAogICAg
IGlmIChkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZVByZXNlbnQoKSAmJiBkZXNjcmlwdG9yLmNvbmZp
Z3VyYWJsZSgpKSB7CiAgICAgICAgIGlmICh0aHJvd0V4Y2VwdGlvbikKLSAgICAgICAgICAgIHRo
cm93RXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsICJBdHRlbXB0aW5nIHRvIGNvbmZp
Z3VyYWJsZSBhdHRyaWJ1dGUgb2YgdW5jb25maWd1cmFibGUgcHJvcGVydHkuIikpOworICAgICAg
ICAgICAgdGhyb3dFcnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFs
KCJBdHRlbXB0aW5nIHRvIGNvbmZpZ3VyYWJsZSBhdHRyaWJ1dGUgb2YgdW5jb25maWd1cmFibGUg
cHJvcGVydHkuIikpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICBpZiAoZGVz
Y3JpcHRvci5lbnVtZXJhYmxlUHJlc2VudCgpICYmIGRlc2NyaXB0b3IuZW51bWVyYWJsZSgpKSB7
CiAgICAgICAgIGlmICh0aHJvd0V4Y2VwdGlvbikKLSAgICAgICAgICAgIHRocm93RXJyb3IoZXhl
YywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsICJBdHRlbXB0aW5nIHRvIGNoYW5nZSBlbnVtZXJhYmxl
IGF0dHJpYnV0ZSBvZiB1bmNvbmZpZ3VyYWJsZSBwcm9wZXJ0eS4iKSk7CisgICAgICAgICAgICB0
aHJvd0Vycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkF0dGVt
cHRpbmcgdG8gY2hhbmdlIGVudW1lcmFibGUgYXR0cmlidXRlIG9mIHVuY29uZmlndXJhYmxlIHBy
b3BlcnR5LiIpKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgaWYgKGRlc2Ny
aXB0b3IuaXNBY2Nlc3NvckRlc2NyaXB0b3IoKSkgewogICAgICAgICBpZiAodGhyb3dFeGNlcHRp
b24pCi0gICAgICAgICAgICB0aHJvd0Vycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCAi
QXR0ZW1wdGluZyB0byBjaGFuZ2UgYWNjZXNzIG1lY2hhbmlzbSBmb3IgYW4gdW5jb25maWd1cmFi
bGUgcHJvcGVydHkuIikpOworICAgICAgICAgICAgdGhyb3dFcnJvcihleGVjLCBjcmVhdGVUeXBl
RXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJBdHRlbXB0aW5nIHRvIGNoYW5nZSBhY2Nlc3MgbWVj
aGFuaXNtIGZvciBhbiB1bmNvbmZpZ3VyYWJsZSBwcm9wZXJ0eS4iKSkpOwogICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgfQogICAgIGlmIChkZXNjcmlwdG9yLndyaXRhYmxlUHJlc2VudCgpICYm
IGRlc2NyaXB0b3Iud3JpdGFibGUoKSkgewogICAgICAgICBpZiAodGhyb3dFeGNlcHRpb24pCi0g
ICAgICAgICAgICB0aHJvd0Vycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCAiQXR0ZW1w
dGluZyB0byBjaGFuZ2Ugd3JpdGFibGUgYXR0cmlidXRlIG9mIHVuY29uZmlndXJhYmxlIHByb3Bl
cnR5LiIpKTsKKyAgICAgICAgICAgIHRocm93RXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4
ZWMsIEFTQ0lJTGl0ZXJhbCgiQXR0ZW1wdGluZyB0byBjaGFuZ2Ugd3JpdGFibGUgYXR0cmlidXRl
IG9mIHVuY29uZmlndXJhYmxlIHByb3BlcnR5LiIpKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICB9CiAgICAgaWYgKCF2YWx1ZUNoZWNrKSB7CiAgICAgICAgIGlmICh0aHJvd0V4Y2VwdGlv
bikKLSAgICAgICAgICAgIHRocm93RXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsICJB
dHRlbXB0aW5nIHRvIGNoYW5nZSB2YWx1ZSBvZiBhIHJlYWRvbmx5IHByb3BlcnR5LiIpKTsKKyAg
ICAgICAgICAgIHRocm93RXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0
ZXJhbCgiQXR0ZW1wdGluZyB0byBjaGFuZ2UgdmFsdWUgb2YgYSByZWFkb25seSBwcm9wZXJ0eS4i
KSkpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIHJldHVybiB0cnVlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5jcHAKaW5kZXggZWEw
NzRlZWNmNDVkNmUzZmQ3OTdiZTBhYzZkMzlhMWNkN2NhNDQ0OS4uNWQzN2EzZTYyYTc1OGRiNWE0
OGFkNjAwZGQyNDYxNzZhYWI4YWRmNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHbG9iYWxEYXRhLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dsb2JhbERhdGEuY3BwCkBAIC0xMDQsOCArMTA0LDE1IEBAIHN0YXRpYyBib29sIGVu
YWJsZUFzc2VtYmxlcihFeGVjdXRhYmxlQWxsb2NhdG9yJiBleGVjdXRhYmxlQWxsb2NhdG9yKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKICNpZiBVU0UoQ0YpCi0gICAgUmV0YWluUHRyPENGU3Ry
aW5nUmVmPiBjYW5Vc2VKSVRLZXkoQWRvcHRDRiwgQ0ZTdHJpbmdDcmVhdGVXaXRoQ1N0cmluZygw
ICwgIkphdmFTY3JpcHRDb3JlVXNlSklUIiwga0NGU3RyaW5nRW5jb2RpbmdNYWNSb21hbikpOwot
ICAgIFJldGFpblB0cjxDRkJvb2xlYW5SZWY+IGNhblVzZUpJVChBZG9wdENGLCAoQ0ZCb29sZWFu
UmVmKUNGUHJlZmVyZW5jZXNDb3B5QXBwVmFsdWUoY2FuVXNlSklUS2V5LmdldCgpLCBrQ0ZQcmVm
ZXJlbmNlc0N1cnJlbnRBcHBsaWNhdGlvbikpOworI2lmIENPTVBJTEVSKEdDQykgJiYgIUNPTVBJ
TEVSKENMQU5HKQorICAgIC8vIEZJWE1FOiByZW1vdmUgdGhpcyBvbmNlIHRoZSBFV1MgaGF2ZSBi
ZWVuIHVwZ3JhZGVkIHRvIExMVk0uCisgICAgLy8gV29yayBhcm91bmQgYSBidWcgb2YgR0NDIHdp
dGggc3RyaWN0LWFsaWFzaW5nLgorICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gY2FuVXNlSklU
S2V5UmV0YWluKEFkb3B0Q0YsIENGU3RyaW5nQ3JlYXRlV2l0aENTdHJpbmcoMCAsICJKYXZhU2Ny
aXB0Q29yZVVzZUpJVCIsIGtDRlN0cmluZ0VuY29kaW5nTWFjUm9tYW4pKTsKKyAgICBDRlN0cmlu
Z1JlZiBjYW5Vc2VKSVRLZXkgPSBjYW5Vc2VKSVRLZXlSZXRhaW4uZ2V0KCk7CisjZWxzZQorICAg
IENGU3RyaW5nUmVmIGNhblVzZUpJVEtleSA9IENGU1RSKCJKYXZhU2NyaXB0Q29yZVVzZUpJVCIp
OworI2VuZGlmIC8vIENPTVBJTEVSKEdDQykgJiYgIUNPTVBJTEVSKENMQU5HKQorICAgIFJldGFp
blB0cjxDRkJvb2xlYW5SZWY+IGNhblVzZUpJVChBZG9wdENGLCAoQ0ZCb29sZWFuUmVmKUNGUHJl
ZmVyZW5jZXNDb3B5QXBwVmFsdWUoY2FuVXNlSklUS2V5LCBrQ0ZQcmVmZXJlbmNlc0N1cnJlbnRB
cHBsaWNhdGlvbikpOwogICAgIGlmIChjYW5Vc2VKSVQpCiAgICAgICAgIHJldHVybiBrQ0ZCb29s
ZWFuVHJ1ZSA9PSBjYW5Vc2VKSVQuZ2V0KCk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAppbmRleCAzMWIyN2M1MWUwMWFhNjJj
NzU2N2M3MzI4NWU2YTcyMWQ0M2JhNTQzLi5kMDRhNzAzMTM5NjBmMTg1MDlmMDdlZGJiNWE3NWVm
NjczNzE3OGIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ds
b2JhbE9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9i
YWxPYmplY3QuY3BwCkBAIC0yMTEsOCArMjExLDggQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6cmVz
ZXQoSlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgbV9hcHBseUZ1bmN0aW9uLnNldChleGVjLT5nbG9i
YWxEYXRhKCksIHRoaXMsIGFwcGx5RnVuY3Rpb24pOwogICAgIG1fb2JqZWN0UHJvdG90eXBlLnNl
dChleGVjLT5nbG9iYWxEYXRhKCksIHRoaXMsIE9iamVjdFByb3RvdHlwZTo6Y3JlYXRlKGV4ZWMs
IHRoaXMsIE9iamVjdFByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKGV4ZWMtPmdsb2JhbERhdGEo
KSwgdGhpcywganNOdWxsKCkpKSk7CiAgICAgR2V0dGVyU2V0dGVyKiBwcm90b0FjY2Vzc29yID0g
R2V0dGVyU2V0dGVyOjpjcmVhdGUoZXhlYyk7Ci0gICAgcHJvdG9BY2Nlc3Nvci0+c2V0R2V0dGVy
KGV4ZWMtPmdsb2JhbERhdGEoKSwgSlNGdW5jdGlvbjo6Y3JlYXRlKGV4ZWMsIHRoaXMsIDAsICIi
LCBnbG9iYWxGdW5jUHJvdG9HZXR0ZXIpKTsKLSAgICBwcm90b0FjY2Vzc29yLT5zZXRTZXR0ZXIo
ZXhlYy0+Z2xvYmFsRGF0YSgpLCBKU0Z1bmN0aW9uOjpjcmVhdGUoZXhlYywgdGhpcywgMCwgIiIs
IGdsb2JhbEZ1bmNQcm90b1NldHRlcikpOworICAgIHByb3RvQWNjZXNzb3ItPnNldEdldHRlcihl
eGVjLT5nbG9iYWxEYXRhKCksIEpTRnVuY3Rpb246OmNyZWF0ZShleGVjLCB0aGlzLCAwLCBTdHJp
bmcoKSwgZ2xvYmFsRnVuY1Byb3RvR2V0dGVyKSk7CisgICAgcHJvdG9BY2Nlc3Nvci0+c2V0U2V0
dGVyKGV4ZWMtPmdsb2JhbERhdGEoKSwgSlNGdW5jdGlvbjo6Y3JlYXRlKGV4ZWMsIHRoaXMsIDAs
IFN0cmluZygpLCBnbG9iYWxGdW5jUHJvdG9TZXR0ZXIpKTsKICAgICBtX29iamVjdFByb3RvdHlw
ZS0+cHV0RGlyZWN0QWNjZXNzb3IoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5h
bWVzKCkudW5kZXJzY29yZVByb3RvLCBwcm90b0FjY2Vzc29yLCBBY2Nlc3NvciB8IERvbnRFbnVt
KTsKICAgICBtX2Z1bmN0aW9uUHJvdG90eXBlLT5zdHJ1Y3R1cmUoKS0+c2V0UHJvdG90eXBlV2l0
aG91dFRyYW5zaXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBtX29iamVjdFByb3RvdHlwZS5nZXQo
KSk7CiAKQEAgLTI3MSwxMiArMjcxLDEyIEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnJlc2V0KEpT
VmFsdWUgcHJvdG90eXBlKQogCiAgICAgU3RydWN0dXJlKiBuYXRpdmVFcnJvclByb3RvdHlwZVN0
cnVjdHVyZSA9IE5hdGl2ZUVycm9yUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoZXhlYy0+Z2xv
YmFsRGF0YSgpLCB0aGlzLCBtX2Vycm9yUHJvdG90eXBlLmdldCgpKTsKICAgICBTdHJ1Y3R1cmUq
IG5hdGl2ZUVycm9yU3RydWN0dXJlID0gTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3Ry
dWN0dXJlKGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywgbV9mdW5jdGlvblByb3RvdHlwZS5nZXQo
KSk7Ci0gICAgbV9ldmFsRXJyb3JDb25zdHJ1Y3Rvci5zZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0
aGlzLCBOYXRpdmVFcnJvckNvbnN0cnVjdG9yOjpjcmVhdGUoZXhlYywgdGhpcywgbmF0aXZlRXJy
b3JTdHJ1Y3R1cmUsIG5hdGl2ZUVycm9yUHJvdG90eXBlU3RydWN0dXJlLCAiRXZhbEVycm9yIikp
OwotICAgIG1fcmFuZ2VFcnJvckNvbnN0cnVjdG9yLnNldChleGVjLT5nbG9iYWxEYXRhKCksIHRo
aXMsIE5hdGl2ZUVycm9yQ29uc3RydWN0b3I6OmNyZWF0ZShleGVjLCB0aGlzLCBuYXRpdmVFcnJv
clN0cnVjdHVyZSwgbmF0aXZlRXJyb3JQcm90b3R5cGVTdHJ1Y3R1cmUsICJSYW5nZUVycm9yIikp
OwotICAgIG1fcmVmZXJlbmNlRXJyb3JDb25zdHJ1Y3Rvci5zZXQoZXhlYy0+Z2xvYmFsRGF0YSgp
LCB0aGlzLCBOYXRpdmVFcnJvckNvbnN0cnVjdG9yOjpjcmVhdGUoZXhlYywgdGhpcywgbmF0aXZl
RXJyb3JTdHJ1Y3R1cmUsIG5hdGl2ZUVycm9yUHJvdG90eXBlU3RydWN0dXJlLCAiUmVmZXJlbmNl
RXJyb3IiKSk7Ci0gICAgbV9zeW50YXhFcnJvckNvbnN0cnVjdG9yLnNldChleGVjLT5nbG9iYWxE
YXRhKCksIHRoaXMsIE5hdGl2ZUVycm9yQ29uc3RydWN0b3I6OmNyZWF0ZShleGVjLCB0aGlzLCBu
YXRpdmVFcnJvclN0cnVjdHVyZSwgbmF0aXZlRXJyb3JQcm90b3R5cGVTdHJ1Y3R1cmUsICJTeW50
YXhFcnJvciIpKTsKLSAgICBtX3R5cGVFcnJvckNvbnN0cnVjdG9yLnNldChleGVjLT5nbG9iYWxE
YXRhKCksIHRoaXMsIE5hdGl2ZUVycm9yQ29uc3RydWN0b3I6OmNyZWF0ZShleGVjLCB0aGlzLCBu
YXRpdmVFcnJvclN0cnVjdHVyZSwgbmF0aXZlRXJyb3JQcm90b3R5cGVTdHJ1Y3R1cmUsICJUeXBl
RXJyb3IiKSk7Ci0gICAgbV9VUklFcnJvckNvbnN0cnVjdG9yLnNldChleGVjLT5nbG9iYWxEYXRh
KCksIHRoaXMsIE5hdGl2ZUVycm9yQ29uc3RydWN0b3I6OmNyZWF0ZShleGVjLCB0aGlzLCBuYXRp
dmVFcnJvclN0cnVjdHVyZSwgbmF0aXZlRXJyb3JQcm90b3R5cGVTdHJ1Y3R1cmUsICJVUklFcnJv
ciIpKTsKKyAgICBtX2V2YWxFcnJvckNvbnN0cnVjdG9yLnNldChleGVjLT5nbG9iYWxEYXRhKCks
IHRoaXMsIE5hdGl2ZUVycm9yQ29uc3RydWN0b3I6OmNyZWF0ZShleGVjLCB0aGlzLCBuYXRpdmVF
cnJvclN0cnVjdHVyZSwgbmF0aXZlRXJyb3JQcm90b3R5cGVTdHJ1Y3R1cmUsIEFTQ0lJTGl0ZXJh
bCgiRXZhbEVycm9yIikpKTsKKyAgICBtX3JhbmdlRXJyb3JDb25zdHJ1Y3Rvci5zZXQoZXhlYy0+
Z2xvYmFsRGF0YSgpLCB0aGlzLCBOYXRpdmVFcnJvckNvbnN0cnVjdG9yOjpjcmVhdGUoZXhlYywg
dGhpcywgbmF0aXZlRXJyb3JTdHJ1Y3R1cmUsIG5hdGl2ZUVycm9yUHJvdG90eXBlU3RydWN0dXJl
LCBBU0NJSUxpdGVyYWwoIlJhbmdlRXJyb3IiKSkpOworICAgIG1fcmVmZXJlbmNlRXJyb3JDb25z
dHJ1Y3Rvci5zZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlzLCBOYXRpdmVFcnJvckNvbnN0cnVj
dG9yOjpjcmVhdGUoZXhlYywgdGhpcywgbmF0aXZlRXJyb3JTdHJ1Y3R1cmUsIG5hdGl2ZUVycm9y
UHJvdG90eXBlU3RydWN0dXJlLCBBU0NJSUxpdGVyYWwoIlJlZmVyZW5jZUVycm9yIikpKTsKKyAg
ICBtX3N5bnRheEVycm9yQ29uc3RydWN0b3Iuc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywg
TmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcjo6Y3JlYXRlKGV4ZWMsIHRoaXMsIG5hdGl2ZUVycm9yU3Ry
dWN0dXJlLCBuYXRpdmVFcnJvclByb3RvdHlwZVN0cnVjdHVyZSwgQVNDSUlMaXRlcmFsKCJTeW50
YXhFcnJvciIpKSk7CisgICAgbV90eXBlRXJyb3JDb25zdHJ1Y3Rvci5zZXQoZXhlYy0+Z2xvYmFs
RGF0YSgpLCB0aGlzLCBOYXRpdmVFcnJvckNvbnN0cnVjdG9yOjpjcmVhdGUoZXhlYywgdGhpcywg
bmF0aXZlRXJyb3JTdHJ1Y3R1cmUsIG5hdGl2ZUVycm9yUHJvdG90eXBlU3RydWN0dXJlLCBBU0NJ
SUxpdGVyYWwoIlR5cGVFcnJvciIpKSk7CisgICAgbV9VUklFcnJvckNvbnN0cnVjdG9yLnNldChl
eGVjLT5nbG9iYWxEYXRhKCksIHRoaXMsIE5hdGl2ZUVycm9yQ29uc3RydWN0b3I6OmNyZWF0ZShl
eGVjLCB0aGlzLCBuYXRpdmVFcnJvclN0cnVjdHVyZSwgbmF0aXZlRXJyb3JQcm90b3R5cGVTdHJ1
Y3R1cmUsIEFTQ0lJTGl0ZXJhbCgiVVJJRXJyb3IiKSkpOwogCiAgICAgbV9vYmplY3RQcm90b3R5
cGUtPnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+
cHJvcGVydHlOYW1lcygpLmNvbnN0cnVjdG9yLCBvYmplY3RDb25zdHJ1Y3RvciwgRG9udEVudW0p
OwogICAgIG1fZnVuY3Rpb25Qcm90b3R5cGUtPnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKGV4
ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLmNvbnN0cnVjdG9yLCBmdW5j
dGlvbkNvbnN0cnVjdG9yLCBEb250RW51bSk7CkBAIC0zMzEsNyArMzMxLDcgQEAgdm9pZCBKU0ds
b2JhbE9iamVjdDo6cmVzZXQoSlNWYWx1ZSBwcm90b3R5cGUpCiAKIHZvaWQgSlNHbG9iYWxPYmpl
Y3Q6OmNyZWF0ZVRocm93VHlwZUVycm9yKEV4ZWNTdGF0ZSogZXhlYykKIHsKLSAgICBKU0Z1bmN0
aW9uKiB0aHJvd2VyID0gSlNGdW5jdGlvbjo6Y3JlYXRlKGV4ZWMsIHRoaXMsIDAsICIiLCBnbG9i
YWxGdW5jVGhyb3dUeXBlRXJyb3IpOworICAgIEpTRnVuY3Rpb24qIHRocm93ZXIgPSBKU0Z1bmN0
aW9uOjpjcmVhdGUoZXhlYywgdGhpcywgMCwgU3RyaW5nKCksIGdsb2JhbEZ1bmNUaHJvd1R5cGVF
cnJvcik7CiAgICAgR2V0dGVyU2V0dGVyKiBnZXR0ZXJTZXR0ZXIgPSBHZXR0ZXJTZXR0ZXI6OmNy
ZWF0ZShleGVjKTsKICAgICBnZXR0ZXJTZXR0ZXItPnNldEdldHRlcihleGVjLT5nbG9iYWxEYXRh
KCksIHRocm93ZXIpOwogICAgIGdldHRlclNldHRlci0+c2V0U2V0dGVyKGV4ZWMtPmdsb2JhbERh
dGEoKSwgdGhyb3dlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5jcHAKaW5kZXggYmM4OTcyYzJlNGM0ZGNkY2Mx
NjEwYmE1YmRiYjg1NmQ5MTY2NzAxYi4uNDU4OGVjMmQ5MWZkODk5ZjU4NWMyNzk4Mjk3MzkxZmJm
MzI0YTYxYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9i
YWxPYmplY3RGdW5jdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmNwcApAQCAtNTMsNyArNTMsNyBAQCBzdGF0aWMgSlNW
YWx1ZSBlbmNvZGUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBjaGFyKiBkb05vdEVzY2FwZSkKIHsK
ICAgICBDU3RyaW5nIGNzdHIgPSBleGVjLT5hcmd1bWVudCgwKS50b1N0cmluZyhleGVjKS0+dmFs
dWUoZXhlYykudXRmOCh0cnVlKTsKICAgICBpZiAoIWNzdHIuZGF0YSgpKQotICAgICAgICByZXR1
cm4gdGhyb3dFcnJvcihleGVjLCBjcmVhdGVVUklFcnJvcihleGVjLCAiU3RyaW5nIGNvbnRhaW5l
ZCBhbiBpbGxlZ2FsIFVURi0xNiBzZXF1ZW5jZS4iKSk7CisgICAgICAgIHJldHVybiB0aHJvd0Vy
cm9yKGV4ZWMsIGNyZWF0ZVVSSUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiU3RyaW5nIGNvbnRh
aW5lZCBhbiBpbGxlZ2FsIFVURi0xNiBzZXF1ZW5jZS4iKSkpOwogCiAgICAgSlNTdHJpbmdCdWls
ZGVyIGJ1aWxkZXI7CiAgICAgY29uc3QgY2hhciogcCA9IGNzdHIuZGF0YSgpOwpAQCAtMTE0LDcg
KzExNCw3IEBAIHN0YXRpYyBKU1ZhbHVlIGRlY29kZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IENo
YXJUeXBlKiBjaGFyYWN0ZXJzLCBpbnQgbGVuZ3RoLCBjCiAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICBpZiAoY2hhckxlbiA9PSAwKSB7CiAgICAgICAgICAgICAgICAgaWYgKHN0cmljdCkKLSAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoZXhlYywgY3JlYXRlVVJJRXJyb3Io
ZXhlYywgIlVSSSBlcnJvciIpKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRocm93RXJy
b3IoZXhlYywgY3JlYXRlVVJJRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJVUkkgZXJyb3IiKSkp
OwogICAgICAgICAgICAgICAgIC8vIFRoZSBvbmx5IGNhc2Ugd2hlcmUgd2UgZG9uJ3QgdXNlICJz
dHJpY3QiIG1vZGUgaXMgdGhlICJ1bmVzY2FwZSIgZnVuY3Rpb24uCiAgICAgICAgICAgICAgICAg
Ly8gRm9yIHRoYXQsIGl0J3MgZ29vZCB0byBzdXBwb3J0IHRoZSB3b25reSAiJXUiIHN5bnRheCBm
b3IgY29tcGF0aWJpbGl0eSB3aXRoIFdpbklFLgogICAgICAgICAgICAgICAgIGlmIChrIDw9IGxl
bmd0aCAtIDYgJiYgcFsxXSA9PSAndScKQEAgLTQ5OSw3ICs0OTksNyBAQCBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGdsb2JhbEZ1bmNFdmFsKEV4ZWNTdGF0ZSogZXhlYykKICAgICBKU09i
amVjdCogdGhpc09iamVjdCA9IGV4ZWMtPmhvc3RUaGlzVmFsdWUoKS50b1RoaXNPYmplY3QoZXhl
Yyk7CiAgICAgSlNPYmplY3QqIHVud3JhcHBlZE9iamVjdCA9IHRoaXNPYmplY3QtPnVud3JhcHBl
ZE9iamVjdCgpOwogICAgIGlmICghdW53cmFwcGVkT2JqZWN0LT5pc0dsb2JhbE9iamVjdCgpIHx8
IGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+KHVud3JhcHBlZE9iamVjdCktPmV2YWxGdW5jdGlvbigp
ICE9IGV4ZWMtPmNhbGxlZSgpKQotICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNy
ZWF0ZUV2YWxFcnJvcihleGVjLCAiVGhlIFwidGhpc1wiIHZhbHVlIHBhc3NlZCB0byBldmFsIG11
c3QgYmUgdGhlIGdsb2JhbCBvYmplY3QgZnJvbSB3aGljaCBldmFsIG9yaWdpbmF0ZWQiKSk7Cisg
ICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlRXZhbEVycm9yKGV4ZWMsIEFT
Q0lJTGl0ZXJhbCgiVGhlIFwidGhpc1wiIHZhbHVlIHBhc3NlZCB0byBldmFsIG11c3QgYmUgdGhl
IGdsb2JhbCBvYmplY3QgZnJvbSB3aGljaCBldmFsIG9yaWdpbmF0ZWQiKSkpOwogCiAgICAgSlNW
YWx1ZSB4ID0gZXhlYy0+YXJndW1lbnQoMCk7CiAgICAgaWYgKCF4LmlzU3RyaW5nKCkpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09OT2JqZWN0LmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT05PYmplY3QuY3BwCmluZGV4IDE1MzVjMWQx
MjBiN2VhN2Y1MGQzNTcyZjhjODdiNjQ0Zjc2ODUyYzcuLjk3NWQ0ZmJjNjNjZmNjOGQ3ZjQ0MWM3
YzA3NWM4ZTE0MmM0OGM4NGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTT05PYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
T05PYmplY3QuY3BwCkBAIC0zNjEsNyArMzYxLDcgQEAgU3RyaW5naWZpZXI6OlN0cmluZ2lmeVJl
c3VsdCBTdHJpbmdpZmllcjo6YXBwZW5kU3RyaW5naWZpZWRWYWx1ZShTdHJpbmdCdWlsZGVyJgog
ICAgICAgICByZXR1cm4gU3RyaW5naWZ5RmFpbGVkRHVlVG9VbmRlZmluZWRWYWx1ZTsKIAogICAg
IGlmICh2YWx1ZS5pc051bGwoKSkgewotICAgICAgICBidWlsZGVyLmFwcGVuZCgibnVsbCIpOwor
ICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIm51bGwiKTsKICAgICAgICAgcmV0dXJuIFN0
cmluZ2lmeVN1Y2NlZWRlZDsKICAgICB9CiAKQEAgLTM3MSw3ICszNzEsMTAgQEAgU3RyaW5naWZp
ZXI6OlN0cmluZ2lmeVJlc3VsdCBTdHJpbmdpZmllcjo6YXBwZW5kU3RyaW5naWZpZWRWYWx1ZShT
dHJpbmdCdWlsZGVyJgogICAgICAgICByZXR1cm4gU3RyaW5naWZ5RmFpbGVkOwogCiAgICAgaWYg
KHZhbHVlLmlzQm9vbGVhbigpKSB7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kKHZhbHVlLmlzVHJ1
ZSgpID8gInRydWUiIDogImZhbHNlIik7CisgICAgICAgIGlmICh2YWx1ZS5pc1RydWUoKSkKKyAg
ICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgidHJ1ZSIpOworICAgICAgICBlbHNlCisg
ICAgICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoImZhbHNlIik7CiAgICAgICAgIHJldHVy
biBTdHJpbmdpZnlTdWNjZWVkZWQ7CiAgICAgfQogCkBAIC0zODQsNyArMzg3LDcgQEAgU3RyaW5n
aWZpZXI6OlN0cmluZ2lmeVJlc3VsdCBTdHJpbmdpZmllcjo6YXBwZW5kU3RyaW5naWZpZWRWYWx1
ZShTdHJpbmdCdWlsZGVyJgogICAgIGlmICh2YWx1ZS5pc051bWJlcigpKSB7CiAgICAgICAgIGRv
dWJsZSBudW1iZXIgPSB2YWx1ZS5hc051bWJlcigpOwogICAgICAgICBpZiAoIWlzZmluaXRlKG51
bWJlcikpCi0gICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgibnVsbCIpOworICAgICAgICAgICAg
YnVpbGRlci5hcHBlbmRMaXRlcmFsKCJudWxsIik7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAg
IGJ1aWxkZXIuYXBwZW5kKFN0cmluZzo6bnVtYmVyVG9TdHJpbmdFQ01BU2NyaXB0KG51bWJlcikp
OwogICAgICAgICByZXR1cm4gU3RyaW5naWZ5U3VjY2VlZGVkOwpAQCAtMzk4LDcgKzQwMSw3IEBA
IFN0cmluZ2lmaWVyOjpTdHJpbmdpZnlSZXN1bHQgU3RyaW5naWZpZXI6OmFwcGVuZFN0cmluZ2lm
aWVkVmFsdWUoU3RyaW5nQnVpbGRlciYKICAgICBDYWxsRGF0YSBjYWxsRGF0YTsKICAgICBpZiAo
b2JqZWN0LT5tZXRob2RUYWJsZSgpLT5nZXRDYWxsRGF0YShvYmplY3QsIGNhbGxEYXRhKSAhPSBD
YWxsVHlwZU5vbmUpIHsKICAgICAgICAgaWYgKGhvbGRlci0+aW5oZXJpdHMoJkpTQXJyYXk6OnNf
aW5mbykpIHsKLSAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCJudWxsIik7CisgICAgICAgICAg
ICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIm51bGwiKTsKICAgICAgICAgICAgIHJldHVybiBTdHJp
bmdpZnlTdWNjZWVkZWQ7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIFN0cmluZ2lmeUZhaWxl
ZER1ZVRvVW5kZWZpbmVkVmFsdWU7CkBAIC00MDcsNyArNDEwLDcgQEAgU3RyaW5naWZpZXI6OlN0
cmluZ2lmeVJlc3VsdCBTdHJpbmdpZmllcjo6YXBwZW5kU3RyaW5naWZpZWRWYWx1ZShTdHJpbmdC
dWlsZGVyJgogICAgIC8vIEhhbmRsZSBjeWNsZSBkZXRlY3Rpb24sIGFuZCBwdXQgdGhlIGhvbGRl
ciBvbiB0aGUgc3RhY2suCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1faG9sZGVyU3Rh
Y2suc2l6ZSgpOyBpKyspIHsKICAgICAgICAgaWYgKG1faG9sZGVyU3RhY2tbaV0ub2JqZWN0KCkg
PT0gb2JqZWN0KSB7Ci0gICAgICAgICAgICB0aHJvd0Vycm9yKG1fZXhlYywgY3JlYXRlVHlwZUVy
cm9yKG1fZXhlYywgIkpTT04uc3RyaW5naWZ5IGNhbm5vdCBzZXJpYWxpemUgY3ljbGljIHN0cnVj
dHVyZXMuIikpOworICAgICAgICAgICAgdGhyb3dFcnJvcihtX2V4ZWMsIGNyZWF0ZVR5cGVFcnJv
cihtX2V4ZWMsIEFTQ0lJTGl0ZXJhbCgiSlNPTi5zdHJpbmdpZnkgY2Fubm90IHNlcmlhbGl6ZSBj
eWNsaWMgc3RydWN0dXJlcy4iKSkpOwogICAgICAgICAgICAgcmV0dXJuIFN0cmluZ2lmeUZhaWxl
ZDsKICAgICAgICAgfQogICAgIH0KQEAgLTU2OSw3ICs1NzIsNyBAQCBib29sIFN0cmluZ2lmaWVy
OjpIb2xkZXI6OmFwcGVuZE5leHRQcm9wZXJ0eShTdHJpbmdpZmllciYgc3RyaW5naWZpZXIsIFN0
cmluZ0J1aQogCiAgICAgc3dpdGNoIChzdHJpbmdpZnlSZXN1bHQpIHsKICAgICAgICAgY2FzZSBT
dHJpbmdpZnlGYWlsZWQ6Ci0gICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgibnVsbCIpOworICAg
ICAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCJudWxsIik7CiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgY2FzZSBTdHJpbmdpZnlTdWNjZWVkZWQ6CiAgICAgICAgICAgICBicmVhazsK
QEAgLTgwOSw3ICs4MTIsNyBAQCBORVZFUl9JTkxJTkUgSlNWYWx1ZSBXYWxrZXI6OndhbGsoSlNW
YWx1ZSB1bmZpbHRlcmVkKQogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBKU09OUHJvdG9G
dW5jUGFyc2UoRXhlY1N0YXRlKiBleGVjKQogewogICAgIGlmICghZXhlYy0+YXJndW1lbnRDb3Vu
dCgpKQotICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZUVycm9yKGV4ZWMs
ICJKU09OLnBhcnNlIHJlcXVpcmVzIGF0IGxlYXN0IG9uZSBwYXJhbWV0ZXIiKSk7CisgICAgICAg
IHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFs
KCJKU09OLnBhcnNlIHJlcXVpcmVzIGF0IGxlYXN0IG9uZSBwYXJhbWV0ZXIiKSkpOwogICAgIFN0
cmluZyBzb3VyY2UgPSBleGVjLT5hcmd1bWVudCgwKS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhl
Yyk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzTnVsbCgpKTsKQEAgLTg0Myw3ICs4NDYsNyBAQCBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIEpTT05Qcm90b0Z1bmNQYXJzZShFeGVjU3RhdGUqIGV4ZWMpCiBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpTT05Qcm90b0Z1bmNTdHJpbmdpZnkoRXhlY1N0YXRlKiBl
eGVjKQogewogICAgIGlmICghZXhlYy0+YXJndW1lbnRDb3VudCgpKQotICAgICAgICByZXR1cm4g
dGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZUVycm9yKGV4ZWMsICJObyBpbnB1dCB0byBzdHJpbmdp
ZnkiKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlRXJyb3IoZXhl
YywgQVNDSUlMaXRlcmFsKCJObyBpbnB1dCB0byBzdHJpbmdpZnkiKSkpOwogICAgIExvY2FsU2Nv
cGUgc2NvcGUoZXhlYy0+Z2xvYmFsRGF0YSgpKTsKICAgICBMb2NhbDxVbmtub3duPiB2YWx1ZShl
eGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPmFyZ3VtZW50KDApKTsKICAgICBMb2NhbDxVbmtub3du
PiByZXBsYWNlcihleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPmFyZ3VtZW50KDEpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAppbmRleCAzMjc1YjIyMmI1Y2Vm
ZmI4MDAzYTA4YzI3ZTc5OTJkMGFmMjUzMDEzLi44MTJiYTNiYzgzNGM2ZDhiZjJiYTc4OGRkY2Ew
Y2MwM2Y1NzE3MTdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U09iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3Qu
Y3BwCkBAIC0xODIsNyArMTgyLDcgQEAgdm9pZCBKU09iamVjdDo6cHV0KEpTQ2VsbCogY2VsbCwg
RXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1YKICAgICAgICAg
ICAgIHByb3RvdHlwZSA9IG9iai0+cHJvdG90eXBlKCk7CiAgICAgICAgICAgICBpZiAocHJvdG90
eXBlLmlzTnVsbCgpKSB7CiAgICAgICAgICAgICAgICAgaWYgKCF0aGlzT2JqZWN0LT5wdXREaXJl
Y3RJbnRlcm5hbDxQdXRNb2RlUHV0PihnbG9iYWxEYXRhLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCAw
LCBzbG90LCBnZXRDYWxsYWJsZU9iamVjdCh2YWx1ZSkpICYmIHNsb3QuaXNTdHJpY3RNb2RlKCkp
Ci0gICAgICAgICAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIFN0cmljdE1vZGVSZWFk
b25seVByb3BlcnR5V3JpdGVFcnJvcik7CisgICAgICAgICAgICAgICAgICAgIHRocm93VHlwZUVy
cm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbChTdHJpY3RNb2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJy
b3IpKTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAgICAgICAgIH0K
QEAgLTE5NSw3ICsxOTUsNyBAQCB2b2lkIEpTT2JqZWN0OjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVj
U3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVgogICAgICAgICBpZiAo
b2Zmc2V0ICE9IGludmFsaWRPZmZzZXQpIHsKICAgICAgICAgICAgIGlmIChhdHRyaWJ1dGVzICYg
UmVhZE9ubHkpIHsKICAgICAgICAgICAgICAgICBpZiAoc2xvdC5pc1N0cmljdE1vZGUoKSkKLSAg
ICAgICAgICAgICAgICAgICAgdGhyb3dFcnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywg
U3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKSk7CisgICAgICAgICAgICAgICAg
ICAgIHRocm93RXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbChT
dHJpY3RNb2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpKSk7CiAgICAgICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICAgICAgfQogCkBAIC0yMDQsNyArMjA0LDcgQEAgdm9pZCBKU09iamVj
dDo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVy
dHlOYW1lLCBKU1YKICAgICAgICAgICAgICAgICBKU09iamVjdCogc2V0dGVyRnVuYyA9IGFzR2V0
dGVyU2V0dGVyKGdzKS0+c2V0dGVyKCk7ICAgICAgICAKICAgICAgICAgICAgICAgICBpZiAoIXNl
dHRlckZ1bmMpIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKHNsb3QuaXNTdHJpY3RNb2RlKCkp
Ci0gICAgICAgICAgICAgICAgICAgICAgICB0aHJvd0Vycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJv
cihleGVjLCAic2V0dGluZyBhIHByb3BlcnR5IHRoYXQgaGFzIG9ubHkgYSBnZXR0ZXIiKSk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICB0aHJvd0Vycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihl
eGVjLCBBU0NJSUxpdGVyYWwoInNldHRpbmcgYSBwcm9wZXJ0eSB0aGF0IGhhcyBvbmx5IGEgZ2V0
dGVyIikpKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgICAgICAKQEAgLTIyOSw3ICsyMjksNyBAQCB2b2lkIEpTT2JqZWN0OjpwdXQo
SlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUs
IEpTVgogICAgIH0KICAgICAKICAgICBpZiAoIXRoaXNPYmplY3QtPnB1dERpcmVjdEludGVybmFs
PFB1dE1vZGVQdXQ+KGdsb2JhbERhdGEsIHByb3BlcnR5TmFtZSwgdmFsdWUsIDAsIHNsb3QsIGdl
dENhbGxhYmxlT2JqZWN0KHZhbHVlKSkgJiYgc2xvdC5pc1N0cmljdE1vZGUoKSkKLSAgICAgICAg
dGhyb3dUeXBlRXJyb3IoZXhlYywgU3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9y
KTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKFN0cmljdE1vZGVS
ZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcikpOwogICAgIHJldHVybjsKIH0KIApAQCAtMzg5LDcg
KzM4OSw3IEBAIEpTVmFsdWUgSlNPYmplY3Q6OmRlZmF1bHRWYWx1ZShjb25zdCBKU09iamVjdCog
b2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByZWZlcnJlCiAKICAgICBBU1NFUlQoIWV4ZWMtPmhh
ZEV4Y2VwdGlvbigpKTsKIAotICAgIHJldHVybiB0aHJvd0Vycm9yKGV4ZWMsIGNyZWF0ZVR5cGVF
cnJvcihleGVjLCAiTm8gZGVmYXVsdCB2YWx1ZSIpKTsKKyAgICByZXR1cm4gdGhyb3dFcnJvcihl
eGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJObyBkZWZhdWx0IHZhbHVl
IikpKTsKIH0KIAogY29uc3QgSGFzaEVudHJ5KiBKU09iamVjdDo6ZmluZFByb3BlcnR5SGFzaEVu
dHJ5KEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkgY29uc3QKQEAg
LTQwOSw3ICs0MDksNyBAQCBib29sIEpTT2JqZWN0OjpoYXNJbnN0YW5jZShKU09iamVjdCosIEV4
ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2YWx1ZSwgSlNWYWx1ZSBwcgogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKICAgICBpZiAoIXByb3RvLmlzT2JqZWN0KCkpIHsKLSAgICAgICAgdGhyb3dFcnJv
cihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgImluc3RhbmNlb2YgY2FsbGVkIG9uIGFuIG9i
amVjdCB3aXRoIGFuIGludmFsaWQgcHJvdG90eXBlIHByb3BlcnR5LiIpKTsKKyAgICAgICAgdGhy
b3dFcnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJpbnN0YW5j
ZW9mIGNhbGxlZCBvbiBhbiBvYmplY3Qgd2l0aCBhbiBpbnZhbGlkIHByb3RvdHlwZSBwcm9wZXJ0
eS4iKSkpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCkBAIC03MTgsNyArNzE4LDcg
QEAgYm9vbCBKU09iamVjdDo6ZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqIG9iamVjdCwgRXhl
Y1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUKICAgICAgICAgLy8gdW5sZXNzIGV4dGVuc2lvbnMg
YXJlIHByZXZlbnRlZCEKICAgICAgICAgaWYgKCFvYmplY3QtPmlzRXh0ZW5zaWJsZSgpKSB7CiAg
ICAgICAgICAgICBpZiAodGhyb3dFeGNlcHRpb24pCi0gICAgICAgICAgICAgICAgdGhyb3dFcnJv
cihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgIkF0dGVtcHRpbmcgdG8gZGVmaW5lIHByb3Bl
cnR5IG9uIG9iamVjdCB0aGF0IGlzIG5vdCBleHRlbnNpYmxlLiIpKTsKKyAgICAgICAgICAgICAg
ICB0aHJvd0Vycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkF0
dGVtcHRpbmcgdG8gZGVmaW5lIHByb3BlcnR5IG9uIG9iamVjdCB0aGF0IGlzIG5vdCBleHRlbnNp
YmxlLiIpKSk7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICAgICAg
UHJvcGVydHlEZXNjcmlwdG9yIG9sZERlc2NyaXB0b3I7CkBAIC03MzYsMTIgKzczNiwxMiBAQCBi
b29sIEpTT2JqZWN0OjpkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCogb2JqZWN0LCBFeGVjU3Rh
dGUqIGV4ZWMsIFByb3BlcnR5TmFtZQogICAgIGlmICghY3VycmVudC5jb25maWd1cmFibGUoKSkg
ewogICAgICAgICBpZiAoZGVzY3JpcHRvci5jb25maWd1cmFibGUoKSkgewogICAgICAgICAgICAg
aWYgKHRocm93RXhjZXB0aW9uKQotICAgICAgICAgICAgICAgIHRocm93RXJyb3IoZXhlYywgY3Jl
YXRlVHlwZUVycm9yKGV4ZWMsICJBdHRlbXB0aW5nIHRvIGNvbmZpZ3VyYWJsZSBhdHRyaWJ1dGUg
b2YgdW5jb25maWd1cmFibGUgcHJvcGVydHkuIikpOworICAgICAgICAgICAgICAgIHRocm93RXJy
b3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiQXR0ZW1wdGluZyB0
byBjb25maWd1cmFibGUgYXR0cmlidXRlIG9mIHVuY29uZmlndXJhYmxlIHByb3BlcnR5LiIpKSk7
CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICAgICAgaWYgKGRlc2Ny
aXB0b3IuZW51bWVyYWJsZVByZXNlbnQoKSAmJiBkZXNjcmlwdG9yLmVudW1lcmFibGUoKSAhPSBj
dXJyZW50LmVudW1lcmFibGUoKSkgewogICAgICAgICAgICAgaWYgKHRocm93RXhjZXB0aW9uKQot
ICAgICAgICAgICAgICAgIHRocm93RXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsICJB
dHRlbXB0aW5nIHRvIGNoYW5nZSBlbnVtZXJhYmxlIGF0dHJpYnV0ZSBvZiB1bmNvbmZpZ3VyYWJs
ZSBwcm9wZXJ0eS4iKSk7CisgICAgICAgICAgICAgICAgdGhyb3dFcnJvcihleGVjLCBjcmVhdGVU
eXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJBdHRlbXB0aW5nIHRvIGNoYW5nZSBlbnVtZXJh
YmxlIGF0dHJpYnV0ZSBvZiB1bmNvbmZpZ3VyYWJsZSBwcm9wZXJ0eS4iKSkpOwogICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAgfQpAQCAtNzU5LDcgKzc1OSw3IEBAIGJv
b2wgSlNPYmplY3Q6OmRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0
ZSogZXhlYywgUHJvcGVydHlOYW1lCiAgICAgaWYgKGRlc2NyaXB0b3IuaXNEYXRhRGVzY3JpcHRv
cigpICE9IGN1cnJlbnQuaXNEYXRhRGVzY3JpcHRvcigpKSB7CiAgICAgICAgIGlmICghY3VycmVu
dC5jb25maWd1cmFibGUoKSkgewogICAgICAgICAgICAgaWYgKHRocm93RXhjZXB0aW9uKQotICAg
ICAgICAgICAgICAgIHRocm93RXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsICJBdHRl
bXB0aW5nIHRvIGNoYW5nZSBhY2Nlc3MgbWVjaGFuaXNtIGZvciBhbiB1bmNvbmZpZ3VyYWJsZSBw
cm9wZXJ0eS4iKSk7CisgICAgICAgICAgICAgICAgdGhyb3dFcnJvcihleGVjLCBjcmVhdGVUeXBl
RXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJBdHRlbXB0aW5nIHRvIGNoYW5nZSBhY2Nlc3MgbWVj
aGFuaXNtIGZvciBhbiB1bmNvbmZpZ3VyYWJsZSBwcm9wZXJ0eS4iKSkpOwogICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAgICAgIG9iamVjdC0+bWV0aG9kVGFibGUoKS0+
ZGVsZXRlUHJvcGVydHkob2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUpOwpAQCAtNzcxLDEzICs3
NzEsMTMgQEAgYm9vbCBKU09iamVjdDo6ZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqIG9iamVj
dCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUKICAgICAgICAgaWYgKCFjdXJyZW50LmNv
bmZpZ3VyYWJsZSgpKSB7CiAgICAgICAgICAgICBpZiAoIWN1cnJlbnQud3JpdGFibGUoKSAmJiBk
ZXNjcmlwdG9yLndyaXRhYmxlKCkpIHsKICAgICAgICAgICAgICAgICBpZiAodGhyb3dFeGNlcHRp
b24pCi0gICAgICAgICAgICAgICAgICAgIHRocm93RXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9y
KGV4ZWMsICJBdHRlbXB0aW5nIHRvIGNoYW5nZSB3cml0YWJsZSBhdHRyaWJ1dGUgb2YgdW5jb25m
aWd1cmFibGUgcHJvcGVydHkuIikpOworICAgICAgICAgICAgICAgICAgICB0aHJvd0Vycm9yKGV4
ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkF0dGVtcHRpbmcgdG8gY2hh
bmdlIHdyaXRhYmxlIGF0dHJpYnV0ZSBvZiB1bmNvbmZpZ3VyYWJsZSBwcm9wZXJ0eS4iKSkpOwog
ICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAg
IGlmICghY3VycmVudC53cml0YWJsZSgpKSB7CiAgICAgICAgICAgICAgICAgaWYgKGRlc2NyaXB0
b3IudmFsdWUoKSAmJiAhc2FtZVZhbHVlKGV4ZWMsIGN1cnJlbnQudmFsdWUoKSwgZGVzY3JpcHRv
ci52YWx1ZSgpKSkgewogICAgICAgICAgICAgICAgICAgICBpZiAodGhyb3dFeGNlcHRpb24pCi0g
ICAgICAgICAgICAgICAgICAgICAgICB0aHJvd0Vycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihl
eGVjLCAiQXR0ZW1wdGluZyB0byBjaGFuZ2UgdmFsdWUgb2YgYSByZWFkb25seSBwcm9wZXJ0eS4i
KSk7CisgICAgICAgICAgICAgICAgICAgICAgICB0aHJvd0Vycm9yKGV4ZWMsIGNyZWF0ZVR5cGVF
cnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkF0dGVtcHRpbmcgdG8gY2hhbmdlIHZhbHVlIG9mIGEg
cmVhZG9ubHkgcHJvcGVydHkuIikpKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KQEAgLTc5MywxMiArNzkzLDEyIEBA
IGJvb2wgSlNPYmplY3Q6OmRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNT
dGF0ZSogZXhlYywgUHJvcGVydHlOYW1lCiAgICAgaWYgKCFjdXJyZW50LmNvbmZpZ3VyYWJsZSgp
KSB7CiAgICAgICAgIGlmIChkZXNjcmlwdG9yLnNldHRlclByZXNlbnQoKSAmJiAhKGN1cnJlbnQu
c2V0dGVyUHJlc2VudCgpICYmIEpTVmFsdWU6OnN0cmljdEVxdWFsKGV4ZWMsIGN1cnJlbnQuc2V0
dGVyKCksIGRlc2NyaXB0b3Iuc2V0dGVyKCkpKSkgewogICAgICAgICAgICAgaWYgKHRocm93RXhj
ZXB0aW9uKQotICAgICAgICAgICAgICAgIHRocm93RXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9y
KGV4ZWMsICJBdHRlbXB0aW5nIHRvIGNoYW5nZSB0aGUgc2V0dGVyIG9mIGFuIHVuY29uZmlndXJh
YmxlIHByb3BlcnR5LiIpKTsKKyAgICAgICAgICAgICAgICB0aHJvd0Vycm9yKGV4ZWMsIGNyZWF0
ZVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkF0dGVtcHRpbmcgdG8gY2hhbmdlIHRoZSBz
ZXR0ZXIgb2YgYW4gdW5jb25maWd1cmFibGUgcHJvcGVydHkuIikpKTsKICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICAgICAgfQogICAgICAgICBpZiAoZGVzY3JpcHRvci5nZXR0ZXJQcmVz
ZW50KCkgJiYgIShjdXJyZW50LmdldHRlclByZXNlbnQoKSAmJiBKU1ZhbHVlOjpzdHJpY3RFcXVh
bChleGVjLCBjdXJyZW50LmdldHRlcigpLCBkZXNjcmlwdG9yLmdldHRlcigpKSkpIHsKICAgICAg
ICAgICAgIGlmICh0aHJvd0V4Y2VwdGlvbikKLSAgICAgICAgICAgICAgICB0aHJvd0Vycm9yKGV4
ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCAiQXR0ZW1wdGluZyB0byBjaGFuZ2UgdGhlIGdldHRl
ciBvZiBhbiB1bmNvbmZpZ3VyYWJsZSBwcm9wZXJ0eS4iKSk7CisgICAgICAgICAgICAgICAgdGhy
b3dFcnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJBdHRlbXB0
aW5nIHRvIGNoYW5nZSB0aGUgZ2V0dGVyIG9mIGFuIHVuY29uZmlndXJhYmxlIHByb3BlcnR5LiIp
KSk7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5jcHAKaW5kZXggOTc3ZjBkMTAwM2M4NWE5
ODYxM2MyYjg4ZjRkM2U1MGNkOGViZmIyMy4uNDI2YzAyNjM0NjM2MGU5NTA4ZTFlNTU5OTdmZjJi
NDFhYzZjNTFjYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNT
dHJpbmcuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmNw
cApAQCAtMjI1LDcgKzIyNSw3IEBAIEpTU3RyaW5nKiBKU1JvcGVTdHJpbmc6OmdldEluZGV4U2xv
d0Nhc2UoRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBpKQogICAgIHJlc29sdmVSb3BlKGV4ZWMp
OwogICAgIC8vIFJldHVybiBhIHNhZmUgbm8tdmFsdWUgcmVzdWx0LCB0aGlzIHNob3VsZCBuZXZl
ciBiZSB1c2VkLCBzaW5jZSB0aGUgZXhjZXRpb24gd2lsbCBiZSB0aHJvd24uCiAgICAgaWYgKGV4
ZWMtPmV4Y2VwdGlvbigpKQotICAgICAgICByZXR1cm4ganNTdHJpbmcoZXhlYywgIiIpOworICAg
ICAgICByZXR1cm4ganNFbXB0eVN0cmluZyhleGVjKTsKICAgICBBU1NFUlQoIWlzUm9wZSgpKTsK
ICAgICBBU1NFUlQoaSA8IG1fdmFsdWUubGVuZ3RoKCkpOwogICAgIHJldHVybiBqc1NpbmdsZUNo
YXJhY3RlclN1YnN0cmluZyhleGVjLCBtX3ZhbHVlLCBpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU1N0cmluZy5oCmluZGV4IDlmMTc2YWQyM2NmZDIwMzRlMjRiNTcwMGYxNGI0MDQz
NmYxY2VlODMuLjdjNGQ2NWZjNmEyZjlkODRkMzU0MWQyZjI5NGU3NTViMzBhNjk1OGYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaApAQCAtNTAsOCArNTAsNiBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAvLyBUaGVzZSBmdW5jdGlvbnMgYXJlIGZhc3RlciB0aGFuIGp1
c3QgY2FsbGluZyBqc1N0cmluZy4KICAgICBKU1N0cmluZyoganNOb250cml2aWFsU3RyaW5nKEpT
R2xvYmFsRGF0YSosIGNvbnN0IFN0cmluZyYpOwogICAgIEpTU3RyaW5nKiBqc05vbnRyaXZpYWxT
dHJpbmcoRXhlY1N0YXRlKiwgY29uc3QgU3RyaW5nJik7Ci0gICAgSlNTdHJpbmcqIGpzTm9udHJp
dmlhbFN0cmluZyhKU0dsb2JhbERhdGEqLCBjb25zdCBjaGFyKik7Ci0gICAgSlNTdHJpbmcqIGpz
Tm9udHJpdmlhbFN0cmluZyhFeGVjU3RhdGUqLCBjb25zdCBjaGFyKik7CiAKICAgICAvLyBTaG91
bGQgYmUgdXNlZCBmb3Igc3RyaW5ncyB0aGF0IGFyZSBvd25lZCBieSBhbiBvYmplY3QgdGhhdCB3
aWxsCiAgICAgLy8gbGlrZWx5IG91dGxpdmUgdGhlIEpTVmFsdWUgdGhpcyBtYWtlcywgc3VjaCBh
cyB0aGUgcGFyc2UgdHJlZSBvciBhCkBAIC0zNTMsMTQgKzM1MSw2IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICByZXR1cm4gSlNTdHJpbmc6OmNyZWF0ZSgqZ2xvYmFsRGF0YSwgU3RyaW5nSW1w
bDo6Y3JlYXRlKHMuaW1wbCgpLCBvZmZzZXQsIDEpKTsKICAgICB9CiAKLSAgICBpbmxpbmUgSlNT
dHJpbmcqIGpzTm9udHJpdmlhbFN0cmluZyhKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIGNvbnN0
IGNoYXIqIHMpCi0gICAgewotICAgICAgICBBU1NFUlQocyk7Ci0gICAgICAgIEFTU0VSVChzWzBd
KTsKLSAgICAgICAgQVNTRVJUKHNbMV0pOwotICAgICAgICByZXR1cm4gSlNTdHJpbmc6OmNyZWF0
ZSgqZ2xvYmFsRGF0YSwgU3RyaW5nKHMpLmltcGwoKSk7Ci0gICAgfQotCiAgICAgaW5saW5lIEpT
U3RyaW5nKiBqc05vbnRyaXZpYWxTdHJpbmcoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBjb25z
dCBTdHJpbmcmIHMpCiAgICAgewogICAgICAgICBBU1NFUlQocy5sZW5ndGgoKSA+IDEpOwpAQCAt
NDY4LDcgKzQ1OCw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGlubGluZSBKU1N0cmluZyoganNT
dWJzdHJpbmc4KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU3RyaW5nJiBzLCB1bnNpZ25lZCBvZmZz
ZXQsIHVuc2lnbmVkIGxlbmd0aCkgeyByZXR1cm4ganNTdWJzdHJpbmc4KCZleGVjLT5nbG9iYWxE
YXRhKCksIHMsIG9mZnNldCwgbGVuZ3RoKTsgfQogICAgIGlubGluZSBKU1N0cmluZyoganNTdWJz
dHJpbmcoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBTdHJpbmcmIHMsIHVuc2lnbmVkIG9mZnNldCwg
dW5zaWduZWQgbGVuZ3RoKSB7IHJldHVybiBqc1N1YnN0cmluZygmZXhlYy0+Z2xvYmFsRGF0YSgp
LCBzLCBvZmZzZXQsIGxlbmd0aCk7IH0KICAgICBpbmxpbmUgSlNTdHJpbmcqIGpzTm9udHJpdmlh
bFN0cmluZyhFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFN0cmluZyYgcykgeyByZXR1cm4ganNOb250
cml2aWFsU3RyaW5nKCZleGVjLT5nbG9iYWxEYXRhKCksIHMpOyB9Ci0gICAgaW5saW5lIEpTU3Ry
aW5nKiBqc05vbnRyaXZpYWxTdHJpbmcoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBjaGFyKiBzKSB7
IHJldHVybiBqc05vbnRyaXZpYWxTdHJpbmcoJmV4ZWMtPmdsb2JhbERhdGEoKSwgcyk7IH0KICAg
ICBpbmxpbmUgSlNTdHJpbmcqIGpzT3duZWRTdHJpbmcoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBT
dHJpbmcmIHMpIHsgcmV0dXJuIGpzT3duZWRTdHJpbmcoJmV4ZWMtPmdsb2JhbERhdGEoKSwgcyk7
IH0KIAogICAgIEFMV0FZU19JTkxJTkUgYm9vbCBKU1N0cmluZzo6Z2V0U3RyaW5nUHJvcGVydHlT
bG90KEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlT
bG90JiBzbG90KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNW
YWx1ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1ZhbHVlLmNwcAppbmRl
eCAwYmVkYWEzM2YyNjIzMDI3MmMwNzM5YjczYzM1ZmMwMmZlMGY3YTQ3Li5jYWZmOTk3M2I0ZDQ2
MDY3YWVkZDE2NmE5OGY3OWUyNGY1NmY1YWIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU1ZhbHVlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU1ZhbHVlLmNwcApAQCAtMTQzLDcgKzE0Myw3IEBAIHZvaWQgSlNWYWx1ZTo6cHV0VG9Q
cmltaXRpdmUoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1Zh
bHVlCiAgICAgICAgICAgICAgICAgSlNPYmplY3QqIHNldHRlckZ1bmMgPSBhc0dldHRlclNldHRl
cihncyktPnNldHRlcigpOyAgICAgICAgCiAgICAgICAgICAgICAgICAgaWYgKCFzZXR0ZXJGdW5j
KSB7CiAgICAgICAgICAgICAgICAgICAgIGlmIChzbG90LmlzU3RyaWN0TW9kZSgpKQotICAgICAg
ICAgICAgICAgICAgICAgICAgdGhyb3dFcnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywg
InNldHRpbmcgYSBwcm9wZXJ0eSB0aGF0IGhhcyBvbmx5IGEgZ2V0dGVyIikpOworICAgICAgICAg
ICAgICAgICAgICAgICAgdGhyb3dFcnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgQVND
SUlMaXRlcmFsKCJzZXR0aW5nIGEgcHJvcGVydHkgdGhhdCBoYXMgb25seSBhIGdldHRlciIpKSk7
CiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9MaXRl
cmFsUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xpdGVyYWxQYXJz
ZXIuY3BwCmluZGV4IGFhNjU0MWI2YWVkNWJmMGNlY2Q4ZTVmNjM5OTQ3OWM4NmMyMjA5ZTEuLjIw
YjBjMzA1YWM4MmQ3ZmE2YTFiMjE4MDk4NTg4NzVhZWE4MDk2ODEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xpdGVyYWxQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0xpdGVyYWxQYXJzZXIuY3BwCkBAIC0yNjksNyArMjY5LDcg
QEAgdGVtcGxhdGUgPFBhcnNlck1vZGUgbW9kZT4gVG9rZW5UeXBlIExpdGVyYWxQYXJzZXI8Q2hh
clR5cGU+OjpMZXhlcjo6bGV4KExpdGVyYWwKICAgICAgICAgICAgIHJldHVybiBsZXhJZGVudGlm
aWVyKHRva2VuKTsKICAgICAgICAgaWYgKCptX3B0ciA9PSAnXCcnKSB7CiAgICAgICAgICAgICBp
ZiAobW9kZSA9PSBTdHJpY3RKU09OKSB7Ci0gICAgICAgICAgICAgICAgbV9sZXhFcnJvck1lc3Nh
Z2UgPSAiU2luZ2xlIHF1b3RlcyAoXCcpIGFyZSBub3QgYWxsb3dlZCBpbiBKU09OIjsKKyAgICAg
ICAgICAgICAgICBtX2xleEVycm9yTWVzc2FnZSA9IEFTQ0lJTGl0ZXJhbCgiU2luZ2xlIHF1b3Rl
cyAoXCcpIGFyZSBub3QgYWxsb3dlZCBpbiBKU09OIik7CiAgICAgICAgICAgICAgICAgcmV0dXJu
IFRva0Vycm9yOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgcmV0dXJuIGxleFN0cmluZzxt
b2RlLCAnXCcnPih0b2tlbik7CkBAIC0zNTYsNyArMzU2LDcgQEAgdGVtcGxhdGUgPFBhcnNlck1v
ZGUgbW9kZSwgY2hhciB0ZXJtaW5hdG9yPiBBTFdBWVNfSU5MSU5FIFRva2VuVHlwZSBMaXRlcmFs
UGFyc2UKICAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZChydW5TdGFydCwgbV9wdHIgLSBy
dW5TdGFydCk7CiAgICAgICAgICAgICArK21fcHRyOwogICAgICAgICAgICAgaWYgKG1fcHRyID49
IG1fZW5kKSB7Ci0gICAgICAgICAgICAgICAgbV9sZXhFcnJvck1lc3NhZ2UgPSAiVW50ZXJtaW5h
dGVkIHN0cmluZyI7CisgICAgICAgICAgICAgICAgbV9sZXhFcnJvck1lc3NhZ2UgPSBBU0NJSUxp
dGVyYWwoIlVudGVybWluYXRlZCBzdHJpbmciKTsKICAgICAgICAgICAgICAgICByZXR1cm4gVG9r
RXJyb3I7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBzd2l0Y2ggKCptX3B0cikgewpAQCAt
Mzk1LDcgKzM5NSw3IEBAIHRlbXBsYXRlIDxQYXJzZXJNb2RlIG1vZGUsIGNoYXIgdGVybWluYXRv
cj4gQUxXQVlTX0lOTElORSBUb2tlblR5cGUgTGl0ZXJhbFBhcnNlCiAKICAgICAgICAgICAgICAg
ICBjYXNlICd1JzoKICAgICAgICAgICAgICAgICAgICAgaWYgKChtX2VuZCAtIG1fcHRyKSA8IDUp
IHsgCi0gICAgICAgICAgICAgICAgICAgICAgICBtX2xleEVycm9yTWVzc2FnZSA9ICJcXHUgbXVz
dCBiZSBmb2xsb3dlZCBieSA0IGhleCBkaWdpdHMiOworICAgICAgICAgICAgICAgICAgICAgICAg
bV9sZXhFcnJvck1lc3NhZ2UgPSBBU0NJSUxpdGVyYWwoIlxcdSBtdXN0IGJlIGZvbGxvd2VkIGJ5
IDQgaGV4IGRpZ2l0cyIpOwogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFRva0Vycm9y
OwogICAgICAgICAgICAgICAgICAgICB9IC8vIHVOTk5OID09IDUgY2hhcmFjdGVycwogICAgICAg
ICAgICAgICAgICAgICBmb3IgKGludCBpID0gMTsgaSA8IDU7IGkrKykgewpAQCAtNDIxLDcgKzQy
MSw3IEBAIHRlbXBsYXRlIDxQYXJzZXJNb2RlIG1vZGUsIGNoYXIgdGVybWluYXRvcj4gQUxXQVlT
X0lOTElORSBUb2tlblR5cGUgTGl0ZXJhbFBhcnNlCiAgICAgfSB3aGlsZSAoKG1vZGUgIT0gTm9u
U3RyaWN0SlNPTikgJiYgbV9wdHIgIT0gcnVuU3RhcnQgJiYgKG1fcHRyIDwgbV9lbmQpICYmICpt
X3B0ciAhPSB0ZXJtaW5hdG9yKTsKIAogICAgIGlmIChtX3B0ciA+PSBtX2VuZCB8fCAqbV9wdHIg
IT0gdGVybWluYXRvcikgewotICAgICAgICBtX2xleEVycm9yTWVzc2FnZSA9ICJVbnRlcm1pbmF0
ZWQgc3RyaW5nIjsKKyAgICAgICAgbV9sZXhFcnJvck1lc3NhZ2UgPSBBU0NJSUxpdGVyYWwoIlVu
dGVybWluYXRlZCBzdHJpbmciKTsKICAgICAgICAgcmV0dXJuIFRva0Vycm9yOwogICAgIH0KIApA
QCAtNDc0LDcgKzQ3NCw3IEBAIFRva2VuVHlwZSBMaXRlcmFsUGFyc2VyPENoYXJUeXBlPjo6TGV4
ZXI6OmxleE51bWJlcihMaXRlcmFsUGFyc2VyVG9rZW48Q2hhclR5cGU+CiAgICAgICAgIHdoaWxl
IChtX3B0ciA8IG1fZW5kICYmIGlzQVNDSUlEaWdpdCgqbV9wdHIpKQogICAgICAgICAgICAgKytt
X3B0cjsKICAgICB9IGVsc2UgewotICAgICAgICBtX2xleEVycm9yTWVzc2FnZSA9ICJJbnZhbGlk
IG51bWJlciI7CisgICAgICAgIG1fbGV4RXJyb3JNZXNzYWdlID0gQVNDSUlMaXRlcmFsKCJJbnZh
bGlkIG51bWJlciIpOwogICAgICAgICByZXR1cm4gVG9rRXJyb3I7CiAgICAgfQogCkBAIC00ODMs
NyArNDgzLDcgQEAgVG9rZW5UeXBlIExpdGVyYWxQYXJzZXI8Q2hhclR5cGU+OjpMZXhlcjo6bGV4
TnVtYmVyKExpdGVyYWxQYXJzZXJUb2tlbjxDaGFyVHlwZT4KICAgICAgICAgKyttX3B0cjsKICAg
ICAgICAgLy8gWzAtOV0rCiAgICAgICAgIGlmIChtX3B0ciA+PSBtX2VuZCB8fCAhaXNBU0NJSURp
Z2l0KCptX3B0cikpIHsKLSAgICAgICAgICAgIG1fbGV4RXJyb3JNZXNzYWdlID0gIkludmFsaWQg
ZGlnaXRzIGFmdGVyIGRlY2ltYWwgcG9pbnQiOworICAgICAgICAgICAgbV9sZXhFcnJvck1lc3Nh
Z2UgPSBBU0NJSUxpdGVyYWwoIkludmFsaWQgZGlnaXRzIGFmdGVyIGRlY2ltYWwgcG9pbnQiKTsK
ICAgICAgICAgICAgIHJldHVybiBUb2tFcnJvcjsKICAgICAgICAgfQogCkBAIC01MTgsNyArNTE4
LDcgQEAgVG9rZW5UeXBlIExpdGVyYWxQYXJzZXI8Q2hhclR5cGU+OjpMZXhlcjo6bGV4TnVtYmVy
KExpdGVyYWxQYXJzZXJUb2tlbjxDaGFyVHlwZT4KIAogICAgICAgICAvLyBbMC05XSsKICAgICAg
ICAgaWYgKG1fcHRyID49IG1fZW5kIHx8ICFpc0FTQ0lJRGlnaXQoKm1fcHRyKSkgewotICAgICAg
ICAgICAgbV9sZXhFcnJvck1lc3NhZ2UgPSAiRXhwb25lbnQgc3ltYm9scyBzaG91bGQgYmUgZm9s
bG93ZWQgYnkgYW4gb3B0aW9uYWwgJysnIG9yICctJyBhbmQgdGhlbiBieSBhdCBsZWFzdCBvbmUg
bnVtYmVyIjsKKyAgICAgICAgICAgIG1fbGV4RXJyb3JNZXNzYWdlID0gQVNDSUlMaXRlcmFsKCJF
eHBvbmVudCBzeW1ib2xzIHNob3VsZCBiZSBmb2xsb3dlZCBieSBhbiBvcHRpb25hbCAnKycgb3Ig
Jy0nIGFuZCB0aGVuIGJ5IGF0IGxlYXN0IG9uZSBudW1iZXIiKTsKICAgICAgICAgICAgIHJldHVy
biBUb2tFcnJvcjsKICAgICAgICAgfQogICAgICAgICAKQEAgLTU1NSw3ICs1NTUsNyBAQCBKU1Zh
bHVlIExpdGVyYWxQYXJzZXI8Q2hhclR5cGU+OjpwYXJzZShQYXJzZXJTdGF0ZSBpbml0aWFsU3Rh
dGUpCiAgICAgICAgICAgICAgICAgVG9rZW5UeXBlIGxhc3RUb2tlbiA9IG1fbGV4ZXIuY3VycmVu
dFRva2VuKCkudHlwZTsKICAgICAgICAgICAgICAgICBpZiAobV9sZXhlci5uZXh0KCkgPT0gVG9r
UkJyYWNrZXQpIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKGxhc3RUb2tlbiA9PSBUb2tDb21t
YSkgewotICAgICAgICAgICAgICAgICAgICAgICAgbV9wYXJzZUVycm9yTWVzc2FnZSA9ICJVbmV4
cGVjdGVkIGNvbW1hIGF0IHRoZSBlbmQgb2YgYXJyYXkgZXhwcmVzc2lvbiI7CisgICAgICAgICAg
ICAgICAgICAgICAgICBtX3BhcnNlRXJyb3JNZXNzYWdlID0gQVNDSUlMaXRlcmFsKCJVbmV4cGVj
dGVkIGNvbW1hIGF0IHRoZSBlbmQgb2YgYXJyYXkgZXhwcmVzc2lvbiIpOwogICAgICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKICAgICAgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgICAgICAgICBtX2xleGVyLm5leHQoKTsKQEAgLTU3NCw3ICs1NzQsNyBAQCBKU1Zh
bHVlIExpdGVyYWxQYXJzZXI8Q2hhclR5cGU+OjpwYXJzZShQYXJzZXJTdGF0ZSBpbml0aWFsU3Rh
dGUpCiAgICAgICAgICAgICAgICAgICAgIGdvdG8gZG9QYXJzZUFycmF5U3RhcnRFeHByZXNzaW9u
OwogCiAgICAgICAgICAgICAgICAgaWYgKG1fbGV4ZXIuY3VycmVudFRva2VuKCkudHlwZSAhPSBU
b2tSQnJhY2tldCkgewotICAgICAgICAgICAgICAgICAgICBtX3BhcnNlRXJyb3JNZXNzYWdlID0g
IkV4cGVjdGVkICddJyI7CisgICAgICAgICAgICAgICAgICAgIG1fcGFyc2VFcnJvck1lc3NhZ2Ug
PSBBU0NJSUxpdGVyYWwoIkV4cGVjdGVkICddJyIpOwogICAgICAgICAgICAgICAgICAgICByZXR1
cm4gSlNWYWx1ZSgpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAKQEAgLTU5
NCw3ICs1OTQsNyBAQCBKU1ZhbHVlIExpdGVyYWxQYXJzZXI8Q2hhclR5cGU+OjpwYXJzZShQYXJz
ZXJTdGF0ZSBpbml0aWFsU3RhdGUpCiAKICAgICAgICAgICAgICAgICAgICAgLy8gQ2hlY2sgZm9y
IGNvbG9uCiAgICAgICAgICAgICAgICAgICAgIGlmIChtX2xleGVyLm5leHQoKSAhPSBUb2tDb2xv
bikgewotICAgICAgICAgICAgICAgICAgICAgICAgbV9wYXJzZUVycm9yTWVzc2FnZSA9ICJFeHBl
Y3RlZCAnOicgYmVmb3JlIHZhbHVlIGluIG9iamVjdCBwcm9wZXJ0eSBkZWZpbml0aW9uIjsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIG1fcGFyc2VFcnJvck1lc3NhZ2UgPSBBU0NJSUxpdGVyYWwo
IkV4cGVjdGVkICc6JyBiZWZvcmUgdmFsdWUgaW4gb2JqZWN0IHByb3BlcnR5IGRlZmluaXRpb24i
KTsKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7CiAgICAgICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgCkBAIC02MDcsNyArNjA3LDcgQEAgSlNW
YWx1ZSBMaXRlcmFsUGFyc2VyPENoYXJUeXBlPjo6cGFyc2UoUGFyc2VyU3RhdGUgaW5pdGlhbFN0
YXRlKQogICAgICAgICAgICAgICAgICAgICBnb3RvIHN0YXJ0UGFyc2VFeHByZXNzaW9uOwogICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBpZiAodHlwZSAhPSBUb2tSQnJhY2UpICB7
Ci0gICAgICAgICAgICAgICAgICAgIG1fcGFyc2VFcnJvck1lc3NhZ2UgPSAiRXhwZWN0ZWQgJ30n
IjsKKyAgICAgICAgICAgICAgICAgICAgbV9wYXJzZUVycm9yTWVzc2FnZSA9IEFTQ0lJTGl0ZXJh
bCgiRXhwZWN0ZWQgJ30nIik7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7
CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIG1fbGV4ZXIubmV4dCgpOwpAQCAt
NjE5LDE0ICs2MTksMTQgQEAgSlNWYWx1ZSBMaXRlcmFsUGFyc2VyPENoYXJUeXBlPjo6cGFyc2Uo
UGFyc2VyU3RhdGUgaW5pdGlhbFN0YXRlKQogICAgICAgICAgICAgY2FzZSBEb1BhcnNlT2JqZWN0
U3RhcnRFeHByZXNzaW9uOiB7CiAgICAgICAgICAgICAgICAgVG9rZW5UeXBlIHR5cGUgPSBtX2xl
eGVyLm5leHQoKTsKICAgICAgICAgICAgICAgICBpZiAodHlwZSAhPSBUb2tTdHJpbmcgJiYgKG1f
bW9kZSA9PSBTdHJpY3RKU09OIHx8IHR5cGUgIT0gVG9rSWRlbnRpZmllcikpIHsKLSAgICAgICAg
ICAgICAgICAgICAgbV9wYXJzZUVycm9yTWVzc2FnZSA9ICJQcm9wZXJ0eSBuYW1lIG11c3QgYmUg
YSBzdHJpbmcgbGl0ZXJhbCI7CisgICAgICAgICAgICAgICAgICAgIG1fcGFyc2VFcnJvck1lc3Nh
Z2UgPSBBU0NJSUxpdGVyYWwoIlByb3BlcnR5IG5hbWUgbXVzdCBiZSBhIHN0cmluZyBsaXRlcmFs
Iik7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7CiAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgICAgIExpdGVyYWxQYXJzZXJUb2tlbjxDaGFyVHlwZT4gaWRlbnRp
ZmllclRva2VuID0gbV9sZXhlci5jdXJyZW50VG9rZW4oKTsKIAogICAgICAgICAgICAgICAgIC8v
IENoZWNrIGZvciBjb2xvbgogICAgICAgICAgICAgICAgIGlmIChtX2xleGVyLm5leHQoKSAhPSBU
b2tDb2xvbikgewotICAgICAgICAgICAgICAgICAgICBtX3BhcnNlRXJyb3JNZXNzYWdlID0gIkV4
cGVjdGVkICc6JyI7CisgICAgICAgICAgICAgICAgICAgIG1fcGFyc2VFcnJvck1lc3NhZ2UgPSBB
U0NJSUxpdGVyYWwoIkV4cGVjdGVkICc6JyIpOwogICAgICAgICAgICAgICAgICAgICByZXR1cm4g
SlNWYWx1ZSgpOwogICAgICAgICAgICAgICAgIH0KIApAQCAtNjQ1LDcgKzY0NSw3IEBAIEpTVmFs
dWUgTGl0ZXJhbFBhcnNlcjxDaGFyVHlwZT46OnBhcnNlKFBhcnNlclN0YXRlIGluaXRpYWxTdGF0
ZSkKICAgICAgICAgICAgICAgICBpZiAobV9sZXhlci5jdXJyZW50VG9rZW4oKS50eXBlID09IFRv
a0NvbW1hKQogICAgICAgICAgICAgICAgICAgICBnb3RvIGRvUGFyc2VPYmplY3RTdGFydEV4cHJl
c3Npb247CiAgICAgICAgICAgICAgICAgaWYgKG1fbGV4ZXIuY3VycmVudFRva2VuKCkudHlwZSAh
PSBUb2tSQnJhY2UpIHsKLSAgICAgICAgICAgICAgICAgICAgbV9wYXJzZUVycm9yTWVzc2FnZSA9
ICJFeHBlY3RlZCAnfSciOworICAgICAgICAgICAgICAgICAgICBtX3BhcnNlRXJyb3JNZXNzYWdl
ID0gQVNDSUlMaXRlcmFsKCJFeHBlY3RlZCAnfSciKTsKICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIEpTVmFsdWUoKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgbV9sZXhl
ci5uZXh0KCk7CkBAIC02OTAsMTAgKzY5MCwxMCBAQCBKU1ZhbHVlIExpdGVyYWxQYXJzZXI8Q2hh
clR5cGU+OjpwYXJzZShQYXJzZXJTdGF0ZSBpbml0aWFsU3RhdGUpCiAgICAgICAgICAgICAgICAg
ICAgICAgICBsYXN0VmFsdWUgPSBqc0Jvb2xlYW4oZmFsc2UpOwogICAgICAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgIGNhc2UgVG9rUkJyYWNrZXQ6Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBtX3BhcnNlRXJyb3JNZXNzYWdlID0gIlVuZXhwZWN0ZWQgdG9r
ZW4gJ10nIjsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fcGFyc2VFcnJvck1lc3NhZ2UgPSBB
U0NJSUxpdGVyYWwoIlVuZXhwZWN0ZWQgdG9rZW4gJ10nIik7CiAgICAgICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gSlNWYWx1ZSgpOwogICAgICAgICAgICAgICAgICAgICBjYXNlIFRva1JCcmFj
ZToKLSAgICAgICAgICAgICAgICAgICAgICAgIG1fcGFyc2VFcnJvck1lc3NhZ2UgPSAiVW5leHBl
Y3RlZCB0b2tlbiAnfSciOworICAgICAgICAgICAgICAgICAgICAgICAgbV9wYXJzZUVycm9yTWVz
c2FnZSA9IEFTQ0lJTGl0ZXJhbCgiVW5leHBlY3RlZCB0b2tlbiAnfSciKTsKICAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7CiAgICAgICAgICAgICAgICAgICAgIGNhc2Ug
VG9rSWRlbnRpZmllcjogewogICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgTGl0ZXJhbFBh
cnNlclRva2VuPENoYXJUeXBlPiYgdG9rZW4gPSBtX2xleGVyLmN1cnJlbnRUb2tlbigpOwpAQCAt
NzA0LDMzICs3MDQsMzMgQEAgSlNWYWx1ZSBMaXRlcmFsUGFyc2VyPENoYXJUeXBlPjo6cGFyc2Uo
UGFyc2VyU3RhdGUgaW5pdGlhbFN0YXRlKQogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IEpTVmFsdWUoKTsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICBj
YXNlIFRva0NvbG9uOgotICAgICAgICAgICAgICAgICAgICAgICAgbV9wYXJzZUVycm9yTWVzc2Fn
ZSA9ICJVbmV4cGVjdGVkIHRva2VuICc6JyI7CisgICAgICAgICAgICAgICAgICAgICAgICBtX3Bh
cnNlRXJyb3JNZXNzYWdlID0gQVNDSUlMaXRlcmFsKCJVbmV4cGVjdGVkIHRva2VuICc6JyIpOwog
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKICAgICAgICAgICAgICAg
ICAgICAgY2FzZSBUb2tMUGFyZW46Ci0gICAgICAgICAgICAgICAgICAgICAgICBtX3BhcnNlRXJy
b3JNZXNzYWdlID0gIlVuZXhwZWN0ZWQgdG9rZW4gJygnIjsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIG1fcGFyc2VFcnJvck1lc3NhZ2UgPSBBU0NJSUxpdGVyYWwoIlVuZXhwZWN0ZWQgdG9rZW4g
JygnIik7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOwogICAgICAg
ICAgICAgICAgICAgICBjYXNlIFRva1JQYXJlbjoKLSAgICAgICAgICAgICAgICAgICAgICAgIG1f
cGFyc2VFcnJvck1lc3NhZ2UgPSAiVW5leHBlY3RlZCB0b2tlbiAnKSciOworICAgICAgICAgICAg
ICAgICAgICAgICAgbV9wYXJzZUVycm9yTWVzc2FnZSA9IEFTQ0lJTGl0ZXJhbCgiVW5leHBlY3Rl
ZCB0b2tlbiAnKSciKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7
CiAgICAgICAgICAgICAgICAgICAgIGNhc2UgVG9rQ29tbWE6Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBtX3BhcnNlRXJyb3JNZXNzYWdlID0gIlVuZXhwZWN0ZWQgdG9rZW4gJywnIjsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIG1fcGFyc2VFcnJvck1lc3NhZ2UgPSBBU0NJSUxpdGVyYWwoIlVu
ZXhwZWN0ZWQgdG9rZW4gJywnIik7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gSlNW
YWx1ZSgpOwogICAgICAgICAgICAgICAgICAgICBjYXNlIFRva0RvdDoKLSAgICAgICAgICAgICAg
ICAgICAgICAgIG1fcGFyc2VFcnJvck1lc3NhZ2UgPSAiVW5leHBlY3RlZCB0b2tlbiAnLiciOwor
ICAgICAgICAgICAgICAgICAgICAgICAgbV9wYXJzZUVycm9yTWVzc2FnZSA9IEFTQ0lJTGl0ZXJh
bCgiVW5leHBlY3RlZCB0b2tlbiAnLiciKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
biBKU1ZhbHVlKCk7CiAgICAgICAgICAgICAgICAgICAgIGNhc2UgVG9rQXNzaWduOgotICAgICAg
ICAgICAgICAgICAgICAgICAgbV9wYXJzZUVycm9yTWVzc2FnZSA9ICJVbmV4cGVjdGVkIHRva2Vu
ICc9JyI7CisgICAgICAgICAgICAgICAgICAgICAgICBtX3BhcnNlRXJyb3JNZXNzYWdlID0gQVND
SUlMaXRlcmFsKCJVbmV4cGVjdGVkIHRva2VuICc9JyIpOwogICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIEpTVmFsdWUoKTsKICAgICAgICAgICAgICAgICAgICAgY2FzZSBUb2tTZW1pOgot
ICAgICAgICAgICAgICAgICAgICAgICAgbV9wYXJzZUVycm9yTWVzc2FnZSA9ICJVbmV4cGVjdGVk
IHRva2VuICc7JyI7CisgICAgICAgICAgICAgICAgICAgICAgICBtX3BhcnNlRXJyb3JNZXNzYWdl
ID0gQVNDSUlMaXRlcmFsKCJVbmV4cGVjdGVkIHRva2VuICc7JyIpOwogICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKICAgICAgICAgICAgICAgICAgICAgY2FzZSBUb2tF
bmQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICBtX3BhcnNlRXJyb3JNZXNzYWdlID0gIlVuZXhw
ZWN0ZWQgRU9GIjsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fcGFyc2VFcnJvck1lc3NhZ2Ug
PSBBU0NJSUxpdGVyYWwoIlVuZXhwZWN0ZWQgRU9GIik7CiAgICAgICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gSlNWYWx1ZSgpOwogICAgICAgICAgICAgICAgICAgICBjYXNlIFRva0Vycm9yOgog
ICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgICAgICAgICAgLy8g
RXJyb3IKLSAgICAgICAgICAgICAgICAgICAgICAgIG1fcGFyc2VFcnJvck1lc3NhZ2UgPSAiQ291
bGQgbm90IHBhcnNlIHZhbHVlIGV4cHJlc3Npb24iOworICAgICAgICAgICAgICAgICAgICAgICAg
bV9wYXJzZUVycm9yTWVzc2FnZSA9IEFTQ0lJTGl0ZXJhbCgiQ291bGQgbm90IHBhcnNlIHZhbHVl
IGV4cHJlc3Npb24iKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7
CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtNzQ4LDUwICs3
NDgsNTAgQEAgSlNWYWx1ZSBMaXRlcmFsUGFyc2VyPENoYXJUeXBlPjo6cGFyc2UoUGFyc2VyU3Rh
dGUgaW5pdGlhbFN0YXRlKQogICAgICAgICAgICAgICAgICAgICAgICAgZ290byBzdGFydFBhcnNl
RXhwcmVzc2lvbjsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICBj
YXNlIFRva1JCcmFja2V0OgotICAgICAgICAgICAgICAgICAgICAgICAgbV9wYXJzZUVycm9yTWVz
c2FnZSA9ICJVbmV4cGVjdGVkIHRva2VuICddJyI7CisgICAgICAgICAgICAgICAgICAgICAgICBt
X3BhcnNlRXJyb3JNZXNzYWdlID0gQVNDSUlMaXRlcmFsKCJVbmV4cGVjdGVkIHRva2VuICddJyIp
OwogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKICAgICAgICAgICAg
ICAgICAgICAgY2FzZSBUb2tMQnJhY2U6Ci0gICAgICAgICAgICAgICAgICAgICAgICBtX3BhcnNl
RXJyb3JNZXNzYWdlID0gIlVuZXhwZWN0ZWQgdG9rZW4gJ3snIjsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIG1fcGFyc2VFcnJvck1lc3NhZ2UgPSBBU0NJSUxpdGVyYWwoIlVuZXhwZWN0ZWQgdG9r
ZW4gJ3snIik7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOwogICAg
ICAgICAgICAgICAgICAgICBjYXNlIFRva1JCcmFjZToKLSAgICAgICAgICAgICAgICAgICAgICAg
IG1fcGFyc2VFcnJvck1lc3NhZ2UgPSAiVW5leHBlY3RlZCB0b2tlbiAnfSciOworICAgICAgICAg
ICAgICAgICAgICAgICAgbV9wYXJzZUVycm9yTWVzc2FnZSA9IEFTQ0lJTGl0ZXJhbCgiVW5leHBl
Y3RlZCB0b2tlbiAnfSciKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVl
KCk7CiAgICAgICAgICAgICAgICAgICAgIGNhc2UgVG9rSWRlbnRpZmllcjoKLSAgICAgICAgICAg
ICAgICAgICAgICAgIG1fcGFyc2VFcnJvck1lc3NhZ2UgPSAiVW5leHBlY3RlZCBpZGVudGlmaWVy
IjsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fcGFyc2VFcnJvck1lc3NhZ2UgPSBBU0NJSUxp
dGVyYWwoIlVuZXhwZWN0ZWQgaWRlbnRpZmllciIpOwogICAgICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIEpTVmFsdWUoKTsKICAgICAgICAgICAgICAgICAgICAgY2FzZSBUb2tDb2xvbjoKLSAg
ICAgICAgICAgICAgICAgICAgICAgIG1fcGFyc2VFcnJvck1lc3NhZ2UgPSAiVW5leHBlY3RlZCB0
b2tlbiAnOiciOworICAgICAgICAgICAgICAgICAgICAgICAgbV9wYXJzZUVycm9yTWVzc2FnZSA9
IEFTQ0lJTGl0ZXJhbCgiVW5leHBlY3RlZCB0b2tlbiAnOiciKTsKICAgICAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBKU1ZhbHVlKCk7CiAgICAgICAgICAgICAgICAgICAgIGNhc2UgVG9rUlBh
cmVuOgotICAgICAgICAgICAgICAgICAgICAgICAgbV9wYXJzZUVycm9yTWVzc2FnZSA9ICJVbmV4
cGVjdGVkIHRva2VuICcpJyI7CisgICAgICAgICAgICAgICAgICAgICAgICBtX3BhcnNlRXJyb3JN
ZXNzYWdlID0gQVNDSUlMaXRlcmFsKCJVbmV4cGVjdGVkIHRva2VuICcpJyIpOwogICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKICAgICAgICAgICAgICAgICAgICAgY2Fz
ZSBUb2tDb21tYToKLSAgICAgICAgICAgICAgICAgICAgICAgIG1fcGFyc2VFcnJvck1lc3NhZ2Ug
PSAiVW5leHBlY3RlZCB0b2tlbiAnLCciOworICAgICAgICAgICAgICAgICAgICAgICAgbV9wYXJz
ZUVycm9yTWVzc2FnZSA9IEFTQ0lJTGl0ZXJhbCgiVW5leHBlY3RlZCB0b2tlbiAnLCciKTsKICAg
ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7CiAgICAgICAgICAgICAgICAg
ICAgIGNhc2UgVG9rVHJ1ZToKLSAgICAgICAgICAgICAgICAgICAgICAgIG1fcGFyc2VFcnJvck1l
c3NhZ2UgPSAiVW5leHBlY3RlZCB0b2tlbiAndHJ1ZSciOworICAgICAgICAgICAgICAgICAgICAg
ICAgbV9wYXJzZUVycm9yTWVzc2FnZSA9IEFTQ0lJTGl0ZXJhbCgiVW5leHBlY3RlZCB0b2tlbiAn
dHJ1ZSciKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7CiAgICAg
ICAgICAgICAgICAgICAgIGNhc2UgVG9rRmFsc2U6Ci0gICAgICAgICAgICAgICAgICAgICAgICBt
X3BhcnNlRXJyb3JNZXNzYWdlID0gIlVuZXhwZWN0ZWQgdG9rZW4gJ2ZhbHNlJyI7CisgICAgICAg
ICAgICAgICAgICAgICAgICBtX3BhcnNlRXJyb3JNZXNzYWdlID0gQVNDSUlMaXRlcmFsKCJVbmV4
cGVjdGVkIHRva2VuICdmYWxzZSciKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBK
U1ZhbHVlKCk7CiAgICAgICAgICAgICAgICAgICAgIGNhc2UgVG9rTnVsbDoKLSAgICAgICAgICAg
ICAgICAgICAgICAgIG1fcGFyc2VFcnJvck1lc3NhZ2UgPSAiVW5leHBlY3RlZCB0b2tlbiAnbnVs
bCciOworICAgICAgICAgICAgICAgICAgICAgICAgbV9wYXJzZUVycm9yTWVzc2FnZSA9IEFTQ0lJ
TGl0ZXJhbCgiVW5leHBlY3RlZCB0b2tlbiAnbnVsbCciKTsKICAgICAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiBKU1ZhbHVlKCk7CiAgICAgICAgICAgICAgICAgICAgIGNhc2UgVG9rRW5kOgot
ICAgICAgICAgICAgICAgICAgICAgICAgbV9wYXJzZUVycm9yTWVzc2FnZSA9ICJVbmV4cGVjdGVk
IEVPRiI7CisgICAgICAgICAgICAgICAgICAgICAgICBtX3BhcnNlRXJyb3JNZXNzYWdlID0gQVND
SUlMaXRlcmFsKCJVbmV4cGVjdGVkIEVPRiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIEpTVmFsdWUoKTsKICAgICAgICAgICAgICAgICAgICAgY2FzZSBUb2tEb3Q6Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBtX3BhcnNlRXJyb3JNZXNzYWdlID0gIlVuZXhwZWN0ZWQgdG9rZW4g
Jy4nIjsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fcGFyc2VFcnJvck1lc3NhZ2UgPSBBU0NJ
SUxpdGVyYWwoIlVuZXhwZWN0ZWQgdG9rZW4gJy4nIik7CiAgICAgICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gSlNWYWx1ZSgpOwogICAgICAgICAgICAgICAgICAgICBjYXNlIFRva0Fzc2lnbjoK
LSAgICAgICAgICAgICAgICAgICAgICAgIG1fcGFyc2VFcnJvck1lc3NhZ2UgPSAiVW5leHBlY3Rl
ZCB0b2tlbiAnPSciOworICAgICAgICAgICAgICAgICAgICAgICAgbV9wYXJzZUVycm9yTWVzc2Fn
ZSA9IEFTQ0lJTGl0ZXJhbCgiVW5leHBlY3RlZCB0b2tlbiAnPSciKTsKICAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7CiAgICAgICAgICAgICAgICAgICAgIGNhc2UgVG9r
U2VtaToKLSAgICAgICAgICAgICAgICAgICAgICAgIG1fcGFyc2VFcnJvck1lc3NhZ2UgPSAiVW5l
eHBlY3RlZCB0b2tlbiAnOyciOworICAgICAgICAgICAgICAgICAgICAgICAgbV9wYXJzZUVycm9y
TWVzc2FnZSA9IEFTQ0lJTGl0ZXJhbCgiVW5leHBlY3RlZCB0b2tlbiAnOyciKTsKICAgICAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7CiAgICAgICAgICAgICAgICAgICAgIGNh
c2UgVG9rRXJyb3I6CiAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBtX3BhcnNlRXJyb3JNZXNzYWdlID0gIkNvdWxkIG5vdCBwYXJzZSBzdGF0ZW1l
bnQiOworICAgICAgICAgICAgICAgICAgICAgICAgbV9wYXJzZUVycm9yTWVzc2FnZSA9IEFTQ0lJ
TGl0ZXJhbCgiQ291bGQgbm90IHBhcnNlIHN0YXRlbWVudCIpOwogICAgICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9
CkBAIC04MDEsNyArODAxLDcgQEAgSlNWYWx1ZSBMaXRlcmFsUGFyc2VyPENoYXJUeXBlPjo6cGFy
c2UoUGFyc2VyU3RhdGUgaW5pdGlhbFN0YXRlKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4g
SlNWYWx1ZSgpOwogICAgICAgICAgICAgICAgIGlmIChtX2xleGVyLm5leHQoKSA9PSBUb2tFbmQp
CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBsYXN0VmFsdWU7Ci0gICAgICAgICAgICAgICAg
bV9wYXJzZUVycm9yTWVzc2FnZSA9ICJVbmV4cGVjdGVkIGNvbnRlbnQgYXQgZW5kIG9mIEpTT04g
bGl0ZXJhbCI7CisgICAgICAgICAgICAgICAgbV9wYXJzZUVycm9yTWVzc2FnZSA9IEFTQ0lJTGl0
ZXJhbCgiVW5leHBlY3RlZCBjb250ZW50IGF0IGVuZCBvZiBKU09OIGxpdGVyYWwiKTsKICAgICAg
ICAgICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAg
ZGVmYXVsdDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xpdGVy
YWxQYXJzZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xpdGVyYWxQYXJzZXIu
aAppbmRleCA2MWE4ZWYzNGRjNjIwMTZjMWRkYzY2OWQ1MzdiOTI5Y2YwZTdkZWZiLi5jMGYzMDhl
ZTVkMTAyNWQzZGYxNzFlYWY5ZDA5NjFhYmJiNmM1NmZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9MaXRlcmFsUGFyc2VyLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvTGl0ZXJhbFBhcnNlci5oCkBAIC0xMDAsNyArMTAwLDcgQEAgcHVibGlj
OgogICAgICAgICAgICAgcmV0dXJuIFN0cmluZzo6Zm9ybWF0KCJKU09OIFBhcnNlIGVycm9yOiAl
cyIsIG1fbGV4ZXIuZ2V0RXJyb3JNZXNzYWdlKCkuYXNjaWkoKS5kYXRhKCkpLmltcGwoKTsKICAg
ICAgICAgaWYgKCFtX3BhcnNlRXJyb3JNZXNzYWdlLmlzRW1wdHkoKSkKICAgICAgICAgICAgIHJl
dHVybiBTdHJpbmc6OmZvcm1hdCgiSlNPTiBQYXJzZSBlcnJvcjogJXMiLCBtX3BhcnNlRXJyb3JN
ZXNzYWdlLmFzY2lpKCkuZGF0YSgpKS5pbXBsKCk7Ci0gICAgICAgIHJldHVybiAiSlNPTiBQYXJz
ZSBlcnJvcjogVW5hYmxlIHRvIHBhcnNlIEpTT04gc3RyaW5nIjsKKyAgICAgICAgcmV0dXJuIEFT
Q0lJTGl0ZXJhbCgiSlNPTiBQYXJzZSBlcnJvcjogVW5hYmxlIHRvIHBhcnNlIEpTT04gc3RyaW5n
Iik7CiAgICAgfQogICAgIAogICAgIEpTVmFsdWUgdHJ5TGl0ZXJhbFBhcnNlKCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlclByb3RvdHlwZS5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJQcm90b3R5cGUuY3BwCmluZGV4IDFk
NzkzOTIyNTI0NmIyZGJlY2U4MjFhM2U0MzFjMGI3ZGJmZmU1YmIuLjRhMTBlZmQ2ZDY0ZGIyODBi
Nzc2MDUyN2QwNzllODljMjUwZTcwYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL051bWJlclByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvTnVtYmVyUHJvdG90eXBlLmNwcApAQCAtMzc4LDcgKzM3OCw3IEBAIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgbnVtYmVyUHJvdG9GdW5jVG9FeHBvbmVudGlhbChFeGVjU3Rh
dGUqIGV4ZWMpCiAgICAgaW50IGRlY2ltYWxQbGFjZXNJbkV4cG9uZW50OwogICAgIGJvb2wgaXNV
bmRlZmluZWQ7CiAgICAgaWYgKCFnZXRJbnRlZ2VyQXJndW1lbnRJblJhbmdlKGV4ZWMsIDAsIDIw
LCBkZWNpbWFsUGxhY2VzSW5FeHBvbmVudCwgaXNVbmRlZmluZWQpKQotICAgICAgICByZXR1cm4g
dGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVJhbmdlRXJyb3IoZXhlYywgInRvRXhwb25lbnRpYWwo
KSBhcmd1bWVudCBtdXN0IGJlIGJldHdlZW4gMCBhbmQgMjAiKSk7CisgICAgICAgIHJldHVybiB0
aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlUmFuZ2VFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoInRv
RXhwb25lbnRpYWwoKSBhcmd1bWVudCBtdXN0IGJlIGJldHdlZW4gMCBhbmQgMjAiKSkpOwogCiAg
ICAgLy8gSGFuZGxlIE5hTiBhbmQgSW5maW5pdHkuCiAgICAgaWYgKCFpc2Zpbml0ZSh4KSkKQEAg
LTQwOSw3ICs0MDksNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG51bWJlclByb3Rv
RnVuY1RvRml4ZWQoRXhlY1N0YXRlKiBleGVjKQogICAgIGludCBkZWNpbWFsUGxhY2VzOwogICAg
IGJvb2wgaXNVbmRlZmluZWQ7IC8vIFRoaXMgaXMgaWdub3JlZDsgdW5kZWZpbmVkIHRyZWF0ZWQg
YXMgMC4KICAgICBpZiAoIWdldEludGVnZXJBcmd1bWVudEluUmFuZ2UoZXhlYywgMCwgMjAsIGRl
Y2ltYWxQbGFjZXMsIGlzVW5kZWZpbmVkKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihl
eGVjLCBjcmVhdGVSYW5nZUVycm9yKGV4ZWMsICJ0b0ZpeGVkKCkgYXJndW1lbnQgbXVzdCBiZSBi
ZXR3ZWVuIDAgYW5kIDIwIikpOworICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNy
ZWF0ZVJhbmdlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJ0b0ZpeGVkKCkgYXJndW1lbnQgbXVz
dCBiZSBiZXR3ZWVuIDAgYW5kIDIwIikpKTsKIAogICAgIC8vIDE1LjcuNC41Ljcgc3RhdGVzICJJ
ZiB4ID49IDEwXjIxLCB0aGVuIGxldCBtID0gVG9TdHJpbmcoeCkiCiAgICAgLy8gVGhpcyBhbHNv
IGNvdmVycyBJbmluaXR5LCBhbmQgc3RydWN0dXJlIHRoZSBjaGVjayBzbyB0aGF0IE5hTgpAQCAt
NDQyLDcgKzQ0Miw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbnVtYmVyUHJvdG9G
dW5jVG9QcmVjaXNpb24oRXhlY1N0YXRlKiBleGVjKQogICAgIGludCBzaWduaWZpY2FudEZpZ3Vy
ZXM7CiAgICAgYm9vbCBpc1VuZGVmaW5lZDsKICAgICBpZiAoIWdldEludGVnZXJBcmd1bWVudElu
UmFuZ2UoZXhlYywgMSwgMjEsIHNpZ25pZmljYW50RmlndXJlcywgaXNVbmRlZmluZWQpKQotICAg
ICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVJhbmdlRXJyb3IoZXhlYywgInRv
UHJlY2lzaW9uKCkgYXJndW1lbnQgbXVzdCBiZSBiZXR3ZWVuIDEgYW5kIDIxIikpOworICAgICAg
ICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVJhbmdlRXJyb3IoZXhlYywgQVNDSUlM
aXRlcmFsKCJ0b1ByZWNpc2lvbigpIGFyZ3VtZW50IG11c3QgYmUgYmV0d2VlbiAxIGFuZCAyMSIp
KSk7CiAKICAgICAvLyBUbyBwcmVjaXNpb24gY2FsbGVkIHdpdGggbm8gYXJndW1lbnQgaXMgdHJl
YXRlZCBhcyBUb1N0cmluZy4KICAgICBpZiAoaXNVbmRlZmluZWQpCkBAIC00OTcsNyArNDk3LDcg
QEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBudW1iZXJQcm90b0Z1bmNUb1N0cmluZyhF
eGVjU3RhdGUqIGV4ZWMpCiAKICAgICBpbnQzMl90IHJhZGl4ID0gZXh0cmFjdFJhZGl4RnJvbUFy
Z3MoZXhlYyk7CiAgICAgaWYgKHJhZGl4IDwgMiB8fCByYWRpeCA+IDM2KQotICAgICAgICByZXR1
cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVJhbmdlRXJyb3IoZXhlYywgInRvU3RyaW5nKCkg
cmFkaXggYXJndW1lbnQgbXVzdCBiZSBiZXR3ZWVuIDIgYW5kIDM2IikpOworICAgICAgICByZXR1
cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVJhbmdlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFs
KCJ0b1N0cmluZygpIHJhZGl4IGFyZ3VtZW50IG11c3QgYmUgYmV0d2VlbiAyIGFuZCAzNiIpKSk7
CiAKICAgICBpbnQzMl90IGludGVnZXJWYWx1ZSA9IHN0YXRpY19jYXN0PGludDMyX3Q+KGRvdWJs
ZVZhbHVlKTsKICAgICBpZiAoaW50ZWdlclZhbHVlID09IGRvdWJsZVZhbHVlKQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwCmluZGV4
IDIxZWNjZDMwZTk5YmJjMGNlZWIyZjllOWUxYTVjN2Y4YjgyNmJlYTYuLjE5ZTkyN2U1NTI1NGU5
NDhjNjI1MTYwZGQwMzgxYzQ4OWJiZmNlMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHAKQEAgLTEzNyw3ICsxMzcsNyBAQCBD
YWxsVHlwZSBPYmplY3RDb25zdHJ1Y3Rvcjo6Z2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERhdGEm
IGNhbGxEYXRhKQogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3Rv
ckdldFByb3RvdHlwZU9mKEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICBpZiAoIWV4ZWMtPmFyZ3Vt
ZW50KDApLmlzT2JqZWN0KCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3Jl
YXRlVHlwZUVycm9yKGV4ZWMsICJSZXF1ZXN0ZWQgcHJvdG90eXBlIG9mIGEgdmFsdWUgdGhhdCBp
cyBub3QgYW4gb2JqZWN0LiIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBj
cmVhdGVUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJSZXF1ZXN0ZWQgcHJvdG90eXBlIG9m
IGEgdmFsdWUgdGhhdCBpcyBub3QgYW4gb2JqZWN0LiIpKSk7CiAgICAgSlNPYmplY3QqIG9iamVj
dCA9IGFzT2JqZWN0KGV4ZWMtPmFyZ3VtZW50KDApKTsKICAgICBpZiAoIW9iamVjdC0+YWxsb3dz
QWNjZXNzRnJvbShleGVjLT50cnVlQ2FsbGVyRnJhbWUoKSkpCiAgICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CkBAIC0xNDcsNyArMTQ3LDcgQEAgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3RvckdldFByb3RvdHlwZU9mKEV4ZWNT
dGF0ZSogZXhlYykKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0
b3JHZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoRXhlY1N0YXRlKiBleGVjKQogewogICAgIGlmICgh
ZXhlYy0+YXJndW1lbnQoMCkuaXNPYmplY3QoKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJv
cihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgIlJlcXVlc3RlZCBwcm9wZXJ0eSBkZXNjcmlw
dG9yIG9mIGEgdmFsdWUgdGhhdCBpcyBub3QgYW4gb2JqZWN0LiIpKTsKKyAgICAgICAgcmV0dXJu
IHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJS
ZXF1ZXN0ZWQgcHJvcGVydHkgZGVzY3JpcHRvciBvZiBhIHZhbHVlIHRoYXQgaXMgbm90IGFuIG9i
amVjdC4iKSkpOwogICAgIFN0cmluZyBwcm9wZXJ0eU5hbWUgPSBleGVjLT5hcmd1bWVudCgxKS50
b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigp
KQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVsbCgpKTsKQEAgLTE3OSw3ICsx
NzksNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9yR2V0
T3duUHJvcGVydHlEZXNjcmlwdG9yKEV4ZWNTdGF0ZQogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBvYmplY3RDb25zdHJ1Y3RvckdldE93blByb3BlcnR5TmFtZXMoRXhlY1N0YXRlKiBleGVj
KQogewogICAgIGlmICghZXhlYy0+YXJndW1lbnQoMCkuaXNPYmplY3QoKSkKLSAgICAgICAgcmV0
dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgIlJlcXVlc3RlZCBw
cm9wZXJ0eSBuYW1lcyBvZiBhIHZhbHVlIHRoYXQgaXMgbm90IGFuIG9iamVjdC4iKSk7CisgICAg
ICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsIEFTQ0lJ
TGl0ZXJhbCgiUmVxdWVzdGVkIHByb3BlcnR5IG5hbWVzIG9mIGEgdmFsdWUgdGhhdCBpcyBub3Qg
YW4gb2JqZWN0LiIpKSk7CiAgICAgUHJvcGVydHlOYW1lQXJyYXkgcHJvcGVydGllcyhleGVjKTsK
ICAgICBhc09iamVjdChleGVjLT5hcmd1bWVudCgwKSktPm1ldGhvZFRhYmxlKCktPmdldE93blBy
b3BlcnR5TmFtZXMoYXNPYmplY3QoZXhlYy0+YXJndW1lbnQoMCkpLCBleGVjLCBwcm9wZXJ0aWVz
LCBJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKTsKICAgICBKU0FycmF5KiBuYW1lcyA9IGNvbnN0
cnVjdEVtcHR5QXJyYXkoZXhlYyk7CkBAIC0xOTMsNyArMTkzLDcgQEAgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3RvckdldE93blByb3BlcnR5TmFtZXMoRXhlY1N0
YXRlKiBleGUKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JL
ZXlzKEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICBpZiAoIWV4ZWMtPmFyZ3VtZW50KDApLmlzT2Jq
ZWN0KCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9y
KGV4ZWMsICJSZXF1ZXN0ZWQga2V5cyBvZiBhIHZhbHVlIHRoYXQgaXMgbm90IGFuIG9iamVjdC4i
KSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4
ZWMsIEFTQ0lJTGl0ZXJhbCgiUmVxdWVzdGVkIGtleXMgb2YgYSB2YWx1ZSB0aGF0IGlzIG5vdCBh
biBvYmplY3QuIikpKTsKICAgICBQcm9wZXJ0eU5hbWVBcnJheSBwcm9wZXJ0aWVzKGV4ZWMpOwog
ICAgIGFzT2JqZWN0KGV4ZWMtPmFyZ3VtZW50KDApKS0+bWV0aG9kVGFibGUoKS0+Z2V0T3duUHJv
cGVydHlOYW1lcyhhc09iamVjdChleGVjLT5hcmd1bWVudCgwKSksIGV4ZWMsIHByb3BlcnRpZXMs
IEV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMpOwogICAgIEpTQXJyYXkqIGtleXMgPSBjb25zdHJ1
Y3RFbXB0eUFycmF5KGV4ZWMpOwpAQCAtMjA3LDcgKzIwNyw3IEBAIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JLZXlzKEV4ZWNTdGF0ZSogZXhlYykKIHN0YXRp
YyBib29sIHRvUHJvcGVydHlEZXNjcmlwdG9yKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBpbiwg
UHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjKQogewogICAgIGlmICghaW4uaXNPYmplY3QoKSkgewot
ICAgICAgICB0aHJvd0Vycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCAiUHJvcGVydHkg
ZGVzY3JpcHRpb24gbXVzdCBiZSBhbiBvYmplY3QuIikpOworICAgICAgICB0aHJvd0Vycm9yKGV4
ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlByb3BlcnR5IGRlc2NyaXB0
aW9uIG11c3QgYmUgYW4gb2JqZWN0LiIpKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9
CiAgICAgSlNPYmplY3QqIGRlc2NyaXB0aW9uID0gYXNPYmplY3QoaW4pOwpAQCAtMjQ5LDcgKzI0
OSw3IEBAIHN0YXRpYyBib29sIHRvUHJvcGVydHlEZXNjcmlwdG9yKEV4ZWNTdGF0ZSogZXhlYywg
SlNWYWx1ZSBpbiwgUHJvcGVydHlEZXNjcmlwdG9yCiAgICAgICAgIGlmICghZ2V0LmlzVW5kZWZp
bmVkKCkpIHsKICAgICAgICAgICAgIENhbGxEYXRhIGNhbGxEYXRhOwogICAgICAgICAgICAgaWYg
KGdldENhbGxEYXRhKGdldCwgY2FsbERhdGEpID09IENhbGxUeXBlTm9uZSkgewotICAgICAgICAg
ICAgICAgIHRocm93RXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsICJHZXR0ZXIgbXVz
dCBiZSBhIGZ1bmN0aW9uLiIpKTsKKyAgICAgICAgICAgICAgICB0aHJvd0Vycm9yKGV4ZWMsIGNy
ZWF0ZVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkdldHRlciBtdXN0IGJlIGEgZnVuY3Rp
b24uIikpKTsKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICB9CiAg
ICAgICAgIH0KQEAgLTI2NCw3ICsyNjQsNyBAQCBzdGF0aWMgYm9vbCB0b1Byb3BlcnR5RGVzY3Jp
cHRvcihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgaW4sIFByb3BlcnR5RGVzY3JpcHRvcgogICAg
ICAgICBpZiAoIXNldC5pc1VuZGVmaW5lZCgpKSB7CiAgICAgICAgICAgICBDYWxsRGF0YSBjYWxs
RGF0YTsKICAgICAgICAgICAgIGlmIChnZXRDYWxsRGF0YShzZXQsIGNhbGxEYXRhKSA9PSBDYWxs
VHlwZU5vbmUpIHsKLSAgICAgICAgICAgICAgICB0aHJvd0Vycm9yKGV4ZWMsIGNyZWF0ZVR5cGVF
cnJvcihleGVjLCAiU2V0dGVyIG11c3QgYmUgYSBmdW5jdGlvbi4iKSk7CisgICAgICAgICAgICAg
ICAgdGhyb3dFcnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJT
ZXR0ZXIgbXVzdCBiZSBhIGZ1bmN0aW9uLiIpKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC0yNzUsMTIgKzI3NSwxMiBAQCBzdGF0
aWMgYm9vbCB0b1Byb3BlcnR5RGVzY3JpcHRvcihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgaW4s
IFByb3BlcnR5RGVzY3JpcHRvcgogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIGlmIChkZXNj
LnZhbHVlKCkpIHsKLSAgICAgICAgdGhyb3dFcnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhl
YywgIkludmFsaWQgcHJvcGVydHkuICAndmFsdWUnIHByZXNlbnQgb24gcHJvcGVydHkgd2l0aCBn
ZXR0ZXIgb3Igc2V0dGVyLiIpKTsKKyAgICAgICAgdGhyb3dFcnJvcihleGVjLCBjcmVhdGVUeXBl
RXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJJbnZhbGlkIHByb3BlcnR5LiAgJ3ZhbHVlJyBwcmVz
ZW50IG9uIHByb3BlcnR5IHdpdGggZ2V0dGVyIG9yIHNldHRlci4iKSkpOwogICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgfQogCiAgICAgaWYgKGRlc2Mud3JpdGFibGVQcmVzZW50KCkpIHsKLSAg
ICAgICAgdGhyb3dFcnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgIkludmFsaWQgcHJv
cGVydHkuICAnd3JpdGFibGUnIHByZXNlbnQgb24gcHJvcGVydHkgd2l0aCBnZXR0ZXIgb3Igc2V0
dGVyLiIpKTsKKyAgICAgICAgdGhyb3dFcnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywg
QVNDSUlMaXRlcmFsKCJJbnZhbGlkIHByb3BlcnR5LiAgJ3dyaXRhYmxlJyBwcmVzZW50IG9uIHBy
b3BlcnR5IHdpdGggZ2V0dGVyIG9yIHNldHRlci4iKSkpOwogICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgfQogICAgIHJldHVybiB0cnVlOwpAQCAtMjg5LDcgKzI4OSw3IEBAIHN0YXRpYyBib29s
IHRvUHJvcGVydHlEZXNjcmlwdG9yKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBpbiwgUHJvcGVy
dHlEZXNjcmlwdG9yCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVj
dG9yRGVmaW5lUHJvcGVydHkoRXhlY1N0YXRlKiBleGVjKQogewogICAgIGlmICghZXhlYy0+YXJn
dW1lbnQoMCkuaXNPYmplY3QoKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBj
cmVhdGVUeXBlRXJyb3IoZXhlYywgIlByb3BlcnRpZXMgY2FuIG9ubHkgYmUgZGVmaW5lZCBvbiBP
YmplY3RzLiIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVUeXBl
RXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJQcm9wZXJ0aWVzIGNhbiBvbmx5IGJlIGRlZmluZWQg
b24gT2JqZWN0cy4iKSkpOwogICAgIEpTT2JqZWN0KiBPID0gYXNPYmplY3QoZXhlYy0+YXJndW1l
bnQoMCkpOwogICAgIFN0cmluZyBwcm9wZXJ0eU5hbWUgPSBleGVjLT5hcmd1bWVudCgxKS50b1N0
cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQpA
QCAtMzQwLDIwICszNDAsMjAgQEAgc3RhdGljIEpTVmFsdWUgZGVmaW5lUHJvcGVydGllcyhFeGVj
U3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBvYmplY3QsIEpTT2JqZWN0KiBwcm8KIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JEZWZpbmVQcm9wZXJ0aWVzKEV4ZWNT
dGF0ZSogZXhlYykKIHsKICAgICBpZiAoIWV4ZWMtPmFyZ3VtZW50KDApLmlzT2JqZWN0KCkpCi0g
ICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsICJQ
cm9wZXJ0aWVzIGNhbiBvbmx5IGJlIGRlZmluZWQgb24gT2JqZWN0cy4iKSk7CisgICAgICAgIHJl
dHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJh
bCgiUHJvcGVydGllcyBjYW4gb25seSBiZSBkZWZpbmVkIG9uIE9iamVjdHMuIikpKTsKICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGRlZmluZVByb3BlcnRpZXMoZXhlYywgYXNPYmplY3QoZXhl
Yy0+YXJndW1lbnQoMCkpLCBleGVjLT5hcmd1bWVudCgxKS50b09iamVjdChleGVjKSkpOwogfQog
CiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9yQ3JlYXRlKEV4
ZWNTdGF0ZSogZXhlYykKIHsKICAgICBpZiAoIWV4ZWMtPmFyZ3VtZW50KDApLmlzT2JqZWN0KCkg
JiYgIWV4ZWMtPmFyZ3VtZW50KDApLmlzTnVsbCgpKQotICAgICAgICByZXR1cm4gdGhyb3dWTUVy
cm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCAiT2JqZWN0IHByb3RvdHlwZSBtYXkgb25s
eSBiZSBhbiBPYmplY3Qgb3IgbnVsbC4iKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Io
ZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiT2JqZWN0IHByb3RvdHlw
ZSBtYXkgb25seSBiZSBhbiBPYmplY3Qgb3IgbnVsbC4iKSkpOwogICAgIEpTVmFsdWUgcHJvdG8g
PSBleGVjLT5hcmd1bWVudCgwKTsKICAgICBKU09iamVjdCogbmV3T2JqZWN0ID0gcHJvdG8uaXNP
YmplY3QoKSA/IGNvbnN0cnVjdEVtcHR5T2JqZWN0KGV4ZWMsIGFzT2JqZWN0KHByb3RvKS0+aW5o
ZXJpdG9ySUQoZXhlYy0+Z2xvYmFsRGF0YSgpKSkgOiBjb25zdHJ1Y3RFbXB0eU9iamVjdChleGVj
LCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPm51bGxQcm90b3R5cGVPYmplY3RTdHJ1Y3R1
cmUoKSk7CiAgICAgaWYgKGV4ZWMtPmFyZ3VtZW50KDEpLmlzVW5kZWZpbmVkKCkpCiAgICAgICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUobmV3T2JqZWN0KTsKICAgICBpZiAoIWV4ZWMtPmFyZ3Vt
ZW50KDEpLmlzT2JqZWN0KCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3Jl
YXRlVHlwZUVycm9yKGV4ZWMsICJQcm9wZXJ0eSBkZXNjcmlwdG9yIGxpc3QgbXVzdCBiZSBhbiBP
YmplY3QuIikpOworICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVR5cGVF
cnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlByb3BlcnR5IGRlc2NyaXB0b3IgbGlzdCBtdXN0IGJl
IGFuIE9iamVjdC4iKSkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoZGVmaW5lUHJvcGVy
dGllcyhleGVjLCBuZXdPYmplY3QsIGFzT2JqZWN0KGV4ZWMtPmFyZ3VtZW50KDEpKSkpOwogfQog
CkBAIC0zNjIsNyArMzYyLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RD
b25zdHJ1Y3RvclNlYWwoRXhlY1N0YXRlKiBleGVjKQogICAgIC8vIDEuIElmIFR5cGUoTykgaXMg
bm90IE9iamVjdCB0aHJvdyBhIFR5cGVFcnJvciBleGNlcHRpb24uCiAgICAgSlNWYWx1ZSBvYmog
PSBleGVjLT5hcmd1bWVudCgwKTsKICAgICBpZiAoIW9iai5pc09iamVjdCgpKQotICAgICAgICBy
ZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCAiT2JqZWN0LnNl
YWwgY2FuIG9ubHkgYmUgY2FsbGVkIG9uIE9iamVjdHMuIikpOworICAgICAgICByZXR1cm4gdGhy
b3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIk9iamVj
dC5zZWFsIGNhbiBvbmx5IGJlIGNhbGxlZCBvbiBPYmplY3RzLiIpKSk7CiAgICAgSlNPYmplY3Qq
IG9iamVjdCA9IGFzT2JqZWN0KG9iaik7CiAKICAgICBpZiAoaXNKU0ZpbmFsT2JqZWN0KG9iamVj
dCkpIHsKQEAgLTM5OSw3ICszOTksNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9i
amVjdENvbnN0cnVjdG9yRnJlZXplKEV4ZWNTdGF0ZSogZXhlYykKICAgICAvLyAxLiBJZiBUeXBl
KE8pIGlzIG5vdCBPYmplY3QgdGhyb3cgYSBUeXBlRXJyb3IgZXhjZXB0aW9uLgogICAgIEpTVmFs
dWUgb2JqID0gZXhlYy0+YXJndW1lbnQoMCk7CiAgICAgaWYgKCFvYmouaXNPYmplY3QoKSkKLSAg
ICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgIk9i
amVjdC5mcmVlemUgY2FuIG9ubHkgYmUgY2FsbGVkIG9uIE9iamVjdHMuIikpOworICAgICAgICBy
ZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVy
YWwoIk9iamVjdC5mcmVlemUgY2FuIG9ubHkgYmUgY2FsbGVkIG9uIE9iamVjdHMuIikpKTsKICAg
ICBKU09iamVjdCogb2JqZWN0ID0gYXNPYmplY3Qob2JqKTsKIAogICAgIGlmIChpc0pTRmluYWxP
YmplY3Qob2JqZWN0KSkgewpAQCAtNDM5LDcgKzQzOSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JQcmV2ZW50RXh0ZW5zaW9ucyhFeGVjU3RhdGUqIGV4
ZWMpCiB7CiAgICAgSlNWYWx1ZSBvYmogPSBleGVjLT5hcmd1bWVudCgwKTsKICAgICBpZiAoIW9i
ai5pc09iamVjdCgpKQotICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVR5
cGVFcnJvcihleGVjLCAiT2JqZWN0LnByZXZlbnRFeHRlbnNpb25zIGNhbiBvbmx5IGJlIGNhbGxl
ZCBvbiBPYmplY3RzLiIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVh
dGVUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJPYmplY3QucHJldmVudEV4dGVuc2lvbnMg
Y2FuIG9ubHkgYmUgY2FsbGVkIG9uIE9iamVjdHMuIikpKTsKICAgICBhc09iamVjdChvYmopLT5w
cmV2ZW50RXh0ZW5zaW9ucyhleGVjLT5nbG9iYWxEYXRhKCkpOwogICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUob2JqKTsKIH0KQEAgLTQ0OSw3ICs0NDksNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9ySXNTZWFsZWQoRXhlY1N0YXRlKiBleGVjKQogICAg
IC8vIDEuIElmIFR5cGUoTykgaXMgbm90IE9iamVjdCB0aHJvdyBhIFR5cGVFcnJvciBleGNlcHRp
b24uCiAgICAgSlNWYWx1ZSBvYmogPSBleGVjLT5hcmd1bWVudCgwKTsKICAgICBpZiAoIW9iai5p
c09iamVjdCgpKQotICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVR5cGVF
cnJvcihleGVjLCAiT2JqZWN0LmlzU2VhbGVkIGNhbiBvbmx5IGJlIGNhbGxlZCBvbiBPYmplY3Rz
LiIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3Io
ZXhlYywgQVNDSUlMaXRlcmFsKCJPYmplY3QuaXNTZWFsZWQgY2FuIG9ubHkgYmUgY2FsbGVkIG9u
IE9iamVjdHMuIikpKTsKICAgICBKU09iamVjdCogb2JqZWN0ID0gYXNPYmplY3Qob2JqKTsKIAog
ICAgIGlmIChpc0pTRmluYWxPYmplY3Qob2JqZWN0KSkKQEAgLTQ3OSw3ICs0NzksNyBAQCBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9ySXNGcm96ZW4oRXhlY1N0
YXRlKiBleGVjKQogICAgIC8vIDEuIElmIFR5cGUoTykgaXMgbm90IE9iamVjdCB0aHJvdyBhIFR5
cGVFcnJvciBleGNlcHRpb24uCiAgICAgSlNWYWx1ZSBvYmogPSBleGVjLT5hcmd1bWVudCgwKTsK
ICAgICBpZiAoIW9iai5pc09iamVjdCgpKQotICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4
ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCAiT2JqZWN0LmlzRnJvemVuIGNhbiBvbmx5IGJlIGNh
bGxlZCBvbiBPYmplY3RzLiIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBj
cmVhdGVUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJPYmplY3QuaXNGcm96ZW4gY2FuIG9u
bHkgYmUgY2FsbGVkIG9uIE9iamVjdHMuIikpKTsKICAgICBKU09iamVjdCogb2JqZWN0ID0gYXNP
YmplY3Qob2JqKTsKIAogICAgIGlmIChpc0pTRmluYWxPYmplY3Qob2JqZWN0KSkKQEAgLTUwOSw3
ICs1MDksNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9y
SXNFeHRlbnNpYmxlKEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICBKU1ZhbHVlIG9iaiA9IGV4ZWMt
PmFyZ3VtZW50KDApOwogICAgIGlmICghb2JqLmlzT2JqZWN0KCkpCi0gICAgICAgIHJldHVybiB0
aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsICJPYmplY3QuaXNFeHRlbnNp
YmxlIGNhbiBvbmx5IGJlIGNhbGxlZCBvbiBPYmplY3RzLiIpKTsKKyAgICAgICAgcmV0dXJuIHRo
cm93Vk1FcnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJPYmpl
Y3QuaXNFeHRlbnNpYmxlIGNhbiBvbmx5IGJlIGNhbGxlZCBvbiBPYmplY3RzLiIpKSk7CiAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4oYXNPYmplY3Qob2JqKS0+aXNFeHRlbnNp
YmxlKCkpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
T2JqZWN0UHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVj
dFByb3RvdHlwZS5jcHAKaW5kZXggNmZhYTE2ODQ4NWRiY2YwMGFmOGY2NzQ1ZjBiYzVlZjBkYWJi
MDgxMi4uNWFmYjBkMmYwODQ2YzdlZGM0YjA2MTY1Mzk1NzE5ZTU0NzA4ZGZlZSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0UHJvdG90eXBlLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RQcm90b3R5cGUuY3BwCkBAIC0x
NTcsNyArMTU3LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RQcm90b0Z1
bmNEZWZpbmVHZXR0ZXIoRXhlY1N0YXRlKiBleGVjKQogICAgIEpTVmFsdWUgZ2V0ID0gZXhlYy0+
YXJndW1lbnQoMSk7CiAgICAgQ2FsbERhdGEgY2FsbERhdGE7CiAgICAgaWYgKGdldENhbGxEYXRh
KGdldCwgY2FsbERhdGEpID09IENhbGxUeXBlTm9uZSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1F
cnJvcihleGVjLCBjcmVhdGVTeW50YXhFcnJvcihleGVjLCAiaW52YWxpZCBnZXR0ZXIgdXNhZ2Ui
KSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlU3ludGF4RXJyb3Io
ZXhlYywgQVNDSUlMaXRlcmFsKCJpbnZhbGlkIGdldHRlciB1c2FnZSIpKSk7CiAKICAgICBQcm9w
ZXJ0eURlc2NyaXB0b3IgZGVzY3JpcHRvcjsKICAgICBkZXNjcmlwdG9yLnNldEdldHRlcihnZXQp
OwpAQCAtMTc3LDcgKzE3Nyw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0
UHJvdG9GdW5jRGVmaW5lU2V0dGVyKEV4ZWNTdGF0ZSogZXhlYykKICAgICBKU1ZhbHVlIHNldCA9
IGV4ZWMtPmFyZ3VtZW50KDEpOwogICAgIENhbGxEYXRhIGNhbGxEYXRhOwogICAgIGlmIChnZXRD
YWxsRGF0YShzZXQsIGNhbGxEYXRhKSA9PSBDYWxsVHlwZU5vbmUpCi0gICAgICAgIHJldHVybiB0
aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlU3ludGF4RXJyb3IoZXhlYywgImludmFsaWQgc2V0dGVy
IHVzYWdlIikpOworICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVN5bnRh
eEVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiaW52YWxpZCBzZXR0ZXIgdXNhZ2UiKSkpOwogCiAg
ICAgUHJvcGVydHlEZXNjcmlwdG9yIGRlc2NyaXB0b3I7CiAgICAgZGVzY3JpcHRvci5zZXRTZXR0
ZXIoc2V0KTsKQEAgLTI0Nyw3ICsyNDcsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IG9iamVjdFByb3RvRnVuY1RvU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICBKU1ZhbHVl
IHRoaXNWYWx1ZSA9IGV4ZWMtPmhvc3RUaGlzVmFsdWUoKTsKICAgICBpZiAodGhpc1ZhbHVlLmlz
VW5kZWZpbmVkT3JOdWxsKCkpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOb250
cml2aWFsU3RyaW5nKGV4ZWMsIHRoaXNWYWx1ZS5pc1VuZGVmaW5lZCgpID8gIltvYmplY3QgVW5k
ZWZpbmVkXSIgOiAiW29iamVjdCBOdWxsXSIpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc05vbnRyaXZpYWxTdHJpbmcoZXhlYywgU3RyaW5nKHRoaXNWYWx1ZS5pc1VuZGVmaW5l
ZCgpID8gQVNDSUlMaXRlcmFsKCJbb2JqZWN0IFVuZGVmaW5lZF0iKSA6IEFTQ0lJTGl0ZXJhbCgi
W29iamVjdCBOdWxsXSIpKSkpOwogICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0gdGhpc1ZhbHVl
LnRvT2JqZWN0KGV4ZWMpOwogCiAgICAgSlNTdHJpbmcqIHJlc3VsdCA9IHRoaXNPYmplY3QtPnN0
cnVjdHVyZSgpLT5vYmplY3RUb1N0cmluZ1ZhbHVlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9SZWdFeHBDb25zdHJ1Y3Rvci5jcHAKaW5kZXggNTdlZTdkZjE0YjQ5
NzRiZGQ0MTJkNGM2MjBlZTk0YzAxYzBjOGJkZC4uMTI0OGZiNGRhZWEwMTQ5NzRjMTMyYTA4OTM0
MzVlYTY5MjMzZWI3NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
UmVnRXhwQ29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1JlZ0V4cENvbnN0cnVjdG9yLmNwcApAQCAtMjYyLDcgKzI2Miw3IEBAIEpTT2JqZWN0KiBjb25z
dHJ1Y3RSZWdFeHAoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBjb25zdCBBCiAKICAgICBpZiAoYXJnMC5pbmhlcml0cygmUmVnRXhwT2JqZWN0OjpzX2luZm8p
KSB7CiAgICAgICAgIGlmICghYXJnMS5pc1VuZGVmaW5lZCgpKQotICAgICAgICAgICAgcmV0dXJu
IHRocm93RXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsICJDYW5ub3Qgc3VwcGx5IGZs
YWdzIHdoZW4gY29uc3RydWN0aW5nIG9uZSBSZWdFeHAgZnJvbSBhbm90aGVyLiIpKTsKKyAgICAg
ICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCBBU0NJ
SUxpdGVyYWwoIkNhbm5vdCBzdXBwbHkgZmxhZ3Mgd2hlbiBjb25zdHJ1Y3Rpbmcgb25lIFJlZ0V4
cCBmcm9tIGFub3RoZXIuIikpKTsKICAgICAgICAgLy8gSWYgY2FsbGVkIGFzIGEgZnVuY3Rpb24s
IHRoaXMganVzdCByZXR1cm5zIHRoZSBmaXJzdCBhcmd1bWVudCAoc2VlIDE1LjEwLjMuMSkuCiAg
ICAgICAgIGlmIChjYWxsQXNDb25zdHJ1Y3RvcikgewogICAgICAgICAgICAgUmVnRXhwKiByZWdF
eHAgPSBzdGF0aWNfY2FzdDxSZWdFeHBPYmplY3QqPihhc09iamVjdChhcmcwKSktPnJlZ0V4cCgp
OwpAQCAtMjgxLDcgKzI4MSw3IEBAIEpTT2JqZWN0KiBjb25zdHJ1Y3RSZWdFeHAoRXhlY1N0YXRl
KiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBBCiAgICAgICAgIGlm
IChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICBp
ZiAoZmxhZ3MgPT0gSW52YWxpZEZsYWdzKQotICAgICAgICAgICAgcmV0dXJuIHRocm93RXJyb3Io
ZXhlYywgY3JlYXRlU3ludGF4RXJyb3IoZXhlYywgIkludmFsaWQgZmxhZ3Mgc3VwcGxpZWQgdG8g
UmVnRXhwIGNvbnN0cnVjdG9yLiIpKTsKKyAgICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGV4
ZWMsIGNyZWF0ZVN5bnRheEVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiSW52YWxpZCBmbGFncyBz
dXBwbGllZCB0byBSZWdFeHAgY29uc3RydWN0b3IuIikpKTsKICAgICB9CiAKICAgICBSZWdFeHAq
IHJlZ0V4cCA9IFJlZ0V4cDo6Y3JlYXRlKGV4ZWMtPmdsb2JhbERhdGEoKSwgcGF0dGVybiwgZmxh
Z3MpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwT2Jq
ZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVjdC5jcHAK
aW5kZXggNmZkOWRiMjljMDRhYTM2YjkzZWJmY2M4YjE1NGZjZGZkZTAzYmIwZS4uYjM0NmM3NzY5
NTUyZTVhNzc4MTY1NjgyNGIzMDQ4ZWY1YjM2ZTFmZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9SZWdFeHBPYmplY3QuY3BwCkBAIC0xMzAsNyArMTMwLDcgQEAgdm9pZCBS
ZWdFeHBPYmplY3Q6OmdldFByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRl
KiBleGVjLCBQcm9wZXJ0eU4KIHN0YXRpYyBib29sIHJlamVjdChFeGVjU3RhdGUqIGV4ZWMsIGJv
b2wgdGhyb3dFeGNlcHRpb24sIGNvbnN0IGNoYXIqIG1lc3NhZ2UpCiB7CiAgICAgaWYgKHRocm93
RXhjZXB0aW9uKQotICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBtZXNzYWdlKTsKKyAgICAg
ICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKG1lc3NhZ2UpKTsKICAgICByZXR1
cm4gZmFsc2U7CiB9CiAKQEAgLTE5MSw3ICsxOTEsNyBAQCBKU1ZhbHVlIHJlZ0V4cE9iamVjdFNv
dXJjZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIFByb3BlcnR5TmFtZSkKICAg
ICAvLyBzb3VyY2UgY2Fubm90IGV2ZXIgdmFsaWRseSBiZSAiIi4gSWYgdGhlIHNvdXJjZSBpcyBl
bXB0eSwgcmV0dXJuIGEgZGlmZmVyZW50IFBhdHRlcm4KICAgICAvLyB0aGF0IHdvdWxkIG1hdGNo
IHRoZSBzYW1lIHRoaW5nLgogICAgIGlmICghbGVuZ3RoKQotICAgICAgICByZXR1cm4ganNTdHJp
bmcoZXhlYywgIig/OikiKTsKKyAgICAgICAgcmV0dXJuIGpzTm9udHJpdmlhbFN0cmluZyhleGVj
LCBBU0NJSUxpdGVyYWwoIig/OikiKSk7CiAKICAgICAvLyBlYXJseSByZXR1cm4gZm9yIHN0cmlu
Z3MgdGhhdCBkb24ndCBjb250YWluIGEgZm9yd2FyZHMgc2xhc2ggYW5kIExpbmVUZXJtaW5hdG9y
CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7CkBAIC0yNTEsOSAr
MjUxLDkgQEAgSlNWYWx1ZSByZWdFeHBPYmplY3RTb3VyY2UoRXhlY1N0YXRlKiBleGVjLCBKU1Zh
bHVlIHNsb3RCYXNlLCBQcm9wZXJ0eU5hbWUpCiAgICAgICAgICAgICBlbHNlIGlmIChjaCA9PSAn
XHInKQogICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJ3InKTsKICAgICAgICAgICAgIGVs
c2UgaWYgKGNoID09IDB4MjAyOCkKLSAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCJ1MjAy
OCIpOworICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmRMaXRlcmFsKCJ1MjAyOCIpOwogICAg
ICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoInUyMDI5Iik7Cisg
ICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZExpdGVyYWwoInUyMDI5Iik7CiAgICAgICAgIH0g
ZWxzZQogICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChjaCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cFByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBQcm90b3R5cGUuY3BwCmluZGV4IGMyMmU2ZDAzOWQz
Mjk5MWYyNDcyZWE5MjU1NTNlMGMxYmEyMzYxMzAuLjNjNzQyYTBkMzA1MTUwN2EzMTVhODdiNGZk
MzUyNzI4OTRjYmQxYTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1JlZ0V4cFByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
UmVnRXhwUHJvdG90eXBlLmNwcApAQCAtMTA2LDcgKzEwNiw3IEBAIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgcmVnRXhwUHJvdG9GdW5jQ29tcGlsZShFeGVjU3RhdGUqIGV4ZWMpCiAgICAg
CiAgICAgaWYgKGFyZzAuaW5oZXJpdHMoJlJlZ0V4cE9iamVjdDo6c19pbmZvKSkgewogICAgICAg
ICBpZiAoIWFyZzEuaXNVbmRlZmluZWQoKSkKLSAgICAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJy
b3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsICJDYW5ub3Qgc3VwcGx5IGZsYWdzIHdoZW4g
Y29uc3RydWN0aW5nIG9uZSBSZWdFeHAgZnJvbSBhbm90aGVyLiIpKTsKKyAgICAgICAgICAgIHJl
dHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJh
bCgiQ2Fubm90IHN1cHBseSBmbGFncyB3aGVuIGNvbnN0cnVjdGluZyBvbmUgUmVnRXhwIGZyb20g
YW5vdGhlci4iKSkpOwogICAgICAgICByZWdFeHAgPSBhc1JlZ0V4cE9iamVjdChhcmcwKS0+cmVn
RXhwKCk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgU3RyaW5nIHBhdHRlcm4gPSAhZXhlYy0+YXJn
dW1lbnRDb3VudCgpID8gU3RyaW5nKCIiKSA6IGFyZzAudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4
ZWMpOwpAQCAtMTE5LDcgKzExOSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVn
RXhwUHJvdG9GdW5jQ29tcGlsZShFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgICAgICBpZiAoZXhl
Yy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc1VuZGVmaW5lZCgpKTsKICAgICAgICAgICAgIGlmIChmbGFncyA9PSBJbnZhbGlkRmxhZ3Mp
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVTeW50YXhF
cnJvcihleGVjLCAiSW52YWxpZCBmbGFncyBzdXBwbGllZCB0byBSZWdFeHAgY29uc3RydWN0b3Iu
IikpOworICAgICAgICAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlU3lu
dGF4RXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJJbnZhbGlkIGZsYWdzIHN1cHBsaWVkIHRvIFJl
Z0V4cCBjb25zdHJ1Y3Rvci4iKSkpOwogICAgICAgICB9CiAgICAgICAgIHJlZ0V4cCA9IFJlZ0V4
cDo6Y3JlYXRlKGV4ZWMtPmdsb2JhbERhdGEoKSwgcGF0dGVybiwgZmxhZ3MpOwogICAgIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdC5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3QuY3BwCmluZGV4IDZj
MWYxNmQ2M2ViN2ZiMjliOGQwNTFkZjE0MGJjZDMwZWZkYTI1NzkuLjExM2RlZTE2NWM1MTE0ODQ1
MGQxNGM2YmQ2YjY1Y2M2MDY3NjY0OWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N0cmluZ09iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU3RyaW5nT2JqZWN0LmNwcApAQCAtODUsMjcgKzg1LDI3IEBAIGJvb2wgU3RyaW5nT2Jq
ZWN0OjpkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMs
IFByb3BlcnR5CiAgICAgaWYgKHByb3BlcnR5TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCku
bGVuZ3RoKSB7CiAgICAgICAgIGlmICghb2JqZWN0LT5pc0V4dGVuc2libGUoKSkgewogICAgICAg
ICAgICAgaWYgKHRocm93RXhjZXB0aW9uKQotICAgICAgICAgICAgICAgIHRocm93RXJyb3IoZXhl
YywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsICJBdHRlbXB0aW5nIHRvIGRlZmluZSBwcm9wZXJ0eSBv
biBvYmplY3QgdGhhdCBpcyBub3QgZXh0ZW5zaWJsZS4iKSk7CisgICAgICAgICAgICAgICAgdGhy
b3dFcnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJBdHRlbXB0
aW5nIHRvIGRlZmluZSBwcm9wZXJ0eSBvbiBvYmplY3QgdGhhdCBpcyBub3QgZXh0ZW5zaWJsZS4i
KSkpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAgICAgIGlmIChk
ZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZVByZXNlbnQoKSAmJiBkZXNjcmlwdG9yLmNvbmZpZ3VyYWJs
ZSgpKSB7CiAgICAgICAgICAgICBpZiAodGhyb3dFeGNlcHRpb24pCi0gICAgICAgICAgICAgICAg
dGhyb3dFcnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgIkF0dGVtcHRpbmcgdG8gY29u
ZmlndXJhYmxlIGF0dHJpYnV0ZSBvZiB1bmNvbmZpZ3VyYWJsZSBwcm9wZXJ0eS4iKSk7CisgICAg
ICAgICAgICAgICAgdGhyb3dFcnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgQVNDSUlM
aXRlcmFsKCJBdHRlbXB0aW5nIHRvIGNvbmZpZ3VyYWJsZSBhdHRyaWJ1dGUgb2YgdW5jb25maWd1
cmFibGUgcHJvcGVydHkuIikpKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAg
fQogICAgICAgICBpZiAoZGVzY3JpcHRvci5lbnVtZXJhYmxlUHJlc2VudCgpICYmIGRlc2NyaXB0
b3IuZW51bWVyYWJsZSgpKSB7CiAgICAgICAgICAgICBpZiAodGhyb3dFeGNlcHRpb24pCi0gICAg
ICAgICAgICAgICAgdGhyb3dFcnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgIkF0dGVt
cHRpbmcgdG8gY2hhbmdlIGVudW1lcmFibGUgYXR0cmlidXRlIG9mIHVuY29uZmlndXJhYmxlIHBy
b3BlcnR5LiIpKTsKKyAgICAgICAgICAgICAgICB0aHJvd0Vycm9yKGV4ZWMsIGNyZWF0ZVR5cGVF
cnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkF0dGVtcHRpbmcgdG8gY2hhbmdlIGVudW1lcmFibGUg
YXR0cmlidXRlIG9mIHVuY29uZmlndXJhYmxlIHByb3BlcnR5LiIpKSk7CiAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICAgICAgaWYgKGRlc2NyaXB0b3IuaXNBY2Nlc3Nv
ckRlc2NyaXB0b3IoKSkgewogICAgICAgICAgICAgaWYgKHRocm93RXhjZXB0aW9uKQotICAgICAg
ICAgICAgICAgIHRocm93RXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsICJBdHRlbXB0
aW5nIHRvIGNoYW5nZSBhY2Nlc3MgbWVjaGFuaXNtIGZvciBhbiB1bmNvbmZpZ3VyYWJsZSBwcm9w
ZXJ0eS4iKSk7CisgICAgICAgICAgICAgICAgdGhyb3dFcnJvcihleGVjLCBjcmVhdGVUeXBlRXJy
b3IoZXhlYywgQVNDSUlMaXRlcmFsKCJBdHRlbXB0aW5nIHRvIGNoYW5nZSBhY2Nlc3MgbWVjaGFu
aXNtIGZvciBhbiB1bmNvbmZpZ3VyYWJsZSBwcm9wZXJ0eS4iKSkpOwogICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAgICAgIGlmIChkZXNjcmlwdG9yLndyaXRhYmxlUHJl
c2VudCgpICYmIGRlc2NyaXB0b3Iud3JpdGFibGUoKSkgewogICAgICAgICAgICAgaWYgKHRocm93
RXhjZXB0aW9uKQotICAgICAgICAgICAgICAgIHRocm93RXJyb3IoZXhlYywgY3JlYXRlVHlwZUVy
cm9yKGV4ZWMsICJBdHRlbXB0aW5nIHRvIGNoYW5nZSB3cml0YWJsZSBhdHRyaWJ1dGUgb2YgdW5j
b25maWd1cmFibGUgcHJvcGVydHkuIikpOworICAgICAgICAgICAgICAgIHRocm93RXJyb3IoZXhl
YywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiQXR0ZW1wdGluZyB0byBjaGFu
Z2Ugd3JpdGFibGUgYXR0cmlidXRlIG9mIHVuY29uZmlndXJhYmxlIHByb3BlcnR5LiIpKSk7CiAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICAgICAgaWYgKCFkZXNjcmlw
dG9yLnZhbHVlKCkpCkBAIC0xMTMsNyArMTEzLDcgQEAgYm9vbCBTdHJpbmdPYmplY3Q6OmRlZmlu
ZU93blByb3BlcnR5KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHkK
ICAgICAgICAgaWYgKHByb3BlcnR5TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3Ro
ICYmIHNhbWVWYWx1ZShleGVjLCBkZXNjcmlwdG9yLnZhbHVlKCksIGpzTnVtYmVyKHRoaXNPYmpl
Y3QtPmludGVybmFsVmFsdWUoKS0+bGVuZ3RoKCkpKSkKICAgICAgICAgICAgIHJldHVybiB0cnVl
OwogICAgICAgICBpZiAodGhyb3dFeGNlcHRpb24pCi0gICAgICAgICAgICB0aHJvd0Vycm9yKGV4
ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCAiQXR0ZW1wdGluZyB0byBjaGFuZ2UgdmFsdWUgb2Yg
YSByZWFkb25seSBwcm9wZXJ0eS4iKSk7CisgICAgICAgICAgICB0aHJvd0Vycm9yKGV4ZWMsIGNy
ZWF0ZVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkF0dGVtcHRpbmcgdG8gY2hhbmdlIHZh
bHVlIG9mIGEgcmVhZG9ubHkgcHJvcGVydHkuIikpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5n
UHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3Rv
dHlwZS5jcHAKaW5kZXggYTFlMDEzMzljYzAxNDI4ZGJiZTMyODlhOWM1ZjRiZjc3NWUzZDI1Zi4u
NzM2MzNhNjBiMzM0MTNjZjA1YTYzYTAxMGE4ZDJkZTY4MzAzMjRjMSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3BwCkBAIC0yODcsNyAr
Mjg3LDcgQEAgc3RhdGljIEFMV0FZU19JTkxJTkUgSlNWYWx1ZSBqc1NwbGljZVN1YnN0cmluZ3Mo
RXhlY1N0YXRlKiBleGVjLCBKU1N0cmluZyogc291cmMKICAgICAgICAgdG90YWxMZW5ndGggKz0g
c3Vic3RyaW5nUmFuZ2VzW2ldLmxlbmd0aDsKIAogICAgIGlmICghdG90YWxMZW5ndGgpCi0gICAg
ICAgIHJldHVybiBqc1N0cmluZyhleGVjLCAiIik7CisgICAgICAgIHJldHVybiBqc0VtcHR5U3Ry
aW5nKGV4ZWMpOwogCiAgICAgaWYgKHNvdXJjZS5pczhCaXQoKSkgewogICAgICAgICBMQ2hhciog
YnVmZmVyOwpAQCAtMzQ4LDcgKzM0OCw3IEBAIHN0YXRpYyBBTFdBWVNfSU5MSU5FIEpTVmFsdWUg
anNTcGxpY2VTdWJzdHJpbmdzV2l0aFNlcGFyYXRvcnMoRXhlY1N0YXRlKiBleGVjLCBKCiAgICAg
fQogCiAgICAgaWYgKCF0b3RhbExlbmd0aCkKLSAgICAgICAgcmV0dXJuIGpzU3RyaW5nKGV4ZWMs
ICIiKTsKKyAgICAgICAgcmV0dXJuIGpzRW1wdHlTdHJpbmcoZXhlYyk7CiAKICAgICBpZiAoc291
cmNlLmlzOEJpdCgpICYmIGFsbFNlcGVyYXRvcnM4Qml0KSB7CiAgICAgICAgIExDaGFyKiBidWZm
ZXI7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>162079</attachid>
            <date>2012-09-04 12:31:34 -0700</date>
            <delta_ts>2012-09-04 12:31:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-95633-20120904123117.patch</filename>
            <type>text/plain</type>
            <size>99427</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTI3NDgzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE4NiBA
QAorMjAxMi0wOS0wNCAgQmVuamFtaW4gUG91bGFpbiAgPGJwb3VsYWluQGFwcGxlLmNvbT4KKwor
ICAgICAgICBJbXByb3ZlIEpTQyB1c2Ugb2YgU3RyaW5ncyBhZnRlciB0aGUgVVN0cmluZy0+U3Ry
aW5nIGNoYW5nZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9OTU2MzMKKworICAgICAgICBSZXZpZXdlZCBieSBHZW9mZnJleSBHYXJlbi4KKworICAgICAg
ICBUaGlzIHBhdGNoIGltcHJvdmUgdGhlIHVzZSBvZiBzdHJpbmdzIGluIHRoZSBKU0MgcnVudGlt
ZS4KKworICAgICAgICBUaGUgaW5pdGlhbGl6YXRpb24gb2YgSWRlbnRpZmllciBpcyBsZWZ0IGZv
ciBmdXR1cmUgcGF0Y2hlcy4KKworICAgICAgICBUaGUgaW1wcm92ZW1lbnRzIGFyZSB0aGUgZm9s
bG93aW5nOgorICAgICAgICAtNSUgZmFzdGVyIHRvIHJhaXNlIG9uZSBvZiB0aGUgbW9kaWZpZWQg
ZXhjZXB0aW9uLgorICAgICAgICAtMyB0aW1lcyBmYXN0ZXIgdG8gZXhlY3V0ZSBCb29sZWFuOjp0
b1N0cmluZygpCisKKyAgICAgICAgTW9zdCBvZiB0aGUgY2hhbmdlcyBhcmUganVzdCBhYm91dCB1
c2luZyB0aGUgbmV3IG1ldGhvZHMKKyAgICAgICAgZm9yIHN0cmluZyBsaXRlcmFscy4KKworICAg
ICAgICBXaXRoIHRoZSBjaGFuZ2VzLCB0aGUgYmluYXJ5IG9uIHg4Nl82NCBnZXRzIDE3NiBieXRl
cyBzbWFsbGVyLgorCisgICAgICAgICogQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMuaDoK
KyAgICAgICAgKEpTQzo6OjpzdGF0aWNGdW5jdGlvbkdldHRlcik6CisgICAgICAgIChKU0M6Ojo6
Y2FsbGJhY2tHZXR0ZXIpOgorICAgICAgICAqIEFQSS9KU0NvbnRleHRSZWYuY3BwOgorICAgICAg
ICAoSlNDb250ZXh0Q3JlYXRlQmFja3RyYWNlKToKKyAgICAgICAgKiBBUEkvSlNPYmplY3RSZWYu
Y3BwOgorICAgICAgICAoSlNPYmplY3RNYWtlRnVuY3Rpb25XaXRoQ2FsbGJhY2spOgorICAgICAg
ICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5jcHA6CisgICAgICAgIChKU0M6OnZhbHVlVG9Tb3VyY2VT
dHJpbmcpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6Om5hbWVGb3JSZWdpc3Rlcik6CisgICAg
ICAgICogaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwOgorICAgICAgICAoSlNDOjpJbnRlcnBy
ZXRlcjo6YWRkU3RhY2tUcmFjZUlmTmVjZXNzYXJ5KToKKyAgICAgICAgKiBydW50aW1lL0FycmF5
Q29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RBcnJheVdpdGhTaXplUXVp
cmspOgorICAgICAgICAqIHJ1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlND
OjpzaGlmdCk6CisgICAgICAgIChKU0M6OnVuc2hpZnQpOgorICAgICAgICAoSlNDOjphcnJheVBy
b3RvRnVuY1BvcCk6CisgICAgICAgIChKU0M6OmFycmF5UHJvdG9GdW5jUmV2ZXJzZSk6CisgICAg
ICAgICogcnVudGltZS9Cb29sZWFuUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6Ym9vbGVh
blByb3RvRnVuY1RvU3RyaW5nKTogSW5zdGVhZCBvZiBpbnN0YW5jaWF0aW5nIG5ldyBzdHJpbmdz
LCByZXVzZSB0aGUKKyAgICAgICAga2V5d29yZHMgYXZhaWxhYmxlIGluIFNtYWxsU3RyaW5ncy4g
QXZvaWRpbmcgdGhlIGNyZWF0aW9uIG9mIHRoZSBKU1N0cmluZyBhbmQgU3RyaW5nSW1wbAorICAg
ICAgICBtYWtlcyB0aGUgbWV0aG9kIHNpZ25pZmljYW50bHkgZmFzdGVyLgorCisgICAgICAgICog
cnVudGltZS9EYXRlQ29udmVyc2lvbi5jcHA6CisgICAgICAgIChKU0M6OmZvcm1hdERhdGVUaW1l
KToKKyAgICAgICAgKiBydW50aW1lL0RhdGVQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpm
b3JtYXRMb2NhbGVEYXRlKToKKyAgICAgICAgKEpTQzo6Zm9ybWF0ZURhdGVJbnN0YW5jZSk6Cisg
ICAgICAgIChKU0M6OmRhdGVQcm90b0Z1bmNUb0lTT1N0cmluZyk6CisgICAgICAgIENoYW5nZSB0
aGUgd2F5IHdlIHVzZSBzbnByaW50ZigpIGZvciBjbGFyaXR5IGFuZCBwZXJmb3JtYW5jZS4KKwor
ICAgICAgICBJbnN0ZWFkIG9mIGFsbG9jYXRpbmcgb25lIGV4dHJhIGJ5dGUgdG8gcHV0IGEgemVy
byAianVzdCBpbiBjYXNlIiwgd2UgdXNlIHRoZSBzaXplIHJldHVybmVkCisgICAgICAgIGJ5IHNu
cHJpbnRmKCkuCisgICAgICAgIFRvIHByZXZlbnQgYW55IG92ZXJmbG93IGZyb20gYSBwcm9ncmFt
bWluZyBtaXN0YWtlLCB3ZSBleHBsaWNpdGVseSB0ZXN0IGZvciBvdmVyZmxvdyBhbmQKKyAgICAg
ICAgcmV0dXJuIGFuIGVtcHR5IHN0cmluZy4KKworICAgICAgICAoSlNDOjpkYXRlUHJvdG9GdW5j
VG9KU09OKToKKyAgICAgICAgKiBydW50aW1lL0Vycm9yLmNwcDoKKyAgICAgICAgKEpTQzo6Y3Jl
YXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IpOgorICAgICAgICAoSlNDOjp0aHJvd1R5cGVFcnJv
cik6CisgICAgICAgIChKU0M6OnRocm93U3ludGF4RXJyb3IpOgorICAgICAgICAqIHJ1bnRpbWUv
RXJyb3IuaDoKKyAgICAgICAgKEpTQzo6U3RyaWN0TW9kZVR5cGVFcnJvckZ1bmN0aW9uOjpjcmVh
dGUpOgorICAgICAgICAqIHJ1bnRpbWUvRXJyb3JQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlND
OjpFcnJvclByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjplcnJvclBy
b3RvRnVuY1RvU3RyaW5nKToKKyAgICAgICAgVXNpbmcgYSBudWxsIFN0cmluZyBpcyBjb3JyZWN0
IGJlY2F1c2UgKDgpIHVzZXMganNTdHJpbmcoKSwgKDkpIHRlc3RzIGZvciBhIGxlbmd0aCBvZiAw
LgorCisgICAgICAgICogcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmNwcDoKKyAgICAgICAgKEpT
Qzo6SW50ZXJydXB0ZWRFeGVjdXRpb25FcnJvcjo6ZGVmYXVsdFZhbHVlKToKKyAgICAgICAgKEpT
Qzo6VGVybWluYXRlZEV4ZWN1dGlvbkVycm9yOjpkZWZhdWx0VmFsdWUpOgorICAgICAgICAoSlND
OjpjcmVhdGVTdGFja092ZXJmbG93RXJyb3IpOgorICAgICAgICAoSlNDOjpjcmVhdGVPdXRPZk1l
bW9yeUVycm9yKToKKyAgICAgICAgKiBydW50aW1lL0V4ZWN1dGFibGUuY3BwOgorICAgICAgICAo
SlNDOjpFdmFsRXhlY3V0YWJsZTo6Y29tcGlsZUludGVybmFsKToKKyAgICAgICAgKEpTQzo6RnVu
Y3Rpb25FeGVjdXRhYmxlOjpwYXJhbVN0cmluZyk6CisgICAgICAgICogcnVudGltZS9GdW5jdGlv
bkNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Y29uc3RydWN0RnVuY3Rpb24pOgorICAg
ICAgICAoSlNDOjpjb25zdHJ1Y3RGdW5jdGlvblNraXBwaW5nRXZhbEVuYWJsZWRDaGVjayk6Cisg
ICAgICAgICogcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5oOgorICAgICAgICAoSlNDOjpGdW5j
dGlvblByb3RvdHlwZTo6Y3JlYXRlKToKKyAgICAgICAgVXNpbmcgYSBudWxsIFN0cmluZyBmb3Ig
dGhlIG5hbWUgaXMgY29ycmVjdCBiZWNhdXNlIEludGVybmFsRnVuY3Rpb24gdXNlcyBqc1N0cmlu
ZygpCisgICAgICAgIHRvIGNyZWF0ZSB0aGUgbmFtZSB2YWx1ZS4KKworICAgICAgICAqIHJ1bnRp
bWUvSW50ZXJuYWxGdW5jdGlvbi5jcHA6CisgICAgICAgIChKU0M6OkludGVybmFsRnVuY3Rpb246
OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgVGhlcmUgaXMgbm8gbmVlZCB0byBjcmVhdGUgYW4g
ZW1wdHkgc3RyaW5nIGZvciBhIG51bGwgc3RyaW5nLCBqc1N0cmluZygpIGhhbmRsZSBib3RoCisg
ICAgICAgIGNhc2VzIGFzIGVtcHR5IEpTU3RyaW5nLgorCisgICAgICAgICogcnVudGltZS9KU0Fy
cmF5LmNwcDoKKyAgICAgICAgKEpTQzo6cmVqZWN0KToKKyAgICAgICAgKEpTQzo6U3BhcnNlQXJy
YXlWYWx1ZU1hcDo6cHV0KToKKyAgICAgICAgKEpTQzo6SlNBcnJheTo6cHV0KToKKyAgICAgICAg
KEpTQzo6SlNBcnJheTo6cHV0QnlJbmRleEJleW9uZFZlY3Rvckxlbmd0aCk6CisgICAgICAgIChK
U0M6OkpTQXJyYXk6OnB1dERpcmVjdEluZGV4QmV5b25kVmVjdG9yTGVuZ3RoKToKKyAgICAgICAg
KEpTQzo6SlNBcnJheTo6c2V0TGVuZ3RoKToKKyAgICAgICAgKEpTQzo6SlNBcnJheTo6cG9wKToK
KyAgICAgICAgKEpTQzo6SlNBcnJheTo6cHVzaCk6CisgICAgICAgICogcnVudGltZS9KU0Z1bmN0
aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6ZmluaXNoQ3JlYXRpb24pOiBTYW1l
IGlzc3VlIGFzIEludGVybmFsRnVuY3Rpb246OmZpbmlzaENyZWF0aW9uLgorCisgICAgICAgIChK
U0M6OkpTRnVuY3Rpb246OmNhbGxlckdldHRlcik6CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246
OmRlZmluZU93blByb3BlcnR5KToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsRGF0YS5jcHA6
CisgICAgICAgIChKU0M6OmVuYWJsZUFzc2VtYmxlcik6IFVzZSBDRlNUUigpIGluc3RlYWQgb2Yg
Q0ZTdHJpbmdDcmVhdGVXaXRoQ1N0cmluZygpLgorICAgICAgICBDRlN0cmluZ0NyZWF0ZVdpdGhD
U3RyaW5nKCkgY29weSB0aGUgY29udGVudCBhbmQgbWF5IGNob29zZSB0byBkZWNvZGUgdGhlIGRh
dGEuCisgICAgICAgIENGU1RSKCkgaXMgbXVjaCBtb3JlIGVmZmljaWVudC4KKworICAgICAgICAq
IHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVj
dDo6cmVzZXQpOgorICAgICAgICBKU0Z1bmN0aW9uIHVzZXMganNTdHJpbmcoKSB0byBjcmVhdGUg
dGhlIG5hbWUsIHdlIGNhbiB1c2UgbnVsbCBzdHJpbmdzIGluc3RlYWQKKyAgICAgICAgb2YgY3Jl
YXRpbmcgZW1wdHkgc3RyaW5ncy4KKworICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6Y3Jl
YXRlVGhyb3dUeXBlRXJyb3IpOiBkaXR0by4KKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2Jq
ZWN0RnVuY3Rpb25zLmNwcDoKKyAgICAgICAgKEpTQzo6ZW5jb2RlKToKKyAgICAgICAgKEpTQzo6
ZGVjb2RlKToKKyAgICAgICAgKEpTQzo6Z2xvYmFsRnVuY0V2YWwpOgorICAgICAgICAqIHJ1bnRp
bWUvSlNPTk9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OlN0cmluZ2lmaWVyOjphcHBlbmRTdHJp
bmdpZmllZFZhbHVlKToKKyAgICAgICAgKEpTQzo6U3RyaW5naWZpZXI6OkhvbGRlcjo6YXBwZW5k
TmV4dFByb3BlcnR5KToKKyAgICAgICAgKEpTQzo6SlNPTlByb3RvRnVuY1BhcnNlKToKKyAgICAg
ICAgKEpTQzo6SlNPTlByb3RvRnVuY1N0cmluZ2lmeSk6CisgICAgICAgICogcnVudGltZS9KU09i
amVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpwdXQpOgorICAgICAgICAoSlNDOjpK
U09iamVjdDo6ZGVmYXVsdFZhbHVlKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6Omhhc0luc3Rh
bmNlKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmRlZmluZU93blByb3BlcnR5KToKKyAgICAg
ICAgKiBydW50aW1lL0pTU3RyaW5nLmNwcDoKKyAgICAgICAgUmV0dXJuIGFuIGVtcHR5IEpTU3Ry
aW5nIHRvIGF2b2lkIHRoZSBjcmVhdGlvbiBvZiBhIHRlbXBvcmFyeSBlbXB0eSBTdHJpbmcuCisK
KyAgICAgICAgKEpTQzo6SlNSb3BlU3RyaW5nOjpnZXRJbmRleFNsb3dDYXNlKToKKyAgICAgICAg
KiBydW50aW1lL0pTU3RyaW5nLmg6CisgICAgICAgIChKU0MpOiBSZW1vdmUgdGhlIHZlcnNpb25z
IG9mIGpzTm9udHJpdmlhbFN0cmluZygpIHRha2luZyBhIGNoYXIqLiBBbGwgdGhlIGNhbGxlcnMK
KyAgICAgICAgaGF2ZSBiZWVuIHJlcGxhY2VkIGJ5IGNhbGxzIHVzaW5nIEFTQ0lJTGl0ZXJhbC4K
KworICAgICAgICAqIHJ1bnRpbWUvSlNWYWx1ZS5jcHA6CisgICAgICAgIChKU0M6OkpTVmFsdWU6
OnB1dFRvUHJpbWl0aXZlKToKKyAgICAgICAgKiBydW50aW1lL0xpdGVyYWxQYXJzZXIuY3BwOgor
ICAgICAgICAoSlNDOjo6OkxleGVyOjpsZXgpOgorICAgICAgICAoSlNDOjo6OkxleGVyOjpsZXhT
dHJpbmcpOgorICAgICAgICAoSlNDOjo6OkxleGVyOjpsZXhOdW1iZXIpOgorICAgICAgICAoSlND
Ojo6OnBhcnNlKToKKyAgICAgICAgKiBydW50aW1lL0xpdGVyYWxQYXJzZXIuaDoKKyAgICAgICAg
KEpTQzo6TGl0ZXJhbFBhcnNlcjo6Z2V0RXJyb3JNZXNzYWdlKToKKyAgICAgICAgKiBydW50aW1l
L051bWJlclByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6Om51bWJlclByb3RvRnVuY1RvRXhw
b25lbnRpYWwpOgorICAgICAgICAoSlNDOjpudW1iZXJQcm90b0Z1bmNUb0ZpeGVkKToKKyAgICAg
ICAgKEpTQzo6bnVtYmVyUHJvdG9GdW5jVG9QcmVjaXNpb24pOgorICAgICAgICAoSlNDOjpudW1i
ZXJQcm90b0Z1bmNUb1N0cmluZyk6CisgICAgICAgICogcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rv
ci5jcHA6CisgICAgICAgIChKU0M6Om9iamVjdENvbnN0cnVjdG9yR2V0UHJvdG90eXBlT2YpOgor
ICAgICAgICAoSlNDOjpvYmplY3RDb25zdHJ1Y3RvckdldE93blByb3BlcnR5RGVzY3JpcHRvcik6
CisgICAgICAgIChKU0M6Om9iamVjdENvbnN0cnVjdG9yR2V0T3duUHJvcGVydHlOYW1lcyk6Cisg
ICAgICAgIChKU0M6Om9iamVjdENvbnN0cnVjdG9yS2V5cyk6CisgICAgICAgIChKU0M6OnRvUHJv
cGVydHlEZXNjcmlwdG9yKToKKyAgICAgICAgKEpTQzo6b2JqZWN0Q29uc3RydWN0b3JEZWZpbmVQ
cm9wZXJ0eSk6CisgICAgICAgIChKU0M6Om9iamVjdENvbnN0cnVjdG9yRGVmaW5lUHJvcGVydGll
cyk6CisgICAgICAgIChKU0M6Om9iamVjdENvbnN0cnVjdG9yQ3JlYXRlKToKKyAgICAgICAgKEpT
Qzo6b2JqZWN0Q29uc3RydWN0b3JTZWFsKToKKyAgICAgICAgKEpTQzo6b2JqZWN0Q29uc3RydWN0
b3JGcmVlemUpOgorICAgICAgICAoSlNDOjpvYmplY3RDb25zdHJ1Y3RvclByZXZlbnRFeHRlbnNp
b25zKToKKyAgICAgICAgKEpTQzo6b2JqZWN0Q29uc3RydWN0b3JJc1NlYWxlZCk6CisgICAgICAg
IChKU0M6Om9iamVjdENvbnN0cnVjdG9ySXNGcm96ZW4pOgorICAgICAgICAoSlNDOjpvYmplY3RD
b25zdHJ1Y3RvcklzRXh0ZW5zaWJsZSk6CisgICAgICAgICogcnVudGltZS9PYmplY3RQcm90b3R5
cGUuY3BwOgorICAgICAgICAoSlNDOjpvYmplY3RQcm90b0Z1bmNEZWZpbmVHZXR0ZXIpOgorICAg
ICAgICAoSlNDOjpvYmplY3RQcm90b0Z1bmNEZWZpbmVTZXR0ZXIpOgorICAgICAgICAoSlNDOjpv
YmplY3RQcm90b0Z1bmNUb1N0cmluZyk6CisgICAgICAgICogcnVudGltZS9SZWdFeHBDb25zdHJ1
Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OmNvbnN0cnVjdFJlZ0V4cCk6CisgICAgICAgICogcnVu
dGltZS9SZWdFeHBPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpyZWplY3QpOgorICAgICAgICAo
SlNDOjpyZWdFeHBPYmplY3RTb3VyY2UpOgorICAgICAgICAqIHJ1bnRpbWUvUmVnRXhwUHJvdG90
eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6cmVnRXhwUHJvdG9GdW5jQ29tcGlsZSk6CisgICAgICAg
ICogcnVudGltZS9TdHJpbmdPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpTdHJpbmdPYmplY3Q6
OmRlZmluZU93blByb3BlcnR5KToKKyAgICAgICAgKiBydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5j
cHA6CisgICAgICAgIChKU0M6OmpzU3BsaWNlU3Vic3RyaW5ncyk6CisgICAgICAgIChKU0M6Ompz
U3BsaWNlU3Vic3RyaW5nc1dpdGhTZXBhcmF0b3JzKToKKwogMjAxMi0wOS0wNCAgTWFyayBIYWhu
ZW5iZXJnICA8bWhhaG5lbmJlcmdAYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSB1c2VzIG9m
IENsYXNzSW5mbyBmcm9tIFNwZWN1bGF0aXZlSklUOjpjb21waWxlT2JqZWN0T3JPdGhlckxvZ2lj
YWxOb3QKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdEZ1
bmN0aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxs
YmFja09iamVjdEZ1bmN0aW9ucy5oCShyZXZpc2lvbiAxMjc0ODMpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMuaAkod29ya2luZyBjb3B5KQpA
QCAtNTY4LDcgKzU2OCw3IEBAIEpTVmFsdWUgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpzdGF0
aWMKICAgICAgICAgfQogICAgIH0KIAotICAgIHJldHVybiB0aHJvd0Vycm9yKGV4ZWMsIGNyZWF0
ZVJlZmVyZW5jZUVycm9yKGV4ZWMsICJTdGF0aWMgZnVuY3Rpb24gcHJvcGVydHkgZGVmaW5lZCB3
aXRoIE5VTEwgY2FsbEFzRnVuY3Rpb24gY2FsbGJhY2suIikpOworICAgIHJldHVybiB0aHJvd0Vy
cm9yKGV4ZWMsIGNyZWF0ZVJlZmVyZW5jZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiU3RhdGlj
IGZ1bmN0aW9uIHByb3BlcnR5IGRlZmluZWQgd2l0aCBOVUxMIGNhbGxBc0Z1bmN0aW9uIGNhbGxi
YWNrLiIpKSk7CiB9CiAKIHRlbXBsYXRlIDxjbGFzcyBQYXJlbnQ+CkBAIC02MDAsNyArNjAwLDcg
QEAgSlNWYWx1ZSBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmNhbGxiYQogICAgICAgICB9CiAg
ICAgfQogCi0gICAgcmV0dXJuIHRocm93RXJyb3IoZXhlYywgY3JlYXRlUmVmZXJlbmNlRXJyb3Io
ZXhlYywgImhhc1Byb3BlcnR5IGNhbGxiYWNrIHJldHVybmVkIHRydWUgZm9yIGEgcHJvcGVydHkg
dGhhdCBkb2Vzbid0IGV4aXN0LiIpKTsKKyAgICByZXR1cm4gdGhyb3dFcnJvcihleGVjLCBjcmVh
dGVSZWZlcmVuY2VFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoImhhc1Byb3BlcnR5IGNhbGxiYWNr
IHJldHVybmVkIHRydWUgZm9yIGEgcHJvcGVydHkgdGhhdCBkb2Vzbid0IGV4aXN0LiIpKSk7CiB9
CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9K
U0NvbnRleHRSZWYuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkv
SlNDb250ZXh0UmVmLmNwcAkocmV2aXNpb24gMTI3NDgzKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9KU0NvbnRleHRSZWYuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNzMsOSArMTczLDkg
QEAgSlNTdHJpbmdSZWYgSlNDb250ZXh0Q3JlYXRlQmFja3RyYWNlKEpTQwogICAgIGlmIChleGVj
LT5jYWxsZWUoKSkgewogICAgICAgICBpZiAoYXNPYmplY3QoZXhlYy0+Y2FsbGVlKCkpLT5pbmhl
cml0cygmSW50ZXJuYWxGdW5jdGlvbjo6c19pbmZvKSkgewogICAgICAgICAgICAgZnVuY3Rpb25O
YW1lID0gYXNJbnRlcm5hbEZ1bmN0aW9uKGV4ZWMtPmNhbGxlZSgpKS0+bmFtZShleGVjKTsKLSAg
ICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCIjMCAiKTsKKyAgICAgICAgICAgIGJ1aWxkZXIuYXBw
ZW5kTGl0ZXJhbCgiIzAgIik7CiAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZChmdW5jdGlvbk5h
bWUpOwotICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoIigpICIpOworICAgICAgICAgICAgYnVp
bGRlci5hcHBlbmRMaXRlcmFsKCIoKSAiKTsKICAgICAgICAgICAgIGNvdW50Kys7CiAgICAgICAg
IH0KICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTT2JqZWN0UmVmLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTT2JqZWN0UmVmLmNw
cAkocmV2aXNpb24gMTI3NDgzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU09iamVj
dFJlZi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkyLDcgKzkyLDcgQEAgSlNPYmplY3RSZWYgSlNP
YmplY3RNYWtlRnVuY3Rpb25XaXRoQ2FsbAogewogICAgIEV4ZWNTdGF0ZSogZXhlYyA9IHRvSlMo
Y3R4KTsKICAgICBBUElFbnRyeVNoaW0gZW50cnlTaGltKGV4ZWMpOwotICAgIHJldHVybiB0b1Jl
ZihKU0NhbGxiYWNrRnVuY3Rpb246OmNyZWF0ZShleGVjLCBleGVjLT5sZXhpY2FsR2xvYmFsT2Jq
ZWN0KCksIGNhbGxBc0Z1bmN0aW9uLCBuYW1lID8gbmFtZS0+dXN0cmluZygpIDogImFub255bW91
cyIpKTsKKyAgICByZXR1cm4gdG9SZWYoSlNDYWxsYmFja0Z1bmN0aW9uOjpjcmVhdGUoZXhlYywg
ZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBjYWxsQXNGdW5jdGlvbiwgbmFtZSA/IG5hbWUt
PnVzdHJpbmcoKSA6IEFTQ0lJTGl0ZXJhbCgiYW5vbnltb3VzIikpKTsKIH0KIAogSlNPYmplY3RS
ZWYgSlNPYmplY3RNYWtlQ29uc3RydWN0b3IoSlNDb250ZXh0UmVmIGN0eCwgSlNDbGFzc1JlZiBq
c0NsYXNzLCBKU09iamVjdENhbGxBc0NvbnN0cnVjdG9yQ2FsbGJhY2sgY2FsbEFzQ29uc3RydWN0
b3IpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNw
cAkocmV2aXNpb24gMTI3NDgzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Nv
ZGVCbG9jay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc1LDcgKzc1LDcgQEAgc3RhdGljIFN0cmlu
ZyBlc2NhcGVRdW90ZXMoY29uc3QgU3RyaW5nJgogc3RhdGljIFN0cmluZyB2YWx1ZVRvU291cmNl
U3RyaW5nKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2YWwpCiB7CiAgICAgaWYgKCF2YWwpCi0g
ICAgICAgIHJldHVybiAiMCI7CisgICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwoIjAiKTsKIAog
ICAgIGlmICh2YWwuaXNTdHJpbmcoKSkKICAgICAgICAgcmV0dXJuIG1ha2VTdHJpbmcoIlwiIiwg
ZXNjYXBlUXVvdGVzKHZhbC50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpLCAiXCIiKTsKQEAg
LTMwMzIsMTQgKzMwMzIsMTQgQEAgU3RyaW5nIENvZGVCbG9jazo6bmFtZUZvclJlZ2lzdGVyKGlu
dCByZQogICAgICAgICAgICAgcmV0dXJuIFN0cmluZyhwdHItPmZpcnN0KTsKICAgICB9CiAgICAg
aWYgKG5lZWRzQWN0aXZhdGlvbigpICYmIHJlZ2lzdGVyTnVtYmVyID09IGFjdGl2YXRpb25SZWdp
c3RlcigpKQotICAgICAgICByZXR1cm4gImFjdGl2YXRpb24iOworICAgICAgICByZXR1cm4gQVND
SUlMaXRlcmFsKCJhY3RpdmF0aW9uIik7CiAgICAgaWYgKHJlZ2lzdGVyTnVtYmVyID09IHRoaXNS
ZWdpc3RlcigpKQotICAgICAgICByZXR1cm4gInRoaXMiOworICAgICAgICByZXR1cm4gQVNDSUlM
aXRlcmFsKCJ0aGlzIik7CiAgICAgaWYgKHVzZXNBcmd1bWVudHMoKSkgewogICAgICAgICBpZiAo
cmVnaXN0ZXJOdW1iZXIgPT0gYXJndW1lbnRzUmVnaXN0ZXIoKSkKLSAgICAgICAgICAgIHJldHVy
biAiYXJndW1lbnRzIjsKKyAgICAgICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwoImFyZ3VtZW50
cyIpOwogICAgICAgICBpZiAodW5tb2RpZmllZEFyZ3VtZW50c1JlZ2lzdGVyKGFyZ3VtZW50c1Jl
Z2lzdGVyKCkpID09IHJlZ2lzdGVyTnVtYmVyKQotICAgICAgICAgICAgcmV0dXJuICJyZWFsIGFy
Z3VtZW50cyI7CisgICAgICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJyZWFsIGFyZ3VtZW50
cyIpOwogICAgIH0KICAgICBpZiAocmVnaXN0ZXJOdW1iZXIgPCAwKSB7CiAgICAgICAgIGludCBh
cmd1bWVudFBvc2l0aW9uID0gLXJlZ2lzdGVyTnVtYmVyOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCShyZXZpc2lvbiAxMjc0
ODMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC03NDIsNiArNzQyLDggQEAgdm9pZCBJbnRlcnByZXRlcjo6YWRk
U3RhY2tUcmFjZUlmTmVjZXNzYQogICAgICAgICBnbG9iYWxPYmplY3QgPSBnbG9iYWxEYXRhLT5k
eW5hbWljR2xvYmFsT2JqZWN0OwogICAgIGVsc2UKICAgICAgICAgZ2xvYmFsT2JqZWN0ID0gZXJy
b3ItPmdsb2JhbE9iamVjdCgpOworCisgICAgLy8gRklYTUU6IEpTU3RyaW5nSm9pbmVyIGNvdWxk
IGJlIG1vcmUgZWZmaWNpZW50IHRoYW4gU3RyaW5nQnVpbGRlciBoZXJlLgogICAgIFN0cmluZ0J1
aWxkZXIgYnVpbGRlcjsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc3RhY2tUcmFjZS5z
aXplKCk7IGkrKykgewogICAgICAgICBidWlsZGVyLmFwcGVuZChTdHJpbmcoc3RhY2tUcmFjZVtp
XS50b1N0cmluZyhnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSkuaW1wbCgpKSk7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUNvbnN0cnVjdG9yLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUNvbnN0cnVjdG9yLmNw
cAkocmV2aXNpb24gMTI3NDgzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJy
YXlDb25zdHJ1Y3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg1LDcgKzg1LDcgQEAgc3RhdGlj
IGlubGluZSBKU09iamVjdCogY29uc3RydWN0QXJyYXlXaQogICAgIGlmIChhcmdzLnNpemUoKSA9
PSAxICYmIGFyZ3MuYXQoMCkuaXNOdW1iZXIoKSkgewogICAgICAgICB1aW50MzJfdCBuID0gYXJn
cy5hdCgwKS50b1VJbnQzMihleGVjKTsKICAgICAgICAgaWYgKG4gIT0gYXJncy5hdCgwKS50b051
bWJlcihleGVjKSkKLSAgICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGV4ZWMsIGNyZWF0ZVJh
bmdlRXJyb3IoZXhlYywgIkFycmF5IHNpemUgaXMgbm90IGEgc21hbGwgZW5vdWdoIHBvc2l0aXZl
IGludGVnZXIuIikpOworICAgICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoZXhlYywgY3JlYXRl
UmFuZ2VFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkFycmF5IHNpemUgaXMgbm90IGEgc21hbGwg
ZW5vdWdoIHBvc2l0aXZlIGludGVnZXIuIikpKTsKICAgICAgICAgcmV0dXJuIGNvbnN0cnVjdEVt
cHR5QXJyYXkoZXhlYywgZ2xvYmFsT2JqZWN0LCBuKTsKICAgICB9CiAKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHAJKHJldmlzaW9u
IDEyNzQ4MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjA1LDEzICsyMDUsMTMgQEAgc3RhdGljIGlubGluZSB2
b2lkIHNoaWZ0KEV4ZWNTdGF0ZSogZXhlYwogICAgICAgICAgICAgaWYgKGV4ZWMtPmhhZEV4Y2Vw
dGlvbigpKQogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfSBlbHNlIGlmICghdGhp
c09iai0+bWV0aG9kVGFibGUoKS0+ZGVsZXRlUHJvcGVydHlCeUluZGV4KHRoaXNPYmosIGV4ZWMs
IHRvKSkgewotICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgIlVuYWJsZSB0byBkZWxl
dGUgcHJvcGVydHkuIik7CisgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxp
dGVyYWwoIlVuYWJsZSB0byBkZWxldGUgcHJvcGVydHkuIikpOwogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICB9CiAgICAgfQogICAgIGZvciAodW5zaWduZWQgayA9IGxlbmd0aDsgayA+IGxl
bmd0aCAtIGNvdW50OyAtLWspIHsKICAgICAgICAgaWYgKCF0aGlzT2JqLT5tZXRob2RUYWJsZSgp
LT5kZWxldGVQcm9wZXJ0eUJ5SW5kZXgodGhpc09iaiwgZXhlYywgayAtIDEpKSB7Ci0gICAgICAg
ICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCAiVW5hYmxlIHRvIGRlbGV0ZSBwcm9wZXJ0eS4iKTsK
KyAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiVW5hYmxlIHRv
IGRlbGV0ZSBwcm9wZXJ0eS4iKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAg
ICB9CkBAIC0yNDMsNyArMjQzLDcgQEAgc3RhdGljIGlubGluZSB2b2lkIHVuc2hpZnQoRXhlY1N0
YXRlKiBleAogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIHRoaXNPYmotPm1l
dGhvZFRhYmxlKCktPnB1dEJ5SW5kZXgodGhpc09iaiwgZXhlYywgdG8sIHZhbHVlLCB0cnVlKTsK
ICAgICAgICAgfSBlbHNlIGlmICghdGhpc09iai0+bWV0aG9kVGFibGUoKS0+ZGVsZXRlUHJvcGVy
dHlCeUluZGV4KHRoaXNPYmosIGV4ZWMsIHRvKSkgewotICAgICAgICAgICAgdGhyb3dUeXBlRXJy
b3IoZXhlYywgIlVuYWJsZSB0byBkZWxldGUgcHJvcGVydHkuIik7CisgICAgICAgICAgICB0aHJv
d1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlVuYWJsZSB0byBkZWxldGUgcHJvcGVydHku
IikpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIGlmIChleGVjLT5o
YWRFeGNlcHRpb24oKSkKQEAgLTQ5MSw3ICs0OTEsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGFycmF5UHJvdG9GCiAgICAgICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAg
ICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgICAg
IGlmICghdGhpc09iai0+bWV0aG9kVGFibGUoKS0+ZGVsZXRlUHJvcGVydHlCeUluZGV4KHRoaXNP
YmosIGV4ZWMsIGxlbmd0aCAtIDEpKSB7Ci0gICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVj
LCAiVW5hYmxlIHRvIGRlbGV0ZSBwcm9wZXJ0eS4iKTsKKyAgICAgICAgICAgIHRocm93VHlwZUVy
cm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiVW5hYmxlIHRvIGRlbGV0ZSBwcm9wZXJ0eS4iKSk7CiAg
ICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgICAg
ICB9CiAgICAgICAgIHB1dFByb3BlcnR5KGV4ZWMsIHRoaXNPYmosIGV4ZWMtPnByb3BlcnR5TmFt
ZXMoKS5sZW5ndGgsIGpzTnVtYmVyKGxlbmd0aCAtIDEpKTsKQEAgLTU1Myw3ICs1NTMsNyBAQCBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GCiAgICAgICAgICAgICBpZiAo
ZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc1VuZGVmaW5lZCgpKTsKICAgICAgICAgfSBlbHNlIGlmICghdGhpc09iai0+bWV0aG9k
VGFibGUoKS0+ZGVsZXRlUHJvcGVydHlCeUluZGV4KHRoaXNPYmosIGV4ZWMsIGspKSB7Ci0gICAg
ICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCAiVW5hYmxlIHRvIGRlbGV0ZSBwcm9wZXJ0eS4i
KTsKKyAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiVW5hYmxl
IHRvIGRlbGV0ZSBwcm9wZXJ0eS4iKSk7CiAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzVW5kZWZpbmVkKCkpOwogICAgICAgICB9CiAKQEAgLTU2Miw3ICs1NjIsNyBAQCBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GCiAgICAgICAgICAgICBpZiAoZXhl
Yy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc1VuZGVmaW5lZCgpKTsKICAgICAgICAgfSBlbHNlIGlmICghdGhpc09iai0+bWV0aG9kVGFi
bGUoKS0+ZGVsZXRlUHJvcGVydHlCeUluZGV4KHRoaXNPYmosIGV4ZWMsIGxrMSkpIHsKLSAgICAg
ICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsICJVbmFibGUgdG8gZGVsZXRlIHByb3BlcnR5LiIp
OworICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJVbmFibGUg
dG8gZGVsZXRlIHByb3BlcnR5LiIpKTsKICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNVbmRlZmluZWQoKSk7CiAgICAgICAgIH0KICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Cb29sZWFuUHJvdG90eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Cb29sZWFuUHJvdG90eXBlLmNwcAkocmV2aXNpb24g
MTI3NDgzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQm9vbGVhblByb3RvdHlw
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc3LDIxICs3NywyMiBAQCBib29sIEJvb2xlYW5Qcm90
b3R5cGU6OmdldE93blByb3BlcnR5RGVzCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
Ym9vbGVhblByb3RvRnVuY1RvU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBKU0dsb2Jh
bERhdGEqIGdsb2JhbERhdGEgPSAmZXhlYy0+Z2xvYmFsRGF0YSgpOwogICAgIEpTVmFsdWUgdGhp
c1ZhbHVlID0gZXhlYy0+aG9zdFRoaXNWYWx1ZSgpOwogICAgIGlmICh0aGlzVmFsdWUgPT0ganNC
b29sZWFuKGZhbHNlKSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc05vbnRyaXZp
YWxTdHJpbmcoZXhlYywgImZhbHNlIikpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGdsb2JhbERhdGEtPnNtYWxsU3RyaW5ncy5mYWxzZVN0cmluZyhnbG9iYWxEYXRhKSk7CiAKICAg
ICBpZiAodGhpc1ZhbHVlID09IGpzQm9vbGVhbih0cnVlKSkKLSAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc05vbnRyaXZpYWxTdHJpbmcoZXhlYywgInRydWUiKSk7CisgICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoZ2xvYmFsRGF0YS0+c21hbGxTdHJpbmdzLnRydWVTdHJpbmco
Z2xvYmFsRGF0YSkpOwogCiAgICAgaWYgKCF0aGlzVmFsdWUuaW5oZXJpdHMoJkJvb2xlYW5PYmpl
Y3Q6OnNfaW5mbykpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOwogCiAg
ICAgaWYgKGFzQm9vbGVhbk9iamVjdCh0aGlzVmFsdWUpLT5pbnRlcm5hbFZhbHVlKCkgPT0ganNC
b29sZWFuKGZhbHNlKSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc05vbnRyaXZp
YWxTdHJpbmcoZXhlYywgImZhbHNlIikpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGdsb2JhbERhdGEtPnNtYWxsU3RyaW5ncy5mYWxzZVN0cmluZyhnbG9iYWxEYXRhKSk7CiAKICAg
ICBBU1NFUlQoYXNCb29sZWFuT2JqZWN0KHRoaXNWYWx1ZSktPmludGVybmFsVmFsdWUoKSA9PSBq
c0Jvb2xlYW4odHJ1ZSkpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOb250cml2aWFs
U3RyaW5nKGV4ZWMsICJ0cnVlIikpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoZ2xvYmFs
RGF0YS0+c21hbGxTdHJpbmdzLnRydWVTdHJpbmcoZ2xvYmFsRGF0YSkpOwogfQogCiBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGJvb2xlYW5Qcm90b0Z1bmNWYWx1ZU9mKEV4ZWNTdGF0ZSog
ZXhlYykKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVDb252ZXJzaW9u
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlQ29u
dmVyc2lvbi5jcHAJKHJldmlzaW9uIDEyNzQ4MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0RhdGVDb252ZXJzaW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzMsNyArNzMsNyBA
QCBTdHJpbmcgZm9ybWF0RGF0ZVRpbWUoY29uc3QgR3JlZ29yaWFuRGF0CiAgICAgICAgIGJ1aWxk
ZXIuYXBwZW5kKHdlZWtkYXlOYW1lWyh0LndlZWtEYXkoKSArIDYpICUgN10pOwogCiAgICAgICAg
IGlmIChhc1VUQ1ZhcmlhbnQpIHsKLSAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCIsICIpOwor
ICAgICAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCIsICIpOwogICAgICAgICAgICAgYXBw
ZW5kTnVtYmVyPDI+KGJ1aWxkZXIsIHQubW9udGhEYXkoKSk7CiAgICAgICAgICAgICBidWlsZGVy
LmFwcGVuZCgnICcpOwogICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQobW9udGhOYW1lW3QubW9u
dGgoKV0pOwpAQCAtOTYsNyArOTYsNyBAQCBTdHJpbmcgZm9ybWF0RGF0ZVRpbWUoY29uc3QgR3Jl
Z29yaWFuRGF0CiAgICAgICAgIGFwcGVuZE51bWJlcjwyPihidWlsZGVyLCB0Lm1pbnV0ZSgpKTsK
ICAgICAgICAgYnVpbGRlci5hcHBlbmQoJzonKTsKICAgICAgICAgYXBwZW5kTnVtYmVyPDI+KGJ1
aWxkZXIsIHQuc2Vjb25kKCkpOwotICAgICAgICBidWlsZGVyLmFwcGVuZCgiIEdNVCIpOworICAg
ICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIiBHTVQiKTsKIAogICAgICAgICBpZiAoIWFzVVRD
VmFyaWFudCkgewogICAgICAgICAgICAgaW50IG9mZnNldCA9IGFicyh0LnV0Y09mZnNldCgpKSAv
IDYwOwpAQCAtMTE0LDcgKzExNCw3IEBAIFN0cmluZyBmb3JtYXREYXRlVGltZShjb25zdCBHcmVn
b3JpYW5EYXQKICAgICAgICAgICAgIHN0cmZ0aW1lKHRpbWVab25lTmFtZSwgc2l6ZW9mKHRpbWVa
b25lTmFtZSksICIlWiIsICZndG0pOwogI2VuZGlmCiAgICAgICAgICAgICBpZiAodGltZVpvbmVO
YW1lWzBdKSB7Ci0gICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoIiAoIik7CisgICAgICAg
ICAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCIgKCIpOwogICAgICAgICAgICAgICAgIGJ1
aWxkZXIuYXBwZW5kKHRpbWVab25lTmFtZSk7CiAgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBl
bmQoJyknKTsKICAgICAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0RhdGVQcm90b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0RhdGVQcm90b3R5cGUuY3BwCShyZXZpc2lvbiAxMjc0ODMpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlUHJvdG90eXBlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzM0LDcgKzMzNCw3IEBAIHN0YXRpYyBKU0NlbGwqIGZvcm1hdExvY2FsZURhdGUoRXhlY1N0
YXQKIHsKICAgICBjb25zdCBHcmVnb3JpYW5EYXRlVGltZSogZ3JlZ29yaWFuRGF0ZVRpbWUgPSBk
YXRlT2JqZWN0LT5ncmVnb3JpYW5EYXRlVGltZShleGVjKTsKICAgICBpZiAoIWdyZWdvcmlhbkRh
dGVUaW1lKQotICAgICAgICByZXR1cm4ganNOb250cml2aWFsU3RyaW5nKGV4ZWMsICJJbnZhbGlk
IERhdGUiKTsKKyAgICAgICAgcmV0dXJuIGpzTm9udHJpdmlhbFN0cmluZyhleGVjLCBBU0NJSUxp
dGVyYWwoIkludmFsaWQgRGF0ZSIpKTsKICAgICByZXR1cm4gZm9ybWF0TG9jYWxlRGF0ZShleGVj
LCAqZ3JlZ29yaWFuRGF0ZVRpbWUsIGZvcm1hdCk7CiB9CiAKQEAgLTM1Miw3ICszNTIsNyBAQCBz
dGF0aWMgRW5jb2RlZEpTVmFsdWUgZm9ybWF0ZURhdGVJbnN0YW5jCiAgICAgICAgID8gdGhpc0Rh
dGVPYmotPmdyZWdvcmlhbkRhdGVUaW1lVVRDKGV4ZWMpCiAgICAgICAgIDogdGhpc0RhdGVPYmot
PmdyZWdvcmlhbkRhdGVUaW1lKGV4ZWMpOwogICAgIGlmICghZ3JlZ29yaWFuRGF0ZVRpbWUpCi0g
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOb250cml2aWFsU3RyaW5nKGV4ZWMsICJJ
bnZhbGlkIERhdGUiKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOb250cml2
aWFsU3RyaW5nKGV4ZWMsIFN0cmluZyhBU0NJSUxpdGVyYWwoIkludmFsaWQgRGF0ZSIpKSkpOwog
CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc05vbnRyaXZpYWxTdHJpbmcoZXhlYywgZm9y
bWF0RGF0ZVRpbWUoKmdyZWdvcmlhbkRhdGVUaW1lLCBmb3JtYXQsIGFzVVRDVmFyaWFudCkpKTsK
IH0KQEAgLTU0OCwyNCArNTQ4LDMwIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0
ZVByb3RvRnUKICAgICAKICAgICBEYXRlSW5zdGFuY2UqIHRoaXNEYXRlT2JqID0gYXNEYXRlSW5z
dGFuY2UodGhpc1ZhbHVlKTsgCiAgICAgaWYgKCFpc2Zpbml0ZSh0aGlzRGF0ZU9iai0+aW50ZXJu
YWxOdW1iZXIoKSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlUmFu
Z2VFcnJvcihleGVjLCAiSW52YWxpZCBEYXRlIikpOworICAgICAgICByZXR1cm4gdGhyb3dWTUVy
cm9yKGV4ZWMsIGNyZWF0ZVJhbmdlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJJbnZhbGlkIERh
dGUiKSkpOwogCiAgICAgY29uc3QgR3JlZ29yaWFuRGF0ZVRpbWUqIGdyZWdvcmlhbkRhdGVUaW1l
ID0gdGhpc0RhdGVPYmotPmdyZWdvcmlhbkRhdGVUaW1lVVRDKGV4ZWMpOwogICAgIGlmICghZ3Jl
Z29yaWFuRGF0ZVRpbWUpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOb250cml2
aWFsU3RyaW5nKGV4ZWMsICJJbnZhbGlkIERhdGUiKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNOb250cml2aWFsU3RyaW5nKGV4ZWMsIFN0cmluZyhBU0NJSUxpdGVyYWwoIklu
dmFsaWQgRGF0ZSIpKSkpOwogICAgIC8vIE1heGltdW0gYW1vdW50IG9mIHNwYWNlIHdlIG5lZWQg
aW4gYnVmZmVyOiA3IChtYXguIGRpZ2l0cyBpbiB5ZWFyKSArIDIgKiA1ICgyIGNoYXJhY3RlcnMg
ZWFjaCBmb3IgbW9udGgsIGRheSwgaG91ciwgbWludXRlLCBzZWNvbmQpICsgNCAoLiArIDMgZGln
aXRzIGZvciBtaWxsaXNlY29uZHMpCiAgICAgLy8gNiBmb3IgZm9ybWF0dGluZyBhbmQgb25lIGZv
ciBudWxsIHRlcm1pbmF0aW9uID0gMjguIFdlIGFkZCBvbmUgZXh0cmEgY2hhcmFjdGVyIHRvIGFs
bG93IHVzIHRvIGZvcmNlIG51bGwgdGVybWluYXRpb24uCi0gICAgY2hhciBidWZmZXJbMjldOwor
ICAgIGNoYXIgYnVmZmVyWzI4XTsKICAgICAvLyBJZiB0aGUgeWVhciBpcyBvdXRzaWRlIHRoZSBi
b3VuZHMgb2YgMCBhbmQgOTk5OSBpbmNsdXNpdmUgd2Ugd2FudCB0byB1c2UgdGhlIGV4dGVuZGVk
IHllYXIgZm9ybWF0IChFUyAxNS45LjEuMTUuMSkuCiAgICAgaW50IG1zID0gc3RhdGljX2Nhc3Q8
aW50PihmbW9kKHRoaXNEYXRlT2JqLT5pbnRlcm5hbE51bWJlcigpLCBtc1BlclNlY29uZCkpOwog
ICAgIGlmIChtcyA8IDApCiAgICAgICAgIG1zICs9IG1zUGVyU2Vjb25kOworCisgICAgaW50IGNo
YXJhY3RlcnNXcml0dGVuOwogICAgIGlmIChncmVnb3JpYW5EYXRlVGltZS0+eWVhcigpID4gOTk5
OSB8fCBncmVnb3JpYW5EYXRlVGltZS0+eWVhcigpIDwgMCkKLSAgICAgICAgc25wcmludGYoYnVm
ZmVyLCBzaXplb2YoYnVmZmVyKSAtIDEsICIlKzA3ZC0lMDJkLSUwMmRUJTAyZDolMDJkOiUwMmQu
JTAzZFoiLCBncmVnb3JpYW5EYXRlVGltZS0+eWVhcigpLCBncmVnb3JpYW5EYXRlVGltZS0+bW9u
dGgoKSArIDEsIGdyZWdvcmlhbkRhdGVUaW1lLT5tb250aERheSgpLCBncmVnb3JpYW5EYXRlVGlt
ZS0+aG91cigpLCBncmVnb3JpYW5EYXRlVGltZS0+bWludXRlKCksIGdyZWdvcmlhbkRhdGVUaW1l
LT5zZWNvbmQoKSwgbXMpOworICAgICAgICBjaGFyYWN0ZXJzV3JpdHRlbiA9IHNucHJpbnRmKGJ1
ZmZlciwgc2l6ZW9mKGJ1ZmZlciksICIlKzA3ZC0lMDJkLSUwMmRUJTAyZDolMDJkOiUwMmQuJTAz
ZFoiLCBncmVnb3JpYW5EYXRlVGltZS0+eWVhcigpLCBncmVnb3JpYW5EYXRlVGltZS0+bW9udGgo
KSArIDEsIGdyZWdvcmlhbkRhdGVUaW1lLT5tb250aERheSgpLCBncmVnb3JpYW5EYXRlVGltZS0+
aG91cigpLCBncmVnb3JpYW5EYXRlVGltZS0+bWludXRlKCksIGdyZWdvcmlhbkRhdGVUaW1lLT5z
ZWNvbmQoKSwgbXMpOwogICAgIGVsc2UKLSAgICAgICAgc25wcmludGYoYnVmZmVyLCBzaXplb2Yo
YnVmZmVyKSAtIDEsICIlMDRkLSUwMmQtJTAyZFQlMDJkOiUwMmQ6JTAyZC4lMDNkWiIsIGdyZWdv
cmlhbkRhdGVUaW1lLT55ZWFyKCksIGdyZWdvcmlhbkRhdGVUaW1lLT5tb250aCgpICsgMSwgZ3Jl
Z29yaWFuRGF0ZVRpbWUtPm1vbnRoRGF5KCksIGdyZWdvcmlhbkRhdGVUaW1lLT5ob3VyKCksIGdy
ZWdvcmlhbkRhdGVUaW1lLT5taW51dGUoKSwgZ3JlZ29yaWFuRGF0ZVRpbWUtPnNlY29uZCgpLCBt
cyk7Ci0gICAgYnVmZmVyW3NpemVvZihidWZmZXIpIC0gMV0gPSAwOwotICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNOb250cml2aWFsU3RyaW5nKGV4ZWMsIGJ1ZmZlcikpOworICAgICAgICBj
aGFyYWN0ZXJzV3JpdHRlbiA9IHNucHJpbnRmKGJ1ZmZlciwgc2l6ZW9mKGJ1ZmZlciksICIlMDRk
LSUwMmQtJTAyZFQlMDJkOiUwMmQ6JTAyZC4lMDNkWiIsIGdyZWdvcmlhbkRhdGVUaW1lLT55ZWFy
KCksIGdyZWdvcmlhbkRhdGVUaW1lLT5tb250aCgpICsgMSwgZ3JlZ29yaWFuRGF0ZVRpbWUtPm1v
bnRoRGF5KCksIGdyZWdvcmlhbkRhdGVUaW1lLT5ob3VyKCksIGdyZWdvcmlhbkRhdGVUaW1lLT5t
aW51dGUoKSwgZ3JlZ29yaWFuRGF0ZVRpbWUtPnNlY29uZCgpLCBtcyk7CisKKyAgICBBU1NFUlQo
Y2hhcmFjdGVyc1dyaXR0ZW4gPiAwICYmIHN0YXRpY19jYXN0PHVuc2lnbmVkPihjaGFyYWN0ZXJz
V3JpdHRlbikgPCBzaXplb2YoYnVmZmVyKSk7CisgICAgaWYgKHN0YXRpY19jYXN0PHVuc2lnbmVk
PihjaGFyYWN0ZXJzV3JpdHRlbikgPj0gc2l6ZW9mKGJ1ZmZlcikpCisgICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNFbXB0eVN0cmluZyhleGVjKSk7CisKKyAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzTm9udHJpdmlhbFN0cmluZyhleGVjLCBTdHJpbmcoYnVmZmVyLCBjaGFyYWN0
ZXJzV3JpdHRlbikpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJv
dG9GdW5jVG9EYXRlU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYykKQEAgLTExMTMsMTMgKzExMTksMTMg
QEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdQogICAgIENhbGxEYXRh
IGNhbGxEYXRhOwogICAgIENhbGxUeXBlIGNhbGxUeXBlID0gZ2V0Q2FsbERhdGEodG9JU09WYWx1
ZSwgY2FsbERhdGEpOwogICAgIGlmIChjYWxsVHlwZSA9PSBDYWxsVHlwZU5vbmUpCi0gICAgICAg
IHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsICJ0b0lTT1N0
cmluZyBpcyBub3QgYSBmdW5jdGlvbiIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihl
eGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJ0b0lTT1N0cmluZyBpcyBu
b3QgYSBmdW5jdGlvbiIpKSk7CiAKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGNhbGwoZXhlYywgYXNP
YmplY3QodG9JU09WYWx1ZSksIGNhbGxUeXBlLCBjYWxsRGF0YSwgb2JqZWN0LCBleGVjLT5lbXB0
eUxpc3QoKSk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzTnVsbCgpKTsKICAgICBpZiAocmVzdWx0LmlzT2JqZWN0KCkpCi0g
ICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsICJ0
b0lTT1N0cmluZyBkaWQgbm90IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZSIpKTsKKyAgICAgICAg
cmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRl
cmFsKCJ0b0lTT1N0cmluZyBkaWQgbm90IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZSIpKSk7CiAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQogCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9FcnJvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvRXJyb3IuY3BwCShyZXZpc2lvbiAxMjc0ODMpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgxLDcg
KzgxLDcgQEAgSlNPYmplY3QqIGNyZWF0ZVR5cGVFcnJvcihKU0dsb2JhbE9iamVjdAogCiBKU09i
amVjdCogY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCkKIHsKLSAgICByZXR1cm4gY3JlYXRlVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgIk5v
dCBlbm91Z2ggYXJndW1lbnRzIik7CisgICAgcmV0dXJuIGNyZWF0ZVR5cGVFcnJvcihnbG9iYWxP
YmplY3QsIEFTQ0lJTGl0ZXJhbCgiTm90IGVub3VnaCBhcmd1bWVudHMiKSk7CiB9CiAKIEpTT2Jq
ZWN0KiBjcmVhdGVVUklFcnJvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBT
dHJpbmcmIG1lc3NhZ2UpCkBAIC0xNjksMTIgKzE2OSwxMiBAQCBKU09iamVjdCogdGhyb3dFcnJv
cihFeGVjU3RhdGUqIGV4ZWMsIEpTCiAKIEpTT2JqZWN0KiB0aHJvd1R5cGVFcnJvcihFeGVjU3Rh
dGUqIGV4ZWMpCiB7Ci0gICAgcmV0dXJuIHRocm93RXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9y
KGV4ZWMsICJUeXBlIGVycm9yIikpOworICAgIHJldHVybiB0aHJvd0Vycm9yKGV4ZWMsIGNyZWF0
ZVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlR5cGUgZXJyb3IiKSkpOwogfQogCiBKU09i
amVjdCogdGhyb3dTeW50YXhFcnJvcihFeGVjU3RhdGUqIGV4ZWMpCiB7Ci0gICAgcmV0dXJuIHRo
cm93RXJyb3IoZXhlYywgY3JlYXRlU3ludGF4RXJyb3IoZXhlYywgIlN5bnRheCBlcnJvciIpKTsK
KyAgICByZXR1cm4gdGhyb3dFcnJvcihleGVjLCBjcmVhdGVTeW50YXhFcnJvcihleGVjLCBBU0NJ
SUxpdGVyYWwoIlN5bnRheCBlcnJvciIpKSk7CiB9CiAKIEFTU0VSVF9DTEFTU19GSVRTX0lOX0NF
TEwoU3RyaWN0TW9kZVR5cGVFcnJvckZ1bmN0aW9uKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0Vycm9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRXJyb3IuaAkocmV2aXNpb24gMTI3NDgzKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRXJyb3IuaAkod29ya2luZyBjb3B5KQpAQCAtODksNyArODksNyBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgc3RhdGljIFN0cmljdE1vZGVUeXBlRXJyb3JGdW5jdGlvbiog
Y3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKICAgICAgICAgewogICAg
ICAgICAgICAgU3RyaWN0TW9kZVR5cGVFcnJvckZ1bmN0aW9uKiBmdW5jdGlvbiA9IG5ldyAoTm90
TnVsbCwgYWxsb2NhdGVDZWxsPFN0cmljdE1vZGVUeXBlRXJyb3JGdW5jdGlvbj4oKmV4ZWMtPmhl
YXAoKSkpIFN0cmljdE1vZGVUeXBlRXJyb3JGdW5jdGlvbihnbG9iYWxPYmplY3QsIHN0cnVjdHVy
ZSwgbWVzc2FnZSk7Ci0gICAgICAgICAgICBmdW5jdGlvbi0+ZmluaXNoQ3JlYXRpb24oZXhlYy0+
Z2xvYmFsRGF0YSgpLCAiIik7CisgICAgICAgICAgICBmdW5jdGlvbi0+ZmluaXNoQ3JlYXRpb24o
ZXhlYy0+Z2xvYmFsRGF0YSgpLCBTdHJpbmcoKSk7CiAgICAgICAgICAgICByZXR1cm4gZnVuY3Rp
b247CiAgICAgICAgIH0KICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0Vycm9yUHJvdG90eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9FcnJvclByb3RvdHlwZS5jcHAJKHJldmlzaW9uIDEyNzQ4MykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yUHJvdG90eXBlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNTksNyArNTksNyBAQCB2b2lkIEVycm9yUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihFeGVj
CiB7CiAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCAiIik7CiAg
ICAgQVNTRVJUKGluaGVyaXRzKCZzX2luZm8pKTsKLSAgICBwdXREaXJlY3QoZXhlYy0+Z2xvYmFs
RGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubmFtZSwganNOb250cml2aWFsU3RyaW5nKGV4
ZWMsICJFcnJvciIpLCBEb250RW51bSk7CisgICAgcHV0RGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEo
KSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLm5hbWUsIGpzTm9udHJpdmlhbFN0cmluZyhleGVjLCBT
dHJpbmcoQVNDSUlMaXRlcmFsKCJFcnJvciIpKSksIERvbnRFbnVtKTsKIH0KIAogYm9vbCBFcnJv
clByb3RvdHlwZTo6Z2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBl
eGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QgJnNsb3QpCkBAIC05
OCw3ICs5OCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZXJyb3JQcm90b0YKICAg
ICAvLyA0LiBJZiBuYW1lIGlzIHVuZGVmaW5lZCwgdGhlbiBsZXQgbmFtZSBiZSAiRXJyb3IiOyBl
bHNlIGxldCBuYW1lIGJlIFRvU3RyaW5nKG5hbWUpLgogICAgIFN0cmluZyBuYW1lU3RyaW5nOwog
ICAgIGlmIChuYW1lLmlzVW5kZWZpbmVkKCkpCi0gICAgICAgIG5hbWVTdHJpbmcgPSAiRXJyb3Ii
OworICAgICAgICBuYW1lU3RyaW5nID0gQVNDSUlMaXRlcmFsKCJFcnJvciIpOwogICAgIGVsc2Ug
ewogICAgICAgICBuYW1lU3RyaW5nID0gbmFtZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7
CiAgICAgICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKQEAgLTExNSw3ICsxMTUsNyBAQCBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGVycm9yUHJvdG9GCiAgICAgLy8gNy4gSWYgbXNn
IGlzIHVuZGVmaW5lZCwgdGhlbiBsZXQgbXNnIGJlIHRoZSBlbXB0eSBTdHJpbmc7IGVsc2UgbGV0
IG1zZyBiZSBUb1N0cmluZyhtc2cpLgogICAgIFN0cmluZyBtZXNzYWdlU3RyaW5nOwogICAgIGlm
IChtZXNzYWdlLmlzVW5kZWZpbmVkKCkpCi0gICAgICAgIG1lc3NhZ2VTdHJpbmcgPSAiIjsKKyAg
ICAgICAgbWVzc2FnZVN0cmluZyA9IFN0cmluZygpOwogICAgIGVsc2UgewogICAgICAgICBtZXNz
YWdlU3RyaW5nID0gbWVzc2FnZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CiAgICAgICAg
IGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuY3BwCShyZXZpc2lvbiAxMjc0ODMpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNDcsNyArNDcsNyBAQCBjb25zdCBDbGFzc0luZm8gSW50ZXJydXB0ZWRF
eGVjdXRpb25FcnJvCiBKU1ZhbHVlIEludGVycnVwdGVkRXhlY3V0aW9uRXJyb3I6OmRlZmF1bHRW
YWx1ZShjb25zdCBKU09iamVjdCosIEV4ZWNTdGF0ZSogZXhlYywgUHJlZmVycmVkUHJpbWl0aXZl
VHlwZSBoaW50KQogewogICAgIGlmIChoaW50ID09IFByZWZlclN0cmluZykKLSAgICAgICAgcmV0
dXJuIGpzTm9udHJpdmlhbFN0cmluZyhleGVjLCAiSmF2YVNjcmlwdCBleGVjdXRpb24gZXhjZWVk
ZWQgdGltZW91dC4iKTsKKyAgICAgICAgcmV0dXJuIGpzTm9udHJpdmlhbFN0cmluZyhleGVjLCBT
dHJpbmcoQVNDSUlMaXRlcmFsKCJKYXZhU2NyaXB0IGV4ZWN1dGlvbiBleGNlZWRlZCB0aW1lb3V0
LiIpKSk7CiAgICAgcmV0dXJuIEpTVmFsdWUoc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+Ojpx
dWlldF9OYU4oKSk7CiB9CiAKQEAgLTc0LDcgKzc0LDcgQEAgY29uc3QgQ2xhc3NJbmZvIFRlcm1p
bmF0ZWRFeGVjdXRpb25FcnJvcgogSlNWYWx1ZSBUZXJtaW5hdGVkRXhlY3V0aW9uRXJyb3I6OmRl
ZmF1bHRWYWx1ZShjb25zdCBKU09iamVjdCosIEV4ZWNTdGF0ZSogZXhlYywgUHJlZmVycmVkUHJp
bWl0aXZlVHlwZSBoaW50KQogewogICAgIGlmIChoaW50ID09IFByZWZlclN0cmluZykKLSAgICAg
ICAgcmV0dXJuIGpzTm9udHJpdmlhbFN0cmluZyhleGVjLCAiSmF2YVNjcmlwdCBleGVjdXRpb24g
dGVybWluYXRlZC4iKTsKKyAgICAgICAgcmV0dXJuIGpzTm9udHJpdmlhbFN0cmluZyhleGVjLCBT
dHJpbmcoQVNDSUlMaXRlcmFsKCJKYXZhU2NyaXB0IGV4ZWN1dGlvbiB0ZXJtaW5hdGVkLiIpKSk7
CiAgICAgcmV0dXJuIEpTVmFsdWUoc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjpxdWlldF9O
YU4oKSk7CiB9CiAKQEAgLTk2LDEyICs5NiwxMiBAQCBib29sIGlzVGVybWluYXRlZEV4ZWN1dGlv
bkV4Y2VwdGlvbihKU1ZhCiAKIEpTT2JqZWN0KiBjcmVhdGVTdGFja092ZXJmbG93RXJyb3IoRXhl
Y1N0YXRlKiBleGVjKQogewotICAgIHJldHVybiBjcmVhdGVSYW5nZUVycm9yKGV4ZWMsICJNYXhp
bXVtIGNhbGwgc3RhY2sgc2l6ZSBleGNlZWRlZC4iKTsKKyAgICByZXR1cm4gY3JlYXRlUmFuZ2VF
cnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIk1heGltdW0gY2FsbCBzdGFjayBzaXplIGV4Y2VlZGVk
LiIpKTsKIH0KIAogSlNPYmplY3QqIGNyZWF0ZVN0YWNrT3ZlcmZsb3dFcnJvcihKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0KQogewotICAgIHJldHVybiBjcmVhdGVSYW5nZUVycm9yKGdsb2Jh
bE9iamVjdCwgIk1heGltdW0gY2FsbCBzdGFjayBzaXplIGV4Y2VlZGVkLiIpOworICAgIHJldHVy
biBjcmVhdGVSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgQVNDSUlMaXRlcmFsKCJNYXhpbXVtIGNh
bGwgc3RhY2sgc2l6ZSBleGNlZWRlZC4iKSk7CiB9CiAKIEpTT2JqZWN0KiBjcmVhdGVVbmRlZmlu
ZWRWYXJpYWJsZUVycm9yKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgaWRlbnQp
CkBAIC0xNTMsNyArMTUzLDcgQEAgSlNPYmplY3QqIGNyZWF0ZUVycm9yRm9ySW52YWxpZEdsb2Jh
bEFzcwogCiBKU09iamVjdCogY3JlYXRlT3V0T2ZNZW1vcnlFcnJvcihKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0KQogewotICAgIHJldHVybiBjcmVhdGVFcnJvcihnbG9iYWxPYmplY3QsICJP
dXQgb2YgbWVtb3J5Iik7CisgICAgcmV0dXJuIGNyZWF0ZUVycm9yKGdsb2JhbE9iamVjdCwgQVND
SUlMaXRlcmFsKCJPdXQgb2YgbWVtb3J5IikpOwogfQogCiBKU09iamVjdCogdGhyb3dPdXRPZk1l
bW9yeUVycm9yKEV4ZWNTdGF0ZSogZXhlYykKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0V4ZWN1dGFibGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0V4ZWN1dGFibGUuY3BwCShyZXZpc2lvbiAxMjc0ODMpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjA5
LDcgKzIwOSw3IEBAIEpTT2JqZWN0KiBFdmFsRXhlY3V0YWJsZTo6Y29tcGlsZUludGVybmEKICAg
ICAgICAgbV9ldmFsQ29kZUJsb2NrID0gbmV3Q29kZUJsb2NrLnJlbGVhc2UoKTsKICAgICB9IGVs
c2UgewogICAgICAgICBpZiAoIWxleGljYWxHbG9iYWxPYmplY3QtPmV2YWxFbmFibGVkKCkpCi0g
ICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihleGVjLCBjcmVhdGVFdmFsRXJyb3IoZXhlYywg
IkV2YWwgaXMgZGlzYWJsZWQiKSk7CisgICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihleGVj
LCBjcmVhdGVFdmFsRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJFdmFsIGlzIGRpc2FibGVkIikp
KTsKICAgICAgICAgUmVmUHRyPEV2YWxOb2RlPiBldmFsTm9kZSA9IHBhcnNlPEV2YWxOb2RlPihn
bG9iYWxEYXRhLCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBtX3NvdXJjZSwgMCwgaXNTdHJpY3RNb2Rl
KCkgPyBKU1BhcnNlU3RyaWN0IDogSlNQYXJzZU5vcm1hbCwgRXZhbE5vZGU6OmlzRnVuY3Rpb25O
b2RlID8gSlNQYXJzZUZ1bmN0aW9uQ29kZSA6IEpTUGFyc2VQcm9ncmFtQ29kZSwgbGV4aWNhbEds
b2JhbE9iamVjdC0+ZGVidWdnZXIoKSwgZXhlYywgJmV4Y2VwdGlvbik7CiAgICAgICAgIGlmICgh
ZXZhbE5vZGUpIHsKICAgICAgICAgICAgIEFTU0VSVChleGNlcHRpb24pOwpAQCAtNjc1LDcgKzY3
NSw3IEBAIFN0cmluZyBGdW5jdGlvbkV4ZWN1dGFibGU6OnBhcmFtU3RyaW5nKCkKICAgICBTdHJp
bmdCdWlsZGVyIGJ1aWxkZXI7CiAgICAgZm9yIChzaXplX3QgcG9zID0gMDsgcG9zIDwgcGFyYW1l
dGVycy5zaXplKCk7ICsrcG9zKSB7CiAgICAgICAgIGlmICghYnVpbGRlci5pc0VtcHR5KCkpCi0g
ICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgiLCAiKTsKKyAgICAgICAgICAgIGJ1aWxkZXIuYXBw
ZW5kTGl0ZXJhbCgiLCAiKTsKICAgICAgICAgYnVpbGRlci5hcHBlbmQocGFyYW1ldGVyc1twb3Nd
LnVzdHJpbmcoKSk7CiAgICAgfQogICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkNvbnN0
cnVjdG9yLmNwcAkocmV2aXNpb24gMTI3NDgzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgyLDcgKzgy
LDcgQEAgQ2FsbFR5cGUgRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6Z2V0Q2FsbERhdAogSlNPYmplY3Qq
IGNvbnN0cnVjdEZ1bmN0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgY29uc3QgQXJnTGlzdCYgYXJncywgY29uc3QgSWRlbnRpZmllciYgZnVuY3Rpb25O
YW1lLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCwgY29uc3QgVGV4dFBvc2l0aW9uJiBwb3NpdGlv
bikKIHsKICAgICBpZiAoIWdsb2JhbE9iamVjdC0+ZXZhbEVuYWJsZWQoKSkKLSAgICAgICAgcmV0
dXJuIHRocm93RXJyb3IoZXhlYywgY3JlYXRlRXZhbEVycm9yKGV4ZWMsICJGdW5jdGlvbiBjb25z
dHJ1Y3RvciBpcyBkaXNhYmxlZCIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoZXhlYywg
Y3JlYXRlRXZhbEVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiRnVuY3Rpb24gY29uc3RydWN0b3Ig
aXMgZGlzYWJsZWQiKSkpOwogICAgIHJldHVybiBjb25zdHJ1Y3RGdW5jdGlvblNraXBwaW5nRXZh
bEVuYWJsZWRDaGVjayhleGVjLCBnbG9iYWxPYmplY3QsIGFyZ3MsIGZ1bmN0aW9uTmFtZSwgc291
cmNlVVJMLCBwb3NpdGlvbik7CiB9CiAKQEAgLTkzLDIwICs5MywyMCBAQCBKU09iamVjdCogY29u
c3RydWN0RnVuY3Rpb25Ta2lwcGluZ0V2YWxFCiAgICAgLy8gV2UgYWxzbyBuZWVkIFxuIGJlZm9y
ZSB0aGUgY2xvc2luZyB9IHRvIGhhbmRsZSAvLyBjb21tZW50cyBhdCB0aGUgZW5kIG9mIHRoZSBs
YXN0IGxpbmUKICAgICBTdHJpbmcgcHJvZ3JhbTsKICAgICBpZiAoYXJncy5pc0VtcHR5KCkpCi0g
ICAgICAgIHByb2dyYW0gPSAiKGZ1bmN0aW9uKCkgeyBcbn0pIjsKKyAgICAgICAgcHJvZ3JhbSA9
IEFTQ0lJTGl0ZXJhbCgiKGZ1bmN0aW9uKCkgeyBcbn0pIik7CiAgICAgZWxzZSBpZiAoYXJncy5z
aXplKCkgPT0gMSkKICAgICAgICAgcHJvZ3JhbSA9IG1ha2VTdHJpbmcoIihmdW5jdGlvbigpIHsg
IiwgYXJncy5hdCgwKS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyksICJcbn0pIik7CiAgICAg
ZWxzZSB7CiAgICAgICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKLSAgICAgICAgYnVpbGRlci5h
cHBlbmQoIihmdW5jdGlvbigiKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCIoZnVu
Y3Rpb24oIik7CiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKGFyZ3MuYXQoMCkudG9TdHJpbmcoZXhl
YyktPnZhbHVlKGV4ZWMpKTsKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDE7IGkgPCBhcmdzLnNp
emUoKSAtIDE7IGkrKykgewotICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoIiwiKTsKKyAgICAg
ICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcsJyk7CiAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZChh
cmdzLmF0KGkpLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSk7CiAgICAgICAgIH0KLSAgICAg
ICAgYnVpbGRlci5hcHBlbmQoIikgeyAiKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFs
KCIpIHsgIik7CiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKGFyZ3MuYXQoYXJncy5zaXplKCkgLSAx
KS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpOwotICAgICAgICBidWlsZGVyLmFwcGVuZCgi
XG59KSIpOworICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIlxufSkiKTsKICAgICAgICAg
cHJvZ3JhbSA9IGJ1aWxkZXIudG9TdHJpbmcoKTsKICAgICB9CiAKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuaAkocmV2aXNpb24g
MTI3NDgzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Qcm90b3R5
cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzIsNyArMzIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgc3RhdGljIEZ1bmN0aW9uUHJvdG90eXBlKiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICAg
ICAgewogICAgICAgICAgICAgRnVuY3Rpb25Qcm90b3R5cGUqIHByb3RvdHlwZSA9IG5ldyAoTm90
TnVsbCwgYWxsb2NhdGVDZWxsPEZ1bmN0aW9uUHJvdG90eXBlPigqZXhlYy0+aGVhcCgpKSkgRnVu
Y3Rpb25Qcm90b3R5cGUoZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpOwotICAgICAgICAgICAgcHJv
dG90eXBlLT5maW5pc2hDcmVhdGlvbihleGVjLCAiIik7CisgICAgICAgICAgICBwcm90b3R5cGUt
PmZpbmlzaENyZWF0aW9uKGV4ZWMsIFN0cmluZygpKTsKICAgICAgICAgICAgIHJldHVybiBwcm90
b3R5cGU7CiAgICAgICAgIH0KICAgICAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9JbnRlcm5hbEZ1bmN0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9uLmNwcAkocmV2aXNpb24gMTI3NDgzKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTQ0LDcgKzQ0LDcgQEAgdm9pZCBJbnRlcm5hbEZ1bmN0aW9uOjpmaW5p
c2hDcmVhdGlvbihKUwogICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKGdsb2JhbERhdGEpOwogICAg
IEFTU0VSVChpbmhlcml0cygmc19pbmZvKSk7CiAgICAgQVNTRVJUKG1ldGhvZFRhYmxlKCktPmdl
dENhbGxEYXRhICE9IEludGVybmFsRnVuY3Rpb246OnNfaW5mby5tZXRob2RUYWJsZS5nZXRDYWxs
RGF0YSk7Ci0gICAgcHV0RGlyZWN0KGdsb2JhbERhdGEsIGdsb2JhbERhdGEucHJvcGVydHlOYW1l
cy0+bmFtZSwganNTdHJpbmcoJmdsb2JhbERhdGEsIG5hbWUuaXNOdWxsKCkgPyAiIiA6IG5hbWUp
LCBEb250RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250RW51bSk7CisgICAgcHV0RGlyZWN0KGdsb2Jh
bERhdGEsIGdsb2JhbERhdGEucHJvcGVydHlOYW1lcy0+bmFtZSwganNTdHJpbmcoJmdsb2JhbERh
dGEsIG5hbWUpLCBEb250RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250RW51bSk7CiB9CiAKIGNvbnN0
IFN0cmluZyYgSW50ZXJuYWxGdW5jdGlvbjo6bmFtZShFeGVjU3RhdGUqIGV4ZWMpCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNwcAkocmV2aXNpb24gMTI3NDgz
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTExMyw3ICsxMTMsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaXNEZW5zZUVub3Vn
aEZvclZlY3RvCiBzdGF0aWMgYm9vbCByZWplY3QoRXhlY1N0YXRlKiBleGVjLCBib29sIHRocm93
RXhjZXB0aW9uLCBjb25zdCBjaGFyKiBtZXNzYWdlKQogewogICAgIGlmICh0aHJvd0V4Y2VwdGlv
bikKLSAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgbWVzc2FnZSk7CisgICAgICAgIHRocm93
VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbChtZXNzYWdlKSk7CiAgICAgcmV0dXJuIGZhbHNl
OwogfQogCkBAIC0yMTIsMTQgKzIxMiwxNCBAQCBpbmxpbmUgdm9pZCBTcGFyc2VBcnJheVZhbHVl
TWFwOjpwdXQoRXhlCiAgICAgaWYgKHJlc3VsdC5pc05ld0VudHJ5ICYmICFhcnJheS0+aXNFeHRl
bnNpYmxlKCkpIHsKICAgICAgICAgcmVtb3ZlKHJlc3VsdC5pdGVyYXRvcik7CiAgICAgICAgIGlm
IChzaG91bGRUaHJvdykKLSAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIFN0cmljdE1v
ZGVSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcik7CisgICAgICAgICAgICB0aHJvd1R5cGVFcnJv
cihleGVjLCBBU0NJSUxpdGVyYWwoU3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9y
KSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBpZiAoIShlbnRyeS5hdHRyaWJ1dGVz
ICYgQWNjZXNzb3IpKSB7CiAgICAgICAgIGlmIChlbnRyeS5hdHRyaWJ1dGVzICYgUmVhZE9ubHkp
IHsKICAgICAgICAgICAgIGlmIChzaG91bGRUaHJvdykKLSAgICAgICAgICAgICAgICB0aHJvd1R5
cGVFcnJvcihleGVjLCBTdHJpY3RNb2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpOworICAg
ICAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbChTdHJpY3RNb2Rl
UmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgfQogCkBAIC0yMzMsNyArMjMzLDcgQEAgaW5saW5lIHZvaWQgU3BhcnNlQXJyYXlWYWx1ZU1h
cDo6cHV0KEV4ZQogICAgIAogICAgIGlmICghc2V0dGVyKSB7CiAgICAgICAgIGlmIChzaG91bGRU
aHJvdykKLSAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIFN0cmljdE1vZGVSZWFkb25s
eVByb3BlcnR5V3JpdGVFcnJvcik7CisgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBB
U0NJSUxpdGVyYWwoU3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKSk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKQEAgLTcyMyw3ICs3MjMsNyBAQCB2b2lkIEpTQXJyYXk6OnB1
dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0CiAgICAgaWYgKHByb3BlcnR5TmFtZSA9PSBleGVjLT5w
cm9wZXJ0eU5hbWVzKCkubGVuZ3RoKSB7CiAgICAgICAgIHVuc2lnbmVkIG5ld0xlbmd0aCA9IHZh
bHVlLnRvVUludDMyKGV4ZWMpOwogICAgICAgICBpZiAodmFsdWUudG9OdW1iZXIoZXhlYykgIT0g
c3RhdGljX2Nhc3Q8ZG91YmxlPihuZXdMZW5ndGgpKSB7Ci0gICAgICAgICAgICB0aHJvd0Vycm9y
KGV4ZWMsIGNyZWF0ZVJhbmdlRXJyb3IoZXhlYywgIkludmFsaWQgYXJyYXkgbGVuZ3RoIikpOwor
ICAgICAgICAgICAgdGhyb3dFcnJvcihleGVjLCBjcmVhdGVSYW5nZUVycm9yKGV4ZWMsIEFTQ0lJ
TGl0ZXJhbCgiSW52YWxpZCBhcnJheSBsZW5ndGgiKSkpOwogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICB9CiAgICAgICAgIHRoaXNPYmplY3QtPnNldExlbmd0aChleGVjLCBuZXdMZW5ndGgs
IHNsb3QuaXNTdHJpY3RNb2RlKCkpOwpAQCAtODExLDcgKzgxMSw3IEBAIHZvaWQgSlNBcnJheTo6
cHV0QnlJbmRleEJleW9uZFZlY3RvckxlbmcKICAgICAgICAgLy8gUHJvaGliaXQgZ3Jvd2luZyB0
aGUgYXJyYXkgaWYgbGVuZ3RoIGlzIG5vdCB3cml0YWJsZS4KICAgICAgICAgaWYgKG1hcC0+bGVu
Z3RoSXNSZWFkT25seSgpIHx8ICFpc0V4dGVuc2libGUoKSkgewogICAgICAgICAgICAgaWYgKHNo
b3VsZFRocm93KQotICAgICAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIFN0cmljdE1v
ZGVSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcik7CisgICAgICAgICAgICAgICAgdGhyb3dUeXBl
RXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKFN0cmljdE1vZGVSZWFkb25seVByb3BlcnR5V3JpdGVF
cnJvcikpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIGxlbmd0aCA9
IGkgKyAxOwpAQCAtMTIzNiw3ICsxMjM2LDcgQEAgSlNWYWx1ZSBKU0FycmF5Ojpwb3AoRXhlY1N0
YXRlKiBleGVjKQogICAgIHVuc2lnbmVkIGxlbmd0aCA9IHN0b3JhZ2UtPm1fbGVuZ3RoOwogICAg
IGlmICghbGVuZ3RoKSB7CiAgICAgICAgIGlmICghaXNMZW5ndGhXcml0YWJsZSgpKQotICAgICAg
ICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgU3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0
ZUVycm9yKTsKKyAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbChT
dHJpY3RNb2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpKTsKICAgICAgICAgcmV0dXJuIGpz
VW5kZWZpbmVkKCk7CiAgICAgfQogCkBAIC0xMjYxLDcgKzEyNjEsNyBAQCBKU1ZhbHVlIEpTQXJy
YXk6OnBvcChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwog
ICAgIC8vIENhbGwgdGhlIFtbRGVsZXRlXV0gaW50ZXJuYWwgbWV0aG9kIG9mIE8gd2l0aCBhcmd1
bWVudHMgaW5keCBhbmQgdHJ1ZS4KICAgICBpZiAoIWRlbGV0ZVByb3BlcnR5QnlJbmRleCh0aGlz
LCBleGVjLCBpbmRleCkpIHsKLSAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgIlVuYWJsZSB0
byBkZWxldGUgcHJvcGVydHkuIik7CisgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJ
TGl0ZXJhbCgiVW5hYmxlIHRvIGRlbGV0ZSBwcm9wZXJ0eS4iKSk7CiAgICAgICAgIHJldHVybiBq
c1VuZGVmaW5lZCgpOwogICAgIH0KICAgICAvLyBDYWxsIHRoZSBbW1B1dF1dIGludGVybmFsIG1l
dGhvZCBvZiBPIHdpdGggYXJndW1lbnRzICJsZW5ndGgiLCBpbmR4LCBhbmQgdHJ1ZS4KQEAgLTEy
OTQsNyArMTI5NCw3IEBAIHZvaWQgSlNBcnJheTo6cHVzaChFeGVjU3RhdGUqIGV4ZWMsIEpTVmEK
ICAgICAgICAgbWV0aG9kVGFibGUoKS0+cHV0QnlJbmRleCh0aGlzLCBleGVjLCBzdG9yYWdlLT5t
X2xlbmd0aCwgdmFsdWUsIHRydWUpOwogICAgICAgICAvLyBQZXIgRVM1LjEgMTUuNC40Ljcgc3Rl
cCA2ICYgMTUuNC41LjEgc3RlcCAzLmQuCiAgICAgICAgIGlmICghZXhlYy0+aGFkRXhjZXB0aW9u
KCkpCi0gICAgICAgICAgICB0aHJvd0Vycm9yKGV4ZWMsIGNyZWF0ZVJhbmdlRXJyb3IoZXhlYywg
IkludmFsaWQgYXJyYXkgbGVuZ3RoIikpOworICAgICAgICAgICAgdGhyb3dFcnJvcihleGVjLCBj
cmVhdGVSYW5nZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiSW52YWxpZCBhcnJheSBsZW5ndGgi
KSkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcAkocmV2aXNpb24gMTI3NDgzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTk2LDcgKzk2LDcgQEAgdm9pZCBKU0Z1bmN0aW9uOjpmaW5pc2hDcmVhdGlvbihFeGVjU3RhdAog
ICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSk7CiAgICAgQVNTRVJU
KGluaGVyaXRzKCZzX2luZm8pKTsKICAgICBtX2V4ZWN1dGFibGUuc2V0KGV4ZWMtPmdsb2JhbERh
dGEoKSwgdGhpcywgZXhlY3V0YWJsZSk7Ci0gICAgcHV0RGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEo
KSwgZXhlYy0+Z2xvYmFsRGF0YSgpLnByb3BlcnR5TmFtZXMtPm5hbWUsIGpzU3RyaW5nKGV4ZWMs
IG5hbWUuaXNOdWxsKCkgPyAiIiA6IG5hbWUpLCBEb250RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250
RW51bSk7CisgICAgcHV0RGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+Z2xvYmFsRGF0
YSgpLnByb3BlcnR5TmFtZXMtPm5hbWUsIGpzU3RyaW5nKGV4ZWMsIG5hbWUpLCBEb250RGVsZXRl
IHwgUmVhZE9ubHkgfCBEb250RW51bSk7CiAgICAgcHV0RGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEo
KSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCwganNOdW1iZXIobGVuZ3RoKSwgRG9udERl
bGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0pOwogfQogCkBAIC0yMDMsNyArMjAzLDcgQEAgSlNW
YWx1ZSBKU0Z1bmN0aW9uOjpjYWxsZXJHZXR0ZXIoRXhlY1N0YQogICAgIEpTRnVuY3Rpb24qIGZ1
bmN0aW9uID0ganNDYXN0PEpTRnVuY3Rpb24qPihjYWxsZXIpOwogICAgIGlmIChmdW5jdGlvbi0+
aXNIb3N0RnVuY3Rpb24oKSB8fCAhZnVuY3Rpb24tPmpzRXhlY3V0YWJsZSgpLT5pc1N0cmljdE1v
ZGUoKSkKICAgICAgICAgcmV0dXJuIGNhbGxlcjsKLSAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3Io
ZXhlYywgIkZ1bmN0aW9uLmNhbGxlciB1c2VkIHRvIHJldHJpZXZlIHN0cmljdCBjYWxsZXIiKTsK
KyAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJGdW5jdGlvbi5j
YWxsZXIgdXNlZCB0byByZXRyaWV2ZSBzdHJpY3QgY2FsbGVyIikpOwogfQogCiBKU1ZhbHVlIEpT
RnVuY3Rpb246Omxlbmd0aEdldHRlcihFeGVjU3RhdGUqLCBKU1ZhbHVlIHNsb3RCYXNlLCBQcm9w
ZXJ0eU5hbWUpCkBAIC00MTQsMjcgKzQxNCwyNyBAQCBib29sIEpTRnVuY3Rpb246OmRlZmluZU93
blByb3BlcnR5KEpTT2JqCiAgICAgIAogICAgIGlmIChkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZVBy
ZXNlbnQoKSAmJiBkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSgpKSB7CiAgICAgICAgIGlmICh0aHJv
d0V4Y2VwdGlvbikKLSAgICAgICAgICAgIHRocm93RXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9y
KGV4ZWMsICJBdHRlbXB0aW5nIHRvIGNvbmZpZ3VyYWJsZSBhdHRyaWJ1dGUgb2YgdW5jb25maWd1
cmFibGUgcHJvcGVydHkuIikpOworICAgICAgICAgICAgdGhyb3dFcnJvcihleGVjLCBjcmVhdGVU
eXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJBdHRlbXB0aW5nIHRvIGNvbmZpZ3VyYWJsZSBh
dHRyaWJ1dGUgb2YgdW5jb25maWd1cmFibGUgcHJvcGVydHkuIikpKTsKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIH0KICAgICBpZiAoZGVzY3JpcHRvci5lbnVtZXJhYmxlUHJlc2VudCgpICYm
IGRlc2NyaXB0b3IuZW51bWVyYWJsZSgpKSB7CiAgICAgICAgIGlmICh0aHJvd0V4Y2VwdGlvbikK
LSAgICAgICAgICAgIHRocm93RXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsICJBdHRl
bXB0aW5nIHRvIGNoYW5nZSBlbnVtZXJhYmxlIGF0dHJpYnV0ZSBvZiB1bmNvbmZpZ3VyYWJsZSBw
cm9wZXJ0eS4iKSk7CisgICAgICAgICAgICB0aHJvd0Vycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJv
cihleGVjLCBBU0NJSUxpdGVyYWwoIkF0dGVtcHRpbmcgdG8gY2hhbmdlIGVudW1lcmFibGUgYXR0
cmlidXRlIG9mIHVuY29uZmlndXJhYmxlIHByb3BlcnR5LiIpKSk7CiAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICB9CiAgICAgaWYgKGRlc2NyaXB0b3IuaXNBY2Nlc3NvckRlc2NyaXB0b3IoKSkg
ewogICAgICAgICBpZiAodGhyb3dFeGNlcHRpb24pCi0gICAgICAgICAgICB0aHJvd0Vycm9yKGV4
ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCAiQXR0ZW1wdGluZyB0byBjaGFuZ2UgYWNjZXNzIG1l
Y2hhbmlzbSBmb3IgYW4gdW5jb25maWd1cmFibGUgcHJvcGVydHkuIikpOworICAgICAgICAgICAg
dGhyb3dFcnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJBdHRl
bXB0aW5nIHRvIGNoYW5nZSBhY2Nlc3MgbWVjaGFuaXNtIGZvciBhbiB1bmNvbmZpZ3VyYWJsZSBw
cm9wZXJ0eS4iKSkpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIGlmIChkZXNj
cmlwdG9yLndyaXRhYmxlUHJlc2VudCgpICYmIGRlc2NyaXB0b3Iud3JpdGFibGUoKSkgewogICAg
ICAgICBpZiAodGhyb3dFeGNlcHRpb24pCi0gICAgICAgICAgICB0aHJvd0Vycm9yKGV4ZWMsIGNy
ZWF0ZVR5cGVFcnJvcihleGVjLCAiQXR0ZW1wdGluZyB0byBjaGFuZ2Ugd3JpdGFibGUgYXR0cmli
dXRlIG9mIHVuY29uZmlndXJhYmxlIHByb3BlcnR5LiIpKTsKKyAgICAgICAgICAgIHRocm93RXJy
b3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiQXR0ZW1wdGluZyB0
byBjaGFuZ2Ugd3JpdGFibGUgYXR0cmlidXRlIG9mIHVuY29uZmlndXJhYmxlIHByb3BlcnR5LiIp
KSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgaWYgKCF2YWx1ZUNoZWNrKSB7
CiAgICAgICAgIGlmICh0aHJvd0V4Y2VwdGlvbikKLSAgICAgICAgICAgIHRocm93RXJyb3IoZXhl
YywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsICJBdHRlbXB0aW5nIHRvIGNoYW5nZSB2YWx1ZSBvZiBh
IHJlYWRvbmx5IHByb3BlcnR5LiIpKTsKKyAgICAgICAgICAgIHRocm93RXJyb3IoZXhlYywgY3Jl
YXRlVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiQXR0ZW1wdGluZyB0byBjaGFuZ2UgdmFs
dWUgb2YgYSByZWFkb25seSBwcm9wZXJ0eS4iKSkpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgfQogICAgIHJldHVybiB0cnVlOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHbG9iYWxEYXRhLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dsb2JhbERhdGEuY3BwCShyZXZpc2lvbiAxMjc0ODMpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
MDQsOCArMTA0LDE1IEBAIHN0YXRpYyBib29sIGVuYWJsZUFzc2VtYmxlcihFeGVjdXRhYmxlQWwK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAjaWYgVVNFKENGKQotICAgIFJldGFpblB0cjxDRlN0
cmluZ1JlZj4gY2FuVXNlSklUS2V5KEFkb3B0Q0YsIENGU3RyaW5nQ3JlYXRlV2l0aENTdHJpbmco
MCAsICJKYXZhU2NyaXB0Q29yZVVzZUpJVCIsIGtDRlN0cmluZ0VuY29kaW5nTWFjUm9tYW4pKTsK
LSAgICBSZXRhaW5QdHI8Q0ZCb29sZWFuUmVmPiBjYW5Vc2VKSVQoQWRvcHRDRiwgKENGQm9vbGVh
blJlZilDRlByZWZlcmVuY2VzQ29weUFwcFZhbHVlKGNhblVzZUpJVEtleS5nZXQoKSwga0NGUHJl
ZmVyZW5jZXNDdXJyZW50QXBwbGljYXRpb24pKTsKKyNpZiBDT01QSUxFUihHQ0MpICYmICFDT01Q
SUxFUihDTEFORykKKyAgICAvLyBGSVhNRTogcmVtb3ZlIHRoaXMgb25jZSB0aGUgRVdTIGhhdmUg
YmVlbiB1cGdyYWRlZCB0byBMTFZNLgorICAgIC8vIFdvcmsgYXJvdW5kIGEgYnVnIG9mIEdDQyB3
aXRoIHN0cmljdC1hbGlhc2luZy4KKyAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGNhblVzZUpJ
VEtleVJldGFpbihBZG9wdENGLCBDRlN0cmluZ0NyZWF0ZVdpdGhDU3RyaW5nKDAgLCAiSmF2YVNj
cmlwdENvcmVVc2VKSVQiLCBrQ0ZTdHJpbmdFbmNvZGluZ01hY1JvbWFuKSk7CisgICAgQ0ZTdHJp
bmdSZWYgY2FuVXNlSklUS2V5ID0gY2FuVXNlSklUS2V5UmV0YWluLmdldCgpOworI2Vsc2UKKyAg
ICBDRlN0cmluZ1JlZiBjYW5Vc2VKSVRLZXkgPSBDRlNUUigiSmF2YVNjcmlwdENvcmVVc2VKSVQi
KTsKKyNlbmRpZiAvLyBDT01QSUxFUihHQ0MpICYmICFDT01QSUxFUihDTEFORykKKyAgICBSZXRh
aW5QdHI8Q0ZCb29sZWFuUmVmPiBjYW5Vc2VKSVQoQWRvcHRDRiwgKENGQm9vbGVhblJlZilDRlBy
ZWZlcmVuY2VzQ29weUFwcFZhbHVlKGNhblVzZUpJVEtleSwga0NGUHJlZmVyZW5jZXNDdXJyZW50
QXBwbGljYXRpb24pKTsKICAgICBpZiAoY2FuVXNlSklUKQogICAgICAgICByZXR1cm4ga0NGQm9v
bGVhblRydWUgPT0gY2FuVXNlSklULmdldCgpOwogI2VuZGlmCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCShyZXZpc2lvbiAxMjc0
ODMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTIxMSw4ICsyMTEsOCBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojpy
ZXNldChKU1ZhbHVlIHByb3RvCiAgICAgbV9hcHBseUZ1bmN0aW9uLnNldChleGVjLT5nbG9iYWxE
YXRhKCksIHRoaXMsIGFwcGx5RnVuY3Rpb24pOwogICAgIG1fb2JqZWN0UHJvdG90eXBlLnNldChl
eGVjLT5nbG9iYWxEYXRhKCksIHRoaXMsIE9iamVjdFByb3RvdHlwZTo6Y3JlYXRlKGV4ZWMsIHRo
aXMsIE9iamVjdFByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKGV4ZWMtPmdsb2JhbERhdGEoKSwg
dGhpcywganNOdWxsKCkpKSk7CiAgICAgR2V0dGVyU2V0dGVyKiBwcm90b0FjY2Vzc29yID0gR2V0
dGVyU2V0dGVyOjpjcmVhdGUoZXhlYyk7Ci0gICAgcHJvdG9BY2Nlc3Nvci0+c2V0R2V0dGVyKGV4
ZWMtPmdsb2JhbERhdGEoKSwgSlNGdW5jdGlvbjo6Y3JlYXRlKGV4ZWMsIHRoaXMsIDAsICIiLCBn
bG9iYWxGdW5jUHJvdG9HZXR0ZXIpKTsKLSAgICBwcm90b0FjY2Vzc29yLT5zZXRTZXR0ZXIoZXhl
Yy0+Z2xvYmFsRGF0YSgpLCBKU0Z1bmN0aW9uOjpjcmVhdGUoZXhlYywgdGhpcywgMCwgIiIsIGds
b2JhbEZ1bmNQcm90b1NldHRlcikpOworICAgIHByb3RvQWNjZXNzb3ItPnNldEdldHRlcihleGVj
LT5nbG9iYWxEYXRhKCksIEpTRnVuY3Rpb246OmNyZWF0ZShleGVjLCB0aGlzLCAwLCBTdHJpbmco
KSwgZ2xvYmFsRnVuY1Byb3RvR2V0dGVyKSk7CisgICAgcHJvdG9BY2Nlc3Nvci0+c2V0U2V0dGVy
KGV4ZWMtPmdsb2JhbERhdGEoKSwgSlNGdW5jdGlvbjo6Y3JlYXRlKGV4ZWMsIHRoaXMsIDAsIFN0
cmluZygpLCBnbG9iYWxGdW5jUHJvdG9TZXR0ZXIpKTsKICAgICBtX29iamVjdFByb3RvdHlwZS0+
cHV0RGlyZWN0QWNjZXNzb3IoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVz
KCkudW5kZXJzY29yZVByb3RvLCBwcm90b0FjY2Vzc29yLCBBY2Nlc3NvciB8IERvbnRFbnVtKTsK
ICAgICBtX2Z1bmN0aW9uUHJvdG90eXBlLT5zdHJ1Y3R1cmUoKS0+c2V0UHJvdG90eXBlV2l0aG91
dFRyYW5zaXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBtX29iamVjdFByb3RvdHlwZS5nZXQoKSk7
CiAKQEAgLTI3MSwxMiArMjcxLDEyIEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnJlc2V0KEpTVmFs
dWUgcHJvdG8KIAogICAgIFN0cnVjdHVyZSogbmF0aXZlRXJyb3JQcm90b3R5cGVTdHJ1Y3R1cmUg
PSBOYXRpdmVFcnJvclByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKGV4ZWMtPmdsb2JhbERhdGEo
KSwgdGhpcywgbV9lcnJvclByb3RvdHlwZS5nZXQoKSk7CiAgICAgU3RydWN0dXJlKiBuYXRpdmVF
cnJvclN0cnVjdHVyZSA9IE5hdGl2ZUVycm9yQ29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZShl
eGVjLT5nbG9iYWxEYXRhKCksIHRoaXMsIG1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpOwotICAg
IG1fZXZhbEVycm9yQ29uc3RydWN0b3Iuc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywgTmF0
aXZlRXJyb3JDb25zdHJ1Y3Rvcjo6Y3JlYXRlKGV4ZWMsIHRoaXMsIG5hdGl2ZUVycm9yU3RydWN0
dXJlLCBuYXRpdmVFcnJvclByb3RvdHlwZVN0cnVjdHVyZSwgIkV2YWxFcnJvciIpKTsKLSAgICBt
X3JhbmdlRXJyb3JDb25zdHJ1Y3Rvci5zZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlzLCBOYXRp
dmVFcnJvckNvbnN0cnVjdG9yOjpjcmVhdGUoZXhlYywgdGhpcywgbmF0aXZlRXJyb3JTdHJ1Y3R1
cmUsIG5hdGl2ZUVycm9yUHJvdG90eXBlU3RydWN0dXJlLCAiUmFuZ2VFcnJvciIpKTsKLSAgICBt
X3JlZmVyZW5jZUVycm9yQ29uc3RydWN0b3Iuc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywg
TmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcjo6Y3JlYXRlKGV4ZWMsIHRoaXMsIG5hdGl2ZUVycm9yU3Ry
dWN0dXJlLCBuYXRpdmVFcnJvclByb3RvdHlwZVN0cnVjdHVyZSwgIlJlZmVyZW5jZUVycm9yIikp
OwotICAgIG1fc3ludGF4RXJyb3JDb25zdHJ1Y3Rvci5zZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0
aGlzLCBOYXRpdmVFcnJvckNvbnN0cnVjdG9yOjpjcmVhdGUoZXhlYywgdGhpcywgbmF0aXZlRXJy
b3JTdHJ1Y3R1cmUsIG5hdGl2ZUVycm9yUHJvdG90eXBlU3RydWN0dXJlLCAiU3ludGF4RXJyb3Ii
KSk7Ci0gICAgbV90eXBlRXJyb3JDb25zdHJ1Y3Rvci5zZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0
aGlzLCBOYXRpdmVFcnJvckNvbnN0cnVjdG9yOjpjcmVhdGUoZXhlYywgdGhpcywgbmF0aXZlRXJy
b3JTdHJ1Y3R1cmUsIG5hdGl2ZUVycm9yUHJvdG90eXBlU3RydWN0dXJlLCAiVHlwZUVycm9yIikp
OwotICAgIG1fVVJJRXJyb3JDb25zdHJ1Y3Rvci5zZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlz
LCBOYXRpdmVFcnJvckNvbnN0cnVjdG9yOjpjcmVhdGUoZXhlYywgdGhpcywgbmF0aXZlRXJyb3JT
dHJ1Y3R1cmUsIG5hdGl2ZUVycm9yUHJvdG90eXBlU3RydWN0dXJlLCAiVVJJRXJyb3IiKSk7Cisg
ICAgbV9ldmFsRXJyb3JDb25zdHJ1Y3Rvci5zZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlzLCBO
YXRpdmVFcnJvckNvbnN0cnVjdG9yOjpjcmVhdGUoZXhlYywgdGhpcywgbmF0aXZlRXJyb3JTdHJ1
Y3R1cmUsIG5hdGl2ZUVycm9yUHJvdG90eXBlU3RydWN0dXJlLCBBU0NJSUxpdGVyYWwoIkV2YWxF
cnJvciIpKSk7CisgICAgbV9yYW5nZUVycm9yQ29uc3RydWN0b3Iuc2V0KGV4ZWMtPmdsb2JhbERh
dGEoKSwgdGhpcywgTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcjo6Y3JlYXRlKGV4ZWMsIHRoaXMsIG5h
dGl2ZUVycm9yU3RydWN0dXJlLCBuYXRpdmVFcnJvclByb3RvdHlwZVN0cnVjdHVyZSwgQVNDSUlM
aXRlcmFsKCJSYW5nZUVycm9yIikpKTsKKyAgICBtX3JlZmVyZW5jZUVycm9yQ29uc3RydWN0b3Iu
c2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywgTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcjo6Y3Jl
YXRlKGV4ZWMsIHRoaXMsIG5hdGl2ZUVycm9yU3RydWN0dXJlLCBuYXRpdmVFcnJvclByb3RvdHlw
ZVN0cnVjdHVyZSwgQVNDSUlMaXRlcmFsKCJSZWZlcmVuY2VFcnJvciIpKSk7CisgICAgbV9zeW50
YXhFcnJvckNvbnN0cnVjdG9yLnNldChleGVjLT5nbG9iYWxEYXRhKCksIHRoaXMsIE5hdGl2ZUVy
cm9yQ29uc3RydWN0b3I6OmNyZWF0ZShleGVjLCB0aGlzLCBuYXRpdmVFcnJvclN0cnVjdHVyZSwg
bmF0aXZlRXJyb3JQcm90b3R5cGVTdHJ1Y3R1cmUsIEFTQ0lJTGl0ZXJhbCgiU3ludGF4RXJyb3Ii
KSkpOworICAgIG1fdHlwZUVycm9yQ29uc3RydWN0b3Iuc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwg
dGhpcywgTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcjo6Y3JlYXRlKGV4ZWMsIHRoaXMsIG5hdGl2ZUVy
cm9yU3RydWN0dXJlLCBuYXRpdmVFcnJvclByb3RvdHlwZVN0cnVjdHVyZSwgQVNDSUlMaXRlcmFs
KCJUeXBlRXJyb3IiKSkpOworICAgIG1fVVJJRXJyb3JDb25zdHJ1Y3Rvci5zZXQoZXhlYy0+Z2xv
YmFsRGF0YSgpLCB0aGlzLCBOYXRpdmVFcnJvckNvbnN0cnVjdG9yOjpjcmVhdGUoZXhlYywgdGhp
cywgbmF0aXZlRXJyb3JTdHJ1Y3R1cmUsIG5hdGl2ZUVycm9yUHJvdG90eXBlU3RydWN0dXJlLCBB
U0NJSUxpdGVyYWwoIlVSSUVycm9yIikpKTsKIAogICAgIG1fb2JqZWN0UHJvdG90eXBlLT5wdXRE
aXJlY3RXaXRob3V0VHJhbnNpdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5
TmFtZXMoKS5jb25zdHJ1Y3Rvciwgb2JqZWN0Q29uc3RydWN0b3IsIERvbnRFbnVtKTsKICAgICBt
X2Z1bmN0aW9uUHJvdG90eXBlLT5wdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihleGVjLT5nbG9i
YWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5jb25zdHJ1Y3RvciwgZnVuY3Rpb25Db25z
dHJ1Y3RvciwgRG9udEVudW0pOwpAQCAtMzMxLDcgKzMzMSw3IEBAIHZvaWQgSlNHbG9iYWxPYmpl
Y3Q6OnJlc2V0KEpTVmFsdWUgcHJvdG8KIAogdm9pZCBKU0dsb2JhbE9iamVjdDo6Y3JlYXRlVGhy
b3dUeXBlRXJyb3IoRXhlY1N0YXRlKiBleGVjKQogewotICAgIEpTRnVuY3Rpb24qIHRocm93ZXIg
PSBKU0Z1bmN0aW9uOjpjcmVhdGUoZXhlYywgdGhpcywgMCwgIiIsIGdsb2JhbEZ1bmNUaHJvd1R5
cGVFcnJvcik7CisgICAgSlNGdW5jdGlvbiogdGhyb3dlciA9IEpTRnVuY3Rpb246OmNyZWF0ZShl
eGVjLCB0aGlzLCAwLCBTdHJpbmcoKSwgZ2xvYmFsRnVuY1Rocm93VHlwZUVycm9yKTsKICAgICBH
ZXR0ZXJTZXR0ZXIqIGdldHRlclNldHRlciA9IEdldHRlclNldHRlcjo6Y3JlYXRlKGV4ZWMpOwog
ICAgIGdldHRlclNldHRlci0+c2V0R2V0dGVyKGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhyb3dlcik7
CiAgICAgZ2V0dGVyU2V0dGVyLT5zZXRTZXR0ZXIoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aHJvd2Vy
KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0RnVu
Y3Rpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5jcHAJKHJldmlzaW9uIDEyNzQ4MykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNTMsNyArNTMsNyBAQCBzdGF0aWMgSlNWYWx1ZSBlbmNvZGUoRXhlY1N0YXRl
KiBleGVjLCBjCiB7CiAgICAgQ1N0cmluZyBjc3RyID0gZXhlYy0+YXJndW1lbnQoMCkudG9TdHJp
bmcoZXhlYyktPnZhbHVlKGV4ZWMpLnV0ZjgodHJ1ZSk7CiAgICAgaWYgKCFjc3RyLmRhdGEoKSkK
LSAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoZXhlYywgY3JlYXRlVVJJRXJyb3IoZXhlYywgIlN0
cmluZyBjb250YWluZWQgYW4gaWxsZWdhbCBVVEYtMTYgc2VxdWVuY2UuIikpOworICAgICAgICBy
ZXR1cm4gdGhyb3dFcnJvcihleGVjLCBjcmVhdGVVUklFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwo
IlN0cmluZyBjb250YWluZWQgYW4gaWxsZWdhbCBVVEYtMTYgc2VxdWVuY2UuIikpKTsKIAogICAg
IEpTU3RyaW5nQnVpbGRlciBidWlsZGVyOwogICAgIGNvbnN0IGNoYXIqIHAgPSBjc3RyLmRhdGEo
KTsKQEAgLTExNCw3ICsxMTQsNyBAQCBzdGF0aWMgSlNWYWx1ZSBkZWNvZGUoRXhlY1N0YXRlKiBl
eGVjLCBjCiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAoY2hhckxlbiA9PSAwKSB7CiAg
ICAgICAgICAgICAgICAgaWYgKHN0cmljdCkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRo
cm93RXJyb3IoZXhlYywgY3JlYXRlVVJJRXJyb3IoZXhlYywgIlVSSSBlcnJvciIpKTsKKyAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoZXhlYywgY3JlYXRlVVJJRXJyb3IoZXhl
YywgQVNDSUlMaXRlcmFsKCJVUkkgZXJyb3IiKSkpOwogICAgICAgICAgICAgICAgIC8vIFRoZSBv
bmx5IGNhc2Ugd2hlcmUgd2UgZG9uJ3QgdXNlICJzdHJpY3QiIG1vZGUgaXMgdGhlICJ1bmVzY2Fw
ZSIgZnVuY3Rpb24uCiAgICAgICAgICAgICAgICAgLy8gRm9yIHRoYXQsIGl0J3MgZ29vZCB0byBz
dXBwb3J0IHRoZSB3b25reSAiJXUiIHN5bnRheCBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIFdpbklF
LgogICAgICAgICAgICAgICAgIGlmIChrIDw9IGxlbmd0aCAtIDYgJiYgcFsxXSA9PSAndScKQEAg
LTQ5OSw3ICs0OTksNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdsb2JhbEZ1bmNF
CiAgICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSBleGVjLT5ob3N0VGhpc1ZhbHVlKCkudG9UaGlz
T2JqZWN0KGV4ZWMpOwogICAgIEpTT2JqZWN0KiB1bndyYXBwZWRPYmplY3QgPSB0aGlzT2JqZWN0
LT51bndyYXBwZWRPYmplY3QoKTsKICAgICBpZiAoIXVud3JhcHBlZE9iamVjdC0+aXNHbG9iYWxP
YmplY3QoKSB8fCBqc0Nhc3Q8SlNHbG9iYWxPYmplY3QqPih1bndyYXBwZWRPYmplY3QpLT5ldmFs
RnVuY3Rpb24oKSAhPSBleGVjLT5jYWxsZWUoKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJv
cihleGVjLCBjcmVhdGVFdmFsRXJyb3IoZXhlYywgIlRoZSBcInRoaXNcIiB2YWx1ZSBwYXNzZWQg
dG8gZXZhbCBtdXN0IGJlIHRoZSBnbG9iYWwgb2JqZWN0IGZyb20gd2hpY2ggZXZhbCBvcmlnaW5h
dGVkIikpOworICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZUV2YWxFcnJv
cihleGVjLCBBU0NJSUxpdGVyYWwoIlRoZSBcInRoaXNcIiB2YWx1ZSBwYXNzZWQgdG8gZXZhbCBt
dXN0IGJlIHRoZSBnbG9iYWwgb2JqZWN0IGZyb20gd2hpY2ggZXZhbCBvcmlnaW5hdGVkIikpKTsK
IAogICAgIEpTVmFsdWUgeCA9IGV4ZWMtPmFyZ3VtZW50KDApOwogICAgIGlmICgheC5pc1N0cmlu
ZygpKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPTk9iamVjdC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPTk9iamVjdC5j
cHAJKHJldmlzaW9uIDEyNzQ4MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
T05PYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNjEsNyArMzYxLDcgQEAgU3RyaW5naWZp
ZXI6OlN0cmluZ2lmeVJlc3VsdCBTdHJpbmdpZmllcgogICAgICAgICByZXR1cm4gU3RyaW5naWZ5
RmFpbGVkRHVlVG9VbmRlZmluZWRWYWx1ZTsKIAogICAgIGlmICh2YWx1ZS5pc051bGwoKSkgewot
ICAgICAgICBidWlsZGVyLmFwcGVuZCgibnVsbCIpOworICAgICAgICBidWlsZGVyLmFwcGVuZExp
dGVyYWwoIm51bGwiKTsKICAgICAgICAgcmV0dXJuIFN0cmluZ2lmeVN1Y2NlZWRlZDsKICAgICB9
CiAKQEAgLTM3MSw3ICszNzEsMTAgQEAgU3RyaW5naWZpZXI6OlN0cmluZ2lmeVJlc3VsdCBTdHJp
bmdpZmllcgogICAgICAgICByZXR1cm4gU3RyaW5naWZ5RmFpbGVkOwogCiAgICAgaWYgKHZhbHVl
LmlzQm9vbGVhbigpKSB7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kKHZhbHVlLmlzVHJ1ZSgpID8g
InRydWUiIDogImZhbHNlIik7CisgICAgICAgIGlmICh2YWx1ZS5pc1RydWUoKSkKKyAgICAgICAg
ICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgidHJ1ZSIpOworICAgICAgICBlbHNlCisgICAgICAg
ICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoImZhbHNlIik7CiAgICAgICAgIHJldHVybiBTdHJp
bmdpZnlTdWNjZWVkZWQ7CiAgICAgfQogCkBAIC0zODQsNyArMzg3LDcgQEAgU3RyaW5naWZpZXI6
OlN0cmluZ2lmeVJlc3VsdCBTdHJpbmdpZmllcgogICAgIGlmICh2YWx1ZS5pc051bWJlcigpKSB7
CiAgICAgICAgIGRvdWJsZSBudW1iZXIgPSB2YWx1ZS5hc051bWJlcigpOwogICAgICAgICBpZiAo
IWlzZmluaXRlKG51bWJlcikpCi0gICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgibnVsbCIpOwor
ICAgICAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCJudWxsIik7CiAgICAgICAgIGVsc2UK
ICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKFN0cmluZzo6bnVtYmVyVG9TdHJpbmdFQ01BU2Ny
aXB0KG51bWJlcikpOwogICAgICAgICByZXR1cm4gU3RyaW5naWZ5U3VjY2VlZGVkOwpAQCAtMzk4
LDcgKzQwMSw3IEBAIFN0cmluZ2lmaWVyOjpTdHJpbmdpZnlSZXN1bHQgU3RyaW5naWZpZXIKICAg
ICBDYWxsRGF0YSBjYWxsRGF0YTsKICAgICBpZiAob2JqZWN0LT5tZXRob2RUYWJsZSgpLT5nZXRD
YWxsRGF0YShvYmplY3QsIGNhbGxEYXRhKSAhPSBDYWxsVHlwZU5vbmUpIHsKICAgICAgICAgaWYg
KGhvbGRlci0+aW5oZXJpdHMoJkpTQXJyYXk6OnNfaW5mbykpIHsKLSAgICAgICAgICAgIGJ1aWxk
ZXIuYXBwZW5kKCJudWxsIik7CisgICAgICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIm51
bGwiKTsKICAgICAgICAgICAgIHJldHVybiBTdHJpbmdpZnlTdWNjZWVkZWQ7CiAgICAgICAgIH0K
ICAgICAgICAgcmV0dXJuIFN0cmluZ2lmeUZhaWxlZER1ZVRvVW5kZWZpbmVkVmFsdWU7CkBAIC00
MDcsNyArNDEwLDcgQEAgU3RyaW5naWZpZXI6OlN0cmluZ2lmeVJlc3VsdCBTdHJpbmdpZmllcgog
ICAgIC8vIEhhbmRsZSBjeWNsZSBkZXRlY3Rpb24sIGFuZCBwdXQgdGhlIGhvbGRlciBvbiB0aGUg
c3RhY2suCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1faG9sZGVyU3RhY2suc2l6ZSgp
OyBpKyspIHsKICAgICAgICAgaWYgKG1faG9sZGVyU3RhY2tbaV0ub2JqZWN0KCkgPT0gb2JqZWN0
KSB7Ci0gICAgICAgICAgICB0aHJvd0Vycm9yKG1fZXhlYywgY3JlYXRlVHlwZUVycm9yKG1fZXhl
YywgIkpTT04uc3RyaW5naWZ5IGNhbm5vdCBzZXJpYWxpemUgY3ljbGljIHN0cnVjdHVyZXMuIikp
OworICAgICAgICAgICAgdGhyb3dFcnJvcihtX2V4ZWMsIGNyZWF0ZVR5cGVFcnJvcihtX2V4ZWMs
IEFTQ0lJTGl0ZXJhbCgiSlNPTi5zdHJpbmdpZnkgY2Fubm90IHNlcmlhbGl6ZSBjeWNsaWMgc3Ry
dWN0dXJlcy4iKSkpOwogICAgICAgICAgICAgcmV0dXJuIFN0cmluZ2lmeUZhaWxlZDsKICAgICAg
ICAgfQogICAgIH0KQEAgLTU2OSw3ICs1NzIsNyBAQCBib29sIFN0cmluZ2lmaWVyOjpIb2xkZXI6
OmFwcGVuZE5leHRQcm9wCiAKICAgICBzd2l0Y2ggKHN0cmluZ2lmeVJlc3VsdCkgewogICAgICAg
ICBjYXNlIFN0cmluZ2lmeUZhaWxlZDoKLSAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCJudWxs
Iik7CisgICAgICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIm51bGwiKTsKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICBjYXNlIFN0cmluZ2lmeVN1Y2NlZWRlZDoKICAgICAgICAgICAg
IGJyZWFrOwpAQCAtODA5LDcgKzgxMiw3IEBAIE5FVkVSX0lOTElORSBKU1ZhbHVlIFdhbGtlcjo6
d2FsayhKU1ZhbHUKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSlNPTlByb3RvRnVuY1Bh
cnNlKEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICBpZiAoIWV4ZWMtPmFyZ3VtZW50Q291bnQoKSkK
LSAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVFcnJvcihleGVjLCAiSlNP
Ti5wYXJzZSByZXF1aXJlcyBhdCBsZWFzdCBvbmUgcGFyYW1ldGVyIikpOworICAgICAgICByZXR1
cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiSlNP
Ti5wYXJzZSByZXF1aXJlcyBhdCBsZWFzdCBvbmUgcGFyYW1ldGVyIikpKTsKICAgICBTdHJpbmcg
c291cmNlID0gZXhlYy0+YXJndW1lbnQoMCkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOwog
ICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc051bGwoKSk7CkBAIC04NDMsNyArODQ2LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBKU09OUHJvdG9GdQogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBKU09OUHJv
dG9GdW5jU3RyaW5naWZ5KEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICBpZiAoIWV4ZWMtPmFyZ3Vt
ZW50Q291bnQoKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVFcnJv
cihleGVjLCAiTm8gaW5wdXQgdG8gc3RyaW5naWZ5IikpOworICAgICAgICByZXR1cm4gdGhyb3dW
TUVycm9yKGV4ZWMsIGNyZWF0ZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiTm8gaW5wdXQgdG8g
c3RyaW5naWZ5IikpKTsKICAgICBMb2NhbFNjb3BlIHNjb3BlKGV4ZWMtPmdsb2JhbERhdGEoKSk7
CiAgICAgTG9jYWw8VW5rbm93bj4gdmFsdWUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5hcmd1
bWVudCgwKSk7CiAgICAgTG9jYWw8VW5rbm93bj4gcmVwbGFjZXIoZXhlYy0+Z2xvYmFsRGF0YSgp
LCBleGVjLT5hcmd1bWVudCgxKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU09iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNPYmplY3QuY3BwCShyZXZpc2lvbiAxMjc0ODMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU09iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4Miw3ICsxODIsNyBA
QCB2b2lkIEpTT2JqZWN0OjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhCiAgICAgICAgICAgICBw
cm90b3R5cGUgPSBvYmotPnByb3RvdHlwZSgpOwogICAgICAgICAgICAgaWYgKHByb3RvdHlwZS5p
c051bGwoKSkgewogICAgICAgICAgICAgICAgIGlmICghdGhpc09iamVjdC0+cHV0RGlyZWN0SW50
ZXJuYWw8UHV0TW9kZVB1dD4oZ2xvYmFsRGF0YSwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgMCwgc2xv
dCwgZ2V0Q2FsbGFibGVPYmplY3QodmFsdWUpKSAmJiBzbG90LmlzU3RyaWN0TW9kZSgpKQotICAg
ICAgICAgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBTdHJpY3RNb2RlUmVhZG9ubHlQ
cm9wZXJ0eVdyaXRlRXJyb3IpOworICAgICAgICAgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihl
eGVjLCBBU0NJSUxpdGVyYWwoU3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKSk7
CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC0x
OTUsNyArMTk1LDcgQEAgdm9pZCBKU09iamVjdDo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YQog
ICAgICAgICBpZiAob2Zmc2V0ICE9IGludmFsaWRPZmZzZXQpIHsKICAgICAgICAgICAgIGlmIChh
dHRyaWJ1dGVzICYgUmVhZE9ubHkpIHsKICAgICAgICAgICAgICAgICBpZiAoc2xvdC5pc1N0cmlj
dE1vZGUoKSkKLSAgICAgICAgICAgICAgICAgICAgdGhyb3dFcnJvcihleGVjLCBjcmVhdGVUeXBl
RXJyb3IoZXhlYywgU3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKSk7CisgICAg
ICAgICAgICAgICAgICAgIHRocm93RXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsIEFT
Q0lJTGl0ZXJhbChTdHJpY3RNb2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpKSk7CiAgICAg
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogCkBAIC0yMDQsNyArMjA0LDcgQEAg
dm9pZCBKU09iamVjdDo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YQogICAgICAgICAgICAgICAg
IEpTT2JqZWN0KiBzZXR0ZXJGdW5jID0gYXNHZXR0ZXJTZXR0ZXIoZ3MpLT5zZXR0ZXIoKTsgICAg
ICAgIAogICAgICAgICAgICAgICAgIGlmICghc2V0dGVyRnVuYykgewogICAgICAgICAgICAgICAg
ICAgICBpZiAoc2xvdC5pc1N0cmljdE1vZGUoKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHRo
cm93RXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsICJzZXR0aW5nIGEgcHJvcGVydHkg
dGhhdCBoYXMgb25seSBhIGdldHRlciIpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRocm93
RXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgic2V0dGluZyBh
IHByb3BlcnR5IHRoYXQgaGFzIG9ubHkgYSBnZXR0ZXIiKSkpOwogICAgICAgICAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIApAQCAtMjI5LDcg
KzIyOSw3IEBAIHZvaWQgSlNPYmplY3Q6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGEKICAgICB9
CiAgICAgCiAgICAgaWYgKCF0aGlzT2JqZWN0LT5wdXREaXJlY3RJbnRlcm5hbDxQdXRNb2RlUHV0
PihnbG9iYWxEYXRhLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCAwLCBzbG90LCBnZXRDYWxsYWJsZU9i
amVjdCh2YWx1ZSkpICYmIHNsb3QuaXNTdHJpY3RNb2RlKCkpCi0gICAgICAgIHRocm93VHlwZUVy
cm9yKGV4ZWMsIFN0cmljdE1vZGVSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcik7CisgICAgICAg
IHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbChTdHJpY3RNb2RlUmVhZG9ubHlQcm9w
ZXJ0eVdyaXRlRXJyb3IpKTsKICAgICByZXR1cm47CiB9CiAKQEAgLTM4OSw3ICszODksNyBAQCBK
U1ZhbHVlIEpTT2JqZWN0OjpkZWZhdWx0VmFsdWUoY29uc3QgSlNPCiAKICAgICBBU1NFUlQoIWV4
ZWMtPmhhZEV4Y2VwdGlvbigpKTsKIAotICAgIHJldHVybiB0aHJvd0Vycm9yKGV4ZWMsIGNyZWF0
ZVR5cGVFcnJvcihleGVjLCAiTm8gZGVmYXVsdCB2YWx1ZSIpKTsKKyAgICByZXR1cm4gdGhyb3dF
cnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJObyBkZWZhdWx0
IHZhbHVlIikpKTsKIH0KIAogY29uc3QgSGFzaEVudHJ5KiBKU09iamVjdDo6ZmluZFByb3BlcnR5
SGFzaEVudHJ5KEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkgY29u
c3QKQEAgLTQwOSw3ICs0MDksNyBAQCBib29sIEpTT2JqZWN0OjpoYXNJbnN0YW5jZShKU09iamVj
dCosIEV4CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmICghcHJvdG8uaXNPYmplY3Qo
KSkgewotICAgICAgICB0aHJvd0Vycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCAiaW5z
dGFuY2VvZiBjYWxsZWQgb24gYW4gb2JqZWN0IHdpdGggYW4gaW52YWxpZCBwcm90b3R5cGUgcHJv
cGVydHkuIikpOworICAgICAgICB0aHJvd0Vycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVj
LCBBU0NJSUxpdGVyYWwoImluc3RhbmNlb2YgY2FsbGVkIG9uIGFuIG9iamVjdCB3aXRoIGFuIGlu
dmFsaWQgcHJvdG90eXBlIHByb3BlcnR5LiIpKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICB9CiAKQEAgLTcxOCw3ICs3MTgsNyBAQCBib29sIEpTT2JqZWN0OjpkZWZpbmVPd25Qcm9wZXJ0
eShKU09iamVjCiAgICAgICAgIC8vIHVubGVzcyBleHRlbnNpb25zIGFyZSBwcmV2ZW50ZWQhCiAg
ICAgICAgIGlmICghb2JqZWN0LT5pc0V4dGVuc2libGUoKSkgewogICAgICAgICAgICAgaWYgKHRo
cm93RXhjZXB0aW9uKQotICAgICAgICAgICAgICAgIHRocm93RXJyb3IoZXhlYywgY3JlYXRlVHlw
ZUVycm9yKGV4ZWMsICJBdHRlbXB0aW5nIHRvIGRlZmluZSBwcm9wZXJ0eSBvbiBvYmplY3QgdGhh
dCBpcyBub3QgZXh0ZW5zaWJsZS4iKSk7CisgICAgICAgICAgICAgICAgdGhyb3dFcnJvcihleGVj
LCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJBdHRlbXB0aW5nIHRvIGRlZmlu
ZSBwcm9wZXJ0eSBvbiBvYmplY3QgdGhhdCBpcyBub3QgZXh0ZW5zaWJsZS4iKSkpOwogICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAgICAgIFByb3BlcnR5RGVzY3JpcHRv
ciBvbGREZXNjcmlwdG9yOwpAQCAtNzM2LDEyICs3MzYsMTIgQEAgYm9vbCBKU09iamVjdDo6ZGVm
aW5lT3duUHJvcGVydHkoSlNPYmplYwogICAgIGlmICghY3VycmVudC5jb25maWd1cmFibGUoKSkg
ewogICAgICAgICBpZiAoZGVzY3JpcHRvci5jb25maWd1cmFibGUoKSkgewogICAgICAgICAgICAg
aWYgKHRocm93RXhjZXB0aW9uKQotICAgICAgICAgICAgICAgIHRocm93RXJyb3IoZXhlYywgY3Jl
YXRlVHlwZUVycm9yKGV4ZWMsICJBdHRlbXB0aW5nIHRvIGNvbmZpZ3VyYWJsZSBhdHRyaWJ1dGUg
b2YgdW5jb25maWd1cmFibGUgcHJvcGVydHkuIikpOworICAgICAgICAgICAgICAgIHRocm93RXJy
b3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiQXR0ZW1wdGluZyB0
byBjb25maWd1cmFibGUgYXR0cmlidXRlIG9mIHVuY29uZmlndXJhYmxlIHByb3BlcnR5LiIpKSk7
CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICAgICAgaWYgKGRlc2Ny
aXB0b3IuZW51bWVyYWJsZVByZXNlbnQoKSAmJiBkZXNjcmlwdG9yLmVudW1lcmFibGUoKSAhPSBj
dXJyZW50LmVudW1lcmFibGUoKSkgewogICAgICAgICAgICAgaWYgKHRocm93RXhjZXB0aW9uKQot
ICAgICAgICAgICAgICAgIHRocm93RXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsICJB
dHRlbXB0aW5nIHRvIGNoYW5nZSBlbnVtZXJhYmxlIGF0dHJpYnV0ZSBvZiB1bmNvbmZpZ3VyYWJs
ZSBwcm9wZXJ0eS4iKSk7CisgICAgICAgICAgICAgICAgdGhyb3dFcnJvcihleGVjLCBjcmVhdGVU
eXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJBdHRlbXB0aW5nIHRvIGNoYW5nZSBlbnVtZXJh
YmxlIGF0dHJpYnV0ZSBvZiB1bmNvbmZpZ3VyYWJsZSBwcm9wZXJ0eS4iKSkpOwogICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAgfQpAQCAtNzU5LDcgKzc1OSw3IEBAIGJv
b2wgSlNPYmplY3Q6OmRlZmluZU93blByb3BlcnR5KEpTT2JqZWMKICAgICBpZiAoZGVzY3JpcHRv
ci5pc0RhdGFEZXNjcmlwdG9yKCkgIT0gY3VycmVudC5pc0RhdGFEZXNjcmlwdG9yKCkpIHsKICAg
ICAgICAgaWYgKCFjdXJyZW50LmNvbmZpZ3VyYWJsZSgpKSB7CiAgICAgICAgICAgICBpZiAodGhy
b3dFeGNlcHRpb24pCi0gICAgICAgICAgICAgICAgdGhyb3dFcnJvcihleGVjLCBjcmVhdGVUeXBl
RXJyb3IoZXhlYywgIkF0dGVtcHRpbmcgdG8gY2hhbmdlIGFjY2VzcyBtZWNoYW5pc20gZm9yIGFu
IHVuY29uZmlndXJhYmxlIHByb3BlcnR5LiIpKTsKKyAgICAgICAgICAgICAgICB0aHJvd0Vycm9y
KGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkF0dGVtcHRpbmcgdG8g
Y2hhbmdlIGFjY2VzcyBtZWNoYW5pc20gZm9yIGFuIHVuY29uZmlndXJhYmxlIHByb3BlcnR5LiIp
KSk7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICAgICAgb2JqZWN0
LT5tZXRob2RUYWJsZSgpLT5kZWxldGVQcm9wZXJ0eShvYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFt
ZSk7CkBAIC03NzEsMTMgKzc3MSwxMyBAQCBib29sIEpTT2JqZWN0OjpkZWZpbmVPd25Qcm9wZXJ0
eShKU09iamVjCiAgICAgICAgIGlmICghY3VycmVudC5jb25maWd1cmFibGUoKSkgewogICAgICAg
ICAgICAgaWYgKCFjdXJyZW50LndyaXRhYmxlKCkgJiYgZGVzY3JpcHRvci53cml0YWJsZSgpKSB7
CiAgICAgICAgICAgICAgICAgaWYgKHRocm93RXhjZXB0aW9uKQotICAgICAgICAgICAgICAgICAg
ICB0aHJvd0Vycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCAiQXR0ZW1wdGluZyB0byBj
aGFuZ2Ugd3JpdGFibGUgYXR0cmlidXRlIG9mIHVuY29uZmlndXJhYmxlIHByb3BlcnR5LiIpKTsK
KyAgICAgICAgICAgICAgICAgICAgdGhyb3dFcnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhl
YywgQVNDSUlMaXRlcmFsKCJBdHRlbXB0aW5nIHRvIGNoYW5nZSB3cml0YWJsZSBhdHRyaWJ1dGUg
b2YgdW5jb25maWd1cmFibGUgcHJvcGVydHkuIikpKTsKICAgICAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAoIWN1cnJlbnQud3JpdGFibGUo
KSkgewogICAgICAgICAgICAgICAgIGlmIChkZXNjcmlwdG9yLnZhbHVlKCkgJiYgIXNhbWVWYWx1
ZShleGVjLCBjdXJyZW50LnZhbHVlKCksIGRlc2NyaXB0b3IudmFsdWUoKSkpIHsKICAgICAgICAg
ICAgICAgICAgICAgaWYgKHRocm93RXhjZXB0aW9uKQotICAgICAgICAgICAgICAgICAgICAgICAg
dGhyb3dFcnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgIkF0dGVtcHRpbmcgdG8gY2hh
bmdlIHZhbHVlIG9mIGEgcmVhZG9ubHkgcHJvcGVydHkuIikpOworICAgICAgICAgICAgICAgICAg
ICAgICAgdGhyb3dFcnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFs
KCJBdHRlbXB0aW5nIHRvIGNoYW5nZSB2YWx1ZSBvZiBhIHJlYWRvbmx5IHByb3BlcnR5LiIpKSk7
CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICB9CkBAIC03OTMsMTIgKzc5MywxMiBAQCBib29sIEpTT2JqZWN0OjpkZWZpbmVP
d25Qcm9wZXJ0eShKU09iamVjCiAgICAgaWYgKCFjdXJyZW50LmNvbmZpZ3VyYWJsZSgpKSB7CiAg
ICAgICAgIGlmIChkZXNjcmlwdG9yLnNldHRlclByZXNlbnQoKSAmJiAhKGN1cnJlbnQuc2V0dGVy
UHJlc2VudCgpICYmIEpTVmFsdWU6OnN0cmljdEVxdWFsKGV4ZWMsIGN1cnJlbnQuc2V0dGVyKCks
IGRlc2NyaXB0b3Iuc2V0dGVyKCkpKSkgewogICAgICAgICAgICAgaWYgKHRocm93RXhjZXB0aW9u
KQotICAgICAgICAgICAgICAgIHRocm93RXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMs
ICJBdHRlbXB0aW5nIHRvIGNoYW5nZSB0aGUgc2V0dGVyIG9mIGFuIHVuY29uZmlndXJhYmxlIHBy
b3BlcnR5LiIpKTsKKyAgICAgICAgICAgICAgICB0aHJvd0Vycm9yKGV4ZWMsIGNyZWF0ZVR5cGVF
cnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkF0dGVtcHRpbmcgdG8gY2hhbmdlIHRoZSBzZXR0ZXIg
b2YgYW4gdW5jb25maWd1cmFibGUgcHJvcGVydHkuIikpKTsKICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICAgICAgfQogICAgICAgICBpZiAoZGVzY3JpcHRvci5nZXR0ZXJQcmVzZW50KCkg
JiYgIShjdXJyZW50LmdldHRlclByZXNlbnQoKSAmJiBKU1ZhbHVlOjpzdHJpY3RFcXVhbChleGVj
LCBjdXJyZW50LmdldHRlcigpLCBkZXNjcmlwdG9yLmdldHRlcigpKSkpIHsKICAgICAgICAgICAg
IGlmICh0aHJvd0V4Y2VwdGlvbikKLSAgICAgICAgICAgICAgICB0aHJvd0Vycm9yKGV4ZWMsIGNy
ZWF0ZVR5cGVFcnJvcihleGVjLCAiQXR0ZW1wdGluZyB0byBjaGFuZ2UgdGhlIGdldHRlciBvZiBh
biB1bmNvbmZpZ3VyYWJsZSBwcm9wZXJ0eS4iKSk7CisgICAgICAgICAgICAgICAgdGhyb3dFcnJv
cihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJBdHRlbXB0aW5nIHRv
IGNoYW5nZSB0aGUgZ2V0dGVyIG9mIGFuIHVuY29uZmlndXJhYmxlIHByb3BlcnR5LiIpKSk7CiAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICB9CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuY3BwCShyZXZpc2lvbiAxMjc0ODMpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTIyNSw3ICsyMjUsNyBAQCBKU1N0cmluZyogSlNSb3BlU3RyaW5nOjpnZXRJbmRleFNs
b3dDYXNlCiAgICAgcmVzb2x2ZVJvcGUoZXhlYyk7CiAgICAgLy8gUmV0dXJuIGEgc2FmZSBuby12
YWx1ZSByZXN1bHQsIHRoaXMgc2hvdWxkIG5ldmVyIGJlIHVzZWQsIHNpbmNlIHRoZSBleGNldGlv
biB3aWxsIGJlIHRocm93bi4KICAgICBpZiAoZXhlYy0+ZXhjZXB0aW9uKCkpCi0gICAgICAgIHJl
dHVybiBqc1N0cmluZyhleGVjLCAiIik7CisgICAgICAgIHJldHVybiBqc0VtcHR5U3RyaW5nKGV4
ZWMpOwogICAgIEFTU0VSVCghaXNSb3BlKCkpOwogICAgIEFTU0VSVChpIDwgbV92YWx1ZS5sZW5n
dGgoKSk7CiAgICAgcmV0dXJuIGpzU2luZ2xlQ2hhcmFjdGVyU3Vic3RyaW5nKGV4ZWMsIG1fdmFs
dWUsIGkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5oCShy
ZXZpc2lvbiAxMjc0ODMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmlu
Zy5oCSh3b3JraW5nIGNvcHkpCkBAIC01MCw4ICs1MCw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
IC8vIFRoZXNlIGZ1bmN0aW9ucyBhcmUgZmFzdGVyIHRoYW4ganVzdCBjYWxsaW5nIGpzU3RyaW5n
LgogICAgIEpTU3RyaW5nKiBqc05vbnRyaXZpYWxTdHJpbmcoSlNHbG9iYWxEYXRhKiwgY29uc3Qg
U3RyaW5nJik7CiAgICAgSlNTdHJpbmcqIGpzTm9udHJpdmlhbFN0cmluZyhFeGVjU3RhdGUqLCBj
b25zdCBTdHJpbmcmKTsKLSAgICBKU1N0cmluZyoganNOb250cml2aWFsU3RyaW5nKEpTR2xvYmFs
RGF0YSosIGNvbnN0IGNoYXIqKTsKLSAgICBKU1N0cmluZyoganNOb250cml2aWFsU3RyaW5nKEV4
ZWNTdGF0ZSosIGNvbnN0IGNoYXIqKTsKIAogICAgIC8vIFNob3VsZCBiZSB1c2VkIGZvciBzdHJp
bmdzIHRoYXQgYXJlIG93bmVkIGJ5IGFuIG9iamVjdCB0aGF0IHdpbGwKICAgICAvLyBsaWtlbHkg
b3V0bGl2ZSB0aGUgSlNWYWx1ZSB0aGlzIG1ha2VzLCBzdWNoIGFzIHRoZSBwYXJzZSB0cmVlIG9y
IGEKQEAgLTM1MywxNCArMzUxLDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHJldHVybiBK
U1N0cmluZzo6Y3JlYXRlKCpnbG9iYWxEYXRhLCBTdHJpbmdJbXBsOjpjcmVhdGUocy5pbXBsKCks
IG9mZnNldCwgMSkpOwogICAgIH0KIAotICAgIGlubGluZSBKU1N0cmluZyoganNOb250cml2aWFs
U3RyaW5nKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgY29uc3QgY2hhciogcykKLSAgICB7Ci0g
ICAgICAgIEFTU0VSVChzKTsKLSAgICAgICAgQVNTRVJUKHNbMF0pOwotICAgICAgICBBU1NFUlQo
c1sxXSk7Ci0gICAgICAgIHJldHVybiBKU1N0cmluZzo6Y3JlYXRlKCpnbG9iYWxEYXRhLCBTdHJp
bmcocykuaW1wbCgpKTsKLSAgICB9Ci0KICAgICBpbmxpbmUgSlNTdHJpbmcqIGpzTm9udHJpdmlh
bFN0cmluZyhKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIGNvbnN0IFN0cmluZyYgcykKICAgICB7
CiAgICAgICAgIEFTU0VSVChzLmxlbmd0aCgpID4gMSk7CkBAIC00NjgsNyArNDU4LDYgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgaW5saW5lIEpTU3RyaW5nKiBqc1N1YnN0cmluZzgoRXhlY1N0YXRl
KiBleGVjLCBjb25zdCBTdHJpbmcmIHMsIHVuc2lnbmVkIG9mZnNldCwgdW5zaWduZWQgbGVuZ3Ro
KSB7IHJldHVybiBqc1N1YnN0cmluZzgoJmV4ZWMtPmdsb2JhbERhdGEoKSwgcywgb2Zmc2V0LCBs
ZW5ndGgpOyB9CiAgICAgaW5saW5lIEpTU3RyaW5nKiBqc1N1YnN0cmluZyhFeGVjU3RhdGUqIGV4
ZWMsIGNvbnN0IFN0cmluZyYgcywgdW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpIHsg
cmV0dXJuIGpzU3Vic3RyaW5nKCZleGVjLT5nbG9iYWxEYXRhKCksIHMsIG9mZnNldCwgbGVuZ3Ro
KTsgfQogICAgIGlubGluZSBKU1N0cmluZyoganNOb250cml2aWFsU3RyaW5nKEV4ZWNTdGF0ZSog
ZXhlYywgY29uc3QgU3RyaW5nJiBzKSB7IHJldHVybiBqc05vbnRyaXZpYWxTdHJpbmcoJmV4ZWMt
Pmdsb2JhbERhdGEoKSwgcyk7IH0KLSAgICBpbmxpbmUgSlNTdHJpbmcqIGpzTm9udHJpdmlhbFN0
cmluZyhFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IGNoYXIqIHMpIHsgcmV0dXJuIGpzTm9udHJpdmlh
bFN0cmluZygmZXhlYy0+Z2xvYmFsRGF0YSgpLCBzKTsgfQogICAgIGlubGluZSBKU1N0cmluZyog
anNPd25lZFN0cmluZyhFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFN0cmluZyYgcykgeyByZXR1cm4g
anNPd25lZFN0cmluZygmZXhlYy0+Z2xvYmFsRGF0YSgpLCBzKTsgfQogCiAgICAgQUxXQVlTX0lO
TElORSBib29sIEpTU3RyaW5nOjpnZXRTdHJpbmdQcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiBleGVj
LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1ZhbHVlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1ZhbHVlLmNwcAkocmV2aXNpb24gMTI3NDgz
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYWx1ZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTE0Myw3ICsxNDMsNyBAQCB2b2lkIEpTVmFsdWU6OnB1dFRvUHJpbWl0aXZlKEV4
ZWNTdGF0ZSogCiAgICAgICAgICAgICAgICAgSlNPYmplY3QqIHNldHRlckZ1bmMgPSBhc0dldHRl
clNldHRlcihncyktPnNldHRlcigpOyAgICAgICAgCiAgICAgICAgICAgICAgICAgaWYgKCFzZXR0
ZXJGdW5jKSB7CiAgICAgICAgICAgICAgICAgICAgIGlmIChzbG90LmlzU3RyaWN0TW9kZSgpKQot
ICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3dFcnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3Io
ZXhlYywgInNldHRpbmcgYSBwcm9wZXJ0eSB0aGF0IGhhcyBvbmx5IGEgZ2V0dGVyIikpOworICAg
ICAgICAgICAgICAgICAgICAgICAgdGhyb3dFcnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhl
YywgQVNDSUlMaXRlcmFsKCJzZXR0aW5nIGEgcHJvcGVydHkgdGhhdCBoYXMgb25seSBhIGdldHRl
ciIpKSk7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9MaXRl
cmFsUGFyc2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9MaXRlcmFsUGFyc2VyLmNwcAkocmV2aXNpb24gMTI3NDgzKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvTGl0ZXJhbFBhcnNlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2OSw3
ICsyNjksNyBAQCB0ZW1wbGF0ZSA8UGFyc2VyTW9kZSBtb2RlPiBUb2tlblR5cGUgTGl0CiAgICAg
ICAgICAgICByZXR1cm4gbGV4SWRlbnRpZmllcih0b2tlbik7CiAgICAgICAgIGlmICgqbV9wdHIg
PT0gJ1wnJykgewogICAgICAgICAgICAgaWYgKG1vZGUgPT0gU3RyaWN0SlNPTikgewotICAgICAg
ICAgICAgICAgIG1fbGV4RXJyb3JNZXNzYWdlID0gIlNpbmdsZSBxdW90ZXMgKFwnKSBhcmUgbm90
IGFsbG93ZWQgaW4gSlNPTiI7CisgICAgICAgICAgICAgICAgbV9sZXhFcnJvck1lc3NhZ2UgPSBB
U0NJSUxpdGVyYWwoIlNpbmdsZSBxdW90ZXMgKFwnKSBhcmUgbm90IGFsbG93ZWQgaW4gSlNPTiIp
OwogICAgICAgICAgICAgICAgIHJldHVybiBUb2tFcnJvcjsKICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIHJldHVybiBsZXhTdHJpbmc8bW9kZSwgJ1wnJz4odG9rZW4pOwpAQCAtMzU2LDcgKzM1
Niw3IEBAIHRlbXBsYXRlIDxQYXJzZXJNb2RlIG1vZGUsIGNoYXIgdGVybWluYXQKICAgICAgICAg
ICAgICAgICBidWlsZGVyLmFwcGVuZChydW5TdGFydCwgbV9wdHIgLSBydW5TdGFydCk7CiAgICAg
ICAgICAgICArK21fcHRyOwogICAgICAgICAgICAgaWYgKG1fcHRyID49IG1fZW5kKSB7Ci0gICAg
ICAgICAgICAgICAgbV9sZXhFcnJvck1lc3NhZ2UgPSAiVW50ZXJtaW5hdGVkIHN0cmluZyI7Cisg
ICAgICAgICAgICAgICAgbV9sZXhFcnJvck1lc3NhZ2UgPSBBU0NJSUxpdGVyYWwoIlVudGVybWlu
YXRlZCBzdHJpbmciKTsKICAgICAgICAgICAgICAgICByZXR1cm4gVG9rRXJyb3I7CiAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICBzd2l0Y2ggKCptX3B0cikgewpAQCAtMzk1LDcgKzM5NSw3IEBA
IHRlbXBsYXRlIDxQYXJzZXJNb2RlIG1vZGUsIGNoYXIgdGVybWluYXQKIAogICAgICAgICAgICAg
ICAgIGNhc2UgJ3UnOgogICAgICAgICAgICAgICAgICAgICBpZiAoKG1fZW5kIC0gbV9wdHIpIDwg
NSkgeyAKLSAgICAgICAgICAgICAgICAgICAgICAgIG1fbGV4RXJyb3JNZXNzYWdlID0gIlxcdSBt
dXN0IGJlIGZvbGxvd2VkIGJ5IDQgaGV4IGRpZ2l0cyI7CisgICAgICAgICAgICAgICAgICAgICAg
ICBtX2xleEVycm9yTWVzc2FnZSA9IEFTQ0lJTGl0ZXJhbCgiXFx1IG11c3QgYmUgZm9sbG93ZWQg
YnkgNCBoZXggZGlnaXRzIik7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gVG9rRXJy
b3I7CiAgICAgICAgICAgICAgICAgICAgIH0gLy8gdU5OTk4gPT0gNSBjaGFyYWN0ZXJzCiAgICAg
ICAgICAgICAgICAgICAgIGZvciAoaW50IGkgPSAxOyBpIDwgNTsgaSsrKSB7CkBAIC00MjEsNyAr
NDIxLDcgQEAgdGVtcGxhdGUgPFBhcnNlck1vZGUgbW9kZSwgY2hhciB0ZXJtaW5hdAogICAgIH0g
d2hpbGUgKChtb2RlICE9IE5vblN0cmljdEpTT04pICYmIG1fcHRyICE9IHJ1blN0YXJ0ICYmICht
X3B0ciA8IG1fZW5kKSAmJiAqbV9wdHIgIT0gdGVybWluYXRvcik7CiAKICAgICBpZiAobV9wdHIg
Pj0gbV9lbmQgfHwgKm1fcHRyICE9IHRlcm1pbmF0b3IpIHsKLSAgICAgICAgbV9sZXhFcnJvck1l
c3NhZ2UgPSAiVW50ZXJtaW5hdGVkIHN0cmluZyI7CisgICAgICAgIG1fbGV4RXJyb3JNZXNzYWdl
ID0gQVNDSUlMaXRlcmFsKCJVbnRlcm1pbmF0ZWQgc3RyaW5nIik7CiAgICAgICAgIHJldHVybiBU
b2tFcnJvcjsKICAgICB9CiAKQEAgLTQ3NCw3ICs0NzQsNyBAQCBUb2tlblR5cGUgTGl0ZXJhbFBh
cnNlcjxDaGFyVHlwZT46OkxleGVyCiAgICAgICAgIHdoaWxlIChtX3B0ciA8IG1fZW5kICYmIGlz
QVNDSUlEaWdpdCgqbV9wdHIpKQogICAgICAgICAgICAgKyttX3B0cjsKICAgICB9IGVsc2Ugewot
ICAgICAgICBtX2xleEVycm9yTWVzc2FnZSA9ICJJbnZhbGlkIG51bWJlciI7CisgICAgICAgIG1f
bGV4RXJyb3JNZXNzYWdlID0gQVNDSUlMaXRlcmFsKCJJbnZhbGlkIG51bWJlciIpOwogICAgICAg
ICByZXR1cm4gVG9rRXJyb3I7CiAgICAgfQogCkBAIC00ODMsNyArNDgzLDcgQEAgVG9rZW5UeXBl
IExpdGVyYWxQYXJzZXI8Q2hhclR5cGU+OjpMZXhlcgogICAgICAgICArK21fcHRyOwogICAgICAg
ICAvLyBbMC05XSsKICAgICAgICAgaWYgKG1fcHRyID49IG1fZW5kIHx8ICFpc0FTQ0lJRGlnaXQo
Km1fcHRyKSkgewotICAgICAgICAgICAgbV9sZXhFcnJvck1lc3NhZ2UgPSAiSW52YWxpZCBkaWdp
dHMgYWZ0ZXIgZGVjaW1hbCBwb2ludCI7CisgICAgICAgICAgICBtX2xleEVycm9yTWVzc2FnZSA9
IEFTQ0lJTGl0ZXJhbCgiSW52YWxpZCBkaWdpdHMgYWZ0ZXIgZGVjaW1hbCBwb2ludCIpOwogICAg
ICAgICAgICAgcmV0dXJuIFRva0Vycm9yOwogICAgICAgICB9CiAKQEAgLTUxOCw3ICs1MTgsNyBA
QCBUb2tlblR5cGUgTGl0ZXJhbFBhcnNlcjxDaGFyVHlwZT46OkxleGVyCiAKICAgICAgICAgLy8g
WzAtOV0rCiAgICAgICAgIGlmIChtX3B0ciA+PSBtX2VuZCB8fCAhaXNBU0NJSURpZ2l0KCptX3B0
cikpIHsKLSAgICAgICAgICAgIG1fbGV4RXJyb3JNZXNzYWdlID0gIkV4cG9uZW50IHN5bWJvbHMg
c2hvdWxkIGJlIGZvbGxvd2VkIGJ5IGFuIG9wdGlvbmFsICcrJyBvciAnLScgYW5kIHRoZW4gYnkg
YXQgbGVhc3Qgb25lIG51bWJlciI7CisgICAgICAgICAgICBtX2xleEVycm9yTWVzc2FnZSA9IEFT
Q0lJTGl0ZXJhbCgiRXhwb25lbnQgc3ltYm9scyBzaG91bGQgYmUgZm9sbG93ZWQgYnkgYW4gb3B0
aW9uYWwgJysnIG9yICctJyBhbmQgdGhlbiBieSBhdCBsZWFzdCBvbmUgbnVtYmVyIik7CiAgICAg
ICAgICAgICByZXR1cm4gVG9rRXJyb3I7CiAgICAgICAgIH0KICAgICAgICAgCkBAIC01NTUsNyAr
NTU1LDcgQEAgSlNWYWx1ZSBMaXRlcmFsUGFyc2VyPENoYXJUeXBlPjo6cGFyc2UoUAogICAgICAg
ICAgICAgICAgIFRva2VuVHlwZSBsYXN0VG9rZW4gPSBtX2xleGVyLmN1cnJlbnRUb2tlbigpLnR5
cGU7CiAgICAgICAgICAgICAgICAgaWYgKG1fbGV4ZXIubmV4dCgpID09IFRva1JCcmFja2V0KSB7
CiAgICAgICAgICAgICAgICAgICAgIGlmIChsYXN0VG9rZW4gPT0gVG9rQ29tbWEpIHsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIG1fcGFyc2VFcnJvck1lc3NhZ2UgPSAiVW5leHBlY3RlZCBjb21t
YSBhdCB0aGUgZW5kIG9mIGFycmF5IGV4cHJlc3Npb24iOworICAgICAgICAgICAgICAgICAgICAg
ICAgbV9wYXJzZUVycm9yTWVzc2FnZSA9IEFTQ0lJTGl0ZXJhbCgiVW5leHBlY3RlZCBjb21tYSBh
dCB0aGUgZW5kIG9mIGFycmF5IGV4cHJlc3Npb24iKTsKICAgICAgICAgICAgICAgICAgICAgICAg
IHJldHVybiBKU1ZhbHVlKCk7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAg
ICAgICAgbV9sZXhlci5uZXh0KCk7CkBAIC01NzQsNyArNTc0LDcgQEAgSlNWYWx1ZSBMaXRlcmFs
UGFyc2VyPENoYXJUeXBlPjo6cGFyc2UoUAogICAgICAgICAgICAgICAgICAgICBnb3RvIGRvUGFy
c2VBcnJheVN0YXJ0RXhwcmVzc2lvbjsKIAogICAgICAgICAgICAgICAgIGlmIChtX2xleGVyLmN1
cnJlbnRUb2tlbigpLnR5cGUgIT0gVG9rUkJyYWNrZXQpIHsKLSAgICAgICAgICAgICAgICAgICAg
bV9wYXJzZUVycm9yTWVzc2FnZSA9ICJFeHBlY3RlZCAnXSciOworICAgICAgICAgICAgICAgICAg
ICBtX3BhcnNlRXJyb3JNZXNzYWdlID0gQVNDSUlMaXRlcmFsKCJFeHBlY3RlZCAnXSciKTsKICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKICAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICAgICAgCkBAIC01OTQsNyArNTk0LDcgQEAgSlNWYWx1ZSBMaXRlcmFsUGFyc2Vy
PENoYXJUeXBlPjo6cGFyc2UoUAogCiAgICAgICAgICAgICAgICAgICAgIC8vIENoZWNrIGZvciBj
b2xvbgogICAgICAgICAgICAgICAgICAgICBpZiAobV9sZXhlci5uZXh0KCkgIT0gVG9rQ29sb24p
IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIG1fcGFyc2VFcnJvck1lc3NhZ2UgPSAiRXhwZWN0
ZWQgJzonIGJlZm9yZSB2YWx1ZSBpbiBvYmplY3QgcHJvcGVydHkgZGVmaW5pdGlvbiI7CisgICAg
ICAgICAgICAgICAgICAgICAgICBtX3BhcnNlRXJyb3JNZXNzYWdlID0gQVNDSUlMaXRlcmFsKCJF
eHBlY3RlZCAnOicgYmVmb3JlIHZhbHVlIGluIG9iamVjdCBwcm9wZXJ0eSBkZWZpbml0aW9uIik7
CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOwogICAgICAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIApAQCAtNjA3LDcgKzYwNyw3IEBAIEpTVmFs
dWUgTGl0ZXJhbFBhcnNlcjxDaGFyVHlwZT46OnBhcnNlKFAKICAgICAgICAgICAgICAgICAgICAg
Z290byBzdGFydFBhcnNlRXhwcmVzc2lvbjsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICAgICAgaWYgKHR5cGUgIT0gVG9rUkJyYWNlKSAgewotICAgICAgICAgICAgICAgICAgICBtX3Bh
cnNlRXJyb3JNZXNzYWdlID0gIkV4cGVjdGVkICd9JyI7CisgICAgICAgICAgICAgICAgICAgIG1f
cGFyc2VFcnJvck1lc3NhZ2UgPSBBU0NJSUxpdGVyYWwoIkV4cGVjdGVkICd9JyIpOwogICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOwogICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgICAgICBtX2xleGVyLm5leHQoKTsKQEAgLTYxOSwxNCArNjE5LDE0IEBAIEpTVmFsdWUg
TGl0ZXJhbFBhcnNlcjxDaGFyVHlwZT46OnBhcnNlKFAKICAgICAgICAgICAgIGNhc2UgRG9QYXJz
ZU9iamVjdFN0YXJ0RXhwcmVzc2lvbjogewogICAgICAgICAgICAgICAgIFRva2VuVHlwZSB0eXBl
ID0gbV9sZXhlci5uZXh0KCk7CiAgICAgICAgICAgICAgICAgaWYgKHR5cGUgIT0gVG9rU3RyaW5n
ICYmIChtX21vZGUgPT0gU3RyaWN0SlNPTiB8fCB0eXBlICE9IFRva0lkZW50aWZpZXIpKSB7Ci0g
ICAgICAgICAgICAgICAgICAgIG1fcGFyc2VFcnJvck1lc3NhZ2UgPSAiUHJvcGVydHkgbmFtZSBt
dXN0IGJlIGEgc3RyaW5nIGxpdGVyYWwiOworICAgICAgICAgICAgICAgICAgICBtX3BhcnNlRXJy
b3JNZXNzYWdlID0gQVNDSUlMaXRlcmFsKCJQcm9wZXJ0eSBuYW1lIG11c3QgYmUgYSBzdHJpbmcg
bGl0ZXJhbCIpOwogICAgICAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOwogICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBMaXRlcmFsUGFyc2VyVG9rZW48Q2hhclR5cGU+
IGlkZW50aWZpZXJUb2tlbiA9IG1fbGV4ZXIuY3VycmVudFRva2VuKCk7CiAKICAgICAgICAgICAg
ICAgICAvLyBDaGVjayBmb3IgY29sb24KICAgICAgICAgICAgICAgICBpZiAobV9sZXhlci5uZXh0
KCkgIT0gVG9rQ29sb24pIHsKLSAgICAgICAgICAgICAgICAgICAgbV9wYXJzZUVycm9yTWVzc2Fn
ZSA9ICJFeHBlY3RlZCAnOiciOworICAgICAgICAgICAgICAgICAgICBtX3BhcnNlRXJyb3JNZXNz
YWdlID0gQVNDSUlMaXRlcmFsKCJFeHBlY3RlZCAnOiciKTsKICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIEpTVmFsdWUoKTsKICAgICAgICAgICAgICAgICB9CiAKQEAgLTY0NSw3ICs2NDUsNyBA
QCBKU1ZhbHVlIExpdGVyYWxQYXJzZXI8Q2hhclR5cGU+OjpwYXJzZShQCiAgICAgICAgICAgICAg
ICAgaWYgKG1fbGV4ZXIuY3VycmVudFRva2VuKCkudHlwZSA9PSBUb2tDb21tYSkKICAgICAgICAg
ICAgICAgICAgICAgZ290byBkb1BhcnNlT2JqZWN0U3RhcnRFeHByZXNzaW9uOwogICAgICAgICAg
ICAgICAgIGlmIChtX2xleGVyLmN1cnJlbnRUb2tlbigpLnR5cGUgIT0gVG9rUkJyYWNlKSB7Ci0g
ICAgICAgICAgICAgICAgICAgIG1fcGFyc2VFcnJvck1lc3NhZ2UgPSAiRXhwZWN0ZWQgJ30nIjsK
KyAgICAgICAgICAgICAgICAgICAgbV9wYXJzZUVycm9yTWVzc2FnZSA9IEFTQ0lJTGl0ZXJhbCgi
RXhwZWN0ZWQgJ30nIik7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7CiAg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIG1fbGV4ZXIubmV4dCgpOwpAQCAtNjkw
LDEwICs2OTAsMTAgQEAgSlNWYWx1ZSBMaXRlcmFsUGFyc2VyPENoYXJUeXBlPjo6cGFyc2UoUAog
ICAgICAgICAgICAgICAgICAgICAgICAgbGFzdFZhbHVlID0ganNCb29sZWFuKGZhbHNlKTsKICAg
ICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICBjYXNlIFRv
a1JCcmFja2V0OgotICAgICAgICAgICAgICAgICAgICAgICAgbV9wYXJzZUVycm9yTWVzc2FnZSA9
ICJVbmV4cGVjdGVkIHRva2VuICddJyI7CisgICAgICAgICAgICAgICAgICAgICAgICBtX3BhcnNl
RXJyb3JNZXNzYWdlID0gQVNDSUlMaXRlcmFsKCJVbmV4cGVjdGVkIHRva2VuICddJyIpOwogICAg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKICAgICAgICAgICAgICAgICAg
ICAgY2FzZSBUb2tSQnJhY2U6Ci0gICAgICAgICAgICAgICAgICAgICAgICBtX3BhcnNlRXJyb3JN
ZXNzYWdlID0gIlVuZXhwZWN0ZWQgdG9rZW4gJ30nIjsKKyAgICAgICAgICAgICAgICAgICAgICAg
IG1fcGFyc2VFcnJvck1lc3NhZ2UgPSBBU0NJSUxpdGVyYWwoIlVuZXhwZWN0ZWQgdG9rZW4gJ30n
Iik7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOwogICAgICAgICAg
ICAgICAgICAgICBjYXNlIFRva0lkZW50aWZpZXI6IHsKICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IExpdGVyYWxQYXJzZXJUb2tlbjxDaGFyVHlwZT4mIHRva2VuID0gbV9sZXhlci5jdXJy
ZW50VG9rZW4oKTsKQEAgLTcwNCwzMyArNzA0LDMzIEBAIEpTVmFsdWUgTGl0ZXJhbFBhcnNlcjxD
aGFyVHlwZT46OnBhcnNlKFAKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVl
KCk7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgY2FzZSBUb2tD
b2xvbjoKLSAgICAgICAgICAgICAgICAgICAgICAgIG1fcGFyc2VFcnJvck1lc3NhZ2UgPSAiVW5l
eHBlY3RlZCB0b2tlbiAnOiciOworICAgICAgICAgICAgICAgICAgICAgICAgbV9wYXJzZUVycm9y
TWVzc2FnZSA9IEFTQ0lJTGl0ZXJhbCgiVW5leHBlY3RlZCB0b2tlbiAnOiciKTsKICAgICAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7CiAgICAgICAgICAgICAgICAgICAgIGNh
c2UgVG9rTFBhcmVuOgotICAgICAgICAgICAgICAgICAgICAgICAgbV9wYXJzZUVycm9yTWVzc2Fn
ZSA9ICJVbmV4cGVjdGVkIHRva2VuICcoJyI7CisgICAgICAgICAgICAgICAgICAgICAgICBtX3Bh
cnNlRXJyb3JNZXNzYWdlID0gQVNDSUlMaXRlcmFsKCJVbmV4cGVjdGVkIHRva2VuICcoJyIpOwog
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKICAgICAgICAgICAgICAg
ICAgICAgY2FzZSBUb2tSUGFyZW46Ci0gICAgICAgICAgICAgICAgICAgICAgICBtX3BhcnNlRXJy
b3JNZXNzYWdlID0gIlVuZXhwZWN0ZWQgdG9rZW4gJyknIjsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIG1fcGFyc2VFcnJvck1lc3NhZ2UgPSBBU0NJSUxpdGVyYWwoIlVuZXhwZWN0ZWQgdG9rZW4g
JyknIik7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOwogICAgICAg
ICAgICAgICAgICAgICBjYXNlIFRva0NvbW1hOgotICAgICAgICAgICAgICAgICAgICAgICAgbV9w
YXJzZUVycm9yTWVzc2FnZSA9ICJVbmV4cGVjdGVkIHRva2VuICcsJyI7CisgICAgICAgICAgICAg
ICAgICAgICAgICBtX3BhcnNlRXJyb3JNZXNzYWdlID0gQVNDSUlMaXRlcmFsKCJVbmV4cGVjdGVk
IHRva2VuICcsJyIpOwogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsK
ICAgICAgICAgICAgICAgICAgICAgY2FzZSBUb2tEb3Q6Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBtX3BhcnNlRXJyb3JNZXNzYWdlID0gIlVuZXhwZWN0ZWQgdG9rZW4gJy4nIjsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIG1fcGFyc2VFcnJvck1lc3NhZ2UgPSBBU0NJSUxpdGVyYWwoIlVuZXhw
ZWN0ZWQgdG9rZW4gJy4nIik7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1
ZSgpOwogICAgICAgICAgICAgICAgICAgICBjYXNlIFRva0Fzc2lnbjoKLSAgICAgICAgICAgICAg
ICAgICAgICAgIG1fcGFyc2VFcnJvck1lc3NhZ2UgPSAiVW5leHBlY3RlZCB0b2tlbiAnPSciOwor
ICAgICAgICAgICAgICAgICAgICAgICAgbV9wYXJzZUVycm9yTWVzc2FnZSA9IEFTQ0lJTGl0ZXJh
bCgiVW5leHBlY3RlZCB0b2tlbiAnPSciKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
biBKU1ZhbHVlKCk7CiAgICAgICAgICAgICAgICAgICAgIGNhc2UgVG9rU2VtaToKLSAgICAgICAg
ICAgICAgICAgICAgICAgIG1fcGFyc2VFcnJvck1lc3NhZ2UgPSAiVW5leHBlY3RlZCB0b2tlbiAn
OyciOworICAgICAgICAgICAgICAgICAgICAgICAgbV9wYXJzZUVycm9yTWVzc2FnZSA9IEFTQ0lJ
TGl0ZXJhbCgiVW5leHBlY3RlZCB0b2tlbiAnOyciKTsKICAgICAgICAgICAgICAgICAgICAgICAg
IHJldHVybiBKU1ZhbHVlKCk7CiAgICAgICAgICAgICAgICAgICAgIGNhc2UgVG9rRW5kOgotICAg
ICAgICAgICAgICAgICAgICAgICAgbV9wYXJzZUVycm9yTWVzc2FnZSA9ICJVbmV4cGVjdGVkIEVP
RiI7CisgICAgICAgICAgICAgICAgICAgICAgICBtX3BhcnNlRXJyb3JNZXNzYWdlID0gQVNDSUlM
aXRlcmFsKCJVbmV4cGVjdGVkIEVPRiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IEpTVmFsdWUoKTsKICAgICAgICAgICAgICAgICAgICAgY2FzZSBUb2tFcnJvcjoKICAgICAgICAg
ICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEVycm9yCi0g
ICAgICAgICAgICAgICAgICAgICAgICBtX3BhcnNlRXJyb3JNZXNzYWdlID0gIkNvdWxkIG5vdCBw
YXJzZSB2YWx1ZSBleHByZXNzaW9uIjsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fcGFyc2VF
cnJvck1lc3NhZ2UgPSBBU0NJSUxpdGVyYWwoIkNvdWxkIG5vdCBwYXJzZSB2YWx1ZSBleHByZXNz
aW9uIik7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOwogICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTc0OCw1MCArNzQ4LDUwIEBA
IEpTVmFsdWUgTGl0ZXJhbFBhcnNlcjxDaGFyVHlwZT46OnBhcnNlKFAKICAgICAgICAgICAgICAg
ICAgICAgICAgIGdvdG8gc3RhcnRQYXJzZUV4cHJlc3Npb247CiAgICAgICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgICAgICAgICAgY2FzZSBUb2tSQnJhY2tldDoKLSAgICAgICAgICAgICAg
ICAgICAgICAgIG1fcGFyc2VFcnJvck1lc3NhZ2UgPSAiVW5leHBlY3RlZCB0b2tlbiAnXSciOwor
ICAgICAgICAgICAgICAgICAgICAgICAgbV9wYXJzZUVycm9yTWVzc2FnZSA9IEFTQ0lJTGl0ZXJh
bCgiVW5leHBlY3RlZCB0b2tlbiAnXSciKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
biBKU1ZhbHVlKCk7CiAgICAgICAgICAgICAgICAgICAgIGNhc2UgVG9rTEJyYWNlOgotICAgICAg
ICAgICAgICAgICAgICAgICAgbV9wYXJzZUVycm9yTWVzc2FnZSA9ICJVbmV4cGVjdGVkIHRva2Vu
ICd7JyI7CisgICAgICAgICAgICAgICAgICAgICAgICBtX3BhcnNlRXJyb3JNZXNzYWdlID0gQVND
SUlMaXRlcmFsKCJVbmV4cGVjdGVkIHRva2VuICd7JyIpOwogICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIEpTVmFsdWUoKTsKICAgICAgICAgICAgICAgICAgICAgY2FzZSBUb2tSQnJhY2U6
Ci0gICAgICAgICAgICAgICAgICAgICAgICBtX3BhcnNlRXJyb3JNZXNzYWdlID0gIlVuZXhwZWN0
ZWQgdG9rZW4gJ30nIjsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fcGFyc2VFcnJvck1lc3Nh
Z2UgPSBBU0NJSUxpdGVyYWwoIlVuZXhwZWN0ZWQgdG9rZW4gJ30nIik7CiAgICAgICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOwogICAgICAgICAgICAgICAgICAgICBjYXNlIFRv
a0lkZW50aWZpZXI6Ci0gICAgICAgICAgICAgICAgICAgICAgICBtX3BhcnNlRXJyb3JNZXNzYWdl
ID0gIlVuZXhwZWN0ZWQgaWRlbnRpZmllciI7CisgICAgICAgICAgICAgICAgICAgICAgICBtX3Bh
cnNlRXJyb3JNZXNzYWdlID0gQVNDSUlMaXRlcmFsKCJVbmV4cGVjdGVkIGlkZW50aWZpZXIiKTsK
ICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7CiAgICAgICAgICAgICAg
ICAgICAgIGNhc2UgVG9rQ29sb246Ci0gICAgICAgICAgICAgICAgICAgICAgICBtX3BhcnNlRXJy
b3JNZXNzYWdlID0gIlVuZXhwZWN0ZWQgdG9rZW4gJzonIjsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIG1fcGFyc2VFcnJvck1lc3NhZ2UgPSBBU0NJSUxpdGVyYWwoIlVuZXhwZWN0ZWQgdG9rZW4g
JzonIik7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOwogICAgICAg
ICAgICAgICAgICAgICBjYXNlIFRva1JQYXJlbjoKLSAgICAgICAgICAgICAgICAgICAgICAgIG1f
cGFyc2VFcnJvck1lc3NhZ2UgPSAiVW5leHBlY3RlZCB0b2tlbiAnKSciOworICAgICAgICAgICAg
ICAgICAgICAgICAgbV9wYXJzZUVycm9yTWVzc2FnZSA9IEFTQ0lJTGl0ZXJhbCgiVW5leHBlY3Rl
ZCB0b2tlbiAnKSciKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7
CiAgICAgICAgICAgICAgICAgICAgIGNhc2UgVG9rQ29tbWE6Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBtX3BhcnNlRXJyb3JNZXNzYWdlID0gIlVuZXhwZWN0ZWQgdG9rZW4gJywnIjsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIG1fcGFyc2VFcnJvck1lc3NhZ2UgPSBBU0NJSUxpdGVyYWwoIlVu
ZXhwZWN0ZWQgdG9rZW4gJywnIik7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gSlNW
YWx1ZSgpOwogICAgICAgICAgICAgICAgICAgICBjYXNlIFRva1RydWU6Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBtX3BhcnNlRXJyb3JNZXNzYWdlID0gIlVuZXhwZWN0ZWQgdG9rZW4gJ3RydWUn
IjsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fcGFyc2VFcnJvck1lc3NhZ2UgPSBBU0NJSUxp
dGVyYWwoIlVuZXhwZWN0ZWQgdG9rZW4gJ3RydWUnIik7CiAgICAgICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gSlNWYWx1ZSgpOwogICAgICAgICAgICAgICAgICAgICBjYXNlIFRva0ZhbHNlOgot
ICAgICAgICAgICAgICAgICAgICAgICAgbV9wYXJzZUVycm9yTWVzc2FnZSA9ICJVbmV4cGVjdGVk
IHRva2VuICdmYWxzZSciOworICAgICAgICAgICAgICAgICAgICAgICAgbV9wYXJzZUVycm9yTWVz
c2FnZSA9IEFTQ0lJTGl0ZXJhbCgiVW5leHBlY3RlZCB0b2tlbiAnZmFsc2UnIik7CiAgICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOwogICAgICAgICAgICAgICAgICAgICBj
YXNlIFRva051bGw6Ci0gICAgICAgICAgICAgICAgICAgICAgICBtX3BhcnNlRXJyb3JNZXNzYWdl
ID0gIlVuZXhwZWN0ZWQgdG9rZW4gJ251bGwnIjsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1f
cGFyc2VFcnJvck1lc3NhZ2UgPSBBU0NJSUxpdGVyYWwoIlVuZXhwZWN0ZWQgdG9rZW4gJ251bGwn
Iik7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOwogICAgICAgICAg
ICAgICAgICAgICBjYXNlIFRva0VuZDoKLSAgICAgICAgICAgICAgICAgICAgICAgIG1fcGFyc2VF
cnJvck1lc3NhZ2UgPSAiVW5leHBlY3RlZCBFT0YiOworICAgICAgICAgICAgICAgICAgICAgICAg
bV9wYXJzZUVycm9yTWVzc2FnZSA9IEFTQ0lJTGl0ZXJhbCgiVW5leHBlY3RlZCBFT0YiKTsKICAg
ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7CiAgICAgICAgICAgICAgICAg
ICAgIGNhc2UgVG9rRG90OgotICAgICAgICAgICAgICAgICAgICAgICAgbV9wYXJzZUVycm9yTWVz
c2FnZSA9ICJVbmV4cGVjdGVkIHRva2VuICcuJyI7CisgICAgICAgICAgICAgICAgICAgICAgICBt
X3BhcnNlRXJyb3JNZXNzYWdlID0gQVNDSUlMaXRlcmFsKCJVbmV4cGVjdGVkIHRva2VuICcuJyIp
OwogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKICAgICAgICAgICAg
ICAgICAgICAgY2FzZSBUb2tBc3NpZ246Ci0gICAgICAgICAgICAgICAgICAgICAgICBtX3BhcnNl
RXJyb3JNZXNzYWdlID0gIlVuZXhwZWN0ZWQgdG9rZW4gJz0nIjsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIG1fcGFyc2VFcnJvck1lc3NhZ2UgPSBBU0NJSUxpdGVyYWwoIlVuZXhwZWN0ZWQgdG9r
ZW4gJz0nIik7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOwogICAg
ICAgICAgICAgICAgICAgICBjYXNlIFRva1NlbWk6Ci0gICAgICAgICAgICAgICAgICAgICAgICBt
X3BhcnNlRXJyb3JNZXNzYWdlID0gIlVuZXhwZWN0ZWQgdG9rZW4gJzsnIjsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIG1fcGFyc2VFcnJvck1lc3NhZ2UgPSBBU0NJSUxpdGVyYWwoIlVuZXhwZWN0
ZWQgdG9rZW4gJzsnIik7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZSgp
OwogICAgICAgICAgICAgICAgICAgICBjYXNlIFRva0Vycm9yOgogICAgICAgICAgICAgICAgICAg
ICBkZWZhdWx0OgotICAgICAgICAgICAgICAgICAgICAgICAgbV9wYXJzZUVycm9yTWVzc2FnZSA9
ICJDb3VsZCBub3QgcGFyc2Ugc3RhdGVtZW50IjsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1f
cGFyc2VFcnJvck1lc3NhZ2UgPSBBU0NJSUxpdGVyYWwoIkNvdWxkIG5vdCBwYXJzZSBzdGF0ZW1l
bnQiKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7CiAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgfQpAQCAtODAxLDcgKzgwMSw3IEBAIEpTVmFsdWUgTGl0
ZXJhbFBhcnNlcjxDaGFyVHlwZT46OnBhcnNlKFAKICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IEpTVmFsdWUoKTsKICAgICAgICAgICAgICAgICBpZiAobV9sZXhlci5uZXh0KCkgPT0gVG9rRW5k
KQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gbGFzdFZhbHVlOwotICAgICAgICAgICAgICAg
IG1fcGFyc2VFcnJvck1lc3NhZ2UgPSAiVW5leHBlY3RlZCBjb250ZW50IGF0IGVuZCBvZiBKU09O
IGxpdGVyYWwiOworICAgICAgICAgICAgICAgIG1fcGFyc2VFcnJvck1lc3NhZ2UgPSBBU0NJSUxp
dGVyYWwoIlVuZXhwZWN0ZWQgY29udGVudCBhdCBlbmQgb2YgSlNPTiBsaXRlcmFsIik7CiAgICAg
ICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAg
IGRlZmF1bHQ6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9MaXRlcmFsUGFy
c2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTGl0ZXJh
bFBhcnNlci5oCShyZXZpc2lvbiAxMjc0ODMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9MaXRlcmFsUGFyc2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwMCw3ICsxMDAsNyBAQCBw
dWJsaWM6CiAgICAgICAgICAgICByZXR1cm4gU3RyaW5nOjpmb3JtYXQoIkpTT04gUGFyc2UgZXJy
b3I6ICVzIiwgbV9sZXhlci5nZXRFcnJvck1lc3NhZ2UoKS5hc2NpaSgpLmRhdGEoKSkuaW1wbCgp
OwogICAgICAgICBpZiAoIW1fcGFyc2VFcnJvck1lc3NhZ2UuaXNFbXB0eSgpKQogICAgICAgICAg
ICAgcmV0dXJuIFN0cmluZzo6Zm9ybWF0KCJKU09OIFBhcnNlIGVycm9yOiAlcyIsIG1fcGFyc2VF
cnJvck1lc3NhZ2UuYXNjaWkoKS5kYXRhKCkpLmltcGwoKTsKLSAgICAgICAgcmV0dXJuICJKU09O
IFBhcnNlIGVycm9yOiBVbmFibGUgdG8gcGFyc2UgSlNPTiBzdHJpbmciOworICAgICAgICByZXR1
cm4gQVNDSUlMaXRlcmFsKCJKU09OIFBhcnNlIGVycm9yOiBVbmFibGUgdG8gcGFyc2UgSlNPTiBz
dHJpbmciKTsKICAgICB9CiAgICAgCiAgICAgSlNWYWx1ZSB0cnlMaXRlcmFsUGFyc2UoKQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyUHJvdG90eXBlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJQcm90b3R5cGUu
Y3BwCShyZXZpc2lvbiAxMjc0ODMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9O
dW1iZXJQcm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNzgsNyArMzc4LDcgQEAgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBudW1iZXJQcm90bwogICAgIGludCBkZWNpbWFsUGxh
Y2VzSW5FeHBvbmVudDsKICAgICBib29sIGlzVW5kZWZpbmVkOwogICAgIGlmICghZ2V0SW50ZWdl
ckFyZ3VtZW50SW5SYW5nZShleGVjLCAwLCAyMCwgZGVjaW1hbFBsYWNlc0luRXhwb25lbnQsIGlz
VW5kZWZpbmVkKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVSYW5n
ZUVycm9yKGV4ZWMsICJ0b0V4cG9uZW50aWFsKCkgYXJndW1lbnQgbXVzdCBiZSBiZXR3ZWVuIDAg
YW5kIDIwIikpOworICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVJhbmdl
RXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJ0b0V4cG9uZW50aWFsKCkgYXJndW1lbnQgbXVzdCBi
ZSBiZXR3ZWVuIDAgYW5kIDIwIikpKTsKIAogICAgIC8vIEhhbmRsZSBOYU4gYW5kIEluZmluaXR5
LgogICAgIGlmICghaXNmaW5pdGUoeCkpCkBAIC00MDksNyArNDA5LDcgQEAgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBudW1iZXJQcm90bwogICAgIGludCBkZWNpbWFsUGxhY2VzOwogICAg
IGJvb2wgaXNVbmRlZmluZWQ7IC8vIFRoaXMgaXMgaWdub3JlZDsgdW5kZWZpbmVkIHRyZWF0ZWQg
YXMgMC4KICAgICBpZiAoIWdldEludGVnZXJBcmd1bWVudEluUmFuZ2UoZXhlYywgMCwgMjAsIGRl
Y2ltYWxQbGFjZXMsIGlzVW5kZWZpbmVkKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihl
eGVjLCBjcmVhdGVSYW5nZUVycm9yKGV4ZWMsICJ0b0ZpeGVkKCkgYXJndW1lbnQgbXVzdCBiZSBi
ZXR3ZWVuIDAgYW5kIDIwIikpOworICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNy
ZWF0ZVJhbmdlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJ0b0ZpeGVkKCkgYXJndW1lbnQgbXVz
dCBiZSBiZXR3ZWVuIDAgYW5kIDIwIikpKTsKIAogICAgIC8vIDE1LjcuNC41Ljcgc3RhdGVzICJJ
ZiB4ID49IDEwXjIxLCB0aGVuIGxldCBtID0gVG9TdHJpbmcoeCkiCiAgICAgLy8gVGhpcyBhbHNv
IGNvdmVycyBJbmluaXR5LCBhbmQgc3RydWN0dXJlIHRoZSBjaGVjayBzbyB0aGF0IE5hTgpAQCAt
NDQyLDcgKzQ0Miw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbnVtYmVyUHJvdG8K
ICAgICBpbnQgc2lnbmlmaWNhbnRGaWd1cmVzOwogICAgIGJvb2wgaXNVbmRlZmluZWQ7CiAgICAg
aWYgKCFnZXRJbnRlZ2VyQXJndW1lbnRJblJhbmdlKGV4ZWMsIDEsIDIxLCBzaWduaWZpY2FudEZp
Z3VyZXMsIGlzVW5kZWZpbmVkKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBj
cmVhdGVSYW5nZUVycm9yKGV4ZWMsICJ0b1ByZWNpc2lvbigpIGFyZ3VtZW50IG11c3QgYmUgYmV0
d2VlbiAxIGFuZCAyMSIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVh
dGVSYW5nZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgidG9QcmVjaXNpb24oKSBhcmd1bWVudCBt
dXN0IGJlIGJldHdlZW4gMSBhbmQgMjEiKSkpOwogCiAgICAgLy8gVG8gcHJlY2lzaW9uIGNhbGxl
ZCB3aXRoIG5vIGFyZ3VtZW50IGlzIHRyZWF0ZWQgYXMgVG9TdHJpbmcuCiAgICAgaWYgKGlzVW5k
ZWZpbmVkKQpAQCAtNDk3LDcgKzQ5Nyw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
bnVtYmVyUHJvdG8KIAogICAgIGludDMyX3QgcmFkaXggPSBleHRyYWN0UmFkaXhGcm9tQXJncyhl
eGVjKTsKICAgICBpZiAocmFkaXggPCAyIHx8IHJhZGl4ID4gMzYpCi0gICAgICAgIHJldHVybiB0
aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlUmFuZ2VFcnJvcihleGVjLCAidG9TdHJpbmcoKSByYWRp
eCBhcmd1bWVudCBtdXN0IGJlIGJldHdlZW4gMiBhbmQgMzYiKSk7CisgICAgICAgIHJldHVybiB0
aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlUmFuZ2VFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoInRv
U3RyaW5nKCkgcmFkaXggYXJndW1lbnQgbXVzdCBiZSBiZXR3ZWVuIDIgYW5kIDM2IikpKTsKIAog
ICAgIGludDMyX3QgaW50ZWdlclZhbHVlID0gc3RhdGljX2Nhc3Q8aW50MzJfdD4oZG91YmxlVmFs
dWUpOwogICAgIGlmIChpbnRlZ2VyVmFsdWUgPT0gZG91YmxlVmFsdWUpCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwCShy
ZXZpc2lvbiAxMjc0ODMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RD
b25zdHJ1Y3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzNyw3ICsxMzcsNyBAQCBDYWxsVHlw
ZSBPYmplY3RDb25zdHJ1Y3Rvcjo6Z2V0Q2FsbERhdGEoCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIG9iamVjdENvbnN0cnVjdG9yR2V0UHJvdG90eXBlT2YoRXhlY1N0YXRlKiBleGVjKQog
ewogICAgIGlmICghZXhlYy0+YXJndW1lbnQoMCkuaXNPYmplY3QoKSkKLSAgICAgICAgcmV0dXJu
IHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgIlJlcXVlc3RlZCBwcm90
b3R5cGUgb2YgYSB2YWx1ZSB0aGF0IGlzIG5vdCBhbiBvYmplY3QuIikpOworICAgICAgICByZXR1
cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwo
IlJlcXVlc3RlZCBwcm90b3R5cGUgb2YgYSB2YWx1ZSB0aGF0IGlzIG5vdCBhbiBvYmplY3QuIikp
KTsKICAgICBKU09iamVjdCogb2JqZWN0ID0gYXNPYmplY3QoZXhlYy0+YXJndW1lbnQoMCkpOwog
ICAgIGlmICghb2JqZWN0LT5hbGxvd3NBY2Nlc3NGcm9tKGV4ZWMtPnRydWVDYWxsZXJGcmFtZSgp
KSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKQEAgLTE0
Nyw3ICsxNDcsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0CiBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9yR2V0T3duUHJvcGVy
dHlEZXNjcmlwdG9yKEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICBpZiAoIWV4ZWMtPmFyZ3VtZW50
KDApLmlzT2JqZWN0KCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRl
VHlwZUVycm9yKGV4ZWMsICJSZXF1ZXN0ZWQgcHJvcGVydHkgZGVzY3JpcHRvciBvZiBhIHZhbHVl
IHRoYXQgaXMgbm90IGFuIG9iamVjdC4iKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Io
ZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiUmVxdWVzdGVkIHByb3Bl
cnR5IGRlc2NyaXB0b3Igb2YgYSB2YWx1ZSB0aGF0IGlzIG5vdCBhbiBvYmplY3QuIikpKTsKICAg
ICBTdHJpbmcgcHJvcGVydHlOYW1lID0gZXhlYy0+YXJndW1lbnQoMSkudG9TdHJpbmcoZXhlYykt
PnZhbHVlKGV4ZWMpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc051bGwoKSk7CkBAIC0xNzksNyArMTc5LDcgQEAgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdAogRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3RvckdldE93blByb3BlcnR5TmFtZXMoRXhlY1N0YXRlKiBl
eGVjKQogewogICAgIGlmICghZXhlYy0+YXJndW1lbnQoMCkuaXNPYmplY3QoKSkKLSAgICAgICAg
cmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgIlJlcXVlc3Rl
ZCBwcm9wZXJ0eSBuYW1lcyBvZiBhIHZhbHVlIHRoYXQgaXMgbm90IGFuIG9iamVjdC4iKSk7Cisg
ICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsIEFT
Q0lJTGl0ZXJhbCgiUmVxdWVzdGVkIHByb3BlcnR5IG5hbWVzIG9mIGEgdmFsdWUgdGhhdCBpcyBu
b3QgYW4gb2JqZWN0LiIpKSk7CiAgICAgUHJvcGVydHlOYW1lQXJyYXkgcHJvcGVydGllcyhleGVj
KTsKICAgICBhc09iamVjdChleGVjLT5hcmd1bWVudCgwKSktPm1ldGhvZFRhYmxlKCktPmdldE93
blByb3BlcnR5TmFtZXMoYXNPYmplY3QoZXhlYy0+YXJndW1lbnQoMCkpLCBleGVjLCBwcm9wZXJ0
aWVzLCBJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKTsKICAgICBKU0FycmF5KiBuYW1lcyA9IGNv
bnN0cnVjdEVtcHR5QXJyYXkoZXhlYyk7CkBAIC0xOTMsNyArMTkzLDcgQEAgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBvYmplY3RDb25zdHJ1Y3RvcktleXMoRXhlY1N0YXRlKiBleGVjKQogewogICAgIGlmICghZXhl
Yy0+YXJndW1lbnQoMCkuaXNPYmplY3QoKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihl
eGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgIlJlcXVlc3RlZCBrZXlzIG9mIGEgdmFsdWUgdGhh
dCBpcyBub3QgYW4gb2JqZWN0LiIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVj
LCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJSZXF1ZXN0ZWQga2V5cyBvZiBh
IHZhbHVlIHRoYXQgaXMgbm90IGFuIG9iamVjdC4iKSkpOwogICAgIFByb3BlcnR5TmFtZUFycmF5
IHByb3BlcnRpZXMoZXhlYyk7CiAgICAgYXNPYmplY3QoZXhlYy0+YXJndW1lbnQoMCkpLT5tZXRo
b2RUYWJsZSgpLT5nZXRPd25Qcm9wZXJ0eU5hbWVzKGFzT2JqZWN0KGV4ZWMtPmFyZ3VtZW50KDAp
KSwgZXhlYywgcHJvcGVydGllcywgRXhjbHVkZURvbnRFbnVtUHJvcGVydGllcyk7CiAgICAgSlNB
cnJheSoga2V5cyA9IGNvbnN0cnVjdEVtcHR5QXJyYXkoZXhlYyk7CkBAIC0yMDcsNyArMjA3LDcg
QEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdAogc3RhdGljIGJvb2wg
dG9Qcm9wZXJ0eURlc2NyaXB0b3IoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGluLCBQcm9wZXJ0
eURlc2NyaXB0b3ImIGRlc2MpCiB7CiAgICAgaWYgKCFpbi5pc09iamVjdCgpKSB7Ci0gICAgICAg
IHRocm93RXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsICJQcm9wZXJ0eSBkZXNjcmlw
dGlvbiBtdXN0IGJlIGFuIG9iamVjdC4iKSk7CisgICAgICAgIHRocm93RXJyb3IoZXhlYywgY3Jl
YXRlVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiUHJvcGVydHkgZGVzY3JpcHRpb24gbXVz
dCBiZSBhbiBvYmplY3QuIikpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICBK
U09iamVjdCogZGVzY3JpcHRpb24gPSBhc09iamVjdChpbik7CkBAIC0yNDksNyArMjQ5LDcgQEAg
c3RhdGljIGJvb2wgdG9Qcm9wZXJ0eURlc2NyaXB0b3IoRXhlY1N0YQogICAgICAgICBpZiAoIWdl
dC5pc1VuZGVmaW5lZCgpKSB7CiAgICAgICAgICAgICBDYWxsRGF0YSBjYWxsRGF0YTsKICAgICAg
ICAgICAgIGlmIChnZXRDYWxsRGF0YShnZXQsIGNhbGxEYXRhKSA9PSBDYWxsVHlwZU5vbmUpIHsK
LSAgICAgICAgICAgICAgICB0aHJvd0Vycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCAi
R2V0dGVyIG11c3QgYmUgYSBmdW5jdGlvbi4iKSk7CisgICAgICAgICAgICAgICAgdGhyb3dFcnJv
cihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJHZXR0ZXIgbXVzdCBi
ZSBhIGZ1bmN0aW9uLiIpKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAg
ICAgICAgfQogICAgICAgICB9CkBAIC0yNjQsNyArMjY0LDcgQEAgc3RhdGljIGJvb2wgdG9Qcm9w
ZXJ0eURlc2NyaXB0b3IoRXhlY1N0YQogICAgICAgICBpZiAoIXNldC5pc1VuZGVmaW5lZCgpKSB7
CiAgICAgICAgICAgICBDYWxsRGF0YSBjYWxsRGF0YTsKICAgICAgICAgICAgIGlmIChnZXRDYWxs
RGF0YShzZXQsIGNhbGxEYXRhKSA9PSBDYWxsVHlwZU5vbmUpIHsKLSAgICAgICAgICAgICAgICB0
aHJvd0Vycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCAiU2V0dGVyIG11c3QgYmUgYSBm
dW5jdGlvbi4iKSk7CisgICAgICAgICAgICAgICAgdGhyb3dFcnJvcihleGVjLCBjcmVhdGVUeXBl
RXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJTZXR0ZXIgbXVzdCBiZSBhIGZ1bmN0aW9uLiIpKSk7
CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgfQogICAgICAgICB9
CkBAIC0yNzUsMTIgKzI3NSwxMiBAQCBzdGF0aWMgYm9vbCB0b1Byb3BlcnR5RGVzY3JpcHRvcihF
eGVjU3RhCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgaWYgKGRlc2MudmFsdWUoKSkgewot
ICAgICAgICB0aHJvd0Vycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCAiSW52YWxpZCBw
cm9wZXJ0eS4gICd2YWx1ZScgcHJlc2VudCBvbiBwcm9wZXJ0eSB3aXRoIGdldHRlciBvciBzZXR0
ZXIuIikpOworICAgICAgICB0aHJvd0Vycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCBB
U0NJSUxpdGVyYWwoIkludmFsaWQgcHJvcGVydHkuICAndmFsdWUnIHByZXNlbnQgb24gcHJvcGVy
dHkgd2l0aCBnZXR0ZXIgb3Igc2V0dGVyLiIpKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICB9CiAKICAgICBpZiAoZGVzYy53cml0YWJsZVByZXNlbnQoKSkgewotICAgICAgICB0aHJvd0Vy
cm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCAiSW52YWxpZCBwcm9wZXJ0eS4gICd3cml0
YWJsZScgcHJlc2VudCBvbiBwcm9wZXJ0eSB3aXRoIGdldHRlciBvciBzZXR0ZXIuIikpOworICAg
ICAgICB0aHJvd0Vycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwo
IkludmFsaWQgcHJvcGVydHkuICAnd3JpdGFibGUnIHByZXNlbnQgb24gcHJvcGVydHkgd2l0aCBn
ZXR0ZXIgb3Igc2V0dGVyLiIpKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAg
cmV0dXJuIHRydWU7CkBAIC0yODksNyArMjg5LDcgQEAgc3RhdGljIGJvb2wgdG9Qcm9wZXJ0eURl
c2NyaXB0b3IoRXhlY1N0YQogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25z
dHJ1Y3RvckRlZmluZVByb3BlcnR5KEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICBpZiAoIWV4ZWMt
PmFyZ3VtZW50KDApLmlzT2JqZWN0KCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhl
YywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsICJQcm9wZXJ0aWVzIGNhbiBvbmx5IGJlIGRlZmluZWQg
b24gT2JqZWN0cy4iKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRl
VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiUHJvcGVydGllcyBjYW4gb25seSBiZSBkZWZp
bmVkIG9uIE9iamVjdHMuIikpKTsKICAgICBKU09iamVjdCogTyA9IGFzT2JqZWN0KGV4ZWMtPmFy
Z3VtZW50KDApKTsKICAgICBTdHJpbmcgcHJvcGVydHlOYW1lID0gZXhlYy0+YXJndW1lbnQoMSku
dG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24o
KSkKQEAgLTM0MCwyMCArMzQwLDIwIEBAIHN0YXRpYyBKU1ZhbHVlIGRlZmluZVByb3BlcnRpZXMo
RXhlY1N0YXQKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JE
ZWZpbmVQcm9wZXJ0aWVzKEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICBpZiAoIWV4ZWMtPmFyZ3Vt
ZW50KDApLmlzT2JqZWN0KCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3Jl
YXRlVHlwZUVycm9yKGV4ZWMsICJQcm9wZXJ0aWVzIGNhbiBvbmx5IGJlIGRlZmluZWQgb24gT2Jq
ZWN0cy4iKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlVHlwZUVy
cm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiUHJvcGVydGllcyBjYW4gb25seSBiZSBkZWZpbmVkIG9u
IE9iamVjdHMuIikpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGRlZmluZVByb3BlcnRp
ZXMoZXhlYywgYXNPYmplY3QoZXhlYy0+YXJndW1lbnQoMCkpLCBleGVjLT5hcmd1bWVudCgxKS50
b09iamVjdChleGVjKSkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVj
dENvbnN0cnVjdG9yQ3JlYXRlKEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICBpZiAoIWV4ZWMtPmFy
Z3VtZW50KDApLmlzT2JqZWN0KCkgJiYgIWV4ZWMtPmFyZ3VtZW50KDApLmlzTnVsbCgpKQotICAg
ICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCAiT2Jq
ZWN0IHByb3RvdHlwZSBtYXkgb25seSBiZSBhbiBPYmplY3Qgb3IgbnVsbC4iKSk7CisgICAgICAg
IHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0
ZXJhbCgiT2JqZWN0IHByb3RvdHlwZSBtYXkgb25seSBiZSBhbiBPYmplY3Qgb3IgbnVsbC4iKSkp
OwogICAgIEpTVmFsdWUgcHJvdG8gPSBleGVjLT5hcmd1bWVudCgwKTsKICAgICBKU09iamVjdCog
bmV3T2JqZWN0ID0gcHJvdG8uaXNPYmplY3QoKSA/IGNvbnN0cnVjdEVtcHR5T2JqZWN0KGV4ZWMs
IGFzT2JqZWN0KHByb3RvKS0+aW5oZXJpdG9ySUQoZXhlYy0+Z2xvYmFsRGF0YSgpKSkgOiBjb25z
dHJ1Y3RFbXB0eU9iamVjdChleGVjLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPm51bGxQ
cm90b3R5cGVPYmplY3RTdHJ1Y3R1cmUoKSk7CiAgICAgaWYgKGV4ZWMtPmFyZ3VtZW50KDEpLmlz
VW5kZWZpbmVkKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUobmV3T2JqZWN0KTsK
ICAgICBpZiAoIWV4ZWMtPmFyZ3VtZW50KDEpLmlzT2JqZWN0KCkpCi0gICAgICAgIHJldHVybiB0
aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsICJQcm9wZXJ0eSBkZXNjcmlw
dG9yIGxpc3QgbXVzdCBiZSBhbiBPYmplY3QuIikpOworICAgICAgICByZXR1cm4gdGhyb3dWTUVy
cm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlByb3BlcnR5IGRl
c2NyaXB0b3IgbGlzdCBtdXN0IGJlIGFuIE9iamVjdC4iKSkpOwogICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoZGVmaW5lUHJvcGVydGllcyhleGVjLCBuZXdPYmplY3QsIGFzT2JqZWN0KGV4ZWMt
PmFyZ3VtZW50KDEpKSkpOwogfQogCkBAIC0zNjIsNyArMzYyLDcgQEAgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdAogICAgIC8vIDEuIElmIFR5cGUoTykgaXMgbm90IE9i
amVjdCB0aHJvdyBhIFR5cGVFcnJvciBleGNlcHRpb24uCiAgICAgSlNWYWx1ZSBvYmogPSBleGVj
LT5hcmd1bWVudCgwKTsKICAgICBpZiAoIW9iai5pc09iamVjdCgpKQotICAgICAgICByZXR1cm4g
dGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCAiT2JqZWN0LnNlYWwgY2Fu
IG9ubHkgYmUgY2FsbGVkIG9uIE9iamVjdHMuIikpOworICAgICAgICByZXR1cm4gdGhyb3dWTUVy
cm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIk9iamVjdC5zZWFs
IGNhbiBvbmx5IGJlIGNhbGxlZCBvbiBPYmplY3RzLiIpKSk7CiAgICAgSlNPYmplY3QqIG9iamVj
dCA9IGFzT2JqZWN0KG9iaik7CiAKICAgICBpZiAoaXNKU0ZpbmFsT2JqZWN0KG9iamVjdCkpIHsK
QEAgLTM5OSw3ICszOTksNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENv
bnN0CiAgICAgLy8gMS4gSWYgVHlwZShPKSBpcyBub3QgT2JqZWN0IHRocm93IGEgVHlwZUVycm9y
IGV4Y2VwdGlvbi4KICAgICBKU1ZhbHVlIG9iaiA9IGV4ZWMtPmFyZ3VtZW50KDApOwogICAgIGlm
ICghb2JqLmlzT2JqZWN0KCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3Jl
YXRlVHlwZUVycm9yKGV4ZWMsICJPYmplY3QuZnJlZXplIGNhbiBvbmx5IGJlIGNhbGxlZCBvbiBP
YmplY3RzLiIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVUeXBl
RXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJPYmplY3QuZnJlZXplIGNhbiBvbmx5IGJlIGNhbGxl
ZCBvbiBPYmplY3RzLiIpKSk7CiAgICAgSlNPYmplY3QqIG9iamVjdCA9IGFzT2JqZWN0KG9iaik7
CiAKICAgICBpZiAoaXNKU0ZpbmFsT2JqZWN0KG9iamVjdCkpIHsKQEAgLTQzOSw3ICs0MzksNyBA
QCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0CiB7CiAgICAgSlNWYWx1
ZSBvYmogPSBleGVjLT5hcmd1bWVudCgwKTsKICAgICBpZiAoIW9iai5pc09iamVjdCgpKQotICAg
ICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCAiT2Jq
ZWN0LnByZXZlbnRFeHRlbnNpb25zIGNhbiBvbmx5IGJlIGNhbGxlZCBvbiBPYmplY3RzLiIpKTsK
KyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywg
QVNDSUlMaXRlcmFsKCJPYmplY3QucHJldmVudEV4dGVuc2lvbnMgY2FuIG9ubHkgYmUgY2FsbGVk
IG9uIE9iamVjdHMuIikpKTsKICAgICBhc09iamVjdChvYmopLT5wcmV2ZW50RXh0ZW5zaW9ucyhl
eGVjLT5nbG9iYWxEYXRhKCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUob2JqKTsKIH0K
QEAgLTQ0OSw3ICs0NDksNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENv
bnN0CiAgICAgLy8gMS4gSWYgVHlwZShPKSBpcyBub3QgT2JqZWN0IHRocm93IGEgVHlwZUVycm9y
IGV4Y2VwdGlvbi4KICAgICBKU1ZhbHVlIG9iaiA9IGV4ZWMtPmFyZ3VtZW50KDApOwogICAgIGlm
ICghb2JqLmlzT2JqZWN0KCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3Jl
YXRlVHlwZUVycm9yKGV4ZWMsICJPYmplY3QuaXNTZWFsZWQgY2FuIG9ubHkgYmUgY2FsbGVkIG9u
IE9iamVjdHMuIikpOworICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVR5
cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIk9iamVjdC5pc1NlYWxlZCBjYW4gb25seSBiZSBj
YWxsZWQgb24gT2JqZWN0cy4iKSkpOwogICAgIEpTT2JqZWN0KiBvYmplY3QgPSBhc09iamVjdChv
YmopOwogCiAgICAgaWYgKGlzSlNGaW5hbE9iamVjdChvYmplY3QpKQpAQCAtNDc5LDcgKzQ3OSw3
IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3QKICAgICAvLyAxLiBJ
ZiBUeXBlKE8pIGlzIG5vdCBPYmplY3QgdGhyb3cgYSBUeXBlRXJyb3IgZXhjZXB0aW9uLgogICAg
IEpTVmFsdWUgb2JqID0gZXhlYy0+YXJndW1lbnQoMCk7CiAgICAgaWYgKCFvYmouaXNPYmplY3Qo
KSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhl
YywgIk9iamVjdC5pc0Zyb3plbiBjYW4gb25seSBiZSBjYWxsZWQgb24gT2JqZWN0cy4iKSk7Cisg
ICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsIEFT
Q0lJTGl0ZXJhbCgiT2JqZWN0LmlzRnJvemVuIGNhbiBvbmx5IGJlIGNhbGxlZCBvbiBPYmplY3Rz
LiIpKSk7CiAgICAgSlNPYmplY3QqIG9iamVjdCA9IGFzT2JqZWN0KG9iaik7CiAKICAgICBpZiAo
aXNKU0ZpbmFsT2JqZWN0KG9iamVjdCkpCkBAIC01MDksNyArNTA5LDcgQEAgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdAogewogICAgIEpTVmFsdWUgb2JqID0gZXhlYy0+
YXJndW1lbnQoMCk7CiAgICAgaWYgKCFvYmouaXNPYmplY3QoKSkKLSAgICAgICAgcmV0dXJuIHRo
cm93Vk1FcnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgIk9iamVjdC5pc0V4dGVuc2li
bGUgY2FuIG9ubHkgYmUgY2FsbGVkIG9uIE9iamVjdHMuIikpOworICAgICAgICByZXR1cm4gdGhy
b3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIk9iamVj
dC5pc0V4dGVuc2libGUgY2FuIG9ubHkgYmUgY2FsbGVkIG9uIE9iamVjdHMuIikpKTsKICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihhc09iamVjdChvYmopLT5pc0V4dGVuc2li
bGUoKSkpOwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RQ
cm90b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L09iamVjdFByb3RvdHlwZS5jcHAJKHJldmlzaW9uIDEyNzQ4MykKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL09iamVjdFByb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1
Nyw3ICsxNTcsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdFByb3RvCiAg
ICAgSlNWYWx1ZSBnZXQgPSBleGVjLT5hcmd1bWVudCgxKTsKICAgICBDYWxsRGF0YSBjYWxsRGF0
YTsKICAgICBpZiAoZ2V0Q2FsbERhdGEoZ2V0LCBjYWxsRGF0YSkgPT0gQ2FsbFR5cGVOb25lKQot
ICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVN5bnRheEVycm9yKGV4ZWMs
ICJpbnZhbGlkIGdldHRlciB1c2FnZSIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihl
eGVjLCBjcmVhdGVTeW50YXhFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoImludmFsaWQgZ2V0dGVy
IHVzYWdlIikpKTsKIAogICAgIFByb3BlcnR5RGVzY3JpcHRvciBkZXNjcmlwdG9yOwogICAgIGRl
c2NyaXB0b3Iuc2V0R2V0dGVyKGdldCk7CkBAIC0xNzcsNyArMTc3LDcgQEAgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RQcm90bwogICAgIEpTVmFsdWUgc2V0ID0gZXhlYy0+YXJn
dW1lbnQoMSk7CiAgICAgQ2FsbERhdGEgY2FsbERhdGE7CiAgICAgaWYgKGdldENhbGxEYXRhKHNl
dCwgY2FsbERhdGEpID09IENhbGxUeXBlTm9uZSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJv
cihleGVjLCBjcmVhdGVTeW50YXhFcnJvcihleGVjLCAiaW52YWxpZCBzZXR0ZXIgdXNhZ2UiKSk7
CisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlU3ludGF4RXJyb3IoZXhl
YywgQVNDSUlMaXRlcmFsKCJpbnZhbGlkIHNldHRlciB1c2FnZSIpKSk7CiAKICAgICBQcm9wZXJ0
eURlc2NyaXB0b3IgZGVzY3JpcHRvcjsKICAgICBkZXNjcmlwdG9yLnNldFNldHRlcihzZXQpOwpA
QCAtMjQ3LDcgKzI0Nyw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0UHJv
dG8KIHsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPmhvc3RUaGlzVmFsdWUoKTsKICAg
ICBpZiAodGhpc1ZhbHVlLmlzVW5kZWZpbmVkT3JOdWxsKCkpCi0gICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNOb250cml2aWFsU3RyaW5nKGV4ZWMsIHRoaXNWYWx1ZS5pc1VuZGVmaW5l
ZCgpID8gIltvYmplY3QgVW5kZWZpbmVkXSIgOiAiW29iamVjdCBOdWxsXSIpKTsKKyAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc05vbnRyaXZpYWxTdHJpbmcoZXhlYywgU3RyaW5nKHRo
aXNWYWx1ZS5pc1VuZGVmaW5lZCgpID8gQVNDSUlMaXRlcmFsKCJbb2JqZWN0IFVuZGVmaW5lZF0i
KSA6IEFTQ0lJTGl0ZXJhbCgiW29iamVjdCBOdWxsXSIpKSkpOwogICAgIEpTT2JqZWN0KiB0aGlz
T2JqZWN0ID0gdGhpc1ZhbHVlLnRvT2JqZWN0KGV4ZWMpOwogCiAgICAgSlNTdHJpbmcqIHJlc3Vs
dCA9IHRoaXNPYmplY3QtPnN0cnVjdHVyZSgpLT5vYmplY3RUb1N0cmluZ1ZhbHVlKCk7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDb25zdHJ1Y3Rvci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwQ29uc3RydWN0
b3IuY3BwCShyZXZpc2lvbiAxMjc0ODMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9SZWdFeHBDb25zdHJ1Y3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2Miw3ICsyNjIsNyBA
QCBKU09iamVjdCogY29uc3RydWN0UmVnRXhwKEV4ZWNTdGF0ZSogZXhlCiAKICAgICBpZiAoYXJn
MC5pbmhlcml0cygmUmVnRXhwT2JqZWN0OjpzX2luZm8pKSB7CiAgICAgICAgIGlmICghYXJnMS5p
c1VuZGVmaW5lZCgpKQotICAgICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoZXhlYywgY3JlYXRl
VHlwZUVycm9yKGV4ZWMsICJDYW5ub3Qgc3VwcGx5IGZsYWdzIHdoZW4gY29uc3RydWN0aW5nIG9u
ZSBSZWdFeHAgZnJvbSBhbm90aGVyLiIpKTsKKyAgICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9y
KGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkNhbm5vdCBzdXBwbHkg
ZmxhZ3Mgd2hlbiBjb25zdHJ1Y3Rpbmcgb25lIFJlZ0V4cCBmcm9tIGFub3RoZXIuIikpKTsKICAg
ICAgICAgLy8gSWYgY2FsbGVkIGFzIGEgZnVuY3Rpb24sIHRoaXMganVzdCByZXR1cm5zIHRoZSBm
aXJzdCBhcmd1bWVudCAoc2VlIDE1LjEwLjMuMSkuCiAgICAgICAgIGlmIChjYWxsQXNDb25zdHJ1
Y3RvcikgewogICAgICAgICAgICAgUmVnRXhwKiByZWdFeHAgPSBzdGF0aWNfY2FzdDxSZWdFeHBP
YmplY3QqPihhc09iamVjdChhcmcwKSktPnJlZ0V4cCgpOwpAQCAtMjgxLDcgKzI4MSw3IEBAIEpT
T2JqZWN0KiBjb25zdHJ1Y3RSZWdFeHAoRXhlY1N0YXRlKiBleGUKICAgICAgICAgaWYgKGV4ZWMt
PmhhZEV4Y2VwdGlvbigpKQogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIGlmIChmbGFn
cyA9PSBJbnZhbGlkRmxhZ3MpCi0gICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihleGVjLCBj
cmVhdGVTeW50YXhFcnJvcihleGVjLCAiSW52YWxpZCBmbGFncyBzdXBwbGllZCB0byBSZWdFeHAg
Y29uc3RydWN0b3IuIikpOworICAgICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoZXhlYywgY3Jl
YXRlU3ludGF4RXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJJbnZhbGlkIGZsYWdzIHN1cHBsaWVk
IHRvIFJlZ0V4cCBjb25zdHJ1Y3Rvci4iKSkpOwogICAgIH0KIAogICAgIFJlZ0V4cCogcmVnRXhw
ID0gUmVnRXhwOjpjcmVhdGUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBwYXR0ZXJuLCBmbGFncyk7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBPYmplY3QuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVjdC5jcHAJ
KHJldmlzaW9uIDEyNzQ4MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4
cE9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzMCw3ICsxMzAsNyBAQCB2b2lkIFJlZ0V4
cE9iamVjdDo6Z2V0UHJvcGVydHlOYW1lcyhKU09iCiBzdGF0aWMgYm9vbCByZWplY3QoRXhlY1N0
YXRlKiBleGVjLCBib29sIHRocm93RXhjZXB0aW9uLCBjb25zdCBjaGFyKiBtZXNzYWdlKQogewog
ICAgIGlmICh0aHJvd0V4Y2VwdGlvbikKLSAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgbWVz
c2FnZSk7CisgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbChtZXNzYWdl
KSk7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCkBAIC0xOTEsNyArMTkxLDcgQEAgSlNWYWx1ZSBy
ZWdFeHBPYmplY3RTb3VyY2UoRXhlY1N0YXRlKiBleAogICAgIC8vIHNvdXJjZSBjYW5ub3QgZXZl
ciB2YWxpZGx5IGJlICIiLiBJZiB0aGUgc291cmNlIGlzIGVtcHR5LCByZXR1cm4gYSBkaWZmZXJl
bnQgUGF0dGVybgogICAgIC8vIHRoYXQgd291bGQgbWF0Y2ggdGhlIHNhbWUgdGhpbmcuCiAgICAg
aWYgKCFsZW5ndGgpCi0gICAgICAgIHJldHVybiBqc1N0cmluZyhleGVjLCAiKD86KSIpOworICAg
ICAgICByZXR1cm4ganNOb250cml2aWFsU3RyaW5nKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiKD86KSIp
KTsKIAogICAgIC8vIGVhcmx5IHJldHVybiBmb3Igc3RyaW5ncyB0aGF0IGRvbid0IGNvbnRhaW4g
YSBmb3J3YXJkcyBzbGFzaCBhbmQgTGluZVRlcm1pbmF0b3IKICAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKQEAgLTI1MSw5ICsyNTEsOSBAQCBKU1ZhbHVlIHJlZ0V4
cE9iamVjdFNvdXJjZShFeGVjU3RhdGUqIGV4CiAgICAgICAgICAgICBlbHNlIGlmIChjaCA9PSAn
XHInKQogICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJ3InKTsKICAgICAgICAgICAgIGVs
c2UgaWYgKGNoID09IDB4MjAyOCkKLSAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCJ1MjAy
OCIpOworICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmRMaXRlcmFsKCJ1MjAyOCIpOwogICAg
ICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoInUyMDI5Iik7Cisg
ICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZExpdGVyYWwoInUyMDI5Iik7CiAgICAgICAgIH0g
ZWxzZQogICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChjaCk7CiAKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cFByb3RvdHlwZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwUHJvdG90eXBlLmNwcAkocmV2aXNpb24g
MTI3NDgzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwUHJvdG90eXBl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA2LDcgKzEwNiw3IEBAIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgcmVnRXhwUHJvdG8KICAgICAKICAgICBpZiAoYXJnMC5pbmhlcml0cygmUmVn
RXhwT2JqZWN0OjpzX2luZm8pKSB7CiAgICAgICAgIGlmICghYXJnMS5pc1VuZGVmaW5lZCgpKQot
ICAgICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhl
YywgIkNhbm5vdCBzdXBwbHkgZmxhZ3Mgd2hlbiBjb25zdHJ1Y3Rpbmcgb25lIFJlZ0V4cCBmcm9t
IGFub3RoZXIuIikpOworICAgICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVh
dGVUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJDYW5ub3Qgc3VwcGx5IGZsYWdzIHdoZW4g
Y29uc3RydWN0aW5nIG9uZSBSZWdFeHAgZnJvbSBhbm90aGVyLiIpKSk7CiAgICAgICAgIHJlZ0V4
cCA9IGFzUmVnRXhwT2JqZWN0KGFyZzApLT5yZWdFeHAoKTsKICAgICB9IGVsc2UgewogICAgICAg
ICBTdHJpbmcgcGF0dGVybiA9ICFleGVjLT5hcmd1bWVudENvdW50KCkgPyBTdHJpbmcoIiIpIDog
YXJnMC50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CkBAIC0xMTksNyArMTE5LDcgQEAgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWdFeHBQcm90bwogICAgICAgICAgICAgaWYgKGV4
ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNVbmRlZmluZWQoKSk7CiAgICAgICAgICAgICBpZiAoZmxhZ3MgPT0gSW52YWxpZEZsYWdz
KQotICAgICAgICAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlU3ludGF4
RXJyb3IoZXhlYywgIkludmFsaWQgZmxhZ3Mgc3VwcGxpZWQgdG8gUmVnRXhwIGNvbnN0cnVjdG9y
LiIpKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVN5
bnRheEVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiSW52YWxpZCBmbGFncyBzdXBwbGllZCB0byBS
ZWdFeHAgY29uc3RydWN0b3IuIikpKTsKICAgICAgICAgfQogICAgICAgICByZWdFeHAgPSBSZWdF
eHA6OmNyZWF0ZShleGVjLT5nbG9iYWxEYXRhKCksIHBhdHRlcm4sIGZsYWdzKTsKICAgICB9Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3QuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdC5jcHAJ
KHJldmlzaW9uIDEyNzQ4MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmlu
Z09iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg1LDI3ICs4NSwyNyBAQCBib29sIFN0cmlu
Z09iamVjdDo6ZGVmaW5lT3duUHJvcGVydHkoSlNPCiAgICAgaWYgKHByb3BlcnR5TmFtZSA9PSBl
eGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoKSB7CiAgICAgICAgIGlmICghb2JqZWN0LT5pc0V4
dGVuc2libGUoKSkgewogICAgICAgICAgICAgaWYgKHRocm93RXhjZXB0aW9uKQotICAgICAgICAg
ICAgICAgIHRocm93RXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsICJBdHRlbXB0aW5n
IHRvIGRlZmluZSBwcm9wZXJ0eSBvbiBvYmplY3QgdGhhdCBpcyBub3QgZXh0ZW5zaWJsZS4iKSk7
CisgICAgICAgICAgICAgICAgdGhyb3dFcnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywg
QVNDSUlMaXRlcmFsKCJBdHRlbXB0aW5nIHRvIGRlZmluZSBwcm9wZXJ0eSBvbiBvYmplY3QgdGhh
dCBpcyBub3QgZXh0ZW5zaWJsZS4iKSkpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
ICAgICB9CiAgICAgICAgIGlmIChkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZVByZXNlbnQoKSAmJiBk
ZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSgpKSB7CiAgICAgICAgICAgICBpZiAodGhyb3dFeGNlcHRp
b24pCi0gICAgICAgICAgICAgICAgdGhyb3dFcnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhl
YywgIkF0dGVtcHRpbmcgdG8gY29uZmlndXJhYmxlIGF0dHJpYnV0ZSBvZiB1bmNvbmZpZ3VyYWJs
ZSBwcm9wZXJ0eS4iKSk7CisgICAgICAgICAgICAgICAgdGhyb3dFcnJvcihleGVjLCBjcmVhdGVU
eXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJBdHRlbXB0aW5nIHRvIGNvbmZpZ3VyYWJsZSBh
dHRyaWJ1dGUgb2YgdW5jb25maWd1cmFibGUgcHJvcGVydHkuIikpKTsKICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICAgICAgfQogICAgICAgICBpZiAoZGVzY3JpcHRvci5lbnVtZXJhYmxl
UHJlc2VudCgpICYmIGRlc2NyaXB0b3IuZW51bWVyYWJsZSgpKSB7CiAgICAgICAgICAgICBpZiAo
dGhyb3dFeGNlcHRpb24pCi0gICAgICAgICAgICAgICAgdGhyb3dFcnJvcihleGVjLCBjcmVhdGVU
eXBlRXJyb3IoZXhlYywgIkF0dGVtcHRpbmcgdG8gY2hhbmdlIGVudW1lcmFibGUgYXR0cmlidXRl
IG9mIHVuY29uZmlndXJhYmxlIHByb3BlcnR5LiIpKTsKKyAgICAgICAgICAgICAgICB0aHJvd0Vy
cm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkF0dGVtcHRpbmcg
dG8gY2hhbmdlIGVudW1lcmFibGUgYXR0cmlidXRlIG9mIHVuY29uZmlndXJhYmxlIHByb3BlcnR5
LiIpKSk7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICAgICAgaWYg
KGRlc2NyaXB0b3IuaXNBY2Nlc3NvckRlc2NyaXB0b3IoKSkgewogICAgICAgICAgICAgaWYgKHRo
cm93RXhjZXB0aW9uKQotICAgICAgICAgICAgICAgIHRocm93RXJyb3IoZXhlYywgY3JlYXRlVHlw
ZUVycm9yKGV4ZWMsICJBdHRlbXB0aW5nIHRvIGNoYW5nZSBhY2Nlc3MgbWVjaGFuaXNtIGZvciBh
biB1bmNvbmZpZ3VyYWJsZSBwcm9wZXJ0eS4iKSk7CisgICAgICAgICAgICAgICAgdGhyb3dFcnJv
cihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJBdHRlbXB0aW5nIHRv
IGNoYW5nZSBhY2Nlc3MgbWVjaGFuaXNtIGZvciBhbiB1bmNvbmZpZ3VyYWJsZSBwcm9wZXJ0eS4i
KSkpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAgICAgIGlmIChk
ZXNjcmlwdG9yLndyaXRhYmxlUHJlc2VudCgpICYmIGRlc2NyaXB0b3Iud3JpdGFibGUoKSkgewog
ICAgICAgICAgICAgaWYgKHRocm93RXhjZXB0aW9uKQotICAgICAgICAgICAgICAgIHRocm93RXJy
b3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsICJBdHRlbXB0aW5nIHRvIGNoYW5nZSB3cml0
YWJsZSBhdHRyaWJ1dGUgb2YgdW5jb25maWd1cmFibGUgcHJvcGVydHkuIikpOworICAgICAgICAg
ICAgICAgIHRocm93RXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJh
bCgiQXR0ZW1wdGluZyB0byBjaGFuZ2Ugd3JpdGFibGUgYXR0cmlidXRlIG9mIHVuY29uZmlndXJh
YmxlIHByb3BlcnR5LiIpKSk7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0K
ICAgICAgICAgaWYgKCFkZXNjcmlwdG9yLnZhbHVlKCkpCkBAIC0xMTMsNyArMTEzLDcgQEAgYm9v
bCBTdHJpbmdPYmplY3Q6OmRlZmluZU93blByb3BlcnR5KEpTTwogICAgICAgICBpZiAocHJvcGVy
dHlOYW1lID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGggJiYgc2FtZVZhbHVlKGV4ZWMs
IGRlc2NyaXB0b3IudmFsdWUoKSwganNOdW1iZXIodGhpc09iamVjdC0+aW50ZXJuYWxWYWx1ZSgp
LT5sZW5ndGgoKSkpKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIGlmICh0aHJv
d0V4Y2VwdGlvbikKLSAgICAgICAgICAgIHRocm93RXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9y
KGV4ZWMsICJBdHRlbXB0aW5nIHRvIGNoYW5nZSB2YWx1ZSBvZiBhIHJlYWRvbmx5IHByb3BlcnR5
LiIpKTsKKyAgICAgICAgICAgIHRocm93RXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMs
IEFTQ0lJTGl0ZXJhbCgiQXR0ZW1wdGluZyB0byBjaGFuZ2UgdmFsdWUgb2YgYSByZWFkb25seSBw
cm9wZXJ0eS4iKSkpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAJKHJl
dmlzaW9uIDEyNzQ4MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1By
b3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4Nyw3ICsyODcsNyBAQCBzdGF0aWMgQUxX
QVlTX0lOTElORSBKU1ZhbHVlIGpzU3BsaWNlU3ViCiAgICAgICAgIHRvdGFsTGVuZ3RoICs9IHN1
YnN0cmluZ1Jhbmdlc1tpXS5sZW5ndGg7CiAKICAgICBpZiAoIXRvdGFsTGVuZ3RoKQotICAgICAg
ICByZXR1cm4ganNTdHJpbmcoZXhlYywgIiIpOworICAgICAgICByZXR1cm4ganNFbXB0eVN0cmlu
ZyhleGVjKTsKIAogICAgIGlmIChzb3VyY2UuaXM4Qml0KCkpIHsKICAgICAgICAgTENoYXIqIGJ1
ZmZlcjsKQEAgLTM0OCw3ICszNDgsNyBAQCBzdGF0aWMgQUxXQVlTX0lOTElORSBKU1ZhbHVlIGpz
U3BsaWNlU3ViCiAgICAgfQogCiAgICAgaWYgKCF0b3RhbExlbmd0aCkKLSAgICAgICAgcmV0dXJu
IGpzU3RyaW5nKGV4ZWMsICIiKTsKKyAgICAgICAgcmV0dXJuIGpzRW1wdHlTdHJpbmcoZXhlYyk7
CiAKICAgICBpZiAoc291cmNlLmlzOEJpdCgpICYmIGFsbFNlcGVyYXRvcnM4Qml0KSB7CiAgICAg
ICAgIExDaGFyKiBidWZmZXI7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>