<?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>54415</bug_id>
          
          <creation_ts>2011-02-14 15:06:34 -0800</creation_ts>
          <short_desc>Refactor handles and weak pointers to become nicer and more automatic</short_desc>
          <delta_ts>2011-02-15 15:58:10 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>OS X 10.5</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="Oliver Hunt">oliver</reporter>
          <assigned_to name="Oliver Hunt">oliver</assigned_to>
          <cc>abarth</cc>
    
    <cc>buildbot</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>eric</cc>
    
    <cc>ggaren</cc>
    
    <cc>ossy</cc>
    
    <cc>webkit-ews</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>350914</commentid>
    <comment_count>0</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2011-02-14 15:06:34 -0800</bug_when>
    <thetext>Refactor handles and weak pointers to become nicer and more automatic</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>350931</commentid>
    <comment_count>1</comment_count>
      <attachid>82373</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2011-02-14 15:26:36 -0800</bug_when>
    <thetext>Created attachment 82373
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>350933</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-02-14 15:29:39 -0800</bug_when>
    <thetext>Attachment 82373 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/API/JSClassRef.cpp&apos;,...&quot; exit_code: 1

Source/WebKit2/WebProcess/Plugins/Netscape/NPJSObject.h:49:  The parameter name &quot;objectMap&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebKit2/WebProcess/Plugins/Netscape/NPJSObject.h:49:  The parameter name &quot;jsObject&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebKit2/WebProcess/Plugins/Netscape/NPJSObject.h:65:  The parameter name &quot;jsObject&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 3 in 89 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>350968</commentid>
    <comment_count>3</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2011-02-14 16:36:30 -0800</bug_when>
    <thetext>Attachment 82373 did not build on win:
Build output: http://queues.webkit.org/results/7905761</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>350977</commentid>
    <comment_count>4</comment_count>
      <attachid>82385</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2011-02-14 16:41:28 -0800</bug_when>
    <thetext>Created attachment 82385
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>350978</commentid>
    <comment_count>5</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2011-02-14 16:41:45 -0800</bug_when>
    <thetext>Only change is windows build fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>350982</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-02-14 16:43:40 -0800</bug_when>
    <thetext>Attachment 82385 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/API/JSClassRef.cpp&apos;,...&quot; exit_code: 1

Source/WebKit2/WebProcess/Plugins/Netscape/NPJSObject.h:49:  The parameter name &quot;objectMap&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebKit2/WebProcess/Plugins/Netscape/NPJSObject.h:49:  The parameter name &quot;jsObject&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebKit2/WebProcess/Plugins/Netscape/NPJSObject.h:65:  The parameter name &quot;jsObject&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 3 in 89 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>350989</commentid>
    <comment_count>7</comment_count>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2011-02-14 16:51:33 -0800</bug_when>
    <thetext>Attachment 82373 did not build on qt:
Build output: http://queues.webkit.org/results/7913656</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>350993</commentid>
    <comment_count>8</comment_count>
      <attachid>82390</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2011-02-14 17:04:43 -0800</bug_when>
    <thetext>Created attachment 82390
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>350994</commentid>
    <comment_count>9</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2011-02-14 17:05:04 -0800</bug_when>
    <thetext>Now fix qt</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>350995</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-02-14 17:07:07 -0800</bug_when>
    <thetext>Attachment 82390 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/API/JSClassRef.cpp&apos;,...&quot; exit_code: 1

Source/WebKit2/WebProcess/Plugins/Netscape/NPJSObject.h:49:  The parameter name &quot;objectMap&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebKit2/WebProcess/Plugins/Netscape/NPJSObject.h:49:  The parameter name &quot;jsObject&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebKit2/WebProcess/Plugins/Netscape/NPJSObject.h:65:  The parameter name &quot;jsObject&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 3 in 90 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>351031</commentid>
    <comment_count>11</comment_count>
      <attachid>82390</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2011-02-14 18:04:18 -0800</bug_when>
    <thetext>Comment on attachment 82390
Patch

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

&gt; Source/JavaScriptCore/API/JSClassRef.cpp:150
&gt; -    protoDefinition.finalize = clearReferenceToPrototype;
&gt; +    protoDefinition.finalize = 0;

No need to initialize to 0 -- you can just remove this now.

&gt; Source/JavaScriptCore/collector/handles/Handle.h:77
&gt; +        // It is unsafe to use a handle after invalidating it.
&gt; +        m_slot = 0;

I don&apos;t think this comment is true anymore. You can certainly use a handle with a NULL m_slot. You just can&apos;t dereference it.

&gt; Source/JavaScriptCore/collector/handles/SentinelLinkedList.h:1
&gt; +/*

This file should go into WTF.

&gt; Source/JavaScriptCore/collector/handles/SinglyLinkedList.h:1
&gt; +/*

This one too.

&gt; Source/JavaScriptCore/runtime/WeakGCPtr.h:114
&gt; +template &lt;typename T&gt; class WeakGCPtr : public WeakGCPtrBase&lt;T, false&gt;  {

I&apos;m still not convinced that it&apos;s worth the complexity of having two kinds of weak pointer. I only see one client of WeakGCPtr vs LazyWeakGCPtr. Why not make all WeakGCPtr lazy?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>351055</commentid>
    <comment_count>12</comment_count>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2011-02-14 19:11:39 -0800</bug_when>
    <thetext>Attachment 82390 did not build on qt:
Build output: http://queues.webkit.org/results/7909770</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>351133</commentid>
    <comment_count>13</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2011-02-15 00:35:45 -0800</bug_when>
    <thetext>(In reply to comment #12)
&gt; Attachment 82390 [details] did not build on qt:
&gt; Build output: http://queues.webkit.org/results/7909770

I am working on fixing Qt build. Please don&apos;t commit the patch before I finish. Thanks in advance.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>351149</commentid>
    <comment_count>14</comment_count>
      <attachid>82429</attachid>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2011-02-15 01:47:44 -0800</bug_when>
    <thetext>Created attachment 82429
Qt buildfix

I attached the Qt buildfix for https://bugs.webkit.org/attachment.cgi?id=82390
I didn&apos;t set r?, because it isn&apos;t buildable itself, but it works with the original patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>351332</commentid>
    <comment_count>15</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2011-02-15 09:10:41 -0800</bug_when>
    <thetext>(In reply to comment #12)
&gt; Attachment 82390 [details] did not build on qt:
&gt; Build output: http://queues.webkit.org/results/7909770

Unfortunately an incremental build problem hid the real problem.
I filed a new bug report to fix the build system: https://bugs.webkit.org/show_bug.cgi?id=54466</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>351381</commentid>
    <comment_count>16</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2011-02-15 10:17:10 -0800</bug_when>
    <thetext>(In reply to comment #15)
&gt; (In reply to comment #12)
&gt; &gt; Attachment 82390 [details] [details] did not build on qt:
&gt; &gt; Build output: http://queues.webkit.org/results/7909770
&gt; 
&gt; Unfortunately an incremental build problem hid the real problem.
&gt; I filed a new bug report to fix the build system: https://bugs.webkit.org/show_bug.cgi?id=54466

Thanks!

I had been blocked waiting for the project file fixes to get through the ews bot so hadn&apos;t seen those failures, thanks for getting the qt_runtime fixes done as i would have had a lot of difficulty with them :D</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>351528</commentid>
    <comment_count>17</comment_count>
      <attachid>82513</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2011-02-15 13:22:55 -0800</bug_when>
    <thetext>Created attachment 82513
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>351530</commentid>
    <comment_count>18</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2011-02-15 13:23:59 -0800</bug_when>
    <thetext>Don&apos;t review this, i&apos;m just running it by the EWS bots as i had to make a bunch of project file changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>351537</commentid>
    <comment_count>19</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2011-02-15 13:37:10 -0800</bug_when>
    <thetext>I think it may be possible to remove the complexity of HandleBase+HandleConverter, and just give all handles get(), -&gt;(), and *().

If all handles have get(), -&gt;(), and *(), it becomes syntactically possible to get(), -&gt;(), or *() an Unknown, which is a little unfortunate, but you can&apos;t actually do anything dangerous afterwards, since Unknown provides no API. No functions accept Unknowns as arguments, and Unknown has no data members or functions.

So, this is a compiler error since you can&apos;t assign Unknown to JSObject:

JSObject* object = handle.get();

This is a compiler error since Unknown doesn&apos;t have getOwnPropertySlot:

JSValue v = handle-&gt;getOwnPropertySlot();

etc.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>351656</commentid>
    <comment_count>20</comment_count>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2011-02-15 15:31:08 -0800</bug_when>
    <thetext>Attachment 82513 did not build on qt:
Build output: http://queues.webkit.org/results/7918058</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>351684</commentid>
    <comment_count>21</comment_count>
      <attachid>82513</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2011-02-15 15:55:25 -0800</bug_when>
    <thetext>Comment on attachment 82513
Patch

Already reviewed by gavin and geoff, was just waiting for build outpuit.  90% sure everything is good in what i&apos;ve landed.

Committed r78634</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>351687</commentid>
    <comment_count>22</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-02-15 15:58:10 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/78634 might have broken EFL Linux Release (Build)</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>82373</attachid>
            <date>2011-02-14 15:26:36 -0800</date>
            <delta_ts>2011-02-14 16:41:25 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-54415-20110214152635.patch</filename>
            <type>text/plain</type>
            <size>194182</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogNzg0ODkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvSlNDbGFzc1JlZi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2xh
c3NSZWYuY3BwCmluZGV4IGRlY2Y0OTMzMTQzYTFlZDNlOGUwMTRjZTBmYjZhZDI2Nzk5NDE5OTQu
LmQ5NTNkY2UxYzc4NjhiMTRmMDEwNWU1ZmRlNTg3NmUxNDE5YmJjMmYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDbGFzc1JlZi5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0FQSS9KU0NsYXNzUmVmLmNwcApAQCAtMTQyLDE5ICsxNDIsMTIgQEAgUGFzc1Jl
ZlB0cjxPcGFxdWVKU0NsYXNzPiBPcGFxdWVKU0NsYXNzOjpjcmVhdGVOb0F1dG9tYXRpY1Byb3Rv
dHlwZShjb25zdCBKU0NsYXMKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IE9wYXF1ZUpTQ2xhc3Mo
ZGVmaW5pdGlvbiwgMCkpOwogfQogCi1zdGF0aWMgdm9pZCBjbGVhclJlZmVyZW5jZVRvUHJvdG90
eXBlKEpTT2JqZWN0UmVmIHByb3RvdHlwZSkKLXsKLSAgICBPcGFxdWVKU0NsYXNzQ29udGV4dERh
dGEqIGpzQ2xhc3NEYXRhID0gc3RhdGljX2Nhc3Q8T3BhcXVlSlNDbGFzc0NvbnRleHREYXRhKj4o
SlNPYmplY3RHZXRQcml2YXRlKHByb3RvdHlwZSkpOwotICAgIEFTU0VSVChqc0NsYXNzRGF0YSk7
Ci0gICAganNDbGFzc0RhdGEtPmNhY2hlZFByb3RvdHlwZS5jbGVhcih0b0pTKHByb3RvdHlwZSkp
OwotfQotCiBQYXNzUmVmUHRyPE9wYXF1ZUpTQ2xhc3M+IE9wYXF1ZUpTQ2xhc3M6OmNyZWF0ZShj
b25zdCBKU0NsYXNzRGVmaW5pdGlvbiogY2xpZW50RGVmaW5pdGlvbikKIHsKICAgICBKU0NsYXNz
RGVmaW5pdGlvbiBkZWZpbml0aW9uID0gKmNsaWVudERlZmluaXRpb247IC8vIEF2b2lkIG1vZGlm
eWluZyBjbGllbnQgY29weS4KIAogICAgIEpTQ2xhc3NEZWZpbml0aW9uIHByb3RvRGVmaW5pdGlv
biA9IGtKU0NsYXNzRGVmaW5pdGlvbkVtcHR5OwotICAgIHByb3RvRGVmaW5pdGlvbi5maW5hbGl6
ZSA9IGNsZWFyUmVmZXJlbmNlVG9Qcm90b3R5cGU7CisgICAgcHJvdG9EZWZpbml0aW9uLmZpbmFs
aXplID0gMDsKICAgICBzd2FwKGRlZmluaXRpb24uc3RhdGljRnVuY3Rpb25zLCBwcm90b0RlZmlu
aXRpb24uc3RhdGljRnVuY3Rpb25zKTsgLy8gTW92ZSBzdGF0aWMgZnVuY3Rpb25zIHRvIHRoZSBw
cm90b3R5cGUuCiAgICAgCiAgICAgLy8gV2UgYXJlIHN1cHBvc2VkIHRvIHVzZSBKU0NsYXNzUmV0
YWluL1JlbGVhc2UgYnV0IHNpbmNlIHdlIGtub3cgdGhhdCB3ZSBjdXJyZW50bHkgaGF2ZQpAQCAt
MTYzLDcgKzE1Niw3IEBAIFBhc3NSZWZQdHI8T3BhcXVlSlNDbGFzcz4gT3BhcXVlSlNDbGFzczo6
Y3JlYXRlKGNvbnN0IEpTQ2xhc3NEZWZpbml0aW9uKiBjbGllbnRECiAgICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBPcGFxdWVKU0NsYXNzKCZkZWZpbml0aW9uLCBwcm90b0NsYXNzLmdldCgpKSk7CiB9
CiAKLU9wYXF1ZUpTQ2xhc3NDb250ZXh0RGF0YTo6T3BhcXVlSlNDbGFzc0NvbnRleHREYXRhKE9w
YXF1ZUpTQ2xhc3MqIGpzQ2xhc3MpCitPcGFxdWVKU0NsYXNzQ29udGV4dERhdGE6Ok9wYXF1ZUpT
Q2xhc3NDb250ZXh0RGF0YShKU0M6OkpTR2xvYmFsRGF0YSYsIE9wYXF1ZUpTQ2xhc3MqIGpzQ2xh
c3MpCiAgICAgOiBtX2NsYXNzKGpzQ2xhc3MpCiB7CiAgICAgaWYgKGpzQ2xhc3MtPm1fc3RhdGlj
VmFsdWVzKSB7CkBAIC0yMDksNyArMjAyLDcgQEAgT3BhcXVlSlNDbGFzc0NvbnRleHREYXRhJiBP
cGFxdWVKU0NsYXNzOjpjb250ZXh0RGF0YShFeGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAgT3BhcXVl
SlNDbGFzc0NvbnRleHREYXRhKiYgY29udGV4dERhdGEgPSBleGVjLT5nbG9iYWxEYXRhKCkub3Bh
cXVlSlNDbGFzc0RhdGEuYWRkKHRoaXMsIDApLmZpcnN0LT5zZWNvbmQ7CiAgICAgaWYgKCFjb250
ZXh0RGF0YSkKLSAgICAgICAgY29udGV4dERhdGEgPSBuZXcgT3BhcXVlSlNDbGFzc0NvbnRleHRE
YXRhKHRoaXMpOworICAgICAgICBjb250ZXh0RGF0YSA9IG5ldyBPcGFxdWVKU0NsYXNzQ29udGV4
dERhdGEoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlzKTsKICAgICByZXR1cm4gKmNvbnRleHREYXRh
OwogfQogCkBAIC0yNTYsNyArMjQ5LDcgQEAgSlNPYmplY3QqIE9wYXF1ZUpTQ2xhc3M6OnByb3Rv
dHlwZShFeGVjU3RhdGUqIGV4ZWMpCiAKICAgICBpZiAoIWpzQ2xhc3NEYXRhLmNhY2hlZFByb3Rv
dHlwZSkgewogICAgICAgICAvLyBSZWN1cnNpdmUsIGJ1dCBzaG91bGQgYmUgZ29vZCBlbm91Z2gg
Zm9yIG91ciBwdXJwb3NlcwotICAgICAgICBqc0NsYXNzRGF0YS5jYWNoZWRQcm90b3R5cGUgPSBu
ZXcgKGV4ZWMpIEpTQ2FsbGJhY2tPYmplY3Q8SlNPYmplY3RXaXRoR2xvYmFsT2JqZWN0PihleGVj
LCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3Qo
KS0+Y2FsbGJhY2tPYmplY3RTdHJ1Y3R1cmUoKSwgcHJvdG90eXBlQ2xhc3MsICZqc0NsYXNzRGF0
YSk7IC8vIHNldCBqc0NsYXNzRGF0YSBhcyB0aGUgb2JqZWN0J3MgcHJpdmF0ZSBkYXRhLCBzbyBp
dCBjYW4gY2xlYXIgb3VyIHJlZmVyZW5jZSBvbiBkZXN0cnVjdGlvbgorICAgICAgICBqc0NsYXNz
RGF0YS5jYWNoZWRQcm90b3R5cGUuc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgbmV3IChleGVjKSBK
U0NhbGxiYWNrT2JqZWN0PEpTT2JqZWN0V2l0aEdsb2JhbE9iamVjdD4oZXhlYywgZXhlYy0+bGV4
aWNhbEdsb2JhbE9iamVjdCgpLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPmNhbGxiYWNr
T2JqZWN0U3RydWN0dXJlKCksIHByb3RvdHlwZUNsYXNzLCAmanNDbGFzc0RhdGEpLCAwKTsgLy8g
c2V0IGpzQ2xhc3NEYXRhIGFzIHRoZSBvYmplY3QncyBwcml2YXRlIGRhdGEsIHNvIGl0IGNhbiBj
bGVhciBvdXIgcmVmZXJlbmNlIG9uIGRlc3RydWN0aW9uCiAgICAgICAgIGlmIChwYXJlbnRDbGFz
cykgewogICAgICAgICAgICAgaWYgKEpTT2JqZWN0KiBwcm90b3R5cGUgPSBwYXJlbnRDbGFzcy0+
cHJvdG90eXBlKGV4ZWMpKQogICAgICAgICAgICAgICAgIGpzQ2xhc3NEYXRhLmNhY2hlZFByb3Rv
dHlwZS0+c2V0UHJvdG90eXBlKHByb3RvdHlwZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQVBJL0pTQ2xhc3NSZWYuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlND
bGFzc1JlZi5oCmluZGV4IDA5NzE3MDAyYjQ1MWM5YTc5NTFlYjgyNTYyOGIwMjViZWNhOGNlZDku
LjMyOWQ3MmVlZjAyYTIyNWM3OWEyZjlhYjc0YTk3ZTJjZWM4YmEwMDYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDbGFzc1JlZi5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9BUEkvSlNDbGFzc1JlZi5oCkBAIC02OSw3ICs2OSw3IEBAIHN0cnVjdCBPcGFxdWVK
U0NsYXNzOwogc3RydWN0IE9wYXF1ZUpTQ2xhc3NDb250ZXh0RGF0YSB7CiAgICAgV1RGX01BS0Vf
Tk9OQ09QWUFCTEUoT3BhcXVlSlNDbGFzc0NvbnRleHREYXRhKTsgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CiBwdWJsaWM6Ci0gICAgT3BhcXVlSlNDbGFzc0NvbnRleHREYXRhKE9wYXF1ZUpTQ2xh
c3MqKTsKKyAgICBPcGFxdWVKU0NsYXNzQ29udGV4dERhdGEoSlNDOjpKU0dsb2JhbERhdGEmLCBP
cGFxdWVKU0NsYXNzKik7CiAgICAgfk9wYXF1ZUpTQ2xhc3NDb250ZXh0RGF0YSgpOwogCiAgICAg
Ly8gSXQgaXMgbmVjZXNzYXJ5IHRvIGtlZXAgT3BhcXVlSlNDbGFzcyBhbGl2ZSBiZWNhdXNlIG9m
IHRoZSBmb2xsb3dpbmcgcmFyZSBzY2VuYXJpbzoKQEAgLTgyLDcgKzgyLDcgQEAgcHVibGljOgog
CiAgICAgT3BhcXVlSlNDbGFzc1N0YXRpY1ZhbHVlc1RhYmxlKiBzdGF0aWNWYWx1ZXM7CiAgICAg
T3BhcXVlSlNDbGFzc1N0YXRpY0Z1bmN0aW9uc1RhYmxlKiBzdGF0aWNGdW5jdGlvbnM7Ci0gICAg
SlNDOjpXZWFrR0NQdHI8SlNDOjpKU09iamVjdD4gY2FjaGVkUHJvdG90eXBlOworICAgIEpTQzo6
TGF6eVdlYWtHQ1B0cjxKU0M6OkpTT2JqZWN0PiBjYWNoZWRQcm90b3R5cGU7CiB9OwogCiBzdHJ1
Y3QgT3BhcXVlSlNDbGFzcyA6IHB1YmxpYyBUaHJlYWRTYWZlU2hhcmVkPE9wYXF1ZUpTQ2xhc3M+
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCBmMTg4MjZlYWVjNjBlNGM4
MGExZmZhYmIwZGYzOWU4MDk4N2MxNWM5Li41YTZhY2UyMTFmMDM2ZDU0ODRiZWZlYmZhN2YxNjdj
NGZmOWVhOGY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50
eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC00MCw2ICs0
MCw4IEBAIFNFVChKYXZhU2NyaXB0Q29yZV9TT1VSQ0VTCiAgICAgYnl0ZWNvbXBpbGVyL0J5dGVj
b2RlR2VuZXJhdG9yLmNwcAogICAgIGJ5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCiAKKyAg
ICBjb2xsZWN0b3IvaGFuZGxlcy9IYW5kbGVIZWFwLmNwcAorCiAgICAgZGVidWdnZXIvRGVidWdn
ZXIuY3BwCiAgICAgZGVidWdnZXIvRGVidWdnZXJBY3RpdmF0aW9uLmNwcAogICAgIGRlYnVnZ2Vy
L0RlYnVnZ2VyQ2FsbEZyYW1lLmNwcApAQCAtMTAwLDcgKzEwMiw2IEBAIFNFVChKYXZhU2NyaXB0
Q29yZV9TT1VSQ0VTCiAgICAgcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmNwcAogICAgIHJ1
bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuY3BwCiAgICAgcnVudGltZS9HQ0FjdGl2aXR5Q2FsbGJh
Y2suY3BwCi0gICAgcnVudGltZS9HQ0hhbmRsZS5jcHAKICAgICBydW50aW1lL0dldHRlclNldHRl
ci5jcHAKICAgICBydW50aW1lL0dsb2JhbEV2YWxGdW5jdGlvbi5jcHAKICAgICBydW50aW1lL0lk
ZW50aWZpZXIuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9n
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA0YWYwOGQ2NWMyNDYzNjI4
Yzk0NGVmNWZkMzA5NGIzYjc2ZDc2ODMyLi5iMGZhNDIxYWVmNmVhOGVmMTIwODc1ZDJjNzk2NWYx
Y2Q4ZmZlY2JkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNzEgQEAKKzIw
MTEtMDItMTQgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZWZhY3RvciBoYW5kbGVzIGFuZCB3
ZWFrIHBvaW50ZXJzIHRvIGJlY29tZSBuaWNlciBhbmQgbW9yZSBhdXRvbWF0aWMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU0NDE1CisKKyAgICAgICAg
TW92ZSB0byBhIHRydWUgaGFuZGxlIGJhc2VkIG1lY2hhbmlzbSBmb3IgR0MgdmFsdWUgcHJvdGVj
dGlvbi4gIFRoaXMKKyAgICAgICAgYWxzbyBhbGxvd3MgdXMgdG8gc3dpdGNoIHRvIGEgbW9yZSBz
ZW5zaWJsZSBiZWhhdmlvdXIgZm9yIHdlYWsgcG9pbnRlcnMKKyAgICAgICAgaW4gd2hpY2ggd2Vh
ayBwb2ludGVycyBhcmUgYXV0b21hdGljYWxseSB1cGRhdGVkLgorCisgICAgICAgIFRoaXMgYWxs
b3dzIHVzIHRvIHJlbW92ZSB0aGUgb2xkIChhbmQgY29udm9sdXRlZCkgdGhhdCByZXF1aXJlZCBh
bGwKKyAgICAgICAgb2JqZWN0cyB0aGF0IG1heSBiZSBoZWxkIGJ5IGEgd2VhayByZWZlcmVuY2Ug
dG8gYmUgYXdhcmUgb2YgdGhlIHJlZmVyZW5jZQorICAgICAgICBhbmQgbWFudWFsbHkgY2xlYXIg
dGhlbSBpbiB0aGVpciBkZXN0cnVjdG9ycy4KKworICAgICAgICBUaGlzIGFsc28gYWRkcyBhIGZl
dyBuZXcgZGF0YSB0eXBlcyB0byBKU0MgdGhhdCB3ZSB1c2UgdG8gZWZmaWNpZW50bHkKKyAgICAg
ICAgYWxsb2NhdGUgYW5kIHJldHVybiB0aGUgdW5kZXJseWluZyBoYW5kbGUgc3RvcmFnZS4KKwor
ICAgICAgICBUaGlzIHBhdGNoIGlzIGxhcmdlbHkgcmVuYW1pbmcgYW5kIHJlbW92aW5nIG5vdyB1
bm5lY2Vzc2FyeSBkZXN0cnVjdG9ycworICAgICAgICBmcm9tIG9iamVjdHMuCisKKyAgICAgICAg
KiBBUEkvSlNDbGFzc1JlZi5jcHA6CisgICAgICAgIChPcGFxdWVKU0NsYXNzOjpjcmVhdGUpOgor
ICAgICAgICAoT3BhcXVlSlNDbGFzc0NvbnRleHREYXRhOjpPcGFxdWVKU0NsYXNzQ29udGV4dERh
dGEpOgorICAgICAgICAoT3BhcXVlSlNDbGFzczo6Y29udGV4dERhdGEpOgorICAgICAgICAoT3Bh
cXVlSlNDbGFzczo6cHJvdG90eXBlKToKKyAgICAgICAgKiBBUEkvSlNDbGFzc1JlZi5oOgorICAg
ICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOgorICAgICAg
ICAqIEphdmFTY3JpcHRDb3JlLmV4cDoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS5neXBpOgor
ICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnBybzoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS52
Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZGVmOgorICAgICAgICAqIEphdmFT
Y3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2o6Cisg
ICAgICAgICogSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlQ29tbW9uLnZzcHJvcHM6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlR2VuZXJhdGVkLm1ha2U6CisgICAgICAgICogSmF2YVNj
cmlwdENvcmUudmNwcm9qL2pzYy9qc2NDb21tb24udnNwcm9wczoKKyAgICAgICAgKiBKYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGNvbGxlY3Rvci9o
YW5kbGVzL0Jsb2NrU3RhY2suaDogQWRkZWQuCisgICAgICAgIChKU0M6Ojo6QmxvY2tTdGFjayk6
CisgICAgICAgIChKU0M6Ojo6fkJsb2NrU3RhY2spOgorICAgICAgICAoSlNDOjo6OmJsb2Nrcyk6
CisgICAgICAgIChKU0M6Ojo6Z3Jvdyk6CisgICAgICAgIChKU0M6Ojo6c2hyaW5rKToKKyAgICAg
ICAgKiBjb2xsZWN0b3IvaGFuZGxlcy9HbG9iYWwuaDogQWRkZWQuCisgICAgICAgICAgICBOZXcg
R2xvYmFsIGhhbmRsZSB0eXBlIHVzZWQgdG8ga2VlcCBnYyBvYmplY3RzIGxpdmUsIGV2ZW4gaWYg
dGhleSdyZSBub3QKKyAgICAgICAgICAgIG1hcmtlZC4KKyAgICAgICAgKEpTQzo6R2xvYmFsOjpH
bG9iYWwpOgorICAgICAgICAoSlNDOjpHbG9iYWw6On5HbG9iYWwpOgorICAgICAgICAoSlNDOjpH
bG9iYWw6OnNldCk6CisgICAgICAgICAgICBXZSBjYW4gb25seSBhc3NpZ24gZGlyZWN0bHkgdG8g
YSBnbG9iYWwgZnJvbSBhbm90aGVyIGdsb2JhbC4KKyAgICAgICAgICAgIEluIGFsbCBvdGhlciBj
YXNlcyB3ZSBuZWVkIHRoZSBKU0dsb2JhbERhdGEgdG8gYmUgcHJvdmlkZWQKKyAgICAgICAgICAg
IGV4cGxpY2l0bHkgc28gd2UgdXNlIGEgc2V0IGZ1bmN0aW9uLgorICAgICAgICAoSlNDOjpHbG9i
YWw6Om9wZXJhdG9yPSk6CisgICAgICAgIChKU0M6Okdsb2JhbDo6Y2xlYXIpOgorICAgICAgICAo
SlNDOjpHbG9iYWw6OmlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKToKKyAgICAgICAgKEpTQzo6R2xv
YmFsOjppbnRlcm5hbFNldCk6CisgICAgICAgICogY29sbGVjdG9yL2hhbmRsZXMvSGFuZGxlLmg6
IEFkZGVkLgorICAgICAgICAgICAgUm9vdCAiSGFuZGxlIiB0eXBlIHVzZWQgZm9yIGltbXV0YWJs
ZSBoYW5kbGVzIGFuZCB0byBwcm92aWRlIHRoZSBiYXNpYworICAgICAgICAgICAgQVBJcyBuZWVk
ZWQgZm9yIHBvaW50ZXItbGlrZSBiZWhhdmlvdXIuCisgICAgICAgIChKU0M6OkhhbmRsZUJhc2U6
Om9wZXJhdG9yISk6CisgICAgICAgIChKU0M6OkhhbmRsZUJhc2U6Om9wZXJhdG9yIFVuc3BlY2lm
aWVkQm9vbFR5cGUqKToKKyAgICAgICAgKEpTQzo6SGFuZGxlQmFzZTo6aXNFbXB0eSk6CisgICAg
ICAgIChKU0M6OkhhbmRsZUJhc2U6OkhhbmRsZUJhc2UpOgorICAgICAgICAoSlNDOjpIYW5kbGVC
YXNlOjpzbG90KToKKyAgICAgICAgKEpTQzo6SGFuZGxlQmFzZTo6aW52YWxpZGF0ZSk6CisgICAg
ICAgIChKU0M6OkhhbmRsZUJhc2U6OnNldFNsb3QpOgorICAgICAgICAoSlNDOjpIYW5kbGVUeXBl
czo6Z2V0RnJvbVNsb3QpOgorICAgICAgICAoSlNDOjpIYW5kbGVUeXBlczo6dG9KU1ZhbHVlKToK
KyAgICAgICAgKEpTQzo6SGFuZGxlVHlwZXM6OnZhbGlkYXRlVXBjYXN0KToKKyAgICAgICAgKEpT
Qzo6SGFuZGxlQ29udmVydGVyOjpvcGVyYXRvci0+KToKKyAgICAgICAgKEpTQzo6SGFuZGxlQ29u
dmVydGVyOjpvcGVyYXRvciopOgorICAgICAgICAoSlNDOjpIYW5kbGU6OkhhbmRsZSk6CisgICAg
ICAgIChKU0M6OkhhbmRsZTo6Z2V0KToKKyAgICAgICAgKEpTQzo6SGFuZGxlOjp3cmFwU2xvdCk6
CisgICAgICAgIChKU0M6Om9wZXJhdG9yPT0pOgorICAgICAgICAoSlNDOjpvcGVyYXRvciE9KToK
KyAgICAgICAgKiBjb2xsZWN0b3IvaGFuZGxlcy9IYW5kbGVIZWFwLmNwcDogQWRkZWQuCisgICAg
ICAgICAgICBOZXcgaGVhcCBmb3IgZ2xvYmFsIGhhbmRsZXMuCisgICAgICAgIChKU0M6OkhhbmRs
ZUhlYXA6OkhhbmRsZUhlYXApOgorICAgICAgICAoSlNDOjpIYW5kbGVIZWFwOjpncm93KToKKyAg
ICAgICAgKEpTQzo6SGFuZGxlSGVhcDo6bWFya1N0cm9uZ0hhbmRsZXMpOgorICAgICAgICAoSlND
OjpIYW5kbGVIZWFwOjp1cGRhdGVBZnRlck1hcmspOgorICAgICAgICAoSlNDOjpIYW5kbGVIZWFw
OjpjbGVhcldlYWtQb2ludGVycyk6CisgICAgICAgIChKU0M6OkhhbmRsZUhlYXA6OndyaXRlQmFy
cmllcik6CisgICAgICAgICogY29sbGVjdG9yL2hhbmRsZXMvSGFuZGxlSGVhcC5oOiBBZGRlZC4K
KyAgICAgICAgKEpTQzo6SGFuZGxlSGVhcDo6aGVhcEZvcik6CisgICAgICAgIChKU0M6OkhhbmRs
ZUhlYXA6OnRvSGFuZGxlKToKKyAgICAgICAgKEpTQzo6SGFuZGxlSGVhcDo6dG9Ob2RlKToKKyAg
ICAgICAgKEpTQzo6SGFuZGxlSGVhcDo6YWxsb2NhdGUpOgorICAgICAgICAoSlNDOjpIYW5kbGVI
ZWFwOjpkZWFsbG9jYXRlKToKKyAgICAgICAgKEpTQzo6SGFuZGxlSGVhcDo6bWFrZVdlYWspOgor
ICAgICAgICAgICAgQ29udmVydCBhIGhhcmQgaGFuZGxlIGludG8gd2VhayBoYW5kbGUgdGhhdCBk
b2VzIG5vdAorICAgICAgICAgICAgcHJvdGVjdCB0aGUgb2JqZWN0IGl0IHBvaW50cyB0by4KKyAg
ICAgICAgKEpTQzo6SGFuZGxlSGVhcDo6bWFrZVNlbGZEZXN0cm95aW5nKToKKyAgICAgICAgICAg
IENvbnZlcnRzIGEgaGFuZGxlIHRvIGEgd2VhayBoYW5kbGUgdGhhdCB3aWxsIGJlIHJldHVybmVk
CisgICAgICAgICAgICB0byB0aGUgZnJlZSBsaXN0IHdoZW4gdGhlIHJlZmVyZW5jZWQgb2JqZWN0
IGRpZXMuCisgICAgICAgIChKU0M6OkhhbmRsZUhlYXA6Ok5vZGU6Ok5vZGUpOgorICAgICAgICAo
SlNDOjpIYW5kbGVIZWFwOjpOb2RlOjpzbG90KToKKyAgICAgICAgKEpTQzo6SGFuZGxlSGVhcDo6
Tm9kZTo6aGFuZGxlSGVhcCk6CisgICAgICAgIChKU0M6OkhhbmRsZUhlYXA6Ok5vZGU6OnNldEZp
bmFsaXplcik6CisgICAgICAgIChKU0M6OkhhbmRsZUhlYXA6Ok5vZGU6Om1ha2VXZWFrKToKKyAg
ICAgICAgKEpTQzo6SGFuZGxlSGVhcDo6Tm9kZTo6aXNXZWFrKToKKyAgICAgICAgKEpTQzo6SGFu
ZGxlSGVhcDo6Tm9kZTo6bWFrZVNlbGZEZXN0cm95aW5nKToKKyAgICAgICAgKEpTQzo6SGFuZGxl
SGVhcDo6Tm9kZTo6aXNTZWxmRGVzdHJveWluZyk6CisgICAgICAgIChKU0M6OkhhbmRsZUhlYXA6
Ok5vZGU6OmZpbmFsaXplcik6CisgICAgICAgIChKU0M6OkhhbmRsZUhlYXA6Ok5vZGU6OnNldFBy
ZXYpOgorICAgICAgICAoSlNDOjpIYW5kbGVIZWFwOjpOb2RlOjpwcmV2KToKKyAgICAgICAgKEpT
Qzo6SGFuZGxlSGVhcDo6Tm9kZTo6c2V0TmV4dCk6CisgICAgICAgIChKU0M6OkhhbmRsZUhlYXA6
Ok5vZGU6Om5leHQpOgorICAgICAgICAqIGNvbGxlY3Rvci9oYW5kbGVzL1NlbnRpbmVsTGlua2Vk
TGlzdC5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6OjpTZW50aW5lbExpbmtlZExpc3QpOgorICAg
ICAgICAoSlNDOjo6OmJlZ2luKToKKyAgICAgICAgKEpTQzo6OjplbmQpOgorICAgICAgICAoSlND
Ojo6OnB1c2gpOgorICAgICAgICAoSlNDOjo6OnJlbW92ZSk6CisgICAgICAgICogY29sbGVjdG9y
L2hhbmRsZXMvU2luZ2x5TGlua2VkTGlzdC5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6OjpTaW5n
bHlMaW5rZWRMaXN0KToKKyAgICAgICAgKEpTQzo6Ojppc0VtcHR5KToKKyAgICAgICAgKEpTQzo6
OjpwdXNoKToKKyAgICAgICAgKEpTQzo6Ojpwb3ApOgorICAgICAgICAqIGludGVycHJldGVyL0lu
dGVycHJldGVyLmNwcDoKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OkludGVycHJldGVyKToK
KyAgICAgICAgKiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5oOgorICAgICAgICAqIGludGVycHJl
dGVyL1JlZ2lzdGVyRmlsZS5jcHA6CisgICAgICAgIChKU0M6OlJlZ2lzdGVyRmlsZTo6Z2xvYmFs
T2JqZWN0Q29sbGVjdGVkKToKKyAgICAgICAgKiBpbnRlcnByZXRlci9SZWdpc3RlckZpbGUuaDoK
KyAgICAgICAgKEpTQzo6UmVnaXN0ZXJGaWxlOjpSZWdpc3RlckZpbGUpOgorICAgICAgICAqIHJ1
bnRpbWUvR0NIYW5kbGUuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIHJ1bnRpbWUvR0NIYW5kbGUu
aDogUmVtb3ZlZC4KKyAgICAgICAgKiBydW50aW1lL0hlYXAuY3BwOgorICAgICAgICAoSlNDOjpI
ZWFwOjpIZWFwKToKKyAgICAgICAgKEpTQzo6SGVhcDo6ZGVzdHJveSk6CisgICAgICAgIChKU0M6
OkhlYXA6Om1hcmtSb290cyk6CisgICAgICAgICogcnVudGltZS9IZWFwLmg6CisgICAgICAgIChK
U0M6OkhlYXA6OmFsbG9jYXRlR2xvYmFsSGFuZGxlKToKKyAgICAgICAgKEpTQzo6SGVhcDo6cmVw
b3J0RXh0cmFNZW1vcnlDb3N0KToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsRGF0YS5jcHA6
CisgICAgICAgIChKU0M6OkpTR2xvYmFsRGF0YTo6SlNHbG9iYWxEYXRhKToKKyAgICAgICAgKiBy
dW50aW1lL0pTR2xvYmFsRGF0YS5oOgorICAgICAgICAoSlNDOjpKU0dsb2JhbERhdGE6OmFsbG9j
YXRlR2xvYmFsSGFuZGxlKToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDoK
KyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6On5KU0dsb2JhbE9iamVjdCk6CisgICAgICAg
ICogcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6SlNQ
cm9wZXJ0eU5hbWVJdGVyYXRvcjo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6SlNQcm9wZXJ0eU5h
bWVJdGVyYXRvcjo6fkpTUHJvcGVydHlOYW1lSXRlcmF0b3IpOgorICAgICAgICAqIHJ1bnRpbWUv
SlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oOgorICAgICAgICAoSlNDOjpKU1Byb3BlcnR5TmFtZUl0
ZXJhdG9yOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OnNldEVu
dW1lcmF0aW9uQ2FjaGUpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OmNsZWFyRW51bWVyYXRp
b25DYWNoZSk6CisgICAgICAgICogcnVudGltZS9Qcm90ZWN0Lmg6CisgICAgICAgICogcnVudGlt
ZS9TdHJ1Y3R1cmUuY3BwOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6On5TdHJ1Y3R1cmUpOgor
ICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlLmg6CisgICAgICAgICogcnVudGltZS9XZWFrR0NQ
dHIuaDoKKyAgICAgICAgKEpTQzo6V2Vha0dDUHRyQmFzZTo6Z2V0KToKKyAgICAgICAgKEpTQzo6
V2Vha0dDUHRyQmFzZTo6Y2xlYXIpOgorICAgICAgICAoSlNDOjpXZWFrR0NQdHJCYXNlOjpvcGVy
YXRvciEpOgorICAgICAgICAoSlNDOjpXZWFrR0NQdHJCYXNlOjpvcGVyYXRvciBVbnNwZWNpZmll
ZEJvb2xUeXBlKik6CisgICAgICAgIChKU0M6OldlYWtHQ1B0ckJhc2U6On5XZWFrR0NQdHJCYXNl
KToKKyAgICAgICAgKEpTQzo6V2Vha0dDUHRyQmFzZTo6V2Vha0dDUHRyQmFzZSk6CisgICAgICAg
IChKU0M6OldlYWtHQ1B0ckJhc2U6OmludGVybmFsU2V0KToKKyAgICAgICAgKEpTQzo6TGF6eVdl
YWtHQ1B0cjo6TGF6eVdlYWtHQ1B0cik6CisgICAgICAgIChKU0M6OkxhenlXZWFrR0NQdHI6OnNl
dCk6CisgICAgICAgIChKU0M6OldlYWtHQ1B0cjo6V2Vha0dDUHRyKToKKyAgICAgICAgKEpTQzo6
V2Vha0dDUHRyOjpvcGVyYXRvcj0pOgorICAgICAgICAqIHJ1bnRpbWUvV3JpdGVCYXJyaWVyLmg6
CisKIDIwMTEtMDItMTQgIFBhdmVsIFBvZGl2aWxvdiAgPHBvZGl2aWxvdkBjaHJvbWl1bS5vcmc+
CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgWXVyeSBTZW1pa2hhdHNreS4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5hbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9HTlVtYWtlZmlsZS5hbQppbmRleCBlNmNjZjJlNTZlYzczYzI2ZmJlN2I3NmEwZmMwNzM5YjQx
YjUzNzg0Li5hMmYwOTY3MWFlNWZkYjg4ZDM2OGQ0MmE4YzM0MDYxNmFjYzg1YjhlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUuYW0KKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmFtCkBAIC0xMDksNiArMTA5LDEzIEBAIGphdmFzY3Jp
cHRjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIv
TGFiZWxTY29wZS5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVz
Q29kZWdlbi5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvUmVnaXN0
ZXJJRC5oIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvY29sbGVjdG9yL2hhbmRsZXMvQmxvY2tT
dGFjay5oIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvY29sbGVjdG9yL2hhbmRsZXMvR2xvYmFs
LmggXAorCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9jb2xsZWN0b3IvaGFuZGxlcy9IYW5kbGUuaCBc
CisJU291cmNlL0phdmFTY3JpcHRDb3JlL2NvbGxlY3Rvci9oYW5kbGVzL0hhbmRsZUhlYXAuY3Bw
IFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvY29sbGVjdG9yL2hhbmRsZXMvSGFuZGxlSGVhcC5o
IFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvY29sbGVjdG9yL2hhbmRsZXMvU2VudGluZWxMaW5r
ZWRMaXN0LmggXAorCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9jb2xsZWN0b3IvaGFuZGxlcy9TaW5n
bHlMaW5rZWRMaXN0LmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9jb25maWcuaCBcCiAJU291
cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyQWN0aXZhdGlvbi5jcHAgXAogCVNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckFjdGl2YXRpb24uaCBcCkBAIC0y
NzAsOCArMjc3LDYgQEAgamF2YXNjcmlwdGNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuaCBcCiAJU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvR0NBY3Rpdml0eUNhbGxiYWNrLmNwcCBcCiAJU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvR0NBY3Rpdml0eUNhbGxiYWNrLmggXAotCVNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0dDSGFuZGxlLmNwcCBcCi0JU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvR0NIYW5kbGUuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2V0dGVyU2V0
dGVyLmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2V0dGVyU2V0dGVyLmgg
XAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dsb2JhbEV2YWxGdW5jdGlvbi5jcHAg
XApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmV4cCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5leHAKaW5kZXggNTY0ZDdkYjMz
MjRmMWM1YTZhMDg5YzgzMzhkMjA5YTQ5ZTczZTZlMi4uNDY0NWFmMzI1YWE2ZTM1YTQ3Nzc1ODBk
MTJhODRjYWM5MzgyMDIxMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLmV4cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
ZXhwCkBAIC05Nyw2ICs5Nyw4IEBAIF9XVEZSZXBvcnRCYWNrdHJhY2UKIF9XVEZSZXBvcnRFcnJv
cgogX1dURlJlcG9ydEZhdGFsRXJyb3IKIF9fWk4xNE9wYXF1ZUpTU3RyaW5nNmNyZWF0ZUVSS04z
SlNDN1VTdHJpbmdFCitfX1pOM0pTQzEwSGFuZGxlSGVhcDEyd3JpdGVCYXJyaWVyRVBOU183SlNW
YWx1ZUVSS1MxXworX19aTjNKU0MxMEhhbmRsZUhlYXA0Z3Jvd0V2CiBfX1pOM0pTQzEwSWRlbnRp
ZmllcjExYWRkU2xvd0Nhc2VFUE5TXzEySlNHbG9iYWxEYXRhRVBOM1dURjEwU3RyaW5nSW1wbEUK
IF9fWk4zSlNDMTBJZGVudGlmaWVyMTFhZGRTbG93Q2FzZUVQTlNfOUV4ZWNTdGF0ZUVQTjNXVEYx
MFN0cmluZ0ltcGxFCiBfX1pOM0pTQzEwSWRlbnRpZmllcjI3Y2hlY2tDdXJyZW50SWRlbnRpZmll
clRhYmxlRVBOU18xMkpTR2xvYmFsRGF0YUUKQEAgLTE0Myw3ICsxNDUsNiBAQCBfX1pOM0pTQzEy
U3RyaW5nT2JqZWN0MjRnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JFUE5TXzlFeGVjU3RhdGVFUktO
U18xMElkZW50aWZpZQogX19aTjNKU0MxMlN0cmluZ09iamVjdDNwdXRFUE5TXzlFeGVjU3RhdGVF
UktOU18xMElkZW50aWZpZXJFTlNfN0pTVmFsdWVFUk5TXzE1UHV0UHJvcGVydHlTbG90RQogX19a
TjNKU0MxMlN0cmluZ09iamVjdDRpbmZvRQogX19aTjNKU0MxMlN0cmluZ09iamVjdEMyRVBOU185
RXhlY1N0YXRlRU4zV1RGMTdOb25OdWxsUGFzc1JlZlB0cklOU185U3RydWN0dXJlRUVFUktOU183
VVN0cmluZ0UKLV9fWk4zSlNDMTJXZWFrR0NIYW5kbGU0cG9vbEV2CiBfX1pOM0pTQzEyanNOdW1i
ZXJDZWxsRVBOU185RXhlY1N0YXRlRWQKIF9fWk4zSlNDMTJub25JbmxpbmVOYU5FdgogX19aTjNK
U0MxM1NhbXBsaW5nRmxhZ3M0c3RvcEV2CkBAIC0xNzMsNyArMTc0LDYgQEAgX19aTjNKU0MxNklu
dGVybmFsRnVuY3Rpb25DMkVQTlNfMTJKU0dsb2JhbERhdGFFUE5TXzE0SlNHbG9iYWxPYmplY3RF
TjNXVEYxN05vbk4KIF9fWk4zSlNDMTZKU1ZhcmlhYmxlT2JqZWN0MTRkZWxldGVQcm9wZXJ0eUVQ
TlNfOUV4ZWNTdGF0ZUVSS05TXzEwSWRlbnRpZmllckUKIF9fWk4zSlNDMTZKU1ZhcmlhYmxlT2Jq
ZWN0MTRzeW1ib2xUYWJsZUdldEVSS05TXzEwSWRlbnRpZmllckVSTlNfMThQcm9wZXJ0eURlc2Ny
aXB0b3JFCiBfX1pOM0pTQzE2SlNWYXJpYWJsZU9iamVjdDE5Z2V0T3duUHJvcGVydHlOYW1lc0VQ
TlNfOUV4ZWNTdGF0ZUVSTlNfMTdQcm9wZXJ0eU5hbWVBcnJheUVOU18xNUVudW1lcmF0aW9uTW9k
ZUUKLV9fWk4zSlNDMTZXZWFrR0NIYW5kbGVQb29sNGZyZWVFUE5TXzEyV2Vha0dDSGFuZGxlRQog
X19aTjNKU0MxNmNyZWF0ZVJhbmdlRXJyb3JFUE5TXzlFeGVjU3RhdGVFUktOU183VVN0cmluZ0UK
IF9fWk4zSlNDMTZ0aHJvd1N5bnRheEVycm9yRVBOU185RXhlY1N0YXRlRQogX19aTjNKU0MxN0J5
dGVjb2RlR2VuZXJhdG9yMjFzZXREdW1wc0dlbmVyYXRlZENvZGVFYgpAQCAtMjA2LDcgKzIwNiw2
IEBAIF9fWk4zSlNDMjRjcmVhdGVTdGFja092ZXJmbG93RXJyb3JFUE5TXzlFeGVjU3RhdGVFCiBf
X1pOM0pTQzI1ZXZhbHVhdGVJbkdsb2JhbENhbGxGcmFtZUVSS05TXzdVU3RyaW5nRVJOU183SlNW
YWx1ZUVQTlNfMTRKU0dsb2JhbE9iamVjdEUKIF9fWk4zSlNDMzVjcmVhdGVJbnRlcnJ1cHRlZEV4
ZWN1dGlvbkV4Y2VwdGlvbkVQTlNfMTJKU0dsb2JhbERhdGFFCiBfX1pOM0pTQzNOYU5FCi1fX1pO
M0pTQzRIZWFwMTVhZGRXZWFrR0NIYW5kbGVFUE5TXzZKU0NlbGxFCiBfX1pOM0pTQzRIZWFwMTZv
YmplY3RUeXBlQ291bnRzRXYKIF9fWk4zSlNDNEhlYXAxN2NvbGxlY3RBbGxHYXJiYWdlRXYKIF9f
Wk4zSlNDNEhlYXAxN2dsb2JhbE9iamVjdENvdW50RXYKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5neXBpIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLmd5cGkKaW5kZXggNzU0ZmQyYjZkZWY1MDg4ZGQ1MGYyYzhjNmJmNmY2YzVj
YWZmMjJlYi4uMmIwOWIwOGIwMWQxOGM2YTg2N2FiYjBkMTUyMzA3M2FiZmM0ZmI2MiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmd5cGkKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmd5cGkKQEAgLTY4LDYgKzY4LDEzIEBA
CiAgICAgICAgICAgICAnYnl0ZWNvbXBpbGVyL0xhYmVsLmgnLAogICAgICAgICAgICAgJ2J5dGVj
b21waWxlci9MYWJlbFNjb3BlLmgnLAogICAgICAgICAgICAgJ2J5dGVjb21waWxlci9SZWdpc3Rl
cklELmgnLAorICAgICAgICAgICAgJ2NvbGxlY3Rvci9oYW5kbGVzL0Jsb2NrU3RhY2suaCcsCisg
ICAgICAgICAgICAnY29sbGVjdG9yL2hhbmRsZXMvR2xvYmFsLmgnLAorICAgICAgICAgICAgJ2Nv
bGxlY3Rvci9oYW5kbGVzL0hhbmRsZS5oJywKKyAgICAgICAgICAgICdjb2xsZWN0b3IvaGFuZGxl
cy9IYW5kbGVIZWFwLmNwcCcsCisgICAgICAgICAgICAnY29sbGVjdG9yL2hhbmRsZXMvSGFuZGxl
SGVhcC5oJywKKyAgICAgICAgICAgICdjb2xsZWN0b3IvaGFuZGxlcy9TZW50aW5lbExpbmtlZExp
c3QuaCcsCisgICAgICAgICAgICAnY29sbGVjdG9yL2hhbmRsZXMvU2luZ2x5TGlua2VkTGlzdC5o
JywKICAgICAgICAgICAgICdjb25maWcuaCcsCiAgICAgICAgICAgICAnZGVidWdnZXIvRGVidWdn
ZXIuY3BwJywKICAgICAgICAgICAgICdkZWJ1Z2dlci9EZWJ1Z2dlci5oJywKQEAgLTIxMyw4ICsy
MjAsNiBAQAogICAgICAgICAgICAgJ3J1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuaCcsCiAgICAg
ICAgICAgICAncnVudGltZS9HQ0FjdGl2aXR5Q2FsbGJhY2suY3BwJywKICAgICAgICAgICAgICdy
dW50aW1lL0dDQWN0aXZpdHlDYWxsYmFjay5oJywKLSAgICAgICAgICAgICdydW50aW1lL0dDSGFu
ZGxlLmNwcCcsCi0gICAgICAgICAgICAncnVudGltZS9HQ0hhbmRsZS5oJywKICAgICAgICAgICAg
ICdydW50aW1lL0dldHRlclNldHRlci5jcHAnLAogICAgICAgICAgICAgJ3J1bnRpbWUvR2V0dGVy
U2V0dGVyLmgnLAogICAgICAgICAgICAgJ3J1bnRpbWUvR2xvYmFsRXZhbEZ1bmN0aW9uLmNwcCcs
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUucHJvIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnBybwppbmRleCAxYjVlMjhhY2M0
OGZiNGE2OGFhM2FmMzY3OGNjMTI3MDdkNmNiOTQzLi4xNjAwZjI5NGZjYTRjYzRiNjEyMDA3NTcz
MWNlMDVmZDJiZWFiZDY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUucHJvCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5w
cm8KQEAgLTk0LDYgKzk0LDcgQEAgU09VUkNFUyArPSBcCiAgICAgZGVidWdnZXIvRGVidWdnZXJB
Y3RpdmF0aW9uLmNwcCBcCiAgICAgZGVidWdnZXIvRGVidWdnZXJDYWxsRnJhbWUuY3BwIFwKICAg
ICBkZWJ1Z2dlci9EZWJ1Z2dlci5jcHAgXAorICAgIGNvbGxlY3Rvci9oYW5kbGVzL0hhbmRsZUhl
YXAuY3BwIFwKICAgICBpbnRlcnByZXRlci9DYWxsRnJhbWUuY3BwIFwKICAgICBpbnRlcnByZXRl
ci9JbnRlcnByZXRlci5jcHAgXAogICAgIGludGVycHJldGVyL1JlZ2lzdGVyRmlsZS5jcHAgXApA
QCAtMTQ3LDcgKzE0OCw2IEBAIFNPVVJDRVMgKz0gXAogICAgIHJ1bnRpbWUvRnVuY3Rpb25Db25z
dHJ1Y3Rvci5jcHAgXAogICAgIHJ1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuY3BwIFwKICAgICBy
dW50aW1lL0dDQWN0aXZpdHlDYWxsYmFjay5jcHAgXAotICAgIHJ1bnRpbWUvR0NIYW5kbGUuY3Bw
IFwKICAgICBydW50aW1lL0dldHRlclNldHRlci5jcHAgXAogICAgIHJ1bnRpbWUvR2xvYmFsRXZh
bEZ1bmN0aW9uLmNwcCBcCiAgICAgcnVudGltZS9JZGVudGlmaWVyLmNwcCBcCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLmRlZiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZGVmCmluZGV4IDAxMGRi
MzlkNDhhZGFjYWEyMGJlOGVjZmQwNWQ4M2VkYmQzMmVjMDQuLjM0ZDk0ZmRhZTMxODZiNTRiN2I2
Y2QwODAxNGMwNDQyZTFkNDI0NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZGVmCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUuZGVmCkBAIC01Miw3ICs1Miw2IEBAIEVYUE9SVFMKICAgICA/
YWRkUHJvcGVydHlUcmFuc2l0aW9uVG9FeGlzdGluZ1N0cnVjdHVyZUBTdHJ1Y3R1cmVASlNDQEBT
QT9BVj8kUGFzc1JlZlB0ckBWU3RydWN0dXJlQEpTQ0BAQFdURkBAUEFWMTJAQUJWSWRlbnRpZmll
ckAyQElQQVZKU0NlbGxAMkBBQUlAWgogICAgID9hZGRQcm9wZXJ0eVdpdGhvdXRUcmFuc2l0aW9u
QFN0cnVjdHVyZUBKU0NAQFFBRUlBQlZJZGVudGlmaWVyQDJASVBBVkpTQ2VsbEAyQEBaCiAgICAg
P2FkZFNsb3dDYXNlQElkZW50aWZpZXJASlNDQEBDQT9BVj8kUGFzc1JlZlB0ckBWU3RyaW5nSW1w
bEBXVEZAQEBXVEZAQFBBVkV4ZWNTdGF0ZUAyQFBBVlN0cmluZ0ltcGxANEBAWgotICAgID9hZGRX
ZWFrR0NIYW5kbGVASGVhcEBKU0NAQFFBRVBBVldlYWtHQ0hhbmRsZUAyQFBBVkpTQ2VsbEAyQEBa
CiAgICAgP2FsbG9jYXRlQEhlYXBASlNDQEBRQUVQQVhJQFoKICAgICA/YWxsb2NhdGVQcm9wZXJ0
eVN0b3JhZ2VASlNPYmplY3RASlNDQEBRQUVYSUlAWgogICAgID9hbGxvY2F0ZVN0YWNrQE1hcmtT
dGFja0BKU0NAQENBUEFYSUBaCkBAIC0xNjQsNyArMTYzLDYgQEAgRVhQT1JUUwogICAgID9mYXN0
WmVyb2VkTWFsbG9jQFdURkBAWUFQQVhJQFoKICAgICA/ZmlsbEdldHRlclByb3BlcnR5U2xvdEBK
U09iamVjdEBKU0NAQFFBRVhBQVZQcm9wZXJ0eVNsb3RAMkBQQVY/JFdyaXRlQmFycmllckJhc2VA
VzRVbmtub3duQEpTQ0BAQDJAQFoKICAgICA/Zm9jdXNAUHJvZmlsZUBKU0NAQFFBRVhQQlZQcm9m
aWxlTm9kZUAyQEBaCi0gICAgP2ZyZWVAV2Vha0dDSGFuZGxlUG9vbEBKU0NAQFFBRVhQQVZXZWFr
R0NIYW5kbGVAMkBAWgogICAgID9mcm9tQElkZW50aWZpZXJASlNDQEBTQT9BVjEyQFBBVkV4ZWNT
dGF0ZUAyQEhAWgogICAgID9mcm9tQElkZW50aWZpZXJASlNDQEBTQT9BVjEyQFBBVkV4ZWNTdGF0
ZUAyQElAWgogICAgID9mdW5jdGlvbkdldHRlckBQcm9wZXJ0eVNsb3RASlNDQEBBQkU/QVZKU1Zh
bHVlQDJAUEFWRXhlY1N0YXRlQDJAQFoKQEAgLTIwMSw2ICsxOTksNyBAQCBFWFBPUlRTCiAgICAg
P2dsb2JhbEV4ZWNASlNHbG9iYWxPYmplY3RASlNDQEBVQUVQQVZFeGVjU3RhdGVAMkBYWgogICAg
ID9nbG9iYWxPYmplY3RASlNPYmplY3RXaXRoR2xvYmFsT2JqZWN0QEpTQ0BAUUJFUEFWSlNHbG9i
YWxPYmplY3RAMkBYWgogICAgID9nbG9iYWxPYmplY3RDb3VudEBIZWFwQEpTQ0BAUUFFSVhaCisg
ICAgP2dyb3dASGFuZGxlSGVhcEBKU0NAQEFBRVhYWgogICAgID9oYXNJbnN0YW5jZUBKU09iamVj
dEBKU0NAQFVBRV9OUEFWRXhlY1N0YXRlQDJAVkpTVmFsdWVAMkAxQFoKICAgICA/aGFzUHJvcGVy
dHlASlNPYmplY3RASlNDQEBRQkVfTlBBVkV4ZWNTdGF0ZUAyQEFCVklkZW50aWZpZXJAMkBAWgog
ICAgID9oYXNQcm9wZXJ0eUBKU09iamVjdEBKU0NAQFFCRV9OUEFWRXhlY1N0YXRlQDJASUBaCkBA
IC0yNDksNyArMjQ4LDYgQEAgRVhQT1JUUwogICAgID9vYmplY3RDb3VudEBIZWFwQEpTQ0BAUUJF
SVhaCiAgICAgP29iamVjdFByb3RvRnVuY1RvU3RyaW5nQEpTQ0BAWUlfSlBBVkV4ZWNTdGF0ZUAx
QEBaCiAgICAgP3BhcnNlRGF0ZUZyb21OdWxsVGVybWluYXRlZENoYXJhY3RlcnNAV1RGQEBZQU5Q
QkRAWgotICAgID9wb29sQFdlYWtHQ0hhbmRsZUBKU0NAQFFBRVBBVldlYWtHQ0hhbmRsZVBvb2xA
MkBYWgogICAgID9wcm9maWxlckBQcm9maWxlckBKU0NAQFNBUEFWMTJAWFoKICAgICA/cHJvdGVj
dEBIZWFwQEpTQ0BAUUFFWFZKU1ZhbHVlQDJAQFoKICAgICA/cHJvdGVjdGVkR2xvYmFsT2JqZWN0
Q291bnRASGVhcEBKU0NAQFFBRUlYWgpAQCAtMzYwLDYgKzM1OCw3IEBAIEVYUE9SVFMKICAgICA/
d2FpdEBUaHJlYWRDb25kaXRpb25AV1RGQEBRQUVYQUFWTXV0ZXhAMkBAWgogICAgID93YWl0Rm9y
VGhyZWFkQ29tcGxldGlvbkBXVEZAQFlBSElQQVBBWEBaCiAgICAgP3dyaXRhYmxlQFByb3BlcnR5
RGVzY3JpcHRvckBKU0NAQFFCRV9OWFoKKyAgICA/d3JpdGVCYXJyaWVyQEhhbmRsZUhlYXBASlND
QEBRQUVYUEFWSlNWYWx1ZUAyQEFCVjMyQEBaCiAgICAgP3lpZWxkQFdURkBAWUFYWFoKICAgICBX
VEZMb2cKICAgICBXVEZMb2dWZXJib3NlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZj
cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qCmluZGV4IDI2MDc3OWVmYTkyM2QzYzg1NWE1
OWZmNTE0MDMwNDFjMGM2NTVhMzAuLmQ0OTgxYmYyYTJmNWRlMDg3NmVhNTdkNmM2M2NkMjhkNjFl
NzExNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52
Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUudmNwcm9qCkBAIC0xOTc0LDYgKzE5NzQsNDIgQEAKIAkJCQk+CiAJCQk8L0ZpbGU+
CiAJCTwvRmlsdGVyPgorCQk8RmlsdGVyCisJCQlOYW1lPSJjb2xsZWN0b3IiCisJCQk+CisJCQk8
RmlsdGVyCisJCQkJTmFtZT0iaGFuZGxlcyIKKwkJCQk+CisJCQkJPEZpbGUKKwkJCQkJUmVsYXRp
dmVQYXRoPSIuLlwuLlxjb2xsZWN0b3JcaGFuZGxlc1xCbG9ja1N0YWNrLmgiCisJCQkJCT4KKwkJ
CQk8L0ZpbGU+CisJCQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxjb2xsZWN0b3Jc
aGFuZGxlc1xHbG9iYWwuaCIKKwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQorCQkJCQlS
ZWxhdGl2ZVBhdGg9Ii4uXC4uXGNvbGxlY3RvclxoYW5kbGVzXEhhbmRsZS5oIgorCQkJCQk+CisJ
CQkJPC9GaWxlPgorCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cY29sbGVjdG9y
XGhhbmRsZXNcSGFuZGxlSGVhcC5jcHAiCisJCQkJCT4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUK
KwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxjb2xsZWN0b3JcaGFuZGxlc1xIYW5kbGVIZWFwLmgi
CisJCQkJCT4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwu
Llxjb2xsZWN0b3JcaGFuZGxlc1xTZW50aW5lbExpbmtlZExpc3QuaCIKKwkJCQkJPgorCQkJCTwv
RmlsZT4KKwkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXGNvbGxlY3RvclxoYW5k
bGVzXFNpbmdseUxpbmtlZExpc3QuaCIKKwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJCTwvRmlsdGVy
PgorCQk8L0ZpbHRlcj4KIAkJPEZpbGUKIAkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cY29uZmlnLmgi
CiAJCQk+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
dmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlQ29tbW9uLnZzcHJvcHMgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlQ29tbW9uLnZzcHJvcHMKaW5kZXggNGE3ZjRkM2Y3NTY2MzFmMDBjZjMzNmM3
NjFjODcxMDhkYmNiNzhmNS4uY2I3MzYyZDdlNzczMDQyYmM0ODJmZmE2MDFlYzIwMzkzZmQ5Nzcw
MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJv
ai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZUNvbW1vbi52c3Byb3BzCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmVDb21tb24udnNwcm9wcwpAQCAtNiw3ICs2LDcgQEAKIAk+CiAJPFRvb2wKIAkJ
TmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKLQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0i
JnF1b3Q7JChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9ialxKYXZhU2NyaXB0Q29yZVxEZXJpdmVk
U291cmNlc1wmcXVvdDs7Li4vLi4vOy4uLy4uL0FQSS87Li4vLi4vcGFyc2VyLzsuLi8uLi9ieXRl
Y29tcGlsZXIvOy4uLy4uL2ppdC87Li4vLi4vcnVudGltZS87Li4vLi4vYnl0ZWNvZGUvOy4uLy4u
L2ludGVycHJldGVyLzsuLi8uLi93dGYvOy4uLy4uL3Byb2ZpbGVyOy4uLy4uL2Fzc2VtYmxlci87
Li4vLi4vZGVidWdnZXIvOyZxdW90OyQoV2ViS2l0TGlicmFyaWVzRGlyKVxpbmNsdWRlJnF1b3Q7
OyZxdW90OyQoV2ViS2l0TGlicmFyaWVzRGlyKVxpbmNsdWRlXHByaXZhdGUmcXVvdDs7JnF1b3Q7
JChDb25maWd1cmF0aW9uQnVpbGREaXIpXGluY2x1ZGUmcXVvdDs7JnF1b3Q7JChDb25maWd1cmF0
aW9uQnVpbGREaXIpXGluY2x1ZGVcSmF2YVNjcmlwdENvcmUmcXVvdDs7JnF1b3Q7JChDb25maWd1
cmF0aW9uQnVpbGREaXIpXGluY2x1ZGVccHJpdmF0ZSZxdW90OzsmcXVvdDskKFdlYktpdExpYnJh
cmllc0RpcilcaW5jbHVkZVxwdGhyZWFkcyZxdW90OyIKKwkJQWRkaXRpb25hbEluY2x1ZGVEaXJl
Y3Rvcmllcz0iJnF1b3Q7JChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9ialxKYXZhU2NyaXB0Q29y
ZVxEZXJpdmVkU291cmNlc1wmcXVvdDs7Li4vLi4vOy4uLy4uL0FQSS87Li4vLi4vcGFyc2VyLzsu
Li8uLi9ieXRlY29tcGlsZXIvOy4uLy4uL2ppdC87Li4vLi4vcnVudGltZS87Li4vLi4vYnl0ZWNv
ZGUvOy4uLy4uL2ludGVycHJldGVyLzsuLi8uLi93dGYvOy4uLy4uL3Byb2ZpbGVyOy4uLy4uL2Fz
c2VtYmxlci87Li4vLi4vZGVidWdnZXIvOy4uLy4uL2NvbGxlY3Rvci9oYW5kbGVzLzsmcXVvdDsk
KFdlYktpdExpYnJhcmllc0RpcilcaW5jbHVkZSZxdW90OzsmcXVvdDskKFdlYktpdExpYnJhcmll
c0RpcilcaW5jbHVkZVxwcml2YXRlJnF1b3Q7OyZxdW90OyQoQ29uZmlndXJhdGlvbkJ1aWxkRGly
KVxpbmNsdWRlJnF1b3Q7OyZxdW90OyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxpbmNsdWRlXEph
dmFTY3JpcHRDb3JlJnF1b3Q7OyZxdW90OyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxpbmNsdWRl
XHByaXZhdGUmcXVvdDs7JnF1b3Q7JChXZWJLaXRMaWJyYXJpZXNEaXIpXGluY2x1ZGVccHRocmVh
ZHMmcXVvdDsiCiAJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfX1NURF9DIgogCQlGb3JjZWRJ
bmNsdWRlRmlsZXM9IklDVVZlcnNpb24uaCIKIAkvPgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZUdlbmVyYXRlZC5tYWtlIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
LnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZUdlbmVyYXRlZC5tYWtlCmluZGV4
IDMxNGE3OTQxZTczZGZkNTc0MzVjNTgyZWNlZjdhZTUwYWYwMzFlMGUuLmRiMmExNzVhMDAwOTBm
NGQ1ZTBlZThhMjBmOGRiMzBhMGM3MmI1ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmVH
ZW5lcmF0ZWQubWFrZQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
dmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlR2VuZXJhdGVkLm1ha2UKQEAgLTM2
LDYgKzM2LDcgQEAgYWxsOgogICAgIHhjb3B5IC95IC9kICIuLlwuLlxpbnRlcnByZXRlclwqLmgi
ICIlQ29uZmlndXJhdGlvbkJ1aWxkRGlyJVxpbmNsdWRlXHByaXZhdGVcSmF2YVNjcmlwdENvcmUi
CiAgICAgeGNvcHkgL3kgL2QgIi4uXC4uXGFzc2VtYmxlclwqLmgiICIlQ29uZmlndXJhdGlvbkJ1
aWxkRGlyJVxpbmNsdWRlXHByaXZhdGVcSmF2YVNjcmlwdENvcmUiCiAgICAgeGNvcHkgL3kgL2Qg
Ii4uXC4uXGppdFwqLmgiICIlQ29uZmlndXJhdGlvbkJ1aWxkRGlyJVxpbmNsdWRlXHByaXZhdGVc
SmF2YVNjcmlwdENvcmUiCisgICAgeGNvcHkgL3kgL2QgIi4uXC4uXGNvbGxlY3RvclxoYW5kbGVz
XCouaCIgIiVDb25maWd1cmF0aW9uQnVpbGREaXIlXGluY2x1ZGVccHJpdmF0ZVxKYXZhU2NyaXB0
Q29yZSIKICAgICB4Y29weSAveSAvZCAiLi5cLi5cZGVidWdnZXJcKi5oIiAiJUNvbmZpZ3VyYXRp
b25CdWlsZERpciVcaW5jbHVkZVxwcml2YXRlXEphdmFTY3JpcHRDb3JlIgogICAgIHhjb3B5IC95
IC9kICIuLlwuLlxwcm9maWxlclwqLmgiICIlQ29uZmlndXJhdGlvbkJ1aWxkRGlyJVxpbmNsdWRl
XHByaXZhdGVcSmF2YVNjcmlwdENvcmUiCiAgICAgeGNvcHkgL3kgL2QgIi4uXC4uXGNyZWF0ZV9o
YXNoX3RhYmxlIiAiJUNvbmZpZ3VyYXRpb25CdWlsZERpciVcaW5jbHVkZVxwcml2YXRlXEphdmFT
Y3JpcHRDb3JlIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLnZjcHJvai9qc2MvanNjQ29tbW9uLnZzcHJvcHMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUudmNwcm9qL2pzYy9qc2NDb21tb24udnNwcm9wcwppbmRleCAzZTMyOWMz
NWE4YmI0MDRhODFlZjY5ZWNkOWQ2NDA5MjU4YWUxNzAwLi42MDRhNjZlZWZhN2M5OTFiZDE3Y2Fl
ZWQ0YjAxY2I2ZmZmNzNjMzdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUudmNwcm9qL2pzYy9qc2NDb21tb24udnNwcm9wcworKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL2pzYy9qc2NDb21tb24udnNwcm9wcwpA
QCAtNiw3ICs2LDcgQEAKIAk+CiAJPFRvb2wKIAkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKLQkJ
QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJnF1b3Q7JChDb25maWd1cmF0aW9uQnVpbGRE
aXIpXGluY2x1ZGUmcXVvdDs7JnF1b3Q7JChDb25maWd1cmF0aW9uQnVpbGREaXIpXGluY2x1ZGVc
cHJpdmF0ZSZxdW90OzsmcXVvdDskKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqXEphdmFTY3Jp
cHRDb3JlXERlcml2ZWRTb3VyY2VzXCZxdW90OzsuLi8uLi87JnF1b3Q7Li4vLi4vb3Mtd2luMzIv
JnF1b3Q7Oy4uLy4uL2Fzc2VtYmxlci87Li4vLi4vQVBJLzsuLi8uLi9wYXJzZXIvOy4uLy4uL3J1
bnRpbWUvOy4uLy4uL1ZNLzsuLi8uLi9ieXRlY29kZS87Li4vLi4vaW50ZXJwcmV0ZXIvOy4uLy4u
L3d0Zi87Li4vLi4vZGVidWdnZXIvOy4uLy4uL2J5dGVjb21waWxlci87Li4vLi4vcHJvZmlsZXI7
Li4vLi4vaml0LzsmcXVvdDskKFdlYktpdExpYnJhcmllc0RpcilcaW5jbHVkZVxwdGhyZWFkcyZx
dW90OzsmcXVvdDskKFdlYktpdExpYnJhcmllc0RpcilcaW5jbHVkZSZxdW90OyIKKwkJQWRkaXRp
b25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJnF1b3Q7JChDb25maWd1cmF0aW9uQnVpbGREaXIpXGlu
Y2x1ZGUmcXVvdDs7JnF1b3Q7JChDb25maWd1cmF0aW9uQnVpbGREaXIpXGluY2x1ZGVccHJpdmF0
ZSZxdW90OzsmcXVvdDskKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqXEphdmFTY3JpcHRDb3Jl
XERlcml2ZWRTb3VyY2VzXCZxdW90OzsuLi8uLi87JnF1b3Q7Li4vLi4vb3Mtd2luMzIvJnF1b3Q7
Oy4uLy4uL2Fzc2VtYmxlci87Li4vLi4vQVBJLzsuLi8uLi9wYXJzZXIvOy4uLy4uL2NvbGxlY3Rv
ci9oYW5kbGVzLzsuLi8uLi9ydW50aW1lLzsuLi8uLi9WTS87Li4vLi4vYnl0ZWNvZGUvOy4uLy4u
L2ludGVycHJldGVyLzsuLi8uLi93dGYvOy4uLy4uL2RlYnVnZ2VyLzsuLi8uLi9ieXRlY29tcGls
ZXIvOy4uLy4uL3Byb2ZpbGVyOy4uLy4uL2ppdC87JnF1b3Q7JChXZWJLaXRMaWJyYXJpZXNEaXIp
XGluY2x1ZGVccHRocmVhZHMmcXVvdDs7JnF1b3Q7JChXZWJLaXRMaWJyYXJpZXNEaXIpXGluY2x1
ZGUmcXVvdDsiCiAJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfX1NURF9DIgogCQlGb3JjZWRJ
bmNsdWRlRmlsZXM9IklDVVZlcnNpb24uaCIKIAkJRm9yY2VkVXNpbmdGaWxlcz0iIgpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA3NGUzYjQzOGE3YjAxMzQwMTgyNDQ2ZDNlMGZhOWRj
MGY0NjI1NDVlLi4xMzE2ZjAwZDZlMWYzNTU1OGJiZWRhMmE3MDc2OTEzNTZlZmU1NGUzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTc2LDcgKzE3Niw2IEBACiAJCTE0QkQ1QTMy
MEEzRTkxRjYwMEJBRjU5QyAvKiBKU1ZhbHVlUmVmLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0QkQ1QTJCMEEzRTkxRjYwMEJBRjU5QyAvKiBKU1Zh
bHVlUmVmLmNwcCAqLzsgfTsKIAkJMTRCRkNFNjkxMENEQjFGQzAwMzY0Q0NFIC8qIFdlYWtHQ01h
cC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTRCRkNF
NjgxMENEQjFGQzAwMzY0Q0NFIC8qIFdlYWtHQ01hcC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTE0QzUyNDJCMEY1MzU1RTkwMEJBM0QwNCAvKiBK
SVRTdHVicy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MTRBNjU4MUEwRjRFMzZGNDAwMDE1MEZEIC8qIEpJVFN0dWJzLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJMTRDODI0QUIxMkY3Qzc3RTAwOEYzNUUw
IC8qIE1hcmtlZEJsb2NrLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDE0QzgyNEFBMTJGN0M3N0UwMDhGMzVFMCAvKiBNYXJrZWRCbG9jay5jcHAgKi87
IH07CiAJCTE0QzgyNEFEMTJGN0M3ODUwMDhGMzVFMCAvKiBNYXJrZWRCbG9jay5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTRDODI0QUMxMkY3Qzc4NTAw
OEYzNUUwIC8qIE1hcmtlZEJsb2NrLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJMTRFOUQxN0IxMDdFQzQ2OTAwNEREQTIxIC8qIEpTR2xvYmFsT2Jq
ZWN0RnVuY3Rpb25zLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEJDNzU2RkM2MEUyMDMxQjIwMERFN0QxMiAvKiBKU0dsb2JhbE9iamVjdEZ1bmN0aW9u
cy5jcHAgKi87IH07CiAJCTE0RjhCQTNFMTA3RUM4ODYwMDk4OTJEQyAvKiBGYXN0TWFsbG9jLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1RTIxN0I5
MDhFN0VFQ0MwMDIzRTVGNiAvKiBGYXN0TWFsbG9jLmNwcCAqLzsgfTsKQEAgLTI4Nyw3ICsyODYs
NiBAQAogCQk5MzA1MkMzNDBGQjc5MjE5MDA0OEZEQzMgLyogUGFyc2VyQXJlbmEuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTMwNTJDMzIwRkI3OTIx
OTAwNDhGREMzIC8qIFBhcnNlckFyZW5hLmNwcCAqLzsgfTsKIAkJOTMwNTJDMzUwRkI3OTIxOTAw
NDhGREMzIC8qIFBhcnNlckFyZW5hLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA5MzA1MkMzMzBGQjc5MjE5MDA0OEZEQzMgLyogUGFyc2VyQXJlbmEuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9ICgpOyB9OyB9OwogCQk5MzJGNUJEMzA4MjJBMUM3
MDA3MzY5NzUgLyogQ29yZUZvdW5kYXRpb24uZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjU2MEE0Q0YwNEIzQjNFNzAwOEFFOTUyIC8q
IENvcmVGb3VuZGF0aW9uLmZyYW1ld29yayAqLzsgfTsKLQkJOTMyRjVCRDUwODIyQTFDNzAwNzM2
OTc1IC8qIEZvdW5kYXRpb24uZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTFGMEVCNjEwNUM4NkM2QjAwRTZERjFCIC8qIEZvdW5kYXRp
b24uZnJhbWV3b3JrICovOyB9OwogCQk5MzJGNUJENjA4MjJBMUM3MDA3MzY5NzUgLyogbGlib2Jq
Yy5keWxpYiBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDUxRjBFQzA3MDVDODZDOUEwMEU2REYxQiAvKiBsaWJvYmpjLmR5bGliICovOyB9OwogCQk5MzJG
NUJENzA4MjJBMUM3MDA3MzY5NzUgLyogbGliaWN1Y29yZS5keWxpYiBpbiBGcmFtZXdvcmtzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzMjJBMDAzMDZDMzQxRDMwMDkwNjdC
QiAvKiBsaWJpY3Vjb3JlLmR5bGliICovOyB9OwogCQk5MzJGNUJERDA4MjJBMUM3MDA3MzY5NzUg
LyoganNjLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDQ1RTEyRDg4MDZBNDlCMEYwMEU5REY4NCAvKiBqc2MuY3BwICovOyB9OwpAQCAtMzQ2LDYgKzM0
NCw3IEBACiAJCUE3MjgwQTI4MTE1NTdFMzAwMEQ1Njk1NyAvKiBKU09iamVjdFJlZlByaXZhdGUu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3OUVEQjA4
MTE1MzFDRDYwMDE5RTkxMiAvKiBKU09iamVjdFJlZlByaXZhdGUuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBNzMwQjYxMjEyNTAwNjhGMDA5RDI1
QjEgLyogU3RyaWN0RXZhbEFjdGl2YXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEE3MzBCNjEwMTI1MDA2OEYwMDlEMjVCMSAvKiBTdHJpY3RFdmFs
QWN0aXZhdGlvbi5oICovOyB9OwogCQlBNzMwQjYxMzEyNTAwNjhGMDA5RDI1QjEgLyogU3RyaWN0
RXZhbEFjdGl2YXRpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQTczMEI2MTExMjUwMDY4RjAwOUQyNUIxIC8qIFN0cmljdEV2YWxBY3RpdmF0aW9u
LmNwcCAqLzsgfTsKKwkJQTczMUIyNUExMzAwOTM4ODAwNDBBN0ZBIC8qIEZvdW5kYXRpb24uZnJh
bWV3b3JrIGluIEZyYW1ld29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTFGMEVCNjEwNUM4NkM2QjAwRTZERjFCIC8qIEZvdW5kYXRpb24uZnJhbWV3b3JrICovOyB9Owog
CQlBNzM4NjU1NDExODY5N0I0MDA1NDAyNzkgLyogU3BlY2lhbGl6ZWRUaHVua0pJVC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTczODY1NTExMTg2OTdC
NDAwNTQwMjc5IC8qIFNwZWNpYWxpemVkVGh1bmtKSVQuaCAqLzsgfTsKIAkJQTczODY1NTUxMTg2
OTdCNDAwNTQwMjc5IC8qIFRodW5rR2VuZXJhdG9ycy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzM4NjU1MjExODY5N0I0MDA1NDAyNzkgLyogVGh1
bmtHZW5lcmF0b3JzLmNwcCAqLzsgfTsKIAkJQTczODY1NTYxMTg2OTdCNDAwNTQwMjc5IC8qIFRo
dW5rR2VuZXJhdG9ycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQTczODY1NTMxMTg2OTdCNDAwNTQwMjc5IC8qIFRodW5rR2VuZXJhdG9ycy5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0zNjksNiArMzY4
LDcgQEAKIAkJQTc5MUVGMjkwRjExRTA3OTAwQUUxRjY4IC8qIEpTQnl0ZUFycmF5LmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3OTFFRjI3MEYxMUUw
NzkwMEFFMUY2OCAvKiBKU0J5dGVBcnJheS5jcHAgKi87IH07CiAJCUE3QTFGN0FDMEYyNTJCM0Mw
MEUxODRFMiAvKiBCeXRlQXJyYXkuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQTdBMUY3QUEwRjI1MkIzQzAwRTE4NEUyIC8qIEJ5dGVBcnJheS5jcHAg
Ki87IH07CiAJCUE3QTFGN0FEMEYyNTJCM0MwMEUxODRFMiAvKiBCeXRlQXJyYXkuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3QTFGN0FCMEYyNTJCM0Mw
MEUxODRFMiAvKiBCeXRlQXJyYXkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OworCQlBN0FDMjVCRDEzMDREMTQ2MDAzMzk2REUgLyogTWFya2VkQmxvY2su
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTRDODI0
QUExMkY3Qzc3RTAwOEYzNUUwIC8qIE1hcmtlZEJsb2NrLmNwcCAqLzsgfTsKIAkJQTdCNDhGNDkw
RUU4OTM2RjAwRENCREI2IC8qIEV4ZWN1dGFibGVBbGxvY2F0b3IuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdCNDhEQjYwRUU3NENGQzAwRENCREI2
IC8qIEV4ZWN1dGFibGVBbGxvY2F0b3IuY3BwICovOyB9OwogCQlBN0MxRThFNDExMkU3MkVGMDBB
MzdGOTggLyogSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBN0MxRThDODExMkU3MDFDMDBBMzdGOTggLyogSklU
UHJvcGVydHlBY2Nlc3MzMl82NC5jcHAgKi87IH07CiAJCUE3QzUzMEU0MTAyQTM4MTMwMDVCQzc0
MSAvKiBNYXJrU3RhY2tQb3NpeC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBBN0M1MzBFMzEwMkEzODEzMDA1QkM3NDEgLyogTWFya1N0YWNrUG9zaXgu
Y3BwICovOyB9OwpAQCAtMzc2LDYgKzM3NiwxMyBAQAogCQlBN0RDQjk3MzEyRTUxOTNGMDA5MTE5
NDAgLyogV3JpdGVCYXJyaWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBBN0RDQjc3OTEyRTNEOTA1MDA5MTE5NDAgLyogV3JpdGVCYXJyaWVyLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTdFMkVBNkIw
RkI0NjBDRjAwNjAxRjA2IC8qIExpdGVyYWxQYXJzZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3RTJFQTY5MEZCNDYwQ0YwMDYwMUYwNiAvKiBMaXRl
cmFsUGFyc2VyLmggKi87IH07CiAJCUE3RTJFQTZDMEZCNDYwQ0YwMDYwMUYwNiAvKiBMaXRlcmFs
UGFyc2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEE3RTJFQTZBMEZCNDYwQ0YwMDYwMUYwNiAvKiBMaXRlcmFsUGFyc2VyLmNwcCAqLzsgfTsKKwkJ
QTdFNEZDOEUxMkY4RTRDQTAwQUY0Q0Y0IC8qIEJsb2NrU3RhY2suaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3RTRGQzg2MTJGOEU0Q0EwMEFGNENGNCAv
KiBCbG9ja1N0YWNrLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKKwkJQTdFNEZDOEYxMkY4RTRDQTAwQUY0Q0Y0IC8qIEdsb2JhbC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdFNEZDODcxMkY4RTRDQTAwQUY0
Q0Y0IC8qIEdsb2JhbC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CisJCUE3RTRGQzkwMTJGOEU0Q0EwMEFGNENGNCAvKiBIYW5kbGUuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3RTRGQzg4MTJGOEU0Q0EwMEFG
NENGNCAvKiBIYW5kbGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OworCQlBN0U0RkM5MTEyRjhFNENBMDBBRjRDRjQgLyogSGFuZGxlSGVhcC5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBN0U0RkM4OTEyRjhF
NENBMDBBRjRDRjQgLyogSGFuZGxlSGVhcC5jcHAgKi87IH07CisJCUE3RTRGQzkyMTJGOEU0Q0Ew
MEFGNENGNCAvKiBIYW5kbGVIZWFwLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBBN0U0RkM4QTEyRjhFNENBMDBBRjRDRjQgLyogSGFuZGxlSGVhcC5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUE3RTRGQzk0
MTJGOEU0Q0EwMEFGNENGNCAvKiBTZW50aW5lbExpbmtlZExpc3QuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3RTRGQzhDMTJGOEU0Q0EwMEFGNENGNCAv
KiBTZW50aW5lbExpbmtlZExpc3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OworCQlBN0U0RkM5NTEyRjhFNENBMDBBRjRDRjQgLyogU2luZ2x5TGlua2Vk
TGlzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdF
NEZDOEQxMkY4RTRDQTAwQUY0Q0Y0IC8qIFNpbmdseUxpbmtlZExpc3QuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBN0YxOUVDRTExREQ0OTA5MDA5
MzFFNzAgLyogRml4ZWRBcnJheS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQTdGMTlFQ0QxMURENDkwOTAwOTMxRTcwIC8qIEZpeGVkQXJyYXkuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBN0Y5OTM1RjBG
RDczMjUxMDBBMEIyRDAgLyogSlNPTk9iamVjdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQTdGOTkzNUQwRkQ3MzI1MTAwQTBCMkQwIC8qIEpTT05PYmpl
Y3QuaCAqLzsgfTsKIAkJQTdGOTkzNjAwRkQ3MzI1MTAwQTBCMkQwIC8qIEpTT05PYmplY3QuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdGOTkzNUUw
RkQ3MzI1MTAwQTBCMkQwIC8qIEpTT05PYmplY3QuY3BwICovOyB9OwpAQCAtNTUxLDEyICs1NTgs
NiBAQAogCQlCQ0ZEOEM5MzBFRUIyRUU3MDAyODM4NDggLyogSnVtcFRhYmxlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0ZEOEM5MTBFRUIyRUU3MDAy
ODM4NDggLyogSnVtcFRhYmxlLmggKi87IH07CiAJCUMwQTI3MjYzMEU1MEEwNjMwMEU5NkUxNSAv
KiBOb3RGb3VuZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQzBBMjcyM0YwRTUwOUYxRTAwRTk2RTE1IC8qIE5vdEZvdW5kLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJREQzNzdDQkMxMjA3MkMxODAwNkEy
NTE3IC8qIEJpdG1hcC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gREQzNzdDQkIxMjA3MkMxODAwNkEyNTE3IC8qIEJpdG1hcC5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCURERTgyQUQzMTIwOUQ5NTUwMDVD
MTc1NiAvKiBHQ0hhbmRsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBEREU4MkFEMTEyMDlEOTU1MDA1QzE3NTYgLyogR0NIYW5kbGUuY3BwICovOyB9
OwotCQlEREU4MkFENDEyMDlEOTU1MDA1QzE3NTYgLyogR0NIYW5kbGUuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRERFODJBRDExMjA5RDk1NTAwNUMx
NzU2IC8qIEdDSGFuZGxlLmNwcCAqLzsgfTsKLQkJRERFODJBRDUxMjA5RDk1NTAwNUMxNzU2IC8q
IEdDSGFuZGxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IERERTgyQUQxMTIwOUQ5NTUwMDVDMTc1NiAvKiBHQ0hhbmRsZS5jcHAgKi87IH07Ci0JCURE
RTgyQUQ2MTIwOUQ5NTUwMDVDMTc1NiAvKiBHQ0hhbmRsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRERFODJBRDIxMjA5RDk1NTAwNUMxNzU2IC8qIEdD
SGFuZGxlLmggKi87IH07Ci0JCURERTgyQUQ3MTIwOUQ5NTUwMDVDMTc1NiAvKiBHQ0hhbmRsZS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBEREU4MkFE
MTEyMDlEOTU1MDA1QzE3NTYgLyogR0NIYW5kbGUuY3BwICovOyB9OwotCQlEREU4MkFEODEyMDlE
OTU1MDA1QzE3NTYgLyogR0NIYW5kbGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IERERTgyQUQyMTIwOUQ5NTUwMDVDMTc1NiAvKiBHQ0hhbmRsZS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCURERjdBQkQ0
MTFGNjBFRDIwMDEwOEUzNiAvKiBHQ0FjdGl2aXR5Q2FsbGJhY2suaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERERjdBQkQyMTFGNjBFRDIwMDEwOEUzNiAv
KiBHQ0FjdGl2aXR5Q2FsbGJhY2suaCAqLzsgfTsKIAkJRERGN0FCRDUxMUY2MEVEMjAwMTA4RTM2
IC8qIEdDQWN0aXZpdHlDYWxsYmFja0NGLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IERERjdBQkQzMTFGNjBFRDIwMDEwOEUzNiAvKiBHQ0FjdGl2aXR5
Q2FsbGJhY2tDRi5jcHAgKi87IH07CiAJCUUxMjRBOEY3MEU1NTU3NzUwMDMwOTFGMSAvKiBPcGFx
dWVKU1N0cmluZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRTEyNEE4RjUwRTU1NTc3NTAwMzA5MUYxIC8qIE9wYXF1ZUpTU3RyaW5nLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTEwNDIsNiArMTA0Mywx
MyBAQAogCQlBN0UyRUE2QTBGQjQ2MENGMDA2MDFGMDYgLyogTGl0ZXJhbFBhcnNlci5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBMaXRlcmFsUGFyc2VyLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTdFNDJDMTgwRTM5Mzg4MzAwNjVBNTQ0IC8qIEpT
U3RhdGljU2NvcGVPYmplY3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNT
dGF0aWNTY29wZU9iamVjdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBN0U0MkMx
OTBFMzkzODgzMDA2NUE1NDQgLyogSlNTdGF0aWNTY29wZU9iamVjdC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1N0YXRpY1Njb3BlT2JqZWN0LmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTdFNEZDODYxMkY4RTRDQTAwQUY0Q0Y0IC8qIEJsb2Nr
U3RhY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQmxvY2tTdGFjay5oOyBw
YXRoID0gY29sbGVjdG9yL2hhbmRsZXMvQmxvY2tTdGFjay5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlBN0U0RkM4NzEyRjhFNENBMDBBRjRDRjQgLyogR2xvYmFsLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEdsb2JhbC5oOyBwYXRoID0gY29sbGVjdG9yL2hhbmRs
ZXMvR2xvYmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3RTRGQzg4MTJGOEU0
Q0EwMEFGNENGNCAvKiBIYW5kbGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0g
SGFuZGxlLmg7IHBhdGggPSBjb2xsZWN0b3IvaGFuZGxlcy9IYW5kbGUuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJQTdFNEZDODkxMkY4RTRDQTAwQUY0Q0Y0IC8qIEhhbmRsZUhlYXAu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gSGFuZGxlSGVhcC5jcHA7
IHBhdGggPSBjb2xsZWN0b3IvaGFuZGxlcy9IYW5kbGVIZWFwLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJQTdFNEZDOEExMkY4RTRDQTAwQUY0Q0Y0IC8qIEhhbmRsZUhlYXAuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gSGFuZGxlSGVhcC5oOyBwYXRoID0gY29s
bGVjdG9yL2hhbmRsZXMvSGFuZGxlSGVhcC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlBN0U0RkM4QzEyRjhFNENBMDBBRjRDRjQgLyogU2VudGluZWxMaW5rZWRMaXN0LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFNlbnRpbmVsTGlua2VkTGlzdC5oOyBwYXRoID0g
Y29sbGVjdG9yL2hhbmRsZXMvU2VudGluZWxMaW5rZWRMaXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUE3RTRGQzhEMTJGOEU0Q0EwMEFGNENGNCAvKiBTaW5nbHlMaW5rZWRMaXN0
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFNpbmdseUxpbmtlZExpc3QuaDsg
cGF0aCA9IGNvbGxlY3Rvci9oYW5kbGVzL1NpbmdseUxpbmtlZExpc3QuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQTdGMTlFQ0QxMURENDkwOTAwOTMxRTcwIC8qIEZpeGVkQXJyYXku
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRml4ZWRBcnJheS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlBN0Y4NjkwRTBGOTU4NEExMDA1NTg2OTcgLyogQ2FjaGVk
Q2FsbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDYWNoZWRDYWxsLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3Rjg2OUVDMEY5NUMyRUMwMDU1ODY5NyAvKiBD
YWxsRnJhbWVDbG9zdXJlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENhbGxG
cmFtZUNsb3N1cmUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTExNTYsOCArMTE2
NCw2IEBACiAJCUQyMTIwMjI4MEFENDMxMEMwMEVENzlCNiAvKiBEYXRlQ29udmVyc2lvbi5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRGF0ZUNvbnZlcnNpb24uY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEMjEyMDIyOTBBRDQzMTBDMDBFRDc5QjYg
LyogRGF0ZUNvbnZlcnNpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERh
dGVDb252ZXJzaW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUREMzc3Q0JCMTIw
NzJDMTgwMDZBMjUxNyAvKiBCaXRtYXAuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gQml0bWFwLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCURERTgyQUQxMTIwOUQ5
NTUwMDVDMTc1NiAvKiBHQ0hhbmRsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBHQ0hhbmRsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCURERTgy
QUQyMTIwOUQ5NTUwMDVDMTc1NiAvKiBHQ0hhbmRsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBHQ0hhbmRsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEREY3
QUJEMjExRjYwRUQyMDAxMDhFMzYgLyogR0NBY3Rpdml0eUNhbGxiYWNrLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdDQWN0aXZpdHlDYWxsYmFjay5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlEREY3QUJEMzExRjYwRUQyMDAxMDhFMzYgLyogR0NBY3Rpdml0eUNh
bGxiYWNrQ0YuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR0NBY3Rp
dml0eUNhbGxiYWNrQ0YuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMTFENTE3
NTBCMkU3OThEMDA1NkMxODggLyogU3RyaW5nRXh0cmFzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFN0cmluZ0V4dHJhcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtMTI0OCw5ICsxMjU0LDkgQEAKIAkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CiAJ
CQlmaWxlcyA9ICgKIAkJCQk5MzJGNUJEMzA4MjJBMUM3MDA3MzY5NzUgLyogQ29yZUZvdW5kYXRp
b24uZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8sCi0JCQkJOTMyRjVCRDUwODIyQTFDNzAwNzM2
OTc1IC8qIEZvdW5kYXRpb24uZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8sCiAJCQkJOTMyRjVC
RDcwODIyQTFDNzAwNzM2OTc1IC8qIGxpYmljdWNvcmUuZHlsaWIgaW4gRnJhbWV3b3JrcyAqLywK
IAkJCQk5MzJGNUJENjA4MjJBMUM3MDA3MzY5NzUgLyogbGlib2JqYy5keWxpYiBpbiBGcmFtZXdv
cmtzICovLAorCQkJCUE3MzFCMjVBMTMwMDkzODgwMDQwQTdGQSAvKiBGb3VuZGF0aW9uLmZyYW1l
d29yayBpbiBGcmFtZXdvcmtzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9z
dHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMTMwMyw2ICsxMzA5LDcgQEAKIAkJCQk5Njg4Q0Ix
MjBFRDEyQjRFMDAxRDY0OUYgLyogYXNzZW1ibGVyICovLAogCQkJCTk2OUEwNzhGMEVEMUQzQUUw
MEYxRjY4MSAvKiBieXRlY29kZSAqLywKIAkJCQk3RTM5RDgxRDBFQzM4RUZBMDAzQUYxMUEgLyog
Ynl0ZWNvbXBpbGVyICovLAorCQkJCUE3RTRGQzgzMTJGOEU0QTMwMEFGNENGNCAvKiBjb2xsZWN0
b3IgKi8sCiAJCQkJMTQ4MERCOUEwRERDMjIzMTAwM0NGREYyIC8qIGRlYnVnZ2VyICovLAogCQkJ
CTE0MjlENzdBMEVEMjBENzMwMEI4OTYxOSAvKiBpbnRlcnByZXRlciAqLywKIAkJCQkxNDI5RDky
QzBFRDIyRDcwMDBCODk2MTkgLyogaml0ICovLApAQCAtMTczMiw4ICsxNzM5LDYgQEAKIAkJCQlG
NjkyQTg1RDAyNTU1OTdEMDFGRjYwRjcgLyogRnVuY3Rpb25Qcm90b3R5cGUuaCAqLywKIAkJCQlE
REY3QUJEMjExRjYwRUQyMDAxMDhFMzYgLyogR0NBY3Rpdml0eUNhbGxiYWNrLmggKi8sCiAJCQkJ
RERGN0FCRDMxMUY2MEVEMjAwMTA4RTM2IC8qIEdDQWN0aXZpdHlDYWxsYmFja0NGLmNwcCAqLywK
LQkJCQlEREU4MkFEMTEyMDlEOTU1MDA1QzE3NTYgLyogR0NIYW5kbGUuY3BwICovLAotCQkJCURE
RTgyQUQyMTIwOUQ5NTUwMDVDMTc1NiAvKiBHQ0hhbmRsZS5oICovLAogCQkJCUJDMDJFOUI4MEUx
ODQ1NDUwMDBGOTI5NyAvKiBHZXR0ZXJTZXR0ZXIuY3BwICovLAogCQkJCUJDMzM3QkRFMEUxQUYw
QjgwMDc2OTE4QSAvKiBHZXR0ZXJTZXR0ZXIuaCAqLywKIAkJCQlCQzI1N0RFRDBFMUY1MkVEMDAx
NkI2QzkgLyogR2xvYmFsRXZhbEZ1bmN0aW9uLmNwcCAqLywKQEAgLTIwNDcsNiArMjA1MiwyOCBA
QAogCQkJbmFtZSA9IGFwaTsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CiAJCX07CisJCUE3
RTRGQzgzMTJGOEU0QTMwMEFGNENGNCAvKiBjb2xsZWN0b3IgKi8gPSB7CisJCQlpc2EgPSBQQlhH
cm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCUE3RTRGQzg1MTJGOEU0QjEwMEFGNENGNCAvKiBo
YW5kbGVzICovLAorCQkJKTsKKwkJCW5hbWUgPSBjb2xsZWN0b3I7CisJCQlzb3VyY2VUcmVlID0g
Ijxncm91cD4iOworCQl9OworCQlBN0U0RkM4NTEyRjhFNEIxMDBBRjRDRjQgLyogaGFuZGxlcyAq
LyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJQTdFNEZDODYx
MkY4RTRDQTAwQUY0Q0Y0IC8qIEJsb2NrU3RhY2suaCAqLywKKwkJCQlBN0U0RkM4NzEyRjhFNENB
MDBBRjRDRjQgLyogR2xvYmFsLmggKi8sCisJCQkJQTdFNEZDODgxMkY4RTRDQTAwQUY0Q0Y0IC8q
IEhhbmRsZS5oICovLAorCQkJCUE3RTRGQzg5MTJGOEU0Q0EwMEFGNENGNCAvKiBIYW5kbGVIZWFw
LmNwcCAqLywKKwkJCQlBN0U0RkM4QTEyRjhFNENBMDBBRjRDRjQgLyogSGFuZGxlSGVhcC5oICov
LAorCQkJCUE3RTRGQzhDMTJGOEU0Q0EwMEFGNENGNCAvKiBTZW50aW5lbExpbmtlZExpc3QuaCAq
LywKKwkJCQlBN0U0RkM4RDEyRjhFNENBMDBBRjRDRjQgLyogU2luZ2x5TGlua2VkTGlzdC5oICov
LAorCQkJKTsKKwkJCW5hbWUgPSBoYW5kbGVzOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsK
KwkJfTsKIAkJRTE5NTY3OEQwOUU3Q0YxMjAwQjg5RDEzIC8qIHVuaWNvZGUgKi8gPSB7CiAJCQlp
c2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKApAQCAtMjA4Miw3ICsyMTA5LDYgQEAKIAkJ
CQkxNDQwMDc1NzBBNTM3MEQyMDAwNUYwNjEgLyogSlNOb2RlTGlzdC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMTQ0MDA1Q0MwQTUzMzhGODAwMDVGMDYxIC8qIE5vZGUuaCBpbiBIZWFkZXJzICovLAog
CQkJCTE0NDAwNzRBMEE1MzZDQzIwMDA1RjA2MSAvKiBOb2RlTGlzdC5oIGluIEhlYWRlcnMgKi8s
Ci0JCQkJRERFODJBRDYxMjA5RDk1NTAwNUMxNzU2IC8qIEdDSGFuZGxlLmggaW4gSGVhZGVycyAq
LywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJ
fTsKQEAgLTIxNjUsNyArMjE5MSw2IEBACiAJCQkJQkMxOEM0MDQwRTE2RjVDRDAwQjM0NDYwIC8q
IEZ1bmN0aW9uQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDA1MEUxNkY1
Q0QwMEIzNDQ2MCAvKiBGdW5jdGlvblByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRERG
N0FCRDQxMUY2MEVEMjAwMTA4RTM2IC8qIEdDQWN0aXZpdHlDYWxsYmFjay5oIGluIEhlYWRlcnMg
Ki8sCi0JCQkJRERFODJBRDgxMjA5RDk1NTAwNUMxNzU2IC8qIEdDSGFuZGxlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlCQzE4QzQwNjBFMTZGNUNEMDBCMzQ0NjAgLyogR2V0UHRyLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlCQzI1N0RGMDBFMUY1MkVEMDAxNkI2QzkgLyogR2xvYmFsRXZhbEZ1bmN0aW9u
LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzQwODBFMTZGNUNEMDBCMzQ0NjAgLyogSGFzaENv
dW50ZWRTZXQuaCBpbiBIZWFkZXJzICovLApAQCAtMjQxNSw2ICsyNDQwLDEyIEBACiAJCQkJRTRE
OENFRkIxMkZDNDM5NjAwQkM5RjVBIC8qIEJsb29tRmlsdGVyLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk5Nzk0MUE1QTEzMDI5QUNDMDA0QTM0NDcgLyogT1NSYW5kb21Tb3VyY2UuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTk3OTQxQTdGMTMwMkEwOTgwMDRBMzQ0NyAvKiBDcnlwdG9ncmFwaGljYWxseVJh
bmRvbU51bWJlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTdFNEZDOEUxMkY4RTRDQTAwQUY0Q0Y0
IC8qIEJsb2NrU3RhY2suaCBpbiBIZWFkZXJzICovLAorCQkJCUE3RTRGQzhGMTJGOEU0Q0EwMEFG
NENGNCAvKiBHbG9iYWwuaCBpbiBIZWFkZXJzICovLAorCQkJCUE3RTRGQzkwMTJGOEU0Q0EwMEFG
NENGNCAvKiBIYW5kbGUuaCBpbiBIZWFkZXJzICovLAorCQkJCUE3RTRGQzkyMTJGOEU0Q0EwMEFG
NENGNCAvKiBIYW5kbGVIZWFwLmggaW4gSGVhZGVycyAqLywKKwkJCQlBN0U0RkM5NDEyRjhFNENB
MDBBRjRDRjQgLyogU2VudGluZWxMaW5rZWRMaXN0LmggaW4gSGVhZGVycyAqLywKKwkJCQlBN0U0
RkM5NTEyRjhFNENBMDBBRjRDRjQgLyogU2luZ2x5TGlua2VkTGlzdC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07
CkBAIC0yNjc2LDcgKzI3MDcsNiBAQAogCQkJCTE0MTIxMTM0MEE0ODc5NTgwMDQ4MDI1NSAvKiBt
aW5pZG9tLmMgaW4gU291cmNlcyAqLywKIAkJCQkxNDQwMDYzRjBBNTM1OThBMDAwNUYwNjEgLyog
Tm9kZS5jIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQ0MDA3NEIwQTUzNkNDMjAwMDVGMDYxIC8qIE5v
ZGVMaXN0LmMgaW4gU291cmNlcyAqLywKLQkJCQlEREU4MkFENTEyMDlEOTU1MDA1QzE3NTYgLyog
R0NIYW5kbGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1l
bnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC0yNjg1LDcgKzI3MTUsNiBAQAogCQkJYnVp
bGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKIAkJCWZpbGVzID0gKAogCQkJCTE0NDBGNjEwMEE0
Rjg1NjcwMDA1RjA2MSAvKiB0ZXN0YXBpLmMgaW4gU291cmNlcyAqLywKLQkJCQlEREU4MkFENDEy
MDlEOTU1MDA1QzE3NTYgLyogR0NIYW5kbGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJ
cnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC0yNzM5LDcg
KzI3NjgsNiBAQAogCQkJCTE0N0YzOUNCMTA3RUMzNzYwMDQyN0E0OCAvKiBGdW5jdGlvbkNvbnN0
cnVjdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0N0YzOUNDMTA3RUMzNzYwMDQyN0E0OCAv
KiBGdW5jdGlvblByb3RvdHlwZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlEREY3QUJENTExRjYw
RUQyMDAxMDhFMzYgLyogR0NBY3Rpdml0eUNhbGxiYWNrQ0YuY3BwIGluIFNvdXJjZXMgKi8sCi0J
CQkJRERFODJBRDcxMjA5RDk1NTAwNUMxNzU2IC8qIEdDSGFuZGxlLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTE0MjgwODU1MTA3RUMwRTcwMDEzRTdCMiAvKiBHZXR0ZXJTZXR0ZXIuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMTQ3RjM5Q0QxMDdFQzM3NjAwNDI3QTQ4IC8qIEdsb2JhbEV2YWxGdW5j
dGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk2NURGQzkzMzA4RUExNzNBMDBGNzMwMEIgLyog
SGFzaFRhYmxlLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMjg3OCw5ICsyOTA2LDEwIEBACiAJCQkJ
ODY3MDRCODkxMkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJQYXR0ZXJuLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTg2NzA0QjQyMTJEQjhBODEwMEE5RkU3QiAvKiBZYXJyU3ludGF4Q2hlY2tlci5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlFNDlEQzE2QjEyRUYyOTNFMDAxODRBMUYgLyogU291cmNlUHJv
dmlkZXJDYWNoZS5jcHAgaW4gU291cmNlcyAqLywKLQkJCQkxNEM4MjRBQjEyRjdDNzdFMDA4RjM1
RTAgLyogTWFya2VkQmxvY2suY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTc5NDFBNTcxMzAyOUFB
QjAwNEEzNDQ3IC8qIE9TUmFuZG9tU291cmNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTk3OTQx
QTdFMTMwMkEwOTgwMDRBMzQ0NyAvKiBDcnlwdG9ncmFwaGljYWxseVJhbmRvbU51bWJlci5jcHAg
aW4gU291cmNlcyAqLywKKwkJCQlBN0U0RkM5MTEyRjhFNENBMDBBRjRDRjQgLyogSGFuZGxlSGVh
cC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlBN0FDMjVCRDEzMDREMTQ2MDAzMzk2REUgLyogTWFy
a2VkQmxvY2suY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1l
bnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC0yODg5LDcgKzI5MTgsNiBAQAogCQkJYnVp
bGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKIAkJCWZpbGVzID0gKAogCQkJCTkzMkY1QkREMDgy
MkExQzcwMDczNjk3NSAvKiBqc2MuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJRERFODJBRDMxMjA5
RDk1NTAwNUMxNzU2IC8qIEdDSGFuZGxlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTk3MkE0ODVG
MTI2NjFFMDgwMEY0NTE0RiAvKiBVUkxDaGFyYWN0ZXJUeXBlcy5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk5NzJBNDg3NzEyNjYyNTZGMDBGNDUxNEYgLyogVVJMRXNjYXBlLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9jb2xsZWN0b3Iv
aGFuZGxlcy9CbG9ja1N0YWNrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvY29sbGVjdG9yL2hh
bmRsZXMvQmxvY2tTdGFjay5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVmNzA1OWZlZGI2ZTZhOTNmZGZiOGM2ZDFi
ZjIzOGZhOTkyYjA4ODkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Y29sbGVjdG9yL2hhbmRsZXMvQmxvY2tTdGFjay5oCkBAIC0wLDAgKzEsOTcgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaWZuZGVmIEJsb2NrU3RhY2tfaAorI2RlZmluZSBCbG9ja1N0YWNrX2gKKworI2luY2x1
ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3Bh
Y2UgSlNDIHsKKworY2xhc3MgSGVhcE9iamVjdDsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNs
YXNzIEJsb2NrU3RhY2sgeworcHVibGljOgorICAgIHN0YXRpYyBjb25zdCBzaXplX3QgYmxvY2tT
aXplID0gNDA5NjsKKyAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IGJsb2NrTGVuZ3RoID0gYmxvY2tT
aXplIC8gc2l6ZW9mKFQpOworCisgICAgQmxvY2tTdGFjaygpOworICAgIH5CbG9ja1N0YWNrKCk7
CisKKyAgICBUKiBncm93KCk7CisgICAgdm9pZCBzaHJpbmsoVCopOworCisgICAgY29uc3QgVmVj
dG9yPFQqPiYgYmxvY2tzKCk7CisKK3ByaXZhdGU6CisgICAgVmVjdG9yPFQqPiBtX2Jsb2NrczsK
KyAgICBUKiBtX3NwYXJlQmxvY2s7IC8vIFVzZWQgdG8gYXZvaWQgdGhyYXNoIGF0IGJsb2NrIGJv
dW5kYXJpZXMuCit9OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gQmxvY2tTdGFjazxUPjo6Qmxv
Y2tTdGFjaygpCisgICAgOiBtX3NwYXJlQmxvY2soMCkKK3sKK30KKwordGVtcGxhdGUgPHR5cGVu
YW1lIFQ+IEJsb2NrU3RhY2s8VD46On5CbG9ja1N0YWNrKCkKK3sKKyAgICBpZiAobV9zcGFyZUJs
b2NrKQorICAgICAgICBmcmVlKG1fc3BhcmVCbG9jayk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBtX2Jsb2Nrcy5zaXplKCk7ICsraSkKKyAgICAgICAgZnJlZShtX2Jsb2Nrc1tpXSk7Cit9
CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPiBpbmxpbmUgY29uc3QgVmVjdG9yPFQqPiYgQmxvY2tT
dGFjazxUPjo6YmxvY2tzKCkKK3sKKyAgICByZXR1cm4gbV9ibG9ja3M7Cit9CisKK3RlbXBsYXRl
IDx0eXBlbmFtZSBUPiBUKiBCbG9ja1N0YWNrPFQ+Ojpncm93KCkKK3sKKyAgICBUKiBibG9jayA9
IG1fc3BhcmVCbG9jaworICAgICAgICA/IG1fc3BhcmVCbG9jaworICAgICAgICA6IHN0YXRpY19j
YXN0PFQqPihtYWxsb2MoYmxvY2tTaXplKSk7CisgICAgbV9zcGFyZUJsb2NrID0gMDsKKworICAg
IG1fYmxvY2tzLmFwcGVuZChibG9jayk7CisgICAgcmV0dXJuIGJsb2NrOworfQorCit0ZW1wbGF0
ZSA8dHlwZW5hbWUgVD4gdm9pZCBCbG9ja1N0YWNrPFQ+OjpzaHJpbmsoVCogbmV3RW5kKQorewor
ICAgIEFTU0VSVChuZXdFbmQgIT0gbV9ibG9ja3MubGFzdCgpICsgYmxvY2tMZW5ndGgpOworICAg
IG1fc3BhcmVCbG9jayA9IG1fYmxvY2tzLmxhc3QoKTsKKyAgICBtX2Jsb2Nrcy5yZW1vdmVMYXN0
KCk7CisKKyAgICB3aGlsZSAobV9ibG9ja3MubGFzdCgpICsgYmxvY2tMZW5ndGggIT0gbmV3RW5k
KSB7CisgICAgICAgIGZyZWUobV9ibG9ja3MubGFzdCgpKTsKKyAgICAgICAgbV9ibG9ja3MucmVt
b3ZlTGFzdCgpOworICAgIH0KK30KKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9jb2xsZWN0b3IvaGFuZGxlcy9HbG9iYWwuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9jb2xsZWN0b3IvaGFuZGxlcy9HbG9iYWwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41NzFmZTMxMjEz
NzY5NDJjNWFhZjI1N2I3ZWI4ZmMyMGFiMGUxYTZiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2NvbGxlY3Rvci9oYW5kbGVzL0dsb2JhbC5oCkBAIC0wLDAgKzEsMTU5
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBHbG9iYWxfaAorI2RlZmluZSBHbG9iYWxfaAorCisj
aW5jbHVkZSAiQXNzZXJ0aW9ucy5oIgorI2luY2x1ZGUgIkhhbmRsZS5oIgorI2luY2x1ZGUgIkhh
bmRsZUhlYXAuaCIKKyNpbmNsdWRlICJKU0dsb2JhbERhdGEuaCIKKworbmFtZXNwYWNlIEpTQyB7
CisKKy8qCisgICAgQSBHbG9iYWwgaXMgYSBwZXJzaXN0ZW50IGhhbmRsZSB3aG9zZSBsaWZldGlt
ZSBpcyBub3QgbGltaXRlZCB0byBhbnkgZ2l2ZW4KKyAgICBzY29wZS4gVXNlIEdsb2JhbHMgZm9y
IGRhdGEgbWVtYmVycyBhbmQgZ2xvYmFsIHZhcmlhYmxlcy4KKyovCisKK3RlbXBsYXRlIDx0eXBl
bmFtZSBUPiBjbGFzcyBHbG9iYWwgOiBwdWJsaWMgSGFuZGxlPFQ+IHsKK3B1YmxpYzoKKyAgICB0
eXBlZGVmIHR5cGVuYW1lIEhhbmRsZTxUPjo6RXh0ZXJuYWxUeXBlIEV4dGVybmFsVHlwZTsKKyAg
ICBHbG9iYWwoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBFeHRlcm5hbFR5cGUgcHRyID0gRXh0
ZXJuYWxUeXBlKCkpCisgICAgICAgIDogSGFuZGxlPFQ+KGdsb2JhbERhdGEuYWxsb2NhdGVHbG9i
YWxIYW5kbGUoKSkKKyAgICB7CisgICAgICAgIGludGVybmFsU2V0KHB0cik7CisgICAgfQorCisg
ICAgR2xvYmFsKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSGFuZGxlPFQ+IGhhbmRsZSkKKyAg
ICAgICAgOiBIYW5kbGU8VD4oZ2xvYmFsRGF0YS5hbGxvY2F0ZUdsb2JhbEhhbmRsZSgpKQorICAg
IHsKKyAgICAgICAgaW50ZXJuYWxTZXQoaGFuZGxlLmdldCgpKTsKKyAgICB9CisgICAgCisgICAg
ZW51bSBFbXB0eVZhbHVlVGFnIHsgRW1wdHlWYWx1ZSB9OworICAgIEdsb2JhbChFbXB0eVZhbHVl
VGFnKQorICAgICAgICA6IEhhbmRsZTxUPigwLCBIYW5kbGVCYXNlOjpEb250TnVsbENoZWNrU2xv
dCkKKyAgICB7CisgICAgfQorCisgICAgfkdsb2JhbCgpCisgICAgeworICAgICAgICBIYW5kbGVT
bG90IHNsb3QgPSB0aGlzLT5zbG90KCk7CisgICAgICAgIGlmIChzbG90KQorICAgICAgICAgICAg
SGFuZGxlSGVhcDo6aGVhcEZvcihzbG90KS0+ZGVhbGxvY2F0ZShzbG90KTsKKyAgICB9CisKKyAg
ICB2b2lkIHNldChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEV4dGVybmFsVHlwZSB2YWx1ZSkK
KyAgICB7CisgICAgICAgIGlmICghdmFsdWUpIHsKKyAgICAgICAgICAgIGNsZWFyKCk7CisgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgaWYgKCF0aGlzLT5zbG90KCkpCisg
ICAgICAgICAgICB0aGlzLT5zZXRTbG90KGdsb2JhbERhdGEuYWxsb2NhdGVHbG9iYWxIYW5kbGUo
KSk7CisgICAgICAgIGludGVybmFsU2V0KHZhbHVlKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZSA8
dHlwZW5hbWUgVT4gR2xvYmFsJiBvcGVyYXRvcj0oY29uc3QgR2xvYmFsPFU+JiBoYW5kbGUpCisg
ICAgeworICAgICAgICBpZiAoaGFuZGxlLnNsb3QoKSkgeworICAgICAgICAgICAgaWYgKCF0aGlz
LT5zbG90KCkpCisgICAgICAgICAgICAgICAgdGhpcy0+c2V0U2xvdChIYW5kbGVIZWFwOjpoZWFw
Rm9yKGhhbmRsZS5zbG90KCkpLT5hbGxvY2F0ZSgpKTsKKyAgICAgICAgICAgIGludGVybmFsU2V0
KGhhbmRsZS5nZXQoKSk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgY2xlYXIoKTsKKyAg
ICAgICAgCisgICAgICAgIHJldHVybiAqdGhpczsKKyAgICB9CisgICAgCisgICAgR2xvYmFsJiBv
cGVyYXRvcj0oY29uc3QgR2xvYmFsJiBoYW5kbGUpCisgICAgeworICAgICAgICBpZiAoaGFuZGxl
LnNsb3QoKSkgeworICAgICAgICAgICAgaWYgKCF0aGlzLT5zbG90KCkpCisgICAgICAgICAgICAg
ICAgdGhpcy0+c2V0U2xvdChIYW5kbGVIZWFwOjpoZWFwRm9yKGhhbmRsZS5zbG90KCkpLT5hbGxv
Y2F0ZSgpKTsKKyAgICAgICAgICAgIGludGVybmFsU2V0KGhhbmRsZS5nZXQoKSk7CisgICAgICAg
IH0gZWxzZQorICAgICAgICAgICAgY2xlYXIoKTsKKyAgICAgICAgCisgICAgICAgIHJldHVybiAq
dGhpczsKKyAgICB9CisKKyAgICB2b2lkIGNsZWFyKCkKKyAgICB7CisgICAgICAgIGlmICh0aGlz
LT5zbG90KCkpCisgICAgICAgICAgICBpbnRlcm5hbFNldChFeHRlcm5hbFR5cGUoKSk7CisgICAg
fQorCisgICAgZW51bSBIYXNoVGFibGVEZWxldGVkVmFsdWVUeXBlIHsgSGFzaFRhYmxlRGVsZXRl
ZFZhbHVlIH07CisgICAgY29uc3Qgc3RhdGljIGludHB0cl90IEhhc2hUYWJsZURlbGV0ZWRWYWx1
ZVRhZyA9IDB4MTsKKyAgICBHbG9iYWwoSGFzaFRhYmxlRGVsZXRlZFZhbHVlVHlwZSkKKyAgICAg
ICAgOiBIYW5kbGU8VD4ocmVpbnRlcnByZXRfY2FzdDxIYW5kbGVTbG90PihIYXNoVGFibGVEZWxl
dGVkVmFsdWVUYWcpKQorICAgIHsKKyAgICB9CisgICAgYm9vbCBpc0hhc2hUYWJsZURlbGV0ZWRW
YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIHNsb3QoKSA9PSByZWludGVycHJldF9jYXN0PEhhbmRsZVNs
b3Q+KEhhc2hUYWJsZURlbGV0ZWRWYWx1ZVRhZyk7IH0KKworICAgIHRlbXBsYXRlIDx0eXBlbmFt
ZSBVPiBHbG9iYWwoY29uc3QgR2xvYmFsPFU+JiBvdGhlcikKKyAgICAgICAgOiBIYW5kbGU8VD4o
b3RoZXIuc2xvdCgpID8gSGFuZGxlSGVhcDo6aGVhcEZvcihvdGhlci5zbG90KCkpLT5hbGxvY2F0
ZSgpIDogMCwgSGFuZGxlPFQ+OjpEb250TnVsbENoZWNrU2xvdCkKKyAgICB7CisgICAgICAgIGlm
IChvdGhlci5zbG90KCkpCisgICAgICAgICAgICBpbnRlcm5hbFNldChvdGhlci5nZXQoKSk7Cisg
ICAgfQorICAgIAorICAgIEdsb2JhbChjb25zdCBHbG9iYWwmIG90aGVyKQorICAgICAgICA6IEhh
bmRsZTxUPihvdGhlci5zbG90KCkgPyBIYW5kbGVIZWFwOjpoZWFwRm9yKG90aGVyLnNsb3QoKSkt
PmFsbG9jYXRlKCkgOiAwLCBIYW5kbGU8VD46OkRvbnROdWxsQ2hlY2tTbG90KQorICAgIHsKKyAg
ICAgICAgaWYgKG90aGVyLnNsb3QoKSkKKyAgICAgICAgICAgIGludGVybmFsU2V0KG90aGVyLmdl
dCgpKTsKKyAgICB9CisKK3Byb3RlY3RlZDoKKyAgICB2b2lkIGludGVybmFsU2V0KEV4dGVybmFs
VHlwZSB2YWx1ZSkKKyAgICB7CisgICAgICAgIEpTVmFsdWUgbmV3VmFsdWUoSGFuZGxlVHlwZXM8
VD46OnRvSlNWYWx1ZSh2YWx1ZSkpOworICAgICAgICBIYW5kbGVTbG90IHNsb3QgPSB0aGlzLT5z
bG90KCk7CisgICAgICAgIEFTU0VSVChzbG90KTsKKyAgICAgICAgSGFuZGxlSGVhcDo6aGVhcEZv
cihzbG90KS0+d3JpdGVCYXJyaWVyKHNsb3QsIG5ld1ZhbHVlKTsKKyAgICAgICAgKnNsb3QgPSBu
ZXdWYWx1ZTsKKyAgICB9CisKKyAgICB1c2luZyBIYW5kbGU8VD46OnNsb3Q7CisgICAgCit9Owor
Cit9CisKK25hbWVzcGFjZSBXVEYgeworCit0ZW1wbGF0ZTx0eXBlbmFtZSBQPiBzdHJ1Y3QgSGFz
aFRyYWl0czxKU0M6Okdsb2JhbDxQPiA+IDogR2VuZXJpY0hhc2hUcmFpdHM8SlNDOjpHbG9iYWw8
UD4gPiB7CisgICAgc3RhdGljIGNvbnN0IGJvb2wgZW1wdHlWYWx1ZUlzWmVybyA9IHRydWU7Cisg
ICAgc3RhdGljIEpTQzo6R2xvYmFsPFA+IGVtcHR5VmFsdWUoKSB7IHJldHVybiBKU0M6Okdsb2Jh
bDxQPihKU0M6Okdsb2JhbDxQPjo6RW1wdHlWYWx1ZSk7IH0KKyAgICBzdGF0aWMgdm9pZCBjb25z
dHJ1Y3REZWxldGVkVmFsdWUoSlNDOjpHbG9iYWw8UD4mIHNsb3QpIHsgbmV3ICgmc2xvdCkgSlND
OjpHbG9iYWw8UD4oSlNDOjpHbG9iYWw8UD46Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZSk7IH0KKyAg
ICBzdGF0aWMgYm9vbCBpc0RlbGV0ZWRWYWx1ZShjb25zdCBKU0M6Okdsb2JhbDxQPiYgdmFsdWUp
IHsgcmV0dXJuIHZhbHVlLmlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCk7IH0KK307CisKK30KKwor
I2VuZGlmIC8vIEdsb2JhbF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvY29s
bGVjdG9yL2hhbmRsZXMvSGFuZGxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvY29sbGVjdG9y
L2hhbmRsZXMvSGFuZGxlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOThjNjBlY2JjYzRiZWE4NjUzMjg3ZGU4Njdj
NWE4MTMyNzU4YmI3NwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9j
b2xsZWN0b3IvaGFuZGxlcy9IYW5kbGUuaApAQCAtMCwwICsxLDE4OSBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpZm5kZWYgSGFuZGxlX2gKKyNkZWZpbmUgSGFuZGxlX2gKKworI2luY2x1ZGUgIldyaXRlQmFy
cmllci5oIgorCisjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KKworbmFtZXNwYWNlIEpTQyB7
CisKKy8qCisgICAgQSBIYW5kbGUgaXMgYSBzbWFydCBwb2ludGVyIHRoYXQgdXBkYXRlcyBhdXRv
bWF0aWNhbGx5IHdoZW4gdGhlIGdhcmJhZ2UKKyAgICBjb2xsZWN0b3IgbW92ZXMgdGhlIG9iamVj
dCB0byB3aGljaCBpdCBwb2ludHMuCisKKyAgICBUaGUgYmFzZSBIYW5kbGUgY2xhc3MgcmVwcmVz
ZW50cyBhIHRlbXBvcmFyeSByZWZlcmVuY2UgdG8gYSBwb2ludGVyIHdob3NlCisgICAgbGlmZXRp
bWUgaXMgZ3VhcmFudGVlZCBieSBzb21ldGhpbmcgZWxzZS4KKyovCisKK3RlbXBsYXRlIDxjbGFz
cyBUPiBjbGFzcyBIYW5kbGU7CisKKy8vIENyZWF0aW5nIGEgSlNWYWx1ZSBIYW5kbGUgaXMgaW52
YWxpZAordGVtcGxhdGUgPD4gY2xhc3MgSGFuZGxlPEpTVmFsdWU+OworCitjbGFzcyBIYW5kbGVC
YXNlIHsKKyAgICBmcmllbmQgY2xhc3MgSGFuZGxlSGVhcDsKKworcHVibGljOgorICAgIGJvb2wg
b3BlcmF0b3IhKCkgY29uc3QgeyByZXR1cm4gaXNFbXB0eSgpOyB9CisKKyAgICAvLyBUaGlzIGNv
bnZlcnNpb24gb3BlcmF0b3IgYWxsb3dzIGltcGxpY2l0IGNvbnZlcnNpb24gdG8gYm9vbCBidXQg
bm90IHRvIG90aGVyIGludGVnZXIgdHlwZXMuCisgICAgdHlwZWRlZiBKU1ZhbHVlIChIYW5kbGVC
YXNlOjoqVW5zcGVjaWZpZWRCb29sVHlwZSk7CisgICAgb3BlcmF0b3IgVW5zcGVjaWZpZWRCb29s
VHlwZSooKSBjb25zdCB7IHJldHVybiAobV9zbG90ICYmICptX3Nsb3QpID8gcmVpbnRlcnByZXRf
Y2FzdDxVbnNwZWNpZmllZEJvb2xUeXBlKj4oMSkgOiAwOyB9CisKKyAgICBib29sIGlzRW1wdHko
KSBjb25zdCB7IHJldHVybiAhbV9zbG90IHx8ICEqbV9zbG90OyB9CisKK3Byb3RlY3RlZDoKKyAg
ICBIYW5kbGVCYXNlKEhhbmRsZVNsb3Qgc2xvdCkKKyAgICAgICAgOiBtX3Nsb3Qoc2xvdCkKKyAg
ICB7CisgICAgICAgIEFTU0VSVChzbG90KTsKKyAgICB9CisKKyAgICBlbnVtIERvbnROdWxsQ2hl
Y2tTbG90VGFnIHsgRG9udE51bGxDaGVja1Nsb3QgfTsKKyAgICBIYW5kbGVCYXNlKEhhbmRsZVNs
b3Qgc2xvdCwgRG9udE51bGxDaGVja1Nsb3RUYWcpCisgICAgICAgIDogbV9zbG90KHNsb3QpCisg
ICAgeworICAgIH0KKyAgICAKKyAgICBIYW5kbGVTbG90IHNsb3QoKSBjb25zdCB7IHJldHVybiBt
X3Nsb3Q7IH0KKyAgICB2b2lkIGludmFsaWRhdGUoKQorICAgIHsKKyAgICAgICAgLy8gSXQgaXMg
dW5zYWZlIHRvIHVzZSBhIGhhbmRsZSBhZnRlciBpbnZhbGlkYXRpbmcgaXQuCisgICAgICAgIG1f
c2xvdCA9IDA7CisgICAgfQorCisgICAgLy8gbmVlZGVkIGJ5IEdsb2JhbDw+OjpvcGVyYXRvcj0g
YW5kIEdsb2JhbDw+OjpzZXQgaWYgaXQncyBhbiBlbXB0eSBoYW5kbGUKKyAgICB2b2lkIHNldFNs
b3QoSGFuZGxlU2xvdCBzbG90KQorICAgIHsKKyAgICAgICAgQVNTRVJUKCFtX3Nsb3QpOworICAg
ICAgICBBU1NFUlQoc2xvdCk7CisgICAgICAgIG1fc2xvdCA9IHNsb3Q7CisgICAgfQorCitwcml2
YXRlOgorICAgIEhhbmRsZVNsb3QgbV9zbG90OworfTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+
IHN0cnVjdCBIYW5kbGVUeXBlcyB7CisgICAgdHlwZWRlZiBUKiBFeHRlcm5hbFR5cGU7CisgICAg
c3RhdGljIEV4dGVybmFsVHlwZSBnZXRGcm9tU2xvdChIYW5kbGVTbG90IHNsb3QpIHsgcmV0dXJu
IChzbG90ICYmICpzbG90KSA/IHJlaW50ZXJwcmV0X2Nhc3Q8RXh0ZXJuYWxUeXBlPihzbG90LT5h
c0NlbGwoKSkgOiAwOyB9CisgICAgc3RhdGljIEpTVmFsdWUgdG9KU1ZhbHVlKFQqIGNlbGwpIHsg
cmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8SlNDZWxsKj4oY2VsbCk7IH0KKyAgICB0ZW1wbGF0ZSA8
dHlwZW5hbWUgVT4gc3RhdGljIHZvaWQgdmFsaWRhdGVVcGNhc3QoKSB7IFQqIHRlbXA7IHRlbXAg
PSAoVSopMDsgfQorfTsKKwordGVtcGxhdGUgPD4gc3RydWN0IEhhbmRsZVR5cGVzPFVua25vd24+
IHsKKyAgICB0eXBlZGVmIEpTVmFsdWUgRXh0ZXJuYWxUeXBlOworICAgIHN0YXRpYyBFeHRlcm5h
bFR5cGUgZ2V0RnJvbVNsb3QoSGFuZGxlU2xvdCBzbG90KSB7IHJldHVybiBzbG90ID8gKnNsb3Qg
OiBKU1ZhbHVlKCk7IH0KKyAgICBzdGF0aWMgSlNWYWx1ZSB0b0pTVmFsdWUoY29uc3QgSlNWYWx1
ZSYgdikgeyByZXR1cm4gdjsgfQorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBVPiBzdGF0aWMgdm9p
ZCB2YWxpZGF0ZVVwY2FzdCgpIHt9Cit9OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgQmFzZSwgdHlw
ZW5hbWUgVD4gc3RydWN0IEhhbmRsZUNvbnZlcnRlciB7CisgICAgVCogb3BlcmF0b3ItPigpIHsg
cmV0dXJuIHN0YXRpY19jYXN0PEJhc2UqPih0aGlzKS0+Z2V0KCk7IH0KKyAgICBjb25zdCBUKiBv
cGVyYXRvci0+KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgQmFzZSo+KHRoaXMp
LT5nZXQoKTsgfQorICAgIFQqIG9wZXJhdG9yKigpIHsgcmV0dXJuIHN0YXRpY19jYXN0PEJhc2Uq
Pih0aGlzKS0+Z2V0KCk7IH0KKyAgICBjb25zdCBUKiBvcGVyYXRvciooKSBjb25zdCB7IHJldHVy
biBzdGF0aWNfY2FzdDxjb25zdCBCYXNlKj4odGhpcyktPmdldCgpOyB9Cit9OworCit0ZW1wbGF0
ZSA8dHlwZW5hbWUgQmFzZT4gc3RydWN0IEhhbmRsZUNvbnZlcnRlcjxCYXNlLCBVbmtub3duPiB7
Cit9OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY2xhc3MgSGFuZGxlIDogcHVibGljIEhhbmRs
ZUJhc2UsIHB1YmxpYyBIYW5kbGVDb252ZXJ0ZXI8SGFuZGxlPFQ+LCBUPiB7CitwdWJsaWM6Cisg
ICAgdHlwZWRlZiB0eXBlbmFtZSBIYW5kbGVUeXBlczxUPjo6RXh0ZXJuYWxUeXBlIEV4dGVybmFs
VHlwZTsKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVT4gSGFuZGxlKEhhbmRsZTxVPiBvKQorICAg
IHsKKyAgICAgICAgdHlwZW5hbWUgSGFuZGxlVHlwZXM8VD46OnRlbXBsYXRlIHZhbGlkYXRlVXBj
YXN0PFU+KCk7CisgICAgICAgIG1fc2xvdCA9IG8uc2xvdCgpOworICAgIH0KKworICAgIEV4dGVy
bmFsVHlwZSBnZXQoKSBjb25zdCB7IHJldHVybiBIYW5kbGVUeXBlczxUPjo6Z2V0RnJvbVNsb3Qo
dGhpcy0+c2xvdCgpKTsgfQorCitwcm90ZWN0ZWQ6CisKKyAgICBIYW5kbGUoSGFuZGxlU2xvdCBz
bG90KQorICAgICAgICA6IEhhbmRsZUJhc2Uoc2xvdCkKKyAgICB7CisgICAgfQorICAgIEhhbmRs
ZShIYW5kbGVTbG90IHNsb3QsIEhhbmRsZUJhc2U6OkRvbnROdWxsQ2hlY2tTbG90VGFnKQorICAg
ICAgICA6IEhhbmRsZUJhc2Uoc2xvdCwgSGFuZGxlQmFzZTo6RG9udE51bGxDaGVja1Nsb3QpCisg
ICAgeworICAgIH0KKyAgICAKK3ByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIEhhbmRsZUhlYXA7
CisKKyAgICBzdGF0aWMgSGFuZGxlPFQ+IHdyYXBTbG90KEhhbmRsZVNsb3Qgc2xvdCkKKyAgICB7
CisgICAgICAgIHJldHVybiBIYW5kbGU8VD4oc2xvdCk7CisgICAgfQorfTsKKwordGVtcGxhdGUg
PHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+IGlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgSGFu
ZGxlPFQ+JiBhLCBjb25zdCBIYW5kbGU8VT4mIGIpCit7IAorICAgIHJldHVybiBhLmdldCgpID09
IGIuZ2V0KCk7IAorfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4gaW5saW5l
IGJvb2wgb3BlcmF0b3I9PShjb25zdCBIYW5kbGU8VD4mIGEsIFUqIGIpCit7IAorICAgIHJldHVy
biBhLmdldCgpID09IGI7IAorfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4g
aW5saW5lIGJvb2wgb3BlcmF0b3I9PShUKiBhLCBjb25zdCBIYW5kbGU8VT4mIGIpIAoreworICAg
IHJldHVybiBhID09IGIuZ2V0KCk7IAorfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5h
bWUgVT4gaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBIYW5kbGU8VD4mIGEsIGNvbnN0IEhh
bmRsZTxVPiYgYikKK3sgCisgICAgcmV0dXJuIGEuZ2V0KCkgIT0gYi5nZXQoKTsgCit9CisKK3Rl
bXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBpbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNv
bnN0IEhhbmRsZTxUPiYgYSwgVSogYikKK3sKKyAgICByZXR1cm4gYS5nZXQoKSAhPSBiOyAKK30K
KwordGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+IGlubGluZSBib29sIG9wZXJhdG9y
IT0oVCogYSwgY29uc3QgSGFuZGxlPFU+JiBiKQoreyAKKyAgICByZXR1cm4gYSAhPSBiLmdldCgp
OyAKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+IGlubGluZSBib29sIG9w
ZXJhdG9yIT0oY29uc3QgSGFuZGxlPFQ+JiBhLCBKU1ZhbHVlIGIpCit7CisgICAgcmV0dXJuIGEu
Z2V0KCkgIT0gYjsgCit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBpbmxp
bmUgYm9vbCBvcGVyYXRvciE9KEpTVmFsdWUgYSwgY29uc3QgSGFuZGxlPFU+JiBiKQoreyAKKyAg
ICByZXR1cm4gYSAhPSBiLmdldCgpOyAKK30KKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9jb2xsZWN0b3IvaGFuZGxlcy9IYW5kbGVIZWFwLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9jb2xsZWN0b3IvaGFuZGxlcy9IYW5kbGVIZWFwLmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5jY2ZlOWNkMjkzZWMyOWMzNzJlYzViZmE0NTY5ZTI3ZDZjNTY1YWRkCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2NvbGxlY3Rvci9oYW5kbGVzL0hhbmRs
ZUhlYXAuY3BwCkBAIC0wLDAgKzEsMTExIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorCisjaW5jbHVkZSAiSGFuZGxlSGVhcC5oIgorCisjaW5jbHVkZSAiSlNDZWxsLmgiCisK
K25hbWVzcGFjZSBKU0MgeworCitIYW5kbGVIZWFwOjpIYW5kbGVIZWFwKEpTR2xvYmFsRGF0YSog
Z2xvYmFsRGF0YSkKKyAgICA6IG1fZ2xvYmFsRGF0YShnbG9iYWxEYXRhKQoreworICAgIGdyb3co
KTsKK30KKwordm9pZCBIYW5kbGVIZWFwOjpncm93KCkKK3sKKyAgICBOb2RlKiBibG9jayA9IG1f
YmxvY2tTdGFjay5ncm93KCk7CisgICAgZm9yIChpbnQgaSA9IG1fYmxvY2tTdGFjay5ibG9ja0xl
bmd0aCAtIDE7IGkgPj0gMDsgLS1pKSB7CisgICAgICAgIE5vZGUqIG5vZGUgPSAmYmxvY2tbaV07
CisgICAgICAgIG5ldyAobm9kZSkgTm9kZSh0aGlzKTsKKyAgICAgICAgbV9mcmVlTGlzdC5wdXNo
KG5vZGUpOworICAgIH0KK30KKwordm9pZCBIYW5kbGVIZWFwOjptYXJrU3Ryb25nSGFuZGxlcyhN
YXJrU3RhY2smIG1hcmtTdGFjaykKK3sKKyAgICBOb2RlKiBlbmQgPSBtX3N0cm9uZ0xpc3QuZW5k
KCk7CisgICAgZm9yIChOb2RlKiBub2RlID0gbV9zdHJvbmdMaXN0LmJlZ2luKCk7IG5vZGUgIT0g
ZW5kOyBub2RlID0gbm9kZS0+bmV4dCgpKQorICAgICAgICBtYXJrU3RhY2suZGVwcmVjYXRlZEFw
cGVuZChub2RlLT5zbG90KCkpOworfQorCit2b2lkIEhhbmRsZUhlYXA6OnVwZGF0ZUFmdGVyTWFy
aygpCit7CisgICAgTm9kZSogZW5kID0gbV93ZWFrTGlzdC5lbmQoKTsKKyAgICBmb3IgKE5vZGUq
IG5vZGUgPSBtX3dlYWtMaXN0LmJlZ2luKCk7IG5vZGUgIT0gZW5kOyBub2RlID0gbm9kZS0+bmV4
dCgpKSB7CisgICAgICAgIEpTVmFsdWUgdmFsdWUgPSAqbm9kZS0+c2xvdCgpOworICAgICAgICBp
ZiAoIXZhbHVlIHx8ICF2YWx1ZS5pc0NlbGwoKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAg
ICAgICBKU0NlbGwqIGNlbGwgPSB2YWx1ZS5hc0NlbGwoKTsKKyAgICAgICAgQVNTRVJUKCFjZWxs
IHx8IGNlbGwtPnN0cnVjdHVyZSgpKTsKKworICAgICAgICBpZiAoSGVhcDo6aXNNYXJrZWQoY2Vs
bCkpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBpZiAoRmluYWxpemVyIGZpbmFs
aXplciA9IG5vZGUtPmZpbmFsaXplcigpKQorICAgICAgICAgICAgZmluYWxpemVyKCptX2dsb2Jh
bERhdGEsIEhhbmRsZTxVbmtub3duPjo6d3JhcFNsb3Qobm9kZS0+c2xvdCgpKSk7CisKKyAgICAg
ICAgaWYgKG5vZGUtPmlzU2VsZkRlc3Ryb3lpbmcoKSkKKyAgICAgICAgICAgIGRlYWxsb2NhdGUo
dG9IYW5kbGUobm9kZSkpOworICAgICAgICBlbHNlCisgICAgICAgICAgICAqbm9kZS0+c2xvdCgp
ID0gSlNWYWx1ZSgpOworICAgIH0KK30KKyAgICAKK3ZvaWQgSGFuZGxlSGVhcDo6Y2xlYXJXZWFr
UG9pbnRlcnMoKQoreworICAgIE5vZGUqIGVuZCA9IG1fd2Vha0xpc3QuZW5kKCk7CisgICAgZm9y
IChOb2RlKiBub2RlID0gbV93ZWFrTGlzdC5iZWdpbigpOyBub2RlICE9IGVuZDsgbm9kZSA9IG5v
ZGUtPm5leHQoKSkgeworICAgICAgICBKU1ZhbHVlIHZhbHVlID0gKm5vZGUtPnNsb3QoKTsKKyAg
ICAgICAgaWYgKCF2YWx1ZSB8fCAhdmFsdWUuaXNDZWxsKCkpCisgICAgICAgICAgICBjb250aW51
ZTsKKyAgICAgICAgQVNTRVJUKHZhbHVlLmFzQ2VsbCgpLT5zdHJ1Y3R1cmUoKSk7CisKKyAgICAg
ICAgaWYgKEZpbmFsaXplciBmaW5hbGl6ZXIgPSBub2RlLT5maW5hbGl6ZXIoKSkKKyAgICAgICAg
ICAgIGZpbmFsaXplcigqbV9nbG9iYWxEYXRhLCBIYW5kbGU8VW5rbm93bj46OndyYXBTbG90KG5v
ZGUtPnNsb3QoKSkpOworICAgICAgICAqbm9kZS0+c2xvdCgpID0gSlNWYWx1ZSgpOworICAgIH0K
K30KKwordm9pZCBIYW5kbGVIZWFwOjp3cml0ZUJhcnJpZXIoSGFuZGxlU2xvdCBzbG90LCBjb25z
dCBKU1ZhbHVlJiB2YWx1ZSkKK3sKKyAgICBpZiAoc2xvdC0+aXNDZWxsKCkgPT0gdmFsdWUuaXND
ZWxsKCkgJiYgIXZhbHVlID09ICEqc2xvdCkKKyAgICAgICAgcmV0dXJuOworICAgIE5vZGUqIG5v
ZGUgPSB0b05vZGUoc2xvdCk7CisgICAgU2VudGluZWxMaW5rZWRMaXN0PE5vZGU+OjpyZW1vdmUo
bm9kZSk7CisgICAgaWYgKCF2YWx1ZS5pc0NlbGwoKSB8fCAhdmFsdWUpIHsKKyAgICAgICAgbV9p
bW1lZGlhdGVMaXN0LnB1c2gobm9kZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYg
KG5vZGUtPmlzV2VhaygpKQorICAgICAgICBtX3dlYWtMaXN0LnB1c2gobm9kZSk7CisgICAgZWxz
ZQorICAgICAgICBtX3N0cm9uZ0xpc3QucHVzaChub2RlKTsKK30KKworfQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2NvbGxlY3Rvci9oYW5kbGVzL0hhbmRsZUhlYXAuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9jb2xsZWN0b3IvaGFuZGxlcy9IYW5kbGVIZWFwLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZDk0ZjMxNzZiMDA1ZDBkMWZjMDdiNjk1YzAwOTNlNDYyYjk2NzQ2NQotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9jb2xsZWN0b3IvaGFuZGxlcy9IYW5kbGVI
ZWFwLmgKQEAgLTAsMCArMSwyNDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEhhbmRsZUhlYXBf
aAorI2RlZmluZSBIYW5kbGVIZWFwX2gKKworI2luY2x1ZGUgIkJsb2NrU3RhY2suaCIKKyNpbmNs
dWRlICJIYW5kbGUuaCIKKyNpbmNsdWRlICJTZW50aW5lbExpbmtlZExpc3QuaCIKKyNpbmNsdWRl
ICJTaW5nbHlMaW5rZWRMaXN0LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBIYW5kbGVI
ZWFwOworY2xhc3MgSlNHbG9iYWxEYXRhOworY2xhc3MgSlNWYWx1ZTsKK2NsYXNzIE1hcmtTdGFj
azsKKwordHlwZWRlZiB2b2lkICgqRmluYWxpemVyKShKU0dsb2JhbERhdGEmLCBIYW5kbGU8VW5r
bm93bj4pOworCitjbGFzcyBIYW5kbGVIZWFwIHsKK3ByaXZhdGU6CitwdWJsaWM6CisgICAgc3Rh
dGljIEhhbmRsZUhlYXAqIGhlYXBGb3IoSGFuZGxlU2xvdCk7CisKKyAgICBIYW5kbGVIZWFwKEpT
R2xvYmFsRGF0YSopOworCisgICAgSGFuZGxlU2xvdCBhbGxvY2F0ZSgpOworICAgIHZvaWQgZGVh
bGxvY2F0ZShIYW5kbGVTbG90KTsKKyAgICAKKyAgICB2b2lkIG1ha2VXZWFrKEhhbmRsZVNsb3Qs
IEZpbmFsaXplcik7CisgICAgdm9pZCBtYWtlU2VsZkRlc3Ryb3lpbmcoSGFuZGxlU2xvdCwgRmlu
YWxpemVyKTsKKworICAgIHZvaWQgbWFya1N0cm9uZ0hhbmRsZXMoTWFya1N0YWNrJik7CisgICAg
dm9pZCB1cGRhdGVBZnRlck1hcmsoKTsKKyAgICAKKyAgICAvLyBTaG91bGQgb25seSBiZSBjYWxs
ZWQgZHVyaW5nIHRlYXJkb3duLgorICAgIHZvaWQgY2xlYXJXZWFrUG9pbnRlcnMoKTsKKworICAg
IHZvaWQgd3JpdGVCYXJyaWVyKEhhbmRsZVNsb3QsIGNvbnN0IEpTVmFsdWUmKTsKKworcHJpdmF0
ZToKKyAgICB0eXBlZGVmIHVpbnRwdHJfdCBIYW5kbGVIZWFwV2l0aEZsYWdzOworICAgIGVudW0g
eyBGbGFnc01hc2sgPSAzLCBXZWFrRmxhZyA9IDEsIFNlbGZEZXN0cm95aW5nRmxhZyA9IDIgfTsK
KyAgICBjbGFzcyBOb2RlIHsKKyAgICBwdWJsaWM6CisgICAgICAgIE5vZGUoU2VudGluZWxUYWcp
OworICAgICAgICBOb2RlKEhhbmRsZUhlYXAqKTsKKyAgICAgICAgCisgICAgICAgIEhhbmRsZVNs
b3Qgc2xvdCgpOworICAgICAgICBIYW5kbGVIZWFwKiBoYW5kbGVIZWFwKCk7CisKKyAgICAgICAg
dm9pZCBzZXRGaW5hbGl6ZXIoRmluYWxpemVyKTsKKyAgICAgICAgRmluYWxpemVyIGZpbmFsaXpl
cigpOworCisgICAgICAgIHZvaWQgc2V0UHJldihOb2RlKik7CisgICAgICAgIE5vZGUqIHByZXYo
KTsKKworICAgICAgICB2b2lkIHNldE5leHQoTm9kZSopOworICAgICAgICBOb2RlKiBuZXh0KCk7
CisKKyAgICAgICAgYm9vbCBpc1dlYWsoKTsKKyAgICAgICAgdm9pZCBtYWtlV2VhaygpOworICAg
ICAgICAKKyAgICAgICAgYm9vbCBpc1NlbGZEZXN0cm95aW5nKCk7CisgICAgICAgIHZvaWQgbWFr
ZVNlbGZEZXN0cm95aW5nKCk7CisKKyAgICBwcml2YXRlOgorICAgICAgICBKU1ZhbHVlIG1fdmFs
dWU7CisgICAgICAgIEhhbmRsZUhlYXBXaXRoRmxhZ3MgbV9oYW5kbGVIZWFwV2l0aEZsYWdzOwor
ICAgICAgICBGaW5hbGl6ZXIgbV9maW5hbGl6ZXI7CisgICAgICAgIE5vZGUqIG1fcHJldjsKKyAg
ICAgICAgTm9kZSogbV9uZXh0OworICAgIH07CisKKyAgICBzdGF0aWMgSGFuZGxlU2xvdCB0b0hh
bmRsZShOb2RlKik7CisgICAgc3RhdGljIE5vZGUqIHRvTm9kZShIYW5kbGVTbG90KTsKKworICAg
IHZvaWQgZ3JvdygpOworCisgICAgSlNHbG9iYWxEYXRhKiBtX2dsb2JhbERhdGE7CisgICAgQmxv
Y2tTdGFjazxOb2RlPiBtX2Jsb2NrU3RhY2s7CisKKyAgICBTZW50aW5lbExpbmtlZExpc3Q8Tm9k
ZT4gbV9zdHJvbmdMaXN0OworICAgIFNlbnRpbmVsTGlua2VkTGlzdDxOb2RlPiBtX3dlYWtMaXN0
OworICAgIFNlbnRpbmVsTGlua2VkTGlzdDxOb2RlPiBtX2ltbWVkaWF0ZUxpc3Q7CisgICAgU2lu
Z2x5TGlua2VkTGlzdDxOb2RlPiBtX2ZyZWVMaXN0OworfTsKKworaW5saW5lIEhhbmRsZUhlYXAq
IEhhbmRsZUhlYXA6OmhlYXBGb3IoSGFuZGxlU2xvdCBoYW5kbGUpCit7CisgICAgcmV0dXJuIHRv
Tm9kZShoYW5kbGUpLT5oYW5kbGVIZWFwKCk7Cit9CisKK2lubGluZSBIYW5kbGVTbG90IEhhbmRs
ZUhlYXA6OnRvSGFuZGxlKE5vZGUqIG5vZGUpCit7CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nh
c3Q8SGFuZGxlU2xvdD4obm9kZSk7Cit9CisKK2lubGluZSBIYW5kbGVIZWFwOjpOb2RlKiBIYW5k
bGVIZWFwOjp0b05vZGUoSGFuZGxlU2xvdCBoYW5kbGUpCit7CisgICAgcmV0dXJuIHJlaW50ZXJw
cmV0X2Nhc3Q8Tm9kZSo+KGhhbmRsZSk7Cit9CisKK2lubGluZSBIYW5kbGVTbG90IEhhbmRsZUhl
YXA6OmFsbG9jYXRlKCkKK3sKKyAgICBpZiAobV9mcmVlTGlzdC5pc0VtcHR5KCkpCisgICAgICAg
IGdyb3coKTsKKworICAgIE5vZGUqIG5vZGUgPSBtX2ZyZWVMaXN0LnBvcCgpOworICAgIG5ldyAo
bm9kZSkgTm9kZSh0aGlzKTsKKyAgICBtX2ltbWVkaWF0ZUxpc3QucHVzaChub2RlKTsKKyAgICBy
ZXR1cm4gdG9IYW5kbGUobm9kZSk7Cit9CisKK2lubGluZSB2b2lkIEhhbmRsZUhlYXA6OmRlYWxs
b2NhdGUoSGFuZGxlU2xvdCBoYW5kbGUpCit7CisgICAgTm9kZSogbm9kZSA9IHRvTm9kZShoYW5k
bGUpOworICAgIFNlbnRpbmVsTGlua2VkTGlzdDxOb2RlPjo6cmVtb3ZlKG5vZGUpOworICAgIG1f
ZnJlZUxpc3QucHVzaChub2RlKTsKK30KKworaW5saW5lIHZvaWQgSGFuZGxlSGVhcDo6bWFrZVdl
YWsoSGFuZGxlU2xvdCBoYW5kbGUsIEZpbmFsaXplciBmaW5hbGl6ZXIpCit7CisgICAgTm9kZSog
bm9kZSA9IHRvTm9kZShoYW5kbGUpOworICAgIFNlbnRpbmVsTGlua2VkTGlzdDxOb2RlPjo6cmVt
b3ZlKG5vZGUpOworICAgIG5vZGUtPnNldEZpbmFsaXplcihmaW5hbGl6ZXIpOworICAgIG5vZGUt
Pm1ha2VXZWFrKCk7CisgICAgaWYgKGhhbmRsZS0+aXNDZWxsKCkgJiYgKmhhbmRsZSkKKyAgICAg
ICAgbV93ZWFrTGlzdC5wdXNoKG5vZGUpOworICAgIGVsc2UKKyAgICAgICAgbV9pbW1lZGlhdGVM
aXN0LnB1c2gobm9kZSk7Cit9CisKK2lubGluZSB2b2lkIEhhbmRsZUhlYXA6Om1ha2VTZWxmRGVz
dHJveWluZyhIYW5kbGVTbG90IGhhbmRsZSwgRmluYWxpemVyIGZpbmFsaXplcikKK3sKKyAgICBt
YWtlV2VhayhoYW5kbGUsIGZpbmFsaXplcik7CisgICAgTm9kZSogbm9kZSA9IHRvTm9kZShoYW5k
bGUpOworICAgIFNlbnRpbmVsTGlua2VkTGlzdDxOb2RlPjo6cmVtb3ZlKG5vZGUpOworICAgIG5v
ZGUtPm1ha2VTZWxmRGVzdHJveWluZygpOworfQorCitpbmxpbmUgSGFuZGxlSGVhcDo6Tm9kZTo6
Tm9kZShIYW5kbGVIZWFwKiBoYW5kbGVIZWFwKQorICAgIDogbV9oYW5kbGVIZWFwV2l0aEZsYWdz
KHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90PihoYW5kbGVIZWFwKSkKKyAgICAsIG1fZmluYWxp
emVyKDApCit7Cit9CisKK2lubGluZSBIYW5kbGVIZWFwOjpOb2RlOjpOb2RlKFNlbnRpbmVsVGFn
KQorICAgIDogbV9oYW5kbGVIZWFwV2l0aEZsYWdzKDApCisgICAgLCBtX2ZpbmFsaXplcigwKQor
eworfQorCitpbmxpbmUgSGFuZGxlU2xvdCBIYW5kbGVIZWFwOjpOb2RlOjpzbG90KCkKK3sKKyAg
ICByZXR1cm4gJm1fdmFsdWU7Cit9CisKK2lubGluZSBIYW5kbGVIZWFwKiBIYW5kbGVIZWFwOjpO
b2RlOjpoYW5kbGVIZWFwKCkKK3sKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxIYW5kbGVI
ZWFwKj4obV9oYW5kbGVIZWFwV2l0aEZsYWdzICYgfkZsYWdzTWFzayk7Cit9CisKK2lubGluZSB2
b2lkIEhhbmRsZUhlYXA6Ok5vZGU6OnNldEZpbmFsaXplcihGaW5hbGl6ZXIgZmluYWxpemVyKQor
eworICAgIG1fZmluYWxpemVyID0gZmluYWxpemVyOworfQorCitpbmxpbmUgdm9pZCBIYW5kbGVI
ZWFwOjpOb2RlOjptYWtlV2VhaygpCit7CisgICAgQVNTRVJUKCEobV9oYW5kbGVIZWFwV2l0aEZs
YWdzICYgV2Vha0ZsYWcpKTsKKyAgICBtX2hhbmRsZUhlYXBXaXRoRmxhZ3MgfD0gV2Vha0ZsYWc7
Cit9CisKK2lubGluZSBib29sIEhhbmRsZUhlYXA6Ok5vZGU6OmlzV2VhaygpCit7CisgICAgcmV0
dXJuICEhKG1faGFuZGxlSGVhcFdpdGhGbGFncyAmIFdlYWtGbGFnKTsKK30KKworaW5saW5lIHZv
aWQgSGFuZGxlSGVhcDo6Tm9kZTo6bWFrZVNlbGZEZXN0cm95aW5nKCkKK3sKKyAgICBBU1NFUlQo
bV9oYW5kbGVIZWFwV2l0aEZsYWdzICYgV2Vha0ZsYWcpOworICAgIEFTU0VSVCghKG1faGFuZGxl
SGVhcFdpdGhGbGFncyAmIFNlbGZEZXN0cm95aW5nRmxhZykpOworICAgIG1faGFuZGxlSGVhcFdp
dGhGbGFncyB8PSBTZWxmRGVzdHJveWluZ0ZsYWc7Cit9CisKK2lubGluZSBib29sIEhhbmRsZUhl
YXA6Ok5vZGU6OmlzU2VsZkRlc3Ryb3lpbmcoKQoreworICAgIHJldHVybiAhIShtX2hhbmRsZUhl
YXBXaXRoRmxhZ3MgJiBTZWxmRGVzdHJveWluZ0ZsYWcpOworfQorCitpbmxpbmUgRmluYWxpemVy
IEhhbmRsZUhlYXA6Ok5vZGU6OmZpbmFsaXplcigpCit7CisgICAgcmV0dXJuIG1fZmluYWxpemVy
OworfQorCitpbmxpbmUgdm9pZCBIYW5kbGVIZWFwOjpOb2RlOjpzZXRQcmV2KE5vZGUqIHByZXYp
Cit7CisgICAgbV9wcmV2ID0gcHJldjsKK30KKworaW5saW5lIEhhbmRsZUhlYXA6Ok5vZGUqIEhh
bmRsZUhlYXA6Ok5vZGU6OnByZXYoKQoreworICAgIHJldHVybiBtX3ByZXY7Cit9CisKK2lubGlu
ZSB2b2lkIEhhbmRsZUhlYXA6Ok5vZGU6OnNldE5leHQoTm9kZSogbmV4dCkKK3sKKyAgICBtX25l
eHQgPSBuZXh0OworfQorCitpbmxpbmUgSGFuZGxlSGVhcDo6Tm9kZSogSGFuZGxlSGVhcDo6Tm9k
ZTo6bmV4dCgpCit7CisgICAgcmV0dXJuIG1fbmV4dDsKK30KKworfQorCisjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9jb2xsZWN0b3IvaGFuZGxlcy9TZW50aW5lbExp
bmtlZExpc3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9jb2xsZWN0b3IvaGFuZGxlcy9TZW50
aW5lbExpbmtlZExpc3QuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45MTMzOTUxYTdmNWY3NzZlYzBmMWY0MDA3Y2Uw
YzkzNTYwNzBmNWVhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Nv
bGxlY3Rvci9oYW5kbGVzL1NlbnRpbmVsTGlua2VkTGlzdC5oCkBAIC0wLDAgKzEsMTAzIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworLyoKKyAgICBBIFNlbnRpbmVsTGlua2VkTGlzdCBpcyBhIGxpbmtlZCBsaXN0
IHdpdGggZHVtbXkgaGVhZCBhbmQgdGFpbCBzZW50aW5lbHMsCisgICAgd2hpY2ggYWxsb3cgZm9y
IGJyYW5jaC1sZXNzIGluc2VydGlvbiBhbmQgcmVtb3ZhbCwgYW5kIHJlbW92YWwgd2l0aG91dCBh
CisgICAgcG9pbnRlciB0byB0aGUgbGlzdC4KKyAgICAKKyAgICBSZXF1aXJlczogTm9kZSBpcyBh
IGNvbmNyZXRlIGNsYXNzIHdpdGg6CisgICAgICAgIE5vZGUoU2VudGluZWxUYWcpOworICAgICAg
ICB2b2lkIHNldFByZXYoTm9kZSopOworICAgICAgICBOb2RlKiBwcmV2KCk7CisgICAgICAgIHZv
aWQgc2V0TmV4dChOb2RlKik7CisgICAgICAgIE5vZGUqIG5leHQoKTsKKyovCisKK25hbWVzcGFj
ZSBKU0MgeworCitlbnVtIFNlbnRpbmVsVGFnIHsgU2VudGluZWwgfTsKKwordGVtcGxhdGUgPHR5
cGVuYW1lIE5vZGU+IGNsYXNzIFNlbnRpbmVsTGlua2VkTGlzdCB7CitwdWJsaWM6CisgICAgdHlw
ZWRlZiBOb2RlKiBpdGVyYXRvcjsKKworICAgIFNlbnRpbmVsTGlua2VkTGlzdCgpOworCisgICAg
dm9pZCBwdXNoKE5vZGUqKTsKKyAgICBzdGF0aWMgdm9pZCByZW1vdmUoTm9kZSopOworCisgICAg
aXRlcmF0b3IgYmVnaW4oKTsKKyAgICBpdGVyYXRvciBlbmQoKTsKKworcHJpdmF0ZToKKyAgICBO
b2RlIG1faGVhZFNlbnRpbmVsOworICAgIE5vZGUgbV90YWlsU2VudGluZWw7Cit9OworCit0ZW1w
bGF0ZSA8dHlwZW5hbWUgTm9kZT4gaW5saW5lIFNlbnRpbmVsTGlua2VkTGlzdDxOb2RlPjo6U2Vu
dGluZWxMaW5rZWRMaXN0KCkKKyAgICA6IG1faGVhZFNlbnRpbmVsKFNlbnRpbmVsKQorICAgICwg
bV90YWlsU2VudGluZWwoU2VudGluZWwpCit7CisgICAgbV9oZWFkU2VudGluZWwuc2V0TmV4dCgm
bV90YWlsU2VudGluZWwpOworICAgIG1faGVhZFNlbnRpbmVsLnNldFByZXYoMCk7CisKKyAgICBt
X3RhaWxTZW50aW5lbC5zZXRQcmV2KCZtX2hlYWRTZW50aW5lbCk7CisgICAgbV90YWlsU2VudGlu
ZWwuc2V0TmV4dCgwKTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIE5vZGU+IGlubGluZSB0eXBl
bmFtZSBTZW50aW5lbExpbmtlZExpc3Q8Tm9kZT46Oml0ZXJhdG9yIFNlbnRpbmVsTGlua2VkTGlz
dDxOb2RlPjo6YmVnaW4oKQoreworICAgIHJldHVybiBtX2hlYWRTZW50aW5lbC5uZXh0KCk7Cit9
CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBOb2RlPiBpbmxpbmUgdHlwZW5hbWUgU2VudGluZWxMaW5r
ZWRMaXN0PE5vZGU+OjppdGVyYXRvciBTZW50aW5lbExpbmtlZExpc3Q8Tm9kZT46OmVuZCgpCit7
CisgICAgcmV0dXJuICZtX3RhaWxTZW50aW5lbDsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIE5v
ZGU+IGlubGluZSB2b2lkIFNlbnRpbmVsTGlua2VkTGlzdDxOb2RlPjo6cHVzaChOb2RlKiBub2Rl
KQoreworICAgIEFTU0VSVChub2RlKTsKKyAgICBOb2RlKiBwcmV2ID0gJm1faGVhZFNlbnRpbmVs
OworICAgIE5vZGUqIG5leHQgPSBtX2hlYWRTZW50aW5lbC5uZXh0KCk7CisKKyAgICBub2RlLT5z
ZXRQcmV2KHByZXYpOworICAgIG5vZGUtPnNldE5leHQobmV4dCk7CisKKyAgICBwcmV2LT5zZXRO
ZXh0KG5vZGUpOworICAgIG5leHQtPnNldFByZXYobm9kZSk7Cit9CisKK3RlbXBsYXRlIDx0eXBl
bmFtZSBOb2RlPiBpbmxpbmUgdm9pZCBTZW50aW5lbExpbmtlZExpc3Q8Tm9kZT46OnJlbW92ZShO
b2RlKiBub2RlKQoreworICAgIE5vZGUqIHByZXYgPSBub2RlLT5wcmV2KCk7CisgICAgTm9kZSog
bmV4dCA9IG5vZGUtPm5leHQoKTsKKworICAgIHByZXYtPnNldE5leHQobmV4dCk7CisgICAgbmV4
dC0+c2V0UHJldihwcmV2KTsKK30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2NvbGxlY3Rvci9oYW5kbGVzL1NpbmdseUxpbmtlZExpc3QuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9jb2xsZWN0b3IvaGFuZGxlcy9TaW5nbHlMaW5rZWRMaXN0LmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MTEzOTBlYTQ1ZTBiNDk4MDE5NmVmNTdiNzkwNTJjNTgwNjRhNTQ3MwotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9jb2xsZWN0b3IvaGFuZGxlcy9TaW5nbHlMaW5rZWRM
aXN0LmgKQEAgLTAsMCArMSw3MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgU2luZ2x5TGlua2Vk
TGlzdF9oCisjZGVmaW5lIFNpbmdseUxpbmtlZExpc3RfaAorCituYW1lc3BhY2UgSlNDIHsKKwor
dGVtcGxhdGUgPHR5cGVuYW1lIE5vZGU+IGNsYXNzIFNpbmdseUxpbmtlZExpc3QgeworcHVibGlj
OgorICAgIFNpbmdseUxpbmtlZExpc3QoKTsKKyAgICAKKyAgICBib29sIGlzRW1wdHkoKTsKKwor
ICAgIHZvaWQgcHVzaChOb2RlKik7CisgICAgTm9kZSogcG9wKCk7CisKK3ByaXZhdGU6CisgICAg
Tm9kZSogbV9oZWFkOworfTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIE5vZGU+IGlubGluZSBTaW5n
bHlMaW5rZWRMaXN0PE5vZGU+OjpTaW5nbHlMaW5rZWRMaXN0KCkKKyAgICA6IG1faGVhZCgwKQor
eworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgTm9kZT4gaW5saW5lIGJvb2wgU2luZ2x5TGlua2Vk
TGlzdDxOb2RlPjo6aXNFbXB0eSgpCit7CisgICAgcmV0dXJuICFtX2hlYWQ7Cit9CisKK3RlbXBs
YXRlIDx0eXBlbmFtZSBOb2RlPiBpbmxpbmUgdm9pZCBTaW5nbHlMaW5rZWRMaXN0PE5vZGU+Ojpw
dXNoKE5vZGUqIG5vZGUpCit7CisgICAgQVNTRVJUKG5vZGUpOworICAgIG5vZGUtPnNldE5leHQo
bV9oZWFkKTsKKyAgICBtX2hlYWQgPSBub2RlOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgTm9k
ZT4gaW5saW5lIE5vZGUqIFNpbmdseUxpbmtlZExpc3Q8Tm9kZT46OnBvcCgpCit7CisgICAgTm9k
ZSogdG1wID0gbV9oZWFkOworICAgIG1faGVhZCA9IG1faGVhZC0+bmV4dCgpOworICAgIHJldHVy
biB0bXA7Cit9CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
dGVycHJldGVyL0ludGVycHJldGVyLmNwcAppbmRleCBjMjYxMmFjMGI5YjYxNWQ2YzUxZGE3MjVl
ZTIxYmQ5YzAyMDQ0M2JjLi42MjQ0NmU1NWM1MjgyOTAwOGM1N2Y3ZTQ2OWE0MmJhOWQ5MmI1NDVj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0
ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRl
ci5jcHAKQEAgLTQxOSw5ICs0MTksMTAgQEAgTkVWRVJfSU5MSU5FIEpTVmFsdWUgSW50ZXJwcmV0
ZXI6OmNhbGxFdmFsKENhbGxGcmFtZSogY2FsbEZyYW1lLCBSZWdpc3RlckZpbGUqIHIKICAgICBy
ZXR1cm4gY2FsbEZyYW1lLT5nbG9iYWxEYXRhKCkuaW50ZXJwcmV0ZXItPmV4ZWN1dGUoZXZhbC5n
ZXQoKSwgY2FsbEZyYW1lLCBjYWxsRnJhbWUtPnVuY2hlY2tlZFIoY29kZUJsb2NrLT50aGlzUmVn
aXN0ZXIoKSkuanNWYWx1ZSgpLnRvVGhpc09iamVjdChjYWxsRnJhbWUpLCBjYWxsRnJhbWUtPnJl
Z2lzdGVycygpIC0gcmVnaXN0ZXJGaWxlLT5zdGFydCgpICsgcmVnaXN0ZXJPZmZzZXQsIHNjb3Bl
Q2hhaW4pOwogfQogCi1JbnRlcnByZXRlcjo6SW50ZXJwcmV0ZXIoKQorSW50ZXJwcmV0ZXI6Oklu
dGVycHJldGVyKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSkKICAgICA6IG1fc2FtcGxlRW50cnlE
ZXB0aCgwKQogICAgICwgbV9yZWVudHJ5RGVwdGgoMCkKKyAgICAsIG1fcmVnaXN0ZXJGaWxlKGds
b2JhbERhdGEpCiB7CiAjaWYgRU5BQkxFKENPTVBVVEVEX0dPVE9fSU5URVJQUkVURVIpCiAgICAg
cHJpdmF0ZUV4ZWN1dGUoSW5pdGlhbGl6ZUFuZFJldHVybiwgMCwgMCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oCmluZGV4IDc1M2Q5MGU0YWU0
MjMyNzUxMzJlNjAyYjQwZWVkYzczY2FlMzcwMDEuLjhmMjlmNjBiMzJkNjJiYmI5Mzc4ZWEzZDYw
ZWJmNGZkOGEyNzhkZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnBy
ZXRlci9JbnRlcnByZXRlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRl
ci9JbnRlcnByZXRlci5oCkBAIC02OSw3ICs2OSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICBmcmllbmQgY2xhc3MgSklUOwogICAgICAgICBmcmllbmQgY2xhc3MgQ2FjaGVkQ2FsbDsKICAg
ICBwdWJsaWM6Ci0gICAgICAgIEludGVycHJldGVyKCk7CisgICAgICAgIEludGVycHJldGVyKEpT
R2xvYmFsRGF0YSYpOwogCiAgICAgICAgIFJlZ2lzdGVyRmlsZSYgcmVnaXN0ZXJGaWxlKCkgeyBy
ZXR1cm4gbV9yZWdpc3RlckZpbGU7IH0KICAgICAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvUmVnaXN0ZXJGaWxlLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnRlcnByZXRlci9SZWdpc3RlckZpbGUuY3BwCmluZGV4IDRjMzc2NzY2MmM5ZWQx
NzM1OTRjYmU1N2QzNDFlNTlkNGJkNGZkYTMuLmY1YzAyMTg5ZjU5NGM1YjBhMDMzYzM2MjQzOGQ1
YWJkNTA2OGIxMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRl
ci9SZWdpc3RlckZpbGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRl
ci9SZWdpc3RlckZpbGUuY3BwCkBAIC0yOSw2ICsyOSw4IEBACiAjaW5jbHVkZSAiY29uZmlnLmgi
CiAjaW5jbHVkZSAiUmVnaXN0ZXJGaWxlLmgiCiAKKyNpbmNsdWRlICJJbnRlcnByZXRlci5oIgor
I2luY2x1ZGUgIkpTR2xvYmFsRGF0YS5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCiAK
IG5hbWVzcGFjZSBKU0MgewpAQCAtNjIsOSArNjQsMTAgQEAgdm9pZCBSZWdpc3RlckZpbGU6OnNl
dEdsb2JhbE9iamVjdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogICAgIG1fZ2xvYmFs
T2JqZWN0ID0gZ2xvYmFsT2JqZWN0OwogfQogCi1ib29sIFJlZ2lzdGVyRmlsZTo6Y2xlYXJHbG9i
YWxPYmplY3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKK3ZvaWQgUmVnaXN0ZXJGaWxl
OjpnbG9iYWxPYmplY3RDb2xsZWN0ZWQoSlNHbG9iYWxEYXRhJiwgSGFuZGxlPFVua25vd24+IHZh
bHVlKQogewotICAgIHJldHVybiBtX2dsb2JhbE9iamVjdC5jbGVhcihnbG9iYWxPYmplY3QpOwor
ICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBhc0dsb2JhbE9iamVjdCh2YWx1ZS5n
ZXQoKSk7CisgICAgZ2xvYmFsT2JqZWN0LT5nbG9iYWxEYXRhKCkuaW50ZXJwcmV0ZXItPnJlZ2lz
dGVyRmlsZSgpLnNldE51bUdsb2JhbHMoMCk7CiB9CiAKIEpTR2xvYmFsT2JqZWN0KiBSZWdpc3Rl
ckZpbGU6Omdsb2JhbE9iamVjdCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW50ZXJwcmV0ZXIvUmVnaXN0ZXJGaWxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJw
cmV0ZXIvUmVnaXN0ZXJGaWxlLmgKaW5kZXggZTljNmRmMWU1Yzc5Y2E3ZmRmMjlkNWE4NGZlMWMw
MzUyMmEyODM2ZC4uZWJmZDQ2ZGVhYjljOTdmYjA0M2M2NDkxOTU4OWY3YjU1MzcyN2ZlYiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1JlZ2lzdGVyRmlsZS5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9SZWdpc3RlckZpbGUuaApA
QCAtMTEyLDcgKzExMiw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAvLyBBbGxvdyA4ayBv
ZiBleGNlc3MgcmVnaXN0ZXJzIGJlZm9yZSB3ZSBzdGFydCB0cnlpbmcgdG8gcmVhcCB0aGUgcmVn
aXN0ZXJmaWxlCiAgICAgICAgIHN0YXRpYyBjb25zdCBwdHJkaWZmX3QgbWF4RXhjZXNzQ2FwYWNp
dHkgPSA4ICogMTAyNDsKIAotICAgICAgICBSZWdpc3RlckZpbGUoc2l6ZV90IGNhcGFjaXR5ID0g
ZGVmYXVsdENhcGFjaXR5LCBzaXplX3QgbWF4R2xvYmFscyA9IGRlZmF1bHRNYXhHbG9iYWxzKTsK
KyAgICAgICAgUmVnaXN0ZXJGaWxlKEpTR2xvYmFsRGF0YSYsIHNpemVfdCBjYXBhY2l0eSA9IGRl
ZmF1bHRDYXBhY2l0eSwgc2l6ZV90IG1heEdsb2JhbHMgPSBkZWZhdWx0TWF4R2xvYmFscyk7CiAg
ICAgICAgIH5SZWdpc3RlckZpbGUoKTsKIAogICAgICAgICBSZWdpc3Rlciogc3RhcnQoKSBjb25z
dCB7IHJldHVybiBtX3N0YXJ0OyB9CkBAIC0xMjAsNyArMTIwLDcgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgIHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9lbmQgLSBtX3N0YXJ0OyB9
CiAKICAgICAgICAgdm9pZCBzZXRHbG9iYWxPYmplY3QoSlNHbG9iYWxPYmplY3QqKTsKLSAgICAg
ICAgYm9vbCBjbGVhckdsb2JhbE9iamVjdChKU0dsb2JhbE9iamVjdCopOworICAgICAgICBzdGF0
aWMgdm9pZCBnbG9iYWxPYmplY3RDb2xsZWN0ZWQoSlNHbG9iYWxEYXRhJiwgSGFuZGxlPFVua25v
d24+KTsKICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCgpOwogCiAgICAgICAg
IGJvb2wgZ3JvdyhSZWdpc3RlciogbmV3RW5kKTsKQEAgLTE1MCwxNiArMTUwLDE2IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICBXZWFrR0NQdHI8SlNHbG9iYWxPYmplY3Q+IG1fZ2xvYmFsT2Jq
ZWN0OyAvLyBUaGUgZ2xvYmFsIG9iamVjdCB3aG9zZSB2YXJzIGFyZSBjdXJyZW50bHkgc3RvcmVk
IGluIHRoZSByZWdpc3RlciBmaWxlLgogICAgIH07CiAKLSAgICBpbmxpbmUgUmVnaXN0ZXJGaWxl
OjpSZWdpc3RlckZpbGUoc2l6ZV90IGNhcGFjaXR5LCBzaXplX3QgbWF4R2xvYmFscykKKyAgICBp
bmxpbmUgUmVnaXN0ZXJGaWxlOjpSZWdpc3RlckZpbGUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRh
LCBzaXplX3QgY2FwYWNpdHksIHNpemVfdCBtYXhHbG9iYWxzKQogICAgICAgICA6IG1fbnVtR2xv
YmFscygwKQogICAgICAgICAsIG1fbWF4R2xvYmFscyhtYXhHbG9iYWxzKQogICAgICAgICAsIG1f
c3RhcnQoMCkKICAgICAgICAgLCBtX2VuZCgwKQogICAgICAgICAsIG1fbWF4KDApCisgICAgICAg
ICwgbV9nbG9iYWxPYmplY3QoZ2xvYmFsRGF0YSwgZ2xvYmFsT2JqZWN0Q29sbGVjdGVkKQogICAg
IHsKICAgICAgICAgQVNTRVJUKG1heEdsb2JhbHMgJiYgaXNQYWdlQWxpZ25lZChtYXhHbG9iYWxz
KSk7CiAgICAgICAgIEFTU0VSVChjYXBhY2l0eSAmJiBpc1BhZ2VBbGlnbmVkKGNhcGFjaXR5KSk7
Ci0KICAgICAgICAgc2l6ZV90IGJ1ZmZlckxlbmd0aCA9IChjYXBhY2l0eSArIG1heEdsb2JhbHMp
ICogc2l6ZW9mKFJlZ2lzdGVyKTsKICAgICAgICAgbV9yZXNlcnZhdGlvbiA9IFBhZ2VSZXNlcnZh
dGlvbjo6cmVzZXJ2ZShyb3VuZFVwQWxsb2NhdGlvblNpemUoYnVmZmVyTGVuZ3RoLCBjb21taXRT
aXplKSwgT1NBbGxvY2F0b3I6OkpTVk1TdGFja1BhZ2VzKTsKICAgICAgICAgdm9pZCogYmFzZSA9
IG1fcmVzZXJ2YXRpb24uYmFzZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvR0NIYW5kbGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR0NI
YW5kbGUuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyOTdkZTM4Y2UwYzFmOTVh
NDE1ZDIwMjFhN2I2ZmFhZTU4ZTZjN2Q0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dDSGFuZGxlLmNw
cAorKysgL2Rldi9udWxsCkBAIC0xLDg2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAi
Y29uZmlnLmgiCi0jaW5jbHVkZSAiR0NIYW5kbGUuaCIKLQotbmFtZXNwYWNlIEpTQyB7Ci0KLVdl
YWtHQ0hhbmRsZVBvb2wqIFdlYWtHQ0hhbmRsZTo6cG9vbCgpCi17Ci0gICAgdWludHB0cl90IHBv
b2wgPSAocmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KHRoaXMpICYgV2Vha0dDSGFuZGxlUG9v
bDo6cG9vbE1hc2spOwotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFdlYWtHQ0hhbmRsZVBv
b2wqPihwb29sKTsKLX0KLQotV2Vha0dDSGFuZGxlUG9vbDo6V2Vha0dDSGFuZGxlUG9vbCgpCi17
Ci0gICAgQVNTRVJUKHNpemVvZihXZWFrR0NIYW5kbGVQb29sKSA8PSBXZWFrR0NIYW5kbGVQb29s
Ojpwb29sU2l6ZSk7Ci0gICAgbV9lbnRyaWVzU2l6ZSA9IDA7Ci0gICAgbV9pbml0aWFsQWxsb2Mg
PSAxOwotICAgIG1fZW50cmllc1swXS5zZXROZXh0SW5GcmVlTGlzdCgwKTsKLX0KLQotV2Vha0dD
SGFuZGxlKiBXZWFrR0NIYW5kbGVQb29sOjphbGxvY2F0ZShKU0NlbGwqIGNlbGwpCi17Ci0gICAg
QVNTRVJUKGNlbGwpOwotICAgIEFTU0VSVChtX2VudHJpZXNbMF0uaXNOZXh0KCkpOwotICAgIHVu
c2lnbmVkIGZyZWVMaXN0ID0gbV9lbnRyaWVzWzBdLmdldE5leHRJbkZyZWVMaXN0KCk7Ci0gICAg
QVNTRVJUKGZyZWVMaXN0IDwgV2Vha0dDSGFuZGxlUG9vbDo6bnVtUG9vbEVudHJpZXMpOwotICAg
IEFTU0VSVChtX2VudHJpZXNTaXplIDwgV2Vha0dDSGFuZGxlUG9vbDo6bnVtUG9vbEVudHJpZXMp
OwotCi0gICAgaWYgKG1fZW50cmllc1NpemUgPT0gV2Vha0dDSGFuZGxlUG9vbDo6bnVtUG9vbEVu
dHJpZXMgLSAxKQotICAgICAgICByZXR1cm4gMDsKLQotICAgIGlmIChmcmVlTGlzdCkgewotICAg
ICAgICB1bnNpZ25lZCBpID0gZnJlZUxpc3Q7Ci0gICAgICAgIGZyZWVMaXN0ID0gbV9lbnRyaWVz
W2ldLmdldE5leHRJbkZyZWVMaXN0KCk7Ci0gICAgICAgIG1fZW50cmllc1tpXS5zZXQoY2VsbCk7
Ci0gICAgICAgIG1fZW50cmllc1swXS5zZXROZXh0SW5GcmVlTGlzdChmcmVlTGlzdCk7Ci0gICAg
ICAgICsrbV9lbnRyaWVzU2l6ZTsKLSAgICAgICAgcmV0dXJuICZtX2VudHJpZXNbaV07Ci0gICAg
fQotCi0gICAgQVNTRVJUKG1faW5pdGlhbEFsbG9jIDwgV2Vha0dDSGFuZGxlUG9vbDo6bnVtUG9v
bEVudHJpZXMpOwotCi0gICAgdW5zaWduZWQgaSA9IG1faW5pdGlhbEFsbG9jOwotICAgICsrbV9p
bml0aWFsQWxsb2M7Ci0gICAgbV9lbnRyaWVzW2ldLnNldChjZWxsKTsKLSAgICArK21fZW50cmll
c1NpemU7Ci0gICAgcmV0dXJuICZtX2VudHJpZXNbaV07Ci0KLX0KLQotdm9pZCBXZWFrR0NIYW5k
bGVQb29sOjpmcmVlKFdlYWtHQ0hhbmRsZSogaGFuZGxlKQotewotICAgIEFTU0VSVChoYW5kbGUt
PnBvb2woKSA9PSB0aGlzKTsKLSAgICBBU1NFUlQobV9lbnRyaWVzWzBdLmlzTmV4dCgpKTsKLSAg
ICB1bnNpZ25lZCBmcmVlTGlzdCA9IG1fZW50cmllc1swXS5nZXROZXh0SW5GcmVlTGlzdCgpOwot
ICAgIEFTU0VSVChmcmVlTGlzdCA8IFdlYWtHQ0hhbmRsZVBvb2w6Om51bVBvb2xFbnRyaWVzKTsK
LSAgICBoYW5kbGUtPnNldE5leHRJbkZyZWVMaXN0KGZyZWVMaXN0KTsKLSAgICBtX2VudHJpZXNb
MF0uc2V0TmV4dEluRnJlZUxpc3QoaGFuZGxlIC0gbV9lbnRyaWVzKTsKLSAgICAtLW1fZW50cmll
c1NpemU7Ci19Ci0KLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0dDSGFuZGxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HQ0hhbmRsZS5oCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ODE4Zjc5NmFjNDA4ZjZlOWFkMThhNTk4OWI5
M2EwYzI2OWE1YTVkLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dDSGFuZGxlLmgKKysrIC9kZXYvbnVs
bApAQCAtMSwxMTYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgR0NIYW5kbGVfaAotI2Rl
ZmluZSBHQ0hhbmRsZV9oCi0KLSNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgotCi1uYW1lc3Bh
Y2UgSlNDIHsKLQotY2xhc3MgSGVhcDsKLWNsYXNzIEpTQ2VsbDsKLWNsYXNzIFdlYWtHQ0hhbmRs
ZTsKLWNsYXNzIFdlYWtHQ0hhbmRsZVBvb2w7Ci0KLWNsYXNzIFdlYWtHQ0hhbmRsZSB7Ci0gICAg
ZnJpZW5kIGNsYXNzIFdlYWtHQ0hhbmRsZVBvb2w7Ci0KLXB1YmxpYzoKLSAgICAvLyBCZWNhdXNl
IEpTQ2VsbCBvYmplY3RzIGFyZSBhbGlnbmVkLCB3ZSBjYW4gdXNlIHRoZSBsb3dlciB0d28gYml0
cyBhcwotICAgIC8vIHN0YXR1cyBmbGFncy4gVGhlIGxlYXN0IHNpZ25pZmljYW50IGJpdCBpcyBz
ZXQgd2hlbiB0aGUgaGFuZGxlIGlzIG5vdCBhCi0gICAgLy8gcG9pbnRlciwgaS5lLiB3aGVuIGl0
J3MgdXNlZCBhcyBhIG9mZnNldCBmb3IgdGhlIGZyZWUgbGlzdCBpbgotICAgIC8vIFdlYWtHQ0hh
bmRsZVBvb2wuIFRoZSBzZWNvbmQgbGVhc3Qgc2lnbmlmaWNhbnQgYml0IGlzIHNldCB3aGVuIHRo
ZSBvYmplY3QKLSAgICAvLyB0aGUgcG9pbnRlciBjb3JyZXNwb25kcyB0byBoYXMgYmVlbiBkZWxl
dGVkIGJ5IGEgZ2FyYmFnZSBjb2xsZWN0aW9uCi0KLSAgICBib29sIGlzVmFsaWRQdHIoKSB7IHJl
dHVybiAhKG1fcHRyICYgMyk7IH0KLSAgICBib29sIGlzUHRyKCkgeyByZXR1cm4gIShtX3B0ciAm
IDEpOyB9Ci0gICAgYm9vbCBpc05leHQoKSB7IHJldHVybiAobV9wdHIgJiAzKSA9PSAxOyB9Ci0K
LSAgICB2b2lkIGludmFsaWRhdGUoKQotICAgIHsKLSAgICAgICAgQVNTRVJUKGlzVmFsaWRQdHIo
KSk7Ci0gICAgICAgIG1fcHRyIHw9IDI7Ci0gICAgfQotCi0gICAgSlNDZWxsKiBnZXQoKQotICAg
IHsKLSAgICAgICAgQVNTRVJUKGlzUHRyKCkpOwotICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRf
Y2FzdDxKU0NlbGwqPihtX3B0ciAmIH4zKTsKLSAgICB9Ci0KLSAgICB2b2lkIHNldChKU0NlbGwq
IHApCi0gICAgewotICAgICAgICBtX3B0ciA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90Pihw
KTsKLSAgICAgICAgQVNTRVJUKGlzUHRyKCkpOwotICAgIH0KLQotICAgIFdlYWtHQ0hhbmRsZVBv
b2wqIHBvb2woKTsKLQotcHJpdmF0ZToKLSAgICB1aW50cHRyX3QgZ2V0TmV4dEluRnJlZUxpc3Qo
KQotICAgIHsKLSAgICAgICAgQVNTRVJUKGlzTmV4dCgpKTsKLSAgICAgICAgcmV0dXJuIG1fcHRy
ID4+IDI7Ci0gICAgfQotCi0gICAgdm9pZCBzZXROZXh0SW5GcmVlTGlzdCh1aW50cHRyX3QgbikK
LSAgICB7Ci0gICAgICAgIG1fcHRyID0gKG4gPDwgMikgfCAxOwotICAgICAgICBBU1NFUlQoaXNO
ZXh0KCkpOwotICAgIH0KLQotICAgIHVpbnRwdHJfdCBtX3B0cjsKLX07Ci0KLWNsYXNzIFdlYWtH
Q0hhbmRsZVBvb2wgewotcHVibGljOgotICAgIHN0YXRpYyBjb25zdCBzaXplX3QgcG9vbFNpemUg
PSAzMiAqIDEwMjQ7IC8vIDMyawotICAgIHN0YXRpYyBjb25zdCBzaXplX3QgcG9vbE1hc2sgPSB+
KHBvb2xTaXplIC0gMSk7Ci0gICAgc3RhdGljIGNvbnN0IHNpemVfdCBudW1Qb29sRW50cmllcyA9
IChwb29sU2l6ZSAtIHNpemVvZihIZWFwKikgLSAzICogc2l6ZW9mKHVuc2lnbmVkKSkgLyBzaXpl
b2YoV2Vha0dDSGFuZGxlKTsKLQotICAgIFdlYWtHQ0hhbmRsZVBvb2woKTsKLQotICAgIFdlYWtH
Q0hhbmRsZSogYWxsb2NhdGUoSlNDZWxsKiBjZWxsKTsKLSAgICB2b2lkIGZyZWUoV2Vha0dDSGFu
ZGxlKik7Ci0KLSAgICBib29sIGlzRnVsbCgpCi0gICAgewotICAgICAgICBBU1NFUlQobV9lbnRy
aWVzU2l6ZSA8IFdlYWtHQ0hhbmRsZVBvb2w6Om51bVBvb2xFbnRyaWVzKTsKLSAgICAgICAgcmV0
dXJuIG1fZW50cmllc1NpemUgPT0gV2Vha0dDSGFuZGxlUG9vbDo6bnVtUG9vbEVudHJpZXMgLSAx
OwotICAgIH0KLQotICAgIHZvaWQgdXBkYXRlKCk7Ci0KLXByaXZhdGU6Ci0gICAgSGVhcCogbV9o
ZWFwOwotICAgIHVuc2lnbmVkIG1fZW50cmllc1NpemU7Ci0gICAgdW5zaWduZWQgbV9pbml0aWFs
QWxsb2M7Ci0KLSAgICBXZWFrR0NIYW5kbGUgbV9lbnRyaWVzW1dlYWtHQ0hhbmRsZVBvb2w6Om51
bVBvb2xFbnRyaWVzXTsKLX07Ci0KLX0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSGVhcC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9IZWFwLmNwcAppbmRleCBjMDUyMzNjYWQ3MDBkY2JmYjJiMjA3MGM4YTg1YWQ2ZjQ3Njg2NmY4
Li5mMDYyMzg4MDA2ZmFkMjRkYThhNmQwYTY5MGRiZTkwZjc0ZDAwZWY0IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9IZWFwLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9IZWFwLmNwcApAQCAtMjQsNyArMjQsNiBAQAogI2luY2x1ZGUgIkNv
ZGVCbG9jay5oIgogI2luY2x1ZGUgIkNvbnNlcnZhdGl2ZVNldC5oIgogI2luY2x1ZGUgIkdDQWN0
aXZpdHlDYWxsYmFjay5oIgotI2luY2x1ZGUgIkdDSGFuZGxlLmgiCiAjaW5jbHVkZSAiSW50ZXJw
cmV0ZXIuaCIKICNpbmNsdWRlICJKU0dsb2JhbERhdGEuaCIKICNpbmNsdWRlICJKU0dsb2JhbE9i
amVjdC5oIgpAQCAtNDksNiArNDgsNyBAQCBIZWFwOjpIZWFwKEpTR2xvYmFsRGF0YSogZ2xvYmFs
RGF0YSkKICAgICAsIG1fZ2xvYmFsRGF0YShnbG9iYWxEYXRhKQogICAgICwgbV9tYWNoaW5lU3Rh
Y2tNYXJrZXIodGhpcykKICAgICAsIG1fbWFya1N0YWNrKGdsb2JhbERhdGEtPmpzQXJyYXlWUHRy
KQorICAgICwgbV9oYW5kbGVIZWFwKGdsb2JhbERhdGEpCiAgICAgLCBtX2V4dHJhQ29zdCgwKQog
ewogICAgICgqbV9hY3Rpdml0eUNhbGxiYWNrKSgpOwpAQCAtNzcsNiArNzcsNyBAQCB2b2lkIEhl
YXA6OmRlc3Ryb3koKQogICAgIGRlbGV0ZSBtX21hcmtMaXN0U2V0OwogICAgIG1fbWFya0xpc3RT
ZXQgPSAwOwogCisgICAgbV9oYW5kbGVIZWFwLmNsZWFyV2Vha1BvaW50ZXJzKCk7CiAgICAgbV9t
YXJrZWRTcGFjZS5kZXN0cm95KCk7CiAKICAgICBtX2dsb2JhbERhdGEgPSAwOwpAQCAtMTI4LDM2
ICsxMjksNiBAQCB2b2lkKiBIZWFwOjphbGxvY2F0ZShzaXplX3QgcykKICAgICByZXR1cm4gcmVz
dWx0OwogfQogCi12b2lkIEhlYXA6OnVwZGF0ZVdlYWtHQ0hhbmRsZXMoKQotewotICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBtX3dlYWtHQ0hhbmRsZVBvb2xzLnNpemUoKTsgKytpKQotICAg
ICAgICB3ZWFrR0NIYW5kbGVQb29sKGkpLT51cGRhdGUoKTsKLX0KLQotdm9pZCBXZWFrR0NIYW5k
bGVQb29sOjp1cGRhdGUoKQotewotICAgIGZvciAodW5zaWduZWQgaSA9IDE7IGkgPCBXZWFrR0NI
YW5kbGVQb29sOjpudW1Qb29sRW50cmllczsgKytpKSB7Ci0gICAgICAgIGlmIChtX2VudHJpZXNb
aV0uaXNWYWxpZFB0cigpKSB7Ci0gICAgICAgICAgICBKU0NlbGwqIGNlbGwgPSBtX2VudHJpZXNb
aV0uZ2V0KCk7Ci0gICAgICAgICAgICBpZiAoIWNlbGwgfHwgIUhlYXA6OmlzTWFya2VkKGNlbGwp
KQotICAgICAgICAgICAgICAgIG1fZW50cmllc1tpXS5pbnZhbGlkYXRlKCk7Ci0gICAgICAgIH0K
LSAgICB9Ci19Ci0KLVdlYWtHQ0hhbmRsZSogSGVhcDo6YWRkV2Vha0dDSGFuZGxlKEpTQ2VsbCog
cHRyKQotewotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX3dlYWtHQ0hhbmRsZVBvb2xz
LnNpemUoKTsgKytpKQotICAgICAgICBpZiAoIXdlYWtHQ0hhbmRsZVBvb2woaSktPmlzRnVsbCgp
KQotICAgICAgICAgICAgcmV0dXJuIHdlYWtHQ0hhbmRsZVBvb2woaSktPmFsbG9jYXRlKHB0cik7
Ci0KLSAgICBQYWdlQWxsb2NhdGlvbkFsaWduZWQgYWxsb2NhdGlvbiA9IFBhZ2VBbGxvY2F0aW9u
QWxpZ25lZDo6YWxsb2NhdGUoV2Vha0dDSGFuZGxlUG9vbDo6cG9vbFNpemUsIFdlYWtHQ0hhbmRs
ZVBvb2w6OnBvb2xTaXplLCBPU0FsbG9jYXRvcjo6SlNHQ0hlYXBQYWdlcyk7Ci0gICAgbV93ZWFr
R0NIYW5kbGVQb29scy5hcHBlbmQoYWxsb2NhdGlvbik7Ci0KLSAgICBXZWFrR0NIYW5kbGVQb29s
KiBwb29sID0gbmV3IChhbGxvY2F0aW9uLmJhc2UoKSkgV2Vha0dDSGFuZGxlUG9vbCgpOwotICAg
IHJldHVybiBwb29sLT5hbGxvY2F0ZShwdHIpOwotfQotCiB2b2lkIEhlYXA6OnByb3RlY3QoSlNW
YWx1ZSBrKQogewogICAgIEFTU0VSVChrKTsKQEAgLTI2OSwxNCArMjQwLDE2IEBAIHZvaWQgSGVh
cDo6bWFya1Jvb3RzKCkKICAgICAgICAgSlNPTk9iamVjdDo6bWFya1N0cmluZ2lmaWVycyhtYXJr
U3RhY2ssIG1fZ2xvYmFsRGF0YS0+Zmlyc3RTdHJpbmdpZmllclRvTWFyayk7CiAgICAgbWFya1N0
YWNrLmRyYWluKCk7CiAKKyAgICBtX2hhbmRsZUhlYXAubWFya1N0cm9uZ0hhbmRsZXMobWFya1N0
YWNrKTsKKwogICAgIC8vIE1hcmsgdGhlIHNtYWxsIHN0cmluZ3MgY2FjaGUgbGFzdCwgc2luY2Ug
aXQgd2lsbCBjbGVhciBpdHNlbGYgaWYgbm90aGluZwogICAgIC8vIGVsc2UgaGFzIG1hcmtlZCBp
dC4KICAgICBtX2dsb2JhbERhdGEtPnNtYWxsU3RyaW5ncy5tYXJrQ2hpbGRyZW4obWFya1N0YWNr
KTsKIAogICAgIG1hcmtTdGFjay5kcmFpbigpOwogICAgIG1hcmtTdGFjay5jb21wYWN0KCk7Ci0K
LSAgICB1cGRhdGVXZWFrR0NIYW5kbGVzKCk7CisgICAgCisgICAgbV9oYW5kbGVIZWFwLnVwZGF0
ZUFmdGVyTWFyaygpOwogCiAgICAgbV9vcGVyYXRpb25JblByb2dyZXNzID0gTm9PcGVyYXRpb247
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9IZWFwLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9IZWFwLmgKaW5kZXggNjU5MWE1Yjc5MjIyZmVm
NDJlNGNlMDMyN2FlNmI1NDBiZWFhYzA0MC4uZmY5ZmE4MDU3NDNhNmJiYzNiYjZlN2M0NDkyZmFh
NmRkOTY5ZTllZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSGVh
cC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0hlYXAuaApAQCAtMjIsNiAr
MjIsNyBAQAogI2lmbmRlZiBIZWFwX2gKICNkZWZpbmUgSGVhcF9oCiAKKyNpbmNsdWRlICJIYW5k
bGVIZWFwLmgiCiAjaW5jbHVkZSAiTWFya1N0YWNrLmgiCiAjaW5jbHVkZSAiTWFya2VkU3BhY2Uu
aCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgpAQCAtMzQsNyArMzUsNiBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICBjbGFzcyBKU0NlbGw7CiAgICAgY2xhc3MgSlNHbG9iYWxEYXRhOwogICAgIGNs
YXNzIEpTVmFsdWU7Ci0gICAgY2xhc3MgSlNWYWx1ZTsKICAgICBjbGFzcyBMaXZlT2JqZWN0SXRl
cmF0b3I7CiAgICAgY2xhc3MgTWFya1N0YWNrOwogICAgIGNsYXNzIE1hcmtlZEFyZ3VtZW50QnVm
ZmVyOwpAQCAtODksOCArODksNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgUGFzc093blB0
cjxUeXBlQ291bnRTZXQ+IHByb3RlY3RlZE9iamVjdFR5cGVDb3VudHMoKTsKICAgICAgICAgUGFz
c093blB0cjxUeXBlQ291bnRTZXQ+IG9iamVjdFR5cGVDb3VudHMoKTsKIAotICAgICAgICBXZWFr
R0NIYW5kbGUqIGFkZFdlYWtHQ0hhbmRsZShKU0NlbGwqKTsKLQogICAgICAgICB2b2lkIHB1c2hU
ZW1wU29ydFZlY3RvcihWZWN0b3I8VmFsdWVTdHJpbmdQYWlyPiopOwogICAgICAgICB2b2lkIHBv
cFRlbXBTb3J0VmVjdG9yKFZlY3RvcjxWYWx1ZVN0cmluZ1BhaXI+Kik7CiAgICAgICAgIApAQCAt
MTAwLDYgKzk4LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIAogICAgICAgICB0ZW1wbGF0
ZSA8dHlwZW5hbWUgRnVuY3Rvcj4gdm9pZCBmb3JFYWNoKEZ1bmN0b3ImKTsKICAgICAgICAgCisg
ICAgICAgIEhhbmRsZVNsb3QgYWxsb2NhdGVHbG9iYWxIYW5kbGUoKSB7IHJldHVybiBtX2hhbmRs
ZUhlYXAuYWxsb2NhdGUoKTsgfQorCiAgICAgcHJpdmF0ZToKICAgICAgICAgZnJpZW5kIGNsYXNz
IEpTR2xvYmFsRGF0YTsKIApAQCAtMTEyLDkgKzExMiw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICB2b2lkIG1hcmtQcm90ZWN0ZWRPYmplY3RzKE1hcmtTdGFjayYpOwogICAgICAgICB2b2lk
IG1hcmtUZW1wU29ydFZlY3RvcnMoTWFya1N0YWNrJik7CiAKLSAgICAgICAgdm9pZCB1cGRhdGVX
ZWFrR0NIYW5kbGVzKCk7Ci0gICAgICAgIFdlYWtHQ0hhbmRsZVBvb2wqIHdlYWtHQ0hhbmRsZVBv
b2woc2l6ZV90IGluZGV4KTsKLSAgICAgICAgCiAgICAgICAgIGVudW0gU3dlZXBUb2dnbGUgeyBE
b05vdFN3ZWVwLCBEb1N3ZWVwIH07CiAgICAgICAgIHZvaWQgcmVzZXQoU3dlZXBUb2dnbGUpOwog
CkBAIC0xMjQsNyArMTIxLDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIE1hcmtlZFNwYWNl
IG1fbWFya2VkU3BhY2U7CiAKICAgICAgICAgUHJvdGVjdENvdW50U2V0IG1fcHJvdGVjdGVkVmFs
dWVzOwotICAgICAgICBWZWN0b3I8UGFnZUFsbG9jYXRpb25BbGlnbmVkPiBtX3dlYWtHQ0hhbmRs
ZVBvb2xzOwogICAgICAgICBWZWN0b3I8VmVjdG9yPFZhbHVlU3RyaW5nUGFpcj4qID4gbV90ZW1w
U29ydGluZ1ZlY3RvcnM7CiAgICAgICAgIEhhc2hTZXQ8R2xvYmFsQ29kZUJsb2NrKj4gbV9jb2Rl
QmxvY2tzOwogCkBAIC0xMzYsNiArMTMyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIAog
ICAgICAgICBNYWNoaW5lU3RhY2tNYXJrZXIgbV9tYWNoaW5lU3RhY2tNYXJrZXI7CiAgICAgICAg
IE1hcmtTdGFjayBtX21hcmtTdGFjazsKKyAgICAgICAgSGFuZGxlSGVhcCBtX2hhbmRsZUhlYXA7
CiAgICAgICAgIAogICAgICAgICBzaXplX3QgbV9leHRyYUNvc3Q7CiAgICAgfTsKQEAgLTE2NSwx
MSArMTYyLDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGlmIChjb3N0ID4gbWluRXh0cmFD
b3N0KSAKICAgICAgICAgICAgIHJlcG9ydEV4dHJhTWVtb3J5Q29zdFNsb3dDYXNlKGNvc3QpOwog
ICAgIH0KLSAgICAKLSAgICBpbmxpbmUgV2Vha0dDSGFuZGxlUG9vbCogSGVhcDo6d2Vha0dDSGFu
ZGxlUG9vbChzaXplX3QgaW5kZXgpCi0gICAgewotICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
V2Vha0dDSGFuZGxlUG9vbCo+KG1fd2Vha0dDSGFuZGxlUG9vbHNbaW5kZXhdLmJhc2UoKSk7Ci0g
ICAgfQogCiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIEZ1bmN0b3I+IGlubGluZSB2b2lkIEhlYXA6
OmZvckVhY2goRnVuY3RvciYgZnVuY3RvcikKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmNwcAppbmRleCBmZjg4MDQ4YzIxOTU5NGI5MTI1ZTAy
MmJjYTE4ZWM4NzE3YzEzYjU4Li5jZmY3MjUyMjRhNDQ1OTQwNTcyZWNlODA5YWU1ZGU1MDM2ZWJh
YTQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERh
dGEuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5j
cHAKQEAgLTEzOCw3ICsxMzgsNyBAQCBKU0dsb2JhbERhdGE6OkpTR2xvYmFsRGF0YShHbG9iYWxE
YXRhVHlwZSBnbG9iYWxEYXRhVHlwZSwgVGhyZWFkU3RhY2tUeXBlIHRocmVhZAogICAgICwgZW1w
dHlMaXN0KG5ldyBNYXJrZWRBcmd1bWVudEJ1ZmZlcikKICAgICAsIGxleGVyKG5ldyBMZXhlcih0
aGlzKSkKICAgICAsIHBhcnNlcihuZXcgUGFyc2VyKQotICAgICwgaW50ZXJwcmV0ZXIobmV3IElu
dGVycHJldGVyKQorICAgICwgaW50ZXJwcmV0ZXIoMCkKICAgICAsIGhlYXAodGhpcykKICAgICAs
IGR5bmFtaWNHbG9iYWxPYmplY3QoMCkKICAgICAsIGZpcnN0U3RyaW5naWZpZXJUb01hcmsoMCkK
QEAgLTE1Miw2ICsxNTIsNyBAQCBKU0dsb2JhbERhdGE6OkpTR2xvYmFsRGF0YShHbG9iYWxEYXRh
VHlwZSBnbG9iYWxEYXRhVHlwZSwgVGhyZWFkU3RhY2tUeXBlIHRocmVhZAogICAgICwgZXhjbHVz
aXZlVGhyZWFkKDApCiAjZW5kaWYKIHsKKyAgICBpbnRlcnByZXRlciA9IG5ldyBJbnRlcnByZXRl
cigqdGhpcyk7CiAgICAgaWYgKGdsb2JhbERhdGFUeXBlID09IERlZmF1bHQpCiAgICAgICAgIG1f
c3RhY2sgPSB3dGZUaHJlYWREYXRhKCkuc3RhY2soKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dsb2JhbERhdGEuaAppbmRleCA3YjY5MDU1ODFiMDBiMDAyMDViNGMyNTY0
ZjliZWI4ZjY0NTNiNjkwLi5hNjA5Yzc3ZTAxZjI5ODBhZDM5N2UzZjNkNDllNGFjODg5ODRmNjcx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuaApAQCAt
MjUzLDYgKzI1Myw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIGFkZFJlZ0V4cFRv
VHJhY2UoUGFzc1JlZlB0cjxSZWdFeHA+IHJlZ0V4cCk7CiAjZW5kaWYKICAgICAgICAgdm9pZCBk
dW1wUmVnRXhwVHJhY2UoKTsKKyAgICAgICAgSGFuZGxlU2xvdCBhbGxvY2F0ZUdsb2JhbEhhbmRs
ZSgpIHsgcmV0dXJuIGhlYXAuYWxsb2NhdGVHbG9iYWxIYW5kbGUoKTsgfQorCiAgICAgcHJpdmF0
ZToKICAgICAgICAgSlNHbG9iYWxEYXRhKEdsb2JhbERhdGFUeXBlLCBUaHJlYWRTdGFja1R5cGUp
OwogICAgICAgICBzdGF0aWMgSlNHbG9iYWxEYXRhKiYgc2hhcmVkSW5zdGFuY2VJbnRlcm5hbCgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmpl
Y3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3Bw
CmluZGV4IGYzMDMxOTY3NjQxMTA1ODYxMGNkZDY2MDQ0ODI0MmM1YjM0YTZhZWUuLjhlYzBkMjhi
MTZmYWIyMjBhNDE4Mzk5ZWM2MWM1NmJhZDNhYjkwZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKQEAgLTEwNiw5ICsxMDYsNiBAQCBK
U0dsb2JhbE9iamVjdDo6fkpTR2xvYmFsT2JqZWN0KCkKIAogICAgIGQoKS0+Z2xvYmFsRGF0YS0+
Z2xvYmFsT2JqZWN0cy50YWtlKHRoaXMpOwogCi0gICAgUmVnaXN0ZXJGaWxlJiByZWdpc3RlckZp
bGUgPSBnbG9iYWxEYXRhKCkuaW50ZXJwcmV0ZXItPnJlZ2lzdGVyRmlsZSgpOwotICAgIGlmIChy
ZWdpc3RlckZpbGUuY2xlYXJHbG9iYWxPYmplY3QodGhpcykpCi0gICAgICAgIHJlZ2lzdGVyRmls
ZS5zZXROdW1HbG9iYWxzKDApOwogICAgIGQoKS0+ZGVzdHJ1Y3RvcihkKCkpOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJh
dG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRl
cmF0b3IuY3BwCmluZGV4IDZmZDI4ZTNmYWZiNTYxOTVlYmE3OGNlMDNjYjExMjJjZGMzODBmZDQu
LjBkNzU5Y2ZjMTVjOWQyYmU5YjAwYzg1Y2FkNjRiMWUyOTY4MDVlMGEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3Iu
Y3BwCkBAIC00NywxMiArNDcsNiBAQCBpbmxpbmUgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6SlNQ
cm9wZXJ0eU5hbWVJdGVyYXRvcihFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TgogICAgICAgICBt
X2pzU3RyaW5nc1tpXS5zZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlzLCBqc093bmVkU3RyaW5n
KGV4ZWMsIHByb3BlcnR5TmFtZVZlY3RvcltpXS51c3RyaW5nKCkpKTsKIH0KIAotSlNQcm9wZXJ0
eU5hbWVJdGVyYXRvcjo6fkpTUHJvcGVydHlOYW1lSXRlcmF0b3IoKQotewotICAgIGlmIChtX2Nh
Y2hlZFN0cnVjdHVyZSkKLSAgICAgICAgbV9jYWNoZWRTdHJ1Y3R1cmUtPmNsZWFyRW51bWVyYXRp
b25DYWNoZSh0aGlzKTsKLX0KLQogSlNQcm9wZXJ0eU5hbWVJdGVyYXRvciogSlNQcm9wZXJ0eU5h
bWVJdGVyYXRvcjo6Y3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIG8pCiB7CiAgICAg
QVNTRVJUKCFvLT5zdHJ1Y3R1cmUoKS0+ZW51bWVyYXRpb25DYWNoZSgpIHx8CkBAIC04NSw3ICs3
OSw3IEBAIEpTUHJvcGVydHlOYW1lSXRlcmF0b3IqIEpTUHJvcGVydHlOYW1lSXRlcmF0b3I6OmNy
ZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0CiAKICAgICBqc1Byb3BlcnR5TmFtZUl0ZXJh
dG9yLT5zZXRDYWNoZWRQcm90b3R5cGVDaGFpbihzdHJ1Y3R1cmVDaGFpbik7CiAgICAganNQcm9w
ZXJ0eU5hbWVJdGVyYXRvci0+c2V0Q2FjaGVkU3RydWN0dXJlKG8tPnN0cnVjdHVyZSgpKTsKLSAg
ICBvLT5zdHJ1Y3R1cmUoKS0+c2V0RW51bWVyYXRpb25DYWNoZShqc1Byb3BlcnR5TmFtZUl0ZXJh
dG9yKTsKKyAgICBvLT5zdHJ1Y3R1cmUoKS0+c2V0RW51bWVyYXRpb25DYWNoZShleGVjLT5nbG9i
YWxEYXRhKCksIGpzUHJvcGVydHlOYW1lSXRlcmF0b3IpOwogICAgIHJldHVybiBqc1Byb3BlcnR5
TmFtZUl0ZXJhdG9yOwogfQogCkBAIC0xMDUsNCArOTksMTIgQEAgdm9pZCBKU1Byb3BlcnR5TmFt
ZUl0ZXJhdG9yOjptYXJrQ2hpbGRyZW4oTWFya1N0YWNrJiBtYXJrU3RhY2spCiAgICAgbWFya1N0
YWNrLmFwcGVuZFZhbHVlcyhtX2pzU3RyaW5ncy5nZXQoKSwgbV9qc1N0cmluZ3NTaXplLCBNYXlD
b250YWluTnVsbFZhbHVlcyk7CiB9CiAKKyNpZiAhQVNTRVJUX0RJU0FCTEVECisKK0pTUHJvcGVy
dHlOYW1lSXRlcmF0b3I6On5KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yKCkKK3sKKyAgICBBU1NFUlQo
IW1fY2FjaGVkU3RydWN0dXJlIHx8IG1fY2FjaGVkU3RydWN0dXJlLT5lbnVtZXJhdGlvbkNhY2hl
KCkgIT0gdGhpcyk7Cit9CisKKyNlbmRpZgogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgK
aW5kZXggY2Q0NjI0M2E4MDkxYzIxMGE3NDYyNTU3M2I3NzkzNGUzM2RjYTcyNy4uZmYyY2FlNTRl
ZWJkZjVjZmYyMmQxZDJmMjBmMWEyZTM0Y2UyYTFmMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuaApAQCAtNDksOCAr
NDksNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIFN0
cnVjdHVyZTo6Y3JlYXRlKHByb3RvdHlwZSwgVHlwZUluZm8oQ29tcG91bmRUeXBlLCBPdmVycmlk
ZXNNYXJrQ2hpbGRyZW4pLCBBbm9ueW1vdXNTbG90Q291bnQpOwogICAgICAgICB9Ci0gICAgICAg
IAotICAgICAgICB2aXJ0dWFsIH5KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yKCk7CiAKICAgICAgICAg
dmlydHVhbCBib29sIGlzUHJvcGVydHlOYW1lSXRlcmF0b3IoKSBjb25zdCB7IHJldHVybiB0cnVl
OyB9CiAKQEAgLTgwLDYgKzc4LDEwIEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgcHJpdmF0ZToK
ICAgICAgICAgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcihFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVB
cnJheURhdGEqIHByb3BlcnR5TmFtZUFycmF5RGF0YSwgc2l6ZV90IG51bUNhY2hlYWJsZVNsb3Qp
OworICAgICAgICAKKyNpZiAhQVNTRVJUX0RJU0FCTEVECisgICAgICAgIHZpcnR1YWwgfkpTUHJv
cGVydHlOYW1lSXRlcmF0b3IoKTsKKyNlbmRpZgogCiAgICAgICAgIFJlZlB0cjxTdHJ1Y3R1cmU+
IG1fY2FjaGVkU3RydWN0dXJlOwogICAgICAgICBSZWZQdHI8U3RydWN0dXJlQ2hhaW4+IG1fY2Fj
aGVkUHJvdG90eXBlQ2hhaW47CkBAIC04OCwxNSArOTAsMTUgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgIE93bkFycmF5UHRyPFdyaXRlQmFycmllcjxVbmtub3duPiA+IG1fanNTdHJpbmdzOwog
ICAgIH07CiAKLSAgICBpbmxpbmUgdm9pZCBTdHJ1Y3R1cmU6OnNldEVudW1lcmF0aW9uQ2FjaGUo
SlNQcm9wZXJ0eU5hbWVJdGVyYXRvciogZW51bWVyYXRpb25DYWNoZSkKKyAgICBpbmxpbmUgdm9p
ZCBTdHJ1Y3R1cmU6OnNldEVudW1lcmF0aW9uQ2FjaGUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRh
LCBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yKiBlbnVtZXJhdGlvbkNhY2hlKQogICAgIHsKICAgICAg
ICAgQVNTRVJUKCFpc0RpY3Rpb25hcnkoKSk7Ci0gICAgICAgIG1fZW51bWVyYXRpb25DYWNoZSA9
IGVudW1lcmF0aW9uQ2FjaGU7CisgICAgICAgIG1fZW51bWVyYXRpb25DYWNoZS5zZXQoZ2xvYmFs
RGF0YSwgZW51bWVyYXRpb25DYWNoZSwgMCk7CiAgICAgfQogCi0gICAgaW5saW5lIHZvaWQgU3Ry
dWN0dXJlOjpjbGVhckVudW1lcmF0aW9uQ2FjaGUoSlNQcm9wZXJ0eU5hbWVJdGVyYXRvciogZW51
bWVyYXRpb25DYWNoZSkKKyAgICBpbmxpbmUgdm9pZCBTdHJ1Y3R1cmU6OmNsZWFyRW51bWVyYXRp
b25DYWNoZSgpCiAgICAgewotICAgICAgICBtX2VudW1lcmF0aW9uQ2FjaGUuY2xlYXIoZW51bWVy
YXRpb25DYWNoZSk7CisgICAgICAgIG1fZW51bWVyYXRpb25DYWNoZS5jbGVhcigpOwogICAgIH0K
IAogICAgIGlubGluZSBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yKiBTdHJ1Y3R1cmU6OmVudW1lcmF0
aW9uQ2FjaGUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJv
dGVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvdGVjdC5oCmluZGV4IDBj
MWI1ZThlZjQzYmUxYzgxN2NkODhlZGE3Nzk2NzY2ZjFhM2ZhMWQuLjg0M2M5ZTExMTQ4Y2M3MGE2
N2NkYjY2MjU0NDcyNjMxNjhiZmY3YTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1Byb3RlY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Q
cm90ZWN0LmgKQEAgLTYxLDE1NSArNjEsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAg
IGdjVW5wcm90ZWN0KHZhbHVlLmFzQ2VsbCgpKTsKICAgICB9CiAKLSAgICAvLyBGSVhNRTogU2hh
cmUgbW9yZSBjb2RlIHdpdGggUmVmUHRyIHRlbXBsYXRlPyBUaGUgb25seSBkaWZmZXJlbmNlcyBh
cmUgdGhlIHJlZi9kZXJlZiBvcGVyYXRpb24KLSAgICAvLyBhbmQgdGhlIGltcGxpY2l0IGNvbnZl
cnNpb24gdG8gcmF3IHBvaW50ZXIKLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVD4gY2xhc3MgUHJvdGVj
dGVkUHRyIHsKLSAgICBwdWJsaWM6Ci0gICAgICAgIFByb3RlY3RlZFB0cigpIDogbV9wdHIoMCkg
e30KLSAgICAgICAgUHJvdGVjdGVkUHRyKFQqIHB0cik7Ci0gICAgICAgIFByb3RlY3RlZFB0cihj
b25zdCBQcm90ZWN0ZWRQdHImKTsKLSAgICAgICAgflByb3RlY3RlZFB0cigpOwotCi0gICAgICAg
IHRlbXBsYXRlIDxjbGFzcyBVPiBQcm90ZWN0ZWRQdHIoY29uc3QgUHJvdGVjdGVkUHRyPFU+Jik7
Ci0gICAgICAgIAotICAgICAgICBUKiBnZXQoKSBjb25zdCB7IHJldHVybiBtX3B0cjsgfQotICAg
ICAgICBvcGVyYXRvciBUKigpIGNvbnN0IHsgcmV0dXJuIG1fcHRyOyB9Ci0gICAgICAgIG9wZXJh
dG9yIEpTVmFsdWUoKSBjb25zdCB7IHJldHVybiBKU1ZhbHVlKG1fcHRyKTsgfQotICAgICAgICBU
KiBvcGVyYXRvci0+KCkgY29uc3QgeyByZXR1cm4gbV9wdHI7IH0KLSAgICAgICAgCi0gICAgICAg
IG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiBtX3B0cjsgfQotICAgICAgICBib29sIG9w
ZXJhdG9yISgpIGNvbnN0IHsgcmV0dXJuICFtX3B0cjsgfQotCi0gICAgICAgIFByb3RlY3RlZFB0
ciYgb3BlcmF0b3I9KGNvbnN0IFByb3RlY3RlZFB0ciYpOwotICAgICAgICBQcm90ZWN0ZWRQdHIm
IG9wZXJhdG9yPShUKik7Ci0gICAgICAgIAotICAgIHByaXZhdGU6Ci0gICAgICAgIFQqIG1fcHRy
OwotICAgIH07Ci0KLSAgICBjbGFzcyBQcm90ZWN0ZWRKU1ZhbHVlIHsKLSAgICBwdWJsaWM6Ci0g
ICAgICAgIFByb3RlY3RlZEpTVmFsdWUoKSB7fQotICAgICAgICBQcm90ZWN0ZWRKU1ZhbHVlKEpT
VmFsdWUgdmFsdWUpOwotICAgICAgICBQcm90ZWN0ZWRKU1ZhbHVlKGNvbnN0IFByb3RlY3RlZEpT
VmFsdWUmKTsKLSAgICAgICAgflByb3RlY3RlZEpTVmFsdWUoKTsKLQotICAgICAgICB0ZW1wbGF0
ZSA8Y2xhc3MgVT4gUHJvdGVjdGVkSlNWYWx1ZShjb25zdCBQcm90ZWN0ZWRQdHI8VT4mKTsKLSAg
ICAgICAgCi0gICAgICAgIEpTVmFsdWUgZ2V0KCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZTsgfQot
ICAgICAgICBvcGVyYXRvciBKU1ZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZTsgfQotICAg
ICAgICBKU1ZhbHVlIG9wZXJhdG9yLT4oKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlOyB9Ci0gICAg
ICAgIAotICAgICAgICBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZTsgfQot
ICAgICAgICBib29sIG9wZXJhdG9yISgpIGNvbnN0IHsgcmV0dXJuICFtX3ZhbHVlOyB9Ci0KLSAg
ICAgICAgUHJvdGVjdGVkSlNWYWx1ZSYgb3BlcmF0b3I9KGNvbnN0IFByb3RlY3RlZEpTVmFsdWUm
KTsKLSAgICAgICAgUHJvdGVjdGVkSlNWYWx1ZSYgb3BlcmF0b3I9KEpTVmFsdWUpOwotICAgICAg
ICAKLSAgICBwcml2YXRlOgotICAgICAgICBKU1ZhbHVlIG1fdmFsdWU7Ci0gICAgfTsKLQotICAg
IHRlbXBsYXRlIDxjbGFzcyBUPiBpbmxpbmUgUHJvdGVjdGVkUHRyPFQ+OjpQcm90ZWN0ZWRQdHIo
VCogcHRyKQotICAgICAgICA6IG1fcHRyKHB0cikKLSAgICB7Ci0gICAgICAgIGdjUHJvdGVjdE51
bGxUb2xlcmFudChtX3B0cik7Ci0gICAgfQotCi0gICAgdGVtcGxhdGUgPGNsYXNzIFQ+IGlubGlu
ZSBQcm90ZWN0ZWRQdHI8VD46OlByb3RlY3RlZFB0cihjb25zdCBQcm90ZWN0ZWRQdHImIG8pCi0g
ICAgICAgIDogbV9wdHIoby5nZXQoKSkKLSAgICB7Ci0gICAgICAgIGdjUHJvdGVjdE51bGxUb2xl
cmFudChtX3B0cik7Ci0gICAgfQotCi0gICAgdGVtcGxhdGUgPGNsYXNzIFQ+IGlubGluZSBQcm90
ZWN0ZWRQdHI8VD46On5Qcm90ZWN0ZWRQdHIoKQotICAgIHsKLSAgICAgICAgZ2NVbnByb3RlY3RO
dWxsVG9sZXJhbnQobV9wdHIpOwotICAgIH0KLQotICAgIHRlbXBsYXRlIDxjbGFzcyBUPiB0ZW1w
bGF0ZSA8Y2xhc3MgVT4gaW5saW5lIFByb3RlY3RlZFB0cjxUPjo6UHJvdGVjdGVkUHRyKGNvbnN0
IFByb3RlY3RlZFB0cjxVPiYgbykKLSAgICAgICAgOiBtX3B0cihvLmdldCgpKQotICAgIHsKLSAg
ICAgICAgZ2NQcm90ZWN0TnVsbFRvbGVyYW50KG1fcHRyKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0
ZSA8Y2xhc3MgVD4gaW5saW5lIFByb3RlY3RlZFB0cjxUPiYgUHJvdGVjdGVkUHRyPFQ+OjpvcGVy
YXRvcj0oY29uc3QgUHJvdGVjdGVkUHRyPFQ+JiBvKSAKLSAgICB7Ci0gICAgICAgIFQqIG9wdHIg
PSBvLm1fcHRyOwotICAgICAgICBnY1Byb3RlY3ROdWxsVG9sZXJhbnQob3B0cik7Ci0gICAgICAg
IGdjVW5wcm90ZWN0TnVsbFRvbGVyYW50KG1fcHRyKTsKLSAgICAgICAgbV9wdHIgPSBvcHRyOwot
ICAgICAgICByZXR1cm4gKnRoaXM7Ci0gICAgfQotCi0gICAgdGVtcGxhdGUgPGNsYXNzIFQ+IGlu
bGluZSBQcm90ZWN0ZWRQdHI8VD4mIFByb3RlY3RlZFB0cjxUPjo6b3BlcmF0b3I9KFQqIG9wdHIp
Ci0gICAgewotICAgICAgICBnY1Byb3RlY3ROdWxsVG9sZXJhbnQob3B0cik7Ci0gICAgICAgIGdj
VW5wcm90ZWN0TnVsbFRvbGVyYW50KG1fcHRyKTsKLSAgICAgICAgbV9wdHIgPSBvcHRyOwotICAg
ICAgICByZXR1cm4gKnRoaXM7Ci0gICAgfQotCi0gICAgaW5saW5lIFByb3RlY3RlZEpTVmFsdWU6
OlByb3RlY3RlZEpTVmFsdWUoSlNWYWx1ZSB2YWx1ZSkKLSAgICAgICAgOiBtX3ZhbHVlKHZhbHVl
KQotICAgIHsKLSAgICAgICAgZ2NQcm90ZWN0KG1fdmFsdWUpOwotICAgIH0KLQotICAgIGlubGlu
ZSBQcm90ZWN0ZWRKU1ZhbHVlOjpQcm90ZWN0ZWRKU1ZhbHVlKGNvbnN0IFByb3RlY3RlZEpTVmFs
dWUmIG8pCi0gICAgICAgIDogbV92YWx1ZShvLmdldCgpKQotICAgIHsKLSAgICAgICAgZ2NQcm90
ZWN0KG1fdmFsdWUpOwotICAgIH0KLQotICAgIGlubGluZSBQcm90ZWN0ZWRKU1ZhbHVlOjp+UHJv
dGVjdGVkSlNWYWx1ZSgpCi0gICAgewotICAgICAgICBnY1VucHJvdGVjdChtX3ZhbHVlKTsKLSAg
ICB9Ci0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVT4gUHJvdGVjdGVkSlNWYWx1ZTo6UHJvdGVjdGVk
SlNWYWx1ZShjb25zdCBQcm90ZWN0ZWRQdHI8VT4mIG8pCi0gICAgICAgIDogbV92YWx1ZShvLmdl
dCgpKQotICAgIHsKLSAgICAgICAgZ2NQcm90ZWN0KG1fdmFsdWUpOwotICAgIH0KLQotICAgIGlu
bGluZSBQcm90ZWN0ZWRKU1ZhbHVlJiBQcm90ZWN0ZWRKU1ZhbHVlOjpvcGVyYXRvcj0oY29uc3Qg
UHJvdGVjdGVkSlNWYWx1ZSYgbykgCi0gICAgewotICAgICAgICBKU1ZhbHVlIG92YWx1ZSA9IG8u
bV92YWx1ZTsKLSAgICAgICAgZ2NQcm90ZWN0KG92YWx1ZSk7Ci0gICAgICAgIGdjVW5wcm90ZWN0
KG1fdmFsdWUpOwotICAgICAgICBtX3ZhbHVlID0gb3ZhbHVlOwotICAgICAgICByZXR1cm4gKnRo
aXM7Ci0gICAgfQotCi0gICAgaW5saW5lIFByb3RlY3RlZEpTVmFsdWUmIFByb3RlY3RlZEpTVmFs
dWU6Om9wZXJhdG9yPShKU1ZhbHVlIG92YWx1ZSkKLSAgICB7Ci0gICAgICAgIGdjUHJvdGVjdChv
dmFsdWUpOwotICAgICAgICBnY1VucHJvdGVjdChtX3ZhbHVlKTsKLSAgICAgICAgbV92YWx1ZSA9
IG92YWx1ZTsKLSAgICAgICAgcmV0dXJuICp0aGlzOwotICAgIH0KLQotICAgIHRlbXBsYXRlIDxj
bGFzcyBUPiBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFByb3RlY3RlZFB0cjxUPiYgYSwg
Y29uc3QgUHJvdGVjdGVkUHRyPFQ+JiBiKSB7IHJldHVybiBhLmdldCgpID09IGIuZ2V0KCk7IH0K
LSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVD4gaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBQcm90
ZWN0ZWRQdHI8VD4mIGEsIGNvbnN0IFQqIGIpIHsgcmV0dXJuIGEuZ2V0KCkgPT0gYjsgfQotICAg
IHRlbXBsYXRlIDxjbGFzcyBUPiBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFQqIGEsIGNv
bnN0IFByb3RlY3RlZFB0cjxUPiYgYikgeyByZXR1cm4gYSA9PSBiLmdldCgpOyB9Ci0KLSAgICB0
ZW1wbGF0ZSA8Y2xhc3MgVD4gaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBQcm90ZWN0ZWRQ
dHI8VD4mIGEsIGNvbnN0IFByb3RlY3RlZFB0cjxUPiYgYikgeyByZXR1cm4gYS5nZXQoKSAhPSBi
LmdldCgpOyB9Ci0gICAgdGVtcGxhdGUgPGNsYXNzIFQ+IGlubGluZSBib29sIG9wZXJhdG9yIT0o
Y29uc3QgUHJvdGVjdGVkUHRyPFQ+JiBhLCBjb25zdCBUKiBiKSB7IHJldHVybiBhLmdldCgpICE9
IGI7IH0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVD4gaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25z
dCBUKiBhLCBjb25zdCBQcm90ZWN0ZWRQdHI8VD4mIGIpIHsgcmV0dXJuIGEgIT0gYi5nZXQoKTsg
fQotCi0gICAgaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBQcm90ZWN0ZWRKU1ZhbHVlJiBh
LCBjb25zdCBQcm90ZWN0ZWRKU1ZhbHVlJiBiKSB7IHJldHVybiBhLmdldCgpID09IGIuZ2V0KCk7
IH0KLSAgICBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFByb3RlY3RlZEpTVmFsdWUmIGEs
IGNvbnN0IEpTVmFsdWUgYikgeyByZXR1cm4gYS5nZXQoKSA9PSBiOyB9Ci0gICAgdGVtcGxhdGUg
PGNsYXNzIFQ+IGlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgUHJvdGVjdGVkSlNWYWx1ZSYg
YSwgY29uc3QgUHJvdGVjdGVkUHRyPFQ+JiBiKSB7IHJldHVybiBhLmdldCgpID09IEpTVmFsdWUo
Yi5nZXQoKSk7IH0KLSAgICBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEpTVmFsdWUgYSwg
Y29uc3QgUHJvdGVjdGVkSlNWYWx1ZSYgYikgeyByZXR1cm4gYSA9PSBiLmdldCgpOyB9Ci0gICAg
dGVtcGxhdGUgPGNsYXNzIFQ+IGlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgUHJvdGVjdGVk
UHRyPFQ+JiBhLCBjb25zdCBQcm90ZWN0ZWRKU1ZhbHVlJiBiKSB7IHJldHVybiBKU1ZhbHVlKGEu
Z2V0KCkpID09IGIuZ2V0KCk7IH0KLQotICAgIGlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3Qg
UHJvdGVjdGVkSlNWYWx1ZSYgYSwgY29uc3QgUHJvdGVjdGVkSlNWYWx1ZSYgYikgeyByZXR1cm4g
YS5nZXQoKSAhPSBiLmdldCgpOyB9Ci0gICAgaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBQ
cm90ZWN0ZWRKU1ZhbHVlJiBhLCBjb25zdCBKU1ZhbHVlIGIpIHsgcmV0dXJuIGEuZ2V0KCkgIT0g
YjsgfQotICAgIHRlbXBsYXRlIDxjbGFzcyBUPiBpbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0
IFByb3RlY3RlZEpTVmFsdWUmIGEsIGNvbnN0IFByb3RlY3RlZFB0cjxUPiYgYikgeyByZXR1cm4g
YS5nZXQoKSAhPSBKU1ZhbHVlKGIuZ2V0KCkpOyB9Ci0gICAgaW5saW5lIGJvb2wgb3BlcmF0b3Ih
PShjb25zdCBKU1ZhbHVlIGEsIGNvbnN0IFByb3RlY3RlZEpTVmFsdWUmIGIpIHsgcmV0dXJuIGEg
IT0gYi5nZXQoKTsgfQotICAgIHRlbXBsYXRlIDxjbGFzcyBUPiBpbmxpbmUgYm9vbCBvcGVyYXRv
ciE9KGNvbnN0IFByb3RlY3RlZFB0cjxUPiYgYSwgY29uc3QgUHJvdGVjdGVkSlNWYWx1ZSYgYikg
eyByZXR1cm4gSlNWYWx1ZShhLmdldCgpKSAhPSBiLmdldCgpOyB9Ci0gCiB9IC8vIG5hbWVzcGFj
ZSBKU0MKIAogI2VuZGlmIC8vIFByb3RlY3RfaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1N0cnVjdHVyZS5jcHAKaW5kZXggZThmNWQ3YTk5NzkxMGQ2YmZjYTk3MjkxZDdjYTQ5Mjg0
ZTRlYjdjNS4uOTY3ZTRkN2NiZmMzMDcyMWY0MGNmZTQ2ODFlY2JlZGU3YjViMDVlMSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCkBAIC0yNjYsNyArMjY2
LDYgQEAgU3RydWN0dXJlOjp+U3RydWN0dXJlKCkKICAgICAgICAgbV9wcmV2aW91cy0+dHJhbnNp
dGlvblRhYmxlUmVtb3ZlKG1ha2VfcGFpcihtX25hbWVJblByZXZpb3VzLmdldCgpLCBtX2F0dHJp
YnV0ZXNJblByZXZpb3VzKSwgbV9zcGVjaWZpY1ZhbHVlSW5QcmV2aW91cyk7CiAKICAgICB9Ci0g
ICAgQVNTRVJUKCFtX2VudW1lcmF0aW9uQ2FjaGUuaGFzRGVhZE9iamVjdCgpKTsKIAogICAgIGlm
IChtX3Byb3BlcnR5VGFibGUpIHsKICAgICAgICAgdW5zaWduZWQgZW50cnlDb3VudCA9IG1fcHJv
cGVydHlUYWJsZS0+a2V5Q291bnQgKyBtX3Byb3BlcnR5VGFibGUtPmRlbGV0ZWRTZW50aW5lbENv
dW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJl
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaAppbmRleCA3Nzcy
NGFjZmYzNTQ2NjBjODI1MjJhN2E1NzUxNDhmNmU4OWY3ODQ3Li42MDI0ZmEyMTEyZGUwZjMwODYy
YjQ0ZmEzZDRjODE5NmE4OTg1NWZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TdHJ1Y3R1cmUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
dHJ1Y3R1cmUuaApAQCAtMTM2LDggKzEzNiw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2
b2lkIGRlc3BlY2lmeURpY3Rpb25hcnlGdW5jdGlvbihjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0
eU5hbWUpOwogICAgICAgICB2b2lkIGRpc2FibGVTcGVjaWZpY0Z1bmN0aW9uVHJhY2tpbmcoKSB7
IG1fc3BlY2lmaWNGdW5jdGlvblRocmFzaENvdW50ID0gbWF4U3BlY2lmaWNGdW5jdGlvblRocmFz
aENvdW50OyB9CiAKLSAgICAgICAgdm9pZCBzZXRFbnVtZXJhdGlvbkNhY2hlKEpTUHJvcGVydHlO
YW1lSXRlcmF0b3IqIGVudW1lcmF0aW9uQ2FjaGUpOyAvLyBEZWZpbmVkIGluIEpTUHJvcGVydHlO
YW1lSXRlcmF0b3IuaC4KLSAgICAgICAgdm9pZCBjbGVhckVudW1lcmF0aW9uQ2FjaGUoSlNQcm9w
ZXJ0eU5hbWVJdGVyYXRvciogZW51bWVyYXRpb25DYWNoZSk7IC8vIERlZmluZWQgaW4gSlNQcm9w
ZXJ0eU5hbWVJdGVyYXRvci5oLgorICAgICAgICB2b2lkIHNldEVudW1lcmF0aW9uQ2FjaGUoSlNH
bG9iYWxEYXRhJiwgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvciogZW51bWVyYXRpb25DYWNoZSk7IC8v
IERlZmluZWQgaW4gSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oLgorICAgICAgICB2b2lkIGNsZWFy
RW51bWVyYXRpb25DYWNoZSgpOyAvLyBEZWZpbmVkIGluIEpTUHJvcGVydHlOYW1lSXRlcmF0b3Iu
aC4KICAgICAgICAgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvciogZW51bWVyYXRpb25DYWNoZSgpOyAv
LyBEZWZpbmVkIGluIEpTUHJvcGVydHlOYW1lSXRlcmF0b3IuaC4KICAgICAgICAgdm9pZCBnZXRQ
cm9wZXJ0eU5hbWVzKFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlIG1vZGUpOwog
ICAgICAgICAKQEAgLTIyMCw3ICsyMjAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAg
IFN0cnVjdHVyZSogbV9zaW5nbGVUcmFuc2l0aW9uOwogICAgICAgICB9IG1fdHJhbnNpdGlvbnM7
CiAKLSAgICAgICAgV2Vha0dDUHRyPEpTUHJvcGVydHlOYW1lSXRlcmF0b3I+IG1fZW51bWVyYXRp
b25DYWNoZTsKKyAgICAgICAgTGF6eVdlYWtHQ1B0cjxKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yPiBt
X2VudW1lcmF0aW9uQ2FjaGU7CiAKICAgICAgICAgUHJvcGVydHlNYXBIYXNoVGFibGUqIG1fcHJv
cGVydHlUYWJsZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
V2Vha0dDUHRyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrR0NQdHIuaApp
bmRleCA0OTQ2ZWU3YzViMTNlMmYwYmU3YmU4ZjZkZDBlODJhYjM3ZTQ3ODJhLi5hOWI2OWQ1NWVj
NjRhZDI3MWFlZTA1NzA0MWQxZmNiNzRhZjZjZTM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9XZWFrR0NQdHIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9XZWFrR0NQdHIuaApAQCAtMjYsMTI3ICsyNiwxMTEgQEAKICNpZm5kZWYgV2Vha0dD
UHRyX2gKICNkZWZpbmUgV2Vha0dDUHRyX2gKIAorI2luY2x1ZGUgIkdsb2JhbC5oIgogI2luY2x1
ZGUgIkhlYXAuaCIKLSNpbmNsdWRlICJHQ0hhbmRsZS5oIgogCiBuYW1lc3BhY2UgSlNDIHsKKy8v
IEEgc21hcnQgcG9pbnRlciB3aG9zZSBnZXQoKSBmdW5jdGlvbiByZXR1cm5zIDAgZm9yIGNlbGxz
IHRoYXQgaGF2ZSBkaWVkCisKK3RlbXBsYXRlIDx0eXBlbmFtZSBULCBib29sIGlzTGF6eT4gY2xh
c3MgV2Vha0dDUHRyQmFzZSA6IHB1YmxpYyBIYW5kbGVDb252ZXJ0ZXI8V2Vha0dDUHRyQmFzZTxU
LCBpc0xhenk+LCBUPiB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoV2Vha0dDUHRyQmFzZSk7
CiAKLS8vIEEgc21hcnQgcG9pbnRlciB3aG9zZSBnZXQoKSBmdW5jdGlvbiByZXR1cm5zIDAgZm9y
IGNlbGxzIGF3YWl0aW5nIGRlc3RydWN0aW9uLgotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNz
IFdlYWtHQ1B0ciB7Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoV2Vha0dDUHRyKTsKIHB1Ymxp
YzoKLSAgICBXZWFrR0NQdHIoKQotICAgICAgICA6IG1fcHRyKDApCisgICAgdHlwZWRlZiB0eXBl
bmFtZSBIYW5kbGVUeXBlczxUPjo6RXh0ZXJuYWxUeXBlIEV4dGVybmFsVHlwZTsKKworICAgIEV4
dGVybmFsVHlwZSBnZXQoKSBjb25zdCB7IHJldHVybiAgSGFuZGxlVHlwZXM8VD46OmdldEZyb21T
bG90KG1fc2xvdCk7IH0KKyAgICAKKyAgICB2b2lkIGNsZWFyKCkKICAgICB7CisgICAgICAgIGlm
ICghaXNMYXp5IHx8IG1fc2xvdCkKKyAgICAgICAgICAgIGludGVybmFsU2V0KEV4dGVybmFsVHlw
ZSgpKTsKICAgICB9CisgICAgCisgICAgYm9vbCBvcGVyYXRvciEoKSBjb25zdCB7IHJldHVybiAo
aXNMYXp5ICYmICFtX3Nsb3QpIHx8ICEqbV9zbG90OyB9CiAKLSAgICBXZWFrR0NQdHIoVCogcHRy
KSB7IGFzc2lnbihwdHIpOyB9CisgICAgLy8gVGhpcyBjb252ZXJzaW9uIG9wZXJhdG9yIGFsbG93
cyBpbXBsaWNpdCBjb252ZXJzaW9uIHRvIGJvb2wgYnV0IG5vdCB0byBvdGhlciBpbnRlZ2VyIHR5
cGVzLgorICAgIHR5cGVkZWYgRXh0ZXJuYWxUeXBlIChXZWFrR0NQdHJCYXNlOjoqVW5zcGVjaWZp
ZWRCb29sVHlwZSk7CisgICAgb3BlcmF0b3IgVW5zcGVjaWZpZWRCb29sVHlwZSooKSBjb25zdCB7
IHJldHVybiAhKnRoaXMgPyAwIDogcmVpbnRlcnByZXRfY2FzdDxVbnNwZWNpZmllZEJvb2xUeXBl
Kj4oMSk7IH0KKworICAgIH5XZWFrR0NQdHJCYXNlKCkKKyAgICB7CisgICAgICAgIGlmIChpc0xh
enkgJiYgIW1fc2xvdCkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgSGFuZGxlSGVhcDo6
aGVhcEZvcihtX3Nsb3QpLT5kZWFsbG9jYXRlKG1fc2xvdCk7CisgICAgfQogCi0gICAgfldlYWtH
Q1B0cigpCitwcm90ZWN0ZWQ6CisgICAgV2Vha0dDUHRyQmFzZSgpCisgICAgICAgIDogbV9zbG90
KDApCiAgICAgewotICAgICAgICBpZiAobV9wdHIpCi0gICAgICAgICAgICBtX3B0ci0+cG9vbCgp
LT5mcmVlKG1fcHRyKTsKKyAgICAgICAgQ09NUElMRV9BU1NFUlQoaXNMYXp5LCBEb250X2NhbGxf
ZGVmYXVsdF9jb25zdHJ1Y3Rvcl9vbl9ub25sYXp5X2hhbmRsZSk7CiAgICAgfQogCi0gICAgVCog
Z2V0KCkgY29uc3QKKyAgICBXZWFrR0NQdHJCYXNlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwg
RmluYWxpemVyIGZpbmFsaXplciA9IDApCisgICAgICAgIDogbV9zbG90KGdsb2JhbERhdGEuYWxs
b2NhdGVHbG9iYWxIYW5kbGUoKSkKICAgICB7Ci0gICAgICAgIGlmIChtX3B0ciAmJiBtX3B0ci0+
aXNWYWxpZFB0cigpKQotICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFQqPihtX3B0ci0+
Z2V0KCkpOwotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgQ09NUElMRV9BU1NFUlQoIWlzTGF6
eSwgRG9udF9jYWxsX2Fzc2lnbmluZ19jb25zdHJ1Y3Rvcl9vbl9sYXp5X2hhbmRsZSk7CisgICAg
ICAgIEhhbmRsZUhlYXA6OmhlYXBGb3IobV9zbG90KS0+bWFrZVdlYWsobV9zbG90LCBmaW5hbGl6
ZXIpOwogICAgIH0KICAgICAKLSAgICBib29sIGNsZWFyKEpTQ2VsbCogcCkKKyAgICBXZWFrR0NQ
dHJCYXNlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgRXh0ZXJuYWxUeXBlIHZhbHVlLCBGaW5h
bGl6ZXIgZmluYWxpemVyID0gMCkKKyAgICAgICAgOiBtX3Nsb3QoZ2xvYmFsRGF0YS5hbGxvY2F0
ZUdsb2JhbEhhbmRsZSgpKQogICAgIHsKLSAgICAgICAgaWYgKCFtX3B0ciB8fCBtX3B0ci0+Z2V0
KCkgIT0gcCkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgICAgICBtX3B0ci0+cG9v
bCgpLT5mcmVlKG1fcHRyKTsKLSAgICAgICAgbV9wdHIgPSAwOwotICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICAgICAgQ09NUElMRV9BU1NFUlQoIWlzTGF6eSwgRG9udF9jYWxsX2Fzc2lnbmluZ19j
b25zdHJ1Y3Rvcl9vbl9sYXp5X2hhbmRsZSk7CisgICAgICAgIEhhbmRsZUhlYXA6OmhlYXBGb3Io
bV9zbG90KS0+bWFrZVdlYWsobV9zbG90LCBmaW5hbGl6ZXIpOworICAgICAgICBpbnRlcm5hbFNl
dCh2YWx1ZSk7CiAgICAgfQotCi0gICAgVCYgb3BlcmF0b3IqKCkgY29uc3QgeyByZXR1cm4gKmdl
dCgpOyB9Ci0gICAgVCogb3BlcmF0b3ItPigpIGNvbnN0IHsgcmV0dXJuIGdldCgpOyB9CiAgICAg
Ci0gICAgYm9vbCBvcGVyYXRvciEoKSBjb25zdCB7IHJldHVybiAhZ2V0KCk7IH0KKyAgICB2b2lk
IGludGVybmFsU2V0KEV4dGVybmFsVHlwZSB2YWx1ZSkKKyAgICB7CisgICAgICAgIEFTU0VSVCht
X3Nsb3QpOworICAgICAgICBKU1ZhbHVlIG5ld1ZhbHVlKEhhbmRsZVR5cGVzPFQ+Ojp0b0pTVmFs
dWUodmFsdWUpKTsKKyAgICAgICAgSGFuZGxlSGVhcDo6aGVhcEZvcihtX3Nsb3QpLT53cml0ZUJh
cnJpZXIobV9zbG90LCBuZXdWYWx1ZSk7CisgICAgICAgICptX3Nsb3QgPSBuZXdWYWx1ZTsKKyAg
ICB9CiAKLSAgICAvLyBUaGlzIGNvbnZlcnNpb24gb3BlcmF0b3IgYWxsb3dzIGltcGxpY2l0IGNv
bnZlcnNpb24gdG8gYm9vbCBidXQgbm90IHRvIG90aGVyIGludGVnZXIgdHlwZXMuCi0jaWYgQ09N
UElMRVIoV0lOU0NXKQotICAgIG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiBtX3B0cjsg
fQotI2Vsc2UKLSAgICB0eXBlZGVmIFdlYWtHQ0hhbmRsZSogV2Vha0dDUHRyOjoqVW5zcGVjaWZp
ZWRCb29sVHlwZTsKLSAgICBvcGVyYXRvciBVbnNwZWNpZmllZEJvb2xUeXBlKCkgY29uc3QgeyBy
ZXR1cm4gZ2V0KCkgPyAmV2Vha0dDUHRyOjptX3B0ciA6IDA7IH0KLSNlbmRpZgorICAgIEhhbmRs
ZVNsb3QgbV9zbG90OworfTsKIAotICAgIFdlYWtHQ1B0ciYgb3BlcmF0b3I9KFQqKTsKK3RlbXBs
YXRlIDx0eXBlbmFtZSBUPiBjbGFzcyBMYXp5V2Vha0dDUHRyIDogcHVibGljIFdlYWtHQ1B0ckJh
c2U8VCwgdHJ1ZT4geworcHVibGljOgorICAgIHR5cGVkZWYgdHlwZW5hbWUgV2Vha0dDUHRyQmFz
ZTxULCB0cnVlPjo6RXh0ZXJuYWxUeXBlIEV4dGVybmFsVHlwZTsKIAotI2lmICFBU1NFUlRfRElT
QUJMRUQKLSAgICBib29sIGhhc0RlYWRPYmplY3QoKSBjb25zdCB7IHJldHVybiAhIW1fcHRyOyB9
Ci0jZW5kaWYKKyAgICBMYXp5V2Vha0dDUHRyKCkKKyAgICB7CisgICAgfQogCi1wcml2YXRlOgot
ICAgIHZvaWQgYXNzaWduKEpTQ2VsbCogcHRyKQorICAgIHZvaWQgc2V0KEpTR2xvYmFsRGF0YSYg
Z2xvYmFsRGF0YSwgRXh0ZXJuYWxUeXBlIHZhbHVlLCBGaW5hbGl6ZXIgZmluYWxpemVyKQogICAg
IHsKLSAgICAgICAgQVNTRVJUKHB0cik7Ci0gICAgICAgIGlmIChtX3B0cikKLSAgICAgICAgICAg
IG1fcHRyLT5zZXQocHRyKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgbV9wdHIgPSBIZWFw
OjpoZWFwKHB0ciktPmFkZFdlYWtHQ0hhbmRsZShwdHIpOworICAgICAgICBpZiAoIXRoaXMtPm1f
c2xvdCkgeworICAgICAgICAgICAgdGhpcy0+bV9zbG90ID0gZ2xvYmFsRGF0YS5hbGxvY2F0ZUds
b2JhbEhhbmRsZSgpOworICAgICAgICAgICAgSGFuZGxlSGVhcDo6aGVhcEZvcih0aGlzLT5tX3Ns
b3QpLT5tYWtlV2Vhayh0aGlzLT5tX3Nsb3QsIGZpbmFsaXplcik7CisgICAgICAgIH0KKyAgICAg
ICAgdGhpcy0+aW50ZXJuYWxTZXQodmFsdWUpOwogICAgIH0KIAotICAgIFdlYWtHQ0hhbmRsZSog
bV9wdHI7CiB9OwogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gaW5saW5lIFdlYWtHQ1B0cjxUPiYg
V2Vha0dDUHRyPFQ+OjpvcGVyYXRvcj0oVCogb3B0cikKLXsKLSAgICBhc3NpZ24ob3B0cik7Ci0g
ICAgcmV0dXJuICp0aGlzOwotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4g
aW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBXZWFrR0NQdHI8VD4mIGEsIGNvbnN0IFdlYWtH
Q1B0cjxVPiYgYikKLXsgCi0gICAgcmV0dXJuIGEuZ2V0KCkgPT0gYi5nZXQoKTsgCi19Ci0KLXRl
bXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNv
bnN0IFdlYWtHQ1B0cjxUPiYgYSwgVSogYikKLXsgCi0gICAgcmV0dXJuIGEuZ2V0KCkgPT0gYjsg
Ci19Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBpbmxpbmUgYm9vbCBvcGVy
YXRvcj09KFQqIGEsIGNvbnN0IFdlYWtHQ1B0cjxVPiYgYikgCi17Ci0gICAgcmV0dXJuIGEgPT0g
Yi5nZXQoKTsgCi19Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBpbmxpbmUg
Ym9vbCBvcGVyYXRvciE9KGNvbnN0IFdlYWtHQ1B0cjxUPiYgYSwgY29uc3QgV2Vha0dDUHRyPFU+
JiBiKQoteyAKLSAgICByZXR1cm4gYS5nZXQoKSAhPSBiLmdldCgpOyAKLX0KLQotdGVtcGxhdGUg
PHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+IGlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgV2Vh
a0dDUHRyPFQ+JiBhLCBVKiBiKQotewotICAgIHJldHVybiBhLmdldCgpICE9IGI7IAotfQotCi10
ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4gaW5saW5lIGJvb2wgb3BlcmF0b3IhPShU
KiBhLCBjb25zdCBXZWFrR0NQdHI8VT4mIGIpCi17IAotICAgIHJldHVybiBhICE9IGIuZ2V0KCk7
IAotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4gaW5saW5lIFdlYWtHQ1B0
cjxUPiBzdGF0aWNfcG9pbnRlcl9jYXN0KGNvbnN0IFdlYWtHQ1B0cjxVPiYgcCkKLXsgCi0gICAg
cmV0dXJuIFdlYWtHQ1B0cjxUPihzdGF0aWNfY2FzdDxUKj4ocC5nZXQoKSkpOyAKLX0KLQotdGVt
cGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+IGlubGluZSBXZWFrR0NQdHI8VD4gY29uc3Rf
cG9pbnRlcl9jYXN0KGNvbnN0IFdlYWtHQ1B0cjxVPiYgcCkKLXsgCi0gICAgcmV0dXJuIFdlYWtH
Q1B0cjxUPihjb25zdF9jYXN0PFQqPihwLmdldCgpKSk7IAotfQotCi10ZW1wbGF0ZSA8dHlwZW5h
bWUgVD4gaW5saW5lIFQqIGdldChjb25zdCBXZWFrR0NQdHI8VD4mIHApCi17Ci0gICAgcmV0dXJu
IHAuZ2V0KCk7Ci19Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY2xhc3MgV2Vha0dDUHRyIDogcHVi
bGljIFdlYWtHQ1B0ckJhc2U8VCwgZmFsc2U+ICB7CitwdWJsaWM6CisgICAgdHlwZWRlZiB0eXBl
bmFtZSBXZWFrR0NQdHJCYXNlPFQsIGZhbHNlPjo6RXh0ZXJuYWxUeXBlIEV4dGVybmFsVHlwZTsK
KyAgICAKKyAgICBXZWFrR0NQdHIoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBGaW5hbGl6ZXIg
ZmluYWxpemVyID0gMCkKKyAgICAgICAgOiBXZWFrR0NQdHJCYXNlPFQsIGZhbHNlPihnbG9iYWxE
YXRhLCBmaW5hbGl6ZXIpCisgICAgeworICAgIH0KKyAgICAKKyAgICBXZWFrR0NQdHIoSlNHbG9i
YWxEYXRhJiBnbG9iYWxEYXRhLCBFeHRlcm5hbFR5cGUgdmFsdWUsIEZpbmFsaXplciBmaW5hbGl6
ZXIgPSAwKQorICAgICAgICA6IFdlYWtHQ1B0ckJhc2U8VCwgZmFsc2U+KGdsb2JhbERhdGEsIHZh
bHVlLCBmaW5hbGl6ZXIpCisgICAgeworICAgIH0KKyAgICAKKyAgICBjb25zdCBXZWFrR0NQdHIm
IG9wZXJhdG9yPShFeHRlcm5hbFR5cGUgdmFsdWUpCisgICAgeworICAgICAgICB0aGlzLT5pbnRl
cm5hbFNldCh2YWx1ZSk7CisgICAgICAgIHJldHVybiAqdGhpczsKKyAgICB9Cit9OwogCiB9IC8v
IG5hbWVzcGFjZSBKU0MKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvV3JpdGVCYXJyaWVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Xcml0ZUJh
cnJpZXIuaAppbmRleCA2NDE1MGVkY2U1OGIxYTA1NDUxOTBhNzg0ZDBhODVlOTI0NGIyYTA1Li40
NDg0MGFkZGQ3MWFiZmY1NzExODIyNjMzNWQ1ZWQzZjdlMDA2YjdlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Xcml0ZUJhcnJpZXIuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Xcml0ZUJhcnJpZXIuaApAQCAtMzMsNiArMzMsNyBAQCBjbGFz
cyBKU0NlbGw7CiBjbGFzcyBKU0dsb2JhbERhdGE7CiAKIHR5cGVkZWYgZW51bSB7IH0gVW5rbm93
bjsKK3R5cGVkZWYgSlNWYWx1ZSogSGFuZGxlU2xvdDsKIAogdGVtcGxhdGUgPGNsYXNzIFQ+IGNs
YXNzIERlcHJlY2F0ZWRQdHIgewogcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRHbHVlL0NoYW5nZUxvZyBiL1NvdXJjZS9KYXZhU2NyaXB0R2x1ZS9DaGFuZ2VMb2cKaW5kZXgg
Y2MxMzg4NGQ5MTNhZmQ2NGRlODQ2MDllODNkNWFhNTI4YzYzMjRiZC4uMzRlZjQ1MjI3MGJhY2U5
MWRjZDE2YjkzODBjMjE2NTcwNTk2MmRlYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRH
bHVlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdEdsdWUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMjAgQEAKKzIwMTEtMDItMTQgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZWZhY3Rv
ciBoYW5kbGVzIGFuZCB3ZWFrIHBvaW50ZXJzIHRvIGJlY29tZSBuaWNlciBhbmQgbW9yZSBhdXRv
bWF0aWMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU0
NDE1CisKKyAgICAgICAgVXBkYXRlIHRvIHVzZSBuZXcgR2xvYmFsPD4gdHlwZQorCisgICAgICAg
ICogSlNSdW4uY3BwOgorICAgICAgICAoSlNSdW46OkpTUnVuKToKKyAgICAgICAgKEpTUnVuOjpH
bG9iYWxPYmplY3QpOgorICAgICAgICAqIEpTUnVuLmg6CisgICAgICAgICogSlNWYWx1ZVdyYXBw
ZXIuY3BwOgorICAgICAgICAoSlNWYWx1ZVdyYXBwZXI6OkpTVmFsdWVXcmFwcGVyKToKKyAgICAg
ICAgKiBKU1ZhbHVlV3JhcHBlci5oOgorCiAyMDExLTAyLTEzICBDYW1lcm9uIFp3YXJpY2ggIDx6
d2FyaWNoQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYW4gQmVybnN0ZWluLgpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRHbHVlL0pTUnVuLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0R2x1ZS9KU1J1bi5jcHAKaW5kZXggMDNmYzQzMWI5MWFjNWNhOWM5N2FlOWIzZjkwN2Rl
MGYyMTUxYTMwYy4uNzgxNTFjMWU0OTY4OGYyYjMzNWE1OGJjMDQ2NDZkZGYxOTBiYTEyZCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRHbHVlL0pTUnVuLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdEdsdWUvSlNSdW4uY3BwCkBAIC00OCw3ICs0OCw3IEBAIHZvaWQgSlNHbHVlR2xvYmFs
T2JqZWN0OjpkZXN0cm95RGF0YSh2b2lkKiBkYXRhKQogSlNSdW46OkpTUnVuKENGU3RyaW5nUmVm
IHNvdXJjZSwgSlNGbGFncyBpbkZsYWdzKQogICAgIDogICBKU0Jhc2Uoa0pTUnVuVHlwZUlEKSwK
ICAgICAgICAgZlNvdXJjZShDRlN0cmluZ1RvVVN0cmluZyhzb3VyY2UpKSwKLSAgICAgICAgZkds
b2JhbE9iamVjdChuZXcgKCZnZXRUaHJlYWRHbG9iYWxFeGVjU3RhdGUoKS0+Z2xvYmFsRGF0YSgp
KSBKU0dsdWVHbG9iYWxPYmplY3QoSlNHbHVlR2xvYmFsT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUo
anNOdWxsKCkpLCBpbkZsYWdzKSksCisgICAgICAgIGZHbG9iYWxPYmplY3QoZ2V0VGhyZWFkR2xv
YmFsRXhlY1N0YXRlKCktPmdsb2JhbERhdGEoKSwgbmV3ICgmZ2V0VGhyZWFkR2xvYmFsRXhlY1N0
YXRlKCktPmdsb2JhbERhdGEoKSkgSlNHbHVlR2xvYmFsT2JqZWN0KEpTR2x1ZUdsb2JhbE9iamVj
dDo6Y3JlYXRlU3RydWN0dXJlKGpzTnVsbCgpKSwgaW5GbGFncykpLAogICAgICAgICBmRmxhZ3Mo
aW5GbGFncykKIHsKIH0KQEAgLTY5LDcgKzY5LDcgQEAgVVN0cmluZyBKU1J1bjo6R2V0U291cmNl
KCkgY29uc3QKIAogSlNHbG9iYWxPYmplY3QqIEpTUnVuOjpHbG9iYWxPYmplY3QoKSBjb25zdAog
ewotICAgIHJldHVybiBmR2xvYmFsT2JqZWN0OworICAgIHJldHVybiBmR2xvYmFsT2JqZWN0Lmdl
dCgpOwogfQogCiBDb21wbGV0aW9uIEpTUnVuOjpFdmFsdWF0ZSgpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdEdsdWUvSlNSdW4uaCBiL1NvdXJjZS9KYXZhU2NyaXB0R2x1ZS9KU1J1bi5o
CmluZGV4IDE1ZDQ5NWI4NDE1OTkwMDYwMTZkMDFmNzg4MmI4ZjYwNTEyOTJlNjEuLjkyNGJlY2Qx
ZDQzMzhkYWI3ZTgwYzBiMjhjMjc1MDhkNjM3NDJhYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0R2x1ZS9KU1J1bi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0R2x1ZS9KU1J1bi5oCkBA
IC02Nyw3ICs2Nyw3IEBAIGNsYXNzIEpTUnVuIDogcHVibGljIEpTQmFzZSB7CiAgICAgICAgIEpT
RmxhZ3MgRmxhZ3MoKSBjb25zdDsKICAgICBwcml2YXRlOgogICAgICAgICBVU3RyaW5nIGZTb3Vy
Y2U7Ci0gICAgICAgIFByb3RlY3RlZFB0cjxKU0dsb2JhbE9iamVjdD4gZkdsb2JhbE9iamVjdDsK
KyAgICAgICAgR2xvYmFsPEpTR2xvYmFsT2JqZWN0PiBmR2xvYmFsT2JqZWN0OwogICAgICAgICBK
U0ZsYWdzIGZGbGFnczsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0R2x1ZS9K
U1ZhbHVlV3JhcHBlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdEdsdWUvSlNWYWx1ZVdyYXBwZXIu
Y3BwCmluZGV4IGQ5YWM0OTdkOTE5NDJkY2JhZTc3ODVjZDdjM2IxYTU0NTI3NjhmOTkuLjMyNGE5
NzQ4NzllNjRjNmI2YTgyYmFhNDA1NjI0MjJiZDRiMjExY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0R2x1ZS9KU1ZhbHVlV3JhcHBlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRH
bHVlL0pTVmFsdWVXcmFwcGVyLmNwcApAQCAtMzQsNyArMzQsNyBAQAogI2luY2x1ZGUgPHB0aHJl
YWQuaD4KIAogSlNWYWx1ZVdyYXBwZXI6OkpTVmFsdWVXcmFwcGVyKEpTVmFsdWUgaW5WYWx1ZSkK
LSAgICA6IGZWYWx1ZShpblZhbHVlKQorICAgIDogZlZhbHVlKGdldFRocmVhZEdsb2JhbEV4ZWNT
dGF0ZSgpLT5nbG9iYWxEYXRhKCksIGluVmFsdWUpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0R2x1ZS9KU1ZhbHVlV3JhcHBlci5oIGIvU291cmNlL0phdmFTY3JpcHRHbHVl
L0pTVmFsdWVXcmFwcGVyLmgKaW5kZXggY2Q1NDRkMDgwNGExOGY2YmMyNDRjYzdmMzEzMzA3ZGI0
YjU5MTVhMy4uOWQyN2Y4OTkxNDY2M2VjMjA4OThhMzM2YTAwNjVmMThmYzM4NTNmZSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRHbHVlL0pTVmFsdWVXcmFwcGVyLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRHbHVlL0pTVmFsdWVXcmFwcGVyLmgKQEAgLTQzLDcgKzQzLDcgQEAgcHVibGlj
OgogICAgIEpTVmFsdWUgR2V0VmFsdWUoKTsKIAogcHJpdmF0ZToKLSAgICBQcm90ZWN0ZWRKU1Zh
bHVlIGZWYWx1ZTsKKyAgICBHbG9iYWw8VW5rbm93bj4gZlZhbHVlOwogICAgIAogICAgIHN0YXRp
YyB2b2lkIEpTT2JqZWN0RGlzcG9zZSh2b2lkICpkYXRhKTsKICAgICBzdGF0aWMgQ0ZBcnJheVJl
ZiBKU09iamVjdENvcHlQcm9wZXJ0eU5hbWVzKHZvaWQgKmRhdGEpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDQ5
NThkNjY2YmFkNDhkNmE4OWQwMTY0M2U0ZmMzYmE0YTM1NDNkZTMuLjA0YzVhYzhhNzQyMzhjY2Jh
NDg0Y2E1YjhlNjBhYjA1ZTE2ZDBlN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMDEgQEAKKzIw
MTEtMDItMTQgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZWZhY3RvciBoYW5kbGVzIGFuZCB3
ZWFrIHBvaW50ZXJzIHRvIGJlY29tZSBuaWNlciBhbmQgbW9yZSBhdXRvbWF0aWMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU0NDE1CisKKyAgICAgICAg
VXBkYXRlIFdlYkNvcmUgdG8gdXNlIHRoZSBuZXcgR2xvYmFsPD4gdHlwZSByYXRoZXIgdGhhbiBQ
cm90ZWN0ZWRKU1ZhbHVlCisgICAgICAgIGFuZCBnY1tVbl1Qcm90ZWN0LiAgQWxzbyB1cGRhdGUg
dG8gdXNlIG5ldyBXZWFrR0NQdHIgQVBJcywgYW5kIHJlbW92ZSBub3cKKyAgICAgICAgdW5uZWNl
c3NhcnkgZGVzdHJ1Y3RvcnMuCisKKyAgICAgICAgKiBGb3J3YXJkaW5nSGVhZGVycy9jb2xsZWN0
b3IvaGFuZGxlcy9HbG9iYWwuaDogQWRkZWQuCisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2Vi
Q29yZS52Y3Byb2o6CisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovY29weUZvcndhcmRpbmdIZWFk
ZXJzLmNtZDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0NhbGxiYWNrRGF0YS5oOgorICAgICAg
ICAoV2ViQ29yZTo6SlNDYWxsYmFja0RhdGE6OkpTQ2FsbGJhY2tEYXRhKToKKyAgICAgICAgKiBi
aW5kaW5ncy9qcy9KU0N1c3RvbVZvaWRDYWxsYmFjay5oOgorICAgICAgICAqIGJpbmRpbmdzL2pz
L0pTRE9NQmluZGluZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpmb3JnZXRET01Ob2RlKToKKyAg
ICAgICAgKFdlYkNvcmU6OmNhY2hlRE9NTm9kZVdyYXBwZXIpOgorICAgICAgICAqIGJpbmRpbmdz
L2pzL0pTRE9NV2luZG93QmFzZS5oOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93
U2hlbGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3dTaGVsbDo6c2V0V2luZG93
KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RhdGFHcmlkRGF0YVNvdXJjZS5oOgorICAgICAg
ICAqIGJpbmRpbmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpK
U0V2ZW50TGlzdGVuZXI6OkpTRXZlbnRMaXN0ZW5lcik6CisgICAgICAgICogYmluZGluZ3MvanMv
SlNFdmVudExpc3RlbmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpKU0V2ZW50TGlzdGVuZXI6OnNl
dFdyYXBwZXIpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTTGF6eUV2ZW50TGlzdGVuZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SlNMYXp5RXZlbnRMaXN0ZW5lcjo6aW5pdGlhbGl6ZUpTRnVu
Y3Rpb24pOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NjaGVkdWxlZEFjdGlvbi5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTY2hlZHVsZWRBY3Rpb246OlNjaGVkdWxlZEFjdGlvbik6CisgICAgICAg
IChXZWJDb3JlOjpTY2hlZHVsZWRBY3Rpb246OmV4ZWN1dGVGdW5jdGlvbkluQ29udGV4dCk6Cisg
ICAgICAgICogYmluZGluZ3MvanMvU2NoZWR1bGVkQWN0aW9uLmg6CisgICAgICAgIChXZWJDb3Jl
OjpTY2hlZHVsZWRBY3Rpb246OlNjaGVkdWxlZEFjdGlvbik6CisgICAgICAgICogYmluZGluZ3Mv
anMvU2NyaXB0Q2FjaGVkRnJhbWVEYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENh
Y2hlZEZyYW1lRGF0YTo6U2NyaXB0Q2FjaGVkRnJhbWVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6
OlNjcmlwdENhY2hlZEZyYW1lRGF0YTo6cmVzdG9yZSk6CisgICAgICAgICogYmluZGluZ3MvanMv
U2NyaXB0Q2FjaGVkRnJhbWVEYXRhLmg6CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0Q2Fs
bFN0YWNrRmFjdG9yeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVTY3JpcHRBcmd1bWVu
dHMpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U2NyaXB0Q29udHJvbGxlcjo6Y3JlYXRlV2luZG93U2hlbGwpOgorICAgICAg
ICAoV2ViQ29yZTo6U2NyaXB0Q29udHJvbGxlcjo6ZXZhbHVhdGVJbldvcmxkKToKKyAgICAgICAg
KFdlYkNvcmU6OlNjcmlwdENvbnRyb2xsZXI6OmNsZWFyV2luZG93U2hlbGwpOgorICAgICAgICAo
V2ViQ29yZTo6U2NyaXB0Q29udHJvbGxlcjo6YXR0YWNoRGVidWdnZXIpOgorICAgICAgICAqIGJp
bmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3Jp
cHRGdW5jdGlvbkNhbGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RnVuY3Rpb25DYWxs
OjpjYWxsKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENhbGxiYWNrOjpjYWxsKToKKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
aXB0T2JqZWN0OjpTY3JpcHRPYmplY3QpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdE9i
amVjdC5oOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdFN0YXRlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNjcmlwdFN0YXRlUHJvdGVjdGVkUHRyOjpTY3JpcHRTdGF0ZVByb3RlY3RlZFB0
cik6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRTdGF0ZVByb3RlY3RlZFB0cjo6Z2V0KToKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRTdGF0ZS5oOgorICAgICAgICAqIGJpbmRpbmdzL2pz
L1NjcmlwdFZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdFZhbHVlOjppc0Z1bmN0
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdFZhbHVlOjpkZXNlcmlhbGl6ZSk6CisgICAg
ICAgICogYmluZGluZ3MvanMvU2NyaXB0VmFsdWUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlw
dFZhbHVlOjpTY3JpcHRWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRWYWx1ZTo6aGFz
Tm9WYWx1ZSk6CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0V3JhcHBhYmxlLmg6CisgICAg
ICAgIChXZWJDb3JlOjpTY3JpcHRXcmFwcGFibGU6OlNjcmlwdFdyYXBwYWJsZSk6CisgICAgICAg
IChXZWJDb3JlOjpTY3JpcHRXcmFwcGFibGU6OnNldFdyYXBwZXIpOgorICAgICAgICAqIGJpbmRp
bmdzL2pzL1dvcmtlclNjcmlwdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29y
a2VyU2NyaXB0Q29udHJvbGxlcjo6V29ya2VyU2NyaXB0Q29udHJvbGxlcik6CisgICAgICAgIChX
ZWJDb3JlOjpXb3JrZXJTY3JpcHRDb250cm9sbGVyOjp+V29ya2VyU2NyaXB0Q29udHJvbGxlcik6
CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJTY3JpcHRDb250cm9sbGVyOjppbml0U2NyaXB0KToK
KyAgICAgICAgKFdlYkNvcmU6OldvcmtlclNjcmlwdENvbnRyb2xsZXI6OmV2YWx1YXRlKToKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmg6CisgICAgICAgIChX
ZWJDb3JlOjpXb3JrZXJTY3JpcHRDb250cm9sbGVyOjp3b3JrZXJDb250ZXh0V3JhcHBlcik6Cisg
ICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG06CisgICAgICAgICog
YnJpZGdlL05QX2pzb2JqZWN0LmNwcDoKKyAgICAgICAgKF9OUE5fSW52b2tlRGVmYXVsdCk6Cisg
ICAgICAgIChfTlBOX0ludm9rZSk6CisgICAgICAgIChfTlBOX0V2YWx1YXRlKToKKyAgICAgICAg
KF9OUE5fQ29uc3RydWN0KToKKyAgICAgICAgKiBicmlkZ2UvanNjL0JyaWRnZUpTQy5jcHA6Cisg
ICAgICAgIChKU0M6OkJpbmRpbmdzOjpJbnN0YW5jZTo6SW5zdGFuY2UpOgorICAgICAgICAoSlND
OjpCaW5kaW5nczo6SW5zdGFuY2U6On5JbnN0YW5jZSk6CisgICAgICAgIChKU0M6OkJpbmRpbmdz
OjpJbnN0YW5jZTo6d2lsbERlc3Ryb3lSdW50aW1lT2JqZWN0KToKKyAgICAgICAgKEpTQzo6Qmlu
ZGluZ3M6Okluc3RhbmNlOjp3aWxsSW52YWxpZGF0ZVJ1bnRpbWVPYmplY3QpOgorICAgICAgICAq
IGJyaWRnZS9qc2MvQnJpZGdlSlNDLmg6CisgICAgICAgICogYnJpZGdlL3J1bnRpbWVfb2JqZWN0
LmNwcDoKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6OlJ1bnRpbWVPYmplY3Q6OmludmFsaWRhdGUp
OgorICAgICAgICAqIGJyaWRnZS9ydW50aW1lX3Jvb3QuY3BwOgorICAgICAgICAoSlNDOjpCaW5k
aW5nczo6Um9vdE9iamVjdDo6Um9vdE9iamVjdCk6CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpS
b290T2JqZWN0OjppbnZhbGlkYXRlKToKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6OlJvb3RPYmpl
Y3Q6Omdsb2JhbE9iamVjdCk6CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpSb290T2JqZWN0Ojp1
cGRhdGVHbG9iYWxPYmplY3QpOgorICAgICAgICAqIGJyaWRnZS9ydW50aW1lX3Jvb3QuaDoKKyAg
ICAgICAgKiBkb20vRXZlbnRMaXN0ZW5lci5oOgorICAgICAgICAqIGRvbS9FdmVudFRhcmdldC5o
OgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRUYXJnZXQ6Om1hcmtKU0V2ZW50TGlzdGVuZXJzKToK
KyAgICAgICAgKiB4bWwvWE1MSHR0cFJlcXVlc3QuY3BwOgorCiAyMDExLTAyLTE0ICBBbGV4YW5k
ZXIgUGF2bG92ICA8YXBhdmxvdkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkg
WXVyeSBTZW1pa2hhdHNreS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdI
ZWFkZXJzL2NvbGxlY3Rvci9oYW5kbGVzL0dsb2JhbC5oIGIvU291cmNlL1dlYkNvcmUvRm9yd2Fy
ZGluZ0hlYWRlcnMvY29sbGVjdG9yL2hhbmRsZXMvR2xvYmFsLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGFkNmQ1
NmVkMzU2OThkYTYwMmE2ZGMzODY2ZGUyMzAwMTYxNDMzNgotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL2NvbGxlY3Rvci9oYW5kbGVzL0dsb2JhbC5o
CkBAIC0wLDAgKzEsNCBAQAorI2lmbmRlZiBXZWJDb3JlX0ZXRF9HbG9iYWxfaAorI2RlZmluZSBX
ZWJDb3JlX0ZXRF9HbG9iYWxfaAorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0dsb2JhbC5oPgor
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3Jl
LnZjcHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCmlu
ZGV4IDJhOGYzNDBhNjk0OTcwNTcyZmM5YTU1MDA0OGJmMzgzYWZjOWU4YjQuLjA0YjMwNTY0ZTU3
ZTFmYmQzOTZhZjQ5ODQ0MDczNTNjOGIzNzhkYzUgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCkBAIC02NDc4MSw2ICs2NDc4MSwxOCBAQAogCQkJCQk+
CiAJCQkJPC9GaWxlPgogCQkJPC9GaWx0ZXI+CisJCQk8RmlsdGVyCisJCQkJTmFtZT0iY29sbGVj
dG9yIgorCQkJCT4KKwkJCQk8RmlsdGVyCisJCQkJCU5hbWU9ImhhbmRsZXMiCisJCQkJCT4KKwkJ
CQkJPEZpbGUKKwkJCQkJCVJlbGF0aXZlUGF0aD0iLi5cRm9yd2FyZGluZ0hlYWRlcnNcY29sbGVj
dG9yXGhhbmRsZXNcR2xvYmFsLmgiCisJCQkJCQk+CisJCQkJCTwvRmlsZT4KKwkJCQk8L0ZpbHRl
cj4KKwkJCTwvRmlsdGVyPgogCQk8L0ZpbHRlcj4KIAkJPEZpbHRlcgogCQkJTmFtZT0iaGlzdG9y
eSIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL2NvcHlGb3J3YXJk
aW5nSGVhZGVycy5jbWQgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9jb3B5Rm9yd2Fy
ZGluZ0hlYWRlcnMuY21kCmluZGV4IDMzNTFlNjAwODg0Mzk3NjI5YTlkMzRiZTk2Y2VkY2M0M2I5
MTIzZDkuLmM2Yzc0ZGYzYzE1N2FkOTY2NTdkNzExMjQzNjQ1YmQyNjkxMGE5NmIgMTAwNzU1Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL2NvcHlGb3J3YXJkaW5nSGVhZGVycy5j
bWQKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovY29weUZvcndhcmRpbmdIZWFk
ZXJzLmNtZApAQCAtOCw2ICs4LDggQEAgbWtkaXIgMj5OVUwgIiVDT05GSUdVUkFUSU9OQlVJTERE
SVIlXGluY2x1ZGVcV2ViQ29yZVxGb3J3YXJkaW5nSGVhZGVyc1xwYXJzZXIiCiBta2RpciAyPk5V
TCAiJUNPTkZJR1VSQVRJT05CVUlMRERJUiVcaW5jbHVkZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFk
ZXJzXHJ1bnRpbWUiCiBta2RpciAyPk5VTCAiJUNPTkZJR1VSQVRJT05CVUlMRERJUiVcaW5jbHVk
ZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFkZXJzXG1hc20iCiBta2RpciAyPk5VTCAiJUNPTkZJR1VS
QVRJT05CVUlMRERJUiVcaW5jbHVkZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFkZXJzXHByb2ZpbGVy
IgorbWtkaXIgMj5OVUwgIiVDT05GSUdVUkFUSU9OQlVJTERESVIlXGluY2x1ZGVcV2ViQ29yZVxG
b3J3YXJkaW5nSGVhZGVyc1xjb2xsZWN0b3IiCitta2RpciAyPk5VTCAiJUNPTkZJR1VSQVRJT05C
VUlMRERJUiVcaW5jbHVkZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFkZXJzXGNvbGxlY3RvclxoYW5k
bGVzIgogbWtkaXIgMj5OVUwgIiVDT05GSUdVUkFUSU9OQlVJTERESVIlXGluY2x1ZGVcV2ViQ29y
ZVxGb3J3YXJkaW5nSGVhZGVyc1x3dGYiCiBta2RpciAyPk5VTCAiJUNPTkZJR1VSQVRJT05CVUlM
RERJUiVcaW5jbHVkZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFkZXJzXHd0Zlx0ZXh0IgogbWtkaXIg
Mj5OVUwgIiVDT05GSUdVUkFUSU9OQlVJTERESVIlXGluY2x1ZGVcV2ViQ29yZVxGb3J3YXJkaW5n
SGVhZGVyc1x3dGZcdW5pY29kZSIKQEAgLTc1LDYgKzc3LDcgQEAgeGNvcHkgL3kgL2QgIiVQcm9q
ZWN0RGlyJS4uXEZvcndhcmRpbmdIZWFkZXJzXHBhcnNlclwqLmgiICIlQ09ORklHVVJBVElPTkJV
SUxEREkKIHhjb3B5IC95IC9kICIlUHJvamVjdERpciUuLlxGb3J3YXJkaW5nSGVhZGVyc1xydW50
aW1lXCouaCIgIiVDT05GSUdVUkFUSU9OQlVJTERESVIlXGluY2x1ZGVcV2ViQ29yZVxGb3J3YXJk
aW5nSGVhZGVyc1xydW50aW1lIgogeGNvcHkgL3kgL2QgIiVQcm9qZWN0RGlyJS4uXEZvcndhcmRp
bmdIZWFkZXJzXG1hc21cKi5oIiAiJUNPTkZJR1VSQVRJT05CVUlMRERJUiVcaW5jbHVkZVxXZWJD
b3JlXEZvcndhcmRpbmdIZWFkZXJzXG1hc20iCiB4Y29weSAveSAvZCAiJVByb2plY3REaXIlLi5c
Rm9yd2FyZGluZ0hlYWRlcnNccHJvZmlsZXJcKi5oIiAiJUNPTkZJR1VSQVRJT05CVUlMRERJUiVc
aW5jbHVkZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFkZXJzXHByb2ZpbGVyIgoreGNvcHkgL3kgL2Qg
IiVQcm9qZWN0RGlyJS4uXEZvcndhcmRpbmdIZWFkZXJzXGNvbGxlY3RvclxoYW5kbGVzXCouaCIg
IiVDT05GSUdVUkFUSU9OQlVJTERESVIlXGluY2x1ZGVcV2ViQ29yZVxGb3J3YXJkaW5nSGVhZGVy
c1xjb2xsZWN0b3JcaGFuZGxlcyIKIHhjb3B5IC95IC9kICIlUHJvamVjdERpciUuLlxGb3J3YXJk
aW5nSGVhZGVyc1x3dGZcKi5oIiAiJUNPTkZJR1VSQVRJT05CVUlMRERJUiVcaW5jbHVkZVxXZWJD
b3JlXEZvcndhcmRpbmdIZWFkZXJzXHd0ZiIKIHhjb3B5IC95IC9kICIlUHJvamVjdERpciUuLlxG
b3J3YXJkaW5nSGVhZGVyc1x3dGZcdGV4dFwqLmgiICIlQ09ORklHVVJBVElPTkJVSUxERElSJVxp
bmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnNcd3RmXHRleHQiCiB4Y29weSAveSAvZCAi
JVByb2plY3REaXIlLi5cRm9yd2FyZGluZ0hlYWRlcnNcd3RmXHVuaWNvZGVcKi5oIiAiJUNPTkZJ
R1VSQVRJT05CVUlMRERJUiVcaW5jbHVkZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFkZXJzXHd0Zlx1
bmljb2RlIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDYWxsYmFj
a0RhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ2FsbGJhY2tEYXRhLmgKaW5k
ZXggZjdiOGJmZTllODVhZjhmZTBiNTgyM2RkMGQyMGY1NjhkMjVjNWFjOS4uOTQyY2Q5Y2NiNzAz
YWM0MmEyNTAyNWRiNGNiZWRhMDg1ZDJhZTQyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNDYWxsYmFja0RhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0NhbGxiYWNrRGF0YS5oCkBAIC0zMiw4ICszMiw4IEBACiAjaW5jbHVkZSAiSlNET01C
aW5kaW5nLmgiCiAjaW5jbHVkZSAiSlNET01HbG9iYWxPYmplY3QuaCIKICNpbmNsdWRlICJTY3Jp
cHRFeGVjdXRpb25Db250ZXh0LmgiCisjaW5jbHVkZSA8Y29sbGVjdG9yL2hhbmRsZXMvR2xvYmFs
Lmg+CiAjaW5jbHVkZSA8cnVudGltZS9KU09iamVjdC5oPgotI2luY2x1ZGUgPHJ1bnRpbWUvUHJv
dGVjdC5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewpAQCAtNDcsOCArNDcsOCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQgZGVsZXRlRGF0YSh2
b2lkKik7CiAKICAgICBKU0NhbGxiYWNrRGF0YShKU0M6OkpTT2JqZWN0KiBjYWxsYmFjaywgSlNE
T01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKLSAgICAgICAgOiBtX2NhbGxiYWNrKGNhbGxi
YWNrKQotICAgICAgICAsIG1fZ2xvYmFsT2JqZWN0KGdsb2JhbE9iamVjdCkKKyAgICAgICAgOiBt
X2NhbGxiYWNrKGdsb2JhbE9iamVjdC0+Z2xvYmFsRGF0YSgpLCBjYWxsYmFjaykKKyAgICAgICAg
LCBtX2dsb2JhbE9iamVjdChnbG9iYWxPYmplY3QtPmdsb2JhbERhdGEoKSwgZ2xvYmFsT2JqZWN0
KQogI2lmbmRlZiBOREVCVUcKICAgICAgICAgLCBtX3RocmVhZChjdXJyZW50VGhyZWFkKCkpCiAj
ZW5kaWYKQEAgLTY2LDggKzY2LDggQEAgcHVibGljOgogICAgIEpTQzo6SlNWYWx1ZSBpbnZva2VD
YWxsYmFjayhKU0M6Ok1hcmtlZEFyZ3VtZW50QnVmZmVyJiwgYm9vbCogcmFpc2VkRXhjZXB0aW9u
ID0gMCk7CiAKIHByaXZhdGU6Ci0gICAgSlNDOjpQcm90ZWN0ZWRQdHI8SlNDOjpKU09iamVjdD4g
bV9jYWxsYmFjazsKLSAgICBKU0M6OlByb3RlY3RlZFB0cjxKU0RPTUdsb2JhbE9iamVjdD4gbV9n
bG9iYWxPYmplY3Q7CisgICAgSlNDOjpHbG9iYWw8SlNDOjpKU09iamVjdD4gbV9jYWxsYmFjazsK
KyAgICBKU0M6Okdsb2JhbDxKU0RPTUdsb2JhbE9iamVjdD4gbV9nbG9iYWxPYmplY3Q7CiAjaWZu
ZGVmIE5ERUJVRwogICAgIFRocmVhZElkZW50aWZpZXIgbV90aHJlYWQ7CiAjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tVm9pZENhbGxiYWNrLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbVZvaWRDYWxsYmFjay5oCmluZGV4
IDhmZmVlNDhjM2U3NTdiMmY2ZmQyNTE0ZDgzZDJlOTlmMjFkMmVlMzMuLjkyMmUzODA4Zjc2YzU5
ZjRkM2M4MTY5Y2IwMzYxYTk3YzgyYjdmODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTQ3VzdG9tVm9pZENhbGxiYWNrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNDdXN0b21Wb2lkQ2FsbGJhY2suaApAQCAtMzEsNyArMzEsNyBAQAogCiAjaW5j
bHVkZSAiSlNET01HbG9iYWxPYmplY3QuaCIKICNpbmNsdWRlICJWb2lkQ2FsbGJhY2suaCIKLSNp
bmNsdWRlIDxydW50aW1lL1Byb3RlY3QuaD4KKyNpbmNsdWRlIDxjb2xsZWN0b3IvaGFuZGxlcy9H
bG9iYWwuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmNwcAppbmRleCA3ZGUy
NzE5ZTc3MWYwNDIxZDE5OWZkYmM3MjE3NDI0YWRjODgyMmFlLi42YzQyMGJhYTkxMGNmY2JlMjNh
MTRjYmE3MTI4MThjZmQ5ZTdhMDY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RPTUJpbmRpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RE9NQmluZGluZy5jcHAKQEAgLTIwNiw4ICsyMDYsNiBAQCB2b2lkIGZvcmdldERPTU9iamVjdChE
T01PYmplY3QqIHdyYXBwZXIsIHZvaWQqIG9iamVjdEhhbmRsZSkKIAogdm9pZCBmb3JnZXRET01O
b2RlKEpTTm9kZSogd3JhcHBlciwgTm9kZSogbm9kZSwgRG9jdW1lbnQqIGRvY3VtZW50KQogewot
ICAgIG5vZGUtPmNsZWFyV3JhcHBlcih3cmFwcGVyKTsKLQogICAgIGlmICghZG9jdW1lbnQpIHsK
ICAgICAgICAgZm9yZ2V0RE9NT2JqZWN0KHdyYXBwZXIsIG5vZGUpOwogICAgICAgICByZXR1cm47
CkBAIC0yMzMsNyArMjMxLDcgQEAgdm9pZCBjYWNoZURPTU5vZGVXcmFwcGVyKEpTQzo6RXhlY1N0
YXRlKiBleGVjLCBEb2N1bWVudCogZG9jdW1lbnQsIE5vZGUqIG5vZGUsIEoKICAgICAgICAgZG9j
dW1lbnQtPmdldFdyYXBwZXJDYWNoZShjdXJyZW50V29ybGQoZXhlYykpLT5zZXQobm9kZSwgd3Jh
cHBlcik7CiAKICAgICBpZiAoY3VycmVudFdvcmxkKGV4ZWMpLT5pc05vcm1hbCgpKQotICAgICAg
ICBub2RlLT5zZXRXcmFwcGVyKHdyYXBwZXIpOworICAgICAgICBub2RlLT5zZXRXcmFwcGVyKGV4
ZWMtPmdsb2JhbERhdGEoKSwgd3JhcHBlcik7CiB9CiAKIHN0YXRpYyBpbmxpbmUgYm9vbCBpc09i
c2VydmFibGVUaHJvdWdoRE9NKEpTTm9kZSoganNOb2RlLCBET01XcmFwcGVyV29ybGQqIHdvcmxk
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNl
LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuaAppbmRleCBm
YmVmODA4NzViN2IzOTMzYWJjODI2MjlhYWQ1ZjI4NzMxYmZmYTcxLi4xZDgzN2M5NjdkMTRhYTU2
NGY4ZjY5ZTg0NDc3YmNmMGU2ZWJjM2Q3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RPTVdpbmRvd0Jhc2UuaApAQCAtMjIsNyArMjIsNyBAQAogCiAjaW5jbHVkZSAiUGxhdGZv
cm1TdHJpbmcuaCIKICNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKLSNpbmNsdWRlIDxydW50aW1l
L1Byb3RlY3QuaD4KKyNpbmNsdWRlIDxjb2xsZWN0b3IvaGFuZGxlcy9HbG9iYWwuaD4KICNpbmNs
dWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8
d3RmL093blB0ci5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
T01XaW5kb3dTaGVsbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRv
d1NoZWxsLmNwcAppbmRleCA0MGY5OTEwY2EzNGRlNThjNTc0ZWJmZmY1YjQ3MDc0MGU1NTM2NTI0
Li4xMDMzZjQyZjQ4YWEzODNmOWViNzBkZTc5NGM0NDE4MWVjMzYwMjYyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd1NoZWxsLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd1NoZWxsLmNwcApAQCAtNjAsOSArNjAs
OSBAQCB2b2lkIEpTRE9NV2luZG93U2hlbGw6OnNldFdpbmRvdyhQYXNzUmVmUHRyPERPTVdpbmRv
dz4gZG9tV2luZG93KQogICAgIC8vIHdoZW4gd2UgYWxsb2NhdGUgdGhlIGdsb2JhbCBvYmplY3Qu
IChPbmNlIHRoZSBnbG9iYWwgb2JqZWN0IGlzIGZ1bGx5CiAgICAgLy8gY29uc3RydWN0ZWQsIGl0
IGNhbiBtYXJrIGl0cyBvd24gcHJvdG90eXBlLikKICAgICBSZWZQdHI8U3RydWN0dXJlPiBwcm90
b3R5cGVTdHJ1Y3R1cmUgPSBKU0RPTVdpbmRvd1Byb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKGpz
TnVsbCgpKTsKLSAgICBQcm90ZWN0ZWRQdHI8SlNET01XaW5kb3dQcm90b3R5cGU+IHByb3RvdHlw
ZSA9IG5ldyBKU0RPTVdpbmRvd1Byb3RvdHlwZSgwLCBwcm90b3R5cGVTdHJ1Y3R1cmUucmVsZWFz
ZSgpKTsKKyAgICBHbG9iYWw8SlNET01XaW5kb3dQcm90b3R5cGU+IHByb3RvdHlwZSgqSlNET01X
aW5kb3c6OmNvbW1vbkpTR2xvYmFsRGF0YSgpLCBuZXcgSlNET01XaW5kb3dQcm90b3R5cGUoMCwg
cHJvdG90eXBlU3RydWN0dXJlLnJlbGVhc2UoKSkpOwogCi0gICAgUmVmUHRyPFN0cnVjdHVyZT4g
c3RydWN0dXJlID0gSlNET01XaW5kb3c6OmNyZWF0ZVN0cnVjdHVyZShwcm90b3R5cGUpOworICAg
IFJlZlB0cjxTdHJ1Y3R1cmU+IHN0cnVjdHVyZSA9IEpTRE9NV2luZG93OjpjcmVhdGVTdHJ1Y3R1
cmUocHJvdG90eXBlLmdldCgpKTsKICAgICBKU0RPTVdpbmRvdyoganNET01XaW5kb3cgPSBuZXcg
KEpTRE9NV2luZG93Ojpjb21tb25KU0dsb2JhbERhdGEoKSkgSlNET01XaW5kb3coc3RydWN0dXJl
LnJlbGVhc2UoKSwgZG9tV2luZG93LCB0aGlzKTsKICAgICBwcm90b3R5cGUtPnB1dEFub255bW91
c1ZhbHVlKCpKU0RPTVdpbmRvdzo6Y29tbW9uSlNHbG9iYWxEYXRhKCksIDAsIGpzRE9NV2luZG93
KTsKICAgICBzZXRXaW5kb3coKkpTRE9NV2luZG93Ojpjb21tb25KU0dsb2JhbERhdGEoKSwganNE
T01XaW5kb3cpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEYXRh
R3JpZERhdGFTb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGF0YUdyaWRE
YXRhU291cmNlLmgKaW5kZXggMDc3ZWY4ZjgwY2VkNWU5MWM1ZThiMmIzODFhZGUwN2MwZjhiYmU5
YS4uNjg0YTY2M2M1M2ZmMDdmZDZiYjNhNmVjYjNjNGFlMjk5MzJhY2YwYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEYXRhR3JpZERhdGFTb3VyY2UuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RhdGFHcmlkRGF0YVNvdXJjZS5oCkBAIC0yOSw4
ICsyOSw4IEBACiAjaWYgRU5BQkxFKERBVEFHUklEKQogCiAjaW5jbHVkZSAiRGF0YUdyaWREYXRh
U291cmNlLmgiCisjaW5jbHVkZSA8Y29sbGVjdG9yL2hhbmRsZXMvR2xvYmFsLmg+CiAjaW5jbHVk
ZSA8cnVudGltZS9KU1ZhbHVlLmg+Ci0jaW5jbHVkZSA8cnVudGltZS9Qcm90ZWN0Lmg+CiAjaW5j
bHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50TGlzdGVuZXIuY3BwCmluZGV4IDY0Mjc2
ODNmNDJlNjM0OGI2YjNmYmI3ZTMxMGM4MGZiYTZkYWRkOTguLjgyNWE0YWQzYWM0ODA2NTc2ZTA5
NGNkNGE4YzA3YmI0YTM3MTk4MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRXZlbnRMaXN0ZW5lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNFdmVudExpc3RlbmVyLmNwcApAQCAtMzQsMTEgKzM0LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogSlNFdmVudExpc3RlbmVyOjpKU0V2ZW50TGlzdGVuZXIoSlNPYmplY3QqIGZ1bmN0aW9u
LCBKU09iamVjdCogd3JhcHBlciwgYm9vbCBpc0F0dHJpYnV0ZSwgRE9NV3JhcHBlcldvcmxkKiBp
c29sYXRlZFdvcmxkKQogICAgIDogRXZlbnRMaXN0ZW5lcihKU0V2ZW50TGlzdGVuZXJUeXBlKQor
ICAgICwgbV93cmFwcGVyKCppc29sYXRlZFdvcmxkLT5nbG9iYWxEYXRhKCksIHdyYXBwZXIpCiAg
ICAgLCBtX2lzQXR0cmlidXRlKGlzQXR0cmlidXRlKQogICAgICwgbV9pc29sYXRlZFdvcmxkKGlz
b2xhdGVkV29ybGQpCiB7Ci0gICAgaWYgKHdyYXBwZXIpCi0gICAgICAgIG1fd3JhcHBlciA9IHdy
YXBwZXI7CiAgICAgbV9qc0Z1bmN0aW9uLnNldCgqbV9pc29sYXRlZFdvcmxkLT5nbG9iYWxEYXRh
KCksIHdyYXBwZXIsIGZ1bmN0aW9uKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNFdmVudExpc3RlbmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0V2ZW50TGlzdGVuZXIuaAppbmRleCA0N2ZmNDRlYzc2ZTIzODEyM2RlMmJhMzc1ZjY1MDEz
MzFhMDdhNjBiLi42OGVmZTNjODU3ZGNjZGM4OWZhZGJiZjc4ZTMzNzQ0Yzc0ZGFmYzFiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50TGlzdGVuZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50TGlzdGVuZXIuaApAQCAtNTMsMTIg
KzUzLDExIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgRE9NV3JhcHBlcldvcmxkKiBp
c29sYXRlZFdvcmxkKCkgY29uc3QgeyByZXR1cm4gbV9pc29sYXRlZFdvcmxkLmdldCgpOyB9CiAK
ICAgICAgICAgSlNDOjpKU09iamVjdCogd3JhcHBlcigpIGNvbnN0IHsgcmV0dXJuIG1fd3JhcHBl
ci5nZXQoKTsgfQotICAgICAgICB2b2lkIHNldFdyYXBwZXIoSlNDOjpKU09iamVjdCogd3JhcHBl
cikgY29uc3QgeyBtX3dyYXBwZXIgPSB3cmFwcGVyOyB9CisgICAgICAgIHZvaWQgc2V0V3JhcHBl
cihKU0M6OkpTR2xvYmFsRGF0YSYsIEpTQzo6SlNPYmplY3QqIHdyYXBwZXIpIGNvbnN0IHsgbV93
cmFwcGVyID0gd3JhcHBlcjsgfQogCiAgICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVhbCBKU0M6
OkpTT2JqZWN0KiBpbml0aWFsaXplSlNGdW5jdGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0Kikg
Y29uc3Q7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBtYXJrSlNGdW5jdGlvbihKU0M6Ok1hcmtTdGFj
ayYpOwotICAgICAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZUpTRnVuY3Rpb24oSlNDOjpKU09i
amVjdCopOwogICAgICAgICB2aXJ0dWFsIGJvb2wgdmlydHVhbGlzQXR0cmlidXRlKCkgY29uc3Q7
CiAKICAgICBwcm90ZWN0ZWQ6CkBAIC05MSwxMSArOTAsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgICAgIHJldHVybiBtX2pzRnVuY3Rpb24uZ2V0KCk7CiAgICAgfQogCi0gICAgaW5saW5l
IHZvaWQgSlNFdmVudExpc3RlbmVyOjppbnZhbGlkYXRlSlNGdW5jdGlvbihKU0M6OkpTT2JqZWN0
KiB3cmFwcGVyKQotICAgIHsKLSAgICAgICAgbV93cmFwcGVyLmNsZWFyKHdyYXBwZXIpOwotICAg
IH0KLQogICAgIC8vIENyZWF0ZXMgYSBKUyBFdmVudExpc3RlbmVyIGZvciBhbiAib25YWFgiIGV2
ZW50IGF0dHJpYnV0ZS4KICAgICBpbmxpbmUgUGFzc1JlZlB0cjxKU0V2ZW50TGlzdGVuZXI+IGNy
ZWF0ZUpTQXR0cmlidXRlRXZlbnRMaXN0ZW5lcihKU0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNDOjpK
U1ZhbHVlIGxpc3RlbmVyLCBKU0M6OkpTT2JqZWN0KiB3cmFwcGVyKQogICAgIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTGF6eUV2ZW50TGlzdGVuZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNMYXp5RXZlbnRMaXN0ZW5lci5jcHAKaW5kZXgg
MWFhZDdkZmQwNjQ0NmVlNDRlMTg4Nzg2ZDI5ZDUyZTI4YWRkNzA3YS4uZTE3YTNkNGNiYmVjMTM5
ZTJiMjNiNjkzODYxNzUwYjg2ZDZjOTU1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNMYXp5RXZlbnRMaXN0ZW5lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNMYXp5RXZlbnRMaXN0ZW5lci5jcHAKQEAgLTExNSw3ICsxMTUsNyBAQCBKU09i
amVjdCogSlNMYXp5RXZlbnRMaXN0ZW5lcjo6aW5pdGlhbGl6ZUpTRnVuY3Rpb24oU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogZXhlYwogICAgICAgICAgICAgLy8gRW5zdXJlIHRoYXQgJ25vZGUnIGhh
cyBhIEphdmFTY3JpcHQgd3JhcHBlciB0byBtYXJrIHRoZSBldmVudCBsaXN0ZW5lciB3ZSdyZSBj
cmVhdGluZy4KICAgICAgICAgICAgIEpTTG9jayBsb2NrKFNpbGVuY2VBc3NlcnRpb25zT25seSk7
CiAgICAgICAgICAgICAvLyBGSVhNRTogU2hvdWxkIHBhc3MgdGhlIGdsb2JhbCBvYmplY3QgYXNz
b2NpYXRlZCB3aXRoIHRoZSBub2RlCi0gICAgICAgICAgICBzZXRXcmFwcGVyKGFzT2JqZWN0KHRv
SlMoZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCksIGdsb2JhbE9iamVjdCwgbV9vcmlnaW5hbE5v
ZGUpKSk7CisgICAgICAgICAgICBzZXRXcmFwcGVyKGV4ZWMtPmdsb2JhbERhdGEoKSwgYXNPYmpl
Y3QodG9KUyhleGVjLCBnbG9iYWxPYmplY3QsIG1fb3JpZ2luYWxOb2RlKSkpOwogICAgICAgICB9
CiAKICAgICAgICAgLy8gQWRkIHRoZSBldmVudCdzIGhvbWUgZWxlbWVudCB0byB0aGUgc2NvcGUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjaGVkdWxlZEFjdGlvbi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY2hlZHVsZWRBY3Rpb24uY3BwCmluZGV4
IGQ2ZjhhMzhjYzM0MzNmNmUzNzc5MmRkY2EzZWMzODY5NDM1MzBkZmUuLjc5NDhjMmFjOTk2NGU5
YjU2YWMxNTdjNGUwMTE1ZDcwMjQ1ZmQyOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1NjaGVkdWxlZEFjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvU2NoZWR1bGVkQWN0aW9uLmNwcApAQCAtNjEsMTMgKzYxLDEzIEBAIFBhc3NPd25QdHI8
U2NoZWR1bGVkQWN0aW9uPiBTY2hlZHVsZWRBY3Rpb246OmNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMs
IERPTVdyYXBwZXJXCiB9CiAKIFNjaGVkdWxlZEFjdGlvbjo6U2NoZWR1bGVkQWN0aW9uKEV4ZWNT
dGF0ZSogZXhlYywgSlNWYWx1ZSBmdW5jdGlvbiwgRE9NV3JhcHBlcldvcmxkKiBpc29sYXRlZFdv
cmxkKQotICAgIDogbV9mdW5jdGlvbihmdW5jdGlvbikKKyAgICA6IG1fZnVuY3Rpb24oZXhlYy0+
Z2xvYmFsRGF0YSgpLCBmdW5jdGlvbikKICAgICAsIG1faXNvbGF0ZWRXb3JsZChpc29sYXRlZFdv
cmxkKQogewogICAgIC8vIHNldFRpbWVvdXQoZnVuY3Rpb24sIGludGVydmFsLCBhcmcwLCBhcmcx
Li4uKS4KICAgICAvLyBTdGFydCBhdCAyIHRvIHNraXAgZnVuY3Rpb24gYW5kIGludGVydmFsLgog
ICAgIGZvciAoc2l6ZV90IGkgPSAyOyBpIDwgZXhlYy0+YXJndW1lbnRDb3VudCgpOyArK2kpCi0g
ICAgICAgIG1fYXJncy5hcHBlbmQoZXhlYy0+YXJndW1lbnQoaSkpOworICAgICAgICBtX2FyZ3Mu
YXBwZW5kKEdsb2JhbDxVbmtub3duPihleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPmFyZ3VtZW50
KGkpKSk7CiB9CiAKIHZvaWQgU2NoZWR1bGVkQWN0aW9uOjpleGVjdXRlKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIGNvbnRleHQpCkBAIC05OSwxMyArOTksMTMgQEAgdm9pZCBTY2hlZHVsZWRBY3Rp
b246OmV4ZWN1dGVGdW5jdGlvbkluQ29udGV4dChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBKU1YKICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmdzOwogICAgIHNpemVfdCBzaXplID0g
bV9hcmdzLnNpemUoKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7ICsraSkKLSAg
ICAgICAgYXJncy5hcHBlbmQobV9hcmdzW2ldKTsKKyAgICAgICAgYXJncy5hcHBlbmQobV9hcmdz
W2ldLmdldCgpKTsKIAogICAgIGdsb2JhbE9iamVjdC0+Z2xvYmFsRGF0YSgpLnRpbWVvdXRDaGVj
a2VyLnN0YXJ0KCk7CiAgICAgaWYgKGNvbnRleHQtPmlzRG9jdW1lbnQoKSkKLSAgICAgICAgSlNN
YWluVGhyZWFkRXhlY1N0YXRlOjpjYWxsKGV4ZWMsIG1fZnVuY3Rpb24sIGNhbGxUeXBlLCBjYWxs
RGF0YSwgdGhpc1ZhbHVlLCBhcmdzKTsKKyAgICAgICAgSlNNYWluVGhyZWFkRXhlY1N0YXRlOjpj
YWxsKGV4ZWMsIG1fZnVuY3Rpb24uZ2V0KCksIGNhbGxUeXBlLCBjYWxsRGF0YSwgdGhpc1ZhbHVl
LCBhcmdzKTsKICAgICBlbHNlCi0gICAgICAgIEpTQzo6Y2FsbChleGVjLCBtX2Z1bmN0aW9uLCBj
YWxsVHlwZSwgY2FsbERhdGEsIHRoaXNWYWx1ZSwgYXJncyk7CisgICAgICAgIEpTQzo6Y2FsbChl
eGVjLCBtX2Z1bmN0aW9uLmdldCgpLCBjYWxsVHlwZSwgY2FsbERhdGEsIHRoaXNWYWx1ZSwgYXJn
cyk7CiAgICAgZ2xvYmFsT2JqZWN0LT5nbG9iYWxEYXRhKCkudGltZW91dENoZWNrZXIuc3RvcCgp
OwogCiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvU2NoZWR1bGVkQWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9TY2hlZHVsZWRBY3Rpb24uaAppbmRleCA1OWFkNmZjMjViMjM1NDdjYTFmMDNlYTgy
MWJmNzIzYjM0OTI1MjAxLi5jNGIzZWRmMDVjMzNlNjExZDU3OWVhMWI4NGMyYjUwYzNmZjgxYjAx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY2hlZHVsZWRBY3Rpb24u
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY2hlZHVsZWRBY3Rpb24uaApAQCAt
MjIsOCArMjIsOCBAQAogCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKICNpbmNsdWRlIDxK
U0RPTUJpbmRpbmcuaD4KKyNpbmNsdWRlIDxjb2xsZWN0b3IvaGFuZGxlcy9HbG9iYWwuaD4KICNp
bmNsdWRlIDxydW50aW1lL0pTQ2VsbC5oPgotI2luY2x1ZGUgPHJ1bnRpbWUvUHJvdGVjdC5oPgog
I2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCkBA
IC01MSw3ICs1MSw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBwcml2YXRlOgogICAgICAg
ICBTY2hlZHVsZWRBY3Rpb24oSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTVmFsdWUgZnVuY3Rpb24s
IERPTVdyYXBwZXJXb3JsZCogaXNvbGF0ZWRXb3JsZCk7CiAgICAgICAgIFNjaGVkdWxlZEFjdGlv
bihjb25zdCBTdHJpbmcmIGNvZGUsIERPTVdyYXBwZXJXb3JsZCogaXNvbGF0ZWRXb3JsZCkKLSAg
ICAgICAgICAgIDogbV9jb2RlKGNvZGUpCisgICAgICAgICAgICA6IG1fZnVuY3Rpb24oKmlzb2xh
dGVkV29ybGQtPmdsb2JhbERhdGEoKSkKKyAgICAgICAgICAgICwgbV9jb2RlKGNvZGUpCiAgICAg
ICAgICAgICAsIG1faXNvbGF0ZWRXb3JsZChpc29sYXRlZFdvcmxkKQogICAgICAgICB7CiAgICAg
ICAgIH0KQEAgLTYyLDggKzYzLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2b2lk
IGV4ZWN1dGUoV29ya2VyQ29udGV4dCopOwogI2VuZGlmCiAKLSAgICAgICAgSlNDOjpQcm90ZWN0
ZWRKU1ZhbHVlIG1fZnVuY3Rpb247Ci0gICAgICAgIFZlY3RvcjxKU0M6OlByb3RlY3RlZEpTVmFs
dWU+IG1fYXJnczsKKyAgICAgICAgSlNDOjpHbG9iYWw8SlNDOjpVbmtub3duPiBtX2Z1bmN0aW9u
OworICAgICAgICBWZWN0b3I8SlNDOjpHbG9iYWw8SlNDOjpVbmtub3duPiA+IG1fYXJnczsKICAg
ICAgICAgU3RyaW5nIG1fY29kZTsKICAgICAgICAgUmVmUHRyPERPTVdyYXBwZXJXb3JsZD4gbV9p
c29sYXRlZFdvcmxkOwogICAgIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9TY3JpcHRDYWNoZWRGcmFtZURhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvU2NyaXB0Q2FjaGVkRnJhbWVEYXRhLmNwcAppbmRleCBkNjViY2UyNjAxMzhmOTE4NjkwZWNl
ODZmZDI0Y2JiNDg4ZWNjMGRkLi41YTQ2N2YyOTczYmUzZmIzZjliMmRiYjRjZGQyNjE5ZWM2YmZh
YWRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDYWNoZWRG
cmFtZURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENhY2hl
ZEZyYW1lRGF0YS5jcHAKQEAgLTU0LDcgKzU0LDcgQEAgU2NyaXB0Q2FjaGVkRnJhbWVEYXRhOjpT
Y3JpcHRDYWNoZWRGcmFtZURhdGEoRnJhbWUqIGZyYW1lKQogICAgIFNjcmlwdENvbnRyb2xsZXI6
OlNoZWxsTWFwOjppdGVyYXRvciB3aW5kb3dTaGVsbHNFbmQgPSB3aW5kb3dTaGVsbHMuZW5kKCk7
CiAgICAgZm9yIChTY3JpcHRDb250cm9sbGVyOjpTaGVsbE1hcDo6aXRlcmF0b3IgaXRlciA9IHdp
bmRvd1NoZWxscy5iZWdpbigpOyBpdGVyICE9IHdpbmRvd1NoZWxsc0VuZDsgKytpdGVyKSB7CiAg
ICAgICAgIEpTRE9NV2luZG93KiB3aW5kb3cgPSBpdGVyLT5zZWNvbmQtPndpbmRvdygpOwotICAg
ICAgICBtX3dpbmRvd3MuYWRkKGl0ZXItPmZpcnN0LmdldCgpLCB3aW5kb3cpOworICAgICAgICBt
X3dpbmRvd3MuYWRkKGl0ZXItPmZpcnN0LmdldCgpLCBHbG9iYWw8SlNET01XaW5kb3c+KHdpbmRv
dy0+Z2xvYmFsRGF0YSgpLCB3aW5kb3cpKTsKICAgICAgICAgbV9kb21XaW5kb3cgPSB3aW5kb3ct
PmltcGwoKTsKICAgICB9CiAKQEAgLTgzLDcgKzgzLDcgQEAgdm9pZCBTY3JpcHRDYWNoZWRGcmFt
ZURhdGE6OnJlc3RvcmUoRnJhbWUqIGZyYW1lKQogICAgICAgICBET01XcmFwcGVyV29ybGQqIHdv
cmxkID0gaXRlci0+Zmlyc3QuZ2V0KCk7CiAgICAgICAgIEpTRE9NV2luZG93U2hlbGwqIHdpbmRv
d1NoZWxsID0gaXRlci0+c2Vjb25kLmdldCgpOwogCi0gICAgICAgIGlmIChKU0RPTVdpbmRvdyog
d2luZG93ID0gbV93aW5kb3dzLmdldCh3b3JsZCkpCisgICAgICAgIGlmIChKU0RPTVdpbmRvdyog
d2luZG93ID0gbV93aW5kb3dzLmdldCh3b3JsZCkuZ2V0KCkpCiAgICAgICAgICAgICB3aW5kb3dT
aGVsbC0+c2V0V2luZG93KHdpbmRvdy0+Z2xvYmFsRGF0YSgpLCB3aW5kb3cpOwogICAgICAgICBl
bHNlIHsKICAgICAgICAgICAgIHdpbmRvd1NoZWxsLT5zZXRXaW5kb3coZnJhbWUtPmRvbVdpbmRv
dygpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENhY2hl
ZEZyYW1lRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q2FjaGVkRnJh
bWVEYXRhLmgKaW5kZXggNWY2OTFkOTFmZmM2NGNkOTViODI2NzViMzI4ODQwMjA4MDdlOGFjZi4u
MDg4NzRkNTU0ZGJjOTI2NTZlNjAwMDFjZjA1YTdjZmM5ZTAyMjVhOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q2FjaGVkRnJhbWVEYXRhLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q2FjaGVkRnJhbWVEYXRhLmgKQEAgLTMyLDcg
KzMyLDcgQEAKICNpZm5kZWYgU2NyaXB0Q2FjaGVkRnJhbWVEYXRhX2gKICNkZWZpbmUgU2NyaXB0
Q2FjaGVkRnJhbWVEYXRhX2gKIAotI2luY2x1ZGUgPHJ1bnRpbWUvUHJvdGVjdC5oPgorI2luY2x1
ZGUgPGNvbGxlY3Rvci9oYW5kbGVzL0dsb2JhbC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAg
ICAgY2xhc3MgRnJhbWU7CkBAIC00Miw3ICs0Miw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
ICAgIGNsYXNzIFNjcmlwdENhY2hlZEZyYW1lRGF0YSB7CiAgICAgICAgIFdURl9NQUtFX05PTkNP
UFlBQkxFKFNjcmlwdENhY2hlZEZyYW1lRGF0YSk7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwot
ICAgICAgICB0eXBlZGVmIEhhc2hNYXA8IFJlZlB0cjxET01XcmFwcGVyV29ybGQ+LCBKU0M6OlBy
b3RlY3RlZFB0cjxKU0RPTVdpbmRvdz4gPiBKU0RPTVdpbmRvd1NldDsKKyAgICAgICAgdHlwZWRl
ZiBIYXNoTWFwPCBSZWZQdHI8RE9NV3JhcHBlcldvcmxkPiwgSlNDOjpHbG9iYWw8SlNET01XaW5k
b3c+ID4gSlNET01XaW5kb3dTZXQ7CiAKICAgICBwdWJsaWM6CiAgICAgICAgIFNjcmlwdENhY2hl
ZEZyYW1lRGF0YShGcmFtZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvU2NyaXB0Q2FsbFN0YWNrRmFjdG9yeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9TY3JpcHRDYWxsU3RhY2tGYWN0b3J5LmNwcAppbmRleCA5NGNkMTI3ZDAyMDA0MzMzZmRkN2I5
ZjY5YWU1MmVlNjA3M2ZmNGM3Li5hMjY2NDQ5MjEwZDg3NGRjYzg1ZjRjNmNhMjY0YjQ0ZTgwN2E0
NGNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDYWxsU3Rh
Y2tGYWN0b3J5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDYWxs
U3RhY2tGYWN0b3J5LmNwcApAQCAtODgsNyArODgsNyBAQCBQYXNzUmVmUHRyPFNjcmlwdEFyZ3Vt
ZW50cz4gY3JlYXRlU2NyaXB0QXJndW1lbnRzKEpTQzo6RXhlY1N0YXRlKiBleGVjLCB1bnNpZ25l
ZAogICAgIFZlY3RvcjxTY3JpcHRWYWx1ZT4gYXJndW1lbnRzOwogICAgIHNpemVfdCBhcmd1bWVu
dENvdW50ID0gZXhlYy0+YXJndW1lbnRDb3VudCgpOwogICAgIGZvciAoc2l6ZV90IGkgPSBza2lw
QXJndW1lbnRDb3VudDsgaSA8IGFyZ3VtZW50Q291bnQ7ICsraSkKLSAgICAgICAgYXJndW1lbnRz
LmFwcGVuZChTY3JpcHRWYWx1ZShleGVjLT5hcmd1bWVudChpKSkpOworICAgICAgICBhcmd1bWVu
dHMuYXBwZW5kKFNjcmlwdFZhbHVlKGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+YXJndW1lbnQo
aSkpKTsKICAgICByZXR1cm4gU2NyaXB0QXJndW1lbnRzOjpjcmVhdGUoZXhlYywgYXJndW1lbnRz
KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29u
dHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVy
LmNwcAppbmRleCBlN2VhZmQwZTMyZmU2MGI5MWIwOWFmMTA5YzQ2M2Y0ZTg5ZmY0ZTE4Li40YjBm
NDRmYTY4N2FmZjBlNTE0Zjg0Y2Y3Mzk5MmQwM2VjOTllYjk2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcApAQCAtMTA4LDEwICsxMDgsMTEg
QEAgdm9pZCBTY3JpcHRDb250cm9sbGVyOjpkZXN0cm95V2luZG93U2hlbGwoRE9NV3JhcHBlcldv
cmxkKiB3b3JsZCkKIEpTRE9NV2luZG93U2hlbGwqIFNjcmlwdENvbnRyb2xsZXI6OmNyZWF0ZVdp
bmRvd1NoZWxsKERPTVdyYXBwZXJXb3JsZCogd29ybGQpCiB7CiAgICAgQVNTRVJUKCFtX3dpbmRv
d1NoZWxscy5jb250YWlucyh3b3JsZCkpOwotICAgIEpTRE9NV2luZG93U2hlbGwqIHdpbmRvd1No
ZWxsID0gbmV3IEpTRE9NV2luZG93U2hlbGwobV9mcmFtZS0+ZG9tV2luZG93KCksIHdvcmxkKTsK
KyAgICBHbG9iYWw8SlNET01XaW5kb3dTaGVsbD4gd2luZG93U2hlbGwoKndvcmxkLT5nbG9iYWxE
YXRhKCksIG5ldyBKU0RPTVdpbmRvd1NoZWxsKG1fZnJhbWUtPmRvbVdpbmRvdygpLCB3b3JsZCkp
OworICAgIEdsb2JhbDxKU0RPTVdpbmRvd1NoZWxsPiB3aW5kb3dTaGVsbDIod2luZG93U2hlbGwp
OwogICAgIG1fd2luZG93U2hlbGxzLmFkZCh3b3JsZCwgd2luZG93U2hlbGwpOwogICAgIHdvcmxk
LT5kaWRDcmVhdGVXaW5kb3dTaGVsbCh0aGlzKTsKLSAgICByZXR1cm4gd2luZG93U2hlbGw7Cisg
ICAgcmV0dXJuIHdpbmRvd1NoZWxsLmdldCgpOwogfQogCiBTY3JpcHRWYWx1ZSBTY3JpcHRDb250
cm9sbGVyOjpldmFsdWF0ZUluV29ybGQoY29uc3QgU2NyaXB0U291cmNlQ29kZSYgc291cmNlQ29k
ZSwgRE9NV3JhcHBlcldvcmxkKiB3b3JsZCkKQEAgLTE0OSwxNCArMTUwLDE0IEBAIFNjcmlwdFZh
bHVlIFNjcmlwdENvbnRyb2xsZXI6OmV2YWx1YXRlSW5Xb3JsZChjb25zdCBTY3JpcHRTb3VyY2VD
b2RlJiBzb3VyY2VDb2RlCiAKICAgICBpZiAoY29tcC5jb21wbFR5cGUoKSA9PSBOb3JtYWwgfHwg
Y29tcC5jb21wbFR5cGUoKSA9PSBSZXR1cm5WYWx1ZSkgewogICAgICAgICBtX3NvdXJjZVVSTCA9
IHNhdmVkU291cmNlVVJMOwotICAgICAgICByZXR1cm4gY29tcC52YWx1ZSgpOworICAgICAgICBy
ZXR1cm4gU2NyaXB0VmFsdWUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBjb21wLnZhbHVlKCkpOwogICAg
IH0KIAogICAgIGlmIChjb21wLmNvbXBsVHlwZSgpID09IFRocm93IHx8IGNvbXAuY29tcGxUeXBl
KCkgPT0gSW50ZXJydXB0ZWQpCiAgICAgICAgIHJlcG9ydEV4Y2VwdGlvbihleGVjLCBjb21wLnZh
bHVlKCkpOwogCiAgICAgbV9zb3VyY2VVUkwgPSBzYXZlZFNvdXJjZVVSTDsKLSAgICByZXR1cm4g
SlNWYWx1ZSgpOworICAgIHJldHVybiBTY3JpcHRWYWx1ZSgpOwogfQogCiBTY3JpcHRWYWx1ZSBT
Y3JpcHRDb250cm9sbGVyOjpldmFsdWF0ZShjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiBzb3VyY2VD
b2RlKSAKQEAgLTE4Miw3ICsxODMsNyBAQCB2b2lkIFNjcmlwdENvbnRyb2xsZXI6OmNsZWFyV2lu
ZG93U2hlbGwoYm9vbCBnb2luZ0ludG9QYWdlQ2FjaGUpCiAgICAgSlNMb2NrIGxvY2soU2lsZW5j
ZUFzc2VydGlvbnNPbmx5KTsKIAogICAgIGZvciAoU2hlbGxNYXA6Oml0ZXJhdG9yIGl0ZXIgPSBt
X3dpbmRvd1NoZWxscy5iZWdpbigpOyBpdGVyICE9IG1fd2luZG93U2hlbGxzLmVuZCgpOyArK2l0
ZXIpIHsKLSAgICAgICAgSlNET01XaW5kb3dTaGVsbCogd2luZG93U2hlbGwgPSBpdGVyLT5zZWNv
bmQ7CisgICAgICAgIEpTRE9NV2luZG93U2hlbGwqIHdpbmRvd1NoZWxsID0gaXRlci0+c2Vjb25k
LmdldCgpOwogCiAgICAgICAgIC8vIENsZWFyIHRoZSBkZWJ1Z2dlciBmcm9tIHRoZSBjdXJyZW50
IHdpbmRvdyBiZWZvcmUgc2V0dGluZyB0aGUgbmV3IHdpbmRvdy4KICAgICAgICAgYXR0YWNoRGVi
dWdnZXIod2luZG93U2hlbGwsIDApOwpAQCAtMzE3LDcgKzMxOCw3IEBAIGJvb2wgU2NyaXB0Q29u
dHJvbGxlcjo6Y2FuQWNjZXNzRnJvbUN1cnJlbnRPcmlnaW4oRnJhbWUgKmZyYW1lKQogdm9pZCBT
Y3JpcHRDb250cm9sbGVyOjphdHRhY2hEZWJ1Z2dlcihKU0M6OkRlYnVnZ2VyKiBkZWJ1Z2dlcikK
IHsKICAgICBmb3IgKFNoZWxsTWFwOjppdGVyYXRvciBpdGVyID0gbV93aW5kb3dTaGVsbHMuYmVn
aW4oKTsgaXRlciAhPSBtX3dpbmRvd1NoZWxscy5lbmQoKTsgKytpdGVyKQotICAgICAgICBhdHRh
Y2hEZWJ1Z2dlcihpdGVyLT5zZWNvbmQsIGRlYnVnZ2VyKTsKKyAgICAgICAgYXR0YWNoRGVidWdn
ZXIoaXRlci0+c2Vjb25kLmdldCgpLCBkZWJ1Z2dlcik7CiB9CiAKIHZvaWQgU2NyaXB0Q29udHJv
bGxlcjo6YXR0YWNoRGVidWdnZXIoSlNET01XaW5kb3dTaGVsbCogc2hlbGwsIEpTQzo6RGVidWdn
ZXIqIGRlYnVnZ2VyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2Ny
aXB0Q29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJv
bGxlci5oCmluZGV4IDE5NTQyYWYxMGY5NzVkMjZmYWQyMjk3MTZhMTdjMTljNDg3MWY0NDAuLjJl
YzM4NzJiNzUxYWViZjliYjQwMmViOGQ5YzM4MWJlY2M1NDA4OGMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmgKQEAgLTI1LDcgKzI1LDcgQEAKICNp
bmNsdWRlICJKU0RPTVdpbmRvd1NoZWxsLmgiCiAjaW5jbHVkZSAiU2NyaXB0Q29udHJvbGxlckJh
c2UuaCIKICNpbmNsdWRlICJTY3JpcHRJbnN0YW5jZS5oIgotI2luY2x1ZGUgPHJ1bnRpbWUvUHJv
dGVjdC5oPgorI2luY2x1ZGUgPGNvbGxlY3Rvci9oYW5kbGVzL0dsb2JhbC5oPgogI2luY2x1ZGUg
PHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCkBAIC02NCw3ICs2NCw3
IEBAIHR5cGVkZWYgSGFzaE1hcDx2b2lkKiwgUmVmUHRyPEpTQzo6QmluZGluZ3M6OlJvb3RPYmpl
Y3Q+ID4gUm9vdE9iamVjdE1hcDsKIAogY2xhc3MgU2NyaXB0Q29udHJvbGxlciB7CiAgICAgZnJp
ZW5kIGNsYXNzIFNjcmlwdENhY2hlZEZyYW1lRGF0YTsKLSAgICB0eXBlZGVmIFdURjo6SGFzaE1h
cDwgUmVmUHRyPERPTVdyYXBwZXJXb3JsZD4sIEpTQzo6UHJvdGVjdGVkUHRyPEpTRE9NV2luZG93
U2hlbGw+ID4gU2hlbGxNYXA7CisgICAgdHlwZWRlZiBXVEY6Okhhc2hNYXA8IFJlZlB0cjxET01X
cmFwcGVyV29ybGQ+LCBKU0M6Okdsb2JhbDxKU0RPTVdpbmRvd1NoZWxsPiA+IFNoZWxsTWFwOwog
CiBwdWJsaWM6CiAgICAgU2NyaXB0Q29udHJvbGxlcihGcmFtZSopOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0RnVuY3Rpb25DYWxsLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdEZ1bmN0aW9uQ2FsbC5jcHAKaW5kZXggZjc3YzY5MWJm
NDBiZGFmYTk0NmYxN2ZmMDQ4MmQ0NWQ4ZjgzM2VkNy4uNTE4YTc4N2ZkOWU1OGMyMTk5YTFlNzEy
ZTdmZjEyOWMyNDllNzcyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
U2NyaXB0RnVuY3Rpb25DYWxsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9T
Y3JpcHRGdW5jdGlvbkNhbGwuY3BwCkBAIC0xNTAsNyArMTUwLDcgQEAgU2NyaXB0VmFsdWUgU2Ny
aXB0RnVuY3Rpb25DYWxsOjpjYWxsKGJvb2wmIGhhZEV4Y2VwdGlvbiwgYm9vbCByZXBvcnRFeGNl
cHRpb25zKQogICAgICAgICByZXR1cm4gU2NyaXB0VmFsdWUoKTsKICAgICB9CiAKLSAgICByZXR1
cm4gU2NyaXB0VmFsdWUocmVzdWx0KTsKKyAgICByZXR1cm4gU2NyaXB0VmFsdWUobV9leGVjLT5n
bG9iYWxEYXRhKCksIHJlc3VsdCk7CiB9CiAKIFNjcmlwdFZhbHVlIFNjcmlwdEZ1bmN0aW9uQ2Fs
bDo6Y2FsbCgpCkBAIC0yMjAsNyArMjIwLDcgQEAgU2NyaXB0VmFsdWUgU2NyaXB0Q2FsbGJhY2s6
OmNhbGwoYm9vbCYgaGFkRXhjZXB0aW9uKQogICAgICAgICByZXR1cm4gU2NyaXB0VmFsdWUoKTsK
ICAgICB9CiAKLSAgICByZXR1cm4gU2NyaXB0VmFsdWUocmVzdWx0KTsKKyAgICByZXR1cm4gU2Ny
aXB0VmFsdWUobV9leGVjLT5nbG9iYWxEYXRhKCksIHJlc3VsdCk7CiB9CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Njcmlw
dE9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRPYmplY3QuY3Bw
CmluZGV4IGI1YzFmMDExOTY0NjA4MzUyNjJkYzIwOTYzM2QwYjc0YzM4YTY2ZjkuLjAzNTU5N2Ix
NDczMmE0YjliOWE5MmU2YzVhOTI1YTUzNjdhYThmMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL1NjcmlwdE9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvU2NyaXB0T2JqZWN0LmNwcApAQCAtNDUsNyArNDUsNyBAQCB1c2luZyBuYW1lc3Bh
Y2UgSlNDOwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBTY3JpcHRPYmplY3Q6OlNjcmlwdE9iamVj
dChTY3JpcHRTdGF0ZSogc2NyaXB0U3RhdGUsIEpTT2JqZWN0KiBvYmplY3QpCi0gICAgOiBTY3Jp
cHRWYWx1ZShvYmplY3QpCisgICAgOiBTY3JpcHRWYWx1ZShzY3JpcHRTdGF0ZS0+Z2xvYmFsRGF0
YSgpLCBvYmplY3QpCiAgICAgLCBtX3NjcmlwdFN0YXRlKHNjcmlwdFN0YXRlKQogewogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0T2JqZWN0LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRPYmplY3QuaAppbmRleCBmMDg1ZThiZThkZmYx
Yjc3ZDU2NzkxZWQ3ZmJhNzQzZjRkZmI1MDcxLi5jMTBiZjE4YmQzMGEzZDk5MmUwYmVhYjdiODhm
ZjFiM2VjZDQyMzIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3Jp
cHRPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRPYmplY3Qu
aApAQCAtMzQsOCArMzQsOCBAQAogI2luY2x1ZGUgIlNjcmlwdFN0YXRlLmgiCiAjaW5jbHVkZSAi
U2NyaXB0VmFsdWUuaCIKIAorI2luY2x1ZGUgPGNvbGxlY3Rvci9oYW5kbGVzL0dsb2JhbC5oPgog
I2luY2x1ZGUgPHJ1bnRpbWUvSlNPYmplY3QuaD4KLSNpbmNsdWRlIDxydW50aW1lL1Byb3RlY3Qu
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIEluamVjdGVkU2NyaXB0SG9zdDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFN0YXRlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFN0YXRlLmNwcAppbmRleCBkNjY5OWY2
YzM5ZTFiOWE4ZTA5OTVlN2M0OGM1NjQ0YjIxMjBmYjBkLi44YTdjOWE1YmI2ODIzOTczYmE0ZmFl
Mjk1OWJhOTBjNjI2ZjM5YWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9TY3JpcHRTdGF0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0
U3RhdGUuY3BwCkBAIC00NSwxNCArNDUsMTQgQEAgU2NyaXB0U3RhdGVQcm90ZWN0ZWRQdHI6On5T
Y3JpcHRTdGF0ZVByb3RlY3RlZFB0cigpCiB9CiAKIFNjcmlwdFN0YXRlUHJvdGVjdGVkUHRyOjpT
Y3JpcHRTdGF0ZVByb3RlY3RlZFB0cihTY3JpcHRTdGF0ZSogc2NyaXB0U3RhdGUpCi0gICAgOiBt
X2dsb2JhbE9iamVjdChzY3JpcHRTdGF0ZS0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKQorICAgIDog
bV9nbG9iYWxPYmplY3Qoc2NyaXB0U3RhdGUtPmdsb2JhbERhdGEoKSwgc2NyaXB0U3RhdGUtPmxl
eGljYWxHbG9iYWxPYmplY3QoKSkKIHsKIH0KIAogU2NyaXB0U3RhdGUqIFNjcmlwdFN0YXRlUHJv
dGVjdGVkUHRyOjpnZXQoKSBjb25zdAogewogICAgIGlmIChtX2dsb2JhbE9iamVjdCkKLSAgICAg
ICAgcmV0dXJuIG1fZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCk7CisgICAgICAgIHJldHVybiBj
b25zdF9jYXN0PEpTQzo6SlNHbG9iYWxPYmplY3QqPihtX2dsb2JhbE9iamVjdC5nZXQoKSktPmds
b2JhbEV4ZWMoKTsKICAgICByZXR1cm4gMDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvU2NyaXB0U3RhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L1NjcmlwdFN0YXRlLmgKaW5kZXggZTE5YzBjODMwZWQyMTEzMjYyMjEyODE2ZTYxOGM0YjQ4YmNm
NTFiMS4uZjI3YjMwNmExOGNkM2RlNTM4MThkM2Y2YzY2YjNkNmU5NGMxMDE5ZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0U3RhdGUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRTdGF0ZS5oCkBAIC0zMiw3ICszMiw3IEBACiAjaWZu
ZGVmIFNjcmlwdFN0YXRlX2gKICNkZWZpbmUgU2NyaXB0U3RhdGVfaAogCi0jaW5jbHVkZSA8cnVu
dGltZS9Qcm90ZWN0Lmg+CisjaW5jbHVkZSA8Y29sbGVjdG9yL2hhbmRsZXMvR2xvYmFsLmg+CiAj
aW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtNTksNyAr
NTksNyBAQCBwdWJsaWM6CiAgICAgflNjcmlwdFN0YXRlUHJvdGVjdGVkUHRyKCk7CiAgICAgU2Ny
aXB0U3RhdGUqIGdldCgpIGNvbnN0OwogcHJpdmF0ZToKLSAgICBKU0M6OlByb3RlY3RlZFB0cjxK
U0M6OkpTR2xvYmFsT2JqZWN0PiBtX2dsb2JhbE9iamVjdDsKKyAgICBKU0M6Okdsb2JhbDxKU0M6
OkpTR2xvYmFsT2JqZWN0PiBtX2dsb2JhbE9iamVjdDsKIH07CiAKIFNjcmlwdFN0YXRlKiBtYWlu
V29ybGRTY3JpcHRTdGF0ZShGcmFtZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvU2NyaXB0VmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2Ny
aXB0VmFsdWUuY3BwCmluZGV4IGEyYTcyYjZkMDcwZmM5OTBjNzdkYWVmZDM5ZTFkNDZjYmE4N2Q4
MjAuLjZmZTZlYTM4ZDFjNDQ2MzI4YWVkYWMzZTMxNzk1NjI1ZDUxY2UzZjQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFZhbHVlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRWYWx1ZS5jcHAKQEAgLTM1LDggKzM1LDggQEAKICNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9BUElDYXN0Lmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENv
cmUvSlNWYWx1ZVJlZi5oPgogCisjaW5jbHVkZSA8Y29sbGVjdG9yL2hhbmRsZXMvR2xvYmFsLmg+
CiAjaW5jbHVkZSA8cnVudGltZS9KU0xvY2suaD4KLSNpbmNsdWRlIDxydW50aW1lL1Byb3RlY3Qu
aD4KICNpbmNsdWRlIDxydW50aW1lL1VTdHJpbmcuaD4KIAogdXNpbmcgbmFtZXNwYWNlIEpTQzsK
QEAgLTg3LDcgKzg3LDcgQEAgYm9vbCBTY3JpcHRWYWx1ZTo6aXNPYmplY3QoKSBjb25zdAogYm9v
bCBTY3JpcHRWYWx1ZTo6aXNGdW5jdGlvbigpIGNvbnN0CiB7CiAgICAgQ2FsbERhdGEgY2FsbERh
dGE7Ci0gICAgcmV0dXJuIGdldENhbGxEYXRhKG1fdmFsdWUsIGNhbGxEYXRhKSAhPSBDYWxsVHlw
ZU5vbmU7CisgICAgcmV0dXJuIGdldENhbGxEYXRhKG1fdmFsdWUuZ2V0KCksIGNhbGxEYXRhKSAh
PSBDYWxsVHlwZU5vbmU7CiB9CiAKIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBT
Y3JpcHRWYWx1ZTo6c2VyaWFsaXplKFNjcmlwdFN0YXRlKiBzY3JpcHRTdGF0ZSkKQEAgLTk3LDcg
Kzk3LDcgQEAgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IFNjcmlwdFZhbHVlOjpz
ZXJpYWxpemUoU2NyaXB0U3RhdGUqIHNjcmlwdFN0YXQKIAogU2NyaXB0VmFsdWUgU2NyaXB0VmFs
dWU6OmRlc2VyaWFsaXplKFNjcmlwdFN0YXRlKiBzY3JpcHRTdGF0ZSwgU2VyaWFsaXplZFNjcmlw
dFZhbHVlKiB2YWx1ZSkKIHsKLSAgICByZXR1cm4gU2NyaXB0VmFsdWUodmFsdWUtPmRlc2VyaWFs
aXplKHNjcmlwdFN0YXRlLCBzY3JpcHRTdGF0ZS0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKSk7Cisg
ICAgcmV0dXJuIFNjcmlwdFZhbHVlKHNjcmlwdFN0YXRlLT5nbG9iYWxEYXRhKCksIHZhbHVlLT5k
ZXNlcmlhbGl6ZShzY3JpcHRTdGF0ZSwgc2NyaXB0U3RhdGUtPmxleGljYWxHbG9iYWxPYmplY3Qo
KSkpOwogfQogCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL1NjcmlwdFZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9TY3JpcHRWYWx1ZS5oCmluZGV4IDU3NDZjM2Y2NzRhYWQyYTg5NjllNmUwYWIwMzI4MDdmZmYx
NjlmZDMuLjM3Y2YyNDM2NTFiYTlhNDRlYzg5NTdiNWE2NzUxN2RiNGY0ZmRkZTYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFZhbHVlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0VmFsdWUuaApAQCAtMzQsOCArMzQsOCBAQAogI2lu
Y2x1ZGUgIkpTRE9NQmluZGluZy5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCiAjaW5j
bHVkZSAiU2NyaXB0U3RhdGUuaCIKKyNpbmNsdWRlIDxjb2xsZWN0b3IvaGFuZGxlcy9HbG9iYWwu
aD4KICNpbmNsdWRlIDxydW50aW1lL0pTVmFsdWUuaD4KLSNpbmNsdWRlIDxydW50aW1lL1Byb3Rl
Y3QuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CkBAIC00NSw3ICs0NSw4IEBAIGNsYXNzIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTsKIAogY2xhc3Mg
U2NyaXB0VmFsdWUgewogcHVibGljOgotICAgIFNjcmlwdFZhbHVlKEpTQzo6SlNWYWx1ZSB2YWx1
ZSA9IEpTQzo6SlNWYWx1ZSgpKSA6IG1fdmFsdWUodmFsdWUpIHt9CisgICAgU2NyaXB0VmFsdWUo
KSA6IG1fdmFsdWUoSlNDOjpHbG9iYWw8SlNDOjpVbmtub3duPjo6RW1wdHlWYWx1ZSkgeyB9Cisg
ICAgU2NyaXB0VmFsdWUoSlNDOjpKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTQzo6SlNWYWx1
ZSB2YWx1ZSkgOiBtX3ZhbHVlKGdsb2JhbERhdGEsIHZhbHVlKSB7fQogICAgIHZpcnR1YWwgflNj
cmlwdFZhbHVlKCkge30KIAogICAgIEpTQzo6SlNWYWx1ZSBqc1ZhbHVlKCkgY29uc3QgeyByZXR1
cm4gbV92YWx1ZS5nZXQoKTsgfQpAQCAtNTYsMjEgKzU3LDIxIEBAIHB1YmxpYzoKICAgICBib29s
IGlzVW5kZWZpbmVkKCkgY29uc3Q7CiAgICAgYm9vbCBpc09iamVjdCgpIGNvbnN0OwogICAgIGJv
b2wgaXNGdW5jdGlvbigpIGNvbnN0OwotICAgIGJvb2wgaGFzTm9WYWx1ZSgpIGNvbnN0IHsgcmV0
dXJuIG1fdmFsdWUgPT0gSlNDOjpKU1ZhbHVlKCk7IH0KKyAgICBib29sIGhhc05vVmFsdWUoKSBj
b25zdCB7IHJldHVybiBtX3ZhbHVlLmlzRW1wdHkoKTsgfQogCiAgICAgYm9vbCBvcGVyYXRvcj09
KGNvbnN0IFNjcmlwdFZhbHVlJiBvdGhlcikgY29uc3QgeyByZXR1cm4gbV92YWx1ZSA9PSBvdGhl
ci5tX3ZhbHVlOyB9CiAKICAgICBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gc2Vy
aWFsaXplKFNjcmlwdFN0YXRlKik7CiAgICAgc3RhdGljIFNjcmlwdFZhbHVlIGRlc2VyaWFsaXpl
KFNjcmlwdFN0YXRlKiwgU2VyaWFsaXplZFNjcmlwdFZhbHVlKik7CiAKLSAgICBzdGF0aWMgU2Ny
aXB0VmFsdWUgdW5kZWZpbmVkKCkgeyByZXR1cm4gU2NyaXB0VmFsdWUoSlNDOjpqc1VuZGVmaW5l
ZCgpKTsgfQorICAgIHN0YXRpYyBTY3JpcHRWYWx1ZSB1bmRlZmluZWQoKTsKIAogI2lmIEVOQUJM
RShJTlNQRUNUT1IpCiAgICAgUGFzc1JlZlB0cjxJbnNwZWN0b3JWYWx1ZT4gdG9JbnNwZWN0b3JW
YWx1ZShTY3JpcHRTdGF0ZSopIGNvbnN0OwogI2VuZGlmCiAKIHByaXZhdGU6Ci0gICAgSlNDOjpQ
cm90ZWN0ZWRKU1ZhbHVlIG1fdmFsdWU7CisgICAgSlNDOjpHbG9iYWw8SlNDOjpVbmtub3duPiBt
X3ZhbHVlOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0V3JhcHBhYmxlLmggYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9TY3JpcHRXcmFwcGFibGUuaAppbmRleCBjNTc3OTZjMTYyNDA4MWI5MjQ1ZGE4
YWJiNTY3YWEyMDJlNGNiOWRmLi5lMzllNGY3NGRjMDJiMjBjYWM4N2IxNTE0MGE1MjY5NGIxNDA1
YmJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRXcmFwcGFi
bGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRXcmFwcGFibGUuaApA
QCAtMzgsMjMgKzM4LDIyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgU2NyaXB0V3Jh
cHBhYmxlIHsKIHB1YmxpYzoKKyAgICBTY3JpcHRXcmFwcGFibGUoKQorICAgIHsKKyAgICB9CisK
ICAgICBET01PYmplY3QqIHdyYXBwZXIoKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIG1f
d3JhcHBlci5nZXQoKTsKICAgICB9Ci0gICAgCi0gICAgdm9pZCBzZXRXcmFwcGVyKERPTU9iamVj
dCogd3JhcHBlcikKKworICAgIHZvaWQgc2V0V3JhcHBlcihKU0M6OkpTR2xvYmFsRGF0YSYgZ2xv
YmFsRGF0YSwgRE9NT2JqZWN0KiB3cmFwcGVyKQogICAgIHsKLSAgICAgICAgbV93cmFwcGVyID0g
d3JhcHBlcjsKLSAgICB9Ci0gICAgCi0gICAgdm9pZCBjbGVhcldyYXBwZXIoRE9NT2JqZWN0KiB3
cmFwcGVyKSAKLSAgICB7IAotICAgICAgICBtX3dyYXBwZXIuY2xlYXIod3JhcHBlcik7IAorICAg
ICAgICBtX3dyYXBwZXIuc2V0KGdsb2JhbERhdGEsIHdyYXBwZXIsIDApOwogICAgIH0KLSAgICAK
KwogcHJpdmF0ZToKLSAgICBKU0M6OldlYWtHQ1B0cjxET01PYmplY3Q+IG1fd3JhcHBlcjsKKyAg
ICBKU0M6OkxhenlXZWFrR0NQdHI8RE9NT2JqZWN0PiBtX3dyYXBwZXI7CiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9X
b3JrZXJTY3JpcHRDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dv
cmtlclNjcmlwdENvbnRyb2xsZXIuY3BwCmluZGV4IDBjODk2MzJkOThjZWVlNDdlMzMyZmQyMGY2
OTYwZjFhYzVjOWFhOTcuLmQzOTIyODE2OWJmOGRiZjIwZjVhYjQyM2JjMDUyNWM5M2UxZDc5OWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENvbnRy
b2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENv
bnRyb2xsZXIuY3BwCkBAIC01Miw2ICs1Miw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIFdvcmtl
clNjcmlwdENvbnRyb2xsZXI6OldvcmtlclNjcmlwdENvbnRyb2xsZXIoV29ya2VyQ29udGV4dCog
d29ya2VyQ29udGV4dCkKICAgICA6IG1fZ2xvYmFsRGF0YShKU0dsb2JhbERhdGE6OmNyZWF0ZShU
aHJlYWRTdGFja1R5cGVTbWFsbCkpCiAgICAgLCBtX3dvcmtlckNvbnRleHQod29ya2VyQ29udGV4
dCkKKyAgICAsIG1fd29ya2VyQ29udGV4dFdyYXBwZXIoKm1fZ2xvYmFsRGF0YSkKICAgICAsIG1f
ZXhlY3V0aW9uRm9yYmlkZGVuKGZhbHNlKQogewogICAgIGluaXROb3JtYWxXb3JsZENsaWVudERh
dGEobV9nbG9iYWxEYXRhLmdldCgpKTsKQEAgLTU5LDcgKzYwLDcgQEAgV29ya2VyU2NyaXB0Q29u
dHJvbGxlcjo6V29ya2VyU2NyaXB0Q29udHJvbGxlcihXb3JrZXJDb250ZXh0KiB3b3JrZXJDb250
ZXh0KQogCiBXb3JrZXJTY3JpcHRDb250cm9sbGVyOjp+V29ya2VyU2NyaXB0Q29udHJvbGxlcigp
CiB7Ci0gICAgbV93b3JrZXJDb250ZXh0V3JhcHBlciA9IDA7IC8vIFVucHJvdGVjdCB0aGUgZ2xv
YmFsIG9iamVjdC4KKyAgICBtX3dvcmtlckNvbnRleHRXcmFwcGVyLmNsZWFyKCk7IC8vIFVucHJv
dGVjdCB0aGUgZ2xvYmFsIG9iamVjdC4KICAgICBtX2dsb2JhbERhdGEtPmhlYXAuZGVzdHJveSgp
OwogfQogCkBAIC03MywyNiArNzQsMjYgQEAgdm9pZCBXb3JrZXJTY3JpcHRDb250cm9sbGVyOjpp
bml0U2NyaXB0KCkKICAgICAvLyB3aGVuIHdlIGFsbG9jYXRlIHRoZSBnbG9iYWwgb2JqZWN0LiAo
T25jZSB0aGUgZ2xvYmFsIG9iamVjdCBpcyBmdWxseQogICAgIC8vIGNvbnN0cnVjdGVkLCBpdCBj
YW4gbWFyayBpdHMgb3duIHByb3RvdHlwZS4pCiAgICAgUmVmUHRyPFN0cnVjdHVyZT4gd29ya2Vy
Q29udGV4dFByb3RvdHlwZVN0cnVjdHVyZSA9IEpTV29ya2VyQ29udGV4dFByb3RvdHlwZTo6Y3Jl
YXRlU3RydWN0dXJlKGpzTnVsbCgpKTsKLSAgICBQcm90ZWN0ZWRQdHI8SlNXb3JrZXJDb250ZXh0
UHJvdG90eXBlPiB3b3JrZXJDb250ZXh0UHJvdG90eXBlID0gbmV3IChtX2dsb2JhbERhdGEuZ2V0
KCkpIEpTV29ya2VyQ29udGV4dFByb3RvdHlwZSgwLCB3b3JrZXJDb250ZXh0UHJvdG90eXBlU3Ry
dWN0dXJlLnJlbGVhc2UoKSk7CisgICAgR2xvYmFsPEpTV29ya2VyQ29udGV4dFByb3RvdHlwZT4g
d29ya2VyQ29udGV4dFByb3RvdHlwZSgqbV9nbG9iYWxEYXRhLCBuZXcgKG1fZ2xvYmFsRGF0YS5n
ZXQoKSkgSlNXb3JrZXJDb250ZXh0UHJvdG90eXBlKDAsIHdvcmtlckNvbnRleHRQcm90b3R5cGVT
dHJ1Y3R1cmUucmVsZWFzZSgpKSk7CiAKICAgICBpZiAobV93b3JrZXJDb250ZXh0LT5pc0RlZGlj
YXRlZFdvcmtlckNvbnRleHQoKSkgewotICAgICAgICBSZWZQdHI8U3RydWN0dXJlPiBkZWRpY2F0
ZWRDb250ZXh0UHJvdG90eXBlU3RydWN0dXJlID0gSlNEZWRpY2F0ZWRXb3JrZXJDb250ZXh0UHJv
dG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUod29ya2VyQ29udGV4dFByb3RvdHlwZSk7Ci0gICAgICAg
IFByb3RlY3RlZFB0cjxKU0RlZGljYXRlZFdvcmtlckNvbnRleHRQcm90b3R5cGU+IGRlZGljYXRl
ZENvbnRleHRQcm90b3R5cGUgPSBuZXcgKG1fZ2xvYmFsRGF0YS5nZXQoKSkgSlNEZWRpY2F0ZWRX
b3JrZXJDb250ZXh0UHJvdG90eXBlKDAsIGRlZGljYXRlZENvbnRleHRQcm90b3R5cGVTdHJ1Y3R1
cmUucmVsZWFzZSgpKTsKLSAgICAgICAgUmVmUHRyPFN0cnVjdHVyZT4gc3RydWN0dXJlID0gSlNE
ZWRpY2F0ZWRXb3JrZXJDb250ZXh0OjpjcmVhdGVTdHJ1Y3R1cmUoZGVkaWNhdGVkQ29udGV4dFBy
b3RvdHlwZSk7CisgICAgICAgIFJlZlB0cjxTdHJ1Y3R1cmU+IGRlZGljYXRlZENvbnRleHRQcm90
b3R5cGVTdHJ1Y3R1cmUgPSBKU0RlZGljYXRlZFdvcmtlckNvbnRleHRQcm90b3R5cGU6OmNyZWF0
ZVN0cnVjdHVyZSh3b3JrZXJDb250ZXh0UHJvdG90eXBlLmdldCgpKTsKKyAgICAgICAgR2xvYmFs
PEpTRGVkaWNhdGVkV29ya2VyQ29udGV4dFByb3RvdHlwZT4gZGVkaWNhdGVkQ29udGV4dFByb3Rv
dHlwZSgqbV9nbG9iYWxEYXRhLCBuZXcgKG1fZ2xvYmFsRGF0YS5nZXQoKSkgSlNEZWRpY2F0ZWRX
b3JrZXJDb250ZXh0UHJvdG90eXBlKDAsIGRlZGljYXRlZENvbnRleHRQcm90b3R5cGVTdHJ1Y3R1
cmUucmVsZWFzZSgpKSk7CisgICAgICAgIFJlZlB0cjxTdHJ1Y3R1cmU+IHN0cnVjdHVyZSA9IEpT
RGVkaWNhdGVkV29ya2VyQ29udGV4dDo6Y3JlYXRlU3RydWN0dXJlKGRlZGljYXRlZENvbnRleHRQ
cm90b3R5cGUuZ2V0KCkpOwogCi0gICAgICAgIG1fd29ya2VyQ29udGV4dFdyYXBwZXIgPSBuZXcg
KG1fZ2xvYmFsRGF0YS5nZXQoKSkgSlNEZWRpY2F0ZWRXb3JrZXJDb250ZXh0KHN0cnVjdHVyZS5y
ZWxlYXNlKCksIG1fd29ya2VyQ29udGV4dC0+dG9EZWRpY2F0ZWRXb3JrZXJDb250ZXh0KCkpOwot
ICAgICAgICB3b3JrZXJDb250ZXh0UHJvdG90eXBlLT5wdXRBbm9ueW1vdXNWYWx1ZSgqbV9nbG9i
YWxEYXRhLCAwLCBtX3dvcmtlckNvbnRleHRXcmFwcGVyKTsKLSAgICAgICAgZGVkaWNhdGVkQ29u
dGV4dFByb3RvdHlwZS0+cHV0QW5vbnltb3VzVmFsdWUoKm1fZ2xvYmFsRGF0YSwgMCwgbV93b3Jr
ZXJDb250ZXh0V3JhcHBlcik7CisgICAgICAgIG1fd29ya2VyQ29udGV4dFdyYXBwZXIuc2V0KCpt
X2dsb2JhbERhdGEsIG5ldyAobV9nbG9iYWxEYXRhLmdldCgpKSBKU0RlZGljYXRlZFdvcmtlckNv
bnRleHQoc3RydWN0dXJlLnJlbGVhc2UoKSwgbV93b3JrZXJDb250ZXh0LT50b0RlZGljYXRlZFdv
cmtlckNvbnRleHQoKSkpOworICAgICAgICB3b3JrZXJDb250ZXh0UHJvdG90eXBlLT5wdXRBbm9u
eW1vdXNWYWx1ZSgqbV9nbG9iYWxEYXRhLCAwLCBtX3dvcmtlckNvbnRleHRXcmFwcGVyLmdldCgp
KTsKKyAgICAgICAgZGVkaWNhdGVkQ29udGV4dFByb3RvdHlwZS0+cHV0QW5vbnltb3VzVmFsdWUo
Km1fZ2xvYmFsRGF0YSwgMCwgbV93b3JrZXJDb250ZXh0V3JhcHBlci5nZXQoKSk7CiAjaWYgRU5B
QkxFKFNIQVJFRF9XT1JLRVJTKQogICAgIH0gZWxzZSB7CiAgICAgICAgIEFTU0VSVChtX3dvcmtl
ckNvbnRleHQtPmlzU2hhcmVkV29ya2VyQ29udGV4dCgpKTsKLSAgICAgICAgUmVmUHRyPFN0cnVj
dHVyZT4gc2hhcmVkQ29udGV4dFByb3RvdHlwZVN0cnVjdHVyZSA9IEpTU2hhcmVkV29ya2VyQ29u
dGV4dFByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKHdvcmtlckNvbnRleHRQcm90b3R5cGUpOwot
ICAgICAgICBQcm90ZWN0ZWRQdHI8SlNTaGFyZWRXb3JrZXJDb250ZXh0UHJvdG90eXBlPiBzaGFy
ZWRDb250ZXh0UHJvdG90eXBlID0gbmV3IChtX2dsb2JhbERhdGEuZ2V0KCkpIEpTU2hhcmVkV29y
a2VyQ29udGV4dFByb3RvdHlwZSgwLCBzaGFyZWRDb250ZXh0UHJvdG90eXBlU3RydWN0dXJlLnJl
bGVhc2UoKSk7Ci0gICAgICAgIFJlZlB0cjxTdHJ1Y3R1cmU+IHN0cnVjdHVyZSA9IEpTU2hhcmVk
V29ya2VyQ29udGV4dDo6Y3JlYXRlU3RydWN0dXJlKHNoYXJlZENvbnRleHRQcm90b3R5cGUpOwor
ICAgICAgICBSZWZQdHI8U3RydWN0dXJlPiBzaGFyZWRDb250ZXh0UHJvdG90eXBlU3RydWN0dXJl
ID0gSlNTaGFyZWRXb3JrZXJDb250ZXh0UHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUod29ya2Vy
Q29udGV4dFByb3RvdHlwZS5nZXQoKSk7CisgICAgICAgIEdsb2JhbDxKU1NoYXJlZFdvcmtlckNv
bnRleHRQcm90b3R5cGU+IHNoYXJlZENvbnRleHRQcm90b3R5cGUoKm1fZ2xvYmFsRGF0YSwgbmV3
IChtX2dsb2JhbERhdGEuZ2V0KCkpIEpTU2hhcmVkV29ya2VyQ29udGV4dFByb3RvdHlwZSgwLCBz
aGFyZWRDb250ZXh0UHJvdG90eXBlU3RydWN0dXJlLnJlbGVhc2UoKSkpOworICAgICAgICBSZWZQ
dHI8U3RydWN0dXJlPiBzdHJ1Y3R1cmUgPSBKU1NoYXJlZFdvcmtlckNvbnRleHQ6OmNyZWF0ZVN0
cnVjdHVyZShzaGFyZWRDb250ZXh0UHJvdG90eXBlLmdldCgpKTsKIAotICAgICAgICBtX3dvcmtl
ckNvbnRleHRXcmFwcGVyID0gbmV3IChtX2dsb2JhbERhdGEuZ2V0KCkpIEpTU2hhcmVkV29ya2Vy
Q29udGV4dChzdHJ1Y3R1cmUucmVsZWFzZSgpLCBtX3dvcmtlckNvbnRleHQtPnRvU2hhcmVkV29y
a2VyQ29udGV4dCgpKTsKLSAgICAgICAgd29ya2VyQ29udGV4dFByb3RvdHlwZS0+cHV0QW5vbnlt
b3VzVmFsdWUoKm1fZ2xvYmFsRGF0YSwgMCwgbV93b3JrZXJDb250ZXh0V3JhcHBlcik7Ci0gICAg
ICAgIHNoYXJlZENvbnRleHRQcm90b3R5cGUtPnB1dEFub255bW91c1ZhbHVlKCptX2dsb2JhbERh
dGEsIDAsIG1fd29ya2VyQ29udGV4dFdyYXBwZXIpOworICAgICAgICBtX3dvcmtlckNvbnRleHRX
cmFwcGVyLnNldCgqbV9nbG9iYWxEYXRhLCBuZXcgKG1fZ2xvYmFsRGF0YS5nZXQoKSkgSlNTaGFy
ZWRXb3JrZXJDb250ZXh0KHN0cnVjdHVyZS5yZWxlYXNlKCksIG1fd29ya2VyQ29udGV4dC0+dG9T
aGFyZWRXb3JrZXJDb250ZXh0KCkpKTsKKyAgICAgICAgd29ya2VyQ29udGV4dFByb3RvdHlwZS0+
cHV0QW5vbnltb3VzVmFsdWUoKm1fZ2xvYmFsRGF0YSwgMCwgbV93b3JrZXJDb250ZXh0V3JhcHBl
ci5nZXQoKSk7CisgICAgICAgIHNoYXJlZENvbnRleHRQcm90b3R5cGUtPnB1dEFub255bW91c1Zh
bHVlKCptX2dsb2JhbERhdGEsIDAsIG1fd29ya2VyQ29udGV4dFdyYXBwZXIuZ2V0KCkpOwogI2Vu
ZGlmCiAgICAgfQogfQpAQCAtMTAyLDEwICsxMDMsMTAgQEAgU2NyaXB0VmFsdWUgV29ya2VyU2Ny
aXB0Q29udHJvbGxlcjo6ZXZhbHVhdGUoY29uc3QgU2NyaXB0U291cmNlQ29kZSYgc291cmNlQ29k
ZSkKICAgICB7CiAgICAgICAgIE11dGV4TG9ja2VyIGxvY2sobV9zaGFyZWREYXRhTXV0ZXgpOwog
ICAgICAgICBpZiAobV9leGVjdXRpb25Gb3JiaWRkZW4pCi0gICAgICAgICAgICByZXR1cm4gSlNW
YWx1ZSgpOworICAgICAgICAgICAgcmV0dXJuIFNjcmlwdFZhbHVlKCk7CiAgICAgfQogICAgIFNj
cmlwdFZhbHVlIGV4Y2VwdGlvbjsKLSAgICBTY3JpcHRWYWx1ZSByZXN1bHQgPSBldmFsdWF0ZShz
b3VyY2VDb2RlLCAmZXhjZXB0aW9uKTsKKyAgICBTY3JpcHRWYWx1ZSByZXN1bHQoZXZhbHVhdGUo
c291cmNlQ29kZSwgJmV4Y2VwdGlvbikpOwogICAgIGlmIChleGNlcHRpb24uanNWYWx1ZSgpKSB7
CiAgICAgICAgIEpTTG9jayBsb2NrKFNpbGVuY2VBc3NlcnRpb25zT25seSk7CiAgICAgICAgIHJl
cG9ydEV4Y2VwdGlvbihtX3dvcmtlckNvbnRleHRXcmFwcGVyLT5nbG9iYWxFeGVjKCksIGV4Y2Vw
dGlvbi5qc1ZhbHVlKCkpOwpAQCAtMTE4LDcgKzExOSw3IEBAIFNjcmlwdFZhbHVlIFdvcmtlclNj
cmlwdENvbnRyb2xsZXI6OmV2YWx1YXRlKGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmIHNvdXJjZUNv
ZGUsCiAgICAgewogICAgICAgICBNdXRleExvY2tlciBsb2NrKG1fc2hhcmVkRGF0YU11dGV4KTsK
ICAgICAgICAgaWYgKG1fZXhlY3V0aW9uRm9yYmlkZGVuKQotICAgICAgICAgICAgcmV0dXJuIEpT
VmFsdWUoKTsKKyAgICAgICAgICAgIHJldHVybiBTY3JpcHRWYWx1ZSgpOwogICAgIH0KIAogICAg
IGluaXRTY3JpcHRJZk5lZWRlZCgpOwpAQCAtMTI2LDIyICsxMjcsMjIgQEAgU2NyaXB0VmFsdWUg
V29ya2VyU2NyaXB0Q29udHJvbGxlcjo6ZXZhbHVhdGUoY29uc3QgU2NyaXB0U291cmNlQ29kZSYg
c291cmNlQ29kZSwKIAogICAgIEV4ZWNTdGF0ZSogZXhlYyA9IG1fd29ya2VyQ29udGV4dFdyYXBw
ZXItPmdsb2JhbEV4ZWMoKTsKICAgICBtX3dvcmtlckNvbnRleHRXcmFwcGVyLT5nbG9iYWxEYXRh
KCkudGltZW91dENoZWNrZXIuc3RhcnQoKTsKLSAgICBDb21wbGV0aW9uIGNvbXAgPSBKU0M6OmV2
YWx1YXRlKGV4ZWMsIGV4ZWMtPmR5bmFtaWNHbG9iYWxPYmplY3QoKS0+Z2xvYmFsU2NvcGVDaGFp
bigpLCBzb3VyY2VDb2RlLmpzU291cmNlQ29kZSgpLCBtX3dvcmtlckNvbnRleHRXcmFwcGVyKTsK
KyAgICBDb21wbGV0aW9uIGNvbXAgPSBKU0M6OmV2YWx1YXRlKGV4ZWMsIGV4ZWMtPmR5bmFtaWNH
bG9iYWxPYmplY3QoKS0+Z2xvYmFsU2NvcGVDaGFpbigpLCBzb3VyY2VDb2RlLmpzU291cmNlQ29k
ZSgpLCBtX3dvcmtlckNvbnRleHRXcmFwcGVyLmdldCgpKTsKICAgICBtX3dvcmtlckNvbnRleHRX
cmFwcGVyLT5nbG9iYWxEYXRhKCkudGltZW91dENoZWNrZXIuc3RvcCgpOwogCiAgICAgaWYgKGNv
bXAuY29tcGxUeXBlKCkgPT0gTm9ybWFsIHx8IGNvbXAuY29tcGxUeXBlKCkgPT0gUmV0dXJuVmFs
dWUpCi0gICAgICAgIHJldHVybiBjb21wLnZhbHVlKCk7CisgICAgICAgIHJldHVybiBTY3JpcHRW
YWx1ZSgqbV9nbG9iYWxEYXRhLCBjb21wLnZhbHVlKCkpOwogCiAgICAgaWYgKGNvbXAuY29tcGxU
eXBlKCkgPT0gVGhyb3cpIHsKICAgICAgICAgU3RyaW5nIGVycm9yTWVzc2FnZTsKICAgICAgICAg
aW50IGxpbmVOdW1iZXIgPSAwOwogICAgICAgICBTdHJpbmcgc291cmNlVVJMID0gc291cmNlQ29k
ZS51cmwoKS5zdHJpbmcoKTsKICAgICAgICAgaWYgKG1fd29ya2VyQ29udGV4dC0+c2FuaXRpemVT
Y3JpcHRFcnJvcihlcnJvck1lc3NhZ2UsIGxpbmVOdW1iZXIsIHNvdXJjZVVSTCkpCi0gICAgICAg
ICAgICAqZXhjZXB0aW9uID0gU2NyaXB0VmFsdWUodGhyb3dFcnJvcihleGVjLCBjcmVhdGVFcnJv
cihleGVjLCBlcnJvck1lc3NhZ2UuaW1wbCgpKSkpOworICAgICAgICAgICAgKmV4Y2VwdGlvbiA9
IFNjcmlwdFZhbHVlKCptX2dsb2JhbERhdGEsIHRocm93RXJyb3IoZXhlYywgY3JlYXRlRXJyb3Io
ZXhlYywgZXJyb3JNZXNzYWdlLmltcGwoKSkpKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAg
KmV4Y2VwdGlvbiA9IGNvbXAudmFsdWUoKTsKKyAgICAgICAgICAgICpleGNlcHRpb24gPSBTY3Jp
cHRWYWx1ZSgqbV9nbG9iYWxEYXRhLCBjb21wLnZhbHVlKCkpOwogICAgIH0KLSAgICByZXR1cm4g
SlNWYWx1ZSgpOworICAgIHJldHVybiBTY3JpcHRWYWx1ZSgpOwogfQogCiB2b2lkIFdvcmtlclNj
cmlwdENvbnRyb2xsZXI6OnNldEV4Y2VwdGlvbihTY3JpcHRWYWx1ZSBleGNlcHRpb24pCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250cm9sbGVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmgK
aW5kZXggNDU3ODkxM2M5NWVhNWRjMGEyOTM2ZjczYjVjOTAwM2M0NjRlOTAyMC4uYzNiODIxNWRk
NjE1MzliZWJhZThjNGNhYjBkZTE3MzIzMjY2YjYwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvV29ya2VyU2NyaXB0Q29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENvbnRyb2xsZXIuaApAQCAtMjksNyArMjksNyBA
QAogCiAjaWYgRU5BQkxFKFdPUktFUlMpCiAKLSNpbmNsdWRlIDxydW50aW1lL1Byb3RlY3QuaD4K
KyNpbmNsdWRlIDxjb2xsZWN0b3IvaGFuZGxlcy9HbG9iYWwuaD4KICNpbmNsdWRlIDx3dGYvRm9y
d2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KIApAQCAtNTMsNyArNTMsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIEpTV29ya2VyQ29udGV4dCogd29ya2VyQ29udGV4
dFdyYXBwZXIoKQogICAgICAgICB7CiAgICAgICAgICAgICBpbml0U2NyaXB0SWZOZWVkZWQoKTsK
LSAgICAgICAgICAgIHJldHVybiBtX3dvcmtlckNvbnRleHRXcmFwcGVyOworICAgICAgICAgICAg
cmV0dXJuIG1fd29ya2VyQ29udGV4dFdyYXBwZXIuZ2V0KCk7CiAgICAgICAgIH0KIAogICAgICAg
ICBTY3JpcHRWYWx1ZSBldmFsdWF0ZShjb25zdCBTY3JpcHRTb3VyY2VDb2RlJik7CkBAIC03Nyw3
ICs3Nyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICBSZWZQdHI8SlNDOjpKU0ds
b2JhbERhdGE+IG1fZ2xvYmFsRGF0YTsKICAgICAgICAgV29ya2VyQ29udGV4dCogbV93b3JrZXJD
b250ZXh0OwotICAgICAgICBKU0M6OlByb3RlY3RlZFB0cjxKU1dvcmtlckNvbnRleHQ+IG1fd29y
a2VyQ29udGV4dFdyYXBwZXI7CisgICAgICAgIEpTQzo6R2xvYmFsPEpTV29ya2VyQ29udGV4dD4g
bV93b3JrZXJDb250ZXh0V3JhcHBlcjsKIAogICAgICAgICBNdXRleCBtX3NoYXJlZERhdGFNdXRl
eDsKICAgICAgICAgYm9vbCBtX2V4ZWN1dGlvbkZvcmJpZGRlbjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KaW5kZXggZDIzMDllOTI3
ZmNiYWFhODY3M2ZkYzI2OWRiMThmZDk3MjIwNmM2OS4uMTcwZmM5YjYzODM0MzY3N2U1YTI1MTY0
NDM2YTY1ZThhODI4YTMxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KQEAgLTE0NDUsNyArMTQ0NSw2IEBAIHN1YiBHZW5lcmF0
ZUltcGxlbWVudGF0aW9uCiAKICAgICAgICAgaWYgKCRldmVudFRhcmdldCkgewogICAgICAgICAg
ICAgJGltcGxJbmNsdWRlc3siUmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXIuaCJ9ID0gMTsKLSAgICAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGltcGwoKS0+aW52YWxpZGF0ZUpTRXZlbnRM
aXN0ZW5lcnModGhpcyk7XG4iKTsKICAgICAgICAgfQogCiAgICAgICAgIGlmICghJGRhdGFOb2Rl
LT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiRXh0ZW5kc0RPTUdsb2JhbE9iamVjdCJ9KSB7CkBAIC0y
MDM5LDcgKzIwMzgsNyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgIiAuIEdl
dE5hdGl2ZVR5cGVGcm9tU2lnbmF0dXJlKCRwYXJhbWV0ZXIpIC4gIiAkbmFtZSA9ICIgLiBKU1Zh
bHVlVG9OYXRpdmUoJHBhcmFtZXRlciwgImV4ZWMtPmFyZ3VtZW50KCRhcmdzSW5kZXgpIikgLiAi
O1xuIik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIg
ICAgIiAuIEdldE5hdGl2ZVR5cGVGcm9tU2lnbmF0dXJlKCRwYXJhbWV0ZXIpIC4gIiAkbmFtZSgi
IC4gSlNWYWx1ZVRvTmF0aXZlKCRwYXJhbWV0ZXIsICJleGVjLT5hcmd1bWVudCgkYXJnc0luZGV4
KSIpIC4gIik7XG4iKTsKIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgSWYgYSBwYXJh
bWV0ZXIgaXMgImFuIGluZGV4IiBhbmQgaXQncyBuZWdhdGl2ZSBpdCBzaG91bGQgdGhyb3cgYW4g
SU5ERVhfU0laRV9FUlIgZXhjZXB0aW9uLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICMg
QnV0IHRoaXMgbmVlZHMgdG8gYmUgZG9uZSBpbiB0aGUgYmluZGluZ3MsIGJlY2F1c2UgdGhlIHR5
cGUgaXMgdW5zaWduZWQgYW5kIHRoZSBmYWN0IHRoYXQgaXQKQEAgLTI0OTQsMTIgKzI0OTMsMTIg
QEAgc3ViIEpTVmFsdWVUb05hdGl2ZQogICAgIH0KIAogICAgIGlmICgkdHlwZSBlcSAiRE9NT2Jq
ZWN0IikgewotICAgICAgICByZXR1cm4gIiR2YWx1ZSI7CisgICAgICAgIHJldHVybiAiZXhlYy0+
Z2xvYmFsRGF0YSgpLCAkdmFsdWUiOwogICAgIH0KIAogICAgIGlmICgkdHlwZSBlcSAiTWVkaWFR
dWVyeUxpc3RMaXN0ZW5lciIpIHsKICAgICAgICAgJGltcGxJbmNsdWRlc3siTWVkaWFRdWVyeUxp
c3RMaXN0ZW5lci5oIn0gPSAxOwotICAgICAgICByZXR1cm4gIk1lZGlhUXVlcnlMaXN0TGlzdGVu
ZXI6OmNyZWF0ZSgiIC4gJHZhbHVlIC4iKSI7CisgICAgICAgIHJldHVybiAiTWVkaWFRdWVyeUxp
c3RMaXN0ZW5lcjo6Y3JlYXRlKFNjcmlwdFZhbHVlKGV4ZWMtPmdsb2JhbERhdGEoKSwgIiAuICR2
YWx1ZSAuIikpIjsKICAgICB9CiAKICAgICBpZiAoJHR5cGUgZXEgIlNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZSIgb3IgJHR5cGUgZXEgImFueSIpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jy
aWRnZS9OUF9qc29iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvTlBfanNvYmplY3Qu
Y3BwCmluZGV4IDA3ODBhZDcwY2YyOGVjNzMwMDY5NTA0ODZjNzI4ZjZhMmJmODBhOGUuLjFhZWQ1
MDUyZmQ5ZDczYTRlOGRlZTcyZjA2ZWMxODY5NzMyZTFmNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JyaWRnZS9OUF9qc29iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdl
L05QX2pzb2JqZWN0LmNwcApAQCAtMTg5LDEwICsxODksMTAgQEAgYm9vbCBfTlBOX0ludm9rZURl
ZmF1bHQoTlBQLCBOUE9iamVjdCogbywgY29uc3QgTlBWYXJpYW50KiBhcmdzLCB1aW50MzJfdCBh
cmdDb3UKICAgICAgICAgCiAgICAgICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ0xpc3Q7CiAg
ICAgICAgIGdldExpc3RGcm9tVmFyaWFudEFyZ3MoZXhlYywgYXJncywgYXJnQ291bnQsIHJvb3RP
YmplY3QsIGFyZ0xpc3QpOwotICAgICAgICBQcm90ZWN0ZWRQdHI8SlNHbG9iYWxPYmplY3Q+IGds
b2JhbE9iamVjdCA9IHJvb3RPYmplY3QtPmdsb2JhbE9iamVjdCgpOwotICAgICAgICBnbG9iYWxP
YmplY3QtPmdsb2JhbERhdGEoKS50aW1lb3V0Q2hlY2tlci5zdGFydCgpOworICAgICAgICBSZWZQ
dHI8SlNHbG9iYWxEYXRhPiBnbG9iYWxEYXRhKCZleGVjLT5nbG9iYWxEYXRhKCkpOworICAgICAg
ICBnbG9iYWxEYXRhLT50aW1lb3V0Q2hlY2tlci5zdGFydCgpOwogICAgICAgICBKU1ZhbHVlIHJl
c3VsdFYgPSBKU0M6OmNhbGwoZXhlYywgZnVuY3Rpb24sIGNhbGxUeXBlLCBjYWxsRGF0YSwgZnVu
Y3Rpb24sIGFyZ0xpc3QpOwotICAgICAgICBnbG9iYWxPYmplY3QtPmdsb2JhbERhdGEoKS50aW1l
b3V0Q2hlY2tlci5zdG9wKCk7CisgICAgICAgIGdsb2JhbERhdGEtPnRpbWVvdXRDaGVja2VyLnN0
b3AoKTsKIAogICAgICAgICAvLyBDb252ZXJ0IGFuZCByZXR1cm4gdGhlIHJlc3VsdCBvZiB0aGUg
ZnVuY3Rpb24gY2FsbC4KICAgICAgICAgY29udmVydFZhbHVlVG9OUFZhcmlhbnQoZXhlYywgcmVz
dWx0ViwgcmVzdWx0KTsKQEAgLTIzOSwxMCArMjM5LDEwIEBAIGJvb2wgX05QTl9JbnZva2UoTlBQ
IG5wcCwgTlBPYmplY3QqIG8sIE5QSWRlbnRpZmllciBtZXRob2ROYW1lLCBjb25zdCBOUFZhcmlh
bnQqCiAgICAgICAgIC8vIENhbGwgdGhlIGZ1bmN0aW9uIG9iamVjdC4KICAgICAgICAgTWFya2Vk
QXJndW1lbnRCdWZmZXIgYXJnTGlzdDsKICAgICAgICAgZ2V0TGlzdEZyb21WYXJpYW50QXJncyhl
eGVjLCBhcmdzLCBhcmdDb3VudCwgcm9vdE9iamVjdCwgYXJnTGlzdCk7Ci0gICAgICAgIFByb3Rl
Y3RlZFB0cjxKU0dsb2JhbE9iamVjdD4gZ2xvYmFsT2JqZWN0ID0gcm9vdE9iamVjdC0+Z2xvYmFs
T2JqZWN0KCk7Ci0gICAgICAgIGdsb2JhbE9iamVjdC0+Z2xvYmFsRGF0YSgpLnRpbWVvdXRDaGVj
a2VyLnN0YXJ0KCk7CisgICAgICAgIFJlZlB0cjxKU0dsb2JhbERhdGE+IGdsb2JhbERhdGEoJmV4
ZWMtPmdsb2JhbERhdGEoKSk7CisgICAgICAgIGdsb2JhbERhdGEtPnRpbWVvdXRDaGVja2VyLnN0
YXJ0KCk7CiAgICAgICAgIEpTVmFsdWUgcmVzdWx0ViA9IEpTQzo6Y2FsbChleGVjLCBmdW5jdGlv
biwgY2FsbFR5cGUsIGNhbGxEYXRhLCBvYmotPmltcCwgYXJnTGlzdCk7Ci0gICAgICAgIGdsb2Jh
bE9iamVjdC0+Z2xvYmFsRGF0YSgpLnRpbWVvdXRDaGVja2VyLnN0b3AoKTsKKyAgICAgICAgZ2xv
YmFsRGF0YS0+dGltZW91dENoZWNrZXIuc3RvcCgpOwogCiAgICAgICAgIC8vIENvbnZlcnQgYW5k
IHJldHVybiB0aGUgcmVzdWx0IG9mIHRoZSBmdW5jdGlvbiBjYWxsLgogICAgICAgICBjb252ZXJ0
VmFsdWVUb05QVmFyaWFudChleGVjLCByZXN1bHRWLCByZXN1bHQpOwpAQCAtMjczLDEwICsyNzMs
MTAgQEAgYm9vbCBfTlBOX0V2YWx1YXRlKE5QUCBpbnN0YW5jZSwgTlBPYmplY3QqIG8sIE5QU3Ry
aW5nKiBzLCBOUFZhcmlhbnQqIHZhcmlhbnQpCiAgICAgICAgIEV4ZWNTdGF0ZSogZXhlYyA9IHJv
b3RPYmplY3QtPmdsb2JhbE9iamVjdCgpLT5nbG9iYWxFeGVjKCk7CiAgICAgICAgIEpTTG9jayBs
b2NrKFNpbGVuY2VBc3NlcnRpb25zT25seSk7CiAgICAgICAgIFN0cmluZyBzY3JpcHRTdHJpbmcg
PSBjb252ZXJ0TlBTdHJpbmdUb1VURjE2KHMpOwotICAgICAgICBQcm90ZWN0ZWRQdHI8SlNHbG9i
YWxPYmplY3Q+IGdsb2JhbE9iamVjdCA9IHJvb3RPYmplY3QtPmdsb2JhbE9iamVjdCgpOwotICAg
ICAgICBnbG9iYWxPYmplY3QtPmdsb2JhbERhdGEoKS50aW1lb3V0Q2hlY2tlci5zdGFydCgpOwot
ICAgICAgICBDb21wbGV0aW9uIGNvbXBsZXRpb24gPSBKU0M6OmV2YWx1YXRlKGdsb2JhbE9iamVj
dC0+Z2xvYmFsRXhlYygpLCBnbG9iYWxPYmplY3QtPmdsb2JhbFNjb3BlQ2hhaW4oKSwgbWFrZVNv
dXJjZShzY3JpcHRTdHJpbmcpLCBKU0M6OkpTVmFsdWUoKSk7Ci0gICAgICAgIGdsb2JhbE9iamVj
dC0+Z2xvYmFsRGF0YSgpLnRpbWVvdXRDaGVja2VyLnN0b3AoKTsKKyAgICAgICAgUmVmUHRyPEpT
R2xvYmFsRGF0YT4gZ2xvYmFsRGF0YSgmZXhlYy0+Z2xvYmFsRGF0YSgpKTsKKyAgICAgICAgZ2xv
YmFsRGF0YS0+dGltZW91dENoZWNrZXIuc3RhcnQoKTsKKyAgICAgICAgQ29tcGxldGlvbiBjb21w
bGV0aW9uID0gSlNDOjpldmFsdWF0ZShyb290T2JqZWN0LT5nbG9iYWxPYmplY3QoKS0+Z2xvYmFs
RXhlYygpLCByb290T2JqZWN0LT5nbG9iYWxPYmplY3QoKS0+Z2xvYmFsU2NvcGVDaGFpbigpLCBt
YWtlU291cmNlKHNjcmlwdFN0cmluZyksIEpTQzo6SlNWYWx1ZSgpKTsKKyAgICAgICAgZ2xvYmFs
RGF0YS0+dGltZW91dENoZWNrZXIuc3RvcCgpOwogICAgICAgICBDb21wbFR5cGUgdHlwZSA9IGNv
bXBsZXRpb24uY29tcGxUeXBlKCk7CiAgICAgICAgIAogICAgICAgICBKU1ZhbHVlIHJlc3VsdDsK
QEAgLTUxMywxMCArNTEzLDEwIEBAIGJvb2wgX05QTl9Db25zdHJ1Y3QoTlBQLCBOUE9iamVjdCog
bywgY29uc3QgTlBWYXJpYW50KiBhcmdzLCB1aW50MzJfdCBhcmdDb3VudCwKICAgICAgICAgCiAg
ICAgICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ0xpc3Q7CiAgICAgICAgIGdldExpc3RGcm9t
VmFyaWFudEFyZ3MoZXhlYywgYXJncywgYXJnQ291bnQsIHJvb3RPYmplY3QsIGFyZ0xpc3QpOwot
ICAgICAgICBQcm90ZWN0ZWRQdHI8SlNHbG9iYWxPYmplY3Q+IGdsb2JhbE9iamVjdCA9IHJvb3RP
YmplY3QtPmdsb2JhbE9iamVjdCgpOwotICAgICAgICBnbG9iYWxPYmplY3QtPmdsb2JhbERhdGEo
KS50aW1lb3V0Q2hlY2tlci5zdGFydCgpOworICAgICAgICBSZWZQdHI8SlNHbG9iYWxEYXRhPiBn
bG9iYWxEYXRhKCZleGVjLT5nbG9iYWxEYXRhKCkpOworICAgICAgICBnbG9iYWxEYXRhLT50aW1l
b3V0Q2hlY2tlci5zdGFydCgpOwogICAgICAgICBKU1ZhbHVlIHJlc3VsdFYgPSBKU0M6OmNvbnN0
cnVjdChleGVjLCBjb25zdHJ1Y3RvciwgY29uc3RydWN0VHlwZSwgY29uc3RydWN0RGF0YSwgYXJn
TGlzdCk7Ci0gICAgICAgIGdsb2JhbE9iamVjdC0+Z2xvYmFsRGF0YSgpLnRpbWVvdXRDaGVja2Vy
LnN0b3AoKTsKKyAgICAgICAgZ2xvYmFsRGF0YS0+dGltZW91dENoZWNrZXIuc3RvcCgpOwogICAg
ICAgICAKICAgICAgICAgLy8gQ29udmVydCBhbmQgcmV0dXJuIHRoZSByZXN1bHQuCiAgICAgICAg
IGNvbnZlcnRWYWx1ZVRvTlBWYXJpYW50KGV4ZWMsIHJlc3VsdFYsIHJlc3VsdCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvanNjL0JyaWRnZUpTQy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9icmlkZ2UvanNjL0JyaWRnZUpTQy5jcHAKaW5kZXggMjc0N2M3NTFmMmQ2NWU1MzU2NmVj
OWZjNjY4NmI4MzVmMzBiOWIxZC4uNzk3MDYxYjBkZjc5ZTdlZmRlOWI3MmUxMDY4MWNjZGQyOTQ2
NmU2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL2pzYy9CcmlkZ2VKU0MuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9qc2MvQnJpZGdlSlNDLmNwcApAQCAtMjcsMTAg
KzI3LDEzIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQnJpZGdlSlNDLmgiCiAK
KyNpbmNsdWRlICJKU0RPTVdpbmRvd0Jhc2UuaCIKKwogI2luY2x1ZGUgInJ1bnRpbWVfb2JqZWN0
LmgiCiAjaW5jbHVkZSAicnVudGltZV9yb290LmgiCiAjaW5jbHVkZSA8cnVudGltZS9KU0xvY2su
aD4KIAorCiAjaWYgUExBVEZPUk0oUVQpCiAjaW5jbHVkZSAicXRfaW5zdGFuY2UuaCIKICNlbmRp
ZgpAQCAtNTEsNiArNTQsNyBAQCBBcnJheTo6fkFycmF5KCkKIAogSW5zdGFuY2U6Okluc3RhbmNl
KFBhc3NSZWZQdHI8Um9vdE9iamVjdD4gcm9vdE9iamVjdCkKICAgICA6IG1fcm9vdE9iamVjdChy
b290T2JqZWN0KQorICAgICwgbV9ydW50aW1lT2JqZWN0KCpXZWJDb3JlOjpKU0RPTVdpbmRvd0Jh
c2U6OmNvbW1vbkpTR2xvYmFsRGF0YSgpKQogewogICAgIEFTU0VSVChtX3Jvb3RPYmplY3QpOwog
fQpAQCAtNTgsNyArNjIsNiBAQCBJbnN0YW5jZTo6SW5zdGFuY2UoUGFzc1JlZlB0cjxSb290T2Jq
ZWN0PiByb290T2JqZWN0KQogSW5zdGFuY2U6On5JbnN0YW5jZSgpCiB7CiAgICAgQVNTRVJUKCFt
X3J1bnRpbWVPYmplY3QpOwotICAgIEFTU0VSVCghbV9ydW50aW1lT2JqZWN0Lmhhc0RlYWRPYmpl
Y3QoKSk7CiB9CiAKIHN0YXRpYyBLSlNEaWRFeGVjdXRlRnVuY3Rpb25QdHIgc19kaWRFeGVjdXRl
RnVuY3Rpb247CkBAIC0xMDcsMTMgKzExMCwxMSBAQCB2b2lkIEluc3RhbmNlOjp3aWxsRGVzdHJv
eVJ1bnRpbWVPYmplY3QoUnVudGltZU9iamVjdCogb2JqZWN0KQogewogICAgIEFTU0VSVChtX3Jv
b3RPYmplY3QpOwogICAgIG1fcm9vdE9iamVjdC0+cmVtb3ZlUnVudGltZU9iamVjdChvYmplY3Qp
OwotICAgIG1fcnVudGltZU9iamVjdC5jbGVhcihvYmplY3QpOwogfQogCi12b2lkIEluc3RhbmNl
Ojp3aWxsSW52YWxpZGF0ZVJ1bnRpbWVPYmplY3QoUnVudGltZU9iamVjdCogb2JqZWN0KQordm9p
ZCBJbnN0YW5jZTo6d2lsbEludmFsaWRhdGVSdW50aW1lT2JqZWN0KCkKIHsKLSAgICBBU1NFUlQo
b2JqZWN0KTsKLSAgICBtX3J1bnRpbWVPYmplY3QuY2xlYXIob2JqZWN0KTsKKyAgICBtX3J1bnRp
bWVPYmplY3QuY2xlYXIoKTsKIH0KIAogUm9vdE9iamVjdCogSW5zdGFuY2U6OnJvb3RPYmplY3Qo
KSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL2pzYy9CcmlkZ2VKU0Mu
aCBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9qc2MvQnJpZGdlSlNDLmgKaW5kZXggZWJjZmFhZDMw
ZjcwYTk2ZTQ3NDhkNzhkN2Q1ZTMwM2EwYjIwYmJiNC4uZGY4MjU5NTNkMDgzMGQyMGYyY2EzOTA5
Mjk3ZGNkOTIzNWYxNjE0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL2pzYy9C
cmlkZ2VKU0MuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvanNjL0JyaWRnZUpTQy5oCkBA
IC04Nyw3ICs4Nyw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgQ2xhc3MqIGdldENsYXNzKCkg
Y29uc3QgPSAwOwogICAgIEpTT2JqZWN0KiBjcmVhdGVSdW50aW1lT2JqZWN0KEV4ZWNTdGF0ZSop
OwotICAgIHZvaWQgd2lsbEludmFsaWRhdGVSdW50aW1lT2JqZWN0KFJ1bnRpbWVPYmplY3QqKTsK
KyAgICB2b2lkIHdpbGxJbnZhbGlkYXRlUnVudGltZU9iamVjdCgpOwogICAgIHZvaWQgd2lsbERl
c3Ryb3lSdW50aW1lT2JqZWN0KFJ1bnRpbWVPYmplY3QqKTsKIAogICAgIC8vIFJldHVybnMgZmFs
c2UgaWYgdGhlIHZhbHVlIHdhcyBub3Qgc2V0IHN1Y2Nlc3NmdWxseS4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX29iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
cmlkZ2UvcnVudGltZV9vYmplY3QuY3BwCmluZGV4IDM2OGY3YjA4MzcxODhkNWYxNDBmMjgwZTBl
ZjU3NmY4ZWE2MWE5ZjYuLmVjYmEyODgzNTk0NTUwZTEyYzVmMzI1Njk0ZmEyNzI3MTIyYjQwYTAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX29iamVjdC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfb2JqZWN0LmNwcApAQCAtNjIsNyArNjIs
NyBAQCB2b2lkIFJ1bnRpbWVPYmplY3Q6OmludmFsaWRhdGUoKQogewogICAgIEFTU0VSVChtX2lu
c3RhbmNlKTsKICAgICBpZiAobV9pbnN0YW5jZSkKLSAgICAgICAgbV9pbnN0YW5jZS0+d2lsbElu
dmFsaWRhdGVSdW50aW1lT2JqZWN0KHRoaXMpOworICAgICAgICBtX2luc3RhbmNlLT53aWxsSW52
YWxpZGF0ZVJ1bnRpbWVPYmplY3QoKTsKICAgICBtX2luc3RhbmNlID0gMDsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfcm9vdC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9icmlkZ2UvcnVudGltZV9yb290LmNwcAppbmRleCA5OTJiMzQzMGY4YjE2MDYwZmE5NTNl
Y2QyOGJmMTQwMjAzMWVlNWQ3Li43MDJiYzA5YTIzYjFkYjdhOTZjYTMyY2IyOThhY2JhZDhlZjQ2
OTEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9yb290LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9yb290LmNwcApAQCAtODMsNyArODMs
NyBAQCBQYXNzUmVmUHRyPFJvb3RPYmplY3Q+IFJvb3RPYmplY3Q6OmNyZWF0ZShjb25zdCB2b2lk
KiBuYXRpdmVIYW5kbGUsIEpTR2xvYmFsT2JqZQogUm9vdE9iamVjdDo6Um9vdE9iamVjdChjb25z
dCB2b2lkKiBuYXRpdmVIYW5kbGUsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAgICAg
OiBtX2lzVmFsaWQodHJ1ZSkKICAgICAsIG1fbmF0aXZlSGFuZGxlKG5hdGl2ZUhhbmRsZSkKLSAg
ICAsIG1fZ2xvYmFsT2JqZWN0KGdsb2JhbE9iamVjdCkKKyAgICAsIG1fZ2xvYmFsT2JqZWN0KGds
b2JhbE9iamVjdC0+Z2xvYmFsRGF0YSgpLCBnbG9iYWxPYmplY3QpCiB7CiAgICAgQVNTRVJUKGds
b2JhbE9iamVjdCk7CiAgICAgcm9vdE9iamVjdFNldCgpLT5hZGQodGhpcyk7CkBAIC0xMTMsNyAr
MTEzLDcgQEAgdm9pZCBSb290T2JqZWN0OjppbnZhbGlkYXRlKCkKICAgICBtX2lzVmFsaWQgPSBm
YWxzZTsKIAogICAgIG1fbmF0aXZlSGFuZGxlID0gMDsKLSAgICBtX2dsb2JhbE9iamVjdCA9IDA7
CisgICAgbV9nbG9iYWxPYmplY3QuY2xlYXIoKTsKIAogICAgIHsKICAgICAgICAgSGFzaFNldDxJ
bnZhbGlkYXRpb25DYWxsYmFjayo+OjppdGVyYXRvciBlbmQgPSBtX2ludmFsaWRhdGlvbkNhbGxi
YWNrcy5lbmQoKTsKQEAgLTE2NywxMiArMTY3LDEyIEBAIGNvbnN0IHZvaWQqIFJvb3RPYmplY3Q6
Om5hdGl2ZUhhbmRsZSgpIGNvbnN0CiBKU0dsb2JhbE9iamVjdCogUm9vdE9iamVjdDo6Z2xvYmFs
T2JqZWN0KCkgY29uc3QKIHsKICAgICBBU1NFUlQobV9pc1ZhbGlkKTsKLSAgICByZXR1cm4gbV9n
bG9iYWxPYmplY3Q7CisgICAgcmV0dXJuIG1fZ2xvYmFsT2JqZWN0LmdldCgpOwogfQogCiB2b2lk
IFJvb3RPYmplY3Q6OnVwZGF0ZUdsb2JhbE9iamVjdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0KQogewotICAgIG1fZ2xvYmFsT2JqZWN0ID0gZ2xvYmFsT2JqZWN0OworICAgIG1fZ2xvYmFs
T2JqZWN0LnNldChnbG9iYWxPYmplY3QtPmdsb2JhbERhdGEoKSwgZ2xvYmFsT2JqZWN0KTsKIH0K
IAogdm9pZCBSb290T2JqZWN0OjphZGRSdW50aW1lT2JqZWN0KFJ1bnRpbWVPYmplY3QqIG9iamVj
dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX3Jvb3QuaCBiL1Nv
dXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX3Jvb3QuaAppbmRleCBkZGU4YTQ4MDg1NDlhMDFk
YzUzMTMwYmMzZTljMjJjNWU2NDg4MzYyLi5mYzAxYTA5ZmQxM2U4MjRhOWVhYjg0NjUzZTc3OTI2
NWQwNjBhZGYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9yb290
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfcm9vdC5oCkBAIC0yOSw3ICsy
OSw3IEBACiAjaWYgUExBVEZPUk0oTUFDKQogI2luY2x1ZGUgImpuaV9qc29iamVjdC5oIgogI2Vu
ZGlmCi0jaW5jbHVkZSA8cnVudGltZS9Qcm90ZWN0Lmg+CisjaW5jbHVkZSA8Y29sbGVjdG9yL2hh
bmRsZXMvR2xvYmFsLmg+CiAKICNpbmNsdWRlIDxydW50aW1lL1dlYWtHQ01hcC5oPgogI2luY2x1
ZGUgPHd0Zi9Gb3J3YXJkLmg+CkBAIC04Niw3ICs4Niw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBt
X2lzVmFsaWQ7CiAgICAgCiAgICAgY29uc3Qgdm9pZCogbV9uYXRpdmVIYW5kbGU7Ci0gICAgUHJv
dGVjdGVkUHRyPEpTR2xvYmFsT2JqZWN0PiBtX2dsb2JhbE9iamVjdDsKKyAgICBHbG9iYWw8SlNH
bG9iYWxPYmplY3Q+IG1fZ2xvYmFsT2JqZWN0OwogCiAgICAgUHJvdGVjdENvdW50U2V0IG1fcHJv
dGVjdENvdW50U2V0OwogICAgIFdlYWtHQ01hcDxSdW50aW1lT2JqZWN0KiwgUnVudGltZU9iamVj
dD4gbV9ydW50aW1lT2JqZWN0czsgLy8gUmVhbGx5IG5lZWQgYSBXZWFrR0NTZXQsIGJ1dCB0aGlz
IHdpbGwgZG8uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRMaXN0ZW5lci5o
IGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TGlzdGVuZXIuaAppbmRleCA5NmQwYmViZDRhNDgx
NTRhMzhlMmU5OGVhZjZhN2ViNmQxNGRlZGJkLi4zNDg3MDRmY2M4NTJmMmUwNGFjZDQ5MDY0MWRk
NTcyZDNmYTBkNDY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRMaXN0ZW5l
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudExpc3RlbmVyLmgKQEAgLTU0LDcgKzU0
LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAjaWYgVVNFKEpTQykKICAgICAgICAgdmlydHVh
bCB2b2lkIG1hcmtKU0Z1bmN0aW9uKEpTQzo6TWFya1N0YWNrJikgeyB9Ci0gICAgICAgIHZpcnR1
YWwgdm9pZCBpbnZhbGlkYXRlSlNGdW5jdGlvbihKU0M6OkpTT2JqZWN0KikgeyB9CiAjZW5kaWYK
IAogICAgICAgICBib29sIGlzQXR0cmlidXRlKCkgY29uc3QgeyByZXR1cm4gdmlydHVhbGlzQXR0
cmlidXRlKCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5o
IGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmgKaW5kZXggYTAzODAxYmNiZDUwMGU0
ZGJjZTg5NTFjZDQ3NmI0ZDNkNzA4YThiMy4uZjE4OGMwZWQ3OTBlM2Y4ZDk2MjE1NDY5YzlkNGMz
YjEwMTBjYTNjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmgKQEAgLTIzMSwyMCArMjMxLDYg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAgICAgICAgIGVudHJ5W2ldLmxpc3RlbmVy
LT5tYXJrSlNGdW5jdGlvbihtYXJrU3RhY2spOwogICAgICAgICB9CiAgICAgfQotCi0gICAgaW5s
aW5lIHZvaWQgRXZlbnRUYXJnZXQ6OmludmFsaWRhdGVKU0V2ZW50TGlzdGVuZXJzKEpTQzo6SlNP
YmplY3QqIHdyYXBwZXIpCi0gICAgewotICAgICAgICBFdmVudFRhcmdldERhdGEqIGQgPSBldmVu
dFRhcmdldERhdGEoKTsKLSAgICAgICAgaWYgKCFkKQotICAgICAgICAgICAgcmV0dXJuOwotCi0g
ICAgICAgIEV2ZW50TGlzdGVuZXJNYXA6Oml0ZXJhdG9yIGVuZCA9IGQtPmV2ZW50TGlzdGVuZXJN
YXAuZW5kKCk7Ci0gICAgICAgIGZvciAoRXZlbnRMaXN0ZW5lck1hcDo6aXRlcmF0b3IgaXQgPSBk
LT5ldmVudExpc3RlbmVyTWFwLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAgICAg
ICAgRXZlbnRMaXN0ZW5lclZlY3RvciYgZW50cnkgPSAqaXQtPnNlY29uZDsKLSAgICAgICAgICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZW50cnkuc2l6ZSgpOyArK2kpCi0gICAgICAgICAgICAg
ICAgZW50cnlbaV0ubGlzdGVuZXItPmludmFsaWRhdGVKU0Z1bmN0aW9uKHdyYXBwZXIpOwotICAg
ICAgICB9Ci0gICAgfQogI2VuZGlmCiAKICAgICBpbmxpbmUgYm9vbCBFdmVudFRhcmdldDo6aXNG
aXJpbmdFdmVudExpc3RlbmVycygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1M
SHR0cFJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcApp
bmRleCBhNTQ4ZWJjMzRhZDc5MjM3N2RjNzIwZTAyMWRiNTI3M2MwNjk2NTAxLi5mMDNlM2E0YzJl
NTExYTRlMjkwNzdlMmFmOGY5NWVjODIxYWNiZTVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRw
UmVxdWVzdC5jcHAKQEAgLTU2LDggKzU2LDggQEAKICNpZiBVU0UoSlNDKQogI2luY2x1ZGUgIkpT
RE9NQmluZGluZy5oIgogI2luY2x1ZGUgIkpTRE9NV2luZG93LmgiCisjaW5jbHVkZSA8Y29sbGVj
dG9yL2hhbmRsZXMvR2xvYmFsLmg+CiAjaW5jbHVkZSA8cnVudGltZS9KU0xvY2suaD4KLSNpbmNs
dWRlIDxydW50aW1lL1Byb3RlY3QuaD4KICNlbmRpZgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L21h
Yy9DaGFuZ2VMb2cKaW5kZXggNGEzYzc0ZmU4MDAxZDEwODhjMzBjOTYwM2VlNjlhYzU5NzUyMmM2
ZC4uMmRkYWU2ODg0YWMwMDIzMDNlYmIxMDliYmM3YWIyMzIxZmNjYzFmMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDExLTAyLTE0ICBPbGl2ZXIgSHVudCAgPG9saXZlckBh
cHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgUmVmYWN0b3IgaGFuZGxlcyBhbmQgd2VhayBwb2ludGVycyB0byBiZWNvbWUgbmljZXIgYW5k
IG1vcmUgYXV0b21hdGljCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD01NDQxNQorCisgICAgICAgIFVwZGF0ZSB0byB1c2UgR2xvYmFsPD4gaW5zdGVhZCBv
ZiBQcm90ZWN0ZWRQdHIsIGFuZCByZWZhY3RvcmVkIHNsaWdodGx5CisgICAgICAgIHRvIGdldCBn
bG9iYWwgZGF0YSB0byBwbGFjZXMgaXQncyBuZWVkZWQgZm9yIHdoZW4gd2UncmUgYXNzaWduaW5n
IHRvCisgICAgICAgIEdsb2JhbDw+cworCisgICAgICAgICogRm9yd2FyZGluZ0hlYWRlcnMvY29s
bGVjdG9yL2hhbmRsZXMvR2xvYmFsLmg6IEFkZGVkLgorICAgICAgICAqIFBsdWdpbnMvSG9zdGVk
L05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5oOgorICAgICAgICAqIFBsdWdpbnMvSG9zdGVk
L05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5tbToKKyAgICAgICAgKFdlYktpdDo6TmV0c2Nh
cGVQbHVnaW5JbnN0YW5jZVByb3h5OjpMb2NhbE9iamVjdE1hcDo6Z2V0KToKKyAgICAgICAgKFdl
YktpdDo6TmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5OjpMb2NhbE9iamVjdE1hcDo6aWRGb3JP
YmplY3QpOgorICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHk6Okxv
Y2FsT2JqZWN0TWFwOjpmb3JnZXQpOgorICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpbklu
c3RhbmNlUHJveHk6OmdldFdpbmRvd05QT2JqZWN0KToKKyAgICAgICAgKFdlYktpdDo6TmV0c2Nh
cGVQbHVnaW5JbnN0YW5jZVByb3h5OjpnZXRQbHVnaW5FbGVtZW50TlBPYmplY3QpOgorICAgICAg
ICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHk6OmV2YWx1YXRlKToKKyAgICAg
ICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5OjppbnZva2UpOgorICAgICAg
ICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHk6Omludm9rZURlZmF1bHQpOgor
ICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHk6OmNvbnN0cnVjdCk6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eTo6YWRkVmFsdWVU
b0FycmF5KToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlNjcmlwdERlYnVnZ2VyLmg6CisgICAgICAg
ICogV2ViVmlldy9XZWJTY3JpcHREZWJ1Z2dlci5tbToKKyAgICAgICAgKFdlYlNjcmlwdERlYnVn
Z2VyOjpXZWJTY3JpcHREZWJ1Z2dlcik6CisKIDIwMTEtMDItMTEgIEdlb2ZmcmV5IEdhcmVuICA8
Z2dhcmVuQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBPbGl2ZXIgSHVudC4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL0ZvcndhcmRpbmdIZWFkZXJzL2NvbGxlY3Rvci9o
YW5kbGVzL0dsb2JhbC5oIGIvU291cmNlL1dlYktpdC9tYWMvRm9yd2FyZGluZ0hlYWRlcnMvY29s
bGVjdG9yL2hhbmRsZXMvR2xvYmFsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDIwNjVhZDI0MTVmMGI4ZTVlNTgx
NzA1MDkwN2U4YTc2MWIyNDFlYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFj
L0ZvcndhcmRpbmdIZWFkZXJzL2NvbGxlY3Rvci9oYW5kbGVzL0dsb2JhbC5oCkBAIC0wLDAgKzEg
QEAKKyNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL0dsb2JhbC5oPgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lmgg
Yi9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNl
UHJveHkuaAppbmRleCA0ZjJjNTY2YTc3YTIxNDE1YmIyZGRjMjRmYjQ5MjdmODFiMzk1NzVmLi43
ODI4NDYwZjRhMTlmYTU5NDBmN2NjY2Q4OTQ4YmY2NGZkODg2NTE4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHku
aAorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbklu
c3RhbmNlUHJveHkuaApAQCAtMjgsNyArMjgsNyBAQAogI2lmbmRlZiBOZXRzY2FwZVBsdWdpbklu
c3RhbmNlUHJveHlfaAogI2RlZmluZSBOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHlfaAogCi0j
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvUHJvdGVjdC5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL0dsb2JhbC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVGltZXIuaD4KICNpbmNsdWRlIDxXZWJL
aXQvbnBhcGkuaD4KICNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KQEAgLTMxOCw3ICszMTgsNyBAQCBw
cml2YXRlOgogICAgIHB1YmxpYzoKICAgICAgICAgTG9jYWxPYmplY3RNYXAoKTsKICAgICAgICAg
fkxvY2FsT2JqZWN0TWFwKCk7Ci0gICAgICAgIHVpbnQzMl90IGlkRm9yT2JqZWN0KEpTQzo6SlNP
YmplY3QqKTsKKyAgICAgICAgdWludDMyX3QgaWRGb3JPYmplY3QoSlNDOjpKU0dsb2JhbERhdGEm
LCBKU0M6OkpTT2JqZWN0Kik7CiAgICAgICAgIHZvaWQgcmV0YWluKEpTQzo6SlNPYmplY3QqKTsK
ICAgICAgICAgdm9pZCByZWxlYXNlKEpTQzo6SlNPYmplY3QqKTsKICAgICAgICAgdm9pZCBjbGVh
cigpOwpAQCAtMzI3LDcgKzMyNyw3IEBAIHByaXZhdGU6CiAgICAgICAgIEpTQzo6SlNPYmplY3Qq
IGdldCh1aW50MzJfdCkgY29uc3Q7CiAKICAgICBwcml2YXRlOgotICAgICAgICBIYXNoTWFwPHVp
bnQzMl90LCBKU0M6OlByb3RlY3RlZFB0cjxKU0M6OkpTT2JqZWN0PiA+IG1faWRUb0pTT2JqZWN0
TWFwOworICAgICAgICBIYXNoTWFwPHVpbnQzMl90LCBKU0M6Okdsb2JhbDxKU0M6OkpTT2JqZWN0
PiA+IG1faWRUb0pTT2JqZWN0TWFwOwogICAgICAgICAvLyBUaGUgcGFpciBjb25zaXN0cyBvZiBv
YmplY3QgSUQgYW5kIGEgcmVmZXJlbmNlIGNvdW50LiBPbmUgcmVmZXJlbmNlIGJlbG9uZ3MgdG8g
cmVtb3RlIHBsdWctaW4sCiAgICAgICAgIC8vIGFuZCB0aGUgcHJveHkgd2lsbCBhZGQgdHJhbnNp
ZW50IHJlZmVyZW5jZXMgZm9yIGFyZ3VtZW50cyB0aGF0IGFyZSBiZWluZyBzZW50IG91dC4KICAg
ICAgICAgSGFzaE1hcDxKU0M6OkpTT2JqZWN0KiwgcGFpcjx1aW50MzJfdCwgdWludDMyX3Q+ID4g
bV9qc09iamVjdFRvSURNYXA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5z
L0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkubW0gYi9Tb3VyY2UvV2ViS2l0L21h
Yy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkubW0KaW5kZXggZWNh
YTBkNjNlMmEzNTJjYzJiZDYyYjEwYjQ4NzA0NjYzM2NkMzEwYi4uZWQ2NDZkM2U4NjQxZmQ1ODQ4
YTgwMWE0ZTQ2Yjk4ZTA1OGM4YmE3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvUGx1
Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5tbQpA
QCAtMTIxLDEwICsxMjEsMTAgQEAgaW5saW5lIEpTQzo6SlNPYmplY3QqIE5ldHNjYXBlUGx1Z2lu
SW5zdGFuY2VQcm94eTo6TG9jYWxPYmplY3RNYXA6OmdldCh1aW50MzJfdAogICAgIGlmIChvYmpl
Y3RJRCA9PSBIYXNoVHJhaXRzPHVpbnQzMl90Pjo6ZW1wdHlWYWx1ZSgpIHx8IEhhc2hUcmFpdHM8
dWludDMyX3Q+Ojppc0RlbGV0ZWRWYWx1ZShvYmplY3RJRCkpCiAgICAgICAgIHJldHVybiAwOwog
Ci0gICAgcmV0dXJuIG1faWRUb0pTT2JqZWN0TWFwLmdldChvYmplY3RJRCk7CisgICAgcmV0dXJu
IG1faWRUb0pTT2JqZWN0TWFwLmdldChvYmplY3RJRCkuZ2V0KCk7CiB9CiAKLXVpbnQzMl90IE5l
dHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eTo6TG9jYWxPYmplY3RNYXA6OmlkRm9yT2JqZWN0KEpT
T2JqZWN0KiBvYmplY3QpCit1aW50MzJfdCBOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHk6Okxv
Y2FsT2JqZWN0TWFwOjppZEZvck9iamVjdChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTT2Jq
ZWN0KiBvYmplY3QpCiB7CiAgICAgLy8gVGhpcyBtZXRob2QgY3JlYXRlcyBvYmplY3RzIHdpdGgg
cmVmY291bnQgb2YgMSwgYnV0IGRvZXNuJ3QgaW5jcmVhc2UgcmVmY291bnQgd2hlbiByZXR1cm5p
bmcKICAgICAvLyBmb3VuZCBvYmplY3RzLiBUaGlzIGV4dHJhIGNvdW50IGFjY291bnRzIGZvciB0
aGUgbWFpbiAicmVmZXJlbmNlIiBrZXB0IGJ5IHBsdWdpbiBwcm9jZXNzLgpAQCAtMTQ4LDcgKzE0
OCw3IEBAIHVpbnQzMl90IE5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eTo6TG9jYWxPYmplY3RN
YXA6OmlkRm9yT2JqZWN0KEpTT2JqZWN0KiBvYmplCiAgICAgICAgIG9iamVjdElEID0gKyttX29i
amVjdElEQ291bnRlcjsKICAgICB9IHdoaWxlICghbV9vYmplY3RJRENvdW50ZXIgfHwgbV9vYmpl
Y3RJRENvdW50ZXIgPT0gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KC0xKSB8fCBtX2lkVG9KU09iamVj
dE1hcC5jb250YWlucyhvYmplY3RJRCkpOwogCi0gICAgbV9pZFRvSlNPYmplY3RNYXAuc2V0KG9i
amVjdElELCBvYmplY3QpOworICAgIG1faWRUb0pTT2JqZWN0TWFwLnNldChvYmplY3RJRCwgR2xv
YmFsPEpTT2JqZWN0PihnbG9iYWxEYXRhLCBvYmplY3QpKTsKICAgICBtX2pzT2JqZWN0VG9JRE1h
cC5zZXQob2JqZWN0LCBtYWtlX3BhaXI8dWludDMyX3QsIHVpbnQzMl90PihvYmplY3RJRCwgMSkp
OwogCiAgICAgcmV0dXJuIG9iamVjdElEOwpAQCAtMTg4LDcgKzE4OCw3IEBAIGJvb2wgTmV0c2Nh
cGVQbHVnaW5JbnN0YW5jZVByb3h5OjpMb2NhbE9iamVjdE1hcDo6Zm9yZ2V0KHVpbnQzMl90IG9i
amVjdElEKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAgICBIYXNoTWFwPHVpbnQz
Ml90LCBKU0M6OlByb3RlY3RlZFB0cjxKU0M6OkpTT2JqZWN0PiA+OjppdGVyYXRvciBpdGVyID0g
bV9pZFRvSlNPYmplY3RNYXAuZmluZChvYmplY3RJRCk7CisgICAgSGFzaE1hcDx1aW50MzJfdCwg
SlNDOjpHbG9iYWw8SlNDOjpKU09iamVjdD4gPjo6aXRlcmF0b3IgaXRlciA9IG1faWRUb0pTT2Jq
ZWN0TWFwLmZpbmQob2JqZWN0SUQpOwogICAgIGlmIChpdGVyID09IG1faWRUb0pTT2JqZWN0TWFw
LmVuZCgpKSB7CiAgICAgICAgIExPR19FUlJPUigiTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5
OjpMb2NhbE9iamVjdE1hcDo6Zm9yZ2V0OiBsb2NhbCBvYmplY3QgJXUgZG9lc24ndCBleGlzdC4i
LCBvYmplY3RJRCk7CiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtODIzLDcgKzgyMyw3IEBAIGJv
b2wgTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5OjpnZXRXaW5kb3dOUE9iamVjdCh1aW50MzJf
dCYgb2JqZWN0SUQpCiAgICAgaWYgKCFmcmFtZS0+c2NyaXB0KCktPmNhbkV4ZWN1dGVTY3JpcHRz
KE5vdEFib3V0VG9FeGVjdXRlU2NyaXB0KSkKICAgICAgICAgb2JqZWN0SUQgPSAwOwogICAgIGVs
c2UKLSAgICAgICAgb2JqZWN0SUQgPSBtX2xvY2FsT2JqZWN0cy5pZEZvck9iamVjdChmcmFtZS0+
c2NyaXB0KCktPndpbmRvd1NoZWxsKHBsdWdpbldvcmxkKCkpLT53aW5kb3coKSk7CisgICAgICAg
IG9iamVjdElEID0gbV9sb2NhbE9iamVjdHMuaWRGb3JPYmplY3QoKnBsdWdpbldvcmxkKCktPmds
b2JhbERhdGEoKSwgZnJhbWUtPnNjcmlwdCgpLT53aW5kb3dTaGVsbChwbHVnaW5Xb3JsZCgpKS0+
d2luZG93KCkpOwogICAgICAgICAKICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTgzNSw3ICs4MzUs
NyBAQCBib29sIE5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eTo6Z2V0UGx1Z2luRWxlbWVudE5Q
T2JqZWN0KHVpbnQzMl90JiBvYmplY3RJRCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAog
ICAgIGlmIChKU09iamVjdCogb2JqZWN0ID0gZnJhbWUtPnNjcmlwdCgpLT5qc09iamVjdEZvclBs
dWdpbkVsZW1lbnQoW21fcGx1Z2luVmlldyBlbGVtZW50XSkpCi0gICAgICAgIG9iamVjdElEID0g
bV9sb2NhbE9iamVjdHMuaWRGb3JPYmplY3Qob2JqZWN0KTsKKyAgICAgICAgb2JqZWN0SUQgPSBt
X2xvY2FsT2JqZWN0cy5pZEZvck9iamVjdCgqcGx1Z2luV29ybGQoKS0+Z2xvYmFsRGF0YSgpLCBv
YmplY3QpOwogICAgIGVsc2UKICAgICAgICAgb2JqZWN0SUQgPSAwOwogICAgIApAQCAtODY2LDcg
Kzg2Niw3IEBAIGJvb2wgTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5OjpldmFsdWF0ZSh1aW50
MzJfdCBvYmplY3RJRCwgY29uc3QgU3RyaW5nJiBzY3JpCiAKICAgICBKU0xvY2sgbG9jayhTaWxl
bmNlQXNzZXJ0aW9uc09ubHkpOwogICAgIAotICAgIFByb3RlY3RlZFB0cjxKU0dsb2JhbE9iamVj
dD4gZ2xvYmFsT2JqZWN0ID0gZnJhbWUtPnNjcmlwdCgpLT5nbG9iYWxPYmplY3QocGx1Z2luV29y
bGQoKSk7CisgICAgR2xvYmFsPEpTR2xvYmFsT2JqZWN0PiBnbG9iYWxPYmplY3QoKnBsdWdpbldv
cmxkKCktPmdsb2JhbERhdGEoKSwgZnJhbWUtPnNjcmlwdCgpLT5nbG9iYWxPYmplY3QocGx1Z2lu
V29ybGQoKSkpOwogICAgIEV4ZWNTdGF0ZSogZXhlYyA9IGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhl
YygpOwogCiAgICAgYm9vbCBvbGRBbGxvd1BvcHVwcyA9IGZyYW1lLT5zY3JpcHQoKS0+YWxsb3dQ
b3B1cHNGcm9tUGx1Z2luKCk7CkBAIC05MjAsMTAgKzkyMCwxMCBAQCBib29sIE5ldHNjYXBlUGx1
Z2luSW5zdGFuY2VQcm94eTo6aW52b2tlKHVpbnQzMl90IG9iamVjdElELCBjb25zdCBJZGVudGlm
aWVyJiBtZQogICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ0xpc3Q7CiAgICAgZGVtYXJzaGFs
VmFsdWVzKGV4ZWMsIGFyZ3VtZW50c0RhdGEsIGFyZ3VtZW50c0xlbmd0aCwgYXJnTGlzdCk7CiAK
LSAgICBQcm90ZWN0ZWRQdHI8SlNHbG9iYWxPYmplY3Q+IGdsb2JhbE9iamVjdCA9IGZyYW1lLT5z
Y3JpcHQoKS0+Z2xvYmFsT2JqZWN0KHBsdWdpbldvcmxkKCkpOwotICAgIGdsb2JhbE9iamVjdC0+
Z2xvYmFsRGF0YSgpLnRpbWVvdXRDaGVja2VyLnN0YXJ0KCk7CisgICAgUmVmUHRyPEpTR2xvYmFs
RGF0YT4gZ2xvYmFsRGF0YSA9IHBsdWdpbldvcmxkKCktPmdsb2JhbERhdGEoKTsKKyAgICBnbG9i
YWxEYXRhLT50aW1lb3V0Q2hlY2tlci5zdGFydCgpOwogICAgIEpTVmFsdWUgdmFsdWUgPSBjYWxs
KGV4ZWMsIGZ1bmN0aW9uLCBjYWxsVHlwZSwgY2FsbERhdGEsIG9iamVjdCwgYXJnTGlzdCk7Ci0g
ICAgZ2xvYmFsT2JqZWN0LT5nbG9iYWxEYXRhKCkudGltZW91dENoZWNrZXIuc3RvcCgpOworICAg
IGdsb2JhbERhdGEtPnRpbWVvdXRDaGVja2VyLnN0b3AoKTsKICAgICAgICAgCiAgICAgbWFyc2hh
bFZhbHVlKGV4ZWMsIHZhbHVlLCByZXN1bHREYXRhLCByZXN1bHRMZW5ndGgpOwogICAgIGV4ZWMt
PmNsZWFyRXhjZXB0aW9uKCk7CkBAIC05NTUsMTAgKzk1NSwxMCBAQCBib29sIE5ldHNjYXBlUGx1
Z2luSW5zdGFuY2VQcm94eTo6aW52b2tlRGVmYXVsdCh1aW50MzJfdCBvYmplY3RJRCwgZGF0YV90
IGFyZ3VtZQogICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ0xpc3Q7CiAgICAgZGVtYXJzaGFs
VmFsdWVzKGV4ZWMsIGFyZ3VtZW50c0RhdGEsIGFyZ3VtZW50c0xlbmd0aCwgYXJnTGlzdCk7CiAK
LSAgICBQcm90ZWN0ZWRQdHI8SlNHbG9iYWxPYmplY3Q+IGdsb2JhbE9iamVjdCA9IGZyYW1lLT5z
Y3JpcHQoKS0+Z2xvYmFsT2JqZWN0KHBsdWdpbldvcmxkKCkpOwotICAgIGdsb2JhbE9iamVjdC0+
Z2xvYmFsRGF0YSgpLnRpbWVvdXRDaGVja2VyLnN0YXJ0KCk7CisgICAgUmVmUHRyPEpTR2xvYmFs
RGF0YT4gZ2xvYmFsRGF0YSA9IHBsdWdpbldvcmxkKCktPmdsb2JhbERhdGEoKTsKKyAgICBnbG9i
YWxEYXRhLT50aW1lb3V0Q2hlY2tlci5zdGFydCgpOwogICAgIEpTVmFsdWUgdmFsdWUgPSBjYWxs
KGV4ZWMsIG9iamVjdCwgY2FsbFR5cGUsIGNhbGxEYXRhLCBvYmplY3QsIGFyZ0xpc3QpOwotICAg
IGdsb2JhbE9iamVjdC0+Z2xvYmFsRGF0YSgpLnRpbWVvdXRDaGVja2VyLnN0b3AoKTsKKyAgICBn
bG9iYWxEYXRhLT50aW1lb3V0Q2hlY2tlci5zdG9wKCk7CiAgICAgCiAgICAgbWFyc2hhbFZhbHVl
KGV4ZWMsIHZhbHVlLCByZXN1bHREYXRhLCByZXN1bHRMZW5ndGgpOwogICAgIGV4ZWMtPmNsZWFy
RXhjZXB0aW9uKCk7CkBAIC05OTEsMTAgKzk5MSwxMCBAQCBib29sIE5ldHNjYXBlUGx1Z2luSW5z
dGFuY2VQcm94eTo6Y29uc3RydWN0KHVpbnQzMl90IG9iamVjdElELCBkYXRhX3QgYXJndW1lbnRz
RAogICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ0xpc3Q7CiAgICAgZGVtYXJzaGFsVmFsdWVz
KGV4ZWMsIGFyZ3VtZW50c0RhdGEsIGFyZ3VtZW50c0xlbmd0aCwgYXJnTGlzdCk7CiAKLSAgICBQ
cm90ZWN0ZWRQdHI8SlNHbG9iYWxPYmplY3Q+IGdsb2JhbE9iamVjdCA9IGZyYW1lLT5zY3JpcHQo
KS0+Z2xvYmFsT2JqZWN0KHBsdWdpbldvcmxkKCkpOwotICAgIGdsb2JhbE9iamVjdC0+Z2xvYmFs
RGF0YSgpLnRpbWVvdXRDaGVja2VyLnN0YXJ0KCk7CisgICAgUmVmUHRyPEpTR2xvYmFsRGF0YT4g
Z2xvYmFsRGF0YSA9IHBsdWdpbldvcmxkKCktPmdsb2JhbERhdGEoKTsKKyAgICBnbG9iYWxEYXRh
LT50aW1lb3V0Q2hlY2tlci5zdGFydCgpOwogICAgIEpTVmFsdWUgdmFsdWUgPSBKU0M6OmNvbnN0
cnVjdChleGVjLCBvYmplY3QsIGNvbnN0cnVjdFR5cGUsIGNvbnN0cnVjdERhdGEsIGFyZ0xpc3Qp
OwotICAgIGdsb2JhbE9iamVjdC0+Z2xvYmFsRGF0YSgpLnRpbWVvdXRDaGVja2VyLnN0b3AoKTsK
KyAgICBnbG9iYWxEYXRhLT50aW1lb3V0Q2hlY2tlci5zdG9wKCk7CiAgICAgCiAgICAgbWFyc2hh
bFZhbHVlKGV4ZWMsIHZhbHVlLCByZXN1bHREYXRhLCByZXN1bHRMZW5ndGgpOwogICAgIGV4ZWMt
PmNsZWFyRXhjZXB0aW9uKCk7CkBAIC0xMjgzLDcgKzEyODMsNyBAQCB2b2lkIE5ldHNjYXBlUGx1
Z2luSW5zdGFuY2VQcm94eTo6YWRkVmFsdWVUb0FycmF5KE5TTXV0YWJsZUFycmF5ICphcnJheSwg
RXhlY1N0YQogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgW2Fy
cmF5IGFkZE9iamVjdDpbTlNOdW1iZXIgbnVtYmVyV2l0aEludDpKU09iamVjdFZhbHVlVHlwZV1d
OwotICAgICAgICAgICAgW2FycmF5IGFkZE9iamVjdDpbTlNOdW1iZXIgbnVtYmVyV2l0aEludDpt
X2xvY2FsT2JqZWN0cy5pZEZvck9iamVjdChvYmplY3QpXV07CisgICAgICAgICAgICBbYXJyYXkg
YWRkT2JqZWN0OltOU051bWJlciBudW1iZXJXaXRoSW50Om1fbG9jYWxPYmplY3RzLmlkRm9yT2Jq
ZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgb2JqZWN0KV1dOwogICAgICAgICB9CiAgICAgfSBlbHNl
CiAgICAgICAgIFthcnJheSBhZGRPYmplY3Q6W05TTnVtYmVyIG51bWJlcldpdGhJbnQ6Vm9pZFZh
bHVlVHlwZV1dOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJTY3Jp
cHREZWJ1Z2dlci5oIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJTY3JpcHREZWJ1Z2dl
ci5oCmluZGV4IDczYzk0NjYyMDZkZDI5ODM4OWM4MzVjMTRmMzBkOGVlNTA5NGU5OTQuLjhmN2Zj
YWE1ZDFkYjBhMmNkNjRmOWQyOTg1ZmNhNWVhM2QwYTYxNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvbWFjL1dlYlZpZXcvV2ViU2NyaXB0RGVidWdnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L21hYy9XZWJWaWV3L1dlYlNjcmlwdERlYnVnZ2VyLmgKQEAgLTI5LDggKzI5LDggQEAKICNpZm5k
ZWYgV2ViU2NyaXB0RGVidWdnZXJfaAogI2RlZmluZSBXZWJTY3JpcHREZWJ1Z2dlcl9oCiAKKyNp
bmNsdWRlIDxjb2xsZWN0b3IvaGFuZGxlcy9HbG9iYWwuaD4KICNpbmNsdWRlIDxkZWJ1Z2dlci9E
ZWJ1Z2dlci5oPgotI2luY2x1ZGUgPHJ1bnRpbWUvUHJvdGVjdC5oPgogCiAjaW5jbHVkZSA8d3Rm
L1JldGFpblB0ci5oPgogCkBAIC02OSw3ICs2OSw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2Nh
bGxpbmdEZWxlZ2F0ZTsKICAgICBSZXRhaW5QdHI8V2ViU2NyaXB0Q2FsbEZyYW1lPiBtX3RvcENh
bGxGcmFtZTsKIAotICAgIEpTQzo6UHJvdGVjdGVkUHRyPEpTQzo6SlNHbG9iYWxPYmplY3Q+IG1f
Z2xvYmFsT2JqZWN0OworICAgIEpTQzo6R2xvYmFsPEpTQzo6SlNHbG9iYWxPYmplY3Q+IG1fZ2xv
YmFsT2JqZWN0OwogICAgIFJldGFpblB0cjxXZWJTY3JpcHRDYWxsRnJhbWU+IG1fZ2xvYmFsQ2Fs
bEZyYW1lOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJT
Y3JpcHREZWJ1Z2dlci5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViU2NyaXB0RGVi
dWdnZXIubW0KaW5kZXggOWJjM2JjZTBkZDdiNDJiYmRjZWQzMDE5MDc3M2M0OGU5NTIwMTBiNi4u
YmZkYjM1YTMyMWM1OTFmYWM4OGM1ZTlkMGQ2NjQ4OGQxOTY4MDg0NyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJTY3JpcHREZWJ1Z2dlci5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L21hYy9XZWJWaWV3L1dlYlNjcmlwdERlYnVnZ2VyLm1tCkBAIC04MCw3ICs4MCw3IEBA
IHN0YXRpYyBXZWJGcmFtZSAqdG9XZWJGcmFtZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
KQogCiBXZWJTY3JpcHREZWJ1Z2dlcjo6V2ViU2NyaXB0RGVidWdnZXIoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCkKICAgICA6IG1fY2FsbGluZ0RlbGVnYXRlKGZhbHNlKQotICAgICwgbV9n
bG9iYWxPYmplY3QoZ2xvYmFsT2JqZWN0KQorICAgICwgbV9nbG9iYWxPYmplY3QoZ2xvYmFsT2Jq
ZWN0LT5nbG9iYWxEYXRhKCksIGdsb2JhbE9iamVjdCkKIHsKICAgICBhdHRhY2goZ2xvYmFsT2Jq
ZWN0KTsKICAgICBpbml0R2xvYmFsQ2FsbEZyYW1lKGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQy
L0NoYW5nZUxvZwppbmRleCA1NzA5NTU5NGViZGVjYjNmOGVmMWQ0YjU4N2RjMTJlYTcyZTBhMTJj
Li5hZWU4M2Y2YTE4NjI3MTVhODcyMmI0ZWM1Y2ZlZjk0NTUyNGFjYzhmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMzAgQEAKKzIwMTEtMDItMTQgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNv
bT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZWZh
Y3RvciBoYW5kbGVzIGFuZCB3ZWFrIHBvaW50ZXJzIHRvIGJlY29tZSBuaWNlciBhbmQgbW9yZSBh
dXRvbWF0aWMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTU0NDE1CisKKyAgICAgICAgVXBkYXRlIGNvZGUgdG8gbmV3IEdsb2JhbDw+IEFQSSwgYW5kIHJl
ZmFjdG9yIHRvIGdldCBnbG9iYWwgZGF0YSB0bworICAgICAgICBuZWNlc3NhcnkgcG9pbnRzLgor
CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05QSlNPYmplY3QuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpOUEpTT2JqZWN0OjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpO
UEpTT2JqZWN0OjpOUEpTT2JqZWN0KToKKyAgICAgICAgKFdlYktpdDo6TlBKU09iamVjdDo6aW5p
dGlhbGl6ZSk6CisgICAgICAgIChXZWJLaXQ6Ok5QSlNPYmplY3Q6Omludm9rZURlZmF1bHQpOgor
ICAgICAgICAoV2ViS2l0OjpOUEpTT2JqZWN0Ojpjb25zdHJ1Y3QpOgorICAgICAgICAoV2ViS2l0
OjpOUEpTT2JqZWN0OjppbnZva2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRz
Y2FwZS9OUEpTT2JqZWN0Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBl
L05QUnVudGltZU9iamVjdE1hcC5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5QUnVudGltZU9iamVj
dE1hcDo6Z2V0T3JDcmVhdGVOUE9iamVjdCk6CisgICAgICAgIChXZWJLaXQ6Ok5QUnVudGltZU9i
amVjdE1hcDo6Y29udmVydEpTVmFsdWVUb05QVmFyaWFudCk6CisgICAgICAgIChXZWJLaXQ6Ok5Q
UnVudGltZU9iamVjdE1hcDo6ZXZhbHVhdGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lu
cy9OZXRzY2FwZS9OUFJ1bnRpbWVPYmplY3RNYXAuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1Bs
dWdpbnMvUGx1Z2luVmlldy5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6OndpbmRv
d1NjcmlwdE5QT2JqZWN0KToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luVmlldzo6cGx1Z2luRWxl
bWVudE5QT2JqZWN0KToKKwogMjAxMS0wMi0xNCAgQWRhbSBSb2JlbiAgPGFyb2JlbkBhcHBsZS5j
b20+CiAKICAgICAgICAgUmVhY3QgdG8gYWNjZWxlcmF0ZWQgY29tcG9zaXRpbmcgY2hhbmdlcyBh
bmQgYWxsb2NhdGlvbiBmYWlsdXJlcyBpbiBEcmF3aW5nQXJlYUltcGw6OmRpc3BsYXkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OUEpTT2Jq
ZWN0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OUEpT
T2JqZWN0LmNwcAppbmRleCAzNDViZDU0YTlmM2I5ODM2NzdkM2ExZTM0MWZiNDc1YTNkZTJiOGQ5
Li5lODZhOWJjMjE5NDdkYjQ2ZWYxNGZmZWE4NmRmMWZlYjI0MTE4NThlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTlBKU09iamVjdC5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05QSlNPYmpl
Y3QuY3BwCkBAIC00MiwxOSArNDIsMjAgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5h
bWVzcGFjZSBXZWJLaXQgewogCi1OUEpTT2JqZWN0KiBOUEpTT2JqZWN0OjpjcmVhdGUoTlBSdW50
aW1lT2JqZWN0TWFwKiBvYmplY3RNYXAsIEpTT2JqZWN0KiBqc09iamVjdCkKK05QSlNPYmplY3Qq
IE5QSlNPYmplY3Q6OmNyZWF0ZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIE5QUnVudGltZU9i
amVjdE1hcCogb2JqZWN0TWFwLCBKU09iamVjdCoganNPYmplY3QpCiB7CiAgICAgLy8gV2Ugc2hv
dWxkIG5ldmVyIGhhdmUgYSBKU05QT2JqZWN0IGluc2lkZSBhbiBOUEpTT2JqZWN0LgogICAgIEFT
U0VSVCghanNPYmplY3QtPmluaGVyaXRzKCZKU05QT2JqZWN0OjpzX2luZm8pKTsKIAogICAgIE5Q
SlNPYmplY3QqIG5wSlNPYmplY3QgPSB0b05QSlNPYmplY3QoY3JlYXRlTlBPYmplY3QoMCwgbnBD
bGFzcygpKSk7Ci0gICAgbnBKU09iamVjdC0+aW5pdGlhbGl6ZShvYmplY3RNYXAsIGpzT2JqZWN0
KTsKKyAgICBucEpTT2JqZWN0LT5pbml0aWFsaXplKGdsb2JhbERhdGEsIG9iamVjdE1hcCwganNP
YmplY3QpOwogCiAgICAgcmV0dXJuIG5wSlNPYmplY3Q7CiB9CiAKIE5QSlNPYmplY3Q6Ok5QSlNP
YmplY3QoKQogICAgIDogbV9vYmplY3RNYXAoMCkKKyAgICAsIG1fanNPYmplY3QoR2xvYmFsPEpT
T2JqZWN0Pjo6RW1wdHlWYWx1ZSkKIHsKIH0KIApAQCAtNjgsMTMgKzY5LDEzIEBAIGJvb2wgTlBK
U09iamVjdDo6aXNOUEpTT2JqZWN0KE5QT2JqZWN0KiBucE9iamVjdCkKICAgICByZXR1cm4gbnBP
YmplY3QtPl9jbGFzcyA9PSBucENsYXNzKCk7CiB9CiAKLXZvaWQgTlBKU09iamVjdDo6aW5pdGlh
bGl6ZShOUFJ1bnRpbWVPYmplY3RNYXAqIG9iamVjdE1hcCwgSlNPYmplY3QqIGpzT2JqZWN0KQor
dm9pZCBOUEpTT2JqZWN0Ojppbml0aWFsaXplKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgTlBS
dW50aW1lT2JqZWN0TWFwKiBvYmplY3RNYXAsIEpTT2JqZWN0KiBqc09iamVjdCkKIHsKICAgICBB
U1NFUlQoIW1fb2JqZWN0TWFwKTsKICAgICBBU1NFUlQoIW1fanNPYmplY3QpOwogCiAgICAgbV9v
YmplY3RNYXAgPSBvYmplY3RNYXA7Ci0gICAgbV9qc09iamVjdCA9IGpzT2JqZWN0OworICAgIG1f
anNPYmplY3Quc2V0KGdsb2JhbERhdGEsIGpzT2JqZWN0KTsKIH0KIAogc3RhdGljIElkZW50aWZp
ZXIgaWRlbnRpZmllckZyb21JZGVudGlmaWVyUmVwKEV4ZWNTdGF0ZSogZXhlYywgSWRlbnRpZmll
clJlcCogaWRlbnRpZmllclJlcCkKQEAgLTEzMiw3ICsxMzMsNyBAQCBib29sIE5QSlNPYmplY3Q6
Omludm9rZURlZmF1bHQoY29uc3QgTlBWYXJpYW50KiBhcmd1bWVudHMsIHVpbnQzMl90IGFyZ3Vt
ZW50Q291bgogCiAgICAgSlNMb2NrIGxvY2soU2lsZW5jZUFzc2VydGlvbnNPbmx5KTsKIAotICAg
IEpTVmFsdWUgZnVuY3Rpb24gPSBtX2pzT2JqZWN0OworICAgIEpTVmFsdWUgZnVuY3Rpb24gPSBt
X2pzT2JqZWN0LmdldCgpOwogICAgIHJldHVybiBpbnZva2UoZXhlYywgbV9vYmplY3RNYXAtPmds
b2JhbE9iamVjdCgpLCBmdW5jdGlvbiwgYXJndW1lbnRzLCBhcmd1bWVudENvdW50LCByZXN1bHQp
OwogfQogCkBAIC0yNTksNyArMjYwLDcgQEAgYm9vbCBOUEpTT2JqZWN0Ojpjb25zdHJ1Y3QoY29u
c3QgTlBWYXJpYW50KiBhcmd1bWVudHMsIHVpbnQzMl90IGFyZ3VtZW50Q291bnQsIE4KICAgICBK
U0xvY2sgbG9jayhTaWxlbmNlQXNzZXJ0aW9uc09ubHkpOwogCiAgICAgQ29uc3RydWN0RGF0YSBj
b25zdHJ1Y3REYXRhOwotICAgIENvbnN0cnVjdFR5cGUgY29uc3RydWN0VHlwZSA9IGdldENvbnN0
cnVjdERhdGEobV9qc09iamVjdCwgY29uc3RydWN0RGF0YSk7CisgICAgQ29uc3RydWN0VHlwZSBj
b25zdHJ1Y3RUeXBlID0gZ2V0Q29uc3RydWN0RGF0YShtX2pzT2JqZWN0LmdldCgpLCBjb25zdHJ1
Y3REYXRhKTsKICAgICBpZiAoY29uc3RydWN0VHlwZSA9PSBDb25zdHJ1Y3RUeXBlTm9uZSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC0yNjksNyArMjcwLDcgQEAgYm9vbCBOUEpTT2JqZWN0
Ojpjb25zdHJ1Y3QoY29uc3QgTlBWYXJpYW50KiBhcmd1bWVudHMsIHVpbnQzMl90IGFyZ3VtZW50
Q291bnQsIE4KICAgICAgICAgYXJndW1lbnRMaXN0LmFwcGVuZChtX29iamVjdE1hcC0+Y29udmVy
dE5QVmFyaWFudFRvSlNWYWx1ZShleGVjLCBtX29iamVjdE1hcC0+Z2xvYmFsT2JqZWN0KCksIGFy
Z3VtZW50c1tpXSkpOwogCiAgICAgZXhlYy0+Z2xvYmFsRGF0YSgpLnRpbWVvdXRDaGVja2VyLnN0
YXJ0KCk7Ci0gICAgSlNWYWx1ZSB2YWx1ZSA9IEpTQzo6Y29uc3RydWN0KGV4ZWMsIG1fanNPYmpl
Y3QsIGNvbnN0cnVjdFR5cGUsIGNvbnN0cnVjdERhdGEsIGFyZ3VtZW50TGlzdCk7CisgICAgSlNW
YWx1ZSB2YWx1ZSA9IEpTQzo6Y29uc3RydWN0KGV4ZWMsIG1fanNPYmplY3QuZ2V0KCksIGNvbnN0
cnVjdFR5cGUsIGNvbnN0cnVjdERhdGEsIGFyZ3VtZW50TGlzdCk7CiAgICAgZXhlYy0+Z2xvYmFs
RGF0YSgpLnRpbWVvdXRDaGVja2VyLnN0b3AoKTsKICAgICAKICAgICAvLyBDb252ZXJ0IGFuZCBy
ZXR1cm4gdGhlIG5ldyBvYmplY3QuCkBAIC0yOTIsNyArMjkzLDcgQEAgYm9vbCBOUEpTT2JqZWN0
OjppbnZva2UoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBK
U1ZhbHVlIGYKICAgICAgICAgYXJndW1lbnRMaXN0LmFwcGVuZChtX29iamVjdE1hcC0+Y29udmVy
dE5QVmFyaWFudFRvSlNWYWx1ZShleGVjLCBnbG9iYWxPYmplY3QsIGFyZ3VtZW50c1tpXSkpOwog
CiAgICAgZXhlYy0+Z2xvYmFsRGF0YSgpLnRpbWVvdXRDaGVja2VyLnN0YXJ0KCk7Ci0gICAgSlNW
YWx1ZSB2YWx1ZSA9IEpTQzo6Y2FsbChleGVjLCBmdW5jdGlvbiwgY2FsbFR5cGUsIGNhbGxEYXRh
LCBtX2pzT2JqZWN0LCBhcmd1bWVudExpc3QpOworICAgIEpTVmFsdWUgdmFsdWUgPSBKU0M6OmNh
bGwoZXhlYywgZnVuY3Rpb24sIGNhbGxUeXBlLCBjYWxsRGF0YSwgbV9qc09iamVjdC5nZXQoKSwg
YXJndW1lbnRMaXN0KTsKICAgICBleGVjLT5nbG9iYWxEYXRhKCkudGltZW91dENoZWNrZXIuc3Rv
cCgpOwogCiAgICAgLy8gQ29udmVydCBhbmQgcmV0dXJuIHRoZSByZXN1bHQgb2YgdGhlIGZ1bmN0
aW9uIGNhbGwuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMv
TmV0c2NhcGUvTlBKU09iamVjdC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5z
L05ldHNjYXBlL05QSlNPYmplY3QuaAppbmRleCAzNTE4MjIxMGEzYTNlOTE5Mjk0MmI5YWYyMGVm
MmI2ZjUyOGM3ZDEyLi5hZTkwYWE1MDM0YmVhZjRjZDU2NGRmODM3OTNkMzI2NTFlYzM0MjY4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTlBK
U09iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2Fw
ZS9OUEpTT2JqZWN0LmgKQEAgLTI2LDEzICsyNiwxNiBAQAogI2lmbmRlZiBOUEpTT2JqZWN0X2gK
ICNkZWZpbmUgTlBKU09iamVjdF9oCiAKLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Qcm90ZWN0
Lmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvR2xvYmFsLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9ucHJ1bnRpbWVfaW50ZXJuYWwuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KIAog
bmFtZXNwYWNlIEpTQyB7Ci0gICAgY2xhc3MgSlNHbG9iYWxPYmplY3Q7Ci0gICAgY2xhc3MgSlNP
YmplY3Q7CisKK2NsYXNzIEpTR2xvYmFsRGF0YTsKK2NsYXNzIEpTR2xvYmFsT2JqZWN0OworY2xh
c3MgSlNPYmplY3Q7CisKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC00Myw3ICs0Niw3IEBA
IGNsYXNzIE5QUnVudGltZU9iamVjdE1hcDsKIGNsYXNzIE5QSlNPYmplY3QgOiBwdWJsaWMgTlBP
YmplY3QgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKE5QSlNPYmplY3QpOwogcHVibGljOgot
ICAgIHN0YXRpYyBOUEpTT2JqZWN0KiBjcmVhdGUoTlBSdW50aW1lT2JqZWN0TWFwKiBvYmplY3RN
YXAsIEpTQzo6SlNPYmplY3QqIGpzT2JqZWN0KTsKKyAgICBzdGF0aWMgTlBKU09iamVjdCogY3Jl
YXRlKEpTQzo6SlNHbG9iYWxEYXRhJiwgTlBSdW50aW1lT2JqZWN0TWFwKiBvYmplY3RNYXAsIEpT
Qzo6SlNPYmplY3QqIGpzT2JqZWN0KTsKIAogICAgIEpTQzo6SlNPYmplY3QqIGpzT2JqZWN0KCkg
Y29uc3QgeyByZXR1cm4gbV9qc09iamVjdC5nZXQoKTsgfQogCkBAIC01OSw3ICs2Miw3IEBAIHBy
aXZhdGU6CiAgICAgTlBKU09iamVjdCgpOwogICAgIH5OUEpTT2JqZWN0KCk7CiAKLSAgICB2b2lk
IGluaXRpYWxpemUoTlBSdW50aW1lT2JqZWN0TWFwKiwgSlNDOjpKU09iamVjdCoganNPYmplY3Qp
OworICAgIHZvaWQgaW5pdGlhbGl6ZShKU0M6OkpTR2xvYmFsRGF0YSYsIE5QUnVudGltZU9iamVj
dE1hcCosIEpTQzo6SlNPYmplY3QqIGpzT2JqZWN0KTsKIAogICAgIGJvb2wgaGFzTWV0aG9kKE5Q
SWRlbnRpZmllciBtZXRob2ROYW1lKTsKICAgICBib29sIGludm9rZShOUElkZW50aWZpZXIgbWV0
aG9kTmFtZSwgY29uc3QgTlBWYXJpYW50KiBhcmd1bWVudHMsIHVpbnQzMl90IGFyZ3VtZW50Q291
bnQsIE5QVmFyaWFudCogcmVzdWx0KTsKQEAgLTg3LDcgKzkwLDcgQEAgcHJpdmF0ZToKICAgICBz
dGF0aWMgYm9vbCBOUF9Db25zdHJ1Y3QoTlBPYmplY3QqLCBjb25zdCBOUFZhcmlhbnQqIGFyZ3Vt
ZW50cywgdWludDMyX3QgYXJndW1lbnRDb3VudCwgTlBWYXJpYW50KiByZXN1bHQpOwogICAgIAog
ICAgIE5QUnVudGltZU9iamVjdE1hcCogbV9vYmplY3RNYXA7Ci0gICAgSlNDOjpQcm90ZWN0ZWRQ
dHI8SlNDOjpKU09iamVjdD4gbV9qc09iamVjdDsKKyAgICBKU0M6Okdsb2JhbDxKU0M6OkpTT2Jq
ZWN0PiBtX2pzT2JqZWN0OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTlBSdW50aW1lT2Jq
ZWN0TWFwLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9O
UFJ1bnRpbWVPYmplY3RNYXAuY3BwCmluZGV4IDBhOTZhZDcyNTAxMDk4ZDMyNmJjNGE1YmVkN2Q5
NzU1MjFlODc4YjkuLmZjNTcyZjRjZDRhNGY5YjY5OWY3MjdmNzAyYzcwYTNlYWJjZTQ1N2YgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OUFJ1
bnRpbWVPYmplY3RNYXAuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lu
cy9OZXRzY2FwZS9OUFJ1bnRpbWVPYmplY3RNYXAuY3BwCkBAIC01OCw3ICs1OCw3IEBAIE5QUnVu
dGltZU9iamVjdE1hcDo6UGx1Z2luUHJvdGVjdG9yOjp+UGx1Z2luUHJvdGVjdG9yKCkKIHsKIH0K
IAotTlBPYmplY3QqIE5QUnVudGltZU9iamVjdE1hcDo6Z2V0T3JDcmVhdGVOUE9iamVjdChKU09i
amVjdCoganNPYmplY3QpCitOUE9iamVjdCogTlBSdW50aW1lT2JqZWN0TWFwOjpnZXRPckNyZWF0
ZU5QT2JqZWN0KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNPYmplY3QqIGpzT2JqZWN0KQog
ewogICAgIC8vIElmIHRoaXMgaXMgYSBKU05QT2JqZWN0LCB3ZSBjYW4ganVzdCBnZXQgaXRzIHVu
ZGVybHlpbmcgTlBPYmplY3QuCiAgICAgaWYgKGpzT2JqZWN0LT5jbGFzc0luZm8oKSA9PSAmSlNO
UE9iamVjdDo6c19pbmZvKSB7CkBAIC03NSw3ICs3NSw3IEBAIE5QT2JqZWN0KiBOUFJ1bnRpbWVP
YmplY3RNYXA6OmdldE9yQ3JlYXRlTlBPYmplY3QoSlNPYmplY3QqIGpzT2JqZWN0KQogICAgICAg
ICByZXR1cm4gbnBKU09iamVjdDsKICAgICB9CiAKLSAgICBOUEpTT2JqZWN0KiBucEpTT2JqZWN0
ID0gTlBKU09iamVjdDo6Y3JlYXRlKHRoaXMsIGpzT2JqZWN0KTsKKyAgICBOUEpTT2JqZWN0KiBu
cEpTT2JqZWN0ID0gTlBKU09iamVjdDo6Y3JlYXRlKGdsb2JhbERhdGEsIHRoaXMsIGpzT2JqZWN0
KTsKICAgICBtX25wSlNPYmplY3RzLnNldChqc09iamVjdCwgbnBKU09iamVjdCk7CiAKICAgICBy
ZXR1cm4gbnBKU09iamVjdDsKQEAgLTE3Miw3ICsxNzIsNyBAQCB2b2lkIE5QUnVudGltZU9iamVj
dE1hcDo6Y29udmVydEpTVmFsdWVUb05QVmFyaWFudChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUg
dmFsdQogICAgIH0KIAogICAgIGlmICh2YWx1ZS5pc09iamVjdCgpKSB7Ci0gICAgICAgIE5QT2Jq
ZWN0KiBucE9iamVjdCA9IGdldE9yQ3JlYXRlTlBPYmplY3QoYXNPYmplY3QodmFsdWUpKTsKKyAg
ICAgICAgTlBPYmplY3QqIG5wT2JqZWN0ID0gZ2V0T3JDcmVhdGVOUE9iamVjdChleGVjLT5nbG9i
YWxEYXRhKCksIGFzT2JqZWN0KHZhbHVlKSk7CiAgICAgICAgIE9CSkVDVF9UT19OUFZBUklBTlQo
bnBPYmplY3QsIHZhcmlhbnQpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMTgyLDE0ICsx
ODIsMTQgQEAgdm9pZCBOUFJ1bnRpbWVPYmplY3RNYXA6OmNvbnZlcnRKU1ZhbHVlVG9OUFZhcmlh
bnQoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHUKIAogYm9vbCBOUFJ1bnRpbWVPYmplY3RN
YXA6OmV2YWx1YXRlKE5QT2JqZWN0KiBucE9iamVjdCwgY29uc3QgU3RyaW5nJnNjcmlwdFN0cmlu
ZywgTlBWYXJpYW50KiByZXN1bHQpCiB7Ci0gICAgUHJvdGVjdGVkUHRyPEpTR2xvYmFsT2JqZWN0
PiBnbG9iYWxPYmplY3QgPSB0aGlzLT5nbG9iYWxPYmplY3QoKTsKKyAgICBHbG9iYWw8SlNHbG9i
YWxPYmplY3Q+IGdsb2JhbE9iamVjdCh0aGlzLT5nbG9iYWxPYmplY3QoKS0+Z2xvYmFsRGF0YSgp
LCB0aGlzLT5nbG9iYWxPYmplY3QoKSk7CiAgICAgaWYgKCFnbG9iYWxPYmplY3QpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKIAogICAgIEV4ZWNTdGF0ZSogZXhlYyA9IGdsb2JhbE9iamVjdC0+Z2xv
YmFsRXhlYygpOwogICAgIAogICAgIEpTTG9jayBsb2NrKFNpbGVuY2VBc3NlcnRpb25zT25seSk7
Ci0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBnZXRPckNyZWF0ZUpTT2JqZWN0KGdsb2JhbE9iamVj
dCwgbnBPYmplY3QpOworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZ2V0T3JDcmVhdGVKU09iamVj
dChnbG9iYWxPYmplY3QuZ2V0KCksIG5wT2JqZWN0KTsKIAogICAgIGdsb2JhbE9iamVjdC0+Z2xv
YmFsRGF0YSgpLnRpbWVvdXRDaGVja2VyLnN0YXJ0KCk7CiAgICAgQ29tcGxldGlvbiBjb21wbGV0
aW9uID0gSlNDOjpldmFsdWF0ZShleGVjLCBnbG9iYWxPYmplY3QtPmdsb2JhbFNjb3BlQ2hhaW4o
KSwgbWFrZVNvdXJjZShVU3RyaW5nKHNjcmlwdFN0cmluZy5pbXBsKCkpKSwgdGhpc1ZhbHVlKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9O
UFJ1bnRpbWVPYmplY3RNYXAuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9O
ZXRzY2FwZS9OUFJ1bnRpbWVPYmplY3RNYXAuaAppbmRleCBhMTFjMzU0NGUzY2I4YTA1M2RhYmZj
ZWRmNGY2M2NiM2IxYmIzZmU5Li5kMTNlMWZlZjhjZDkwYTU1ODY1MGRhNThmZTIwZjAzMzI1NzJk
MDgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2Nh
cGUvTlBSdW50aW1lT2JqZWN0TWFwLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Q
bHVnaW5zL05ldHNjYXBlL05QUnVudGltZU9iamVjdE1hcC5oCkBAIC0zNCw2ICszNCw3IEBAIHR5
cGVkZWYgc3RydWN0IF9OUFZhcmlhbnQgTlBWYXJpYW50OwogCiBuYW1lc3BhY2UgSlNDIHsKICAg
ICBjbGFzcyBFeGVjU3RhdGU7CisgICAgY2xhc3MgSlNHbG9iYWxEYXRhOwogICAgIGNsYXNzIEpT
R2xvYmFsT2JqZWN0OwogICAgIGNsYXNzIEpTT2JqZWN0OwogICAgIGNsYXNzIEpTVmFsdWU7CkBA
IC02MSw3ICs2Miw3IEBAIHB1YmxpYzoKIAogICAgIC8vIFJldHVybnMgYW4gTlBPYmplY3QgdGhh
dCB3cmFwcyB0aGUgZ2l2ZW4gSlNPYmplY3Qgb2JqZWN0LiBJZiB0aGVyZSBpcyBhbHJlYWR5IGFu
IE5QT2JqZWN0IHRoYXQgd3JhcHMgdGhpcyBKU09iamVjdCwgaXQgd2lsbAogICAgIC8vIHJldGFp
biBpdCBhbmQgcmV0dXJuIGl0LgotICAgIE5QT2JqZWN0KiBnZXRPckNyZWF0ZU5QT2JqZWN0KEpT
Qzo6SlNPYmplY3QqKTsKKyAgICBOUE9iamVjdCogZ2V0T3JDcmVhdGVOUE9iamVjdChKU0M6OkpT
R2xvYmFsRGF0YSYsIEpTQzo6SlNPYmplY3QqKTsKICAgICB2b2lkIG5wSlNPYmplY3REZXN0cm95
ZWQoTlBKU09iamVjdCopOwogCiAgICAgLy8gUmV0dXJucyBhIEpTT2JqZWN0IG9iamVjdCB0aGF0
IHdyYXBzIHRoZSBnaXZlbiBOUE9iamVjdC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAppbmRleCA4YWM3ZDNhYjQ2M2VlNWM3ZWIzNjgzYjg0
NDFmMGJkMWE5ZDQ4YjgzLi41OTAxMzg4MzE1ODYwNzlhOWFlOTIzNDE2NzdiNDIyMTdhMDM2YjU3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmll
dy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcu
Y3BwCkBAIC04ODMsNyArODgzLDcgQEAgTlBPYmplY3QqIFBsdWdpblZpZXc6OndpbmRvd1Njcmlw
dE5QT2JqZWN0KCkKICAgICAvLyBGSVhNRTogSGFuZGxlIEphdmFTY3JpcHQgYmVpbmcgZGlzYWJs
ZWQuCiAgICAgQVNTRVJUKGZyYW1lKCktPnNjcmlwdCgpLT5jYW5FeGVjdXRlU2NyaXB0cyhOb3RB
Ym91dFRvRXhlY3V0ZVNjcmlwdCkpOwogCi0gICAgcmV0dXJuIG1fbnBSdW50aW1lT2JqZWN0TWFw
LmdldE9yQ3JlYXRlTlBPYmplY3QoZnJhbWUoKS0+c2NyaXB0KCktPndpbmRvd1NoZWxsKHBsdWdp
bldvcmxkKCkpLT53aW5kb3coKSk7CisgICAgcmV0dXJuIG1fbnBSdW50aW1lT2JqZWN0TWFwLmdl
dE9yQ3JlYXRlTlBPYmplY3QoKnBsdWdpbldvcmxkKCktPmdsb2JhbERhdGEoKSwgZnJhbWUoKS0+
c2NyaXB0KCktPndpbmRvd1NoZWxsKHBsdWdpbldvcmxkKCkpLT53aW5kb3coKSk7CiB9CiAKIE5Q
T2JqZWN0KiBQbHVnaW5WaWV3OjpwbHVnaW5FbGVtZW50TlBPYmplY3QoKQpAQCAtODk1LDcgKzg5
NSw3IEBAIE5QT2JqZWN0KiBQbHVnaW5WaWV3OjpwbHVnaW5FbGVtZW50TlBPYmplY3QoKQogICAg
IEpTT2JqZWN0KiBvYmplY3QgPSBmcmFtZSgpLT5zY3JpcHQoKS0+anNPYmplY3RGb3JQbHVnaW5F
bGVtZW50KG1fcGx1Z2luRWxlbWVudC5nZXQoKSk7CiAgICAgQVNTRVJUKG9iamVjdCk7CiAKLSAg
ICByZXR1cm4gbV9ucFJ1bnRpbWVPYmplY3RNYXAuZ2V0T3JDcmVhdGVOUE9iamVjdChvYmplY3Qp
OworICAgIHJldHVybiBtX25wUnVudGltZU9iamVjdE1hcC5nZXRPckNyZWF0ZU5QT2JqZWN0KCpw
bHVnaW5Xb3JsZCgpLT5nbG9iYWxEYXRhKCksIG9iamVjdCk7CiB9CiAKIGJvb2wgUGx1Z2luVmll
dzo6ZXZhbHVhdGUoTlBPYmplY3QqIG5wT2JqZWN0LCBjb25zdCBTdHJpbmcmIHNjcmlwdFN0cmlu
ZywgTlBWYXJpYW50KiByZXN1bHQsIGJvb2wgYWxsb3dQb3B1cHMpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>82385</attachid>
            <date>2011-02-14 16:41:28 -0800</date>
            <delta_ts>2011-02-14 17:04:40 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-54415-20110214164126.patch</filename>
            <type>text/plain</type>
            <size>194187</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogNzg0ODkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvSlNDbGFzc1JlZi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2xh
c3NSZWYuY3BwCmluZGV4IGRlY2Y0OTMzMTQzYTFlZDNlOGUwMTRjZTBmYjZhZDI2Nzk5NDE5OTQu
LmQ5NTNkY2UxYzc4NjhiMTRmMDEwNWU1ZmRlNTg3NmUxNDE5YmJjMmYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDbGFzc1JlZi5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0FQSS9KU0NsYXNzUmVmLmNwcApAQCAtMTQyLDE5ICsxNDIsMTIgQEAgUGFzc1Jl
ZlB0cjxPcGFxdWVKU0NsYXNzPiBPcGFxdWVKU0NsYXNzOjpjcmVhdGVOb0F1dG9tYXRpY1Byb3Rv
dHlwZShjb25zdCBKU0NsYXMKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IE9wYXF1ZUpTQ2xhc3Mo
ZGVmaW5pdGlvbiwgMCkpOwogfQogCi1zdGF0aWMgdm9pZCBjbGVhclJlZmVyZW5jZVRvUHJvdG90
eXBlKEpTT2JqZWN0UmVmIHByb3RvdHlwZSkKLXsKLSAgICBPcGFxdWVKU0NsYXNzQ29udGV4dERh
dGEqIGpzQ2xhc3NEYXRhID0gc3RhdGljX2Nhc3Q8T3BhcXVlSlNDbGFzc0NvbnRleHREYXRhKj4o
SlNPYmplY3RHZXRQcml2YXRlKHByb3RvdHlwZSkpOwotICAgIEFTU0VSVChqc0NsYXNzRGF0YSk7
Ci0gICAganNDbGFzc0RhdGEtPmNhY2hlZFByb3RvdHlwZS5jbGVhcih0b0pTKHByb3RvdHlwZSkp
OwotfQotCiBQYXNzUmVmUHRyPE9wYXF1ZUpTQ2xhc3M+IE9wYXF1ZUpTQ2xhc3M6OmNyZWF0ZShj
b25zdCBKU0NsYXNzRGVmaW5pdGlvbiogY2xpZW50RGVmaW5pdGlvbikKIHsKICAgICBKU0NsYXNz
RGVmaW5pdGlvbiBkZWZpbml0aW9uID0gKmNsaWVudERlZmluaXRpb247IC8vIEF2b2lkIG1vZGlm
eWluZyBjbGllbnQgY29weS4KIAogICAgIEpTQ2xhc3NEZWZpbml0aW9uIHByb3RvRGVmaW5pdGlv
biA9IGtKU0NsYXNzRGVmaW5pdGlvbkVtcHR5OwotICAgIHByb3RvRGVmaW5pdGlvbi5maW5hbGl6
ZSA9IGNsZWFyUmVmZXJlbmNlVG9Qcm90b3R5cGU7CisgICAgcHJvdG9EZWZpbml0aW9uLmZpbmFs
aXplID0gMDsKICAgICBzd2FwKGRlZmluaXRpb24uc3RhdGljRnVuY3Rpb25zLCBwcm90b0RlZmlu
aXRpb24uc3RhdGljRnVuY3Rpb25zKTsgLy8gTW92ZSBzdGF0aWMgZnVuY3Rpb25zIHRvIHRoZSBw
cm90b3R5cGUuCiAgICAgCiAgICAgLy8gV2UgYXJlIHN1cHBvc2VkIHRvIHVzZSBKU0NsYXNzUmV0
YWluL1JlbGVhc2UgYnV0IHNpbmNlIHdlIGtub3cgdGhhdCB3ZSBjdXJyZW50bHkgaGF2ZQpAQCAt
MTYzLDcgKzE1Niw3IEBAIFBhc3NSZWZQdHI8T3BhcXVlSlNDbGFzcz4gT3BhcXVlSlNDbGFzczo6
Y3JlYXRlKGNvbnN0IEpTQ2xhc3NEZWZpbml0aW9uKiBjbGllbnRECiAgICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBPcGFxdWVKU0NsYXNzKCZkZWZpbml0aW9uLCBwcm90b0NsYXNzLmdldCgpKSk7CiB9
CiAKLU9wYXF1ZUpTQ2xhc3NDb250ZXh0RGF0YTo6T3BhcXVlSlNDbGFzc0NvbnRleHREYXRhKE9w
YXF1ZUpTQ2xhc3MqIGpzQ2xhc3MpCitPcGFxdWVKU0NsYXNzQ29udGV4dERhdGE6Ok9wYXF1ZUpT
Q2xhc3NDb250ZXh0RGF0YShKU0M6OkpTR2xvYmFsRGF0YSYsIE9wYXF1ZUpTQ2xhc3MqIGpzQ2xh
c3MpCiAgICAgOiBtX2NsYXNzKGpzQ2xhc3MpCiB7CiAgICAgaWYgKGpzQ2xhc3MtPm1fc3RhdGlj
VmFsdWVzKSB7CkBAIC0yMDksNyArMjAyLDcgQEAgT3BhcXVlSlNDbGFzc0NvbnRleHREYXRhJiBP
cGFxdWVKU0NsYXNzOjpjb250ZXh0RGF0YShFeGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAgT3BhcXVl
SlNDbGFzc0NvbnRleHREYXRhKiYgY29udGV4dERhdGEgPSBleGVjLT5nbG9iYWxEYXRhKCkub3Bh
cXVlSlNDbGFzc0RhdGEuYWRkKHRoaXMsIDApLmZpcnN0LT5zZWNvbmQ7CiAgICAgaWYgKCFjb250
ZXh0RGF0YSkKLSAgICAgICAgY29udGV4dERhdGEgPSBuZXcgT3BhcXVlSlNDbGFzc0NvbnRleHRE
YXRhKHRoaXMpOworICAgICAgICBjb250ZXh0RGF0YSA9IG5ldyBPcGFxdWVKU0NsYXNzQ29udGV4
dERhdGEoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlzKTsKICAgICByZXR1cm4gKmNvbnRleHREYXRh
OwogfQogCkBAIC0yNTYsNyArMjQ5LDcgQEAgSlNPYmplY3QqIE9wYXF1ZUpTQ2xhc3M6OnByb3Rv
dHlwZShFeGVjU3RhdGUqIGV4ZWMpCiAKICAgICBpZiAoIWpzQ2xhc3NEYXRhLmNhY2hlZFByb3Rv
dHlwZSkgewogICAgICAgICAvLyBSZWN1cnNpdmUsIGJ1dCBzaG91bGQgYmUgZ29vZCBlbm91Z2gg
Zm9yIG91ciBwdXJwb3NlcwotICAgICAgICBqc0NsYXNzRGF0YS5jYWNoZWRQcm90b3R5cGUgPSBu
ZXcgKGV4ZWMpIEpTQ2FsbGJhY2tPYmplY3Q8SlNPYmplY3RXaXRoR2xvYmFsT2JqZWN0PihleGVj
LCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3Qo
KS0+Y2FsbGJhY2tPYmplY3RTdHJ1Y3R1cmUoKSwgcHJvdG90eXBlQ2xhc3MsICZqc0NsYXNzRGF0
YSk7IC8vIHNldCBqc0NsYXNzRGF0YSBhcyB0aGUgb2JqZWN0J3MgcHJpdmF0ZSBkYXRhLCBzbyBp
dCBjYW4gY2xlYXIgb3VyIHJlZmVyZW5jZSBvbiBkZXN0cnVjdGlvbgorICAgICAgICBqc0NsYXNz
RGF0YS5jYWNoZWRQcm90b3R5cGUuc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgbmV3IChleGVjKSBK
U0NhbGxiYWNrT2JqZWN0PEpTT2JqZWN0V2l0aEdsb2JhbE9iamVjdD4oZXhlYywgZXhlYy0+bGV4
aWNhbEdsb2JhbE9iamVjdCgpLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPmNhbGxiYWNr
T2JqZWN0U3RydWN0dXJlKCksIHByb3RvdHlwZUNsYXNzLCAmanNDbGFzc0RhdGEpLCAwKTsgLy8g
c2V0IGpzQ2xhc3NEYXRhIGFzIHRoZSBvYmplY3QncyBwcml2YXRlIGRhdGEsIHNvIGl0IGNhbiBj
bGVhciBvdXIgcmVmZXJlbmNlIG9uIGRlc3RydWN0aW9uCiAgICAgICAgIGlmIChwYXJlbnRDbGFz
cykgewogICAgICAgICAgICAgaWYgKEpTT2JqZWN0KiBwcm90b3R5cGUgPSBwYXJlbnRDbGFzcy0+
cHJvdG90eXBlKGV4ZWMpKQogICAgICAgICAgICAgICAgIGpzQ2xhc3NEYXRhLmNhY2hlZFByb3Rv
dHlwZS0+c2V0UHJvdG90eXBlKHByb3RvdHlwZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQVBJL0pTQ2xhc3NSZWYuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlND
bGFzc1JlZi5oCmluZGV4IDA5NzE3MDAyYjQ1MWM5YTc5NTFlYjgyNTYyOGIwMjViZWNhOGNlZDku
LjMyOWQ3MmVlZjAyYTIyNWM3OWEyZjlhYjc0YTk3ZTJjZWM4YmEwMDYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDbGFzc1JlZi5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9BUEkvSlNDbGFzc1JlZi5oCkBAIC02OSw3ICs2OSw3IEBAIHN0cnVjdCBPcGFxdWVK
U0NsYXNzOwogc3RydWN0IE9wYXF1ZUpTQ2xhc3NDb250ZXh0RGF0YSB7CiAgICAgV1RGX01BS0Vf
Tk9OQ09QWUFCTEUoT3BhcXVlSlNDbGFzc0NvbnRleHREYXRhKTsgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CiBwdWJsaWM6Ci0gICAgT3BhcXVlSlNDbGFzc0NvbnRleHREYXRhKE9wYXF1ZUpTQ2xh
c3MqKTsKKyAgICBPcGFxdWVKU0NsYXNzQ29udGV4dERhdGEoSlNDOjpKU0dsb2JhbERhdGEmLCBP
cGFxdWVKU0NsYXNzKik7CiAgICAgfk9wYXF1ZUpTQ2xhc3NDb250ZXh0RGF0YSgpOwogCiAgICAg
Ly8gSXQgaXMgbmVjZXNzYXJ5IHRvIGtlZXAgT3BhcXVlSlNDbGFzcyBhbGl2ZSBiZWNhdXNlIG9m
IHRoZSBmb2xsb3dpbmcgcmFyZSBzY2VuYXJpbzoKQEAgLTgyLDcgKzgyLDcgQEAgcHVibGljOgog
CiAgICAgT3BhcXVlSlNDbGFzc1N0YXRpY1ZhbHVlc1RhYmxlKiBzdGF0aWNWYWx1ZXM7CiAgICAg
T3BhcXVlSlNDbGFzc1N0YXRpY0Z1bmN0aW9uc1RhYmxlKiBzdGF0aWNGdW5jdGlvbnM7Ci0gICAg
SlNDOjpXZWFrR0NQdHI8SlNDOjpKU09iamVjdD4gY2FjaGVkUHJvdG90eXBlOworICAgIEpTQzo6
TGF6eVdlYWtHQ1B0cjxKU0M6OkpTT2JqZWN0PiBjYWNoZWRQcm90b3R5cGU7CiB9OwogCiBzdHJ1
Y3QgT3BhcXVlSlNDbGFzcyA6IHB1YmxpYyBUaHJlYWRTYWZlU2hhcmVkPE9wYXF1ZUpTQ2xhc3M+
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCBmMTg4MjZlYWVjNjBlNGM4
MGExZmZhYmIwZGYzOWU4MDk4N2MxNWM5Li41YTZhY2UyMTFmMDM2ZDU0ODRiZWZlYmZhN2YxNjdj
NGZmOWVhOGY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50
eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC00MCw2ICs0
MCw4IEBAIFNFVChKYXZhU2NyaXB0Q29yZV9TT1VSQ0VTCiAgICAgYnl0ZWNvbXBpbGVyL0J5dGVj
b2RlR2VuZXJhdG9yLmNwcAogICAgIGJ5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCiAKKyAg
ICBjb2xsZWN0b3IvaGFuZGxlcy9IYW5kbGVIZWFwLmNwcAorCiAgICAgZGVidWdnZXIvRGVidWdn
ZXIuY3BwCiAgICAgZGVidWdnZXIvRGVidWdnZXJBY3RpdmF0aW9uLmNwcAogICAgIGRlYnVnZ2Vy
L0RlYnVnZ2VyQ2FsbEZyYW1lLmNwcApAQCAtMTAwLDcgKzEwMiw2IEBAIFNFVChKYXZhU2NyaXB0
Q29yZV9TT1VSQ0VTCiAgICAgcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmNwcAogICAgIHJ1
bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuY3BwCiAgICAgcnVudGltZS9HQ0FjdGl2aXR5Q2FsbGJh
Y2suY3BwCi0gICAgcnVudGltZS9HQ0hhbmRsZS5jcHAKICAgICBydW50aW1lL0dldHRlclNldHRl
ci5jcHAKICAgICBydW50aW1lL0dsb2JhbEV2YWxGdW5jdGlvbi5jcHAKICAgICBydW50aW1lL0lk
ZW50aWZpZXIuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9n
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA0YWYwOGQ2NWMyNDYzNjI4
Yzk0NGVmNWZkMzA5NGIzYjc2ZDc2ODMyLi5iMGZhNDIxYWVmNmVhOGVmMTIwODc1ZDJjNzk2NWYx
Y2Q4ZmZlY2JkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNzEgQEAKKzIw
MTEtMDItMTQgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZWZhY3RvciBoYW5kbGVzIGFuZCB3
ZWFrIHBvaW50ZXJzIHRvIGJlY29tZSBuaWNlciBhbmQgbW9yZSBhdXRvbWF0aWMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU0NDE1CisKKyAgICAgICAg
TW92ZSB0byBhIHRydWUgaGFuZGxlIGJhc2VkIG1lY2hhbmlzbSBmb3IgR0MgdmFsdWUgcHJvdGVj
dGlvbi4gIFRoaXMKKyAgICAgICAgYWxzbyBhbGxvd3MgdXMgdG8gc3dpdGNoIHRvIGEgbW9yZSBz
ZW5zaWJsZSBiZWhhdmlvdXIgZm9yIHdlYWsgcG9pbnRlcnMKKyAgICAgICAgaW4gd2hpY2ggd2Vh
ayBwb2ludGVycyBhcmUgYXV0b21hdGljYWxseSB1cGRhdGVkLgorCisgICAgICAgIFRoaXMgYWxs
b3dzIHVzIHRvIHJlbW92ZSB0aGUgb2xkIChhbmQgY29udm9sdXRlZCkgdGhhdCByZXF1aXJlZCBh
bGwKKyAgICAgICAgb2JqZWN0cyB0aGF0IG1heSBiZSBoZWxkIGJ5IGEgd2VhayByZWZlcmVuY2Ug
dG8gYmUgYXdhcmUgb2YgdGhlIHJlZmVyZW5jZQorICAgICAgICBhbmQgbWFudWFsbHkgY2xlYXIg
dGhlbSBpbiB0aGVpciBkZXN0cnVjdG9ycy4KKworICAgICAgICBUaGlzIGFsc28gYWRkcyBhIGZl
dyBuZXcgZGF0YSB0eXBlcyB0byBKU0MgdGhhdCB3ZSB1c2UgdG8gZWZmaWNpZW50bHkKKyAgICAg
ICAgYWxsb2NhdGUgYW5kIHJldHVybiB0aGUgdW5kZXJseWluZyBoYW5kbGUgc3RvcmFnZS4KKwor
ICAgICAgICBUaGlzIHBhdGNoIGlzIGxhcmdlbHkgcmVuYW1pbmcgYW5kIHJlbW92aW5nIG5vdyB1
bm5lY2Vzc2FyeSBkZXN0cnVjdG9ycworICAgICAgICBmcm9tIG9iamVjdHMuCisKKyAgICAgICAg
KiBBUEkvSlNDbGFzc1JlZi5jcHA6CisgICAgICAgIChPcGFxdWVKU0NsYXNzOjpjcmVhdGUpOgor
ICAgICAgICAoT3BhcXVlSlNDbGFzc0NvbnRleHREYXRhOjpPcGFxdWVKU0NsYXNzQ29udGV4dERh
dGEpOgorICAgICAgICAoT3BhcXVlSlNDbGFzczo6Y29udGV4dERhdGEpOgorICAgICAgICAoT3Bh
cXVlSlNDbGFzczo6cHJvdG90eXBlKToKKyAgICAgICAgKiBBUEkvSlNDbGFzc1JlZi5oOgorICAg
ICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOgorICAgICAg
ICAqIEphdmFTY3JpcHRDb3JlLmV4cDoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS5neXBpOgor
ICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnBybzoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS52
Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZGVmOgorICAgICAgICAqIEphdmFT
Y3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2o6Cisg
ICAgICAgICogSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlQ29tbW9uLnZzcHJvcHM6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlR2VuZXJhdGVkLm1ha2U6CisgICAgICAgICogSmF2YVNj
cmlwdENvcmUudmNwcm9qL2pzYy9qc2NDb21tb24udnNwcm9wczoKKyAgICAgICAgKiBKYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGNvbGxlY3Rvci9o
YW5kbGVzL0Jsb2NrU3RhY2suaDogQWRkZWQuCisgICAgICAgIChKU0M6Ojo6QmxvY2tTdGFjayk6
CisgICAgICAgIChKU0M6Ojo6fkJsb2NrU3RhY2spOgorICAgICAgICAoSlNDOjo6OmJsb2Nrcyk6
CisgICAgICAgIChKU0M6Ojo6Z3Jvdyk6CisgICAgICAgIChKU0M6Ojo6c2hyaW5rKToKKyAgICAg
ICAgKiBjb2xsZWN0b3IvaGFuZGxlcy9HbG9iYWwuaDogQWRkZWQuCisgICAgICAgICAgICBOZXcg
R2xvYmFsIGhhbmRsZSB0eXBlIHVzZWQgdG8ga2VlcCBnYyBvYmplY3RzIGxpdmUsIGV2ZW4gaWYg
dGhleSdyZSBub3QKKyAgICAgICAgICAgIG1hcmtlZC4KKyAgICAgICAgKEpTQzo6R2xvYmFsOjpH
bG9iYWwpOgorICAgICAgICAoSlNDOjpHbG9iYWw6On5HbG9iYWwpOgorICAgICAgICAoSlNDOjpH
bG9iYWw6OnNldCk6CisgICAgICAgICAgICBXZSBjYW4gb25seSBhc3NpZ24gZGlyZWN0bHkgdG8g
YSBnbG9iYWwgZnJvbSBhbm90aGVyIGdsb2JhbC4KKyAgICAgICAgICAgIEluIGFsbCBvdGhlciBj
YXNlcyB3ZSBuZWVkIHRoZSBKU0dsb2JhbERhdGEgdG8gYmUgcHJvdmlkZWQKKyAgICAgICAgICAg
IGV4cGxpY2l0bHkgc28gd2UgdXNlIGEgc2V0IGZ1bmN0aW9uLgorICAgICAgICAoSlNDOjpHbG9i
YWw6Om9wZXJhdG9yPSk6CisgICAgICAgIChKU0M6Okdsb2JhbDo6Y2xlYXIpOgorICAgICAgICAo
SlNDOjpHbG9iYWw6OmlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKToKKyAgICAgICAgKEpTQzo6R2xv
YmFsOjppbnRlcm5hbFNldCk6CisgICAgICAgICogY29sbGVjdG9yL2hhbmRsZXMvSGFuZGxlLmg6
IEFkZGVkLgorICAgICAgICAgICAgUm9vdCAiSGFuZGxlIiB0eXBlIHVzZWQgZm9yIGltbXV0YWJs
ZSBoYW5kbGVzIGFuZCB0byBwcm92aWRlIHRoZSBiYXNpYworICAgICAgICAgICAgQVBJcyBuZWVk
ZWQgZm9yIHBvaW50ZXItbGlrZSBiZWhhdmlvdXIuCisgICAgICAgIChKU0M6OkhhbmRsZUJhc2U6
Om9wZXJhdG9yISk6CisgICAgICAgIChKU0M6OkhhbmRsZUJhc2U6Om9wZXJhdG9yIFVuc3BlY2lm
aWVkQm9vbFR5cGUqKToKKyAgICAgICAgKEpTQzo6SGFuZGxlQmFzZTo6aXNFbXB0eSk6CisgICAg
ICAgIChKU0M6OkhhbmRsZUJhc2U6OkhhbmRsZUJhc2UpOgorICAgICAgICAoSlNDOjpIYW5kbGVC
YXNlOjpzbG90KToKKyAgICAgICAgKEpTQzo6SGFuZGxlQmFzZTo6aW52YWxpZGF0ZSk6CisgICAg
ICAgIChKU0M6OkhhbmRsZUJhc2U6OnNldFNsb3QpOgorICAgICAgICAoSlNDOjpIYW5kbGVUeXBl
czo6Z2V0RnJvbVNsb3QpOgorICAgICAgICAoSlNDOjpIYW5kbGVUeXBlczo6dG9KU1ZhbHVlKToK
KyAgICAgICAgKEpTQzo6SGFuZGxlVHlwZXM6OnZhbGlkYXRlVXBjYXN0KToKKyAgICAgICAgKEpT
Qzo6SGFuZGxlQ29udmVydGVyOjpvcGVyYXRvci0+KToKKyAgICAgICAgKEpTQzo6SGFuZGxlQ29u
dmVydGVyOjpvcGVyYXRvciopOgorICAgICAgICAoSlNDOjpIYW5kbGU6OkhhbmRsZSk6CisgICAg
ICAgIChKU0M6OkhhbmRsZTo6Z2V0KToKKyAgICAgICAgKEpTQzo6SGFuZGxlOjp3cmFwU2xvdCk6
CisgICAgICAgIChKU0M6Om9wZXJhdG9yPT0pOgorICAgICAgICAoSlNDOjpvcGVyYXRvciE9KToK
KyAgICAgICAgKiBjb2xsZWN0b3IvaGFuZGxlcy9IYW5kbGVIZWFwLmNwcDogQWRkZWQuCisgICAg
ICAgICAgICBOZXcgaGVhcCBmb3IgZ2xvYmFsIGhhbmRsZXMuCisgICAgICAgIChKU0M6OkhhbmRs
ZUhlYXA6OkhhbmRsZUhlYXApOgorICAgICAgICAoSlNDOjpIYW5kbGVIZWFwOjpncm93KToKKyAg
ICAgICAgKEpTQzo6SGFuZGxlSGVhcDo6bWFya1N0cm9uZ0hhbmRsZXMpOgorICAgICAgICAoSlND
OjpIYW5kbGVIZWFwOjp1cGRhdGVBZnRlck1hcmspOgorICAgICAgICAoSlNDOjpIYW5kbGVIZWFw
OjpjbGVhcldlYWtQb2ludGVycyk6CisgICAgICAgIChKU0M6OkhhbmRsZUhlYXA6OndyaXRlQmFy
cmllcik6CisgICAgICAgICogY29sbGVjdG9yL2hhbmRsZXMvSGFuZGxlSGVhcC5oOiBBZGRlZC4K
KyAgICAgICAgKEpTQzo6SGFuZGxlSGVhcDo6aGVhcEZvcik6CisgICAgICAgIChKU0M6OkhhbmRs
ZUhlYXA6OnRvSGFuZGxlKToKKyAgICAgICAgKEpTQzo6SGFuZGxlSGVhcDo6dG9Ob2RlKToKKyAg
ICAgICAgKEpTQzo6SGFuZGxlSGVhcDo6YWxsb2NhdGUpOgorICAgICAgICAoSlNDOjpIYW5kbGVI
ZWFwOjpkZWFsbG9jYXRlKToKKyAgICAgICAgKEpTQzo6SGFuZGxlSGVhcDo6bWFrZVdlYWspOgor
ICAgICAgICAgICAgQ29udmVydCBhIGhhcmQgaGFuZGxlIGludG8gd2VhayBoYW5kbGUgdGhhdCBk
b2VzIG5vdAorICAgICAgICAgICAgcHJvdGVjdCB0aGUgb2JqZWN0IGl0IHBvaW50cyB0by4KKyAg
ICAgICAgKEpTQzo6SGFuZGxlSGVhcDo6bWFrZVNlbGZEZXN0cm95aW5nKToKKyAgICAgICAgICAg
IENvbnZlcnRzIGEgaGFuZGxlIHRvIGEgd2VhayBoYW5kbGUgdGhhdCB3aWxsIGJlIHJldHVybmVk
CisgICAgICAgICAgICB0byB0aGUgZnJlZSBsaXN0IHdoZW4gdGhlIHJlZmVyZW5jZWQgb2JqZWN0
IGRpZXMuCisgICAgICAgIChKU0M6OkhhbmRsZUhlYXA6Ok5vZGU6Ok5vZGUpOgorICAgICAgICAo
SlNDOjpIYW5kbGVIZWFwOjpOb2RlOjpzbG90KToKKyAgICAgICAgKEpTQzo6SGFuZGxlSGVhcDo6
Tm9kZTo6aGFuZGxlSGVhcCk6CisgICAgICAgIChKU0M6OkhhbmRsZUhlYXA6Ok5vZGU6OnNldEZp
bmFsaXplcik6CisgICAgICAgIChKU0M6OkhhbmRsZUhlYXA6Ok5vZGU6Om1ha2VXZWFrKToKKyAg
ICAgICAgKEpTQzo6SGFuZGxlSGVhcDo6Tm9kZTo6aXNXZWFrKToKKyAgICAgICAgKEpTQzo6SGFu
ZGxlSGVhcDo6Tm9kZTo6bWFrZVNlbGZEZXN0cm95aW5nKToKKyAgICAgICAgKEpTQzo6SGFuZGxl
SGVhcDo6Tm9kZTo6aXNTZWxmRGVzdHJveWluZyk6CisgICAgICAgIChKU0M6OkhhbmRsZUhlYXA6
Ok5vZGU6OmZpbmFsaXplcik6CisgICAgICAgIChKU0M6OkhhbmRsZUhlYXA6Ok5vZGU6OnNldFBy
ZXYpOgorICAgICAgICAoSlNDOjpIYW5kbGVIZWFwOjpOb2RlOjpwcmV2KToKKyAgICAgICAgKEpT
Qzo6SGFuZGxlSGVhcDo6Tm9kZTo6c2V0TmV4dCk6CisgICAgICAgIChKU0M6OkhhbmRsZUhlYXA6
Ok5vZGU6Om5leHQpOgorICAgICAgICAqIGNvbGxlY3Rvci9oYW5kbGVzL1NlbnRpbmVsTGlua2Vk
TGlzdC5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6OjpTZW50aW5lbExpbmtlZExpc3QpOgorICAg
ICAgICAoSlNDOjo6OmJlZ2luKToKKyAgICAgICAgKEpTQzo6OjplbmQpOgorICAgICAgICAoSlND
Ojo6OnB1c2gpOgorICAgICAgICAoSlNDOjo6OnJlbW92ZSk6CisgICAgICAgICogY29sbGVjdG9y
L2hhbmRsZXMvU2luZ2x5TGlua2VkTGlzdC5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6OjpTaW5n
bHlMaW5rZWRMaXN0KToKKyAgICAgICAgKEpTQzo6Ojppc0VtcHR5KToKKyAgICAgICAgKEpTQzo6
OjpwdXNoKToKKyAgICAgICAgKEpTQzo6Ojpwb3ApOgorICAgICAgICAqIGludGVycHJldGVyL0lu
dGVycHJldGVyLmNwcDoKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OkludGVycHJldGVyKToK
KyAgICAgICAgKiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5oOgorICAgICAgICAqIGludGVycHJl
dGVyL1JlZ2lzdGVyRmlsZS5jcHA6CisgICAgICAgIChKU0M6OlJlZ2lzdGVyRmlsZTo6Z2xvYmFs
T2JqZWN0Q29sbGVjdGVkKToKKyAgICAgICAgKiBpbnRlcnByZXRlci9SZWdpc3RlckZpbGUuaDoK
KyAgICAgICAgKEpTQzo6UmVnaXN0ZXJGaWxlOjpSZWdpc3RlckZpbGUpOgorICAgICAgICAqIHJ1
bnRpbWUvR0NIYW5kbGUuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIHJ1bnRpbWUvR0NIYW5kbGUu
aDogUmVtb3ZlZC4KKyAgICAgICAgKiBydW50aW1lL0hlYXAuY3BwOgorICAgICAgICAoSlNDOjpI
ZWFwOjpIZWFwKToKKyAgICAgICAgKEpTQzo6SGVhcDo6ZGVzdHJveSk6CisgICAgICAgIChKU0M6
OkhlYXA6Om1hcmtSb290cyk6CisgICAgICAgICogcnVudGltZS9IZWFwLmg6CisgICAgICAgIChK
U0M6OkhlYXA6OmFsbG9jYXRlR2xvYmFsSGFuZGxlKToKKyAgICAgICAgKEpTQzo6SGVhcDo6cmVw
b3J0RXh0cmFNZW1vcnlDb3N0KToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsRGF0YS5jcHA6
CisgICAgICAgIChKU0M6OkpTR2xvYmFsRGF0YTo6SlNHbG9iYWxEYXRhKToKKyAgICAgICAgKiBy
dW50aW1lL0pTR2xvYmFsRGF0YS5oOgorICAgICAgICAoSlNDOjpKU0dsb2JhbERhdGE6OmFsbG9j
YXRlR2xvYmFsSGFuZGxlKToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDoK
KyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6On5KU0dsb2JhbE9iamVjdCk6CisgICAgICAg
ICogcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6SlNQ
cm9wZXJ0eU5hbWVJdGVyYXRvcjo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6SlNQcm9wZXJ0eU5h
bWVJdGVyYXRvcjo6fkpTUHJvcGVydHlOYW1lSXRlcmF0b3IpOgorICAgICAgICAqIHJ1bnRpbWUv
SlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oOgorICAgICAgICAoSlNDOjpKU1Byb3BlcnR5TmFtZUl0
ZXJhdG9yOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OnNldEVu
dW1lcmF0aW9uQ2FjaGUpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OmNsZWFyRW51bWVyYXRp
b25DYWNoZSk6CisgICAgICAgICogcnVudGltZS9Qcm90ZWN0Lmg6CisgICAgICAgICogcnVudGlt
ZS9TdHJ1Y3R1cmUuY3BwOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6On5TdHJ1Y3R1cmUpOgor
ICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlLmg6CisgICAgICAgICogcnVudGltZS9XZWFrR0NQ
dHIuaDoKKyAgICAgICAgKEpTQzo6V2Vha0dDUHRyQmFzZTo6Z2V0KToKKyAgICAgICAgKEpTQzo6
V2Vha0dDUHRyQmFzZTo6Y2xlYXIpOgorICAgICAgICAoSlNDOjpXZWFrR0NQdHJCYXNlOjpvcGVy
YXRvciEpOgorICAgICAgICAoSlNDOjpXZWFrR0NQdHJCYXNlOjpvcGVyYXRvciBVbnNwZWNpZmll
ZEJvb2xUeXBlKik6CisgICAgICAgIChKU0M6OldlYWtHQ1B0ckJhc2U6On5XZWFrR0NQdHJCYXNl
KToKKyAgICAgICAgKEpTQzo6V2Vha0dDUHRyQmFzZTo6V2Vha0dDUHRyQmFzZSk6CisgICAgICAg
IChKU0M6OldlYWtHQ1B0ckJhc2U6OmludGVybmFsU2V0KToKKyAgICAgICAgKEpTQzo6TGF6eVdl
YWtHQ1B0cjo6TGF6eVdlYWtHQ1B0cik6CisgICAgICAgIChKU0M6OkxhenlXZWFrR0NQdHI6OnNl
dCk6CisgICAgICAgIChKU0M6OldlYWtHQ1B0cjo6V2Vha0dDUHRyKToKKyAgICAgICAgKEpTQzo6
V2Vha0dDUHRyOjpvcGVyYXRvcj0pOgorICAgICAgICAqIHJ1bnRpbWUvV3JpdGVCYXJyaWVyLmg6
CisKIDIwMTEtMDItMTQgIFBhdmVsIFBvZGl2aWxvdiAgPHBvZGl2aWxvdkBjaHJvbWl1bS5vcmc+
CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgWXVyeSBTZW1pa2hhdHNreS4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5hbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9HTlVtYWtlZmlsZS5hbQppbmRleCBlNmNjZjJlNTZlYzczYzI2ZmJlN2I3NmEwZmMwNzM5YjQx
YjUzNzg0Li5hMmYwOTY3MWFlNWZkYjg4ZDM2OGQ0MmE4YzM0MDYxNmFjYzg1YjhlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUuYW0KKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmFtCkBAIC0xMDksNiArMTA5LDEzIEBAIGphdmFzY3Jp
cHRjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIv
TGFiZWxTY29wZS5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVz
Q29kZWdlbi5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvUmVnaXN0
ZXJJRC5oIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvY29sbGVjdG9yL2hhbmRsZXMvQmxvY2tT
dGFjay5oIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvY29sbGVjdG9yL2hhbmRsZXMvR2xvYmFs
LmggXAorCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9jb2xsZWN0b3IvaGFuZGxlcy9IYW5kbGUuaCBc
CisJU291cmNlL0phdmFTY3JpcHRDb3JlL2NvbGxlY3Rvci9oYW5kbGVzL0hhbmRsZUhlYXAuY3Bw
IFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvY29sbGVjdG9yL2hhbmRsZXMvSGFuZGxlSGVhcC5o
IFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvY29sbGVjdG9yL2hhbmRsZXMvU2VudGluZWxMaW5r
ZWRMaXN0LmggXAorCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9jb2xsZWN0b3IvaGFuZGxlcy9TaW5n
bHlMaW5rZWRMaXN0LmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9jb25maWcuaCBcCiAJU291
cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyQWN0aXZhdGlvbi5jcHAgXAogCVNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckFjdGl2YXRpb24uaCBcCkBAIC0y
NzAsOCArMjc3LDYgQEAgamF2YXNjcmlwdGNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuaCBcCiAJU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvR0NBY3Rpdml0eUNhbGxiYWNrLmNwcCBcCiAJU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvR0NBY3Rpdml0eUNhbGxiYWNrLmggXAotCVNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0dDSGFuZGxlLmNwcCBcCi0JU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvR0NIYW5kbGUuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2V0dGVyU2V0
dGVyLmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2V0dGVyU2V0dGVyLmgg
XAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dsb2JhbEV2YWxGdW5jdGlvbi5jcHAg
XApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmV4cCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5leHAKaW5kZXggNTY0ZDdkYjMz
MjRmMWM1YTZhMDg5YzgzMzhkMjA5YTQ5ZTczZTZlMi4uNDY0NWFmMzI1YWE2ZTM1YTQ3Nzc1ODBk
MTJhODRjYWM5MzgyMDIxMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLmV4cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
ZXhwCkBAIC05Nyw2ICs5Nyw4IEBAIF9XVEZSZXBvcnRCYWNrdHJhY2UKIF9XVEZSZXBvcnRFcnJv
cgogX1dURlJlcG9ydEZhdGFsRXJyb3IKIF9fWk4xNE9wYXF1ZUpTU3RyaW5nNmNyZWF0ZUVSS04z
SlNDN1VTdHJpbmdFCitfX1pOM0pTQzEwSGFuZGxlSGVhcDEyd3JpdGVCYXJyaWVyRVBOU183SlNW
YWx1ZUVSS1MxXworX19aTjNKU0MxMEhhbmRsZUhlYXA0Z3Jvd0V2CiBfX1pOM0pTQzEwSWRlbnRp
ZmllcjExYWRkU2xvd0Nhc2VFUE5TXzEySlNHbG9iYWxEYXRhRVBOM1dURjEwU3RyaW5nSW1wbEUK
IF9fWk4zSlNDMTBJZGVudGlmaWVyMTFhZGRTbG93Q2FzZUVQTlNfOUV4ZWNTdGF0ZUVQTjNXVEYx
MFN0cmluZ0ltcGxFCiBfX1pOM0pTQzEwSWRlbnRpZmllcjI3Y2hlY2tDdXJyZW50SWRlbnRpZmll
clRhYmxlRVBOU18xMkpTR2xvYmFsRGF0YUUKQEAgLTE0Myw3ICsxNDUsNiBAQCBfX1pOM0pTQzEy
U3RyaW5nT2JqZWN0MjRnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JFUE5TXzlFeGVjU3RhdGVFUktO
U18xMElkZW50aWZpZQogX19aTjNKU0MxMlN0cmluZ09iamVjdDNwdXRFUE5TXzlFeGVjU3RhdGVF
UktOU18xMElkZW50aWZpZXJFTlNfN0pTVmFsdWVFUk5TXzE1UHV0UHJvcGVydHlTbG90RQogX19a
TjNKU0MxMlN0cmluZ09iamVjdDRpbmZvRQogX19aTjNKU0MxMlN0cmluZ09iamVjdEMyRVBOU185
RXhlY1N0YXRlRU4zV1RGMTdOb25OdWxsUGFzc1JlZlB0cklOU185U3RydWN0dXJlRUVFUktOU183
VVN0cmluZ0UKLV9fWk4zSlNDMTJXZWFrR0NIYW5kbGU0cG9vbEV2CiBfX1pOM0pTQzEyanNOdW1i
ZXJDZWxsRVBOU185RXhlY1N0YXRlRWQKIF9fWk4zSlNDMTJub25JbmxpbmVOYU5FdgogX19aTjNK
U0MxM1NhbXBsaW5nRmxhZ3M0c3RvcEV2CkBAIC0xNzMsNyArMTc0LDYgQEAgX19aTjNKU0MxNklu
dGVybmFsRnVuY3Rpb25DMkVQTlNfMTJKU0dsb2JhbERhdGFFUE5TXzE0SlNHbG9iYWxPYmplY3RF
TjNXVEYxN05vbk4KIF9fWk4zSlNDMTZKU1ZhcmlhYmxlT2JqZWN0MTRkZWxldGVQcm9wZXJ0eUVQ
TlNfOUV4ZWNTdGF0ZUVSS05TXzEwSWRlbnRpZmllckUKIF9fWk4zSlNDMTZKU1ZhcmlhYmxlT2Jq
ZWN0MTRzeW1ib2xUYWJsZUdldEVSS05TXzEwSWRlbnRpZmllckVSTlNfMThQcm9wZXJ0eURlc2Ny
aXB0b3JFCiBfX1pOM0pTQzE2SlNWYXJpYWJsZU9iamVjdDE5Z2V0T3duUHJvcGVydHlOYW1lc0VQ
TlNfOUV4ZWNTdGF0ZUVSTlNfMTdQcm9wZXJ0eU5hbWVBcnJheUVOU18xNUVudW1lcmF0aW9uTW9k
ZUUKLV9fWk4zSlNDMTZXZWFrR0NIYW5kbGVQb29sNGZyZWVFUE5TXzEyV2Vha0dDSGFuZGxlRQog
X19aTjNKU0MxNmNyZWF0ZVJhbmdlRXJyb3JFUE5TXzlFeGVjU3RhdGVFUktOU183VVN0cmluZ0UK
IF9fWk4zSlNDMTZ0aHJvd1N5bnRheEVycm9yRVBOU185RXhlY1N0YXRlRQogX19aTjNKU0MxN0J5
dGVjb2RlR2VuZXJhdG9yMjFzZXREdW1wc0dlbmVyYXRlZENvZGVFYgpAQCAtMjA2LDcgKzIwNiw2
IEBAIF9fWk4zSlNDMjRjcmVhdGVTdGFja092ZXJmbG93RXJyb3JFUE5TXzlFeGVjU3RhdGVFCiBf
X1pOM0pTQzI1ZXZhbHVhdGVJbkdsb2JhbENhbGxGcmFtZUVSS05TXzdVU3RyaW5nRVJOU183SlNW
YWx1ZUVQTlNfMTRKU0dsb2JhbE9iamVjdEUKIF9fWk4zSlNDMzVjcmVhdGVJbnRlcnJ1cHRlZEV4
ZWN1dGlvbkV4Y2VwdGlvbkVQTlNfMTJKU0dsb2JhbERhdGFFCiBfX1pOM0pTQzNOYU5FCi1fX1pO
M0pTQzRIZWFwMTVhZGRXZWFrR0NIYW5kbGVFUE5TXzZKU0NlbGxFCiBfX1pOM0pTQzRIZWFwMTZv
YmplY3RUeXBlQ291bnRzRXYKIF9fWk4zSlNDNEhlYXAxN2NvbGxlY3RBbGxHYXJiYWdlRXYKIF9f
Wk4zSlNDNEhlYXAxN2dsb2JhbE9iamVjdENvdW50RXYKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5neXBpIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLmd5cGkKaW5kZXggNzU0ZmQyYjZkZWY1MDg4ZGQ1MGYyYzhjNmJmNmY2YzVj
YWZmMjJlYi4uMmIwOWIwOGIwMWQxOGM2YTg2N2FiYjBkMTUyMzA3M2FiZmM0ZmI2MiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmd5cGkKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmd5cGkKQEAgLTY4LDYgKzY4LDEzIEBA
CiAgICAgICAgICAgICAnYnl0ZWNvbXBpbGVyL0xhYmVsLmgnLAogICAgICAgICAgICAgJ2J5dGVj
b21waWxlci9MYWJlbFNjb3BlLmgnLAogICAgICAgICAgICAgJ2J5dGVjb21waWxlci9SZWdpc3Rl
cklELmgnLAorICAgICAgICAgICAgJ2NvbGxlY3Rvci9oYW5kbGVzL0Jsb2NrU3RhY2suaCcsCisg
ICAgICAgICAgICAnY29sbGVjdG9yL2hhbmRsZXMvR2xvYmFsLmgnLAorICAgICAgICAgICAgJ2Nv
bGxlY3Rvci9oYW5kbGVzL0hhbmRsZS5oJywKKyAgICAgICAgICAgICdjb2xsZWN0b3IvaGFuZGxl
cy9IYW5kbGVIZWFwLmNwcCcsCisgICAgICAgICAgICAnY29sbGVjdG9yL2hhbmRsZXMvSGFuZGxl
SGVhcC5oJywKKyAgICAgICAgICAgICdjb2xsZWN0b3IvaGFuZGxlcy9TZW50aW5lbExpbmtlZExp
c3QuaCcsCisgICAgICAgICAgICAnY29sbGVjdG9yL2hhbmRsZXMvU2luZ2x5TGlua2VkTGlzdC5o
JywKICAgICAgICAgICAgICdjb25maWcuaCcsCiAgICAgICAgICAgICAnZGVidWdnZXIvRGVidWdn
ZXIuY3BwJywKICAgICAgICAgICAgICdkZWJ1Z2dlci9EZWJ1Z2dlci5oJywKQEAgLTIxMyw4ICsy
MjAsNiBAQAogICAgICAgICAgICAgJ3J1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuaCcsCiAgICAg
ICAgICAgICAncnVudGltZS9HQ0FjdGl2aXR5Q2FsbGJhY2suY3BwJywKICAgICAgICAgICAgICdy
dW50aW1lL0dDQWN0aXZpdHlDYWxsYmFjay5oJywKLSAgICAgICAgICAgICdydW50aW1lL0dDSGFu
ZGxlLmNwcCcsCi0gICAgICAgICAgICAncnVudGltZS9HQ0hhbmRsZS5oJywKICAgICAgICAgICAg
ICdydW50aW1lL0dldHRlclNldHRlci5jcHAnLAogICAgICAgICAgICAgJ3J1bnRpbWUvR2V0dGVy
U2V0dGVyLmgnLAogICAgICAgICAgICAgJ3J1bnRpbWUvR2xvYmFsRXZhbEZ1bmN0aW9uLmNwcCcs
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUucHJvIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnBybwppbmRleCAxYjVlMjhhY2M0
OGZiNGE2OGFhM2FmMzY3OGNjMTI3MDdkNmNiOTQzLi4xNjAwZjI5NGZjYTRjYzRiNjEyMDA3NTcz
MWNlMDVmZDJiZWFiZDY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUucHJvCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5w
cm8KQEAgLTk0LDYgKzk0LDcgQEAgU09VUkNFUyArPSBcCiAgICAgZGVidWdnZXIvRGVidWdnZXJB
Y3RpdmF0aW9uLmNwcCBcCiAgICAgZGVidWdnZXIvRGVidWdnZXJDYWxsRnJhbWUuY3BwIFwKICAg
ICBkZWJ1Z2dlci9EZWJ1Z2dlci5jcHAgXAorICAgIGNvbGxlY3Rvci9oYW5kbGVzL0hhbmRsZUhl
YXAuY3BwIFwKICAgICBpbnRlcnByZXRlci9DYWxsRnJhbWUuY3BwIFwKICAgICBpbnRlcnByZXRl
ci9JbnRlcnByZXRlci5jcHAgXAogICAgIGludGVycHJldGVyL1JlZ2lzdGVyRmlsZS5jcHAgXApA
QCAtMTQ3LDcgKzE0OCw2IEBAIFNPVVJDRVMgKz0gXAogICAgIHJ1bnRpbWUvRnVuY3Rpb25Db25z
dHJ1Y3Rvci5jcHAgXAogICAgIHJ1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuY3BwIFwKICAgICBy
dW50aW1lL0dDQWN0aXZpdHlDYWxsYmFjay5jcHAgXAotICAgIHJ1bnRpbWUvR0NIYW5kbGUuY3Bw
IFwKICAgICBydW50aW1lL0dldHRlclNldHRlci5jcHAgXAogICAgIHJ1bnRpbWUvR2xvYmFsRXZh
bEZ1bmN0aW9uLmNwcCBcCiAgICAgcnVudGltZS9JZGVudGlmaWVyLmNwcCBcCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLmRlZiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZGVmCmluZGV4IDAxMGRi
MzlkNDhhZGFjYWEyMGJlOGVjZmQwNWQ4M2VkYmQzMmVjMDQuLjM0ZDk0ZmRhZTMxODZiNTRiN2I2
Y2QwODAxNGMwNDQyZTFkNDI0NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZGVmCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUuZGVmCkBAIC01Miw3ICs1Miw2IEBAIEVYUE9SVFMKICAgICA/
YWRkUHJvcGVydHlUcmFuc2l0aW9uVG9FeGlzdGluZ1N0cnVjdHVyZUBTdHJ1Y3R1cmVASlNDQEBT
QT9BVj8kUGFzc1JlZlB0ckBWU3RydWN0dXJlQEpTQ0BAQFdURkBAUEFWMTJAQUJWSWRlbnRpZmll
ckAyQElQQVZKU0NlbGxAMkBBQUlAWgogICAgID9hZGRQcm9wZXJ0eVdpdGhvdXRUcmFuc2l0aW9u
QFN0cnVjdHVyZUBKU0NAQFFBRUlBQlZJZGVudGlmaWVyQDJASVBBVkpTQ2VsbEAyQEBaCiAgICAg
P2FkZFNsb3dDYXNlQElkZW50aWZpZXJASlNDQEBDQT9BVj8kUGFzc1JlZlB0ckBWU3RyaW5nSW1w
bEBXVEZAQEBXVEZAQFBBVkV4ZWNTdGF0ZUAyQFBBVlN0cmluZ0ltcGxANEBAWgotICAgID9hZGRX
ZWFrR0NIYW5kbGVASGVhcEBKU0NAQFFBRVBBVldlYWtHQ0hhbmRsZUAyQFBBVkpTQ2VsbEAyQEBa
CiAgICAgP2FsbG9jYXRlQEhlYXBASlNDQEBRQUVQQVhJQFoKICAgICA/YWxsb2NhdGVQcm9wZXJ0
eVN0b3JhZ2VASlNPYmplY3RASlNDQEBRQUVYSUlAWgogICAgID9hbGxvY2F0ZVN0YWNrQE1hcmtT
dGFja0BKU0NAQENBUEFYSUBaCkBAIC0xNjQsNyArMTYzLDYgQEAgRVhQT1JUUwogICAgID9mYXN0
WmVyb2VkTWFsbG9jQFdURkBAWUFQQVhJQFoKICAgICA/ZmlsbEdldHRlclByb3BlcnR5U2xvdEBK
U09iamVjdEBKU0NAQFFBRVhBQVZQcm9wZXJ0eVNsb3RAMkBQQVY/JFdyaXRlQmFycmllckJhc2VA
VzRVbmtub3duQEpTQ0BAQDJAQFoKICAgICA/Zm9jdXNAUHJvZmlsZUBKU0NAQFFBRVhQQlZQcm9m
aWxlTm9kZUAyQEBaCi0gICAgP2ZyZWVAV2Vha0dDSGFuZGxlUG9vbEBKU0NAQFFBRVhQQVZXZWFr
R0NIYW5kbGVAMkBAWgogICAgID9mcm9tQElkZW50aWZpZXJASlNDQEBTQT9BVjEyQFBBVkV4ZWNT
dGF0ZUAyQEhAWgogICAgID9mcm9tQElkZW50aWZpZXJASlNDQEBTQT9BVjEyQFBBVkV4ZWNTdGF0
ZUAyQElAWgogICAgID9mdW5jdGlvbkdldHRlckBQcm9wZXJ0eVNsb3RASlNDQEBBQkU/QVZKU1Zh
bHVlQDJAUEFWRXhlY1N0YXRlQDJAQFoKQEAgLTIwMSw2ICsxOTksNyBAQCBFWFBPUlRTCiAgICAg
P2dsb2JhbEV4ZWNASlNHbG9iYWxPYmplY3RASlNDQEBVQUVQQVZFeGVjU3RhdGVAMkBYWgogICAg
ID9nbG9iYWxPYmplY3RASlNPYmplY3RXaXRoR2xvYmFsT2JqZWN0QEpTQ0BAUUJFUEFWSlNHbG9i
YWxPYmplY3RAMkBYWgogICAgID9nbG9iYWxPYmplY3RDb3VudEBIZWFwQEpTQ0BAUUFFSVhaCisg
ICAgP2dyb3dASGFuZGxlSGVhcEBKU0NAQEFBRVhYWgogICAgID9oYXNJbnN0YW5jZUBKU09iamVj
dEBKU0NAQFVBRV9OUEFWRXhlY1N0YXRlQDJAVkpTVmFsdWVAMkAxQFoKICAgICA/aGFzUHJvcGVy
dHlASlNPYmplY3RASlNDQEBRQkVfTlBBVkV4ZWNTdGF0ZUAyQEFCVklkZW50aWZpZXJAMkBAWgog
ICAgID9oYXNQcm9wZXJ0eUBKU09iamVjdEBKU0NAQFFCRV9OUEFWRXhlY1N0YXRlQDJASUBaCkBA
IC0yNDksNyArMjQ4LDYgQEAgRVhQT1JUUwogICAgID9vYmplY3RDb3VudEBIZWFwQEpTQ0BAUUJF
SVhaCiAgICAgP29iamVjdFByb3RvRnVuY1RvU3RyaW5nQEpTQ0BAWUlfSlBBVkV4ZWNTdGF0ZUAx
QEBaCiAgICAgP3BhcnNlRGF0ZUZyb21OdWxsVGVybWluYXRlZENoYXJhY3RlcnNAV1RGQEBZQU5Q
QkRAWgotICAgID9wb29sQFdlYWtHQ0hhbmRsZUBKU0NAQFFBRVBBVldlYWtHQ0hhbmRsZVBvb2xA
MkBYWgogICAgID9wcm9maWxlckBQcm9maWxlckBKU0NAQFNBUEFWMTJAWFoKICAgICA/cHJvdGVj
dEBIZWFwQEpTQ0BAUUFFWFZKU1ZhbHVlQDJAQFoKICAgICA/cHJvdGVjdGVkR2xvYmFsT2JqZWN0
Q291bnRASGVhcEBKU0NAQFFBRUlYWgpAQCAtMzYwLDYgKzM1OCw3IEBAIEVYUE9SVFMKICAgICA/
d2FpdEBUaHJlYWRDb25kaXRpb25AV1RGQEBRQUVYQUFWTXV0ZXhAMkBAWgogICAgID93YWl0Rm9y
VGhyZWFkQ29tcGxldGlvbkBXVEZAQFlBSElQQVBBWEBaCiAgICAgP3dyaXRhYmxlQFByb3BlcnR5
RGVzY3JpcHRvckBKU0NAQFFCRV9OWFoKKyAgICA/d3JpdGVCYXJyaWVyQEhhbmRsZUhlYXBASlND
QEBRQUVYUEFWSlNWYWx1ZUAyQEFCVjMyQEBaCiAgICAgP3lpZWxkQFdURkBAWUFYWFoKICAgICBX
VEZMb2cKICAgICBXVEZMb2dWZXJib3NlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZj
cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qCmluZGV4IDI2MDc3OWVmYTkyM2QzYzg1NWE1
OWZmNTE0MDMwNDFjMGM2NTVhMzAuLmQ0OTgxYmYyYTJmNWRlMDg3NmVhNTdkNmM2M2NkMjhkNjFl
NzExNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52
Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUudmNwcm9qCkBAIC0xOTc0LDYgKzE5NzQsNDIgQEAKIAkJCQk+CiAJCQk8L0ZpbGU+
CiAJCTwvRmlsdGVyPgorCQk8RmlsdGVyCisJCQlOYW1lPSJjb2xsZWN0b3IiCisJCQk+CisJCQk8
RmlsdGVyCisJCQkJTmFtZT0iaGFuZGxlcyIKKwkJCQk+CisJCQkJPEZpbGUKKwkJCQkJUmVsYXRp
dmVQYXRoPSIuLlwuLlxjb2xsZWN0b3JcaGFuZGxlc1xCbG9ja1N0YWNrLmgiCisJCQkJCT4KKwkJ
CQk8L0ZpbGU+CisJCQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxjb2xsZWN0b3Jc
aGFuZGxlc1xHbG9iYWwuaCIKKwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQorCQkJCQlS
ZWxhdGl2ZVBhdGg9Ii4uXC4uXGNvbGxlY3RvclxoYW5kbGVzXEhhbmRsZS5oIgorCQkJCQk+CisJ
CQkJPC9GaWxlPgorCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cY29sbGVjdG9y
XGhhbmRsZXNcSGFuZGxlSGVhcC5jcHAiCisJCQkJCT4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUK
KwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxjb2xsZWN0b3JcaGFuZGxlc1xIYW5kbGVIZWFwLmgi
CisJCQkJCT4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwu
Llxjb2xsZWN0b3JcaGFuZGxlc1xTZW50aW5lbExpbmtlZExpc3QuaCIKKwkJCQkJPgorCQkJCTwv
RmlsZT4KKwkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXGNvbGxlY3RvclxoYW5k
bGVzXFNpbmdseUxpbmtlZExpc3QuaCIKKwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJCTwvRmlsdGVy
PgorCQk8L0ZpbHRlcj4KIAkJPEZpbGUKIAkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cY29uZmlnLmgi
CiAJCQk+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
dmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlQ29tbW9uLnZzcHJvcHMgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlQ29tbW9uLnZzcHJvcHMKaW5kZXggNGE3ZjRkM2Y3NTY2MzFmMDBjZjMzNmM3
NjFjODcxMDhkYmNiNzhmNS4uY2I3MzYyZDdlNzczMDQyYmM0ODJmZmE2MDFlYzIwMzkzZmQ5Nzcw
MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJv
ai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZUNvbW1vbi52c3Byb3BzCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmVDb21tb24udnNwcm9wcwpAQCAtNiw3ICs2LDcgQEAKIAk+CiAJPFRvb2wKIAkJ
TmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKLQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0i
JnF1b3Q7JChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9ialxKYXZhU2NyaXB0Q29yZVxEZXJpdmVk
U291cmNlc1wmcXVvdDs7Li4vLi4vOy4uLy4uL0FQSS87Li4vLi4vcGFyc2VyLzsuLi8uLi9ieXRl
Y29tcGlsZXIvOy4uLy4uL2ppdC87Li4vLi4vcnVudGltZS87Li4vLi4vYnl0ZWNvZGUvOy4uLy4u
L2ludGVycHJldGVyLzsuLi8uLi93dGYvOy4uLy4uL3Byb2ZpbGVyOy4uLy4uL2Fzc2VtYmxlci87
Li4vLi4vZGVidWdnZXIvOyZxdW90OyQoV2ViS2l0TGlicmFyaWVzRGlyKVxpbmNsdWRlJnF1b3Q7
OyZxdW90OyQoV2ViS2l0TGlicmFyaWVzRGlyKVxpbmNsdWRlXHByaXZhdGUmcXVvdDs7JnF1b3Q7
JChDb25maWd1cmF0aW9uQnVpbGREaXIpXGluY2x1ZGUmcXVvdDs7JnF1b3Q7JChDb25maWd1cmF0
aW9uQnVpbGREaXIpXGluY2x1ZGVcSmF2YVNjcmlwdENvcmUmcXVvdDs7JnF1b3Q7JChDb25maWd1
cmF0aW9uQnVpbGREaXIpXGluY2x1ZGVccHJpdmF0ZSZxdW90OzsmcXVvdDskKFdlYktpdExpYnJh
cmllc0RpcilcaW5jbHVkZVxwdGhyZWFkcyZxdW90OyIKKwkJQWRkaXRpb25hbEluY2x1ZGVEaXJl
Y3Rvcmllcz0iJnF1b3Q7JChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9ialxKYXZhU2NyaXB0Q29y
ZVxEZXJpdmVkU291cmNlc1wmcXVvdDs7Li4vLi4vOy4uLy4uL0FQSS87Li4vLi4vcGFyc2VyLzsu
Li8uLi9ieXRlY29tcGlsZXIvOy4uLy4uL2ppdC87Li4vLi4vcnVudGltZS87Li4vLi4vYnl0ZWNv
ZGUvOy4uLy4uL2ludGVycHJldGVyLzsuLi8uLi93dGYvOy4uLy4uL3Byb2ZpbGVyOy4uLy4uL2Fz
c2VtYmxlci87Li4vLi4vZGVidWdnZXIvOy4uLy4uL2NvbGxlY3Rvci9oYW5kbGVzLzsmcXVvdDsk
KFdlYktpdExpYnJhcmllc0RpcilcaW5jbHVkZSZxdW90OzsmcXVvdDskKFdlYktpdExpYnJhcmll
c0RpcilcaW5jbHVkZVxwcml2YXRlJnF1b3Q7OyZxdW90OyQoQ29uZmlndXJhdGlvbkJ1aWxkRGly
KVxpbmNsdWRlJnF1b3Q7OyZxdW90OyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxpbmNsdWRlXEph
dmFTY3JpcHRDb3JlJnF1b3Q7OyZxdW90OyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxpbmNsdWRl
XHByaXZhdGUmcXVvdDs7JnF1b3Q7JChXZWJLaXRMaWJyYXJpZXNEaXIpXGluY2x1ZGVccHRocmVh
ZHMmcXVvdDsiCiAJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfX1NURF9DIgogCQlGb3JjZWRJ
bmNsdWRlRmlsZXM9IklDVVZlcnNpb24uaCIKIAkvPgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZUdlbmVyYXRlZC5tYWtlIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
LnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZUdlbmVyYXRlZC5tYWtlCmluZGV4
IDMxNGE3OTQxZTczZGZkNTc0MzVjNTgyZWNlZjdhZTUwYWYwMzFlMGUuLmRiMmExNzVhMDAwOTBm
NGQ1ZTBlZThhMjBmOGRiMzBhMGM3MmI1ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmVH
ZW5lcmF0ZWQubWFrZQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
dmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlR2VuZXJhdGVkLm1ha2UKQEAgLTM2
LDYgKzM2LDcgQEAgYWxsOgogICAgIHhjb3B5IC95IC9kICIuLlwuLlxpbnRlcnByZXRlclwqLmgi
ICIlQ29uZmlndXJhdGlvbkJ1aWxkRGlyJVxpbmNsdWRlXHByaXZhdGVcSmF2YVNjcmlwdENvcmUi
CiAgICAgeGNvcHkgL3kgL2QgIi4uXC4uXGFzc2VtYmxlclwqLmgiICIlQ29uZmlndXJhdGlvbkJ1
aWxkRGlyJVxpbmNsdWRlXHByaXZhdGVcSmF2YVNjcmlwdENvcmUiCiAgICAgeGNvcHkgL3kgL2Qg
Ii4uXC4uXGppdFwqLmgiICIlQ29uZmlndXJhdGlvbkJ1aWxkRGlyJVxpbmNsdWRlXHByaXZhdGVc
SmF2YVNjcmlwdENvcmUiCisgICAgeGNvcHkgL3kgL2QgIi4uXC4uXGNvbGxlY3RvclxoYW5kbGVz
XCouaCIgIiVDb25maWd1cmF0aW9uQnVpbGREaXIlXGluY2x1ZGVccHJpdmF0ZVxKYXZhU2NyaXB0
Q29yZSIKICAgICB4Y29weSAveSAvZCAiLi5cLi5cZGVidWdnZXJcKi5oIiAiJUNvbmZpZ3VyYXRp
b25CdWlsZERpciVcaW5jbHVkZVxwcml2YXRlXEphdmFTY3JpcHRDb3JlIgogICAgIHhjb3B5IC95
IC9kICIuLlwuLlxwcm9maWxlclwqLmgiICIlQ29uZmlndXJhdGlvbkJ1aWxkRGlyJVxpbmNsdWRl
XHByaXZhdGVcSmF2YVNjcmlwdENvcmUiCiAgICAgeGNvcHkgL3kgL2QgIi4uXC4uXGNyZWF0ZV9o
YXNoX3RhYmxlIiAiJUNvbmZpZ3VyYXRpb25CdWlsZERpciVcaW5jbHVkZVxwcml2YXRlXEphdmFT
Y3JpcHRDb3JlIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLnZjcHJvai9qc2MvanNjQ29tbW9uLnZzcHJvcHMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUudmNwcm9qL2pzYy9qc2NDb21tb24udnNwcm9wcwppbmRleCAzZTMyOWMz
NWE4YmI0MDRhODFlZjY5ZWNkOWQ2NDA5MjU4YWUxNzAwLi42MDRhNjZlZWZhN2M5OTFiZDE3Y2Fl
ZWQ0YjAxY2I2ZmZmNzNjMzdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUudmNwcm9qL2pzYy9qc2NDb21tb24udnNwcm9wcworKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL2pzYy9qc2NDb21tb24udnNwcm9wcwpA
QCAtNiw3ICs2LDcgQEAKIAk+CiAJPFRvb2wKIAkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKLQkJ
QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJnF1b3Q7JChDb25maWd1cmF0aW9uQnVpbGRE
aXIpXGluY2x1ZGUmcXVvdDs7JnF1b3Q7JChDb25maWd1cmF0aW9uQnVpbGREaXIpXGluY2x1ZGVc
cHJpdmF0ZSZxdW90OzsmcXVvdDskKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqXEphdmFTY3Jp
cHRDb3JlXERlcml2ZWRTb3VyY2VzXCZxdW90OzsuLi8uLi87JnF1b3Q7Li4vLi4vb3Mtd2luMzIv
JnF1b3Q7Oy4uLy4uL2Fzc2VtYmxlci87Li4vLi4vQVBJLzsuLi8uLi9wYXJzZXIvOy4uLy4uL3J1
bnRpbWUvOy4uLy4uL1ZNLzsuLi8uLi9ieXRlY29kZS87Li4vLi4vaW50ZXJwcmV0ZXIvOy4uLy4u
L3d0Zi87Li4vLi4vZGVidWdnZXIvOy4uLy4uL2J5dGVjb21waWxlci87Li4vLi4vcHJvZmlsZXI7
Li4vLi4vaml0LzsmcXVvdDskKFdlYktpdExpYnJhcmllc0RpcilcaW5jbHVkZVxwdGhyZWFkcyZx
dW90OzsmcXVvdDskKFdlYktpdExpYnJhcmllc0RpcilcaW5jbHVkZSZxdW90OyIKKwkJQWRkaXRp
b25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJnF1b3Q7JChDb25maWd1cmF0aW9uQnVpbGREaXIpXGlu
Y2x1ZGUmcXVvdDs7JnF1b3Q7JChDb25maWd1cmF0aW9uQnVpbGREaXIpXGluY2x1ZGVccHJpdmF0
ZSZxdW90OzsmcXVvdDskKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqXEphdmFTY3JpcHRDb3Jl
XERlcml2ZWRTb3VyY2VzXCZxdW90OzsuLi8uLi87JnF1b3Q7Li4vLi4vb3Mtd2luMzIvJnF1b3Q7
Oy4uLy4uL2Fzc2VtYmxlci87Li4vLi4vQVBJLzsuLi8uLi9wYXJzZXIvOy4uLy4uL2NvbGxlY3Rv
ci9oYW5kbGVzLzsuLi8uLi9ydW50aW1lLzsuLi8uLi9WTS87Li4vLi4vYnl0ZWNvZGUvOy4uLy4u
L2ludGVycHJldGVyLzsuLi8uLi93dGYvOy4uLy4uL2RlYnVnZ2VyLzsuLi8uLi9ieXRlY29tcGls
ZXIvOy4uLy4uL3Byb2ZpbGVyOy4uLy4uL2ppdC87JnF1b3Q7JChXZWJLaXRMaWJyYXJpZXNEaXIp
XGluY2x1ZGVccHRocmVhZHMmcXVvdDs7JnF1b3Q7JChXZWJLaXRMaWJyYXJpZXNEaXIpXGluY2x1
ZGUmcXVvdDsiCiAJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfX1NURF9DIgogCQlGb3JjZWRJ
bmNsdWRlRmlsZXM9IklDVVZlcnNpb24uaCIKIAkJRm9yY2VkVXNpbmdGaWxlcz0iIgpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA3NGUzYjQzOGE3YjAxMzQwMTgyNDQ2ZDNlMGZhOWRj
MGY0NjI1NDVlLi4xMzE2ZjAwZDZlMWYzNTU1OGJiZWRhMmE3MDc2OTEzNTZlZmU1NGUzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTc2LDcgKzE3Niw2IEBACiAJCTE0QkQ1QTMy
MEEzRTkxRjYwMEJBRjU5QyAvKiBKU1ZhbHVlUmVmLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0QkQ1QTJCMEEzRTkxRjYwMEJBRjU5QyAvKiBKU1Zh
bHVlUmVmLmNwcCAqLzsgfTsKIAkJMTRCRkNFNjkxMENEQjFGQzAwMzY0Q0NFIC8qIFdlYWtHQ01h
cC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTRCRkNF
NjgxMENEQjFGQzAwMzY0Q0NFIC8qIFdlYWtHQ01hcC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTE0QzUyNDJCMEY1MzU1RTkwMEJBM0QwNCAvKiBK
SVRTdHVicy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MTRBNjU4MUEwRjRFMzZGNDAwMDE1MEZEIC8qIEpJVFN0dWJzLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJMTRDODI0QUIxMkY3Qzc3RTAwOEYzNUUw
IC8qIE1hcmtlZEJsb2NrLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDE0QzgyNEFBMTJGN0M3N0UwMDhGMzVFMCAvKiBNYXJrZWRCbG9jay5jcHAgKi87
IH07CiAJCTE0QzgyNEFEMTJGN0M3ODUwMDhGMzVFMCAvKiBNYXJrZWRCbG9jay5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTRDODI0QUMxMkY3Qzc4NTAw
OEYzNUUwIC8qIE1hcmtlZEJsb2NrLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJMTRFOUQxN0IxMDdFQzQ2OTAwNEREQTIxIC8qIEpTR2xvYmFsT2Jq
ZWN0RnVuY3Rpb25zLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEJDNzU2RkM2MEUyMDMxQjIwMERFN0QxMiAvKiBKU0dsb2JhbE9iamVjdEZ1bmN0aW9u
cy5jcHAgKi87IH07CiAJCTE0RjhCQTNFMTA3RUM4ODYwMDk4OTJEQyAvKiBGYXN0TWFsbG9jLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1RTIxN0I5
MDhFN0VFQ0MwMDIzRTVGNiAvKiBGYXN0TWFsbG9jLmNwcCAqLzsgfTsKQEAgLTI4Nyw3ICsyODYs
NiBAQAogCQk5MzA1MkMzNDBGQjc5MjE5MDA0OEZEQzMgLyogUGFyc2VyQXJlbmEuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTMwNTJDMzIwRkI3OTIx
OTAwNDhGREMzIC8qIFBhcnNlckFyZW5hLmNwcCAqLzsgfTsKIAkJOTMwNTJDMzUwRkI3OTIxOTAw
NDhGREMzIC8qIFBhcnNlckFyZW5hLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA5MzA1MkMzMzBGQjc5MjE5MDA0OEZEQzMgLyogUGFyc2VyQXJlbmEuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9ICgpOyB9OyB9OwogCQk5MzJGNUJEMzA4MjJBMUM3
MDA3MzY5NzUgLyogQ29yZUZvdW5kYXRpb24uZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjU2MEE0Q0YwNEIzQjNFNzAwOEFFOTUyIC8q
IENvcmVGb3VuZGF0aW9uLmZyYW1ld29yayAqLzsgfTsKLQkJOTMyRjVCRDUwODIyQTFDNzAwNzM2
OTc1IC8qIEZvdW5kYXRpb24uZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTFGMEVCNjEwNUM4NkM2QjAwRTZERjFCIC8qIEZvdW5kYXRp
b24uZnJhbWV3b3JrICovOyB9OwogCQk5MzJGNUJENjA4MjJBMUM3MDA3MzY5NzUgLyogbGlib2Jq
Yy5keWxpYiBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDUxRjBFQzA3MDVDODZDOUEwMEU2REYxQiAvKiBsaWJvYmpjLmR5bGliICovOyB9OwogCQk5MzJG
NUJENzA4MjJBMUM3MDA3MzY5NzUgLyogbGliaWN1Y29yZS5keWxpYiBpbiBGcmFtZXdvcmtzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzMjJBMDAzMDZDMzQxRDMwMDkwNjdC
QiAvKiBsaWJpY3Vjb3JlLmR5bGliICovOyB9OwogCQk5MzJGNUJERDA4MjJBMUM3MDA3MzY5NzUg
LyoganNjLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDQ1RTEyRDg4MDZBNDlCMEYwMEU5REY4NCAvKiBqc2MuY3BwICovOyB9OwpAQCAtMzQ2LDYgKzM0
NCw3IEBACiAJCUE3MjgwQTI4MTE1NTdFMzAwMEQ1Njk1NyAvKiBKU09iamVjdFJlZlByaXZhdGUu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3OUVEQjA4
MTE1MzFDRDYwMDE5RTkxMiAvKiBKU09iamVjdFJlZlByaXZhdGUuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBNzMwQjYxMjEyNTAwNjhGMDA5RDI1
QjEgLyogU3RyaWN0RXZhbEFjdGl2YXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEE3MzBCNjEwMTI1MDA2OEYwMDlEMjVCMSAvKiBTdHJpY3RFdmFs
QWN0aXZhdGlvbi5oICovOyB9OwogCQlBNzMwQjYxMzEyNTAwNjhGMDA5RDI1QjEgLyogU3RyaWN0
RXZhbEFjdGl2YXRpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQTczMEI2MTExMjUwMDY4RjAwOUQyNUIxIC8qIFN0cmljdEV2YWxBY3RpdmF0aW9u
LmNwcCAqLzsgfTsKKwkJQTczMUIyNUExMzAwOTM4ODAwNDBBN0ZBIC8qIEZvdW5kYXRpb24uZnJh
bWV3b3JrIGluIEZyYW1ld29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTFGMEVCNjEwNUM4NkM2QjAwRTZERjFCIC8qIEZvdW5kYXRpb24uZnJhbWV3b3JrICovOyB9Owog
CQlBNzM4NjU1NDExODY5N0I0MDA1NDAyNzkgLyogU3BlY2lhbGl6ZWRUaHVua0pJVC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTczODY1NTExMTg2OTdC
NDAwNTQwMjc5IC8qIFNwZWNpYWxpemVkVGh1bmtKSVQuaCAqLzsgfTsKIAkJQTczODY1NTUxMTg2
OTdCNDAwNTQwMjc5IC8qIFRodW5rR2VuZXJhdG9ycy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzM4NjU1MjExODY5N0I0MDA1NDAyNzkgLyogVGh1
bmtHZW5lcmF0b3JzLmNwcCAqLzsgfTsKIAkJQTczODY1NTYxMTg2OTdCNDAwNTQwMjc5IC8qIFRo
dW5rR2VuZXJhdG9ycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQTczODY1NTMxMTg2OTdCNDAwNTQwMjc5IC8qIFRodW5rR2VuZXJhdG9ycy5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0zNjksNiArMzY4
LDcgQEAKIAkJQTc5MUVGMjkwRjExRTA3OTAwQUUxRjY4IC8qIEpTQnl0ZUFycmF5LmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3OTFFRjI3MEYxMUUw
NzkwMEFFMUY2OCAvKiBKU0J5dGVBcnJheS5jcHAgKi87IH07CiAJCUE3QTFGN0FDMEYyNTJCM0Mw
MEUxODRFMiAvKiBCeXRlQXJyYXkuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQTdBMUY3QUEwRjI1MkIzQzAwRTE4NEUyIC8qIEJ5dGVBcnJheS5jcHAg
Ki87IH07CiAJCUE3QTFGN0FEMEYyNTJCM0MwMEUxODRFMiAvKiBCeXRlQXJyYXkuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3QTFGN0FCMEYyNTJCM0Mw
MEUxODRFMiAvKiBCeXRlQXJyYXkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OworCQlBN0FDMjVCRDEzMDREMTQ2MDAzMzk2REUgLyogTWFya2VkQmxvY2su
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTRDODI0
QUExMkY3Qzc3RTAwOEYzNUUwIC8qIE1hcmtlZEJsb2NrLmNwcCAqLzsgfTsKIAkJQTdCNDhGNDkw
RUU4OTM2RjAwRENCREI2IC8qIEV4ZWN1dGFibGVBbGxvY2F0b3IuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdCNDhEQjYwRUU3NENGQzAwRENCREI2
IC8qIEV4ZWN1dGFibGVBbGxvY2F0b3IuY3BwICovOyB9OwogCQlBN0MxRThFNDExMkU3MkVGMDBB
MzdGOTggLyogSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBN0MxRThDODExMkU3MDFDMDBBMzdGOTggLyogSklU
UHJvcGVydHlBY2Nlc3MzMl82NC5jcHAgKi87IH07CiAJCUE3QzUzMEU0MTAyQTM4MTMwMDVCQzc0
MSAvKiBNYXJrU3RhY2tQb3NpeC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBBN0M1MzBFMzEwMkEzODEzMDA1QkM3NDEgLyogTWFya1N0YWNrUG9zaXgu
Y3BwICovOyB9OwpAQCAtMzc2LDYgKzM3NiwxMyBAQAogCQlBN0RDQjk3MzEyRTUxOTNGMDA5MTE5
NDAgLyogV3JpdGVCYXJyaWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBBN0RDQjc3OTEyRTNEOTA1MDA5MTE5NDAgLyogV3JpdGVCYXJyaWVyLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTdFMkVBNkIw
RkI0NjBDRjAwNjAxRjA2IC8qIExpdGVyYWxQYXJzZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3RTJFQTY5MEZCNDYwQ0YwMDYwMUYwNiAvKiBMaXRl
cmFsUGFyc2VyLmggKi87IH07CiAJCUE3RTJFQTZDMEZCNDYwQ0YwMDYwMUYwNiAvKiBMaXRlcmFs
UGFyc2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEE3RTJFQTZBMEZCNDYwQ0YwMDYwMUYwNiAvKiBMaXRlcmFsUGFyc2VyLmNwcCAqLzsgfTsKKwkJ
QTdFNEZDOEUxMkY4RTRDQTAwQUY0Q0Y0IC8qIEJsb2NrU3RhY2suaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3RTRGQzg2MTJGOEU0Q0EwMEFGNENGNCAv
KiBCbG9ja1N0YWNrLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKKwkJQTdFNEZDOEYxMkY4RTRDQTAwQUY0Q0Y0IC8qIEdsb2JhbC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdFNEZDODcxMkY4RTRDQTAwQUY0
Q0Y0IC8qIEdsb2JhbC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CisJCUE3RTRGQzkwMTJGOEU0Q0EwMEFGNENGNCAvKiBIYW5kbGUuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3RTRGQzg4MTJGOEU0Q0EwMEFG
NENGNCAvKiBIYW5kbGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OworCQlBN0U0RkM5MTEyRjhFNENBMDBBRjRDRjQgLyogSGFuZGxlSGVhcC5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBN0U0RkM4OTEyRjhF
NENBMDBBRjRDRjQgLyogSGFuZGxlSGVhcC5jcHAgKi87IH07CisJCUE3RTRGQzkyMTJGOEU0Q0Ew
MEFGNENGNCAvKiBIYW5kbGVIZWFwLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBBN0U0RkM4QTEyRjhFNENBMDBBRjRDRjQgLyogSGFuZGxlSGVhcC5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUE3RTRGQzk0
MTJGOEU0Q0EwMEFGNENGNCAvKiBTZW50aW5lbExpbmtlZExpc3QuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3RTRGQzhDMTJGOEU0Q0EwMEFGNENGNCAv
KiBTZW50aW5lbExpbmtlZExpc3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OworCQlBN0U0RkM5NTEyRjhFNENBMDBBRjRDRjQgLyogU2luZ2x5TGlua2Vk
TGlzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdF
NEZDOEQxMkY4RTRDQTAwQUY0Q0Y0IC8qIFNpbmdseUxpbmtlZExpc3QuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBN0YxOUVDRTExREQ0OTA5MDA5
MzFFNzAgLyogRml4ZWRBcnJheS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQTdGMTlFQ0QxMURENDkwOTAwOTMxRTcwIC8qIEZpeGVkQXJyYXkuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBN0Y5OTM1RjBG
RDczMjUxMDBBMEIyRDAgLyogSlNPTk9iamVjdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQTdGOTkzNUQwRkQ3MzI1MTAwQTBCMkQwIC8qIEpTT05PYmpl
Y3QuaCAqLzsgfTsKIAkJQTdGOTkzNjAwRkQ3MzI1MTAwQTBCMkQwIC8qIEpTT05PYmplY3QuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdGOTkzNUUw
RkQ3MzI1MTAwQTBCMkQwIC8qIEpTT05PYmplY3QuY3BwICovOyB9OwpAQCAtNTUxLDEyICs1NTgs
NiBAQAogCQlCQ0ZEOEM5MzBFRUIyRUU3MDAyODM4NDggLyogSnVtcFRhYmxlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0ZEOEM5MTBFRUIyRUU3MDAy
ODM4NDggLyogSnVtcFRhYmxlLmggKi87IH07CiAJCUMwQTI3MjYzMEU1MEEwNjMwMEU5NkUxNSAv
KiBOb3RGb3VuZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQzBBMjcyM0YwRTUwOUYxRTAwRTk2RTE1IC8qIE5vdEZvdW5kLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJREQzNzdDQkMxMjA3MkMxODAwNkEy
NTE3IC8qIEJpdG1hcC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gREQzNzdDQkIxMjA3MkMxODAwNkEyNTE3IC8qIEJpdG1hcC5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCURERTgyQUQzMTIwOUQ5NTUwMDVD
MTc1NiAvKiBHQ0hhbmRsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBEREU4MkFEMTEyMDlEOTU1MDA1QzE3NTYgLyogR0NIYW5kbGUuY3BwICovOyB9
OwotCQlEREU4MkFENDEyMDlEOTU1MDA1QzE3NTYgLyogR0NIYW5kbGUuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRERFODJBRDExMjA5RDk1NTAwNUMx
NzU2IC8qIEdDSGFuZGxlLmNwcCAqLzsgfTsKLQkJRERFODJBRDUxMjA5RDk1NTAwNUMxNzU2IC8q
IEdDSGFuZGxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IERERTgyQUQxMTIwOUQ5NTUwMDVDMTc1NiAvKiBHQ0hhbmRsZS5jcHAgKi87IH07Ci0JCURE
RTgyQUQ2MTIwOUQ5NTUwMDVDMTc1NiAvKiBHQ0hhbmRsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRERFODJBRDIxMjA5RDk1NTAwNUMxNzU2IC8qIEdD
SGFuZGxlLmggKi87IH07Ci0JCURERTgyQUQ3MTIwOUQ5NTUwMDVDMTc1NiAvKiBHQ0hhbmRsZS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBEREU4MkFE
MTEyMDlEOTU1MDA1QzE3NTYgLyogR0NIYW5kbGUuY3BwICovOyB9OwotCQlEREU4MkFEODEyMDlE
OTU1MDA1QzE3NTYgLyogR0NIYW5kbGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IERERTgyQUQyMTIwOUQ5NTUwMDVDMTc1NiAvKiBHQ0hhbmRsZS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCURERjdBQkQ0
MTFGNjBFRDIwMDEwOEUzNiAvKiBHQ0FjdGl2aXR5Q2FsbGJhY2suaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERERjdBQkQyMTFGNjBFRDIwMDEwOEUzNiAv
KiBHQ0FjdGl2aXR5Q2FsbGJhY2suaCAqLzsgfTsKIAkJRERGN0FCRDUxMUY2MEVEMjAwMTA4RTM2
IC8qIEdDQWN0aXZpdHlDYWxsYmFja0NGLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IERERjdBQkQzMTFGNjBFRDIwMDEwOEUzNiAvKiBHQ0FjdGl2aXR5
Q2FsbGJhY2tDRi5jcHAgKi87IH07CiAJCUUxMjRBOEY3MEU1NTU3NzUwMDMwOTFGMSAvKiBPcGFx
dWVKU1N0cmluZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRTEyNEE4RjUwRTU1NTc3NTAwMzA5MUYxIC8qIE9wYXF1ZUpTU3RyaW5nLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTEwNDIsNiArMTA0Mywx
MyBAQAogCQlBN0UyRUE2QTBGQjQ2MENGMDA2MDFGMDYgLyogTGl0ZXJhbFBhcnNlci5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBMaXRlcmFsUGFyc2VyLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTdFNDJDMTgwRTM5Mzg4MzAwNjVBNTQ0IC8qIEpT
U3RhdGljU2NvcGVPYmplY3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNT
dGF0aWNTY29wZU9iamVjdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBN0U0MkMx
OTBFMzkzODgzMDA2NUE1NDQgLyogSlNTdGF0aWNTY29wZU9iamVjdC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1N0YXRpY1Njb3BlT2JqZWN0LmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTdFNEZDODYxMkY4RTRDQTAwQUY0Q0Y0IC8qIEJsb2Nr
U3RhY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQmxvY2tTdGFjay5oOyBw
YXRoID0gY29sbGVjdG9yL2hhbmRsZXMvQmxvY2tTdGFjay5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlBN0U0RkM4NzEyRjhFNENBMDBBRjRDRjQgLyogR2xvYmFsLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEdsb2JhbC5oOyBwYXRoID0gY29sbGVjdG9yL2hhbmRs
ZXMvR2xvYmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3RTRGQzg4MTJGOEU0
Q0EwMEFGNENGNCAvKiBIYW5kbGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0g
SGFuZGxlLmg7IHBhdGggPSBjb2xsZWN0b3IvaGFuZGxlcy9IYW5kbGUuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJQTdFNEZDODkxMkY4RTRDQTAwQUY0Q0Y0IC8qIEhhbmRsZUhlYXAu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gSGFuZGxlSGVhcC5jcHA7
IHBhdGggPSBjb2xsZWN0b3IvaGFuZGxlcy9IYW5kbGVIZWFwLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJQTdFNEZDOEExMkY4RTRDQTAwQUY0Q0Y0IC8qIEhhbmRsZUhlYXAuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gSGFuZGxlSGVhcC5oOyBwYXRoID0gY29s
bGVjdG9yL2hhbmRsZXMvSGFuZGxlSGVhcC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlBN0U0RkM4QzEyRjhFNENBMDBBRjRDRjQgLyogU2VudGluZWxMaW5rZWRMaXN0LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFNlbnRpbmVsTGlua2VkTGlzdC5oOyBwYXRoID0g
Y29sbGVjdG9yL2hhbmRsZXMvU2VudGluZWxMaW5rZWRMaXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUE3RTRGQzhEMTJGOEU0Q0EwMEFGNENGNCAvKiBTaW5nbHlMaW5rZWRMaXN0
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFNpbmdseUxpbmtlZExpc3QuaDsg
cGF0aCA9IGNvbGxlY3Rvci9oYW5kbGVzL1NpbmdseUxpbmtlZExpc3QuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQTdGMTlFQ0QxMURENDkwOTAwOTMxRTcwIC8qIEZpeGVkQXJyYXku
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRml4ZWRBcnJheS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlBN0Y4NjkwRTBGOTU4NEExMDA1NTg2OTcgLyogQ2FjaGVk
Q2FsbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDYWNoZWRDYWxsLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3Rjg2OUVDMEY5NUMyRUMwMDU1ODY5NyAvKiBD
YWxsRnJhbWVDbG9zdXJlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENhbGxG
cmFtZUNsb3N1cmUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTExNTYsOCArMTE2
NCw2IEBACiAJCUQyMTIwMjI4MEFENDMxMEMwMEVENzlCNiAvKiBEYXRlQ29udmVyc2lvbi5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRGF0ZUNvbnZlcnNpb24uY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEMjEyMDIyOTBBRDQzMTBDMDBFRDc5QjYg
LyogRGF0ZUNvbnZlcnNpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERh
dGVDb252ZXJzaW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUREMzc3Q0JCMTIw
NzJDMTgwMDZBMjUxNyAvKiBCaXRtYXAuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gQml0bWFwLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCURERTgyQUQxMTIwOUQ5
NTUwMDVDMTc1NiAvKiBHQ0hhbmRsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBHQ0hhbmRsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCURERTgy
QUQyMTIwOUQ5NTUwMDVDMTc1NiAvKiBHQ0hhbmRsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBHQ0hhbmRsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEREY3
QUJEMjExRjYwRUQyMDAxMDhFMzYgLyogR0NBY3Rpdml0eUNhbGxiYWNrLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdDQWN0aXZpdHlDYWxsYmFjay5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlEREY3QUJEMzExRjYwRUQyMDAxMDhFMzYgLyogR0NBY3Rpdml0eUNh
bGxiYWNrQ0YuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR0NBY3Rp
dml0eUNhbGxiYWNrQ0YuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMTFENTE3
NTBCMkU3OThEMDA1NkMxODggLyogU3RyaW5nRXh0cmFzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFN0cmluZ0V4dHJhcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtMTI0OCw5ICsxMjU0LDkgQEAKIAkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CiAJ
CQlmaWxlcyA9ICgKIAkJCQk5MzJGNUJEMzA4MjJBMUM3MDA3MzY5NzUgLyogQ29yZUZvdW5kYXRp
b24uZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8sCi0JCQkJOTMyRjVCRDUwODIyQTFDNzAwNzM2
OTc1IC8qIEZvdW5kYXRpb24uZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8sCiAJCQkJOTMyRjVC
RDcwODIyQTFDNzAwNzM2OTc1IC8qIGxpYmljdWNvcmUuZHlsaWIgaW4gRnJhbWV3b3JrcyAqLywK
IAkJCQk5MzJGNUJENjA4MjJBMUM3MDA3MzY5NzUgLyogbGlib2JqYy5keWxpYiBpbiBGcmFtZXdv
cmtzICovLAorCQkJCUE3MzFCMjVBMTMwMDkzODgwMDQwQTdGQSAvKiBGb3VuZGF0aW9uLmZyYW1l
d29yayBpbiBGcmFtZXdvcmtzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9z
dHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMTMwMyw2ICsxMzA5LDcgQEAKIAkJCQk5Njg4Q0Ix
MjBFRDEyQjRFMDAxRDY0OUYgLyogYXNzZW1ibGVyICovLAogCQkJCTk2OUEwNzhGMEVEMUQzQUUw
MEYxRjY4MSAvKiBieXRlY29kZSAqLywKIAkJCQk3RTM5RDgxRDBFQzM4RUZBMDAzQUYxMUEgLyog
Ynl0ZWNvbXBpbGVyICovLAorCQkJCUE3RTRGQzgzMTJGOEU0QTMwMEFGNENGNCAvKiBjb2xsZWN0
b3IgKi8sCiAJCQkJMTQ4MERCOUEwRERDMjIzMTAwM0NGREYyIC8qIGRlYnVnZ2VyICovLAogCQkJ
CTE0MjlENzdBMEVEMjBENzMwMEI4OTYxOSAvKiBpbnRlcnByZXRlciAqLywKIAkJCQkxNDI5RDky
QzBFRDIyRDcwMDBCODk2MTkgLyogaml0ICovLApAQCAtMTczMiw4ICsxNzM5LDYgQEAKIAkJCQlG
NjkyQTg1RDAyNTU1OTdEMDFGRjYwRjcgLyogRnVuY3Rpb25Qcm90b3R5cGUuaCAqLywKIAkJCQlE
REY3QUJEMjExRjYwRUQyMDAxMDhFMzYgLyogR0NBY3Rpdml0eUNhbGxiYWNrLmggKi8sCiAJCQkJ
RERGN0FCRDMxMUY2MEVEMjAwMTA4RTM2IC8qIEdDQWN0aXZpdHlDYWxsYmFja0NGLmNwcCAqLywK
LQkJCQlEREU4MkFEMTEyMDlEOTU1MDA1QzE3NTYgLyogR0NIYW5kbGUuY3BwICovLAotCQkJCURE
RTgyQUQyMTIwOUQ5NTUwMDVDMTc1NiAvKiBHQ0hhbmRsZS5oICovLAogCQkJCUJDMDJFOUI4MEUx
ODQ1NDUwMDBGOTI5NyAvKiBHZXR0ZXJTZXR0ZXIuY3BwICovLAogCQkJCUJDMzM3QkRFMEUxQUYw
QjgwMDc2OTE4QSAvKiBHZXR0ZXJTZXR0ZXIuaCAqLywKIAkJCQlCQzI1N0RFRDBFMUY1MkVEMDAx
NkI2QzkgLyogR2xvYmFsRXZhbEZ1bmN0aW9uLmNwcCAqLywKQEAgLTIwNDcsNiArMjA1MiwyOCBA
QAogCQkJbmFtZSA9IGFwaTsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CiAJCX07CisJCUE3
RTRGQzgzMTJGOEU0QTMwMEFGNENGNCAvKiBjb2xsZWN0b3IgKi8gPSB7CisJCQlpc2EgPSBQQlhH
cm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCUE3RTRGQzg1MTJGOEU0QjEwMEFGNENGNCAvKiBo
YW5kbGVzICovLAorCQkJKTsKKwkJCW5hbWUgPSBjb2xsZWN0b3I7CisJCQlzb3VyY2VUcmVlID0g
Ijxncm91cD4iOworCQl9OworCQlBN0U0RkM4NTEyRjhFNEIxMDBBRjRDRjQgLyogaGFuZGxlcyAq
LyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJQTdFNEZDODYx
MkY4RTRDQTAwQUY0Q0Y0IC8qIEJsb2NrU3RhY2suaCAqLywKKwkJCQlBN0U0RkM4NzEyRjhFNENB
MDBBRjRDRjQgLyogR2xvYmFsLmggKi8sCisJCQkJQTdFNEZDODgxMkY4RTRDQTAwQUY0Q0Y0IC8q
IEhhbmRsZS5oICovLAorCQkJCUE3RTRGQzg5MTJGOEU0Q0EwMEFGNENGNCAvKiBIYW5kbGVIZWFw
LmNwcCAqLywKKwkJCQlBN0U0RkM4QTEyRjhFNENBMDBBRjRDRjQgLyogSGFuZGxlSGVhcC5oICov
LAorCQkJCUE3RTRGQzhDMTJGOEU0Q0EwMEFGNENGNCAvKiBTZW50aW5lbExpbmtlZExpc3QuaCAq
LywKKwkJCQlBN0U0RkM4RDEyRjhFNENBMDBBRjRDRjQgLyogU2luZ2x5TGlua2VkTGlzdC5oICov
LAorCQkJKTsKKwkJCW5hbWUgPSBoYW5kbGVzOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsK
KwkJfTsKIAkJRTE5NTY3OEQwOUU3Q0YxMjAwQjg5RDEzIC8qIHVuaWNvZGUgKi8gPSB7CiAJCQlp
c2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKApAQCAtMjA4Miw3ICsyMTA5LDYgQEAKIAkJ
CQkxNDQwMDc1NzBBNTM3MEQyMDAwNUYwNjEgLyogSlNOb2RlTGlzdC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMTQ0MDA1Q0MwQTUzMzhGODAwMDVGMDYxIC8qIE5vZGUuaCBpbiBIZWFkZXJzICovLAog
CQkJCTE0NDAwNzRBMEE1MzZDQzIwMDA1RjA2MSAvKiBOb2RlTGlzdC5oIGluIEhlYWRlcnMgKi8s
Ci0JCQkJRERFODJBRDYxMjA5RDk1NTAwNUMxNzU2IC8qIEdDSGFuZGxlLmggaW4gSGVhZGVycyAq
LywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJ
fTsKQEAgLTIxNjUsNyArMjE5MSw2IEBACiAJCQkJQkMxOEM0MDQwRTE2RjVDRDAwQjM0NDYwIC8q
IEZ1bmN0aW9uQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDA1MEUxNkY1
Q0QwMEIzNDQ2MCAvKiBGdW5jdGlvblByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRERG
N0FCRDQxMUY2MEVEMjAwMTA4RTM2IC8qIEdDQWN0aXZpdHlDYWxsYmFjay5oIGluIEhlYWRlcnMg
Ki8sCi0JCQkJRERFODJBRDgxMjA5RDk1NTAwNUMxNzU2IC8qIEdDSGFuZGxlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlCQzE4QzQwNjBFMTZGNUNEMDBCMzQ0NjAgLyogR2V0UHRyLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlCQzI1N0RGMDBFMUY1MkVEMDAxNkI2QzkgLyogR2xvYmFsRXZhbEZ1bmN0aW9u
LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzQwODBFMTZGNUNEMDBCMzQ0NjAgLyogSGFzaENv
dW50ZWRTZXQuaCBpbiBIZWFkZXJzICovLApAQCAtMjQxNSw2ICsyNDQwLDEyIEBACiAJCQkJRTRE
OENFRkIxMkZDNDM5NjAwQkM5RjVBIC8qIEJsb29tRmlsdGVyLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk5Nzk0MUE1QTEzMDI5QUNDMDA0QTM0NDcgLyogT1NSYW5kb21Tb3VyY2UuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTk3OTQxQTdGMTMwMkEwOTgwMDRBMzQ0NyAvKiBDcnlwdG9ncmFwaGljYWxseVJh
bmRvbU51bWJlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTdFNEZDOEUxMkY4RTRDQTAwQUY0Q0Y0
IC8qIEJsb2NrU3RhY2suaCBpbiBIZWFkZXJzICovLAorCQkJCUE3RTRGQzhGMTJGOEU0Q0EwMEFG
NENGNCAvKiBHbG9iYWwuaCBpbiBIZWFkZXJzICovLAorCQkJCUE3RTRGQzkwMTJGOEU0Q0EwMEFG
NENGNCAvKiBIYW5kbGUuaCBpbiBIZWFkZXJzICovLAorCQkJCUE3RTRGQzkyMTJGOEU0Q0EwMEFG
NENGNCAvKiBIYW5kbGVIZWFwLmggaW4gSGVhZGVycyAqLywKKwkJCQlBN0U0RkM5NDEyRjhFNENB
MDBBRjRDRjQgLyogU2VudGluZWxMaW5rZWRMaXN0LmggaW4gSGVhZGVycyAqLywKKwkJCQlBN0U0
RkM5NTEyRjhFNENBMDBBRjRDRjQgLyogU2luZ2x5TGlua2VkTGlzdC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07
CkBAIC0yNjc2LDcgKzI3MDcsNiBAQAogCQkJCTE0MTIxMTM0MEE0ODc5NTgwMDQ4MDI1NSAvKiBt
aW5pZG9tLmMgaW4gU291cmNlcyAqLywKIAkJCQkxNDQwMDYzRjBBNTM1OThBMDAwNUYwNjEgLyog
Tm9kZS5jIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQ0MDA3NEIwQTUzNkNDMjAwMDVGMDYxIC8qIE5v
ZGVMaXN0LmMgaW4gU291cmNlcyAqLywKLQkJCQlEREU4MkFENTEyMDlEOTU1MDA1QzE3NTYgLyog
R0NIYW5kbGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1l
bnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC0yNjg1LDcgKzI3MTUsNiBAQAogCQkJYnVp
bGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKIAkJCWZpbGVzID0gKAogCQkJCTE0NDBGNjEwMEE0
Rjg1NjcwMDA1RjA2MSAvKiB0ZXN0YXBpLmMgaW4gU291cmNlcyAqLywKLQkJCQlEREU4MkFENDEy
MDlEOTU1MDA1QzE3NTYgLyogR0NIYW5kbGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJ
cnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC0yNzM5LDcg
KzI3NjgsNiBAQAogCQkJCTE0N0YzOUNCMTA3RUMzNzYwMDQyN0E0OCAvKiBGdW5jdGlvbkNvbnN0
cnVjdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0N0YzOUNDMTA3RUMzNzYwMDQyN0E0OCAv
KiBGdW5jdGlvblByb3RvdHlwZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlEREY3QUJENTExRjYw
RUQyMDAxMDhFMzYgLyogR0NBY3Rpdml0eUNhbGxiYWNrQ0YuY3BwIGluIFNvdXJjZXMgKi8sCi0J
CQkJRERFODJBRDcxMjA5RDk1NTAwNUMxNzU2IC8qIEdDSGFuZGxlLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTE0MjgwODU1MTA3RUMwRTcwMDEzRTdCMiAvKiBHZXR0ZXJTZXR0ZXIuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMTQ3RjM5Q0QxMDdFQzM3NjAwNDI3QTQ4IC8qIEdsb2JhbEV2YWxGdW5j
dGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk2NURGQzkzMzA4RUExNzNBMDBGNzMwMEIgLyog
SGFzaFRhYmxlLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMjg3OCw5ICsyOTA2LDEwIEBACiAJCQkJ
ODY3MDRCODkxMkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJQYXR0ZXJuLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTg2NzA0QjQyMTJEQjhBODEwMEE5RkU3QiAvKiBZYXJyU3ludGF4Q2hlY2tlci5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlFNDlEQzE2QjEyRUYyOTNFMDAxODRBMUYgLyogU291cmNlUHJv
dmlkZXJDYWNoZS5jcHAgaW4gU291cmNlcyAqLywKLQkJCQkxNEM4MjRBQjEyRjdDNzdFMDA4RjM1
RTAgLyogTWFya2VkQmxvY2suY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTc5NDFBNTcxMzAyOUFB
QjAwNEEzNDQ3IC8qIE9TUmFuZG9tU291cmNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTk3OTQx
QTdFMTMwMkEwOTgwMDRBMzQ0NyAvKiBDcnlwdG9ncmFwaGljYWxseVJhbmRvbU51bWJlci5jcHAg
aW4gU291cmNlcyAqLywKKwkJCQlBN0U0RkM5MTEyRjhFNENBMDBBRjRDRjQgLyogSGFuZGxlSGVh
cC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlBN0FDMjVCRDEzMDREMTQ2MDAzMzk2REUgLyogTWFy
a2VkQmxvY2suY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1l
bnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC0yODg5LDcgKzI5MTgsNiBAQAogCQkJYnVp
bGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKIAkJCWZpbGVzID0gKAogCQkJCTkzMkY1QkREMDgy
MkExQzcwMDczNjk3NSAvKiBqc2MuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJRERFODJBRDMxMjA5
RDk1NTAwNUMxNzU2IC8qIEdDSGFuZGxlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTk3MkE0ODVG
MTI2NjFFMDgwMEY0NTE0RiAvKiBVUkxDaGFyYWN0ZXJUeXBlcy5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk5NzJBNDg3NzEyNjYyNTZGMDBGNDUxNEYgLyogVVJMRXNjYXBlLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9jb2xsZWN0b3Iv
aGFuZGxlcy9CbG9ja1N0YWNrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvY29sbGVjdG9yL2hh
bmRsZXMvQmxvY2tTdGFjay5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVmNzA1OWZlZGI2ZTZhOTNmZGZiOGM2ZDFi
ZjIzOGZhOTkyYjA4ODkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Y29sbGVjdG9yL2hhbmRsZXMvQmxvY2tTdGFjay5oCkBAIC0wLDAgKzEsOTcgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaWZuZGVmIEJsb2NrU3RhY2tfaAorI2RlZmluZSBCbG9ja1N0YWNrX2gKKworI2luY2x1
ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3Bh
Y2UgSlNDIHsKKworY2xhc3MgSGVhcE9iamVjdDsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNs
YXNzIEJsb2NrU3RhY2sgeworcHVibGljOgorICAgIHN0YXRpYyBjb25zdCBzaXplX3QgYmxvY2tT
aXplID0gNDA5NjsKKyAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IGJsb2NrTGVuZ3RoID0gYmxvY2tT
aXplIC8gc2l6ZW9mKFQpOworCisgICAgQmxvY2tTdGFjaygpOworICAgIH5CbG9ja1N0YWNrKCk7
CisKKyAgICBUKiBncm93KCk7CisgICAgdm9pZCBzaHJpbmsoVCopOworCisgICAgY29uc3QgVmVj
dG9yPFQqPiYgYmxvY2tzKCk7CisKK3ByaXZhdGU6CisgICAgVmVjdG9yPFQqPiBtX2Jsb2NrczsK
KyAgICBUKiBtX3NwYXJlQmxvY2s7IC8vIFVzZWQgdG8gYXZvaWQgdGhyYXNoIGF0IGJsb2NrIGJv
dW5kYXJpZXMuCit9OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gQmxvY2tTdGFjazxUPjo6Qmxv
Y2tTdGFjaygpCisgICAgOiBtX3NwYXJlQmxvY2soMCkKK3sKK30KKwordGVtcGxhdGUgPHR5cGVu
YW1lIFQ+IEJsb2NrU3RhY2s8VD46On5CbG9ja1N0YWNrKCkKK3sKKyAgICBpZiAobV9zcGFyZUJs
b2NrKQorICAgICAgICBmcmVlKG1fc3BhcmVCbG9jayk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBtX2Jsb2Nrcy5zaXplKCk7ICsraSkKKyAgICAgICAgZnJlZShtX2Jsb2Nrc1tpXSk7Cit9
CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPiBpbmxpbmUgY29uc3QgVmVjdG9yPFQqPiYgQmxvY2tT
dGFjazxUPjo6YmxvY2tzKCkKK3sKKyAgICByZXR1cm4gbV9ibG9ja3M7Cit9CisKK3RlbXBsYXRl
IDx0eXBlbmFtZSBUPiBUKiBCbG9ja1N0YWNrPFQ+Ojpncm93KCkKK3sKKyAgICBUKiBibG9jayA9
IG1fc3BhcmVCbG9jaworICAgICAgICA/IG1fc3BhcmVCbG9jaworICAgICAgICA6IHN0YXRpY19j
YXN0PFQqPihtYWxsb2MoYmxvY2tTaXplKSk7CisgICAgbV9zcGFyZUJsb2NrID0gMDsKKworICAg
IG1fYmxvY2tzLmFwcGVuZChibG9jayk7CisgICAgcmV0dXJuIGJsb2NrOworfQorCit0ZW1wbGF0
ZSA8dHlwZW5hbWUgVD4gdm9pZCBCbG9ja1N0YWNrPFQ+OjpzaHJpbmsoVCogbmV3RW5kKQorewor
ICAgIEFTU0VSVChuZXdFbmQgIT0gbV9ibG9ja3MubGFzdCgpICsgYmxvY2tMZW5ndGgpOworICAg
IG1fc3BhcmVCbG9jayA9IG1fYmxvY2tzLmxhc3QoKTsKKyAgICBtX2Jsb2Nrcy5yZW1vdmVMYXN0
KCk7CisKKyAgICB3aGlsZSAobV9ibG9ja3MubGFzdCgpICsgYmxvY2tMZW5ndGggIT0gbmV3RW5k
KSB7CisgICAgICAgIGZyZWUobV9ibG9ja3MubGFzdCgpKTsKKyAgICAgICAgbV9ibG9ja3MucmVt
b3ZlTGFzdCgpOworICAgIH0KK30KKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9jb2xsZWN0b3IvaGFuZGxlcy9HbG9iYWwuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9jb2xsZWN0b3IvaGFuZGxlcy9HbG9iYWwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41NzFmZTMxMjEz
NzY5NDJjNWFhZjI1N2I3ZWI4ZmMyMGFiMGUxYTZiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2NvbGxlY3Rvci9oYW5kbGVzL0dsb2JhbC5oCkBAIC0wLDAgKzEsMTU5
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBHbG9iYWxfaAorI2RlZmluZSBHbG9iYWxfaAorCisj
aW5jbHVkZSAiQXNzZXJ0aW9ucy5oIgorI2luY2x1ZGUgIkhhbmRsZS5oIgorI2luY2x1ZGUgIkhh
bmRsZUhlYXAuaCIKKyNpbmNsdWRlICJKU0dsb2JhbERhdGEuaCIKKworbmFtZXNwYWNlIEpTQyB7
CisKKy8qCisgICAgQSBHbG9iYWwgaXMgYSBwZXJzaXN0ZW50IGhhbmRsZSB3aG9zZSBsaWZldGlt
ZSBpcyBub3QgbGltaXRlZCB0byBhbnkgZ2l2ZW4KKyAgICBzY29wZS4gVXNlIEdsb2JhbHMgZm9y
IGRhdGEgbWVtYmVycyBhbmQgZ2xvYmFsIHZhcmlhYmxlcy4KKyovCisKK3RlbXBsYXRlIDx0eXBl
bmFtZSBUPiBjbGFzcyBHbG9iYWwgOiBwdWJsaWMgSGFuZGxlPFQ+IHsKK3B1YmxpYzoKKyAgICB0
eXBlZGVmIHR5cGVuYW1lIEhhbmRsZTxUPjo6RXh0ZXJuYWxUeXBlIEV4dGVybmFsVHlwZTsKKyAg
ICBHbG9iYWwoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBFeHRlcm5hbFR5cGUgcHRyID0gRXh0
ZXJuYWxUeXBlKCkpCisgICAgICAgIDogSGFuZGxlPFQ+KGdsb2JhbERhdGEuYWxsb2NhdGVHbG9i
YWxIYW5kbGUoKSkKKyAgICB7CisgICAgICAgIGludGVybmFsU2V0KHB0cik7CisgICAgfQorCisg
ICAgR2xvYmFsKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSGFuZGxlPFQ+IGhhbmRsZSkKKyAg
ICAgICAgOiBIYW5kbGU8VD4oZ2xvYmFsRGF0YS5hbGxvY2F0ZUdsb2JhbEhhbmRsZSgpKQorICAg
IHsKKyAgICAgICAgaW50ZXJuYWxTZXQoaGFuZGxlLmdldCgpKTsKKyAgICB9CisgICAgCisgICAg
ZW51bSBFbXB0eVZhbHVlVGFnIHsgRW1wdHlWYWx1ZSB9OworICAgIEdsb2JhbChFbXB0eVZhbHVl
VGFnKQorICAgICAgICA6IEhhbmRsZTxUPigwLCBIYW5kbGVCYXNlOjpEb250TnVsbENoZWNrU2xv
dCkKKyAgICB7CisgICAgfQorCisgICAgfkdsb2JhbCgpCisgICAgeworICAgICAgICBIYW5kbGVT
bG90IHNsb3QgPSB0aGlzLT5zbG90KCk7CisgICAgICAgIGlmIChzbG90KQorICAgICAgICAgICAg
SGFuZGxlSGVhcDo6aGVhcEZvcihzbG90KS0+ZGVhbGxvY2F0ZShzbG90KTsKKyAgICB9CisKKyAg
ICB2b2lkIHNldChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEV4dGVybmFsVHlwZSB2YWx1ZSkK
KyAgICB7CisgICAgICAgIGlmICghdmFsdWUpIHsKKyAgICAgICAgICAgIGNsZWFyKCk7CisgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgaWYgKCF0aGlzLT5zbG90KCkpCisg
ICAgICAgICAgICB0aGlzLT5zZXRTbG90KGdsb2JhbERhdGEuYWxsb2NhdGVHbG9iYWxIYW5kbGUo
KSk7CisgICAgICAgIGludGVybmFsU2V0KHZhbHVlKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZSA8
dHlwZW5hbWUgVT4gR2xvYmFsJiBvcGVyYXRvcj0oY29uc3QgR2xvYmFsPFU+JiBoYW5kbGUpCisg
ICAgeworICAgICAgICBpZiAoaGFuZGxlLnNsb3QoKSkgeworICAgICAgICAgICAgaWYgKCF0aGlz
LT5zbG90KCkpCisgICAgICAgICAgICAgICAgdGhpcy0+c2V0U2xvdChIYW5kbGVIZWFwOjpoZWFw
Rm9yKGhhbmRsZS5zbG90KCkpLT5hbGxvY2F0ZSgpKTsKKyAgICAgICAgICAgIGludGVybmFsU2V0
KGhhbmRsZS5nZXQoKSk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgY2xlYXIoKTsKKyAg
ICAgICAgCisgICAgICAgIHJldHVybiAqdGhpczsKKyAgICB9CisgICAgCisgICAgR2xvYmFsJiBv
cGVyYXRvcj0oY29uc3QgR2xvYmFsJiBoYW5kbGUpCisgICAgeworICAgICAgICBpZiAoaGFuZGxl
LnNsb3QoKSkgeworICAgICAgICAgICAgaWYgKCF0aGlzLT5zbG90KCkpCisgICAgICAgICAgICAg
ICAgdGhpcy0+c2V0U2xvdChIYW5kbGVIZWFwOjpoZWFwRm9yKGhhbmRsZS5zbG90KCkpLT5hbGxv
Y2F0ZSgpKTsKKyAgICAgICAgICAgIGludGVybmFsU2V0KGhhbmRsZS5nZXQoKSk7CisgICAgICAg
IH0gZWxzZQorICAgICAgICAgICAgY2xlYXIoKTsKKyAgICAgICAgCisgICAgICAgIHJldHVybiAq
dGhpczsKKyAgICB9CisKKyAgICB2b2lkIGNsZWFyKCkKKyAgICB7CisgICAgICAgIGlmICh0aGlz
LT5zbG90KCkpCisgICAgICAgICAgICBpbnRlcm5hbFNldChFeHRlcm5hbFR5cGUoKSk7CisgICAg
fQorCisgICAgZW51bSBIYXNoVGFibGVEZWxldGVkVmFsdWVUeXBlIHsgSGFzaFRhYmxlRGVsZXRl
ZFZhbHVlIH07CisgICAgY29uc3Qgc3RhdGljIGludHB0cl90IEhhc2hUYWJsZURlbGV0ZWRWYWx1
ZVRhZyA9IDB4MTsKKyAgICBHbG9iYWwoSGFzaFRhYmxlRGVsZXRlZFZhbHVlVHlwZSkKKyAgICAg
ICAgOiBIYW5kbGU8VD4ocmVpbnRlcnByZXRfY2FzdDxIYW5kbGVTbG90PihIYXNoVGFibGVEZWxl
dGVkVmFsdWVUYWcpKQorICAgIHsKKyAgICB9CisgICAgYm9vbCBpc0hhc2hUYWJsZURlbGV0ZWRW
YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIHNsb3QoKSA9PSByZWludGVycHJldF9jYXN0PEhhbmRsZVNs
b3Q+KEhhc2hUYWJsZURlbGV0ZWRWYWx1ZVRhZyk7IH0KKworICAgIHRlbXBsYXRlIDx0eXBlbmFt
ZSBVPiBHbG9iYWwoY29uc3QgR2xvYmFsPFU+JiBvdGhlcikKKyAgICAgICAgOiBIYW5kbGU8VD4o
b3RoZXIuc2xvdCgpID8gSGFuZGxlSGVhcDo6aGVhcEZvcihvdGhlci5zbG90KCkpLT5hbGxvY2F0
ZSgpIDogMCwgSGFuZGxlPFQ+OjpEb250TnVsbENoZWNrU2xvdCkKKyAgICB7CisgICAgICAgIGlm
IChvdGhlci5zbG90KCkpCisgICAgICAgICAgICBpbnRlcm5hbFNldChvdGhlci5nZXQoKSk7Cisg
ICAgfQorICAgIAorICAgIEdsb2JhbChjb25zdCBHbG9iYWwmIG90aGVyKQorICAgICAgICA6IEhh
bmRsZTxUPihvdGhlci5zbG90KCkgPyBIYW5kbGVIZWFwOjpoZWFwRm9yKG90aGVyLnNsb3QoKSkt
PmFsbG9jYXRlKCkgOiAwLCBIYW5kbGU8VD46OkRvbnROdWxsQ2hlY2tTbG90KQorICAgIHsKKyAg
ICAgICAgaWYgKG90aGVyLnNsb3QoKSkKKyAgICAgICAgICAgIGludGVybmFsU2V0KG90aGVyLmdl
dCgpKTsKKyAgICB9CisKK3Byb3RlY3RlZDoKKyAgICB2b2lkIGludGVybmFsU2V0KEV4dGVybmFs
VHlwZSB2YWx1ZSkKKyAgICB7CisgICAgICAgIEpTVmFsdWUgbmV3VmFsdWUoSGFuZGxlVHlwZXM8
VD46OnRvSlNWYWx1ZSh2YWx1ZSkpOworICAgICAgICBIYW5kbGVTbG90IHNsb3QgPSB0aGlzLT5z
bG90KCk7CisgICAgICAgIEFTU0VSVChzbG90KTsKKyAgICAgICAgSGFuZGxlSGVhcDo6aGVhcEZv
cihzbG90KS0+d3JpdGVCYXJyaWVyKHNsb3QsIG5ld1ZhbHVlKTsKKyAgICAgICAgKnNsb3QgPSBu
ZXdWYWx1ZTsKKyAgICB9CisKKyAgICB1c2luZyBIYW5kbGU8VD46OnNsb3Q7CisgICAgCit9Owor
Cit9CisKK25hbWVzcGFjZSBXVEYgeworCit0ZW1wbGF0ZTx0eXBlbmFtZSBQPiBzdHJ1Y3QgSGFz
aFRyYWl0czxKU0M6Okdsb2JhbDxQPiA+IDogR2VuZXJpY0hhc2hUcmFpdHM8SlNDOjpHbG9iYWw8
UD4gPiB7CisgICAgc3RhdGljIGNvbnN0IGJvb2wgZW1wdHlWYWx1ZUlzWmVybyA9IHRydWU7Cisg
ICAgc3RhdGljIEpTQzo6R2xvYmFsPFA+IGVtcHR5VmFsdWUoKSB7IHJldHVybiBKU0M6Okdsb2Jh
bDxQPihKU0M6Okdsb2JhbDxQPjo6RW1wdHlWYWx1ZSk7IH0KKyAgICBzdGF0aWMgdm9pZCBjb25z
dHJ1Y3REZWxldGVkVmFsdWUoSlNDOjpHbG9iYWw8UD4mIHNsb3QpIHsgbmV3ICgmc2xvdCkgSlND
OjpHbG9iYWw8UD4oSlNDOjpHbG9iYWw8UD46Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZSk7IH0KKyAg
ICBzdGF0aWMgYm9vbCBpc0RlbGV0ZWRWYWx1ZShjb25zdCBKU0M6Okdsb2JhbDxQPiYgdmFsdWUp
IHsgcmV0dXJuIHZhbHVlLmlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCk7IH0KK307CisKK30KKwor
I2VuZGlmIC8vIEdsb2JhbF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvY29s
bGVjdG9yL2hhbmRsZXMvSGFuZGxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvY29sbGVjdG9y
L2hhbmRsZXMvSGFuZGxlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOThjNjBlY2JjYzRiZWE4NjUzMjg3ZGU4Njdj
NWE4MTMyNzU4YmI3NwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9j
b2xsZWN0b3IvaGFuZGxlcy9IYW5kbGUuaApAQCAtMCwwICsxLDE4OSBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpZm5kZWYgSGFuZGxlX2gKKyNkZWZpbmUgSGFuZGxlX2gKKworI2luY2x1ZGUgIldyaXRlQmFy
cmllci5oIgorCisjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KKworbmFtZXNwYWNlIEpTQyB7
CisKKy8qCisgICAgQSBIYW5kbGUgaXMgYSBzbWFydCBwb2ludGVyIHRoYXQgdXBkYXRlcyBhdXRv
bWF0aWNhbGx5IHdoZW4gdGhlIGdhcmJhZ2UKKyAgICBjb2xsZWN0b3IgbW92ZXMgdGhlIG9iamVj
dCB0byB3aGljaCBpdCBwb2ludHMuCisKKyAgICBUaGUgYmFzZSBIYW5kbGUgY2xhc3MgcmVwcmVz
ZW50cyBhIHRlbXBvcmFyeSByZWZlcmVuY2UgdG8gYSBwb2ludGVyIHdob3NlCisgICAgbGlmZXRp
bWUgaXMgZ3VhcmFudGVlZCBieSBzb21ldGhpbmcgZWxzZS4KKyovCisKK3RlbXBsYXRlIDxjbGFz
cyBUPiBjbGFzcyBIYW5kbGU7CisKKy8vIENyZWF0aW5nIGEgSlNWYWx1ZSBIYW5kbGUgaXMgaW52
YWxpZAordGVtcGxhdGUgPD4gY2xhc3MgSGFuZGxlPEpTVmFsdWU+OworCitjbGFzcyBIYW5kbGVC
YXNlIHsKKyAgICBmcmllbmQgY2xhc3MgSGFuZGxlSGVhcDsKKworcHVibGljOgorICAgIGJvb2wg
b3BlcmF0b3IhKCkgY29uc3QgeyByZXR1cm4gaXNFbXB0eSgpOyB9CisKKyAgICAvLyBUaGlzIGNv
bnZlcnNpb24gb3BlcmF0b3IgYWxsb3dzIGltcGxpY2l0IGNvbnZlcnNpb24gdG8gYm9vbCBidXQg
bm90IHRvIG90aGVyIGludGVnZXIgdHlwZXMuCisgICAgdHlwZWRlZiBKU1ZhbHVlIChIYW5kbGVC
YXNlOjoqVW5zcGVjaWZpZWRCb29sVHlwZSk7CisgICAgb3BlcmF0b3IgVW5zcGVjaWZpZWRCb29s
VHlwZSooKSBjb25zdCB7IHJldHVybiAobV9zbG90ICYmICptX3Nsb3QpID8gcmVpbnRlcnByZXRf
Y2FzdDxVbnNwZWNpZmllZEJvb2xUeXBlKj4oMSkgOiAwOyB9CisKKyAgICBib29sIGlzRW1wdHko
KSBjb25zdCB7IHJldHVybiAhbV9zbG90IHx8ICEqbV9zbG90OyB9CisKK3Byb3RlY3RlZDoKKyAg
ICBIYW5kbGVCYXNlKEhhbmRsZVNsb3Qgc2xvdCkKKyAgICAgICAgOiBtX3Nsb3Qoc2xvdCkKKyAg
ICB7CisgICAgICAgIEFTU0VSVChzbG90KTsKKyAgICB9CisKKyAgICBlbnVtIERvbnROdWxsQ2hl
Y2tTbG90VGFnIHsgRG9udE51bGxDaGVja1Nsb3QgfTsKKyAgICBIYW5kbGVCYXNlKEhhbmRsZVNs
b3Qgc2xvdCwgRG9udE51bGxDaGVja1Nsb3RUYWcpCisgICAgICAgIDogbV9zbG90KHNsb3QpCisg
ICAgeworICAgIH0KKyAgICAKKyAgICBIYW5kbGVTbG90IHNsb3QoKSBjb25zdCB7IHJldHVybiBt
X3Nsb3Q7IH0KKyAgICB2b2lkIGludmFsaWRhdGUoKQorICAgIHsKKyAgICAgICAgLy8gSXQgaXMg
dW5zYWZlIHRvIHVzZSBhIGhhbmRsZSBhZnRlciBpbnZhbGlkYXRpbmcgaXQuCisgICAgICAgIG1f
c2xvdCA9IDA7CisgICAgfQorCisgICAgLy8gbmVlZGVkIGJ5IEdsb2JhbDw+OjpvcGVyYXRvcj0g
YW5kIEdsb2JhbDw+OjpzZXQgaWYgaXQncyBhbiBlbXB0eSBoYW5kbGUKKyAgICB2b2lkIHNldFNs
b3QoSGFuZGxlU2xvdCBzbG90KQorICAgIHsKKyAgICAgICAgQVNTRVJUKCFtX3Nsb3QpOworICAg
ICAgICBBU1NFUlQoc2xvdCk7CisgICAgICAgIG1fc2xvdCA9IHNsb3Q7CisgICAgfQorCitwcml2
YXRlOgorICAgIEhhbmRsZVNsb3QgbV9zbG90OworfTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+
IHN0cnVjdCBIYW5kbGVUeXBlcyB7CisgICAgdHlwZWRlZiBUKiBFeHRlcm5hbFR5cGU7CisgICAg
c3RhdGljIEV4dGVybmFsVHlwZSBnZXRGcm9tU2xvdChIYW5kbGVTbG90IHNsb3QpIHsgcmV0dXJu
IChzbG90ICYmICpzbG90KSA/IHJlaW50ZXJwcmV0X2Nhc3Q8RXh0ZXJuYWxUeXBlPihzbG90LT5h
c0NlbGwoKSkgOiAwOyB9CisgICAgc3RhdGljIEpTVmFsdWUgdG9KU1ZhbHVlKFQqIGNlbGwpIHsg
cmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8SlNDZWxsKj4oY2VsbCk7IH0KKyAgICB0ZW1wbGF0ZSA8
dHlwZW5hbWUgVT4gc3RhdGljIHZvaWQgdmFsaWRhdGVVcGNhc3QoKSB7IFQqIHRlbXA7IHRlbXAg
PSAoVSopMDsgfQorfTsKKwordGVtcGxhdGUgPD4gc3RydWN0IEhhbmRsZVR5cGVzPFVua25vd24+
IHsKKyAgICB0eXBlZGVmIEpTVmFsdWUgRXh0ZXJuYWxUeXBlOworICAgIHN0YXRpYyBFeHRlcm5h
bFR5cGUgZ2V0RnJvbVNsb3QoSGFuZGxlU2xvdCBzbG90KSB7IHJldHVybiBzbG90ID8gKnNsb3Qg
OiBKU1ZhbHVlKCk7IH0KKyAgICBzdGF0aWMgSlNWYWx1ZSB0b0pTVmFsdWUoY29uc3QgSlNWYWx1
ZSYgdikgeyByZXR1cm4gdjsgfQorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBVPiBzdGF0aWMgdm9p
ZCB2YWxpZGF0ZVVwY2FzdCgpIHt9Cit9OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgQmFzZSwgdHlw
ZW5hbWUgVD4gc3RydWN0IEhhbmRsZUNvbnZlcnRlciB7CisgICAgVCogb3BlcmF0b3ItPigpIHsg
cmV0dXJuIHN0YXRpY19jYXN0PEJhc2UqPih0aGlzKS0+Z2V0KCk7IH0KKyAgICBjb25zdCBUKiBv
cGVyYXRvci0+KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgQmFzZSo+KHRoaXMp
LT5nZXQoKTsgfQorICAgIFQqIG9wZXJhdG9yKigpIHsgcmV0dXJuIHN0YXRpY19jYXN0PEJhc2Uq
Pih0aGlzKS0+Z2V0KCk7IH0KKyAgICBjb25zdCBUKiBvcGVyYXRvciooKSBjb25zdCB7IHJldHVy
biBzdGF0aWNfY2FzdDxjb25zdCBCYXNlKj4odGhpcyktPmdldCgpOyB9Cit9OworCit0ZW1wbGF0
ZSA8dHlwZW5hbWUgQmFzZT4gc3RydWN0IEhhbmRsZUNvbnZlcnRlcjxCYXNlLCBVbmtub3duPiB7
Cit9OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY2xhc3MgSGFuZGxlIDogcHVibGljIEhhbmRs
ZUJhc2UsIHB1YmxpYyBIYW5kbGVDb252ZXJ0ZXI8SGFuZGxlPFQ+LCBUPiB7CitwdWJsaWM6Cisg
ICAgdHlwZWRlZiB0eXBlbmFtZSBIYW5kbGVUeXBlczxUPjo6RXh0ZXJuYWxUeXBlIEV4dGVybmFs
VHlwZTsKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVT4gSGFuZGxlKEhhbmRsZTxVPiBvKQorICAg
IHsKKyAgICAgICAgdHlwZW5hbWUgSGFuZGxlVHlwZXM8VD46OnRlbXBsYXRlIHZhbGlkYXRlVXBj
YXN0PFU+KCk7CisgICAgICAgIG1fc2xvdCA9IG8uc2xvdCgpOworICAgIH0KKworICAgIEV4dGVy
bmFsVHlwZSBnZXQoKSBjb25zdCB7IHJldHVybiBIYW5kbGVUeXBlczxUPjo6Z2V0RnJvbVNsb3Qo
dGhpcy0+c2xvdCgpKTsgfQorCitwcm90ZWN0ZWQ6CisKKyAgICBIYW5kbGUoSGFuZGxlU2xvdCBz
bG90KQorICAgICAgICA6IEhhbmRsZUJhc2Uoc2xvdCkKKyAgICB7CisgICAgfQorICAgIEhhbmRs
ZShIYW5kbGVTbG90IHNsb3QsIEhhbmRsZUJhc2U6OkRvbnROdWxsQ2hlY2tTbG90VGFnKQorICAg
ICAgICA6IEhhbmRsZUJhc2Uoc2xvdCwgSGFuZGxlQmFzZTo6RG9udE51bGxDaGVja1Nsb3QpCisg
ICAgeworICAgIH0KKyAgICAKK3ByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIEhhbmRsZUhlYXA7
CisKKyAgICBzdGF0aWMgSGFuZGxlPFQ+IHdyYXBTbG90KEhhbmRsZVNsb3Qgc2xvdCkKKyAgICB7
CisgICAgICAgIHJldHVybiBIYW5kbGU8VD4oc2xvdCk7CisgICAgfQorfTsKKwordGVtcGxhdGUg
PHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+IGlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgSGFu
ZGxlPFQ+JiBhLCBjb25zdCBIYW5kbGU8VT4mIGIpCit7IAorICAgIHJldHVybiBhLmdldCgpID09
IGIuZ2V0KCk7IAorfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4gaW5saW5l
IGJvb2wgb3BlcmF0b3I9PShjb25zdCBIYW5kbGU8VD4mIGEsIFUqIGIpCit7IAorICAgIHJldHVy
biBhLmdldCgpID09IGI7IAorfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4g
aW5saW5lIGJvb2wgb3BlcmF0b3I9PShUKiBhLCBjb25zdCBIYW5kbGU8VT4mIGIpIAoreworICAg
IHJldHVybiBhID09IGIuZ2V0KCk7IAorfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5h
bWUgVT4gaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBIYW5kbGU8VD4mIGEsIGNvbnN0IEhh
bmRsZTxVPiYgYikKK3sgCisgICAgcmV0dXJuIGEuZ2V0KCkgIT0gYi5nZXQoKTsgCit9CisKK3Rl
bXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBpbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNv
bnN0IEhhbmRsZTxUPiYgYSwgVSogYikKK3sKKyAgICByZXR1cm4gYS5nZXQoKSAhPSBiOyAKK30K
KwordGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+IGlubGluZSBib29sIG9wZXJhdG9y
IT0oVCogYSwgY29uc3QgSGFuZGxlPFU+JiBiKQoreyAKKyAgICByZXR1cm4gYSAhPSBiLmdldCgp
OyAKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+IGlubGluZSBib29sIG9w
ZXJhdG9yIT0oY29uc3QgSGFuZGxlPFQ+JiBhLCBKU1ZhbHVlIGIpCit7CisgICAgcmV0dXJuIGEu
Z2V0KCkgIT0gYjsgCit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBpbmxp
bmUgYm9vbCBvcGVyYXRvciE9KEpTVmFsdWUgYSwgY29uc3QgSGFuZGxlPFU+JiBiKQoreyAKKyAg
ICByZXR1cm4gYSAhPSBiLmdldCgpOyAKK30KKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9jb2xsZWN0b3IvaGFuZGxlcy9IYW5kbGVIZWFwLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9jb2xsZWN0b3IvaGFuZGxlcy9IYW5kbGVIZWFwLmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5jY2ZlOWNkMjkzZWMyOWMzNzJlYzViZmE0NTY5ZTI3ZDZjNTY1YWRkCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2NvbGxlY3Rvci9oYW5kbGVzL0hhbmRs
ZUhlYXAuY3BwCkBAIC0wLDAgKzEsMTExIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorCisjaW5jbHVkZSAiSGFuZGxlSGVhcC5oIgorCisjaW5jbHVkZSAiSlNDZWxsLmgiCisK
K25hbWVzcGFjZSBKU0MgeworCitIYW5kbGVIZWFwOjpIYW5kbGVIZWFwKEpTR2xvYmFsRGF0YSog
Z2xvYmFsRGF0YSkKKyAgICA6IG1fZ2xvYmFsRGF0YShnbG9iYWxEYXRhKQoreworICAgIGdyb3co
KTsKK30KKwordm9pZCBIYW5kbGVIZWFwOjpncm93KCkKK3sKKyAgICBOb2RlKiBibG9jayA9IG1f
YmxvY2tTdGFjay5ncm93KCk7CisgICAgZm9yIChpbnQgaSA9IG1fYmxvY2tTdGFjay5ibG9ja0xl
bmd0aCAtIDE7IGkgPj0gMDsgLS1pKSB7CisgICAgICAgIE5vZGUqIG5vZGUgPSAmYmxvY2tbaV07
CisgICAgICAgIG5ldyAobm9kZSkgTm9kZSh0aGlzKTsKKyAgICAgICAgbV9mcmVlTGlzdC5wdXNo
KG5vZGUpOworICAgIH0KK30KKwordm9pZCBIYW5kbGVIZWFwOjptYXJrU3Ryb25nSGFuZGxlcyhN
YXJrU3RhY2smIG1hcmtTdGFjaykKK3sKKyAgICBOb2RlKiBlbmQgPSBtX3N0cm9uZ0xpc3QuZW5k
KCk7CisgICAgZm9yIChOb2RlKiBub2RlID0gbV9zdHJvbmdMaXN0LmJlZ2luKCk7IG5vZGUgIT0g
ZW5kOyBub2RlID0gbm9kZS0+bmV4dCgpKQorICAgICAgICBtYXJrU3RhY2suZGVwcmVjYXRlZEFw
cGVuZChub2RlLT5zbG90KCkpOworfQorCit2b2lkIEhhbmRsZUhlYXA6OnVwZGF0ZUFmdGVyTWFy
aygpCit7CisgICAgTm9kZSogZW5kID0gbV93ZWFrTGlzdC5lbmQoKTsKKyAgICBmb3IgKE5vZGUq
IG5vZGUgPSBtX3dlYWtMaXN0LmJlZ2luKCk7IG5vZGUgIT0gZW5kOyBub2RlID0gbm9kZS0+bmV4
dCgpKSB7CisgICAgICAgIEpTVmFsdWUgdmFsdWUgPSAqbm9kZS0+c2xvdCgpOworICAgICAgICBp
ZiAoIXZhbHVlIHx8ICF2YWx1ZS5pc0NlbGwoKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAg
ICAgICBKU0NlbGwqIGNlbGwgPSB2YWx1ZS5hc0NlbGwoKTsKKyAgICAgICAgQVNTRVJUKCFjZWxs
IHx8IGNlbGwtPnN0cnVjdHVyZSgpKTsKKworICAgICAgICBpZiAoSGVhcDo6aXNNYXJrZWQoY2Vs
bCkpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBpZiAoRmluYWxpemVyIGZpbmFs
aXplciA9IG5vZGUtPmZpbmFsaXplcigpKQorICAgICAgICAgICAgZmluYWxpemVyKCptX2dsb2Jh
bERhdGEsIEhhbmRsZTxVbmtub3duPjo6d3JhcFNsb3Qobm9kZS0+c2xvdCgpKSk7CisKKyAgICAg
ICAgaWYgKG5vZGUtPmlzU2VsZkRlc3Ryb3lpbmcoKSkKKyAgICAgICAgICAgIGRlYWxsb2NhdGUo
dG9IYW5kbGUobm9kZSkpOworICAgICAgICBlbHNlCisgICAgICAgICAgICAqbm9kZS0+c2xvdCgp
ID0gSlNWYWx1ZSgpOworICAgIH0KK30KKyAgICAKK3ZvaWQgSGFuZGxlSGVhcDo6Y2xlYXJXZWFr
UG9pbnRlcnMoKQoreworICAgIE5vZGUqIGVuZCA9IG1fd2Vha0xpc3QuZW5kKCk7CisgICAgZm9y
IChOb2RlKiBub2RlID0gbV93ZWFrTGlzdC5iZWdpbigpOyBub2RlICE9IGVuZDsgbm9kZSA9IG5v
ZGUtPm5leHQoKSkgeworICAgICAgICBKU1ZhbHVlIHZhbHVlID0gKm5vZGUtPnNsb3QoKTsKKyAg
ICAgICAgaWYgKCF2YWx1ZSB8fCAhdmFsdWUuaXNDZWxsKCkpCisgICAgICAgICAgICBjb250aW51
ZTsKKyAgICAgICAgQVNTRVJUKHZhbHVlLmFzQ2VsbCgpLT5zdHJ1Y3R1cmUoKSk7CisKKyAgICAg
ICAgaWYgKEZpbmFsaXplciBmaW5hbGl6ZXIgPSBub2RlLT5maW5hbGl6ZXIoKSkKKyAgICAgICAg
ICAgIGZpbmFsaXplcigqbV9nbG9iYWxEYXRhLCBIYW5kbGU8VW5rbm93bj46OndyYXBTbG90KG5v
ZGUtPnNsb3QoKSkpOworICAgICAgICAqbm9kZS0+c2xvdCgpID0gSlNWYWx1ZSgpOworICAgIH0K
K30KKwordm9pZCBIYW5kbGVIZWFwOjp3cml0ZUJhcnJpZXIoSGFuZGxlU2xvdCBzbG90LCBjb25z
dCBKU1ZhbHVlJiB2YWx1ZSkKK3sKKyAgICBpZiAoc2xvdC0+aXNDZWxsKCkgPT0gdmFsdWUuaXND
ZWxsKCkgJiYgIXZhbHVlID09ICEqc2xvdCkKKyAgICAgICAgcmV0dXJuOworICAgIE5vZGUqIG5v
ZGUgPSB0b05vZGUoc2xvdCk7CisgICAgU2VudGluZWxMaW5rZWRMaXN0PE5vZGU+OjpyZW1vdmUo
bm9kZSk7CisgICAgaWYgKCF2YWx1ZS5pc0NlbGwoKSB8fCAhdmFsdWUpIHsKKyAgICAgICAgbV9p
bW1lZGlhdGVMaXN0LnB1c2gobm9kZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYg
KG5vZGUtPmlzV2VhaygpKQorICAgICAgICBtX3dlYWtMaXN0LnB1c2gobm9kZSk7CisgICAgZWxz
ZQorICAgICAgICBtX3N0cm9uZ0xpc3QucHVzaChub2RlKTsKK30KKworfQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2NvbGxlY3Rvci9oYW5kbGVzL0hhbmRsZUhlYXAuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9jb2xsZWN0b3IvaGFuZGxlcy9IYW5kbGVIZWFwLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZDk0ZjMxNzZiMDA1ZDBkMWZjMDdiNjk1YzAwOTNlNDYyYjk2NzQ2NQotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9jb2xsZWN0b3IvaGFuZGxlcy9IYW5kbGVI
ZWFwLmgKQEAgLTAsMCArMSwyNDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEhhbmRsZUhlYXBf
aAorI2RlZmluZSBIYW5kbGVIZWFwX2gKKworI2luY2x1ZGUgIkJsb2NrU3RhY2suaCIKKyNpbmNs
dWRlICJIYW5kbGUuaCIKKyNpbmNsdWRlICJTZW50aW5lbExpbmtlZExpc3QuaCIKKyNpbmNsdWRl
ICJTaW5nbHlMaW5rZWRMaXN0LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBIYW5kbGVI
ZWFwOworY2xhc3MgSlNHbG9iYWxEYXRhOworY2xhc3MgSlNWYWx1ZTsKK2NsYXNzIE1hcmtTdGFj
azsKKwordHlwZWRlZiB2b2lkICgqRmluYWxpemVyKShKU0dsb2JhbERhdGEmLCBIYW5kbGU8VW5r
bm93bj4pOworCitjbGFzcyBIYW5kbGVIZWFwIHsKK3ByaXZhdGU6CitwdWJsaWM6CisgICAgc3Rh
dGljIEhhbmRsZUhlYXAqIGhlYXBGb3IoSGFuZGxlU2xvdCk7CisKKyAgICBIYW5kbGVIZWFwKEpT
R2xvYmFsRGF0YSopOworCisgICAgSGFuZGxlU2xvdCBhbGxvY2F0ZSgpOworICAgIHZvaWQgZGVh
bGxvY2F0ZShIYW5kbGVTbG90KTsKKyAgICAKKyAgICB2b2lkIG1ha2VXZWFrKEhhbmRsZVNsb3Qs
IEZpbmFsaXplcik7CisgICAgdm9pZCBtYWtlU2VsZkRlc3Ryb3lpbmcoSGFuZGxlU2xvdCwgRmlu
YWxpemVyKTsKKworICAgIHZvaWQgbWFya1N0cm9uZ0hhbmRsZXMoTWFya1N0YWNrJik7CisgICAg
dm9pZCB1cGRhdGVBZnRlck1hcmsoKTsKKyAgICAKKyAgICAvLyBTaG91bGQgb25seSBiZSBjYWxs
ZWQgZHVyaW5nIHRlYXJkb3duLgorICAgIHZvaWQgY2xlYXJXZWFrUG9pbnRlcnMoKTsKKworICAg
IHZvaWQgd3JpdGVCYXJyaWVyKEhhbmRsZVNsb3QsIGNvbnN0IEpTVmFsdWUmKTsKKworcHJpdmF0
ZToKKyAgICB0eXBlZGVmIHVpbnRwdHJfdCBIYW5kbGVIZWFwV2l0aEZsYWdzOworICAgIGVudW0g
eyBGbGFnc01hc2sgPSAzLCBXZWFrRmxhZyA9IDEsIFNlbGZEZXN0cm95aW5nRmxhZyA9IDIgfTsK
KyAgICBjbGFzcyBOb2RlIHsKKyAgICBwdWJsaWM6CisgICAgICAgIE5vZGUoU2VudGluZWxUYWcp
OworICAgICAgICBOb2RlKEhhbmRsZUhlYXAqKTsKKyAgICAgICAgCisgICAgICAgIEhhbmRsZVNs
b3Qgc2xvdCgpOworICAgICAgICBIYW5kbGVIZWFwKiBoYW5kbGVIZWFwKCk7CisKKyAgICAgICAg
dm9pZCBzZXRGaW5hbGl6ZXIoRmluYWxpemVyKTsKKyAgICAgICAgRmluYWxpemVyIGZpbmFsaXpl
cigpOworCisgICAgICAgIHZvaWQgc2V0UHJldihOb2RlKik7CisgICAgICAgIE5vZGUqIHByZXYo
KTsKKworICAgICAgICB2b2lkIHNldE5leHQoTm9kZSopOworICAgICAgICBOb2RlKiBuZXh0KCk7
CisKKyAgICAgICAgYm9vbCBpc1dlYWsoKTsKKyAgICAgICAgdm9pZCBtYWtlV2VhaygpOworICAg
ICAgICAKKyAgICAgICAgYm9vbCBpc1NlbGZEZXN0cm95aW5nKCk7CisgICAgICAgIHZvaWQgbWFr
ZVNlbGZEZXN0cm95aW5nKCk7CisKKyAgICBwcml2YXRlOgorICAgICAgICBKU1ZhbHVlIG1fdmFs
dWU7CisgICAgICAgIEhhbmRsZUhlYXBXaXRoRmxhZ3MgbV9oYW5kbGVIZWFwV2l0aEZsYWdzOwor
ICAgICAgICBGaW5hbGl6ZXIgbV9maW5hbGl6ZXI7CisgICAgICAgIE5vZGUqIG1fcHJldjsKKyAg
ICAgICAgTm9kZSogbV9uZXh0OworICAgIH07CisKKyAgICBzdGF0aWMgSGFuZGxlU2xvdCB0b0hh
bmRsZShOb2RlKik7CisgICAgc3RhdGljIE5vZGUqIHRvTm9kZShIYW5kbGVTbG90KTsKKworICAg
IHZvaWQgZ3JvdygpOworCisgICAgSlNHbG9iYWxEYXRhKiBtX2dsb2JhbERhdGE7CisgICAgQmxv
Y2tTdGFjazxOb2RlPiBtX2Jsb2NrU3RhY2s7CisKKyAgICBTZW50aW5lbExpbmtlZExpc3Q8Tm9k
ZT4gbV9zdHJvbmdMaXN0OworICAgIFNlbnRpbmVsTGlua2VkTGlzdDxOb2RlPiBtX3dlYWtMaXN0
OworICAgIFNlbnRpbmVsTGlua2VkTGlzdDxOb2RlPiBtX2ltbWVkaWF0ZUxpc3Q7CisgICAgU2lu
Z2x5TGlua2VkTGlzdDxOb2RlPiBtX2ZyZWVMaXN0OworfTsKKworaW5saW5lIEhhbmRsZUhlYXAq
IEhhbmRsZUhlYXA6OmhlYXBGb3IoSGFuZGxlU2xvdCBoYW5kbGUpCit7CisgICAgcmV0dXJuIHRv
Tm9kZShoYW5kbGUpLT5oYW5kbGVIZWFwKCk7Cit9CisKK2lubGluZSBIYW5kbGVTbG90IEhhbmRs
ZUhlYXA6OnRvSGFuZGxlKE5vZGUqIG5vZGUpCit7CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nh
c3Q8SGFuZGxlU2xvdD4obm9kZSk7Cit9CisKK2lubGluZSBIYW5kbGVIZWFwOjpOb2RlKiBIYW5k
bGVIZWFwOjp0b05vZGUoSGFuZGxlU2xvdCBoYW5kbGUpCit7CisgICAgcmV0dXJuIHJlaW50ZXJw
cmV0X2Nhc3Q8Tm9kZSo+KGhhbmRsZSk7Cit9CisKK2lubGluZSBIYW5kbGVTbG90IEhhbmRsZUhl
YXA6OmFsbG9jYXRlKCkKK3sKKyAgICBpZiAobV9mcmVlTGlzdC5pc0VtcHR5KCkpCisgICAgICAg
IGdyb3coKTsKKworICAgIE5vZGUqIG5vZGUgPSBtX2ZyZWVMaXN0LnBvcCgpOworICAgIG5ldyAo
bm9kZSkgTm9kZSh0aGlzKTsKKyAgICBtX2ltbWVkaWF0ZUxpc3QucHVzaChub2RlKTsKKyAgICBy
ZXR1cm4gdG9IYW5kbGUobm9kZSk7Cit9CisKK2lubGluZSB2b2lkIEhhbmRsZUhlYXA6OmRlYWxs
b2NhdGUoSGFuZGxlU2xvdCBoYW5kbGUpCit7CisgICAgTm9kZSogbm9kZSA9IHRvTm9kZShoYW5k
bGUpOworICAgIFNlbnRpbmVsTGlua2VkTGlzdDxOb2RlPjo6cmVtb3ZlKG5vZGUpOworICAgIG1f
ZnJlZUxpc3QucHVzaChub2RlKTsKK30KKworaW5saW5lIHZvaWQgSGFuZGxlSGVhcDo6bWFrZVdl
YWsoSGFuZGxlU2xvdCBoYW5kbGUsIEZpbmFsaXplciBmaW5hbGl6ZXIpCit7CisgICAgTm9kZSog
bm9kZSA9IHRvTm9kZShoYW5kbGUpOworICAgIFNlbnRpbmVsTGlua2VkTGlzdDxOb2RlPjo6cmVt
b3ZlKG5vZGUpOworICAgIG5vZGUtPnNldEZpbmFsaXplcihmaW5hbGl6ZXIpOworICAgIG5vZGUt
Pm1ha2VXZWFrKCk7CisgICAgaWYgKGhhbmRsZS0+aXNDZWxsKCkgJiYgKmhhbmRsZSkKKyAgICAg
ICAgbV93ZWFrTGlzdC5wdXNoKG5vZGUpOworICAgIGVsc2UKKyAgICAgICAgbV9pbW1lZGlhdGVM
aXN0LnB1c2gobm9kZSk7Cit9CisKK2lubGluZSB2b2lkIEhhbmRsZUhlYXA6Om1ha2VTZWxmRGVz
dHJveWluZyhIYW5kbGVTbG90IGhhbmRsZSwgRmluYWxpemVyIGZpbmFsaXplcikKK3sKKyAgICBt
YWtlV2VhayhoYW5kbGUsIGZpbmFsaXplcik7CisgICAgTm9kZSogbm9kZSA9IHRvTm9kZShoYW5k
bGUpOworICAgIFNlbnRpbmVsTGlua2VkTGlzdDxOb2RlPjo6cmVtb3ZlKG5vZGUpOworICAgIG5v
ZGUtPm1ha2VTZWxmRGVzdHJveWluZygpOworfQorCitpbmxpbmUgSGFuZGxlSGVhcDo6Tm9kZTo6
Tm9kZShIYW5kbGVIZWFwKiBoYW5kbGVIZWFwKQorICAgIDogbV9oYW5kbGVIZWFwV2l0aEZsYWdz
KHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90PihoYW5kbGVIZWFwKSkKKyAgICAsIG1fZmluYWxp
emVyKDApCit7Cit9CisKK2lubGluZSBIYW5kbGVIZWFwOjpOb2RlOjpOb2RlKFNlbnRpbmVsVGFn
KQorICAgIDogbV9oYW5kbGVIZWFwV2l0aEZsYWdzKDApCisgICAgLCBtX2ZpbmFsaXplcigwKQor
eworfQorCitpbmxpbmUgSGFuZGxlU2xvdCBIYW5kbGVIZWFwOjpOb2RlOjpzbG90KCkKK3sKKyAg
ICByZXR1cm4gJm1fdmFsdWU7Cit9CisKK2lubGluZSBIYW5kbGVIZWFwKiBIYW5kbGVIZWFwOjpO
b2RlOjpoYW5kbGVIZWFwKCkKK3sKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxIYW5kbGVI
ZWFwKj4obV9oYW5kbGVIZWFwV2l0aEZsYWdzICYgfkZsYWdzTWFzayk7Cit9CisKK2lubGluZSB2
b2lkIEhhbmRsZUhlYXA6Ok5vZGU6OnNldEZpbmFsaXplcihGaW5hbGl6ZXIgZmluYWxpemVyKQor
eworICAgIG1fZmluYWxpemVyID0gZmluYWxpemVyOworfQorCitpbmxpbmUgdm9pZCBIYW5kbGVI
ZWFwOjpOb2RlOjptYWtlV2VhaygpCit7CisgICAgQVNTRVJUKCEobV9oYW5kbGVIZWFwV2l0aEZs
YWdzICYgV2Vha0ZsYWcpKTsKKyAgICBtX2hhbmRsZUhlYXBXaXRoRmxhZ3MgfD0gV2Vha0ZsYWc7
Cit9CisKK2lubGluZSBib29sIEhhbmRsZUhlYXA6Ok5vZGU6OmlzV2VhaygpCit7CisgICAgcmV0
dXJuICEhKG1faGFuZGxlSGVhcFdpdGhGbGFncyAmIFdlYWtGbGFnKTsKK30KKworaW5saW5lIHZv
aWQgSGFuZGxlSGVhcDo6Tm9kZTo6bWFrZVNlbGZEZXN0cm95aW5nKCkKK3sKKyAgICBBU1NFUlQo
bV9oYW5kbGVIZWFwV2l0aEZsYWdzICYgV2Vha0ZsYWcpOworICAgIEFTU0VSVCghKG1faGFuZGxl
SGVhcFdpdGhGbGFncyAmIFNlbGZEZXN0cm95aW5nRmxhZykpOworICAgIG1faGFuZGxlSGVhcFdp
dGhGbGFncyB8PSBTZWxmRGVzdHJveWluZ0ZsYWc7Cit9CisKK2lubGluZSBib29sIEhhbmRsZUhl
YXA6Ok5vZGU6OmlzU2VsZkRlc3Ryb3lpbmcoKQoreworICAgIHJldHVybiAhIShtX2hhbmRsZUhl
YXBXaXRoRmxhZ3MgJiBTZWxmRGVzdHJveWluZ0ZsYWcpOworfQorCitpbmxpbmUgRmluYWxpemVy
IEhhbmRsZUhlYXA6Ok5vZGU6OmZpbmFsaXplcigpCit7CisgICAgcmV0dXJuIG1fZmluYWxpemVy
OworfQorCitpbmxpbmUgdm9pZCBIYW5kbGVIZWFwOjpOb2RlOjpzZXRQcmV2KE5vZGUqIHByZXYp
Cit7CisgICAgbV9wcmV2ID0gcHJldjsKK30KKworaW5saW5lIEhhbmRsZUhlYXA6Ok5vZGUqIEhh
bmRsZUhlYXA6Ok5vZGU6OnByZXYoKQoreworICAgIHJldHVybiBtX3ByZXY7Cit9CisKK2lubGlu
ZSB2b2lkIEhhbmRsZUhlYXA6Ok5vZGU6OnNldE5leHQoTm9kZSogbmV4dCkKK3sKKyAgICBtX25l
eHQgPSBuZXh0OworfQorCitpbmxpbmUgSGFuZGxlSGVhcDo6Tm9kZSogSGFuZGxlSGVhcDo6Tm9k
ZTo6bmV4dCgpCit7CisgICAgcmV0dXJuIG1fbmV4dDsKK30KKworfQorCisjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9jb2xsZWN0b3IvaGFuZGxlcy9TZW50aW5lbExp
bmtlZExpc3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9jb2xsZWN0b3IvaGFuZGxlcy9TZW50
aW5lbExpbmtlZExpc3QuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45MTMzOTUxYTdmNWY3NzZlYzBmMWY0MDA3Y2Uw
YzkzNTYwNzBmNWVhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Nv
bGxlY3Rvci9oYW5kbGVzL1NlbnRpbmVsTGlua2VkTGlzdC5oCkBAIC0wLDAgKzEsMTAzIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworLyoKKyAgICBBIFNlbnRpbmVsTGlua2VkTGlzdCBpcyBhIGxpbmtlZCBsaXN0
IHdpdGggZHVtbXkgaGVhZCBhbmQgdGFpbCBzZW50aW5lbHMsCisgICAgd2hpY2ggYWxsb3cgZm9y
IGJyYW5jaC1sZXNzIGluc2VydGlvbiBhbmQgcmVtb3ZhbCwgYW5kIHJlbW92YWwgd2l0aG91dCBh
CisgICAgcG9pbnRlciB0byB0aGUgbGlzdC4KKyAgICAKKyAgICBSZXF1aXJlczogTm9kZSBpcyBh
IGNvbmNyZXRlIGNsYXNzIHdpdGg6CisgICAgICAgIE5vZGUoU2VudGluZWxUYWcpOworICAgICAg
ICB2b2lkIHNldFByZXYoTm9kZSopOworICAgICAgICBOb2RlKiBwcmV2KCk7CisgICAgICAgIHZv
aWQgc2V0TmV4dChOb2RlKik7CisgICAgICAgIE5vZGUqIG5leHQoKTsKKyovCisKK25hbWVzcGFj
ZSBKU0MgeworCitlbnVtIFNlbnRpbmVsVGFnIHsgU2VudGluZWwgfTsKKwordGVtcGxhdGUgPHR5
cGVuYW1lIE5vZGU+IGNsYXNzIFNlbnRpbmVsTGlua2VkTGlzdCB7CitwdWJsaWM6CisgICAgdHlw
ZWRlZiBOb2RlKiBpdGVyYXRvcjsKKworICAgIFNlbnRpbmVsTGlua2VkTGlzdCgpOworCisgICAg
dm9pZCBwdXNoKE5vZGUqKTsKKyAgICBzdGF0aWMgdm9pZCByZW1vdmUoTm9kZSopOworCisgICAg
aXRlcmF0b3IgYmVnaW4oKTsKKyAgICBpdGVyYXRvciBlbmQoKTsKKworcHJpdmF0ZToKKyAgICBO
b2RlIG1faGVhZFNlbnRpbmVsOworICAgIE5vZGUgbV90YWlsU2VudGluZWw7Cit9OworCit0ZW1w
bGF0ZSA8dHlwZW5hbWUgTm9kZT4gaW5saW5lIFNlbnRpbmVsTGlua2VkTGlzdDxOb2RlPjo6U2Vu
dGluZWxMaW5rZWRMaXN0KCkKKyAgICA6IG1faGVhZFNlbnRpbmVsKFNlbnRpbmVsKQorICAgICwg
bV90YWlsU2VudGluZWwoU2VudGluZWwpCit7CisgICAgbV9oZWFkU2VudGluZWwuc2V0TmV4dCgm
bV90YWlsU2VudGluZWwpOworICAgIG1faGVhZFNlbnRpbmVsLnNldFByZXYoMCk7CisKKyAgICBt
X3RhaWxTZW50aW5lbC5zZXRQcmV2KCZtX2hlYWRTZW50aW5lbCk7CisgICAgbV90YWlsU2VudGlu
ZWwuc2V0TmV4dCgwKTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIE5vZGU+IGlubGluZSB0eXBl
bmFtZSBTZW50aW5lbExpbmtlZExpc3Q8Tm9kZT46Oml0ZXJhdG9yIFNlbnRpbmVsTGlua2VkTGlz
dDxOb2RlPjo6YmVnaW4oKQoreworICAgIHJldHVybiBtX2hlYWRTZW50aW5lbC5uZXh0KCk7Cit9
CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBOb2RlPiBpbmxpbmUgdHlwZW5hbWUgU2VudGluZWxMaW5r
ZWRMaXN0PE5vZGU+OjppdGVyYXRvciBTZW50aW5lbExpbmtlZExpc3Q8Tm9kZT46OmVuZCgpCit7
CisgICAgcmV0dXJuICZtX3RhaWxTZW50aW5lbDsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIE5v
ZGU+IGlubGluZSB2b2lkIFNlbnRpbmVsTGlua2VkTGlzdDxOb2RlPjo6cHVzaChOb2RlKiBub2Rl
KQoreworICAgIEFTU0VSVChub2RlKTsKKyAgICBOb2RlKiBwcmV2ID0gJm1faGVhZFNlbnRpbmVs
OworICAgIE5vZGUqIG5leHQgPSBtX2hlYWRTZW50aW5lbC5uZXh0KCk7CisKKyAgICBub2RlLT5z
ZXRQcmV2KHByZXYpOworICAgIG5vZGUtPnNldE5leHQobmV4dCk7CisKKyAgICBwcmV2LT5zZXRO
ZXh0KG5vZGUpOworICAgIG5leHQtPnNldFByZXYobm9kZSk7Cit9CisKK3RlbXBsYXRlIDx0eXBl
bmFtZSBOb2RlPiBpbmxpbmUgdm9pZCBTZW50aW5lbExpbmtlZExpc3Q8Tm9kZT46OnJlbW92ZShO
b2RlKiBub2RlKQoreworICAgIE5vZGUqIHByZXYgPSBub2RlLT5wcmV2KCk7CisgICAgTm9kZSog
bmV4dCA9IG5vZGUtPm5leHQoKTsKKworICAgIHByZXYtPnNldE5leHQobmV4dCk7CisgICAgbmV4
dC0+c2V0UHJldihwcmV2KTsKK30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2NvbGxlY3Rvci9oYW5kbGVzL1NpbmdseUxpbmtlZExpc3QuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9jb2xsZWN0b3IvaGFuZGxlcy9TaW5nbHlMaW5rZWRMaXN0LmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MTEzOTBlYTQ1ZTBiNDk4MDE5NmVmNTdiNzkwNTJjNTgwNjRhNTQ3MwotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9jb2xsZWN0b3IvaGFuZGxlcy9TaW5nbHlMaW5rZWRM
aXN0LmgKQEAgLTAsMCArMSw3MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgU2luZ2x5TGlua2Vk
TGlzdF9oCisjZGVmaW5lIFNpbmdseUxpbmtlZExpc3RfaAorCituYW1lc3BhY2UgSlNDIHsKKwor
dGVtcGxhdGUgPHR5cGVuYW1lIE5vZGU+IGNsYXNzIFNpbmdseUxpbmtlZExpc3QgeworcHVibGlj
OgorICAgIFNpbmdseUxpbmtlZExpc3QoKTsKKyAgICAKKyAgICBib29sIGlzRW1wdHkoKTsKKwor
ICAgIHZvaWQgcHVzaChOb2RlKik7CisgICAgTm9kZSogcG9wKCk7CisKK3ByaXZhdGU6CisgICAg
Tm9kZSogbV9oZWFkOworfTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIE5vZGU+IGlubGluZSBTaW5n
bHlMaW5rZWRMaXN0PE5vZGU+OjpTaW5nbHlMaW5rZWRMaXN0KCkKKyAgICA6IG1faGVhZCgwKQor
eworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgTm9kZT4gaW5saW5lIGJvb2wgU2luZ2x5TGlua2Vk
TGlzdDxOb2RlPjo6aXNFbXB0eSgpCit7CisgICAgcmV0dXJuICFtX2hlYWQ7Cit9CisKK3RlbXBs
YXRlIDx0eXBlbmFtZSBOb2RlPiBpbmxpbmUgdm9pZCBTaW5nbHlMaW5rZWRMaXN0PE5vZGU+Ojpw
dXNoKE5vZGUqIG5vZGUpCit7CisgICAgQVNTRVJUKG5vZGUpOworICAgIG5vZGUtPnNldE5leHQo
bV9oZWFkKTsKKyAgICBtX2hlYWQgPSBub2RlOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgTm9k
ZT4gaW5saW5lIE5vZGUqIFNpbmdseUxpbmtlZExpc3Q8Tm9kZT46OnBvcCgpCit7CisgICAgTm9k
ZSogdG1wID0gbV9oZWFkOworICAgIG1faGVhZCA9IG1faGVhZC0+bmV4dCgpOworICAgIHJldHVy
biB0bXA7Cit9CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
dGVycHJldGVyL0ludGVycHJldGVyLmNwcAppbmRleCBjMjYxMmFjMGI5YjYxNWQ2YzUxZGE3MjVl
ZTIxYmQ5YzAyMDQ0M2JjLi42MjQ0NmU1NWM1MjgyOTAwOGM1N2Y3ZTQ2OWE0MmJhOWQ5MmI1NDVj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0
ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRl
ci5jcHAKQEAgLTQxOSw5ICs0MTksMTAgQEAgTkVWRVJfSU5MSU5FIEpTVmFsdWUgSW50ZXJwcmV0
ZXI6OmNhbGxFdmFsKENhbGxGcmFtZSogY2FsbEZyYW1lLCBSZWdpc3RlckZpbGUqIHIKICAgICBy
ZXR1cm4gY2FsbEZyYW1lLT5nbG9iYWxEYXRhKCkuaW50ZXJwcmV0ZXItPmV4ZWN1dGUoZXZhbC5n
ZXQoKSwgY2FsbEZyYW1lLCBjYWxsRnJhbWUtPnVuY2hlY2tlZFIoY29kZUJsb2NrLT50aGlzUmVn
aXN0ZXIoKSkuanNWYWx1ZSgpLnRvVGhpc09iamVjdChjYWxsRnJhbWUpLCBjYWxsRnJhbWUtPnJl
Z2lzdGVycygpIC0gcmVnaXN0ZXJGaWxlLT5zdGFydCgpICsgcmVnaXN0ZXJPZmZzZXQsIHNjb3Bl
Q2hhaW4pOwogfQogCi1JbnRlcnByZXRlcjo6SW50ZXJwcmV0ZXIoKQorSW50ZXJwcmV0ZXI6Oklu
dGVycHJldGVyKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSkKICAgICA6IG1fc2FtcGxlRW50cnlE
ZXB0aCgwKQogICAgICwgbV9yZWVudHJ5RGVwdGgoMCkKKyAgICAsIG1fcmVnaXN0ZXJGaWxlKGds
b2JhbERhdGEpCiB7CiAjaWYgRU5BQkxFKENPTVBVVEVEX0dPVE9fSU5URVJQUkVURVIpCiAgICAg
cHJpdmF0ZUV4ZWN1dGUoSW5pdGlhbGl6ZUFuZFJldHVybiwgMCwgMCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oCmluZGV4IDc1M2Q5MGU0YWU0
MjMyNzUxMzJlNjAyYjQwZWVkYzczY2FlMzcwMDEuLjhmMjlmNjBiMzJkNjJiYmI5Mzc4ZWEzZDYw
ZWJmNGZkOGEyNzhkZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnBy
ZXRlci9JbnRlcnByZXRlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRl
ci9JbnRlcnByZXRlci5oCkBAIC02OSw3ICs2OSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICBmcmllbmQgY2xhc3MgSklUOwogICAgICAgICBmcmllbmQgY2xhc3MgQ2FjaGVkQ2FsbDsKICAg
ICBwdWJsaWM6Ci0gICAgICAgIEludGVycHJldGVyKCk7CisgICAgICAgIEludGVycHJldGVyKEpT
R2xvYmFsRGF0YSYpOwogCiAgICAgICAgIFJlZ2lzdGVyRmlsZSYgcmVnaXN0ZXJGaWxlKCkgeyBy
ZXR1cm4gbV9yZWdpc3RlckZpbGU7IH0KICAgICAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvUmVnaXN0ZXJGaWxlLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnRlcnByZXRlci9SZWdpc3RlckZpbGUuY3BwCmluZGV4IDRjMzc2NzY2MmM5ZWQx
NzM1OTRjYmU1N2QzNDFlNTlkNGJkNGZkYTMuLmY1YzAyMTg5ZjU5NGM1YjBhMDMzYzM2MjQzOGQ1
YWJkNTA2OGIxMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRl
ci9SZWdpc3RlckZpbGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRl
ci9SZWdpc3RlckZpbGUuY3BwCkBAIC0yOSw2ICsyOSw4IEBACiAjaW5jbHVkZSAiY29uZmlnLmgi
CiAjaW5jbHVkZSAiUmVnaXN0ZXJGaWxlLmgiCiAKKyNpbmNsdWRlICJJbnRlcnByZXRlci5oIgor
I2luY2x1ZGUgIkpTR2xvYmFsRGF0YS5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCiAK
IG5hbWVzcGFjZSBKU0MgewpAQCAtNjIsOSArNjQsMTAgQEAgdm9pZCBSZWdpc3RlckZpbGU6OnNl
dEdsb2JhbE9iamVjdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogICAgIG1fZ2xvYmFs
T2JqZWN0ID0gZ2xvYmFsT2JqZWN0OwogfQogCi1ib29sIFJlZ2lzdGVyRmlsZTo6Y2xlYXJHbG9i
YWxPYmplY3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKK3ZvaWQgUmVnaXN0ZXJGaWxl
OjpnbG9iYWxPYmplY3RDb2xsZWN0ZWQoSlNHbG9iYWxEYXRhJiwgSGFuZGxlPFVua25vd24+IHZh
bHVlKQogewotICAgIHJldHVybiBtX2dsb2JhbE9iamVjdC5jbGVhcihnbG9iYWxPYmplY3QpOwor
ICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBhc0dsb2JhbE9iamVjdCh2YWx1ZS5n
ZXQoKSk7CisgICAgZ2xvYmFsT2JqZWN0LT5nbG9iYWxEYXRhKCkuaW50ZXJwcmV0ZXItPnJlZ2lz
dGVyRmlsZSgpLnNldE51bUdsb2JhbHMoMCk7CiB9CiAKIEpTR2xvYmFsT2JqZWN0KiBSZWdpc3Rl
ckZpbGU6Omdsb2JhbE9iamVjdCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW50ZXJwcmV0ZXIvUmVnaXN0ZXJGaWxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJw
cmV0ZXIvUmVnaXN0ZXJGaWxlLmgKaW5kZXggZTljNmRmMWU1Yzc5Y2E3ZmRmMjlkNWE4NGZlMWMw
MzUyMmEyODM2ZC4uZWJmZDQ2ZGVhYjljOTdmYjA0M2M2NDkxOTU4OWY3YjU1MzcyN2ZlYiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1JlZ2lzdGVyRmlsZS5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9SZWdpc3RlckZpbGUuaApA
QCAtMTEyLDcgKzExMiw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAvLyBBbGxvdyA4ayBv
ZiBleGNlc3MgcmVnaXN0ZXJzIGJlZm9yZSB3ZSBzdGFydCB0cnlpbmcgdG8gcmVhcCB0aGUgcmVn
aXN0ZXJmaWxlCiAgICAgICAgIHN0YXRpYyBjb25zdCBwdHJkaWZmX3QgbWF4RXhjZXNzQ2FwYWNp
dHkgPSA4ICogMTAyNDsKIAotICAgICAgICBSZWdpc3RlckZpbGUoc2l6ZV90IGNhcGFjaXR5ID0g
ZGVmYXVsdENhcGFjaXR5LCBzaXplX3QgbWF4R2xvYmFscyA9IGRlZmF1bHRNYXhHbG9iYWxzKTsK
KyAgICAgICAgUmVnaXN0ZXJGaWxlKEpTR2xvYmFsRGF0YSYsIHNpemVfdCBjYXBhY2l0eSA9IGRl
ZmF1bHRDYXBhY2l0eSwgc2l6ZV90IG1heEdsb2JhbHMgPSBkZWZhdWx0TWF4R2xvYmFscyk7CiAg
ICAgICAgIH5SZWdpc3RlckZpbGUoKTsKIAogICAgICAgICBSZWdpc3Rlciogc3RhcnQoKSBjb25z
dCB7IHJldHVybiBtX3N0YXJ0OyB9CkBAIC0xMjAsNyArMTIwLDcgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgIHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9lbmQgLSBtX3N0YXJ0OyB9
CiAKICAgICAgICAgdm9pZCBzZXRHbG9iYWxPYmplY3QoSlNHbG9iYWxPYmplY3QqKTsKLSAgICAg
ICAgYm9vbCBjbGVhckdsb2JhbE9iamVjdChKU0dsb2JhbE9iamVjdCopOworICAgICAgICBzdGF0
aWMgdm9pZCBnbG9iYWxPYmplY3RDb2xsZWN0ZWQoSlNHbG9iYWxEYXRhJiwgSGFuZGxlPFVua25v
d24+KTsKICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCgpOwogCiAgICAgICAg
IGJvb2wgZ3JvdyhSZWdpc3RlciogbmV3RW5kKTsKQEAgLTE1MCwxNiArMTUwLDE2IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICBXZWFrR0NQdHI8SlNHbG9iYWxPYmplY3Q+IG1fZ2xvYmFsT2Jq
ZWN0OyAvLyBUaGUgZ2xvYmFsIG9iamVjdCB3aG9zZSB2YXJzIGFyZSBjdXJyZW50bHkgc3RvcmVk
IGluIHRoZSByZWdpc3RlciBmaWxlLgogICAgIH07CiAKLSAgICBpbmxpbmUgUmVnaXN0ZXJGaWxl
OjpSZWdpc3RlckZpbGUoc2l6ZV90IGNhcGFjaXR5LCBzaXplX3QgbWF4R2xvYmFscykKKyAgICBp
bmxpbmUgUmVnaXN0ZXJGaWxlOjpSZWdpc3RlckZpbGUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRh
LCBzaXplX3QgY2FwYWNpdHksIHNpemVfdCBtYXhHbG9iYWxzKQogICAgICAgICA6IG1fbnVtR2xv
YmFscygwKQogICAgICAgICAsIG1fbWF4R2xvYmFscyhtYXhHbG9iYWxzKQogICAgICAgICAsIG1f
c3RhcnQoMCkKICAgICAgICAgLCBtX2VuZCgwKQogICAgICAgICAsIG1fbWF4KDApCisgICAgICAg
ICwgbV9nbG9iYWxPYmplY3QoZ2xvYmFsRGF0YSwgZ2xvYmFsT2JqZWN0Q29sbGVjdGVkKQogICAg
IHsKICAgICAgICAgQVNTRVJUKG1heEdsb2JhbHMgJiYgaXNQYWdlQWxpZ25lZChtYXhHbG9iYWxz
KSk7CiAgICAgICAgIEFTU0VSVChjYXBhY2l0eSAmJiBpc1BhZ2VBbGlnbmVkKGNhcGFjaXR5KSk7
Ci0KICAgICAgICAgc2l6ZV90IGJ1ZmZlckxlbmd0aCA9IChjYXBhY2l0eSArIG1heEdsb2JhbHMp
ICogc2l6ZW9mKFJlZ2lzdGVyKTsKICAgICAgICAgbV9yZXNlcnZhdGlvbiA9IFBhZ2VSZXNlcnZh
dGlvbjo6cmVzZXJ2ZShyb3VuZFVwQWxsb2NhdGlvblNpemUoYnVmZmVyTGVuZ3RoLCBjb21taXRT
aXplKSwgT1NBbGxvY2F0b3I6OkpTVk1TdGFja1BhZ2VzKTsKICAgICAgICAgdm9pZCogYmFzZSA9
IG1fcmVzZXJ2YXRpb24uYmFzZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvR0NIYW5kbGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR0NI
YW5kbGUuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyOTdkZTM4Y2UwYzFmOTVh
NDE1ZDIwMjFhN2I2ZmFhZTU4ZTZjN2Q0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dDSGFuZGxlLmNw
cAorKysgL2Rldi9udWxsCkBAIC0xLDg2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAi
Y29uZmlnLmgiCi0jaW5jbHVkZSAiR0NIYW5kbGUuaCIKLQotbmFtZXNwYWNlIEpTQyB7Ci0KLVdl
YWtHQ0hhbmRsZVBvb2wqIFdlYWtHQ0hhbmRsZTo6cG9vbCgpCi17Ci0gICAgdWludHB0cl90IHBv
b2wgPSAocmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KHRoaXMpICYgV2Vha0dDSGFuZGxlUG9v
bDo6cG9vbE1hc2spOwotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFdlYWtHQ0hhbmRsZVBv
b2wqPihwb29sKTsKLX0KLQotV2Vha0dDSGFuZGxlUG9vbDo6V2Vha0dDSGFuZGxlUG9vbCgpCi17
Ci0gICAgQVNTRVJUKHNpemVvZihXZWFrR0NIYW5kbGVQb29sKSA8PSBXZWFrR0NIYW5kbGVQb29s
Ojpwb29sU2l6ZSk7Ci0gICAgbV9lbnRyaWVzU2l6ZSA9IDA7Ci0gICAgbV9pbml0aWFsQWxsb2Mg
PSAxOwotICAgIG1fZW50cmllc1swXS5zZXROZXh0SW5GcmVlTGlzdCgwKTsKLX0KLQotV2Vha0dD
SGFuZGxlKiBXZWFrR0NIYW5kbGVQb29sOjphbGxvY2F0ZShKU0NlbGwqIGNlbGwpCi17Ci0gICAg
QVNTRVJUKGNlbGwpOwotICAgIEFTU0VSVChtX2VudHJpZXNbMF0uaXNOZXh0KCkpOwotICAgIHVu
c2lnbmVkIGZyZWVMaXN0ID0gbV9lbnRyaWVzWzBdLmdldE5leHRJbkZyZWVMaXN0KCk7Ci0gICAg
QVNTRVJUKGZyZWVMaXN0IDwgV2Vha0dDSGFuZGxlUG9vbDo6bnVtUG9vbEVudHJpZXMpOwotICAg
IEFTU0VSVChtX2VudHJpZXNTaXplIDwgV2Vha0dDSGFuZGxlUG9vbDo6bnVtUG9vbEVudHJpZXMp
OwotCi0gICAgaWYgKG1fZW50cmllc1NpemUgPT0gV2Vha0dDSGFuZGxlUG9vbDo6bnVtUG9vbEVu
dHJpZXMgLSAxKQotICAgICAgICByZXR1cm4gMDsKLQotICAgIGlmIChmcmVlTGlzdCkgewotICAg
ICAgICB1bnNpZ25lZCBpID0gZnJlZUxpc3Q7Ci0gICAgICAgIGZyZWVMaXN0ID0gbV9lbnRyaWVz
W2ldLmdldE5leHRJbkZyZWVMaXN0KCk7Ci0gICAgICAgIG1fZW50cmllc1tpXS5zZXQoY2VsbCk7
Ci0gICAgICAgIG1fZW50cmllc1swXS5zZXROZXh0SW5GcmVlTGlzdChmcmVlTGlzdCk7Ci0gICAg
ICAgICsrbV9lbnRyaWVzU2l6ZTsKLSAgICAgICAgcmV0dXJuICZtX2VudHJpZXNbaV07Ci0gICAg
fQotCi0gICAgQVNTRVJUKG1faW5pdGlhbEFsbG9jIDwgV2Vha0dDSGFuZGxlUG9vbDo6bnVtUG9v
bEVudHJpZXMpOwotCi0gICAgdW5zaWduZWQgaSA9IG1faW5pdGlhbEFsbG9jOwotICAgICsrbV9p
bml0aWFsQWxsb2M7Ci0gICAgbV9lbnRyaWVzW2ldLnNldChjZWxsKTsKLSAgICArK21fZW50cmll
c1NpemU7Ci0gICAgcmV0dXJuICZtX2VudHJpZXNbaV07Ci0KLX0KLQotdm9pZCBXZWFrR0NIYW5k
bGVQb29sOjpmcmVlKFdlYWtHQ0hhbmRsZSogaGFuZGxlKQotewotICAgIEFTU0VSVChoYW5kbGUt
PnBvb2woKSA9PSB0aGlzKTsKLSAgICBBU1NFUlQobV9lbnRyaWVzWzBdLmlzTmV4dCgpKTsKLSAg
ICB1bnNpZ25lZCBmcmVlTGlzdCA9IG1fZW50cmllc1swXS5nZXROZXh0SW5GcmVlTGlzdCgpOwot
ICAgIEFTU0VSVChmcmVlTGlzdCA8IFdlYWtHQ0hhbmRsZVBvb2w6Om51bVBvb2xFbnRyaWVzKTsK
LSAgICBoYW5kbGUtPnNldE5leHRJbkZyZWVMaXN0KGZyZWVMaXN0KTsKLSAgICBtX2VudHJpZXNb
MF0uc2V0TmV4dEluRnJlZUxpc3QoaGFuZGxlIC0gbV9lbnRyaWVzKTsKLSAgICAtLW1fZW50cmll
c1NpemU7Ci19Ci0KLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0dDSGFuZGxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HQ0hhbmRsZS5oCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ODE4Zjc5NmFjNDA4ZjZlOWFkMThhNTk4OWI5
M2EwYzI2OWE1YTVkLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dDSGFuZGxlLmgKKysrIC9kZXYvbnVs
bApAQCAtMSwxMTYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgR0NIYW5kbGVfaAotI2Rl
ZmluZSBHQ0hhbmRsZV9oCi0KLSNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgotCi1uYW1lc3Bh
Y2UgSlNDIHsKLQotY2xhc3MgSGVhcDsKLWNsYXNzIEpTQ2VsbDsKLWNsYXNzIFdlYWtHQ0hhbmRs
ZTsKLWNsYXNzIFdlYWtHQ0hhbmRsZVBvb2w7Ci0KLWNsYXNzIFdlYWtHQ0hhbmRsZSB7Ci0gICAg
ZnJpZW5kIGNsYXNzIFdlYWtHQ0hhbmRsZVBvb2w7Ci0KLXB1YmxpYzoKLSAgICAvLyBCZWNhdXNl
IEpTQ2VsbCBvYmplY3RzIGFyZSBhbGlnbmVkLCB3ZSBjYW4gdXNlIHRoZSBsb3dlciB0d28gYml0
cyBhcwotICAgIC8vIHN0YXR1cyBmbGFncy4gVGhlIGxlYXN0IHNpZ25pZmljYW50IGJpdCBpcyBz
ZXQgd2hlbiB0aGUgaGFuZGxlIGlzIG5vdCBhCi0gICAgLy8gcG9pbnRlciwgaS5lLiB3aGVuIGl0
J3MgdXNlZCBhcyBhIG9mZnNldCBmb3IgdGhlIGZyZWUgbGlzdCBpbgotICAgIC8vIFdlYWtHQ0hh
bmRsZVBvb2wuIFRoZSBzZWNvbmQgbGVhc3Qgc2lnbmlmaWNhbnQgYml0IGlzIHNldCB3aGVuIHRo
ZSBvYmplY3QKLSAgICAvLyB0aGUgcG9pbnRlciBjb3JyZXNwb25kcyB0byBoYXMgYmVlbiBkZWxl
dGVkIGJ5IGEgZ2FyYmFnZSBjb2xsZWN0aW9uCi0KLSAgICBib29sIGlzVmFsaWRQdHIoKSB7IHJl
dHVybiAhKG1fcHRyICYgMyk7IH0KLSAgICBib29sIGlzUHRyKCkgeyByZXR1cm4gIShtX3B0ciAm
IDEpOyB9Ci0gICAgYm9vbCBpc05leHQoKSB7IHJldHVybiAobV9wdHIgJiAzKSA9PSAxOyB9Ci0K
LSAgICB2b2lkIGludmFsaWRhdGUoKQotICAgIHsKLSAgICAgICAgQVNTRVJUKGlzVmFsaWRQdHIo
KSk7Ci0gICAgICAgIG1fcHRyIHw9IDI7Ci0gICAgfQotCi0gICAgSlNDZWxsKiBnZXQoKQotICAg
IHsKLSAgICAgICAgQVNTRVJUKGlzUHRyKCkpOwotICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRf
Y2FzdDxKU0NlbGwqPihtX3B0ciAmIH4zKTsKLSAgICB9Ci0KLSAgICB2b2lkIHNldChKU0NlbGwq
IHApCi0gICAgewotICAgICAgICBtX3B0ciA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90Pihw
KTsKLSAgICAgICAgQVNTRVJUKGlzUHRyKCkpOwotICAgIH0KLQotICAgIFdlYWtHQ0hhbmRsZVBv
b2wqIHBvb2woKTsKLQotcHJpdmF0ZToKLSAgICB1aW50cHRyX3QgZ2V0TmV4dEluRnJlZUxpc3Qo
KQotICAgIHsKLSAgICAgICAgQVNTRVJUKGlzTmV4dCgpKTsKLSAgICAgICAgcmV0dXJuIG1fcHRy
ID4+IDI7Ci0gICAgfQotCi0gICAgdm9pZCBzZXROZXh0SW5GcmVlTGlzdCh1aW50cHRyX3QgbikK
LSAgICB7Ci0gICAgICAgIG1fcHRyID0gKG4gPDwgMikgfCAxOwotICAgICAgICBBU1NFUlQoaXNO
ZXh0KCkpOwotICAgIH0KLQotICAgIHVpbnRwdHJfdCBtX3B0cjsKLX07Ci0KLWNsYXNzIFdlYWtH
Q0hhbmRsZVBvb2wgewotcHVibGljOgotICAgIHN0YXRpYyBjb25zdCBzaXplX3QgcG9vbFNpemUg
PSAzMiAqIDEwMjQ7IC8vIDMyawotICAgIHN0YXRpYyBjb25zdCBzaXplX3QgcG9vbE1hc2sgPSB+
KHBvb2xTaXplIC0gMSk7Ci0gICAgc3RhdGljIGNvbnN0IHNpemVfdCBudW1Qb29sRW50cmllcyA9
IChwb29sU2l6ZSAtIHNpemVvZihIZWFwKikgLSAzICogc2l6ZW9mKHVuc2lnbmVkKSkgLyBzaXpl
b2YoV2Vha0dDSGFuZGxlKTsKLQotICAgIFdlYWtHQ0hhbmRsZVBvb2woKTsKLQotICAgIFdlYWtH
Q0hhbmRsZSogYWxsb2NhdGUoSlNDZWxsKiBjZWxsKTsKLSAgICB2b2lkIGZyZWUoV2Vha0dDSGFu
ZGxlKik7Ci0KLSAgICBib29sIGlzRnVsbCgpCi0gICAgewotICAgICAgICBBU1NFUlQobV9lbnRy
aWVzU2l6ZSA8IFdlYWtHQ0hhbmRsZVBvb2w6Om51bVBvb2xFbnRyaWVzKTsKLSAgICAgICAgcmV0
dXJuIG1fZW50cmllc1NpemUgPT0gV2Vha0dDSGFuZGxlUG9vbDo6bnVtUG9vbEVudHJpZXMgLSAx
OwotICAgIH0KLQotICAgIHZvaWQgdXBkYXRlKCk7Ci0KLXByaXZhdGU6Ci0gICAgSGVhcCogbV9o
ZWFwOwotICAgIHVuc2lnbmVkIG1fZW50cmllc1NpemU7Ci0gICAgdW5zaWduZWQgbV9pbml0aWFs
QWxsb2M7Ci0KLSAgICBXZWFrR0NIYW5kbGUgbV9lbnRyaWVzW1dlYWtHQ0hhbmRsZVBvb2w6Om51
bVBvb2xFbnRyaWVzXTsKLX07Ci0KLX0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSGVhcC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9IZWFwLmNwcAppbmRleCBjMDUyMzNjYWQ3MDBkY2JmYjJiMjA3MGM4YTg1YWQ2ZjQ3Njg2NmY4
Li5mMDYyMzg4MDA2ZmFkMjRkYThhNmQwYTY5MGRiZTkwZjc0ZDAwZWY0IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9IZWFwLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9IZWFwLmNwcApAQCAtMjQsNyArMjQsNiBAQAogI2luY2x1ZGUgIkNv
ZGVCbG9jay5oIgogI2luY2x1ZGUgIkNvbnNlcnZhdGl2ZVNldC5oIgogI2luY2x1ZGUgIkdDQWN0
aXZpdHlDYWxsYmFjay5oIgotI2luY2x1ZGUgIkdDSGFuZGxlLmgiCiAjaW5jbHVkZSAiSW50ZXJw
cmV0ZXIuaCIKICNpbmNsdWRlICJKU0dsb2JhbERhdGEuaCIKICNpbmNsdWRlICJKU0dsb2JhbE9i
amVjdC5oIgpAQCAtNDksNiArNDgsNyBAQCBIZWFwOjpIZWFwKEpTR2xvYmFsRGF0YSogZ2xvYmFs
RGF0YSkKICAgICAsIG1fZ2xvYmFsRGF0YShnbG9iYWxEYXRhKQogICAgICwgbV9tYWNoaW5lU3Rh
Y2tNYXJrZXIodGhpcykKICAgICAsIG1fbWFya1N0YWNrKGdsb2JhbERhdGEtPmpzQXJyYXlWUHRy
KQorICAgICwgbV9oYW5kbGVIZWFwKGdsb2JhbERhdGEpCiAgICAgLCBtX2V4dHJhQ29zdCgwKQog
ewogICAgICgqbV9hY3Rpdml0eUNhbGxiYWNrKSgpOwpAQCAtNzcsNiArNzcsNyBAQCB2b2lkIEhl
YXA6OmRlc3Ryb3koKQogICAgIGRlbGV0ZSBtX21hcmtMaXN0U2V0OwogICAgIG1fbWFya0xpc3RT
ZXQgPSAwOwogCisgICAgbV9oYW5kbGVIZWFwLmNsZWFyV2Vha1BvaW50ZXJzKCk7CiAgICAgbV9t
YXJrZWRTcGFjZS5kZXN0cm95KCk7CiAKICAgICBtX2dsb2JhbERhdGEgPSAwOwpAQCAtMTI4LDM2
ICsxMjksNiBAQCB2b2lkKiBIZWFwOjphbGxvY2F0ZShzaXplX3QgcykKICAgICByZXR1cm4gcmVz
dWx0OwogfQogCi12b2lkIEhlYXA6OnVwZGF0ZVdlYWtHQ0hhbmRsZXMoKQotewotICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBtX3dlYWtHQ0hhbmRsZVBvb2xzLnNpemUoKTsgKytpKQotICAg
ICAgICB3ZWFrR0NIYW5kbGVQb29sKGkpLT51cGRhdGUoKTsKLX0KLQotdm9pZCBXZWFrR0NIYW5k
bGVQb29sOjp1cGRhdGUoKQotewotICAgIGZvciAodW5zaWduZWQgaSA9IDE7IGkgPCBXZWFrR0NI
YW5kbGVQb29sOjpudW1Qb29sRW50cmllczsgKytpKSB7Ci0gICAgICAgIGlmIChtX2VudHJpZXNb
aV0uaXNWYWxpZFB0cigpKSB7Ci0gICAgICAgICAgICBKU0NlbGwqIGNlbGwgPSBtX2VudHJpZXNb
aV0uZ2V0KCk7Ci0gICAgICAgICAgICBpZiAoIWNlbGwgfHwgIUhlYXA6OmlzTWFya2VkKGNlbGwp
KQotICAgICAgICAgICAgICAgIG1fZW50cmllc1tpXS5pbnZhbGlkYXRlKCk7Ci0gICAgICAgIH0K
LSAgICB9Ci19Ci0KLVdlYWtHQ0hhbmRsZSogSGVhcDo6YWRkV2Vha0dDSGFuZGxlKEpTQ2VsbCog
cHRyKQotewotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX3dlYWtHQ0hhbmRsZVBvb2xz
LnNpemUoKTsgKytpKQotICAgICAgICBpZiAoIXdlYWtHQ0hhbmRsZVBvb2woaSktPmlzRnVsbCgp
KQotICAgICAgICAgICAgcmV0dXJuIHdlYWtHQ0hhbmRsZVBvb2woaSktPmFsbG9jYXRlKHB0cik7
Ci0KLSAgICBQYWdlQWxsb2NhdGlvbkFsaWduZWQgYWxsb2NhdGlvbiA9IFBhZ2VBbGxvY2F0aW9u
QWxpZ25lZDo6YWxsb2NhdGUoV2Vha0dDSGFuZGxlUG9vbDo6cG9vbFNpemUsIFdlYWtHQ0hhbmRs
ZVBvb2w6OnBvb2xTaXplLCBPU0FsbG9jYXRvcjo6SlNHQ0hlYXBQYWdlcyk7Ci0gICAgbV93ZWFr
R0NIYW5kbGVQb29scy5hcHBlbmQoYWxsb2NhdGlvbik7Ci0KLSAgICBXZWFrR0NIYW5kbGVQb29s
KiBwb29sID0gbmV3IChhbGxvY2F0aW9uLmJhc2UoKSkgV2Vha0dDSGFuZGxlUG9vbCgpOwotICAg
IHJldHVybiBwb29sLT5hbGxvY2F0ZShwdHIpOwotfQotCiB2b2lkIEhlYXA6OnByb3RlY3QoSlNW
YWx1ZSBrKQogewogICAgIEFTU0VSVChrKTsKQEAgLTI2OSwxNCArMjQwLDE2IEBAIHZvaWQgSGVh
cDo6bWFya1Jvb3RzKCkKICAgICAgICAgSlNPTk9iamVjdDo6bWFya1N0cmluZ2lmaWVycyhtYXJr
U3RhY2ssIG1fZ2xvYmFsRGF0YS0+Zmlyc3RTdHJpbmdpZmllclRvTWFyayk7CiAgICAgbWFya1N0
YWNrLmRyYWluKCk7CiAKKyAgICBtX2hhbmRsZUhlYXAubWFya1N0cm9uZ0hhbmRsZXMobWFya1N0
YWNrKTsKKwogICAgIC8vIE1hcmsgdGhlIHNtYWxsIHN0cmluZ3MgY2FjaGUgbGFzdCwgc2luY2Ug
aXQgd2lsbCBjbGVhciBpdHNlbGYgaWYgbm90aGluZwogICAgIC8vIGVsc2UgaGFzIG1hcmtlZCBp
dC4KICAgICBtX2dsb2JhbERhdGEtPnNtYWxsU3RyaW5ncy5tYXJrQ2hpbGRyZW4obWFya1N0YWNr
KTsKIAogICAgIG1hcmtTdGFjay5kcmFpbigpOwogICAgIG1hcmtTdGFjay5jb21wYWN0KCk7Ci0K
LSAgICB1cGRhdGVXZWFrR0NIYW5kbGVzKCk7CisgICAgCisgICAgbV9oYW5kbGVIZWFwLnVwZGF0
ZUFmdGVyTWFyaygpOwogCiAgICAgbV9vcGVyYXRpb25JblByb2dyZXNzID0gTm9PcGVyYXRpb247
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9IZWFwLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9IZWFwLmgKaW5kZXggNjU5MWE1Yjc5MjIyZmVm
NDJlNGNlMDMyN2FlNmI1NDBiZWFhYzA0MC4uZmY5ZmE4MDU3NDNhNmJiYzNiYjZlN2M0NDkyZmFh
NmRkOTY5ZTllZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSGVh
cC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0hlYXAuaApAQCAtMjIsNiAr
MjIsNyBAQAogI2lmbmRlZiBIZWFwX2gKICNkZWZpbmUgSGVhcF9oCiAKKyNpbmNsdWRlICJIYW5k
bGVIZWFwLmgiCiAjaW5jbHVkZSAiTWFya1N0YWNrLmgiCiAjaW5jbHVkZSAiTWFya2VkU3BhY2Uu
aCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgpAQCAtMzQsNyArMzUsNiBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICBjbGFzcyBKU0NlbGw7CiAgICAgY2xhc3MgSlNHbG9iYWxEYXRhOwogICAgIGNs
YXNzIEpTVmFsdWU7Ci0gICAgY2xhc3MgSlNWYWx1ZTsKICAgICBjbGFzcyBMaXZlT2JqZWN0SXRl
cmF0b3I7CiAgICAgY2xhc3MgTWFya1N0YWNrOwogICAgIGNsYXNzIE1hcmtlZEFyZ3VtZW50QnVm
ZmVyOwpAQCAtODksOCArODksNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgUGFzc093blB0
cjxUeXBlQ291bnRTZXQ+IHByb3RlY3RlZE9iamVjdFR5cGVDb3VudHMoKTsKICAgICAgICAgUGFz
c093blB0cjxUeXBlQ291bnRTZXQ+IG9iamVjdFR5cGVDb3VudHMoKTsKIAotICAgICAgICBXZWFr
R0NIYW5kbGUqIGFkZFdlYWtHQ0hhbmRsZShKU0NlbGwqKTsKLQogICAgICAgICB2b2lkIHB1c2hU
ZW1wU29ydFZlY3RvcihWZWN0b3I8VmFsdWVTdHJpbmdQYWlyPiopOwogICAgICAgICB2b2lkIHBv
cFRlbXBTb3J0VmVjdG9yKFZlY3RvcjxWYWx1ZVN0cmluZ1BhaXI+Kik7CiAgICAgICAgIApAQCAt
MTAwLDYgKzk4LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIAogICAgICAgICB0ZW1wbGF0
ZSA8dHlwZW5hbWUgRnVuY3Rvcj4gdm9pZCBmb3JFYWNoKEZ1bmN0b3ImKTsKICAgICAgICAgCisg
ICAgICAgIEhhbmRsZVNsb3QgYWxsb2NhdGVHbG9iYWxIYW5kbGUoKSB7IHJldHVybiBtX2hhbmRs
ZUhlYXAuYWxsb2NhdGUoKTsgfQorCiAgICAgcHJpdmF0ZToKICAgICAgICAgZnJpZW5kIGNsYXNz
IEpTR2xvYmFsRGF0YTsKIApAQCAtMTEyLDkgKzExMiw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICB2b2lkIG1hcmtQcm90ZWN0ZWRPYmplY3RzKE1hcmtTdGFjayYpOwogICAgICAgICB2b2lk
IG1hcmtUZW1wU29ydFZlY3RvcnMoTWFya1N0YWNrJik7CiAKLSAgICAgICAgdm9pZCB1cGRhdGVX
ZWFrR0NIYW5kbGVzKCk7Ci0gICAgICAgIFdlYWtHQ0hhbmRsZVBvb2wqIHdlYWtHQ0hhbmRsZVBv
b2woc2l6ZV90IGluZGV4KTsKLSAgICAgICAgCiAgICAgICAgIGVudW0gU3dlZXBUb2dnbGUgeyBE
b05vdFN3ZWVwLCBEb1N3ZWVwIH07CiAgICAgICAgIHZvaWQgcmVzZXQoU3dlZXBUb2dnbGUpOwog
CkBAIC0xMjQsNyArMTIxLDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIE1hcmtlZFNwYWNl
IG1fbWFya2VkU3BhY2U7CiAKICAgICAgICAgUHJvdGVjdENvdW50U2V0IG1fcHJvdGVjdGVkVmFs
dWVzOwotICAgICAgICBWZWN0b3I8UGFnZUFsbG9jYXRpb25BbGlnbmVkPiBtX3dlYWtHQ0hhbmRs
ZVBvb2xzOwogICAgICAgICBWZWN0b3I8VmVjdG9yPFZhbHVlU3RyaW5nUGFpcj4qID4gbV90ZW1w
U29ydGluZ1ZlY3RvcnM7CiAgICAgICAgIEhhc2hTZXQ8R2xvYmFsQ29kZUJsb2NrKj4gbV9jb2Rl
QmxvY2tzOwogCkBAIC0xMzYsNiArMTMyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIAog
ICAgICAgICBNYWNoaW5lU3RhY2tNYXJrZXIgbV9tYWNoaW5lU3RhY2tNYXJrZXI7CiAgICAgICAg
IE1hcmtTdGFjayBtX21hcmtTdGFjazsKKyAgICAgICAgSGFuZGxlSGVhcCBtX2hhbmRsZUhlYXA7
CiAgICAgICAgIAogICAgICAgICBzaXplX3QgbV9leHRyYUNvc3Q7CiAgICAgfTsKQEAgLTE2NSwx
MSArMTYyLDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGlmIChjb3N0ID4gbWluRXh0cmFD
b3N0KSAKICAgICAgICAgICAgIHJlcG9ydEV4dHJhTWVtb3J5Q29zdFNsb3dDYXNlKGNvc3QpOwog
ICAgIH0KLSAgICAKLSAgICBpbmxpbmUgV2Vha0dDSGFuZGxlUG9vbCogSGVhcDo6d2Vha0dDSGFu
ZGxlUG9vbChzaXplX3QgaW5kZXgpCi0gICAgewotICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
V2Vha0dDSGFuZGxlUG9vbCo+KG1fd2Vha0dDSGFuZGxlUG9vbHNbaW5kZXhdLmJhc2UoKSk7Ci0g
ICAgfQogCiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIEZ1bmN0b3I+IGlubGluZSB2b2lkIEhlYXA6
OmZvckVhY2goRnVuY3RvciYgZnVuY3RvcikKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmNwcAppbmRleCBmZjg4MDQ4YzIxOTU5NGI5MTI1ZTAy
MmJjYTE4ZWM4NzE3YzEzYjU4Li5jZmY3MjUyMjRhNDQ1OTQwNTcyZWNlODA5YWU1ZGU1MDM2ZWJh
YTQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERh
dGEuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5j
cHAKQEAgLTEzOCw3ICsxMzgsNyBAQCBKU0dsb2JhbERhdGE6OkpTR2xvYmFsRGF0YShHbG9iYWxE
YXRhVHlwZSBnbG9iYWxEYXRhVHlwZSwgVGhyZWFkU3RhY2tUeXBlIHRocmVhZAogICAgICwgZW1w
dHlMaXN0KG5ldyBNYXJrZWRBcmd1bWVudEJ1ZmZlcikKICAgICAsIGxleGVyKG5ldyBMZXhlcih0
aGlzKSkKICAgICAsIHBhcnNlcihuZXcgUGFyc2VyKQotICAgICwgaW50ZXJwcmV0ZXIobmV3IElu
dGVycHJldGVyKQorICAgICwgaW50ZXJwcmV0ZXIoMCkKICAgICAsIGhlYXAodGhpcykKICAgICAs
IGR5bmFtaWNHbG9iYWxPYmplY3QoMCkKICAgICAsIGZpcnN0U3RyaW5naWZpZXJUb01hcmsoMCkK
QEAgLTE1Miw2ICsxNTIsNyBAQCBKU0dsb2JhbERhdGE6OkpTR2xvYmFsRGF0YShHbG9iYWxEYXRh
VHlwZSBnbG9iYWxEYXRhVHlwZSwgVGhyZWFkU3RhY2tUeXBlIHRocmVhZAogICAgICwgZXhjbHVz
aXZlVGhyZWFkKDApCiAjZW5kaWYKIHsKKyAgICBpbnRlcnByZXRlciA9IG5ldyBJbnRlcnByZXRl
cigqdGhpcyk7CiAgICAgaWYgKGdsb2JhbERhdGFUeXBlID09IERlZmF1bHQpCiAgICAgICAgIG1f
c3RhY2sgPSB3dGZUaHJlYWREYXRhKCkuc3RhY2soKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dsb2JhbERhdGEuaAppbmRleCA3YjY5MDU1ODFiMDBiMDAyMDViNGMyNTY0
ZjliZWI4ZjY0NTNiNjkwLi5hNjA5Yzc3ZTAxZjI5ODBhZDM5N2UzZjNkNDllNGFjODg5ODRmNjcx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuaApAQCAt
MjUzLDYgKzI1Myw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIGFkZFJlZ0V4cFRv
VHJhY2UoUGFzc1JlZlB0cjxSZWdFeHA+IHJlZ0V4cCk7CiAjZW5kaWYKICAgICAgICAgdm9pZCBk
dW1wUmVnRXhwVHJhY2UoKTsKKyAgICAgICAgSGFuZGxlU2xvdCBhbGxvY2F0ZUdsb2JhbEhhbmRs
ZSgpIHsgcmV0dXJuIGhlYXAuYWxsb2NhdGVHbG9iYWxIYW5kbGUoKTsgfQorCiAgICAgcHJpdmF0
ZToKICAgICAgICAgSlNHbG9iYWxEYXRhKEdsb2JhbERhdGFUeXBlLCBUaHJlYWRTdGFja1R5cGUp
OwogICAgICAgICBzdGF0aWMgSlNHbG9iYWxEYXRhKiYgc2hhcmVkSW5zdGFuY2VJbnRlcm5hbCgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmpl
Y3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3Bw
CmluZGV4IGYzMDMxOTY3NjQxMTA1ODYxMGNkZDY2MDQ0ODI0MmM1YjM0YTZhZWUuLjhlYzBkMjhi
MTZmYWIyMjBhNDE4Mzk5ZWM2MWM1NmJhZDNhYjkwZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKQEAgLTEwNiw5ICsxMDYsNiBAQCBK
U0dsb2JhbE9iamVjdDo6fkpTR2xvYmFsT2JqZWN0KCkKIAogICAgIGQoKS0+Z2xvYmFsRGF0YS0+
Z2xvYmFsT2JqZWN0cy50YWtlKHRoaXMpOwogCi0gICAgUmVnaXN0ZXJGaWxlJiByZWdpc3RlckZp
bGUgPSBnbG9iYWxEYXRhKCkuaW50ZXJwcmV0ZXItPnJlZ2lzdGVyRmlsZSgpOwotICAgIGlmIChy
ZWdpc3RlckZpbGUuY2xlYXJHbG9iYWxPYmplY3QodGhpcykpCi0gICAgICAgIHJlZ2lzdGVyRmls
ZS5zZXROdW1HbG9iYWxzKDApOwogICAgIGQoKS0+ZGVzdHJ1Y3RvcihkKCkpOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJh
dG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRl
cmF0b3IuY3BwCmluZGV4IDZmZDI4ZTNmYWZiNTYxOTVlYmE3OGNlMDNjYjExMjJjZGMzODBmZDQu
LjBkNzU5Y2ZjMTVjOWQyYmU5YjAwYzg1Y2FkNjRiMWUyOTY4MDVlMGEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3Iu
Y3BwCkBAIC00NywxMiArNDcsNiBAQCBpbmxpbmUgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6SlNQ
cm9wZXJ0eU5hbWVJdGVyYXRvcihFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TgogICAgICAgICBt
X2pzU3RyaW5nc1tpXS5zZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlzLCBqc093bmVkU3RyaW5n
KGV4ZWMsIHByb3BlcnR5TmFtZVZlY3RvcltpXS51c3RyaW5nKCkpKTsKIH0KIAotSlNQcm9wZXJ0
eU5hbWVJdGVyYXRvcjo6fkpTUHJvcGVydHlOYW1lSXRlcmF0b3IoKQotewotICAgIGlmIChtX2Nh
Y2hlZFN0cnVjdHVyZSkKLSAgICAgICAgbV9jYWNoZWRTdHJ1Y3R1cmUtPmNsZWFyRW51bWVyYXRp
b25DYWNoZSh0aGlzKTsKLX0KLQogSlNQcm9wZXJ0eU5hbWVJdGVyYXRvciogSlNQcm9wZXJ0eU5h
bWVJdGVyYXRvcjo6Y3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIG8pCiB7CiAgICAg
QVNTRVJUKCFvLT5zdHJ1Y3R1cmUoKS0+ZW51bWVyYXRpb25DYWNoZSgpIHx8CkBAIC04NSw3ICs3
OSw3IEBAIEpTUHJvcGVydHlOYW1lSXRlcmF0b3IqIEpTUHJvcGVydHlOYW1lSXRlcmF0b3I6OmNy
ZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0CiAKICAgICBqc1Byb3BlcnR5TmFtZUl0ZXJh
dG9yLT5zZXRDYWNoZWRQcm90b3R5cGVDaGFpbihzdHJ1Y3R1cmVDaGFpbik7CiAgICAganNQcm9w
ZXJ0eU5hbWVJdGVyYXRvci0+c2V0Q2FjaGVkU3RydWN0dXJlKG8tPnN0cnVjdHVyZSgpKTsKLSAg
ICBvLT5zdHJ1Y3R1cmUoKS0+c2V0RW51bWVyYXRpb25DYWNoZShqc1Byb3BlcnR5TmFtZUl0ZXJh
dG9yKTsKKyAgICBvLT5zdHJ1Y3R1cmUoKS0+c2V0RW51bWVyYXRpb25DYWNoZShleGVjLT5nbG9i
YWxEYXRhKCksIGpzUHJvcGVydHlOYW1lSXRlcmF0b3IpOwogICAgIHJldHVybiBqc1Byb3BlcnR5
TmFtZUl0ZXJhdG9yOwogfQogCkBAIC0xMDUsNCArOTksMTIgQEAgdm9pZCBKU1Byb3BlcnR5TmFt
ZUl0ZXJhdG9yOjptYXJrQ2hpbGRyZW4oTWFya1N0YWNrJiBtYXJrU3RhY2spCiAgICAgbWFya1N0
YWNrLmFwcGVuZFZhbHVlcyhtX2pzU3RyaW5ncy5nZXQoKSwgbV9qc1N0cmluZ3NTaXplLCBNYXlD
b250YWluTnVsbFZhbHVlcyk7CiB9CiAKKyNpZiAhQVNTRVJUX0RJU0FCTEVECisKK0pTUHJvcGVy
dHlOYW1lSXRlcmF0b3I6On5KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yKCkKK3sKKyAgICBBU1NFUlQo
IW1fY2FjaGVkU3RydWN0dXJlIHx8IG1fY2FjaGVkU3RydWN0dXJlLT5lbnVtZXJhdGlvbkNhY2hl
KCkgIT0gdGhpcyk7Cit9CisKKyNlbmRpZgogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgK
aW5kZXggY2Q0NjI0M2E4MDkxYzIxMGE3NDYyNTU3M2I3NzkzNGUzM2RjYTcyNy4uZmYyY2FlNTRl
ZWJkZjVjZmYyMmQxZDJmMjBmMWEyZTM0Y2UyYTFmMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuaApAQCAtNDksOCAr
NDksNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIFN0
cnVjdHVyZTo6Y3JlYXRlKHByb3RvdHlwZSwgVHlwZUluZm8oQ29tcG91bmRUeXBlLCBPdmVycmlk
ZXNNYXJrQ2hpbGRyZW4pLCBBbm9ueW1vdXNTbG90Q291bnQpOwogICAgICAgICB9Ci0gICAgICAg
IAotICAgICAgICB2aXJ0dWFsIH5KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yKCk7CiAKICAgICAgICAg
dmlydHVhbCBib29sIGlzUHJvcGVydHlOYW1lSXRlcmF0b3IoKSBjb25zdCB7IHJldHVybiB0cnVl
OyB9CiAKQEAgLTgwLDYgKzc4LDEwIEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgcHJpdmF0ZToK
ICAgICAgICAgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcihFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVB
cnJheURhdGEqIHByb3BlcnR5TmFtZUFycmF5RGF0YSwgc2l6ZV90IG51bUNhY2hlYWJsZVNsb3Qp
OworICAgICAgICAKKyNpZiAhQVNTRVJUX0RJU0FCTEVECisgICAgICAgIHZpcnR1YWwgfkpTUHJv
cGVydHlOYW1lSXRlcmF0b3IoKTsKKyNlbmRpZgogCiAgICAgICAgIFJlZlB0cjxTdHJ1Y3R1cmU+
IG1fY2FjaGVkU3RydWN0dXJlOwogICAgICAgICBSZWZQdHI8U3RydWN0dXJlQ2hhaW4+IG1fY2Fj
aGVkUHJvdG90eXBlQ2hhaW47CkBAIC04OCwxNSArOTAsMTUgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgIE93bkFycmF5UHRyPFdyaXRlQmFycmllcjxVbmtub3duPiA+IG1fanNTdHJpbmdzOwog
ICAgIH07CiAKLSAgICBpbmxpbmUgdm9pZCBTdHJ1Y3R1cmU6OnNldEVudW1lcmF0aW9uQ2FjaGUo
SlNQcm9wZXJ0eU5hbWVJdGVyYXRvciogZW51bWVyYXRpb25DYWNoZSkKKyAgICBpbmxpbmUgdm9p
ZCBTdHJ1Y3R1cmU6OnNldEVudW1lcmF0aW9uQ2FjaGUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRh
LCBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yKiBlbnVtZXJhdGlvbkNhY2hlKQogICAgIHsKICAgICAg
ICAgQVNTRVJUKCFpc0RpY3Rpb25hcnkoKSk7Ci0gICAgICAgIG1fZW51bWVyYXRpb25DYWNoZSA9
IGVudW1lcmF0aW9uQ2FjaGU7CisgICAgICAgIG1fZW51bWVyYXRpb25DYWNoZS5zZXQoZ2xvYmFs
RGF0YSwgZW51bWVyYXRpb25DYWNoZSwgMCk7CiAgICAgfQogCi0gICAgaW5saW5lIHZvaWQgU3Ry
dWN0dXJlOjpjbGVhckVudW1lcmF0aW9uQ2FjaGUoSlNQcm9wZXJ0eU5hbWVJdGVyYXRvciogZW51
bWVyYXRpb25DYWNoZSkKKyAgICBpbmxpbmUgdm9pZCBTdHJ1Y3R1cmU6OmNsZWFyRW51bWVyYXRp
b25DYWNoZSgpCiAgICAgewotICAgICAgICBtX2VudW1lcmF0aW9uQ2FjaGUuY2xlYXIoZW51bWVy
YXRpb25DYWNoZSk7CisgICAgICAgIG1fZW51bWVyYXRpb25DYWNoZS5jbGVhcigpOwogICAgIH0K
IAogICAgIGlubGluZSBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yKiBTdHJ1Y3R1cmU6OmVudW1lcmF0
aW9uQ2FjaGUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJv
dGVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvdGVjdC5oCmluZGV4IDBj
MWI1ZThlZjQzYmUxYzgxN2NkODhlZGE3Nzk2NzY2ZjFhM2ZhMWQuLjg0M2M5ZTExMTQ4Y2M3MGE2
N2NkYjY2MjU0NDcyNjMxNjhiZmY3YTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1Byb3RlY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Q
cm90ZWN0LmgKQEAgLTYxLDE1NSArNjEsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAg
IGdjVW5wcm90ZWN0KHZhbHVlLmFzQ2VsbCgpKTsKICAgICB9CiAKLSAgICAvLyBGSVhNRTogU2hh
cmUgbW9yZSBjb2RlIHdpdGggUmVmUHRyIHRlbXBsYXRlPyBUaGUgb25seSBkaWZmZXJlbmNlcyBh
cmUgdGhlIHJlZi9kZXJlZiBvcGVyYXRpb24KLSAgICAvLyBhbmQgdGhlIGltcGxpY2l0IGNvbnZl
cnNpb24gdG8gcmF3IHBvaW50ZXIKLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVD4gY2xhc3MgUHJvdGVj
dGVkUHRyIHsKLSAgICBwdWJsaWM6Ci0gICAgICAgIFByb3RlY3RlZFB0cigpIDogbV9wdHIoMCkg
e30KLSAgICAgICAgUHJvdGVjdGVkUHRyKFQqIHB0cik7Ci0gICAgICAgIFByb3RlY3RlZFB0cihj
b25zdCBQcm90ZWN0ZWRQdHImKTsKLSAgICAgICAgflByb3RlY3RlZFB0cigpOwotCi0gICAgICAg
IHRlbXBsYXRlIDxjbGFzcyBVPiBQcm90ZWN0ZWRQdHIoY29uc3QgUHJvdGVjdGVkUHRyPFU+Jik7
Ci0gICAgICAgIAotICAgICAgICBUKiBnZXQoKSBjb25zdCB7IHJldHVybiBtX3B0cjsgfQotICAg
ICAgICBvcGVyYXRvciBUKigpIGNvbnN0IHsgcmV0dXJuIG1fcHRyOyB9Ci0gICAgICAgIG9wZXJh
dG9yIEpTVmFsdWUoKSBjb25zdCB7IHJldHVybiBKU1ZhbHVlKG1fcHRyKTsgfQotICAgICAgICBU
KiBvcGVyYXRvci0+KCkgY29uc3QgeyByZXR1cm4gbV9wdHI7IH0KLSAgICAgICAgCi0gICAgICAg
IG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiBtX3B0cjsgfQotICAgICAgICBib29sIG9w
ZXJhdG9yISgpIGNvbnN0IHsgcmV0dXJuICFtX3B0cjsgfQotCi0gICAgICAgIFByb3RlY3RlZFB0
ciYgb3BlcmF0b3I9KGNvbnN0IFByb3RlY3RlZFB0ciYpOwotICAgICAgICBQcm90ZWN0ZWRQdHIm
IG9wZXJhdG9yPShUKik7Ci0gICAgICAgIAotICAgIHByaXZhdGU6Ci0gICAgICAgIFQqIG1fcHRy
OwotICAgIH07Ci0KLSAgICBjbGFzcyBQcm90ZWN0ZWRKU1ZhbHVlIHsKLSAgICBwdWJsaWM6Ci0g
ICAgICAgIFByb3RlY3RlZEpTVmFsdWUoKSB7fQotICAgICAgICBQcm90ZWN0ZWRKU1ZhbHVlKEpT
VmFsdWUgdmFsdWUpOwotICAgICAgICBQcm90ZWN0ZWRKU1ZhbHVlKGNvbnN0IFByb3RlY3RlZEpT
VmFsdWUmKTsKLSAgICAgICAgflByb3RlY3RlZEpTVmFsdWUoKTsKLQotICAgICAgICB0ZW1wbGF0
ZSA8Y2xhc3MgVT4gUHJvdGVjdGVkSlNWYWx1ZShjb25zdCBQcm90ZWN0ZWRQdHI8VT4mKTsKLSAg
ICAgICAgCi0gICAgICAgIEpTVmFsdWUgZ2V0KCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZTsgfQot
ICAgICAgICBvcGVyYXRvciBKU1ZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZTsgfQotICAg
ICAgICBKU1ZhbHVlIG9wZXJhdG9yLT4oKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlOyB9Ci0gICAg
ICAgIAotICAgICAgICBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZTsgfQot
ICAgICAgICBib29sIG9wZXJhdG9yISgpIGNvbnN0IHsgcmV0dXJuICFtX3ZhbHVlOyB9Ci0KLSAg
ICAgICAgUHJvdGVjdGVkSlNWYWx1ZSYgb3BlcmF0b3I9KGNvbnN0IFByb3RlY3RlZEpTVmFsdWUm
KTsKLSAgICAgICAgUHJvdGVjdGVkSlNWYWx1ZSYgb3BlcmF0b3I9KEpTVmFsdWUpOwotICAgICAg
ICAKLSAgICBwcml2YXRlOgotICAgICAgICBKU1ZhbHVlIG1fdmFsdWU7Ci0gICAgfTsKLQotICAg
IHRlbXBsYXRlIDxjbGFzcyBUPiBpbmxpbmUgUHJvdGVjdGVkUHRyPFQ+OjpQcm90ZWN0ZWRQdHIo
VCogcHRyKQotICAgICAgICA6IG1fcHRyKHB0cikKLSAgICB7Ci0gICAgICAgIGdjUHJvdGVjdE51
bGxUb2xlcmFudChtX3B0cik7Ci0gICAgfQotCi0gICAgdGVtcGxhdGUgPGNsYXNzIFQ+IGlubGlu
ZSBQcm90ZWN0ZWRQdHI8VD46OlByb3RlY3RlZFB0cihjb25zdCBQcm90ZWN0ZWRQdHImIG8pCi0g
ICAgICAgIDogbV9wdHIoby5nZXQoKSkKLSAgICB7Ci0gICAgICAgIGdjUHJvdGVjdE51bGxUb2xl
cmFudChtX3B0cik7Ci0gICAgfQotCi0gICAgdGVtcGxhdGUgPGNsYXNzIFQ+IGlubGluZSBQcm90
ZWN0ZWRQdHI8VD46On5Qcm90ZWN0ZWRQdHIoKQotICAgIHsKLSAgICAgICAgZ2NVbnByb3RlY3RO
dWxsVG9sZXJhbnQobV9wdHIpOwotICAgIH0KLQotICAgIHRlbXBsYXRlIDxjbGFzcyBUPiB0ZW1w
bGF0ZSA8Y2xhc3MgVT4gaW5saW5lIFByb3RlY3RlZFB0cjxUPjo6UHJvdGVjdGVkUHRyKGNvbnN0
IFByb3RlY3RlZFB0cjxVPiYgbykKLSAgICAgICAgOiBtX3B0cihvLmdldCgpKQotICAgIHsKLSAg
ICAgICAgZ2NQcm90ZWN0TnVsbFRvbGVyYW50KG1fcHRyKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0
ZSA8Y2xhc3MgVD4gaW5saW5lIFByb3RlY3RlZFB0cjxUPiYgUHJvdGVjdGVkUHRyPFQ+OjpvcGVy
YXRvcj0oY29uc3QgUHJvdGVjdGVkUHRyPFQ+JiBvKSAKLSAgICB7Ci0gICAgICAgIFQqIG9wdHIg
PSBvLm1fcHRyOwotICAgICAgICBnY1Byb3RlY3ROdWxsVG9sZXJhbnQob3B0cik7Ci0gICAgICAg
IGdjVW5wcm90ZWN0TnVsbFRvbGVyYW50KG1fcHRyKTsKLSAgICAgICAgbV9wdHIgPSBvcHRyOwot
ICAgICAgICByZXR1cm4gKnRoaXM7Ci0gICAgfQotCi0gICAgdGVtcGxhdGUgPGNsYXNzIFQ+IGlu
bGluZSBQcm90ZWN0ZWRQdHI8VD4mIFByb3RlY3RlZFB0cjxUPjo6b3BlcmF0b3I9KFQqIG9wdHIp
Ci0gICAgewotICAgICAgICBnY1Byb3RlY3ROdWxsVG9sZXJhbnQob3B0cik7Ci0gICAgICAgIGdj
VW5wcm90ZWN0TnVsbFRvbGVyYW50KG1fcHRyKTsKLSAgICAgICAgbV9wdHIgPSBvcHRyOwotICAg
ICAgICByZXR1cm4gKnRoaXM7Ci0gICAgfQotCi0gICAgaW5saW5lIFByb3RlY3RlZEpTVmFsdWU6
OlByb3RlY3RlZEpTVmFsdWUoSlNWYWx1ZSB2YWx1ZSkKLSAgICAgICAgOiBtX3ZhbHVlKHZhbHVl
KQotICAgIHsKLSAgICAgICAgZ2NQcm90ZWN0KG1fdmFsdWUpOwotICAgIH0KLQotICAgIGlubGlu
ZSBQcm90ZWN0ZWRKU1ZhbHVlOjpQcm90ZWN0ZWRKU1ZhbHVlKGNvbnN0IFByb3RlY3RlZEpTVmFs
dWUmIG8pCi0gICAgICAgIDogbV92YWx1ZShvLmdldCgpKQotICAgIHsKLSAgICAgICAgZ2NQcm90
ZWN0KG1fdmFsdWUpOwotICAgIH0KLQotICAgIGlubGluZSBQcm90ZWN0ZWRKU1ZhbHVlOjp+UHJv
dGVjdGVkSlNWYWx1ZSgpCi0gICAgewotICAgICAgICBnY1VucHJvdGVjdChtX3ZhbHVlKTsKLSAg
ICB9Ci0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVT4gUHJvdGVjdGVkSlNWYWx1ZTo6UHJvdGVjdGVk
SlNWYWx1ZShjb25zdCBQcm90ZWN0ZWRQdHI8VT4mIG8pCi0gICAgICAgIDogbV92YWx1ZShvLmdl
dCgpKQotICAgIHsKLSAgICAgICAgZ2NQcm90ZWN0KG1fdmFsdWUpOwotICAgIH0KLQotICAgIGlu
bGluZSBQcm90ZWN0ZWRKU1ZhbHVlJiBQcm90ZWN0ZWRKU1ZhbHVlOjpvcGVyYXRvcj0oY29uc3Qg
UHJvdGVjdGVkSlNWYWx1ZSYgbykgCi0gICAgewotICAgICAgICBKU1ZhbHVlIG92YWx1ZSA9IG8u
bV92YWx1ZTsKLSAgICAgICAgZ2NQcm90ZWN0KG92YWx1ZSk7Ci0gICAgICAgIGdjVW5wcm90ZWN0
KG1fdmFsdWUpOwotICAgICAgICBtX3ZhbHVlID0gb3ZhbHVlOwotICAgICAgICByZXR1cm4gKnRo
aXM7Ci0gICAgfQotCi0gICAgaW5saW5lIFByb3RlY3RlZEpTVmFsdWUmIFByb3RlY3RlZEpTVmFs
dWU6Om9wZXJhdG9yPShKU1ZhbHVlIG92YWx1ZSkKLSAgICB7Ci0gICAgICAgIGdjUHJvdGVjdChv
dmFsdWUpOwotICAgICAgICBnY1VucHJvdGVjdChtX3ZhbHVlKTsKLSAgICAgICAgbV92YWx1ZSA9
IG92YWx1ZTsKLSAgICAgICAgcmV0dXJuICp0aGlzOwotICAgIH0KLQotICAgIHRlbXBsYXRlIDxj
bGFzcyBUPiBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFByb3RlY3RlZFB0cjxUPiYgYSwg
Y29uc3QgUHJvdGVjdGVkUHRyPFQ+JiBiKSB7IHJldHVybiBhLmdldCgpID09IGIuZ2V0KCk7IH0K
LSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVD4gaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBQcm90
ZWN0ZWRQdHI8VD4mIGEsIGNvbnN0IFQqIGIpIHsgcmV0dXJuIGEuZ2V0KCkgPT0gYjsgfQotICAg
IHRlbXBsYXRlIDxjbGFzcyBUPiBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFQqIGEsIGNv
bnN0IFByb3RlY3RlZFB0cjxUPiYgYikgeyByZXR1cm4gYSA9PSBiLmdldCgpOyB9Ci0KLSAgICB0
ZW1wbGF0ZSA8Y2xhc3MgVD4gaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBQcm90ZWN0ZWRQ
dHI8VD4mIGEsIGNvbnN0IFByb3RlY3RlZFB0cjxUPiYgYikgeyByZXR1cm4gYS5nZXQoKSAhPSBi
LmdldCgpOyB9Ci0gICAgdGVtcGxhdGUgPGNsYXNzIFQ+IGlubGluZSBib29sIG9wZXJhdG9yIT0o
Y29uc3QgUHJvdGVjdGVkUHRyPFQ+JiBhLCBjb25zdCBUKiBiKSB7IHJldHVybiBhLmdldCgpICE9
IGI7IH0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVD4gaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25z
dCBUKiBhLCBjb25zdCBQcm90ZWN0ZWRQdHI8VD4mIGIpIHsgcmV0dXJuIGEgIT0gYi5nZXQoKTsg
fQotCi0gICAgaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBQcm90ZWN0ZWRKU1ZhbHVlJiBh
LCBjb25zdCBQcm90ZWN0ZWRKU1ZhbHVlJiBiKSB7IHJldHVybiBhLmdldCgpID09IGIuZ2V0KCk7
IH0KLSAgICBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFByb3RlY3RlZEpTVmFsdWUmIGEs
IGNvbnN0IEpTVmFsdWUgYikgeyByZXR1cm4gYS5nZXQoKSA9PSBiOyB9Ci0gICAgdGVtcGxhdGUg
PGNsYXNzIFQ+IGlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgUHJvdGVjdGVkSlNWYWx1ZSYg
YSwgY29uc3QgUHJvdGVjdGVkUHRyPFQ+JiBiKSB7IHJldHVybiBhLmdldCgpID09IEpTVmFsdWUo
Yi5nZXQoKSk7IH0KLSAgICBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEpTVmFsdWUgYSwg
Y29uc3QgUHJvdGVjdGVkSlNWYWx1ZSYgYikgeyByZXR1cm4gYSA9PSBiLmdldCgpOyB9Ci0gICAg
dGVtcGxhdGUgPGNsYXNzIFQ+IGlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgUHJvdGVjdGVk
UHRyPFQ+JiBhLCBjb25zdCBQcm90ZWN0ZWRKU1ZhbHVlJiBiKSB7IHJldHVybiBKU1ZhbHVlKGEu
Z2V0KCkpID09IGIuZ2V0KCk7IH0KLQotICAgIGlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3Qg
UHJvdGVjdGVkSlNWYWx1ZSYgYSwgY29uc3QgUHJvdGVjdGVkSlNWYWx1ZSYgYikgeyByZXR1cm4g
YS5nZXQoKSAhPSBiLmdldCgpOyB9Ci0gICAgaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBQ
cm90ZWN0ZWRKU1ZhbHVlJiBhLCBjb25zdCBKU1ZhbHVlIGIpIHsgcmV0dXJuIGEuZ2V0KCkgIT0g
YjsgfQotICAgIHRlbXBsYXRlIDxjbGFzcyBUPiBpbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0
IFByb3RlY3RlZEpTVmFsdWUmIGEsIGNvbnN0IFByb3RlY3RlZFB0cjxUPiYgYikgeyByZXR1cm4g
YS5nZXQoKSAhPSBKU1ZhbHVlKGIuZ2V0KCkpOyB9Ci0gICAgaW5saW5lIGJvb2wgb3BlcmF0b3Ih
PShjb25zdCBKU1ZhbHVlIGEsIGNvbnN0IFByb3RlY3RlZEpTVmFsdWUmIGIpIHsgcmV0dXJuIGEg
IT0gYi5nZXQoKTsgfQotICAgIHRlbXBsYXRlIDxjbGFzcyBUPiBpbmxpbmUgYm9vbCBvcGVyYXRv
ciE9KGNvbnN0IFByb3RlY3RlZFB0cjxUPiYgYSwgY29uc3QgUHJvdGVjdGVkSlNWYWx1ZSYgYikg
eyByZXR1cm4gSlNWYWx1ZShhLmdldCgpKSAhPSBiLmdldCgpOyB9Ci0gCiB9IC8vIG5hbWVzcGFj
ZSBKU0MKIAogI2VuZGlmIC8vIFByb3RlY3RfaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1N0cnVjdHVyZS5jcHAKaW5kZXggZThmNWQ3YTk5NzkxMGQ2YmZjYTk3MjkxZDdjYTQ5Mjg0
ZTRlYjdjNS4uOTY3ZTRkN2NiZmMzMDcyMWY0MGNmZTQ2ODFlY2JlZGU3YjViMDVlMSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCkBAIC0yNjYsNyArMjY2
LDYgQEAgU3RydWN0dXJlOjp+U3RydWN0dXJlKCkKICAgICAgICAgbV9wcmV2aW91cy0+dHJhbnNp
dGlvblRhYmxlUmVtb3ZlKG1ha2VfcGFpcihtX25hbWVJblByZXZpb3VzLmdldCgpLCBtX2F0dHJp
YnV0ZXNJblByZXZpb3VzKSwgbV9zcGVjaWZpY1ZhbHVlSW5QcmV2aW91cyk7CiAKICAgICB9Ci0g
ICAgQVNTRVJUKCFtX2VudW1lcmF0aW9uQ2FjaGUuaGFzRGVhZE9iamVjdCgpKTsKIAogICAgIGlm
IChtX3Byb3BlcnR5VGFibGUpIHsKICAgICAgICAgdW5zaWduZWQgZW50cnlDb3VudCA9IG1fcHJv
cGVydHlUYWJsZS0+a2V5Q291bnQgKyBtX3Byb3BlcnR5VGFibGUtPmRlbGV0ZWRTZW50aW5lbENv
dW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJl
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaAppbmRleCA3Nzcy
NGFjZmYzNTQ2NjBjODI1MjJhN2E1NzUxNDhmNmU4OWY3ODQ3Li42MDI0ZmEyMTEyZGUwZjMwODYy
YjQ0ZmEzZDRjODE5NmE4OTg1NWZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TdHJ1Y3R1cmUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
dHJ1Y3R1cmUuaApAQCAtMTM2LDggKzEzNiw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2
b2lkIGRlc3BlY2lmeURpY3Rpb25hcnlGdW5jdGlvbihjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0
eU5hbWUpOwogICAgICAgICB2b2lkIGRpc2FibGVTcGVjaWZpY0Z1bmN0aW9uVHJhY2tpbmcoKSB7
IG1fc3BlY2lmaWNGdW5jdGlvblRocmFzaENvdW50ID0gbWF4U3BlY2lmaWNGdW5jdGlvblRocmFz
aENvdW50OyB9CiAKLSAgICAgICAgdm9pZCBzZXRFbnVtZXJhdGlvbkNhY2hlKEpTUHJvcGVydHlO
YW1lSXRlcmF0b3IqIGVudW1lcmF0aW9uQ2FjaGUpOyAvLyBEZWZpbmVkIGluIEpTUHJvcGVydHlO
YW1lSXRlcmF0b3IuaC4KLSAgICAgICAgdm9pZCBjbGVhckVudW1lcmF0aW9uQ2FjaGUoSlNQcm9w
ZXJ0eU5hbWVJdGVyYXRvciogZW51bWVyYXRpb25DYWNoZSk7IC8vIERlZmluZWQgaW4gSlNQcm9w
ZXJ0eU5hbWVJdGVyYXRvci5oLgorICAgICAgICB2b2lkIHNldEVudW1lcmF0aW9uQ2FjaGUoSlNH
bG9iYWxEYXRhJiwgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvciogZW51bWVyYXRpb25DYWNoZSk7IC8v
IERlZmluZWQgaW4gSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oLgorICAgICAgICB2b2lkIGNsZWFy
RW51bWVyYXRpb25DYWNoZSgpOyAvLyBEZWZpbmVkIGluIEpTUHJvcGVydHlOYW1lSXRlcmF0b3Iu
aC4KICAgICAgICAgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvciogZW51bWVyYXRpb25DYWNoZSgpOyAv
LyBEZWZpbmVkIGluIEpTUHJvcGVydHlOYW1lSXRlcmF0b3IuaC4KICAgICAgICAgdm9pZCBnZXRQ
cm9wZXJ0eU5hbWVzKFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlIG1vZGUpOwog
ICAgICAgICAKQEAgLTIyMCw3ICsyMjAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAg
IFN0cnVjdHVyZSogbV9zaW5nbGVUcmFuc2l0aW9uOwogICAgICAgICB9IG1fdHJhbnNpdGlvbnM7
CiAKLSAgICAgICAgV2Vha0dDUHRyPEpTUHJvcGVydHlOYW1lSXRlcmF0b3I+IG1fZW51bWVyYXRp
b25DYWNoZTsKKyAgICAgICAgTGF6eVdlYWtHQ1B0cjxKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yPiBt
X2VudW1lcmF0aW9uQ2FjaGU7CiAKICAgICAgICAgUHJvcGVydHlNYXBIYXNoVGFibGUqIG1fcHJv
cGVydHlUYWJsZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
V2Vha0dDUHRyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrR0NQdHIuaApp
bmRleCA0OTQ2ZWU3YzViMTNlMmYwYmU3YmU4ZjZkZDBlODJhYjM3ZTQ3ODJhLi5hOWI2OWQ1NWVj
NjRhZDI3MWFlZTA1NzA0MWQxZmNiNzRhZjZjZTM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9XZWFrR0NQdHIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9XZWFrR0NQdHIuaApAQCAtMjYsMTI3ICsyNiwxMTEgQEAKICNpZm5kZWYgV2Vha0dD
UHRyX2gKICNkZWZpbmUgV2Vha0dDUHRyX2gKIAorI2luY2x1ZGUgIkdsb2JhbC5oIgogI2luY2x1
ZGUgIkhlYXAuaCIKLSNpbmNsdWRlICJHQ0hhbmRsZS5oIgogCiBuYW1lc3BhY2UgSlNDIHsKKy8v
IEEgc21hcnQgcG9pbnRlciB3aG9zZSBnZXQoKSBmdW5jdGlvbiByZXR1cm5zIDAgZm9yIGNlbGxz
IHRoYXQgaGF2ZSBkaWVkCisKK3RlbXBsYXRlIDx0eXBlbmFtZSBULCBib29sIGlzTGF6eT4gY2xh
c3MgV2Vha0dDUHRyQmFzZSA6IHB1YmxpYyBIYW5kbGVDb252ZXJ0ZXI8V2Vha0dDUHRyQmFzZTxU
LCBpc0xhenk+LCBUPiB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoV2Vha0dDUHRyQmFzZSk7
CiAKLS8vIEEgc21hcnQgcG9pbnRlciB3aG9zZSBnZXQoKSBmdW5jdGlvbiByZXR1cm5zIDAgZm9y
IGNlbGxzIGF3YWl0aW5nIGRlc3RydWN0aW9uLgotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNz
IFdlYWtHQ1B0ciB7Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoV2Vha0dDUHRyKTsKIHB1Ymxp
YzoKLSAgICBXZWFrR0NQdHIoKQotICAgICAgICA6IG1fcHRyKDApCisgICAgdHlwZWRlZiB0eXBl
bmFtZSBIYW5kbGVUeXBlczxUPjo6RXh0ZXJuYWxUeXBlIEV4dGVybmFsVHlwZTsKKworICAgIEV4
dGVybmFsVHlwZSBnZXQoKSBjb25zdCB7IHJldHVybiAgSGFuZGxlVHlwZXM8VD46OmdldEZyb21T
bG90KG1fc2xvdCk7IH0KKyAgICAKKyAgICB2b2lkIGNsZWFyKCkKICAgICB7CisgICAgICAgIGlm
ICghaXNMYXp5IHx8IG1fc2xvdCkKKyAgICAgICAgICAgIGludGVybmFsU2V0KEV4dGVybmFsVHlw
ZSgpKTsKICAgICB9CisgICAgCisgICAgYm9vbCBvcGVyYXRvciEoKSBjb25zdCB7IHJldHVybiAo
aXNMYXp5ICYmICFtX3Nsb3QpIHx8ICEqbV9zbG90OyB9CiAKLSAgICBXZWFrR0NQdHIoVCogcHRy
KSB7IGFzc2lnbihwdHIpOyB9CisgICAgLy8gVGhpcyBjb252ZXJzaW9uIG9wZXJhdG9yIGFsbG93
cyBpbXBsaWNpdCBjb252ZXJzaW9uIHRvIGJvb2wgYnV0IG5vdCB0byBvdGhlciBpbnRlZ2VyIHR5
cGVzLgorICAgIHR5cGVkZWYgRXh0ZXJuYWxUeXBlIChXZWFrR0NQdHJCYXNlOjoqVW5zcGVjaWZp
ZWRCb29sVHlwZSk7CisgICAgb3BlcmF0b3IgVW5zcGVjaWZpZWRCb29sVHlwZSooKSBjb25zdCB7
IHJldHVybiAhKnRoaXMgPyAwIDogcmVpbnRlcnByZXRfY2FzdDxVbnNwZWNpZmllZEJvb2xUeXBl
Kj4oMSk7IH0KKworICAgIH5XZWFrR0NQdHJCYXNlKCkKKyAgICB7CisgICAgICAgIGlmIChpc0xh
enkgJiYgIW1fc2xvdCkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgSGFuZGxlSGVhcDo6
aGVhcEZvcihtX3Nsb3QpLT5kZWFsbG9jYXRlKG1fc2xvdCk7CisgICAgfQogCi0gICAgfldlYWtH
Q1B0cigpCitwcm90ZWN0ZWQ6CisgICAgV2Vha0dDUHRyQmFzZSgpCisgICAgICAgIDogbV9zbG90
KDApCiAgICAgewotICAgICAgICBpZiAobV9wdHIpCi0gICAgICAgICAgICBtX3B0ci0+cG9vbCgp
LT5mcmVlKG1fcHRyKTsKKyAgICAgICAgQ09NUElMRV9BU1NFUlQoaXNMYXp5LCBEb250X2NhbGxf
ZGVmYXVsdF9jb25zdHJ1Y3Rvcl9vbl9ub25sYXp5X2hhbmRsZSk7CiAgICAgfQogCi0gICAgVCog
Z2V0KCkgY29uc3QKKyAgICBXZWFrR0NQdHJCYXNlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwg
RmluYWxpemVyIGZpbmFsaXplciA9IDApCisgICAgICAgIDogbV9zbG90KGdsb2JhbERhdGEuYWxs
b2NhdGVHbG9iYWxIYW5kbGUoKSkKICAgICB7Ci0gICAgICAgIGlmIChtX3B0ciAmJiBtX3B0ci0+
aXNWYWxpZFB0cigpKQotICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFQqPihtX3B0ci0+
Z2V0KCkpOwotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgQ09NUElMRV9BU1NFUlQoIWlzTGF6
eSwgRG9udF9jYWxsX2Fzc2lnbmluZ19jb25zdHJ1Y3Rvcl9vbl9sYXp5X2hhbmRsZSk7CisgICAg
ICAgIEhhbmRsZUhlYXA6OmhlYXBGb3IobV9zbG90KS0+bWFrZVdlYWsobV9zbG90LCBmaW5hbGl6
ZXIpOwogICAgIH0KICAgICAKLSAgICBib29sIGNsZWFyKEpTQ2VsbCogcCkKKyAgICBXZWFrR0NQ
dHJCYXNlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgRXh0ZXJuYWxUeXBlIHZhbHVlLCBGaW5h
bGl6ZXIgZmluYWxpemVyID0gMCkKKyAgICAgICAgOiBtX3Nsb3QoZ2xvYmFsRGF0YS5hbGxvY2F0
ZUdsb2JhbEhhbmRsZSgpKQogICAgIHsKLSAgICAgICAgaWYgKCFtX3B0ciB8fCBtX3B0ci0+Z2V0
KCkgIT0gcCkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgICAgICBtX3B0ci0+cG9v
bCgpLT5mcmVlKG1fcHRyKTsKLSAgICAgICAgbV9wdHIgPSAwOwotICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICAgICAgQ09NUElMRV9BU1NFUlQoIWlzTGF6eSwgRG9udF9jYWxsX2Fzc2lnbmluZ19j
b25zdHJ1Y3Rvcl9vbl9sYXp5X2hhbmRsZSk7CisgICAgICAgIEhhbmRsZUhlYXA6OmhlYXBGb3Io
bV9zbG90KS0+bWFrZVdlYWsobV9zbG90LCBmaW5hbGl6ZXIpOworICAgICAgICBpbnRlcm5hbFNl
dCh2YWx1ZSk7CiAgICAgfQotCi0gICAgVCYgb3BlcmF0b3IqKCkgY29uc3QgeyByZXR1cm4gKmdl
dCgpOyB9Ci0gICAgVCogb3BlcmF0b3ItPigpIGNvbnN0IHsgcmV0dXJuIGdldCgpOyB9CiAgICAg
Ci0gICAgYm9vbCBvcGVyYXRvciEoKSBjb25zdCB7IHJldHVybiAhZ2V0KCk7IH0KKyAgICB2b2lk
IGludGVybmFsU2V0KEV4dGVybmFsVHlwZSB2YWx1ZSkKKyAgICB7CisgICAgICAgIEFTU0VSVCht
X3Nsb3QpOworICAgICAgICBKU1ZhbHVlIG5ld1ZhbHVlKEhhbmRsZVR5cGVzPFQ+Ojp0b0pTVmFs
dWUodmFsdWUpKTsKKyAgICAgICAgSGFuZGxlSGVhcDo6aGVhcEZvcihtX3Nsb3QpLT53cml0ZUJh
cnJpZXIobV9zbG90LCBuZXdWYWx1ZSk7CisgICAgICAgICptX3Nsb3QgPSBuZXdWYWx1ZTsKKyAg
ICB9CiAKLSAgICAvLyBUaGlzIGNvbnZlcnNpb24gb3BlcmF0b3IgYWxsb3dzIGltcGxpY2l0IGNv
bnZlcnNpb24gdG8gYm9vbCBidXQgbm90IHRvIG90aGVyIGludGVnZXIgdHlwZXMuCi0jaWYgQ09N
UElMRVIoV0lOU0NXKQotICAgIG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiBtX3B0cjsg
fQotI2Vsc2UKLSAgICB0eXBlZGVmIFdlYWtHQ0hhbmRsZSogV2Vha0dDUHRyOjoqVW5zcGVjaWZp
ZWRCb29sVHlwZTsKLSAgICBvcGVyYXRvciBVbnNwZWNpZmllZEJvb2xUeXBlKCkgY29uc3QgeyBy
ZXR1cm4gZ2V0KCkgPyAmV2Vha0dDUHRyOjptX3B0ciA6IDA7IH0KLSNlbmRpZgorICAgIEhhbmRs
ZVNsb3QgbV9zbG90OworfTsKIAotICAgIFdlYWtHQ1B0ciYgb3BlcmF0b3I9KFQqKTsKK3RlbXBs
YXRlIDx0eXBlbmFtZSBUPiBjbGFzcyBMYXp5V2Vha0dDUHRyIDogcHVibGljIFdlYWtHQ1B0ckJh
c2U8VCwgdHJ1ZT4geworcHVibGljOgorICAgIHR5cGVkZWYgdHlwZW5hbWUgV2Vha0dDUHRyQmFz
ZTxULCB0cnVlPjo6RXh0ZXJuYWxUeXBlIEV4dGVybmFsVHlwZTsKIAotI2lmICFBU1NFUlRfRElT
QUJMRUQKLSAgICBib29sIGhhc0RlYWRPYmplY3QoKSBjb25zdCB7IHJldHVybiAhIW1fcHRyOyB9
Ci0jZW5kaWYKKyAgICBMYXp5V2Vha0dDUHRyKCkKKyAgICB7CisgICAgfQogCi1wcml2YXRlOgot
ICAgIHZvaWQgYXNzaWduKEpTQ2VsbCogcHRyKQorICAgIHZvaWQgc2V0KEpTR2xvYmFsRGF0YSYg
Z2xvYmFsRGF0YSwgRXh0ZXJuYWxUeXBlIHZhbHVlLCBGaW5hbGl6ZXIgZmluYWxpemVyKQogICAg
IHsKLSAgICAgICAgQVNTRVJUKHB0cik7Ci0gICAgICAgIGlmIChtX3B0cikKLSAgICAgICAgICAg
IG1fcHRyLT5zZXQocHRyKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgbV9wdHIgPSBIZWFw
OjpoZWFwKHB0ciktPmFkZFdlYWtHQ0hhbmRsZShwdHIpOworICAgICAgICBpZiAoIXRoaXMtPm1f
c2xvdCkgeworICAgICAgICAgICAgdGhpcy0+bV9zbG90ID0gZ2xvYmFsRGF0YS5hbGxvY2F0ZUds
b2JhbEhhbmRsZSgpOworICAgICAgICAgICAgSGFuZGxlSGVhcDo6aGVhcEZvcih0aGlzLT5tX3Ns
b3QpLT5tYWtlV2Vhayh0aGlzLT5tX3Nsb3QsIGZpbmFsaXplcik7CisgICAgICAgIH0KKyAgICAg
ICAgdGhpcy0+aW50ZXJuYWxTZXQodmFsdWUpOwogICAgIH0KIAotICAgIFdlYWtHQ0hhbmRsZSog
bV9wdHI7CiB9OwogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gaW5saW5lIFdlYWtHQ1B0cjxUPiYg
V2Vha0dDUHRyPFQ+OjpvcGVyYXRvcj0oVCogb3B0cikKLXsKLSAgICBhc3NpZ24ob3B0cik7Ci0g
ICAgcmV0dXJuICp0aGlzOwotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4g
aW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBXZWFrR0NQdHI8VD4mIGEsIGNvbnN0IFdlYWtH
Q1B0cjxVPiYgYikKLXsgCi0gICAgcmV0dXJuIGEuZ2V0KCkgPT0gYi5nZXQoKTsgCi19Ci0KLXRl
bXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNv
bnN0IFdlYWtHQ1B0cjxUPiYgYSwgVSogYikKLXsgCi0gICAgcmV0dXJuIGEuZ2V0KCkgPT0gYjsg
Ci19Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBpbmxpbmUgYm9vbCBvcGVy
YXRvcj09KFQqIGEsIGNvbnN0IFdlYWtHQ1B0cjxVPiYgYikgCi17Ci0gICAgcmV0dXJuIGEgPT0g
Yi5nZXQoKTsgCi19Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBpbmxpbmUg
Ym9vbCBvcGVyYXRvciE9KGNvbnN0IFdlYWtHQ1B0cjxUPiYgYSwgY29uc3QgV2Vha0dDUHRyPFU+
JiBiKQoteyAKLSAgICByZXR1cm4gYS5nZXQoKSAhPSBiLmdldCgpOyAKLX0KLQotdGVtcGxhdGUg
PHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+IGlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgV2Vh
a0dDUHRyPFQ+JiBhLCBVKiBiKQotewotICAgIHJldHVybiBhLmdldCgpICE9IGI7IAotfQotCi10
ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4gaW5saW5lIGJvb2wgb3BlcmF0b3IhPShU
KiBhLCBjb25zdCBXZWFrR0NQdHI8VT4mIGIpCi17IAotICAgIHJldHVybiBhICE9IGIuZ2V0KCk7
IAotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4gaW5saW5lIFdlYWtHQ1B0
cjxUPiBzdGF0aWNfcG9pbnRlcl9jYXN0KGNvbnN0IFdlYWtHQ1B0cjxVPiYgcCkKLXsgCi0gICAg
cmV0dXJuIFdlYWtHQ1B0cjxUPihzdGF0aWNfY2FzdDxUKj4ocC5nZXQoKSkpOyAKLX0KLQotdGVt
cGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+IGlubGluZSBXZWFrR0NQdHI8VD4gY29uc3Rf
cG9pbnRlcl9jYXN0KGNvbnN0IFdlYWtHQ1B0cjxVPiYgcCkKLXsgCi0gICAgcmV0dXJuIFdlYWtH
Q1B0cjxUPihjb25zdF9jYXN0PFQqPihwLmdldCgpKSk7IAotfQotCi10ZW1wbGF0ZSA8dHlwZW5h
bWUgVD4gaW5saW5lIFQqIGdldChjb25zdCBXZWFrR0NQdHI8VD4mIHApCi17Ci0gICAgcmV0dXJu
IHAuZ2V0KCk7Ci19Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY2xhc3MgV2Vha0dDUHRyIDogcHVi
bGljIFdlYWtHQ1B0ckJhc2U8VCwgZmFsc2U+ICB7CitwdWJsaWM6CisgICAgdHlwZWRlZiB0eXBl
bmFtZSBXZWFrR0NQdHJCYXNlPFQsIGZhbHNlPjo6RXh0ZXJuYWxUeXBlIEV4dGVybmFsVHlwZTsK
KyAgICAKKyAgICBXZWFrR0NQdHIoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBGaW5hbGl6ZXIg
ZmluYWxpemVyID0gMCkKKyAgICAgICAgOiBXZWFrR0NQdHJCYXNlPFQsIGZhbHNlPihnbG9iYWxE
YXRhLCBmaW5hbGl6ZXIpCisgICAgeworICAgIH0KKyAgICAKKyAgICBXZWFrR0NQdHIoSlNHbG9i
YWxEYXRhJiBnbG9iYWxEYXRhLCBFeHRlcm5hbFR5cGUgdmFsdWUsIEZpbmFsaXplciBmaW5hbGl6
ZXIgPSAwKQorICAgICAgICA6IFdlYWtHQ1B0ckJhc2U8VCwgZmFsc2U+KGdsb2JhbERhdGEsIHZh
bHVlLCBmaW5hbGl6ZXIpCisgICAgeworICAgIH0KKyAgICAKKyAgICBjb25zdCBXZWFrR0NQdHIm
IG9wZXJhdG9yPShFeHRlcm5hbFR5cGUgdmFsdWUpCisgICAgeworICAgICAgICB0aGlzLT5pbnRl
cm5hbFNldCh2YWx1ZSk7CisgICAgICAgIHJldHVybiAqdGhpczsKKyAgICB9Cit9OwogCiB9IC8v
IG5hbWVzcGFjZSBKU0MKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvV3JpdGVCYXJyaWVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Xcml0ZUJh
cnJpZXIuaAppbmRleCA2NDE1MGVkY2U1OGIxYTA1NDUxOTBhNzg0ZDBhODVlOTI0NGIyYTA1Li40
NDg0MGFkZGQ3MWFiZmY1NzExODIyNjMzNWQ1ZWQzZjdlMDA2YjdlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Xcml0ZUJhcnJpZXIuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Xcml0ZUJhcnJpZXIuaApAQCAtMzMsNiArMzMsNyBAQCBjbGFz
cyBKU0NlbGw7CiBjbGFzcyBKU0dsb2JhbERhdGE7CiAKIHR5cGVkZWYgZW51bSB7IH0gVW5rbm93
bjsKK3R5cGVkZWYgSlNWYWx1ZSogSGFuZGxlU2xvdDsKIAogdGVtcGxhdGUgPGNsYXNzIFQ+IGNs
YXNzIERlcHJlY2F0ZWRQdHIgewogcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRHbHVlL0NoYW5nZUxvZyBiL1NvdXJjZS9KYXZhU2NyaXB0R2x1ZS9DaGFuZ2VMb2cKaW5kZXgg
Y2MxMzg4NGQ5MTNhZmQ2NGRlODQ2MDllODNkNWFhNTI4YzYzMjRiZC4uMzRlZjQ1MjI3MGJhY2U5
MWRjZDE2YjkzODBjMjE2NTcwNTk2MmRlYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRH
bHVlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdEdsdWUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMjAgQEAKKzIwMTEtMDItMTQgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZWZhY3Rv
ciBoYW5kbGVzIGFuZCB3ZWFrIHBvaW50ZXJzIHRvIGJlY29tZSBuaWNlciBhbmQgbW9yZSBhdXRv
bWF0aWMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU0
NDE1CisKKyAgICAgICAgVXBkYXRlIHRvIHVzZSBuZXcgR2xvYmFsPD4gdHlwZQorCisgICAgICAg
ICogSlNSdW4uY3BwOgorICAgICAgICAoSlNSdW46OkpTUnVuKToKKyAgICAgICAgKEpTUnVuOjpH
bG9iYWxPYmplY3QpOgorICAgICAgICAqIEpTUnVuLmg6CisgICAgICAgICogSlNWYWx1ZVdyYXBw
ZXIuY3BwOgorICAgICAgICAoSlNWYWx1ZVdyYXBwZXI6OkpTVmFsdWVXcmFwcGVyKToKKyAgICAg
ICAgKiBKU1ZhbHVlV3JhcHBlci5oOgorCiAyMDExLTAyLTEzICBDYW1lcm9uIFp3YXJpY2ggIDx6
d2FyaWNoQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYW4gQmVybnN0ZWluLgpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRHbHVlL0pTUnVuLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0R2x1ZS9KU1J1bi5jcHAKaW5kZXggMDNmYzQzMWI5MWFjNWNhOWM5N2FlOWIzZjkwN2Rl
MGYyMTUxYTMwYy4uNzgxNTFjMWU0OTY4OGYyYjMzNWE1OGJjMDQ2NDZkZGYxOTBiYTEyZCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRHbHVlL0pTUnVuLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdEdsdWUvSlNSdW4uY3BwCkBAIC00OCw3ICs0OCw3IEBAIHZvaWQgSlNHbHVlR2xvYmFs
T2JqZWN0OjpkZXN0cm95RGF0YSh2b2lkKiBkYXRhKQogSlNSdW46OkpTUnVuKENGU3RyaW5nUmVm
IHNvdXJjZSwgSlNGbGFncyBpbkZsYWdzKQogICAgIDogICBKU0Jhc2Uoa0pTUnVuVHlwZUlEKSwK
ICAgICAgICAgZlNvdXJjZShDRlN0cmluZ1RvVVN0cmluZyhzb3VyY2UpKSwKLSAgICAgICAgZkds
b2JhbE9iamVjdChuZXcgKCZnZXRUaHJlYWRHbG9iYWxFeGVjU3RhdGUoKS0+Z2xvYmFsRGF0YSgp
KSBKU0dsdWVHbG9iYWxPYmplY3QoSlNHbHVlR2xvYmFsT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUo
anNOdWxsKCkpLCBpbkZsYWdzKSksCisgICAgICAgIGZHbG9iYWxPYmplY3QoZ2V0VGhyZWFkR2xv
YmFsRXhlY1N0YXRlKCktPmdsb2JhbERhdGEoKSwgbmV3ICgmZ2V0VGhyZWFkR2xvYmFsRXhlY1N0
YXRlKCktPmdsb2JhbERhdGEoKSkgSlNHbHVlR2xvYmFsT2JqZWN0KEpTR2x1ZUdsb2JhbE9iamVj
dDo6Y3JlYXRlU3RydWN0dXJlKGpzTnVsbCgpKSwgaW5GbGFncykpLAogICAgICAgICBmRmxhZ3Mo
aW5GbGFncykKIHsKIH0KQEAgLTY5LDcgKzY5LDcgQEAgVVN0cmluZyBKU1J1bjo6R2V0U291cmNl
KCkgY29uc3QKIAogSlNHbG9iYWxPYmplY3QqIEpTUnVuOjpHbG9iYWxPYmplY3QoKSBjb25zdAog
ewotICAgIHJldHVybiBmR2xvYmFsT2JqZWN0OworICAgIHJldHVybiBmR2xvYmFsT2JqZWN0Lmdl
dCgpOwogfQogCiBDb21wbGV0aW9uIEpTUnVuOjpFdmFsdWF0ZSgpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdEdsdWUvSlNSdW4uaCBiL1NvdXJjZS9KYXZhU2NyaXB0R2x1ZS9KU1J1bi5o
CmluZGV4IDE1ZDQ5NWI4NDE1OTkwMDYwMTZkMDFmNzg4MmI4ZjYwNTEyOTJlNjEuLjkyNGJlY2Qx
ZDQzMzhkYWI3ZTgwYzBiMjhjMjc1MDhkNjM3NDJhYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0R2x1ZS9KU1J1bi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0R2x1ZS9KU1J1bi5oCkBA
IC02Nyw3ICs2Nyw3IEBAIGNsYXNzIEpTUnVuIDogcHVibGljIEpTQmFzZSB7CiAgICAgICAgIEpT
RmxhZ3MgRmxhZ3MoKSBjb25zdDsKICAgICBwcml2YXRlOgogICAgICAgICBVU3RyaW5nIGZTb3Vy
Y2U7Ci0gICAgICAgIFByb3RlY3RlZFB0cjxKU0dsb2JhbE9iamVjdD4gZkdsb2JhbE9iamVjdDsK
KyAgICAgICAgR2xvYmFsPEpTR2xvYmFsT2JqZWN0PiBmR2xvYmFsT2JqZWN0OwogICAgICAgICBK
U0ZsYWdzIGZGbGFnczsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0R2x1ZS9K
U1ZhbHVlV3JhcHBlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdEdsdWUvSlNWYWx1ZVdyYXBwZXIu
Y3BwCmluZGV4IGQ5YWM0OTdkOTE5NDJkY2JhZTc3ODVjZDdjM2IxYTU0NTI3NjhmOTkuLjMyNGE5
NzQ4NzllNjRjNmI2YTgyYmFhNDA1NjI0MjJiZDRiMjExY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0R2x1ZS9KU1ZhbHVlV3JhcHBlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRH
bHVlL0pTVmFsdWVXcmFwcGVyLmNwcApAQCAtMzQsNyArMzQsNyBAQAogI2luY2x1ZGUgPHB0aHJl
YWQuaD4KIAogSlNWYWx1ZVdyYXBwZXI6OkpTVmFsdWVXcmFwcGVyKEpTVmFsdWUgaW5WYWx1ZSkK
LSAgICA6IGZWYWx1ZShpblZhbHVlKQorICAgIDogZlZhbHVlKGdldFRocmVhZEdsb2JhbEV4ZWNT
dGF0ZSgpLT5nbG9iYWxEYXRhKCksIGluVmFsdWUpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0R2x1ZS9KU1ZhbHVlV3JhcHBlci5oIGIvU291cmNlL0phdmFTY3JpcHRHbHVl
L0pTVmFsdWVXcmFwcGVyLmgKaW5kZXggY2Q1NDRkMDgwNGExOGY2YmMyNDRjYzdmMzEzMzA3ZGI0
YjU5MTVhMy4uOWQyN2Y4OTkxNDY2M2VjMjA4OThhMzM2YTAwNjVmMThmYzM4NTNmZSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRHbHVlL0pTVmFsdWVXcmFwcGVyLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRHbHVlL0pTVmFsdWVXcmFwcGVyLmgKQEAgLTQzLDcgKzQzLDcgQEAgcHVibGlj
OgogICAgIEpTVmFsdWUgR2V0VmFsdWUoKTsKIAogcHJpdmF0ZToKLSAgICBQcm90ZWN0ZWRKU1Zh
bHVlIGZWYWx1ZTsKKyAgICBHbG9iYWw8VW5rbm93bj4gZlZhbHVlOwogICAgIAogICAgIHN0YXRp
YyB2b2lkIEpTT2JqZWN0RGlzcG9zZSh2b2lkICpkYXRhKTsKICAgICBzdGF0aWMgQ0ZBcnJheVJl
ZiBKU09iamVjdENvcHlQcm9wZXJ0eU5hbWVzKHZvaWQgKmRhdGEpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDQ5
NThkNjY2YmFkNDhkNmE4OWQwMTY0M2U0ZmMzYmE0YTM1NDNkZTMuLjA0YzVhYzhhNzQyMzhjY2Jh
NDg0Y2E1YjhlNjBhYjA1ZTE2ZDBlN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMDEgQEAKKzIw
MTEtMDItMTQgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZWZhY3RvciBoYW5kbGVzIGFuZCB3
ZWFrIHBvaW50ZXJzIHRvIGJlY29tZSBuaWNlciBhbmQgbW9yZSBhdXRvbWF0aWMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU0NDE1CisKKyAgICAgICAg
VXBkYXRlIFdlYkNvcmUgdG8gdXNlIHRoZSBuZXcgR2xvYmFsPD4gdHlwZSByYXRoZXIgdGhhbiBQ
cm90ZWN0ZWRKU1ZhbHVlCisgICAgICAgIGFuZCBnY1tVbl1Qcm90ZWN0LiAgQWxzbyB1cGRhdGUg
dG8gdXNlIG5ldyBXZWFrR0NQdHIgQVBJcywgYW5kIHJlbW92ZSBub3cKKyAgICAgICAgdW5uZWNl
c3NhcnkgZGVzdHJ1Y3RvcnMuCisKKyAgICAgICAgKiBGb3J3YXJkaW5nSGVhZGVycy9jb2xsZWN0
b3IvaGFuZGxlcy9HbG9iYWwuaDogQWRkZWQuCisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2Vi
Q29yZS52Y3Byb2o6CisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovY29weUZvcndhcmRpbmdIZWFk
ZXJzLmNtZDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0NhbGxiYWNrRGF0YS5oOgorICAgICAg
ICAoV2ViQ29yZTo6SlNDYWxsYmFja0RhdGE6OkpTQ2FsbGJhY2tEYXRhKToKKyAgICAgICAgKiBi
aW5kaW5ncy9qcy9KU0N1c3RvbVZvaWRDYWxsYmFjay5oOgorICAgICAgICAqIGJpbmRpbmdzL2pz
L0pTRE9NQmluZGluZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpmb3JnZXRET01Ob2RlKToKKyAg
ICAgICAgKFdlYkNvcmU6OmNhY2hlRE9NTm9kZVdyYXBwZXIpOgorICAgICAgICAqIGJpbmRpbmdz
L2pzL0pTRE9NV2luZG93QmFzZS5oOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93
U2hlbGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3dTaGVsbDo6c2V0V2luZG93
KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RhdGFHcmlkRGF0YVNvdXJjZS5oOgorICAgICAg
ICAqIGJpbmRpbmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpK
U0V2ZW50TGlzdGVuZXI6OkpTRXZlbnRMaXN0ZW5lcik6CisgICAgICAgICogYmluZGluZ3MvanMv
SlNFdmVudExpc3RlbmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpKU0V2ZW50TGlzdGVuZXI6OnNl
dFdyYXBwZXIpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTTGF6eUV2ZW50TGlzdGVuZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SlNMYXp5RXZlbnRMaXN0ZW5lcjo6aW5pdGlhbGl6ZUpTRnVu
Y3Rpb24pOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NjaGVkdWxlZEFjdGlvbi5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTY2hlZHVsZWRBY3Rpb246OlNjaGVkdWxlZEFjdGlvbik6CisgICAgICAg
IChXZWJDb3JlOjpTY2hlZHVsZWRBY3Rpb246OmV4ZWN1dGVGdW5jdGlvbkluQ29udGV4dCk6Cisg
ICAgICAgICogYmluZGluZ3MvanMvU2NoZWR1bGVkQWN0aW9uLmg6CisgICAgICAgIChXZWJDb3Jl
OjpTY2hlZHVsZWRBY3Rpb246OlNjaGVkdWxlZEFjdGlvbik6CisgICAgICAgICogYmluZGluZ3Mv
anMvU2NyaXB0Q2FjaGVkRnJhbWVEYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENh
Y2hlZEZyYW1lRGF0YTo6U2NyaXB0Q2FjaGVkRnJhbWVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6
OlNjcmlwdENhY2hlZEZyYW1lRGF0YTo6cmVzdG9yZSk6CisgICAgICAgICogYmluZGluZ3MvanMv
U2NyaXB0Q2FjaGVkRnJhbWVEYXRhLmg6CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0Q2Fs
bFN0YWNrRmFjdG9yeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVTY3JpcHRBcmd1bWVu
dHMpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U2NyaXB0Q29udHJvbGxlcjo6Y3JlYXRlV2luZG93U2hlbGwpOgorICAgICAg
ICAoV2ViQ29yZTo6U2NyaXB0Q29udHJvbGxlcjo6ZXZhbHVhdGVJbldvcmxkKToKKyAgICAgICAg
KFdlYkNvcmU6OlNjcmlwdENvbnRyb2xsZXI6OmNsZWFyV2luZG93U2hlbGwpOgorICAgICAgICAo
V2ViQ29yZTo6U2NyaXB0Q29udHJvbGxlcjo6YXR0YWNoRGVidWdnZXIpOgorICAgICAgICAqIGJp
bmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3Jp
cHRGdW5jdGlvbkNhbGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RnVuY3Rpb25DYWxs
OjpjYWxsKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENhbGxiYWNrOjpjYWxsKToKKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
aXB0T2JqZWN0OjpTY3JpcHRPYmplY3QpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdE9i
amVjdC5oOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdFN0YXRlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNjcmlwdFN0YXRlUHJvdGVjdGVkUHRyOjpTY3JpcHRTdGF0ZVByb3RlY3RlZFB0
cik6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRTdGF0ZVByb3RlY3RlZFB0cjo6Z2V0KToKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRTdGF0ZS5oOgorICAgICAgICAqIGJpbmRpbmdzL2pz
L1NjcmlwdFZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdFZhbHVlOjppc0Z1bmN0
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdFZhbHVlOjpkZXNlcmlhbGl6ZSk6CisgICAg
ICAgICogYmluZGluZ3MvanMvU2NyaXB0VmFsdWUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlw
dFZhbHVlOjpTY3JpcHRWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRWYWx1ZTo6aGFz
Tm9WYWx1ZSk6CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0V3JhcHBhYmxlLmg6CisgICAg
ICAgIChXZWJDb3JlOjpTY3JpcHRXcmFwcGFibGU6OlNjcmlwdFdyYXBwYWJsZSk6CisgICAgICAg
IChXZWJDb3JlOjpTY3JpcHRXcmFwcGFibGU6OnNldFdyYXBwZXIpOgorICAgICAgICAqIGJpbmRp
bmdzL2pzL1dvcmtlclNjcmlwdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29y
a2VyU2NyaXB0Q29udHJvbGxlcjo6V29ya2VyU2NyaXB0Q29udHJvbGxlcik6CisgICAgICAgIChX
ZWJDb3JlOjpXb3JrZXJTY3JpcHRDb250cm9sbGVyOjp+V29ya2VyU2NyaXB0Q29udHJvbGxlcik6
CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJTY3JpcHRDb250cm9sbGVyOjppbml0U2NyaXB0KToK
KyAgICAgICAgKFdlYkNvcmU6OldvcmtlclNjcmlwdENvbnRyb2xsZXI6OmV2YWx1YXRlKToKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmg6CisgICAgICAgIChX
ZWJDb3JlOjpXb3JrZXJTY3JpcHRDb250cm9sbGVyOjp3b3JrZXJDb250ZXh0V3JhcHBlcik6Cisg
ICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG06CisgICAgICAgICog
YnJpZGdlL05QX2pzb2JqZWN0LmNwcDoKKyAgICAgICAgKF9OUE5fSW52b2tlRGVmYXVsdCk6Cisg
ICAgICAgIChfTlBOX0ludm9rZSk6CisgICAgICAgIChfTlBOX0V2YWx1YXRlKToKKyAgICAgICAg
KF9OUE5fQ29uc3RydWN0KToKKyAgICAgICAgKiBicmlkZ2UvanNjL0JyaWRnZUpTQy5jcHA6Cisg
ICAgICAgIChKU0M6OkJpbmRpbmdzOjpJbnN0YW5jZTo6SW5zdGFuY2UpOgorICAgICAgICAoSlND
OjpCaW5kaW5nczo6SW5zdGFuY2U6On5JbnN0YW5jZSk6CisgICAgICAgIChKU0M6OkJpbmRpbmdz
OjpJbnN0YW5jZTo6d2lsbERlc3Ryb3lSdW50aW1lT2JqZWN0KToKKyAgICAgICAgKEpTQzo6Qmlu
ZGluZ3M6Okluc3RhbmNlOjp3aWxsSW52YWxpZGF0ZVJ1bnRpbWVPYmplY3QpOgorICAgICAgICAq
IGJyaWRnZS9qc2MvQnJpZGdlSlNDLmg6CisgICAgICAgICogYnJpZGdlL3J1bnRpbWVfb2JqZWN0
LmNwcDoKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6OlJ1bnRpbWVPYmplY3Q6OmludmFsaWRhdGUp
OgorICAgICAgICAqIGJyaWRnZS9ydW50aW1lX3Jvb3QuY3BwOgorICAgICAgICAoSlNDOjpCaW5k
aW5nczo6Um9vdE9iamVjdDo6Um9vdE9iamVjdCk6CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpS
b290T2JqZWN0OjppbnZhbGlkYXRlKToKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6OlJvb3RPYmpl
Y3Q6Omdsb2JhbE9iamVjdCk6CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpSb290T2JqZWN0Ojp1
cGRhdGVHbG9iYWxPYmplY3QpOgorICAgICAgICAqIGJyaWRnZS9ydW50aW1lX3Jvb3QuaDoKKyAg
ICAgICAgKiBkb20vRXZlbnRMaXN0ZW5lci5oOgorICAgICAgICAqIGRvbS9FdmVudFRhcmdldC5o
OgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRUYXJnZXQ6Om1hcmtKU0V2ZW50TGlzdGVuZXJzKToK
KyAgICAgICAgKiB4bWwvWE1MSHR0cFJlcXVlc3QuY3BwOgorCiAyMDExLTAyLTE0ICBBbGV4YW5k
ZXIgUGF2bG92ICA8YXBhdmxvdkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkg
WXVyeSBTZW1pa2hhdHNreS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdI
ZWFkZXJzL2NvbGxlY3Rvci9oYW5kbGVzL0dsb2JhbC5oIGIvU291cmNlL1dlYkNvcmUvRm9yd2Fy
ZGluZ0hlYWRlcnMvY29sbGVjdG9yL2hhbmRsZXMvR2xvYmFsLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGFkNmQ1
NmVkMzU2OThkYTYwMmE2ZGMzODY2ZGUyMzAwMTYxNDMzNgotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL2NvbGxlY3Rvci9oYW5kbGVzL0dsb2JhbC5o
CkBAIC0wLDAgKzEsNCBAQAorI2lmbmRlZiBXZWJDb3JlX0ZXRF9HbG9iYWxfaAorI2RlZmluZSBX
ZWJDb3JlX0ZXRF9HbG9iYWxfaAorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0dsb2JhbC5oPgor
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3Jl
LnZjcHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCmlu
ZGV4IDJhOGYzNDBhNjk0OTcwNTcyZmM5YTU1MDA0OGJmMzgzYWZjOWU4YjQuLjA0YjMwNTY0ZTU3
ZTFmYmQzOTZhZjQ5ODQ0MDczNTNjOGIzNzhkYzUgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCkBAIC02NDc4MSw2ICs2NDc4MSwxOCBAQAogCQkJCQk+
CiAJCQkJPC9GaWxlPgogCQkJPC9GaWx0ZXI+CisJCQk8RmlsdGVyCisJCQkJTmFtZT0iY29sbGVj
dG9yIgorCQkJCT4KKwkJCQk8RmlsdGVyCisJCQkJCU5hbWU9ImhhbmRsZXMiCisJCQkJCT4KKwkJ
CQkJPEZpbGUKKwkJCQkJCVJlbGF0aXZlUGF0aD0iLi5cRm9yd2FyZGluZ0hlYWRlcnNcY29sbGVj
dG9yXGhhbmRsZXNcR2xvYmFsLmgiCisJCQkJCQk+CisJCQkJCTwvRmlsZT4KKwkJCQk8L0ZpbHRl
cj4KKwkJCTwvRmlsdGVyPgogCQk8L0ZpbHRlcj4KIAkJPEZpbHRlcgogCQkJTmFtZT0iaGlzdG9y
eSIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL2NvcHlGb3J3YXJk
aW5nSGVhZGVycy5jbWQgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9jb3B5Rm9yd2Fy
ZGluZ0hlYWRlcnMuY21kCmluZGV4IDMzNTFlNjAwODg0Mzk3NjI5YTlkMzRiZTk2Y2VkY2M0M2I5
MTIzZDkuLmM2Yzc0ZGYzYzE1N2FkOTY2NTdkNzExMjQzNjQ1YmQyNjkxMGE5NmIgMTAwNzU1Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL2NvcHlGb3J3YXJkaW5nSGVhZGVycy5j
bWQKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovY29weUZvcndhcmRpbmdIZWFk
ZXJzLmNtZApAQCAtOCw2ICs4LDggQEAgbWtkaXIgMj5OVUwgIiVDT05GSUdVUkFUSU9OQlVJTERE
SVIlXGluY2x1ZGVcV2ViQ29yZVxGb3J3YXJkaW5nSGVhZGVyc1xwYXJzZXIiCiBta2RpciAyPk5V
TCAiJUNPTkZJR1VSQVRJT05CVUlMRERJUiVcaW5jbHVkZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFk
ZXJzXHJ1bnRpbWUiCiBta2RpciAyPk5VTCAiJUNPTkZJR1VSQVRJT05CVUlMRERJUiVcaW5jbHVk
ZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFkZXJzXG1hc20iCiBta2RpciAyPk5VTCAiJUNPTkZJR1VS
QVRJT05CVUlMRERJUiVcaW5jbHVkZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFkZXJzXHByb2ZpbGVy
IgorbWtkaXIgMj5OVUwgIiVDT05GSUdVUkFUSU9OQlVJTERESVIlXGluY2x1ZGVcV2ViQ29yZVxG
b3J3YXJkaW5nSGVhZGVyc1xjb2xsZWN0b3IiCitta2RpciAyPk5VTCAiJUNPTkZJR1VSQVRJT05C
VUlMRERJUiVcaW5jbHVkZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFkZXJzXGNvbGxlY3RvclxoYW5k
bGVzIgogbWtkaXIgMj5OVUwgIiVDT05GSUdVUkFUSU9OQlVJTERESVIlXGluY2x1ZGVcV2ViQ29y
ZVxGb3J3YXJkaW5nSGVhZGVyc1x3dGYiCiBta2RpciAyPk5VTCAiJUNPTkZJR1VSQVRJT05CVUlM
RERJUiVcaW5jbHVkZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFkZXJzXHd0Zlx0ZXh0IgogbWtkaXIg
Mj5OVUwgIiVDT05GSUdVUkFUSU9OQlVJTERESVIlXGluY2x1ZGVcV2ViQ29yZVxGb3J3YXJkaW5n
SGVhZGVyc1x3dGZcdW5pY29kZSIKQEAgLTc1LDYgKzc3LDcgQEAgeGNvcHkgL3kgL2QgIiVQcm9q
ZWN0RGlyJS4uXEZvcndhcmRpbmdIZWFkZXJzXHBhcnNlclwqLmgiICIlQ09ORklHVVJBVElPTkJV
SUxEREkKIHhjb3B5IC95IC9kICIlUHJvamVjdERpciUuLlxGb3J3YXJkaW5nSGVhZGVyc1xydW50
aW1lXCouaCIgIiVDT05GSUdVUkFUSU9OQlVJTERESVIlXGluY2x1ZGVcV2ViQ29yZVxGb3J3YXJk
aW5nSGVhZGVyc1xydW50aW1lIgogeGNvcHkgL3kgL2QgIiVQcm9qZWN0RGlyJS4uXEZvcndhcmRp
bmdIZWFkZXJzXG1hc21cKi5oIiAiJUNPTkZJR1VSQVRJT05CVUlMRERJUiVcaW5jbHVkZVxXZWJD
b3JlXEZvcndhcmRpbmdIZWFkZXJzXG1hc20iCiB4Y29weSAveSAvZCAiJVByb2plY3REaXIlLi5c
Rm9yd2FyZGluZ0hlYWRlcnNccHJvZmlsZXJcKi5oIiAiJUNPTkZJR1VSQVRJT05CVUlMRERJUiVc
aW5jbHVkZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFkZXJzXHByb2ZpbGVyIgoreGNvcHkgL3kgL2Qg
IiVQcm9qZWN0RGlyJS4uXEZvcndhcmRpbmdIZWFkZXJzXGNvbGxlY3RvclxoYW5kbGVzXCouaCIg
IiVDT05GSUdVUkFUSU9OQlVJTERESVIlXGluY2x1ZGVcV2ViQ29yZVxGb3J3YXJkaW5nSGVhZGVy
c1xjb2xsZWN0b3JcaGFuZGxlcyIKIHhjb3B5IC95IC9kICIlUHJvamVjdERpciUuLlxGb3J3YXJk
aW5nSGVhZGVyc1x3dGZcKi5oIiAiJUNPTkZJR1VSQVRJT05CVUlMRERJUiVcaW5jbHVkZVxXZWJD
b3JlXEZvcndhcmRpbmdIZWFkZXJzXHd0ZiIKIHhjb3B5IC95IC9kICIlUHJvamVjdERpciUuLlxG
b3J3YXJkaW5nSGVhZGVyc1x3dGZcdGV4dFwqLmgiICIlQ09ORklHVVJBVElPTkJVSUxERElSJVxp
bmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnNcd3RmXHRleHQiCiB4Y29weSAveSAvZCAi
JVByb2plY3REaXIlLi5cRm9yd2FyZGluZ0hlYWRlcnNcd3RmXHVuaWNvZGVcKi5oIiAiJUNPTkZJ
R1VSQVRJT05CVUlMRERJUiVcaW5jbHVkZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFkZXJzXHd0Zlx1
bmljb2RlIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDYWxsYmFj
a0RhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ2FsbGJhY2tEYXRhLmgKaW5k
ZXggZjdiOGJmZTllODVhZjhmZTBiNTgyM2RkMGQyMGY1NjhkMjVjNWFjOS4uOTQyY2Q5Y2NiNzAz
YWM0MmEyNTAyNWRiNGNiZWRhMDg1ZDJhZTQyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNDYWxsYmFja0RhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0NhbGxiYWNrRGF0YS5oCkBAIC0zMiw4ICszMiw4IEBACiAjaW5jbHVkZSAiSlNET01C
aW5kaW5nLmgiCiAjaW5jbHVkZSAiSlNET01HbG9iYWxPYmplY3QuaCIKICNpbmNsdWRlICJTY3Jp
cHRFeGVjdXRpb25Db250ZXh0LmgiCisjaW5jbHVkZSA8Y29sbGVjdG9yL2hhbmRsZXMvR2xvYmFs
Lmg+CiAjaW5jbHVkZSA8cnVudGltZS9KU09iamVjdC5oPgotI2luY2x1ZGUgPHJ1bnRpbWUvUHJv
dGVjdC5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewpAQCAtNDcsOCArNDcsOCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQgZGVsZXRlRGF0YSh2
b2lkKik7CiAKICAgICBKU0NhbGxiYWNrRGF0YShKU0M6OkpTT2JqZWN0KiBjYWxsYmFjaywgSlNE
T01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKLSAgICAgICAgOiBtX2NhbGxiYWNrKGNhbGxi
YWNrKQotICAgICAgICAsIG1fZ2xvYmFsT2JqZWN0KGdsb2JhbE9iamVjdCkKKyAgICAgICAgOiBt
X2NhbGxiYWNrKGdsb2JhbE9iamVjdC0+Z2xvYmFsRGF0YSgpLCBjYWxsYmFjaykKKyAgICAgICAg
LCBtX2dsb2JhbE9iamVjdChnbG9iYWxPYmplY3QtPmdsb2JhbERhdGEoKSwgZ2xvYmFsT2JqZWN0
KQogI2lmbmRlZiBOREVCVUcKICAgICAgICAgLCBtX3RocmVhZChjdXJyZW50VGhyZWFkKCkpCiAj
ZW5kaWYKQEAgLTY2LDggKzY2LDggQEAgcHVibGljOgogICAgIEpTQzo6SlNWYWx1ZSBpbnZva2VD
YWxsYmFjayhKU0M6Ok1hcmtlZEFyZ3VtZW50QnVmZmVyJiwgYm9vbCogcmFpc2VkRXhjZXB0aW9u
ID0gMCk7CiAKIHByaXZhdGU6Ci0gICAgSlNDOjpQcm90ZWN0ZWRQdHI8SlNDOjpKU09iamVjdD4g
bV9jYWxsYmFjazsKLSAgICBKU0M6OlByb3RlY3RlZFB0cjxKU0RPTUdsb2JhbE9iamVjdD4gbV9n
bG9iYWxPYmplY3Q7CisgICAgSlNDOjpHbG9iYWw8SlNDOjpKU09iamVjdD4gbV9jYWxsYmFjazsK
KyAgICBKU0M6Okdsb2JhbDxKU0RPTUdsb2JhbE9iamVjdD4gbV9nbG9iYWxPYmplY3Q7CiAjaWZu
ZGVmIE5ERUJVRwogICAgIFRocmVhZElkZW50aWZpZXIgbV90aHJlYWQ7CiAjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tVm9pZENhbGxiYWNrLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbVZvaWRDYWxsYmFjay5oCmluZGV4
IDhmZmVlNDhjM2U3NTdiMmY2ZmQyNTE0ZDgzZDJlOTlmMjFkMmVlMzMuLjkyMmUzODA4Zjc2YzU5
ZjRkM2M4MTY5Y2IwMzYxYTk3YzgyYjdmODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTQ3VzdG9tVm9pZENhbGxiYWNrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNDdXN0b21Wb2lkQ2FsbGJhY2suaApAQCAtMzEsNyArMzEsNyBAQAogCiAjaW5j
bHVkZSAiSlNET01HbG9iYWxPYmplY3QuaCIKICNpbmNsdWRlICJWb2lkQ2FsbGJhY2suaCIKLSNp
bmNsdWRlIDxydW50aW1lL1Byb3RlY3QuaD4KKyNpbmNsdWRlIDxjb2xsZWN0b3IvaGFuZGxlcy9H
bG9iYWwuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmNwcAppbmRleCA3ZGUy
NzE5ZTc3MWYwNDIxZDE5OWZkYmM3MjE3NDI0YWRjODgyMmFlLi42YzQyMGJhYTkxMGNmY2JlMjNh
MTRjYmE3MTI4MThjZmQ5ZTdhMDY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RPTUJpbmRpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RE9NQmluZGluZy5jcHAKQEAgLTIwNiw4ICsyMDYsNiBAQCB2b2lkIGZvcmdldERPTU9iamVjdChE
T01PYmplY3QqIHdyYXBwZXIsIHZvaWQqIG9iamVjdEhhbmRsZSkKIAogdm9pZCBmb3JnZXRET01O
b2RlKEpTTm9kZSogd3JhcHBlciwgTm9kZSogbm9kZSwgRG9jdW1lbnQqIGRvY3VtZW50KQogewot
ICAgIG5vZGUtPmNsZWFyV3JhcHBlcih3cmFwcGVyKTsKLQogICAgIGlmICghZG9jdW1lbnQpIHsK
ICAgICAgICAgZm9yZ2V0RE9NT2JqZWN0KHdyYXBwZXIsIG5vZGUpOwogICAgICAgICByZXR1cm47
CkBAIC0yMzMsNyArMjMxLDcgQEAgdm9pZCBjYWNoZURPTU5vZGVXcmFwcGVyKEpTQzo6RXhlY1N0
YXRlKiBleGVjLCBEb2N1bWVudCogZG9jdW1lbnQsIE5vZGUqIG5vZGUsIEoKICAgICAgICAgZG9j
dW1lbnQtPmdldFdyYXBwZXJDYWNoZShjdXJyZW50V29ybGQoZXhlYykpLT5zZXQobm9kZSwgd3Jh
cHBlcik7CiAKICAgICBpZiAoY3VycmVudFdvcmxkKGV4ZWMpLT5pc05vcm1hbCgpKQotICAgICAg
ICBub2RlLT5zZXRXcmFwcGVyKHdyYXBwZXIpOworICAgICAgICBub2RlLT5zZXRXcmFwcGVyKGV4
ZWMtPmdsb2JhbERhdGEoKSwgd3JhcHBlcik7CiB9CiAKIHN0YXRpYyBpbmxpbmUgYm9vbCBpc09i
c2VydmFibGVUaHJvdWdoRE9NKEpTTm9kZSoganNOb2RlLCBET01XcmFwcGVyV29ybGQqIHdvcmxk
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNl
LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuaAppbmRleCBm
YmVmODA4NzViN2IzOTMzYWJjODI2MjlhYWQ1ZjI4NzMxYmZmYTcxLi4xZDgzN2M5NjdkMTRhYTU2
NGY4ZjY5ZTg0NDc3YmNmMGU2ZWJjM2Q3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RPTVdpbmRvd0Jhc2UuaApAQCAtMjIsNyArMjIsNyBAQAogCiAjaW5jbHVkZSAiUGxhdGZv
cm1TdHJpbmcuaCIKICNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKLSNpbmNsdWRlIDxydW50aW1l
L1Byb3RlY3QuaD4KKyNpbmNsdWRlIDxjb2xsZWN0b3IvaGFuZGxlcy9HbG9iYWwuaD4KICNpbmNs
dWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8
d3RmL093blB0ci5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
T01XaW5kb3dTaGVsbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRv
d1NoZWxsLmNwcAppbmRleCA0MGY5OTEwY2EzNGRlNThjNTc0ZWJmZmY1YjQ3MDc0MGU1NTM2NTI0
Li4xMDMzZjQyZjQ4YWEzODNmOWViNzBkZTc5NGM0NDE4MWVjMzYwMjYyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd1NoZWxsLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd1NoZWxsLmNwcApAQCAtNjAsOSArNjAs
OSBAQCB2b2lkIEpTRE9NV2luZG93U2hlbGw6OnNldFdpbmRvdyhQYXNzUmVmUHRyPERPTVdpbmRv
dz4gZG9tV2luZG93KQogICAgIC8vIHdoZW4gd2UgYWxsb2NhdGUgdGhlIGdsb2JhbCBvYmplY3Qu
IChPbmNlIHRoZSBnbG9iYWwgb2JqZWN0IGlzIGZ1bGx5CiAgICAgLy8gY29uc3RydWN0ZWQsIGl0
IGNhbiBtYXJrIGl0cyBvd24gcHJvdG90eXBlLikKICAgICBSZWZQdHI8U3RydWN0dXJlPiBwcm90
b3R5cGVTdHJ1Y3R1cmUgPSBKU0RPTVdpbmRvd1Byb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKGpz
TnVsbCgpKTsKLSAgICBQcm90ZWN0ZWRQdHI8SlNET01XaW5kb3dQcm90b3R5cGU+IHByb3RvdHlw
ZSA9IG5ldyBKU0RPTVdpbmRvd1Byb3RvdHlwZSgwLCBwcm90b3R5cGVTdHJ1Y3R1cmUucmVsZWFz
ZSgpKTsKKyAgICBHbG9iYWw8SlNET01XaW5kb3dQcm90b3R5cGU+IHByb3RvdHlwZSgqSlNET01X
aW5kb3c6OmNvbW1vbkpTR2xvYmFsRGF0YSgpLCBuZXcgSlNET01XaW5kb3dQcm90b3R5cGUoMCwg
cHJvdG90eXBlU3RydWN0dXJlLnJlbGVhc2UoKSkpOwogCi0gICAgUmVmUHRyPFN0cnVjdHVyZT4g
c3RydWN0dXJlID0gSlNET01XaW5kb3c6OmNyZWF0ZVN0cnVjdHVyZShwcm90b3R5cGUpOworICAg
IFJlZlB0cjxTdHJ1Y3R1cmU+IHN0cnVjdHVyZSA9IEpTRE9NV2luZG93OjpjcmVhdGVTdHJ1Y3R1
cmUocHJvdG90eXBlLmdldCgpKTsKICAgICBKU0RPTVdpbmRvdyoganNET01XaW5kb3cgPSBuZXcg
KEpTRE9NV2luZG93Ojpjb21tb25KU0dsb2JhbERhdGEoKSkgSlNET01XaW5kb3coc3RydWN0dXJl
LnJlbGVhc2UoKSwgZG9tV2luZG93LCB0aGlzKTsKICAgICBwcm90b3R5cGUtPnB1dEFub255bW91
c1ZhbHVlKCpKU0RPTVdpbmRvdzo6Y29tbW9uSlNHbG9iYWxEYXRhKCksIDAsIGpzRE9NV2luZG93
KTsKICAgICBzZXRXaW5kb3coKkpTRE9NV2luZG93Ojpjb21tb25KU0dsb2JhbERhdGEoKSwganNE
T01XaW5kb3cpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEYXRh
R3JpZERhdGFTb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGF0YUdyaWRE
YXRhU291cmNlLmgKaW5kZXggMDc3ZWY4ZjgwY2VkNWU5MWM1ZThiMmIzODFhZGUwN2MwZjhiYmU5
YS4uNjg0YTY2M2M1M2ZmMDdmZDZiYjNhNmVjYjNjNGFlMjk5MzJhY2YwYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEYXRhR3JpZERhdGFTb3VyY2UuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RhdGFHcmlkRGF0YVNvdXJjZS5oCkBAIC0yOSw4
ICsyOSw4IEBACiAjaWYgRU5BQkxFKERBVEFHUklEKQogCiAjaW5jbHVkZSAiRGF0YUdyaWREYXRh
U291cmNlLmgiCisjaW5jbHVkZSA8Y29sbGVjdG9yL2hhbmRsZXMvR2xvYmFsLmg+CiAjaW5jbHVk
ZSA8cnVudGltZS9KU1ZhbHVlLmg+Ci0jaW5jbHVkZSA8cnVudGltZS9Qcm90ZWN0Lmg+CiAjaW5j
bHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50TGlzdGVuZXIuY3BwCmluZGV4IDY0Mjc2
ODNmNDJlNjM0OGI2YjNmYmI3ZTMxMGM4MGZiYTZkYWRkOTguLjgyNWE0YWQzYWM0ODA2NTc2ZTA5
NGNkNGE4YzA3YmI0YTM3MTk4MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRXZlbnRMaXN0ZW5lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNFdmVudExpc3RlbmVyLmNwcApAQCAtMzQsMTEgKzM0LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogSlNFdmVudExpc3RlbmVyOjpKU0V2ZW50TGlzdGVuZXIoSlNPYmplY3QqIGZ1bmN0aW9u
LCBKU09iamVjdCogd3JhcHBlciwgYm9vbCBpc0F0dHJpYnV0ZSwgRE9NV3JhcHBlcldvcmxkKiBp
c29sYXRlZFdvcmxkKQogICAgIDogRXZlbnRMaXN0ZW5lcihKU0V2ZW50TGlzdGVuZXJUeXBlKQor
ICAgICwgbV93cmFwcGVyKCppc29sYXRlZFdvcmxkLT5nbG9iYWxEYXRhKCksIHdyYXBwZXIpCiAg
ICAgLCBtX2lzQXR0cmlidXRlKGlzQXR0cmlidXRlKQogICAgICwgbV9pc29sYXRlZFdvcmxkKGlz
b2xhdGVkV29ybGQpCiB7Ci0gICAgaWYgKHdyYXBwZXIpCi0gICAgICAgIG1fd3JhcHBlciA9IHdy
YXBwZXI7CiAgICAgbV9qc0Z1bmN0aW9uLnNldCgqbV9pc29sYXRlZFdvcmxkLT5nbG9iYWxEYXRh
KCksIHdyYXBwZXIsIGZ1bmN0aW9uKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNFdmVudExpc3RlbmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0V2ZW50TGlzdGVuZXIuaAppbmRleCA0N2ZmNDRlYzc2ZTIzODEyM2RlMmJhMzc1ZjY1MDEz
MzFhMDdhNjBiLi42OGVmZTNjODU3ZGNjZGM4OWZhZGJiZjc4ZTMzNzQ0Yzc0ZGFmYzFiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50TGlzdGVuZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50TGlzdGVuZXIuaApAQCAtNTMsMTIg
KzUzLDExIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgRE9NV3JhcHBlcldvcmxkKiBp
c29sYXRlZFdvcmxkKCkgY29uc3QgeyByZXR1cm4gbV9pc29sYXRlZFdvcmxkLmdldCgpOyB9CiAK
ICAgICAgICAgSlNDOjpKU09iamVjdCogd3JhcHBlcigpIGNvbnN0IHsgcmV0dXJuIG1fd3JhcHBl
ci5nZXQoKTsgfQotICAgICAgICB2b2lkIHNldFdyYXBwZXIoSlNDOjpKU09iamVjdCogd3JhcHBl
cikgY29uc3QgeyBtX3dyYXBwZXIgPSB3cmFwcGVyOyB9CisgICAgICAgIHZvaWQgc2V0V3JhcHBl
cihKU0M6OkpTR2xvYmFsRGF0YSYsIEpTQzo6SlNPYmplY3QqIHdyYXBwZXIpIGNvbnN0IHsgbV93
cmFwcGVyID0gd3JhcHBlcjsgfQogCiAgICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVhbCBKU0M6
OkpTT2JqZWN0KiBpbml0aWFsaXplSlNGdW5jdGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0Kikg
Y29uc3Q7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBtYXJrSlNGdW5jdGlvbihKU0M6Ok1hcmtTdGFj
ayYpOwotICAgICAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZUpTRnVuY3Rpb24oSlNDOjpKU09i
amVjdCopOwogICAgICAgICB2aXJ0dWFsIGJvb2wgdmlydHVhbGlzQXR0cmlidXRlKCkgY29uc3Q7
CiAKICAgICBwcm90ZWN0ZWQ6CkBAIC05MSwxMSArOTAsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgICAgIHJldHVybiBtX2pzRnVuY3Rpb24uZ2V0KCk7CiAgICAgfQogCi0gICAgaW5saW5l
IHZvaWQgSlNFdmVudExpc3RlbmVyOjppbnZhbGlkYXRlSlNGdW5jdGlvbihKU0M6OkpTT2JqZWN0
KiB3cmFwcGVyKQotICAgIHsKLSAgICAgICAgbV93cmFwcGVyLmNsZWFyKHdyYXBwZXIpOwotICAg
IH0KLQogICAgIC8vIENyZWF0ZXMgYSBKUyBFdmVudExpc3RlbmVyIGZvciBhbiAib25YWFgiIGV2
ZW50IGF0dHJpYnV0ZS4KICAgICBpbmxpbmUgUGFzc1JlZlB0cjxKU0V2ZW50TGlzdGVuZXI+IGNy
ZWF0ZUpTQXR0cmlidXRlRXZlbnRMaXN0ZW5lcihKU0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNDOjpK
U1ZhbHVlIGxpc3RlbmVyLCBKU0M6OkpTT2JqZWN0KiB3cmFwcGVyKQogICAgIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTGF6eUV2ZW50TGlzdGVuZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNMYXp5RXZlbnRMaXN0ZW5lci5jcHAKaW5kZXgg
MWFhZDdkZmQwNjQ0NmVlNDRlMTg4Nzg2ZDI5ZDUyZTI4YWRkNzA3YS4uZTE3YTNkNGNiYmVjMTM5
ZTJiMjNiNjkzODYxNzUwYjg2ZDZjOTU1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNMYXp5RXZlbnRMaXN0ZW5lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNMYXp5RXZlbnRMaXN0ZW5lci5jcHAKQEAgLTExNSw3ICsxMTUsNyBAQCBKU09i
amVjdCogSlNMYXp5RXZlbnRMaXN0ZW5lcjo6aW5pdGlhbGl6ZUpTRnVuY3Rpb24oU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogZXhlYwogICAgICAgICAgICAgLy8gRW5zdXJlIHRoYXQgJ25vZGUnIGhh
cyBhIEphdmFTY3JpcHQgd3JhcHBlciB0byBtYXJrIHRoZSBldmVudCBsaXN0ZW5lciB3ZSdyZSBj
cmVhdGluZy4KICAgICAgICAgICAgIEpTTG9jayBsb2NrKFNpbGVuY2VBc3NlcnRpb25zT25seSk7
CiAgICAgICAgICAgICAvLyBGSVhNRTogU2hvdWxkIHBhc3MgdGhlIGdsb2JhbCBvYmplY3QgYXNz
b2NpYXRlZCB3aXRoIHRoZSBub2RlCi0gICAgICAgICAgICBzZXRXcmFwcGVyKGFzT2JqZWN0KHRv
SlMoZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCksIGdsb2JhbE9iamVjdCwgbV9vcmlnaW5hbE5v
ZGUpKSk7CisgICAgICAgICAgICBzZXRXcmFwcGVyKGV4ZWMtPmdsb2JhbERhdGEoKSwgYXNPYmpl
Y3QodG9KUyhleGVjLCBnbG9iYWxPYmplY3QsIG1fb3JpZ2luYWxOb2RlKSkpOwogICAgICAgICB9
CiAKICAgICAgICAgLy8gQWRkIHRoZSBldmVudCdzIGhvbWUgZWxlbWVudCB0byB0aGUgc2NvcGUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjaGVkdWxlZEFjdGlvbi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY2hlZHVsZWRBY3Rpb24uY3BwCmluZGV4
IGQ2ZjhhMzhjYzM0MzNmNmUzNzc5MmRkY2EzZWMzODY5NDM1MzBkZmUuLmY2MjMwMTcyMmE4ZTRl
YmFhOTM5MmU5Nzc3NWY1N2ZlY2FmNDRkYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1NjaGVkdWxlZEFjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvU2NoZWR1bGVkQWN0aW9uLmNwcApAQCAtNjEsMTMgKzYxLDEzIEBAIFBhc3NPd25QdHI8
U2NoZWR1bGVkQWN0aW9uPiBTY2hlZHVsZWRBY3Rpb246OmNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMs
IERPTVdyYXBwZXJXCiB9CiAKIFNjaGVkdWxlZEFjdGlvbjo6U2NoZWR1bGVkQWN0aW9uKEV4ZWNT
dGF0ZSogZXhlYywgSlNWYWx1ZSBmdW5jdGlvbiwgRE9NV3JhcHBlcldvcmxkKiBpc29sYXRlZFdv
cmxkKQotICAgIDogbV9mdW5jdGlvbihmdW5jdGlvbikKKyAgICA6IG1fZnVuY3Rpb24oZXhlYy0+
Z2xvYmFsRGF0YSgpLCBmdW5jdGlvbikKICAgICAsIG1faXNvbGF0ZWRXb3JsZChpc29sYXRlZFdv
cmxkKQogewogICAgIC8vIHNldFRpbWVvdXQoZnVuY3Rpb24sIGludGVydmFsLCBhcmcwLCBhcmcx
Li4uKS4KICAgICAvLyBTdGFydCBhdCAyIHRvIHNraXAgZnVuY3Rpb24gYW5kIGludGVydmFsLgog
ICAgIGZvciAoc2l6ZV90IGkgPSAyOyBpIDwgZXhlYy0+YXJndW1lbnRDb3VudCgpOyArK2kpCi0g
ICAgICAgIG1fYXJncy5hcHBlbmQoZXhlYy0+YXJndW1lbnQoaSkpOworICAgICAgICBtX2FyZ3Mu
YXBwZW5kKEdsb2JhbDxKU0M6OlVua25vd24+KGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+YXJn
dW1lbnQoaSkpKTsKIH0KIAogdm9pZCBTY2hlZHVsZWRBY3Rpb246OmV4ZWN1dGUoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogY29udGV4dCkKQEAgLTk5LDEzICs5OSwxMyBAQCB2b2lkIFNjaGVkdWxl
ZEFjdGlvbjo6ZXhlY3V0ZUZ1bmN0aW9uSW5Db250ZXh0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEpTVgogICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3M7CiAgICAgc2l6ZV90IHNp
emUgPSBtX2FyZ3Muc2l6ZSgpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytp
KQotICAgICAgICBhcmdzLmFwcGVuZChtX2FyZ3NbaV0pOworICAgICAgICBhcmdzLmFwcGVuZCht
X2FyZ3NbaV0uZ2V0KCkpOwogCiAgICAgZ2xvYmFsT2JqZWN0LT5nbG9iYWxEYXRhKCkudGltZW91
dENoZWNrZXIuc3RhcnQoKTsKICAgICBpZiAoY29udGV4dC0+aXNEb2N1bWVudCgpKQotICAgICAg
ICBKU01haW5UaHJlYWRFeGVjU3RhdGU6OmNhbGwoZXhlYywgbV9mdW5jdGlvbiwgY2FsbFR5cGUs
IGNhbGxEYXRhLCB0aGlzVmFsdWUsIGFyZ3MpOworICAgICAgICBKU01haW5UaHJlYWRFeGVjU3Rh
dGU6OmNhbGwoZXhlYywgbV9mdW5jdGlvbi5nZXQoKSwgY2FsbFR5cGUsIGNhbGxEYXRhLCB0aGlz
VmFsdWUsIGFyZ3MpOwogICAgIGVsc2UKLSAgICAgICAgSlNDOjpjYWxsKGV4ZWMsIG1fZnVuY3Rp
b24sIGNhbGxUeXBlLCBjYWxsRGF0YSwgdGhpc1ZhbHVlLCBhcmdzKTsKKyAgICAgICAgSlNDOjpj
YWxsKGV4ZWMsIG1fZnVuY3Rpb24uZ2V0KCksIGNhbGxUeXBlLCBjYWxsRGF0YSwgdGhpc1ZhbHVl
LCBhcmdzKTsKICAgICBnbG9iYWxPYmplY3QtPmdsb2JhbERhdGEoKS50aW1lb3V0Q2hlY2tlci5z
dG9wKCk7CiAKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY2hlZHVsZWRBY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1NjaGVkdWxlZEFjdGlvbi5oCmluZGV4IDU5YWQ2ZmMyNWIyMzU0N2NhMWYw
M2VhODIxYmY3MjNiMzQ5MjUyMDEuLmM0YjNlZGYwNWMzM2U2MTFkNTc5ZWExYjg0YzJiNTBjM2Zm
ODFiMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjaGVkdWxlZEFj
dGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjaGVkdWxlZEFjdGlvbi5o
CkBAIC0yMiw4ICsyMiw4IEBACiAKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgogI2luY2x1
ZGUgPEpTRE9NQmluZGluZy5oPgorI2luY2x1ZGUgPGNvbGxlY3Rvci9oYW5kbGVzL0dsb2JhbC5o
PgogI2luY2x1ZGUgPHJ1bnRpbWUvSlNDZWxsLmg+Ci0jaW5jbHVkZSA8cnVudGltZS9Qcm90ZWN0
Lmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+
CiAKQEAgLTUxLDcgKzUxLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIHByaXZhdGU6CiAg
ICAgICAgIFNjaGVkdWxlZEFjdGlvbihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSBmdW5j
dGlvbiwgRE9NV3JhcHBlcldvcmxkKiBpc29sYXRlZFdvcmxkKTsKICAgICAgICAgU2NoZWR1bGVk
QWN0aW9uKGNvbnN0IFN0cmluZyYgY29kZSwgRE9NV3JhcHBlcldvcmxkKiBpc29sYXRlZFdvcmxk
KQotICAgICAgICAgICAgOiBtX2NvZGUoY29kZSkKKyAgICAgICAgICAgIDogbV9mdW5jdGlvbigq
aXNvbGF0ZWRXb3JsZC0+Z2xvYmFsRGF0YSgpKQorICAgICAgICAgICAgLCBtX2NvZGUoY29kZSkK
ICAgICAgICAgICAgICwgbV9pc29sYXRlZFdvcmxkKGlzb2xhdGVkV29ybGQpCiAgICAgICAgIHsK
ICAgICAgICAgfQpAQCAtNjIsOCArNjMsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAg
IHZvaWQgZXhlY3V0ZShXb3JrZXJDb250ZXh0Kik7CiAjZW5kaWYKIAotICAgICAgICBKU0M6OlBy
b3RlY3RlZEpTVmFsdWUgbV9mdW5jdGlvbjsKLSAgICAgICAgVmVjdG9yPEpTQzo6UHJvdGVjdGVk
SlNWYWx1ZT4gbV9hcmdzOworICAgICAgICBKU0M6Okdsb2JhbDxKU0M6OlVua25vd24+IG1fZnVu
Y3Rpb247CisgICAgICAgIFZlY3RvcjxKU0M6Okdsb2JhbDxKU0M6OlVua25vd24+ID4gbV9hcmdz
OwogICAgICAgICBTdHJpbmcgbV9jb2RlOwogICAgICAgICBSZWZQdHI8RE9NV3JhcHBlcldvcmxk
PiBtX2lzb2xhdGVkV29ybGQ7CiAgICAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1NjcmlwdENhY2hlZEZyYW1lRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9TY3JpcHRDYWNoZWRGcmFtZURhdGEuY3BwCmluZGV4IGQ2NWJjZTI2MDEzOGY5MTg2
OTBlY2U4NmZkMjRjYmI0ODhlY2MwZGQuLjVhNDY3ZjI5NzNiZTNmYjNmOWIyZGJiNGNkZDI2MTll
YzZiZmFhZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENh
Y2hlZEZyYW1lRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0
Q2FjaGVkRnJhbWVEYXRhLmNwcApAQCAtNTQsNyArNTQsNyBAQCBTY3JpcHRDYWNoZWRGcmFtZURh
dGE6OlNjcmlwdENhY2hlZEZyYW1lRGF0YShGcmFtZSogZnJhbWUpCiAgICAgU2NyaXB0Q29udHJv
bGxlcjo6U2hlbGxNYXA6Oml0ZXJhdG9yIHdpbmRvd1NoZWxsc0VuZCA9IHdpbmRvd1NoZWxscy5l
bmQoKTsKICAgICBmb3IgKFNjcmlwdENvbnRyb2xsZXI6OlNoZWxsTWFwOjppdGVyYXRvciBpdGVy
ID0gd2luZG93U2hlbGxzLmJlZ2luKCk7IGl0ZXIgIT0gd2luZG93U2hlbGxzRW5kOyArK2l0ZXIp
IHsKICAgICAgICAgSlNET01XaW5kb3cqIHdpbmRvdyA9IGl0ZXItPnNlY29uZC0+d2luZG93KCk7
Ci0gICAgICAgIG1fd2luZG93cy5hZGQoaXRlci0+Zmlyc3QuZ2V0KCksIHdpbmRvdyk7CisgICAg
ICAgIG1fd2luZG93cy5hZGQoaXRlci0+Zmlyc3QuZ2V0KCksIEdsb2JhbDxKU0RPTVdpbmRvdz4o
d2luZG93LT5nbG9iYWxEYXRhKCksIHdpbmRvdykpOwogICAgICAgICBtX2RvbVdpbmRvdyA9IHdp
bmRvdy0+aW1wbCgpOwogICAgIH0KIApAQCAtODMsNyArODMsNyBAQCB2b2lkIFNjcmlwdENhY2hl
ZEZyYW1lRGF0YTo6cmVzdG9yZShGcmFtZSogZnJhbWUpCiAgICAgICAgIERPTVdyYXBwZXJXb3Js
ZCogd29ybGQgPSBpdGVyLT5maXJzdC5nZXQoKTsKICAgICAgICAgSlNET01XaW5kb3dTaGVsbCog
d2luZG93U2hlbGwgPSBpdGVyLT5zZWNvbmQuZ2V0KCk7CiAKLSAgICAgICAgaWYgKEpTRE9NV2lu
ZG93KiB3aW5kb3cgPSBtX3dpbmRvd3MuZ2V0KHdvcmxkKSkKKyAgICAgICAgaWYgKEpTRE9NV2lu
ZG93KiB3aW5kb3cgPSBtX3dpbmRvd3MuZ2V0KHdvcmxkKS5nZXQoKSkKICAgICAgICAgICAgIHdp
bmRvd1NoZWxsLT5zZXRXaW5kb3cod2luZG93LT5nbG9iYWxEYXRhKCksIHdpbmRvdyk7CiAgICAg
ICAgIGVsc2UgewogICAgICAgICAgICAgd2luZG93U2hlbGwtPnNldFdpbmRvdyhmcmFtZS0+ZG9t
V2luZG93KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0
Q2FjaGVkRnJhbWVEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDYWNo
ZWRGcmFtZURhdGEuaAppbmRleCA1ZjY5MWQ5MWZmYzY0Y2Q5NWI4MjY3NWIzMjg4NDAyMDgwN2U4
YWNmLi4wODg3NGQ1NTRkYmM5MjY1NmU2MDAwMWNmMDVhN2NmYzllMDIyNWE4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDYWNoZWRGcmFtZURhdGEuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDYWNoZWRGcmFtZURhdGEuaApAQCAt
MzIsNyArMzIsNyBAQAogI2lmbmRlZiBTY3JpcHRDYWNoZWRGcmFtZURhdGFfaAogI2RlZmluZSBT
Y3JpcHRDYWNoZWRGcmFtZURhdGFfaAogCi0jaW5jbHVkZSA8cnVudGltZS9Qcm90ZWN0Lmg+Cisj
aW5jbHVkZSA8Y29sbGVjdG9yL2hhbmRsZXMvR2xvYmFsLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKICAgICBjbGFzcyBGcmFtZTsKQEAgLTQyLDcgKzQyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiAgICAgY2xhc3MgU2NyaXB0Q2FjaGVkRnJhbWVEYXRhIHsKICAgICAgICAgV1RGX01BS0Vf
Tk9OQ09QWUFCTEUoU2NyaXB0Q2FjaGVkRnJhbWVEYXRhKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7Ci0gICAgICAgIHR5cGVkZWYgSGFzaE1hcDwgUmVmUHRyPERPTVdyYXBwZXJXb3JsZD4sIEpT
Qzo6UHJvdGVjdGVkUHRyPEpTRE9NV2luZG93PiA+IEpTRE9NV2luZG93U2V0OworICAgICAgICB0
eXBlZGVmIEhhc2hNYXA8IFJlZlB0cjxET01XcmFwcGVyV29ybGQ+LCBKU0M6Okdsb2JhbDxKU0RP
TVdpbmRvdz4gPiBKU0RPTVdpbmRvd1NldDsKIAogICAgIHB1YmxpYzoKICAgICAgICAgU2NyaXB0
Q2FjaGVkRnJhbWVEYXRhKEZyYW1lKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9TY3JpcHRDYWxsU3RhY2tGYWN0b3J5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1NjcmlwdENhbGxTdGFja0ZhY3RvcnkuY3BwCmluZGV4IDk0Y2QxMjdkMDIwMDQzMzNm
ZGQ3YjlmNjlhZTUyZWU2MDczZmY0YzcuLmEyNjY0NDkyMTBkODc0ZGNjODVmNGM2Y2EyNjRiNDRl
ODA3YTQ0Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENh
bGxTdGFja0ZhY3RvcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Njcmlw
dENhbGxTdGFja0ZhY3RvcnkuY3BwCkBAIC04OCw3ICs4OCw3IEBAIFBhc3NSZWZQdHI8U2NyaXB0
QXJndW1lbnRzPiBjcmVhdGVTY3JpcHRBcmd1bWVudHMoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIHVu
c2lnbmVkCiAgICAgVmVjdG9yPFNjcmlwdFZhbHVlPiBhcmd1bWVudHM7CiAgICAgc2l6ZV90IGFy
Z3VtZW50Q291bnQgPSBleGVjLT5hcmd1bWVudENvdW50KCk7CiAgICAgZm9yIChzaXplX3QgaSA9
IHNraXBBcmd1bWVudENvdW50OyBpIDwgYXJndW1lbnRDb3VudDsgKytpKQotICAgICAgICBhcmd1
bWVudHMuYXBwZW5kKFNjcmlwdFZhbHVlKGV4ZWMtPmFyZ3VtZW50KGkpKSk7CisgICAgICAgIGFy
Z3VtZW50cy5hcHBlbmQoU2NyaXB0VmFsdWUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5hcmd1
bWVudChpKSkpOwogICAgIHJldHVybiBTY3JpcHRBcmd1bWVudHM6OmNyZWF0ZShleGVjLCBhcmd1
bWVudHMpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3Jp
cHRDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRy
b2xsZXIuY3BwCmluZGV4IGU3ZWFmZDBlMzJmZTYwYjkxYjA5YWYxMDljNDYzZjRlODlmZjRlMTgu
LjRiMGY0NGZhNjg3YWZmMGU1MTRmODRjZjczOTkyZDAzZWM5OWViOTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwCkBAIC0xMDgsMTAgKzEw
OCwxMSBAQCB2b2lkIFNjcmlwdENvbnRyb2xsZXI6OmRlc3Ryb3lXaW5kb3dTaGVsbChET01XcmFw
cGVyV29ybGQqIHdvcmxkKQogSlNET01XaW5kb3dTaGVsbCogU2NyaXB0Q29udHJvbGxlcjo6Y3Jl
YXRlV2luZG93U2hlbGwoRE9NV3JhcHBlcldvcmxkKiB3b3JsZCkKIHsKICAgICBBU1NFUlQoIW1f
d2luZG93U2hlbGxzLmNvbnRhaW5zKHdvcmxkKSk7Ci0gICAgSlNET01XaW5kb3dTaGVsbCogd2lu
ZG93U2hlbGwgPSBuZXcgSlNET01XaW5kb3dTaGVsbChtX2ZyYW1lLT5kb21XaW5kb3coKSwgd29y
bGQpOworICAgIEdsb2JhbDxKU0RPTVdpbmRvd1NoZWxsPiB3aW5kb3dTaGVsbCgqd29ybGQtPmds
b2JhbERhdGEoKSwgbmV3IEpTRE9NV2luZG93U2hlbGwobV9mcmFtZS0+ZG9tV2luZG93KCksIHdv
cmxkKSk7CisgICAgR2xvYmFsPEpTRE9NV2luZG93U2hlbGw+IHdpbmRvd1NoZWxsMih3aW5kb3dT
aGVsbCk7CiAgICAgbV93aW5kb3dTaGVsbHMuYWRkKHdvcmxkLCB3aW5kb3dTaGVsbCk7CiAgICAg
d29ybGQtPmRpZENyZWF0ZVdpbmRvd1NoZWxsKHRoaXMpOwotICAgIHJldHVybiB3aW5kb3dTaGVs
bDsKKyAgICByZXR1cm4gd2luZG93U2hlbGwuZ2V0KCk7CiB9CiAKIFNjcmlwdFZhbHVlIFNjcmlw
dENvbnRyb2xsZXI6OmV2YWx1YXRlSW5Xb3JsZChjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiBzb3Vy
Y2VDb2RlLCBET01XcmFwcGVyV29ybGQqIHdvcmxkKQpAQCAtMTQ5LDE0ICsxNTAsMTQgQEAgU2Ny
aXB0VmFsdWUgU2NyaXB0Q29udHJvbGxlcjo6ZXZhbHVhdGVJbldvcmxkKGNvbnN0IFNjcmlwdFNv
dXJjZUNvZGUmIHNvdXJjZUNvZGUKIAogICAgIGlmIChjb21wLmNvbXBsVHlwZSgpID09IE5vcm1h
bCB8fCBjb21wLmNvbXBsVHlwZSgpID09IFJldHVyblZhbHVlKSB7CiAgICAgICAgIG1fc291cmNl
VVJMID0gc2F2ZWRTb3VyY2VVUkw7Ci0gICAgICAgIHJldHVybiBjb21wLnZhbHVlKCk7CisgICAg
ICAgIHJldHVybiBTY3JpcHRWYWx1ZShleGVjLT5nbG9iYWxEYXRhKCksIGNvbXAudmFsdWUoKSk7
CiAgICAgfQogCiAgICAgaWYgKGNvbXAuY29tcGxUeXBlKCkgPT0gVGhyb3cgfHwgY29tcC5jb21w
bFR5cGUoKSA9PSBJbnRlcnJ1cHRlZCkKICAgICAgICAgcmVwb3J0RXhjZXB0aW9uKGV4ZWMsIGNv
bXAudmFsdWUoKSk7CiAKICAgICBtX3NvdXJjZVVSTCA9IHNhdmVkU291cmNlVVJMOwotICAgIHJl
dHVybiBKU1ZhbHVlKCk7CisgICAgcmV0dXJuIFNjcmlwdFZhbHVlKCk7CiB9CiAKIFNjcmlwdFZh
bHVlIFNjcmlwdENvbnRyb2xsZXI6OmV2YWx1YXRlKGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmIHNv
dXJjZUNvZGUpIApAQCAtMTgyLDcgKzE4Myw3IEBAIHZvaWQgU2NyaXB0Q29udHJvbGxlcjo6Y2xl
YXJXaW5kb3dTaGVsbChib29sIGdvaW5nSW50b1BhZ2VDYWNoZSkKICAgICBKU0xvY2sgbG9jayhT
aWxlbmNlQXNzZXJ0aW9uc09ubHkpOwogCiAgICAgZm9yIChTaGVsbE1hcDo6aXRlcmF0b3IgaXRl
ciA9IG1fd2luZG93U2hlbGxzLmJlZ2luKCk7IGl0ZXIgIT0gbV93aW5kb3dTaGVsbHMuZW5kKCk7
ICsraXRlcikgewotICAgICAgICBKU0RPTVdpbmRvd1NoZWxsKiB3aW5kb3dTaGVsbCA9IGl0ZXIt
PnNlY29uZDsKKyAgICAgICAgSlNET01XaW5kb3dTaGVsbCogd2luZG93U2hlbGwgPSBpdGVyLT5z
ZWNvbmQuZ2V0KCk7CiAKICAgICAgICAgLy8gQ2xlYXIgdGhlIGRlYnVnZ2VyIGZyb20gdGhlIGN1
cnJlbnQgd2luZG93IGJlZm9yZSBzZXR0aW5nIHRoZSBuZXcgd2luZG93LgogICAgICAgICBhdHRh
Y2hEZWJ1Z2dlcih3aW5kb3dTaGVsbCwgMCk7CkBAIC0zMTcsNyArMzE4LDcgQEAgYm9vbCBTY3Jp
cHRDb250cm9sbGVyOjpjYW5BY2Nlc3NGcm9tQ3VycmVudE9yaWdpbihGcmFtZSAqZnJhbWUpCiB2
b2lkIFNjcmlwdENvbnRyb2xsZXI6OmF0dGFjaERlYnVnZ2VyKEpTQzo6RGVidWdnZXIqIGRlYnVn
Z2VyKQogewogICAgIGZvciAoU2hlbGxNYXA6Oml0ZXJhdG9yIGl0ZXIgPSBtX3dpbmRvd1NoZWxs
cy5iZWdpbigpOyBpdGVyICE9IG1fd2luZG93U2hlbGxzLmVuZCgpOyArK2l0ZXIpCi0gICAgICAg
IGF0dGFjaERlYnVnZ2VyKGl0ZXItPnNlY29uZCwgZGVidWdnZXIpOworICAgICAgICBhdHRhY2hE
ZWJ1Z2dlcihpdGVyLT5zZWNvbmQuZ2V0KCksIGRlYnVnZ2VyKTsKIH0KIAogdm9pZCBTY3JpcHRD
b250cm9sbGVyOjphdHRhY2hEZWJ1Z2dlcihKU0RPTVdpbmRvd1NoZWxsKiBzaGVsbCwgSlNDOjpE
ZWJ1Z2dlciogZGVidWdnZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9TY3JpcHRDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRD
b250cm9sbGVyLmgKaW5kZXggMTk1NDJhZjEwZjk3NWQyNmZhZDIyOTcxNmExN2MxOWM0ODcxZjQ0
MC4uMmVjMzg3MmI3NTFhZWJmOWJiNDAyZWI4ZDljMzgxYmVjYzU0MDg4YyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuaApAQCAtMjUsNyArMjUsNyBA
QAogI2luY2x1ZGUgIkpTRE9NV2luZG93U2hlbGwuaCIKICNpbmNsdWRlICJTY3JpcHRDb250cm9s
bGVyQmFzZS5oIgogI2luY2x1ZGUgIlNjcmlwdEluc3RhbmNlLmgiCi0jaW5jbHVkZSA8cnVudGlt
ZS9Qcm90ZWN0Lmg+CisjaW5jbHVkZSA8Y29sbGVjdG9yL2hhbmRsZXMvR2xvYmFsLmg+CiAjaW5j
bHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKQEAgLTY0LDcg
KzY0LDcgQEAgdHlwZWRlZiBIYXNoTWFwPHZvaWQqLCBSZWZQdHI8SlNDOjpCaW5kaW5nczo6Um9v
dE9iamVjdD4gPiBSb290T2JqZWN0TWFwOwogCiBjbGFzcyBTY3JpcHRDb250cm9sbGVyIHsKICAg
ICBmcmllbmQgY2xhc3MgU2NyaXB0Q2FjaGVkRnJhbWVEYXRhOwotICAgIHR5cGVkZWYgV1RGOjpI
YXNoTWFwPCBSZWZQdHI8RE9NV3JhcHBlcldvcmxkPiwgSlNDOjpQcm90ZWN0ZWRQdHI8SlNET01X
aW5kb3dTaGVsbD4gPiBTaGVsbE1hcDsKKyAgICB0eXBlZGVmIFdURjo6SGFzaE1hcDwgUmVmUHRy
PERPTVdyYXBwZXJXb3JsZD4sIEpTQzo6R2xvYmFsPEpTRE9NV2luZG93U2hlbGw+ID4gU2hlbGxN
YXA7CiAKIHB1YmxpYzoKICAgICBTY3JpcHRDb250cm9sbGVyKEZyYW1lKik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRGdW5jdGlvbkNhbGwuY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0RnVuY3Rpb25DYWxsLmNwcAppbmRleCBmNzdj
NjkxYmY0MGJkYWZhOTQ2ZjE3ZmYwNDgyZDQ1ZDhmODMzZWQ3Li41MThhNzg3ZmQ5ZTU4YzIxOTlh
MWU3MTJlN2ZmMTI5YzI0OWU3NzI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9TY3JpcHRGdW5jdGlvbkNhbGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL1NjcmlwdEZ1bmN0aW9uQ2FsbC5jcHAKQEAgLTE1MCw3ICsxNTAsNyBAQCBTY3JpcHRWYWx1
ZSBTY3JpcHRGdW5jdGlvbkNhbGw6OmNhbGwoYm9vbCYgaGFkRXhjZXB0aW9uLCBib29sIHJlcG9y
dEV4Y2VwdGlvbnMpCiAgICAgICAgIHJldHVybiBTY3JpcHRWYWx1ZSgpOwogICAgIH0KIAotICAg
IHJldHVybiBTY3JpcHRWYWx1ZShyZXN1bHQpOworICAgIHJldHVybiBTY3JpcHRWYWx1ZShtX2V4
ZWMtPmdsb2JhbERhdGEoKSwgcmVzdWx0KTsKIH0KIAogU2NyaXB0VmFsdWUgU2NyaXB0RnVuY3Rp
b25DYWxsOjpjYWxsKCkKQEAgLTIyMCw3ICsyMjAsNyBAQCBTY3JpcHRWYWx1ZSBTY3JpcHRDYWxs
YmFjazo6Y2FsbChib29sJiBoYWRFeGNlcHRpb24pCiAgICAgICAgIHJldHVybiBTY3JpcHRWYWx1
ZSgpOwogICAgIH0KIAotICAgIHJldHVybiBTY3JpcHRWYWx1ZShyZXN1bHQpOworICAgIHJldHVy
biBTY3JpcHRWYWx1ZShtX2V4ZWMtPmdsb2JhbERhdGEoKSwgcmVzdWx0KTsKIH0KIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
U2NyaXB0T2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdE9iamVj
dC5jcHAKaW5kZXggYjVjMWYwMTE5NjQ2MDgzNTI2MmRjMjA5NjMzZDBiNzRjMzhhNjZmOS4uMDM1
NTk3YjE0NzMyYTRiOWI5YTkyZTZjNWE5MjVhNTM2N2FhOGYyYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0T2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TY3JpcHRPYmplY3QuY3BwCkBAIC00NSw3ICs0NSw3IEBAIHVzaW5nIG5h
bWVzcGFjZSBKU0M7CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFNjcmlwdE9iamVjdDo6U2NyaXB0
T2JqZWN0KFNjcmlwdFN0YXRlKiBzY3JpcHRTdGF0ZSwgSlNPYmplY3QqIG9iamVjdCkKLSAgICA6
IFNjcmlwdFZhbHVlKG9iamVjdCkKKyAgICA6IFNjcmlwdFZhbHVlKHNjcmlwdFN0YXRlLT5nbG9i
YWxEYXRhKCksIG9iamVjdCkKICAgICAsIG1fc2NyaXB0U3RhdGUoc2NyaXB0U3RhdGUpCiB7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRPYmplY3QuaCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdE9iamVjdC5oCmluZGV4IGYwODVlOGJl
OGRmZjFiNzdkNTY3OTFlZDdmYmE3NDNmNGRmYjUwNzEuLmMxMGJmMThiZDMwYTNkOTkyZTBiZWFi
N2I4OGZmMWIzZWNkNDIzMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L1NjcmlwdE9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdE9i
amVjdC5oCkBAIC0zNCw4ICszNCw4IEBACiAjaW5jbHVkZSAiU2NyaXB0U3RhdGUuaCIKICNpbmNs
dWRlICJTY3JpcHRWYWx1ZS5oIgogCisjaW5jbHVkZSA8Y29sbGVjdG9yL2hhbmRsZXMvR2xvYmFs
Lmg+CiAjaW5jbHVkZSA8cnVudGltZS9KU09iamVjdC5oPgotI2luY2x1ZGUgPHJ1bnRpbWUvUHJv
dGVjdC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgSW5qZWN0ZWRTY3JpcHRI
b3N0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0U3RhdGUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0U3RhdGUuY3BwCmluZGV4IGQ2
Njk5ZjZjMzllMWI5YThlMDk5NWU3YzQ4YzU2NDRiMjEyMGZiMGQuLjhhN2M5YTViYjY4MjM5NzNi
YTRmYWUyOTU5YmE5MGM2MjZmMzlhZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1NjcmlwdFN0YXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9T
Y3JpcHRTdGF0ZS5jcHAKQEAgLTQ1LDE0ICs0NSwxNCBAQCBTY3JpcHRTdGF0ZVByb3RlY3RlZFB0
cjo6flNjcmlwdFN0YXRlUHJvdGVjdGVkUHRyKCkKIH0KIAogU2NyaXB0U3RhdGVQcm90ZWN0ZWRQ
dHI6OlNjcmlwdFN0YXRlUHJvdGVjdGVkUHRyKFNjcmlwdFN0YXRlKiBzY3JpcHRTdGF0ZSkKLSAg
ICA6IG1fZ2xvYmFsT2JqZWN0KHNjcmlwdFN0YXRlLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpCisg
ICAgOiBtX2dsb2JhbE9iamVjdChzY3JpcHRTdGF0ZS0+Z2xvYmFsRGF0YSgpLCBzY3JpcHRTdGF0
ZS0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKQogewogfQogCiBTY3JpcHRTdGF0ZSogU2NyaXB0U3Rh
dGVQcm90ZWN0ZWRQdHI6OmdldCgpIGNvbnN0CiB7CiAgICAgaWYgKG1fZ2xvYmFsT2JqZWN0KQot
ICAgICAgICByZXR1cm4gbV9nbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKTsKKyAgICAgICAgcmV0
dXJuIGNvbnN0X2Nhc3Q8SlNDOjpKU0dsb2JhbE9iamVjdCo+KG1fZ2xvYmFsT2JqZWN0LmdldCgp
KS0+Z2xvYmFsRXhlYygpOwogICAgIHJldHVybiAwOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRTdGF0ZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvU2NyaXB0U3RhdGUuaAppbmRleCBlMTljMGM4MzBlZDIxMTMyNjIyMTI4MTZlNjE4YzRi
NDhiY2Y1MWIxLi5mMjdiMzA2YTE4Y2QzZGU1MzgxOGQzZjZjNjZiM2Q2ZTk0YzEwMTlkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRTdGF0ZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFN0YXRlLmgKQEAgLTMyLDcgKzMyLDcgQEAK
ICNpZm5kZWYgU2NyaXB0U3RhdGVfaAogI2RlZmluZSBTY3JpcHRTdGF0ZV9oCiAKLSNpbmNsdWRl
IDxydW50aW1lL1Byb3RlY3QuaD4KKyNpbmNsdWRlIDxjb2xsZWN0b3IvaGFuZGxlcy9HbG9iYWwu
aD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KIAogbmFtZXNwYWNlIEpTQyB7CkBAIC01
OSw3ICs1OSw3IEBAIHB1YmxpYzoKICAgICB+U2NyaXB0U3RhdGVQcm90ZWN0ZWRQdHIoKTsKICAg
ICBTY3JpcHRTdGF0ZSogZ2V0KCkgY29uc3Q7CiBwcml2YXRlOgotICAgIEpTQzo6UHJvdGVjdGVk
UHRyPEpTQzo6SlNHbG9iYWxPYmplY3Q+IG1fZ2xvYmFsT2JqZWN0OworICAgIEpTQzo6R2xvYmFs
PEpTQzo6SlNHbG9iYWxPYmplY3Q+IG1fZ2xvYmFsT2JqZWN0OwogfTsKIAogU2NyaXB0U3RhdGUq
IG1haW5Xb3JsZFNjcmlwdFN0YXRlKEZyYW1lKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TY3JpcHRWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9TY3JpcHRWYWx1ZS5jcHAKaW5kZXggYTJhNzJiNmQwNzBmYzk5MGM3N2RhZWZkMzllMWQ0NmNi
YTg3ZDgyMC4uNmZlNmVhMzhkMWM0NDYzMjhhZWRhYzNlMzE3OTU2MjVkNTFjZTNmNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0VmFsdWUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFZhbHVlLmNwcApAQCAtMzUsOCArMzUsOCBA
QAogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0FQSUNhc3QuaD4KICNpbmNsdWRlIDxKYXZhU2Ny
aXB0Q29yZS9KU1ZhbHVlUmVmLmg+CiAKKyNpbmNsdWRlIDxjb2xsZWN0b3IvaGFuZGxlcy9HbG9i
YWwuaD4KICNpbmNsdWRlIDxydW50aW1lL0pTTG9jay5oPgotI2luY2x1ZGUgPHJ1bnRpbWUvUHJv
dGVjdC5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvVVN0cmluZy5oPgogCiB1c2luZyBuYW1lc3BhY2Ug
SlNDOwpAQCAtODcsNyArODcsNyBAQCBib29sIFNjcmlwdFZhbHVlOjppc09iamVjdCgpIGNvbnN0
CiBib29sIFNjcmlwdFZhbHVlOjppc0Z1bmN0aW9uKCkgY29uc3QKIHsKICAgICBDYWxsRGF0YSBj
YWxsRGF0YTsKLSAgICByZXR1cm4gZ2V0Q2FsbERhdGEobV92YWx1ZSwgY2FsbERhdGEpICE9IENh
bGxUeXBlTm9uZTsKKyAgICByZXR1cm4gZ2V0Q2FsbERhdGEobV92YWx1ZS5nZXQoKSwgY2FsbERh
dGEpICE9IENhbGxUeXBlTm9uZTsKIH0KIAogUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFs
dWU+IFNjcmlwdFZhbHVlOjpzZXJpYWxpemUoU2NyaXB0U3RhdGUqIHNjcmlwdFN0YXRlKQpAQCAt
OTcsNyArOTcsNyBAQCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gU2NyaXB0VmFs
dWU6OnNlcmlhbGl6ZShTY3JpcHRTdGF0ZSogc2NyaXB0U3RhdAogCiBTY3JpcHRWYWx1ZSBTY3Jp
cHRWYWx1ZTo6ZGVzZXJpYWxpemUoU2NyaXB0U3RhdGUqIHNjcmlwdFN0YXRlLCBTZXJpYWxpemVk
U2NyaXB0VmFsdWUqIHZhbHVlKQogewotICAgIHJldHVybiBTY3JpcHRWYWx1ZSh2YWx1ZS0+ZGVz
ZXJpYWxpemUoc2NyaXB0U3RhdGUsIHNjcmlwdFN0YXRlLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkp
KTsKKyAgICByZXR1cm4gU2NyaXB0VmFsdWUoc2NyaXB0U3RhdGUtPmdsb2JhbERhdGEoKSwgdmFs
dWUtPmRlc2VyaWFsaXplKHNjcmlwdFN0YXRlLCBzY3JpcHRTdGF0ZS0+bGV4aWNhbEdsb2JhbE9i
amVjdCgpKSk7CiB9CiAKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0VmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1NjcmlwdFZhbHVlLmgKaW5kZXggNTc0NmMzZjY3NGFhZDJhODk2OWU2ZTBhYjAzMjgw
N2ZmZjE2OWZkMy4uMzdjZjI0MzY1MWJhOWE0NGVjODk1N2I1YTY3NTE3ZGI0ZjRmZGRlNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0VmFsdWUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRWYWx1ZS5oCkBAIC0zNCw4ICszNCw4IEBA
CiAjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIK
ICNpbmNsdWRlICJTY3JpcHRTdGF0ZS5oIgorI2luY2x1ZGUgPGNvbGxlY3Rvci9oYW5kbGVzL0ds
b2JhbC5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvSlNWYWx1ZS5oPgotI2luY2x1ZGUgPHJ1bnRpbWUv
UHJvdGVjdC5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKQEAgLTQ1LDcgKzQ1LDggQEAgY2xhc3MgU2VyaWFsaXplZFNjcmlwdFZhbHVlOwogCiBj
bGFzcyBTY3JpcHRWYWx1ZSB7CiBwdWJsaWM6Ci0gICAgU2NyaXB0VmFsdWUoSlNDOjpKU1ZhbHVl
IHZhbHVlID0gSlNDOjpKU1ZhbHVlKCkpIDogbV92YWx1ZSh2YWx1ZSkge30KKyAgICBTY3JpcHRW
YWx1ZSgpIDogbV92YWx1ZShKU0M6Okdsb2JhbDxKU0M6OlVua25vd24+OjpFbXB0eVZhbHVlKSB7
IH0KKyAgICBTY3JpcHRWYWx1ZShKU0M6OkpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNDOjpK
U1ZhbHVlIHZhbHVlKSA6IG1fdmFsdWUoZ2xvYmFsRGF0YSwgdmFsdWUpIHt9CiAgICAgdmlydHVh
bCB+U2NyaXB0VmFsdWUoKSB7fQogCiAgICAgSlNDOjpKU1ZhbHVlIGpzVmFsdWUoKSBjb25zdCB7
IHJldHVybiBtX3ZhbHVlLmdldCgpOyB9CkBAIC01NiwyMSArNTcsMjEgQEAgcHVibGljOgogICAg
IGJvb2wgaXNVbmRlZmluZWQoKSBjb25zdDsKICAgICBib29sIGlzT2JqZWN0KCkgY29uc3Q7CiAg
ICAgYm9vbCBpc0Z1bmN0aW9uKCkgY29uc3Q7Ci0gICAgYm9vbCBoYXNOb1ZhbHVlKCkgY29uc3Qg
eyByZXR1cm4gbV92YWx1ZSA9PSBKU0M6OkpTVmFsdWUoKTsgfQorICAgIGJvb2wgaGFzTm9WYWx1
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWUuaXNFbXB0eSgpOyB9CiAKICAgICBib29sIG9wZXJh
dG9yPT0oY29uc3QgU2NyaXB0VmFsdWUmIG90aGVyKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlID09
IG90aGVyLm1fdmFsdWU7IH0KIAogICAgIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVl
PiBzZXJpYWxpemUoU2NyaXB0U3RhdGUqKTsKICAgICBzdGF0aWMgU2NyaXB0VmFsdWUgZGVzZXJp
YWxpemUoU2NyaXB0U3RhdGUqLCBTZXJpYWxpemVkU2NyaXB0VmFsdWUqKTsKIAotICAgIHN0YXRp
YyBTY3JpcHRWYWx1ZSB1bmRlZmluZWQoKSB7IHJldHVybiBTY3JpcHRWYWx1ZShKU0M6OmpzVW5k
ZWZpbmVkKCkpOyB9CisgICAgc3RhdGljIFNjcmlwdFZhbHVlIHVuZGVmaW5lZCgpOwogCiAjaWYg
RU5BQkxFKElOU1BFQ1RPUikKICAgICBQYXNzUmVmUHRyPEluc3BlY3RvclZhbHVlPiB0b0luc3Bl
Y3RvclZhbHVlKFNjcmlwdFN0YXRlKikgY29uc3Q7CiAjZW5kaWYKIAogcHJpdmF0ZToKLSAgICBK
U0M6OlByb3RlY3RlZEpTVmFsdWUgbV92YWx1ZTsKKyAgICBKU0M6Okdsb2JhbDxKU0M6OlVua25v
d24+IG1fdmFsdWU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRXcmFwcGFibGUuaCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL1NjcmlwdFdyYXBwYWJsZS5oCmluZGV4IGM1Nzc5NmMxNjI0MDgxYjky
NDVkYThhYmI1NjdhYTIwMmU0Y2I5ZGYuLmUzOWU0Zjc0ZGMwMmIyMGNhYzg3YjE1MTQwYTUyNjk0
YjE0MDViYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFdy
YXBwYWJsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFdyYXBwYWJs
ZS5oCkBAIC0zOCwyMyArMzgsMjIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBTY3Jp
cHRXcmFwcGFibGUgewogcHVibGljOgorICAgIFNjcmlwdFdyYXBwYWJsZSgpCisgICAgeworICAg
IH0KKwogICAgIERPTU9iamVjdCogd3JhcHBlcigpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1
cm4gbV93cmFwcGVyLmdldCgpOwogICAgIH0KLSAgICAKLSAgICB2b2lkIHNldFdyYXBwZXIoRE9N
T2JqZWN0KiB3cmFwcGVyKQorCisgICAgdm9pZCBzZXRXcmFwcGVyKEpTQzo6SlNHbG9iYWxEYXRh
JiBnbG9iYWxEYXRhLCBET01PYmplY3QqIHdyYXBwZXIpCiAgICAgewotICAgICAgICBtX3dyYXBw
ZXIgPSB3cmFwcGVyOwotICAgIH0KLSAgICAKLSAgICB2b2lkIGNsZWFyV3JhcHBlcihET01PYmpl
Y3QqIHdyYXBwZXIpIAotICAgIHsgCi0gICAgICAgIG1fd3JhcHBlci5jbGVhcih3cmFwcGVyKTsg
CisgICAgICAgIG1fd3JhcHBlci5zZXQoZ2xvYmFsRGF0YSwgd3JhcHBlciwgMCk7CiAgICAgfQot
ICAgIAorCiBwcml2YXRlOgotICAgIEpTQzo6V2Vha0dDUHRyPERPTU9iamVjdD4gbV93cmFwcGVy
OworICAgIEpTQzo6TGF6eVdlYWtHQ1B0cjxET01PYmplY3Q+IG1fd3JhcHBlcjsKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL1dvcmtlclNjcmlwdENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvV29ya2VyU2NyaXB0Q29udHJvbGxlci5jcHAKaW5kZXggMGM4OTYzMmQ5OGNlZWU0N2UzMzJm
ZDIwZjY5NjBmMWFjNWM5YWE5Ny4uZDM5MjI4MTY5YmY4ZGJmMjBmNWFiNDIzYmMwNTI1YzkzZTFk
Nzk5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV29ya2VyU2NyaXB0
Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV29ya2VyU2Ny
aXB0Q29udHJvbGxlci5jcHAKQEAgLTUyLDYgKzUyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
V29ya2VyU2NyaXB0Q29udHJvbGxlcjo6V29ya2VyU2NyaXB0Q29udHJvbGxlcihXb3JrZXJDb250
ZXh0KiB3b3JrZXJDb250ZXh0KQogICAgIDogbV9nbG9iYWxEYXRhKEpTR2xvYmFsRGF0YTo6Y3Jl
YXRlKFRocmVhZFN0YWNrVHlwZVNtYWxsKSkKICAgICAsIG1fd29ya2VyQ29udGV4dCh3b3JrZXJD
b250ZXh0KQorICAgICwgbV93b3JrZXJDb250ZXh0V3JhcHBlcigqbV9nbG9iYWxEYXRhKQogICAg
ICwgbV9leGVjdXRpb25Gb3JiaWRkZW4oZmFsc2UpCiB7CiAgICAgaW5pdE5vcm1hbFdvcmxkQ2xp
ZW50RGF0YShtX2dsb2JhbERhdGEuZ2V0KCkpOwpAQCAtNTksNyArNjAsNyBAQCBXb3JrZXJTY3Jp
cHRDb250cm9sbGVyOjpXb3JrZXJTY3JpcHRDb250cm9sbGVyKFdvcmtlckNvbnRleHQqIHdvcmtl
ckNvbnRleHQpCiAKIFdvcmtlclNjcmlwdENvbnRyb2xsZXI6On5Xb3JrZXJTY3JpcHRDb250cm9s
bGVyKCkKIHsKLSAgICBtX3dvcmtlckNvbnRleHRXcmFwcGVyID0gMDsgLy8gVW5wcm90ZWN0IHRo
ZSBnbG9iYWwgb2JqZWN0LgorICAgIG1fd29ya2VyQ29udGV4dFdyYXBwZXIuY2xlYXIoKTsgLy8g
VW5wcm90ZWN0IHRoZSBnbG9iYWwgb2JqZWN0LgogICAgIG1fZ2xvYmFsRGF0YS0+aGVhcC5kZXN0
cm95KCk7CiB9CiAKQEAgLTczLDI2ICs3NCwyNiBAQCB2b2lkIFdvcmtlclNjcmlwdENvbnRyb2xs
ZXI6OmluaXRTY3JpcHQoKQogICAgIC8vIHdoZW4gd2UgYWxsb2NhdGUgdGhlIGdsb2JhbCBvYmpl
Y3QuIChPbmNlIHRoZSBnbG9iYWwgb2JqZWN0IGlzIGZ1bGx5CiAgICAgLy8gY29uc3RydWN0ZWQs
IGl0IGNhbiBtYXJrIGl0cyBvd24gcHJvdG90eXBlLikKICAgICBSZWZQdHI8U3RydWN0dXJlPiB3
b3JrZXJDb250ZXh0UHJvdG90eXBlU3RydWN0dXJlID0gSlNXb3JrZXJDb250ZXh0UHJvdG90eXBl
OjpjcmVhdGVTdHJ1Y3R1cmUoanNOdWxsKCkpOwotICAgIFByb3RlY3RlZFB0cjxKU1dvcmtlckNv
bnRleHRQcm90b3R5cGU+IHdvcmtlckNvbnRleHRQcm90b3R5cGUgPSBuZXcgKG1fZ2xvYmFsRGF0
YS5nZXQoKSkgSlNXb3JrZXJDb250ZXh0UHJvdG90eXBlKDAsIHdvcmtlckNvbnRleHRQcm90b3R5
cGVTdHJ1Y3R1cmUucmVsZWFzZSgpKTsKKyAgICBHbG9iYWw8SlNXb3JrZXJDb250ZXh0UHJvdG90
eXBlPiB3b3JrZXJDb250ZXh0UHJvdG90eXBlKCptX2dsb2JhbERhdGEsIG5ldyAobV9nbG9iYWxE
YXRhLmdldCgpKSBKU1dvcmtlckNvbnRleHRQcm90b3R5cGUoMCwgd29ya2VyQ29udGV4dFByb3Rv
dHlwZVN0cnVjdHVyZS5yZWxlYXNlKCkpKTsKIAogICAgIGlmIChtX3dvcmtlckNvbnRleHQtPmlz
RGVkaWNhdGVkV29ya2VyQ29udGV4dCgpKSB7Ci0gICAgICAgIFJlZlB0cjxTdHJ1Y3R1cmU+IGRl
ZGljYXRlZENvbnRleHRQcm90b3R5cGVTdHJ1Y3R1cmUgPSBKU0RlZGljYXRlZFdvcmtlckNvbnRl
eHRQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSh3b3JrZXJDb250ZXh0UHJvdG90eXBlKTsKLSAg
ICAgICAgUHJvdGVjdGVkUHRyPEpTRGVkaWNhdGVkV29ya2VyQ29udGV4dFByb3RvdHlwZT4gZGVk
aWNhdGVkQ29udGV4dFByb3RvdHlwZSA9IG5ldyAobV9nbG9iYWxEYXRhLmdldCgpKSBKU0RlZGlj
YXRlZFdvcmtlckNvbnRleHRQcm90b3R5cGUoMCwgZGVkaWNhdGVkQ29udGV4dFByb3RvdHlwZVN0
cnVjdHVyZS5yZWxlYXNlKCkpOwotICAgICAgICBSZWZQdHI8U3RydWN0dXJlPiBzdHJ1Y3R1cmUg
PSBKU0RlZGljYXRlZFdvcmtlckNvbnRleHQ6OmNyZWF0ZVN0cnVjdHVyZShkZWRpY2F0ZWRDb250
ZXh0UHJvdG90eXBlKTsKKyAgICAgICAgUmVmUHRyPFN0cnVjdHVyZT4gZGVkaWNhdGVkQ29udGV4
dFByb3RvdHlwZVN0cnVjdHVyZSA9IEpTRGVkaWNhdGVkV29ya2VyQ29udGV4dFByb3RvdHlwZTo6
Y3JlYXRlU3RydWN0dXJlKHdvcmtlckNvbnRleHRQcm90b3R5cGUuZ2V0KCkpOworICAgICAgICBH
bG9iYWw8SlNEZWRpY2F0ZWRXb3JrZXJDb250ZXh0UHJvdG90eXBlPiBkZWRpY2F0ZWRDb250ZXh0
UHJvdG90eXBlKCptX2dsb2JhbERhdGEsIG5ldyAobV9nbG9iYWxEYXRhLmdldCgpKSBKU0RlZGlj
YXRlZFdvcmtlckNvbnRleHRQcm90b3R5cGUoMCwgZGVkaWNhdGVkQ29udGV4dFByb3RvdHlwZVN0
cnVjdHVyZS5yZWxlYXNlKCkpKTsKKyAgICAgICAgUmVmUHRyPFN0cnVjdHVyZT4gc3RydWN0dXJl
ID0gSlNEZWRpY2F0ZWRXb3JrZXJDb250ZXh0OjpjcmVhdGVTdHJ1Y3R1cmUoZGVkaWNhdGVkQ29u
dGV4dFByb3RvdHlwZS5nZXQoKSk7CiAKLSAgICAgICAgbV93b3JrZXJDb250ZXh0V3JhcHBlciA9
IG5ldyAobV9nbG9iYWxEYXRhLmdldCgpKSBKU0RlZGljYXRlZFdvcmtlckNvbnRleHQoc3RydWN0
dXJlLnJlbGVhc2UoKSwgbV93b3JrZXJDb250ZXh0LT50b0RlZGljYXRlZFdvcmtlckNvbnRleHQo
KSk7Ci0gICAgICAgIHdvcmtlckNvbnRleHRQcm90b3R5cGUtPnB1dEFub255bW91c1ZhbHVlKCpt
X2dsb2JhbERhdGEsIDAsIG1fd29ya2VyQ29udGV4dFdyYXBwZXIpOwotICAgICAgICBkZWRpY2F0
ZWRDb250ZXh0UHJvdG90eXBlLT5wdXRBbm9ueW1vdXNWYWx1ZSgqbV9nbG9iYWxEYXRhLCAwLCBt
X3dvcmtlckNvbnRleHRXcmFwcGVyKTsKKyAgICAgICAgbV93b3JrZXJDb250ZXh0V3JhcHBlci5z
ZXQoKm1fZ2xvYmFsRGF0YSwgbmV3IChtX2dsb2JhbERhdGEuZ2V0KCkpIEpTRGVkaWNhdGVkV29y
a2VyQ29udGV4dChzdHJ1Y3R1cmUucmVsZWFzZSgpLCBtX3dvcmtlckNvbnRleHQtPnRvRGVkaWNh
dGVkV29ya2VyQ29udGV4dCgpKSk7CisgICAgICAgIHdvcmtlckNvbnRleHRQcm90b3R5cGUtPnB1
dEFub255bW91c1ZhbHVlKCptX2dsb2JhbERhdGEsIDAsIG1fd29ya2VyQ29udGV4dFdyYXBwZXIu
Z2V0KCkpOworICAgICAgICBkZWRpY2F0ZWRDb250ZXh0UHJvdG90eXBlLT5wdXRBbm9ueW1vdXNW
YWx1ZSgqbV9nbG9iYWxEYXRhLCAwLCBtX3dvcmtlckNvbnRleHRXcmFwcGVyLmdldCgpKTsKICNp
ZiBFTkFCTEUoU0hBUkVEX1dPUktFUlMpCiAgICAgfSBlbHNlIHsKICAgICAgICAgQVNTRVJUKG1f
d29ya2VyQ29udGV4dC0+aXNTaGFyZWRXb3JrZXJDb250ZXh0KCkpOwotICAgICAgICBSZWZQdHI8
U3RydWN0dXJlPiBzaGFyZWRDb250ZXh0UHJvdG90eXBlU3RydWN0dXJlID0gSlNTaGFyZWRXb3Jr
ZXJDb250ZXh0UHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUod29ya2VyQ29udGV4dFByb3RvdHlw
ZSk7Ci0gICAgICAgIFByb3RlY3RlZFB0cjxKU1NoYXJlZFdvcmtlckNvbnRleHRQcm90b3R5cGU+
IHNoYXJlZENvbnRleHRQcm90b3R5cGUgPSBuZXcgKG1fZ2xvYmFsRGF0YS5nZXQoKSkgSlNTaGFy
ZWRXb3JrZXJDb250ZXh0UHJvdG90eXBlKDAsIHNoYXJlZENvbnRleHRQcm90b3R5cGVTdHJ1Y3R1
cmUucmVsZWFzZSgpKTsKLSAgICAgICAgUmVmUHRyPFN0cnVjdHVyZT4gc3RydWN0dXJlID0gSlNT
aGFyZWRXb3JrZXJDb250ZXh0OjpjcmVhdGVTdHJ1Y3R1cmUoc2hhcmVkQ29udGV4dFByb3RvdHlw
ZSk7CisgICAgICAgIFJlZlB0cjxTdHJ1Y3R1cmU+IHNoYXJlZENvbnRleHRQcm90b3R5cGVTdHJ1
Y3R1cmUgPSBKU1NoYXJlZFdvcmtlckNvbnRleHRQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSh3
b3JrZXJDb250ZXh0UHJvdG90eXBlLmdldCgpKTsKKyAgICAgICAgR2xvYmFsPEpTU2hhcmVkV29y
a2VyQ29udGV4dFByb3RvdHlwZT4gc2hhcmVkQ29udGV4dFByb3RvdHlwZSgqbV9nbG9iYWxEYXRh
LCBuZXcgKG1fZ2xvYmFsRGF0YS5nZXQoKSkgSlNTaGFyZWRXb3JrZXJDb250ZXh0UHJvdG90eXBl
KDAsIHNoYXJlZENvbnRleHRQcm90b3R5cGVTdHJ1Y3R1cmUucmVsZWFzZSgpKSk7CisgICAgICAg
IFJlZlB0cjxTdHJ1Y3R1cmU+IHN0cnVjdHVyZSA9IEpTU2hhcmVkV29ya2VyQ29udGV4dDo6Y3Jl
YXRlU3RydWN0dXJlKHNoYXJlZENvbnRleHRQcm90b3R5cGUuZ2V0KCkpOwogCi0gICAgICAgIG1f
d29ya2VyQ29udGV4dFdyYXBwZXIgPSBuZXcgKG1fZ2xvYmFsRGF0YS5nZXQoKSkgSlNTaGFyZWRX
b3JrZXJDb250ZXh0KHN0cnVjdHVyZS5yZWxlYXNlKCksIG1fd29ya2VyQ29udGV4dC0+dG9TaGFy
ZWRXb3JrZXJDb250ZXh0KCkpOwotICAgICAgICB3b3JrZXJDb250ZXh0UHJvdG90eXBlLT5wdXRB
bm9ueW1vdXNWYWx1ZSgqbV9nbG9iYWxEYXRhLCAwLCBtX3dvcmtlckNvbnRleHRXcmFwcGVyKTsK
LSAgICAgICAgc2hhcmVkQ29udGV4dFByb3RvdHlwZS0+cHV0QW5vbnltb3VzVmFsdWUoKm1fZ2xv
YmFsRGF0YSwgMCwgbV93b3JrZXJDb250ZXh0V3JhcHBlcik7CisgICAgICAgIG1fd29ya2VyQ29u
dGV4dFdyYXBwZXIuc2V0KCptX2dsb2JhbERhdGEsIG5ldyAobV9nbG9iYWxEYXRhLmdldCgpKSBK
U1NoYXJlZFdvcmtlckNvbnRleHQoc3RydWN0dXJlLnJlbGVhc2UoKSwgbV93b3JrZXJDb250ZXh0
LT50b1NoYXJlZFdvcmtlckNvbnRleHQoKSkpOworICAgICAgICB3b3JrZXJDb250ZXh0UHJvdG90
eXBlLT5wdXRBbm9ueW1vdXNWYWx1ZSgqbV9nbG9iYWxEYXRhLCAwLCBtX3dvcmtlckNvbnRleHRX
cmFwcGVyLmdldCgpKTsKKyAgICAgICAgc2hhcmVkQ29udGV4dFByb3RvdHlwZS0+cHV0QW5vbnlt
b3VzVmFsdWUoKm1fZ2xvYmFsRGF0YSwgMCwgbV93b3JrZXJDb250ZXh0V3JhcHBlci5nZXQoKSk7
CiAjZW5kaWYKICAgICB9CiB9CkBAIC0xMDIsMTAgKzEwMywxMCBAQCBTY3JpcHRWYWx1ZSBXb3Jr
ZXJTY3JpcHRDb250cm9sbGVyOjpldmFsdWF0ZShjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiBzb3Vy
Y2VDb2RlKQogICAgIHsKICAgICAgICAgTXV0ZXhMb2NrZXIgbG9jayhtX3NoYXJlZERhdGFNdXRl
eCk7CiAgICAgICAgIGlmIChtX2V4ZWN1dGlvbkZvcmJpZGRlbikKLSAgICAgICAgICAgIHJldHVy
biBKU1ZhbHVlKCk7CisgICAgICAgICAgICByZXR1cm4gU2NyaXB0VmFsdWUoKTsKICAgICB9CiAg
ICAgU2NyaXB0VmFsdWUgZXhjZXB0aW9uOwotICAgIFNjcmlwdFZhbHVlIHJlc3VsdCA9IGV2YWx1
YXRlKHNvdXJjZUNvZGUsICZleGNlcHRpb24pOworICAgIFNjcmlwdFZhbHVlIHJlc3VsdChldmFs
dWF0ZShzb3VyY2VDb2RlLCAmZXhjZXB0aW9uKSk7CiAgICAgaWYgKGV4Y2VwdGlvbi5qc1ZhbHVl
KCkpIHsKICAgICAgICAgSlNMb2NrIGxvY2soU2lsZW5jZUFzc2VydGlvbnNPbmx5KTsKICAgICAg
ICAgcmVwb3J0RXhjZXB0aW9uKG1fd29ya2VyQ29udGV4dFdyYXBwZXItPmdsb2JhbEV4ZWMoKSwg
ZXhjZXB0aW9uLmpzVmFsdWUoKSk7CkBAIC0xMTgsNyArMTE5LDcgQEAgU2NyaXB0VmFsdWUgV29y
a2VyU2NyaXB0Q29udHJvbGxlcjo6ZXZhbHVhdGUoY29uc3QgU2NyaXB0U291cmNlQ29kZSYgc291
cmNlQ29kZSwKICAgICB7CiAgICAgICAgIE11dGV4TG9ja2VyIGxvY2sobV9zaGFyZWREYXRhTXV0
ZXgpOwogICAgICAgICBpZiAobV9leGVjdXRpb25Gb3JiaWRkZW4pCi0gICAgICAgICAgICByZXR1
cm4gSlNWYWx1ZSgpOworICAgICAgICAgICAgcmV0dXJuIFNjcmlwdFZhbHVlKCk7CiAgICAgfQog
CiAgICAgaW5pdFNjcmlwdElmTmVlZGVkKCk7CkBAIC0xMjYsMjIgKzEyNywyMiBAQCBTY3JpcHRW
YWx1ZSBXb3JrZXJTY3JpcHRDb250cm9sbGVyOjpldmFsdWF0ZShjb25zdCBTY3JpcHRTb3VyY2VD
b2RlJiBzb3VyY2VDb2RlLAogCiAgICAgRXhlY1N0YXRlKiBleGVjID0gbV93b3JrZXJDb250ZXh0
V3JhcHBlci0+Z2xvYmFsRXhlYygpOwogICAgIG1fd29ya2VyQ29udGV4dFdyYXBwZXItPmdsb2Jh
bERhdGEoKS50aW1lb3V0Q2hlY2tlci5zdGFydCgpOwotICAgIENvbXBsZXRpb24gY29tcCA9IEpT
Qzo6ZXZhbHVhdGUoZXhlYywgZXhlYy0+ZHluYW1pY0dsb2JhbE9iamVjdCgpLT5nbG9iYWxTY29w
ZUNoYWluKCksIHNvdXJjZUNvZGUuanNTb3VyY2VDb2RlKCksIG1fd29ya2VyQ29udGV4dFdyYXBw
ZXIpOworICAgIENvbXBsZXRpb24gY29tcCA9IEpTQzo6ZXZhbHVhdGUoZXhlYywgZXhlYy0+ZHlu
YW1pY0dsb2JhbE9iamVjdCgpLT5nbG9iYWxTY29wZUNoYWluKCksIHNvdXJjZUNvZGUuanNTb3Vy
Y2VDb2RlKCksIG1fd29ya2VyQ29udGV4dFdyYXBwZXIuZ2V0KCkpOwogICAgIG1fd29ya2VyQ29u
dGV4dFdyYXBwZXItPmdsb2JhbERhdGEoKS50aW1lb3V0Q2hlY2tlci5zdG9wKCk7CiAKICAgICBp
ZiAoY29tcC5jb21wbFR5cGUoKSA9PSBOb3JtYWwgfHwgY29tcC5jb21wbFR5cGUoKSA9PSBSZXR1
cm5WYWx1ZSkKLSAgICAgICAgcmV0dXJuIGNvbXAudmFsdWUoKTsKKyAgICAgICAgcmV0dXJuIFNj
cmlwdFZhbHVlKCptX2dsb2JhbERhdGEsIGNvbXAudmFsdWUoKSk7CiAKICAgICBpZiAoY29tcC5j
b21wbFR5cGUoKSA9PSBUaHJvdykgewogICAgICAgICBTdHJpbmcgZXJyb3JNZXNzYWdlOwogICAg
ICAgICBpbnQgbGluZU51bWJlciA9IDA7CiAgICAgICAgIFN0cmluZyBzb3VyY2VVUkwgPSBzb3Vy
Y2VDb2RlLnVybCgpLnN0cmluZygpOwogICAgICAgICBpZiAobV93b3JrZXJDb250ZXh0LT5zYW5p
dGl6ZVNjcmlwdEVycm9yKGVycm9yTWVzc2FnZSwgbGluZU51bWJlciwgc291cmNlVVJMKSkKLSAg
ICAgICAgICAgICpleGNlcHRpb24gPSBTY3JpcHRWYWx1ZSh0aHJvd0Vycm9yKGV4ZWMsIGNyZWF0
ZUVycm9yKGV4ZWMsIGVycm9yTWVzc2FnZS5pbXBsKCkpKSk7CisgICAgICAgICAgICAqZXhjZXB0
aW9uID0gU2NyaXB0VmFsdWUoKm1fZ2xvYmFsRGF0YSwgdGhyb3dFcnJvcihleGVjLCBjcmVhdGVF
cnJvcihleGVjLCBlcnJvck1lc3NhZ2UuaW1wbCgpKSkpOwogICAgICAgICBlbHNlCi0gICAgICAg
ICAgICAqZXhjZXB0aW9uID0gY29tcC52YWx1ZSgpOworICAgICAgICAgICAgKmV4Y2VwdGlvbiA9
IFNjcmlwdFZhbHVlKCptX2dsb2JhbERhdGEsIGNvbXAudmFsdWUoKSk7CiAgICAgfQotICAgIHJl
dHVybiBKU1ZhbHVlKCk7CisgICAgcmV0dXJuIFNjcmlwdFZhbHVlKCk7CiB9CiAKIHZvaWQgV29y
a2VyU2NyaXB0Q29udHJvbGxlcjo6c2V0RXhjZXB0aW9uKFNjcmlwdFZhbHVlIGV4Y2VwdGlvbikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENvbnRy
b2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENvbnRyb2xs
ZXIuaAppbmRleCA0NTc4OTEzYzk1ZWE1ZGMwYTI5MzZmNzNiNWM5MDAzYzQ2NGU5MDIwLi5jM2I4
MjE1ZGQ2MTUzOWJlYmFlOGM0Y2FiMGRlMTczMjMyNjZiNjA2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvV29ya2VyU2NyaXB0Q29udHJvbGxlci5oCkBAIC0yOSw3ICsy
OSw3IEBACiAKICNpZiBFTkFCTEUoV09SS0VSUykKIAotI2luY2x1ZGUgPHJ1bnRpbWUvUHJvdGVj
dC5oPgorI2luY2x1ZGUgPGNvbGxlY3Rvci9oYW5kbGVzL0dsb2JhbC5oPgogI2luY2x1ZGUgPHd0
Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgogCkBAIC01Myw3ICs1Myw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgSlNXb3JrZXJDb250ZXh0KiB3b3JrZXJD
b250ZXh0V3JhcHBlcigpCiAgICAgICAgIHsKICAgICAgICAgICAgIGluaXRTY3JpcHRJZk5lZWRl
ZCgpOwotICAgICAgICAgICAgcmV0dXJuIG1fd29ya2VyQ29udGV4dFdyYXBwZXI7CisgICAgICAg
ICAgICByZXR1cm4gbV93b3JrZXJDb250ZXh0V3JhcHBlci5nZXQoKTsKICAgICAgICAgfQogCiAg
ICAgICAgIFNjcmlwdFZhbHVlIGV2YWx1YXRlKGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmKTsKQEAg
LTc3LDcgKzc3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIFJlZlB0cjxKU0M6
OkpTR2xvYmFsRGF0YT4gbV9nbG9iYWxEYXRhOwogICAgICAgICBXb3JrZXJDb250ZXh0KiBtX3dv
cmtlckNvbnRleHQ7Ci0gICAgICAgIEpTQzo6UHJvdGVjdGVkUHRyPEpTV29ya2VyQ29udGV4dD4g
bV93b3JrZXJDb250ZXh0V3JhcHBlcjsKKyAgICAgICAgSlNDOjpHbG9iYWw8SlNXb3JrZXJDb250
ZXh0PiBtX3dvcmtlckNvbnRleHRXcmFwcGVyOwogCiAgICAgICAgIE11dGV4IG1fc2hhcmVkRGF0
YU11dGV4OwogICAgICAgICBib29sIG1fZXhlY3V0aW9uRm9yYmlkZGVuOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0gYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQppbmRleCBkMjMw
OWU5MjdmY2JhYWE4NjczZmRjMjY5ZGIxOGZkOTcyMjA2YzY5Li4xNzBmYzliNjM4MzQzNjc3ZTVh
MjUxNjQ0MzZhNjVlOGE4MjhhMzFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQpAQCAtMTQ0NSw3ICsxNDQ1LDYgQEAgc3ViIEdl
bmVyYXRlSW1wbGVtZW50YXRpb24KIAogICAgICAgICBpZiAoJGV2ZW50VGFyZ2V0KSB7CiAgICAg
ICAgICAgICAkaW1wbEluY2x1ZGVzeyJSZWdpc3RlcmVkRXZlbnRMaXN0ZW5lci5oIn0gPSAxOwot
ICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaW1wbCgpLT5pbnZhbGlkYXRlSlNF
dmVudExpc3RlbmVycyh0aGlzKTtcbiIpOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKCEkZGF0
YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJFeHRlbmRzRE9NR2xvYmFsT2JqZWN0In0pIHsK
QEAgLTIwMzksNyArMjAzOCw3IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9
CiAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAi
IC4gR2V0TmF0aXZlVHlwZUZyb21TaWduYXR1cmUoJHBhcmFtZXRlcikgLiAiICRuYW1lID0gIiAu
IEpTVmFsdWVUb05hdGl2ZSgkcGFyYW1ldGVyLCAiZXhlYy0+YXJndW1lbnQoJGFyZ3NJbmRleCki
KSAuICI7XG4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIiAgICAiIC4gR2V0TmF0aXZlVHlwZUZyb21TaWduYXR1cmUoJHBhcmFtZXRlcikgLiAiICRu
YW1lKCIgLiBKU1ZhbHVlVG9OYXRpdmUoJHBhcmFtZXRlciwgImV4ZWMtPmFyZ3VtZW50KCRhcmdz
SW5kZXgpIikgLiAiKTtcbiIpOwogCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBJZiBh
IHBhcmFtZXRlciBpcyAiYW4gaW5kZXgiIGFuZCBpdCdzIG5lZ2F0aXZlIGl0IHNob3VsZCB0aHJv
dyBhbiBJTkRFWF9TSVpFX0VSUiBleGNlcHRpb24uCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIyBCdXQgdGhpcyBuZWVkcyB0byBiZSBkb25lIGluIHRoZSBiaW5kaW5ncywgYmVjYXVzZSB0
aGUgdHlwZSBpcyB1bnNpZ25lZCBhbmQgdGhlIGZhY3QgdGhhdCBpdApAQCAtMjQ5NCwxMiArMjQ5
MywxMiBAQCBzdWIgSlNWYWx1ZVRvTmF0aXZlCiAgICAgfQogCiAgICAgaWYgKCR0eXBlIGVxICJE
T01PYmplY3QiKSB7Ci0gICAgICAgIHJldHVybiAiJHZhbHVlIjsKKyAgICAgICAgcmV0dXJuICJl
eGVjLT5nbG9iYWxEYXRhKCksICR2YWx1ZSI7CiAgICAgfQogCiAgICAgaWYgKCR0eXBlIGVxICJN
ZWRpYVF1ZXJ5TGlzdExpc3RlbmVyIikgewogICAgICAgICAkaW1wbEluY2x1ZGVzeyJNZWRpYVF1
ZXJ5TGlzdExpc3RlbmVyLmgifSA9IDE7Ci0gICAgICAgIHJldHVybiAiTWVkaWFRdWVyeUxpc3RM
aXN0ZW5lcjo6Y3JlYXRlKCIgLiAkdmFsdWUgLiIpIjsKKyAgICAgICAgcmV0dXJuICJNZWRpYVF1
ZXJ5TGlzdExpc3RlbmVyOjpjcmVhdGUoU2NyaXB0VmFsdWUoZXhlYy0+Z2xvYmFsRGF0YSgpLCAi
IC4gJHZhbHVlIC4iKSkiOwogICAgIH0KIAogICAgIGlmICgkdHlwZSBlcSAiU2VyaWFsaXplZFNj
cmlwdFZhbHVlIiBvciAkdHlwZSBlcSAiYW55IikgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYnJpZGdlL05QX2pzb2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9OUF9qc29i
amVjdC5jcHAKaW5kZXggMDc4MGFkNzBjZjI4ZWM3MzAwNjk1MDQ4NmM3MjhmNmEyYmY4MGE4ZS4u
MWFlZDUwNTJmZDlkNzNhNGU4ZGVlNzJmMDZlYzE4Njk3MzJlMWY1NCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYnJpZGdlL05QX2pzb2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
cmlkZ2UvTlBfanNvYmplY3QuY3BwCkBAIC0xODksMTAgKzE4OSwxMCBAQCBib29sIF9OUE5fSW52
b2tlRGVmYXVsdChOUFAsIE5QT2JqZWN0KiBvLCBjb25zdCBOUFZhcmlhbnQqIGFyZ3MsIHVpbnQz
Ml90IGFyZ0NvdQogICAgICAgICAKICAgICAgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJnTGlz
dDsKICAgICAgICAgZ2V0TGlzdEZyb21WYXJpYW50QXJncyhleGVjLCBhcmdzLCBhcmdDb3VudCwg
cm9vdE9iamVjdCwgYXJnTGlzdCk7Ci0gICAgICAgIFByb3RlY3RlZFB0cjxKU0dsb2JhbE9iamVj
dD4gZ2xvYmFsT2JqZWN0ID0gcm9vdE9iamVjdC0+Z2xvYmFsT2JqZWN0KCk7Ci0gICAgICAgIGds
b2JhbE9iamVjdC0+Z2xvYmFsRGF0YSgpLnRpbWVvdXRDaGVja2VyLnN0YXJ0KCk7CisgICAgICAg
IFJlZlB0cjxKU0dsb2JhbERhdGE+IGdsb2JhbERhdGEoJmV4ZWMtPmdsb2JhbERhdGEoKSk7Cisg
ICAgICAgIGdsb2JhbERhdGEtPnRpbWVvdXRDaGVja2VyLnN0YXJ0KCk7CiAgICAgICAgIEpTVmFs
dWUgcmVzdWx0ViA9IEpTQzo6Y2FsbChleGVjLCBmdW5jdGlvbiwgY2FsbFR5cGUsIGNhbGxEYXRh
LCBmdW5jdGlvbiwgYXJnTGlzdCk7Ci0gICAgICAgIGdsb2JhbE9iamVjdC0+Z2xvYmFsRGF0YSgp
LnRpbWVvdXRDaGVja2VyLnN0b3AoKTsKKyAgICAgICAgZ2xvYmFsRGF0YS0+dGltZW91dENoZWNr
ZXIuc3RvcCgpOwogCiAgICAgICAgIC8vIENvbnZlcnQgYW5kIHJldHVybiB0aGUgcmVzdWx0IG9m
IHRoZSBmdW5jdGlvbiBjYWxsLgogICAgICAgICBjb252ZXJ0VmFsdWVUb05QVmFyaWFudChleGVj
LCByZXN1bHRWLCByZXN1bHQpOwpAQCAtMjM5LDEwICsyMzksMTAgQEAgYm9vbCBfTlBOX0ludm9r
ZShOUFAgbnBwLCBOUE9iamVjdCogbywgTlBJZGVudGlmaWVyIG1ldGhvZE5hbWUsIGNvbnN0IE5Q
VmFyaWFudCoKICAgICAgICAgLy8gQ2FsbCB0aGUgZnVuY3Rpb24gb2JqZWN0LgogICAgICAgICBN
YXJrZWRBcmd1bWVudEJ1ZmZlciBhcmdMaXN0OwogICAgICAgICBnZXRMaXN0RnJvbVZhcmlhbnRB
cmdzKGV4ZWMsIGFyZ3MsIGFyZ0NvdW50LCByb290T2JqZWN0LCBhcmdMaXN0KTsKLSAgICAgICAg
UHJvdGVjdGVkUHRyPEpTR2xvYmFsT2JqZWN0PiBnbG9iYWxPYmplY3QgPSByb290T2JqZWN0LT5n
bG9iYWxPYmplY3QoKTsKLSAgICAgICAgZ2xvYmFsT2JqZWN0LT5nbG9iYWxEYXRhKCkudGltZW91
dENoZWNrZXIuc3RhcnQoKTsKKyAgICAgICAgUmVmUHRyPEpTR2xvYmFsRGF0YT4gZ2xvYmFsRGF0
YSgmZXhlYy0+Z2xvYmFsRGF0YSgpKTsKKyAgICAgICAgZ2xvYmFsRGF0YS0+dGltZW91dENoZWNr
ZXIuc3RhcnQoKTsKICAgICAgICAgSlNWYWx1ZSByZXN1bHRWID0gSlNDOjpjYWxsKGV4ZWMsIGZ1
bmN0aW9uLCBjYWxsVHlwZSwgY2FsbERhdGEsIG9iai0+aW1wLCBhcmdMaXN0KTsKLSAgICAgICAg
Z2xvYmFsT2JqZWN0LT5nbG9iYWxEYXRhKCkudGltZW91dENoZWNrZXIuc3RvcCgpOworICAgICAg
ICBnbG9iYWxEYXRhLT50aW1lb3V0Q2hlY2tlci5zdG9wKCk7CiAKICAgICAgICAgLy8gQ29udmVy
dCBhbmQgcmV0dXJuIHRoZSByZXN1bHQgb2YgdGhlIGZ1bmN0aW9uIGNhbGwuCiAgICAgICAgIGNv
bnZlcnRWYWx1ZVRvTlBWYXJpYW50KGV4ZWMsIHJlc3VsdFYsIHJlc3VsdCk7CkBAIC0yNzMsMTAg
KzI3MywxMCBAQCBib29sIF9OUE5fRXZhbHVhdGUoTlBQIGluc3RhbmNlLCBOUE9iamVjdCogbywg
TlBTdHJpbmcqIHMsIE5QVmFyaWFudCogdmFyaWFudCkKICAgICAgICAgRXhlY1N0YXRlKiBleGVj
ID0gcm9vdE9iamVjdC0+Z2xvYmFsT2JqZWN0KCktPmdsb2JhbEV4ZWMoKTsKICAgICAgICAgSlNM
b2NrIGxvY2soU2lsZW5jZUFzc2VydGlvbnNPbmx5KTsKICAgICAgICAgU3RyaW5nIHNjcmlwdFN0
cmluZyA9IGNvbnZlcnROUFN0cmluZ1RvVVRGMTYocyk7Ci0gICAgICAgIFByb3RlY3RlZFB0cjxK
U0dsb2JhbE9iamVjdD4gZ2xvYmFsT2JqZWN0ID0gcm9vdE9iamVjdC0+Z2xvYmFsT2JqZWN0KCk7
Ci0gICAgICAgIGdsb2JhbE9iamVjdC0+Z2xvYmFsRGF0YSgpLnRpbWVvdXRDaGVja2VyLnN0YXJ0
KCk7Ci0gICAgICAgIENvbXBsZXRpb24gY29tcGxldGlvbiA9IEpTQzo6ZXZhbHVhdGUoZ2xvYmFs
T2JqZWN0LT5nbG9iYWxFeGVjKCksIGdsb2JhbE9iamVjdC0+Z2xvYmFsU2NvcGVDaGFpbigpLCBt
YWtlU291cmNlKHNjcmlwdFN0cmluZyksIEpTQzo6SlNWYWx1ZSgpKTsKLSAgICAgICAgZ2xvYmFs
T2JqZWN0LT5nbG9iYWxEYXRhKCkudGltZW91dENoZWNrZXIuc3RvcCgpOworICAgICAgICBSZWZQ
dHI8SlNHbG9iYWxEYXRhPiBnbG9iYWxEYXRhKCZleGVjLT5nbG9iYWxEYXRhKCkpOworICAgICAg
ICBnbG9iYWxEYXRhLT50aW1lb3V0Q2hlY2tlci5zdGFydCgpOworICAgICAgICBDb21wbGV0aW9u
IGNvbXBsZXRpb24gPSBKU0M6OmV2YWx1YXRlKHJvb3RPYmplY3QtPmdsb2JhbE9iamVjdCgpLT5n
bG9iYWxFeGVjKCksIHJvb3RPYmplY3QtPmdsb2JhbE9iamVjdCgpLT5nbG9iYWxTY29wZUNoYWlu
KCksIG1ha2VTb3VyY2Uoc2NyaXB0U3RyaW5nKSwgSlNDOjpKU1ZhbHVlKCkpOworICAgICAgICBn
bG9iYWxEYXRhLT50aW1lb3V0Q2hlY2tlci5zdG9wKCk7CiAgICAgICAgIENvbXBsVHlwZSB0eXBl
ID0gY29tcGxldGlvbi5jb21wbFR5cGUoKTsKICAgICAgICAgCiAgICAgICAgIEpTVmFsdWUgcmVz
dWx0OwpAQCAtNTEzLDEwICs1MTMsMTAgQEAgYm9vbCBfTlBOX0NvbnN0cnVjdChOUFAsIE5QT2Jq
ZWN0KiBvLCBjb25zdCBOUFZhcmlhbnQqIGFyZ3MsIHVpbnQzMl90IGFyZ0NvdW50LAogICAgICAg
ICAKICAgICAgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJnTGlzdDsKICAgICAgICAgZ2V0TGlz
dEZyb21WYXJpYW50QXJncyhleGVjLCBhcmdzLCBhcmdDb3VudCwgcm9vdE9iamVjdCwgYXJnTGlz
dCk7Ci0gICAgICAgIFByb3RlY3RlZFB0cjxKU0dsb2JhbE9iamVjdD4gZ2xvYmFsT2JqZWN0ID0g
cm9vdE9iamVjdC0+Z2xvYmFsT2JqZWN0KCk7Ci0gICAgICAgIGdsb2JhbE9iamVjdC0+Z2xvYmFs
RGF0YSgpLnRpbWVvdXRDaGVja2VyLnN0YXJ0KCk7CisgICAgICAgIFJlZlB0cjxKU0dsb2JhbERh
dGE+IGdsb2JhbERhdGEoJmV4ZWMtPmdsb2JhbERhdGEoKSk7CisgICAgICAgIGdsb2JhbERhdGEt
PnRpbWVvdXRDaGVja2VyLnN0YXJ0KCk7CiAgICAgICAgIEpTVmFsdWUgcmVzdWx0ViA9IEpTQzo6
Y29uc3RydWN0KGV4ZWMsIGNvbnN0cnVjdG9yLCBjb25zdHJ1Y3RUeXBlLCBjb25zdHJ1Y3REYXRh
LCBhcmdMaXN0KTsKLSAgICAgICAgZ2xvYmFsT2JqZWN0LT5nbG9iYWxEYXRhKCkudGltZW91dENo
ZWNrZXIuc3RvcCgpOworICAgICAgICBnbG9iYWxEYXRhLT50aW1lb3V0Q2hlY2tlci5zdG9wKCk7
CiAgICAgICAgIAogICAgICAgICAvLyBDb252ZXJ0IGFuZCByZXR1cm4gdGhlIHJlc3VsdC4KICAg
ICAgICAgY29udmVydFZhbHVlVG9OUFZhcmlhbnQoZXhlYywgcmVzdWx0ViwgcmVzdWx0KTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9qc2MvQnJpZGdlSlNDLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JyaWRnZS9qc2MvQnJpZGdlSlNDLmNwcAppbmRleCAyNzQ3Yzc1MWYyZDY1ZTUz
NTY2ZWM5ZmM2Njg2YjgzNWYzMGI5YjFkLi43OTcwNjFiMGRmNzllN2VmZGU5YjcyZTEwNjgxY2Nk
ZDI5NDY2ZTY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvanNjL0JyaWRnZUpT
Qy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL2pzYy9CcmlkZ2VKU0MuY3BwCkBAIC0y
NywxMCArMjcsMTMgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJCcmlkZ2VKU0Mu
aCIKIAorI2luY2x1ZGUgIkpTRE9NV2luZG93QmFzZS5oIgorCiAjaW5jbHVkZSAicnVudGltZV9v
YmplY3QuaCIKICNpbmNsdWRlICJydW50aW1lX3Jvb3QuaCIKICNpbmNsdWRlIDxydW50aW1lL0pT
TG9jay5oPgogCisKICNpZiBQTEFURk9STShRVCkKICNpbmNsdWRlICJxdF9pbnN0YW5jZS5oIgog
I2VuZGlmCkBAIC01MSw2ICs1NCw3IEBAIEFycmF5Ojp+QXJyYXkoKQogCiBJbnN0YW5jZTo6SW5z
dGFuY2UoUGFzc1JlZlB0cjxSb290T2JqZWN0PiByb290T2JqZWN0KQogICAgIDogbV9yb290T2Jq
ZWN0KHJvb3RPYmplY3QpCisgICAgLCBtX3J1bnRpbWVPYmplY3QoKldlYkNvcmU6OkpTRE9NV2lu
ZG93QmFzZTo6Y29tbW9uSlNHbG9iYWxEYXRhKCkpCiB7CiAgICAgQVNTRVJUKG1fcm9vdE9iamVj
dCk7CiB9CkBAIC01OCw3ICs2Miw2IEBAIEluc3RhbmNlOjpJbnN0YW5jZShQYXNzUmVmUHRyPFJv
b3RPYmplY3Q+IHJvb3RPYmplY3QpCiBJbnN0YW5jZTo6fkluc3RhbmNlKCkKIHsKICAgICBBU1NF
UlQoIW1fcnVudGltZU9iamVjdCk7Ci0gICAgQVNTRVJUKCFtX3J1bnRpbWVPYmplY3QuaGFzRGVh
ZE9iamVjdCgpKTsKIH0KIAogc3RhdGljIEtKU0RpZEV4ZWN1dGVGdW5jdGlvblB0ciBzX2RpZEV4
ZWN1dGVGdW5jdGlvbjsKQEAgLTEwNywxMyArMTEwLDExIEBAIHZvaWQgSW5zdGFuY2U6OndpbGxE
ZXN0cm95UnVudGltZU9iamVjdChSdW50aW1lT2JqZWN0KiBvYmplY3QpCiB7CiAgICAgQVNTRVJU
KG1fcm9vdE9iamVjdCk7CiAgICAgbV9yb290T2JqZWN0LT5yZW1vdmVSdW50aW1lT2JqZWN0KG9i
amVjdCk7Ci0gICAgbV9ydW50aW1lT2JqZWN0LmNsZWFyKG9iamVjdCk7CiB9CiAKLXZvaWQgSW5z
dGFuY2U6OndpbGxJbnZhbGlkYXRlUnVudGltZU9iamVjdChSdW50aW1lT2JqZWN0KiBvYmplY3Qp
Cit2b2lkIEluc3RhbmNlOjp3aWxsSW52YWxpZGF0ZVJ1bnRpbWVPYmplY3QoKQogewotICAgIEFT
U0VSVChvYmplY3QpOwotICAgIG1fcnVudGltZU9iamVjdC5jbGVhcihvYmplY3QpOworICAgIG1f
cnVudGltZU9iamVjdC5jbGVhcigpOwogfQogCiBSb290T2JqZWN0KiBJbnN0YW5jZTo6cm9vdE9i
amVjdCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvanNjL0JyaWRn
ZUpTQy5oIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL2pzYy9CcmlkZ2VKU0MuaAppbmRleCBlYmNm
YWFkMzBmNzBhOTZlNDc0OGQ3OGQ3ZDVlMzAzYTBiMjBiYmI0Li5kZjgyNTk1M2QwODMwZDIwZjJj
YTM5MDkyOTdkY2Q5MjM1ZjE2MTRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uv
anNjL0JyaWRnZUpTQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9qc2MvQnJpZGdlSlND
LmgKQEAgLTg3LDcgKzg3LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBDbGFzcyogZ2V0Q2xh
c3MoKSBjb25zdCA9IDA7CiAgICAgSlNPYmplY3QqIGNyZWF0ZVJ1bnRpbWVPYmplY3QoRXhlY1N0
YXRlKik7Ci0gICAgdm9pZCB3aWxsSW52YWxpZGF0ZVJ1bnRpbWVPYmplY3QoUnVudGltZU9iamVj
dCopOworICAgIHZvaWQgd2lsbEludmFsaWRhdGVSdW50aW1lT2JqZWN0KCk7CiAgICAgdm9pZCB3
aWxsRGVzdHJveVJ1bnRpbWVPYmplY3QoUnVudGltZU9iamVjdCopOwogCiAgICAgLy8gUmV0dXJu
cyBmYWxzZSBpZiB0aGUgdmFsdWUgd2FzIG5vdCBzZXQgc3VjY2Vzc2Z1bGx5LgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfb2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JyaWRnZS9ydW50aW1lX29iamVjdC5jcHAKaW5kZXggMzY4ZjdiMDgzNzE4OGQ1ZjE0MGYy
ODBlMGVmNTc2ZjhlYTYxYTlmNi4uZWNiYTI4ODM1OTQ1NTBlMTJjNWYzMjU2OTRmYTI3MjcxMjJi
NDBhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfb2JqZWN0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9vYmplY3QuY3BwCkBAIC02Miw3
ICs2Miw3IEBAIHZvaWQgUnVudGltZU9iamVjdDo6aW52YWxpZGF0ZSgpCiB7CiAgICAgQVNTRVJU
KG1faW5zdGFuY2UpOwogICAgIGlmIChtX2luc3RhbmNlKQotICAgICAgICBtX2luc3RhbmNlLT53
aWxsSW52YWxpZGF0ZVJ1bnRpbWVPYmplY3QodGhpcyk7CisgICAgICAgIG1faW5zdGFuY2UtPndp
bGxJbnZhbGlkYXRlUnVudGltZU9iamVjdCgpOwogICAgIG1faW5zdGFuY2UgPSAwOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9yb290LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX3Jvb3QuY3BwCmluZGV4IDk5MmIzNDMwZjhiMTYwNjBm
YTk1M2VjZDI4YmYxNDAyMDMxZWU1ZDcuLjcwMmJjMDlhMjNiMWRiN2E5NmNhMzJjYjI5OGFjYmFk
OGVmNDY5MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX3Jvb3Qu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX3Jvb3QuY3BwCkBAIC04Myw3
ICs4Myw3IEBAIFBhc3NSZWZQdHI8Um9vdE9iamVjdD4gUm9vdE9iamVjdDo6Y3JlYXRlKGNvbnN0
IHZvaWQqIG5hdGl2ZUhhbmRsZSwgSlNHbG9iYWxPYmplCiBSb290T2JqZWN0OjpSb290T2JqZWN0
KGNvbnN0IHZvaWQqIG5hdGl2ZUhhbmRsZSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkK
ICAgICA6IG1faXNWYWxpZCh0cnVlKQogICAgICwgbV9uYXRpdmVIYW5kbGUobmF0aXZlSGFuZGxl
KQotICAgICwgbV9nbG9iYWxPYmplY3QoZ2xvYmFsT2JqZWN0KQorICAgICwgbV9nbG9iYWxPYmpl
Y3QoZ2xvYmFsT2JqZWN0LT5nbG9iYWxEYXRhKCksIGdsb2JhbE9iamVjdCkKIHsKICAgICBBU1NF
UlQoZ2xvYmFsT2JqZWN0KTsKICAgICByb290T2JqZWN0U2V0KCktPmFkZCh0aGlzKTsKQEAgLTEx
Myw3ICsxMTMsNyBAQCB2b2lkIFJvb3RPYmplY3Q6OmludmFsaWRhdGUoKQogICAgIG1faXNWYWxp
ZCA9IGZhbHNlOwogCiAgICAgbV9uYXRpdmVIYW5kbGUgPSAwOwotICAgIG1fZ2xvYmFsT2JqZWN0
ID0gMDsKKyAgICBtX2dsb2JhbE9iamVjdC5jbGVhcigpOwogCiAgICAgewogICAgICAgICBIYXNo
U2V0PEludmFsaWRhdGlvbkNhbGxiYWNrKj46Oml0ZXJhdG9yIGVuZCA9IG1faW52YWxpZGF0aW9u
Q2FsbGJhY2tzLmVuZCgpOwpAQCAtMTY3LDEyICsxNjcsMTIgQEAgY29uc3Qgdm9pZCogUm9vdE9i
amVjdDo6bmF0aXZlSGFuZGxlKCkgY29uc3QKIEpTR2xvYmFsT2JqZWN0KiBSb290T2JqZWN0Ojpn
bG9iYWxPYmplY3QoKSBjb25zdAogewogICAgIEFTU0VSVChtX2lzVmFsaWQpOwotICAgIHJldHVy
biBtX2dsb2JhbE9iamVjdDsKKyAgICByZXR1cm4gbV9nbG9iYWxPYmplY3QuZ2V0KCk7CiB9CiAK
IHZvaWQgUm9vdE9iamVjdDo6dXBkYXRlR2xvYmFsT2JqZWN0KEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QpCiB7Ci0gICAgbV9nbG9iYWxPYmplY3QgPSBnbG9iYWxPYmplY3Q7CisgICAgbV9n
bG9iYWxPYmplY3Quc2V0KGdsb2JhbE9iamVjdC0+Z2xvYmFsRGF0YSgpLCBnbG9iYWxPYmplY3Qp
OwogfQogCiB2b2lkIFJvb3RPYmplY3Q6OmFkZFJ1bnRpbWVPYmplY3QoUnVudGltZU9iamVjdCog
b2JqZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfcm9vdC5o
IGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfcm9vdC5oCmluZGV4IGRkZThhNDgwODU0
OWEwMWRjNTMxMzBiYzNlOWMyMmM1ZTY0ODgzNjIuLmZjMDFhMDlmZDEzZTgyNGE5ZWFiODQ2NTNl
Nzc5MjY1ZDA2MGFkZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1l
X3Jvb3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9yb290LmgKQEAgLTI5
LDcgKzI5LDcgQEAKICNpZiBQTEFURk9STShNQUMpCiAjaW5jbHVkZSAiam5pX2pzb2JqZWN0Lmgi
CiAjZW5kaWYKLSNpbmNsdWRlIDxydW50aW1lL1Byb3RlY3QuaD4KKyNpbmNsdWRlIDxjb2xsZWN0
b3IvaGFuZGxlcy9HbG9iYWwuaD4KIAogI2luY2x1ZGUgPHJ1bnRpbWUvV2Vha0dDTWFwLmg+CiAj
aW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KQEAgLTg2LDcgKzg2LDcgQEAgcHJpdmF0ZToKICAgICBi
b29sIG1faXNWYWxpZDsKICAgICAKICAgICBjb25zdCB2b2lkKiBtX25hdGl2ZUhhbmRsZTsKLSAg
ICBQcm90ZWN0ZWRQdHI8SlNHbG9iYWxPYmplY3Q+IG1fZ2xvYmFsT2JqZWN0OworICAgIEdsb2Jh
bDxKU0dsb2JhbE9iamVjdD4gbV9nbG9iYWxPYmplY3Q7CiAKICAgICBQcm90ZWN0Q291bnRTZXQg
bV9wcm90ZWN0Q291bnRTZXQ7CiAgICAgV2Vha0dDTWFwPFJ1bnRpbWVPYmplY3QqLCBSdW50aW1l
T2JqZWN0PiBtX3J1bnRpbWVPYmplY3RzOyAvLyBSZWFsbHkgbmVlZCBhIFdlYWtHQ1NldCwgYnV0
IHRoaXMgd2lsbCBkby4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudExpc3Rl
bmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRMaXN0ZW5lci5oCmluZGV4IDk2ZDBiZWJk
NGE0ODE1NGEzOGUyZTk4ZWFmNmE3ZWI2ZDE0ZGVkYmQuLjM0ODcwNGZjYzg1MmYyZTA0YWNkNDkw
NjQxZGQ1NzJkM2ZhMGQ0NjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudExp
c3RlbmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TGlzdGVuZXIuaApAQCAtNTQs
NyArNTQsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICNpZiBVU0UoSlNDKQogICAgICAgICB2
aXJ0dWFsIHZvaWQgbWFya0pTRnVuY3Rpb24oSlNDOjpNYXJrU3RhY2smKSB7IH0KLSAgICAgICAg
dmlydHVhbCB2b2lkIGludmFsaWRhdGVKU0Z1bmN0aW9uKEpTQzo6SlNPYmplY3QqKSB7IH0KICNl
bmRpZgogCiAgICAgICAgIGJvb2wgaXNBdHRyaWJ1dGUoKSBjb25zdCB7IHJldHVybiB2aXJ0dWFs
aXNBdHRyaWJ1dGUoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFy
Z2V0LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuaAppbmRleCBhMDM4MDFiY2Jk
NTAwZTRkYmNlODk1MWNkNDc2YjRkM2Q3MDhhOGIzLi5mMTg4YzBlZDc5MGUzZjhkOTYyMTU0Njlj
OWQ0YzNiMTAxMGNhM2M0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJn
ZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuaApAQCAtMjMxLDIwICsy
MzEsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgICAgICAgICAgZW50cnlbaV0ubGlz
dGVuZXItPm1hcmtKU0Z1bmN0aW9uKG1hcmtTdGFjayk7CiAgICAgICAgIH0KICAgICB9Ci0KLSAg
ICBpbmxpbmUgdm9pZCBFdmVudFRhcmdldDo6aW52YWxpZGF0ZUpTRXZlbnRMaXN0ZW5lcnMoSlND
OjpKU09iamVjdCogd3JhcHBlcikKLSAgICB7Ci0gICAgICAgIEV2ZW50VGFyZ2V0RGF0YSogZCA9
IGV2ZW50VGFyZ2V0RGF0YSgpOwotICAgICAgICBpZiAoIWQpCi0gICAgICAgICAgICByZXR1cm47
Ci0KLSAgICAgICAgRXZlbnRMaXN0ZW5lck1hcDo6aXRlcmF0b3IgZW5kID0gZC0+ZXZlbnRMaXN0
ZW5lck1hcC5lbmQoKTsKLSAgICAgICAgZm9yIChFdmVudExpc3RlbmVyTWFwOjppdGVyYXRvciBp
dCA9IGQtPmV2ZW50TGlzdGVuZXJNYXAuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7Ci0gICAg
ICAgICAgICBFdmVudExpc3RlbmVyVmVjdG9yJiBlbnRyeSA9ICppdC0+c2Vjb25kOwotICAgICAg
ICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBlbnRyeS5zaXplKCk7ICsraSkKLSAgICAgICAg
ICAgICAgICBlbnRyeVtpXS5saXN0ZW5lci0+aW52YWxpZGF0ZUpTRnVuY3Rpb24od3JhcHBlcik7
Ci0gICAgICAgIH0KLSAgICB9CiAjZW5kaWYKIAogICAgIGlubGluZSBib29sIEV2ZW50VGFyZ2V0
Ojppc0ZpcmluZ0V2ZW50TGlzdGVuZXJzKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3ht
bC9YTUxIdHRwUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3Qu
Y3BwCmluZGV4IGE1NDhlYmMzNGFkNzkyMzc3ZGM3MjBlMDIxZGI1MjczYzA2OTY1MDEuLmYwM2Uz
YTRjMmU1MTFhNGUyOTA3N2UyYWY4Zjk1ZWM4MjFhY2JlNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hN
TEh0dHBSZXF1ZXN0LmNwcApAQCAtNTYsOCArNTYsOCBAQAogI2lmIFVTRShKU0MpCiAjaW5jbHVk
ZSAiSlNET01CaW5kaW5nLmgiCiAjaW5jbHVkZSAiSlNET01XaW5kb3cuaCIKKyNpbmNsdWRlIDxj
b2xsZWN0b3IvaGFuZGxlcy9HbG9iYWwuaD4KICNpbmNsdWRlIDxydW50aW1lL0pTTG9jay5oPgot
I2luY2x1ZGUgPHJ1bnRpbWUvUHJvdGVjdC5oPgogI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJL
aXQvbWFjL0NoYW5nZUxvZwppbmRleCA0YTNjNzRmZTgwMDFkMTA4OGMzMGM5NjAzZWU2OWFjNTk3
NTIyYzZkLi4yZGRhZTY4ODRhYzAwMjMwM2ViYjEwOWJiYzdhYjIzMjFmY2NjMWYwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9tYWMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMzEgQEAKKzIwMTEtMDItMTQgIE9saXZlciBIdW50ICA8b2xp
dmVyQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBSZWZhY3RvciBoYW5kbGVzIGFuZCB3ZWFrIHBvaW50ZXJzIHRvIGJlY29tZSBuaWNl
ciBhbmQgbW9yZSBhdXRvbWF0aWMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTU0NDE1CisKKyAgICAgICAgVXBkYXRlIHRvIHVzZSBHbG9iYWw8PiBpbnN0
ZWFkIG9mIFByb3RlY3RlZFB0ciwgYW5kIHJlZmFjdG9yZWQgc2xpZ2h0bHkKKyAgICAgICAgdG8g
Z2V0IGdsb2JhbCBkYXRhIHRvIHBsYWNlcyBpdCdzIG5lZWRlZCBmb3Igd2hlbiB3ZSdyZSBhc3Np
Z25pbmcgdG8KKyAgICAgICAgR2xvYmFsPD5zCisKKyAgICAgICAgKiBGb3J3YXJkaW5nSGVhZGVy
cy9jb2xsZWN0b3IvaGFuZGxlcy9HbG9iYWwuaDogQWRkZWQuCisgICAgICAgICogUGx1Z2lucy9I
b3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lmg6CisgICAgICAgICogUGx1Z2lucy9I
b3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1tOgorICAgICAgICAoV2ViS2l0OjpO
ZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHk6OkxvY2FsT2JqZWN0TWFwOjpnZXQpOgorICAgICAg
ICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHk6OkxvY2FsT2JqZWN0TWFwOjpp
ZEZvck9iamVjdCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94
eTo6TG9jYWxPYmplY3RNYXA6OmZvcmdldCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1
Z2luSW5zdGFuY2VQcm94eTo6Z2V0V2luZG93TlBPYmplY3QpOgorICAgICAgICAoV2ViS2l0OjpO
ZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHk6OmdldFBsdWdpbkVsZW1lbnROUE9iamVjdCk6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eTo6ZXZhbHVhdGUpOgor
ICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHk6Omludm9rZSk6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eTo6aW52b2tlRGVmYXVs
dCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eTo6Y29uc3Ry
dWN0KToKKyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5OjphZGRW
YWx1ZVRvQXJyYXkpOgorICAgICAgICAqIFdlYlZpZXcvV2ViU2NyaXB0RGVidWdnZXIuaDoKKyAg
ICAgICAgKiBXZWJWaWV3L1dlYlNjcmlwdERlYnVnZ2VyLm1tOgorICAgICAgICAoV2ViU2NyaXB0
RGVidWdnZXI6OldlYlNjcmlwdERlYnVnZ2VyKToKKwogMjAxMS0wMi0xMSAgR2VvZmZyZXkgR2Fy
ZW4gIDxnZ2FyZW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IE9saXZlciBIdW50
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvRm9yd2FyZGluZ0hlYWRlcnMvY29sbGVj
dG9yL2hhbmRsZXMvR2xvYmFsLmggYi9Tb3VyY2UvV2ViS2l0L21hYy9Gb3J3YXJkaW5nSGVhZGVy
cy9jb2xsZWN0b3IvaGFuZGxlcy9HbG9iYWwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wMjA2NWFkMjQxNWYwYjhl
NWU1ODE3MDUwOTA3ZThhNzYxYjI0MWVhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dC9tYWMvRm9yd2FyZGluZ0hlYWRlcnMvY29sbGVjdG9yL2hhbmRsZXMvR2xvYmFsLmgKQEAgLTAs
MCArMSBAQAorI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvR2xvYmFsLmg+CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJv
eHkuaCBiL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5z
dGFuY2VQcm94eS5oCmluZGV4IDRmMmM1NjZhNzdhMjE0MTViYjJkZGMyNGZiNDkyN2Y4MWIzOTU3
NWYuLjc4Mjg0NjBmNGExOWZhNTk0MGY3Y2NjZDg5NDhiZjY0ZmQ4ODY1MTggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQ
cm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1
Z2luSW5zdGFuY2VQcm94eS5oCkBAIC0yOCw3ICsyOCw3IEBACiAjaWZuZGVmIE5ldHNjYXBlUGx1
Z2luSW5zdGFuY2VQcm94eV9oCiAjZGVmaW5lIE5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eV9o
CiAKLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Qcm90ZWN0Lmg+CisjaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvR2xvYmFsLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9UaW1lci5oPgogI2luY2x1ZGUg
PFdlYktpdC9ucGFwaS5oPgogI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgpAQCAtMzE4LDcgKzMxOCw3
IEBAIHByaXZhdGU6CiAgICAgcHVibGljOgogICAgICAgICBMb2NhbE9iamVjdE1hcCgpOwogICAg
ICAgICB+TG9jYWxPYmplY3RNYXAoKTsKLSAgICAgICAgdWludDMyX3QgaWRGb3JPYmplY3QoSlND
OjpKU09iamVjdCopOworICAgICAgICB1aW50MzJfdCBpZEZvck9iamVjdChKU0M6OkpTR2xvYmFs
RGF0YSYsIEpTQzo6SlNPYmplY3QqKTsKICAgICAgICAgdm9pZCByZXRhaW4oSlNDOjpKU09iamVj
dCopOwogICAgICAgICB2b2lkIHJlbGVhc2UoSlNDOjpKU09iamVjdCopOwogICAgICAgICB2b2lk
IGNsZWFyKCk7CkBAIC0zMjcsNyArMzI3LDcgQEAgcHJpdmF0ZToKICAgICAgICAgSlNDOjpKU09i
amVjdCogZ2V0KHVpbnQzMl90KSBjb25zdDsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIEhhc2hN
YXA8dWludDMyX3QsIEpTQzo6UHJvdGVjdGVkUHRyPEpTQzo6SlNPYmplY3Q+ID4gbV9pZFRvSlNP
YmplY3RNYXA7CisgICAgICAgIEhhc2hNYXA8dWludDMyX3QsIEpTQzo6R2xvYmFsPEpTQzo6SlNP
YmplY3Q+ID4gbV9pZFRvSlNPYmplY3RNYXA7CiAgICAgICAgIC8vIFRoZSBwYWlyIGNvbnNpc3Rz
IG9mIG9iamVjdCBJRCBhbmQgYSByZWZlcmVuY2UgY291bnQuIE9uZSByZWZlcmVuY2UgYmVsb25n
cyB0byByZW1vdGUgcGx1Zy1pbiwKICAgICAgICAgLy8gYW5kIHRoZSBwcm94eSB3aWxsIGFkZCB0
cmFuc2llbnQgcmVmZXJlbmNlcyBmb3IgYXJndW1lbnRzIHRoYXQgYXJlIGJlaW5nIHNlbnQgb3V0
LgogICAgICAgICBIYXNoTWFwPEpTQzo6SlNPYmplY3QqLCBwYWlyPHVpbnQzMl90LCB1aW50MzJf
dD4gPiBtX2pzT2JqZWN0VG9JRE1hcDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1Bs
dWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5tbSBiL1NvdXJjZS9XZWJL
aXQvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5tbQppbmRl
eCBlY2FhMGQ2M2UyYTM1MmNjMmJkNjJiMTBiNDg3MDQ2NjMzY2QzMTBiLi5lZDY0NmQzZTg2NDFm
ZDU4NDhhODAxYTRlNDZiOThlMDU4YzhiYTdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21h
Yy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkubW0KKysrIGIvU291
cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5
Lm1tCkBAIC0xMjEsMTAgKzEyMSwxMCBAQCBpbmxpbmUgSlNDOjpKU09iamVjdCogTmV0c2NhcGVQ
bHVnaW5JbnN0YW5jZVByb3h5OjpMb2NhbE9iamVjdE1hcDo6Z2V0KHVpbnQzMl90CiAgICAgaWYg
KG9iamVjdElEID09IEhhc2hUcmFpdHM8dWludDMyX3Q+OjplbXB0eVZhbHVlKCkgfHwgSGFzaFRy
YWl0czx1aW50MzJfdD46OmlzRGVsZXRlZFZhbHVlKG9iamVjdElEKSkKICAgICAgICAgcmV0dXJu
IDA7CiAKLSAgICByZXR1cm4gbV9pZFRvSlNPYmplY3RNYXAuZ2V0KG9iamVjdElEKTsKKyAgICBy
ZXR1cm4gbV9pZFRvSlNPYmplY3RNYXAuZ2V0KG9iamVjdElEKS5nZXQoKTsKIH0KIAotdWludDMy
X3QgTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5OjpMb2NhbE9iamVjdE1hcDo6aWRGb3JPYmpl
Y3QoSlNPYmplY3QqIG9iamVjdCkKK3VpbnQzMl90IE5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94
eTo6TG9jYWxPYmplY3RNYXA6OmlkRm9yT2JqZWN0KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwg
SlNPYmplY3QqIG9iamVjdCkKIHsKICAgICAvLyBUaGlzIG1ldGhvZCBjcmVhdGVzIG9iamVjdHMg
d2l0aCByZWZjb3VudCBvZiAxLCBidXQgZG9lc24ndCBpbmNyZWFzZSByZWZjb3VudCB3aGVuIHJl
dHVybmluZwogICAgIC8vIGZvdW5kIG9iamVjdHMuIFRoaXMgZXh0cmEgY291bnQgYWNjb3VudHMg
Zm9yIHRoZSBtYWluICJyZWZlcmVuY2UiIGtlcHQgYnkgcGx1Z2luIHByb2Nlc3MuCkBAIC0xNDgs
NyArMTQ4LDcgQEAgdWludDMyX3QgTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5OjpMb2NhbE9i
amVjdE1hcDo6aWRGb3JPYmplY3QoSlNPYmplY3QqIG9iamUKICAgICAgICAgb2JqZWN0SUQgPSAr
K21fb2JqZWN0SURDb3VudGVyOwogICAgIH0gd2hpbGUgKCFtX29iamVjdElEQ291bnRlciB8fCBt
X29iamVjdElEQ291bnRlciA9PSBzdGF0aWNfY2FzdDx1aW50MzJfdD4oLTEpIHx8IG1faWRUb0pT
T2JqZWN0TWFwLmNvbnRhaW5zKG9iamVjdElEKSk7CiAKLSAgICBtX2lkVG9KU09iamVjdE1hcC5z
ZXQob2JqZWN0SUQsIG9iamVjdCk7CisgICAgbV9pZFRvSlNPYmplY3RNYXAuc2V0KG9iamVjdElE
LCBHbG9iYWw8SlNPYmplY3Q+KGdsb2JhbERhdGEsIG9iamVjdCkpOwogICAgIG1fanNPYmplY3RU
b0lETWFwLnNldChvYmplY3QsIG1ha2VfcGFpcjx1aW50MzJfdCwgdWludDMyX3Q+KG9iamVjdElE
LCAxKSk7CiAKICAgICByZXR1cm4gb2JqZWN0SUQ7CkBAIC0xODgsNyArMTg4LDcgQEAgYm9vbCBO
ZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHk6OkxvY2FsT2JqZWN0TWFwOjpmb3JnZXQodWludDMy
X3Qgb2JqZWN0SUQpCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAotICAgIEhhc2hNYXA8
dWludDMyX3QsIEpTQzo6UHJvdGVjdGVkUHRyPEpTQzo6SlNPYmplY3Q+ID46Oml0ZXJhdG9yIGl0
ZXIgPSBtX2lkVG9KU09iamVjdE1hcC5maW5kKG9iamVjdElEKTsKKyAgICBIYXNoTWFwPHVpbnQz
Ml90LCBKU0M6Okdsb2JhbDxKU0M6OkpTT2JqZWN0PiA+OjppdGVyYXRvciBpdGVyID0gbV9pZFRv
SlNPYmplY3RNYXAuZmluZChvYmplY3RJRCk7CiAgICAgaWYgKGl0ZXIgPT0gbV9pZFRvSlNPYmpl
Y3RNYXAuZW5kKCkpIHsKICAgICAgICAgTE9HX0VSUk9SKCJOZXRzY2FwZVBsdWdpbkluc3RhbmNl
UHJveHk6OkxvY2FsT2JqZWN0TWFwOjpmb3JnZXQ6IGxvY2FsIG9iamVjdCAldSBkb2Vzbid0IGV4
aXN0LiIsIG9iamVjdElEKTsKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC04MjMsNyArODIzLDcg
QEAgYm9vbCBOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHk6OmdldFdpbmRvd05QT2JqZWN0KHVp
bnQzMl90JiBvYmplY3RJRCkKICAgICBpZiAoIWZyYW1lLT5zY3JpcHQoKS0+Y2FuRXhlY3V0ZVNj
cmlwdHMoTm90QWJvdXRUb0V4ZWN1dGVTY3JpcHQpKQogICAgICAgICBvYmplY3RJRCA9IDA7CiAg
ICAgZWxzZQotICAgICAgICBvYmplY3RJRCA9IG1fbG9jYWxPYmplY3RzLmlkRm9yT2JqZWN0KGZy
YW1lLT5zY3JpcHQoKS0+d2luZG93U2hlbGwocGx1Z2luV29ybGQoKSktPndpbmRvdygpKTsKKyAg
ICAgICAgb2JqZWN0SUQgPSBtX2xvY2FsT2JqZWN0cy5pZEZvck9iamVjdCgqcGx1Z2luV29ybGQo
KS0+Z2xvYmFsRGF0YSgpLCBmcmFtZS0+c2NyaXB0KCktPndpbmRvd1NoZWxsKHBsdWdpbldvcmxk
KCkpLT53aW5kb3coKSk7CiAgICAgICAgIAogICAgIHJldHVybiB0cnVlOwogfQpAQCAtODM1LDcg
KzgzNSw3IEBAIGJvb2wgTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5OjpnZXRQbHVnaW5FbGVt
ZW50TlBPYmplY3QodWludDMyX3QmIG9iamVjdElEKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgCiAgICAgaWYgKEpTT2JqZWN0KiBvYmplY3QgPSBmcmFtZS0+c2NyaXB0KCktPmpzT2JqZWN0
Rm9yUGx1Z2luRWxlbWVudChbbV9wbHVnaW5WaWV3IGVsZW1lbnRdKSkKLSAgICAgICAgb2JqZWN0
SUQgPSBtX2xvY2FsT2JqZWN0cy5pZEZvck9iamVjdChvYmplY3QpOworICAgICAgICBvYmplY3RJ
RCA9IG1fbG9jYWxPYmplY3RzLmlkRm9yT2JqZWN0KCpwbHVnaW5Xb3JsZCgpLT5nbG9iYWxEYXRh
KCksIG9iamVjdCk7CiAgICAgZWxzZQogICAgICAgICBvYmplY3RJRCA9IDA7CiAgICAgCkBAIC04
NjYsNyArODY2LDcgQEAgYm9vbCBOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHk6OmV2YWx1YXRl
KHVpbnQzMl90IG9iamVjdElELCBjb25zdCBTdHJpbmcmIHNjcmkKIAogICAgIEpTTG9jayBsb2Nr
KFNpbGVuY2VBc3NlcnRpb25zT25seSk7CiAgICAgCi0gICAgUHJvdGVjdGVkUHRyPEpTR2xvYmFs
T2JqZWN0PiBnbG9iYWxPYmplY3QgPSBmcmFtZS0+c2NyaXB0KCktPmdsb2JhbE9iamVjdChwbHVn
aW5Xb3JsZCgpKTsKKyAgICBHbG9iYWw8SlNHbG9iYWxPYmplY3Q+IGdsb2JhbE9iamVjdCgqcGx1
Z2luV29ybGQoKS0+Z2xvYmFsRGF0YSgpLCBmcmFtZS0+c2NyaXB0KCktPmdsb2JhbE9iamVjdChw
bHVnaW5Xb3JsZCgpKSk7CiAgICAgRXhlY1N0YXRlKiBleGVjID0gZ2xvYmFsT2JqZWN0LT5nbG9i
YWxFeGVjKCk7CiAKICAgICBib29sIG9sZEFsbG93UG9wdXBzID0gZnJhbWUtPnNjcmlwdCgpLT5h
bGxvd1BvcHVwc0Zyb21QbHVnaW4oKTsKQEAgLTkyMCwxMCArOTIwLDEwIEBAIGJvb2wgTmV0c2Nh
cGVQbHVnaW5JbnN0YW5jZVByb3h5OjppbnZva2UodWludDMyX3Qgb2JqZWN0SUQsIGNvbnN0IElk
ZW50aWZpZXImIG1lCiAgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJnTGlzdDsKICAgICBkZW1h
cnNoYWxWYWx1ZXMoZXhlYywgYXJndW1lbnRzRGF0YSwgYXJndW1lbnRzTGVuZ3RoLCBhcmdMaXN0
KTsKIAotICAgIFByb3RlY3RlZFB0cjxKU0dsb2JhbE9iamVjdD4gZ2xvYmFsT2JqZWN0ID0gZnJh
bWUtPnNjcmlwdCgpLT5nbG9iYWxPYmplY3QocGx1Z2luV29ybGQoKSk7Ci0gICAgZ2xvYmFsT2Jq
ZWN0LT5nbG9iYWxEYXRhKCkudGltZW91dENoZWNrZXIuc3RhcnQoKTsKKyAgICBSZWZQdHI8SlNH
bG9iYWxEYXRhPiBnbG9iYWxEYXRhID0gcGx1Z2luV29ybGQoKS0+Z2xvYmFsRGF0YSgpOworICAg
IGdsb2JhbERhdGEtPnRpbWVvdXRDaGVja2VyLnN0YXJ0KCk7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9
IGNhbGwoZXhlYywgZnVuY3Rpb24sIGNhbGxUeXBlLCBjYWxsRGF0YSwgb2JqZWN0LCBhcmdMaXN0
KTsKLSAgICBnbG9iYWxPYmplY3QtPmdsb2JhbERhdGEoKS50aW1lb3V0Q2hlY2tlci5zdG9wKCk7
CisgICAgZ2xvYmFsRGF0YS0+dGltZW91dENoZWNrZXIuc3RvcCgpOwogICAgICAgICAKICAgICBt
YXJzaGFsVmFsdWUoZXhlYywgdmFsdWUsIHJlc3VsdERhdGEsIHJlc3VsdExlbmd0aCk7CiAgICAg
ZXhlYy0+Y2xlYXJFeGNlcHRpb24oKTsKQEAgLTk1NSwxMCArOTU1LDEwIEBAIGJvb2wgTmV0c2Nh
cGVQbHVnaW5JbnN0YW5jZVByb3h5OjppbnZva2VEZWZhdWx0KHVpbnQzMl90IG9iamVjdElELCBk
YXRhX3QgYXJndW1lCiAgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJnTGlzdDsKICAgICBkZW1h
cnNoYWxWYWx1ZXMoZXhlYywgYXJndW1lbnRzRGF0YSwgYXJndW1lbnRzTGVuZ3RoLCBhcmdMaXN0
KTsKIAotICAgIFByb3RlY3RlZFB0cjxKU0dsb2JhbE9iamVjdD4gZ2xvYmFsT2JqZWN0ID0gZnJh
bWUtPnNjcmlwdCgpLT5nbG9iYWxPYmplY3QocGx1Z2luV29ybGQoKSk7Ci0gICAgZ2xvYmFsT2Jq
ZWN0LT5nbG9iYWxEYXRhKCkudGltZW91dENoZWNrZXIuc3RhcnQoKTsKKyAgICBSZWZQdHI8SlNH
bG9iYWxEYXRhPiBnbG9iYWxEYXRhID0gcGx1Z2luV29ybGQoKS0+Z2xvYmFsRGF0YSgpOworICAg
IGdsb2JhbERhdGEtPnRpbWVvdXRDaGVja2VyLnN0YXJ0KCk7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9
IGNhbGwoZXhlYywgb2JqZWN0LCBjYWxsVHlwZSwgY2FsbERhdGEsIG9iamVjdCwgYXJnTGlzdCk7
Ci0gICAgZ2xvYmFsT2JqZWN0LT5nbG9iYWxEYXRhKCkudGltZW91dENoZWNrZXIuc3RvcCgpOwor
ICAgIGdsb2JhbERhdGEtPnRpbWVvdXRDaGVja2VyLnN0b3AoKTsKICAgICAKICAgICBtYXJzaGFs
VmFsdWUoZXhlYywgdmFsdWUsIHJlc3VsdERhdGEsIHJlc3VsdExlbmd0aCk7CiAgICAgZXhlYy0+
Y2xlYXJFeGNlcHRpb24oKTsKQEAgLTk5MSwxMCArOTkxLDEwIEBAIGJvb2wgTmV0c2NhcGVQbHVn
aW5JbnN0YW5jZVByb3h5Ojpjb25zdHJ1Y3QodWludDMyX3Qgb2JqZWN0SUQsIGRhdGFfdCBhcmd1
bWVudHNECiAgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJnTGlzdDsKICAgICBkZW1hcnNoYWxW
YWx1ZXMoZXhlYywgYXJndW1lbnRzRGF0YSwgYXJndW1lbnRzTGVuZ3RoLCBhcmdMaXN0KTsKIAot
ICAgIFByb3RlY3RlZFB0cjxKU0dsb2JhbE9iamVjdD4gZ2xvYmFsT2JqZWN0ID0gZnJhbWUtPnNj
cmlwdCgpLT5nbG9iYWxPYmplY3QocGx1Z2luV29ybGQoKSk7Ci0gICAgZ2xvYmFsT2JqZWN0LT5n
bG9iYWxEYXRhKCkudGltZW91dENoZWNrZXIuc3RhcnQoKTsKKyAgICBSZWZQdHI8SlNHbG9iYWxE
YXRhPiBnbG9iYWxEYXRhID0gcGx1Z2luV29ybGQoKS0+Z2xvYmFsRGF0YSgpOworICAgIGdsb2Jh
bERhdGEtPnRpbWVvdXRDaGVja2VyLnN0YXJ0KCk7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTQzo6
Y29uc3RydWN0KGV4ZWMsIG9iamVjdCwgY29uc3RydWN0VHlwZSwgY29uc3RydWN0RGF0YSwgYXJn
TGlzdCk7Ci0gICAgZ2xvYmFsT2JqZWN0LT5nbG9iYWxEYXRhKCkudGltZW91dENoZWNrZXIuc3Rv
cCgpOworICAgIGdsb2JhbERhdGEtPnRpbWVvdXRDaGVja2VyLnN0b3AoKTsKICAgICAKICAgICBt
YXJzaGFsVmFsdWUoZXhlYywgdmFsdWUsIHJlc3VsdERhdGEsIHJlc3VsdExlbmd0aCk7CiAgICAg
ZXhlYy0+Y2xlYXJFeGNlcHRpb24oKTsKQEAgLTEyODMsNyArMTI4Myw3IEBAIHZvaWQgTmV0c2Nh
cGVQbHVnaW5JbnN0YW5jZVByb3h5OjphZGRWYWx1ZVRvQXJyYXkoTlNNdXRhYmxlQXJyYXkgKmFy
cmF5LCBFeGVjU3RhCiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAg
ICBbYXJyYXkgYWRkT2JqZWN0OltOU051bWJlciBudW1iZXJXaXRoSW50OkpTT2JqZWN0VmFsdWVU
eXBlXV07Ci0gICAgICAgICAgICBbYXJyYXkgYWRkT2JqZWN0OltOU051bWJlciBudW1iZXJXaXRo
SW50Om1fbG9jYWxPYmplY3RzLmlkRm9yT2JqZWN0KG9iamVjdCldXTsKKyAgICAgICAgICAgIFth
cnJheSBhZGRPYmplY3Q6W05TTnVtYmVyIG51bWJlcldpdGhJbnQ6bV9sb2NhbE9iamVjdHMuaWRG
b3JPYmplY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBvYmplY3QpXV07CiAgICAgICAgIH0KICAgICB9
IGVsc2UKICAgICAgICAgW2FycmF5IGFkZE9iamVjdDpbTlNOdW1iZXIgbnVtYmVyV2l0aEludDpW
b2lkVmFsdWVUeXBlXV07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dl
YlNjcmlwdERlYnVnZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlNjcmlwdERl
YnVnZ2VyLmgKaW5kZXggNzNjOTQ2NjIwNmRkMjk4Mzg5YzgzNWMxNGYzMGQ4ZWU1MDk0ZTk5NC4u
OGY3ZmNhYTVkMWRiMGEyY2Q2NGY5ZDI5ODVmY2E1ZWEzZDBhNjE2MSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJTY3JpcHREZWJ1Z2dlci5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvbWFjL1dlYlZpZXcvV2ViU2NyaXB0RGVidWdnZXIuaApAQCAtMjksOCArMjksOCBAQAog
I2lmbmRlZiBXZWJTY3JpcHREZWJ1Z2dlcl9oCiAjZGVmaW5lIFdlYlNjcmlwdERlYnVnZ2VyX2gK
IAorI2luY2x1ZGUgPGNvbGxlY3Rvci9oYW5kbGVzL0dsb2JhbC5oPgogI2luY2x1ZGUgPGRlYnVn
Z2VyL0RlYnVnZ2VyLmg+Ci0jaW5jbHVkZSA8cnVudGltZS9Qcm90ZWN0Lmg+CiAKICNpbmNsdWRl
IDx3dGYvUmV0YWluUHRyLmg+CiAKQEAgLTY5LDcgKzY5LDcgQEAgcHJpdmF0ZToKICAgICBib29s
IG1fY2FsbGluZ0RlbGVnYXRlOwogICAgIFJldGFpblB0cjxXZWJTY3JpcHRDYWxsRnJhbWU+IG1f
dG9wQ2FsbEZyYW1lOwogCi0gICAgSlNDOjpQcm90ZWN0ZWRQdHI8SlNDOjpKU0dsb2JhbE9iamVj
dD4gbV9nbG9iYWxPYmplY3Q7CisgICAgSlNDOjpHbG9iYWw8SlNDOjpKU0dsb2JhbE9iamVjdD4g
bV9nbG9iYWxPYmplY3Q7CiAgICAgUmV0YWluUHRyPFdlYlNjcmlwdENhbGxGcmFtZT4gbV9nbG9i
YWxDYWxsRnJhbWU7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3
L1dlYlNjcmlwdERlYnVnZ2VyLm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJTY3Jp
cHREZWJ1Z2dlci5tbQppbmRleCA5YmMzYmNlMGRkN2I0MmJiZGNlZDMwMTkwNzczYzQ4ZTk1MjAx
MGI2Li5iZmRiMzVhMzIxYzU5MWZhYzg4YzVlOWQwZDY2NDg4ZDE5NjgwODQ3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlNjcmlwdERlYnVnZ2VyLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViU2NyaXB0RGVidWdnZXIubW0KQEAgLTgwLDcgKzgw
LDcgQEAgc3RhdGljIFdlYkZyYW1lICp0b1dlYkZyYW1lKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QpCiAKIFdlYlNjcmlwdERlYnVnZ2VyOjpXZWJTY3JpcHREZWJ1Z2dlcihKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0KQogICAgIDogbV9jYWxsaW5nRGVsZWdhdGUoZmFsc2UpCi0gICAg
LCBtX2dsb2JhbE9iamVjdChnbG9iYWxPYmplY3QpCisgICAgLCBtX2dsb2JhbE9iamVjdChnbG9i
YWxPYmplY3QtPmdsb2JhbERhdGEoKSwgZ2xvYmFsT2JqZWN0KQogewogICAgIGF0dGFjaChnbG9i
YWxPYmplY3QpOwogICAgIGluaXRHbG9iYWxDYWxsRnJhbWUoZ2xvYmFsT2JqZWN0LT5nbG9iYWxF
eGVjKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdDIvQ2hhbmdlTG9nCmluZGV4IDU3MDk1NTk0ZWJkZWNiM2Y4ZWYxZDRiNTg3ZGMxMmVhNzJl
MGExMmMuLmFlZTgzZjZhMTg2MjcxNWE4NzIyYjRlYzVjZmVmOTQ1NTI0YWNjOGYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwzMCBAQAorMjAxMS0wMi0xNCAgT2xpdmVyIEh1bnQgIDxvbGl2ZXJAYXBw
bGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFJlZmFjdG9yIGhhbmRsZXMgYW5kIHdlYWsgcG9pbnRlcnMgdG8gYmVjb21lIG5pY2VyIGFuZCBt
b3JlIGF1dG9tYXRpYworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NTQ0MTUKKworICAgICAgICBVcGRhdGUgY29kZSB0byBuZXcgR2xvYmFsPD4gQVBJLCBh
bmQgcmVmYWN0b3IgdG8gZ2V0IGdsb2JhbCBkYXRhIHRvCisgICAgICAgIG5lY2Vzc2FyeSBwb2lu
dHMuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTlBKU09iamVjdC5j
cHA6CisgICAgICAgIChXZWJLaXQ6Ok5QSlNPYmplY3Q6OmNyZWF0ZSk6CisgICAgICAgIChXZWJL
aXQ6Ok5QSlNPYmplY3Q6Ok5QSlNPYmplY3QpOgorICAgICAgICAoV2ViS2l0OjpOUEpTT2JqZWN0
Ojppbml0aWFsaXplKToKKyAgICAgICAgKFdlYktpdDo6TlBKU09iamVjdDo6aW52b2tlRGVmYXVs
dCk6CisgICAgICAgIChXZWJLaXQ6Ok5QSlNPYmplY3Q6OmNvbnN0cnVjdCk6CisgICAgICAgIChX
ZWJLaXQ6Ok5QSlNPYmplY3Q6Omludm9rZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5z
L05ldHNjYXBlL05QSlNPYmplY3QuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0
c2NhcGUvTlBSdW50aW1lT2JqZWN0TWFwLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TlBSdW50aW1l
T2JqZWN0TWFwOjpnZXRPckNyZWF0ZU5QT2JqZWN0KToKKyAgICAgICAgKFdlYktpdDo6TlBSdW50
aW1lT2JqZWN0TWFwOjpjb252ZXJ0SlNWYWx1ZVRvTlBWYXJpYW50KToKKyAgICAgICAgKFdlYktp
dDo6TlBSdW50aW1lT2JqZWN0TWFwOjpldmFsdWF0ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9Q
bHVnaW5zL05ldHNjYXBlL05QUnVudGltZU9iamVjdE1hcC5oOgorICAgICAgICAqIFdlYlByb2Nl
c3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luVmlldzo6
d2luZG93U2NyaXB0TlBPYmplY3QpOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3OjpwbHVn
aW5FbGVtZW50TlBPYmplY3QpOgorCiAyMDExLTAyLTE0ICBBZGFtIFJvYmVuICA8YXJvYmVuQGFw
cGxlLmNvbT4KIAogICAgICAgICBSZWFjdCB0byBhY2NlbGVyYXRlZCBjb21wb3NpdGluZyBjaGFu
Z2VzIGFuZCBhbGxvY2F0aW9uIGZhaWx1cmVzIGluIERyYXdpbmdBcmVhSW1wbDo6ZGlzcGxheQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05Q
SlNPYmplY3QuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBl
L05QSlNPYmplY3QuY3BwCmluZGV4IDM0NWJkNTRhOWYzYjk4MzY3N2QzYTFlMzQxZmI0NzVhM2Rl
MmI4ZDkuLmU4NmE5YmMyMTk0N2RiNDZlZjE0ZmZlYTg2ZGYxZmViMjQxMTg1OGUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OUEpTT2JqZWN0
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTlBK
U09iamVjdC5jcHAKQEAgLTQyLDE5ICs0MiwyMCBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsK
IAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLU5QSlNPYmplY3QqIE5QSlNPYmplY3Q6OmNyZWF0ZShO
UFJ1bnRpbWVPYmplY3RNYXAqIG9iamVjdE1hcCwgSlNPYmplY3QqIGpzT2JqZWN0KQorTlBKU09i
amVjdCogTlBKU09iamVjdDo6Y3JlYXRlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgTlBSdW50
aW1lT2JqZWN0TWFwKiBvYmplY3RNYXAsIEpTT2JqZWN0KiBqc09iamVjdCkKIHsKICAgICAvLyBX
ZSBzaG91bGQgbmV2ZXIgaGF2ZSBhIEpTTlBPYmplY3QgaW5zaWRlIGFuIE5QSlNPYmplY3QuCiAg
ICAgQVNTRVJUKCFqc09iamVjdC0+aW5oZXJpdHMoJkpTTlBPYmplY3Q6OnNfaW5mbykpOwogCiAg
ICAgTlBKU09iamVjdCogbnBKU09iamVjdCA9IHRvTlBKU09iamVjdChjcmVhdGVOUE9iamVjdCgw
LCBucENsYXNzKCkpKTsKLSAgICBucEpTT2JqZWN0LT5pbml0aWFsaXplKG9iamVjdE1hcCwganNP
YmplY3QpOworICAgIG5wSlNPYmplY3QtPmluaXRpYWxpemUoZ2xvYmFsRGF0YSwgb2JqZWN0TWFw
LCBqc09iamVjdCk7CiAKICAgICByZXR1cm4gbnBKU09iamVjdDsKIH0KIAogTlBKU09iamVjdDo6
TlBKU09iamVjdCgpCiAgICAgOiBtX29iamVjdE1hcCgwKQorICAgICwgbV9qc09iamVjdChHbG9i
YWw8SlNPYmplY3Q+OjpFbXB0eVZhbHVlKQogewogfQogCkBAIC02OCwxMyArNjksMTMgQEAgYm9v
bCBOUEpTT2JqZWN0Ojppc05QSlNPYmplY3QoTlBPYmplY3QqIG5wT2JqZWN0KQogICAgIHJldHVy
biBucE9iamVjdC0+X2NsYXNzID09IG5wQ2xhc3MoKTsKIH0KIAotdm9pZCBOUEpTT2JqZWN0Ojpp
bml0aWFsaXplKE5QUnVudGltZU9iamVjdE1hcCogb2JqZWN0TWFwLCBKU09iamVjdCoganNPYmpl
Y3QpCit2b2lkIE5QSlNPYmplY3Q6OmluaXRpYWxpemUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRh
LCBOUFJ1bnRpbWVPYmplY3RNYXAqIG9iamVjdE1hcCwgSlNPYmplY3QqIGpzT2JqZWN0KQogewog
ICAgIEFTU0VSVCghbV9vYmplY3RNYXApOwogICAgIEFTU0VSVCghbV9qc09iamVjdCk7CiAKICAg
ICBtX29iamVjdE1hcCA9IG9iamVjdE1hcDsKLSAgICBtX2pzT2JqZWN0ID0ganNPYmplY3Q7Cisg
ICAgbV9qc09iamVjdC5zZXQoZ2xvYmFsRGF0YSwganNPYmplY3QpOwogfQogCiBzdGF0aWMgSWRl
bnRpZmllciBpZGVudGlmaWVyRnJvbUlkZW50aWZpZXJSZXAoRXhlY1N0YXRlKiBleGVjLCBJZGVu
dGlmaWVyUmVwKiBpZGVudGlmaWVyUmVwKQpAQCAtMTMyLDcgKzEzMyw3IEBAIGJvb2wgTlBKU09i
amVjdDo6aW52b2tlRGVmYXVsdChjb25zdCBOUFZhcmlhbnQqIGFyZ3VtZW50cywgdWludDMyX3Qg
YXJndW1lbnRDb3VuCiAKICAgICBKU0xvY2sgbG9jayhTaWxlbmNlQXNzZXJ0aW9uc09ubHkpOwog
Ci0gICAgSlNWYWx1ZSBmdW5jdGlvbiA9IG1fanNPYmplY3Q7CisgICAgSlNWYWx1ZSBmdW5jdGlv
biA9IG1fanNPYmplY3QuZ2V0KCk7CiAgICAgcmV0dXJuIGludm9rZShleGVjLCBtX29iamVjdE1h
cC0+Z2xvYmFsT2JqZWN0KCksIGZ1bmN0aW9uLCBhcmd1bWVudHMsIGFyZ3VtZW50Q291bnQsIHJl
c3VsdCk7CiB9CiAKQEAgLTI1OSw3ICsyNjAsNyBAQCBib29sIE5QSlNPYmplY3Q6OmNvbnN0cnVj
dChjb25zdCBOUFZhcmlhbnQqIGFyZ3VtZW50cywgdWludDMyX3QgYXJndW1lbnRDb3VudCwgTgog
ICAgIEpTTG9jayBsb2NrKFNpbGVuY2VBc3NlcnRpb25zT25seSk7CiAKICAgICBDb25zdHJ1Y3RE
YXRhIGNvbnN0cnVjdERhdGE7Ci0gICAgQ29uc3RydWN0VHlwZSBjb25zdHJ1Y3RUeXBlID0gZ2V0
Q29uc3RydWN0RGF0YShtX2pzT2JqZWN0LCBjb25zdHJ1Y3REYXRhKTsKKyAgICBDb25zdHJ1Y3RU
eXBlIGNvbnN0cnVjdFR5cGUgPSBnZXRDb25zdHJ1Y3REYXRhKG1fanNPYmplY3QuZ2V0KCksIGNv
bnN0cnVjdERhdGEpOwogICAgIGlmIChjb25zdHJ1Y3RUeXBlID09IENvbnN0cnVjdFR5cGVOb25l
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTI2OSw3ICsyNzAsNyBAQCBib29sIE5QSlNP
YmplY3Q6OmNvbnN0cnVjdChjb25zdCBOUFZhcmlhbnQqIGFyZ3VtZW50cywgdWludDMyX3QgYXJn
dW1lbnRDb3VudCwgTgogICAgICAgICBhcmd1bWVudExpc3QuYXBwZW5kKG1fb2JqZWN0TWFwLT5j
b252ZXJ0TlBWYXJpYW50VG9KU1ZhbHVlKGV4ZWMsIG1fb2JqZWN0TWFwLT5nbG9iYWxPYmplY3Qo
KSwgYXJndW1lbnRzW2ldKSk7CiAKICAgICBleGVjLT5nbG9iYWxEYXRhKCkudGltZW91dENoZWNr
ZXIuc3RhcnQoKTsKLSAgICBKU1ZhbHVlIHZhbHVlID0gSlNDOjpjb25zdHJ1Y3QoZXhlYywgbV9q
c09iamVjdCwgY29uc3RydWN0VHlwZSwgY29uc3RydWN0RGF0YSwgYXJndW1lbnRMaXN0KTsKKyAg
ICBKU1ZhbHVlIHZhbHVlID0gSlNDOjpjb25zdHJ1Y3QoZXhlYywgbV9qc09iamVjdC5nZXQoKSwg
Y29uc3RydWN0VHlwZSwgY29uc3RydWN0RGF0YSwgYXJndW1lbnRMaXN0KTsKICAgICBleGVjLT5n
bG9iYWxEYXRhKCkudGltZW91dENoZWNrZXIuc3RvcCgpOwogICAgIAogICAgIC8vIENvbnZlcnQg
YW5kIHJldHVybiB0aGUgbmV3IG9iamVjdC4KQEAgLTI5Miw3ICsyOTMsNyBAQCBib29sIE5QSlNP
YmplY3Q6Omludm9rZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEpTVmFsdWUgZgogICAgICAgICBhcmd1bWVudExpc3QuYXBwZW5kKG1fb2JqZWN0TWFwLT5j
b252ZXJ0TlBWYXJpYW50VG9KU1ZhbHVlKGV4ZWMsIGdsb2JhbE9iamVjdCwgYXJndW1lbnRzW2ld
KSk7CiAKICAgICBleGVjLT5nbG9iYWxEYXRhKCkudGltZW91dENoZWNrZXIuc3RhcnQoKTsKLSAg
ICBKU1ZhbHVlIHZhbHVlID0gSlNDOjpjYWxsKGV4ZWMsIGZ1bmN0aW9uLCBjYWxsVHlwZSwgY2Fs
bERhdGEsIG1fanNPYmplY3QsIGFyZ3VtZW50TGlzdCk7CisgICAgSlNWYWx1ZSB2YWx1ZSA9IEpT
Qzo6Y2FsbChleGVjLCBmdW5jdGlvbiwgY2FsbFR5cGUsIGNhbGxEYXRhLCBtX2pzT2JqZWN0Lmdl
dCgpLCBhcmd1bWVudExpc3QpOwogICAgIGV4ZWMtPmdsb2JhbERhdGEoKS50aW1lb3V0Q2hlY2tl
ci5zdG9wKCk7CiAKICAgICAvLyBDb252ZXJ0IGFuZCByZXR1cm4gdGhlIHJlc3VsdCBvZiB0aGUg
ZnVuY3Rpb24gY2FsbC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1
Z2lucy9OZXRzY2FwZS9OUEpTT2JqZWN0LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1Bs
dWdpbnMvTmV0c2NhcGUvTlBKU09iamVjdC5oCmluZGV4IDM1MTgyMjEwYTNhM2U5MTkyOTQyYjlh
ZjIwZWYyYjZmNTI4YzdkMTIuLmFlOTBhYTUwMzRiZWFmNGNkNTY0ZGY4Mzc5M2QzMjY1MWVjMzQy
NjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2Fw
ZS9OUEpTT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05l
dHNjYXBlL05QSlNPYmplY3QuaApAQCAtMjYsMTMgKzI2LDE2IEBACiAjaWZuZGVmIE5QSlNPYmpl
Y3RfaAogI2RlZmluZSBOUEpTT2JqZWN0X2gKIAotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1By
b3RlY3QuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9HbG9iYWwuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL25wcnVudGltZV9pbnRlcm5hbC5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5o
PgogCiBuYW1lc3BhY2UgSlNDIHsKLSAgICBjbGFzcyBKU0dsb2JhbE9iamVjdDsKLSAgICBjbGFz
cyBKU09iamVjdDsKKworY2xhc3MgSlNHbG9iYWxEYXRhOworY2xhc3MgSlNHbG9iYWxPYmplY3Q7
CitjbGFzcyBKU09iamVjdDsKKwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTQzLDcgKzQ2
LDcgQEAgY2xhc3MgTlBSdW50aW1lT2JqZWN0TWFwOwogY2xhc3MgTlBKU09iamVjdCA6IHB1Ymxp
YyBOUE9iamVjdCB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoTlBKU09iamVjdCk7CiBwdWJs
aWM6Ci0gICAgc3RhdGljIE5QSlNPYmplY3QqIGNyZWF0ZShOUFJ1bnRpbWVPYmplY3RNYXAqIG9i
amVjdE1hcCwgSlNDOjpKU09iamVjdCoganNPYmplY3QpOworICAgIHN0YXRpYyBOUEpTT2JqZWN0
KiBjcmVhdGUoSlNDOjpKU0dsb2JhbERhdGEmLCBOUFJ1bnRpbWVPYmplY3RNYXAqIG9iamVjdE1h
cCwgSlNDOjpKU09iamVjdCoganNPYmplY3QpOwogCiAgICAgSlNDOjpKU09iamVjdCoganNPYmpl
Y3QoKSBjb25zdCB7IHJldHVybiBtX2pzT2JqZWN0LmdldCgpOyB9CiAKQEAgLTU5LDcgKzYyLDcg
QEAgcHJpdmF0ZToKICAgICBOUEpTT2JqZWN0KCk7CiAgICAgfk5QSlNPYmplY3QoKTsKIAotICAg
IHZvaWQgaW5pdGlhbGl6ZShOUFJ1bnRpbWVPYmplY3RNYXAqLCBKU0M6OkpTT2JqZWN0KiBqc09i
amVjdCk7CisgICAgdm9pZCBpbml0aWFsaXplKEpTQzo6SlNHbG9iYWxEYXRhJiwgTlBSdW50aW1l
T2JqZWN0TWFwKiwgSlNDOjpKU09iamVjdCoganNPYmplY3QpOwogCiAgICAgYm9vbCBoYXNNZXRo
b2QoTlBJZGVudGlmaWVyIG1ldGhvZE5hbWUpOwogICAgIGJvb2wgaW52b2tlKE5QSWRlbnRpZmll
ciBtZXRob2ROYW1lLCBjb25zdCBOUFZhcmlhbnQqIGFyZ3VtZW50cywgdWludDMyX3QgYXJndW1l
bnRDb3VudCwgTlBWYXJpYW50KiByZXN1bHQpOwpAQCAtODcsNyArOTAsNyBAQCBwcml2YXRlOgog
ICAgIHN0YXRpYyBib29sIE5QX0NvbnN0cnVjdChOUE9iamVjdCosIGNvbnN0IE5QVmFyaWFudCog
YXJndW1lbnRzLCB1aW50MzJfdCBhcmd1bWVudENvdW50LCBOUFZhcmlhbnQqIHJlc3VsdCk7CiAg
ICAgCiAgICAgTlBSdW50aW1lT2JqZWN0TWFwKiBtX29iamVjdE1hcDsKLSAgICBKU0M6OlByb3Rl
Y3RlZFB0cjxKU0M6OkpTT2JqZWN0PiBtX2pzT2JqZWN0OworICAgIEpTQzo6R2xvYmFsPEpTQzo6
SlNPYmplY3Q+IG1fanNPYmplY3Q7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OUFJ1bnRp
bWVPYmplY3RNYXAuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNj
YXBlL05QUnVudGltZU9iamVjdE1hcC5jcHAKaW5kZXggMGE5NmFkNzI1MDEwOThkMzI2YmM0YTVi
ZWQ3ZDk3NTUyMWU4NzhiOS4uZmM1NzJmNGNkNGE0ZjliNjk5ZjcyN2Y3MDJjNzBhM2VhYmNlNDU3
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBl
L05QUnVudGltZU9iamVjdE1hcC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Q
bHVnaW5zL05ldHNjYXBlL05QUnVudGltZU9iamVjdE1hcC5jcHAKQEAgLTU4LDcgKzU4LDcgQEAg
TlBSdW50aW1lT2JqZWN0TWFwOjpQbHVnaW5Qcm90ZWN0b3I6On5QbHVnaW5Qcm90ZWN0b3IoKQog
ewogfQogCi1OUE9iamVjdCogTlBSdW50aW1lT2JqZWN0TWFwOjpnZXRPckNyZWF0ZU5QT2JqZWN0
KEpTT2JqZWN0KiBqc09iamVjdCkKK05QT2JqZWN0KiBOUFJ1bnRpbWVPYmplY3RNYXA6OmdldE9y
Q3JlYXRlTlBPYmplY3QoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU09iamVjdCoganNPYmpl
Y3QpCiB7CiAgICAgLy8gSWYgdGhpcyBpcyBhIEpTTlBPYmplY3QsIHdlIGNhbiBqdXN0IGdldCBp
dHMgdW5kZXJseWluZyBOUE9iamVjdC4KICAgICBpZiAoanNPYmplY3QtPmNsYXNzSW5mbygpID09
ICZKU05QT2JqZWN0OjpzX2luZm8pIHsKQEAgLTc1LDcgKzc1LDcgQEAgTlBPYmplY3QqIE5QUnVu
dGltZU9iamVjdE1hcDo6Z2V0T3JDcmVhdGVOUE9iamVjdChKU09iamVjdCoganNPYmplY3QpCiAg
ICAgICAgIHJldHVybiBucEpTT2JqZWN0OwogICAgIH0KIAotICAgIE5QSlNPYmplY3QqIG5wSlNP
YmplY3QgPSBOUEpTT2JqZWN0OjpjcmVhdGUodGhpcywganNPYmplY3QpOworICAgIE5QSlNPYmpl
Y3QqIG5wSlNPYmplY3QgPSBOUEpTT2JqZWN0OjpjcmVhdGUoZ2xvYmFsRGF0YSwgdGhpcywganNP
YmplY3QpOwogICAgIG1fbnBKU09iamVjdHMuc2V0KGpzT2JqZWN0LCBucEpTT2JqZWN0KTsKIAog
ICAgIHJldHVybiBucEpTT2JqZWN0OwpAQCAtMTcyLDcgKzE3Miw3IEBAIHZvaWQgTlBSdW50aW1l
T2JqZWN0TWFwOjpjb252ZXJ0SlNWYWx1ZVRvTlBWYXJpYW50KEV4ZWNTdGF0ZSogZXhlYywgSlNW
YWx1ZSB2YWx1CiAgICAgfQogCiAgICAgaWYgKHZhbHVlLmlzT2JqZWN0KCkpIHsKLSAgICAgICAg
TlBPYmplY3QqIG5wT2JqZWN0ID0gZ2V0T3JDcmVhdGVOUE9iamVjdChhc09iamVjdCh2YWx1ZSkp
OworICAgICAgICBOUE9iamVjdCogbnBPYmplY3QgPSBnZXRPckNyZWF0ZU5QT2JqZWN0KGV4ZWMt
Pmdsb2JhbERhdGEoKSwgYXNPYmplY3QodmFsdWUpKTsKICAgICAgICAgT0JKRUNUX1RPX05QVkFS
SUFOVChucE9iamVjdCwgdmFyaWFudCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0xODIs
MTQgKzE4MiwxNCBAQCB2b2lkIE5QUnVudGltZU9iamVjdE1hcDo6Y29udmVydEpTVmFsdWVUb05Q
VmFyaWFudChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdQogCiBib29sIE5QUnVudGltZU9i
amVjdE1hcDo6ZXZhbHVhdGUoTlBPYmplY3QqIG5wT2JqZWN0LCBjb25zdCBTdHJpbmcmc2NyaXB0
U3RyaW5nLCBOUFZhcmlhbnQqIHJlc3VsdCkKIHsKLSAgICBQcm90ZWN0ZWRQdHI8SlNHbG9iYWxP
YmplY3Q+IGdsb2JhbE9iamVjdCA9IHRoaXMtPmdsb2JhbE9iamVjdCgpOworICAgIEdsb2JhbDxK
U0dsb2JhbE9iamVjdD4gZ2xvYmFsT2JqZWN0KHRoaXMtPmdsb2JhbE9iamVjdCgpLT5nbG9iYWxE
YXRhKCksIHRoaXMtPmdsb2JhbE9iamVjdCgpKTsKICAgICBpZiAoIWdsb2JhbE9iamVjdCkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgRXhlY1N0YXRlKiBleGVjID0gZ2xvYmFsT2JqZWN0
LT5nbG9iYWxFeGVjKCk7CiAgICAgCiAgICAgSlNMb2NrIGxvY2soU2lsZW5jZUFzc2VydGlvbnNP
bmx5KTsKLSAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGdldE9yQ3JlYXRlSlNPYmplY3QoZ2xvYmFs
T2JqZWN0LCBucE9iamVjdCk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBnZXRPckNyZWF0ZUpT
T2JqZWN0KGdsb2JhbE9iamVjdC5nZXQoKSwgbnBPYmplY3QpOwogCiAgICAgZ2xvYmFsT2JqZWN0
LT5nbG9iYWxEYXRhKCkudGltZW91dENoZWNrZXIuc3RhcnQoKTsKICAgICBDb21wbGV0aW9uIGNv
bXBsZXRpb24gPSBKU0M6OmV2YWx1YXRlKGV4ZWMsIGdsb2JhbE9iamVjdC0+Z2xvYmFsU2NvcGVD
aGFpbigpLCBtYWtlU291cmNlKFVTdHJpbmcoc2NyaXB0U3RyaW5nLmltcGwoKSkpLCB0aGlzVmFs
dWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNj
YXBlL05QUnVudGltZU9iamVjdE1hcC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVn
aW5zL05ldHNjYXBlL05QUnVudGltZU9iamVjdE1hcC5oCmluZGV4IGExMWMzNTQ0ZTNjYjhhMDUz
ZGFiZmNlZGY0ZjYzY2IzYjFiYjNmZTkuLmQxM2UxZmVmOGNkOTBhNTU4NjUwZGE1OGZlMjBmMDMz
MjU3MmQwODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9O
ZXRzY2FwZS9OUFJ1bnRpbWVPYmplY3RNYXAuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1BsdWdpbnMvTmV0c2NhcGUvTlBSdW50aW1lT2JqZWN0TWFwLmgKQEAgLTM0LDYgKzM0LDcg
QEAgdHlwZWRlZiBzdHJ1Y3QgX05QVmFyaWFudCBOUFZhcmlhbnQ7CiAKIG5hbWVzcGFjZSBKU0Mg
ewogICAgIGNsYXNzIEV4ZWNTdGF0ZTsKKyAgICBjbGFzcyBKU0dsb2JhbERhdGE7CiAgICAgY2xh
c3MgSlNHbG9iYWxPYmplY3Q7CiAgICAgY2xhc3MgSlNPYmplY3Q7CiAgICAgY2xhc3MgSlNWYWx1
ZTsKQEAgLTYxLDcgKzYyLDcgQEAgcHVibGljOgogCiAgICAgLy8gUmV0dXJucyBhbiBOUE9iamVj
dCB0aGF0IHdyYXBzIHRoZSBnaXZlbiBKU09iamVjdCBvYmplY3QuIElmIHRoZXJlIGlzIGFscmVh
ZHkgYW4gTlBPYmplY3QgdGhhdCB3cmFwcyB0aGlzIEpTT2JqZWN0LCBpdCB3aWxsCiAgICAgLy8g
cmV0YWluIGl0IGFuZCByZXR1cm4gaXQuCi0gICAgTlBPYmplY3QqIGdldE9yQ3JlYXRlTlBPYmpl
Y3QoSlNDOjpKU09iamVjdCopOworICAgIE5QT2JqZWN0KiBnZXRPckNyZWF0ZU5QT2JqZWN0KEpT
Qzo6SlNHbG9iYWxEYXRhJiwgSlNDOjpKU09iamVjdCopOwogICAgIHZvaWQgbnBKU09iamVjdERl
c3Ryb3llZChOUEpTT2JqZWN0Kik7CiAKICAgICAvLyBSZXR1cm5zIGEgSlNPYmplY3Qgb2JqZWN0
IHRoYXQgd3JhcHMgdGhlIGdpdmVuIE5QT2JqZWN0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCmluZGV4IDhhYzdkM2FiNDYzZWU1YzdlYjM2
ODNiODQ0MWYwYmQxYTlkNDhiODMuLjU5MDEzODgzMTU4NjA3OWE5YWU5MjM0MTY3N2I0MjIxN2Ew
MzZiNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVn
aW5WaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2lu
Vmlldy5jcHAKQEAgLTg4Myw3ICs4ODMsNyBAQCBOUE9iamVjdCogUGx1Z2luVmlldzo6d2luZG93
U2NyaXB0TlBPYmplY3QoKQogICAgIC8vIEZJWE1FOiBIYW5kbGUgSmF2YVNjcmlwdCBiZWluZyBk
aXNhYmxlZC4KICAgICBBU1NFUlQoZnJhbWUoKS0+c2NyaXB0KCktPmNhbkV4ZWN1dGVTY3JpcHRz
KE5vdEFib3V0VG9FeGVjdXRlU2NyaXB0KSk7CiAKLSAgICByZXR1cm4gbV9ucFJ1bnRpbWVPYmpl
Y3RNYXAuZ2V0T3JDcmVhdGVOUE9iamVjdChmcmFtZSgpLT5zY3JpcHQoKS0+d2luZG93U2hlbGwo
cGx1Z2luV29ybGQoKSktPndpbmRvdygpKTsKKyAgICByZXR1cm4gbV9ucFJ1bnRpbWVPYmplY3RN
YXAuZ2V0T3JDcmVhdGVOUE9iamVjdCgqcGx1Z2luV29ybGQoKS0+Z2xvYmFsRGF0YSgpLCBmcmFt
ZSgpLT5zY3JpcHQoKS0+d2luZG93U2hlbGwocGx1Z2luV29ybGQoKSktPndpbmRvdygpKTsKIH0K
IAogTlBPYmplY3QqIFBsdWdpblZpZXc6OnBsdWdpbkVsZW1lbnROUE9iamVjdCgpCkBAIC04OTUs
NyArODk1LDcgQEAgTlBPYmplY3QqIFBsdWdpblZpZXc6OnBsdWdpbkVsZW1lbnROUE9iamVjdCgp
CiAgICAgSlNPYmplY3QqIG9iamVjdCA9IGZyYW1lKCktPnNjcmlwdCgpLT5qc09iamVjdEZvclBs
dWdpbkVsZW1lbnQobV9wbHVnaW5FbGVtZW50LmdldCgpKTsKICAgICBBU1NFUlQob2JqZWN0KTsK
IAotICAgIHJldHVybiBtX25wUnVudGltZU9iamVjdE1hcC5nZXRPckNyZWF0ZU5QT2JqZWN0KG9i
amVjdCk7CisgICAgcmV0dXJuIG1fbnBSdW50aW1lT2JqZWN0TWFwLmdldE9yQ3JlYXRlTlBPYmpl
Y3QoKnBsdWdpbldvcmxkKCktPmdsb2JhbERhdGEoKSwgb2JqZWN0KTsKIH0KIAogYm9vbCBQbHVn
aW5WaWV3OjpldmFsdWF0ZShOUE9iamVjdCogbnBPYmplY3QsIGNvbnN0IFN0cmluZyYgc2NyaXB0
U3RyaW5nLCBOUFZhcmlhbnQqIHJlc3VsdCwgYm9vbCBhbGxvd1BvcHVwcykK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>82390</attachid>
            <date>2011-02-14 17:04:43 -0800</date>
            <delta_ts>2011-02-15 13:22:50 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-54415-20110214170441.patch</filename>
            <type>text/plain</type>
            <size>194689</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogNzg0ODkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvSlNDbGFzc1JlZi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2xh
c3NSZWYuY3BwCmluZGV4IGRlY2Y0OTMzMTQzYTFlZDNlOGUwMTRjZTBmYjZhZDI2Nzk5NDE5OTQu
LmQ5NTNkY2UxYzc4NjhiMTRmMDEwNWU1ZmRlNTg3NmUxNDE5YmJjMmYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDbGFzc1JlZi5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0FQSS9KU0NsYXNzUmVmLmNwcApAQCAtMTQyLDE5ICsxNDIsMTIgQEAgUGFzc1Jl
ZlB0cjxPcGFxdWVKU0NsYXNzPiBPcGFxdWVKU0NsYXNzOjpjcmVhdGVOb0F1dG9tYXRpY1Byb3Rv
dHlwZShjb25zdCBKU0NsYXMKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IE9wYXF1ZUpTQ2xhc3Mo
ZGVmaW5pdGlvbiwgMCkpOwogfQogCi1zdGF0aWMgdm9pZCBjbGVhclJlZmVyZW5jZVRvUHJvdG90
eXBlKEpTT2JqZWN0UmVmIHByb3RvdHlwZSkKLXsKLSAgICBPcGFxdWVKU0NsYXNzQ29udGV4dERh
dGEqIGpzQ2xhc3NEYXRhID0gc3RhdGljX2Nhc3Q8T3BhcXVlSlNDbGFzc0NvbnRleHREYXRhKj4o
SlNPYmplY3RHZXRQcml2YXRlKHByb3RvdHlwZSkpOwotICAgIEFTU0VSVChqc0NsYXNzRGF0YSk7
Ci0gICAganNDbGFzc0RhdGEtPmNhY2hlZFByb3RvdHlwZS5jbGVhcih0b0pTKHByb3RvdHlwZSkp
OwotfQotCiBQYXNzUmVmUHRyPE9wYXF1ZUpTQ2xhc3M+IE9wYXF1ZUpTQ2xhc3M6OmNyZWF0ZShj
b25zdCBKU0NsYXNzRGVmaW5pdGlvbiogY2xpZW50RGVmaW5pdGlvbikKIHsKICAgICBKU0NsYXNz
RGVmaW5pdGlvbiBkZWZpbml0aW9uID0gKmNsaWVudERlZmluaXRpb247IC8vIEF2b2lkIG1vZGlm
eWluZyBjbGllbnQgY29weS4KIAogICAgIEpTQ2xhc3NEZWZpbml0aW9uIHByb3RvRGVmaW5pdGlv
biA9IGtKU0NsYXNzRGVmaW5pdGlvbkVtcHR5OwotICAgIHByb3RvRGVmaW5pdGlvbi5maW5hbGl6
ZSA9IGNsZWFyUmVmZXJlbmNlVG9Qcm90b3R5cGU7CisgICAgcHJvdG9EZWZpbml0aW9uLmZpbmFs
aXplID0gMDsKICAgICBzd2FwKGRlZmluaXRpb24uc3RhdGljRnVuY3Rpb25zLCBwcm90b0RlZmlu
aXRpb24uc3RhdGljRnVuY3Rpb25zKTsgLy8gTW92ZSBzdGF0aWMgZnVuY3Rpb25zIHRvIHRoZSBw
cm90b3R5cGUuCiAgICAgCiAgICAgLy8gV2UgYXJlIHN1cHBvc2VkIHRvIHVzZSBKU0NsYXNzUmV0
YWluL1JlbGVhc2UgYnV0IHNpbmNlIHdlIGtub3cgdGhhdCB3ZSBjdXJyZW50bHkgaGF2ZQpAQCAt
MTYzLDcgKzE1Niw3IEBAIFBhc3NSZWZQdHI8T3BhcXVlSlNDbGFzcz4gT3BhcXVlSlNDbGFzczo6
Y3JlYXRlKGNvbnN0IEpTQ2xhc3NEZWZpbml0aW9uKiBjbGllbnRECiAgICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBPcGFxdWVKU0NsYXNzKCZkZWZpbml0aW9uLCBwcm90b0NsYXNzLmdldCgpKSk7CiB9
CiAKLU9wYXF1ZUpTQ2xhc3NDb250ZXh0RGF0YTo6T3BhcXVlSlNDbGFzc0NvbnRleHREYXRhKE9w
YXF1ZUpTQ2xhc3MqIGpzQ2xhc3MpCitPcGFxdWVKU0NsYXNzQ29udGV4dERhdGE6Ok9wYXF1ZUpT
Q2xhc3NDb250ZXh0RGF0YShKU0M6OkpTR2xvYmFsRGF0YSYsIE9wYXF1ZUpTQ2xhc3MqIGpzQ2xh
c3MpCiAgICAgOiBtX2NsYXNzKGpzQ2xhc3MpCiB7CiAgICAgaWYgKGpzQ2xhc3MtPm1fc3RhdGlj
VmFsdWVzKSB7CkBAIC0yMDksNyArMjAyLDcgQEAgT3BhcXVlSlNDbGFzc0NvbnRleHREYXRhJiBP
cGFxdWVKU0NsYXNzOjpjb250ZXh0RGF0YShFeGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAgT3BhcXVl
SlNDbGFzc0NvbnRleHREYXRhKiYgY29udGV4dERhdGEgPSBleGVjLT5nbG9iYWxEYXRhKCkub3Bh
cXVlSlNDbGFzc0RhdGEuYWRkKHRoaXMsIDApLmZpcnN0LT5zZWNvbmQ7CiAgICAgaWYgKCFjb250
ZXh0RGF0YSkKLSAgICAgICAgY29udGV4dERhdGEgPSBuZXcgT3BhcXVlSlNDbGFzc0NvbnRleHRE
YXRhKHRoaXMpOworICAgICAgICBjb250ZXh0RGF0YSA9IG5ldyBPcGFxdWVKU0NsYXNzQ29udGV4
dERhdGEoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlzKTsKICAgICByZXR1cm4gKmNvbnRleHREYXRh
OwogfQogCkBAIC0yNTYsNyArMjQ5LDcgQEAgSlNPYmplY3QqIE9wYXF1ZUpTQ2xhc3M6OnByb3Rv
dHlwZShFeGVjU3RhdGUqIGV4ZWMpCiAKICAgICBpZiAoIWpzQ2xhc3NEYXRhLmNhY2hlZFByb3Rv
dHlwZSkgewogICAgICAgICAvLyBSZWN1cnNpdmUsIGJ1dCBzaG91bGQgYmUgZ29vZCBlbm91Z2gg
Zm9yIG91ciBwdXJwb3NlcwotICAgICAgICBqc0NsYXNzRGF0YS5jYWNoZWRQcm90b3R5cGUgPSBu
ZXcgKGV4ZWMpIEpTQ2FsbGJhY2tPYmplY3Q8SlNPYmplY3RXaXRoR2xvYmFsT2JqZWN0PihleGVj
LCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3Qo
KS0+Y2FsbGJhY2tPYmplY3RTdHJ1Y3R1cmUoKSwgcHJvdG90eXBlQ2xhc3MsICZqc0NsYXNzRGF0
YSk7IC8vIHNldCBqc0NsYXNzRGF0YSBhcyB0aGUgb2JqZWN0J3MgcHJpdmF0ZSBkYXRhLCBzbyBp
dCBjYW4gY2xlYXIgb3VyIHJlZmVyZW5jZSBvbiBkZXN0cnVjdGlvbgorICAgICAgICBqc0NsYXNz
RGF0YS5jYWNoZWRQcm90b3R5cGUuc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgbmV3IChleGVjKSBK
U0NhbGxiYWNrT2JqZWN0PEpTT2JqZWN0V2l0aEdsb2JhbE9iamVjdD4oZXhlYywgZXhlYy0+bGV4
aWNhbEdsb2JhbE9iamVjdCgpLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPmNhbGxiYWNr
T2JqZWN0U3RydWN0dXJlKCksIHByb3RvdHlwZUNsYXNzLCAmanNDbGFzc0RhdGEpLCAwKTsgLy8g
c2V0IGpzQ2xhc3NEYXRhIGFzIHRoZSBvYmplY3QncyBwcml2YXRlIGRhdGEsIHNvIGl0IGNhbiBj
bGVhciBvdXIgcmVmZXJlbmNlIG9uIGRlc3RydWN0aW9uCiAgICAgICAgIGlmIChwYXJlbnRDbGFz
cykgewogICAgICAgICAgICAgaWYgKEpTT2JqZWN0KiBwcm90b3R5cGUgPSBwYXJlbnRDbGFzcy0+
cHJvdG90eXBlKGV4ZWMpKQogICAgICAgICAgICAgICAgIGpzQ2xhc3NEYXRhLmNhY2hlZFByb3Rv
dHlwZS0+c2V0UHJvdG90eXBlKHByb3RvdHlwZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQVBJL0pTQ2xhc3NSZWYuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlND
bGFzc1JlZi5oCmluZGV4IDA5NzE3MDAyYjQ1MWM5YTc5NTFlYjgyNTYyOGIwMjViZWNhOGNlZDku
LjMyOWQ3MmVlZjAyYTIyNWM3OWEyZjlhYjc0YTk3ZTJjZWM4YmEwMDYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDbGFzc1JlZi5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9BUEkvSlNDbGFzc1JlZi5oCkBAIC02OSw3ICs2OSw3IEBAIHN0cnVjdCBPcGFxdWVK
U0NsYXNzOwogc3RydWN0IE9wYXF1ZUpTQ2xhc3NDb250ZXh0RGF0YSB7CiAgICAgV1RGX01BS0Vf
Tk9OQ09QWUFCTEUoT3BhcXVlSlNDbGFzc0NvbnRleHREYXRhKTsgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CiBwdWJsaWM6Ci0gICAgT3BhcXVlSlNDbGFzc0NvbnRleHREYXRhKE9wYXF1ZUpTQ2xh
c3MqKTsKKyAgICBPcGFxdWVKU0NsYXNzQ29udGV4dERhdGEoSlNDOjpKU0dsb2JhbERhdGEmLCBP
cGFxdWVKU0NsYXNzKik7CiAgICAgfk9wYXF1ZUpTQ2xhc3NDb250ZXh0RGF0YSgpOwogCiAgICAg
Ly8gSXQgaXMgbmVjZXNzYXJ5IHRvIGtlZXAgT3BhcXVlSlNDbGFzcyBhbGl2ZSBiZWNhdXNlIG9m
IHRoZSBmb2xsb3dpbmcgcmFyZSBzY2VuYXJpbzoKQEAgLTgyLDcgKzgyLDcgQEAgcHVibGljOgog
CiAgICAgT3BhcXVlSlNDbGFzc1N0YXRpY1ZhbHVlc1RhYmxlKiBzdGF0aWNWYWx1ZXM7CiAgICAg
T3BhcXVlSlNDbGFzc1N0YXRpY0Z1bmN0aW9uc1RhYmxlKiBzdGF0aWNGdW5jdGlvbnM7Ci0gICAg
SlNDOjpXZWFrR0NQdHI8SlNDOjpKU09iamVjdD4gY2FjaGVkUHJvdG90eXBlOworICAgIEpTQzo6
TGF6eVdlYWtHQ1B0cjxKU0M6OkpTT2JqZWN0PiBjYWNoZWRQcm90b3R5cGU7CiB9OwogCiBzdHJ1
Y3QgT3BhcXVlSlNDbGFzcyA6IHB1YmxpYyBUaHJlYWRTYWZlU2hhcmVkPE9wYXF1ZUpTQ2xhc3M+
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCBmMTg4MjZlYWVjNjBlNGM4
MGExZmZhYmIwZGYzOWU4MDk4N2MxNWM5Li41YTZhY2UyMTFmMDM2ZDU0ODRiZWZlYmZhN2YxNjdj
NGZmOWVhOGY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50
eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC00MCw2ICs0
MCw4IEBAIFNFVChKYXZhU2NyaXB0Q29yZV9TT1VSQ0VTCiAgICAgYnl0ZWNvbXBpbGVyL0J5dGVj
b2RlR2VuZXJhdG9yLmNwcAogICAgIGJ5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCiAKKyAg
ICBjb2xsZWN0b3IvaGFuZGxlcy9IYW5kbGVIZWFwLmNwcAorCiAgICAgZGVidWdnZXIvRGVidWdn
ZXIuY3BwCiAgICAgZGVidWdnZXIvRGVidWdnZXJBY3RpdmF0aW9uLmNwcAogICAgIGRlYnVnZ2Vy
L0RlYnVnZ2VyQ2FsbEZyYW1lLmNwcApAQCAtMTAwLDcgKzEwMiw2IEBAIFNFVChKYXZhU2NyaXB0
Q29yZV9TT1VSQ0VTCiAgICAgcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmNwcAogICAgIHJ1
bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuY3BwCiAgICAgcnVudGltZS9HQ0FjdGl2aXR5Q2FsbGJh
Y2suY3BwCi0gICAgcnVudGltZS9HQ0hhbmRsZS5jcHAKICAgICBydW50aW1lL0dldHRlclNldHRl
ci5jcHAKICAgICBydW50aW1lL0dsb2JhbEV2YWxGdW5jdGlvbi5jcHAKICAgICBydW50aW1lL0lk
ZW50aWZpZXIuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9n
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA0YWYwOGQ2NWMyNDYzNjI4
Yzk0NGVmNWZkMzA5NGIzYjc2ZDc2ODMyLi5iMGZhNDIxYWVmNmVhOGVmMTIwODc1ZDJjNzk2NWYx
Y2Q4ZmZlY2JkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNzEgQEAKKzIw
MTEtMDItMTQgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZWZhY3RvciBoYW5kbGVzIGFuZCB3
ZWFrIHBvaW50ZXJzIHRvIGJlY29tZSBuaWNlciBhbmQgbW9yZSBhdXRvbWF0aWMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU0NDE1CisKKyAgICAgICAg
TW92ZSB0byBhIHRydWUgaGFuZGxlIGJhc2VkIG1lY2hhbmlzbSBmb3IgR0MgdmFsdWUgcHJvdGVj
dGlvbi4gIFRoaXMKKyAgICAgICAgYWxzbyBhbGxvd3MgdXMgdG8gc3dpdGNoIHRvIGEgbW9yZSBz
ZW5zaWJsZSBiZWhhdmlvdXIgZm9yIHdlYWsgcG9pbnRlcnMKKyAgICAgICAgaW4gd2hpY2ggd2Vh
ayBwb2ludGVycyBhcmUgYXV0b21hdGljYWxseSB1cGRhdGVkLgorCisgICAgICAgIFRoaXMgYWxs
b3dzIHVzIHRvIHJlbW92ZSB0aGUgb2xkIChhbmQgY29udm9sdXRlZCkgdGhhdCByZXF1aXJlZCBh
bGwKKyAgICAgICAgb2JqZWN0cyB0aGF0IG1heSBiZSBoZWxkIGJ5IGEgd2VhayByZWZlcmVuY2Ug
dG8gYmUgYXdhcmUgb2YgdGhlIHJlZmVyZW5jZQorICAgICAgICBhbmQgbWFudWFsbHkgY2xlYXIg
dGhlbSBpbiB0aGVpciBkZXN0cnVjdG9ycy4KKworICAgICAgICBUaGlzIGFsc28gYWRkcyBhIGZl
dyBuZXcgZGF0YSB0eXBlcyB0byBKU0MgdGhhdCB3ZSB1c2UgdG8gZWZmaWNpZW50bHkKKyAgICAg
ICAgYWxsb2NhdGUgYW5kIHJldHVybiB0aGUgdW5kZXJseWluZyBoYW5kbGUgc3RvcmFnZS4KKwor
ICAgICAgICBUaGlzIHBhdGNoIGlzIGxhcmdlbHkgcmVuYW1pbmcgYW5kIHJlbW92aW5nIG5vdyB1
bm5lY2Vzc2FyeSBkZXN0cnVjdG9ycworICAgICAgICBmcm9tIG9iamVjdHMuCisKKyAgICAgICAg
KiBBUEkvSlNDbGFzc1JlZi5jcHA6CisgICAgICAgIChPcGFxdWVKU0NsYXNzOjpjcmVhdGUpOgor
ICAgICAgICAoT3BhcXVlSlNDbGFzc0NvbnRleHREYXRhOjpPcGFxdWVKU0NsYXNzQ29udGV4dERh
dGEpOgorICAgICAgICAoT3BhcXVlSlNDbGFzczo6Y29udGV4dERhdGEpOgorICAgICAgICAoT3Bh
cXVlSlNDbGFzczo6cHJvdG90eXBlKToKKyAgICAgICAgKiBBUEkvSlNDbGFzc1JlZi5oOgorICAg
ICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOgorICAgICAg
ICAqIEphdmFTY3JpcHRDb3JlLmV4cDoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS5neXBpOgor
ICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnBybzoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS52
Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZGVmOgorICAgICAgICAqIEphdmFT
Y3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2o6Cisg
ICAgICAgICogSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlQ29tbW9uLnZzcHJvcHM6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlR2VuZXJhdGVkLm1ha2U6CisgICAgICAgICogSmF2YVNj
cmlwdENvcmUudmNwcm9qL2pzYy9qc2NDb21tb24udnNwcm9wczoKKyAgICAgICAgKiBKYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGNvbGxlY3Rvci9o
YW5kbGVzL0Jsb2NrU3RhY2suaDogQWRkZWQuCisgICAgICAgIChKU0M6Ojo6QmxvY2tTdGFjayk6
CisgICAgICAgIChKU0M6Ojo6fkJsb2NrU3RhY2spOgorICAgICAgICAoSlNDOjo6OmJsb2Nrcyk6
CisgICAgICAgIChKU0M6Ojo6Z3Jvdyk6CisgICAgICAgIChKU0M6Ojo6c2hyaW5rKToKKyAgICAg
ICAgKiBjb2xsZWN0b3IvaGFuZGxlcy9HbG9iYWwuaDogQWRkZWQuCisgICAgICAgICAgICBOZXcg
R2xvYmFsIGhhbmRsZSB0eXBlIHVzZWQgdG8ga2VlcCBnYyBvYmplY3RzIGxpdmUsIGV2ZW4gaWYg
dGhleSdyZSBub3QKKyAgICAgICAgICAgIG1hcmtlZC4KKyAgICAgICAgKEpTQzo6R2xvYmFsOjpH
bG9iYWwpOgorICAgICAgICAoSlNDOjpHbG9iYWw6On5HbG9iYWwpOgorICAgICAgICAoSlNDOjpH
bG9iYWw6OnNldCk6CisgICAgICAgICAgICBXZSBjYW4gb25seSBhc3NpZ24gZGlyZWN0bHkgdG8g
YSBnbG9iYWwgZnJvbSBhbm90aGVyIGdsb2JhbC4KKyAgICAgICAgICAgIEluIGFsbCBvdGhlciBj
YXNlcyB3ZSBuZWVkIHRoZSBKU0dsb2JhbERhdGEgdG8gYmUgcHJvdmlkZWQKKyAgICAgICAgICAg
IGV4cGxpY2l0bHkgc28gd2UgdXNlIGEgc2V0IGZ1bmN0aW9uLgorICAgICAgICAoSlNDOjpHbG9i
YWw6Om9wZXJhdG9yPSk6CisgICAgICAgIChKU0M6Okdsb2JhbDo6Y2xlYXIpOgorICAgICAgICAo
SlNDOjpHbG9iYWw6OmlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKToKKyAgICAgICAgKEpTQzo6R2xv
YmFsOjppbnRlcm5hbFNldCk6CisgICAgICAgICogY29sbGVjdG9yL2hhbmRsZXMvSGFuZGxlLmg6
IEFkZGVkLgorICAgICAgICAgICAgUm9vdCAiSGFuZGxlIiB0eXBlIHVzZWQgZm9yIGltbXV0YWJs
ZSBoYW5kbGVzIGFuZCB0byBwcm92aWRlIHRoZSBiYXNpYworICAgICAgICAgICAgQVBJcyBuZWVk
ZWQgZm9yIHBvaW50ZXItbGlrZSBiZWhhdmlvdXIuCisgICAgICAgIChKU0M6OkhhbmRsZUJhc2U6
Om9wZXJhdG9yISk6CisgICAgICAgIChKU0M6OkhhbmRsZUJhc2U6Om9wZXJhdG9yIFVuc3BlY2lm
aWVkQm9vbFR5cGUqKToKKyAgICAgICAgKEpTQzo6SGFuZGxlQmFzZTo6aXNFbXB0eSk6CisgICAg
ICAgIChKU0M6OkhhbmRsZUJhc2U6OkhhbmRsZUJhc2UpOgorICAgICAgICAoSlNDOjpIYW5kbGVC
YXNlOjpzbG90KToKKyAgICAgICAgKEpTQzo6SGFuZGxlQmFzZTo6aW52YWxpZGF0ZSk6CisgICAg
ICAgIChKU0M6OkhhbmRsZUJhc2U6OnNldFNsb3QpOgorICAgICAgICAoSlNDOjpIYW5kbGVUeXBl
czo6Z2V0RnJvbVNsb3QpOgorICAgICAgICAoSlNDOjpIYW5kbGVUeXBlczo6dG9KU1ZhbHVlKToK
KyAgICAgICAgKEpTQzo6SGFuZGxlVHlwZXM6OnZhbGlkYXRlVXBjYXN0KToKKyAgICAgICAgKEpT
Qzo6SGFuZGxlQ29udmVydGVyOjpvcGVyYXRvci0+KToKKyAgICAgICAgKEpTQzo6SGFuZGxlQ29u
dmVydGVyOjpvcGVyYXRvciopOgorICAgICAgICAoSlNDOjpIYW5kbGU6OkhhbmRsZSk6CisgICAg
ICAgIChKU0M6OkhhbmRsZTo6Z2V0KToKKyAgICAgICAgKEpTQzo6SGFuZGxlOjp3cmFwU2xvdCk6
CisgICAgICAgIChKU0M6Om9wZXJhdG9yPT0pOgorICAgICAgICAoSlNDOjpvcGVyYXRvciE9KToK
KyAgICAgICAgKiBjb2xsZWN0b3IvaGFuZGxlcy9IYW5kbGVIZWFwLmNwcDogQWRkZWQuCisgICAg
ICAgICAgICBOZXcgaGVhcCBmb3IgZ2xvYmFsIGhhbmRsZXMuCisgICAgICAgIChKU0M6OkhhbmRs
ZUhlYXA6OkhhbmRsZUhlYXApOgorICAgICAgICAoSlNDOjpIYW5kbGVIZWFwOjpncm93KToKKyAg
ICAgICAgKEpTQzo6SGFuZGxlSGVhcDo6bWFya1N0cm9uZ0hhbmRsZXMpOgorICAgICAgICAoSlND
OjpIYW5kbGVIZWFwOjp1cGRhdGVBZnRlck1hcmspOgorICAgICAgICAoSlNDOjpIYW5kbGVIZWFw
OjpjbGVhcldlYWtQb2ludGVycyk6CisgICAgICAgIChKU0M6OkhhbmRsZUhlYXA6OndyaXRlQmFy
cmllcik6CisgICAgICAgICogY29sbGVjdG9yL2hhbmRsZXMvSGFuZGxlSGVhcC5oOiBBZGRlZC4K
KyAgICAgICAgKEpTQzo6SGFuZGxlSGVhcDo6aGVhcEZvcik6CisgICAgICAgIChKU0M6OkhhbmRs
ZUhlYXA6OnRvSGFuZGxlKToKKyAgICAgICAgKEpTQzo6SGFuZGxlSGVhcDo6dG9Ob2RlKToKKyAg
ICAgICAgKEpTQzo6SGFuZGxlSGVhcDo6YWxsb2NhdGUpOgorICAgICAgICAoSlNDOjpIYW5kbGVI
ZWFwOjpkZWFsbG9jYXRlKToKKyAgICAgICAgKEpTQzo6SGFuZGxlSGVhcDo6bWFrZVdlYWspOgor
ICAgICAgICAgICAgQ29udmVydCBhIGhhcmQgaGFuZGxlIGludG8gd2VhayBoYW5kbGUgdGhhdCBk
b2VzIG5vdAorICAgICAgICAgICAgcHJvdGVjdCB0aGUgb2JqZWN0IGl0IHBvaW50cyB0by4KKyAg
ICAgICAgKEpTQzo6SGFuZGxlSGVhcDo6bWFrZVNlbGZEZXN0cm95aW5nKToKKyAgICAgICAgICAg
IENvbnZlcnRzIGEgaGFuZGxlIHRvIGEgd2VhayBoYW5kbGUgdGhhdCB3aWxsIGJlIHJldHVybmVk
CisgICAgICAgICAgICB0byB0aGUgZnJlZSBsaXN0IHdoZW4gdGhlIHJlZmVyZW5jZWQgb2JqZWN0
IGRpZXMuCisgICAgICAgIChKU0M6OkhhbmRsZUhlYXA6Ok5vZGU6Ok5vZGUpOgorICAgICAgICAo
SlNDOjpIYW5kbGVIZWFwOjpOb2RlOjpzbG90KToKKyAgICAgICAgKEpTQzo6SGFuZGxlSGVhcDo6
Tm9kZTo6aGFuZGxlSGVhcCk6CisgICAgICAgIChKU0M6OkhhbmRsZUhlYXA6Ok5vZGU6OnNldEZp
bmFsaXplcik6CisgICAgICAgIChKU0M6OkhhbmRsZUhlYXA6Ok5vZGU6Om1ha2VXZWFrKToKKyAg
ICAgICAgKEpTQzo6SGFuZGxlSGVhcDo6Tm9kZTo6aXNXZWFrKToKKyAgICAgICAgKEpTQzo6SGFu
ZGxlSGVhcDo6Tm9kZTo6bWFrZVNlbGZEZXN0cm95aW5nKToKKyAgICAgICAgKEpTQzo6SGFuZGxl
SGVhcDo6Tm9kZTo6aXNTZWxmRGVzdHJveWluZyk6CisgICAgICAgIChKU0M6OkhhbmRsZUhlYXA6
Ok5vZGU6OmZpbmFsaXplcik6CisgICAgICAgIChKU0M6OkhhbmRsZUhlYXA6Ok5vZGU6OnNldFBy
ZXYpOgorICAgICAgICAoSlNDOjpIYW5kbGVIZWFwOjpOb2RlOjpwcmV2KToKKyAgICAgICAgKEpT
Qzo6SGFuZGxlSGVhcDo6Tm9kZTo6c2V0TmV4dCk6CisgICAgICAgIChKU0M6OkhhbmRsZUhlYXA6
Ok5vZGU6Om5leHQpOgorICAgICAgICAqIGNvbGxlY3Rvci9oYW5kbGVzL1NlbnRpbmVsTGlua2Vk
TGlzdC5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6OjpTZW50aW5lbExpbmtlZExpc3QpOgorICAg
ICAgICAoSlNDOjo6OmJlZ2luKToKKyAgICAgICAgKEpTQzo6OjplbmQpOgorICAgICAgICAoSlND
Ojo6OnB1c2gpOgorICAgICAgICAoSlNDOjo6OnJlbW92ZSk6CisgICAgICAgICogY29sbGVjdG9y
L2hhbmRsZXMvU2luZ2x5TGlua2VkTGlzdC5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6OjpTaW5n
bHlMaW5rZWRMaXN0KToKKyAgICAgICAgKEpTQzo6Ojppc0VtcHR5KToKKyAgICAgICAgKEpTQzo6
OjpwdXNoKToKKyAgICAgICAgKEpTQzo6Ojpwb3ApOgorICAgICAgICAqIGludGVycHJldGVyL0lu
dGVycHJldGVyLmNwcDoKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OkludGVycHJldGVyKToK
KyAgICAgICAgKiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5oOgorICAgICAgICAqIGludGVycHJl
dGVyL1JlZ2lzdGVyRmlsZS5jcHA6CisgICAgICAgIChKU0M6OlJlZ2lzdGVyRmlsZTo6Z2xvYmFs
T2JqZWN0Q29sbGVjdGVkKToKKyAgICAgICAgKiBpbnRlcnByZXRlci9SZWdpc3RlckZpbGUuaDoK
KyAgICAgICAgKEpTQzo6UmVnaXN0ZXJGaWxlOjpSZWdpc3RlckZpbGUpOgorICAgICAgICAqIHJ1
bnRpbWUvR0NIYW5kbGUuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIHJ1bnRpbWUvR0NIYW5kbGUu
aDogUmVtb3ZlZC4KKyAgICAgICAgKiBydW50aW1lL0hlYXAuY3BwOgorICAgICAgICAoSlNDOjpI
ZWFwOjpIZWFwKToKKyAgICAgICAgKEpTQzo6SGVhcDo6ZGVzdHJveSk6CisgICAgICAgIChKU0M6
OkhlYXA6Om1hcmtSb290cyk6CisgICAgICAgICogcnVudGltZS9IZWFwLmg6CisgICAgICAgIChK
U0M6OkhlYXA6OmFsbG9jYXRlR2xvYmFsSGFuZGxlKToKKyAgICAgICAgKEpTQzo6SGVhcDo6cmVw
b3J0RXh0cmFNZW1vcnlDb3N0KToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsRGF0YS5jcHA6
CisgICAgICAgIChKU0M6OkpTR2xvYmFsRGF0YTo6SlNHbG9iYWxEYXRhKToKKyAgICAgICAgKiBy
dW50aW1lL0pTR2xvYmFsRGF0YS5oOgorICAgICAgICAoSlNDOjpKU0dsb2JhbERhdGE6OmFsbG9j
YXRlR2xvYmFsSGFuZGxlKToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDoK
KyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6On5KU0dsb2JhbE9iamVjdCk6CisgICAgICAg
ICogcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6SlNQ
cm9wZXJ0eU5hbWVJdGVyYXRvcjo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6SlNQcm9wZXJ0eU5h
bWVJdGVyYXRvcjo6fkpTUHJvcGVydHlOYW1lSXRlcmF0b3IpOgorICAgICAgICAqIHJ1bnRpbWUv
SlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oOgorICAgICAgICAoSlNDOjpKU1Byb3BlcnR5TmFtZUl0
ZXJhdG9yOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OnNldEVu
dW1lcmF0aW9uQ2FjaGUpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OmNsZWFyRW51bWVyYXRp
b25DYWNoZSk6CisgICAgICAgICogcnVudGltZS9Qcm90ZWN0Lmg6CisgICAgICAgICogcnVudGlt
ZS9TdHJ1Y3R1cmUuY3BwOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6On5TdHJ1Y3R1cmUpOgor
ICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlLmg6CisgICAgICAgICogcnVudGltZS9XZWFrR0NQ
dHIuaDoKKyAgICAgICAgKEpTQzo6V2Vha0dDUHRyQmFzZTo6Z2V0KToKKyAgICAgICAgKEpTQzo6
V2Vha0dDUHRyQmFzZTo6Y2xlYXIpOgorICAgICAgICAoSlNDOjpXZWFrR0NQdHJCYXNlOjpvcGVy
YXRvciEpOgorICAgICAgICAoSlNDOjpXZWFrR0NQdHJCYXNlOjpvcGVyYXRvciBVbnNwZWNpZmll
ZEJvb2xUeXBlKik6CisgICAgICAgIChKU0M6OldlYWtHQ1B0ckJhc2U6On5XZWFrR0NQdHJCYXNl
KToKKyAgICAgICAgKEpTQzo6V2Vha0dDUHRyQmFzZTo6V2Vha0dDUHRyQmFzZSk6CisgICAgICAg
IChKU0M6OldlYWtHQ1B0ckJhc2U6OmludGVybmFsU2V0KToKKyAgICAgICAgKEpTQzo6TGF6eVdl
YWtHQ1B0cjo6TGF6eVdlYWtHQ1B0cik6CisgICAgICAgIChKU0M6OkxhenlXZWFrR0NQdHI6OnNl
dCk6CisgICAgICAgIChKU0M6OldlYWtHQ1B0cjo6V2Vha0dDUHRyKToKKyAgICAgICAgKEpTQzo6
V2Vha0dDUHRyOjpvcGVyYXRvcj0pOgorICAgICAgICAqIHJ1bnRpbWUvV3JpdGVCYXJyaWVyLmg6
CisKIDIwMTEtMDItMTQgIFBhdmVsIFBvZGl2aWxvdiAgPHBvZGl2aWxvdkBjaHJvbWl1bS5vcmc+
CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgWXVyeSBTZW1pa2hhdHNreS4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5hbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9HTlVtYWtlZmlsZS5hbQppbmRleCBlNmNjZjJlNTZlYzczYzI2ZmJlN2I3NmEwZmMwNzM5YjQx
YjUzNzg0Li5hMmYwOTY3MWFlNWZkYjg4ZDM2OGQ0MmE4YzM0MDYxNmFjYzg1YjhlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUuYW0KKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmFtCkBAIC0xMDksNiArMTA5LDEzIEBAIGphdmFzY3Jp
cHRjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIv
TGFiZWxTY29wZS5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVz
Q29kZWdlbi5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvUmVnaXN0
ZXJJRC5oIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvY29sbGVjdG9yL2hhbmRsZXMvQmxvY2tT
dGFjay5oIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvY29sbGVjdG9yL2hhbmRsZXMvR2xvYmFs
LmggXAorCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9jb2xsZWN0b3IvaGFuZGxlcy9IYW5kbGUuaCBc
CisJU291cmNlL0phdmFTY3JpcHRDb3JlL2NvbGxlY3Rvci9oYW5kbGVzL0hhbmRsZUhlYXAuY3Bw
IFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvY29sbGVjdG9yL2hhbmRsZXMvSGFuZGxlSGVhcC5o
IFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvY29sbGVjdG9yL2hhbmRsZXMvU2VudGluZWxMaW5r
ZWRMaXN0LmggXAorCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9jb2xsZWN0b3IvaGFuZGxlcy9TaW5n
bHlMaW5rZWRMaXN0LmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9jb25maWcuaCBcCiAJU291
cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyQWN0aXZhdGlvbi5jcHAgXAogCVNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckFjdGl2YXRpb24uaCBcCkBAIC0y
NzAsOCArMjc3LDYgQEAgamF2YXNjcmlwdGNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuaCBcCiAJU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvR0NBY3Rpdml0eUNhbGxiYWNrLmNwcCBcCiAJU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvR0NBY3Rpdml0eUNhbGxiYWNrLmggXAotCVNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0dDSGFuZGxlLmNwcCBcCi0JU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvR0NIYW5kbGUuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2V0dGVyU2V0
dGVyLmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2V0dGVyU2V0dGVyLmgg
XAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dsb2JhbEV2YWxGdW5jdGlvbi5jcHAg
XApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmV4cCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5leHAKaW5kZXggNTY0ZDdkYjMz
MjRmMWM1YTZhMDg5YzgzMzhkMjA5YTQ5ZTczZTZlMi4uNDY0NWFmMzI1YWE2ZTM1YTQ3Nzc1ODBk
MTJhODRjYWM5MzgyMDIxMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLmV4cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
ZXhwCkBAIC05Nyw2ICs5Nyw4IEBAIF9XVEZSZXBvcnRCYWNrdHJhY2UKIF9XVEZSZXBvcnRFcnJv
cgogX1dURlJlcG9ydEZhdGFsRXJyb3IKIF9fWk4xNE9wYXF1ZUpTU3RyaW5nNmNyZWF0ZUVSS04z
SlNDN1VTdHJpbmdFCitfX1pOM0pTQzEwSGFuZGxlSGVhcDEyd3JpdGVCYXJyaWVyRVBOU183SlNW
YWx1ZUVSS1MxXworX19aTjNKU0MxMEhhbmRsZUhlYXA0Z3Jvd0V2CiBfX1pOM0pTQzEwSWRlbnRp
ZmllcjExYWRkU2xvd0Nhc2VFUE5TXzEySlNHbG9iYWxEYXRhRVBOM1dURjEwU3RyaW5nSW1wbEUK
IF9fWk4zSlNDMTBJZGVudGlmaWVyMTFhZGRTbG93Q2FzZUVQTlNfOUV4ZWNTdGF0ZUVQTjNXVEYx
MFN0cmluZ0ltcGxFCiBfX1pOM0pTQzEwSWRlbnRpZmllcjI3Y2hlY2tDdXJyZW50SWRlbnRpZmll
clRhYmxlRVBOU18xMkpTR2xvYmFsRGF0YUUKQEAgLTE0Myw3ICsxNDUsNiBAQCBfX1pOM0pTQzEy
U3RyaW5nT2JqZWN0MjRnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JFUE5TXzlFeGVjU3RhdGVFUktO
U18xMElkZW50aWZpZQogX19aTjNKU0MxMlN0cmluZ09iamVjdDNwdXRFUE5TXzlFeGVjU3RhdGVF
UktOU18xMElkZW50aWZpZXJFTlNfN0pTVmFsdWVFUk5TXzE1UHV0UHJvcGVydHlTbG90RQogX19a
TjNKU0MxMlN0cmluZ09iamVjdDRpbmZvRQogX19aTjNKU0MxMlN0cmluZ09iamVjdEMyRVBOU185
RXhlY1N0YXRlRU4zV1RGMTdOb25OdWxsUGFzc1JlZlB0cklOU185U3RydWN0dXJlRUVFUktOU183
VVN0cmluZ0UKLV9fWk4zSlNDMTJXZWFrR0NIYW5kbGU0cG9vbEV2CiBfX1pOM0pTQzEyanNOdW1i
ZXJDZWxsRVBOU185RXhlY1N0YXRlRWQKIF9fWk4zSlNDMTJub25JbmxpbmVOYU5FdgogX19aTjNK
U0MxM1NhbXBsaW5nRmxhZ3M0c3RvcEV2CkBAIC0xNzMsNyArMTc0LDYgQEAgX19aTjNKU0MxNklu
dGVybmFsRnVuY3Rpb25DMkVQTlNfMTJKU0dsb2JhbERhdGFFUE5TXzE0SlNHbG9iYWxPYmplY3RF
TjNXVEYxN05vbk4KIF9fWk4zSlNDMTZKU1ZhcmlhYmxlT2JqZWN0MTRkZWxldGVQcm9wZXJ0eUVQ
TlNfOUV4ZWNTdGF0ZUVSS05TXzEwSWRlbnRpZmllckUKIF9fWk4zSlNDMTZKU1ZhcmlhYmxlT2Jq
ZWN0MTRzeW1ib2xUYWJsZUdldEVSS05TXzEwSWRlbnRpZmllckVSTlNfMThQcm9wZXJ0eURlc2Ny
aXB0b3JFCiBfX1pOM0pTQzE2SlNWYXJpYWJsZU9iamVjdDE5Z2V0T3duUHJvcGVydHlOYW1lc0VQ
TlNfOUV4ZWNTdGF0ZUVSTlNfMTdQcm9wZXJ0eU5hbWVBcnJheUVOU18xNUVudW1lcmF0aW9uTW9k
ZUUKLV9fWk4zSlNDMTZXZWFrR0NIYW5kbGVQb29sNGZyZWVFUE5TXzEyV2Vha0dDSGFuZGxlRQog
X19aTjNKU0MxNmNyZWF0ZVJhbmdlRXJyb3JFUE5TXzlFeGVjU3RhdGVFUktOU183VVN0cmluZ0UK
IF9fWk4zSlNDMTZ0aHJvd1N5bnRheEVycm9yRVBOU185RXhlY1N0YXRlRQogX19aTjNKU0MxN0J5
dGVjb2RlR2VuZXJhdG9yMjFzZXREdW1wc0dlbmVyYXRlZENvZGVFYgpAQCAtMjA2LDcgKzIwNiw2
IEBAIF9fWk4zSlNDMjRjcmVhdGVTdGFja092ZXJmbG93RXJyb3JFUE5TXzlFeGVjU3RhdGVFCiBf
X1pOM0pTQzI1ZXZhbHVhdGVJbkdsb2JhbENhbGxGcmFtZUVSS05TXzdVU3RyaW5nRVJOU183SlNW
YWx1ZUVQTlNfMTRKU0dsb2JhbE9iamVjdEUKIF9fWk4zSlNDMzVjcmVhdGVJbnRlcnJ1cHRlZEV4
ZWN1dGlvbkV4Y2VwdGlvbkVQTlNfMTJKU0dsb2JhbERhdGFFCiBfX1pOM0pTQzNOYU5FCi1fX1pO
M0pTQzRIZWFwMTVhZGRXZWFrR0NIYW5kbGVFUE5TXzZKU0NlbGxFCiBfX1pOM0pTQzRIZWFwMTZv
YmplY3RUeXBlQ291bnRzRXYKIF9fWk4zSlNDNEhlYXAxN2NvbGxlY3RBbGxHYXJiYWdlRXYKIF9f
Wk4zSlNDNEhlYXAxN2dsb2JhbE9iamVjdENvdW50RXYKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5neXBpIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLmd5cGkKaW5kZXggNzU0ZmQyYjZkZWY1MDg4ZGQ1MGYyYzhjNmJmNmY2YzVj
YWZmMjJlYi4uMmIwOWIwOGIwMWQxOGM2YTg2N2FiYjBkMTUyMzA3M2FiZmM0ZmI2MiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmd5cGkKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmd5cGkKQEAgLTY4LDYgKzY4LDEzIEBA
CiAgICAgICAgICAgICAnYnl0ZWNvbXBpbGVyL0xhYmVsLmgnLAogICAgICAgICAgICAgJ2J5dGVj
b21waWxlci9MYWJlbFNjb3BlLmgnLAogICAgICAgICAgICAgJ2J5dGVjb21waWxlci9SZWdpc3Rl
cklELmgnLAorICAgICAgICAgICAgJ2NvbGxlY3Rvci9oYW5kbGVzL0Jsb2NrU3RhY2suaCcsCisg
ICAgICAgICAgICAnY29sbGVjdG9yL2hhbmRsZXMvR2xvYmFsLmgnLAorICAgICAgICAgICAgJ2Nv
bGxlY3Rvci9oYW5kbGVzL0hhbmRsZS5oJywKKyAgICAgICAgICAgICdjb2xsZWN0b3IvaGFuZGxl
cy9IYW5kbGVIZWFwLmNwcCcsCisgICAgICAgICAgICAnY29sbGVjdG9yL2hhbmRsZXMvSGFuZGxl
SGVhcC5oJywKKyAgICAgICAgICAgICdjb2xsZWN0b3IvaGFuZGxlcy9TZW50aW5lbExpbmtlZExp
c3QuaCcsCisgICAgICAgICAgICAnY29sbGVjdG9yL2hhbmRsZXMvU2luZ2x5TGlua2VkTGlzdC5o
JywKICAgICAgICAgICAgICdjb25maWcuaCcsCiAgICAgICAgICAgICAnZGVidWdnZXIvRGVidWdn
ZXIuY3BwJywKICAgICAgICAgICAgICdkZWJ1Z2dlci9EZWJ1Z2dlci5oJywKQEAgLTIxMyw4ICsy
MjAsNiBAQAogICAgICAgICAgICAgJ3J1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuaCcsCiAgICAg
ICAgICAgICAncnVudGltZS9HQ0FjdGl2aXR5Q2FsbGJhY2suY3BwJywKICAgICAgICAgICAgICdy
dW50aW1lL0dDQWN0aXZpdHlDYWxsYmFjay5oJywKLSAgICAgICAgICAgICdydW50aW1lL0dDSGFu
ZGxlLmNwcCcsCi0gICAgICAgICAgICAncnVudGltZS9HQ0hhbmRsZS5oJywKICAgICAgICAgICAg
ICdydW50aW1lL0dldHRlclNldHRlci5jcHAnLAogICAgICAgICAgICAgJ3J1bnRpbWUvR2V0dGVy
U2V0dGVyLmgnLAogICAgICAgICAgICAgJ3J1bnRpbWUvR2xvYmFsRXZhbEZ1bmN0aW9uLmNwcCcs
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUucHJpIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnByaQppbmRleCBjMWRlNTk5OTMw
ZTkyNWU1NDI3NWIwNDlmZjU4N2Q3NWUwZWQ0MDU3Li5kYWQ3ZGNlOWIwOTVhZWMzNDc3NzUzMDMy
YTEzNjQxNzY4ZTU0YjA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUucHJpCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5w
cmkKQEAgLTI3LDYgKzI3LDcgQEAgSkFWQVNDUklQVENPUkVfSU5DTFVERVBBVEggPSBcCiAgICAg
JCRQV0QvYXNzZW1ibGVyIFwKICAgICAkJFBXRC9ieXRlY29kZSBcCiAgICAgJCRQV0QvYnl0ZWNv
bXBpbGVyIFwKKyAgICAkJFBXRC9jb2xsZWN0b3IvaGFuZGxlcyBcCiAgICAgJCRQV0QvZGVidWdn
ZXIgXAogICAgICQkUFdEL2ludGVycHJldGVyIFwKICAgICAkJFBXRC9qaXQgXApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnBybyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5wcm8KaW5kZXggMWI1ZTI4YWNjNDhmYjRhNjhhYTNh
ZjM2NzhjYzEyNzA3ZDZjYjk0My4uMTYwMGYyOTRmY2E0Y2M0YjYxMjAwNzU3MzFjZTA1ZmQyYmVh
YmQ2NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnBy
bworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUucHJvCkBAIC05NCw2
ICs5NCw3IEBAIFNPVVJDRVMgKz0gXAogICAgIGRlYnVnZ2VyL0RlYnVnZ2VyQWN0aXZhdGlvbi5j
cHAgXAogICAgIGRlYnVnZ2VyL0RlYnVnZ2VyQ2FsbEZyYW1lLmNwcCBcCiAgICAgZGVidWdnZXIv
RGVidWdnZXIuY3BwIFwKKyAgICBjb2xsZWN0b3IvaGFuZGxlcy9IYW5kbGVIZWFwLmNwcCBcCiAg
ICAgaW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmNwcCBcCiAgICAgaW50ZXJwcmV0ZXIvSW50ZXJwcmV0
ZXIuY3BwIFwKICAgICBpbnRlcnByZXRlci9SZWdpc3RlckZpbGUuY3BwIFwKQEAgLTE0Nyw3ICsx
NDgsNiBAQCBTT1VSQ0VTICs9IFwKICAgICBydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuY3Bw
IFwKICAgICBydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmNwcCBcCiAgICAgcnVudGltZS9HQ0Fj
dGl2aXR5Q2FsbGJhY2suY3BwIFwKLSAgICBydW50aW1lL0dDSGFuZGxlLmNwcCBcCiAgICAgcnVu
dGltZS9HZXR0ZXJTZXR0ZXIuY3BwIFwKICAgICBydW50aW1lL0dsb2JhbEV2YWxGdW5jdGlvbi5j
cHAgXAogICAgIHJ1bnRpbWUvSWRlbnRpZmllci5jcHAgXApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS5kZWYgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9q
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmRlZgppbmRleCAwMTBkYjM5ZDQ4YWRhY2Fh
MjBiZThlY2ZkMDVkODNlZGJkMzJlYzA0Li4zNGQ5NGZkYWUzMTg2YjU0YjdiNmNkMDgwMTRjMDQ0
MmUxZDQyNDQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmRlZgorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLmRlZgpAQCAtNTIsNyArNTIsNiBAQCBFWFBPUlRTCiAgICAgP2FkZFByb3BlcnR5
VHJhbnNpdGlvblRvRXhpc3RpbmdTdHJ1Y3R1cmVAU3RydWN0dXJlQEpTQ0BAU0E/QVY/JFBhc3NS
ZWZQdHJAVlN0cnVjdHVyZUBKU0NAQEBXVEZAQFBBVjEyQEFCVklkZW50aWZpZXJAMkBJUEFWSlND
ZWxsQDJAQUFJQFoKICAgICA/YWRkUHJvcGVydHlXaXRob3V0VHJhbnNpdGlvbkBTdHJ1Y3R1cmVA
SlNDQEBRQUVJQUJWSWRlbnRpZmllckAyQElQQVZKU0NlbGxAMkBAWgogICAgID9hZGRTbG93Q2Fz
ZUBJZGVudGlmaWVyQEpTQ0BAQ0E/QVY/JFBhc3NSZWZQdHJAVlN0cmluZ0ltcGxAV1RGQEBAV1RG
QEBQQVZFeGVjU3RhdGVAMkBQQVZTdHJpbmdJbXBsQDRAQFoKLSAgICA/YWRkV2Vha0dDSGFuZGxl
QEhlYXBASlNDQEBRQUVQQVZXZWFrR0NIYW5kbGVAMkBQQVZKU0NlbGxAMkBAWgogICAgID9hbGxv
Y2F0ZUBIZWFwQEpTQ0BAUUFFUEFYSUBaCiAgICAgP2FsbG9jYXRlUHJvcGVydHlTdG9yYWdlQEpT
T2JqZWN0QEpTQ0BAUUFFWElJQFoKICAgICA/YWxsb2NhdGVTdGFja0BNYXJrU3RhY2tASlNDQEBD
QVBBWElAWgpAQCAtMTY0LDcgKzE2Myw2IEBAIEVYUE9SVFMKICAgICA/ZmFzdFplcm9lZE1hbGxv
Y0BXVEZAQFlBUEFYSUBaCiAgICAgP2ZpbGxHZXR0ZXJQcm9wZXJ0eVNsb3RASlNPYmplY3RASlND
QEBRQUVYQUFWUHJvcGVydHlTbG90QDJAUEFWPyRXcml0ZUJhcnJpZXJCYXNlQFc0VW5rbm93bkBK
U0NAQEAyQEBaCiAgICAgP2ZvY3VzQFByb2ZpbGVASlNDQEBRQUVYUEJWUHJvZmlsZU5vZGVAMkBA
WgotICAgID9mcmVlQFdlYWtHQ0hhbmRsZVBvb2xASlNDQEBRQUVYUEFWV2Vha0dDSGFuZGxlQDJA
QFoKICAgICA/ZnJvbUBJZGVudGlmaWVyQEpTQ0BAU0E/QVYxMkBQQVZFeGVjU3RhdGVAMkBIQFoK
ICAgICA/ZnJvbUBJZGVudGlmaWVyQEpTQ0BAU0E/QVYxMkBQQVZFeGVjU3RhdGVAMkBJQFoKICAg
ICA/ZnVuY3Rpb25HZXR0ZXJAUHJvcGVydHlTbG90QEpTQ0BAQUJFP0FWSlNWYWx1ZUAyQFBBVkV4
ZWNTdGF0ZUAyQEBaCkBAIC0yMDEsNiArMTk5LDcgQEAgRVhQT1JUUwogICAgID9nbG9iYWxFeGVj
QEpTR2xvYmFsT2JqZWN0QEpTQ0BAVUFFUEFWRXhlY1N0YXRlQDJAWFoKICAgICA/Z2xvYmFsT2Jq
ZWN0QEpTT2JqZWN0V2l0aEdsb2JhbE9iamVjdEBKU0NAQFFCRVBBVkpTR2xvYmFsT2JqZWN0QDJA
WFoKICAgICA/Z2xvYmFsT2JqZWN0Q291bnRASGVhcEBKU0NAQFFBRUlYWgorICAgID9ncm93QEhh
bmRsZUhlYXBASlNDQEBBQUVYWFoKICAgICA/aGFzSW5zdGFuY2VASlNPYmplY3RASlNDQEBVQUVf
TlBBVkV4ZWNTdGF0ZUAyQFZKU1ZhbHVlQDJAMUBaCiAgICAgP2hhc1Byb3BlcnR5QEpTT2JqZWN0
QEpTQ0BAUUJFX05QQVZFeGVjU3RhdGVAMkBBQlZJZGVudGlmaWVyQDJAQFoKICAgICA/aGFzUHJv
cGVydHlASlNPYmplY3RASlNDQEBRQkVfTlBBVkV4ZWNTdGF0ZUAyQElAWgpAQCAtMjQ5LDcgKzI0
OCw2IEBAIEVYUE9SVFMKICAgICA/b2JqZWN0Q291bnRASGVhcEBKU0NAQFFCRUlYWgogICAgID9v
YmplY3RQcm90b0Z1bmNUb1N0cmluZ0BKU0NAQFlJX0pQQVZFeGVjU3RhdGVAMUBAWgogICAgID9w
YXJzZURhdGVGcm9tTnVsbFRlcm1pbmF0ZWRDaGFyYWN0ZXJzQFdURkBAWUFOUEJEQFoKLSAgICA/
cG9vbEBXZWFrR0NIYW5kbGVASlNDQEBRQUVQQVZXZWFrR0NIYW5kbGVQb29sQDJAWFoKICAgICA/
cHJvZmlsZXJAUHJvZmlsZXJASlNDQEBTQVBBVjEyQFhaCiAgICAgP3Byb3RlY3RASGVhcEBKU0NA
QFFBRVhWSlNWYWx1ZUAyQEBaCiAgICAgP3Byb3RlY3RlZEdsb2JhbE9iamVjdENvdW50QEhlYXBA
SlNDQEBRQUVJWFoKQEAgLTM2MCw2ICszNTgsNyBAQCBFWFBPUlRTCiAgICAgP3dhaXRAVGhyZWFk
Q29uZGl0aW9uQFdURkBAUUFFWEFBVk11dGV4QDJAQFoKICAgICA/d2FpdEZvclRocmVhZENvbXBs
ZXRpb25AV1RGQEBZQUhJUEFQQVhAWgogICAgID93cml0YWJsZUBQcm9wZXJ0eURlc2NyaXB0b3JA
SlNDQEBRQkVfTlhaCisgICAgP3dyaXRlQmFycmllckBIYW5kbGVIZWFwQEpTQ0BAUUFFWFBBVkpT
VmFsdWVAMkBBQlYzMkBAWgogICAgID95aWVsZEBXVEZAQFlBWFhaCiAgICAgV1RGTG9nCiAgICAg
V1RGTG9nVmVyYm9zZQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ogYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnZjcHJvagppbmRleCAyNjA3NzllZmE5MjNkM2M4NTVhNTlmZjUxNDAzMDQx
YzBjNjU1YTMwLi5kNDk4MWJmMmEyZjVkZTA4NzZlYTU3ZDZjNjNjZDI4ZDYxZTcxMTU4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZj
cHJvagpAQCAtMTk3NCw2ICsxOTc0LDQyIEBACiAJCQkJPgogCQkJPC9GaWxlPgogCQk8L0ZpbHRl
cj4KKwkJPEZpbHRlcgorCQkJTmFtZT0iY29sbGVjdG9yIgorCQkJPgorCQkJPEZpbHRlcgorCQkJ
CU5hbWU9ImhhbmRsZXMiCisJCQkJPgorCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5c
Li5cY29sbGVjdG9yXGhhbmRsZXNcQmxvY2tTdGFjay5oIgorCQkJCQk+CisJCQkJPC9GaWxlPgor
CQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cY29sbGVjdG9yXGhhbmRsZXNcR2xv
YmFsLmgiCisJCQkJCT4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRo
PSIuLlwuLlxjb2xsZWN0b3JcaGFuZGxlc1xIYW5kbGUuaCIKKwkJCQkJPgorCQkJCTwvRmlsZT4K
KwkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXGNvbGxlY3RvclxoYW5kbGVzXEhh
bmRsZUhlYXAuY3BwIgorCQkJCQk+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCisJCQkJCVJlbGF0
aXZlUGF0aD0iLi5cLi5cY29sbGVjdG9yXGhhbmRsZXNcSGFuZGxlSGVhcC5oIgorCQkJCQk+CisJ
CQkJPC9GaWxlPgorCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cY29sbGVjdG9y
XGhhbmRsZXNcU2VudGluZWxMaW5rZWRMaXN0LmgiCisJCQkJCT4KKwkJCQk8L0ZpbGU+CisJCQkJ
PEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxjb2xsZWN0b3JcaGFuZGxlc1xTaW5nbHlM
aW5rZWRMaXN0LmgiCisJCQkJCT4KKwkJCQk8L0ZpbGU+CisJCQk8L0ZpbHRlcj4KKwkJPC9GaWx0
ZXI+CiAJCTxGaWxlCiAJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXGNvbmZpZy5oIgogCQkJPgpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZUNvbW1vbi52c3Byb3BzIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZUNvbW1vbi52c3Byb3BzCmluZGV4IDRhN2Y0ZDNmNzU2NjMxZjAwY2YzMzZjNzYxYzg3MTA4ZGJj
Yjc4ZjUuLmNiNzM2MmQ3ZTc3MzA0MmJjNDgyZmZhNjAxZWMyMDM5M2ZkOTc3MDMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmVDb21tb24udnNwcm9wcworKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
Q29tbW9uLnZzcHJvcHMKQEAgLTYsNyArNiw3IEBACiAJPgogCTxUb29sCiAJCU5hbWU9IlZDQ0xD
b21waWxlclRvb2wiCi0JCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiZxdW90OyQoQ29u
ZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmpcSmF2YVNjcmlwdENvcmVcRGVyaXZlZFNvdXJjZXNcJnF1
b3Q7Oy4uLy4uLzsuLi8uLi9BUEkvOy4uLy4uL3BhcnNlci87Li4vLi4vYnl0ZWNvbXBpbGVyLzsu
Li8uLi9qaXQvOy4uLy4uL3J1bnRpbWUvOy4uLy4uL2J5dGVjb2RlLzsuLi8uLi9pbnRlcnByZXRl
ci87Li4vLi4vd3RmLzsuLi8uLi9wcm9maWxlcjsuLi8uLi9hc3NlbWJsZXIvOy4uLy4uL2RlYnVn
Z2VyLzsmcXVvdDskKFdlYktpdExpYnJhcmllc0RpcilcaW5jbHVkZSZxdW90OzsmcXVvdDskKFdl
YktpdExpYnJhcmllc0RpcilcaW5jbHVkZVxwcml2YXRlJnF1b3Q7OyZxdW90OyQoQ29uZmlndXJh
dGlvbkJ1aWxkRGlyKVxpbmNsdWRlJnF1b3Q7OyZxdW90OyQoQ29uZmlndXJhdGlvbkJ1aWxkRGly
KVxpbmNsdWRlXEphdmFTY3JpcHRDb3JlJnF1b3Q7OyZxdW90OyQoQ29uZmlndXJhdGlvbkJ1aWxk
RGlyKVxpbmNsdWRlXHByaXZhdGUmcXVvdDs7JnF1b3Q7JChXZWJLaXRMaWJyYXJpZXNEaXIpXGlu
Y2x1ZGVccHRocmVhZHMmcXVvdDsiCisJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiZx
dW90OyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmpcSmF2YVNjcmlwdENvcmVcRGVyaXZlZFNv
dXJjZXNcJnF1b3Q7Oy4uLy4uLzsuLi8uLi9BUEkvOy4uLy4uL3BhcnNlci87Li4vLi4vYnl0ZWNv
bXBpbGVyLzsuLi8uLi9qaXQvOy4uLy4uL3J1bnRpbWUvOy4uLy4uL2J5dGVjb2RlLzsuLi8uLi9p
bnRlcnByZXRlci87Li4vLi4vd3RmLzsuLi8uLi9wcm9maWxlcjsuLi8uLi9hc3NlbWJsZXIvOy4u
Ly4uL2RlYnVnZ2VyLzsuLi8uLi9jb2xsZWN0b3IvaGFuZGxlcy87JnF1b3Q7JChXZWJLaXRMaWJy
YXJpZXNEaXIpXGluY2x1ZGUmcXVvdDs7JnF1b3Q7JChXZWJLaXRMaWJyYXJpZXNEaXIpXGluY2x1
ZGVccHJpdmF0ZSZxdW90OzsmcXVvdDskKENvbmZpZ3VyYXRpb25CdWlsZERpcilcaW5jbHVkZSZx
dW90OzsmcXVvdDskKENvbmZpZ3VyYXRpb25CdWlsZERpcilcaW5jbHVkZVxKYXZhU2NyaXB0Q29y
ZSZxdW90OzsmcXVvdDskKENvbmZpZ3VyYXRpb25CdWlsZERpcilcaW5jbHVkZVxwcml2YXRlJnF1
b3Q7OyZxdW90OyQoV2ViS2l0TGlicmFyaWVzRGlyKVxpbmNsdWRlXHB0aHJlYWRzJnF1b3Q7Igog
CQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX19TVERfQyIKIAkJRm9yY2VkSW5jbHVkZUZpbGVz
PSJJQ1VWZXJzaW9uLmgiCiAJLz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmVHZW5lcmF0
ZWQubWFrZSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmVHZW5lcmF0ZWQubWFrZQppbmRleCAzMTRhNzk0MWU3
M2RmZDU3NDM1YzU4MmVjZWY3YWU1MGFmMDMxZTBlLi5kYjJhMTc1YTAwMDkwZjRkNWUwZWU4YTIw
ZjhkYjMwYTBjNzJiNTgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlR2VuZXJhdGVkLm1h
a2UKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZUdlbmVyYXRlZC5tYWtlCkBAIC0zNiw2ICszNiw3IEBA
IGFsbDoKICAgICB4Y29weSAveSAvZCAiLi5cLi5caW50ZXJwcmV0ZXJcKi5oIiAiJUNvbmZpZ3Vy
YXRpb25CdWlsZERpciVcaW5jbHVkZVxwcml2YXRlXEphdmFTY3JpcHRDb3JlIgogICAgIHhjb3B5
IC95IC9kICIuLlwuLlxhc3NlbWJsZXJcKi5oIiAiJUNvbmZpZ3VyYXRpb25CdWlsZERpciVcaW5j
bHVkZVxwcml2YXRlXEphdmFTY3JpcHRDb3JlIgogICAgIHhjb3B5IC95IC9kICIuLlwuLlxqaXRc
Ki5oIiAiJUNvbmZpZ3VyYXRpb25CdWlsZERpciVcaW5jbHVkZVxwcml2YXRlXEphdmFTY3JpcHRD
b3JlIgorICAgIHhjb3B5IC95IC9kICIuLlwuLlxjb2xsZWN0b3JcaGFuZGxlc1wqLmgiICIlQ29u
ZmlndXJhdGlvbkJ1aWxkRGlyJVxpbmNsdWRlXHByaXZhdGVcSmF2YVNjcmlwdENvcmUiCiAgICAg
eGNvcHkgL3kgL2QgIi4uXC4uXGRlYnVnZ2VyXCouaCIgIiVDb25maWd1cmF0aW9uQnVpbGREaXIl
XGluY2x1ZGVccHJpdmF0ZVxKYXZhU2NyaXB0Q29yZSIKICAgICB4Y29weSAveSAvZCAiLi5cLi5c
cHJvZmlsZXJcKi5oIiAiJUNvbmZpZ3VyYXRpb25CdWlsZERpciVcaW5jbHVkZVxwcml2YXRlXEph
dmFTY3JpcHRDb3JlIgogICAgIHhjb3B5IC95IC9kICIuLlwuLlxjcmVhdGVfaGFzaF90YWJsZSIg
IiVDb25maWd1cmF0aW9uQnVpbGREaXIlXGluY2x1ZGVccHJpdmF0ZVxKYXZhU2NyaXB0Q29yZSIK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ov
anNjL2pzY0NvbW1vbi52c3Byb3BzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLnZjcHJvai9qc2MvanNjQ29tbW9uLnZzcHJvcHMKaW5kZXggM2UzMjljMzVhOGJiNDA0YTgx
ZWY2OWVjZDlkNjQwOTI1OGFlMTcwMC4uNjA0YTY2ZWVmYTdjOTkxYmQxN2NhZWVkNGIwMWNiNmZm
ZjczYzM3ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
LnZjcHJvai9qc2MvanNjQ29tbW9uLnZzcHJvcHMKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnZjcHJvai9qc2MvanNjQ29tbW9uLnZzcHJvcHMKQEAgLTYsNyArNiw3
IEBACiAJPgogCTxUb29sCiAJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCi0JCUFkZGl0aW9uYWxJ
bmNsdWRlRGlyZWN0b3JpZXM9IiZxdW90OyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxpbmNsdWRl
JnF1b3Q7OyZxdW90OyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxpbmNsdWRlXHByaXZhdGUmcXVv
dDs7JnF1b3Q7JChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9ialxKYXZhU2NyaXB0Q29yZVxEZXJp
dmVkU291cmNlc1wmcXVvdDs7Li4vLi4vOyZxdW90Oy4uLy4uL29zLXdpbjMyLyZxdW90OzsuLi8u
Li9hc3NlbWJsZXIvOy4uLy4uL0FQSS87Li4vLi4vcGFyc2VyLzsuLi8uLi9ydW50aW1lLzsuLi8u
Li9WTS87Li4vLi4vYnl0ZWNvZGUvOy4uLy4uL2ludGVycHJldGVyLzsuLi8uLi93dGYvOy4uLy4u
L2RlYnVnZ2VyLzsuLi8uLi9ieXRlY29tcGlsZXIvOy4uLy4uL3Byb2ZpbGVyOy4uLy4uL2ppdC87
JnF1b3Q7JChXZWJLaXRMaWJyYXJpZXNEaXIpXGluY2x1ZGVccHRocmVhZHMmcXVvdDs7JnF1b3Q7
JChXZWJLaXRMaWJyYXJpZXNEaXIpXGluY2x1ZGUmcXVvdDsiCisJCUFkZGl0aW9uYWxJbmNsdWRl
RGlyZWN0b3JpZXM9IiZxdW90OyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxpbmNsdWRlJnF1b3Q7
OyZxdW90OyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxpbmNsdWRlXHByaXZhdGUmcXVvdDs7JnF1
b3Q7JChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9ialxKYXZhU2NyaXB0Q29yZVxEZXJpdmVkU291
cmNlc1wmcXVvdDs7Li4vLi4vOyZxdW90Oy4uLy4uL29zLXdpbjMyLyZxdW90OzsuLi8uLi9hc3Nl
bWJsZXIvOy4uLy4uL0FQSS87Li4vLi4vcGFyc2VyLzsuLi8uLi9jb2xsZWN0b3IvaGFuZGxlcy87
Li4vLi4vcnVudGltZS87Li4vLi4vVk0vOy4uLy4uL2J5dGVjb2RlLzsuLi8uLi9pbnRlcnByZXRl
ci87Li4vLi4vd3RmLzsuLi8uLi9kZWJ1Z2dlci87Li4vLi4vYnl0ZWNvbXBpbGVyLzsuLi8uLi9w
cm9maWxlcjsuLi8uLi9qaXQvOyZxdW90OyQoV2ViS2l0TGlicmFyaWVzRGlyKVxpbmNsdWRlXHB0
aHJlYWRzJnF1b3Q7OyZxdW90OyQoV2ViS2l0TGlicmFyaWVzRGlyKVxpbmNsdWRlJnF1b3Q7Igog
CQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX19TVERfQyIKIAkJRm9yY2VkSW5jbHVkZUZpbGVz
PSJJQ1VWZXJzaW9uLmgiCiAJCUZvcmNlZFVzaW5nRmlsZXM9IiIKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKaW5kZXggNzRlM2I0MzhhN2IwMTM0MDE4MjQ0NmQzZTBmYTlkYzBmNDYyNTQ1ZS4u
MTMxNmYwMGQ2ZTFmMzU1NThiYmVkYTJhNzA3NjkxMzU2ZWZlNTRlMyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKQEAgLTE3Niw3ICsxNzYsNiBAQAogCQkxNEJENUEzMjBBM0U5MUY2MDBC
QUY1OUMgLyogSlNWYWx1ZVJlZi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAxNEJENUEyQjBBM0U5MUY2MDBCQUY1OUMgLyogSlNWYWx1ZVJlZi5jcHAg
Ki87IH07CiAJCTE0QkZDRTY5MTBDREIxRkMwMDM2NENDRSAvKiBXZWFrR0NNYXAuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0QkZDRTY4MTBDREIxRkMw
MDM2NENDRSAvKiBXZWFrR0NNYXAuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQkxNEM1MjQyQjBGNTM1NUU5MDBCQTNEMDQgLyogSklUU3R1YnMuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0QTY1ODFBMEY0
RTM2RjQwMDAxNTBGRCAvKiBKSVRTdHVicy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07Ci0JCTE0QzgyNEFCMTJGN0M3N0UwMDhGMzVFMCAvKiBNYXJrZWRC
bG9jay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAx
NEM4MjRBQTEyRjdDNzdFMDA4RjM1RTAgLyogTWFya2VkQmxvY2suY3BwICovOyB9OwogCQkxNEM4
MjRBRDEyRjdDNzg1MDA4RjM1RTAgLyogTWFya2VkQmxvY2suaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0QzgyNEFDMTJGN0M3ODUwMDhGMzVFMCAvKiBN
YXJrZWRCbG9jay5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTE0RTlEMTdCMTA3RUM0NjkwMDREREEyMSAvKiBKU0dsb2JhbE9iamVjdEZ1bmN0aW9u
cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzc1
NkZDNjBFMjAzMUIyMDBERTdEMTIgLyogSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuY3BwICovOyB9
OwogCQkxNEY4QkEzRTEwN0VDODg2MDA5ODkyREMgLyogRmFzdE1hbGxvYy5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NUUyMTdCOTA4RTdFRUNDMDAy
M0U1RjYgLyogRmFzdE1hbGxvYy5jcHAgKi87IH07CkBAIC0yODcsNyArMjg2LDYgQEAKIAkJOTMw
NTJDMzQwRkI3OTIxOTAwNDhGREMzIC8qIFBhcnNlckFyZW5hLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzMDUyQzMyMEZCNzkyMTkwMDQ4RkRDMyAv
KiBQYXJzZXJBcmVuYS5jcHAgKi87IH07CiAJCTkzMDUyQzM1MEZCNzkyMTkwMDQ4RkRDMyAvKiBQ
YXJzZXJBcmVuYS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gOTMwNTJDMzMwRkI3OTIxOTAwNDhGREMzIC8qIFBhcnNlckFyZW5hLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoKTsgfTsgfTsKIAkJOTMyRjVCRDMwODIyQTFDNzAwNzM2OTc1IC8q
IENvcmVGb3VuZGF0aW9uLmZyYW1ld29yayBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDY1NjBBNENGMDRCM0IzRTcwMDhBRTk1MiAvKiBDb3JlRm91bmRh
dGlvbi5mcmFtZXdvcmsgKi87IH07Ci0JCTkzMkY1QkQ1MDgyMkExQzcwMDczNjk3NSAvKiBGb3Vu
ZGF0aW9uLmZyYW1ld29yayBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDUxRjBFQjYxMDVDODZDNkIwMEU2REYxQiAvKiBGb3VuZGF0aW9uLmZyYW1ld29y
ayAqLzsgfTsKIAkJOTMyRjVCRDYwODIyQTFDNzAwNzM2OTc1IC8qIGxpYm9iamMuZHlsaWIgaW4g
RnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUYwRUMwNzA1
Qzg2QzlBMDBFNkRGMUIgLyogbGlib2JqYy5keWxpYiAqLzsgfTsKIAkJOTMyRjVCRDcwODIyQTFD
NzAwNzM2OTc1IC8qIGxpYmljdWNvcmUuZHlsaWIgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzIyQTAwMzA2QzM0MUQzMDA5MDY3QkIgLyogbGliaWN1
Y29yZS5keWxpYiAqLzsgfTsKIAkJOTMyRjVCREQwODIyQTFDNzAwNzM2OTc1IC8qIGpzYy5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NUUxMkQ4ODA2
QTQ5QjBGMDBFOURGODQgLyoganNjLmNwcCAqLzsgfTsKQEAgLTM0Niw2ICszNDQsNyBAQAogCQlB
NzI4MEEyODExNTU3RTMwMDBENTY5NTcgLyogSlNPYmplY3RSZWZQcml2YXRlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzlFREIwODExNTMxQ0Q2MDAx
OUU5MTIgLyogSlNPYmplY3RSZWZQcml2YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTczMEI2MTIxMjUwMDY4RjAwOUQyNUIxIC8qIFN0cmlj
dEV2YWxBY3RpdmF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBBNzMwQjYxMDEyNTAwNjhGMDA5RDI1QjEgLyogU3RyaWN0RXZhbEFjdGl2YXRpb24u
aCAqLzsgfTsKIAkJQTczMEI2MTMxMjUwMDY4RjAwOUQyNUIxIC8qIFN0cmljdEV2YWxBY3RpdmF0
aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3
MzBCNjExMTI1MDA2OEYwMDlEMjVCMSAvKiBTdHJpY3RFdmFsQWN0aXZhdGlvbi5jcHAgKi87IH07
CisJCUE3MzFCMjVBMTMwMDkzODgwMDQwQTdGQSAvKiBGb3VuZGF0aW9uLmZyYW1ld29yayBpbiBG
cmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRjBFQjYxMDVD
ODZDNkIwMEU2REYxQiAvKiBGb3VuZGF0aW9uLmZyYW1ld29yayAqLzsgfTsKIAkJQTczODY1NTQx
MTg2OTdCNDAwNTQwMjc5IC8qIFNwZWNpYWxpemVkVGh1bmtKSVQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3Mzg2NTUxMTE4Njk3QjQwMDU0MDI3OSAv
KiBTcGVjaWFsaXplZFRodW5rSklULmggKi87IH07CiAJCUE3Mzg2NTU1MTE4Njk3QjQwMDU0MDI3
OSAvKiBUaHVua0dlbmVyYXRvcnMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQTczODY1NTIxMTg2OTdCNDAwNTQwMjc5IC8qIFRodW5rR2VuZXJhdG9y
cy5jcHAgKi87IH07CiAJCUE3Mzg2NTU2MTE4Njk3QjQwMDU0MDI3OSAvKiBUaHVua0dlbmVyYXRv
cnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3Mzg2
NTUzMTE4Njk3QjQwMDU0MDI3OSAvKiBUaHVua0dlbmVyYXRvcnMuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMzY5LDYgKzM2OCw3IEBACiAJCUE3
OTFFRjI5MEYxMUUwNzkwMEFFMUY2OCAvKiBKU0J5dGVBcnJheS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzkxRUYyNzBGMTFFMDc5MDBBRTFGNjgg
LyogSlNCeXRlQXJyYXkuY3BwICovOyB9OwogCQlBN0ExRjdBQzBGMjUyQjNDMDBFMTg0RTIgLyog
Qnl0ZUFycmF5LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEE3QTFGN0FBMEYyNTJCM0MwMEUxODRFMiAvKiBCeXRlQXJyYXkuY3BwICovOyB9OwogCQlB
N0ExRjdBRDBGMjUyQjNDMDBFMTg0RTIgLyogQnl0ZUFycmF5LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBN0ExRjdBQjBGMjUyQjNDMDBFMTg0RTIgLyog
Qnl0ZUFycmF5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKKwkJQTdBQzI1QkQxMzA0RDE0NjAwMzM5NkRFIC8qIE1hcmtlZEJsb2NrLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0QzgyNEFBMTJGN0M3N0Uw
MDhGMzVFMCAvKiBNYXJrZWRCbG9jay5jcHAgKi87IH07CiAJCUE3QjQ4RjQ5MEVFODkzNkYwMERD
QkRCNiAvKiBFeGVjdXRhYmxlQWxsb2NhdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3QjQ4REI2MEVFNzRDRkMwMERDQkRCNiAvKiBFeGVjdXRh
YmxlQWxsb2NhdG9yLmNwcCAqLzsgfTsKIAkJQTdDMUU4RTQxMTJFNzJFRjAwQTM3Rjk4IC8qIEpJ
VFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQTdDMUU4QzgxMTJFNzAxQzAwQTM3Rjk4IC8qIEpJVFByb3BlcnR5QWNj
ZXNzMzJfNjQuY3BwICovOyB9OwogCQlBN0M1MzBFNDEwMkEzODEzMDA1QkM3NDEgLyogTWFya1N0
YWNrUG9zaXguY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQTdDNTMwRTMxMDJBMzgxMzAwNUJDNzQxIC8qIE1hcmtTdGFja1Bvc2l4LmNwcCAqLzsgfTsK
QEAgLTM3Niw2ICszNzYsMTMgQEAKIAkJQTdEQ0I5NzMxMkU1MTkzRjAwOTExOTQwIC8qIFdyaXRl
QmFycmllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QTdEQ0I3NzkxMkUzRDkwNTAwOTExOTQwIC8qIFdyaXRlQmFycmllci5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUE3RTJFQTZCMEZCNDYwQ0YwMDYw
MUYwNiAvKiBMaXRlcmFsUGFyc2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBBN0UyRUE2OTBGQjQ2MENGMDA2MDFGMDYgLyogTGl0ZXJhbFBhcnNlci5o
ICovOyB9OwogCQlBN0UyRUE2QzBGQjQ2MENGMDA2MDFGMDYgLyogTGl0ZXJhbFBhcnNlci5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBN0UyRUE2QTBG
QjQ2MENGMDA2MDFGMDYgLyogTGl0ZXJhbFBhcnNlci5jcHAgKi87IH07CisJCUE3RTRGQzhFMTJG
OEU0Q0EwMEFGNENGNCAvKiBCbG9ja1N0YWNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBBN0U0RkM4NjEyRjhFNENBMDBBRjRDRjQgLyogQmxvY2tTdGFj
ay5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUE3
RTRGQzhGMTJGOEU0Q0EwMEFGNENGNCAvKiBHbG9iYWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3RTRGQzg3MTJGOEU0Q0EwMEFGNENGNCAvKiBHbG9i
YWwuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlB
N0U0RkM5MDEyRjhFNENBMDBBRjRDRjQgLyogSGFuZGxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBN0U0RkM4ODEyRjhFNENBMDBBRjRDRjQgLyogSGFu
ZGxlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJ
QTdFNEZDOTExMkY4RTRDQTAwQUY0Q0Y0IC8qIEhhbmRsZUhlYXAuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdFNEZDODkxMkY4RTRDQTAwQUY0Q0Y0
IC8qIEhhbmRsZUhlYXAuY3BwICovOyB9OworCQlBN0U0RkM5MjEyRjhFNENBMDBBRjRDRjQgLyog
SGFuZGxlSGVhcC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQTdFNEZDOEExMkY4RTRDQTAwQUY0Q0Y0IC8qIEhhbmRsZUhlYXAuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlBN0U0RkM5NDEyRjhFNENBMDBB
RjRDRjQgLyogU2VudGluZWxMaW5rZWRMaXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBBN0U0RkM4QzEyRjhFNENBMDBBRjRDRjQgLyogU2VudGluZWxM
aW5rZWRMaXN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKKwkJQTdFNEZDOTUxMkY4RTRDQTAwQUY0Q0Y0IC8qIFNpbmdseUxpbmtlZExpc3QuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3RTRGQzhEMTJGOEU0
Q0EwMEFGNENGNCAvKiBTaW5nbHlMaW5rZWRMaXN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTdGMTlFQ0UxMURENDkwOTAwOTMxRTcwIC8qIEZp
eGVkQXJyYXkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEE3RjE5RUNEMTFERDQ5MDkwMDkzMUU3MCAvKiBGaXhlZEFycmF5LmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTdGOTkzNUYwRkQ3MzI1MTAwQTBC
MkQwIC8qIEpTT05PYmplY3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEE3Rjk5MzVEMEZENzMyNTEwMEEwQjJEMCAvKiBKU09OT2JqZWN0LmggKi87IH07
CiAJCUE3Rjk5MzYwMEZENzMyNTEwMEEwQjJEMCAvKiBKU09OT2JqZWN0LmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3Rjk5MzVFMEZENzMyNTEwMEEw
QjJEMCAvKiBKU09OT2JqZWN0LmNwcCAqLzsgfTsKQEAgLTU1MSwxMiArNTU4LDYgQEAKIAkJQkNG
RDhDOTMwRUVCMkVFNzAwMjgzODQ4IC8qIEp1bXBUYWJsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNGRDhDOTEwRUVCMkVFNzAwMjgzODQ4IC8qIEp1
bXBUYWJsZS5oICovOyB9OwogCQlDMEEyNzI2MzBFNTBBMDYzMDBFOTZFMTUgLyogTm90Rm91bmQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMwQTI3MjNG
MEU1MDlGMUUwMEU5NkUxNSAvKiBOb3RGb3VuZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCUREMzc3Q0JDMTIwNzJDMTgwMDZBMjUxNyAvKiBCaXRt
YXAuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEREMzc3
Q0JCMTIwNzJDMTgwMDZBMjUxNyAvKiBCaXRtYXAuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwotCQlEREU4MkFEMzEyMDlEOTU1MDA1QzE3NTYgLyogR0NI
YW5kbGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RERFODJBRDExMjA5RDk1NTAwNUMxNzU2IC8qIEdDSGFuZGxlLmNwcCAqLzsgfTsKLQkJRERFODJB
RDQxMjA5RDk1NTAwNUMxNzU2IC8qIEdDSGFuZGxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERERTgyQUQxMTIwOUQ5NTUwMDVDMTc1NiAvKiBHQ0hh
bmRsZS5jcHAgKi87IH07Ci0JCURERTgyQUQ1MTIwOUQ5NTUwMDVDMTc1NiAvKiBHQ0hhbmRsZS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBEREU4MkFE
MTEyMDlEOTU1MDA1QzE3NTYgLyogR0NIYW5kbGUuY3BwICovOyB9OwotCQlEREU4MkFENjEyMDlE
OTU1MDA1QzE3NTYgLyogR0NIYW5kbGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IERERTgyQUQyMTIwOUQ5NTUwMDVDMTc1NiAvKiBHQ0hhbmRsZS5oICov
OyB9OwotCQlEREU4MkFENzEyMDlEOTU1MDA1QzE3NTYgLyogR0NIYW5kbGUuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRERFODJBRDExMjA5RDk1NTAw
NUMxNzU2IC8qIEdDSGFuZGxlLmNwcCAqLzsgfTsKLQkJRERFODJBRDgxMjA5RDk1NTAwNUMxNzU2
IC8qIEdDSGFuZGxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBEREU4MkFEMjEyMDlEOTU1MDA1QzE3NTYgLyogR0NIYW5kbGUuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlEREY3QUJENDExRjYwRUQyMDAx
MDhFMzYgLyogR0NBY3Rpdml0eUNhbGxiYWNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBEREY3QUJEMjExRjYwRUQyMDAxMDhFMzYgLyogR0NBY3Rpdml0
eUNhbGxiYWNrLmggKi87IH07CiAJCURERjdBQkQ1MTFGNjBFRDIwMDEwOEUzNiAvKiBHQ0FjdGl2
aXR5Q2FsbGJhY2tDRi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBEREY3QUJEMzExRjYwRUQyMDAxMDhFMzYgLyogR0NBY3Rpdml0eUNhbGxiYWNrQ0Yu
Y3BwICovOyB9OwogCQlFMTI0QThGNzBFNTU1Nzc1MDAzMDkxRjEgLyogT3BhcXVlSlNTdHJpbmcu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxMjRBOEY1
MEU1NTU3NzUwMDMwOTFGMSAvKiBPcGFxdWVKU1N0cmluZy5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xMDQyLDYgKzEwNDMsMTMgQEAKIAkJQTdF
MkVBNkEwRkI0NjBDRjAwNjAxRjA2IC8qIExpdGVyYWxQYXJzZXIuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTGl0ZXJhbFBhcnNlci5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUE3RTQyQzE4MEUzOTM4ODMwMDY1QTU0NCAvKiBKU1N0YXRpY1Njb3Bl
T2JqZWN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTU3RhdGljU2NvcGVP
YmplY3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTdFNDJDMTkwRTM5Mzg4MzAw
NjVBNTQ0IC8qIEpTU3RhdGljU2NvcGVPYmplY3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gSlNTdGF0aWNTY29wZU9iamVjdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUE3RTRGQzg2MTJGOEU0Q0EwMEFGNENGNCAvKiBCbG9ja1N0YWNrLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEJsb2NrU3RhY2suaDsgcGF0aCA9IGNvbGxl
Y3Rvci9oYW5kbGVzL0Jsb2NrU3RhY2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
QTdFNEZDODcxMkY4RTRDQTAwQUY0Q0Y0IC8qIEdsb2JhbC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IG5hbWUgPSBHbG9iYWwuaDsgcGF0aCA9IGNvbGxlY3Rvci9oYW5kbGVzL0dsb2JhbC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBN0U0RkM4ODEyRjhFNENBMDBBRjRDRjQg
LyogSGFuZGxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEhhbmRsZS5oOyBw
YXRoID0gY29sbGVjdG9yL2hhbmRsZXMvSGFuZGxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUE3RTRGQzg5MTJGOEU0Q0EwMEFGNENGNCAvKiBIYW5kbGVIZWFwLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEhhbmRsZUhlYXAuY3BwOyBwYXRoID0gY29s
bGVjdG9yL2hhbmRsZXMvSGFuZGxlSGVhcC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUE3RTRGQzhBMTJGOEU0Q0EwMEFGNENGNCAvKiBIYW5kbGVIZWFwLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEhhbmRsZUhlYXAuaDsgcGF0aCA9IGNvbGxlY3Rvci9oYW5k
bGVzL0hhbmRsZUhlYXAuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTdFNEZDOEMx
MkY4RTRDQTAwQUY0Q0Y0IC8qIFNlbnRpbmVsTGlua2VkTGlzdC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IG5hbWUgPSBTZW50aW5lbExpbmtlZExpc3QuaDsgcGF0aCA9IGNvbGxlY3Rvci9o
YW5kbGVzL1NlbnRpbmVsTGlua2VkTGlzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlBN0U0RkM4RDEyRjhFNENBMDBBRjRDRjQgLyogU2luZ2x5TGlua2VkTGlzdC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBTaW5nbHlMaW5rZWRMaXN0Lmg7IHBhdGggPSBjb2xs
ZWN0b3IvaGFuZGxlcy9TaW5nbHlMaW5rZWRMaXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUE3RjE5RUNEMTFERDQ5MDkwMDkzMUU3MCAvKiBGaXhlZEFycmF5LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZpeGVkQXJyYXkuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQTdGODY5MEUwRjk1ODRBMTAwNTU4Njk3IC8qIENhY2hlZENhbGwuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2FjaGVkQ2FsbC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlBN0Y4NjlFQzBGOTVDMkVDMDA1NTg2OTcgLyogQ2FsbEZyYW1lQ2xv
c3VyZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDYWxsRnJhbWVDbG9zdXJl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMTU2LDggKzExNjQsNiBAQAogCQlE
MjEyMDIyODBBRDQzMTBDMDBFRDc5QjYgLyogRGF0ZUNvbnZlcnNpb24uY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERhdGVDb252ZXJzaW9uLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRDIxMjAyMjkwQUQ0MzEwQzAwRUQ3OUI2IC8qIERhdGVDb252
ZXJzaW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEYXRlQ29udmVyc2lv
bi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlERDM3N0NCQjEyMDcyQzE4MDA2QTI1
MTcgLyogQml0bWFwLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJpdG1hcC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEREU4MkFEMTEyMDlEOTU1MDA1QzE3NTYg
LyogR0NIYW5kbGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR0NI
YW5kbGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEREU4MkFEMjEyMDlEOTU1
MDA1QzE3NTYgLyogR0NIYW5kbGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
R0NIYW5kbGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRERGN0FCRDIxMUY2MEVE
MjAwMTA4RTM2IC8qIEdDQWN0aXZpdHlDYWxsYmFjay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBHQ0FjdGl2aXR5Q2FsbGJhY2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJRERGN0FCRDMxMUY2MEVEMjAwMTA4RTM2IC8qIEdDQWN0aXZpdHlDYWxsYmFja0NGLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdDQWN0aXZpdHlDYWxsYmFj
a0NGLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTExRDUxNzUwQjJFNzk4RDAw
NTZDMTg4IC8qIFN0cmluZ0V4dHJhcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBTdHJpbmdFeHRyYXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEyNDgsOSAr
MTI1NCw5IEBACiAJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OwogCQkJZmlsZXMgPSAo
CiAJCQkJOTMyRjVCRDMwODIyQTFDNzAwNzM2OTc1IC8qIENvcmVGb3VuZGF0aW9uLmZyYW1ld29y
ayBpbiBGcmFtZXdvcmtzICovLAotCQkJCTkzMkY1QkQ1MDgyMkExQzcwMDczNjk3NSAvKiBGb3Vu
ZGF0aW9uLmZyYW1ld29yayBpbiBGcmFtZXdvcmtzICovLAogCQkJCTkzMkY1QkQ3MDgyMkExQzcw
MDczNjk3NSAvKiBsaWJpY3Vjb3JlLmR5bGliIGluIEZyYW1ld29ya3MgKi8sCiAJCQkJOTMyRjVC
RDYwODIyQTFDNzAwNzM2OTc1IC8qIGxpYm9iamMuZHlsaWIgaW4gRnJhbWV3b3JrcyAqLywKKwkJ
CQlBNzMxQjI1QTEzMDA5Mzg4MDA0MEE3RkEgLyogRm91bmRhdGlvbi5mcmFtZXdvcmsgaW4gRnJh
bWV3b3JrcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5n
ID0gMDsKIAkJfTsKQEAgLTEzMDMsNiArMTMwOSw3IEBACiAJCQkJOTY4OENCMTIwRUQxMkI0RTAw
MUQ2NDlGIC8qIGFzc2VtYmxlciAqLywKIAkJCQk5NjlBMDc4RjBFRDFEM0FFMDBGMUY2ODEgLyog
Ynl0ZWNvZGUgKi8sCiAJCQkJN0UzOUQ4MUQwRUMzOEVGQTAwM0FGMTFBIC8qIGJ5dGVjb21waWxl
ciAqLywKKwkJCQlBN0U0RkM4MzEyRjhFNEEzMDBBRjRDRjQgLyogY29sbGVjdG9yICovLAogCQkJ
CTE0ODBEQjlBMEREQzIyMzEwMDNDRkRGMiAvKiBkZWJ1Z2dlciAqLywKIAkJCQkxNDI5RDc3QTBF
RDIwRDczMDBCODk2MTkgLyogaW50ZXJwcmV0ZXIgKi8sCiAJCQkJMTQyOUQ5MkMwRUQyMkQ3MDAw
Qjg5NjE5IC8qIGppdCAqLywKQEAgLTE3MzIsOCArMTczOSw2IEBACiAJCQkJRjY5MkE4NUQwMjU1
NTk3RDAxRkY2MEY3IC8qIEZ1bmN0aW9uUHJvdG90eXBlLmggKi8sCiAJCQkJRERGN0FCRDIxMUY2
MEVEMjAwMTA4RTM2IC8qIEdDQWN0aXZpdHlDYWxsYmFjay5oICovLAogCQkJCURERjdBQkQzMTFG
NjBFRDIwMDEwOEUzNiAvKiBHQ0FjdGl2aXR5Q2FsbGJhY2tDRi5jcHAgKi8sCi0JCQkJRERFODJB
RDExMjA5RDk1NTAwNUMxNzU2IC8qIEdDSGFuZGxlLmNwcCAqLywKLQkJCQlEREU4MkFEMjEyMDlE
OTU1MDA1QzE3NTYgLyogR0NIYW5kbGUuaCAqLywKIAkJCQlCQzAyRTlCODBFMTg0NTQ1MDAwRjky
OTcgLyogR2V0dGVyU2V0dGVyLmNwcCAqLywKIAkJCQlCQzMzN0JERTBFMUFGMEI4MDA3NjkxOEEg
LyogR2V0dGVyU2V0dGVyLmggKi8sCiAJCQkJQkMyNTdERUQwRTFGNTJFRDAwMTZCNkM5IC8qIEds
b2JhbEV2YWxGdW5jdGlvbi5jcHAgKi8sCkBAIC0yMDQ3LDYgKzIwNTIsMjggQEAKIAkJCW5hbWUg
PSBhcGk7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwogCQl9OworCQlBN0U0RkM4MzEyRjhF
NEEzMDBBRjRDRjQgLyogY29sbGVjdG9yICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQlj
aGlsZHJlbiA9ICgKKwkJCQlBN0U0RkM4NTEyRjhFNEIxMDBBRjRDRjQgLyogaGFuZGxlcyAqLywK
KwkJCSk7CisJCQluYW1lID0gY29sbGVjdG9yOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsK
KwkJfTsKKwkJQTdFNEZDODUxMkY4RTRCMTAwQUY0Q0Y0IC8qIGhhbmRsZXMgKi8gPSB7CisJCQlp
c2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCUE3RTRGQzg2MTJGOEU0Q0EwMEFG
NENGNCAvKiBCbG9ja1N0YWNrLmggKi8sCisJCQkJQTdFNEZDODcxMkY4RTRDQTAwQUY0Q0Y0IC8q
IEdsb2JhbC5oICovLAorCQkJCUE3RTRGQzg4MTJGOEU0Q0EwMEFGNENGNCAvKiBIYW5kbGUuaCAq
LywKKwkJCQlBN0U0RkM4OTEyRjhFNENBMDBBRjRDRjQgLyogSGFuZGxlSGVhcC5jcHAgKi8sCisJ
CQkJQTdFNEZDOEExMkY4RTRDQTAwQUY0Q0Y0IC8qIEhhbmRsZUhlYXAuaCAqLywKKwkJCQlBN0U0
RkM4QzEyRjhFNENBMDBBRjRDRjQgLyogU2VudGluZWxMaW5rZWRMaXN0LmggKi8sCisJCQkJQTdF
NEZDOEQxMkY4RTRDQTAwQUY0Q0Y0IC8qIFNpbmdseUxpbmtlZExpc3QuaCAqLywKKwkJCSk7CisJ
CQluYW1lID0gaGFuZGxlczsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CiAJCUUx
OTU2NzhEMDlFN0NGMTIwMEI4OUQxMyAvKiB1bmljb2RlICovID0gewogCQkJaXNhID0gUEJYR3Jv
dXA7CiAJCQljaGlsZHJlbiA9ICgKQEAgLTIwODIsNyArMjEwOSw2IEBACiAJCQkJMTQ0MDA3NTcw
QTUzNzBEMjAwMDVGMDYxIC8qIEpTTm9kZUxpc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0NDAw
NUNDMEE1MzM4RjgwMDA1RjA2MSAvKiBOb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDQwMDc0
QTBBNTM2Q0MyMDAwNUYwNjEgLyogTm9kZUxpc3QuaCBpbiBIZWFkZXJzICovLAotCQkJCURERTgy
QUQ2MTIwOUQ5NTUwMDVDMTc1NiAvKiBHQ0hhbmRsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwog
CQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC0yMTY1
LDcgKzIxOTEsNiBAQAogCQkJCUJDMThDNDA0MEUxNkY1Q0QwMEIzNDQ2MCAvKiBGdW5jdGlvbkNv
bnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzQwNTBFMTZGNUNEMDBCMzQ0NjAg
LyogRnVuY3Rpb25Qcm90b3R5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCURERjdBQkQ0MTFGNjBF
RDIwMDEwOEUzNiAvKiBHQ0FjdGl2aXR5Q2FsbGJhY2suaCBpbiBIZWFkZXJzICovLAotCQkJCURE
RTgyQUQ4MTIwOUQ5NTUwMDVDMTc1NiAvKiBHQ0hhbmRsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QkMxOEM0MDYwRTE2RjVDRDAwQjM0NDYwIC8qIEdldFB0ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QkMyNTdERjAwRTFGNTJFRDAwMTZCNkM5IC8qIEdsb2JhbEV2YWxGdW5jdGlvbi5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQkMxOEM0MDgwRTE2RjVDRDAwQjM0NDYwIC8qIEhhc2hDb3VudGVkU2V0Lmgg
aW4gSGVhZGVycyAqLywKQEAgLTI0MTUsNiArMjQ0MCwxMiBAQAogCQkJCUU0RDhDRUZCMTJGQzQz
OTYwMEJDOUY1QSAvKiBCbG9vbUZpbHRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTc5NDFBNUEx
MzAyOUFDQzAwNEEzNDQ3IC8qIE9TUmFuZG9tU291cmNlLmggaW4gSGVhZGVycyAqLywKIAkJCQk5
Nzk0MUE3RjEzMDJBMDk4MDA0QTM0NDcgLyogQ3J5cHRvZ3JhcGhpY2FsbHlSYW5kb21OdW1iZXIu
aCBpbiBIZWFkZXJzICovLAorCQkJCUE3RTRGQzhFMTJGOEU0Q0EwMEFGNENGNCAvKiBCbG9ja1N0
YWNrLmggaW4gSGVhZGVycyAqLywKKwkJCQlBN0U0RkM4RjEyRjhFNENBMDBBRjRDRjQgLyogR2xv
YmFsLmggaW4gSGVhZGVycyAqLywKKwkJCQlBN0U0RkM5MDEyRjhFNENBMDBBRjRDRjQgLyogSGFu
ZGxlLmggaW4gSGVhZGVycyAqLywKKwkJCQlBN0U0RkM5MjEyRjhFNENBMDBBRjRDRjQgLyogSGFu
ZGxlSGVhcC5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTdFNEZDOTQxMkY4RTRDQTAwQUY0Q0Y0IC8q
IFNlbnRpbmVsTGlua2VkTGlzdC5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTdFNEZDOTUxMkY4RTRD
QTAwQUY0Q0Y0IC8qIFNpbmdseUxpbmtlZExpc3QuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJ
CXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMjY3Niw3
ICsyNzA3LDYgQEAKIAkJCQkxNDEyMTEzNDBBNDg3OTU4MDA0ODAyNTUgLyogbWluaWRvbS5jIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMTQ0MDA2M0YwQTUzNTk4QTAwMDVGMDYxIC8qIE5vZGUuYyBpbiBT
b3VyY2VzICovLAogCQkJCTE0NDAwNzRCMEE1MzZDQzIwMDA1RjA2MSAvKiBOb2RlTGlzdC5jIGlu
IFNvdXJjZXMgKi8sCi0JCQkJRERFODJBRDUxMjA5RDk1NTAwNUMxNzU2IC8qIEdDSGFuZGxlLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nl
c3NpbmcgPSAwOwogCQl9OwpAQCAtMjY4NSw3ICsyNzE1LDYgQEAKIAkJCWJ1aWxkQWN0aW9uTWFz
ayA9IDIxNDc0ODM2NDc7CiAJCQlmaWxlcyA9ICgKIAkJCQkxNDQwRjYxMDBBNEY4NTY3MDAwNUYw
NjEgLyogdGVzdGFwaS5jIGluIFNvdXJjZXMgKi8sCi0JCQkJRERFODJBRDQxMjA5RDk1NTAwNUMx
NzU2IC8qIEdDSGFuZGxlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JE
ZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMjczOSw3ICsyNzY4LDYgQEAK
IAkJCQkxNDdGMzlDQjEwN0VDMzc2MDA0MjdBNDggLyogRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkxNDdGMzlDQzEwN0VDMzc2MDA0MjdBNDggLyogRnVuY3Rpb25Q
cm90b3R5cGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRERGN0FCRDUxMUY2MEVEMjAwMTA4RTM2
IC8qIEdDQWN0aXZpdHlDYWxsYmFja0NGLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCURERTgyQUQ3
MTIwOUQ5NTUwMDVDMTc1NiAvKiBHQ0hhbmRsZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDI4
MDg1NTEwN0VDMEU3MDAxM0U3QjIgLyogR2V0dGVyU2V0dGVyLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTE0N0YzOUNEMTA3RUMzNzYwMDQyN0E0OCAvKiBHbG9iYWxFdmFsRnVuY3Rpb24uY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJNjVERkM5MzMwOEVBMTczQTAwRjczMDBCIC8qIEhhc2hUYWJsZS5j
cHAgaW4gU291cmNlcyAqLywKQEAgLTI4NzgsOSArMjkwNiwxMCBAQAogCQkJCTg2NzA0Qjg5MTJE
QkEzMzcwMEE5RkU3QiAvKiBZYXJyUGF0dGVybi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4Njcw
NEI0MjEyREI4QTgxMDBBOUZFN0IgLyogWWFyclN5bnRheENoZWNrZXIuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJRTQ5REMxNkIxMkVGMjkzRTAwMTg0QTFGIC8qIFNvdXJjZVByb3ZpZGVyQ2FjaGUu
Y3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJMTRDODI0QUIxMkY3Qzc3RTAwOEYzNUUwIC8qIE1hcmtl
ZEJsb2NrLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTk3OTQxQTU3MTMwMjlBQUIwMDRBMzQ0NyAv
KiBPU1JhbmRvbVNvdXJjZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5Nzk0MUE3RTEzMDJBMDk4
MDA0QTM0NDcgLyogQ3J5cHRvZ3JhcGhpY2FsbHlSYW5kb21OdW1iZXIuY3BwIGluIFNvdXJjZXMg
Ki8sCisJCQkJQTdFNEZDOTExMkY4RTRDQTAwQUY0Q0Y0IC8qIEhhbmRsZUhlYXAuY3BwIGluIFNv
dXJjZXMgKi8sCisJCQkJQTdBQzI1QkQxMzA0RDE0NjAwMzM5NkRFIC8qIE1hcmtlZEJsb2NrLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nl
c3NpbmcgPSAwOwogCQl9OwpAQCAtMjg4OSw3ICsyOTE4LDYgQEAKIAkJCWJ1aWxkQWN0aW9uTWFz
ayA9IDIxNDc0ODM2NDc7CiAJCQlmaWxlcyA9ICgKIAkJCQk5MzJGNUJERDA4MjJBMUM3MDA3MzY5
NzUgLyoganNjLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCURERTgyQUQzMTIwOUQ5NTUwMDVDMTc1
NiAvKiBHQ0hhbmRsZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5NzJBNDg1RjEyNjYxRTA4MDBG
NDUxNEYgLyogVVJMQ2hhcmFjdGVyVHlwZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTcyQTQ4
NzcxMjY2MjU2RjAwRjQ1MTRGIC8qIFVSTEVzY2FwZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvY29sbGVjdG9yL2hhbmRsZXMvQmxv
Y2tTdGFjay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2NvbGxlY3Rvci9oYW5kbGVzL0Jsb2Nr
U3RhY2suaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi41ZjcwNTlmZWRiNmU2YTkzZmRmYjhjNmQxYmYyMzhmYTk5MmIw
ODg5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2NvbGxlY3Rvci9o
YW5kbGVzL0Jsb2NrU3RhY2suaApAQCAtMCwwICsxLDk3IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRl
ZiBCbG9ja1N0YWNrX2gKKyNkZWZpbmUgQmxvY2tTdGFja19oCisKKyNpbmNsdWRlIDx3dGYvQXNz
ZXJ0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIEpTQyB7CisK
K2NsYXNzIEhlYXBPYmplY3Q7CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPiBjbGFzcyBCbG9ja1N0
YWNrIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IGJsb2NrU2l6ZSA9IDQwOTY7
CisgICAgc3RhdGljIGNvbnN0IHNpemVfdCBibG9ja0xlbmd0aCA9IGJsb2NrU2l6ZSAvIHNpemVv
ZihUKTsKKworICAgIEJsb2NrU3RhY2soKTsKKyAgICB+QmxvY2tTdGFjaygpOworCisgICAgVCog
Z3JvdygpOworICAgIHZvaWQgc2hyaW5rKFQqKTsKKworICAgIGNvbnN0IFZlY3RvcjxUKj4mIGJs
b2NrcygpOworCitwcml2YXRlOgorICAgIFZlY3RvcjxUKj4gbV9ibG9ja3M7CisgICAgVCogbV9z
cGFyZUJsb2NrOyAvLyBVc2VkIHRvIGF2b2lkIHRocmFzaCBhdCBibG9jayBib3VuZGFyaWVzLgor
fTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+IEJsb2NrU3RhY2s8VD46OkJsb2NrU3RhY2soKQor
ICAgIDogbV9zcGFyZUJsb2NrKDApCit7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPiBCbG9j
a1N0YWNrPFQ+Ojp+QmxvY2tTdGFjaygpCit7CisgICAgaWYgKG1fc3BhcmVCbG9jaykKKyAgICAg
ICAgZnJlZShtX3NwYXJlQmxvY2spOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9ibG9j
a3Muc2l6ZSgpOyArK2kpCisgICAgICAgIGZyZWUobV9ibG9ja3NbaV0pOworfQorCit0ZW1wbGF0
ZSA8dHlwZW5hbWUgVD4gaW5saW5lIGNvbnN0IFZlY3RvcjxUKj4mIEJsb2NrU3RhY2s8VD46OmJs
b2NrcygpCit7CisgICAgcmV0dXJuIG1fYmxvY2tzOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUg
VD4gVCogQmxvY2tTdGFjazxUPjo6Z3JvdygpCit7CisgICAgVCogYmxvY2sgPSBtX3NwYXJlQmxv
Y2sKKyAgICAgICAgPyBtX3NwYXJlQmxvY2sKKyAgICAgICAgOiBzdGF0aWNfY2FzdDxUKj4obWFs
bG9jKGJsb2NrU2l6ZSkpOworICAgIG1fc3BhcmVCbG9jayA9IDA7CisKKyAgICBtX2Jsb2Nrcy5h
cHBlbmQoYmxvY2spOworICAgIHJldHVybiBibG9jazsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1l
IFQ+IHZvaWQgQmxvY2tTdGFjazxUPjo6c2hyaW5rKFQqIG5ld0VuZCkKK3sKKyAgICBBU1NFUlQo
bmV3RW5kICE9IG1fYmxvY2tzLmxhc3QoKSArIGJsb2NrTGVuZ3RoKTsKKyAgICBtX3NwYXJlQmxv
Y2sgPSBtX2Jsb2Nrcy5sYXN0KCk7CisgICAgbV9ibG9ja3MucmVtb3ZlTGFzdCgpOworCisgICAg
d2hpbGUgKG1fYmxvY2tzLmxhc3QoKSArIGJsb2NrTGVuZ3RoICE9IG5ld0VuZCkgeworICAgICAg
ICBmcmVlKG1fYmxvY2tzLmxhc3QoKSk7CisgICAgICAgIG1fYmxvY2tzLnJlbW92ZUxhc3QoKTsK
KyAgICB9Cit9CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvY29sbGVjdG9yL2hhbmRsZXMvR2xvYmFsLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvY29s
bGVjdG9yL2hhbmRsZXMvR2xvYmFsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTcxZmUzMTIxMzc2OTQyYzVhYWYy
NTdiN2ViOGZjMjBhYjBlMWE2YgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9jb2xsZWN0b3IvaGFuZGxlcy9HbG9iYWwuaApAQCAtMCwwICsxLDE1OSBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpZm5kZWYgR2xvYmFsX2gKKyNkZWZpbmUgR2xvYmFsX2gKKworI2luY2x1ZGUgIkFz
c2VydGlvbnMuaCIKKyNpbmNsdWRlICJIYW5kbGUuaCIKKyNpbmNsdWRlICJIYW5kbGVIZWFwLmgi
CisjaW5jbHVkZSAiSlNHbG9iYWxEYXRhLmgiCisKK25hbWVzcGFjZSBKU0MgeworCisvKgorICAg
IEEgR2xvYmFsIGlzIGEgcGVyc2lzdGVudCBoYW5kbGUgd2hvc2UgbGlmZXRpbWUgaXMgbm90IGxp
bWl0ZWQgdG8gYW55IGdpdmVuCisgICAgc2NvcGUuIFVzZSBHbG9iYWxzIGZvciBkYXRhIG1lbWJl
cnMgYW5kIGdsb2JhbCB2YXJpYWJsZXMuCisqLworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY2xh
c3MgR2xvYmFsIDogcHVibGljIEhhbmRsZTxUPiB7CitwdWJsaWM6CisgICAgdHlwZWRlZiB0eXBl
bmFtZSBIYW5kbGU8VD46OkV4dGVybmFsVHlwZSBFeHRlcm5hbFR5cGU7CisgICAgR2xvYmFsKEpT
R2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgRXh0ZXJuYWxUeXBlIHB0ciA9IEV4dGVybmFsVHlwZSgp
KQorICAgICAgICA6IEhhbmRsZTxUPihnbG9iYWxEYXRhLmFsbG9jYXRlR2xvYmFsSGFuZGxlKCkp
CisgICAgeworICAgICAgICBpbnRlcm5hbFNldChwdHIpOworICAgIH0KKworICAgIEdsb2JhbChK
U0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEhhbmRsZTxUPiBoYW5kbGUpCisgICAgICAgIDogSGFu
ZGxlPFQ+KGdsb2JhbERhdGEuYWxsb2NhdGVHbG9iYWxIYW5kbGUoKSkKKyAgICB7CisgICAgICAg
IGludGVybmFsU2V0KGhhbmRsZS5nZXQoKSk7CisgICAgfQorICAgIAorICAgIGVudW0gRW1wdHlW
YWx1ZVRhZyB7IEVtcHR5VmFsdWUgfTsKKyAgICBHbG9iYWwoRW1wdHlWYWx1ZVRhZykKKyAgICAg
ICAgOiBIYW5kbGU8VD4oMCwgSGFuZGxlQmFzZTo6RG9udE51bGxDaGVja1Nsb3QpCisgICAgewor
ICAgIH0KKworICAgIH5HbG9iYWwoKQorICAgIHsKKyAgICAgICAgSGFuZGxlU2xvdCBzbG90ID0g
dGhpcy0+c2xvdCgpOworICAgICAgICBpZiAoc2xvdCkKKyAgICAgICAgICAgIEhhbmRsZUhlYXA6
OmhlYXBGb3Ioc2xvdCktPmRlYWxsb2NhdGUoc2xvdCk7CisgICAgfQorCisgICAgdm9pZCBzZXQo
SlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBFeHRlcm5hbFR5cGUgdmFsdWUpCisgICAgeworICAg
ICAgICBpZiAoIXZhbHVlKSB7CisgICAgICAgICAgICBjbGVhcigpOworICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICB9CisgICAgICAgIGlmICghdGhpcy0+c2xvdCgpKQorICAgICAgICAgICAg
dGhpcy0+c2V0U2xvdChnbG9iYWxEYXRhLmFsbG9jYXRlR2xvYmFsSGFuZGxlKCkpOworICAgICAg
ICBpbnRlcm5hbFNldCh2YWx1ZSk7CisgICAgfQorCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFU+
IEdsb2JhbCYgb3BlcmF0b3I9KGNvbnN0IEdsb2JhbDxVPiYgaGFuZGxlKQorICAgIHsKKyAgICAg
ICAgaWYgKGhhbmRsZS5zbG90KCkpIHsKKyAgICAgICAgICAgIGlmICghdGhpcy0+c2xvdCgpKQor
ICAgICAgICAgICAgICAgIHRoaXMtPnNldFNsb3QoSGFuZGxlSGVhcDo6aGVhcEZvcihoYW5kbGUu
c2xvdCgpKS0+YWxsb2NhdGUoKSk7CisgICAgICAgICAgICBpbnRlcm5hbFNldChoYW5kbGUuZ2V0
KCkpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIGNsZWFyKCk7CisgICAgICAgIAorICAg
ICAgICByZXR1cm4gKnRoaXM7CisgICAgfQorICAgIAorICAgIEdsb2JhbCYgb3BlcmF0b3I9KGNv
bnN0IEdsb2JhbCYgaGFuZGxlKQorICAgIHsKKyAgICAgICAgaWYgKGhhbmRsZS5zbG90KCkpIHsK
KyAgICAgICAgICAgIGlmICghdGhpcy0+c2xvdCgpKQorICAgICAgICAgICAgICAgIHRoaXMtPnNl
dFNsb3QoSGFuZGxlSGVhcDo6aGVhcEZvcihoYW5kbGUuc2xvdCgpKS0+YWxsb2NhdGUoKSk7Cisg
ICAgICAgICAgICBpbnRlcm5hbFNldChoYW5kbGUuZ2V0KCkpOworICAgICAgICB9IGVsc2UKKyAg
ICAgICAgICAgIGNsZWFyKCk7CisgICAgICAgIAorICAgICAgICByZXR1cm4gKnRoaXM7CisgICAg
fQorCisgICAgdm9pZCBjbGVhcigpCisgICAgeworICAgICAgICBpZiAodGhpcy0+c2xvdCgpKQor
ICAgICAgICAgICAgaW50ZXJuYWxTZXQoRXh0ZXJuYWxUeXBlKCkpOworICAgIH0KKworICAgIGVu
dW0gSGFzaFRhYmxlRGVsZXRlZFZhbHVlVHlwZSB7IEhhc2hUYWJsZURlbGV0ZWRWYWx1ZSB9Owor
ICAgIGNvbnN0IHN0YXRpYyBpbnRwdHJfdCBIYXNoVGFibGVEZWxldGVkVmFsdWVUYWcgPSAweDE7
CisgICAgR2xvYmFsKEhhc2hUYWJsZURlbGV0ZWRWYWx1ZVR5cGUpCisgICAgICAgIDogSGFuZGxl
PFQ+KHJlaW50ZXJwcmV0X2Nhc3Q8SGFuZGxlU2xvdD4oSGFzaFRhYmxlRGVsZXRlZFZhbHVlVGFn
KSkKKyAgICB7CisgICAgfQorICAgIGJvb2wgaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKSBjb25z
dCB7IHJldHVybiBzbG90KCkgPT0gcmVpbnRlcnByZXRfY2FzdDxIYW5kbGVTbG90PihIYXNoVGFi
bGVEZWxldGVkVmFsdWVUYWcpOyB9CisKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVT4gR2xvYmFs
KGNvbnN0IEdsb2JhbDxVPiYgb3RoZXIpCisgICAgICAgIDogSGFuZGxlPFQ+KG90aGVyLnNsb3Qo
KSA/IEhhbmRsZUhlYXA6OmhlYXBGb3Iob3RoZXIuc2xvdCgpKS0+YWxsb2NhdGUoKSA6IDAsIEhh
bmRsZTxUPjo6RG9udE51bGxDaGVja1Nsb3QpCisgICAgeworICAgICAgICBpZiAob3RoZXIuc2xv
dCgpKQorICAgICAgICAgICAgaW50ZXJuYWxTZXQob3RoZXIuZ2V0KCkpOworICAgIH0KKyAgICAK
KyAgICBHbG9iYWwoY29uc3QgR2xvYmFsJiBvdGhlcikKKyAgICAgICAgOiBIYW5kbGU8VD4ob3Ro
ZXIuc2xvdCgpID8gSGFuZGxlSGVhcDo6aGVhcEZvcihvdGhlci5zbG90KCkpLT5hbGxvY2F0ZSgp
IDogMCwgSGFuZGxlPFQ+OjpEb250TnVsbENoZWNrU2xvdCkKKyAgICB7CisgICAgICAgIGlmIChv
dGhlci5zbG90KCkpCisgICAgICAgICAgICBpbnRlcm5hbFNldChvdGhlci5nZXQoKSk7CisgICAg
fQorCitwcm90ZWN0ZWQ6CisgICAgdm9pZCBpbnRlcm5hbFNldChFeHRlcm5hbFR5cGUgdmFsdWUp
CisgICAgeworICAgICAgICBKU1ZhbHVlIG5ld1ZhbHVlKEhhbmRsZVR5cGVzPFQ+Ojp0b0pTVmFs
dWUodmFsdWUpKTsKKyAgICAgICAgSGFuZGxlU2xvdCBzbG90ID0gdGhpcy0+c2xvdCgpOworICAg
ICAgICBBU1NFUlQoc2xvdCk7CisgICAgICAgIEhhbmRsZUhlYXA6OmhlYXBGb3Ioc2xvdCktPndy
aXRlQmFycmllcihzbG90LCBuZXdWYWx1ZSk7CisgICAgICAgICpzbG90ID0gbmV3VmFsdWU7Cisg
ICAgfQorCisgICAgdXNpbmcgSGFuZGxlPFQ+OjpzbG90OworICAgIAorfTsKKworfQorCituYW1l
c3BhY2UgV1RGIHsKKwordGVtcGxhdGU8dHlwZW5hbWUgUD4gc3RydWN0IEhhc2hUcmFpdHM8SlND
OjpHbG9iYWw8UD4gPiA6IEdlbmVyaWNIYXNoVHJhaXRzPEpTQzo6R2xvYmFsPFA+ID4geworICAg
IHN0YXRpYyBjb25zdCBib29sIGVtcHR5VmFsdWVJc1plcm8gPSB0cnVlOworICAgIHN0YXRpYyBK
U0M6Okdsb2JhbDxQPiBlbXB0eVZhbHVlKCkgeyByZXR1cm4gSlNDOjpHbG9iYWw8UD4oSlNDOjpH
bG9iYWw8UD46OkVtcHR5VmFsdWUpOyB9CisgICAgc3RhdGljIHZvaWQgY29uc3RydWN0RGVsZXRl
ZFZhbHVlKEpTQzo6R2xvYmFsPFA+JiBzbG90KSB7IG5ldyAoJnNsb3QpIEpTQzo6R2xvYmFsPFA+
KEpTQzo6R2xvYmFsPFA+OjpIYXNoVGFibGVEZWxldGVkVmFsdWUpOyB9CisgICAgc3RhdGljIGJv
b2wgaXNEZWxldGVkVmFsdWUoY29uc3QgSlNDOjpHbG9iYWw8UD4mIHZhbHVlKSB7IHJldHVybiB2
YWx1ZS5pc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpOyB9Cit9OworCit9CisKKyNlbmRpZiAvLyBH
bG9iYWxfaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2NvbGxlY3Rvci9oYW5k
bGVzL0hhbmRsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2NvbGxlY3Rvci9oYW5kbGVzL0hh
bmRsZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjk4YzYwZWNiY2M0YmVhODY1MzI4N2RlODY3YzVhODEzMjc1OGJi
NzcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvY29sbGVjdG9yL2hh
bmRsZXMvSGFuZGxlLmgKQEAgLTAsMCArMSwxODkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEhh
bmRsZV9oCisjZGVmaW5lIEhhbmRsZV9oCisKKyNpbmNsdWRlICJXcml0ZUJhcnJpZXIuaCIKKwor
I2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CisKK25hbWVzcGFjZSBKU0MgeworCisvKgorICAg
IEEgSGFuZGxlIGlzIGEgc21hcnQgcG9pbnRlciB0aGF0IHVwZGF0ZXMgYXV0b21hdGljYWxseSB3
aGVuIHRoZSBnYXJiYWdlCisgICAgY29sbGVjdG9yIG1vdmVzIHRoZSBvYmplY3QgdG8gd2hpY2gg
aXQgcG9pbnRzLgorCisgICAgVGhlIGJhc2UgSGFuZGxlIGNsYXNzIHJlcHJlc2VudHMgYSB0ZW1w
b3JhcnkgcmVmZXJlbmNlIHRvIGEgcG9pbnRlciB3aG9zZQorICAgIGxpZmV0aW1lIGlzIGd1YXJh
bnRlZWQgYnkgc29tZXRoaW5nIGVsc2UuCisqLworCit0ZW1wbGF0ZSA8Y2xhc3MgVD4gY2xhc3Mg
SGFuZGxlOworCisvLyBDcmVhdGluZyBhIEpTVmFsdWUgSGFuZGxlIGlzIGludmFsaWQKK3RlbXBs
YXRlIDw+IGNsYXNzIEhhbmRsZTxKU1ZhbHVlPjsKKworY2xhc3MgSGFuZGxlQmFzZSB7CisgICAg
ZnJpZW5kIGNsYXNzIEhhbmRsZUhlYXA7CisKK3B1YmxpYzoKKyAgICBib29sIG9wZXJhdG9yISgp
IGNvbnN0IHsgcmV0dXJuIGlzRW1wdHkoKTsgfQorCisgICAgLy8gVGhpcyBjb252ZXJzaW9uIG9w
ZXJhdG9yIGFsbG93cyBpbXBsaWNpdCBjb252ZXJzaW9uIHRvIGJvb2wgYnV0IG5vdCB0byBvdGhl
ciBpbnRlZ2VyIHR5cGVzLgorICAgIHR5cGVkZWYgSlNWYWx1ZSAoSGFuZGxlQmFzZTo6KlVuc3Bl
Y2lmaWVkQm9vbFR5cGUpOworICAgIG9wZXJhdG9yIFVuc3BlY2lmaWVkQm9vbFR5cGUqKCkgY29u
c3QgeyByZXR1cm4gKG1fc2xvdCAmJiAqbV9zbG90KSA/IHJlaW50ZXJwcmV0X2Nhc3Q8VW5zcGVj
aWZpZWRCb29sVHlwZSo+KDEpIDogMDsgfQorCisgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyBy
ZXR1cm4gIW1fc2xvdCB8fCAhKm1fc2xvdDsgfQorCitwcm90ZWN0ZWQ6CisgICAgSGFuZGxlQmFz
ZShIYW5kbGVTbG90IHNsb3QpCisgICAgICAgIDogbV9zbG90KHNsb3QpCisgICAgeworICAgICAg
ICBBU1NFUlQoc2xvdCk7CisgICAgfQorCisgICAgZW51bSBEb250TnVsbENoZWNrU2xvdFRhZyB7
IERvbnROdWxsQ2hlY2tTbG90IH07CisgICAgSGFuZGxlQmFzZShIYW5kbGVTbG90IHNsb3QsIERv
bnROdWxsQ2hlY2tTbG90VGFnKQorICAgICAgICA6IG1fc2xvdChzbG90KQorICAgIHsKKyAgICB9
CisgICAgCisgICAgSGFuZGxlU2xvdCBzbG90KCkgY29uc3QgeyByZXR1cm4gbV9zbG90OyB9Cisg
ICAgdm9pZCBpbnZhbGlkYXRlKCkKKyAgICB7CisgICAgICAgIC8vIEl0IGlzIHVuc2FmZSB0byB1
c2UgYSBoYW5kbGUgYWZ0ZXIgaW52YWxpZGF0aW5nIGl0LgorICAgICAgICBtX3Nsb3QgPSAwOwor
ICAgIH0KKworICAgIC8vIG5lZWRlZCBieSBHbG9iYWw8Pjo6b3BlcmF0b3I9IGFuZCBHbG9iYWw8
Pjo6c2V0IGlmIGl0J3MgYW4gZW1wdHkgaGFuZGxlCisgICAgdm9pZCBzZXRTbG90KEhhbmRsZVNs
b3Qgc2xvdCkKKyAgICB7CisgICAgICAgIEFTU0VSVCghbV9zbG90KTsKKyAgICAgICAgQVNTRVJU
KHNsb3QpOworICAgICAgICBtX3Nsb3QgPSBzbG90OworICAgIH0KKworcHJpdmF0ZToKKyAgICBI
YW5kbGVTbG90IG1fc2xvdDsKK307CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdHJ1Y3QgSGFu
ZGxlVHlwZXMgeworICAgIHR5cGVkZWYgVCogRXh0ZXJuYWxUeXBlOworICAgIHN0YXRpYyBFeHRl
cm5hbFR5cGUgZ2V0RnJvbVNsb3QoSGFuZGxlU2xvdCBzbG90KSB7IHJldHVybiAoc2xvdCAmJiAq
c2xvdCkgPyByZWludGVycHJldF9jYXN0PEV4dGVybmFsVHlwZT4oc2xvdC0+YXNDZWxsKCkpIDog
MDsgfQorICAgIHN0YXRpYyBKU1ZhbHVlIHRvSlNWYWx1ZShUKiBjZWxsKSB7IHJldHVybiByZWlu
dGVycHJldF9jYXN0PEpTQ2VsbCo+KGNlbGwpOyB9CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFU+
IHN0YXRpYyB2b2lkIHZhbGlkYXRlVXBjYXN0KCkgeyBUKiB0ZW1wOyB0ZW1wID0gKFUqKTA7IH0K
K307CisKK3RlbXBsYXRlIDw+IHN0cnVjdCBIYW5kbGVUeXBlczxVbmtub3duPiB7CisgICAgdHlw
ZWRlZiBKU1ZhbHVlIEV4dGVybmFsVHlwZTsKKyAgICBzdGF0aWMgRXh0ZXJuYWxUeXBlIGdldEZy
b21TbG90KEhhbmRsZVNsb3Qgc2xvdCkgeyByZXR1cm4gc2xvdCA/ICpzbG90IDogSlNWYWx1ZSgp
OyB9CisgICAgc3RhdGljIEpTVmFsdWUgdG9KU1ZhbHVlKGNvbnN0IEpTVmFsdWUmIHYpIHsgcmV0
dXJuIHY7IH0KKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVT4gc3RhdGljIHZvaWQgdmFsaWRhdGVV
cGNhc3QoKSB7fQorfTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIEJhc2UsIHR5cGVuYW1lIFQ+IHN0
cnVjdCBIYW5kbGVDb252ZXJ0ZXIgeworICAgIFQqIG9wZXJhdG9yLT4oKSB7IHJldHVybiBzdGF0
aWNfY2FzdDxCYXNlKj4odGhpcyktPmdldCgpOyB9CisgICAgY29uc3QgVCogb3BlcmF0b3ItPigp
IGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IEJhc2UqPih0aGlzKS0+Z2V0KCk7IH0K
KyAgICBUKiBvcGVyYXRvciooKSB7IHJldHVybiBzdGF0aWNfY2FzdDxCYXNlKj4odGhpcyktPmdl
dCgpOyB9CisgICAgY29uc3QgVCogb3BlcmF0b3IqKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nh
c3Q8Y29uc3QgQmFzZSo+KHRoaXMpLT5nZXQoKTsgfQorfTsKKwordGVtcGxhdGUgPHR5cGVuYW1l
IEJhc2U+IHN0cnVjdCBIYW5kbGVDb252ZXJ0ZXI8QmFzZSwgVW5rbm93bj4geworfTsKKwordGVt
cGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzIEhhbmRsZSA6IHB1YmxpYyBIYW5kbGVCYXNlLCBwdWJs
aWMgSGFuZGxlQ29udmVydGVyPEhhbmRsZTxUPiwgVD4geworcHVibGljOgorICAgIHR5cGVkZWYg
dHlwZW5hbWUgSGFuZGxlVHlwZXM8VD46OkV4dGVybmFsVHlwZSBFeHRlcm5hbFR5cGU7CisgICAg
dGVtcGxhdGUgPHR5cGVuYW1lIFU+IEhhbmRsZShIYW5kbGU8VT4gbykKKyAgICB7CisgICAgICAg
IHR5cGVuYW1lIEhhbmRsZVR5cGVzPFQ+Ojp0ZW1wbGF0ZSB2YWxpZGF0ZVVwY2FzdDxVPigpOwor
ICAgICAgICBtX3Nsb3QgPSBvLnNsb3QoKTsKKyAgICB9CisKKyAgICBFeHRlcm5hbFR5cGUgZ2V0
KCkgY29uc3QgeyByZXR1cm4gSGFuZGxlVHlwZXM8VD46OmdldEZyb21TbG90KHRoaXMtPnNsb3Qo
KSk7IH0KKworcHJvdGVjdGVkOgorCisgICAgSGFuZGxlKEhhbmRsZVNsb3Qgc2xvdCkKKyAgICAg
ICAgOiBIYW5kbGVCYXNlKHNsb3QpCisgICAgeworICAgIH0KKyAgICBIYW5kbGUoSGFuZGxlU2xv
dCBzbG90LCBIYW5kbGVCYXNlOjpEb250TnVsbENoZWNrU2xvdFRhZykKKyAgICAgICAgOiBIYW5k
bGVCYXNlKHNsb3QsIEhhbmRsZUJhc2U6OkRvbnROdWxsQ2hlY2tTbG90KQorICAgIHsKKyAgICB9
CisgICAgCitwcml2YXRlOgorICAgIGZyaWVuZCBjbGFzcyBIYW5kbGVIZWFwOworCisgICAgc3Rh
dGljIEhhbmRsZTxUPiB3cmFwU2xvdChIYW5kbGVTbG90IHNsb3QpCisgICAgeworICAgICAgICBy
ZXR1cm4gSGFuZGxlPFQ+KHNsb3QpOworICAgIH0KK307CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBU
LCB0eXBlbmFtZSBVPiBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEhhbmRsZTxUPiYgYSwg
Y29uc3QgSGFuZGxlPFU+JiBiKQoreyAKKyAgICByZXR1cm4gYS5nZXQoKSA9PSBiLmdldCgpOyAK
K30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+IGlubGluZSBib29sIG9wZXJh
dG9yPT0oY29uc3QgSGFuZGxlPFQ+JiBhLCBVKiBiKQoreyAKKyAgICByZXR1cm4gYS5nZXQoKSA9
PSBiOyAKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+IGlubGluZSBib29s
IG9wZXJhdG9yPT0oVCogYSwgY29uc3QgSGFuZGxlPFU+JiBiKSAKK3sKKyAgICByZXR1cm4gYSA9
PSBiLmdldCgpOyAKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+IGlubGlu
ZSBib29sIG9wZXJhdG9yIT0oY29uc3QgSGFuZGxlPFQ+JiBhLCBjb25zdCBIYW5kbGU8VT4mIGIp
Cit7IAorICAgIHJldHVybiBhLmdldCgpICE9IGIuZ2V0KCk7IAorfQorCit0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVCwgdHlwZW5hbWUgVT4gaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBIYW5kbGU8
VD4mIGEsIFUqIGIpCit7CisgICAgcmV0dXJuIGEuZ2V0KCkgIT0gYjsgCit9CisKK3RlbXBsYXRl
IDx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBpbmxpbmUgYm9vbCBvcGVyYXRvciE9KFQqIGEsIGNv
bnN0IEhhbmRsZTxVPiYgYikKK3sgCisgICAgcmV0dXJuIGEgIT0gYi5nZXQoKTsgCit9CisKK3Rl
bXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBpbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNv
bnN0IEhhbmRsZTxUPiYgYSwgSlNWYWx1ZSBiKQoreworICAgIHJldHVybiBhLmdldCgpICE9IGI7
IAorfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4gaW5saW5lIGJvb2wgb3Bl
cmF0b3IhPShKU1ZhbHVlIGEsIGNvbnN0IEhhbmRsZTxVPiYgYikKK3sgCisgICAgcmV0dXJuIGEg
IT0gYi5nZXQoKTsgCit9CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvY29sbGVjdG9yL2hhbmRsZXMvSGFuZGxlSGVhcC5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvY29sbGVjdG9yL2hhbmRsZXMvSGFuZGxlSGVhcC5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2Nm
ZTljZDI5M2VjMjljMzcyZWM1YmZhNDU2OWUyN2Q2YzU2NWFkZAotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9jb2xsZWN0b3IvaGFuZGxlcy9IYW5kbGVIZWFwLmNwcApA
QCAtMCwwICsxLDExMSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lu
Y2x1ZGUgIkhhbmRsZUhlYXAuaCIKKworI2luY2x1ZGUgIkpTQ2VsbC5oIgorCituYW1lc3BhY2Ug
SlNDIHsKKworSGFuZGxlSGVhcDo6SGFuZGxlSGVhcChKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEp
CisgICAgOiBtX2dsb2JhbERhdGEoZ2xvYmFsRGF0YSkKK3sKKyAgICBncm93KCk7Cit9CisKK3Zv
aWQgSGFuZGxlSGVhcDo6Z3JvdygpCit7CisgICAgTm9kZSogYmxvY2sgPSBtX2Jsb2NrU3RhY2su
Z3JvdygpOworICAgIGZvciAoaW50IGkgPSBtX2Jsb2NrU3RhY2suYmxvY2tMZW5ndGggLSAxOyBp
ID49IDA7IC0taSkgeworICAgICAgICBOb2RlKiBub2RlID0gJmJsb2NrW2ldOworICAgICAgICBu
ZXcgKG5vZGUpIE5vZGUodGhpcyk7CisgICAgICAgIG1fZnJlZUxpc3QucHVzaChub2RlKTsKKyAg
ICB9Cit9CisKK3ZvaWQgSGFuZGxlSGVhcDo6bWFya1N0cm9uZ0hhbmRsZXMoTWFya1N0YWNrJiBt
YXJrU3RhY2spCit7CisgICAgTm9kZSogZW5kID0gbV9zdHJvbmdMaXN0LmVuZCgpOworICAgIGZv
ciAoTm9kZSogbm9kZSA9IG1fc3Ryb25nTGlzdC5iZWdpbigpOyBub2RlICE9IGVuZDsgbm9kZSA9
IG5vZGUtPm5leHQoKSkKKyAgICAgICAgbWFya1N0YWNrLmRlcHJlY2F0ZWRBcHBlbmQobm9kZS0+
c2xvdCgpKTsKK30KKwordm9pZCBIYW5kbGVIZWFwOjp1cGRhdGVBZnRlck1hcmsoKQoreworICAg
IE5vZGUqIGVuZCA9IG1fd2Vha0xpc3QuZW5kKCk7CisgICAgZm9yIChOb2RlKiBub2RlID0gbV93
ZWFrTGlzdC5iZWdpbigpOyBub2RlICE9IGVuZDsgbm9kZSA9IG5vZGUtPm5leHQoKSkgeworICAg
ICAgICBKU1ZhbHVlIHZhbHVlID0gKm5vZGUtPnNsb3QoKTsKKyAgICAgICAgaWYgKCF2YWx1ZSB8
fCAhdmFsdWUuaXNDZWxsKCkpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgSlNDZWxs
KiBjZWxsID0gdmFsdWUuYXNDZWxsKCk7CisgICAgICAgIEFTU0VSVCghY2VsbCB8fCBjZWxsLT5z
dHJ1Y3R1cmUoKSk7CisKKyAgICAgICAgaWYgKEhlYXA6OmlzTWFya2VkKGNlbGwpKQorICAgICAg
ICAgICAgY29udGludWU7CisKKyAgICAgICAgaWYgKEZpbmFsaXplciBmaW5hbGl6ZXIgPSBub2Rl
LT5maW5hbGl6ZXIoKSkKKyAgICAgICAgICAgIGZpbmFsaXplcigqbV9nbG9iYWxEYXRhLCBIYW5k
bGU8VW5rbm93bj46OndyYXBTbG90KG5vZGUtPnNsb3QoKSkpOworCisgICAgICAgIGlmIChub2Rl
LT5pc1NlbGZEZXN0cm95aW5nKCkpCisgICAgICAgICAgICBkZWFsbG9jYXRlKHRvSGFuZGxlKG5v
ZGUpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgKm5vZGUtPnNsb3QoKSA9IEpTVmFsdWUo
KTsKKyAgICB9Cit9CisgICAgCit2b2lkIEhhbmRsZUhlYXA6OmNsZWFyV2Vha1BvaW50ZXJzKCkK
K3sKKyAgICBOb2RlKiBlbmQgPSBtX3dlYWtMaXN0LmVuZCgpOworICAgIGZvciAoTm9kZSogbm9k
ZSA9IG1fd2Vha0xpc3QuYmVnaW4oKTsgbm9kZSAhPSBlbmQ7IG5vZGUgPSBub2RlLT5uZXh0KCkp
IHsKKyAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9ICpub2RlLT5zbG90KCk7CisgICAgICAgIGlmICgh
dmFsdWUgfHwgIXZhbHVlLmlzQ2VsbCgpKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAg
IEFTU0VSVCh2YWx1ZS5hc0NlbGwoKS0+c3RydWN0dXJlKCkpOworCisgICAgICAgIGlmIChGaW5h
bGl6ZXIgZmluYWxpemVyID0gbm9kZS0+ZmluYWxpemVyKCkpCisgICAgICAgICAgICBmaW5hbGl6
ZXIoKm1fZ2xvYmFsRGF0YSwgSGFuZGxlPFVua25vd24+Ojp3cmFwU2xvdChub2RlLT5zbG90KCkp
KTsKKyAgICAgICAgKm5vZGUtPnNsb3QoKSA9IEpTVmFsdWUoKTsKKyAgICB9Cit9CisKK3ZvaWQg
SGFuZGxlSGVhcDo6d3JpdGVCYXJyaWVyKEhhbmRsZVNsb3Qgc2xvdCwgY29uc3QgSlNWYWx1ZSYg
dmFsdWUpCit7CisgICAgaWYgKHNsb3QtPmlzQ2VsbCgpID09IHZhbHVlLmlzQ2VsbCgpICYmICF2
YWx1ZSA9PSAhKnNsb3QpCisgICAgICAgIHJldHVybjsKKyAgICBOb2RlKiBub2RlID0gdG9Ob2Rl
KHNsb3QpOworICAgIFNlbnRpbmVsTGlua2VkTGlzdDxOb2RlPjo6cmVtb3ZlKG5vZGUpOworICAg
IGlmICghdmFsdWUuaXNDZWxsKCkgfHwgIXZhbHVlKSB7CisgICAgICAgIG1faW1tZWRpYXRlTGlz
dC5wdXNoKG5vZGUpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlmIChub2RlLT5pc1dl
YWsoKSkKKyAgICAgICAgbV93ZWFrTGlzdC5wdXNoKG5vZGUpOworICAgIGVsc2UKKyAgICAgICAg
bV9zdHJvbmdMaXN0LnB1c2gobm9kZSk7Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9jb2xsZWN0b3IvaGFuZGxlcy9IYW5kbGVIZWFwLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvY29sbGVjdG9yL2hhbmRsZXMvSGFuZGxlSGVhcC5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ5NGYz
MTc2YjAwNWQwZDFmYzA3YjY5NWMwMDkzZTQ2MmI5Njc0NjUKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvY29sbGVjdG9yL2hhbmRsZXMvSGFuZGxlSGVhcC5oCkBAIC0w
LDAgKzEsMjQyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBIYW5kbGVIZWFwX2gKKyNkZWZpbmUg
SGFuZGxlSGVhcF9oCisKKyNpbmNsdWRlICJCbG9ja1N0YWNrLmgiCisjaW5jbHVkZSAiSGFuZGxl
LmgiCisjaW5jbHVkZSAiU2VudGluZWxMaW5rZWRMaXN0LmgiCisjaW5jbHVkZSAiU2luZ2x5TGlu
a2VkTGlzdC5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgSGFuZGxlSGVhcDsKK2NsYXNz
IEpTR2xvYmFsRGF0YTsKK2NsYXNzIEpTVmFsdWU7CitjbGFzcyBNYXJrU3RhY2s7CisKK3R5cGVk
ZWYgdm9pZCAoKkZpbmFsaXplcikoSlNHbG9iYWxEYXRhJiwgSGFuZGxlPFVua25vd24+KTsKKwor
Y2xhc3MgSGFuZGxlSGVhcCB7Citwcml2YXRlOgorcHVibGljOgorICAgIHN0YXRpYyBIYW5kbGVI
ZWFwKiBoZWFwRm9yKEhhbmRsZVNsb3QpOworCisgICAgSGFuZGxlSGVhcChKU0dsb2JhbERhdGEq
KTsKKworICAgIEhhbmRsZVNsb3QgYWxsb2NhdGUoKTsKKyAgICB2b2lkIGRlYWxsb2NhdGUoSGFu
ZGxlU2xvdCk7CisgICAgCisgICAgdm9pZCBtYWtlV2VhayhIYW5kbGVTbG90LCBGaW5hbGl6ZXIp
OworICAgIHZvaWQgbWFrZVNlbGZEZXN0cm95aW5nKEhhbmRsZVNsb3QsIEZpbmFsaXplcik7CisK
KyAgICB2b2lkIG1hcmtTdHJvbmdIYW5kbGVzKE1hcmtTdGFjayYpOworICAgIHZvaWQgdXBkYXRl
QWZ0ZXJNYXJrKCk7CisgICAgCisgICAgLy8gU2hvdWxkIG9ubHkgYmUgY2FsbGVkIGR1cmluZyB0
ZWFyZG93bi4KKyAgICB2b2lkIGNsZWFyV2Vha1BvaW50ZXJzKCk7CisKKyAgICB2b2lkIHdyaXRl
QmFycmllcihIYW5kbGVTbG90LCBjb25zdCBKU1ZhbHVlJik7CisKK3ByaXZhdGU6CisgICAgdHlw
ZWRlZiB1aW50cHRyX3QgSGFuZGxlSGVhcFdpdGhGbGFnczsKKyAgICBlbnVtIHsgRmxhZ3NNYXNr
ID0gMywgV2Vha0ZsYWcgPSAxLCBTZWxmRGVzdHJveWluZ0ZsYWcgPSAyIH07CisgICAgY2xhc3Mg
Tm9kZSB7CisgICAgcHVibGljOgorICAgICAgICBOb2RlKFNlbnRpbmVsVGFnKTsKKyAgICAgICAg
Tm9kZShIYW5kbGVIZWFwKik7CisgICAgICAgIAorICAgICAgICBIYW5kbGVTbG90IHNsb3QoKTsK
KyAgICAgICAgSGFuZGxlSGVhcCogaGFuZGxlSGVhcCgpOworCisgICAgICAgIHZvaWQgc2V0Rmlu
YWxpemVyKEZpbmFsaXplcik7CisgICAgICAgIEZpbmFsaXplciBmaW5hbGl6ZXIoKTsKKworICAg
ICAgICB2b2lkIHNldFByZXYoTm9kZSopOworICAgICAgICBOb2RlKiBwcmV2KCk7CisKKyAgICAg
ICAgdm9pZCBzZXROZXh0KE5vZGUqKTsKKyAgICAgICAgTm9kZSogbmV4dCgpOworCisgICAgICAg
IGJvb2wgaXNXZWFrKCk7CisgICAgICAgIHZvaWQgbWFrZVdlYWsoKTsKKyAgICAgICAgCisgICAg
ICAgIGJvb2wgaXNTZWxmRGVzdHJveWluZygpOworICAgICAgICB2b2lkIG1ha2VTZWxmRGVzdHJv
eWluZygpOworCisgICAgcHJpdmF0ZToKKyAgICAgICAgSlNWYWx1ZSBtX3ZhbHVlOworICAgICAg
ICBIYW5kbGVIZWFwV2l0aEZsYWdzIG1faGFuZGxlSGVhcFdpdGhGbGFnczsKKyAgICAgICAgRmlu
YWxpemVyIG1fZmluYWxpemVyOworICAgICAgICBOb2RlKiBtX3ByZXY7CisgICAgICAgIE5vZGUq
IG1fbmV4dDsKKyAgICB9OworCisgICAgc3RhdGljIEhhbmRsZVNsb3QgdG9IYW5kbGUoTm9kZSop
OworICAgIHN0YXRpYyBOb2RlKiB0b05vZGUoSGFuZGxlU2xvdCk7CisKKyAgICB2b2lkIGdyb3co
KTsKKworICAgIEpTR2xvYmFsRGF0YSogbV9nbG9iYWxEYXRhOworICAgIEJsb2NrU3RhY2s8Tm9k
ZT4gbV9ibG9ja1N0YWNrOworCisgICAgU2VudGluZWxMaW5rZWRMaXN0PE5vZGU+IG1fc3Ryb25n
TGlzdDsKKyAgICBTZW50aW5lbExpbmtlZExpc3Q8Tm9kZT4gbV93ZWFrTGlzdDsKKyAgICBTZW50
aW5lbExpbmtlZExpc3Q8Tm9kZT4gbV9pbW1lZGlhdGVMaXN0OworICAgIFNpbmdseUxpbmtlZExp
c3Q8Tm9kZT4gbV9mcmVlTGlzdDsKK307CisKK2lubGluZSBIYW5kbGVIZWFwKiBIYW5kbGVIZWFw
OjpoZWFwRm9yKEhhbmRsZVNsb3QgaGFuZGxlKQoreworICAgIHJldHVybiB0b05vZGUoaGFuZGxl
KS0+aGFuZGxlSGVhcCgpOworfQorCitpbmxpbmUgSGFuZGxlU2xvdCBIYW5kbGVIZWFwOjp0b0hh
bmRsZShOb2RlKiBub2RlKQoreworICAgIHJldHVybiByZWludGVycHJldF9jYXN0PEhhbmRsZVNs
b3Q+KG5vZGUpOworfQorCitpbmxpbmUgSGFuZGxlSGVhcDo6Tm9kZSogSGFuZGxlSGVhcDo6dG9O
b2RlKEhhbmRsZVNsb3QgaGFuZGxlKQoreworICAgIHJldHVybiByZWludGVycHJldF9jYXN0PE5v
ZGUqPihoYW5kbGUpOworfQorCitpbmxpbmUgSGFuZGxlU2xvdCBIYW5kbGVIZWFwOjphbGxvY2F0
ZSgpCit7CisgICAgaWYgKG1fZnJlZUxpc3QuaXNFbXB0eSgpKQorICAgICAgICBncm93KCk7CisK
KyAgICBOb2RlKiBub2RlID0gbV9mcmVlTGlzdC5wb3AoKTsKKyAgICBuZXcgKG5vZGUpIE5vZGUo
dGhpcyk7CisgICAgbV9pbW1lZGlhdGVMaXN0LnB1c2gobm9kZSk7CisgICAgcmV0dXJuIHRvSGFu
ZGxlKG5vZGUpOworfQorCitpbmxpbmUgdm9pZCBIYW5kbGVIZWFwOjpkZWFsbG9jYXRlKEhhbmRs
ZVNsb3QgaGFuZGxlKQoreworICAgIE5vZGUqIG5vZGUgPSB0b05vZGUoaGFuZGxlKTsKKyAgICBT
ZW50aW5lbExpbmtlZExpc3Q8Tm9kZT46OnJlbW92ZShub2RlKTsKKyAgICBtX2ZyZWVMaXN0LnB1
c2gobm9kZSk7Cit9CisKK2lubGluZSB2b2lkIEhhbmRsZUhlYXA6Om1ha2VXZWFrKEhhbmRsZVNs
b3QgaGFuZGxlLCBGaW5hbGl6ZXIgZmluYWxpemVyKQoreworICAgIE5vZGUqIG5vZGUgPSB0b05v
ZGUoaGFuZGxlKTsKKyAgICBTZW50aW5lbExpbmtlZExpc3Q8Tm9kZT46OnJlbW92ZShub2RlKTsK
KyAgICBub2RlLT5zZXRGaW5hbGl6ZXIoZmluYWxpemVyKTsKKyAgICBub2RlLT5tYWtlV2Vhaygp
OworICAgIGlmIChoYW5kbGUtPmlzQ2VsbCgpICYmICpoYW5kbGUpCisgICAgICAgIG1fd2Vha0xp
c3QucHVzaChub2RlKTsKKyAgICBlbHNlCisgICAgICAgIG1faW1tZWRpYXRlTGlzdC5wdXNoKG5v
ZGUpOworfQorCitpbmxpbmUgdm9pZCBIYW5kbGVIZWFwOjptYWtlU2VsZkRlc3Ryb3lpbmcoSGFu
ZGxlU2xvdCBoYW5kbGUsIEZpbmFsaXplciBmaW5hbGl6ZXIpCit7CisgICAgbWFrZVdlYWsoaGFu
ZGxlLCBmaW5hbGl6ZXIpOworICAgIE5vZGUqIG5vZGUgPSB0b05vZGUoaGFuZGxlKTsKKyAgICBT
ZW50aW5lbExpbmtlZExpc3Q8Tm9kZT46OnJlbW92ZShub2RlKTsKKyAgICBub2RlLT5tYWtlU2Vs
ZkRlc3Ryb3lpbmcoKTsKK30KKworaW5saW5lIEhhbmRsZUhlYXA6Ok5vZGU6Ok5vZGUoSGFuZGxl
SGVhcCogaGFuZGxlSGVhcCkKKyAgICA6IG1faGFuZGxlSGVhcFdpdGhGbGFncyhyZWludGVycHJl
dF9jYXN0PHVpbnRwdHJfdD4oaGFuZGxlSGVhcCkpCisgICAgLCBtX2ZpbmFsaXplcigwKQorewor
fQorCitpbmxpbmUgSGFuZGxlSGVhcDo6Tm9kZTo6Tm9kZShTZW50aW5lbFRhZykKKyAgICA6IG1f
aGFuZGxlSGVhcFdpdGhGbGFncygwKQorICAgICwgbV9maW5hbGl6ZXIoMCkKK3sKK30KKworaW5s
aW5lIEhhbmRsZVNsb3QgSGFuZGxlSGVhcDo6Tm9kZTo6c2xvdCgpCit7CisgICAgcmV0dXJuICZt
X3ZhbHVlOworfQorCitpbmxpbmUgSGFuZGxlSGVhcCogSGFuZGxlSGVhcDo6Tm9kZTo6aGFuZGxl
SGVhcCgpCit7CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8SGFuZGxlSGVhcCo+KG1faGFu
ZGxlSGVhcFdpdGhGbGFncyAmIH5GbGFnc01hc2spOworfQorCitpbmxpbmUgdm9pZCBIYW5kbGVI
ZWFwOjpOb2RlOjpzZXRGaW5hbGl6ZXIoRmluYWxpemVyIGZpbmFsaXplcikKK3sKKyAgICBtX2Zp
bmFsaXplciA9IGZpbmFsaXplcjsKK30KKworaW5saW5lIHZvaWQgSGFuZGxlSGVhcDo6Tm9kZTo6
bWFrZVdlYWsoKQoreworICAgIEFTU0VSVCghKG1faGFuZGxlSGVhcFdpdGhGbGFncyAmIFdlYWtG
bGFnKSk7CisgICAgbV9oYW5kbGVIZWFwV2l0aEZsYWdzIHw9IFdlYWtGbGFnOworfQorCitpbmxp
bmUgYm9vbCBIYW5kbGVIZWFwOjpOb2RlOjppc1dlYWsoKQoreworICAgIHJldHVybiAhIShtX2hh
bmRsZUhlYXBXaXRoRmxhZ3MgJiBXZWFrRmxhZyk7Cit9CisKK2lubGluZSB2b2lkIEhhbmRsZUhl
YXA6Ok5vZGU6Om1ha2VTZWxmRGVzdHJveWluZygpCit7CisgICAgQVNTRVJUKG1faGFuZGxlSGVh
cFdpdGhGbGFncyAmIFdlYWtGbGFnKTsKKyAgICBBU1NFUlQoIShtX2hhbmRsZUhlYXBXaXRoRmxh
Z3MgJiBTZWxmRGVzdHJveWluZ0ZsYWcpKTsKKyAgICBtX2hhbmRsZUhlYXBXaXRoRmxhZ3MgfD0g
U2VsZkRlc3Ryb3lpbmdGbGFnOworfQorCitpbmxpbmUgYm9vbCBIYW5kbGVIZWFwOjpOb2RlOjpp
c1NlbGZEZXN0cm95aW5nKCkKK3sKKyAgICByZXR1cm4gISEobV9oYW5kbGVIZWFwV2l0aEZsYWdz
ICYgU2VsZkRlc3Ryb3lpbmdGbGFnKTsKK30KKworaW5saW5lIEZpbmFsaXplciBIYW5kbGVIZWFw
OjpOb2RlOjpmaW5hbGl6ZXIoKQoreworICAgIHJldHVybiBtX2ZpbmFsaXplcjsKK30KKworaW5s
aW5lIHZvaWQgSGFuZGxlSGVhcDo6Tm9kZTo6c2V0UHJldihOb2RlKiBwcmV2KQoreworICAgIG1f
cHJldiA9IHByZXY7Cit9CisKK2lubGluZSBIYW5kbGVIZWFwOjpOb2RlKiBIYW5kbGVIZWFwOjpO
b2RlOjpwcmV2KCkKK3sKKyAgICByZXR1cm4gbV9wcmV2OworfQorCitpbmxpbmUgdm9pZCBIYW5k
bGVIZWFwOjpOb2RlOjpzZXROZXh0KE5vZGUqIG5leHQpCit7CisgICAgbV9uZXh0ID0gbmV4dDsK
K30KKworaW5saW5lIEhhbmRsZUhlYXA6Ok5vZGUqIEhhbmRsZUhlYXA6Ok5vZGU6Om5leHQoKQor
eworICAgIHJldHVybiBtX25leHQ7Cit9CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvY29sbGVjdG9yL2hhbmRsZXMvU2VudGluZWxMaW5rZWRMaXN0Lmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvY29sbGVjdG9yL2hhbmRsZXMvU2VudGluZWxMaW5rZWRM
aXN0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uOTEzMzk1MWE3ZjVmNzc2ZWMwZjFmNDAwN2NlMGM5MzU2MDcwZjVl
YQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9jb2xsZWN0b3IvaGFu
ZGxlcy9TZW50aW5lbExpbmtlZExpc3QuaApAQCAtMCwwICsxLDEwMyBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
Ky8qCisgICAgQSBTZW50aW5lbExpbmtlZExpc3QgaXMgYSBsaW5rZWQgbGlzdCB3aXRoIGR1bW15
IGhlYWQgYW5kIHRhaWwgc2VudGluZWxzLAorICAgIHdoaWNoIGFsbG93IGZvciBicmFuY2gtbGVz
cyBpbnNlcnRpb24gYW5kIHJlbW92YWwsIGFuZCByZW1vdmFsIHdpdGhvdXQgYQorICAgIHBvaW50
ZXIgdG8gdGhlIGxpc3QuCisgICAgCisgICAgUmVxdWlyZXM6IE5vZGUgaXMgYSBjb25jcmV0ZSBj
bGFzcyB3aXRoOgorICAgICAgICBOb2RlKFNlbnRpbmVsVGFnKTsKKyAgICAgICAgdm9pZCBzZXRQ
cmV2KE5vZGUqKTsKKyAgICAgICAgTm9kZSogcHJldigpOworICAgICAgICB2b2lkIHNldE5leHQo
Tm9kZSopOworICAgICAgICBOb2RlKiBuZXh0KCk7CisqLworCituYW1lc3BhY2UgSlNDIHsKKwor
ZW51bSBTZW50aW5lbFRhZyB7IFNlbnRpbmVsIH07CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBOb2Rl
PiBjbGFzcyBTZW50aW5lbExpbmtlZExpc3QgeworcHVibGljOgorICAgIHR5cGVkZWYgTm9kZSog
aXRlcmF0b3I7CisKKyAgICBTZW50aW5lbExpbmtlZExpc3QoKTsKKworICAgIHZvaWQgcHVzaChO
b2RlKik7CisgICAgc3RhdGljIHZvaWQgcmVtb3ZlKE5vZGUqKTsKKworICAgIGl0ZXJhdG9yIGJl
Z2luKCk7CisgICAgaXRlcmF0b3IgZW5kKCk7CisKK3ByaXZhdGU6CisgICAgTm9kZSBtX2hlYWRT
ZW50aW5lbDsKKyAgICBOb2RlIG1fdGFpbFNlbnRpbmVsOworfTsKKwordGVtcGxhdGUgPHR5cGVu
YW1lIE5vZGU+IGlubGluZSBTZW50aW5lbExpbmtlZExpc3Q8Tm9kZT46OlNlbnRpbmVsTGlua2Vk
TGlzdCgpCisgICAgOiBtX2hlYWRTZW50aW5lbChTZW50aW5lbCkKKyAgICAsIG1fdGFpbFNlbnRp
bmVsKFNlbnRpbmVsKQoreworICAgIG1faGVhZFNlbnRpbmVsLnNldE5leHQoJm1fdGFpbFNlbnRp
bmVsKTsKKyAgICBtX2hlYWRTZW50aW5lbC5zZXRQcmV2KDApOworCisgICAgbV90YWlsU2VudGlu
ZWwuc2V0UHJldigmbV9oZWFkU2VudGluZWwpOworICAgIG1fdGFpbFNlbnRpbmVsLnNldE5leHQo
MCk7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBOb2RlPiBpbmxpbmUgdHlwZW5hbWUgU2VudGlu
ZWxMaW5rZWRMaXN0PE5vZGU+OjppdGVyYXRvciBTZW50aW5lbExpbmtlZExpc3Q8Tm9kZT46OmJl
Z2luKCkKK3sKKyAgICByZXR1cm4gbV9oZWFkU2VudGluZWwubmV4dCgpOworfQorCit0ZW1wbGF0
ZSA8dHlwZW5hbWUgTm9kZT4gaW5saW5lIHR5cGVuYW1lIFNlbnRpbmVsTGlua2VkTGlzdDxOb2Rl
Pjo6aXRlcmF0b3IgU2VudGluZWxMaW5rZWRMaXN0PE5vZGU+OjplbmQoKQoreworICAgIHJldHVy
biAmbV90YWlsU2VudGluZWw7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBOb2RlPiBpbmxpbmUg
dm9pZCBTZW50aW5lbExpbmtlZExpc3Q8Tm9kZT46OnB1c2goTm9kZSogbm9kZSkKK3sKKyAgICBB
U1NFUlQobm9kZSk7CisgICAgTm9kZSogcHJldiA9ICZtX2hlYWRTZW50aW5lbDsKKyAgICBOb2Rl
KiBuZXh0ID0gbV9oZWFkU2VudGluZWwubmV4dCgpOworCisgICAgbm9kZS0+c2V0UHJldihwcmV2
KTsKKyAgICBub2RlLT5zZXROZXh0KG5leHQpOworCisgICAgcHJldi0+c2V0TmV4dChub2RlKTsK
KyAgICBuZXh0LT5zZXRQcmV2KG5vZGUpOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgTm9kZT4g
aW5saW5lIHZvaWQgU2VudGluZWxMaW5rZWRMaXN0PE5vZGU+OjpyZW1vdmUoTm9kZSogbm9kZSkK
K3sKKyAgICBOb2RlKiBwcmV2ID0gbm9kZS0+cHJldigpOworICAgIE5vZGUqIG5leHQgPSBub2Rl
LT5uZXh0KCk7CisKKyAgICBwcmV2LT5zZXROZXh0KG5leHQpOworICAgIG5leHQtPnNldFByZXYo
cHJldik7Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9jb2xsZWN0
b3IvaGFuZGxlcy9TaW5nbHlMaW5rZWRMaXN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvY29s
bGVjdG9yL2hhbmRsZXMvU2luZ2x5TGlua2VkTGlzdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjExMzkwZWE0NWUw
YjQ5ODAxOTZlZjU3Yjc5MDUyYzU4MDY0YTU0NzMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvY29sbGVjdG9yL2hhbmRsZXMvU2luZ2x5TGlua2VkTGlzdC5oCkBAIC0w
LDAgKzEsNzAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFNpbmdseUxpbmtlZExpc3RfaAorI2Rl
ZmluZSBTaW5nbHlMaW5rZWRMaXN0X2gKKworbmFtZXNwYWNlIEpTQyB7CisKK3RlbXBsYXRlIDx0
eXBlbmFtZSBOb2RlPiBjbGFzcyBTaW5nbHlMaW5rZWRMaXN0IHsKK3B1YmxpYzoKKyAgICBTaW5n
bHlMaW5rZWRMaXN0KCk7CisgICAgCisgICAgYm9vbCBpc0VtcHR5KCk7CisKKyAgICB2b2lkIHB1
c2goTm9kZSopOworICAgIE5vZGUqIHBvcCgpOworCitwcml2YXRlOgorICAgIE5vZGUqIG1faGVh
ZDsKK307CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBOb2RlPiBpbmxpbmUgU2luZ2x5TGlua2VkTGlz
dDxOb2RlPjo6U2luZ2x5TGlua2VkTGlzdCgpCisgICAgOiBtX2hlYWQoMCkKK3sKK30KKwordGVt
cGxhdGUgPHR5cGVuYW1lIE5vZGU+IGlubGluZSBib29sIFNpbmdseUxpbmtlZExpc3Q8Tm9kZT46
OmlzRW1wdHkoKQoreworICAgIHJldHVybiAhbV9oZWFkOworfQorCit0ZW1wbGF0ZSA8dHlwZW5h
bWUgTm9kZT4gaW5saW5lIHZvaWQgU2luZ2x5TGlua2VkTGlzdDxOb2RlPjo6cHVzaChOb2RlKiBu
b2RlKQoreworICAgIEFTU0VSVChub2RlKTsKKyAgICBub2RlLT5zZXROZXh0KG1faGVhZCk7Cisg
ICAgbV9oZWFkID0gbm9kZTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIE5vZGU+IGlubGluZSBO
b2RlKiBTaW5nbHlMaW5rZWRMaXN0PE5vZGU+Ojpwb3AoKQoreworICAgIE5vZGUqIHRtcCA9IG1f
aGVhZDsKKyAgICBtX2hlYWQgPSBtX2hlYWQtPm5leHQoKTsKKyAgICByZXR1cm4gdG1wOworfQor
Cit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJl
dGVyL0ludGVycHJldGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9J
bnRlcnByZXRlci5jcHAKaW5kZXggYzI2MTJhYzBiOWI2MTVkNmM1MWRhNzI1ZWUyMWJkOWMwMjA0
NDNiYy4uNjI0NDZlNTVjNTI4MjkwMDhjNTdmN2U0NjlhNDJiYTlkOTJiNTQ1YyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCkBAIC00
MTksOSArNDE5LDEwIEBAIE5FVkVSX0lOTElORSBKU1ZhbHVlIEludGVycHJldGVyOjpjYWxsRXZh
bChDYWxsRnJhbWUqIGNhbGxGcmFtZSwgUmVnaXN0ZXJGaWxlKiByCiAgICAgcmV0dXJuIGNhbGxG
cmFtZS0+Z2xvYmFsRGF0YSgpLmludGVycHJldGVyLT5leGVjdXRlKGV2YWwuZ2V0KCksIGNhbGxG
cmFtZSwgY2FsbEZyYW1lLT51bmNoZWNrZWRSKGNvZGVCbG9jay0+dGhpc1JlZ2lzdGVyKCkpLmpz
VmFsdWUoKS50b1RoaXNPYmplY3QoY2FsbEZyYW1lKSwgY2FsbEZyYW1lLT5yZWdpc3RlcnMoKSAt
IHJlZ2lzdGVyRmlsZS0+c3RhcnQoKSArIHJlZ2lzdGVyT2Zmc2V0LCBzY29wZUNoYWluKTsKIH0K
IAotSW50ZXJwcmV0ZXI6OkludGVycHJldGVyKCkKK0ludGVycHJldGVyOjpJbnRlcnByZXRlcihK
U0dsb2JhbERhdGEmIGdsb2JhbERhdGEpCiAgICAgOiBtX3NhbXBsZUVudHJ5RGVwdGgoMCkKICAg
ICAsIG1fcmVlbnRyeURlcHRoKDApCisgICAgLCBtX3JlZ2lzdGVyRmlsZShnbG9iYWxEYXRhKQog
ewogI2lmIEVOQUJMRShDT01QVVRFRF9HT1RPX0lOVEVSUFJFVEVSKQogICAgIHByaXZhdGVFeGVj
dXRlKEluaXRpYWxpemVBbmRSZXR1cm4sIDAsIDApOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaAppbmRleCA3NTNkOTBlNGFlNDIzMjc1MTMyZTYw
MmI0MGVlZGM3M2NhZTM3MDAxLi44ZjI5ZjYwYjMyZDYyYmJiOTM3OGVhM2Q2MGViZjRmZDhhMjc4
ZGZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJw
cmV0ZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0
ZXIuaApAQCAtNjksNyArNjksNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgZnJpZW5kIGNs
YXNzIEpJVDsKICAgICAgICAgZnJpZW5kIGNsYXNzIENhY2hlZENhbGw7CiAgICAgcHVibGljOgot
ICAgICAgICBJbnRlcnByZXRlcigpOworICAgICAgICBJbnRlcnByZXRlcihKU0dsb2JhbERhdGEm
KTsKIAogICAgICAgICBSZWdpc3RlckZpbGUmIHJlZ2lzdGVyRmlsZSgpIHsgcmV0dXJuIG1fcmVn
aXN0ZXJGaWxlOyB9CiAgICAgICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ludGVycHJldGVyL1JlZ2lzdGVyRmlsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50
ZXJwcmV0ZXIvUmVnaXN0ZXJGaWxlLmNwcAppbmRleCA0YzM3Njc2NjJjOWVkMTczNTk0Y2JlNTdk
MzQxZTU5ZDRiZDRmZGEzLi5mNWMwMjE4OWY1OTRjNWIwYTAzM2MzNjI0MzhkNWFiZDUwNjhiMTAx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvUmVnaXN0ZXJG
aWxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvUmVnaXN0ZXJG
aWxlLmNwcApAQCAtMjksNiArMjksOCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUg
IlJlZ2lzdGVyRmlsZS5oIgogCisjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKKyNpbmNsdWRlICJK
U0dsb2JhbERhdGEuaCIKICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgogCiBuYW1lc3BhY2Ug
SlNDIHsKQEAgLTYyLDkgKzY0LDEwIEBAIHZvaWQgUmVnaXN0ZXJGaWxlOjpzZXRHbG9iYWxPYmpl
Y3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKICAgICBtX2dsb2JhbE9iamVjdCA9IGds
b2JhbE9iamVjdDsKIH0KIAotYm9vbCBSZWdpc3RlckZpbGU6OmNsZWFyR2xvYmFsT2JqZWN0KEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCit2b2lkIFJlZ2lzdGVyRmlsZTo6Z2xvYmFsT2Jq
ZWN0Q29sbGVjdGVkKEpTR2xvYmFsRGF0YSYsIEhhbmRsZTxVbmtub3duPiB2YWx1ZSkKIHsKLSAg
ICByZXR1cm4gbV9nbG9iYWxPYmplY3QuY2xlYXIoZ2xvYmFsT2JqZWN0KTsKKyAgICBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gYXNHbG9iYWxPYmplY3QodmFsdWUuZ2V0KCkpOworICAg
IGdsb2JhbE9iamVjdC0+Z2xvYmFsRGF0YSgpLmludGVycHJldGVyLT5yZWdpc3RlckZpbGUoKS5z
ZXROdW1HbG9iYWxzKDApOwogfQogCiBKU0dsb2JhbE9iamVjdCogUmVnaXN0ZXJGaWxlOjpnbG9i
YWxPYmplY3QoKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVy
L1JlZ2lzdGVyRmlsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1JlZ2lz
dGVyRmlsZS5oCmluZGV4IGU5YzZkZjFlNWM3OWNhN2ZkZjI5ZDVhODRmZTFjMDM1MjJhMjgzNmQu
LmViZmQ0NmRlYWI5Yzk3ZmIwNDNjNjQ5MTk1ODlmN2I1NTM3MjdmZWIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9SZWdpc3RlckZpbGUuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvUmVnaXN0ZXJGaWxlLmgKQEAgLTExMiw3ICsx
MTIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgLy8gQWxsb3cgOGsgb2YgZXhjZXNzIHJl
Z2lzdGVycyBiZWZvcmUgd2Ugc3RhcnQgdHJ5aW5nIHRvIHJlYXAgdGhlIHJlZ2lzdGVyZmlsZQog
ICAgICAgICBzdGF0aWMgY29uc3QgcHRyZGlmZl90IG1heEV4Y2Vzc0NhcGFjaXR5ID0gOCAqIDEw
MjQ7CiAKLSAgICAgICAgUmVnaXN0ZXJGaWxlKHNpemVfdCBjYXBhY2l0eSA9IGRlZmF1bHRDYXBh
Y2l0eSwgc2l6ZV90IG1heEdsb2JhbHMgPSBkZWZhdWx0TWF4R2xvYmFscyk7CisgICAgICAgIFJl
Z2lzdGVyRmlsZShKU0dsb2JhbERhdGEmLCBzaXplX3QgY2FwYWNpdHkgPSBkZWZhdWx0Q2FwYWNp
dHksIHNpemVfdCBtYXhHbG9iYWxzID0gZGVmYXVsdE1heEdsb2JhbHMpOwogICAgICAgICB+UmVn
aXN0ZXJGaWxlKCk7CiAKICAgICAgICAgUmVnaXN0ZXIqIHN0YXJ0KCkgY29uc3QgeyByZXR1cm4g
bV9zdGFydDsgfQpAQCAtMTIwLDcgKzEyMCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBz
aXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZW5kIC0gbV9zdGFydDsgfQogCiAgICAgICAg
IHZvaWQgc2V0R2xvYmFsT2JqZWN0KEpTR2xvYmFsT2JqZWN0Kik7Ci0gICAgICAgIGJvb2wgY2xl
YXJHbG9iYWxPYmplY3QoSlNHbG9iYWxPYmplY3QqKTsKKyAgICAgICAgc3RhdGljIHZvaWQgZ2xv
YmFsT2JqZWN0Q29sbGVjdGVkKEpTR2xvYmFsRGF0YSYsIEhhbmRsZTxVbmtub3duPik7CiAgICAg
ICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QoKTsKIAogICAgICAgICBib29sIGdyb3co
UmVnaXN0ZXIqIG5ld0VuZCk7CkBAIC0xNTAsMTYgKzE1MCwxNiBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgV2Vha0dDUHRyPEpTR2xvYmFsT2JqZWN0PiBtX2dsb2JhbE9iamVjdDsgLy8gVGhl
IGdsb2JhbCBvYmplY3Qgd2hvc2UgdmFycyBhcmUgY3VycmVudGx5IHN0b3JlZCBpbiB0aGUgcmVn
aXN0ZXIgZmlsZS4KICAgICB9OwogCi0gICAgaW5saW5lIFJlZ2lzdGVyRmlsZTo6UmVnaXN0ZXJG
aWxlKHNpemVfdCBjYXBhY2l0eSwgc2l6ZV90IG1heEdsb2JhbHMpCisgICAgaW5saW5lIFJlZ2lz
dGVyRmlsZTo6UmVnaXN0ZXJGaWxlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgc2l6ZV90IGNh
cGFjaXR5LCBzaXplX3QgbWF4R2xvYmFscykKICAgICAgICAgOiBtX251bUdsb2JhbHMoMCkKICAg
ICAgICAgLCBtX21heEdsb2JhbHMobWF4R2xvYmFscykKICAgICAgICAgLCBtX3N0YXJ0KDApCiAg
ICAgICAgICwgbV9lbmQoMCkKICAgICAgICAgLCBtX21heCgwKQorICAgICAgICAsIG1fZ2xvYmFs
T2JqZWN0KGdsb2JhbERhdGEsIGdsb2JhbE9iamVjdENvbGxlY3RlZCkKICAgICB7CiAgICAgICAg
IEFTU0VSVChtYXhHbG9iYWxzICYmIGlzUGFnZUFsaWduZWQobWF4R2xvYmFscykpOwogICAgICAg
ICBBU1NFUlQoY2FwYWNpdHkgJiYgaXNQYWdlQWxpZ25lZChjYXBhY2l0eSkpOwotCiAgICAgICAg
IHNpemVfdCBidWZmZXJMZW5ndGggPSAoY2FwYWNpdHkgKyBtYXhHbG9iYWxzKSAqIHNpemVvZihS
ZWdpc3Rlcik7CiAgICAgICAgIG1fcmVzZXJ2YXRpb24gPSBQYWdlUmVzZXJ2YXRpb246OnJlc2Vy
dmUocm91bmRVcEFsbG9jYXRpb25TaXplKGJ1ZmZlckxlbmd0aCwgY29tbWl0U2l6ZSksIE9TQWxs
b2NhdG9yOjpKU1ZNU3RhY2tQYWdlcyk7CiAgICAgICAgIHZvaWQqIGJhc2UgPSBtX3Jlc2VydmF0
aW9uLmJhc2UoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dD
SGFuZGxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dDSGFuZGxlLmNwcApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjk3ZGUzOGNlMGMxZjk1YTQxNWQyMDIxYTdi
NmZhYWU1OGU2YzdkNC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HQ0hhbmRsZS5jcHAKKysrIC9kZXYv
bnVsbApAQCAtMSw4NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0g
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgot
I2luY2x1ZGUgIkdDSGFuZGxlLmgiCi0KLW5hbWVzcGFjZSBKU0MgewotCi1XZWFrR0NIYW5kbGVQ
b29sKiBXZWFrR0NIYW5kbGU6OnBvb2woKQotewotICAgIHVpbnRwdHJfdCBwb29sID0gKHJlaW50
ZXJwcmV0X2Nhc3Q8dWludHB0cl90Pih0aGlzKSAmIFdlYWtHQ0hhbmRsZVBvb2w6OnBvb2xNYXNr
KTsKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxXZWFrR0NIYW5kbGVQb29sKj4ocG9vbCk7
Ci19Ci0KLVdlYWtHQ0hhbmRsZVBvb2w6OldlYWtHQ0hhbmRsZVBvb2woKQotewotICAgIEFTU0VS
VChzaXplb2YoV2Vha0dDSGFuZGxlUG9vbCkgPD0gV2Vha0dDSGFuZGxlUG9vbDo6cG9vbFNpemUp
OwotICAgIG1fZW50cmllc1NpemUgPSAwOwotICAgIG1faW5pdGlhbEFsbG9jID0gMTsKLSAgICBt
X2VudHJpZXNbMF0uc2V0TmV4dEluRnJlZUxpc3QoMCk7Ci19Ci0KLVdlYWtHQ0hhbmRsZSogV2Vh
a0dDSGFuZGxlUG9vbDo6YWxsb2NhdGUoSlNDZWxsKiBjZWxsKQotewotICAgIEFTU0VSVChjZWxs
KTsKLSAgICBBU1NFUlQobV9lbnRyaWVzWzBdLmlzTmV4dCgpKTsKLSAgICB1bnNpZ25lZCBmcmVl
TGlzdCA9IG1fZW50cmllc1swXS5nZXROZXh0SW5GcmVlTGlzdCgpOwotICAgIEFTU0VSVChmcmVl
TGlzdCA8IFdlYWtHQ0hhbmRsZVBvb2w6Om51bVBvb2xFbnRyaWVzKTsKLSAgICBBU1NFUlQobV9l
bnRyaWVzU2l6ZSA8IFdlYWtHQ0hhbmRsZVBvb2w6Om51bVBvb2xFbnRyaWVzKTsKLQotICAgIGlm
IChtX2VudHJpZXNTaXplID09IFdlYWtHQ0hhbmRsZVBvb2w6Om51bVBvb2xFbnRyaWVzIC0gMSkK
LSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBpZiAoZnJlZUxpc3QpIHsKLSAgICAgICAgdW5zaWdu
ZWQgaSA9IGZyZWVMaXN0OwotICAgICAgICBmcmVlTGlzdCA9IG1fZW50cmllc1tpXS5nZXROZXh0
SW5GcmVlTGlzdCgpOwotICAgICAgICBtX2VudHJpZXNbaV0uc2V0KGNlbGwpOwotICAgICAgICBt
X2VudHJpZXNbMF0uc2V0TmV4dEluRnJlZUxpc3QoZnJlZUxpc3QpOwotICAgICAgICArK21fZW50
cmllc1NpemU7Ci0gICAgICAgIHJldHVybiAmbV9lbnRyaWVzW2ldOwotICAgIH0KLQotICAgIEFT
U0VSVChtX2luaXRpYWxBbGxvYyA8IFdlYWtHQ0hhbmRsZVBvb2w6Om51bVBvb2xFbnRyaWVzKTsK
LQotICAgIHVuc2lnbmVkIGkgPSBtX2luaXRpYWxBbGxvYzsKLSAgICArK21faW5pdGlhbEFsbG9j
OwotICAgIG1fZW50cmllc1tpXS5zZXQoY2VsbCk7Ci0gICAgKyttX2VudHJpZXNTaXplOwotICAg
IHJldHVybiAmbV9lbnRyaWVzW2ldOwotCi19Ci0KLXZvaWQgV2Vha0dDSGFuZGxlUG9vbDo6ZnJl
ZShXZWFrR0NIYW5kbGUqIGhhbmRsZSkKLXsKLSAgICBBU1NFUlQoaGFuZGxlLT5wb29sKCkgPT0g
dGhpcyk7Ci0gICAgQVNTRVJUKG1fZW50cmllc1swXS5pc05leHQoKSk7Ci0gICAgdW5zaWduZWQg
ZnJlZUxpc3QgPSBtX2VudHJpZXNbMF0uZ2V0TmV4dEluRnJlZUxpc3QoKTsKLSAgICBBU1NFUlQo
ZnJlZUxpc3QgPCBXZWFrR0NIYW5kbGVQb29sOjpudW1Qb29sRW50cmllcyk7Ci0gICAgaGFuZGxl
LT5zZXROZXh0SW5GcmVlTGlzdChmcmVlTGlzdCk7Ci0gICAgbV9lbnRyaWVzWzBdLnNldE5leHRJ
bkZyZWVMaXN0KGhhbmRsZSAtIG1fZW50cmllcyk7Ci0gICAgLS1tX2VudHJpZXNTaXplOwotfQot
Ci19CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HQ0hhbmRsZS5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR0NIYW5kbGUuaApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggODgxOGY3OTZhYzQwOGY2ZTlhZDE4YTU5ODliOTNhMGMyNjlhNWE1
ZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9HQ0hhbmRsZS5oCisrKyAvZGV2L251bGwKQEAgLTEsMTE2
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0Ogot
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
Ci0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgot
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIEdDSGFuZGxlX2gKLSNkZWZpbmUgR0NIYW5k
bGVfaAotCi0jaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KLQotbmFtZXNwYWNlIEpTQyB7Ci0K
LWNsYXNzIEhlYXA7Ci1jbGFzcyBKU0NlbGw7Ci1jbGFzcyBXZWFrR0NIYW5kbGU7Ci1jbGFzcyBX
ZWFrR0NIYW5kbGVQb29sOwotCi1jbGFzcyBXZWFrR0NIYW5kbGUgewotICAgIGZyaWVuZCBjbGFz
cyBXZWFrR0NIYW5kbGVQb29sOwotCi1wdWJsaWM6Ci0gICAgLy8gQmVjYXVzZSBKU0NlbGwgb2Jq
ZWN0cyBhcmUgYWxpZ25lZCwgd2UgY2FuIHVzZSB0aGUgbG93ZXIgdHdvIGJpdHMgYXMKLSAgICAv
LyBzdGF0dXMgZmxhZ3MuIFRoZSBsZWFzdCBzaWduaWZpY2FudCBiaXQgaXMgc2V0IHdoZW4gdGhl
IGhhbmRsZSBpcyBub3QgYQotICAgIC8vIHBvaW50ZXIsIGkuZS4gd2hlbiBpdCdzIHVzZWQgYXMg
YSBvZmZzZXQgZm9yIHRoZSBmcmVlIGxpc3QgaW4KLSAgICAvLyBXZWFrR0NIYW5kbGVQb29sLiBU
aGUgc2Vjb25kIGxlYXN0IHNpZ25pZmljYW50IGJpdCBpcyBzZXQgd2hlbiB0aGUgb2JqZWN0Ci0g
ICAgLy8gdGhlIHBvaW50ZXIgY29ycmVzcG9uZHMgdG8gaGFzIGJlZW4gZGVsZXRlZCBieSBhIGdh
cmJhZ2UgY29sbGVjdGlvbgotCi0gICAgYm9vbCBpc1ZhbGlkUHRyKCkgeyByZXR1cm4gIShtX3B0
ciAmIDMpOyB9Ci0gICAgYm9vbCBpc1B0cigpIHsgcmV0dXJuICEobV9wdHIgJiAxKTsgfQotICAg
IGJvb2wgaXNOZXh0KCkgeyByZXR1cm4gKG1fcHRyICYgMykgPT0gMTsgfQotCi0gICAgdm9pZCBp
bnZhbGlkYXRlKCkKLSAgICB7Ci0gICAgICAgIEFTU0VSVChpc1ZhbGlkUHRyKCkpOwotICAgICAg
ICBtX3B0ciB8PSAyOwotICAgIH0KLQotICAgIEpTQ2VsbCogZ2V0KCkKLSAgICB7Ci0gICAgICAg
IEFTU0VSVChpc1B0cigpKTsKLSAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8SlNDZWxs
Kj4obV9wdHIgJiB+Myk7Ci0gICAgfQotCi0gICAgdm9pZCBzZXQoSlNDZWxsKiBwKQotICAgIHsK
LSAgICAgICAgbV9wdHIgPSByZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4ocCk7Ci0gICAgICAg
IEFTU0VSVChpc1B0cigpKTsKLSAgICB9Ci0KLSAgICBXZWFrR0NIYW5kbGVQb29sKiBwb29sKCk7
Ci0KLXByaXZhdGU6Ci0gICAgdWludHB0cl90IGdldE5leHRJbkZyZWVMaXN0KCkKLSAgICB7Ci0g
ICAgICAgIEFTU0VSVChpc05leHQoKSk7Ci0gICAgICAgIHJldHVybiBtX3B0ciA+PiAyOwotICAg
IH0KLQotICAgIHZvaWQgc2V0TmV4dEluRnJlZUxpc3QodWludHB0cl90IG4pCi0gICAgewotICAg
ICAgICBtX3B0ciA9IChuIDw8IDIpIHwgMTsKLSAgICAgICAgQVNTRVJUKGlzTmV4dCgpKTsKLSAg
ICB9Ci0KLSAgICB1aW50cHRyX3QgbV9wdHI7Ci19OwotCi1jbGFzcyBXZWFrR0NIYW5kbGVQb29s
IHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IHBvb2xTaXplID0gMzIgKiAxMDI0
OyAvLyAzMmsKLSAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IHBvb2xNYXNrID0gfihwb29sU2l6ZSAt
IDEpOwotICAgIHN0YXRpYyBjb25zdCBzaXplX3QgbnVtUG9vbEVudHJpZXMgPSAocG9vbFNpemUg
LSBzaXplb2YoSGVhcCopIC0gMyAqIHNpemVvZih1bnNpZ25lZCkpIC8gc2l6ZW9mKFdlYWtHQ0hh
bmRsZSk7Ci0KLSAgICBXZWFrR0NIYW5kbGVQb29sKCk7Ci0KLSAgICBXZWFrR0NIYW5kbGUqIGFs
bG9jYXRlKEpTQ2VsbCogY2VsbCk7Ci0gICAgdm9pZCBmcmVlKFdlYWtHQ0hhbmRsZSopOwotCi0g
ICAgYm9vbCBpc0Z1bGwoKQotICAgIHsKLSAgICAgICAgQVNTRVJUKG1fZW50cmllc1NpemUgPCBX
ZWFrR0NIYW5kbGVQb29sOjpudW1Qb29sRW50cmllcyk7Ci0gICAgICAgIHJldHVybiBtX2VudHJp
ZXNTaXplID09IFdlYWtHQ0hhbmRsZVBvb2w6Om51bVBvb2xFbnRyaWVzIC0gMTsKLSAgICB9Ci0K
LSAgICB2b2lkIHVwZGF0ZSgpOwotCi1wcml2YXRlOgotICAgIEhlYXAqIG1faGVhcDsKLSAgICB1
bnNpZ25lZCBtX2VudHJpZXNTaXplOwotICAgIHVuc2lnbmVkIG1faW5pdGlhbEFsbG9jOwotCi0g
ICAgV2Vha0dDSGFuZGxlIG1fZW50cmllc1tXZWFrR0NIYW5kbGVQb29sOjpudW1Qb29sRW50cmll
c107Ci19OwotCi19Ci0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0hlYXAuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSGVhcC5jcHAK
aW5kZXggYzA1MjMzY2FkNzAwZGNiZmIyYjIwNzBjOGE4NWFkNmY0NzY4NjZmOC4uZjA2MjM4ODAw
NmZhZDI0ZGE4YTZkMGE2OTBkYmU5MGY3NGQwMGVmNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSGVhcC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSGVhcC5jcHAKQEAgLTI0LDcgKzI0LDYgQEAKICNpbmNsdWRlICJDb2RlQmxvY2suaCIK
ICNpbmNsdWRlICJDb25zZXJ2YXRpdmVTZXQuaCIKICNpbmNsdWRlICJHQ0FjdGl2aXR5Q2FsbGJh
Y2suaCIKLSNpbmNsdWRlICJHQ0hhbmRsZS5oIgogI2luY2x1ZGUgIkludGVycHJldGVyLmgiCiAj
aW5jbHVkZSAiSlNHbG9iYWxEYXRhLmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKQEAg
LTQ5LDYgKzQ4LDcgQEAgSGVhcDo6SGVhcChKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEpCiAgICAg
LCBtX2dsb2JhbERhdGEoZ2xvYmFsRGF0YSkKICAgICAsIG1fbWFjaGluZVN0YWNrTWFya2VyKHRo
aXMpCiAgICAgLCBtX21hcmtTdGFjayhnbG9iYWxEYXRhLT5qc0FycmF5VlB0cikKKyAgICAsIG1f
aGFuZGxlSGVhcChnbG9iYWxEYXRhKQogICAgICwgbV9leHRyYUNvc3QoMCkKIHsKICAgICAoKm1f
YWN0aXZpdHlDYWxsYmFjaykoKTsKQEAgLTc3LDYgKzc3LDcgQEAgdm9pZCBIZWFwOjpkZXN0cm95
KCkKICAgICBkZWxldGUgbV9tYXJrTGlzdFNldDsKICAgICBtX21hcmtMaXN0U2V0ID0gMDsKIAor
ICAgIG1faGFuZGxlSGVhcC5jbGVhcldlYWtQb2ludGVycygpOwogICAgIG1fbWFya2VkU3BhY2Uu
ZGVzdHJveSgpOwogCiAgICAgbV9nbG9iYWxEYXRhID0gMDsKQEAgLTEyOCwzNiArMTI5LDYgQEAg
dm9pZCogSGVhcDo6YWxsb2NhdGUoc2l6ZV90IHMpCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAot
dm9pZCBIZWFwOjp1cGRhdGVXZWFrR0NIYW5kbGVzKCkKLXsKLSAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgbV93ZWFrR0NIYW5kbGVQb29scy5zaXplKCk7ICsraSkKLSAgICAgICAgd2Vha0dD
SGFuZGxlUG9vbChpKS0+dXBkYXRlKCk7Ci19Ci0KLXZvaWQgV2Vha0dDSGFuZGxlUG9vbDo6dXBk
YXRlKCkKLXsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAxOyBpIDwgV2Vha0dDSGFuZGxlUG9vbDo6
bnVtUG9vbEVudHJpZXM7ICsraSkgewotICAgICAgICBpZiAobV9lbnRyaWVzW2ldLmlzVmFsaWRQ
dHIoKSkgewotICAgICAgICAgICAgSlNDZWxsKiBjZWxsID0gbV9lbnRyaWVzW2ldLmdldCgpOwot
ICAgICAgICAgICAgaWYgKCFjZWxsIHx8ICFIZWFwOjppc01hcmtlZChjZWxsKSkKLSAgICAgICAg
ICAgICAgICBtX2VudHJpZXNbaV0uaW52YWxpZGF0ZSgpOwotICAgICAgICB9Ci0gICAgfQotfQot
Ci1XZWFrR0NIYW5kbGUqIEhlYXA6OmFkZFdlYWtHQ0hhbmRsZShKU0NlbGwqIHB0cikKLXsKLSAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV93ZWFrR0NIYW5kbGVQb29scy5zaXplKCk7ICsr
aSkKLSAgICAgICAgaWYgKCF3ZWFrR0NIYW5kbGVQb29sKGkpLT5pc0Z1bGwoKSkKLSAgICAgICAg
ICAgIHJldHVybiB3ZWFrR0NIYW5kbGVQb29sKGkpLT5hbGxvY2F0ZShwdHIpOwotCi0gICAgUGFn
ZUFsbG9jYXRpb25BbGlnbmVkIGFsbG9jYXRpb24gPSBQYWdlQWxsb2NhdGlvbkFsaWduZWQ6OmFs
bG9jYXRlKFdlYWtHQ0hhbmRsZVBvb2w6OnBvb2xTaXplLCBXZWFrR0NIYW5kbGVQb29sOjpwb29s
U2l6ZSwgT1NBbGxvY2F0b3I6OkpTR0NIZWFwUGFnZXMpOwotICAgIG1fd2Vha0dDSGFuZGxlUG9v
bHMuYXBwZW5kKGFsbG9jYXRpb24pOwotCi0gICAgV2Vha0dDSGFuZGxlUG9vbCogcG9vbCA9IG5l
dyAoYWxsb2NhdGlvbi5iYXNlKCkpIFdlYWtHQ0hhbmRsZVBvb2woKTsKLSAgICByZXR1cm4gcG9v
bC0+YWxsb2NhdGUocHRyKTsKLX0KLQogdm9pZCBIZWFwOjpwcm90ZWN0KEpTVmFsdWUgaykKIHsK
ICAgICBBU1NFUlQoayk7CkBAIC0yNjksMTQgKzI0MCwxNiBAQCB2b2lkIEhlYXA6Om1hcmtSb290
cygpCiAgICAgICAgIEpTT05PYmplY3Q6Om1hcmtTdHJpbmdpZmllcnMobWFya1N0YWNrLCBtX2ds
b2JhbERhdGEtPmZpcnN0U3RyaW5naWZpZXJUb01hcmspOwogICAgIG1hcmtTdGFjay5kcmFpbigp
OwogCisgICAgbV9oYW5kbGVIZWFwLm1hcmtTdHJvbmdIYW5kbGVzKG1hcmtTdGFjayk7CisKICAg
ICAvLyBNYXJrIHRoZSBzbWFsbCBzdHJpbmdzIGNhY2hlIGxhc3QsIHNpbmNlIGl0IHdpbGwgY2xl
YXIgaXRzZWxmIGlmIG5vdGhpbmcKICAgICAvLyBlbHNlIGhhcyBtYXJrZWQgaXQuCiAgICAgbV9n
bG9iYWxEYXRhLT5zbWFsbFN0cmluZ3MubWFya0NoaWxkcmVuKG1hcmtTdGFjayk7CiAKICAgICBt
YXJrU3RhY2suZHJhaW4oKTsKICAgICBtYXJrU3RhY2suY29tcGFjdCgpOwotCi0gICAgdXBkYXRl
V2Vha0dDSGFuZGxlcygpOworICAgIAorICAgIG1faGFuZGxlSGVhcC51cGRhdGVBZnRlck1hcmso
KTsKIAogICAgIG1fb3BlcmF0aW9uSW5Qcm9ncmVzcyA9IE5vT3BlcmF0aW9uOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSGVhcC5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSGVhcC5oCmluZGV4IDY1OTFhNWI3OTIyMmZlZjQyZTRjZTAzMjdh
ZTZiNTQwYmVhYWMwNDAuLmZmOWZhODA1NzQzYTZiYmMzYmI2ZTdjNDQ5MmZhYTZkZDk2OWU5ZWUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0hlYXAuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9IZWFwLmgKQEAgLTIyLDYgKzIyLDcgQEAKICNp
Zm5kZWYgSGVhcF9oCiAjZGVmaW5lIEhlYXBfaAogCisjaW5jbHVkZSAiSGFuZGxlSGVhcC5oIgog
I2luY2x1ZGUgIk1hcmtTdGFjay5oIgogI2luY2x1ZGUgIk1hcmtlZFNwYWNlLmgiCiAjaW5jbHVk
ZSA8d3RmL0ZvcndhcmQuaD4KQEAgLTM0LDcgKzM1LDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
Y2xhc3MgSlNDZWxsOwogICAgIGNsYXNzIEpTR2xvYmFsRGF0YTsKICAgICBjbGFzcyBKU1ZhbHVl
OwotICAgIGNsYXNzIEpTVmFsdWU7CiAgICAgY2xhc3MgTGl2ZU9iamVjdEl0ZXJhdG9yOwogICAg
IGNsYXNzIE1hcmtTdGFjazsKICAgICBjbGFzcyBNYXJrZWRBcmd1bWVudEJ1ZmZlcjsKQEAgLTg5
LDggKzg5LDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFBhc3NPd25QdHI8VHlwZUNvdW50
U2V0PiBwcm90ZWN0ZWRPYmplY3RUeXBlQ291bnRzKCk7CiAgICAgICAgIFBhc3NPd25QdHI8VHlw
ZUNvdW50U2V0PiBvYmplY3RUeXBlQ291bnRzKCk7CiAKLSAgICAgICAgV2Vha0dDSGFuZGxlKiBh
ZGRXZWFrR0NIYW5kbGUoSlNDZWxsKik7Ci0KICAgICAgICAgdm9pZCBwdXNoVGVtcFNvcnRWZWN0
b3IoVmVjdG9yPFZhbHVlU3RyaW5nUGFpcj4qKTsKICAgICAgICAgdm9pZCBwb3BUZW1wU29ydFZl
Y3RvcihWZWN0b3I8VmFsdWVTdHJpbmdQYWlyPiopOwogICAgICAgICAKQEAgLTEwMCw2ICs5OCw4
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAKICAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1l
IEZ1bmN0b3I+IHZvaWQgZm9yRWFjaChGdW5jdG9yJik7CiAgICAgICAgIAorICAgICAgICBIYW5k
bGVTbG90IGFsbG9jYXRlR2xvYmFsSGFuZGxlKCkgeyByZXR1cm4gbV9oYW5kbGVIZWFwLmFsbG9j
YXRlKCk7IH0KKwogICAgIHByaXZhdGU6CiAgICAgICAgIGZyaWVuZCBjbGFzcyBKU0dsb2JhbERh
dGE7CiAKQEAgLTExMiw5ICsxMTIsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBt
YXJrUHJvdGVjdGVkT2JqZWN0cyhNYXJrU3RhY2smKTsKICAgICAgICAgdm9pZCBtYXJrVGVtcFNv
cnRWZWN0b3JzKE1hcmtTdGFjayYpOwogCi0gICAgICAgIHZvaWQgdXBkYXRlV2Vha0dDSGFuZGxl
cygpOwotICAgICAgICBXZWFrR0NIYW5kbGVQb29sKiB3ZWFrR0NIYW5kbGVQb29sKHNpemVfdCBp
bmRleCk7Ci0gICAgICAgIAogICAgICAgICBlbnVtIFN3ZWVwVG9nZ2xlIHsgRG9Ob3RTd2VlcCwg
RG9Td2VlcCB9OwogICAgICAgICB2b2lkIHJlc2V0KFN3ZWVwVG9nZ2xlKTsKIApAQCAtMTI0LDcg
KzEyMSw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBNYXJrZWRTcGFjZSBtX21hcmtlZFNw
YWNlOwogCiAgICAgICAgIFByb3RlY3RDb3VudFNldCBtX3Byb3RlY3RlZFZhbHVlczsKLSAgICAg
ICAgVmVjdG9yPFBhZ2VBbGxvY2F0aW9uQWxpZ25lZD4gbV93ZWFrR0NIYW5kbGVQb29sczsKICAg
ICAgICAgVmVjdG9yPFZlY3RvcjxWYWx1ZVN0cmluZ1BhaXI+KiA+IG1fdGVtcFNvcnRpbmdWZWN0
b3JzOwogICAgICAgICBIYXNoU2V0PEdsb2JhbENvZGVCbG9jayo+IG1fY29kZUJsb2NrczsKIApA
QCAtMTM2LDYgKzEzMiw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAKICAgICAgICAgTWFj
aGluZVN0YWNrTWFya2VyIG1fbWFjaGluZVN0YWNrTWFya2VyOwogICAgICAgICBNYXJrU3RhY2sg
bV9tYXJrU3RhY2s7CisgICAgICAgIEhhbmRsZUhlYXAgbV9oYW5kbGVIZWFwOwogICAgICAgICAK
ICAgICAgICAgc2l6ZV90IG1fZXh0cmFDb3N0OwogICAgIH07CkBAIC0xNjUsMTEgKzE2Miw2IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICBpZiAoY29zdCA+IG1pbkV4dHJhQ29zdCkgCiAgICAg
ICAgICAgICByZXBvcnRFeHRyYU1lbW9yeUNvc3RTbG93Q2FzZShjb3N0KTsKICAgICB9Ci0gICAg
Ci0gICAgaW5saW5lIFdlYWtHQ0hhbmRsZVBvb2wqIEhlYXA6OndlYWtHQ0hhbmRsZVBvb2woc2l6
ZV90IGluZGV4KQotICAgIHsKLSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFdlYWtHQ0hhbmRs
ZVBvb2wqPihtX3dlYWtHQ0hhbmRsZVBvb2xzW2luZGV4XS5iYXNlKCkpOwotICAgIH0KIAogICAg
IHRlbXBsYXRlIDx0eXBlbmFtZSBGdW5jdG9yPiBpbmxpbmUgdm9pZCBIZWFwOjpmb3JFYWNoKEZ1
bmN0b3ImIGZ1bmN0b3IpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHbG9iYWxEYXRhLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2xvYmFsRGF0YS5jcHAKaW5kZXggZmY4ODA0OGMyMTk1OTRiOTEyNWUwMjJiY2ExOGVjODcx
N2MxM2I1OC4uY2ZmNzI1MjI0YTQ0NTk0MDU3MmVjZTgwOWFlNWRlNTAzNmViYWE0OCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuY3BwCkBAIC0xMzgs
NyArMTM4LDcgQEAgSlNHbG9iYWxEYXRhOjpKU0dsb2JhbERhdGEoR2xvYmFsRGF0YVR5cGUgZ2xv
YmFsRGF0YVR5cGUsIFRocmVhZFN0YWNrVHlwZSB0aHJlYWQKICAgICAsIGVtcHR5TGlzdChuZXcg
TWFya2VkQXJndW1lbnRCdWZmZXIpCiAgICAgLCBsZXhlcihuZXcgTGV4ZXIodGhpcykpCiAgICAg
LCBwYXJzZXIobmV3IFBhcnNlcikKLSAgICAsIGludGVycHJldGVyKG5ldyBJbnRlcnByZXRlcikK
KyAgICAsIGludGVycHJldGVyKDApCiAgICAgLCBoZWFwKHRoaXMpCiAgICAgLCBkeW5hbWljR2xv
YmFsT2JqZWN0KDApCiAgICAgLCBmaXJzdFN0cmluZ2lmaWVyVG9NYXJrKDApCkBAIC0xNTIsNiAr
MTUyLDcgQEAgSlNHbG9iYWxEYXRhOjpKU0dsb2JhbERhdGEoR2xvYmFsRGF0YVR5cGUgZ2xvYmFs
RGF0YVR5cGUsIFRocmVhZFN0YWNrVHlwZSB0aHJlYWQKICAgICAsIGV4Y2x1c2l2ZVRocmVhZCgw
KQogI2VuZGlmCiB7CisgICAgaW50ZXJwcmV0ZXIgPSBuZXcgSW50ZXJwcmV0ZXIoKnRoaXMpOwog
ICAgIGlmIChnbG9iYWxEYXRhVHlwZSA9PSBEZWZhdWx0KQogICAgICAgICBtX3N0YWNrID0gd3Rm
VGhyZWFkRGF0YSgpLnN0YWNrKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHbG9iYWxEYXRhLmgKaW5kZXggN2I2OTA1NTgxYjAwYjAwMjA1YjRjMjU2NGY5YmViOGY2NDUz
YjY5MC4uYTYwOWM3N2UwMWYyOTgwYWQzOTdlM2YzZDQ5ZTRhYzg4OTg0ZjY3MSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmgKQEAgLTI1Myw2ICsyNTMs
OCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBhZGRSZWdFeHBUb1RyYWNlKFBhc3NS
ZWZQdHI8UmVnRXhwPiByZWdFeHApOwogI2VuZGlmCiAgICAgICAgIHZvaWQgZHVtcFJlZ0V4cFRy
YWNlKCk7CisgICAgICAgIEhhbmRsZVNsb3QgYWxsb2NhdGVHbG9iYWxIYW5kbGUoKSB7IHJldHVy
biBoZWFwLmFsbG9jYXRlR2xvYmFsSGFuZGxlKCk7IH0KKwogICAgIHByaXZhdGU6CiAgICAgICAg
IEpTR2xvYmFsRGF0YShHbG9iYWxEYXRhVHlwZSwgVGhyZWFkU3RhY2tUeXBlKTsKICAgICAgICAg
c3RhdGljIEpTR2xvYmFsRGF0YSomIHNoYXJlZEluc3RhbmNlSW50ZXJuYWwoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAppbmRleCBmMzAz
MTk2NzY0MTEwNTg2MTBjZGQ2NjA0NDgyNDJjNWIzNGE2YWVlLi44ZWMwZDI4YjE2ZmFiMjIwYTQx
ODM5OWVjNjFjNTZiYWQzYWI5MGQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCkBAIC0xMDYsOSArMTA2LDYgQEAgSlNHbG9iYWxPYmpl
Y3Q6On5KU0dsb2JhbE9iamVjdCgpCiAKICAgICBkKCktPmdsb2JhbERhdGEtPmdsb2JhbE9iamVj
dHMudGFrZSh0aGlzKTsKIAotICAgIFJlZ2lzdGVyRmlsZSYgcmVnaXN0ZXJGaWxlID0gZ2xvYmFs
RGF0YSgpLmludGVycHJldGVyLT5yZWdpc3RlckZpbGUoKTsKLSAgICBpZiAocmVnaXN0ZXJGaWxl
LmNsZWFyR2xvYmFsT2JqZWN0KHRoaXMpKQotICAgICAgICByZWdpc3RlckZpbGUuc2V0TnVtR2xv
YmFscygwKTsKICAgICBkKCktPmRlc3RydWN0b3IoZCgpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmNwcApp
bmRleCA2ZmQyOGUzZmFmYjU2MTk1ZWJhNzhjZTAzY2IxMTIyY2RjMzgwZmQ0Li4wZDc1OWNmYzE1
YzlkMmJlOWIwMGM4NWNhZDY0YjFlMjk2ODA1ZTBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmNwcApAQCAtNDcs
MTIgKzQ3LDYgQEAgaW5saW5lIEpTUHJvcGVydHlOYW1lSXRlcmF0b3I6OkpTUHJvcGVydHlOYW1l
SXRlcmF0b3IoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU4KICAgICAgICAgbV9qc1N0cmluZ3Nb
aV0uc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywganNPd25lZFN0cmluZyhleGVjLCBwcm9w
ZXJ0eU5hbWVWZWN0b3JbaV0udXN0cmluZygpKSk7CiB9CiAKLUpTUHJvcGVydHlOYW1lSXRlcmF0
b3I6On5KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yKCkKLXsKLSAgICBpZiAobV9jYWNoZWRTdHJ1Y3R1
cmUpCi0gICAgICAgIG1fY2FjaGVkU3RydWN0dXJlLT5jbGVhckVudW1lcmF0aW9uQ2FjaGUodGhp
cyk7Ci19Ci0KIEpTUHJvcGVydHlOYW1lSXRlcmF0b3IqIEpTUHJvcGVydHlOYW1lSXRlcmF0b3I6
OmNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBvKQogewogICAgIEFTU0VSVCghby0+
c3RydWN0dXJlKCktPmVudW1lcmF0aW9uQ2FjaGUoKSB8fApAQCAtODUsNyArNzksNyBAQCBKU1By
b3BlcnR5TmFtZUl0ZXJhdG9yKiBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yOjpjcmVhdGUoRXhlY1N0
YXRlKiBleGVjLCBKU09iamVjdAogCiAgICAganNQcm9wZXJ0eU5hbWVJdGVyYXRvci0+c2V0Q2Fj
aGVkUHJvdG90eXBlQ2hhaW4oc3RydWN0dXJlQ2hhaW4pOwogICAgIGpzUHJvcGVydHlOYW1lSXRl
cmF0b3ItPnNldENhY2hlZFN0cnVjdHVyZShvLT5zdHJ1Y3R1cmUoKSk7Ci0gICAgby0+c3RydWN0
dXJlKCktPnNldEVudW1lcmF0aW9uQ2FjaGUoanNQcm9wZXJ0eU5hbWVJdGVyYXRvcik7CisgICAg
by0+c3RydWN0dXJlKCktPnNldEVudW1lcmF0aW9uQ2FjaGUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBq
c1Byb3BlcnR5TmFtZUl0ZXJhdG9yKTsKICAgICByZXR1cm4ganNQcm9wZXJ0eU5hbWVJdGVyYXRv
cjsKIH0KIApAQCAtMTA1LDQgKzk5LDEyIEBAIHZvaWQgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6
bWFya0NoaWxkcmVuKE1hcmtTdGFjayYgbWFya1N0YWNrKQogICAgIG1hcmtTdGFjay5hcHBlbmRW
YWx1ZXMobV9qc1N0cmluZ3MuZ2V0KCksIG1fanNTdHJpbmdzU2l6ZSwgTWF5Q29udGFpbk51bGxW
YWx1ZXMpOwogfQogCisjaWYgIUFTU0VSVF9ESVNBQkxFRAorCitKU1Byb3BlcnR5TmFtZUl0ZXJh
dG9yOjp+SlNQcm9wZXJ0eU5hbWVJdGVyYXRvcigpCit7CisgICAgQVNTRVJUKCFtX2NhY2hlZFN0
cnVjdHVyZSB8fCBtX2NhY2hlZFN0cnVjdHVyZS0+ZW51bWVyYXRpb25DYWNoZSgpICE9IHRoaXMp
OworfQorCisjZW5kaWYKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oCmluZGV4IGNkNDYy
NDNhODA5MWMyMTBhNzQ2MjU1NzNiNzc5MzRlMzNkY2E3MjcuLmZmMmNhZTU0ZWViZGY1Y2ZmMjJk
MWQyZjIwZjFhMmUzNGNlMmExZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgKQEAgLTQ5LDggKzQ5LDYgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNy
ZWF0ZShwcm90b3R5cGUsIFR5cGVJbmZvKENvbXBvdW5kVHlwZSwgT3ZlcnJpZGVzTWFya0NoaWxk
cmVuKSwgQW5vbnltb3VzU2xvdENvdW50KTsKICAgICAgICAgfQotICAgICAgICAKLSAgICAgICAg
dmlydHVhbCB+SlNQcm9wZXJ0eU5hbWVJdGVyYXRvcigpOwogCiAgICAgICAgIHZpcnR1YWwgYm9v
bCBpc1Byb3BlcnR5TmFtZUl0ZXJhdG9yKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogCkBAIC04
MCw2ICs3OCwxMCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIEpT
UHJvcGVydHlOYW1lSXRlcmF0b3IoRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lQXJyYXlEYXRhKiBw
cm9wZXJ0eU5hbWVBcnJheURhdGEsIHNpemVfdCBudW1DYWNoZWFibGVTbG90KTsKKyAgICAgICAg
CisjaWYgIUFTU0VSVF9ESVNBQkxFRAorICAgICAgICB2aXJ0dWFsIH5KU1Byb3BlcnR5TmFtZUl0
ZXJhdG9yKCk7CisjZW5kaWYKIAogICAgICAgICBSZWZQdHI8U3RydWN0dXJlPiBtX2NhY2hlZFN0
cnVjdHVyZTsKICAgICAgICAgUmVmUHRyPFN0cnVjdHVyZUNoYWluPiBtX2NhY2hlZFByb3RvdHlw
ZUNoYWluOwpAQCAtODgsMTUgKzkwLDE1IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBPd25B
cnJheVB0cjxXcml0ZUJhcnJpZXI8VW5rbm93bj4gPiBtX2pzU3RyaW5nczsKICAgICB9OwogCi0g
ICAgaW5saW5lIHZvaWQgU3RydWN0dXJlOjpzZXRFbnVtZXJhdGlvbkNhY2hlKEpTUHJvcGVydHlO
YW1lSXRlcmF0b3IqIGVudW1lcmF0aW9uQ2FjaGUpCisgICAgaW5saW5lIHZvaWQgU3RydWN0dXJl
OjpzZXRFbnVtZXJhdGlvbkNhY2hlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNQcm9wZXJ0
eU5hbWVJdGVyYXRvciogZW51bWVyYXRpb25DYWNoZSkKICAgICB7CiAgICAgICAgIEFTU0VSVCgh
aXNEaWN0aW9uYXJ5KCkpOwotICAgICAgICBtX2VudW1lcmF0aW9uQ2FjaGUgPSBlbnVtZXJhdGlv
bkNhY2hlOworICAgICAgICBtX2VudW1lcmF0aW9uQ2FjaGUuc2V0KGdsb2JhbERhdGEsIGVudW1l
cmF0aW9uQ2FjaGUsIDApOwogICAgIH0KIAotICAgIGlubGluZSB2b2lkIFN0cnVjdHVyZTo6Y2xl
YXJFbnVtZXJhdGlvbkNhY2hlKEpTUHJvcGVydHlOYW1lSXRlcmF0b3IqIGVudW1lcmF0aW9uQ2Fj
aGUpCisgICAgaW5saW5lIHZvaWQgU3RydWN0dXJlOjpjbGVhckVudW1lcmF0aW9uQ2FjaGUoKQog
ICAgIHsKLSAgICAgICAgbV9lbnVtZXJhdGlvbkNhY2hlLmNsZWFyKGVudW1lcmF0aW9uQ2FjaGUp
OworICAgICAgICBtX2VudW1lcmF0aW9uQ2FjaGUuY2xlYXIoKTsKICAgICB9CiAKICAgICBpbmxp
bmUgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvciogU3RydWN0dXJlOjplbnVtZXJhdGlvbkNhY2hlKCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3RlY3QuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3RlY3QuaAppbmRleCAwYzFiNWU4ZWY0M2Jl
MWM4MTdjZDg4ZWRhNzc5Njc2NmYxYTNmYTFkLi44NDNjOWUxMTE0OGNjNzBhNjdjZGI2NjI1NDQ3
MjYzMTY4YmZmN2E4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Q
cm90ZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvdGVjdC5oCkBA
IC02MSwxNTUgKzYxLDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICBnY1VucHJvdGVj
dCh2YWx1ZS5hc0NlbGwoKSk7CiAgICAgfQogCi0gICAgLy8gRklYTUU6IFNoYXJlIG1vcmUgY29k
ZSB3aXRoIFJlZlB0ciB0ZW1wbGF0ZT8gVGhlIG9ubHkgZGlmZmVyZW5jZXMgYXJlIHRoZSByZWYv
ZGVyZWYgb3BlcmF0aW9uCi0gICAgLy8gYW5kIHRoZSBpbXBsaWNpdCBjb252ZXJzaW9uIHRvIHJh
dyBwb2ludGVyCi0gICAgdGVtcGxhdGUgPGNsYXNzIFQ+IGNsYXNzIFByb3RlY3RlZFB0ciB7Ci0g
ICAgcHVibGljOgotICAgICAgICBQcm90ZWN0ZWRQdHIoKSA6IG1fcHRyKDApIHt9Ci0gICAgICAg
IFByb3RlY3RlZFB0cihUKiBwdHIpOwotICAgICAgICBQcm90ZWN0ZWRQdHIoY29uc3QgUHJvdGVj
dGVkUHRyJik7Ci0gICAgICAgIH5Qcm90ZWN0ZWRQdHIoKTsKLQotICAgICAgICB0ZW1wbGF0ZSA8
Y2xhc3MgVT4gUHJvdGVjdGVkUHRyKGNvbnN0IFByb3RlY3RlZFB0cjxVPiYpOwotICAgICAgICAK
LSAgICAgICAgVCogZ2V0KCkgY29uc3QgeyByZXR1cm4gbV9wdHI7IH0KLSAgICAgICAgb3BlcmF0
b3IgVCooKSBjb25zdCB7IHJldHVybiBtX3B0cjsgfQotICAgICAgICBvcGVyYXRvciBKU1ZhbHVl
KCkgY29uc3QgeyByZXR1cm4gSlNWYWx1ZShtX3B0cik7IH0KLSAgICAgICAgVCogb3BlcmF0b3It
PigpIGNvbnN0IHsgcmV0dXJuIG1fcHRyOyB9Ci0gICAgICAgIAotICAgICAgICBvcGVyYXRvciBi
b29sKCkgY29uc3QgeyByZXR1cm4gbV9wdHI7IH0KLSAgICAgICAgYm9vbCBvcGVyYXRvciEoKSBj
b25zdCB7IHJldHVybiAhbV9wdHI7IH0KLQotICAgICAgICBQcm90ZWN0ZWRQdHImIG9wZXJhdG9y
PShjb25zdCBQcm90ZWN0ZWRQdHImKTsKLSAgICAgICAgUHJvdGVjdGVkUHRyJiBvcGVyYXRvcj0o
VCopOwotICAgICAgICAKLSAgICBwcml2YXRlOgotICAgICAgICBUKiBtX3B0cjsKLSAgICB9Owot
Ci0gICAgY2xhc3MgUHJvdGVjdGVkSlNWYWx1ZSB7Ci0gICAgcHVibGljOgotICAgICAgICBQcm90
ZWN0ZWRKU1ZhbHVlKCkge30KLSAgICAgICAgUHJvdGVjdGVkSlNWYWx1ZShKU1ZhbHVlIHZhbHVl
KTsKLSAgICAgICAgUHJvdGVjdGVkSlNWYWx1ZShjb25zdCBQcm90ZWN0ZWRKU1ZhbHVlJik7Ci0g
ICAgICAgIH5Qcm90ZWN0ZWRKU1ZhbHVlKCk7Ci0KLSAgICAgICAgdGVtcGxhdGUgPGNsYXNzIFU+
IFByb3RlY3RlZEpTVmFsdWUoY29uc3QgUHJvdGVjdGVkUHRyPFU+Jik7Ci0gICAgICAgIAotICAg
ICAgICBKU1ZhbHVlIGdldCgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWU7IH0KLSAgICAgICAgb3Bl
cmF0b3IgSlNWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWU7IH0KLSAgICAgICAgSlNWYWx1
ZSBvcGVyYXRvci0+KCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZTsgfQotICAgICAgICAKLSAgICAg
ICAgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWU7IH0KLSAgICAgICAgYm9v
bCBvcGVyYXRvciEoKSBjb25zdCB7IHJldHVybiAhbV92YWx1ZTsgfQotCi0gICAgICAgIFByb3Rl
Y3RlZEpTVmFsdWUmIG9wZXJhdG9yPShjb25zdCBQcm90ZWN0ZWRKU1ZhbHVlJik7Ci0gICAgICAg
IFByb3RlY3RlZEpTVmFsdWUmIG9wZXJhdG9yPShKU1ZhbHVlKTsKLSAgICAgICAgCi0gICAgcHJp
dmF0ZToKLSAgICAgICAgSlNWYWx1ZSBtX3ZhbHVlOwotICAgIH07Ci0KLSAgICB0ZW1wbGF0ZSA8
Y2xhc3MgVD4gaW5saW5lIFByb3RlY3RlZFB0cjxUPjo6UHJvdGVjdGVkUHRyKFQqIHB0cikKLSAg
ICAgICAgOiBtX3B0cihwdHIpCi0gICAgewotICAgICAgICBnY1Byb3RlY3ROdWxsVG9sZXJhbnQo
bV9wdHIpOwotICAgIH0KLQotICAgIHRlbXBsYXRlIDxjbGFzcyBUPiBpbmxpbmUgUHJvdGVjdGVk
UHRyPFQ+OjpQcm90ZWN0ZWRQdHIoY29uc3QgUHJvdGVjdGVkUHRyJiBvKQotICAgICAgICA6IG1f
cHRyKG8uZ2V0KCkpCi0gICAgewotICAgICAgICBnY1Byb3RlY3ROdWxsVG9sZXJhbnQobV9wdHIp
OwotICAgIH0KLQotICAgIHRlbXBsYXRlIDxjbGFzcyBUPiBpbmxpbmUgUHJvdGVjdGVkUHRyPFQ+
Ojp+UHJvdGVjdGVkUHRyKCkKLSAgICB7Ci0gICAgICAgIGdjVW5wcm90ZWN0TnVsbFRvbGVyYW50
KG1fcHRyKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVD4gdGVtcGxhdGUgPGNsYXNz
IFU+IGlubGluZSBQcm90ZWN0ZWRQdHI8VD46OlByb3RlY3RlZFB0cihjb25zdCBQcm90ZWN0ZWRQ
dHI8VT4mIG8pCi0gICAgICAgIDogbV9wdHIoby5nZXQoKSkKLSAgICB7Ci0gICAgICAgIGdjUHJv
dGVjdE51bGxUb2xlcmFudChtX3B0cik7Ci0gICAgfQotCi0gICAgdGVtcGxhdGUgPGNsYXNzIFQ+
IGlubGluZSBQcm90ZWN0ZWRQdHI8VD4mIFByb3RlY3RlZFB0cjxUPjo6b3BlcmF0b3I9KGNvbnN0
IFByb3RlY3RlZFB0cjxUPiYgbykgCi0gICAgewotICAgICAgICBUKiBvcHRyID0gby5tX3B0cjsK
LSAgICAgICAgZ2NQcm90ZWN0TnVsbFRvbGVyYW50KG9wdHIpOwotICAgICAgICBnY1VucHJvdGVj
dE51bGxUb2xlcmFudChtX3B0cik7Ci0gICAgICAgIG1fcHRyID0gb3B0cjsKLSAgICAgICAgcmV0
dXJuICp0aGlzOwotICAgIH0KLQotICAgIHRlbXBsYXRlIDxjbGFzcyBUPiBpbmxpbmUgUHJvdGVj
dGVkUHRyPFQ+JiBQcm90ZWN0ZWRQdHI8VD46Om9wZXJhdG9yPShUKiBvcHRyKQotICAgIHsKLSAg
ICAgICAgZ2NQcm90ZWN0TnVsbFRvbGVyYW50KG9wdHIpOwotICAgICAgICBnY1VucHJvdGVjdE51
bGxUb2xlcmFudChtX3B0cik7Ci0gICAgICAgIG1fcHRyID0gb3B0cjsKLSAgICAgICAgcmV0dXJu
ICp0aGlzOwotICAgIH0KLQotICAgIGlubGluZSBQcm90ZWN0ZWRKU1ZhbHVlOjpQcm90ZWN0ZWRK
U1ZhbHVlKEpTVmFsdWUgdmFsdWUpCi0gICAgICAgIDogbV92YWx1ZSh2YWx1ZSkKLSAgICB7Ci0g
ICAgICAgIGdjUHJvdGVjdChtX3ZhbHVlKTsKLSAgICB9Ci0KLSAgICBpbmxpbmUgUHJvdGVjdGVk
SlNWYWx1ZTo6UHJvdGVjdGVkSlNWYWx1ZShjb25zdCBQcm90ZWN0ZWRKU1ZhbHVlJiBvKQotICAg
ICAgICA6IG1fdmFsdWUoby5nZXQoKSkKLSAgICB7Ci0gICAgICAgIGdjUHJvdGVjdChtX3ZhbHVl
KTsKLSAgICB9Ci0KLSAgICBpbmxpbmUgUHJvdGVjdGVkSlNWYWx1ZTo6flByb3RlY3RlZEpTVmFs
dWUoKQotICAgIHsKLSAgICAgICAgZ2NVbnByb3RlY3QobV92YWx1ZSk7Ci0gICAgfQotCi0gICAg
dGVtcGxhdGUgPGNsYXNzIFU+IFByb3RlY3RlZEpTVmFsdWU6OlByb3RlY3RlZEpTVmFsdWUoY29u
c3QgUHJvdGVjdGVkUHRyPFU+JiBvKQotICAgICAgICA6IG1fdmFsdWUoby5nZXQoKSkKLSAgICB7
Ci0gICAgICAgIGdjUHJvdGVjdChtX3ZhbHVlKTsKLSAgICB9Ci0KLSAgICBpbmxpbmUgUHJvdGVj
dGVkSlNWYWx1ZSYgUHJvdGVjdGVkSlNWYWx1ZTo6b3BlcmF0b3I9KGNvbnN0IFByb3RlY3RlZEpT
VmFsdWUmIG8pIAotICAgIHsKLSAgICAgICAgSlNWYWx1ZSBvdmFsdWUgPSBvLm1fdmFsdWU7Ci0g
ICAgICAgIGdjUHJvdGVjdChvdmFsdWUpOwotICAgICAgICBnY1VucHJvdGVjdChtX3ZhbHVlKTsK
LSAgICAgICAgbV92YWx1ZSA9IG92YWx1ZTsKLSAgICAgICAgcmV0dXJuICp0aGlzOwotICAgIH0K
LQotICAgIGlubGluZSBQcm90ZWN0ZWRKU1ZhbHVlJiBQcm90ZWN0ZWRKU1ZhbHVlOjpvcGVyYXRv
cj0oSlNWYWx1ZSBvdmFsdWUpCi0gICAgewotICAgICAgICBnY1Byb3RlY3Qob3ZhbHVlKTsKLSAg
ICAgICAgZ2NVbnByb3RlY3QobV92YWx1ZSk7Ci0gICAgICAgIG1fdmFsdWUgPSBvdmFsdWU7Ci0g
ICAgICAgIHJldHVybiAqdGhpczsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVD4gaW5s
aW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBQcm90ZWN0ZWRQdHI8VD4mIGEsIGNvbnN0IFByb3Rl
Y3RlZFB0cjxUPiYgYikgeyByZXR1cm4gYS5nZXQoKSA9PSBiLmdldCgpOyB9Ci0gICAgdGVtcGxh
dGUgPGNsYXNzIFQ+IGlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgUHJvdGVjdGVkUHRyPFQ+
JiBhLCBjb25zdCBUKiBiKSB7IHJldHVybiBhLmdldCgpID09IGI7IH0KLSAgICB0ZW1wbGF0ZSA8
Y2xhc3MgVD4gaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBUKiBhLCBjb25zdCBQcm90ZWN0
ZWRQdHI8VD4mIGIpIHsgcmV0dXJuIGEgPT0gYi5nZXQoKTsgfQotCi0gICAgdGVtcGxhdGUgPGNs
YXNzIFQ+IGlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgUHJvdGVjdGVkUHRyPFQ+JiBhLCBj
b25zdCBQcm90ZWN0ZWRQdHI8VD4mIGIpIHsgcmV0dXJuIGEuZ2V0KCkgIT0gYi5nZXQoKTsgfQot
ICAgIHRlbXBsYXRlIDxjbGFzcyBUPiBpbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFByb3Rl
Y3RlZFB0cjxUPiYgYSwgY29uc3QgVCogYikgeyByZXR1cm4gYS5nZXQoKSAhPSBiOyB9Ci0gICAg
dGVtcGxhdGUgPGNsYXNzIFQ+IGlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgVCogYSwgY29u
c3QgUHJvdGVjdGVkUHRyPFQ+JiBiKSB7IHJldHVybiBhICE9IGIuZ2V0KCk7IH0KLQotICAgIGlu
bGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgUHJvdGVjdGVkSlNWYWx1ZSYgYSwgY29uc3QgUHJv
dGVjdGVkSlNWYWx1ZSYgYikgeyByZXR1cm4gYS5nZXQoKSA9PSBiLmdldCgpOyB9Ci0gICAgaW5s
aW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBQcm90ZWN0ZWRKU1ZhbHVlJiBhLCBjb25zdCBKU1Zh
bHVlIGIpIHsgcmV0dXJuIGEuZ2V0KCkgPT0gYjsgfQotICAgIHRlbXBsYXRlIDxjbGFzcyBUPiBp
bmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFByb3RlY3RlZEpTVmFsdWUmIGEsIGNvbnN0IFBy
b3RlY3RlZFB0cjxUPiYgYikgeyByZXR1cm4gYS5nZXQoKSA9PSBKU1ZhbHVlKGIuZ2V0KCkpOyB9
Ci0gICAgaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBKU1ZhbHVlIGEsIGNvbnN0IFByb3Rl
Y3RlZEpTVmFsdWUmIGIpIHsgcmV0dXJuIGEgPT0gYi5nZXQoKTsgfQotICAgIHRlbXBsYXRlIDxj
bGFzcyBUPiBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFByb3RlY3RlZFB0cjxUPiYgYSwg
Y29uc3QgUHJvdGVjdGVkSlNWYWx1ZSYgYikgeyByZXR1cm4gSlNWYWx1ZShhLmdldCgpKSA9PSBi
LmdldCgpOyB9Ci0KLSAgICBpbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFByb3RlY3RlZEpT
VmFsdWUmIGEsIGNvbnN0IFByb3RlY3RlZEpTVmFsdWUmIGIpIHsgcmV0dXJuIGEuZ2V0KCkgIT0g
Yi5nZXQoKTsgfQotICAgIGlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgUHJvdGVjdGVkSlNW
YWx1ZSYgYSwgY29uc3QgSlNWYWx1ZSBiKSB7IHJldHVybiBhLmdldCgpICE9IGI7IH0KLSAgICB0
ZW1wbGF0ZSA8Y2xhc3MgVD4gaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBQcm90ZWN0ZWRK
U1ZhbHVlJiBhLCBjb25zdCBQcm90ZWN0ZWRQdHI8VD4mIGIpIHsgcmV0dXJuIGEuZ2V0KCkgIT0g
SlNWYWx1ZShiLmdldCgpKTsgfQotICAgIGlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgSlNW
YWx1ZSBhLCBjb25zdCBQcm90ZWN0ZWRKU1ZhbHVlJiBiKSB7IHJldHVybiBhICE9IGIuZ2V0KCk7
IH0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVD4gaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBQ
cm90ZWN0ZWRQdHI8VD4mIGEsIGNvbnN0IFByb3RlY3RlZEpTVmFsdWUmIGIpIHsgcmV0dXJuIEpT
VmFsdWUoYS5nZXQoKSkgIT0gYi5nZXQoKTsgfQotIAogfSAvLyBuYW1lc3BhY2UgSlNDCiAKICNl
bmRpZiAvLyBQcm90ZWN0X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1N0cnVjdHVyZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1
cmUuY3BwCmluZGV4IGU4ZjVkN2E5OTc5MTBkNmJmY2E5NzI5MWQ3Y2E0OTI4NGU0ZWI3YzUuLjk2
N2U0ZDdjYmZjMzA3MjFmNDBjZmU0NjgxZWNiZWRlN2I1YjA1ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcApAQCAtMjY2LDcgKzI2Niw2IEBAIFN0cnVj
dHVyZTo6flN0cnVjdHVyZSgpCiAgICAgICAgIG1fcHJldmlvdXMtPnRyYW5zaXRpb25UYWJsZVJl
bW92ZShtYWtlX3BhaXIobV9uYW1lSW5QcmV2aW91cy5nZXQoKSwgbV9hdHRyaWJ1dGVzSW5QcmV2
aW91cyksIG1fc3BlY2lmaWNWYWx1ZUluUHJldmlvdXMpOwogCiAgICAgfQotICAgIEFTU0VSVCgh
bV9lbnVtZXJhdGlvbkNhY2hlLmhhc0RlYWRPYmplY3QoKSk7CiAKICAgICBpZiAobV9wcm9wZXJ0
eVRhYmxlKSB7CiAgICAgICAgIHVuc2lnbmVkIGVudHJ5Q291bnQgPSBtX3Byb3BlcnR5VGFibGUt
PmtleUNvdW50ICsgbV9wcm9wZXJ0eVRhYmxlLT5kZWxldGVkU2VudGluZWxDb3VudDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgKaW5kZXggNzc3MjRhY2ZmMzU0NjYw
YzgyNTIyYTdhNTc1MTQ4ZjZlODlmNzg0Ny4uNjAyNGZhMjExMmRlMGYzMDg2MmI0NGZhM2Q0Yzgx
OTZhODk4NTVmYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3Ry
dWN0dXJlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgK
QEAgLTEzNiw4ICsxMzYsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBkZXNwZWNp
ZnlEaWN0aW9uYXJ5RnVuY3Rpb24oY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKTsKICAg
ICAgICAgdm9pZCBkaXNhYmxlU3BlY2lmaWNGdW5jdGlvblRyYWNraW5nKCkgeyBtX3NwZWNpZmlj
RnVuY3Rpb25UaHJhc2hDb3VudCA9IG1heFNwZWNpZmljRnVuY3Rpb25UaHJhc2hDb3VudDsgfQog
Ci0gICAgICAgIHZvaWQgc2V0RW51bWVyYXRpb25DYWNoZShKU1Byb3BlcnR5TmFtZUl0ZXJhdG9y
KiBlbnVtZXJhdGlvbkNhY2hlKTsgLy8gRGVmaW5lZCBpbiBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9y
LmguCi0gICAgICAgIHZvaWQgY2xlYXJFbnVtZXJhdGlvbkNhY2hlKEpTUHJvcGVydHlOYW1lSXRl
cmF0b3IqIGVudW1lcmF0aW9uQ2FjaGUpOyAvLyBEZWZpbmVkIGluIEpTUHJvcGVydHlOYW1lSXRl
cmF0b3IuaC4KKyAgICAgICAgdm9pZCBzZXRFbnVtZXJhdGlvbkNhY2hlKEpTR2xvYmFsRGF0YSYs
IEpTUHJvcGVydHlOYW1lSXRlcmF0b3IqIGVudW1lcmF0aW9uQ2FjaGUpOyAvLyBEZWZpbmVkIGlu
IEpTUHJvcGVydHlOYW1lSXRlcmF0b3IuaC4KKyAgICAgICAgdm9pZCBjbGVhckVudW1lcmF0aW9u
Q2FjaGUoKTsgLy8gRGVmaW5lZCBpbiBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmguCiAgICAgICAg
IEpTUHJvcGVydHlOYW1lSXRlcmF0b3IqIGVudW1lcmF0aW9uQ2FjaGUoKTsgLy8gRGVmaW5lZCBp
biBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmguCiAgICAgICAgIHZvaWQgZ2V0UHJvcGVydHlOYW1l
cyhQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSBtb2RlKTsKICAgICAgICAgCkBA
IC0yMjAsNyArMjIwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICBTdHJ1Y3R1cmUq
IG1fc2luZ2xlVHJhbnNpdGlvbjsKICAgICAgICAgfSBtX3RyYW5zaXRpb25zOwogCi0gICAgICAg
IFdlYWtHQ1B0cjxKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yPiBtX2VudW1lcmF0aW9uQ2FjaGU7Cisg
ICAgICAgIExhenlXZWFrR0NQdHI8SlNQcm9wZXJ0eU5hbWVJdGVyYXRvcj4gbV9lbnVtZXJhdGlv
bkNhY2hlOwogCiAgICAgICAgIFByb3BlcnR5TWFwSGFzaFRhYmxlKiBtX3Byb3BlcnR5VGFibGU7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtHQ1B0ci5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha0dDUHRyLmgKaW5kZXggNDk0NmVl
N2M1YjEzZTJmMGJlN2JlOGY2ZGQwZTgyYWIzN2U0NzgyYS4uYTliNjlkNTVlYzY0YWQyNzFhZWUw
NTcwNDFkMWZjYjc0YWY2Y2UzNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvV2Vha0dDUHRyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vh
a0dDUHRyLmgKQEAgLTI2LDEyNyArMjYsMTExIEBACiAjaWZuZGVmIFdlYWtHQ1B0cl9oCiAjZGVm
aW5lIFdlYWtHQ1B0cl9oCiAKKyNpbmNsdWRlICJHbG9iYWwuaCIKICNpbmNsdWRlICJIZWFwLmgi
Ci0jaW5jbHVkZSAiR0NIYW5kbGUuaCIKIAogbmFtZXNwYWNlIEpTQyB7CisvLyBBIHNtYXJ0IHBv
aW50ZXIgd2hvc2UgZ2V0KCkgZnVuY3Rpb24gcmV0dXJucyAwIGZvciBjZWxscyB0aGF0IGhhdmUg
ZGllZAorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgYm9vbCBpc0xhenk+IGNsYXNzIFdlYWtHQ1B0
ckJhc2UgOiBwdWJsaWMgSGFuZGxlQ29udmVydGVyPFdlYWtHQ1B0ckJhc2U8VCwgaXNMYXp5Piwg
VD4geworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFdlYWtHQ1B0ckJhc2UpOwogCi0vLyBBIHNt
YXJ0IHBvaW50ZXIgd2hvc2UgZ2V0KCkgZnVuY3Rpb24gcmV0dXJucyAwIGZvciBjZWxscyBhd2Fp
dGluZyBkZXN0cnVjdGlvbi4KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPiBjbGFzcyBXZWFrR0NQdHIg
ewotICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFdlYWtHQ1B0cik7CiBwdWJsaWM6Ci0gICAgV2Vh
a0dDUHRyKCkKLSAgICAgICAgOiBtX3B0cigwKQorICAgIHR5cGVkZWYgdHlwZW5hbWUgSGFuZGxl
VHlwZXM8VD46OkV4dGVybmFsVHlwZSBFeHRlcm5hbFR5cGU7CisKKyAgICBFeHRlcm5hbFR5cGUg
Z2V0KCkgY29uc3QgeyByZXR1cm4gIEhhbmRsZVR5cGVzPFQ+OjpnZXRGcm9tU2xvdChtX3Nsb3Qp
OyB9CisgICAgCisgICAgdm9pZCBjbGVhcigpCiAgICAgeworICAgICAgICBpZiAoIWlzTGF6eSB8
fCBtX3Nsb3QpCisgICAgICAgICAgICBpbnRlcm5hbFNldChFeHRlcm5hbFR5cGUoKSk7CiAgICAg
fQorICAgIAorICAgIGJvb2wgb3BlcmF0b3IhKCkgY29uc3QgeyByZXR1cm4gKGlzTGF6eSAmJiAh
bV9zbG90KSB8fCAhKm1fc2xvdDsgfQogCi0gICAgV2Vha0dDUHRyKFQqIHB0cikgeyBhc3NpZ24o
cHRyKTsgfQorICAgIC8vIFRoaXMgY29udmVyc2lvbiBvcGVyYXRvciBhbGxvd3MgaW1wbGljaXQg
Y29udmVyc2lvbiB0byBib29sIGJ1dCBub3QgdG8gb3RoZXIgaW50ZWdlciB0eXBlcy4KKyAgICB0
eXBlZGVmIEV4dGVybmFsVHlwZSAoV2Vha0dDUHRyQmFzZTo6KlVuc3BlY2lmaWVkQm9vbFR5cGUp
OworICAgIG9wZXJhdG9yIFVuc3BlY2lmaWVkQm9vbFR5cGUqKCkgY29uc3QgeyByZXR1cm4gISp0
aGlzID8gMCA6IHJlaW50ZXJwcmV0X2Nhc3Q8VW5zcGVjaWZpZWRCb29sVHlwZSo+KDEpOyB9CisK
KyAgICB+V2Vha0dDUHRyQmFzZSgpCisgICAgeworICAgICAgICBpZiAoaXNMYXp5ICYmICFtX3Ns
b3QpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIEhhbmRsZUhlYXA6OmhlYXBGb3IobV9z
bG90KS0+ZGVhbGxvY2F0ZShtX3Nsb3QpOworICAgIH0KIAotICAgIH5XZWFrR0NQdHIoKQorcHJv
dGVjdGVkOgorICAgIFdlYWtHQ1B0ckJhc2UoKQorICAgICAgICA6IG1fc2xvdCgwKQogICAgIHsK
LSAgICAgICAgaWYgKG1fcHRyKQotICAgICAgICAgICAgbV9wdHItPnBvb2woKS0+ZnJlZShtX3B0
cik7CisgICAgICAgIENPTVBJTEVfQVNTRVJUKGlzTGF6eSwgRG9udF9jYWxsX2RlZmF1bHRfY29u
c3RydWN0b3Jfb25fbm9ubGF6eV9oYW5kbGUpOwogICAgIH0KIAotICAgIFQqIGdldCgpIGNvbnN0
CisgICAgV2Vha0dDUHRyQmFzZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEZpbmFsaXplciBm
aW5hbGl6ZXIgPSAwKQorICAgICAgICA6IG1fc2xvdChnbG9iYWxEYXRhLmFsbG9jYXRlR2xvYmFs
SGFuZGxlKCkpCiAgICAgewotICAgICAgICBpZiAobV9wdHIgJiYgbV9wdHItPmlzVmFsaWRQdHIo
KSkKLSAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxUKj4obV9wdHItPmdldCgpKTsKLSAg
ICAgICAgcmV0dXJuIDA7CisgICAgICAgIENPTVBJTEVfQVNTRVJUKCFpc0xhenksIERvbnRfY2Fs
bF9hc3NpZ25pbmdfY29uc3RydWN0b3Jfb25fbGF6eV9oYW5kbGUpOworICAgICAgICBIYW5kbGVI
ZWFwOjpoZWFwRm9yKG1fc2xvdCktPm1ha2VXZWFrKG1fc2xvdCwgZmluYWxpemVyKTsKICAgICB9
CiAgICAgCi0gICAgYm9vbCBjbGVhcihKU0NlbGwqIHApCisgICAgV2Vha0dDUHRyQmFzZShKU0ds
b2JhbERhdGEmIGdsb2JhbERhdGEsIEV4dGVybmFsVHlwZSB2YWx1ZSwgRmluYWxpemVyIGZpbmFs
aXplciA9IDApCisgICAgICAgIDogbV9zbG90KGdsb2JhbERhdGEuYWxsb2NhdGVHbG9iYWxIYW5k
bGUoKSkKICAgICB7Ci0gICAgICAgIGlmICghbV9wdHIgfHwgbV9wdHItPmdldCgpICE9IHApCi0g
ICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAgbV9wdHItPnBvb2woKS0+ZnJlZSht
X3B0cik7Ci0gICAgICAgIG1fcHRyID0gMDsKLSAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAg
IENPTVBJTEVfQVNTRVJUKCFpc0xhenksIERvbnRfY2FsbF9hc3NpZ25pbmdfY29uc3RydWN0b3Jf
b25fbGF6eV9oYW5kbGUpOworICAgICAgICBIYW5kbGVIZWFwOjpoZWFwRm9yKG1fc2xvdCktPm1h
a2VXZWFrKG1fc2xvdCwgZmluYWxpemVyKTsKKyAgICAgICAgaW50ZXJuYWxTZXQodmFsdWUpOwog
ICAgIH0KLQotICAgIFQmIG9wZXJhdG9yKigpIGNvbnN0IHsgcmV0dXJuICpnZXQoKTsgfQotICAg
IFQqIG9wZXJhdG9yLT4oKSBjb25zdCB7IHJldHVybiBnZXQoKTsgfQogICAgIAotICAgIGJvb2wg
b3BlcmF0b3IhKCkgY29uc3QgeyByZXR1cm4gIWdldCgpOyB9CisgICAgdm9pZCBpbnRlcm5hbFNl
dChFeHRlcm5hbFR5cGUgdmFsdWUpCisgICAgeworICAgICAgICBBU1NFUlQobV9zbG90KTsKKyAg
ICAgICAgSlNWYWx1ZSBuZXdWYWx1ZShIYW5kbGVUeXBlczxUPjo6dG9KU1ZhbHVlKHZhbHVlKSk7
CisgICAgICAgIEhhbmRsZUhlYXA6OmhlYXBGb3IobV9zbG90KS0+d3JpdGVCYXJyaWVyKG1fc2xv
dCwgbmV3VmFsdWUpOworICAgICAgICAqbV9zbG90ID0gbmV3VmFsdWU7CisgICAgfQogCi0gICAg
Ly8gVGhpcyBjb252ZXJzaW9uIG9wZXJhdG9yIGFsbG93cyBpbXBsaWNpdCBjb252ZXJzaW9uIHRv
IGJvb2wgYnV0IG5vdCB0byBvdGhlciBpbnRlZ2VyIHR5cGVzLgotI2lmIENPTVBJTEVSKFdJTlND
VykKLSAgICBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gbV9wdHI7IH0KLSNlbHNlCi0g
ICAgdHlwZWRlZiBXZWFrR0NIYW5kbGUqIFdlYWtHQ1B0cjo6KlVuc3BlY2lmaWVkQm9vbFR5cGU7
Ci0gICAgb3BlcmF0b3IgVW5zcGVjaWZpZWRCb29sVHlwZSgpIGNvbnN0IHsgcmV0dXJuIGdldCgp
ID8gJldlYWtHQ1B0cjo6bV9wdHIgOiAwOyB9Ci0jZW5kaWYKKyAgICBIYW5kbGVTbG90IG1fc2xv
dDsKK307CiAKLSAgICBXZWFrR0NQdHImIG9wZXJhdG9yPShUKik7Cit0ZW1wbGF0ZSA8dHlwZW5h
bWUgVD4gY2xhc3MgTGF6eVdlYWtHQ1B0ciA6IHB1YmxpYyBXZWFrR0NQdHJCYXNlPFQsIHRydWU+
IHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIHR5cGVuYW1lIFdlYWtHQ1B0ckJhc2U8VCwgdHJ1ZT46
OkV4dGVybmFsVHlwZSBFeHRlcm5hbFR5cGU7CiAKLSNpZiAhQVNTRVJUX0RJU0FCTEVECi0gICAg
Ym9vbCBoYXNEZWFkT2JqZWN0KCkgY29uc3QgeyByZXR1cm4gISFtX3B0cjsgfQotI2VuZGlmCisg
ICAgTGF6eVdlYWtHQ1B0cigpCisgICAgeworICAgIH0KIAotcHJpdmF0ZToKLSAgICB2b2lkIGFz
c2lnbihKU0NlbGwqIHB0cikKKyAgICB2b2lkIHNldChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEs
IEV4dGVybmFsVHlwZSB2YWx1ZSwgRmluYWxpemVyIGZpbmFsaXplcikKICAgICB7Ci0gICAgICAg
IEFTU0VSVChwdHIpOwotICAgICAgICBpZiAobV9wdHIpCi0gICAgICAgICAgICBtX3B0ci0+c2V0
KHB0cik7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1fcHRyID0gSGVhcDo6aGVhcChwdHIp
LT5hZGRXZWFrR0NIYW5kbGUocHRyKTsKKyAgICAgICAgaWYgKCF0aGlzLT5tX3Nsb3QpIHsKKyAg
ICAgICAgICAgIHRoaXMtPm1fc2xvdCA9IGdsb2JhbERhdGEuYWxsb2NhdGVHbG9iYWxIYW5kbGUo
KTsKKyAgICAgICAgICAgIEhhbmRsZUhlYXA6OmhlYXBGb3IodGhpcy0+bV9zbG90KS0+bWFrZVdl
YWsodGhpcy0+bV9zbG90LCBmaW5hbGl6ZXIpOworICAgICAgICB9CisgICAgICAgIHRoaXMtPmlu
dGVybmFsU2V0KHZhbHVlKTsKICAgICB9CiAKLSAgICBXZWFrR0NIYW5kbGUqIG1fcHRyOwogfTsK
IAotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGlubGluZSBXZWFrR0NQdHI8VD4mIFdlYWtHQ1B0cjxU
Pjo6b3BlcmF0b3I9KFQqIG9wdHIpCi17Ci0gICAgYXNzaWduKG9wdHIpOwotICAgIHJldHVybiAq
dGhpczsKLX0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+IGlubGluZSBib29s
IG9wZXJhdG9yPT0oY29uc3QgV2Vha0dDUHRyPFQ+JiBhLCBjb25zdCBXZWFrR0NQdHI8VT4mIGIp
Ci17IAotICAgIHJldHVybiBhLmdldCgpID09IGIuZ2V0KCk7IAotfQotCi10ZW1wbGF0ZSA8dHlw
ZW5hbWUgVCwgdHlwZW5hbWUgVT4gaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBXZWFrR0NQ
dHI8VD4mIGEsIFUqIGIpCi17IAotICAgIHJldHVybiBhLmdldCgpID09IGI7IAotfQotCi10ZW1w
bGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4gaW5saW5lIGJvb2wgb3BlcmF0b3I9PShUKiBh
LCBjb25zdCBXZWFrR0NQdHI8VT4mIGIpIAotewotICAgIHJldHVybiBhID09IGIuZ2V0KCk7IAot
fQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4gaW5saW5lIGJvb2wgb3BlcmF0
b3IhPShjb25zdCBXZWFrR0NQdHI8VD4mIGEsIGNvbnN0IFdlYWtHQ1B0cjxVPiYgYikKLXsgCi0g
ICAgcmV0dXJuIGEuZ2V0KCkgIT0gYi5nZXQoKTsgCi19Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBU
LCB0eXBlbmFtZSBVPiBpbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFdlYWtHQ1B0cjxUPiYg
YSwgVSogYikKLXsKLSAgICByZXR1cm4gYS5nZXQoKSAhPSBiOyAKLX0KLQotdGVtcGxhdGUgPHR5
cGVuYW1lIFQsIHR5cGVuYW1lIFU+IGlubGluZSBib29sIG9wZXJhdG9yIT0oVCogYSwgY29uc3Qg
V2Vha0dDUHRyPFU+JiBiKQoteyAKLSAgICByZXR1cm4gYSAhPSBiLmdldCgpOyAKLX0KLQotdGVt
cGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+IGlubGluZSBXZWFrR0NQdHI8VD4gc3RhdGlj
X3BvaW50ZXJfY2FzdChjb25zdCBXZWFrR0NQdHI8VT4mIHApCi17IAotICAgIHJldHVybiBXZWFr
R0NQdHI8VD4oc3RhdGljX2Nhc3Q8VCo+KHAuZ2V0KCkpKTsgCi19Ci0KLXRlbXBsYXRlIDx0eXBl
bmFtZSBULCB0eXBlbmFtZSBVPiBpbmxpbmUgV2Vha0dDUHRyPFQ+IGNvbnN0X3BvaW50ZXJfY2Fz
dChjb25zdCBXZWFrR0NQdHI8VT4mIHApCi17IAotICAgIHJldHVybiBXZWFrR0NQdHI8VD4oY29u
c3RfY2FzdDxUKj4ocC5nZXQoKSkpOyAKLX0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGlubGlu
ZSBUKiBnZXQoY29uc3QgV2Vha0dDUHRyPFQ+JiBwKQotewotICAgIHJldHVybiBwLmdldCgpOwot
fQordGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzIFdlYWtHQ1B0ciA6IHB1YmxpYyBXZWFrR0NQ
dHJCYXNlPFQsIGZhbHNlPiAgeworcHVibGljOgorICAgIHR5cGVkZWYgdHlwZW5hbWUgV2Vha0dD
UHRyQmFzZTxULCBmYWxzZT46OkV4dGVybmFsVHlwZSBFeHRlcm5hbFR5cGU7CisgICAgCisgICAg
V2Vha0dDUHRyKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgRmluYWxpemVyIGZpbmFsaXplciA9
IDApCisgICAgICAgIDogV2Vha0dDUHRyQmFzZTxULCBmYWxzZT4oZ2xvYmFsRGF0YSwgZmluYWxp
emVyKQorICAgIHsKKyAgICB9CisgICAgCisgICAgV2Vha0dDUHRyKEpTR2xvYmFsRGF0YSYgZ2xv
YmFsRGF0YSwgRXh0ZXJuYWxUeXBlIHZhbHVlLCBGaW5hbGl6ZXIgZmluYWxpemVyID0gMCkKKyAg
ICAgICAgOiBXZWFrR0NQdHJCYXNlPFQsIGZhbHNlPihnbG9iYWxEYXRhLCB2YWx1ZSwgZmluYWxp
emVyKQorICAgIHsKKyAgICB9CisgICAgCisgICAgY29uc3QgV2Vha0dDUHRyJiBvcGVyYXRvcj0o
RXh0ZXJuYWxUeXBlIHZhbHVlKQorICAgIHsKKyAgICAgICAgdGhpcy0+aW50ZXJuYWxTZXQodmFs
dWUpOworICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgfQorfTsKIAogfSAvLyBuYW1lc3BhY2Ug
SlNDCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dyaXRlQmFy
cmllci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV3JpdGVCYXJyaWVyLmgKaW5k
ZXggNjQxNTBlZGNlNThiMWEwNTQ1MTkwYTc4NGQwYTg1ZTkyNDRiMmEwNS4uNDQ4NDBhZGRkNzFh
YmZmNTcxMTgyMjYzMzVkNWVkM2Y3ZTAwNmI3ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvV3JpdGVCYXJyaWVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvV3JpdGVCYXJyaWVyLmgKQEAgLTMzLDYgKzMzLDcgQEAgY2xhc3MgSlNDZWxsOwog
Y2xhc3MgSlNHbG9iYWxEYXRhOwogCiB0eXBlZGVmIGVudW0geyB9IFVua25vd247Cit0eXBlZGVm
IEpTVmFsdWUqIEhhbmRsZVNsb3Q7CiAKIHRlbXBsYXRlIDxjbGFzcyBUPiBjbGFzcyBEZXByZWNh
dGVkUHRyIHsKIHB1YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0R2x1ZS9DaGFu
Z2VMb2cgYi9Tb3VyY2UvSmF2YVNjcmlwdEdsdWUvQ2hhbmdlTG9nCmluZGV4IGNjMTM4ODRkOTEz
YWZkNjRkZTg0NjA5ZTgzZDVhYTUyOGM2MzI0YmQuLjM0ZWY0NTIyNzBiYWNlOTFkY2QxNmI5Mzgw
YzIxNjU3MDU5NjJkZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0R2x1ZS9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRHbHVlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBA
CisyMDExLTAyLTE0ICBPbGl2ZXIgSHVudCAgPG9saXZlckBhcHBsZS5jb20+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVmYWN0b3IgaGFuZGxlcyBh
bmQgd2VhayBwb2ludGVycyB0byBiZWNvbWUgbmljZXIgYW5kIG1vcmUgYXV0b21hdGljCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NDQxNQorCisgICAg
ICAgIFVwZGF0ZSB0byB1c2UgbmV3IEdsb2JhbDw+IHR5cGUKKworICAgICAgICAqIEpTUnVuLmNw
cDoKKyAgICAgICAgKEpTUnVuOjpKU1J1bik6CisgICAgICAgIChKU1J1bjo6R2xvYmFsT2JqZWN0
KToKKyAgICAgICAgKiBKU1J1bi5oOgorICAgICAgICAqIEpTVmFsdWVXcmFwcGVyLmNwcDoKKyAg
ICAgICAgKEpTVmFsdWVXcmFwcGVyOjpKU1ZhbHVlV3JhcHBlcik6CisgICAgICAgICogSlNWYWx1
ZVdyYXBwZXIuaDoKKwogMjAxMS0wMi0xMyAgQ2FtZXJvbiBad2FyaWNoICA8endhcmljaEBhcHBs
ZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFuIEJlcm5zdGVpbi4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0R2x1ZS9KU1J1bi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdEdsdWUv
SlNSdW4uY3BwCmluZGV4IDAzZmM0MzFiOTFhYzVjYTljOTdhZTliM2Y5MDdkZTBmMjE1MWEzMGMu
Ljc4MTUxYzFlNDk2ODhmMmIzMzVhNThiYzA0NjQ2ZGRmMTkwYmExMmQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0R2x1ZS9KU1J1bi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRHbHVl
L0pTUnVuLmNwcApAQCAtNDgsNyArNDgsNyBAQCB2b2lkIEpTR2x1ZUdsb2JhbE9iamVjdDo6ZGVz
dHJveURhdGEodm9pZCogZGF0YSkKIEpTUnVuOjpKU1J1bihDRlN0cmluZ1JlZiBzb3VyY2UsIEpT
RmxhZ3MgaW5GbGFncykKICAgICA6ICAgSlNCYXNlKGtKU1J1blR5cGVJRCksCiAgICAgICAgIGZT
b3VyY2UoQ0ZTdHJpbmdUb1VTdHJpbmcoc291cmNlKSksCi0gICAgICAgIGZHbG9iYWxPYmplY3Qo
bmV3ICgmZ2V0VGhyZWFkR2xvYmFsRXhlY1N0YXRlKCktPmdsb2JhbERhdGEoKSkgSlNHbHVlR2xv
YmFsT2JqZWN0KEpTR2x1ZUdsb2JhbE9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKGpzTnVsbCgpKSwg
aW5GbGFncykpLAorICAgICAgICBmR2xvYmFsT2JqZWN0KGdldFRocmVhZEdsb2JhbEV4ZWNTdGF0
ZSgpLT5nbG9iYWxEYXRhKCksIG5ldyAoJmdldFRocmVhZEdsb2JhbEV4ZWNTdGF0ZSgpLT5nbG9i
YWxEYXRhKCkpIEpTR2x1ZUdsb2JhbE9iamVjdChKU0dsdWVHbG9iYWxPYmplY3Q6OmNyZWF0ZVN0
cnVjdHVyZShqc051bGwoKSksIGluRmxhZ3MpKSwKICAgICAgICAgZkZsYWdzKGluRmxhZ3MpCiB7
CiB9CkBAIC02OSw3ICs2OSw3IEBAIFVTdHJpbmcgSlNSdW46OkdldFNvdXJjZSgpIGNvbnN0CiAK
IEpTR2xvYmFsT2JqZWN0KiBKU1J1bjo6R2xvYmFsT2JqZWN0KCkgY29uc3QKIHsKLSAgICByZXR1
cm4gZkdsb2JhbE9iamVjdDsKKyAgICByZXR1cm4gZkdsb2JhbE9iamVjdC5nZXQoKTsKIH0KIAog
Q29tcGxldGlvbiBKU1J1bjo6RXZhbHVhdGUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRHbHVlL0pTUnVuLmggYi9Tb3VyY2UvSmF2YVNjcmlwdEdsdWUvSlNSdW4uaAppbmRleCAxNWQ0
OTViODQxNTk5MDA2MDE2ZDAxZjc4ODJiOGY2MDUxMjkyZTYxLi45MjRiZWNkMWQ0MzM4ZGFiN2U4
MGMwYjI4YzI3NTA4ZDYzNzQyYWE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdEdsdWUv
SlNSdW4uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdEdsdWUvSlNSdW4uaApAQCAtNjcsNyArNjcs
NyBAQCBjbGFzcyBKU1J1biA6IHB1YmxpYyBKU0Jhc2UgewogICAgICAgICBKU0ZsYWdzIEZsYWdz
KCkgY29uc3Q7CiAgICAgcHJpdmF0ZToKICAgICAgICAgVVN0cmluZyBmU291cmNlOwotICAgICAg
ICBQcm90ZWN0ZWRQdHI8SlNHbG9iYWxPYmplY3Q+IGZHbG9iYWxPYmplY3Q7CisgICAgICAgIEds
b2JhbDxKU0dsb2JhbE9iamVjdD4gZkdsb2JhbE9iamVjdDsKICAgICAgICAgSlNGbGFncyBmRmxh
Z3M7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdEdsdWUvSlNWYWx1ZVdyYXBw
ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRHbHVlL0pTVmFsdWVXcmFwcGVyLmNwcAppbmRleCBk
OWFjNDk3ZDkxOTQyZGNiYWU3Nzg1Y2Q3YzNiMWE1NDUyNzY4Zjk5Li4zMjRhOTc0ODc5ZTY0YzZi
NmE4MmJhYTQwNTYyNDIyYmQ0YjIxMWNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdEds
dWUvSlNWYWx1ZVdyYXBwZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0R2x1ZS9KU1ZhbHVl
V3JhcHBlci5jcHAKQEAgLTM0LDcgKzM0LDcgQEAKICNpbmNsdWRlIDxwdGhyZWFkLmg+CiAKIEpT
VmFsdWVXcmFwcGVyOjpKU1ZhbHVlV3JhcHBlcihKU1ZhbHVlIGluVmFsdWUpCi0gICAgOiBmVmFs
dWUoaW5WYWx1ZSkKKyAgICA6IGZWYWx1ZShnZXRUaHJlYWRHbG9iYWxFeGVjU3RhdGUoKS0+Z2xv
YmFsRGF0YSgpLCBpblZhbHVlKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dEdsdWUvSlNWYWx1ZVdyYXBwZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0R2x1ZS9KU1ZhbHVlV3Jh
cHBlci5oCmluZGV4IGNkNTQ0ZDA4MDRhMThmNmJjMjQ0Y2M3ZjMxMzMwN2RiNGI1OTE1YTMuLjlk
MjdmODk5MTQ2NjNlYzIwODk4YTMzNmEwMDY1ZjE4ZmMzODUzZmUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0R2x1ZS9KU1ZhbHVlV3JhcHBlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
R2x1ZS9KU1ZhbHVlV3JhcHBlci5oCkBAIC00Myw3ICs0Myw3IEBAIHB1YmxpYzoKICAgICBKU1Zh
bHVlIEdldFZhbHVlKCk7CiAKIHByaXZhdGU6Ci0gICAgUHJvdGVjdGVkSlNWYWx1ZSBmVmFsdWU7
CisgICAgR2xvYmFsPFVua25vd24+IGZWYWx1ZTsKICAgICAKICAgICBzdGF0aWMgdm9pZCBKU09i
amVjdERpc3Bvc2Uodm9pZCAqZGF0YSk7CiAgICAgc3RhdGljIENGQXJyYXlSZWYgSlNPYmplY3RD
b3B5UHJvcGVydHlOYW1lcyh2b2lkICpkYXRhKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA0OTU4ZDY2NmJhZDQ4
ZDZhODlkMDE2NDNlNGZjM2JhNGEzNTQzZGUzLi4wNGM1YWM4YTc0MjM4Y2NiYTQ4NGNhNWI4ZTYw
YWIwNWUxNmQwZTdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTAxIEBACisyMDExLTAyLTE0ICBP
bGl2ZXIgSHVudCAgPG9saXZlckBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgUmVmYWN0b3IgaGFuZGxlcyBhbmQgd2VhayBwb2ludGVy
cyB0byBiZWNvbWUgbmljZXIgYW5kIG1vcmUgYXV0b21hdGljCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NDQxNQorCisgICAgICAgIFVwZGF0ZSBXZWJD
b3JlIHRvIHVzZSB0aGUgbmV3IEdsb2JhbDw+IHR5cGUgcmF0aGVyIHRoYW4gUHJvdGVjdGVkSlNW
YWx1ZQorICAgICAgICBhbmQgZ2NbVW5dUHJvdGVjdC4gIEFsc28gdXBkYXRlIHRvIHVzZSBuZXcg
V2Vha0dDUHRyIEFQSXMsIGFuZCByZW1vdmUgbm93CisgICAgICAgIHVubmVjZXNzYXJ5IGRlc3Ry
dWN0b3JzLgorCisgICAgICAgICogRm9yd2FyZGluZ0hlYWRlcnMvY29sbGVjdG9yL2hhbmRsZXMv
R2xvYmFsLmg6IEFkZGVkLgorICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9q
OgorICAgICAgICAqIFdlYkNvcmUudmNwcm9qL2NvcHlGb3J3YXJkaW5nSGVhZGVycy5jbWQ6Cisg
ICAgICAgICogYmluZGluZ3MvanMvSlNDYWxsYmFja0RhdGEuaDoKKyAgICAgICAgKFdlYkNvcmU6
OkpTQ2FsbGJhY2tEYXRhOjpKU0NhbGxiYWNrRGF0YSk6CisgICAgICAgICogYmluZGluZ3MvanMv
SlNDdXN0b21Wb2lkQ2FsbGJhY2suaDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUJpbmRp
bmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Zm9yZ2V0RE9NTm9kZSk6CisgICAgICAgIChXZWJD
b3JlOjpjYWNoZURPTU5vZGVXcmFwcGVyKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVdp
bmRvd0Jhc2UuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVdpbmRvd1NoZWxsLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93U2hlbGw6OnNldFdpbmRvdyk6CisgICAgICAg
ICogYmluZGluZ3MvanMvSlNEYXRhR3JpZERhdGFTb3VyY2UuaDoKKyAgICAgICAgKiBiaW5kaW5n
cy9qcy9KU0V2ZW50TGlzdGVuZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNFdmVudExpc3Rl
bmVyOjpKU0V2ZW50TGlzdGVuZXIpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRXZlbnRMaXN0
ZW5lci5oOgorICAgICAgICAoV2ViQ29yZTo6SlNFdmVudExpc3RlbmVyOjpzZXRXcmFwcGVyKToK
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0xhenlFdmVudExpc3RlbmVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkpTTGF6eUV2ZW50TGlzdGVuZXI6OmluaXRpYWxpemVKU0Z1bmN0aW9uKToKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9TY2hlZHVsZWRBY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U2NoZWR1bGVkQWN0aW9uOjpTY2hlZHVsZWRBY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6
U2NoZWR1bGVkQWN0aW9uOjpleGVjdXRlRnVuY3Rpb25JbkNvbnRleHQpOgorICAgICAgICAqIGJp
bmRpbmdzL2pzL1NjaGVkdWxlZEFjdGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6U2NoZWR1bGVk
QWN0aW9uOjpTY2hlZHVsZWRBY3Rpb24pOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdENh
Y2hlZEZyYW1lRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRDYWNoZWRGcmFtZURh
dGE6OlNjcmlwdENhY2hlZEZyYW1lRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRDYWNo
ZWRGcmFtZURhdGE6OnJlc3RvcmUpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdENhY2hl
ZEZyYW1lRGF0YS5oOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdENhbGxTdGFja0ZhY3Rv
cnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlU2NyaXB0QXJndW1lbnRzKToKKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNjcmlwdENvbnRyb2xsZXI6OmNyZWF0ZVdpbmRvd1NoZWxsKToKKyAgICAgICAgKFdlYkNvcmU6
OlNjcmlwdENvbnRyb2xsZXI6OmV2YWx1YXRlSW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JpcHRDb250cm9sbGVyOjpjbGVhcldpbmRvd1NoZWxsKToKKyAgICAgICAgKFdlYkNvcmU6OlNj
cmlwdENvbnRyb2xsZXI6OmF0dGFjaERlYnVnZ2VyKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9T
Y3JpcHRDb250cm9sbGVyLmg6CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0RnVuY3Rpb25D
YWxsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEZ1bmN0aW9uQ2FsbDo6Y2FsbCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JpcHRDYWxsYmFjazo6Y2FsbCk6CisgICAgICAgICogYmluZGlu
Z3MvanMvU2NyaXB0T2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdE9iamVjdDo6
U2NyaXB0T2JqZWN0KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRPYmplY3QuaDoKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRTdGF0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JpcHRTdGF0ZVByb3RlY3RlZFB0cjo6U2NyaXB0U3RhdGVQcm90ZWN0ZWRQdHIpOgorICAgICAg
ICAoV2ViQ29yZTo6U2NyaXB0U3RhdGVQcm90ZWN0ZWRQdHI6OmdldCk6CisgICAgICAgICogYmlu
ZGluZ3MvanMvU2NyaXB0U3RhdGUuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRWYWx1
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRWYWx1ZTo6aXNGdW5jdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpTY3JpcHRWYWx1ZTo6ZGVzZXJpYWxpemUpOgorICAgICAgICAqIGJpbmRp
bmdzL2pzL1NjcmlwdFZhbHVlLmg6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRWYWx1ZTo6U2Ny
aXB0VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0VmFsdWU6Omhhc05vVmFsdWUpOgor
ICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdFdyYXBwYWJsZS5oOgorICAgICAgICAoV2ViQ29y
ZTo6U2NyaXB0V3JhcHBhYmxlOjpTY3JpcHRXcmFwcGFibGUpOgorICAgICAgICAoV2ViQ29yZTo6
U2NyaXB0V3JhcHBhYmxlOjpzZXRXcmFwcGVyKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9Xb3Jr
ZXJTY3JpcHRDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclNjcmlwdENv
bnRyb2xsZXI6OldvcmtlclNjcmlwdENvbnRyb2xsZXIpOgorICAgICAgICAoV2ViQ29yZTo6V29y
a2VyU2NyaXB0Q29udHJvbGxlcjo6fldvcmtlclNjcmlwdENvbnRyb2xsZXIpOgorICAgICAgICAo
V2ViQ29yZTo6V29ya2VyU2NyaXB0Q29udHJvbGxlcjo6aW5pdFNjcmlwdCk6CisgICAgICAgIChX
ZWJDb3JlOjpXb3JrZXJTY3JpcHRDb250cm9sbGVyOjpldmFsdWF0ZSk6CisgICAgICAgICogYmlu
ZGluZ3MvanMvV29ya2VyU2NyaXB0Q29udHJvbGxlci5oOgorICAgICAgICAoV2ViQ29yZTo6V29y
a2VyU2NyaXB0Q29udHJvbGxlcjo6d29ya2VyQ29udGV4dFdyYXBwZXIpOgorICAgICAgICAqIGJp
bmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtOgorICAgICAgICAqIGJyaWRnZS9OUF9q
c29iamVjdC5jcHA6CisgICAgICAgIChfTlBOX0ludm9rZURlZmF1bHQpOgorICAgICAgICAoX05Q
Tl9JbnZva2UpOgorICAgICAgICAoX05QTl9FdmFsdWF0ZSk6CisgICAgICAgIChfTlBOX0NvbnN0
cnVjdCk6CisgICAgICAgICogYnJpZGdlL2pzYy9CcmlkZ2VKU0MuY3BwOgorICAgICAgICAoSlND
OjpCaW5kaW5nczo6SW5zdGFuY2U6Okluc3RhbmNlKToKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6
Okluc3RhbmNlOjp+SW5zdGFuY2UpOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6SW5zdGFuY2U6
OndpbGxEZXN0cm95UnVudGltZU9iamVjdCk6CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpJbnN0
YW5jZTo6d2lsbEludmFsaWRhdGVSdW50aW1lT2JqZWN0KToKKyAgICAgICAgKiBicmlkZ2UvanNj
L0JyaWRnZUpTQy5oOgorICAgICAgICAqIGJyaWRnZS9ydW50aW1lX29iamVjdC5jcHA6CisgICAg
ICAgIChKU0M6OkJpbmRpbmdzOjpSdW50aW1lT2JqZWN0OjppbnZhbGlkYXRlKToKKyAgICAgICAg
KiBicmlkZ2UvcnVudGltZV9yb290LmNwcDoKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6OlJvb3RP
YmplY3Q6OlJvb3RPYmplY3QpOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6Um9vdE9iamVjdDo6
aW52YWxpZGF0ZSk6CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpSb290T2JqZWN0OjpnbG9iYWxP
YmplY3QpOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6Um9vdE9iamVjdDo6dXBkYXRlR2xvYmFs
T2JqZWN0KToKKyAgICAgICAgKiBicmlkZ2UvcnVudGltZV9yb290Lmg6CisgICAgICAgICogZG9t
L0V2ZW50TGlzdGVuZXIuaDoKKyAgICAgICAgKiBkb20vRXZlbnRUYXJnZXQuaDoKKyAgICAgICAg
KFdlYkNvcmU6OkV2ZW50VGFyZ2V0OjptYXJrSlNFdmVudExpc3RlbmVycyk6CisgICAgICAgICog
eG1sL1hNTEh0dHBSZXF1ZXN0LmNwcDoKKwogMjAxMS0wMi0xNCAgQWxleGFuZGVyIFBhdmxvdiAg
PGFwYXZsb3ZAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFl1cnkgU2VtaWto
YXRza3kuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9jb2xs
ZWN0b3IvaGFuZGxlcy9HbG9iYWwuaCBiL1NvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJz
L2NvbGxlY3Rvci9oYW5kbGVzL0dsb2JhbC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBhZDZkNTZlZDM1Njk4ZGE2
MDJhNmRjMzg2NmRlMjMwMDE2MTQzMzYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Gb3J3YXJkaW5nSGVhZGVycy9jb2xsZWN0b3IvaGFuZGxlcy9HbG9iYWwuaApAQCAtMCwwICsx
LDQgQEAKKyNpZm5kZWYgV2ViQ29yZV9GV0RfR2xvYmFsX2gKKyNkZWZpbmUgV2ViQ29yZV9GV0Rf
R2xvYmFsX2gKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9HbG9iYWwuaD4KKyNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2ogYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagppbmRleCAyYThmMzQw
YTY5NDk3MDU3MmZjOWE1NTAwNDhiZjM4M2FmYzllOGI0Li4wNGIzMDU2NGU1N2UxZmJkMzk2YWY0
OTg0NDA3MzUzYzhiMzc4ZGM1IDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZj
cHJvai9XZWJDb3JlLnZjcHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9X
ZWJDb3JlLnZjcHJvagpAQCAtNjQ3ODEsNiArNjQ3ODEsMTggQEAKIAkJCQkJPgogCQkJCTwvRmls
ZT4KIAkJCTwvRmlsdGVyPgorCQkJPEZpbHRlcgorCQkJCU5hbWU9ImNvbGxlY3RvciIKKwkJCQk+
CisJCQkJPEZpbHRlcgorCQkJCQlOYW1lPSJoYW5kbGVzIgorCQkJCQk+CisJCQkJCTxGaWxlCisJ
CQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXEZvcndhcmRpbmdIZWFkZXJzXGNvbGxlY3RvclxoYW5kbGVz
XEdsb2JhbC5oIgorCQkJCQkJPgorCQkJCQk8L0ZpbGU+CisJCQkJPC9GaWx0ZXI+CisJCQk8L0Zp
bHRlcj4KIAkJPC9GaWx0ZXI+CiAJCTxGaWx0ZXIKIAkJCU5hbWU9Imhpc3RvcnkiCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9jb3B5Rm9yd2FyZGluZ0hlYWRlcnMu
Y21kIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovY29weUZvcndhcmRpbmdIZWFkZXJz
LmNtZAppbmRleCAzMzUxZTYwMDg4NDM5NzYyOWE5ZDM0YmU5NmNlZGNjNDNiOTEyM2Q5Li5jNmM3
NGRmM2MxNTdhZDk2NjU3ZDcxMTI0MzY0NWJkMjY5MTBhOTZiIDEwMDc1NQotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnZjcHJvai9jb3B5Rm9yd2FyZGluZ0hlYWRlcnMuY21kCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL2NvcHlGb3J3YXJkaW5nSGVhZGVycy5jbWQKQEAg
LTgsNiArOCw4IEBAIG1rZGlyIDI+TlVMICIlQ09ORklHVVJBVElPTkJVSUxERElSJVxpbmNsdWRl
XFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnNccGFyc2VyIgogbWtkaXIgMj5OVUwgIiVDT05GSUdV
UkFUSU9OQlVJTERESVIlXGluY2x1ZGVcV2ViQ29yZVxGb3J3YXJkaW5nSGVhZGVyc1xydW50aW1l
IgogbWtkaXIgMj5OVUwgIiVDT05GSUdVUkFUSU9OQlVJTERESVIlXGluY2x1ZGVcV2ViQ29yZVxG
b3J3YXJkaW5nSGVhZGVyc1xtYXNtIgogbWtkaXIgMj5OVUwgIiVDT05GSUdVUkFUSU9OQlVJTERE
SVIlXGluY2x1ZGVcV2ViQ29yZVxGb3J3YXJkaW5nSGVhZGVyc1xwcm9maWxlciIKK21rZGlyIDI+
TlVMICIlQ09ORklHVVJBVElPTkJVSUxERElSJVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hl
YWRlcnNcY29sbGVjdG9yIgorbWtkaXIgMj5OVUwgIiVDT05GSUdVUkFUSU9OQlVJTERESVIlXGlu
Y2x1ZGVcV2ViQ29yZVxGb3J3YXJkaW5nSGVhZGVyc1xjb2xsZWN0b3JcaGFuZGxlcyIKIG1rZGly
IDI+TlVMICIlQ09ORklHVVJBVElPTkJVSUxERElSJVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGlu
Z0hlYWRlcnNcd3RmIgogbWtkaXIgMj5OVUwgIiVDT05GSUdVUkFUSU9OQlVJTERESVIlXGluY2x1
ZGVcV2ViQ29yZVxGb3J3YXJkaW5nSGVhZGVyc1x3dGZcdGV4dCIKIG1rZGlyIDI+TlVMICIlQ09O
RklHVVJBVElPTkJVSUxERElSJVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnNcd3Rm
XHVuaWNvZGUiCkBAIC03NSw2ICs3Nyw3IEBAIHhjb3B5IC95IC9kICIlUHJvamVjdERpciUuLlxG
b3J3YXJkaW5nSGVhZGVyc1xwYXJzZXJcKi5oIiAiJUNPTkZJR1VSQVRJT05CVUlMRERJCiB4Y29w
eSAveSAvZCAiJVByb2plY3REaXIlLi5cRm9yd2FyZGluZ0hlYWRlcnNccnVudGltZVwqLmgiICIl
Q09ORklHVVJBVElPTkJVSUxERElSJVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnNc
cnVudGltZSIKIHhjb3B5IC95IC9kICIlUHJvamVjdERpciUuLlxGb3J3YXJkaW5nSGVhZGVyc1xt
YXNtXCouaCIgIiVDT05GSUdVUkFUSU9OQlVJTERESVIlXGluY2x1ZGVcV2ViQ29yZVxGb3J3YXJk
aW5nSGVhZGVyc1xtYXNtIgogeGNvcHkgL3kgL2QgIiVQcm9qZWN0RGlyJS4uXEZvcndhcmRpbmdI
ZWFkZXJzXHByb2ZpbGVyXCouaCIgIiVDT05GSUdVUkFUSU9OQlVJTERESVIlXGluY2x1ZGVcV2Vi
Q29yZVxGb3J3YXJkaW5nSGVhZGVyc1xwcm9maWxlciIKK3hjb3B5IC95IC9kICIlUHJvamVjdERp
ciUuLlxGb3J3YXJkaW5nSGVhZGVyc1xjb2xsZWN0b3JcaGFuZGxlc1wqLmgiICIlQ09ORklHVVJB
VElPTkJVSUxERElSJVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnNcY29sbGVjdG9y
XGhhbmRsZXMiCiB4Y29weSAveSAvZCAiJVByb2plY3REaXIlLi5cRm9yd2FyZGluZ0hlYWRlcnNc
d3RmXCouaCIgIiVDT05GSUdVUkFUSU9OQlVJTERESVIlXGluY2x1ZGVcV2ViQ29yZVxGb3J3YXJk
aW5nSGVhZGVyc1x3dGYiCiB4Y29weSAveSAvZCAiJVByb2plY3REaXIlLi5cRm9yd2FyZGluZ0hl
YWRlcnNcd3RmXHRleHRcKi5oIiAiJUNPTkZJR1VSQVRJT05CVUlMRERJUiVcaW5jbHVkZVxXZWJD
b3JlXEZvcndhcmRpbmdIZWFkZXJzXHd0Zlx0ZXh0IgogeGNvcHkgL3kgL2QgIiVQcm9qZWN0RGly
JS4uXEZvcndhcmRpbmdIZWFkZXJzXHd0Zlx1bmljb2RlXCouaCIgIiVDT05GSUdVUkFUSU9OQlVJ
TERESVIlXGluY2x1ZGVcV2ViQ29yZVxGb3J3YXJkaW5nSGVhZGVyc1x3dGZcdW5pY29kZSIKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ2FsbGJhY2tEYXRhLmggYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NhbGxiYWNrRGF0YS5oCmluZGV4IGY3YjhiZmU5
ZTg1YWY4ZmUwYjU4MjNkZDBkMjBmNTY4ZDI1YzVhYzkuLjk0MmNkOWNjYjcwM2FjNDJhMjUwMjVk
YjRjYmVkYTA4NWQyYWU0MmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTQ2FsbGJhY2tEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDYWxs
YmFja0RhdGEuaApAQCAtMzIsOCArMzIsOCBAQAogI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgog
I2luY2x1ZGUgIkpTRE9NR2xvYmFsT2JqZWN0LmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9u
Q29udGV4dC5oIgorI2luY2x1ZGUgPGNvbGxlY3Rvci9oYW5kbGVzL0dsb2JhbC5oPgogI2luY2x1
ZGUgPHJ1bnRpbWUvSlNPYmplY3QuaD4KLSNpbmNsdWRlIDxydW50aW1lL1Byb3RlY3QuaD4KICNp
bmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTQ3LDgg
KzQ3LDggQEAgcHVibGljOgogICAgIHN0YXRpYyB2b2lkIGRlbGV0ZURhdGEodm9pZCopOwogCiAg
ICAgSlNDYWxsYmFja0RhdGEoSlNDOjpKU09iamVjdCogY2FsbGJhY2ssIEpTRE9NR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QpCi0gICAgICAgIDogbV9jYWxsYmFjayhjYWxsYmFjaykKLSAgICAg
ICAgLCBtX2dsb2JhbE9iamVjdChnbG9iYWxPYmplY3QpCisgICAgICAgIDogbV9jYWxsYmFjayhn
bG9iYWxPYmplY3QtPmdsb2JhbERhdGEoKSwgY2FsbGJhY2spCisgICAgICAgICwgbV9nbG9iYWxP
YmplY3QoZ2xvYmFsT2JqZWN0LT5nbG9iYWxEYXRhKCksIGdsb2JhbE9iamVjdCkKICNpZm5kZWYg
TkRFQlVHCiAgICAgICAgICwgbV90aHJlYWQoY3VycmVudFRocmVhZCgpKQogI2VuZGlmCkBAIC02
Niw4ICs2Niw4IEBAIHB1YmxpYzoKICAgICBKU0M6OkpTVmFsdWUgaW52b2tlQ2FsbGJhY2soSlND
OjpNYXJrZWRBcmd1bWVudEJ1ZmZlciYsIGJvb2wqIHJhaXNlZEV4Y2VwdGlvbiA9IDApOwogCiBw
cml2YXRlOgotICAgIEpTQzo6UHJvdGVjdGVkUHRyPEpTQzo6SlNPYmplY3Q+IG1fY2FsbGJhY2s7
Ci0gICAgSlNDOjpQcm90ZWN0ZWRQdHI8SlNET01HbG9iYWxPYmplY3Q+IG1fZ2xvYmFsT2JqZWN0
OworICAgIEpTQzo6R2xvYmFsPEpTQzo6SlNPYmplY3Q+IG1fY2FsbGJhY2s7CisgICAgSlNDOjpH
bG9iYWw8SlNET01HbG9iYWxPYmplY3Q+IG1fZ2xvYmFsT2JqZWN0OwogI2lmbmRlZiBOREVCVUcK
ICAgICBUaHJlYWRJZGVudGlmaWVyIG1fdGhyZWFkOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbVZvaWRDYWxsYmFjay5oIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21Wb2lkQ2FsbGJhY2suaAppbmRleCA4ZmZlZTQ4YzNl
NzU3YjJmNmZkMjUxNGQ4M2QyZTk5ZjIxZDJlZTMzLi45MjJlMzgwOGY3NmM1OWY0ZDNjODE2OWNi
MDM2MWE5N2M4MmI3ZjgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0N1c3RvbVZvaWRDYWxsYmFjay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
Q3VzdG9tVm9pZENhbGxiYWNrLmgKQEAgLTMxLDcgKzMxLDcgQEAKIAogI2luY2x1ZGUgIkpTRE9N
R2xvYmFsT2JqZWN0LmgiCiAjaW5jbHVkZSAiVm9pZENhbGxiYWNrLmgiCi0jaW5jbHVkZSA8cnVu
dGltZS9Qcm90ZWN0Lmg+CisjaW5jbHVkZSA8Y29sbGVjdG9yL2hhbmRsZXMvR2xvYmFsLmg+CiAj
aW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5jcHAKaW5kZXggN2RlMjcxOWU3NzFmMDQy
MWQxOTlmZGJjNzIxNzQyNGFkYzg4MjJhZS4uNmM0MjBiYWE5MTBjZmNiZTIzYTE0Y2JhNzEyODE4
Y2ZkOWU3YTA2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01C
aW5kaW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcu
Y3BwCkBAIC0yMDYsOCArMjA2LDYgQEAgdm9pZCBmb3JnZXRET01PYmplY3QoRE9NT2JqZWN0KiB3
cmFwcGVyLCB2b2lkKiBvYmplY3RIYW5kbGUpCiAKIHZvaWQgZm9yZ2V0RE9NTm9kZShKU05vZGUq
IHdyYXBwZXIsIE5vZGUqIG5vZGUsIERvY3VtZW50KiBkb2N1bWVudCkKIHsKLSAgICBub2RlLT5j
bGVhcldyYXBwZXIod3JhcHBlcik7Ci0KICAgICBpZiAoIWRvY3VtZW50KSB7CiAgICAgICAgIGZv
cmdldERPTU9iamVjdCh3cmFwcGVyLCBub2RlKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMjMzLDcg
KzIzMSw3IEBAIHZvaWQgY2FjaGVET01Ob2RlV3JhcHBlcihKU0M6OkV4ZWNTdGF0ZSogZXhlYywg
RG9jdW1lbnQqIGRvY3VtZW50LCBOb2RlKiBub2RlLCBKCiAgICAgICAgIGRvY3VtZW50LT5nZXRX
cmFwcGVyQ2FjaGUoY3VycmVudFdvcmxkKGV4ZWMpKS0+c2V0KG5vZGUsIHdyYXBwZXIpOwogCiAg
ICAgaWYgKGN1cnJlbnRXb3JsZChleGVjKS0+aXNOb3JtYWwoKSkKLSAgICAgICAgbm9kZS0+c2V0
V3JhcHBlcih3cmFwcGVyKTsKKyAgICAgICAgbm9kZS0+c2V0V3JhcHBlcihleGVjLT5nbG9iYWxE
YXRhKCksIHdyYXBwZXIpOwogfQogCiBzdGF0aWMgaW5saW5lIGJvb2wgaXNPYnNlcnZhYmxlVGhy
b3VnaERPTShKU05vZGUqIGpzTm9kZSwgRE9NV3JhcHBlcldvcmxkKiB3b3JsZCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5oIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmgKaW5kZXggZmJlZjgwODc1Yjdi
MzkzM2FiYzgyNjI5YWFkNWYyODczMWJmZmE3MS4uMWQ4MzdjOTY3ZDE0YWE1NjRmOGY2OWU4NDQ3
N2JjZjBlNmViYzNkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
T01XaW5kb3dCYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5k
b3dCYXNlLmgKQEAgLTIyLDcgKzIyLDcgQEAKIAogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgi
CiAjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCi0jaW5jbHVkZSA8cnVudGltZS9Qcm90ZWN0Lmg+
CisjaW5jbHVkZSA8Y29sbGVjdG9yL2hhbmRsZXMvR2xvYmFsLmg+CiAjaW5jbHVkZSA8d3RmL0Zv
cndhcmQuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIu
aD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93U2hl
bGwuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dTaGVsbC5jcHAK
aW5kZXggNDBmOTkxMGNhMzRkZTU4YzU3NGViZmZmNWI0NzA3NDBlNTUzNjUyNC4uMTAzM2Y0MmY0
OGFhMzgzZjllYjcwZGU3OTRjNDQxODFlYzM2MDI2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dTaGVsbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNET01XaW5kb3dTaGVsbC5jcHAKQEAgLTYwLDkgKzYwLDkgQEAgdm9pZCBK
U0RPTVdpbmRvd1NoZWxsOjpzZXRXaW5kb3coUGFzc1JlZlB0cjxET01XaW5kb3c+IGRvbVdpbmRv
dykKICAgICAvLyB3aGVuIHdlIGFsbG9jYXRlIHRoZSBnbG9iYWwgb2JqZWN0LiAoT25jZSB0aGUg
Z2xvYmFsIG9iamVjdCBpcyBmdWxseQogICAgIC8vIGNvbnN0cnVjdGVkLCBpdCBjYW4gbWFyayBp
dHMgb3duIHByb3RvdHlwZS4pCiAgICAgUmVmUHRyPFN0cnVjdHVyZT4gcHJvdG90eXBlU3RydWN0
dXJlID0gSlNET01XaW5kb3dQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZShqc051bGwoKSk7Ci0g
ICAgUHJvdGVjdGVkUHRyPEpTRE9NV2luZG93UHJvdG90eXBlPiBwcm90b3R5cGUgPSBuZXcgSlNE
T01XaW5kb3dQcm90b3R5cGUoMCwgcHJvdG90eXBlU3RydWN0dXJlLnJlbGVhc2UoKSk7CisgICAg
R2xvYmFsPEpTRE9NV2luZG93UHJvdG90eXBlPiBwcm90b3R5cGUoKkpTRE9NV2luZG93Ojpjb21t
b25KU0dsb2JhbERhdGEoKSwgbmV3IEpTRE9NV2luZG93UHJvdG90eXBlKDAsIHByb3RvdHlwZVN0
cnVjdHVyZS5yZWxlYXNlKCkpKTsKIAotICAgIFJlZlB0cjxTdHJ1Y3R1cmU+IHN0cnVjdHVyZSA9
IEpTRE9NV2luZG93OjpjcmVhdGVTdHJ1Y3R1cmUocHJvdG90eXBlKTsKKyAgICBSZWZQdHI8U3Ry
dWN0dXJlPiBzdHJ1Y3R1cmUgPSBKU0RPTVdpbmRvdzo6Y3JlYXRlU3RydWN0dXJlKHByb3RvdHlw
ZS5nZXQoKSk7CiAgICAgSlNET01XaW5kb3cqIGpzRE9NV2luZG93ID0gbmV3IChKU0RPTVdpbmRv
dzo6Y29tbW9uSlNHbG9iYWxEYXRhKCkpIEpTRE9NV2luZG93KHN0cnVjdHVyZS5yZWxlYXNlKCks
IGRvbVdpbmRvdywgdGhpcyk7CiAgICAgcHJvdG90eXBlLT5wdXRBbm9ueW1vdXNWYWx1ZSgqSlNE
T01XaW5kb3c6OmNvbW1vbkpTR2xvYmFsRGF0YSgpLCAwLCBqc0RPTVdpbmRvdyk7CiAgICAgc2V0
V2luZG93KCpKU0RPTVdpbmRvdzo6Y29tbW9uSlNHbG9iYWxEYXRhKCksIGpzRE9NV2luZG93KTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGF0YUdyaWREYXRhU291
cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RhdGFHcmlkRGF0YVNvdXJjZS5o
CmluZGV4IDA3N2VmOGY4MGNlZDVlOTFjNWU4YjJiMzgxYWRlMDdjMGY4YmJlOWEuLjY4NGE2NjNj
NTNmZjA3ZmQ2YmIzYTZlY2IzYzRhZTI5OTMyYWNmMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRGF0YUdyaWREYXRhU291cmNlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNEYXRhR3JpZERhdGFTb3VyY2UuaApAQCAtMjksOCArMjksOCBAQAog
I2lmIEVOQUJMRShEQVRBR1JJRCkKIAogI2luY2x1ZGUgIkRhdGFHcmlkRGF0YVNvdXJjZS5oIgor
I2luY2x1ZGUgPGNvbGxlY3Rvci9oYW5kbGVzL0dsb2JhbC5oPgogI2luY2x1ZGUgPHJ1bnRpbWUv
SlNWYWx1ZS5oPgotI2luY2x1ZGUgPHJ1bnRpbWUvUHJvdGVjdC5oPgogI2luY2x1ZGUgPHd0Zi9Q
YXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50TGlzdGVuZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNFdmVudExpc3RlbmVyLmNwcAppbmRleCA2NDI3NjgzZjQyZTYzNDhi
NmIzZmJiN2UzMTBjODBmYmE2ZGFkZDk4Li44MjVhNGFkM2FjNDgwNjU3NmUwOTRjZDRhOGMwN2Ji
NGEzNzE5ODI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50
TGlzdGVuZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRMaXN0
ZW5lci5jcHAKQEAgLTM0LDExICszNCwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIEpTRXZl
bnRMaXN0ZW5lcjo6SlNFdmVudExpc3RlbmVyKEpTT2JqZWN0KiBmdW5jdGlvbiwgSlNPYmplY3Qq
IHdyYXBwZXIsIGJvb2wgaXNBdHRyaWJ1dGUsIERPTVdyYXBwZXJXb3JsZCogaXNvbGF0ZWRXb3Js
ZCkKICAgICA6IEV2ZW50TGlzdGVuZXIoSlNFdmVudExpc3RlbmVyVHlwZSkKKyAgICAsIG1fd3Jh
cHBlcigqaXNvbGF0ZWRXb3JsZC0+Z2xvYmFsRGF0YSgpLCB3cmFwcGVyKQogICAgICwgbV9pc0F0
dHJpYnV0ZShpc0F0dHJpYnV0ZSkKICAgICAsIG1faXNvbGF0ZWRXb3JsZChpc29sYXRlZFdvcmxk
KQogewotICAgIGlmICh3cmFwcGVyKQotICAgICAgICBtX3dyYXBwZXIgPSB3cmFwcGVyOwogICAg
IG1fanNGdW5jdGlvbi5zZXQoKm1faXNvbGF0ZWRXb3JsZC0+Z2xvYmFsRGF0YSgpLCB3cmFwcGVy
LCBmdW5jdGlvbik7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRXZlbnRMaXN0ZW5lci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudExp
c3RlbmVyLmgKaW5kZXggNDdmZjQ0ZWM3NmUyMzgxMjNkZTJiYTM3NWY2NTAxMzMxYTA3YTYwYi4u
NjhlZmUzYzg1N2RjY2RjODlmYWRiYmY3OGUzMzc0NGM3NGRhZmMxYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudExpc3RlbmVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNFdmVudExpc3RlbmVyLmgKQEAgLTUzLDEyICs1MywxMSBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIERPTVdyYXBwZXJXb3JsZCogaXNvbGF0ZWRXb3Js
ZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNvbGF0ZWRXb3JsZC5nZXQoKTsgfQogCiAgICAgICAgIEpT
Qzo6SlNPYmplY3QqIHdyYXBwZXIoKSBjb25zdCB7IHJldHVybiBtX3dyYXBwZXIuZ2V0KCk7IH0K
LSAgICAgICAgdm9pZCBzZXRXcmFwcGVyKEpTQzo6SlNPYmplY3QqIHdyYXBwZXIpIGNvbnN0IHsg
bV93cmFwcGVyID0gd3JhcHBlcjsgfQorICAgICAgICB2b2lkIHNldFdyYXBwZXIoSlNDOjpKU0ds
b2JhbERhdGEmLCBKU0M6OkpTT2JqZWN0KiB3cmFwcGVyKSBjb25zdCB7IG1fd3JhcHBlciA9IHdy
YXBwZXI7IH0KIAogICAgIHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwgSlNDOjpKU09iamVjdCog
aW5pdGlhbGl6ZUpTRnVuY3Rpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopIGNvbnN0OwogICAg
ICAgICB2aXJ0dWFsIHZvaWQgbWFya0pTRnVuY3Rpb24oSlNDOjpNYXJrU3RhY2smKTsKLSAgICAg
ICAgdmlydHVhbCB2b2lkIGludmFsaWRhdGVKU0Z1bmN0aW9uKEpTQzo6SlNPYmplY3QqKTsKICAg
ICAgICAgdmlydHVhbCBib29sIHZpcnR1YWxpc0F0dHJpYnV0ZSgpIGNvbnN0OwogCiAgICAgcHJv
dGVjdGVkOgpAQCAtOTEsMTEgKzkwLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBy
ZXR1cm4gbV9qc0Z1bmN0aW9uLmdldCgpOwogICAgIH0KIAotICAgIGlubGluZSB2b2lkIEpTRXZl
bnRMaXN0ZW5lcjo6aW52YWxpZGF0ZUpTRnVuY3Rpb24oSlNDOjpKU09iamVjdCogd3JhcHBlcikK
LSAgICB7Ci0gICAgICAgIG1fd3JhcHBlci5jbGVhcih3cmFwcGVyKTsKLSAgICB9Ci0KICAgICAv
LyBDcmVhdGVzIGEgSlMgRXZlbnRMaXN0ZW5lciBmb3IgYW4gIm9uWFhYIiBldmVudCBhdHRyaWJ1
dGUuCiAgICAgaW5saW5lIFBhc3NSZWZQdHI8SlNFdmVudExpc3RlbmVyPiBjcmVhdGVKU0F0dHJp
YnV0ZUV2ZW50TGlzdGVuZXIoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTQzo6SlNWYWx1ZSBsaXN0
ZW5lciwgSlNDOjpKU09iamVjdCogd3JhcHBlcikKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0xhenlFdmVudExpc3RlbmVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTTGF6eUV2ZW50TGlzdGVuZXIuY3BwCmluZGV4IDFhYWQ3ZGZkMDY0
NDZlZTQ0ZTE4ODc4NmQyOWQ1MmUyOGFkZDcwN2EuLmUxN2EzZDRjYmJlYzEzOWUyYjIzYjY5Mzg2
MTc1MGI4NmQ2Yzk1NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
TGF6eUV2ZW50TGlzdGVuZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
TGF6eUV2ZW50TGlzdGVuZXIuY3BwCkBAIC0xMTUsNyArMTE1LDcgQEAgSlNPYmplY3QqIEpTTGF6
eUV2ZW50TGlzdGVuZXI6OmluaXRpYWxpemVKU0Z1bmN0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIGV4ZWMKICAgICAgICAgICAgIC8vIEVuc3VyZSB0aGF0ICdub2RlJyBoYXMgYSBKYXZhU2Ny
aXB0IHdyYXBwZXIgdG8gbWFyayB0aGUgZXZlbnQgbGlzdGVuZXIgd2UncmUgY3JlYXRpbmcuCiAg
ICAgICAgICAgICBKU0xvY2sgbG9jayhTaWxlbmNlQXNzZXJ0aW9uc09ubHkpOwogICAgICAgICAg
ICAgLy8gRklYTUU6IFNob3VsZCBwYXNzIHRoZSBnbG9iYWwgb2JqZWN0IGFzc29jaWF0ZWQgd2l0
aCB0aGUgbm9kZQotICAgICAgICAgICAgc2V0V3JhcHBlcihhc09iamVjdCh0b0pTKGdsb2JhbE9i
amVjdC0+Z2xvYmFsRXhlYygpLCBnbG9iYWxPYmplY3QsIG1fb3JpZ2luYWxOb2RlKSkpOworICAg
ICAgICAgICAgc2V0V3JhcHBlcihleGVjLT5nbG9iYWxEYXRhKCksIGFzT2JqZWN0KHRvSlMoZXhl
YywgZ2xvYmFsT2JqZWN0LCBtX29yaWdpbmFsTm9kZSkpKTsKICAgICAgICAgfQogCiAgICAgICAg
IC8vIEFkZCB0aGUgZXZlbnQncyBob21lIGVsZW1lbnQgdG8gdGhlIHNjb3BlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY2hlZHVsZWRBY3Rpb24uY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvU2NoZWR1bGVkQWN0aW9uLmNwcAppbmRleCBkNmY4YTM4Y2Mz
NDMzZjZlMzc3OTJkZGNhM2VjMzg2OTQzNTMwZGZlLi5mNjIzMDE3MjJhOGU0ZWJhYTkzOTJlOTc3
NzVmNTdmZWNhZjQ0ZGI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9T
Y2hlZHVsZWRBY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjaGVk
dWxlZEFjdGlvbi5jcHAKQEAgLTYxLDEzICs2MSwxMyBAQCBQYXNzT3duUHRyPFNjaGVkdWxlZEFj
dGlvbj4gU2NoZWR1bGVkQWN0aW9uOjpjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBET01XcmFwcGVy
VwogfQogCiBTY2hlZHVsZWRBY3Rpb246OlNjaGVkdWxlZEFjdGlvbihFeGVjU3RhdGUqIGV4ZWMs
IEpTVmFsdWUgZnVuY3Rpb24sIERPTVdyYXBwZXJXb3JsZCogaXNvbGF0ZWRXb3JsZCkKLSAgICA6
IG1fZnVuY3Rpb24oZnVuY3Rpb24pCisgICAgOiBtX2Z1bmN0aW9uKGV4ZWMtPmdsb2JhbERhdGEo
KSwgZnVuY3Rpb24pCiAgICAgLCBtX2lzb2xhdGVkV29ybGQoaXNvbGF0ZWRXb3JsZCkKIHsKICAg
ICAvLyBzZXRUaW1lb3V0KGZ1bmN0aW9uLCBpbnRlcnZhbCwgYXJnMCwgYXJnMS4uLikuCiAgICAg
Ly8gU3RhcnQgYXQgMiB0byBza2lwIGZ1bmN0aW9uIGFuZCBpbnRlcnZhbC4KICAgICBmb3IgKHNp
emVfdCBpID0gMjsgaSA8IGV4ZWMtPmFyZ3VtZW50Q291bnQoKTsgKytpKQotICAgICAgICBtX2Fy
Z3MuYXBwZW5kKGV4ZWMtPmFyZ3VtZW50KGkpKTsKKyAgICAgICAgbV9hcmdzLmFwcGVuZChHbG9i
YWw8SlNDOjpVbmtub3duPihleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPmFyZ3VtZW50KGkpKSk7
CiB9CiAKIHZvaWQgU2NoZWR1bGVkQWN0aW9uOjpleGVjdXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIGNvbnRleHQpCkBAIC05OSwxMyArOTksMTMgQEAgdm9pZCBTY2hlZHVsZWRBY3Rpb246OmV4
ZWN1dGVGdW5jdGlvbkluQ29udGV4dChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1YK
ICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmdzOwogICAgIHNpemVfdCBzaXplID0gbV9hcmdz
LnNpemUoKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7ICsraSkKLSAgICAgICAg
YXJncy5hcHBlbmQobV9hcmdzW2ldKTsKKyAgICAgICAgYXJncy5hcHBlbmQobV9hcmdzW2ldLmdl
dCgpKTsKIAogICAgIGdsb2JhbE9iamVjdC0+Z2xvYmFsRGF0YSgpLnRpbWVvdXRDaGVja2VyLnN0
YXJ0KCk7CiAgICAgaWYgKGNvbnRleHQtPmlzRG9jdW1lbnQoKSkKLSAgICAgICAgSlNNYWluVGhy
ZWFkRXhlY1N0YXRlOjpjYWxsKGV4ZWMsIG1fZnVuY3Rpb24sIGNhbGxUeXBlLCBjYWxsRGF0YSwg
dGhpc1ZhbHVlLCBhcmdzKTsKKyAgICAgICAgSlNNYWluVGhyZWFkRXhlY1N0YXRlOjpjYWxsKGV4
ZWMsIG1fZnVuY3Rpb24uZ2V0KCksIGNhbGxUeXBlLCBjYWxsRGF0YSwgdGhpc1ZhbHVlLCBhcmdz
KTsKICAgICBlbHNlCi0gICAgICAgIEpTQzo6Y2FsbChleGVjLCBtX2Z1bmN0aW9uLCBjYWxsVHlw
ZSwgY2FsbERhdGEsIHRoaXNWYWx1ZSwgYXJncyk7CisgICAgICAgIEpTQzo6Y2FsbChleGVjLCBt
X2Z1bmN0aW9uLmdldCgpLCBjYWxsVHlwZSwgY2FsbERhdGEsIHRoaXNWYWx1ZSwgYXJncyk7CiAg
ICAgZ2xvYmFsT2JqZWN0LT5nbG9iYWxEYXRhKCkudGltZW91dENoZWNrZXIuc3RvcCgpOwogCiAg
ICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvU2NoZWR1bGVkQWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9TY2hlZHVsZWRBY3Rpb24uaAppbmRleCA1OWFkNmZjMjViMjM1NDdjYTFmMDNlYTgyMWJmNzIz
YjM0OTI1MjAxLi5jNGIzZWRmMDVjMzNlNjExZDU3OWVhMWI4NGMyYjUwYzNmZjgxYjAxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY2hlZHVsZWRBY3Rpb24uaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY2hlZHVsZWRBY3Rpb24uaApAQCAtMjIsOCAr
MjIsOCBAQAogCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKICNpbmNsdWRlIDxKU0RPTUJp
bmRpbmcuaD4KKyNpbmNsdWRlIDxjb2xsZWN0b3IvaGFuZGxlcy9HbG9iYWwuaD4KICNpbmNsdWRl
IDxydW50aW1lL0pTQ2VsbC5oPgotI2luY2x1ZGUgPHJ1bnRpbWUvUHJvdGVjdC5oPgogI2luY2x1
ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCkBAIC01MSw3
ICs1MSw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBwcml2YXRlOgogICAgICAgICBTY2hl
ZHVsZWRBY3Rpb24oSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTVmFsdWUgZnVuY3Rpb24sIERPTVdy
YXBwZXJXb3JsZCogaXNvbGF0ZWRXb3JsZCk7CiAgICAgICAgIFNjaGVkdWxlZEFjdGlvbihjb25z
dCBTdHJpbmcmIGNvZGUsIERPTVdyYXBwZXJXb3JsZCogaXNvbGF0ZWRXb3JsZCkKLSAgICAgICAg
ICAgIDogbV9jb2RlKGNvZGUpCisgICAgICAgICAgICA6IG1fZnVuY3Rpb24oKmlzb2xhdGVkV29y
bGQtPmdsb2JhbERhdGEoKSkKKyAgICAgICAgICAgICwgbV9jb2RlKGNvZGUpCiAgICAgICAgICAg
ICAsIG1faXNvbGF0ZWRXb3JsZChpc29sYXRlZFdvcmxkKQogICAgICAgICB7CiAgICAgICAgIH0K
QEAgLTYyLDggKzYzLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2b2lkIGV4ZWN1
dGUoV29ya2VyQ29udGV4dCopOwogI2VuZGlmCiAKLSAgICAgICAgSlNDOjpQcm90ZWN0ZWRKU1Zh
bHVlIG1fZnVuY3Rpb247Ci0gICAgICAgIFZlY3RvcjxKU0M6OlByb3RlY3RlZEpTVmFsdWU+IG1f
YXJnczsKKyAgICAgICAgSlNDOjpHbG9iYWw8SlNDOjpVbmtub3duPiBtX2Z1bmN0aW9uOworICAg
ICAgICBWZWN0b3I8SlNDOjpHbG9iYWw8SlNDOjpVbmtub3duPiA+IG1fYXJnczsKICAgICAgICAg
U3RyaW5nIG1fY29kZTsKICAgICAgICAgUmVmUHRyPERPTVdyYXBwZXJXb3JsZD4gbV9pc29sYXRl
ZFdvcmxkOwogICAgIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9T
Y3JpcHRDYWNoZWRGcmFtZURhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2Ny
aXB0Q2FjaGVkRnJhbWVEYXRhLmNwcAppbmRleCBkNjViY2UyNjAxMzhmOTE4NjkwZWNlODZmZDI0
Y2JiNDg4ZWNjMGRkLi41YTQ2N2YyOTczYmUzZmIzZjliMmRiYjRjZGQyNjE5ZWM2YmZhYWRlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDYWNoZWRGcmFtZURh
dGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENhY2hlZEZyYW1l
RGF0YS5jcHAKQEAgLTU0LDcgKzU0LDcgQEAgU2NyaXB0Q2FjaGVkRnJhbWVEYXRhOjpTY3JpcHRD
YWNoZWRGcmFtZURhdGEoRnJhbWUqIGZyYW1lKQogICAgIFNjcmlwdENvbnRyb2xsZXI6OlNoZWxs
TWFwOjppdGVyYXRvciB3aW5kb3dTaGVsbHNFbmQgPSB3aW5kb3dTaGVsbHMuZW5kKCk7CiAgICAg
Zm9yIChTY3JpcHRDb250cm9sbGVyOjpTaGVsbE1hcDo6aXRlcmF0b3IgaXRlciA9IHdpbmRvd1No
ZWxscy5iZWdpbigpOyBpdGVyICE9IHdpbmRvd1NoZWxsc0VuZDsgKytpdGVyKSB7CiAgICAgICAg
IEpTRE9NV2luZG93KiB3aW5kb3cgPSBpdGVyLT5zZWNvbmQtPndpbmRvdygpOwotICAgICAgICBt
X3dpbmRvd3MuYWRkKGl0ZXItPmZpcnN0LmdldCgpLCB3aW5kb3cpOworICAgICAgICBtX3dpbmRv
d3MuYWRkKGl0ZXItPmZpcnN0LmdldCgpLCBHbG9iYWw8SlNET01XaW5kb3c+KHdpbmRvdy0+Z2xv
YmFsRGF0YSgpLCB3aW5kb3cpKTsKICAgICAgICAgbV9kb21XaW5kb3cgPSB3aW5kb3ctPmltcGwo
KTsKICAgICB9CiAKQEAgLTgzLDcgKzgzLDcgQEAgdm9pZCBTY3JpcHRDYWNoZWRGcmFtZURhdGE6
OnJlc3RvcmUoRnJhbWUqIGZyYW1lKQogICAgICAgICBET01XcmFwcGVyV29ybGQqIHdvcmxkID0g
aXRlci0+Zmlyc3QuZ2V0KCk7CiAgICAgICAgIEpTRE9NV2luZG93U2hlbGwqIHdpbmRvd1NoZWxs
ID0gaXRlci0+c2Vjb25kLmdldCgpOwogCi0gICAgICAgIGlmIChKU0RPTVdpbmRvdyogd2luZG93
ID0gbV93aW5kb3dzLmdldCh3b3JsZCkpCisgICAgICAgIGlmIChKU0RPTVdpbmRvdyogd2luZG93
ID0gbV93aW5kb3dzLmdldCh3b3JsZCkuZ2V0KCkpCiAgICAgICAgICAgICB3aW5kb3dTaGVsbC0+
c2V0V2luZG93KHdpbmRvdy0+Z2xvYmFsRGF0YSgpLCB3aW5kb3cpOwogICAgICAgICBlbHNlIHsK
ICAgICAgICAgICAgIHdpbmRvd1NoZWxsLT5zZXRXaW5kb3coZnJhbWUtPmRvbVdpbmRvdygpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENhY2hlZEZyYW1l
RGF0YS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q2FjaGVkRnJhbWVEYXRh
LmgKaW5kZXggNWY2OTFkOTFmZmM2NGNkOTViODI2NzViMzI4ODQwMjA4MDdlOGFjZi4uMDg4NzRk
NTU0ZGJjOTI2NTZlNjAwMDFjZjA1YTdjZmM5ZTAyMjVhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q2FjaGVkRnJhbWVEYXRhLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q2FjaGVkRnJhbWVEYXRhLmgKQEAgLTMyLDcgKzMyLDcg
QEAKICNpZm5kZWYgU2NyaXB0Q2FjaGVkRnJhbWVEYXRhX2gKICNkZWZpbmUgU2NyaXB0Q2FjaGVk
RnJhbWVEYXRhX2gKIAotI2luY2x1ZGUgPHJ1bnRpbWUvUHJvdGVjdC5oPgorI2luY2x1ZGUgPGNv
bGxlY3Rvci9oYW5kbGVzL0dsb2JhbC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xh
c3MgRnJhbWU7CkBAIC00Miw3ICs0Miw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgIGNs
YXNzIFNjcmlwdENhY2hlZEZyYW1lRGF0YSB7CiAgICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxF
KFNjcmlwdENhY2hlZEZyYW1lRGF0YSk7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotICAgICAg
ICB0eXBlZGVmIEhhc2hNYXA8IFJlZlB0cjxET01XcmFwcGVyV29ybGQ+LCBKU0M6OlByb3RlY3Rl
ZFB0cjxKU0RPTVdpbmRvdz4gPiBKU0RPTVdpbmRvd1NldDsKKyAgICAgICAgdHlwZWRlZiBIYXNo
TWFwPCBSZWZQdHI8RE9NV3JhcHBlcldvcmxkPiwgSlNDOjpHbG9iYWw8SlNET01XaW5kb3c+ID4g
SlNET01XaW5kb3dTZXQ7CiAKICAgICBwdWJsaWM6CiAgICAgICAgIFNjcmlwdENhY2hlZEZyYW1l
RGF0YShGcmFtZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2Ny
aXB0Q2FsbFN0YWNrRmFjdG9yeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3Jp
cHRDYWxsU3RhY2tGYWN0b3J5LmNwcAppbmRleCA5NGNkMTI3ZDAyMDA0MzMzZmRkN2I5ZjY5YWU1
MmVlNjA3M2ZmNGM3Li5hMjY2NDQ5MjEwZDg3NGRjYzg1ZjRjNmNhMjY0YjQ0ZTgwN2E0NGNmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDYWxsU3RhY2tGYWN0
b3J5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDYWxsU3RhY2tG
YWN0b3J5LmNwcApAQCAtODgsNyArODgsNyBAQCBQYXNzUmVmUHRyPFNjcmlwdEFyZ3VtZW50cz4g
Y3JlYXRlU2NyaXB0QXJndW1lbnRzKEpTQzo6RXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZAogICAg
IFZlY3RvcjxTY3JpcHRWYWx1ZT4gYXJndW1lbnRzOwogICAgIHNpemVfdCBhcmd1bWVudENvdW50
ID0gZXhlYy0+YXJndW1lbnRDb3VudCgpOwogICAgIGZvciAoc2l6ZV90IGkgPSBza2lwQXJndW1l
bnRDb3VudDsgaSA8IGFyZ3VtZW50Q291bnQ7ICsraSkKLSAgICAgICAgYXJndW1lbnRzLmFwcGVu
ZChTY3JpcHRWYWx1ZShleGVjLT5hcmd1bWVudChpKSkpOworICAgICAgICBhcmd1bWVudHMuYXBw
ZW5kKFNjcmlwdFZhbHVlKGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+YXJndW1lbnQoaSkpKTsK
ICAgICByZXR1cm4gU2NyaXB0QXJndW1lbnRzOjpjcmVhdGUoZXhlYywgYXJndW1lbnRzKTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcApp
bmRleCBlN2VhZmQwZTMyZmU2MGI5MWIwOWFmMTA5YzQ2M2Y0ZTg5ZmY0ZTE4Li40YjBmNDRmYTY4
N2FmZjBlNTE0Zjg0Y2Y3Mzk5MmQwM2VjOTllYjk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcApAQCAtMTA4LDEwICsxMDgsMTEgQEAgdm9p
ZCBTY3JpcHRDb250cm9sbGVyOjpkZXN0cm95V2luZG93U2hlbGwoRE9NV3JhcHBlcldvcmxkKiB3
b3JsZCkKIEpTRE9NV2luZG93U2hlbGwqIFNjcmlwdENvbnRyb2xsZXI6OmNyZWF0ZVdpbmRvd1No
ZWxsKERPTVdyYXBwZXJXb3JsZCogd29ybGQpCiB7CiAgICAgQVNTRVJUKCFtX3dpbmRvd1NoZWxs
cy5jb250YWlucyh3b3JsZCkpOwotICAgIEpTRE9NV2luZG93U2hlbGwqIHdpbmRvd1NoZWxsID0g
bmV3IEpTRE9NV2luZG93U2hlbGwobV9mcmFtZS0+ZG9tV2luZG93KCksIHdvcmxkKTsKKyAgICBH
bG9iYWw8SlNET01XaW5kb3dTaGVsbD4gd2luZG93U2hlbGwoKndvcmxkLT5nbG9iYWxEYXRhKCks
IG5ldyBKU0RPTVdpbmRvd1NoZWxsKG1fZnJhbWUtPmRvbVdpbmRvdygpLCB3b3JsZCkpOworICAg
IEdsb2JhbDxKU0RPTVdpbmRvd1NoZWxsPiB3aW5kb3dTaGVsbDIod2luZG93U2hlbGwpOwogICAg
IG1fd2luZG93U2hlbGxzLmFkZCh3b3JsZCwgd2luZG93U2hlbGwpOwogICAgIHdvcmxkLT5kaWRD
cmVhdGVXaW5kb3dTaGVsbCh0aGlzKTsKLSAgICByZXR1cm4gd2luZG93U2hlbGw7CisgICAgcmV0
dXJuIHdpbmRvd1NoZWxsLmdldCgpOwogfQogCiBTY3JpcHRWYWx1ZSBTY3JpcHRDb250cm9sbGVy
OjpldmFsdWF0ZUluV29ybGQoY29uc3QgU2NyaXB0U291cmNlQ29kZSYgc291cmNlQ29kZSwgRE9N
V3JhcHBlcldvcmxkKiB3b3JsZCkKQEAgLTE0OSwxNCArMTUwLDE0IEBAIFNjcmlwdFZhbHVlIFNj
cmlwdENvbnRyb2xsZXI6OmV2YWx1YXRlSW5Xb3JsZChjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiBz
b3VyY2VDb2RlCiAKICAgICBpZiAoY29tcC5jb21wbFR5cGUoKSA9PSBOb3JtYWwgfHwgY29tcC5j
b21wbFR5cGUoKSA9PSBSZXR1cm5WYWx1ZSkgewogICAgICAgICBtX3NvdXJjZVVSTCA9IHNhdmVk
U291cmNlVVJMOwotICAgICAgICByZXR1cm4gY29tcC52YWx1ZSgpOworICAgICAgICByZXR1cm4g
U2NyaXB0VmFsdWUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBjb21wLnZhbHVlKCkpOwogICAgIH0KIAog
ICAgIGlmIChjb21wLmNvbXBsVHlwZSgpID09IFRocm93IHx8IGNvbXAuY29tcGxUeXBlKCkgPT0g
SW50ZXJydXB0ZWQpCiAgICAgICAgIHJlcG9ydEV4Y2VwdGlvbihleGVjLCBjb21wLnZhbHVlKCkp
OwogCiAgICAgbV9zb3VyY2VVUkwgPSBzYXZlZFNvdXJjZVVSTDsKLSAgICByZXR1cm4gSlNWYWx1
ZSgpOworICAgIHJldHVybiBTY3JpcHRWYWx1ZSgpOwogfQogCiBTY3JpcHRWYWx1ZSBTY3JpcHRD
b250cm9sbGVyOjpldmFsdWF0ZShjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiBzb3VyY2VDb2RlKSAK
QEAgLTE4Miw3ICsxODMsNyBAQCB2b2lkIFNjcmlwdENvbnRyb2xsZXI6OmNsZWFyV2luZG93U2hl
bGwoYm9vbCBnb2luZ0ludG9QYWdlQ2FjaGUpCiAgICAgSlNMb2NrIGxvY2soU2lsZW5jZUFzc2Vy
dGlvbnNPbmx5KTsKIAogICAgIGZvciAoU2hlbGxNYXA6Oml0ZXJhdG9yIGl0ZXIgPSBtX3dpbmRv
d1NoZWxscy5iZWdpbigpOyBpdGVyICE9IG1fd2luZG93U2hlbGxzLmVuZCgpOyArK2l0ZXIpIHsK
LSAgICAgICAgSlNET01XaW5kb3dTaGVsbCogd2luZG93U2hlbGwgPSBpdGVyLT5zZWNvbmQ7Cisg
ICAgICAgIEpTRE9NV2luZG93U2hlbGwqIHdpbmRvd1NoZWxsID0gaXRlci0+c2Vjb25kLmdldCgp
OwogCiAgICAgICAgIC8vIENsZWFyIHRoZSBkZWJ1Z2dlciBmcm9tIHRoZSBjdXJyZW50IHdpbmRv
dyBiZWZvcmUgc2V0dGluZyB0aGUgbmV3IHdpbmRvdy4KICAgICAgICAgYXR0YWNoRGVidWdnZXIo
d2luZG93U2hlbGwsIDApOwpAQCAtMzE3LDcgKzMxOCw3IEBAIGJvb2wgU2NyaXB0Q29udHJvbGxl
cjo6Y2FuQWNjZXNzRnJvbUN1cnJlbnRPcmlnaW4oRnJhbWUgKmZyYW1lKQogdm9pZCBTY3JpcHRD
b250cm9sbGVyOjphdHRhY2hEZWJ1Z2dlcihKU0M6OkRlYnVnZ2VyKiBkZWJ1Z2dlcikKIHsKICAg
ICBmb3IgKFNoZWxsTWFwOjppdGVyYXRvciBpdGVyID0gbV93aW5kb3dTaGVsbHMuYmVnaW4oKTsg
aXRlciAhPSBtX3dpbmRvd1NoZWxscy5lbmQoKTsgKytpdGVyKQotICAgICAgICBhdHRhY2hEZWJ1
Z2dlcihpdGVyLT5zZWNvbmQsIGRlYnVnZ2VyKTsKKyAgICAgICAgYXR0YWNoRGVidWdnZXIoaXRl
ci0+c2Vjb25kLmdldCgpLCBkZWJ1Z2dlcik7CiB9CiAKIHZvaWQgU2NyaXB0Q29udHJvbGxlcjo6
YXR0YWNoRGVidWdnZXIoSlNET01XaW5kb3dTaGVsbCogc2hlbGwsIEpTQzo6RGVidWdnZXIqIGRl
YnVnZ2VyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29u
dHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5o
CmluZGV4IDE5NTQyYWYxMGY5NzVkMjZmYWQyMjk3MTZhMTdjMTljNDg3MWY0NDAuLjJlYzM4NzJi
NzUxYWViZjliYjQwMmViOGQ5YzM4MWJlY2M1NDA4OGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmgKQEAgLTI1LDcgKzI1LDcgQEAKICNpbmNsdWRl
ICJKU0RPTVdpbmRvd1NoZWxsLmgiCiAjaW5jbHVkZSAiU2NyaXB0Q29udHJvbGxlckJhc2UuaCIK
ICNpbmNsdWRlICJTY3JpcHRJbnN0YW5jZS5oIgotI2luY2x1ZGUgPHJ1bnRpbWUvUHJvdGVjdC5o
PgorI2luY2x1ZGUgPGNvbGxlY3Rvci9oYW5kbGVzL0dsb2JhbC5oPgogI2luY2x1ZGUgPHd0Zi9G
b3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCkBAIC02NCw3ICs2NCw3IEBAIHR5
cGVkZWYgSGFzaE1hcDx2b2lkKiwgUmVmUHRyPEpTQzo6QmluZGluZ3M6OlJvb3RPYmplY3Q+ID4g
Um9vdE9iamVjdE1hcDsKIAogY2xhc3MgU2NyaXB0Q29udHJvbGxlciB7CiAgICAgZnJpZW5kIGNs
YXNzIFNjcmlwdENhY2hlZEZyYW1lRGF0YTsKLSAgICB0eXBlZGVmIFdURjo6SGFzaE1hcDwgUmVm
UHRyPERPTVdyYXBwZXJXb3JsZD4sIEpTQzo6UHJvdGVjdGVkUHRyPEpTRE9NV2luZG93U2hlbGw+
ID4gU2hlbGxNYXA7CisgICAgdHlwZWRlZiBXVEY6Okhhc2hNYXA8IFJlZlB0cjxET01XcmFwcGVy
V29ybGQ+LCBKU0M6Okdsb2JhbDxKU0RPTVdpbmRvd1NoZWxsPiA+IFNoZWxsTWFwOwogCiBwdWJs
aWM6CiAgICAgU2NyaXB0Q29udHJvbGxlcihGcmFtZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvU2NyaXB0RnVuY3Rpb25DYWxsLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1NjcmlwdEZ1bmN0aW9uQ2FsbC5jcHAKaW5kZXggZjc3YzY5MWJmNDBiZGFm
YTk0NmYxN2ZmMDQ4MmQ0NWQ4ZjgzM2VkNy4uNTE4YTc4N2ZkOWU1OGMyMTk5YTFlNzEyZTdmZjEy
OWMyNDllNzcyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0
RnVuY3Rpb25DYWxsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRG
dW5jdGlvbkNhbGwuY3BwCkBAIC0xNTAsNyArMTUwLDcgQEAgU2NyaXB0VmFsdWUgU2NyaXB0RnVu
Y3Rpb25DYWxsOjpjYWxsKGJvb2wmIGhhZEV4Y2VwdGlvbiwgYm9vbCByZXBvcnRFeGNlcHRpb25z
KQogICAgICAgICByZXR1cm4gU2NyaXB0VmFsdWUoKTsKICAgICB9CiAKLSAgICByZXR1cm4gU2Ny
aXB0VmFsdWUocmVzdWx0KTsKKyAgICByZXR1cm4gU2NyaXB0VmFsdWUobV9leGVjLT5nbG9iYWxE
YXRhKCksIHJlc3VsdCk7CiB9CiAKIFNjcmlwdFZhbHVlIFNjcmlwdEZ1bmN0aW9uQ2FsbDo6Y2Fs
bCgpCkBAIC0yMjAsNyArMjIwLDcgQEAgU2NyaXB0VmFsdWUgU2NyaXB0Q2FsbGJhY2s6OmNhbGwo
Ym9vbCYgaGFkRXhjZXB0aW9uKQogICAgICAgICByZXR1cm4gU2NyaXB0VmFsdWUoKTsKICAgICB9
CiAKLSAgICByZXR1cm4gU2NyaXB0VmFsdWUocmVzdWx0KTsKKyAgICByZXR1cm4gU2NyaXB0VmFs
dWUobV9leGVjLT5nbG9iYWxEYXRhKCksIHJlc3VsdCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdE9iamVj
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRPYmplY3QuY3BwCmluZGV4
IGI1YzFmMDExOTY0NjA4MzUyNjJkYzIwOTYzM2QwYjc0YzM4YTY2ZjkuLjAzNTU5N2IxNDczMmE0
YjliOWE5MmU2YzVhOTI1YTUzNjdhYThmMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1NjcmlwdE9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvU2NyaXB0T2JqZWN0LmNwcApAQCAtNDUsNyArNDUsNyBAQCB1c2luZyBuYW1lc3BhY2UgSlND
OwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBTY3JpcHRPYmplY3Q6OlNjcmlwdE9iamVjdChTY3Jp
cHRTdGF0ZSogc2NyaXB0U3RhdGUsIEpTT2JqZWN0KiBvYmplY3QpCi0gICAgOiBTY3JpcHRWYWx1
ZShvYmplY3QpCisgICAgOiBTY3JpcHRWYWx1ZShzY3JpcHRTdGF0ZS0+Z2xvYmFsRGF0YSgpLCBv
YmplY3QpCiAgICAgLCBtX3NjcmlwdFN0YXRlKHNjcmlwdFN0YXRlKQogewogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0T2JqZWN0LmggYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9TY3JpcHRPYmplY3QuaAppbmRleCBmMDg1ZThiZThkZmYxYjc3ZDU2
NzkxZWQ3ZmJhNzQzZjRkZmI1MDcxLi5jMTBiZjE4YmQzMGEzZDk5MmUwYmVhYjdiODhmZjFiM2Vj
ZDQyMzIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRPYmpl
Y3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRPYmplY3QuaApAQCAt
MzQsOCArMzQsOCBAQAogI2luY2x1ZGUgIlNjcmlwdFN0YXRlLmgiCiAjaW5jbHVkZSAiU2NyaXB0
VmFsdWUuaCIKIAorI2luY2x1ZGUgPGNvbGxlY3Rvci9oYW5kbGVzL0dsb2JhbC5oPgogI2luY2x1
ZGUgPHJ1bnRpbWUvSlNPYmplY3QuaD4KLSNpbmNsdWRlIDxydW50aW1lL1Byb3RlY3QuaD4KIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIEluamVjdGVkU2NyaXB0SG9zdDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFN0YXRlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFN0YXRlLmNwcAppbmRleCBkNjY5OWY2YzM5ZTFi
OWE4ZTA5OTVlN2M0OGM1NjQ0YjIxMjBmYjBkLi44YTdjOWE1YmI2ODIzOTczYmE0ZmFlMjk1OWJh
OTBjNjI2ZjM5YWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3Jp
cHRTdGF0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0U3RhdGUu
Y3BwCkBAIC00NSwxNCArNDUsMTQgQEAgU2NyaXB0U3RhdGVQcm90ZWN0ZWRQdHI6On5TY3JpcHRT
dGF0ZVByb3RlY3RlZFB0cigpCiB9CiAKIFNjcmlwdFN0YXRlUHJvdGVjdGVkUHRyOjpTY3JpcHRT
dGF0ZVByb3RlY3RlZFB0cihTY3JpcHRTdGF0ZSogc2NyaXB0U3RhdGUpCi0gICAgOiBtX2dsb2Jh
bE9iamVjdChzY3JpcHRTdGF0ZS0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKQorICAgIDogbV9nbG9i
YWxPYmplY3Qoc2NyaXB0U3RhdGUtPmdsb2JhbERhdGEoKSwgc2NyaXB0U3RhdGUtPmxleGljYWxH
bG9iYWxPYmplY3QoKSkKIHsKIH0KIAogU2NyaXB0U3RhdGUqIFNjcmlwdFN0YXRlUHJvdGVjdGVk
UHRyOjpnZXQoKSBjb25zdAogewogICAgIGlmIChtX2dsb2JhbE9iamVjdCkKLSAgICAgICAgcmV0
dXJuIG1fZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCk7CisgICAgICAgIHJldHVybiBjb25zdF9j
YXN0PEpTQzo6SlNHbG9iYWxPYmplY3QqPihtX2dsb2JhbE9iamVjdC5nZXQoKSktPmdsb2JhbEV4
ZWMoKTsKICAgICByZXR1cm4gMDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvU2NyaXB0U3RhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Njcmlw
dFN0YXRlLmgKaW5kZXggZTE5YzBjODMwZWQyMTEzMjYyMjEyODE2ZTYxOGM0YjQ4YmNmNTFiMS4u
ZjI3YjMwNmExOGNkM2RlNTM4MThkM2Y2YzY2YjNkNmU5NGMxMDE5ZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0U3RhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TY3JpcHRTdGF0ZS5oCkBAIC0zMiw3ICszMiw3IEBACiAjaWZuZGVmIFNj
cmlwdFN0YXRlX2gKICNkZWZpbmUgU2NyaXB0U3RhdGVfaAogCi0jaW5jbHVkZSA8cnVudGltZS9Q
cm90ZWN0Lmg+CisjaW5jbHVkZSA8Y29sbGVjdG9yL2hhbmRsZXMvR2xvYmFsLmg+CiAjaW5jbHVk
ZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtNTksNyArNTksNyBA
QCBwdWJsaWM6CiAgICAgflNjcmlwdFN0YXRlUHJvdGVjdGVkUHRyKCk7CiAgICAgU2NyaXB0U3Rh
dGUqIGdldCgpIGNvbnN0OwogcHJpdmF0ZToKLSAgICBKU0M6OlByb3RlY3RlZFB0cjxKU0M6OkpT
R2xvYmFsT2JqZWN0PiBtX2dsb2JhbE9iamVjdDsKKyAgICBKU0M6Okdsb2JhbDxKU0M6OkpTR2xv
YmFsT2JqZWN0PiBtX2dsb2JhbE9iamVjdDsKIH07CiAKIFNjcmlwdFN0YXRlKiBtYWluV29ybGRT
Y3JpcHRTdGF0ZShGcmFtZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvU2NyaXB0VmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0VmFs
dWUuY3BwCmluZGV4IGEyYTcyYjZkMDcwZmM5OTBjNzdkYWVmZDM5ZTFkNDZjYmE4N2Q4MjAuLjZm
ZTZlYTM4ZDFjNDQ2MzI4YWVkYWMzZTMxNzk1NjI1ZDUxY2UzZjQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TY3JpcHRWYWx1ZS5jcHAKQEAgLTM1LDggKzM1LDggQEAKICNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9BUElDYXN0Lmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNW
YWx1ZVJlZi5oPgogCisjaW5jbHVkZSA8Y29sbGVjdG9yL2hhbmRsZXMvR2xvYmFsLmg+CiAjaW5j
bHVkZSA8cnVudGltZS9KU0xvY2suaD4KLSNpbmNsdWRlIDxydW50aW1lL1Byb3RlY3QuaD4KICNp
bmNsdWRlIDxydW50aW1lL1VTdHJpbmcuaD4KIAogdXNpbmcgbmFtZXNwYWNlIEpTQzsKQEAgLTg3
LDcgKzg3LDcgQEAgYm9vbCBTY3JpcHRWYWx1ZTo6aXNPYmplY3QoKSBjb25zdAogYm9vbCBTY3Jp
cHRWYWx1ZTo6aXNGdW5jdGlvbigpIGNvbnN0CiB7CiAgICAgQ2FsbERhdGEgY2FsbERhdGE7Ci0g
ICAgcmV0dXJuIGdldENhbGxEYXRhKG1fdmFsdWUsIGNhbGxEYXRhKSAhPSBDYWxsVHlwZU5vbmU7
CisgICAgcmV0dXJuIGdldENhbGxEYXRhKG1fdmFsdWUuZ2V0KCksIGNhbGxEYXRhKSAhPSBDYWxs
VHlwZU5vbmU7CiB9CiAKIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBTY3JpcHRW
YWx1ZTo6c2VyaWFsaXplKFNjcmlwdFN0YXRlKiBzY3JpcHRTdGF0ZSkKQEAgLTk3LDcgKzk3LDcg
QEAgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IFNjcmlwdFZhbHVlOjpzZXJpYWxp
emUoU2NyaXB0U3RhdGUqIHNjcmlwdFN0YXQKIAogU2NyaXB0VmFsdWUgU2NyaXB0VmFsdWU6OmRl
c2VyaWFsaXplKFNjcmlwdFN0YXRlKiBzY3JpcHRTdGF0ZSwgU2VyaWFsaXplZFNjcmlwdFZhbHVl
KiB2YWx1ZSkKIHsKLSAgICByZXR1cm4gU2NyaXB0VmFsdWUodmFsdWUtPmRlc2VyaWFsaXplKHNj
cmlwdFN0YXRlLCBzY3JpcHRTdGF0ZS0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKSk7CisgICAgcmV0
dXJuIFNjcmlwdFZhbHVlKHNjcmlwdFN0YXRlLT5nbG9iYWxEYXRhKCksIHZhbHVlLT5kZXNlcmlh
bGl6ZShzY3JpcHRTdGF0ZSwgc2NyaXB0U3RhdGUtPmxleGljYWxHbG9iYWxPYmplY3QoKSkpOwog
fQogCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1NjcmlwdFZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3Jp
cHRWYWx1ZS5oCmluZGV4IDU3NDZjM2Y2NzRhYWQyYTg5NjllNmUwYWIwMzI4MDdmZmYxNjlmZDMu
LjM3Y2YyNDM2NTFiYTlhNDRlYzg5NTdiNWE2NzUxN2RiNGY0ZmRkZTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvU2NyaXB0VmFsdWUuaApAQCAtMzQsOCArMzQsOCBAQAogI2luY2x1ZGUg
IkpTRE9NQmluZGluZy5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCiAjaW5jbHVkZSAi
U2NyaXB0U3RhdGUuaCIKKyNpbmNsdWRlIDxjb2xsZWN0b3IvaGFuZGxlcy9HbG9iYWwuaD4KICNp
bmNsdWRlIDxydW50aW1lL0pTVmFsdWUuaD4KLSNpbmNsdWRlIDxydW50aW1lL1Byb3RlY3QuaD4K
ICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00
NSw3ICs0NSw4IEBAIGNsYXNzIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTsKIAogY2xhc3MgU2NyaXB0
VmFsdWUgewogcHVibGljOgotICAgIFNjcmlwdFZhbHVlKEpTQzo6SlNWYWx1ZSB2YWx1ZSA9IEpT
Qzo6SlNWYWx1ZSgpKSA6IG1fdmFsdWUodmFsdWUpIHt9CisgICAgU2NyaXB0VmFsdWUoKSA6IG1f
dmFsdWUoSlNDOjpHbG9iYWw8SlNDOjpVbmtub3duPjo6RW1wdHlWYWx1ZSkgeyB9CisgICAgU2Ny
aXB0VmFsdWUoSlNDOjpKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTQzo6SlNWYWx1ZSB2YWx1
ZSkgOiBtX3ZhbHVlKGdsb2JhbERhdGEsIHZhbHVlKSB7fQogICAgIHZpcnR1YWwgflNjcmlwdFZh
bHVlKCkge30KIAogICAgIEpTQzo6SlNWYWx1ZSBqc1ZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV92
YWx1ZS5nZXQoKTsgfQpAQCAtNTYsMjEgKzU3LDIxIEBAIHB1YmxpYzoKICAgICBib29sIGlzVW5k
ZWZpbmVkKCkgY29uc3Q7CiAgICAgYm9vbCBpc09iamVjdCgpIGNvbnN0OwogICAgIGJvb2wgaXNG
dW5jdGlvbigpIGNvbnN0OwotICAgIGJvb2wgaGFzTm9WYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1f
dmFsdWUgPT0gSlNDOjpKU1ZhbHVlKCk7IH0KKyAgICBib29sIGhhc05vVmFsdWUoKSBjb25zdCB7
IHJldHVybiBtX3ZhbHVlLmlzRW1wdHkoKTsgfQogCiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0
IFNjcmlwdFZhbHVlJiBvdGhlcikgY29uc3QgeyByZXR1cm4gbV92YWx1ZSA9PSBvdGhlci5tX3Zh
bHVlOyB9CiAKICAgICBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gc2VyaWFsaXpl
KFNjcmlwdFN0YXRlKik7CiAgICAgc3RhdGljIFNjcmlwdFZhbHVlIGRlc2VyaWFsaXplKFNjcmlw
dFN0YXRlKiwgU2VyaWFsaXplZFNjcmlwdFZhbHVlKik7CiAKLSAgICBzdGF0aWMgU2NyaXB0VmFs
dWUgdW5kZWZpbmVkKCkgeyByZXR1cm4gU2NyaXB0VmFsdWUoSlNDOjpqc1VuZGVmaW5lZCgpKTsg
fQorICAgIHN0YXRpYyBTY3JpcHRWYWx1ZSB1bmRlZmluZWQoKTsKIAogI2lmIEVOQUJMRShJTlNQ
RUNUT1IpCiAgICAgUGFzc1JlZlB0cjxJbnNwZWN0b3JWYWx1ZT4gdG9JbnNwZWN0b3JWYWx1ZShT
Y3JpcHRTdGF0ZSopIGNvbnN0OwogI2VuZGlmCiAKIHByaXZhdGU6Ci0gICAgSlNDOjpQcm90ZWN0
ZWRKU1ZhbHVlIG1fdmFsdWU7CisgICAgSlNDOjpHbG9iYWw8SlNDOjpVbmtub3duPiBtX3ZhbHVl
OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvU2NyaXB0V3JhcHBhYmxlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9TY3JpcHRXcmFwcGFibGUuaAppbmRleCBjNTc3OTZjMTYyNDA4MWI5MjQ1ZGE4YWJiNTY3
YWEyMDJlNGNiOWRmLi5lMzllNGY3NGRjMDJiMjBjYWM4N2IxNTE0MGE1MjY5NGIxNDA1YmJhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRXcmFwcGFibGUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRXcmFwcGFibGUuaApAQCAtMzgs
MjMgKzM4LDIyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgU2NyaXB0V3JhcHBhYmxl
IHsKIHB1YmxpYzoKKyAgICBTY3JpcHRXcmFwcGFibGUoKQorICAgIHsKKyAgICB9CisKICAgICBE
T01PYmplY3QqIHdyYXBwZXIoKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIG1fd3JhcHBl
ci5nZXQoKTsKICAgICB9Ci0gICAgCi0gICAgdm9pZCBzZXRXcmFwcGVyKERPTU9iamVjdCogd3Jh
cHBlcikKKworICAgIHZvaWQgc2V0V3JhcHBlcihKU0M6OkpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0
YSwgRE9NT2JqZWN0KiB3cmFwcGVyKQogICAgIHsKLSAgICAgICAgbV93cmFwcGVyID0gd3JhcHBl
cjsKLSAgICB9Ci0gICAgCi0gICAgdm9pZCBjbGVhcldyYXBwZXIoRE9NT2JqZWN0KiB3cmFwcGVy
KSAKLSAgICB7IAotICAgICAgICBtX3dyYXBwZXIuY2xlYXIod3JhcHBlcik7IAorICAgICAgICBt
X3dyYXBwZXIuc2V0KGdsb2JhbERhdGEsIHdyYXBwZXIsIDApOwogICAgIH0KLSAgICAKKwogcHJp
dmF0ZToKLSAgICBKU0M6OldlYWtHQ1B0cjxET01PYmplY3Q+IG1fd3JhcHBlcjsKKyAgICBKU0M6
OkxhenlXZWFrR0NQdHI8RE9NT2JqZWN0PiBtX3dyYXBwZXI7CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9Xb3JrZXJT
Y3JpcHRDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dvcmtlclNj
cmlwdENvbnRyb2xsZXIuY3BwCmluZGV4IDBjODk2MzJkOThjZWVlNDdlMzMyZmQyMGY2OTYwZjFh
YzVjOWFhOTcuLmQzOTIyODE2OWJmOGRiZjIwZjVhYjQyM2JjMDUyNWM5M2UxZDc5OWMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENvbnRyb2xsZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENvbnRyb2xs
ZXIuY3BwCkBAIC01Miw2ICs1Miw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIFdvcmtlclNjcmlw
dENvbnRyb2xsZXI6OldvcmtlclNjcmlwdENvbnRyb2xsZXIoV29ya2VyQ29udGV4dCogd29ya2Vy
Q29udGV4dCkKICAgICA6IG1fZ2xvYmFsRGF0YShKU0dsb2JhbERhdGE6OmNyZWF0ZShUaHJlYWRT
dGFja1R5cGVTbWFsbCkpCiAgICAgLCBtX3dvcmtlckNvbnRleHQod29ya2VyQ29udGV4dCkKKyAg
ICAsIG1fd29ya2VyQ29udGV4dFdyYXBwZXIoKm1fZ2xvYmFsRGF0YSkKICAgICAsIG1fZXhlY3V0
aW9uRm9yYmlkZGVuKGZhbHNlKQogewogICAgIGluaXROb3JtYWxXb3JsZENsaWVudERhdGEobV9n
bG9iYWxEYXRhLmdldCgpKTsKQEAgLTU5LDcgKzYwLDcgQEAgV29ya2VyU2NyaXB0Q29udHJvbGxl
cjo6V29ya2VyU2NyaXB0Q29udHJvbGxlcihXb3JrZXJDb250ZXh0KiB3b3JrZXJDb250ZXh0KQog
CiBXb3JrZXJTY3JpcHRDb250cm9sbGVyOjp+V29ya2VyU2NyaXB0Q29udHJvbGxlcigpCiB7Ci0g
ICAgbV93b3JrZXJDb250ZXh0V3JhcHBlciA9IDA7IC8vIFVucHJvdGVjdCB0aGUgZ2xvYmFsIG9i
amVjdC4KKyAgICBtX3dvcmtlckNvbnRleHRXcmFwcGVyLmNsZWFyKCk7IC8vIFVucHJvdGVjdCB0
aGUgZ2xvYmFsIG9iamVjdC4KICAgICBtX2dsb2JhbERhdGEtPmhlYXAuZGVzdHJveSgpOwogfQog
CkBAIC03MywyNiArNzQsMjYgQEAgdm9pZCBXb3JrZXJTY3JpcHRDb250cm9sbGVyOjppbml0U2Ny
aXB0KCkKICAgICAvLyB3aGVuIHdlIGFsbG9jYXRlIHRoZSBnbG9iYWwgb2JqZWN0LiAoT25jZSB0
aGUgZ2xvYmFsIG9iamVjdCBpcyBmdWxseQogICAgIC8vIGNvbnN0cnVjdGVkLCBpdCBjYW4gbWFy
ayBpdHMgb3duIHByb3RvdHlwZS4pCiAgICAgUmVmUHRyPFN0cnVjdHVyZT4gd29ya2VyQ29udGV4
dFByb3RvdHlwZVN0cnVjdHVyZSA9IEpTV29ya2VyQ29udGV4dFByb3RvdHlwZTo6Y3JlYXRlU3Ry
dWN0dXJlKGpzTnVsbCgpKTsKLSAgICBQcm90ZWN0ZWRQdHI8SlNXb3JrZXJDb250ZXh0UHJvdG90
eXBlPiB3b3JrZXJDb250ZXh0UHJvdG90eXBlID0gbmV3IChtX2dsb2JhbERhdGEuZ2V0KCkpIEpT
V29ya2VyQ29udGV4dFByb3RvdHlwZSgwLCB3b3JrZXJDb250ZXh0UHJvdG90eXBlU3RydWN0dXJl
LnJlbGVhc2UoKSk7CisgICAgR2xvYmFsPEpTV29ya2VyQ29udGV4dFByb3RvdHlwZT4gd29ya2Vy
Q29udGV4dFByb3RvdHlwZSgqbV9nbG9iYWxEYXRhLCBuZXcgKG1fZ2xvYmFsRGF0YS5nZXQoKSkg
SlNXb3JrZXJDb250ZXh0UHJvdG90eXBlKDAsIHdvcmtlckNvbnRleHRQcm90b3R5cGVTdHJ1Y3R1
cmUucmVsZWFzZSgpKSk7CiAKICAgICBpZiAobV93b3JrZXJDb250ZXh0LT5pc0RlZGljYXRlZFdv
cmtlckNvbnRleHQoKSkgewotICAgICAgICBSZWZQdHI8U3RydWN0dXJlPiBkZWRpY2F0ZWRDb250
ZXh0UHJvdG90eXBlU3RydWN0dXJlID0gSlNEZWRpY2F0ZWRXb3JrZXJDb250ZXh0UHJvdG90eXBl
OjpjcmVhdGVTdHJ1Y3R1cmUod29ya2VyQ29udGV4dFByb3RvdHlwZSk7Ci0gICAgICAgIFByb3Rl
Y3RlZFB0cjxKU0RlZGljYXRlZFdvcmtlckNvbnRleHRQcm90b3R5cGU+IGRlZGljYXRlZENvbnRl
eHRQcm90b3R5cGUgPSBuZXcgKG1fZ2xvYmFsRGF0YS5nZXQoKSkgSlNEZWRpY2F0ZWRXb3JrZXJD
b250ZXh0UHJvdG90eXBlKDAsIGRlZGljYXRlZENvbnRleHRQcm90b3R5cGVTdHJ1Y3R1cmUucmVs
ZWFzZSgpKTsKLSAgICAgICAgUmVmUHRyPFN0cnVjdHVyZT4gc3RydWN0dXJlID0gSlNEZWRpY2F0
ZWRXb3JrZXJDb250ZXh0OjpjcmVhdGVTdHJ1Y3R1cmUoZGVkaWNhdGVkQ29udGV4dFByb3RvdHlw
ZSk7CisgICAgICAgIFJlZlB0cjxTdHJ1Y3R1cmU+IGRlZGljYXRlZENvbnRleHRQcm90b3R5cGVT
dHJ1Y3R1cmUgPSBKU0RlZGljYXRlZFdvcmtlckNvbnRleHRQcm90b3R5cGU6OmNyZWF0ZVN0cnVj
dHVyZSh3b3JrZXJDb250ZXh0UHJvdG90eXBlLmdldCgpKTsKKyAgICAgICAgR2xvYmFsPEpTRGVk
aWNhdGVkV29ya2VyQ29udGV4dFByb3RvdHlwZT4gZGVkaWNhdGVkQ29udGV4dFByb3RvdHlwZSgq
bV9nbG9iYWxEYXRhLCBuZXcgKG1fZ2xvYmFsRGF0YS5nZXQoKSkgSlNEZWRpY2F0ZWRXb3JrZXJD
b250ZXh0UHJvdG90eXBlKDAsIGRlZGljYXRlZENvbnRleHRQcm90b3R5cGVTdHJ1Y3R1cmUucmVs
ZWFzZSgpKSk7CisgICAgICAgIFJlZlB0cjxTdHJ1Y3R1cmU+IHN0cnVjdHVyZSA9IEpTRGVkaWNh
dGVkV29ya2VyQ29udGV4dDo6Y3JlYXRlU3RydWN0dXJlKGRlZGljYXRlZENvbnRleHRQcm90b3R5
cGUuZ2V0KCkpOwogCi0gICAgICAgIG1fd29ya2VyQ29udGV4dFdyYXBwZXIgPSBuZXcgKG1fZ2xv
YmFsRGF0YS5nZXQoKSkgSlNEZWRpY2F0ZWRXb3JrZXJDb250ZXh0KHN0cnVjdHVyZS5yZWxlYXNl
KCksIG1fd29ya2VyQ29udGV4dC0+dG9EZWRpY2F0ZWRXb3JrZXJDb250ZXh0KCkpOwotICAgICAg
ICB3b3JrZXJDb250ZXh0UHJvdG90eXBlLT5wdXRBbm9ueW1vdXNWYWx1ZSgqbV9nbG9iYWxEYXRh
LCAwLCBtX3dvcmtlckNvbnRleHRXcmFwcGVyKTsKLSAgICAgICAgZGVkaWNhdGVkQ29udGV4dFBy
b3RvdHlwZS0+cHV0QW5vbnltb3VzVmFsdWUoKm1fZ2xvYmFsRGF0YSwgMCwgbV93b3JrZXJDb250
ZXh0V3JhcHBlcik7CisgICAgICAgIG1fd29ya2VyQ29udGV4dFdyYXBwZXIuc2V0KCptX2dsb2Jh
bERhdGEsIG5ldyAobV9nbG9iYWxEYXRhLmdldCgpKSBKU0RlZGljYXRlZFdvcmtlckNvbnRleHQo
c3RydWN0dXJlLnJlbGVhc2UoKSwgbV93b3JrZXJDb250ZXh0LT50b0RlZGljYXRlZFdvcmtlckNv
bnRleHQoKSkpOworICAgICAgICB3b3JrZXJDb250ZXh0UHJvdG90eXBlLT5wdXRBbm9ueW1vdXNW
YWx1ZSgqbV9nbG9iYWxEYXRhLCAwLCBtX3dvcmtlckNvbnRleHRXcmFwcGVyLmdldCgpKTsKKyAg
ICAgICAgZGVkaWNhdGVkQ29udGV4dFByb3RvdHlwZS0+cHV0QW5vbnltb3VzVmFsdWUoKm1fZ2xv
YmFsRGF0YSwgMCwgbV93b3JrZXJDb250ZXh0V3JhcHBlci5nZXQoKSk7CiAjaWYgRU5BQkxFKFNI
QVJFRF9XT1JLRVJTKQogICAgIH0gZWxzZSB7CiAgICAgICAgIEFTU0VSVChtX3dvcmtlckNvbnRl
eHQtPmlzU2hhcmVkV29ya2VyQ29udGV4dCgpKTsKLSAgICAgICAgUmVmUHRyPFN0cnVjdHVyZT4g
c2hhcmVkQ29udGV4dFByb3RvdHlwZVN0cnVjdHVyZSA9IEpTU2hhcmVkV29ya2VyQ29udGV4dFBy
b3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKHdvcmtlckNvbnRleHRQcm90b3R5cGUpOwotICAgICAg
ICBQcm90ZWN0ZWRQdHI8SlNTaGFyZWRXb3JrZXJDb250ZXh0UHJvdG90eXBlPiBzaGFyZWRDb250
ZXh0UHJvdG90eXBlID0gbmV3IChtX2dsb2JhbERhdGEuZ2V0KCkpIEpTU2hhcmVkV29ya2VyQ29u
dGV4dFByb3RvdHlwZSgwLCBzaGFyZWRDb250ZXh0UHJvdG90eXBlU3RydWN0dXJlLnJlbGVhc2Uo
KSk7Ci0gICAgICAgIFJlZlB0cjxTdHJ1Y3R1cmU+IHN0cnVjdHVyZSA9IEpTU2hhcmVkV29ya2Vy
Q29udGV4dDo6Y3JlYXRlU3RydWN0dXJlKHNoYXJlZENvbnRleHRQcm90b3R5cGUpOworICAgICAg
ICBSZWZQdHI8U3RydWN0dXJlPiBzaGFyZWRDb250ZXh0UHJvdG90eXBlU3RydWN0dXJlID0gSlNT
aGFyZWRXb3JrZXJDb250ZXh0UHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUod29ya2VyQ29udGV4
dFByb3RvdHlwZS5nZXQoKSk7CisgICAgICAgIEdsb2JhbDxKU1NoYXJlZFdvcmtlckNvbnRleHRQ
cm90b3R5cGU+IHNoYXJlZENvbnRleHRQcm90b3R5cGUoKm1fZ2xvYmFsRGF0YSwgbmV3IChtX2ds
b2JhbERhdGEuZ2V0KCkpIEpTU2hhcmVkV29ya2VyQ29udGV4dFByb3RvdHlwZSgwLCBzaGFyZWRD
b250ZXh0UHJvdG90eXBlU3RydWN0dXJlLnJlbGVhc2UoKSkpOworICAgICAgICBSZWZQdHI8U3Ry
dWN0dXJlPiBzdHJ1Y3R1cmUgPSBKU1NoYXJlZFdvcmtlckNvbnRleHQ6OmNyZWF0ZVN0cnVjdHVy
ZShzaGFyZWRDb250ZXh0UHJvdG90eXBlLmdldCgpKTsKIAotICAgICAgICBtX3dvcmtlckNvbnRl
eHRXcmFwcGVyID0gbmV3IChtX2dsb2JhbERhdGEuZ2V0KCkpIEpTU2hhcmVkV29ya2VyQ29udGV4
dChzdHJ1Y3R1cmUucmVsZWFzZSgpLCBtX3dvcmtlckNvbnRleHQtPnRvU2hhcmVkV29ya2VyQ29u
dGV4dCgpKTsKLSAgICAgICAgd29ya2VyQ29udGV4dFByb3RvdHlwZS0+cHV0QW5vbnltb3VzVmFs
dWUoKm1fZ2xvYmFsRGF0YSwgMCwgbV93b3JrZXJDb250ZXh0V3JhcHBlcik7Ci0gICAgICAgIHNo
YXJlZENvbnRleHRQcm90b3R5cGUtPnB1dEFub255bW91c1ZhbHVlKCptX2dsb2JhbERhdGEsIDAs
IG1fd29ya2VyQ29udGV4dFdyYXBwZXIpOworICAgICAgICBtX3dvcmtlckNvbnRleHRXcmFwcGVy
LnNldCgqbV9nbG9iYWxEYXRhLCBuZXcgKG1fZ2xvYmFsRGF0YS5nZXQoKSkgSlNTaGFyZWRXb3Jr
ZXJDb250ZXh0KHN0cnVjdHVyZS5yZWxlYXNlKCksIG1fd29ya2VyQ29udGV4dC0+dG9TaGFyZWRX
b3JrZXJDb250ZXh0KCkpKTsKKyAgICAgICAgd29ya2VyQ29udGV4dFByb3RvdHlwZS0+cHV0QW5v
bnltb3VzVmFsdWUoKm1fZ2xvYmFsRGF0YSwgMCwgbV93b3JrZXJDb250ZXh0V3JhcHBlci5nZXQo
KSk7CisgICAgICAgIHNoYXJlZENvbnRleHRQcm90b3R5cGUtPnB1dEFub255bW91c1ZhbHVlKCpt
X2dsb2JhbERhdGEsIDAsIG1fd29ya2VyQ29udGV4dFdyYXBwZXIuZ2V0KCkpOwogI2VuZGlmCiAg
ICAgfQogfQpAQCAtMTAyLDEwICsxMDMsMTAgQEAgU2NyaXB0VmFsdWUgV29ya2VyU2NyaXB0Q29u
dHJvbGxlcjo6ZXZhbHVhdGUoY29uc3QgU2NyaXB0U291cmNlQ29kZSYgc291cmNlQ29kZSkKICAg
ICB7CiAgICAgICAgIE11dGV4TG9ja2VyIGxvY2sobV9zaGFyZWREYXRhTXV0ZXgpOwogICAgICAg
ICBpZiAobV9leGVjdXRpb25Gb3JiaWRkZW4pCi0gICAgICAgICAgICByZXR1cm4gSlNWYWx1ZSgp
OworICAgICAgICAgICAgcmV0dXJuIFNjcmlwdFZhbHVlKCk7CiAgICAgfQogICAgIFNjcmlwdFZh
bHVlIGV4Y2VwdGlvbjsKLSAgICBTY3JpcHRWYWx1ZSByZXN1bHQgPSBldmFsdWF0ZShzb3VyY2VD
b2RlLCAmZXhjZXB0aW9uKTsKKyAgICBTY3JpcHRWYWx1ZSByZXN1bHQoZXZhbHVhdGUoc291cmNl
Q29kZSwgJmV4Y2VwdGlvbikpOwogICAgIGlmIChleGNlcHRpb24uanNWYWx1ZSgpKSB7CiAgICAg
ICAgIEpTTG9jayBsb2NrKFNpbGVuY2VBc3NlcnRpb25zT25seSk7CiAgICAgICAgIHJlcG9ydEV4
Y2VwdGlvbihtX3dvcmtlckNvbnRleHRXcmFwcGVyLT5nbG9iYWxFeGVjKCksIGV4Y2VwdGlvbi5q
c1ZhbHVlKCkpOwpAQCAtMTE4LDcgKzExOSw3IEBAIFNjcmlwdFZhbHVlIFdvcmtlclNjcmlwdENv
bnRyb2xsZXI6OmV2YWx1YXRlKGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUsCiAg
ICAgewogICAgICAgICBNdXRleExvY2tlciBsb2NrKG1fc2hhcmVkRGF0YU11dGV4KTsKICAgICAg
ICAgaWYgKG1fZXhlY3V0aW9uRm9yYmlkZGVuKQotICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWUo
KTsKKyAgICAgICAgICAgIHJldHVybiBTY3JpcHRWYWx1ZSgpOwogICAgIH0KIAogICAgIGluaXRT
Y3JpcHRJZk5lZWRlZCgpOwpAQCAtMTI2LDIyICsxMjcsMjIgQEAgU2NyaXB0VmFsdWUgV29ya2Vy
U2NyaXB0Q29udHJvbGxlcjo6ZXZhbHVhdGUoY29uc3QgU2NyaXB0U291cmNlQ29kZSYgc291cmNl
Q29kZSwKIAogICAgIEV4ZWNTdGF0ZSogZXhlYyA9IG1fd29ya2VyQ29udGV4dFdyYXBwZXItPmds
b2JhbEV4ZWMoKTsKICAgICBtX3dvcmtlckNvbnRleHRXcmFwcGVyLT5nbG9iYWxEYXRhKCkudGlt
ZW91dENoZWNrZXIuc3RhcnQoKTsKLSAgICBDb21wbGV0aW9uIGNvbXAgPSBKU0M6OmV2YWx1YXRl
KGV4ZWMsIGV4ZWMtPmR5bmFtaWNHbG9iYWxPYmplY3QoKS0+Z2xvYmFsU2NvcGVDaGFpbigpLCBz
b3VyY2VDb2RlLmpzU291cmNlQ29kZSgpLCBtX3dvcmtlckNvbnRleHRXcmFwcGVyKTsKKyAgICBD
b21wbGV0aW9uIGNvbXAgPSBKU0M6OmV2YWx1YXRlKGV4ZWMsIGV4ZWMtPmR5bmFtaWNHbG9iYWxP
YmplY3QoKS0+Z2xvYmFsU2NvcGVDaGFpbigpLCBzb3VyY2VDb2RlLmpzU291cmNlQ29kZSgpLCBt
X3dvcmtlckNvbnRleHRXcmFwcGVyLmdldCgpKTsKICAgICBtX3dvcmtlckNvbnRleHRXcmFwcGVy
LT5nbG9iYWxEYXRhKCkudGltZW91dENoZWNrZXIuc3RvcCgpOwogCiAgICAgaWYgKGNvbXAuY29t
cGxUeXBlKCkgPT0gTm9ybWFsIHx8IGNvbXAuY29tcGxUeXBlKCkgPT0gUmV0dXJuVmFsdWUpCi0g
ICAgICAgIHJldHVybiBjb21wLnZhbHVlKCk7CisgICAgICAgIHJldHVybiBTY3JpcHRWYWx1ZSgq
bV9nbG9iYWxEYXRhLCBjb21wLnZhbHVlKCkpOwogCiAgICAgaWYgKGNvbXAuY29tcGxUeXBlKCkg
PT0gVGhyb3cpIHsKICAgICAgICAgU3RyaW5nIGVycm9yTWVzc2FnZTsKICAgICAgICAgaW50IGxp
bmVOdW1iZXIgPSAwOwogICAgICAgICBTdHJpbmcgc291cmNlVVJMID0gc291cmNlQ29kZS51cmwo
KS5zdHJpbmcoKTsKICAgICAgICAgaWYgKG1fd29ya2VyQ29udGV4dC0+c2FuaXRpemVTY3JpcHRF
cnJvcihlcnJvck1lc3NhZ2UsIGxpbmVOdW1iZXIsIHNvdXJjZVVSTCkpCi0gICAgICAgICAgICAq
ZXhjZXB0aW9uID0gU2NyaXB0VmFsdWUodGhyb3dFcnJvcihleGVjLCBjcmVhdGVFcnJvcihleGVj
LCBlcnJvck1lc3NhZ2UuaW1wbCgpKSkpOworICAgICAgICAgICAgKmV4Y2VwdGlvbiA9IFNjcmlw
dFZhbHVlKCptX2dsb2JhbERhdGEsIHRocm93RXJyb3IoZXhlYywgY3JlYXRlRXJyb3IoZXhlYywg
ZXJyb3JNZXNzYWdlLmltcGwoKSkpKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgKmV4Y2Vw
dGlvbiA9IGNvbXAudmFsdWUoKTsKKyAgICAgICAgICAgICpleGNlcHRpb24gPSBTY3JpcHRWYWx1
ZSgqbV9nbG9iYWxEYXRhLCBjb21wLnZhbHVlKCkpOwogICAgIH0KLSAgICByZXR1cm4gSlNWYWx1
ZSgpOworICAgIHJldHVybiBTY3JpcHRWYWx1ZSgpOwogfQogCiB2b2lkIFdvcmtlclNjcmlwdENv
bnRyb2xsZXI6OnNldEV4Y2VwdGlvbihTY3JpcHRWYWx1ZSBleGNlcHRpb24pCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmggYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmgKaW5kZXgg
NDU3ODkxM2M5NWVhNWRjMGEyOTM2ZjczYjVjOTAwM2M0NjRlOTAyMC4uYzNiODIxNWRkNjE1Mzli
ZWJhZThjNGNhYjBkZTE3MzIzMjY2YjYwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvV29ya2VyU2NyaXB0Q29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1dvcmtlclNjcmlwdENvbnRyb2xsZXIuaApAQCAtMjksNyArMjksNyBAQAogCiAj
aWYgRU5BQkxFKFdPUktFUlMpCiAKLSNpbmNsdWRlIDxydW50aW1lL1Byb3RlY3QuaD4KKyNpbmNs
dWRlIDxjb2xsZWN0b3IvaGFuZGxlcy9HbG9iYWwuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5o
PgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KIApAQCAtNTMsNyArNTMsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAgICAgICAgIEpTV29ya2VyQ29udGV4dCogd29ya2VyQ29udGV4dFdyYXBw
ZXIoKQogICAgICAgICB7CiAgICAgICAgICAgICBpbml0U2NyaXB0SWZOZWVkZWQoKTsKLSAgICAg
ICAgICAgIHJldHVybiBtX3dvcmtlckNvbnRleHRXcmFwcGVyOworICAgICAgICAgICAgcmV0dXJu
IG1fd29ya2VyQ29udGV4dFdyYXBwZXIuZ2V0KCk7CiAgICAgICAgIH0KIAogICAgICAgICBTY3Jp
cHRWYWx1ZSBldmFsdWF0ZShjb25zdCBTY3JpcHRTb3VyY2VDb2RlJik7CkBAIC03Nyw3ICs3Nyw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICBSZWZQdHI8SlNDOjpKU0dsb2JhbERh
dGE+IG1fZ2xvYmFsRGF0YTsKICAgICAgICAgV29ya2VyQ29udGV4dCogbV93b3JrZXJDb250ZXh0
OwotICAgICAgICBKU0M6OlByb3RlY3RlZFB0cjxKU1dvcmtlckNvbnRleHQ+IG1fd29ya2VyQ29u
dGV4dFdyYXBwZXI7CisgICAgICAgIEpTQzo6R2xvYmFsPEpTV29ya2VyQ29udGV4dD4gbV93b3Jr
ZXJDb250ZXh0V3JhcHBlcjsKIAogICAgICAgICBNdXRleCBtX3NoYXJlZERhdGFNdXRleDsKICAg
ICAgICAgYm9vbCBtX2V4ZWN1dGlvbkZvcmJpZGRlbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KaW5kZXggZDIzMDllOTI3ZmNiYWFh
ODY3M2ZkYzI2OWRiMThmZDk3MjIwNmM2OS4uMTcwZmM5YjYzODM0MzY3N2U1YTI1MTY0NDM2YTY1
ZThhODI4YTMxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9D
b2RlR2VuZXJhdG9ySlMucG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9D
b2RlR2VuZXJhdG9ySlMucG0KQEAgLTE0NDUsNyArMTQ0NSw2IEBAIHN1YiBHZW5lcmF0ZUltcGxl
bWVudGF0aW9uCiAKICAgICAgICAgaWYgKCRldmVudFRhcmdldCkgewogICAgICAgICAgICAgJGlt
cGxJbmNsdWRlc3siUmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXIuaCJ9ID0gMTsKLSAgICAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAiICAgIGltcGwoKS0+aW52YWxpZGF0ZUpTRXZlbnRMaXN0ZW5l
cnModGhpcyk7XG4iKTsKICAgICAgICAgfQogCiAgICAgICAgIGlmICghJGRhdGFOb2RlLT5leHRl
bmRlZEF0dHJpYnV0ZXMtPnsiRXh0ZW5kc0RPTUdsb2JhbE9iamVjdCJ9KSB7CkBAIC0yMDM5LDcg
KzIwMzgsNyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgIiAuIEdldE5hdGl2
ZVR5cGVGcm9tU2lnbmF0dXJlKCRwYXJhbWV0ZXIpIC4gIiAkbmFtZSA9ICIgLiBKU1ZhbHVlVG9O
YXRpdmUoJHBhcmFtZXRlciwgImV4ZWMtPmFyZ3VtZW50KCRhcmdzSW5kZXgpIikgLiAiO1xuIik7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgIiAu
IEdldE5hdGl2ZVR5cGVGcm9tU2lnbmF0dXJlKCRwYXJhbWV0ZXIpIC4gIiAkbmFtZSgiIC4gSlNW
YWx1ZVRvTmF0aXZlKCRwYXJhbWV0ZXIsICJleGVjLT5hcmd1bWVudCgkYXJnc0luZGV4KSIpIC4g
Iik7XG4iKTsKIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgSWYgYSBwYXJhbWV0ZXIg
aXMgImFuIGluZGV4IiBhbmQgaXQncyBuZWdhdGl2ZSBpdCBzaG91bGQgdGhyb3cgYW4gSU5ERVhf
U0laRV9FUlIgZXhjZXB0aW9uLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgQnV0IHRo
aXMgbmVlZHMgdG8gYmUgZG9uZSBpbiB0aGUgYmluZGluZ3MsIGJlY2F1c2UgdGhlIHR5cGUgaXMg
dW5zaWduZWQgYW5kIHRoZSBmYWN0IHRoYXQgaXQKQEAgLTI0OTQsMTIgKzI0OTMsMTIgQEAgc3Vi
IEpTVmFsdWVUb05hdGl2ZQogICAgIH0KIAogICAgIGlmICgkdHlwZSBlcSAiRE9NT2JqZWN0Iikg
ewotICAgICAgICByZXR1cm4gIiR2YWx1ZSI7CisgICAgICAgIHJldHVybiAiZXhlYy0+Z2xvYmFs
RGF0YSgpLCAkdmFsdWUiOwogICAgIH0KIAogICAgIGlmICgkdHlwZSBlcSAiTWVkaWFRdWVyeUxp
c3RMaXN0ZW5lciIpIHsKICAgICAgICAgJGltcGxJbmNsdWRlc3siTWVkaWFRdWVyeUxpc3RMaXN0
ZW5lci5oIn0gPSAxOwotICAgICAgICByZXR1cm4gIk1lZGlhUXVlcnlMaXN0TGlzdGVuZXI6OmNy
ZWF0ZSgiIC4gJHZhbHVlIC4iKSI7CisgICAgICAgIHJldHVybiAiTWVkaWFRdWVyeUxpc3RMaXN0
ZW5lcjo6Y3JlYXRlKFNjcmlwdFZhbHVlKGV4ZWMtPmdsb2JhbERhdGEoKSwgIiAuICR2YWx1ZSAu
IikpIjsKICAgICB9CiAKICAgICBpZiAoJHR5cGUgZXEgIlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSIg
b3IgJHR5cGUgZXEgImFueSIpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9O
UF9qc29iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvTlBfanNvYmplY3QuY3BwCmlu
ZGV4IDA3ODBhZDcwY2YyOGVjNzMwMDY5NTA0ODZjNzI4ZjZhMmJmODBhOGUuLjFhZWQ1MDUyZmQ5
ZDczYTRlOGRlZTcyZjA2ZWMxODY5NzMyZTFmNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JyaWRnZS9OUF9qc29iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL05QX2pz
b2JqZWN0LmNwcApAQCAtMTg5LDEwICsxODksMTAgQEAgYm9vbCBfTlBOX0ludm9rZURlZmF1bHQo
TlBQLCBOUE9iamVjdCogbywgY29uc3QgTlBWYXJpYW50KiBhcmdzLCB1aW50MzJfdCBhcmdDb3UK
ICAgICAgICAgCiAgICAgICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ0xpc3Q7CiAgICAgICAg
IGdldExpc3RGcm9tVmFyaWFudEFyZ3MoZXhlYywgYXJncywgYXJnQ291bnQsIHJvb3RPYmplY3Qs
IGFyZ0xpc3QpOwotICAgICAgICBQcm90ZWN0ZWRQdHI8SlNHbG9iYWxPYmplY3Q+IGdsb2JhbE9i
amVjdCA9IHJvb3RPYmplY3QtPmdsb2JhbE9iamVjdCgpOwotICAgICAgICBnbG9iYWxPYmplY3Qt
Pmdsb2JhbERhdGEoKS50aW1lb3V0Q2hlY2tlci5zdGFydCgpOworICAgICAgICBSZWZQdHI8SlNH
bG9iYWxEYXRhPiBnbG9iYWxEYXRhKCZleGVjLT5nbG9iYWxEYXRhKCkpOworICAgICAgICBnbG9i
YWxEYXRhLT50aW1lb3V0Q2hlY2tlci5zdGFydCgpOwogICAgICAgICBKU1ZhbHVlIHJlc3VsdFYg
PSBKU0M6OmNhbGwoZXhlYywgZnVuY3Rpb24sIGNhbGxUeXBlLCBjYWxsRGF0YSwgZnVuY3Rpb24s
IGFyZ0xpc3QpOwotICAgICAgICBnbG9iYWxPYmplY3QtPmdsb2JhbERhdGEoKS50aW1lb3V0Q2hl
Y2tlci5zdG9wKCk7CisgICAgICAgIGdsb2JhbERhdGEtPnRpbWVvdXRDaGVja2VyLnN0b3AoKTsK
IAogICAgICAgICAvLyBDb252ZXJ0IGFuZCByZXR1cm4gdGhlIHJlc3VsdCBvZiB0aGUgZnVuY3Rp
b24gY2FsbC4KICAgICAgICAgY29udmVydFZhbHVlVG9OUFZhcmlhbnQoZXhlYywgcmVzdWx0Viwg
cmVzdWx0KTsKQEAgLTIzOSwxMCArMjM5LDEwIEBAIGJvb2wgX05QTl9JbnZva2UoTlBQIG5wcCwg
TlBPYmplY3QqIG8sIE5QSWRlbnRpZmllciBtZXRob2ROYW1lLCBjb25zdCBOUFZhcmlhbnQqCiAg
ICAgICAgIC8vIENhbGwgdGhlIGZ1bmN0aW9uIG9iamVjdC4KICAgICAgICAgTWFya2VkQXJndW1l
bnRCdWZmZXIgYXJnTGlzdDsKICAgICAgICAgZ2V0TGlzdEZyb21WYXJpYW50QXJncyhleGVjLCBh
cmdzLCBhcmdDb3VudCwgcm9vdE9iamVjdCwgYXJnTGlzdCk7Ci0gICAgICAgIFByb3RlY3RlZFB0
cjxKU0dsb2JhbE9iamVjdD4gZ2xvYmFsT2JqZWN0ID0gcm9vdE9iamVjdC0+Z2xvYmFsT2JqZWN0
KCk7Ci0gICAgICAgIGdsb2JhbE9iamVjdC0+Z2xvYmFsRGF0YSgpLnRpbWVvdXRDaGVja2VyLnN0
YXJ0KCk7CisgICAgICAgIFJlZlB0cjxKU0dsb2JhbERhdGE+IGdsb2JhbERhdGEoJmV4ZWMtPmds
b2JhbERhdGEoKSk7CisgICAgICAgIGdsb2JhbERhdGEtPnRpbWVvdXRDaGVja2VyLnN0YXJ0KCk7
CiAgICAgICAgIEpTVmFsdWUgcmVzdWx0ViA9IEpTQzo6Y2FsbChleGVjLCBmdW5jdGlvbiwgY2Fs
bFR5cGUsIGNhbGxEYXRhLCBvYmotPmltcCwgYXJnTGlzdCk7Ci0gICAgICAgIGdsb2JhbE9iamVj
dC0+Z2xvYmFsRGF0YSgpLnRpbWVvdXRDaGVja2VyLnN0b3AoKTsKKyAgICAgICAgZ2xvYmFsRGF0
YS0+dGltZW91dENoZWNrZXIuc3RvcCgpOwogCiAgICAgICAgIC8vIENvbnZlcnQgYW5kIHJldHVy
biB0aGUgcmVzdWx0IG9mIHRoZSBmdW5jdGlvbiBjYWxsLgogICAgICAgICBjb252ZXJ0VmFsdWVU
b05QVmFyaWFudChleGVjLCByZXN1bHRWLCByZXN1bHQpOwpAQCAtMjczLDEwICsyNzMsMTAgQEAg
Ym9vbCBfTlBOX0V2YWx1YXRlKE5QUCBpbnN0YW5jZSwgTlBPYmplY3QqIG8sIE5QU3RyaW5nKiBz
LCBOUFZhcmlhbnQqIHZhcmlhbnQpCiAgICAgICAgIEV4ZWNTdGF0ZSogZXhlYyA9IHJvb3RPYmpl
Y3QtPmdsb2JhbE9iamVjdCgpLT5nbG9iYWxFeGVjKCk7CiAgICAgICAgIEpTTG9jayBsb2NrKFNp
bGVuY2VBc3NlcnRpb25zT25seSk7CiAgICAgICAgIFN0cmluZyBzY3JpcHRTdHJpbmcgPSBjb252
ZXJ0TlBTdHJpbmdUb1VURjE2KHMpOwotICAgICAgICBQcm90ZWN0ZWRQdHI8SlNHbG9iYWxPYmpl
Y3Q+IGdsb2JhbE9iamVjdCA9IHJvb3RPYmplY3QtPmdsb2JhbE9iamVjdCgpOwotICAgICAgICBn
bG9iYWxPYmplY3QtPmdsb2JhbERhdGEoKS50aW1lb3V0Q2hlY2tlci5zdGFydCgpOwotICAgICAg
ICBDb21wbGV0aW9uIGNvbXBsZXRpb24gPSBKU0M6OmV2YWx1YXRlKGdsb2JhbE9iamVjdC0+Z2xv
YmFsRXhlYygpLCBnbG9iYWxPYmplY3QtPmdsb2JhbFNjb3BlQ2hhaW4oKSwgbWFrZVNvdXJjZShz
Y3JpcHRTdHJpbmcpLCBKU0M6OkpTVmFsdWUoKSk7Ci0gICAgICAgIGdsb2JhbE9iamVjdC0+Z2xv
YmFsRGF0YSgpLnRpbWVvdXRDaGVja2VyLnN0b3AoKTsKKyAgICAgICAgUmVmUHRyPEpTR2xvYmFs
RGF0YT4gZ2xvYmFsRGF0YSgmZXhlYy0+Z2xvYmFsRGF0YSgpKTsKKyAgICAgICAgZ2xvYmFsRGF0
YS0+dGltZW91dENoZWNrZXIuc3RhcnQoKTsKKyAgICAgICAgQ29tcGxldGlvbiBjb21wbGV0aW9u
ID0gSlNDOjpldmFsdWF0ZShyb290T2JqZWN0LT5nbG9iYWxPYmplY3QoKS0+Z2xvYmFsRXhlYygp
LCByb290T2JqZWN0LT5nbG9iYWxPYmplY3QoKS0+Z2xvYmFsU2NvcGVDaGFpbigpLCBtYWtlU291
cmNlKHNjcmlwdFN0cmluZyksIEpTQzo6SlNWYWx1ZSgpKTsKKyAgICAgICAgZ2xvYmFsRGF0YS0+
dGltZW91dENoZWNrZXIuc3RvcCgpOwogICAgICAgICBDb21wbFR5cGUgdHlwZSA9IGNvbXBsZXRp
b24uY29tcGxUeXBlKCk7CiAgICAgICAgIAogICAgICAgICBKU1ZhbHVlIHJlc3VsdDsKQEAgLTUx
MywxMCArNTEzLDEwIEBAIGJvb2wgX05QTl9Db25zdHJ1Y3QoTlBQLCBOUE9iamVjdCogbywgY29u
c3QgTlBWYXJpYW50KiBhcmdzLCB1aW50MzJfdCBhcmdDb3VudCwKICAgICAgICAgCiAgICAgICAg
IE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ0xpc3Q7CiAgICAgICAgIGdldExpc3RGcm9tVmFyaWFu
dEFyZ3MoZXhlYywgYXJncywgYXJnQ291bnQsIHJvb3RPYmplY3QsIGFyZ0xpc3QpOwotICAgICAg
ICBQcm90ZWN0ZWRQdHI8SlNHbG9iYWxPYmplY3Q+IGdsb2JhbE9iamVjdCA9IHJvb3RPYmplY3Qt
Pmdsb2JhbE9iamVjdCgpOwotICAgICAgICBnbG9iYWxPYmplY3QtPmdsb2JhbERhdGEoKS50aW1l
b3V0Q2hlY2tlci5zdGFydCgpOworICAgICAgICBSZWZQdHI8SlNHbG9iYWxEYXRhPiBnbG9iYWxE
YXRhKCZleGVjLT5nbG9iYWxEYXRhKCkpOworICAgICAgICBnbG9iYWxEYXRhLT50aW1lb3V0Q2hl
Y2tlci5zdGFydCgpOwogICAgICAgICBKU1ZhbHVlIHJlc3VsdFYgPSBKU0M6OmNvbnN0cnVjdChl
eGVjLCBjb25zdHJ1Y3RvciwgY29uc3RydWN0VHlwZSwgY29uc3RydWN0RGF0YSwgYXJnTGlzdCk7
Ci0gICAgICAgIGdsb2JhbE9iamVjdC0+Z2xvYmFsRGF0YSgpLnRpbWVvdXRDaGVja2VyLnN0b3Ao
KTsKKyAgICAgICAgZ2xvYmFsRGF0YS0+dGltZW91dENoZWNrZXIuc3RvcCgpOwogICAgICAgICAK
ICAgICAgICAgLy8gQ29udmVydCBhbmQgcmV0dXJuIHRoZSByZXN1bHQuCiAgICAgICAgIGNvbnZl
cnRWYWx1ZVRvTlBWYXJpYW50KGV4ZWMsIHJlc3VsdFYsIHJlc3VsdCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9icmlkZ2UvanNjL0JyaWRnZUpTQy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
cmlkZ2UvanNjL0JyaWRnZUpTQy5jcHAKaW5kZXggMjc0N2M3NTFmMmQ2NWU1MzU2NmVjOWZjNjY4
NmI4MzVmMzBiOWIxZC4uNzk3MDYxYjBkZjc5ZTdlZmRlOWI3MmUxMDY4MWNjZGQyOTQ2NmU2NCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL2pzYy9CcmlkZ2VKU0MuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9qc2MvQnJpZGdlSlNDLmNwcApAQCAtMjcsMTAgKzI3LDEz
IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQnJpZGdlSlNDLmgiCiAKKyNpbmNs
dWRlICJKU0RPTVdpbmRvd0Jhc2UuaCIKKwogI2luY2x1ZGUgInJ1bnRpbWVfb2JqZWN0LmgiCiAj
aW5jbHVkZSAicnVudGltZV9yb290LmgiCiAjaW5jbHVkZSA8cnVudGltZS9KU0xvY2suaD4KIAor
CiAjaWYgUExBVEZPUk0oUVQpCiAjaW5jbHVkZSAicXRfaW5zdGFuY2UuaCIKICNlbmRpZgpAQCAt
NTEsNiArNTQsNyBAQCBBcnJheTo6fkFycmF5KCkKIAogSW5zdGFuY2U6Okluc3RhbmNlKFBhc3NS
ZWZQdHI8Um9vdE9iamVjdD4gcm9vdE9iamVjdCkKICAgICA6IG1fcm9vdE9iamVjdChyb290T2Jq
ZWN0KQorICAgICwgbV9ydW50aW1lT2JqZWN0KCpXZWJDb3JlOjpKU0RPTVdpbmRvd0Jhc2U6OmNv
bW1vbkpTR2xvYmFsRGF0YSgpKQogewogICAgIEFTU0VSVChtX3Jvb3RPYmplY3QpOwogfQpAQCAt
NTgsNyArNjIsNiBAQCBJbnN0YW5jZTo6SW5zdGFuY2UoUGFzc1JlZlB0cjxSb290T2JqZWN0PiBy
b290T2JqZWN0KQogSW5zdGFuY2U6On5JbnN0YW5jZSgpCiB7CiAgICAgQVNTRVJUKCFtX3J1bnRp
bWVPYmplY3QpOwotICAgIEFTU0VSVCghbV9ydW50aW1lT2JqZWN0Lmhhc0RlYWRPYmplY3QoKSk7
CiB9CiAKIHN0YXRpYyBLSlNEaWRFeGVjdXRlRnVuY3Rpb25QdHIgc19kaWRFeGVjdXRlRnVuY3Rp
b247CkBAIC0xMDcsMTMgKzExMCwxMSBAQCB2b2lkIEluc3RhbmNlOjp3aWxsRGVzdHJveVJ1bnRp
bWVPYmplY3QoUnVudGltZU9iamVjdCogb2JqZWN0KQogewogICAgIEFTU0VSVChtX3Jvb3RPYmpl
Y3QpOwogICAgIG1fcm9vdE9iamVjdC0+cmVtb3ZlUnVudGltZU9iamVjdChvYmplY3QpOwotICAg
IG1fcnVudGltZU9iamVjdC5jbGVhcihvYmplY3QpOwogfQogCi12b2lkIEluc3RhbmNlOjp3aWxs
SW52YWxpZGF0ZVJ1bnRpbWVPYmplY3QoUnVudGltZU9iamVjdCogb2JqZWN0KQordm9pZCBJbnN0
YW5jZTo6d2lsbEludmFsaWRhdGVSdW50aW1lT2JqZWN0KCkKIHsKLSAgICBBU1NFUlQob2JqZWN0
KTsKLSAgICBtX3J1bnRpbWVPYmplY3QuY2xlYXIob2JqZWN0KTsKKyAgICBtX3J1bnRpbWVPYmpl
Y3QuY2xlYXIoKTsKIH0KIAogUm9vdE9iamVjdCogSW5zdGFuY2U6OnJvb3RPYmplY3QoKSBjb25z
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL2pzYy9CcmlkZ2VKU0MuaCBiL1Nv
dXJjZS9XZWJDb3JlL2JyaWRnZS9qc2MvQnJpZGdlSlNDLmgKaW5kZXggZWJjZmFhZDMwZjcwYTk2
ZTQ3NDhkNzhkN2Q1ZTMwM2EwYjIwYmJiNC4uZGY4MjU5NTNkMDgzMGQyMGYyY2EzOTA5Mjk3ZGNk
OTIzNWYxNjE0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL2pzYy9CcmlkZ2VK
U0MuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvanNjL0JyaWRnZUpTQy5oCkBAIC04Nyw3
ICs4Nyw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgQ2xhc3MqIGdldENsYXNzKCkgY29uc3Qg
PSAwOwogICAgIEpTT2JqZWN0KiBjcmVhdGVSdW50aW1lT2JqZWN0KEV4ZWNTdGF0ZSopOwotICAg
IHZvaWQgd2lsbEludmFsaWRhdGVSdW50aW1lT2JqZWN0KFJ1bnRpbWVPYmplY3QqKTsKKyAgICB2
b2lkIHdpbGxJbnZhbGlkYXRlUnVudGltZU9iamVjdCgpOwogICAgIHZvaWQgd2lsbERlc3Ryb3lS
dW50aW1lT2JqZWN0KFJ1bnRpbWVPYmplY3QqKTsKIAogICAgIC8vIFJldHVybnMgZmFsc2UgaWYg
dGhlIHZhbHVlIHdhcyBub3Qgc2V0IHN1Y2Nlc3NmdWxseS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JyaWRnZS9ydW50aW1lX29iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uv
cnVudGltZV9vYmplY3QuY3BwCmluZGV4IDM2OGY3YjA4MzcxODhkNWYxNDBmMjgwZTBlZjU3NmY4
ZWE2MWE5ZjYuLmVjYmEyODgzNTk0NTUwZTEyYzVmMzI1Njk0ZmEyNzI3MTIyYjQwYTAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX29iamVjdC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfb2JqZWN0LmNwcApAQCAtNjIsNyArNjIsNyBAQCB2
b2lkIFJ1bnRpbWVPYmplY3Q6OmludmFsaWRhdGUoKQogewogICAgIEFTU0VSVChtX2luc3RhbmNl
KTsKICAgICBpZiAobV9pbnN0YW5jZSkKLSAgICAgICAgbV9pbnN0YW5jZS0+d2lsbEludmFsaWRh
dGVSdW50aW1lT2JqZWN0KHRoaXMpOworICAgICAgICBtX2luc3RhbmNlLT53aWxsSW52YWxpZGF0
ZVJ1bnRpbWVPYmplY3QoKTsKICAgICBtX2luc3RhbmNlID0gMDsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfcm9vdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
cmlkZ2UvcnVudGltZV9yb290LmNwcAppbmRleCA5OTJiMzQzMGY4YjE2MDYwZmE5NTNlY2QyOGJm
MTQwMjAzMWVlNWQ3Li43MDJiYzA5YTIzYjFkYjdhOTZjYTMyY2IyOThhY2JhZDhlZjQ2OTEwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9yb290LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9yb290LmNwcApAQCAtODMsNyArODMsNyBAQCBQ
YXNzUmVmUHRyPFJvb3RPYmplY3Q+IFJvb3RPYmplY3Q6OmNyZWF0ZShjb25zdCB2b2lkKiBuYXRp
dmVIYW5kbGUsIEpTR2xvYmFsT2JqZQogUm9vdE9iamVjdDo6Um9vdE9iamVjdChjb25zdCB2b2lk
KiBuYXRpdmVIYW5kbGUsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAgICAgOiBtX2lz
VmFsaWQodHJ1ZSkKICAgICAsIG1fbmF0aXZlSGFuZGxlKG5hdGl2ZUhhbmRsZSkKLSAgICAsIG1f
Z2xvYmFsT2JqZWN0KGdsb2JhbE9iamVjdCkKKyAgICAsIG1fZ2xvYmFsT2JqZWN0KGdsb2JhbE9i
amVjdC0+Z2xvYmFsRGF0YSgpLCBnbG9iYWxPYmplY3QpCiB7CiAgICAgQVNTRVJUKGdsb2JhbE9i
amVjdCk7CiAgICAgcm9vdE9iamVjdFNldCgpLT5hZGQodGhpcyk7CkBAIC0xMTMsNyArMTEzLDcg
QEAgdm9pZCBSb290T2JqZWN0OjppbnZhbGlkYXRlKCkKICAgICBtX2lzVmFsaWQgPSBmYWxzZTsK
IAogICAgIG1fbmF0aXZlSGFuZGxlID0gMDsKLSAgICBtX2dsb2JhbE9iamVjdCA9IDA7CisgICAg
bV9nbG9iYWxPYmplY3QuY2xlYXIoKTsKIAogICAgIHsKICAgICAgICAgSGFzaFNldDxJbnZhbGlk
YXRpb25DYWxsYmFjayo+OjppdGVyYXRvciBlbmQgPSBtX2ludmFsaWRhdGlvbkNhbGxiYWNrcy5l
bmQoKTsKQEAgLTE2NywxMiArMTY3LDEyIEBAIGNvbnN0IHZvaWQqIFJvb3RPYmplY3Q6Om5hdGl2
ZUhhbmRsZSgpIGNvbnN0CiBKU0dsb2JhbE9iamVjdCogUm9vdE9iamVjdDo6Z2xvYmFsT2JqZWN0
KCkgY29uc3QKIHsKICAgICBBU1NFUlQobV9pc1ZhbGlkKTsKLSAgICByZXR1cm4gbV9nbG9iYWxP
YmplY3Q7CisgICAgcmV0dXJuIG1fZ2xvYmFsT2JqZWN0LmdldCgpOwogfQogCiB2b2lkIFJvb3RP
YmplY3Q6OnVwZGF0ZUdsb2JhbE9iamVjdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQog
ewotICAgIG1fZ2xvYmFsT2JqZWN0ID0gZ2xvYmFsT2JqZWN0OworICAgIG1fZ2xvYmFsT2JqZWN0
LnNldChnbG9iYWxPYmplY3QtPmdsb2JhbERhdGEoKSwgZ2xvYmFsT2JqZWN0KTsKIH0KIAogdm9p
ZCBSb290T2JqZWN0OjphZGRSdW50aW1lT2JqZWN0KFJ1bnRpbWVPYmplY3QqIG9iamVjdCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX3Jvb3QuaCBiL1NvdXJjZS9X
ZWJDb3JlL2JyaWRnZS9ydW50aW1lX3Jvb3QuaAppbmRleCBkZGU4YTQ4MDg1NDlhMDFkYzUzMTMw
YmMzZTljMjJjNWU2NDg4MzYyLi5mYzAxYTA5ZmQxM2U4MjRhOWVhYjg0NjUzZTc3OTI2NWQwNjBh
ZGYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9yb290LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfcm9vdC5oCkBAIC0yOSw3ICsyOSw3IEBA
CiAjaWYgUExBVEZPUk0oTUFDKQogI2luY2x1ZGUgImpuaV9qc29iamVjdC5oIgogI2VuZGlmCi0j
aW5jbHVkZSA8cnVudGltZS9Qcm90ZWN0Lmg+CisjaW5jbHVkZSA8Y29sbGVjdG9yL2hhbmRsZXMv
R2xvYmFsLmg+CiAKICNpbmNsdWRlIDxydW50aW1lL1dlYWtHQ01hcC5oPgogI2luY2x1ZGUgPHd0
Zi9Gb3J3YXJkLmg+CkBAIC04Niw3ICs4Niw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2lzVmFs
aWQ7CiAgICAgCiAgICAgY29uc3Qgdm9pZCogbV9uYXRpdmVIYW5kbGU7Ci0gICAgUHJvdGVjdGVk
UHRyPEpTR2xvYmFsT2JqZWN0PiBtX2dsb2JhbE9iamVjdDsKKyAgICBHbG9iYWw8SlNHbG9iYWxP
YmplY3Q+IG1fZ2xvYmFsT2JqZWN0OwogCiAgICAgUHJvdGVjdENvdW50U2V0IG1fcHJvdGVjdENv
dW50U2V0OwogICAgIFdlYWtHQ01hcDxSdW50aW1lT2JqZWN0KiwgUnVudGltZU9iamVjdD4gbV9y
dW50aW1lT2JqZWN0czsgLy8gUmVhbGx5IG5lZWQgYSBXZWFrR0NTZXQsIGJ1dCB0aGlzIHdpbGwg
ZG8uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRMaXN0ZW5lci5oIGIvU291
cmNlL1dlYkNvcmUvZG9tL0V2ZW50TGlzdGVuZXIuaAppbmRleCA5NmQwYmViZDRhNDgxNTRhMzhl
MmU5OGVhZjZhN2ViNmQxNGRlZGJkLi4zNDg3MDRmY2M4NTJmMmUwNGFjZDQ5MDY0MWRkNTcyZDNm
YTBkNDY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRMaXN0ZW5lci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudExpc3RlbmVyLmgKQEAgLTU0LDcgKzU0LDYgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiAjaWYgVVNFKEpTQykKICAgICAgICAgdmlydHVhbCB2b2lk
IG1hcmtKU0Z1bmN0aW9uKEpTQzo6TWFya1N0YWNrJikgeyB9Ci0gICAgICAgIHZpcnR1YWwgdm9p
ZCBpbnZhbGlkYXRlSlNGdW5jdGlvbihKU0M6OkpTT2JqZWN0KikgeyB9CiAjZW5kaWYKIAogICAg
ICAgICBib29sIGlzQXR0cmlidXRlKCkgY29uc3QgeyByZXR1cm4gdmlydHVhbGlzQXR0cmlidXRl
KCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5oIGIvU291
cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmgKaW5kZXggYTAzODAxYmNiZDUwMGU0ZGJjZTg5
NTFjZDQ3NmI0ZDNkNzA4YThiMy4uZjE4OGMwZWQ3OTBlM2Y4ZDk2MjE1NDY5YzlkNGMzYjEwMTBj
YTNjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmgKQEAgLTIzMSwyMCArMjMxLDYgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAgICAgICAgIGVudHJ5W2ldLmxpc3RlbmVyLT5tYXJr
SlNGdW5jdGlvbihtYXJrU3RhY2spOwogICAgICAgICB9CiAgICAgfQotCi0gICAgaW5saW5lIHZv
aWQgRXZlbnRUYXJnZXQ6OmludmFsaWRhdGVKU0V2ZW50TGlzdGVuZXJzKEpTQzo6SlNPYmplY3Qq
IHdyYXBwZXIpCi0gICAgewotICAgICAgICBFdmVudFRhcmdldERhdGEqIGQgPSBldmVudFRhcmdl
dERhdGEoKTsKLSAgICAgICAgaWYgKCFkKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAg
IEV2ZW50TGlzdGVuZXJNYXA6Oml0ZXJhdG9yIGVuZCA9IGQtPmV2ZW50TGlzdGVuZXJNYXAuZW5k
KCk7Ci0gICAgICAgIGZvciAoRXZlbnRMaXN0ZW5lck1hcDo6aXRlcmF0b3IgaXQgPSBkLT5ldmVu
dExpc3RlbmVyTWFwLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAgICAgICAgRXZl
bnRMaXN0ZW5lclZlY3RvciYgZW50cnkgPSAqaXQtPnNlY29uZDsKLSAgICAgICAgICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgZW50cnkuc2l6ZSgpOyArK2kpCi0gICAgICAgICAgICAgICAgZW50
cnlbaV0ubGlzdGVuZXItPmludmFsaWRhdGVKU0Z1bmN0aW9uKHdyYXBwZXIpOwotICAgICAgICB9
Ci0gICAgfQogI2VuZGlmCiAKICAgICBpbmxpbmUgYm9vbCBFdmVudFRhcmdldDo6aXNGaXJpbmdF
dmVudExpc3RlbmVycygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJl
cXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAppbmRleCBh
NTQ4ZWJjMzRhZDc5MjM3N2RjNzIwZTAyMWRiNTI3M2MwNjk2NTAxLi5mMDNlM2E0YzJlNTExYTRl
MjkwNzdlMmFmOGY5NWVjODIxYWNiZTVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwv
WE1MSHR0cFJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVz
dC5jcHAKQEAgLTU2LDggKzU2LDggQEAKICNpZiBVU0UoSlNDKQogI2luY2x1ZGUgIkpTRE9NQmlu
ZGluZy5oIgogI2luY2x1ZGUgIkpTRE9NV2luZG93LmgiCisjaW5jbHVkZSA8Y29sbGVjdG9yL2hh
bmRsZXMvR2xvYmFsLmg+CiAjaW5jbHVkZSA8cnVudGltZS9KU0xvY2suaD4KLSNpbmNsdWRlIDxy
dW50aW1lL1Byb3RlY3QuaD4KICNlbmRpZgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFu
Z2VMb2cKaW5kZXggNGEzYzc0ZmU4MDAxZDEwODhjMzBjOTYwM2VlNjlhYzU5NzUyMmM2ZC4uMmRk
YWU2ODg0YWMwMDIzMDNlYmIxMDliYmM3YWIyMzIxZmNjYzFmMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDMxIEBACisyMDExLTAyLTE0ICBPbGl2ZXIgSHVudCAgPG9saXZlckBhcHBsZS5j
b20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVm
YWN0b3IgaGFuZGxlcyBhbmQgd2VhayBwb2ludGVycyB0byBiZWNvbWUgbmljZXIgYW5kIG1vcmUg
YXV0b21hdGljCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD01NDQxNQorCisgICAgICAgIFVwZGF0ZSB0byB1c2UgR2xvYmFsPD4gaW5zdGVhZCBvZiBQcm90
ZWN0ZWRQdHIsIGFuZCByZWZhY3RvcmVkIHNsaWdodGx5CisgICAgICAgIHRvIGdldCBnbG9iYWwg
ZGF0YSB0byBwbGFjZXMgaXQncyBuZWVkZWQgZm9yIHdoZW4gd2UncmUgYXNzaWduaW5nIHRvCisg
ICAgICAgIEdsb2JhbDw+cworCisgICAgICAgICogRm9yd2FyZGluZ0hlYWRlcnMvY29sbGVjdG9y
L2hhbmRsZXMvR2xvYmFsLmg6IEFkZGVkLgorICAgICAgICAqIFBsdWdpbnMvSG9zdGVkL05ldHNj
YXBlUGx1Z2luSW5zdGFuY2VQcm94eS5oOgorICAgICAgICAqIFBsdWdpbnMvSG9zdGVkL05ldHNj
YXBlUGx1Z2luSW5zdGFuY2VQcm94eS5tbToKKyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVn
aW5JbnN0YW5jZVByb3h5OjpMb2NhbE9iamVjdE1hcDo6Z2V0KToKKyAgICAgICAgKFdlYktpdDo6
TmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5OjpMb2NhbE9iamVjdE1hcDo6aWRGb3JPYmplY3Qp
OgorICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHk6OkxvY2FsT2Jq
ZWN0TWFwOjpmb3JnZXQpOgorICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpbkluc3RhbmNl
UHJveHk6OmdldFdpbmRvd05QT2JqZWN0KToKKyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVn
aW5JbnN0YW5jZVByb3h5OjpnZXRQbHVnaW5FbGVtZW50TlBPYmplY3QpOgorICAgICAgICAoV2Vi
S2l0OjpOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHk6OmV2YWx1YXRlKToKKyAgICAgICAgKFdl
YktpdDo6TmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5OjppbnZva2UpOgorICAgICAgICAoV2Vi
S2l0OjpOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHk6Omludm9rZURlZmF1bHQpOgorICAgICAg
ICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHk6OmNvbnN0cnVjdCk6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eTo6YWRkVmFsdWVUb0FycmF5
KToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlNjcmlwdERlYnVnZ2VyLmg6CisgICAgICAgICogV2Vi
Vmlldy9XZWJTY3JpcHREZWJ1Z2dlci5tbToKKyAgICAgICAgKFdlYlNjcmlwdERlYnVnZ2VyOjpX
ZWJTY3JpcHREZWJ1Z2dlcik6CisKIDIwMTEtMDItMTEgIEdlb2ZmcmV5IEdhcmVuICA8Z2dhcmVu
QGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBPbGl2ZXIgSHVudC4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvbWFjL0ZvcndhcmRpbmdIZWFkZXJzL2NvbGxlY3Rvci9oYW5kbGVz
L0dsb2JhbC5oIGIvU291cmNlL1dlYktpdC9tYWMvRm9yd2FyZGluZ0hlYWRlcnMvY29sbGVjdG9y
L2hhbmRsZXMvR2xvYmFsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDIwNjVhZDI0MTVmMGI4ZTVlNTgxNzA1MDkw
N2U4YTc2MWIyNDFlYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL0Zvcndh
cmRpbmdIZWFkZXJzL2NvbGxlY3Rvci9oYW5kbGVzL0dsb2JhbC5oCkBAIC0wLDAgKzEgQEAKKyNp
bXBvcnQgPEphdmFTY3JpcHRDb3JlL0dsb2JhbC5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5LmggYi9Tb3Vy
Y2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHku
aAppbmRleCA0ZjJjNTY2YTc3YTIxNDE1YmIyZGRjMjRmYjQ5MjdmODFiMzk1NzVmLi43ODI4NDYw
ZjRhMTlmYTU5NDBmN2NjY2Q4OTQ4YmY2NGZkODg2NTE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNl
UHJveHkuaApAQCAtMjgsNyArMjgsNyBAQAogI2lmbmRlZiBOZXRzY2FwZVBsdWdpbkluc3RhbmNl
UHJveHlfaAogI2RlZmluZSBOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHlfaAogCi0jaW5jbHVk
ZSA8SmF2YVNjcmlwdENvcmUvUHJvdGVjdC5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0ds
b2JhbC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVGltZXIuaD4KICNpbmNsdWRlIDxXZWJLaXQvbnBh
cGkuaD4KICNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KQEAgLTMxOCw3ICszMTgsNyBAQCBwcml2YXRl
OgogICAgIHB1YmxpYzoKICAgICAgICAgTG9jYWxPYmplY3RNYXAoKTsKICAgICAgICAgfkxvY2Fs
T2JqZWN0TWFwKCk7Ci0gICAgICAgIHVpbnQzMl90IGlkRm9yT2JqZWN0KEpTQzo6SlNPYmplY3Qq
KTsKKyAgICAgICAgdWludDMyX3QgaWRGb3JPYmplY3QoSlNDOjpKU0dsb2JhbERhdGEmLCBKU0M6
OkpTT2JqZWN0Kik7CiAgICAgICAgIHZvaWQgcmV0YWluKEpTQzo6SlNPYmplY3QqKTsKICAgICAg
ICAgdm9pZCByZWxlYXNlKEpTQzo6SlNPYmplY3QqKTsKICAgICAgICAgdm9pZCBjbGVhcigpOwpA
QCAtMzI3LDcgKzMyNyw3IEBAIHByaXZhdGU6CiAgICAgICAgIEpTQzo6SlNPYmplY3QqIGdldCh1
aW50MzJfdCkgY29uc3Q7CiAKICAgICBwcml2YXRlOgotICAgICAgICBIYXNoTWFwPHVpbnQzMl90
LCBKU0M6OlByb3RlY3RlZFB0cjxKU0M6OkpTT2JqZWN0PiA+IG1faWRUb0pTT2JqZWN0TWFwOwor
ICAgICAgICBIYXNoTWFwPHVpbnQzMl90LCBKU0M6Okdsb2JhbDxKU0M6OkpTT2JqZWN0PiA+IG1f
aWRUb0pTT2JqZWN0TWFwOwogICAgICAgICAvLyBUaGUgcGFpciBjb25zaXN0cyBvZiBvYmplY3Qg
SUQgYW5kIGEgcmVmZXJlbmNlIGNvdW50LiBPbmUgcmVmZXJlbmNlIGJlbG9uZ3MgdG8gcmVtb3Rl
IHBsdWctaW4sCiAgICAgICAgIC8vIGFuZCB0aGUgcHJveHkgd2lsbCBhZGQgdHJhbnNpZW50IHJl
ZmVyZW5jZXMgZm9yIGFyZ3VtZW50cyB0aGF0IGFyZSBiZWluZyBzZW50IG91dC4KICAgICAgICAg
SGFzaE1hcDxKU0M6OkpTT2JqZWN0KiwgcGFpcjx1aW50MzJfdCwgdWludDMyX3Q+ID4gbV9qc09i
amVjdFRvSURNYXA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3Rl
ZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9QbHVn
aW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkubW0KaW5kZXggZWNhYTBkNjNl
MmEzNTJjYzJiZDYyYjEwYjQ4NzA0NjYzM2NkMzEwYi4uZWQ2NDZkM2U4NjQxZmQ1ODQ4YTgwMWE0
ZTQ2Yjk4ZTA1OGM4YmE3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9I
b3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
bWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5tbQpAQCAtMTIx
LDEwICsxMjEsMTAgQEAgaW5saW5lIEpTQzo6SlNPYmplY3QqIE5ldHNjYXBlUGx1Z2luSW5zdGFu
Y2VQcm94eTo6TG9jYWxPYmplY3RNYXA6OmdldCh1aW50MzJfdAogICAgIGlmIChvYmplY3RJRCA9
PSBIYXNoVHJhaXRzPHVpbnQzMl90Pjo6ZW1wdHlWYWx1ZSgpIHx8IEhhc2hUcmFpdHM8dWludDMy
X3Q+Ojppc0RlbGV0ZWRWYWx1ZShvYmplY3RJRCkpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAg
cmV0dXJuIG1faWRUb0pTT2JqZWN0TWFwLmdldChvYmplY3RJRCk7CisgICAgcmV0dXJuIG1faWRU
b0pTT2JqZWN0TWFwLmdldChvYmplY3RJRCkuZ2V0KCk7CiB9CiAKLXVpbnQzMl90IE5ldHNjYXBl
UGx1Z2luSW5zdGFuY2VQcm94eTo6TG9jYWxPYmplY3RNYXA6OmlkRm9yT2JqZWN0KEpTT2JqZWN0
KiBvYmplY3QpCit1aW50MzJfdCBOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHk6OkxvY2FsT2Jq
ZWN0TWFwOjppZEZvck9iamVjdChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTT2JqZWN0KiBv
YmplY3QpCiB7CiAgICAgLy8gVGhpcyBtZXRob2QgY3JlYXRlcyBvYmplY3RzIHdpdGggcmVmY291
bnQgb2YgMSwgYnV0IGRvZXNuJ3QgaW5jcmVhc2UgcmVmY291bnQgd2hlbiByZXR1cm5pbmcKICAg
ICAvLyBmb3VuZCBvYmplY3RzLiBUaGlzIGV4dHJhIGNvdW50IGFjY291bnRzIGZvciB0aGUgbWFp
biAicmVmZXJlbmNlIiBrZXB0IGJ5IHBsdWdpbiBwcm9jZXNzLgpAQCAtMTQ4LDcgKzE0OCw3IEBA
IHVpbnQzMl90IE5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eTo6TG9jYWxPYmplY3RNYXA6Omlk
Rm9yT2JqZWN0KEpTT2JqZWN0KiBvYmplCiAgICAgICAgIG9iamVjdElEID0gKyttX29iamVjdElE
Q291bnRlcjsKICAgICB9IHdoaWxlICghbV9vYmplY3RJRENvdW50ZXIgfHwgbV9vYmplY3RJRENv
dW50ZXIgPT0gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KC0xKSB8fCBtX2lkVG9KU09iamVjdE1hcC5j
b250YWlucyhvYmplY3RJRCkpOwogCi0gICAgbV9pZFRvSlNPYmplY3RNYXAuc2V0KG9iamVjdElE
LCBvYmplY3QpOworICAgIG1faWRUb0pTT2JqZWN0TWFwLnNldChvYmplY3RJRCwgR2xvYmFsPEpT
T2JqZWN0PihnbG9iYWxEYXRhLCBvYmplY3QpKTsKICAgICBtX2pzT2JqZWN0VG9JRE1hcC5zZXQo
b2JqZWN0LCBtYWtlX3BhaXI8dWludDMyX3QsIHVpbnQzMl90PihvYmplY3RJRCwgMSkpOwogCiAg
ICAgcmV0dXJuIG9iamVjdElEOwpAQCAtMTg4LDcgKzE4OCw3IEBAIGJvb2wgTmV0c2NhcGVQbHVn
aW5JbnN0YW5jZVByb3h5OjpMb2NhbE9iamVjdE1hcDo6Zm9yZ2V0KHVpbnQzMl90IG9iamVjdElE
KQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAgICBIYXNoTWFwPHVpbnQzMl90LCBK
U0M6OlByb3RlY3RlZFB0cjxKU0M6OkpTT2JqZWN0PiA+OjppdGVyYXRvciBpdGVyID0gbV9pZFRv
SlNPYmplY3RNYXAuZmluZChvYmplY3RJRCk7CisgICAgSGFzaE1hcDx1aW50MzJfdCwgSlNDOjpH
bG9iYWw8SlNDOjpKU09iamVjdD4gPjo6aXRlcmF0b3IgaXRlciA9IG1faWRUb0pTT2JqZWN0TWFw
LmZpbmQob2JqZWN0SUQpOwogICAgIGlmIChpdGVyID09IG1faWRUb0pTT2JqZWN0TWFwLmVuZCgp
KSB7CiAgICAgICAgIExPR19FUlJPUigiTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5OjpMb2Nh
bE9iamVjdE1hcDo6Zm9yZ2V0OiBsb2NhbCBvYmplY3QgJXUgZG9lc24ndCBleGlzdC4iLCBvYmpl
Y3RJRCk7CiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtODIzLDcgKzgyMyw3IEBAIGJvb2wgTmV0
c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5OjpnZXRXaW5kb3dOUE9iamVjdCh1aW50MzJfdCYgb2Jq
ZWN0SUQpCiAgICAgaWYgKCFmcmFtZS0+c2NyaXB0KCktPmNhbkV4ZWN1dGVTY3JpcHRzKE5vdEFi
b3V0VG9FeGVjdXRlU2NyaXB0KSkKICAgICAgICAgb2JqZWN0SUQgPSAwOwogICAgIGVsc2UKLSAg
ICAgICAgb2JqZWN0SUQgPSBtX2xvY2FsT2JqZWN0cy5pZEZvck9iamVjdChmcmFtZS0+c2NyaXB0
KCktPndpbmRvd1NoZWxsKHBsdWdpbldvcmxkKCkpLT53aW5kb3coKSk7CisgICAgICAgIG9iamVj
dElEID0gbV9sb2NhbE9iamVjdHMuaWRGb3JPYmplY3QoKnBsdWdpbldvcmxkKCktPmdsb2JhbERh
dGEoKSwgZnJhbWUtPnNjcmlwdCgpLT53aW5kb3dTaGVsbChwbHVnaW5Xb3JsZCgpKS0+d2luZG93
KCkpOwogICAgICAgICAKICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTgzNSw3ICs4MzUsNyBAQCBi
b29sIE5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eTo6Z2V0UGx1Z2luRWxlbWVudE5QT2JqZWN0
KHVpbnQzMl90JiBvYmplY3RJRCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAogICAgIGlm
IChKU09iamVjdCogb2JqZWN0ID0gZnJhbWUtPnNjcmlwdCgpLT5qc09iamVjdEZvclBsdWdpbkVs
ZW1lbnQoW21fcGx1Z2luVmlldyBlbGVtZW50XSkpCi0gICAgICAgIG9iamVjdElEID0gbV9sb2Nh
bE9iamVjdHMuaWRGb3JPYmplY3Qob2JqZWN0KTsKKyAgICAgICAgb2JqZWN0SUQgPSBtX2xvY2Fs
T2JqZWN0cy5pZEZvck9iamVjdCgqcGx1Z2luV29ybGQoKS0+Z2xvYmFsRGF0YSgpLCBvYmplY3Qp
OwogICAgIGVsc2UKICAgICAgICAgb2JqZWN0SUQgPSAwOwogICAgIApAQCAtODY2LDcgKzg2Niw3
IEBAIGJvb2wgTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5OjpldmFsdWF0ZSh1aW50MzJfdCBv
YmplY3RJRCwgY29uc3QgU3RyaW5nJiBzY3JpCiAKICAgICBKU0xvY2sgbG9jayhTaWxlbmNlQXNz
ZXJ0aW9uc09ubHkpOwogICAgIAotICAgIFByb3RlY3RlZFB0cjxKU0dsb2JhbE9iamVjdD4gZ2xv
YmFsT2JqZWN0ID0gZnJhbWUtPnNjcmlwdCgpLT5nbG9iYWxPYmplY3QocGx1Z2luV29ybGQoKSk7
CisgICAgR2xvYmFsPEpTR2xvYmFsT2JqZWN0PiBnbG9iYWxPYmplY3QoKnBsdWdpbldvcmxkKCkt
Pmdsb2JhbERhdGEoKSwgZnJhbWUtPnNjcmlwdCgpLT5nbG9iYWxPYmplY3QocGx1Z2luV29ybGQo
KSkpOwogICAgIEV4ZWNTdGF0ZSogZXhlYyA9IGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpOwog
CiAgICAgYm9vbCBvbGRBbGxvd1BvcHVwcyA9IGZyYW1lLT5zY3JpcHQoKS0+YWxsb3dQb3B1cHNG
cm9tUGx1Z2luKCk7CkBAIC05MjAsMTAgKzkyMCwxMCBAQCBib29sIE5ldHNjYXBlUGx1Z2luSW5z
dGFuY2VQcm94eTo6aW52b2tlKHVpbnQzMl90IG9iamVjdElELCBjb25zdCBJZGVudGlmaWVyJiBt
ZQogICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ0xpc3Q7CiAgICAgZGVtYXJzaGFsVmFsdWVz
KGV4ZWMsIGFyZ3VtZW50c0RhdGEsIGFyZ3VtZW50c0xlbmd0aCwgYXJnTGlzdCk7CiAKLSAgICBQ
cm90ZWN0ZWRQdHI8SlNHbG9iYWxPYmplY3Q+IGdsb2JhbE9iamVjdCA9IGZyYW1lLT5zY3JpcHQo
KS0+Z2xvYmFsT2JqZWN0KHBsdWdpbldvcmxkKCkpOwotICAgIGdsb2JhbE9iamVjdC0+Z2xvYmFs
RGF0YSgpLnRpbWVvdXRDaGVja2VyLnN0YXJ0KCk7CisgICAgUmVmUHRyPEpTR2xvYmFsRGF0YT4g
Z2xvYmFsRGF0YSA9IHBsdWdpbldvcmxkKCktPmdsb2JhbERhdGEoKTsKKyAgICBnbG9iYWxEYXRh
LT50aW1lb3V0Q2hlY2tlci5zdGFydCgpOwogICAgIEpTVmFsdWUgdmFsdWUgPSBjYWxsKGV4ZWMs
IGZ1bmN0aW9uLCBjYWxsVHlwZSwgY2FsbERhdGEsIG9iamVjdCwgYXJnTGlzdCk7Ci0gICAgZ2xv
YmFsT2JqZWN0LT5nbG9iYWxEYXRhKCkudGltZW91dENoZWNrZXIuc3RvcCgpOworICAgIGdsb2Jh
bERhdGEtPnRpbWVvdXRDaGVja2VyLnN0b3AoKTsKICAgICAgICAgCiAgICAgbWFyc2hhbFZhbHVl
KGV4ZWMsIHZhbHVlLCByZXN1bHREYXRhLCByZXN1bHRMZW5ndGgpOwogICAgIGV4ZWMtPmNsZWFy
RXhjZXB0aW9uKCk7CkBAIC05NTUsMTAgKzk1NSwxMCBAQCBib29sIE5ldHNjYXBlUGx1Z2luSW5z
dGFuY2VQcm94eTo6aW52b2tlRGVmYXVsdCh1aW50MzJfdCBvYmplY3RJRCwgZGF0YV90IGFyZ3Vt
ZQogICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ0xpc3Q7CiAgICAgZGVtYXJzaGFsVmFsdWVz
KGV4ZWMsIGFyZ3VtZW50c0RhdGEsIGFyZ3VtZW50c0xlbmd0aCwgYXJnTGlzdCk7CiAKLSAgICBQ
cm90ZWN0ZWRQdHI8SlNHbG9iYWxPYmplY3Q+IGdsb2JhbE9iamVjdCA9IGZyYW1lLT5zY3JpcHQo
KS0+Z2xvYmFsT2JqZWN0KHBsdWdpbldvcmxkKCkpOwotICAgIGdsb2JhbE9iamVjdC0+Z2xvYmFs
RGF0YSgpLnRpbWVvdXRDaGVja2VyLnN0YXJ0KCk7CisgICAgUmVmUHRyPEpTR2xvYmFsRGF0YT4g
Z2xvYmFsRGF0YSA9IHBsdWdpbldvcmxkKCktPmdsb2JhbERhdGEoKTsKKyAgICBnbG9iYWxEYXRh
LT50aW1lb3V0Q2hlY2tlci5zdGFydCgpOwogICAgIEpTVmFsdWUgdmFsdWUgPSBjYWxsKGV4ZWMs
IG9iamVjdCwgY2FsbFR5cGUsIGNhbGxEYXRhLCBvYmplY3QsIGFyZ0xpc3QpOwotICAgIGdsb2Jh
bE9iamVjdC0+Z2xvYmFsRGF0YSgpLnRpbWVvdXRDaGVja2VyLnN0b3AoKTsKKyAgICBnbG9iYWxE
YXRhLT50aW1lb3V0Q2hlY2tlci5zdG9wKCk7CiAgICAgCiAgICAgbWFyc2hhbFZhbHVlKGV4ZWMs
IHZhbHVlLCByZXN1bHREYXRhLCByZXN1bHRMZW5ndGgpOwogICAgIGV4ZWMtPmNsZWFyRXhjZXB0
aW9uKCk7CkBAIC05OTEsMTAgKzk5MSwxMCBAQCBib29sIE5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQ
cm94eTo6Y29uc3RydWN0KHVpbnQzMl90IG9iamVjdElELCBkYXRhX3QgYXJndW1lbnRzRAogICAg
IE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ0xpc3Q7CiAgICAgZGVtYXJzaGFsVmFsdWVzKGV4ZWMs
IGFyZ3VtZW50c0RhdGEsIGFyZ3VtZW50c0xlbmd0aCwgYXJnTGlzdCk7CiAKLSAgICBQcm90ZWN0
ZWRQdHI8SlNHbG9iYWxPYmplY3Q+IGdsb2JhbE9iamVjdCA9IGZyYW1lLT5zY3JpcHQoKS0+Z2xv
YmFsT2JqZWN0KHBsdWdpbldvcmxkKCkpOwotICAgIGdsb2JhbE9iamVjdC0+Z2xvYmFsRGF0YSgp
LnRpbWVvdXRDaGVja2VyLnN0YXJ0KCk7CisgICAgUmVmUHRyPEpTR2xvYmFsRGF0YT4gZ2xvYmFs
RGF0YSA9IHBsdWdpbldvcmxkKCktPmdsb2JhbERhdGEoKTsKKyAgICBnbG9iYWxEYXRhLT50aW1l
b3V0Q2hlY2tlci5zdGFydCgpOwogICAgIEpTVmFsdWUgdmFsdWUgPSBKU0M6OmNvbnN0cnVjdChl
eGVjLCBvYmplY3QsIGNvbnN0cnVjdFR5cGUsIGNvbnN0cnVjdERhdGEsIGFyZ0xpc3QpOwotICAg
IGdsb2JhbE9iamVjdC0+Z2xvYmFsRGF0YSgpLnRpbWVvdXRDaGVja2VyLnN0b3AoKTsKKyAgICBn
bG9iYWxEYXRhLT50aW1lb3V0Q2hlY2tlci5zdG9wKCk7CiAgICAgCiAgICAgbWFyc2hhbFZhbHVl
KGV4ZWMsIHZhbHVlLCByZXN1bHREYXRhLCByZXN1bHRMZW5ndGgpOwogICAgIGV4ZWMtPmNsZWFy
RXhjZXB0aW9uKCk7CkBAIC0xMjgzLDcgKzEyODMsNyBAQCB2b2lkIE5ldHNjYXBlUGx1Z2luSW5z
dGFuY2VQcm94eTo6YWRkVmFsdWVUb0FycmF5KE5TTXV0YWJsZUFycmF5ICphcnJheSwgRXhlY1N0
YQogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgW2FycmF5IGFk
ZE9iamVjdDpbTlNOdW1iZXIgbnVtYmVyV2l0aEludDpKU09iamVjdFZhbHVlVHlwZV1dOwotICAg
ICAgICAgICAgW2FycmF5IGFkZE9iamVjdDpbTlNOdW1iZXIgbnVtYmVyV2l0aEludDptX2xvY2Fs
T2JqZWN0cy5pZEZvck9iamVjdChvYmplY3QpXV07CisgICAgICAgICAgICBbYXJyYXkgYWRkT2Jq
ZWN0OltOU051bWJlciBudW1iZXJXaXRoSW50Om1fbG9jYWxPYmplY3RzLmlkRm9yT2JqZWN0KGV4
ZWMtPmdsb2JhbERhdGEoKSwgb2JqZWN0KV1dOwogICAgICAgICB9CiAgICAgfSBlbHNlCiAgICAg
ICAgIFthcnJheSBhZGRPYmplY3Q6W05TTnVtYmVyIG51bWJlcldpdGhJbnQ6Vm9pZFZhbHVlVHlw
ZV1dOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJTY3JpcHREZWJ1
Z2dlci5oIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJTY3JpcHREZWJ1Z2dlci5oCmlu
ZGV4IDczYzk0NjYyMDZkZDI5ODM4OWM4MzVjMTRmMzBkOGVlNTA5NGU5OTQuLjhmN2ZjYWE1ZDFk
YjBhMmNkNjRmOWQyOTg1ZmNhNWVhM2QwYTYxNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
bWFjL1dlYlZpZXcvV2ViU2NyaXB0RGVidWdnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9X
ZWJWaWV3L1dlYlNjcmlwdERlYnVnZ2VyLmgKQEAgLTI5LDggKzI5LDggQEAKICNpZm5kZWYgV2Vi
U2NyaXB0RGVidWdnZXJfaAogI2RlZmluZSBXZWJTY3JpcHREZWJ1Z2dlcl9oCiAKKyNpbmNsdWRl
IDxjb2xsZWN0b3IvaGFuZGxlcy9HbG9iYWwuaD4KICNpbmNsdWRlIDxkZWJ1Z2dlci9EZWJ1Z2dl
ci5oPgotI2luY2x1ZGUgPHJ1bnRpbWUvUHJvdGVjdC5oPgogCiAjaW5jbHVkZSA8d3RmL1JldGFp
blB0ci5oPgogCkBAIC02OSw3ICs2OSw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2NhbGxpbmdE
ZWxlZ2F0ZTsKICAgICBSZXRhaW5QdHI8V2ViU2NyaXB0Q2FsbEZyYW1lPiBtX3RvcENhbGxGcmFt
ZTsKIAotICAgIEpTQzo6UHJvdGVjdGVkUHRyPEpTQzo6SlNHbG9iYWxPYmplY3Q+IG1fZ2xvYmFs
T2JqZWN0OworICAgIEpTQzo6R2xvYmFsPEpTQzo6SlNHbG9iYWxPYmplY3Q+IG1fZ2xvYmFsT2Jq
ZWN0OwogICAgIFJldGFpblB0cjxXZWJTY3JpcHRDYWxsRnJhbWU+IG1fZ2xvYmFsQ2FsbEZyYW1l
OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJTY3JpcHRE
ZWJ1Z2dlci5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViU2NyaXB0RGVidWdnZXIu
bW0KaW5kZXggOWJjM2JjZTBkZDdiNDJiYmRjZWQzMDE5MDc3M2M0OGU5NTIwMTBiNi4uYmZkYjM1
YTMyMWM1OTFmYWM4OGM1ZTlkMGQ2NjQ4OGQxOTY4MDg0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9tYWMvV2ViVmlldy9XZWJTY3JpcHREZWJ1Z2dlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L21hYy9XZWJWaWV3L1dlYlNjcmlwdERlYnVnZ2VyLm1tCkBAIC04MCw3ICs4MCw3IEBAIHN0YXRp
YyBXZWJGcmFtZSAqdG9XZWJGcmFtZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogCiBX
ZWJTY3JpcHREZWJ1Z2dlcjo6V2ViU2NyaXB0RGVidWdnZXIoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCkKICAgICA6IG1fY2FsbGluZ0RlbGVnYXRlKGZhbHNlKQotICAgICwgbV9nbG9iYWxP
YmplY3QoZ2xvYmFsT2JqZWN0KQorICAgICwgbV9nbG9iYWxPYmplY3QoZ2xvYmFsT2JqZWN0LT5n
bG9iYWxEYXRhKCksIGdsb2JhbE9iamVjdCkKIHsKICAgICBhdHRhY2goZ2xvYmFsT2JqZWN0KTsK
ICAgICBpbml0R2xvYmFsQ2FsbEZyYW1lKGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwppbmRleCA1NzA5NTU5NGViZGVjYjNmOGVmMWQ0YjU4N2RjMTJlYTcyZTBhMTJjLi5hZWU4
M2Y2YTE4NjI3MTVhODcyMmI0ZWM1Y2ZlZjk0NTUyNGFjYzhmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMzAgQEAKKzIwMTEtMDItMTQgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZWZhY3RvciBo
YW5kbGVzIGFuZCB3ZWFrIHBvaW50ZXJzIHRvIGJlY29tZSBuaWNlciBhbmQgbW9yZSBhdXRvbWF0
aWMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU0NDE1
CisKKyAgICAgICAgVXBkYXRlIGNvZGUgdG8gbmV3IEdsb2JhbDw+IEFQSSwgYW5kIHJlZmFjdG9y
IHRvIGdldCBnbG9iYWwgZGF0YSB0bworICAgICAgICBuZWNlc3NhcnkgcG9pbnRzLgorCisgICAg
ICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05QSlNPYmplY3QuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpOUEpTT2JqZWN0OjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpOUEpTT2Jq
ZWN0OjpOUEpTT2JqZWN0KToKKyAgICAgICAgKFdlYktpdDo6TlBKU09iamVjdDo6aW5pdGlhbGl6
ZSk6CisgICAgICAgIChXZWJLaXQ6Ok5QSlNPYmplY3Q6Omludm9rZURlZmF1bHQpOgorICAgICAg
ICAoV2ViS2l0OjpOUEpTT2JqZWN0Ojpjb25zdHJ1Y3QpOgorICAgICAgICAoV2ViS2l0OjpOUEpT
T2JqZWN0OjppbnZva2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9O
UEpTT2JqZWN0Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05QUnVu
dGltZU9iamVjdE1hcC5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5QUnVudGltZU9iamVjdE1hcDo6
Z2V0T3JDcmVhdGVOUE9iamVjdCk6CisgICAgICAgIChXZWJLaXQ6Ok5QUnVudGltZU9iamVjdE1h
cDo6Y29udmVydEpTVmFsdWVUb05QVmFyaWFudCk6CisgICAgICAgIChXZWJLaXQ6Ok5QUnVudGlt
ZU9iamVjdE1hcDo6ZXZhbHVhdGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRz
Y2FwZS9OUFJ1bnRpbWVPYmplY3RNYXAuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMv
UGx1Z2luVmlldy5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6OndpbmRvd1Njcmlw
dE5QT2JqZWN0KToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luVmlldzo6cGx1Z2luRWxlbWVudE5Q
T2JqZWN0KToKKwogMjAxMS0wMi0xNCAgQWRhbSBSb2JlbiAgPGFyb2JlbkBhcHBsZS5jb20+CiAK
ICAgICAgICAgUmVhY3QgdG8gYWNjZWxlcmF0ZWQgY29tcG9zaXRpbmcgY2hhbmdlcyBhbmQgYWxs
b2NhdGlvbiBmYWlsdXJlcyBpbiBEcmF3aW5nQXJlYUltcGw6OmRpc3BsYXkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OUEpTT2JqZWN0LmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OUEpTT2JqZWN0
LmNwcAppbmRleCAzNDViZDU0YTlmM2I5ODM2NzdkM2ExZTM0MWZiNDc1YTNkZTJiOGQ5Li5lODZh
OWJjMjE5NDdkYjQ2ZWYxNGZmZWE4NmRmMWZlYjI0MTE4NThlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTlBKU09iamVjdC5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05QSlNPYmplY3QuY3Bw
CkBAIC00MiwxOSArNDIsMjAgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFj
ZSBXZWJLaXQgewogCi1OUEpTT2JqZWN0KiBOUEpTT2JqZWN0OjpjcmVhdGUoTlBSdW50aW1lT2Jq
ZWN0TWFwKiBvYmplY3RNYXAsIEpTT2JqZWN0KiBqc09iamVjdCkKK05QSlNPYmplY3QqIE5QSlNP
YmplY3Q6OmNyZWF0ZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIE5QUnVudGltZU9iamVjdE1h
cCogb2JqZWN0TWFwLCBKU09iamVjdCoganNPYmplY3QpCiB7CiAgICAgLy8gV2Ugc2hvdWxkIG5l
dmVyIGhhdmUgYSBKU05QT2JqZWN0IGluc2lkZSBhbiBOUEpTT2JqZWN0LgogICAgIEFTU0VSVCgh
anNPYmplY3QtPmluaGVyaXRzKCZKU05QT2JqZWN0OjpzX2luZm8pKTsKIAogICAgIE5QSlNPYmpl
Y3QqIG5wSlNPYmplY3QgPSB0b05QSlNPYmplY3QoY3JlYXRlTlBPYmplY3QoMCwgbnBDbGFzcygp
KSk7Ci0gICAgbnBKU09iamVjdC0+aW5pdGlhbGl6ZShvYmplY3RNYXAsIGpzT2JqZWN0KTsKKyAg
ICBucEpTT2JqZWN0LT5pbml0aWFsaXplKGdsb2JhbERhdGEsIG9iamVjdE1hcCwganNPYmplY3Qp
OwogCiAgICAgcmV0dXJuIG5wSlNPYmplY3Q7CiB9CiAKIE5QSlNPYmplY3Q6Ok5QSlNPYmplY3Qo
KQogICAgIDogbV9vYmplY3RNYXAoMCkKKyAgICAsIG1fanNPYmplY3QoR2xvYmFsPEpTT2JqZWN0
Pjo6RW1wdHlWYWx1ZSkKIHsKIH0KIApAQCAtNjgsMTMgKzY5LDEzIEBAIGJvb2wgTlBKU09iamVj
dDo6aXNOUEpTT2JqZWN0KE5QT2JqZWN0KiBucE9iamVjdCkKICAgICByZXR1cm4gbnBPYmplY3Qt
Pl9jbGFzcyA9PSBucENsYXNzKCk7CiB9CiAKLXZvaWQgTlBKU09iamVjdDo6aW5pdGlhbGl6ZShO
UFJ1bnRpbWVPYmplY3RNYXAqIG9iamVjdE1hcCwgSlNPYmplY3QqIGpzT2JqZWN0KQordm9pZCBO
UEpTT2JqZWN0Ojppbml0aWFsaXplKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgTlBSdW50aW1l
T2JqZWN0TWFwKiBvYmplY3RNYXAsIEpTT2JqZWN0KiBqc09iamVjdCkKIHsKICAgICBBU1NFUlQo
IW1fb2JqZWN0TWFwKTsKICAgICBBU1NFUlQoIW1fanNPYmplY3QpOwogCiAgICAgbV9vYmplY3RN
YXAgPSBvYmplY3RNYXA7Ci0gICAgbV9qc09iamVjdCA9IGpzT2JqZWN0OworICAgIG1fanNPYmpl
Y3Quc2V0KGdsb2JhbERhdGEsIGpzT2JqZWN0KTsKIH0KIAogc3RhdGljIElkZW50aWZpZXIgaWRl
bnRpZmllckZyb21JZGVudGlmaWVyUmVwKEV4ZWNTdGF0ZSogZXhlYywgSWRlbnRpZmllclJlcCog
aWRlbnRpZmllclJlcCkKQEAgLTEzMiw3ICsxMzMsNyBAQCBib29sIE5QSlNPYmplY3Q6Omludm9r
ZURlZmF1bHQoY29uc3QgTlBWYXJpYW50KiBhcmd1bWVudHMsIHVpbnQzMl90IGFyZ3VtZW50Q291
bgogCiAgICAgSlNMb2NrIGxvY2soU2lsZW5jZUFzc2VydGlvbnNPbmx5KTsKIAotICAgIEpTVmFs
dWUgZnVuY3Rpb24gPSBtX2pzT2JqZWN0OworICAgIEpTVmFsdWUgZnVuY3Rpb24gPSBtX2pzT2Jq
ZWN0LmdldCgpOwogICAgIHJldHVybiBpbnZva2UoZXhlYywgbV9vYmplY3RNYXAtPmdsb2JhbE9i
amVjdCgpLCBmdW5jdGlvbiwgYXJndW1lbnRzLCBhcmd1bWVudENvdW50LCByZXN1bHQpOwogfQog
CkBAIC0yNTksNyArMjYwLDcgQEAgYm9vbCBOUEpTT2JqZWN0Ojpjb25zdHJ1Y3QoY29uc3QgTlBW
YXJpYW50KiBhcmd1bWVudHMsIHVpbnQzMl90IGFyZ3VtZW50Q291bnQsIE4KICAgICBKU0xvY2sg
bG9jayhTaWxlbmNlQXNzZXJ0aW9uc09ubHkpOwogCiAgICAgQ29uc3RydWN0RGF0YSBjb25zdHJ1
Y3REYXRhOwotICAgIENvbnN0cnVjdFR5cGUgY29uc3RydWN0VHlwZSA9IGdldENvbnN0cnVjdERh
dGEobV9qc09iamVjdCwgY29uc3RydWN0RGF0YSk7CisgICAgQ29uc3RydWN0VHlwZSBjb25zdHJ1
Y3RUeXBlID0gZ2V0Q29uc3RydWN0RGF0YShtX2pzT2JqZWN0LmdldCgpLCBjb25zdHJ1Y3REYXRh
KTsKICAgICBpZiAoY29uc3RydWN0VHlwZSA9PSBDb25zdHJ1Y3RUeXBlTm9uZSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCkBAIC0yNjksNyArMjcwLDcgQEAgYm9vbCBOUEpTT2JqZWN0Ojpjb25z
dHJ1Y3QoY29uc3QgTlBWYXJpYW50KiBhcmd1bWVudHMsIHVpbnQzMl90IGFyZ3VtZW50Q291bnQs
IE4KICAgICAgICAgYXJndW1lbnRMaXN0LmFwcGVuZChtX29iamVjdE1hcC0+Y29udmVydE5QVmFy
aWFudFRvSlNWYWx1ZShleGVjLCBtX29iamVjdE1hcC0+Z2xvYmFsT2JqZWN0KCksIGFyZ3VtZW50
c1tpXSkpOwogCiAgICAgZXhlYy0+Z2xvYmFsRGF0YSgpLnRpbWVvdXRDaGVja2VyLnN0YXJ0KCk7
Ci0gICAgSlNWYWx1ZSB2YWx1ZSA9IEpTQzo6Y29uc3RydWN0KGV4ZWMsIG1fanNPYmplY3QsIGNv
bnN0cnVjdFR5cGUsIGNvbnN0cnVjdERhdGEsIGFyZ3VtZW50TGlzdCk7CisgICAgSlNWYWx1ZSB2
YWx1ZSA9IEpTQzo6Y29uc3RydWN0KGV4ZWMsIG1fanNPYmplY3QuZ2V0KCksIGNvbnN0cnVjdFR5
cGUsIGNvbnN0cnVjdERhdGEsIGFyZ3VtZW50TGlzdCk7CiAgICAgZXhlYy0+Z2xvYmFsRGF0YSgp
LnRpbWVvdXRDaGVja2VyLnN0b3AoKTsKICAgICAKICAgICAvLyBDb252ZXJ0IGFuZCByZXR1cm4g
dGhlIG5ldyBvYmplY3QuCkBAIC0yOTIsNyArMjkzLDcgQEAgYm9vbCBOUEpTT2JqZWN0OjppbnZv
a2UoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVl
IGYKICAgICAgICAgYXJndW1lbnRMaXN0LmFwcGVuZChtX29iamVjdE1hcC0+Y29udmVydE5QVmFy
aWFudFRvSlNWYWx1ZShleGVjLCBnbG9iYWxPYmplY3QsIGFyZ3VtZW50c1tpXSkpOwogCiAgICAg
ZXhlYy0+Z2xvYmFsRGF0YSgpLnRpbWVvdXRDaGVja2VyLnN0YXJ0KCk7Ci0gICAgSlNWYWx1ZSB2
YWx1ZSA9IEpTQzo6Y2FsbChleGVjLCBmdW5jdGlvbiwgY2FsbFR5cGUsIGNhbGxEYXRhLCBtX2pz
T2JqZWN0LCBhcmd1bWVudExpc3QpOworICAgIEpTVmFsdWUgdmFsdWUgPSBKU0M6OmNhbGwoZXhl
YywgZnVuY3Rpb24sIGNhbGxUeXBlLCBjYWxsRGF0YSwgbV9qc09iamVjdC5nZXQoKSwgYXJndW1l
bnRMaXN0KTsKICAgICBleGVjLT5nbG9iYWxEYXRhKCkudGltZW91dENoZWNrZXIuc3RvcCgpOwog
CiAgICAgLy8gQ29udmVydCBhbmQgcmV0dXJuIHRoZSByZXN1bHQgb2YgdGhlIGZ1bmN0aW9uIGNh
bGwuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2Nh
cGUvTlBKU09iamVjdC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNj
YXBlL05QSlNPYmplY3QuaAppbmRleCAzNTE4MjIxMGEzYTNlOTE5Mjk0MmI5YWYyMGVmMmI2ZjUy
OGM3ZDEyLi5hZTkwYWE1MDM0YmVhZjRjZDU2NGRmODM3OTNkMzI2NTFlYzM0MjY4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTlBKU09iamVj
dC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OUEpT
T2JqZWN0LmgKQEAgLTI2LDEzICsyNiwxNiBAQAogI2lmbmRlZiBOUEpTT2JqZWN0X2gKICNkZWZp
bmUgTlBKU09iamVjdF9oCiAKLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Qcm90ZWN0Lmg+Cisj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvR2xvYmFsLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9ucHJ1
bnRpbWVfaW50ZXJuYWwuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KIAogbmFtZXNw
YWNlIEpTQyB7Ci0gICAgY2xhc3MgSlNHbG9iYWxPYmplY3Q7Ci0gICAgY2xhc3MgSlNPYmplY3Q7
CisKK2NsYXNzIEpTR2xvYmFsRGF0YTsKK2NsYXNzIEpTR2xvYmFsT2JqZWN0OworY2xhc3MgSlNP
YmplY3Q7CisKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC00Myw3ICs0Niw3IEBAIGNsYXNz
IE5QUnVudGltZU9iamVjdE1hcDsKIGNsYXNzIE5QSlNPYmplY3QgOiBwdWJsaWMgTlBPYmplY3Qg
ewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKE5QSlNPYmplY3QpOwogcHVibGljOgotICAgIHN0
YXRpYyBOUEpTT2JqZWN0KiBjcmVhdGUoTlBSdW50aW1lT2JqZWN0TWFwKiBvYmplY3RNYXAsIEpT
Qzo6SlNPYmplY3QqIGpzT2JqZWN0KTsKKyAgICBzdGF0aWMgTlBKU09iamVjdCogY3JlYXRlKEpT
Qzo6SlNHbG9iYWxEYXRhJiwgTlBSdW50aW1lT2JqZWN0TWFwKiBvYmplY3RNYXAsIEpTQzo6SlNP
YmplY3QqIGpzT2JqZWN0KTsKIAogICAgIEpTQzo6SlNPYmplY3QqIGpzT2JqZWN0KCkgY29uc3Qg
eyByZXR1cm4gbV9qc09iamVjdC5nZXQoKTsgfQogCkBAIC01OSw3ICs2Miw3IEBAIHByaXZhdGU6
CiAgICAgTlBKU09iamVjdCgpOwogICAgIH5OUEpTT2JqZWN0KCk7CiAKLSAgICB2b2lkIGluaXRp
YWxpemUoTlBSdW50aW1lT2JqZWN0TWFwKiwgSlNDOjpKU09iamVjdCoganNPYmplY3QpOworICAg
IHZvaWQgaW5pdGlhbGl6ZShKU0M6OkpTR2xvYmFsRGF0YSYsIE5QUnVudGltZU9iamVjdE1hcCos
IEpTQzo6SlNPYmplY3QqIGpzT2JqZWN0KTsKIAogICAgIGJvb2wgaGFzTWV0aG9kKE5QSWRlbnRp
ZmllciBtZXRob2ROYW1lKTsKICAgICBib29sIGludm9rZShOUElkZW50aWZpZXIgbWV0aG9kTmFt
ZSwgY29uc3QgTlBWYXJpYW50KiBhcmd1bWVudHMsIHVpbnQzMl90IGFyZ3VtZW50Q291bnQsIE5Q
VmFyaWFudCogcmVzdWx0KTsKQEAgLTg3LDcgKzkwLDcgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMg
Ym9vbCBOUF9Db25zdHJ1Y3QoTlBPYmplY3QqLCBjb25zdCBOUFZhcmlhbnQqIGFyZ3VtZW50cywg
dWludDMyX3QgYXJndW1lbnRDb3VudCwgTlBWYXJpYW50KiByZXN1bHQpOwogICAgIAogICAgIE5Q
UnVudGltZU9iamVjdE1hcCogbV9vYmplY3RNYXA7Ci0gICAgSlNDOjpQcm90ZWN0ZWRQdHI8SlND
OjpKU09iamVjdD4gbV9qc09iamVjdDsKKyAgICBKU0M6Okdsb2JhbDxKU0M6OkpTT2JqZWN0PiBt
X2pzT2JqZWN0OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTlBSdW50aW1lT2JqZWN0TWFw
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OUFJ1bnRp
bWVPYmplY3RNYXAuY3BwCmluZGV4IDBhOTZhZDcyNTAxMDk4ZDMyNmJjNGE1YmVkN2Q5NzU1MjFl
ODc4YjkuLmZjNTcyZjRjZDRhNGY5YjY5OWY3MjdmNzAyYzcwYTNlYWJjZTQ1N2YgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OUFJ1bnRpbWVP
YmplY3RNYXAuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRz
Y2FwZS9OUFJ1bnRpbWVPYmplY3RNYXAuY3BwCkBAIC01OCw3ICs1OCw3IEBAIE5QUnVudGltZU9i
amVjdE1hcDo6UGx1Z2luUHJvdGVjdG9yOjp+UGx1Z2luUHJvdGVjdG9yKCkKIHsKIH0KIAotTlBP
YmplY3QqIE5QUnVudGltZU9iamVjdE1hcDo6Z2V0T3JDcmVhdGVOUE9iamVjdChKU09iamVjdCog
anNPYmplY3QpCitOUE9iamVjdCogTlBSdW50aW1lT2JqZWN0TWFwOjpnZXRPckNyZWF0ZU5QT2Jq
ZWN0KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNPYmplY3QqIGpzT2JqZWN0KQogewogICAg
IC8vIElmIHRoaXMgaXMgYSBKU05QT2JqZWN0LCB3ZSBjYW4ganVzdCBnZXQgaXRzIHVuZGVybHlp
bmcgTlBPYmplY3QuCiAgICAgaWYgKGpzT2JqZWN0LT5jbGFzc0luZm8oKSA9PSAmSlNOUE9iamVj
dDo6c19pbmZvKSB7CkBAIC03NSw3ICs3NSw3IEBAIE5QT2JqZWN0KiBOUFJ1bnRpbWVPYmplY3RN
YXA6OmdldE9yQ3JlYXRlTlBPYmplY3QoSlNPYmplY3QqIGpzT2JqZWN0KQogICAgICAgICByZXR1
cm4gbnBKU09iamVjdDsKICAgICB9CiAKLSAgICBOUEpTT2JqZWN0KiBucEpTT2JqZWN0ID0gTlBK
U09iamVjdDo6Y3JlYXRlKHRoaXMsIGpzT2JqZWN0KTsKKyAgICBOUEpTT2JqZWN0KiBucEpTT2Jq
ZWN0ID0gTlBKU09iamVjdDo6Y3JlYXRlKGdsb2JhbERhdGEsIHRoaXMsIGpzT2JqZWN0KTsKICAg
ICBtX25wSlNPYmplY3RzLnNldChqc09iamVjdCwgbnBKU09iamVjdCk7CiAKICAgICByZXR1cm4g
bnBKU09iamVjdDsKQEAgLTE3Miw3ICsxNzIsNyBAQCB2b2lkIE5QUnVudGltZU9iamVjdE1hcDo6
Y29udmVydEpTVmFsdWVUb05QVmFyaWFudChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdQog
ICAgIH0KIAogICAgIGlmICh2YWx1ZS5pc09iamVjdCgpKSB7Ci0gICAgICAgIE5QT2JqZWN0KiBu
cE9iamVjdCA9IGdldE9yQ3JlYXRlTlBPYmplY3QoYXNPYmplY3QodmFsdWUpKTsKKyAgICAgICAg
TlBPYmplY3QqIG5wT2JqZWN0ID0gZ2V0T3JDcmVhdGVOUE9iamVjdChleGVjLT5nbG9iYWxEYXRh
KCksIGFzT2JqZWN0KHZhbHVlKSk7CiAgICAgICAgIE9CSkVDVF9UT19OUFZBUklBTlQobnBPYmpl
Y3QsIHZhcmlhbnQpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMTgyLDE0ICsxODIsMTQg
QEAgdm9pZCBOUFJ1bnRpbWVPYmplY3RNYXA6OmNvbnZlcnRKU1ZhbHVlVG9OUFZhcmlhbnQoRXhl
Y1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHUKIAogYm9vbCBOUFJ1bnRpbWVPYmplY3RNYXA6OmV2
YWx1YXRlKE5QT2JqZWN0KiBucE9iamVjdCwgY29uc3QgU3RyaW5nJnNjcmlwdFN0cmluZywgTlBW
YXJpYW50KiByZXN1bHQpCiB7Ci0gICAgUHJvdGVjdGVkUHRyPEpTR2xvYmFsT2JqZWN0PiBnbG9i
YWxPYmplY3QgPSB0aGlzLT5nbG9iYWxPYmplY3QoKTsKKyAgICBHbG9iYWw8SlNHbG9iYWxPYmpl
Y3Q+IGdsb2JhbE9iamVjdCh0aGlzLT5nbG9iYWxPYmplY3QoKS0+Z2xvYmFsRGF0YSgpLCB0aGlz
LT5nbG9iYWxPYmplY3QoKSk7CiAgICAgaWYgKCFnbG9iYWxPYmplY3QpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAogICAgIEV4ZWNTdGF0ZSogZXhlYyA9IGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhl
YygpOwogICAgIAogICAgIEpTTG9jayBsb2NrKFNpbGVuY2VBc3NlcnRpb25zT25seSk7Ci0gICAg
SlNWYWx1ZSB0aGlzVmFsdWUgPSBnZXRPckNyZWF0ZUpTT2JqZWN0KGdsb2JhbE9iamVjdCwgbnBP
YmplY3QpOworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZ2V0T3JDcmVhdGVKU09iamVjdChnbG9i
YWxPYmplY3QuZ2V0KCksIG5wT2JqZWN0KTsKIAogICAgIGdsb2JhbE9iamVjdC0+Z2xvYmFsRGF0
YSgpLnRpbWVvdXRDaGVja2VyLnN0YXJ0KCk7CiAgICAgQ29tcGxldGlvbiBjb21wbGV0aW9uID0g
SlNDOjpldmFsdWF0ZShleGVjLCBnbG9iYWxPYmplY3QtPmdsb2JhbFNjb3BlQ2hhaW4oKSwgbWFr
ZVNvdXJjZShVU3RyaW5nKHNjcmlwdFN0cmluZy5pbXBsKCkpKSwgdGhpc1ZhbHVlKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OUFJ1bnRp
bWVPYmplY3RNYXAuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2Fw
ZS9OUFJ1bnRpbWVPYmplY3RNYXAuaAppbmRleCBhMTFjMzU0NGUzY2I4YTA1M2RhYmZjZWRmNGY2
M2NiM2IxYmIzZmU5Li5kMTNlMWZlZjhjZDkwYTU1ODY1MGRhNThmZTIwZjAzMzI1NzJkMDgxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTlBS
dW50aW1lT2JqZWN0TWFwLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5z
L05ldHNjYXBlL05QUnVudGltZU9iamVjdE1hcC5oCkBAIC0zNCw2ICszNCw3IEBAIHR5cGVkZWYg
c3RydWN0IF9OUFZhcmlhbnQgTlBWYXJpYW50OwogCiBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFz
cyBFeGVjU3RhdGU7CisgICAgY2xhc3MgSlNHbG9iYWxEYXRhOwogICAgIGNsYXNzIEpTR2xvYmFs
T2JqZWN0OwogICAgIGNsYXNzIEpTT2JqZWN0OwogICAgIGNsYXNzIEpTVmFsdWU7CkBAIC02MSw3
ICs2Miw3IEBAIHB1YmxpYzoKIAogICAgIC8vIFJldHVybnMgYW4gTlBPYmplY3QgdGhhdCB3cmFw
cyB0aGUgZ2l2ZW4gSlNPYmplY3Qgb2JqZWN0LiBJZiB0aGVyZSBpcyBhbHJlYWR5IGFuIE5QT2Jq
ZWN0IHRoYXQgd3JhcHMgdGhpcyBKU09iamVjdCwgaXQgd2lsbAogICAgIC8vIHJldGFpbiBpdCBh
bmQgcmV0dXJuIGl0LgotICAgIE5QT2JqZWN0KiBnZXRPckNyZWF0ZU5QT2JqZWN0KEpTQzo6SlNP
YmplY3QqKTsKKyAgICBOUE9iamVjdCogZ2V0T3JDcmVhdGVOUE9iamVjdChKU0M6OkpTR2xvYmFs
RGF0YSYsIEpTQzo6SlNPYmplY3QqKTsKICAgICB2b2lkIG5wSlNPYmplY3REZXN0cm95ZWQoTlBK
U09iamVjdCopOwogCiAgICAgLy8gUmV0dXJucyBhIEpTT2JqZWN0IG9iamVjdCB0aGF0IHdyYXBz
IHRoZSBnaXZlbiBOUE9iamVjdC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1
Z2lucy9QbHVnaW5WaWV3LmNwcAppbmRleCA4YWM3ZDNhYjQ2M2VlNWM3ZWIzNjgzYjg0NDFmMGJk
MWE5ZDQ4YjgzLi41OTAxMzg4MzE1ODYwNzlhOWFlOTIzNDE2NzdiNDIyMTdhMDM2YjU3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCkBA
IC04ODMsNyArODgzLDcgQEAgTlBPYmplY3QqIFBsdWdpblZpZXc6OndpbmRvd1NjcmlwdE5QT2Jq
ZWN0KCkKICAgICAvLyBGSVhNRTogSGFuZGxlIEphdmFTY3JpcHQgYmVpbmcgZGlzYWJsZWQuCiAg
ICAgQVNTRVJUKGZyYW1lKCktPnNjcmlwdCgpLT5jYW5FeGVjdXRlU2NyaXB0cyhOb3RBYm91dFRv
RXhlY3V0ZVNjcmlwdCkpOwogCi0gICAgcmV0dXJuIG1fbnBSdW50aW1lT2JqZWN0TWFwLmdldE9y
Q3JlYXRlTlBPYmplY3QoZnJhbWUoKS0+c2NyaXB0KCktPndpbmRvd1NoZWxsKHBsdWdpbldvcmxk
KCkpLT53aW5kb3coKSk7CisgICAgcmV0dXJuIG1fbnBSdW50aW1lT2JqZWN0TWFwLmdldE9yQ3Jl
YXRlTlBPYmplY3QoKnBsdWdpbldvcmxkKCktPmdsb2JhbERhdGEoKSwgZnJhbWUoKS0+c2NyaXB0
KCktPndpbmRvd1NoZWxsKHBsdWdpbldvcmxkKCkpLT53aW5kb3coKSk7CiB9CiAKIE5QT2JqZWN0
KiBQbHVnaW5WaWV3OjpwbHVnaW5FbGVtZW50TlBPYmplY3QoKQpAQCAtODk1LDcgKzg5NSw3IEBA
IE5QT2JqZWN0KiBQbHVnaW5WaWV3OjpwbHVnaW5FbGVtZW50TlBPYmplY3QoKQogICAgIEpTT2Jq
ZWN0KiBvYmplY3QgPSBmcmFtZSgpLT5zY3JpcHQoKS0+anNPYmplY3RGb3JQbHVnaW5FbGVtZW50
KG1fcGx1Z2luRWxlbWVudC5nZXQoKSk7CiAgICAgQVNTRVJUKG9iamVjdCk7CiAKLSAgICByZXR1
cm4gbV9ucFJ1bnRpbWVPYmplY3RNYXAuZ2V0T3JDcmVhdGVOUE9iamVjdChvYmplY3QpOworICAg
IHJldHVybiBtX25wUnVudGltZU9iamVjdE1hcC5nZXRPckNyZWF0ZU5QT2JqZWN0KCpwbHVnaW5X
b3JsZCgpLT5nbG9iYWxEYXRhKCksIG9iamVjdCk7CiB9CiAKIGJvb2wgUGx1Z2luVmlldzo6ZXZh
bHVhdGUoTlBPYmplY3QqIG5wT2JqZWN0LCBjb25zdCBTdHJpbmcmIHNjcmlwdFN0cmluZywgTlBW
YXJpYW50KiByZXN1bHQsIGJvb2wgYWxsb3dQb3B1cHMpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>82429</attachid>
            <date>2011-02-15 01:47:44 -0800</date>
            <delta_ts>2011-02-15 13:22:53 -0800</delta_ts>
            <desc>Qt buildfix</desc>
            <filename>1.patch</filename>
            <type>text/plain</type>
            <size>5511</size>
            <attacher name="Csaba Osztrogonác">ossy</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBiMzM3YzgzLi43MTcwZmRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkg
QEAKKzIwMTEtMDItMTUgIENzYWJhIE9zenRyb2dvbsOhYyAgPG9zc3lAd2Via2l0Lm9yZz4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZWZhY3RvciBo
YW5kbGVzIGFuZCB3ZWFrIHBvaW50ZXJzIHRvIGJlY29tZSBuaWNlciBhbmQgbW9yZSBhdXRvbWF0
aWMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU0NDE1
CisKKyAgICAgICAgUXQgYnVpbGRmaXguCisKKyAgICAgICAgKiBicmlkZ2UvcXQvcXRfcnVudGlt
ZS5jcHA6CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpRdFJ1bnRpbWVDb25uZWN0aW9uTWV0aG9k
OjpjYWxsKToKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6OlF0Q29ubmVjdGlvbk9iamVjdDo6UXRD
b25uZWN0aW9uT2JqZWN0KToKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6OlF0Q29ubmVjdGlvbk9i
amVjdDo6ZXhlY3V0ZSk6CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpRdENvbm5lY3Rpb25PYmpl
Y3Q6Om1hdGNoKToKKyAgICAgICAgKiBicmlkZ2UvcXQvcXRfcnVudGltZS5oOgorCiAyMDExLTAy
LTE1ICBPbGl2ZXIgSHVudCAgPG9saXZlckBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcXQv
cXRfcnVudGltZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcXQvcXRfcnVudGltZS5jcHAK
aW5kZXggNTUwN2ZjOS4uYjhmYjdjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdl
L3F0L3F0X3J1bnRpbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9xdC9xdF9ydW50
aW1lLmNwcApAQCAtMTYyOSw3ICsxNjI5LDcgQEAgRW5jb2RlZEpTVmFsdWUgUXRSdW50aW1lQ29u
bmVjdGlvbk1ldGhvZDo6Y2FsbChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgICAgICAgICAgLy8g
IHJlY2VpdmVyIGZ1bmN0aW9uIFtmcm9tIGFyZ3VtZW50c10KICAgICAgICAgICAgICAgICAvLyAg
cmVjZWl2ZXIgdGhpcyBvYmplY3QgW2Zyb20gYXJndW1lbnRzXQogCi0gICAgICAgICAgICAgICAg
UXRDb25uZWN0aW9uT2JqZWN0KiBjb25uID0gbmV3IFF0Q29ubmVjdGlvbk9iamVjdChkLT5tX2lu
c3RhbmNlLCBzaWduYWxJbmRleCwgdGhpc09iamVjdCwgZnVuY09iamVjdCk7CisgICAgICAgICAg
ICAgICAgUXRDb25uZWN0aW9uT2JqZWN0KiBjb25uID0gbmV3IFF0Q29ubmVjdGlvbk9iamVjdChl
eGVjLT5nbG9iYWxEYXRhKCksIGQtPm1faW5zdGFuY2UsIHNpZ25hbEluZGV4LCB0aGlzT2JqZWN0
LCBmdW5jT2JqZWN0KTsKICAgICAgICAgICAgICAgICBib29sIG9rID0gUU1ldGFPYmplY3Q6OmNv
bm5lY3Qoc2VuZGVyLCBzaWduYWxJbmRleCwgY29ubiwgY29ubi0+bWV0YU9iamVjdCgpLT5tZXRo
b2RPZmZzZXQoKSk7CiAgICAgICAgICAgICAgICAgaWYgKCFvaykgewogICAgICAgICAgICAgICAg
ICAgICBkZWxldGUgY29ubjsKQEAgLTE3MjMsMTIgKzE3MjMsMTIgQEAgSlNWYWx1ZSBRdFJ1bnRp
bWVDb25uZWN0aW9uTWV0aG9kOjpsZW5ndGhHZXR0ZXIoRXhlY1N0YXRlKiwgSlNWYWx1ZSwgY29u
c3QgSWRlbnQKIAogLy8gPT09PT09PT09PT09PT09CiAKLVF0Q29ubmVjdGlvbk9iamVjdDo6UXRD
b25uZWN0aW9uT2JqZWN0KFBhc3NSZWZQdHI8UXRJbnN0YW5jZT4gaW5zdGFuY2UsIGludCBzaWdu
YWxJbmRleCwgSlNPYmplY3QqIHRoaXNPYmplY3QsIEpTT2JqZWN0KiBmdW5jT2JqZWN0KQorUXRD
b25uZWN0aW9uT2JqZWN0OjpRdENvbm5lY3Rpb25PYmplY3QoSlNHbG9iYWxEYXRhJiBnbG9iYWxE
YXRhLCBQYXNzUmVmUHRyPFF0SW5zdGFuY2U+IGluc3RhbmNlLCBpbnQgc2lnbmFsSW5kZXgsIEpT
T2JqZWN0KiB0aGlzT2JqZWN0LCBKU09iamVjdCogZnVuY09iamVjdCkKICAgICA6IG1faW5zdGFu
Y2UoaW5zdGFuY2UpCiAgICAgLCBtX3NpZ25hbEluZGV4KHNpZ25hbEluZGV4KQogICAgICwgbV9v
cmlnaW5hbE9iamVjdChtX2luc3RhbmNlLT5nZXRPYmplY3QoKSkKLSAgICAsIG1fdGhpc09iamVj
dCh0aGlzT2JqZWN0KQotICAgICwgbV9mdW5jT2JqZWN0KGZ1bmNPYmplY3QpCisgICAgLCBtX3Ro
aXNPYmplY3QoZ2xvYmFsRGF0YSwgdGhpc09iamVjdCkKKyAgICAsIG1fZnVuY09iamVjdChnbG9i
YWxEYXRhLCBmdW5jT2JqZWN0KQogewogICAgIHNldFBhcmVudChtX29yaWdpbmFsT2JqZWN0KTsK
ICAgICBBU1NFUlQoSlNMb2NrOjpjdXJyZW50VGhyZWFkSXNIb2xkaW5nTG9jaygpKTsgLy8gc28g
b3VyIFByb3RlY3RlZFB0cnMgYXJlIHNhZmUKQEAgLTE4NDMsNyArMTg0Myw3IEBAIHZvaWQgUXRD
b25uZWN0aW9uT2JqZWN0OjpleGVjdXRlKHZvaWQgKiphcmd2KQogCiAgICAgICAgICAgICAgICAg
ICAgIENhbGxEYXRhIGNhbGxEYXRhOwogICAgICAgICAgICAgICAgICAgICBDYWxsVHlwZSBjYWxs
VHlwZSA9IG1fZnVuY09iamVjdC0+Z2V0Q2FsbERhdGEoY2FsbERhdGEpOwotICAgICAgICAgICAg
ICAgICAgICBjYWxsKGV4ZWMsIG1fZnVuY09iamVjdCwgY2FsbFR5cGUsIGNhbGxEYXRhLCBtX3Ro
aXNPYmplY3QsIGwpOworICAgICAgICAgICAgICAgICAgICBjYWxsKGV4ZWMsIG1fZnVuY09iamVj
dC5nZXQoKSwgY2FsbFR5cGUsIGNhbGxEYXRhLCBtX3RoaXNPYmplY3QuZ2V0KCksIGwpOwogCiAg
ICAgICAgICAgICAgICAgICAgIGlmIChmaW1wKQogICAgICAgICAgICAgICAgICAgICAgICAgZmlt
cC0+c2V0U2NvcGUob2xkc2MpOwpAQCAtMTg1OSw3ICsxODU5LDcgQEAgdm9pZCBRdENvbm5lY3Rp
b25PYmplY3Q6OmV4ZWN1dGUodm9pZCAqKmFyZ3YpCiBib29sIFF0Q29ubmVjdGlvbk9iamVjdDo6
bWF0Y2goUU9iamVjdCogc2VuZGVyLCBpbnQgc2lnbmFsSW5kZXgsIEpTT2JqZWN0KiB0aGlzT2Jq
ZWN0LCBKU09iamVjdCAqZnVuY09iamVjdCkKIHsKICAgICBpZiAobV9vcmlnaW5hbE9iamVjdCA9
PSBzZW5kZXIgJiYgbV9zaWduYWxJbmRleCA9PSBzaWduYWxJbmRleAotICAgICAgICAmJiB0aGlz
T2JqZWN0ID09IChKU09iamVjdCopbV90aGlzT2JqZWN0ICYmIGZ1bmNPYmplY3QgPT0gKEpTT2Jq
ZWN0KiltX2Z1bmNPYmplY3QpCisgICAgICAgICYmIHRoaXNPYmplY3QgPT0gKEpTT2JqZWN0Kilt
X3RoaXNPYmplY3QuZ2V0KCkgJiYgZnVuY09iamVjdCA9PSAoSlNPYmplY3QqKW1fZnVuY09iamVj
dC5nZXQoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgcmV0dXJuIGZhbHNlOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3F0L3F0X3J1bnRpbWUuaCBiL1NvdXJjZS9X
ZWJDb3JlL2JyaWRnZS9xdC9xdF9ydW50aW1lLmgKaW5kZXggNTNkOWEzMS4uMTdmZDY4NCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3F0L3F0X3J1bnRpbWUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9icmlkZ2UvcXQvcXRfcnVudGltZS5oCkBAIC0yMTIsNyArMjEyLDcgQEAgcHJp
dmF0ZToKIGNsYXNzIFF0Q29ubmVjdGlvbk9iamVjdDogcHVibGljIFFPYmplY3QKIHsKIHB1Ymxp
YzoKLSAgICBRdENvbm5lY3Rpb25PYmplY3QoUGFzc1JlZlB0cjxRdEluc3RhbmNlPiBpbnN0YW5j
ZSwgaW50IHNpZ25hbEluZGV4LCBKU09iamVjdCogdGhpc09iamVjdCwgSlNPYmplY3QqIGZ1bmNP
YmplY3QpOworICAgIFF0Q29ubmVjdGlvbk9iamVjdChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEs
IFBhc3NSZWZQdHI8UXRJbnN0YW5jZT4gaW5zdGFuY2UsIGludCBzaWduYWxJbmRleCwgSlNPYmpl
Y3QqIHRoaXNPYmplY3QsIEpTT2JqZWN0KiBmdW5jT2JqZWN0KTsKICAgICB+UXRDb25uZWN0aW9u
T2JqZWN0KCk7CiAKICAgICBzdGF0aWMgY29uc3QgUU1ldGFPYmplY3Qgc3RhdGljTWV0YU9iamVj
dDsKQEAgLTIyOSw4ICsyMjksOCBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxRdEluc3RhbmNlPiBt
X2luc3RhbmNlOwogICAgIGludCBtX3NpZ25hbEluZGV4OwogICAgIFFPYmplY3QqIG1fb3JpZ2lu
YWxPYmplY3Q7IC8vIG9ubHkgdXNlZCBhcyBhIGtleSwgbm90IGRlcmVmZXJlbmNlZAotICAgIFBy
b3RlY3RlZFB0cjxKU09iamVjdD4gbV90aGlzT2JqZWN0OwotICAgIFByb3RlY3RlZFB0cjxKU09i
amVjdD4gbV9mdW5jT2JqZWN0OworICAgIEdsb2JhbDxKU09iamVjdD4gbV90aGlzT2JqZWN0Owor
ICAgIEdsb2JhbDxKU09iamVjdD4gbV9mdW5jT2JqZWN0OwogfTsKIAogUVZhcmlhbnQgY29udmVy
dFZhbHVlVG9RVmFyaWFudChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUsIFFNZXRhVHlw
ZTo6VHlwZSBoaW50LCBpbnQgKmRpc3RhbmNlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBmOTNhNzAyLi43MTM2
YzM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTEtMDItMTUgIENzYWJhIE9zenRy
b2dvbsOhYyAgPG9zc3lAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBSZWZhY3RvciBoYW5kbGVzIGFuZCB3ZWFrIHBvaW50ZXJzIHRv
IGJlY29tZSBuaWNlciBhbmQgbW9yZSBhdXRvbWF0aWMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU0NDE1CisKKyAgICAgICAgUXQgYnVpbGRmaXguCisK
KyAgICAgICAgKiBXZWJLaXQyLnBybzoKKwogMjAxMS0wMi0xNSAgT2xpdmVyIEh1bnQgIDxvbGl2
ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViS2l0Mi5wcm8gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJL
aXQyLnBybwppbmRleCA5OGY0ZDI1Li40NjFlZDI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJLaXQyLnBybworKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnBybwpAQCAtNDEsNiAr
NDEsNyBAQCBXRUJLSVQyX0lOQ0xVREVQQVRIID0gXAogICAgICQkUFdELy4uL0phdmFTY3JpcHRD
b3JlL2Fzc2VtYmxlciBcCiAgICAgJCRQV0QvLi4vSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUgXAog
ICAgICQkUFdELy4uL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlciBcCisgICAgJCRQV0QvLi4v
SmF2YVNjcmlwdENvcmUvY29sbGVjdG9yL2hhbmRsZXMgXAogICAgICQkUFdELy4uL0phdmFTY3Jp
cHRDb3JlL2RlYnVnZ2VyIFwKICAgICAkJFBXRC8uLi9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRl
ciBcCiAgICAgJCRQV0QvLi4vSmF2YVNjcmlwdENvcmUvaml0IFwK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>82513</attachid>
            <date>2011-02-15 13:22:55 -0800</date>
            <delta_ts>2011-02-15 15:55:25 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-54415-20110215132254.patch</filename>
            <type>text/plain</type>
            <size>200422</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogNzg1MjMKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvSlNDbGFzc1JlZi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2xh
c3NSZWYuY3BwCmluZGV4IGRlY2Y0OTMzMTQzYTFlZDNlOGUwMTRjZTBmYjZhZDI2Nzk5NDE5OTQu
LmQ5NTNkY2UxYzc4NjhiMTRmMDEwNWU1ZmRlNTg3NmUxNDE5YmJjMmYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDbGFzc1JlZi5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0FQSS9KU0NsYXNzUmVmLmNwcApAQCAtMTQyLDE5ICsxNDIsMTIgQEAgUGFzc1Jl
ZlB0cjxPcGFxdWVKU0NsYXNzPiBPcGFxdWVKU0NsYXNzOjpjcmVhdGVOb0F1dG9tYXRpY1Byb3Rv
dHlwZShjb25zdCBKU0NsYXMKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IE9wYXF1ZUpTQ2xhc3Mo
ZGVmaW5pdGlvbiwgMCkpOwogfQogCi1zdGF0aWMgdm9pZCBjbGVhclJlZmVyZW5jZVRvUHJvdG90
eXBlKEpTT2JqZWN0UmVmIHByb3RvdHlwZSkKLXsKLSAgICBPcGFxdWVKU0NsYXNzQ29udGV4dERh
dGEqIGpzQ2xhc3NEYXRhID0gc3RhdGljX2Nhc3Q8T3BhcXVlSlNDbGFzc0NvbnRleHREYXRhKj4o
SlNPYmplY3RHZXRQcml2YXRlKHByb3RvdHlwZSkpOwotICAgIEFTU0VSVChqc0NsYXNzRGF0YSk7
Ci0gICAganNDbGFzc0RhdGEtPmNhY2hlZFByb3RvdHlwZS5jbGVhcih0b0pTKHByb3RvdHlwZSkp
OwotfQotCiBQYXNzUmVmUHRyPE9wYXF1ZUpTQ2xhc3M+IE9wYXF1ZUpTQ2xhc3M6OmNyZWF0ZShj
b25zdCBKU0NsYXNzRGVmaW5pdGlvbiogY2xpZW50RGVmaW5pdGlvbikKIHsKICAgICBKU0NsYXNz
RGVmaW5pdGlvbiBkZWZpbml0aW9uID0gKmNsaWVudERlZmluaXRpb247IC8vIEF2b2lkIG1vZGlm
eWluZyBjbGllbnQgY29weS4KIAogICAgIEpTQ2xhc3NEZWZpbml0aW9uIHByb3RvRGVmaW5pdGlv
biA9IGtKU0NsYXNzRGVmaW5pdGlvbkVtcHR5OwotICAgIHByb3RvRGVmaW5pdGlvbi5maW5hbGl6
ZSA9IGNsZWFyUmVmZXJlbmNlVG9Qcm90b3R5cGU7CisgICAgcHJvdG9EZWZpbml0aW9uLmZpbmFs
aXplID0gMDsKICAgICBzd2FwKGRlZmluaXRpb24uc3RhdGljRnVuY3Rpb25zLCBwcm90b0RlZmlu
aXRpb24uc3RhdGljRnVuY3Rpb25zKTsgLy8gTW92ZSBzdGF0aWMgZnVuY3Rpb25zIHRvIHRoZSBw
cm90b3R5cGUuCiAgICAgCiAgICAgLy8gV2UgYXJlIHN1cHBvc2VkIHRvIHVzZSBKU0NsYXNzUmV0
YWluL1JlbGVhc2UgYnV0IHNpbmNlIHdlIGtub3cgdGhhdCB3ZSBjdXJyZW50bHkgaGF2ZQpAQCAt
MTYzLDcgKzE1Niw3IEBAIFBhc3NSZWZQdHI8T3BhcXVlSlNDbGFzcz4gT3BhcXVlSlNDbGFzczo6
Y3JlYXRlKGNvbnN0IEpTQ2xhc3NEZWZpbml0aW9uKiBjbGllbnRECiAgICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBPcGFxdWVKU0NsYXNzKCZkZWZpbml0aW9uLCBwcm90b0NsYXNzLmdldCgpKSk7CiB9
CiAKLU9wYXF1ZUpTQ2xhc3NDb250ZXh0RGF0YTo6T3BhcXVlSlNDbGFzc0NvbnRleHREYXRhKE9w
YXF1ZUpTQ2xhc3MqIGpzQ2xhc3MpCitPcGFxdWVKU0NsYXNzQ29udGV4dERhdGE6Ok9wYXF1ZUpT
Q2xhc3NDb250ZXh0RGF0YShKU0M6OkpTR2xvYmFsRGF0YSYsIE9wYXF1ZUpTQ2xhc3MqIGpzQ2xh
c3MpCiAgICAgOiBtX2NsYXNzKGpzQ2xhc3MpCiB7CiAgICAgaWYgKGpzQ2xhc3MtPm1fc3RhdGlj
VmFsdWVzKSB7CkBAIC0yMDksNyArMjAyLDcgQEAgT3BhcXVlSlNDbGFzc0NvbnRleHREYXRhJiBP
cGFxdWVKU0NsYXNzOjpjb250ZXh0RGF0YShFeGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAgT3BhcXVl
SlNDbGFzc0NvbnRleHREYXRhKiYgY29udGV4dERhdGEgPSBleGVjLT5nbG9iYWxEYXRhKCkub3Bh
cXVlSlNDbGFzc0RhdGEuYWRkKHRoaXMsIDApLmZpcnN0LT5zZWNvbmQ7CiAgICAgaWYgKCFjb250
ZXh0RGF0YSkKLSAgICAgICAgY29udGV4dERhdGEgPSBuZXcgT3BhcXVlSlNDbGFzc0NvbnRleHRE
YXRhKHRoaXMpOworICAgICAgICBjb250ZXh0RGF0YSA9IG5ldyBPcGFxdWVKU0NsYXNzQ29udGV4
dERhdGEoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlzKTsKICAgICByZXR1cm4gKmNvbnRleHREYXRh
OwogfQogCkBAIC0yNTYsNyArMjQ5LDcgQEAgSlNPYmplY3QqIE9wYXF1ZUpTQ2xhc3M6OnByb3Rv
dHlwZShFeGVjU3RhdGUqIGV4ZWMpCiAKICAgICBpZiAoIWpzQ2xhc3NEYXRhLmNhY2hlZFByb3Rv
dHlwZSkgewogICAgICAgICAvLyBSZWN1cnNpdmUsIGJ1dCBzaG91bGQgYmUgZ29vZCBlbm91Z2gg
Zm9yIG91ciBwdXJwb3NlcwotICAgICAgICBqc0NsYXNzRGF0YS5jYWNoZWRQcm90b3R5cGUgPSBu
ZXcgKGV4ZWMpIEpTQ2FsbGJhY2tPYmplY3Q8SlNPYmplY3RXaXRoR2xvYmFsT2JqZWN0PihleGVj
LCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3Qo
KS0+Y2FsbGJhY2tPYmplY3RTdHJ1Y3R1cmUoKSwgcHJvdG90eXBlQ2xhc3MsICZqc0NsYXNzRGF0
YSk7IC8vIHNldCBqc0NsYXNzRGF0YSBhcyB0aGUgb2JqZWN0J3MgcHJpdmF0ZSBkYXRhLCBzbyBp
dCBjYW4gY2xlYXIgb3VyIHJlZmVyZW5jZSBvbiBkZXN0cnVjdGlvbgorICAgICAgICBqc0NsYXNz
RGF0YS5jYWNoZWRQcm90b3R5cGUuc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgbmV3IChleGVjKSBK
U0NhbGxiYWNrT2JqZWN0PEpTT2JqZWN0V2l0aEdsb2JhbE9iamVjdD4oZXhlYywgZXhlYy0+bGV4
aWNhbEdsb2JhbE9iamVjdCgpLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPmNhbGxiYWNr
T2JqZWN0U3RydWN0dXJlKCksIHByb3RvdHlwZUNsYXNzLCAmanNDbGFzc0RhdGEpLCAwKTsgLy8g
c2V0IGpzQ2xhc3NEYXRhIGFzIHRoZSBvYmplY3QncyBwcml2YXRlIGRhdGEsIHNvIGl0IGNhbiBj
bGVhciBvdXIgcmVmZXJlbmNlIG9uIGRlc3RydWN0aW9uCiAgICAgICAgIGlmIChwYXJlbnRDbGFz
cykgewogICAgICAgICAgICAgaWYgKEpTT2JqZWN0KiBwcm90b3R5cGUgPSBwYXJlbnRDbGFzcy0+
cHJvdG90eXBlKGV4ZWMpKQogICAgICAgICAgICAgICAgIGpzQ2xhc3NEYXRhLmNhY2hlZFByb3Rv
dHlwZS0+c2V0UHJvdG90eXBlKHByb3RvdHlwZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQVBJL0pTQ2xhc3NSZWYuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlND
bGFzc1JlZi5oCmluZGV4IDA5NzE3MDAyYjQ1MWM5YTc5NTFlYjgyNTYyOGIwMjViZWNhOGNlZDku
LjBmNDExOWFmYzEzY2E2MWIxN2ZmZTM4OTBjZjY5MDhhZTkyOWU1Y2YgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDbGFzc1JlZi5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9BUEkvSlNDbGFzc1JlZi5oCkBAIC02OSw3ICs2OSw3IEBAIHN0cnVjdCBPcGFxdWVK
U0NsYXNzOwogc3RydWN0IE9wYXF1ZUpTQ2xhc3NDb250ZXh0RGF0YSB7CiAgICAgV1RGX01BS0Vf
Tk9OQ09QWUFCTEUoT3BhcXVlSlNDbGFzc0NvbnRleHREYXRhKTsgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CiBwdWJsaWM6Ci0gICAgT3BhcXVlSlNDbGFzc0NvbnRleHREYXRhKE9wYXF1ZUpTQ2xh
c3MqKTsKKyAgICBPcGFxdWVKU0NsYXNzQ29udGV4dERhdGEoSlNDOjpKU0dsb2JhbERhdGEmLCBP
cGFxdWVKU0NsYXNzKik7CiAgICAgfk9wYXF1ZUpTQ2xhc3NDb250ZXh0RGF0YSgpOwogCiAgICAg
Ly8gSXQgaXMgbmVjZXNzYXJ5IHRvIGtlZXAgT3BhcXVlSlNDbGFzcyBhbGl2ZSBiZWNhdXNlIG9m
IHRoZSBmb2xsb3dpbmcgcmFyZSBzY2VuYXJpbzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3Rz
LnR4dAppbmRleCBmMTg4MjZlYWVjNjBlNGM4MGExZmZhYmIwZGYzOWU4MDk4N2MxNWM5Li41YTZh
Y2UyMTFmMDM2ZDU0ODRiZWZlYmZhN2YxNjdjNGZmOWVhOGY0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0NNYWtlTGlzdHMudHh0CkBAIC00MCw2ICs0MCw4IEBAIFNFVChKYXZhU2NyaXB0Q29yZV9TT1VS
Q0VTCiAgICAgYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAogICAgIGJ5dGVjb21w
aWxlci9Ob2Rlc0NvZGVnZW4uY3BwCiAKKyAgICBjb2xsZWN0b3IvaGFuZGxlcy9IYW5kbGVIZWFw
LmNwcAorCiAgICAgZGVidWdnZXIvRGVidWdnZXIuY3BwCiAgICAgZGVidWdnZXIvRGVidWdnZXJB
Y3RpdmF0aW9uLmNwcAogICAgIGRlYnVnZ2VyL0RlYnVnZ2VyQ2FsbEZyYW1lLmNwcApAQCAtMTAw
LDcgKzEwMiw2IEBAIFNFVChKYXZhU2NyaXB0Q29yZV9TT1VSQ0VTCiAgICAgcnVudGltZS9GdW5j
dGlvbkNvbnN0cnVjdG9yLmNwcAogICAgIHJ1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuY3BwCiAg
ICAgcnVudGltZS9HQ0FjdGl2aXR5Q2FsbGJhY2suY3BwCi0gICAgcnVudGltZS9HQ0hhbmRsZS5j
cHAKICAgICBydW50aW1lL0dldHRlclNldHRlci5jcHAKICAgICBydW50aW1lL0dsb2JhbEV2YWxG
dW5jdGlvbi5jcHAKICAgICBydW50aW1lL0lkZW50aWZpZXIuY3BwCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5n
ZUxvZwppbmRleCAwOGFjMDBjZTMxMDQ0MTkwNzQxNzRiY2E3NjI5ODdjNzAzYjczMzczLi5jOGQ2
ZjkzOTA2NWU5Nzk1ZWRhODM2ZjU1NTQyYWFmZDE5NTdkMTY5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxNzIgQEAKKzIwMTEtMDItMTQgIE9saXZlciBIdW50ICA8b2xpdmVy
QGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBSZWZhY3RvciBoYW5kbGVzIGFuZCB3ZWFrIHBvaW50ZXJzIHRvIGJlY29tZSBuaWNlciBh
bmQgbW9yZSBhdXRvbWF0aWMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTU0NDE1CisKKyAgICAgICAgTW92ZSB0byBhIHRydWUgaGFuZGxlIGJhc2VkIG1l
Y2hhbmlzbSBmb3IgR0MgdmFsdWUgcHJvdGVjdGlvbi4gIFRoaXMKKyAgICAgICAgYWxzbyBhbGxv
d3MgdXMgdG8gc3dpdGNoIHRvIGEgbW9yZSBzZW5zaWJsZSBiZWhhdmlvdXIgZm9yIHdlYWsgcG9p
bnRlcnMKKyAgICAgICAgaW4gd2hpY2ggd2VhayBwb2ludGVycyBhcmUgYXV0b21hdGljYWxseSB1
cGRhdGVkLgorCisgICAgICAgIFRoaXMgYWxsb3dzIHVzIHRvIHJlbW92ZSB0aGUgb2xkIChhbmQg
Y29udm9sdXRlZCkgdGhhdCByZXF1aXJlZCBhbGwKKyAgICAgICAgb2JqZWN0cyB0aGF0IG1heSBi
ZSBoZWxkIGJ5IGEgd2VhayByZWZlcmVuY2UgdG8gYmUgYXdhcmUgb2YgdGhlIHJlZmVyZW5jZQor
ICAgICAgICBhbmQgbWFudWFsbHkgY2xlYXIgdGhlbSBpbiB0aGVpciBkZXN0cnVjdG9ycy4KKwor
ICAgICAgICBUaGlzIGFsc28gYWRkcyBhIGZldyBuZXcgZGF0YSB0eXBlcyB0byBKU0MgdGhhdCB3
ZSB1c2UgdG8gZWZmaWNpZW50bHkKKyAgICAgICAgYWxsb2NhdGUgYW5kIHJldHVybiB0aGUgdW5k
ZXJseWluZyBoYW5kbGUgc3RvcmFnZS4KKworICAgICAgICBUaGlzIHBhdGNoIGlzIGxhcmdlbHkg
cmVuYW1pbmcgYW5kIHJlbW92aW5nIG5vdyB1bm5lY2Vzc2FyeSBkZXN0cnVjdG9ycworICAgICAg
ICBmcm9tIG9iamVjdHMuCisKKyAgICAgICAgKiBBUEkvSlNDbGFzc1JlZi5jcHA6CisgICAgICAg
IChPcGFxdWVKU0NsYXNzOjpjcmVhdGUpOgorICAgICAgICAoT3BhcXVlSlNDbGFzc0NvbnRleHRE
YXRhOjpPcGFxdWVKU0NsYXNzQ29udGV4dERhdGEpOgorICAgICAgICAoT3BhcXVlSlNDbGFzczo6
Y29udGV4dERhdGEpOgorICAgICAgICAoT3BhcXVlSlNDbGFzczo6cHJvdG90eXBlKToKKyAgICAg
ICAgKiBBUEkvSlNDbGFzc1JlZi5oOgorICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAg
ICAqIEdOVW1ha2VmaWxlLmFtOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLmV4cDoKKyAgICAg
ICAgKiBKYXZhU2NyaXB0Q29yZS5neXBpOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnBybzoK
KyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUuZGVmOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2o6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUudmNwcm9q
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlQ29tbW9uLnZzcHJvcHM6CisgICAgICAgICog
SmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlR2VuZXJh
dGVkLm1ha2U6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUudmNwcm9qL1dURi9XVEYudmNwcm9q
OgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnZjcHJvai9qc2MvanNjQ29tbW9uLnZzcHJvcHM6
CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAg
ICAgICAgKiBjb2xsZWN0b3IvaGFuZGxlcy9HbG9iYWwuaDogQWRkZWQuCisgICAgICAgICAgICBO
ZXcgR2xvYmFsIGhhbmRsZSB0eXBlIHVzZWQgdG8ga2VlcCBnYyBvYmplY3RzIGxpdmUsIGV2ZW4g
aWYgdGhleSdyZSBub3QKKyAgICAgICAgICAgIG1hcmtlZC4KKyAgICAgICAgKEpTQzo6R2xvYmFs
OjpHbG9iYWwpOgorICAgICAgICAoSlNDOjpHbG9iYWw6On5HbG9iYWwpOgorICAgICAgICAoSlND
OjpHbG9iYWw6OnNldCk6CisgICAgICAgICAgICBXZSBjYW4gb25seSBhc3NpZ24gZGlyZWN0bHkg
dG8gYSBnbG9iYWwgZnJvbSBhbm90aGVyIGdsb2JhbC4KKyAgICAgICAgICAgIEluIGFsbCBvdGhl
ciBjYXNlcyB3ZSBuZWVkIHRoZSBKU0dsb2JhbERhdGEgdG8gYmUgcHJvdmlkZWQKKyAgICAgICAg
ICAgIGV4cGxpY2l0bHkgc28gd2UgdXNlIGEgc2V0IGZ1bmN0aW9uLgorICAgICAgICAoSlNDOjpH
bG9iYWw6Om9wZXJhdG9yPSk6CisgICAgICAgIChKU0M6Okdsb2JhbDo6Y2xlYXIpOgorICAgICAg
ICAoSlNDOjpHbG9iYWw6OmlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKToKKyAgICAgICAgKEpTQzo6
R2xvYmFsOjppbnRlcm5hbFNldCk6CisgICAgICAgICogY29sbGVjdG9yL2hhbmRsZXMvSGFuZGxl
Lmg6IEFkZGVkLgorICAgICAgICAgICAgUm9vdCAiSGFuZGxlIiB0eXBlIHVzZWQgZm9yIGltbXV0
YWJsZSBoYW5kbGVzIGFuZCB0byBwcm92aWRlIHRoZSBiYXNpYworICAgICAgICAgICAgQVBJcyBu
ZWVkZWQgZm9yIHBvaW50ZXItbGlrZSBiZWhhdmlvdXIuCisgICAgICAgIChKU0M6OkhhbmRsZUJh
c2U6Om9wZXJhdG9yISk6CisgICAgICAgIChKU0M6OkhhbmRsZUJhc2U6Om9wZXJhdG9yIFVuc3Bl
Y2lmaWVkQm9vbFR5cGUqKToKKyAgICAgICAgKEpTQzo6SGFuZGxlQmFzZTo6aXNFbXB0eSk6Cisg
ICAgICAgIChKU0M6OkhhbmRsZUJhc2U6OkhhbmRsZUJhc2UpOgorICAgICAgICAoSlNDOjpIYW5k
bGVCYXNlOjpzbG90KToKKyAgICAgICAgKEpTQzo6SGFuZGxlQmFzZTo6aW52YWxpZGF0ZSk6Cisg
ICAgICAgIChKU0M6OkhhbmRsZUJhc2U6OnNldFNsb3QpOgorICAgICAgICAoSlNDOjpIYW5kbGVU
eXBlczo6Z2V0RnJvbVNsb3QpOgorICAgICAgICAoSlNDOjpIYW5kbGVUeXBlczo6dG9KU1ZhbHVl
KToKKyAgICAgICAgKEpTQzo6SGFuZGxlVHlwZXM6OnZhbGlkYXRlVXBjYXN0KToKKyAgICAgICAg
KEpTQzo6SGFuZGxlQ29udmVydGVyOjpvcGVyYXRvci0+KToKKyAgICAgICAgKEpTQzo6SGFuZGxl
Q29udmVydGVyOjpvcGVyYXRvciopOgorICAgICAgICAoSlNDOjpIYW5kbGU6OkhhbmRsZSk6Cisg
ICAgICAgIChKU0M6OkhhbmRsZTo6Z2V0KToKKyAgICAgICAgKEpTQzo6SGFuZGxlOjp3cmFwU2xv
dCk6CisgICAgICAgIChKU0M6Om9wZXJhdG9yPT0pOgorICAgICAgICAoSlNDOjpvcGVyYXRvciE9
KToKKyAgICAgICAgKiBjb2xsZWN0b3IvaGFuZGxlcy9IYW5kbGVIZWFwLmNwcDogQWRkZWQuCisg
ICAgICAgICAgICBOZXcgaGVhcCBmb3IgZ2xvYmFsIGhhbmRsZXMuCisgICAgICAgIChKU0M6Okhh
bmRsZUhlYXA6OkhhbmRsZUhlYXApOgorICAgICAgICAoSlNDOjpIYW5kbGVIZWFwOjpncm93KToK
KyAgICAgICAgKEpTQzo6SGFuZGxlSGVhcDo6bWFya1N0cm9uZ0hhbmRsZXMpOgorICAgICAgICAo
SlNDOjpIYW5kbGVIZWFwOjp1cGRhdGVBZnRlck1hcmspOgorICAgICAgICAoSlNDOjpIYW5kbGVI
ZWFwOjpjbGVhcldlYWtQb2ludGVycyk6CisgICAgICAgIChKU0M6OkhhbmRsZUhlYXA6OndyaXRl
QmFycmllcik6CisgICAgICAgICogY29sbGVjdG9yL2hhbmRsZXMvSGFuZGxlSGVhcC5oOiBBZGRl
ZC4KKyAgICAgICAgKEpTQzo6SGFuZGxlSGVhcDo6aGVhcEZvcik6CisgICAgICAgIChKU0M6Okhh
bmRsZUhlYXA6OnRvSGFuZGxlKToKKyAgICAgICAgKEpTQzo6SGFuZGxlSGVhcDo6dG9Ob2RlKToK
KyAgICAgICAgKEpTQzo6SGFuZGxlSGVhcDo6YWxsb2NhdGUpOgorICAgICAgICAoSlNDOjpIYW5k
bGVIZWFwOjpkZWFsbG9jYXRlKToKKyAgICAgICAgKEpTQzo6SGFuZGxlSGVhcDo6bWFrZVdlYWsp
OgorICAgICAgICAgICAgQ29udmVydCBhIGhhcmQgaGFuZGxlIGludG8gd2VhayBoYW5kbGUgdGhh
dCBkb2VzIG5vdAorICAgICAgICAgICAgcHJvdGVjdCB0aGUgb2JqZWN0IGl0IHBvaW50cyB0by4K
KyAgICAgICAgKEpTQzo6SGFuZGxlSGVhcDo6bWFrZVNlbGZEZXN0cm95aW5nKToKKyAgICAgICAg
ICAgIENvbnZlcnRzIGEgaGFuZGxlIHRvIGEgd2VhayBoYW5kbGUgdGhhdCB3aWxsIGJlIHJldHVy
bmVkCisgICAgICAgICAgICB0byB0aGUgZnJlZSBsaXN0IHdoZW4gdGhlIHJlZmVyZW5jZWQgb2Jq
ZWN0IGRpZXMuCisgICAgICAgIChKU0M6OkhhbmRsZUhlYXA6Ok5vZGU6Ok5vZGUpOgorICAgICAg
ICAoSlNDOjpIYW5kbGVIZWFwOjpOb2RlOjpzbG90KToKKyAgICAgICAgKEpTQzo6SGFuZGxlSGVh
cDo6Tm9kZTo6aGFuZGxlSGVhcCk6CisgICAgICAgIChKU0M6OkhhbmRsZUhlYXA6Ok5vZGU6OnNl
dEZpbmFsaXplcik6CisgICAgICAgIChKU0M6OkhhbmRsZUhlYXA6Ok5vZGU6Om1ha2VXZWFrKToK
KyAgICAgICAgKEpTQzo6SGFuZGxlSGVhcDo6Tm9kZTo6aXNXZWFrKToKKyAgICAgICAgKEpTQzo6
SGFuZGxlSGVhcDo6Tm9kZTo6bWFrZVNlbGZEZXN0cm95aW5nKToKKyAgICAgICAgKEpTQzo6SGFu
ZGxlSGVhcDo6Tm9kZTo6aXNTZWxmRGVzdHJveWluZyk6CisgICAgICAgIChKU0M6OkhhbmRsZUhl
YXA6Ok5vZGU6OmZpbmFsaXplcik6CisgICAgICAgIChKU0M6OkhhbmRsZUhlYXA6Ok5vZGU6OnNl
dFByZXYpOgorICAgICAgICAoSlNDOjpIYW5kbGVIZWFwOjpOb2RlOjpwcmV2KToKKyAgICAgICAg
KEpTQzo6SGFuZGxlSGVhcDo6Tm9kZTo6c2V0TmV4dCk6CisgICAgICAgIChKU0M6OkhhbmRsZUhl
YXA6Ok5vZGU6Om5leHQpOgorICAgICAgICAqIGludGVycHJldGVyL0ludGVycHJldGVyLmNwcDoK
KyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OkludGVycHJldGVyKToKKyAgICAgICAgKiBpbnRl
cnByZXRlci9JbnRlcnByZXRlci5oOgorICAgICAgICAqIGludGVycHJldGVyL1JlZ2lzdGVyRmls
ZS5jcHA6CisgICAgICAgIChKU0M6OlJlZ2lzdGVyRmlsZTo6Z2xvYmFsT2JqZWN0Q29sbGVjdGVk
KToKKyAgICAgICAgKiBpbnRlcnByZXRlci9SZWdpc3RlckZpbGUuaDoKKyAgICAgICAgKEpTQzo6
UmVnaXN0ZXJGaWxlOjpSZWdpc3RlckZpbGUpOgorICAgICAgICAqIHJ1bnRpbWUvR0NIYW5kbGUu
Y3BwOiBSZW1vdmVkLgorICAgICAgICAqIHJ1bnRpbWUvR0NIYW5kbGUuaDogUmVtb3ZlZC4KKyAg
ICAgICAgKiBydW50aW1lL0hlYXAuY3BwOgorICAgICAgICAoSlNDOjpIZWFwOjpIZWFwKToKKyAg
ICAgICAgKEpTQzo6SGVhcDo6ZGVzdHJveSk6CisgICAgICAgIChKU0M6OkhlYXA6Om1hcmtSb290
cyk6CisgICAgICAgICogcnVudGltZS9IZWFwLmg6CisgICAgICAgIChKU0M6OkhlYXA6OmFsbG9j
YXRlR2xvYmFsSGFuZGxlKToKKyAgICAgICAgKEpTQzo6SGVhcDo6cmVwb3J0RXh0cmFNZW1vcnlD
b3N0KToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsRGF0YS5jcHA6CisgICAgICAgIChKU0M6
OkpTR2xvYmFsRGF0YTo6SlNHbG9iYWxEYXRhKToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFs
RGF0YS5oOgorICAgICAgICAoSlNDOjpKU0dsb2JhbERhdGE6OmFsbG9jYXRlR2xvYmFsSGFuZGxl
KToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6
SlNHbG9iYWxPYmplY3Q6On5KU0dsb2JhbE9iamVjdCk6CisgICAgICAgICogcnVudGltZS9KU1By
b3BlcnR5TmFtZUl0ZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6SlNQcm9wZXJ0eU5hbWVJdGVy
YXRvcjo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6SlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6fkpT
UHJvcGVydHlOYW1lSXRlcmF0b3IpOgorICAgICAgICAqIHJ1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJ
dGVyYXRvci5oOgorICAgICAgICAoSlNDOjpKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yOjpjcmVhdGVT
dHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OnNldEVudW1lcmF0aW9uQ2FjaGUp
OgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OmNsZWFyRW51bWVyYXRpb25DYWNoZSk6CisgICAg
ICAgICogcnVudGltZS9Qcm90ZWN0Lmg6CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1cmUuY3Bw
OgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6On5TdHJ1Y3R1cmUpOgorICAgICAgICAqIHJ1bnRp
bWUvU3RydWN0dXJlLmg6CisgICAgICAgICogcnVudGltZS9XZWFrR0NQdHIuaDoKKyAgICAgICAg
KEpTQzo6V2Vha0dDUHRyQmFzZTo6Z2V0KToKKyAgICAgICAgKEpTQzo6V2Vha0dDUHRyQmFzZTo6
Y2xlYXIpOgorICAgICAgICAoSlNDOjpXZWFrR0NQdHJCYXNlOjpvcGVyYXRvciEpOgorICAgICAg
ICAoSlNDOjpXZWFrR0NQdHJCYXNlOjpvcGVyYXRvciBVbnNwZWNpZmllZEJvb2xUeXBlKik6Cisg
ICAgICAgIChKU0M6OldlYWtHQ1B0ckJhc2U6On5XZWFrR0NQdHJCYXNlKToKKyAgICAgICAgKEpT
Qzo6V2Vha0dDUHRyQmFzZTo6V2Vha0dDUHRyQmFzZSk6CisgICAgICAgIChKU0M6OldlYWtHQ1B0
ckJhc2U6OmludGVybmFsU2V0KToKKyAgICAgICAgKEpTQzo6TGF6eVdlYWtHQ1B0cjo6TGF6eVdl
YWtHQ1B0cik6CisgICAgICAgIChKU0M6OkxhenlXZWFrR0NQdHI6OnNldCk6CisgICAgICAgIChK
U0M6OldlYWtHQ1B0cjo6V2Vha0dDUHRyKToKKyAgICAgICAgKEpTQzo6V2Vha0dDUHRyOjpvcGVy
YXRvcj0pOgorICAgICAgICAqIHJ1bnRpbWUvV3JpdGVCYXJyaWVyLmg6CisgICAgICAgICogd3Rm
L0Jsb2NrU3RhY2suaDogQWRkZWQuCisgICAgICAgIChXVEY6Ojo6QmxvY2tTdGFjayk6CisgICAg
ICAgIChXVEY6Ojo6fkJsb2NrU3RhY2spOgorICAgICAgICAoV1RGOjo6OmJsb2Nrcyk6CisgICAg
ICAgIChXVEY6Ojo6Z3Jvdyk6CisgICAgICAgIChXVEY6Ojo6c2hyaW5rKToKKyAgICAgICAgKiB3
dGYvU2VudGluZWxMaW5rZWRMaXN0Lmg6IEFkZGVkLgorICAgICAgICAoV1RGOjo6OlNlbnRpbmVs
TGlua2VkTGlzdCk6CisgICAgICAgIChXVEY6Ojo6YmVnaW4pOgorICAgICAgICAoV1RGOjo6OmVu
ZCk6CisgICAgICAgIChXVEY6Ojo6cHVzaCk6CisgICAgICAgIChXVEY6Ojo6cmVtb3ZlKToKKyAg
ICAgICAgKiB3dGYvU2luZ2x5TGlua2VkTGlzdC5oOiBBZGRlZC4KKyAgICAgICAgKFdURjo6OjpT
aW5nbHlMaW5rZWRMaXN0KToKKyAgICAgICAgKFdURjo6Ojppc0VtcHR5KToKKyAgICAgICAgKFdU
Rjo6OjpwdXNoKToKKyAgICAgICAgKFdURjo6Ojpwb3ApOgorCiAyMDExLTAyLTE0ICBHZW9mZnJl
eSBHYXJlbiAgPGdnYXJlbkBhcHBsZS5jb20+CiAKICAgICAgICAgUnViYmVyLXN0YW1wZWQgYnkg
R2F2aW4gQmFycmFjbG91Z2guCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvR05V
bWFrZWZpbGUuYW0gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUuYW0KaW5kZXgg
ZTZjY2YyZTU2ZWM3M2MyNmZiZTdiNzZhMGZjMDczOWI0MWI1Mzc4NC4uZDJiOWY3NDRkOTAxNjM5
OTY5ZThhMzA3ZDQyZjNhNWMxNjg3MDEyOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL0dOVW1ha2VmaWxlLmFtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmls
ZS5hbQpAQCAtNSw2ICs1LDcgQEAgamF2YXNjcmlwdGNvcmVfY3BwZmxhZ3MgKz0gXAogCS1JJChz
cmNkaXIpL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIgXAogCS1JJChzcmNkaXIpL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZSBcCiAJLUkkKHNyY2RpcikvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb21waWxlciBcCisJLUkkKHNyY2RpcikvU291cmNlL0phdmFTY3JpcHRD
b3JlL2NvbGxlY3Rvci9oYW5kbGVzIFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGVidWdnZXIgXAogCS1JJChzcmNkaXIpL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Gb3J3YXJk
aW5nSGVhZGVycyBcCiAJLUkkKHNyY2RpcikvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJl
dGVyIFwKQEAgLTEwOSw2ICsxMTAsMTAgQEAgamF2YXNjcmlwdGNvcmVfc291cmNlcyArPSBcCiAJ
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9MYWJlbFNjb3BlLmggXAogCVNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcCBcCiAJU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9SZWdpc3RlcklELmggXAorCVNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9jb2xsZWN0b3IvaGFuZGxlcy9HbG9iYWwuaCBcCisJU291cmNlL0phdmFTY3Jp
cHRDb3JlL2NvbGxlY3Rvci9oYW5kbGVzL0hhbmRsZS5oIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENv
cmUvY29sbGVjdG9yL2hhbmRsZXMvSGFuZGxlSGVhcC5jcHAgXAorCVNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9jb2xsZWN0b3IvaGFuZGxlcy9IYW5kbGVIZWFwLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9jb25maWcuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2Vy
QWN0aXZhdGlvbi5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dl
ckFjdGl2YXRpb24uaCBcCkBAIC0yNzAsOCArMjc1LDYgQEAgamF2YXNjcmlwdGNvcmVfc291cmNl
cyArPSBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUu
aCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR0NBY3Rpdml0eUNhbGxiYWNrLmNw
cCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR0NBY3Rpdml0eUNhbGxiYWNrLmgg
XAotCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dDSGFuZGxlLmNwcCBcCi0JU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR0NIYW5kbGUuaCBcCiAJU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvR2V0dGVyU2V0dGVyLmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvR2V0dGVyU2V0dGVyLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ds
b2JhbEV2YWxGdW5jdGlvbi5jcHAgXApAQCAtNDI2LDYgKzQyOSw3IEBAIGphdmFzY3JpcHRjb3Jl
X3NvdXJjZXMgKz0gXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvQXRvbWljcy5oIFwKIAlT
b3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL0FWTFRyZWUuaCBcCiAJU291cmNlL0phdmFTY3JpcHRD
b3JlL3d0Zi9CaXRtYXAuaCBcCisJU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9CbG9ja1N0YWNr
LmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvQmxvb21GaWx0ZXIuaCBcCiAJU291cmNl
L0phdmFTY3JpcHRDb3JlL3d0Zi9CdW1wUG9pbnRlckFsbG9jYXRvci5oIFwKIAlTb3VyY2UvSmF2
YVNjcmlwdENvcmUvd3RmL0J5dGVBcnJheS5jcHAgXApAQCAtNTA4LDYgKzUxMiw4IEBAIGphdmFz
Y3JpcHRjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvUmVmUHRy
SGFzaE1hcC5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1JldGFpblB0ci5oIFwKIAlT
b3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1NlZ21lbnRlZFZlY3Rvci5oIFwKKwlTb3VyY2UvSmF2
YVNjcmlwdENvcmUvd3RmL1NlbnRpbmVsTGlua2VkTGlzdC5oIFwKKwlTb3VyY2UvSmF2YVNjcmlw
dENvcmUvd3RmL1NpbmdseUxpbmtlZExpc3QuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3d0
Zi9TdGFja0JvdW5kcy5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvU3RhY2tCb3Vu
ZHMuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9TdGF0aWNDb25zdHJ1Y3RvcnMuaCBc
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZXhwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmV4cAppbmRleCA1NjRkN2RiMzMy
NGYxYzVhNmEwODljODMzOGQyMDlhNDllNzNlNmUyLi40NjQ1YWYzMjVhYTZlMzVhNDc3NzU4MGQx
MmE4NGNhYzkzODIwMjEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUuZXhwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5l
eHAKQEAgLTk3LDYgKzk3LDggQEAgX1dURlJlcG9ydEJhY2t0cmFjZQogX1dURlJlcG9ydEVycm9y
CiBfV1RGUmVwb3J0RmF0YWxFcnJvcgogX19aTjE0T3BhcXVlSlNTdHJpbmc2Y3JlYXRlRVJLTjNK
U0M3VVN0cmluZ0UKK19fWk4zSlNDMTBIYW5kbGVIZWFwMTJ3cml0ZUJhcnJpZXJFUE5TXzdKU1Zh
bHVlRVJLUzFfCitfX1pOM0pTQzEwSGFuZGxlSGVhcDRncm93RXYKIF9fWk4zSlNDMTBJZGVudGlm
aWVyMTFhZGRTbG93Q2FzZUVQTlNfMTJKU0dsb2JhbERhdGFFUE4zV1RGMTBTdHJpbmdJbXBsRQog
X19aTjNKU0MxMElkZW50aWZpZXIxMWFkZFNsb3dDYXNlRVBOU185RXhlY1N0YXRlRVBOM1dURjEw
U3RyaW5nSW1wbEUKIF9fWk4zSlNDMTBJZGVudGlmaWVyMjdjaGVja0N1cnJlbnRJZGVudGlmaWVy
VGFibGVFUE5TXzEySlNHbG9iYWxEYXRhRQpAQCAtMTQzLDcgKzE0NSw2IEBAIF9fWk4zSlNDMTJT
dHJpbmdPYmplY3QyNGdldE93blByb3BlcnR5RGVzY3JpcHRvckVQTlNfOUV4ZWNTdGF0ZUVSS05T
XzEwSWRlbnRpZmllCiBfX1pOM0pTQzEyU3RyaW5nT2JqZWN0M3B1dEVQTlNfOUV4ZWNTdGF0ZUVS
S05TXzEwSWRlbnRpZmllckVOU183SlNWYWx1ZUVSTlNfMTVQdXRQcm9wZXJ0eVNsb3RFCiBfX1pO
M0pTQzEyU3RyaW5nT2JqZWN0NGluZm9FCiBfX1pOM0pTQzEyU3RyaW5nT2JqZWN0QzJFUE5TXzlF
eGVjU3RhdGVFTjNXVEYxN05vbk51bGxQYXNzUmVmUHRySU5TXzlTdHJ1Y3R1cmVFRUVSS05TXzdV
U3RyaW5nRQotX19aTjNKU0MxMldlYWtHQ0hhbmRsZTRwb29sRXYKIF9fWk4zSlNDMTJqc051bWJl
ckNlbGxFUE5TXzlFeGVjU3RhdGVFZAogX19aTjNKU0MxMm5vbklubGluZU5hTkV2CiBfX1pOM0pT
QzEzU2FtcGxpbmdGbGFnczRzdG9wRXYKQEAgLTE3Myw3ICsxNzQsNiBAQCBfX1pOM0pTQzE2SW50
ZXJuYWxGdW5jdGlvbkMyRVBOU18xMkpTR2xvYmFsRGF0YUVQTlNfMTRKU0dsb2JhbE9iamVjdEVO
M1dURjE3Tm9uTgogX19aTjNKU0MxNkpTVmFyaWFibGVPYmplY3QxNGRlbGV0ZVByb3BlcnR5RVBO
U185RXhlY1N0YXRlRVJLTlNfMTBJZGVudGlmaWVyRQogX19aTjNKU0MxNkpTVmFyaWFibGVPYmpl
Y3QxNHN5bWJvbFRhYmxlR2V0RVJLTlNfMTBJZGVudGlmaWVyRVJOU18xOFByb3BlcnR5RGVzY3Jp
cHRvckUKIF9fWk4zSlNDMTZKU1ZhcmlhYmxlT2JqZWN0MTlnZXRPd25Qcm9wZXJ0eU5hbWVzRVBO
U185RXhlY1N0YXRlRVJOU18xN1Byb3BlcnR5TmFtZUFycmF5RU5TXzE1RW51bWVyYXRpb25Nb2Rl
RQotX19aTjNKU0MxNldlYWtHQ0hhbmRsZVBvb2w0ZnJlZUVQTlNfMTJXZWFrR0NIYW5kbGVFCiBf
X1pOM0pTQzE2Y3JlYXRlUmFuZ2VFcnJvckVQTlNfOUV4ZWNTdGF0ZUVSS05TXzdVU3RyaW5nRQog
X19aTjNKU0MxNnRocm93U3ludGF4RXJyb3JFUE5TXzlFeGVjU3RhdGVFCiBfX1pOM0pTQzE3Qnl0
ZWNvZGVHZW5lcmF0b3IyMXNldER1bXBzR2VuZXJhdGVkQ29kZUViCkBAIC0yMDYsNyArMjA2LDYg
QEAgX19aTjNKU0MyNGNyZWF0ZVN0YWNrT3ZlcmZsb3dFcnJvckVQTlNfOUV4ZWNTdGF0ZUUKIF9f
Wk4zSlNDMjVldmFsdWF0ZUluR2xvYmFsQ2FsbEZyYW1lRVJLTlNfN1VTdHJpbmdFUk5TXzdKU1Zh
bHVlRVBOU18xNEpTR2xvYmFsT2JqZWN0RQogX19aTjNKU0MzNWNyZWF0ZUludGVycnVwdGVkRXhl
Y3V0aW9uRXhjZXB0aW9uRVBOU18xMkpTR2xvYmFsRGF0YUUKIF9fWk4zSlNDM05hTkUKLV9fWk4z
SlNDNEhlYXAxNWFkZFdlYWtHQ0hhbmRsZUVQTlNfNkpTQ2VsbEUKIF9fWk4zSlNDNEhlYXAxNm9i
amVjdFR5cGVDb3VudHNFdgogX19aTjNKU0M0SGVhcDE3Y29sbGVjdEFsbEdhcmJhZ2VFdgogX19a
TjNKU0M0SGVhcDE3Z2xvYmFsT2JqZWN0Q291bnRFdgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmd5cGkgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUuZ3lwaQppbmRleCA3NTRmZDJiNmRlZjUwODhkZDUwZjJjOGM2YmY2ZjZjNWNh
ZmYyMmViLi5kZTA4ZDRlMWY2MDM5ZTBlMzg5YjAyZDY4Y2YxMmZhMWQ1ZjI2Mzc0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZ3lwaQorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZ3lwaQpAQCAtNjgsNiArNjgsMTAgQEAK
ICAgICAgICAgICAgICdieXRlY29tcGlsZXIvTGFiZWwuaCcsCiAgICAgICAgICAgICAnYnl0ZWNv
bXBpbGVyL0xhYmVsU2NvcGUuaCcsCiAgICAgICAgICAgICAnYnl0ZWNvbXBpbGVyL1JlZ2lzdGVy
SUQuaCcsCisgICAgICAgICAgICAnY29sbGVjdG9yL2hhbmRsZXMvR2xvYmFsLmgnLAorICAgICAg
ICAgICAgJ2NvbGxlY3Rvci9oYW5kbGVzL0hhbmRsZS5oJywKKyAgICAgICAgICAgICdjb2xsZWN0
b3IvaGFuZGxlcy9IYW5kbGVIZWFwLmNwcCcsCisgICAgICAgICAgICAnY29sbGVjdG9yL2hhbmRs
ZXMvSGFuZGxlSGVhcC5oJywKICAgICAgICAgICAgICdjb25maWcuaCcsCiAgICAgICAgICAgICAn
ZGVidWdnZXIvRGVidWdnZXIuY3BwJywKICAgICAgICAgICAgICdkZWJ1Z2dlci9EZWJ1Z2dlci5o
JywKQEAgLTIxMyw4ICsyMTcsNiBAQAogICAgICAgICAgICAgJ3J1bnRpbWUvRnVuY3Rpb25Qcm90
b3R5cGUuaCcsCiAgICAgICAgICAgICAncnVudGltZS9HQ0FjdGl2aXR5Q2FsbGJhY2suY3BwJywK
ICAgICAgICAgICAgICdydW50aW1lL0dDQWN0aXZpdHlDYWxsYmFjay5oJywKLSAgICAgICAgICAg
ICdydW50aW1lL0dDSGFuZGxlLmNwcCcsCi0gICAgICAgICAgICAncnVudGltZS9HQ0hhbmRsZS5o
JywKICAgICAgICAgICAgICdydW50aW1lL0dldHRlclNldHRlci5jcHAnLAogICAgICAgICAgICAg
J3J1bnRpbWUvR2V0dGVyU2V0dGVyLmgnLAogICAgICAgICAgICAgJ3J1bnRpbWUvR2xvYmFsRXZh
bEZ1bmN0aW9uLmNwcCcsCkBAIC0zNTgsNiArMzYwLDcgQEAKICAgICAgICAgICAgICd3dGYvQXRv
bWljcy5oJywKICAgICAgICAgICAgICd3dGYvQVZMVHJlZS5oJywKICAgICAgICAgICAgICd3dGYv
Qml0bWFwLmgnLAorICAgICAgICAgICAgJ3d0Zi9CbG9ja1N0YWNrLmgnLAogICAgICAgICAgICAg
J3d0Zi9CbG9vbUZpbHRlci5oJywKICAgICAgICAgICAgICd3dGYvQnl0ZUFycmF5LmNwcCcsCiAg
ICAgICAgICAgICAnd3RmL0J5dGVBcnJheS5oJywKQEAgLTQzMyw2ICs0MzYsOCBAQAogICAgICAg
ICAgICAgJ3d0Zi9SZWZQdHJIYXNoTWFwLmgnLAogICAgICAgICAgICAgJ3d0Zi9SZXRhaW5QdHIu
aCcsCiAgICAgICAgICAgICAnd3RmL1NlZ21lbnRlZFZlY3Rvci5oJywKKyAgICAgICAgICAgICd3
dGYvU2VudGluZWxMaW5rZWRMaXN0LmgnLAorICAgICAgICAgICAgJ3d0Zi9TaW5nbHlMaW5rZWRM
aXN0LmgnLAogICAgICAgICAgICAgJ3d0Zi9TaXplTGltaXRzLmNwcCcsCiAgICAgICAgICAgICAn
d3RmL1N0YWNrQm91bmRzLmNwcCcsCiAgICAgICAgICAgICAnd3RmL1N0YWNrQm91bmRzLmgnLApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnByaSBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5wcmkKaW5kZXggYzFkZTU5OTkzMGU5
MjVlNTQyNzViMDQ5ZmY1ODdkNzVlMGVkNDA1Ny4uZGFkN2RjZTliMDk1YWVjMzQ3Nzc1MzAzMmEx
MzY0MTc2OGU1NGIwNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnByaQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUucHJp
CkBAIC0yNyw2ICsyNyw3IEBAIEpBVkFTQ1JJUFRDT1JFX0lOQ0xVREVQQVRIID0gXAogICAgICQk
UFdEL2Fzc2VtYmxlciBcCiAgICAgJCRQV0QvYnl0ZWNvZGUgXAogICAgICQkUFdEL2J5dGVjb21w
aWxlciBcCisgICAgJCRQV0QvY29sbGVjdG9yL2hhbmRsZXMgXAogICAgICQkUFdEL2RlYnVnZ2Vy
IFwKICAgICAkJFBXRC9pbnRlcnByZXRlciBcCiAgICAgJCRQV0Qvaml0IFwKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5wcm8gYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUucHJvCmluZGV4IDFiNWUyOGFjYzQ4ZmI0YTY4YWEzYWYz
Njc4Y2MxMjcwN2Q2Y2I5NDMuLjE2MDBmMjk0ZmNhNGNjNGI2MTIwMDc1NzMxY2UwNWZkMmJlYWJk
NjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5wcm8K
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnBybwpAQCAtOTQsNiAr
OTQsNyBAQCBTT1VSQ0VTICs9IFwKICAgICBkZWJ1Z2dlci9EZWJ1Z2dlckFjdGl2YXRpb24uY3Bw
IFwKICAgICBkZWJ1Z2dlci9EZWJ1Z2dlckNhbGxGcmFtZS5jcHAgXAogICAgIGRlYnVnZ2VyL0Rl
YnVnZ2VyLmNwcCBcCisgICAgY29sbGVjdG9yL2hhbmRsZXMvSGFuZGxlSGVhcC5jcHAgXAogICAg
IGludGVycHJldGVyL0NhbGxGcmFtZS5jcHAgXAogICAgIGludGVycHJldGVyL0ludGVycHJldGVy
LmNwcCBcCiAgICAgaW50ZXJwcmV0ZXIvUmVnaXN0ZXJGaWxlLmNwcCBcCkBAIC0xNDcsNyArMTQ4
LDYgQEAgU09VUkNFUyArPSBcCiAgICAgcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmNwcCBc
CiAgICAgcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5jcHAgXAogICAgIHJ1bnRpbWUvR0NBY3Rp
dml0eUNhbGxiYWNrLmNwcCBcCi0gICAgcnVudGltZS9HQ0hhbmRsZS5jcHAgXAogICAgIHJ1bnRp
bWUvR2V0dGVyU2V0dGVyLmNwcCBcCiAgICAgcnVudGltZS9HbG9iYWxFdmFsRnVuY3Rpb24uY3Bw
IFwKICAgICBydW50aW1lL0lkZW50aWZpZXIuY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUuZGVmIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5kZWYKaW5kZXggMDEwZGIzOWQ0OGFkYWNhYTIw
YmU4ZWNmZDA1ZDgzZWRiZDMyZWMwNC4uMzRkOTRmZGFlMzE4NmI1NGI3YjZjZDA4MDE0YzA0NDJl
MWQ0MjQ0MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
LnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5kZWYKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS5kZWYKQEAgLTUyLDcgKzUyLDYgQEAgRVhQT1JUUwogICAgID9hZGRQcm9wZXJ0eVRy
YW5zaXRpb25Ub0V4aXN0aW5nU3RydWN0dXJlQFN0cnVjdHVyZUBKU0NAQFNBP0FWPyRQYXNzUmVm
UHRyQFZTdHJ1Y3R1cmVASlNDQEBAV1RGQEBQQVYxMkBBQlZJZGVudGlmaWVyQDJASVBBVkpTQ2Vs
bEAyQEFBSUBaCiAgICAgP2FkZFByb3BlcnR5V2l0aG91dFRyYW5zaXRpb25AU3RydWN0dXJlQEpT
Q0BAUUFFSUFCVklkZW50aWZpZXJAMkBJUEFWSlNDZWxsQDJAQFoKICAgICA/YWRkU2xvd0Nhc2VA
SWRlbnRpZmllckBKU0NAQENBP0FWPyRQYXNzUmVmUHRyQFZTdHJpbmdJbXBsQFdURkBAQFdURkBA
UEFWRXhlY1N0YXRlQDJAUEFWU3RyaW5nSW1wbEA0QEBaCi0gICAgP2FkZFdlYWtHQ0hhbmRsZUBI
ZWFwQEpTQ0BAUUFFUEFWV2Vha0dDSGFuZGxlQDJAUEFWSlNDZWxsQDJAQFoKICAgICA/YWxsb2Nh
dGVASGVhcEBKU0NAQFFBRVBBWElAWgogICAgID9hbGxvY2F0ZVByb3BlcnR5U3RvcmFnZUBKU09i
amVjdEBKU0NAQFFBRVhJSUBaCiAgICAgP2FsbG9jYXRlU3RhY2tATWFya1N0YWNrQEpTQ0BAQ0FQ
QVhJQFoKQEAgLTE2NCw3ICsxNjMsNiBAQCBFWFBPUlRTCiAgICAgP2Zhc3RaZXJvZWRNYWxsb2NA
V1RGQEBZQVBBWElAWgogICAgID9maWxsR2V0dGVyUHJvcGVydHlTbG90QEpTT2JqZWN0QEpTQ0BA
UUFFWEFBVlByb3BlcnR5U2xvdEAyQFBBVj8kV3JpdGVCYXJyaWVyQmFzZUBXNFVua25vd25ASlND
QEBAMkBAWgogICAgID9mb2N1c0BQcm9maWxlQEpTQ0BAUUFFWFBCVlByb2ZpbGVOb2RlQDJAQFoK
LSAgICA/ZnJlZUBXZWFrR0NIYW5kbGVQb29sQEpTQ0BAUUFFWFBBVldlYWtHQ0hhbmRsZUAyQEBa
CiAgICAgP2Zyb21ASWRlbnRpZmllckBKU0NAQFNBP0FWMTJAUEFWRXhlY1N0YXRlQDJASEBaCiAg
ICAgP2Zyb21ASWRlbnRpZmllckBKU0NAQFNBP0FWMTJAUEFWRXhlY1N0YXRlQDJASUBaCiAgICAg
P2Z1bmN0aW9uR2V0dGVyQFByb3BlcnR5U2xvdEBKU0NAQEFCRT9BVkpTVmFsdWVAMkBQQVZFeGVj
U3RhdGVAMkBAWgpAQCAtMjAxLDYgKzE5OSw3IEBAIEVYUE9SVFMKICAgICA/Z2xvYmFsRXhlY0BK
U0dsb2JhbE9iamVjdEBKU0NAQFVBRVBBVkV4ZWNTdGF0ZUAyQFhaCiAgICAgP2dsb2JhbE9iamVj
dEBKU09iamVjdFdpdGhHbG9iYWxPYmplY3RASlNDQEBRQkVQQVZKU0dsb2JhbE9iamVjdEAyQFha
CiAgICAgP2dsb2JhbE9iamVjdENvdW50QEhlYXBASlNDQEBRQUVJWFoKKyAgICA/Z3Jvd0BIYW5k
bGVIZWFwQEpTQ0BAQUFFWFhaCiAgICAgP2hhc0luc3RhbmNlQEpTT2JqZWN0QEpTQ0BAVUFFX05Q
QVZFeGVjU3RhdGVAMkBWSlNWYWx1ZUAyQDFAWgogICAgID9oYXNQcm9wZXJ0eUBKU09iamVjdEBK
U0NAQFFCRV9OUEFWRXhlY1N0YXRlQDJAQUJWSWRlbnRpZmllckAyQEBaCiAgICAgP2hhc1Byb3Bl
cnR5QEpTT2JqZWN0QEpTQ0BAUUJFX05QQVZFeGVjU3RhdGVAMkBJQFoKQEAgLTI0OSw3ICsyNDgs
NiBAQCBFWFBPUlRTCiAgICAgP29iamVjdENvdW50QEhlYXBASlNDQEBRQkVJWFoKICAgICA/b2Jq
ZWN0UHJvdG9GdW5jVG9TdHJpbmdASlNDQEBZSV9KUEFWRXhlY1N0YXRlQDFAQFoKICAgICA/cGFy
c2VEYXRlRnJvbU51bGxUZXJtaW5hdGVkQ2hhcmFjdGVyc0BXVEZAQFlBTlBCREBaCi0gICAgP3Bv
b2xAV2Vha0dDSGFuZGxlQEpTQ0BAUUFFUEFWV2Vha0dDSGFuZGxlUG9vbEAyQFhaCiAgICAgP3By
b2ZpbGVyQFByb2ZpbGVyQEpTQ0BAU0FQQVYxMkBYWgogICAgID9wcm90ZWN0QEhlYXBASlNDQEBR
QUVYVkpTVmFsdWVAMkBAWgogICAgID9wcm90ZWN0ZWRHbG9iYWxPYmplY3RDb3VudEBIZWFwQEpT
Q0BAUUFFSVhaCkBAIC0zNjAsNiArMzU4LDcgQEAgRVhQT1JUUwogICAgID93YWl0QFRocmVhZENv
bmRpdGlvbkBXVEZAQFFBRVhBQVZNdXRleEAyQEBaCiAgICAgP3dhaXRGb3JUaHJlYWRDb21wbGV0
aW9uQFdURkBAWUFISVBBUEFYQFoKICAgICA/d3JpdGFibGVAUHJvcGVydHlEZXNjcmlwdG9yQEpT
Q0BAUUJFX05YWgorICAgID93cml0ZUJhcnJpZXJASGFuZGxlSGVhcEBKU0NAQFFBRVhQQVZKU1Zh
bHVlQDJAQUJWMzJAQFoKICAgICA/eWllbGRAV1RGQEBZQVhYWgogICAgIFdURkxvZwogICAgIFdU
RkxvZ1ZlcmJvc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS52Y3Byb2oKaW5kZXggMjYwNzc5ZWZhOTIzZDNjODU1YTU5ZmY1MTQwMzA0MWMw
YzY1NWEzMC4uYWQ3NGRmZDQ2Zjk0MGNmOTY5OGM5MTQ4MmI0ZTdiOGE4MzEyNGU4ZCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3By
b2oKQEAgLTE5NzQsNiArMTk3NCwzMCBAQAogCQkJCT4KIAkJCTwvRmlsZT4KIAkJPC9GaWx0ZXI+
CisJCTxGaWx0ZXIKKwkJCU5hbWU9ImNvbGxlY3RvciIKKwkJCT4KKwkJCTxGaWx0ZXIKKwkJCQlO
YW1lPSJoYW5kbGVzIgorCQkJCT4KKwkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4u
XGNvbGxlY3RvclxoYW5kbGVzXEdsb2JhbC5oIgorCQkJCQk+CisJCQkJPC9GaWxlPgorCQkJCTxG
aWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cY29sbGVjdG9yXGhhbmRsZXNcSGFuZGxlLmgi
CisJCQkJCT4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwu
Llxjb2xsZWN0b3JcaGFuZGxlc1xIYW5kbGVIZWFwLmNwcCIKKwkJCQkJPgorCQkJCTwvRmlsZT4K
KwkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXGNvbGxlY3RvclxoYW5kbGVzXEhh
bmRsZUhlYXAuaCIKKwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJCTwvRmlsdGVyPgorCQk8L0ZpbHRl
cj4KIAkJPEZpbGUKIAkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cY29uZmlnLmgiCiAJCQk+CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlQ29tbW9uLnZzcHJvcHMgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
Q29tbW9uLnZzcHJvcHMKaW5kZXggNGE3ZjRkM2Y3NTY2MzFmMDBjZjMzNmM3NjFjODcxMDhkYmNi
NzhmNS4uY2I3MzYyZDdlNzczMDQyYmM0ODJmZmE2MDFlYzIwMzkzZmQ5NzcwMyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZUNvbW1vbi52c3Byb3BzCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmVD
b21tb24udnNwcm9wcwpAQCAtNiw3ICs2LDcgQEAKIAk+CiAJPFRvb2wKIAkJTmFtZT0iVkNDTENv
bXBpbGVyVG9vbCIKLQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJnF1b3Q7JChDb25m
aWd1cmF0aW9uQnVpbGREaXIpXG9ialxKYXZhU2NyaXB0Q29yZVxEZXJpdmVkU291cmNlc1wmcXVv
dDs7Li4vLi4vOy4uLy4uL0FQSS87Li4vLi4vcGFyc2VyLzsuLi8uLi9ieXRlY29tcGlsZXIvOy4u
Ly4uL2ppdC87Li4vLi4vcnVudGltZS87Li4vLi4vYnl0ZWNvZGUvOy4uLy4uL2ludGVycHJldGVy
LzsuLi8uLi93dGYvOy4uLy4uL3Byb2ZpbGVyOy4uLy4uL2Fzc2VtYmxlci87Li4vLi4vZGVidWdn
ZXIvOyZxdW90OyQoV2ViS2l0TGlicmFyaWVzRGlyKVxpbmNsdWRlJnF1b3Q7OyZxdW90OyQoV2Vi
S2l0TGlicmFyaWVzRGlyKVxpbmNsdWRlXHByaXZhdGUmcXVvdDs7JnF1b3Q7JChDb25maWd1cmF0
aW9uQnVpbGREaXIpXGluY2x1ZGUmcXVvdDs7JnF1b3Q7JChDb25maWd1cmF0aW9uQnVpbGREaXIp
XGluY2x1ZGVcSmF2YVNjcmlwdENvcmUmcXVvdDs7JnF1b3Q7JChDb25maWd1cmF0aW9uQnVpbGRE
aXIpXGluY2x1ZGVccHJpdmF0ZSZxdW90OzsmcXVvdDskKFdlYktpdExpYnJhcmllc0RpcilcaW5j
bHVkZVxwdGhyZWFkcyZxdW90OyIKKwkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJnF1
b3Q7JChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9ialxKYXZhU2NyaXB0Q29yZVxEZXJpdmVkU291
cmNlc1wmcXVvdDs7Li4vLi4vOy4uLy4uL0FQSS87Li4vLi4vcGFyc2VyLzsuLi8uLi9ieXRlY29t
cGlsZXIvOy4uLy4uL2ppdC87Li4vLi4vcnVudGltZS87Li4vLi4vYnl0ZWNvZGUvOy4uLy4uL2lu
dGVycHJldGVyLzsuLi8uLi93dGYvOy4uLy4uL3Byb2ZpbGVyOy4uLy4uL2Fzc2VtYmxlci87Li4v
Li4vZGVidWdnZXIvOy4uLy4uL2NvbGxlY3Rvci9oYW5kbGVzLzsmcXVvdDskKFdlYktpdExpYnJh
cmllc0RpcilcaW5jbHVkZSZxdW90OzsmcXVvdDskKFdlYktpdExpYnJhcmllc0RpcilcaW5jbHVk
ZVxwcml2YXRlJnF1b3Q7OyZxdW90OyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxpbmNsdWRlJnF1
b3Q7OyZxdW90OyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxpbmNsdWRlXEphdmFTY3JpcHRDb3Jl
JnF1b3Q7OyZxdW90OyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxpbmNsdWRlXHByaXZhdGUmcXVv
dDs7JnF1b3Q7JChXZWJLaXRMaWJyYXJpZXNEaXIpXGluY2x1ZGVccHRocmVhZHMmcXVvdDsiCiAJ
CVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfX1NURF9DIgogCQlGb3JjZWRJbmNsdWRlRmlsZXM9
IklDVVZlcnNpb24uaCIKIAkvPgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZUdlbmVyYXRl
ZC5tYWtlIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZUdlbmVyYXRlZC5tYWtlCmluZGV4IDMxNGE3OTQxZTcz
ZGZkNTc0MzVjNTgyZWNlZjdhZTUwYWYwMzFlMGUuLmRiMmExNzVhMDAwOTBmNGQ1ZTBlZThhMjBm
OGRiMzBhMGM3MmI1ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmVHZW5lcmF0ZWQubWFr
ZQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlR2VuZXJhdGVkLm1ha2UKQEAgLTM2LDYgKzM2LDcgQEAg
YWxsOgogICAgIHhjb3B5IC95IC9kICIuLlwuLlxpbnRlcnByZXRlclwqLmgiICIlQ29uZmlndXJh
dGlvbkJ1aWxkRGlyJVxpbmNsdWRlXHByaXZhdGVcSmF2YVNjcmlwdENvcmUiCiAgICAgeGNvcHkg
L3kgL2QgIi4uXC4uXGFzc2VtYmxlclwqLmgiICIlQ29uZmlndXJhdGlvbkJ1aWxkRGlyJVxpbmNs
dWRlXHByaXZhdGVcSmF2YVNjcmlwdENvcmUiCiAgICAgeGNvcHkgL3kgL2QgIi4uXC4uXGppdFwq
LmgiICIlQ29uZmlndXJhdGlvbkJ1aWxkRGlyJVxpbmNsdWRlXHByaXZhdGVcSmF2YVNjcmlwdENv
cmUiCisgICAgeGNvcHkgL3kgL2QgIi4uXC4uXGNvbGxlY3RvclxoYW5kbGVzXCouaCIgIiVDb25m
aWd1cmF0aW9uQnVpbGREaXIlXGluY2x1ZGVccHJpdmF0ZVxKYXZhU2NyaXB0Q29yZSIKICAgICB4
Y29weSAveSAvZCAiLi5cLi5cZGVidWdnZXJcKi5oIiAiJUNvbmZpZ3VyYXRpb25CdWlsZERpciVc
aW5jbHVkZVxwcml2YXRlXEphdmFTY3JpcHRDb3JlIgogICAgIHhjb3B5IC95IC9kICIuLlwuLlxw
cm9maWxlclwqLmgiICIlQ29uZmlndXJhdGlvbkJ1aWxkRGlyJVxpbmNsdWRlXHByaXZhdGVcSmF2
YVNjcmlwdENvcmUiCiAgICAgeGNvcHkgL3kgL2QgIi4uXC4uXGNyZWF0ZV9oYXNoX3RhYmxlIiAi
JUNvbmZpZ3VyYXRpb25CdWlsZERpciVcaW5jbHVkZVxwcml2YXRlXEphdmFTY3JpcHRDb3JlIgpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9X
VEYvV1RGLnZjcHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3By
b2ovV1RGL1dURi52Y3Byb2oKaW5kZXggNTUzNzFmM2RhMDExMWU4ZjA1OTI2MzlmMmM1ZGZjNTU4
MTVkMjNmMy4uNWY4NTRmOWYxMTE3NDVmNTY5ZjkwMzhjOWE1N2JiMmU2YmU5NDg1OSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9XVEYvV1RG
LnZjcHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9q
L1dURi9XVEYudmNwcm9qCkBAIC01MzcsNiArNTM3LDEwIEBACiAJCQk+CiAJCTwvRmlsZT4KIAkJ
PEZpbGUKKwkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cd3RmXEJsb2NrU3RhY2suaCIKKwkJCT4KKwkJ
PC9GaWxlPgorCQk8RmlsZQogCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlx3dGZcQmxvb21GaWx0ZXIu
aCIKIAkJCT4KIAkJPC9GaWxlPgpAQCAtODY5LDYgKzg3MywxNCBAQAogCQkJPgogCQk8L0ZpbGU+
CiAJCTxGaWxlCisJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXHd0ZlxTZW50aW5lbExpbmtlZExpc3Qu
aCIKKwkJCT4KKwkJPC9GaWxlPgorCQk8RmlsZQorCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlx3dGZc
U2luZ2x5TGlua2VkTGlzdC5oIgorCQkJPgorCQk8L0ZpbGU+CisJCTxGaWxlCiAJCQlSZWxhdGl2
ZVBhdGg9Ii4uXC4uXHd0ZlxTaXplTGltaXRzLmNwcCIKIAkJCT4KIAkJPC9GaWxlPgpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9qc2MvanNj
Q29tbW9uLnZzcHJvcHMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNw
cm9qL2pzYy9qc2NDb21tb24udnNwcm9wcwppbmRleCAzZTMyOWMzNWE4YmI0MDRhODFlZjY5ZWNk
OWQ2NDA5MjU4YWUxNzAwLi42MDRhNjZlZWZhN2M5OTFiZDE3Y2FlZWQ0YjAxY2I2ZmZmNzNjMzdk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9q
L2pzYy9qc2NDb21tb24udnNwcm9wcworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUudmNwcm9qL2pzYy9qc2NDb21tb24udnNwcm9wcwpAQCAtNiw3ICs2LDcgQEAKIAk+
CiAJPFRvb2wKIAkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKLQkJQWRkaXRpb25hbEluY2x1ZGVE
aXJlY3Rvcmllcz0iJnF1b3Q7JChDb25maWd1cmF0aW9uQnVpbGREaXIpXGluY2x1ZGUmcXVvdDs7
JnF1b3Q7JChDb25maWd1cmF0aW9uQnVpbGREaXIpXGluY2x1ZGVccHJpdmF0ZSZxdW90OzsmcXVv
dDskKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqXEphdmFTY3JpcHRDb3JlXERlcml2ZWRTb3Vy
Y2VzXCZxdW90OzsuLi8uLi87JnF1b3Q7Li4vLi4vb3Mtd2luMzIvJnF1b3Q7Oy4uLy4uL2Fzc2Vt
Ymxlci87Li4vLi4vQVBJLzsuLi8uLi9wYXJzZXIvOy4uLy4uL3J1bnRpbWUvOy4uLy4uL1ZNLzsu
Li8uLi9ieXRlY29kZS87Li4vLi4vaW50ZXJwcmV0ZXIvOy4uLy4uL3d0Zi87Li4vLi4vZGVidWdn
ZXIvOy4uLy4uL2J5dGVjb21waWxlci87Li4vLi4vcHJvZmlsZXI7Li4vLi4vaml0LzsmcXVvdDsk
KFdlYktpdExpYnJhcmllc0RpcilcaW5jbHVkZVxwdGhyZWFkcyZxdW90OzsmcXVvdDskKFdlYktp
dExpYnJhcmllc0RpcilcaW5jbHVkZSZxdW90OyIKKwkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rv
cmllcz0iJnF1b3Q7JChDb25maWd1cmF0aW9uQnVpbGREaXIpXGluY2x1ZGUmcXVvdDs7JnF1b3Q7
JChDb25maWd1cmF0aW9uQnVpbGREaXIpXGluY2x1ZGVccHJpdmF0ZSZxdW90OzsmcXVvdDskKENv
bmZpZ3VyYXRpb25CdWlsZERpcilcb2JqXEphdmFTY3JpcHRDb3JlXERlcml2ZWRTb3VyY2VzXCZx
dW90OzsuLi8uLi87JnF1b3Q7Li4vLi4vb3Mtd2luMzIvJnF1b3Q7Oy4uLy4uL2Fzc2VtYmxlci87
Li4vLi4vQVBJLzsuLi8uLi9wYXJzZXIvOy4uLy4uL2NvbGxlY3Rvci9oYW5kbGVzLzsuLi8uLi9y
dW50aW1lLzsuLi8uLi9WTS87Li4vLi4vYnl0ZWNvZGUvOy4uLy4uL2ludGVycHJldGVyLzsuLi8u
Li93dGYvOy4uLy4uL2RlYnVnZ2VyLzsuLi8uLi9ieXRlY29tcGlsZXIvOy4uLy4uL3Byb2ZpbGVy
Oy4uLy4uL2ppdC87JnF1b3Q7JChXZWJLaXRMaWJyYXJpZXNEaXIpXGluY2x1ZGVccHRocmVhZHMm
cXVvdDs7JnF1b3Q7JChXZWJLaXRMaWJyYXJpZXNEaXIpXGluY2x1ZGUmcXVvdDsiCiAJCVByZXBy
b2Nlc3NvckRlZmluaXRpb25zPSJfX1NURF9DIgogCQlGb3JjZWRJbmNsdWRlRmlsZXM9IklDVVZl
cnNpb24uaCIKIAkJRm9yY2VkVXNpbmdGaWxlcz0iIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agppbmRleCA3NGUzYjQzOGE3YjAxMzQwMTgyNDQ2ZDNlMGZhOWRjMGY0NjI1NDVlLi41NDQ5NDcx
N2UzNzgzZWIwOGUwOTIxYjMwYzhmNTk1ZmU4YzgwMGU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagpAQCAtMTc2LDcgKzE3Niw2IEBACiAJCTE0QkQ1QTMyMEEzRTkxRjYwMEJBRjU5QyAv
KiBKU1ZhbHVlUmVmLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDE0QkQ1QTJCMEEzRTkxRjYwMEJBRjU5QyAvKiBKU1ZhbHVlUmVmLmNwcCAqLzsgfTsK
IAkJMTRCRkNFNjkxMENEQjFGQzAwMzY0Q0NFIC8qIFdlYWtHQ01hcC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTRCRkNFNjgxMENEQjFGQzAwMzY0Q0NF
IC8qIFdlYWtHQ01hcC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTE0QzUyNDJCMEY1MzU1RTkwMEJBM0QwNCAvKiBKSVRTdHVicy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTRBNjU4MUEwRjRFMzZGNDAw
MDE1MEZEIC8qIEpJVFN0dWJzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKLQkJMTRDODI0QUIxMkY3Qzc3RTAwOEYzNUUwIC8qIE1hcmtlZEJsb2NrLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0QzgyNEFB
MTJGN0M3N0UwMDhGMzVFMCAvKiBNYXJrZWRCbG9jay5jcHAgKi87IH07CiAJCTE0QzgyNEFEMTJG
N0M3ODUwMDhGMzVFMCAvKiBNYXJrZWRCbG9jay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMTRDODI0QUMxMkY3Qzc4NTAwOEYzNUUwIC8qIE1hcmtlZEJs
b2NrLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
MTRFOUQxN0IxMDdFQzQ2OTAwNEREQTIxIC8qIEpTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDNzU2RkM2MEUy
MDMxQjIwMERFN0QxMiAvKiBKU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5jcHAgKi87IH07CiAJCTE0
RjhCQTNFMTA3RUM4ODYwMDk4OTJEQyAvKiBGYXN0TWFsbG9jLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1RTIxN0I5MDhFN0VFQ0MwMDIzRTVGNiAv
KiBGYXN0TWFsbG9jLmNwcCAqLzsgfTsKQEAgLTI4Nyw3ICsyODYsNiBAQAogCQk5MzA1MkMzNDBG
Qjc5MjE5MDA0OEZEQzMgLyogUGFyc2VyQXJlbmEuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTMwNTJDMzIwRkI3OTIxOTAwNDhGREMzIC8qIFBhcnNl
ckFyZW5hLmNwcCAqLzsgfTsKIAkJOTMwNTJDMzUwRkI3OTIxOTAwNDhGREMzIC8qIFBhcnNlckFy
ZW5hLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzA1
MkMzMzBGQjc5MjE5MDA0OEZEQzMgLyogUGFyc2VyQXJlbmEuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9ICgpOyB9OyB9OwogCQk5MzJGNUJEMzA4MjJBMUM3MDA3MzY5NzUgLyogQ29yZUZv
dW5kYXRpb24uZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNjU2MEE0Q0YwNEIzQjNFNzAwOEFFOTUyIC8qIENvcmVGb3VuZGF0aW9uLmZy
YW1ld29yayAqLzsgfTsKLQkJOTMyRjVCRDUwODIyQTFDNzAwNzM2OTc1IC8qIEZvdW5kYXRpb24u
ZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTFGMEVCNjEwNUM4NkM2QjAwRTZERjFCIC8qIEZvdW5kYXRpb24uZnJhbWV3b3JrICovOyB9
OwogCQk5MzJGNUJENjA4MjJBMUM3MDA3MzY5NzUgLyogbGlib2JqYy5keWxpYiBpbiBGcmFtZXdv
cmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRjBFQzA3MDVDODZDOUEw
MEU2REYxQiAvKiBsaWJvYmpjLmR5bGliICovOyB9OwogCQk5MzJGNUJENzA4MjJBMUM3MDA3MzY5
NzUgLyogbGliaWN1Y29yZS5keWxpYiBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDkzMjJBMDAzMDZDMzQxRDMwMDkwNjdCQiAvKiBsaWJpY3Vjb3JlLmR5
bGliICovOyB9OwogCQk5MzJGNUJERDA4MjJBMUM3MDA3MzY5NzUgLyoganNjLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ1RTEyRDg4MDZBNDlCMEYw
MEU5REY4NCAvKiBqc2MuY3BwICovOyB9OwpAQCAtMzQ2LDYgKzM0NCw3IEBACiAJCUE3MjgwQTI4
MTE1NTdFMzAwMEQ1Njk1NyAvKiBKU09iamVjdFJlZlByaXZhdGUuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3OUVEQjA4MTE1MzFDRDYwMDE5RTkxMiAv
KiBKU09iamVjdFJlZlByaXZhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQlBNzMwQjYxMjEyNTAwNjhGMDA5RDI1QjEgLyogU3RyaWN0RXZhbEFj
dGl2YXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEE3MzBCNjEwMTI1MDA2OEYwMDlEMjVCMSAvKiBTdHJpY3RFdmFsQWN0aXZhdGlvbi5oICovOyB9
OwogCQlBNzMwQjYxMzEyNTAwNjhGMDA5RDI1QjEgLyogU3RyaWN0RXZhbEFjdGl2YXRpb24uY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTczMEI2MTEx
MjUwMDY4RjAwOUQyNUIxIC8qIFN0cmljdEV2YWxBY3RpdmF0aW9uLmNwcCAqLzsgfTsKKwkJQTcz
MUIyNUExMzAwOTM4ODAwNDBBN0ZBIC8qIEZvdW5kYXRpb24uZnJhbWV3b3JrIGluIEZyYW1ld29y
a3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFGMEVCNjEwNUM4NkM2QjAw
RTZERjFCIC8qIEZvdW5kYXRpb24uZnJhbWV3b3JrICovOyB9OwogCQlBNzM4NjU1NDExODY5N0I0
MDA1NDAyNzkgLyogU3BlY2lhbGl6ZWRUaHVua0pJVC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTczODY1NTExMTg2OTdCNDAwNTQwMjc5IC8qIFNwZWNp
YWxpemVkVGh1bmtKSVQuaCAqLzsgfTsKIAkJQTczODY1NTUxMTg2OTdCNDAwNTQwMjc5IC8qIFRo
dW5rR2VuZXJhdG9ycy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBBNzM4NjU1MjExODY5N0I0MDA1NDAyNzkgLyogVGh1bmtHZW5lcmF0b3JzLmNwcCAq
LzsgfTsKIAkJQTczODY1NTYxMTg2OTdCNDAwNTQwMjc5IC8qIFRodW5rR2VuZXJhdG9ycy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTczODY1NTMxMTg2
OTdCNDAwNTQwMjc5IC8qIFRodW5rR2VuZXJhdG9ycy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0zNjksMTMgKzM2OCwyMSBAQAogCQlBNzkxRUYy
OTBGMTFFMDc5MDBBRTFGNjggLyogSlNCeXRlQXJyYXkuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTc5MUVGMjcwRjExRTA3OTAwQUUxRjY4IC8qIEpT
Qnl0ZUFycmF5LmNwcCAqLzsgfTsKIAkJQTdBMUY3QUMwRjI1MkIzQzAwRTE4NEUyIC8qIEJ5dGVB
cnJheS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBB
N0ExRjdBQTBGMjUyQjNDMDBFMTg0RTIgLyogQnl0ZUFycmF5LmNwcCAqLzsgfTsKIAkJQTdBMUY3
QUQwRjI1MkIzQzAwRTE4NEUyIC8qIEJ5dGVBcnJheS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdBMUY3QUIwRjI1MkIzQzAwRTE4NEUyIC8qIEJ5dGVB
cnJheS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJ
CUE3QUMyNUJEMTMwNEQxNDYwMDMzOTZERSAvKiBNYXJrZWRCbG9jay5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNEM4MjRBQTEyRjdDNzdFMDA4RjM1
RTAgLyogTWFya2VkQmxvY2suY3BwICovOyB9OwogCQlBN0I0OEY0OTBFRTg5MzZGMDBEQ0JEQjYg
LyogRXhlY3V0YWJsZUFsbG9jYXRvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBBN0I0OERCNjBFRTc0Q0ZDMDBEQ0JEQjYgLyogRXhlY3V0YWJsZUFs
bG9jYXRvci5jcHAgKi87IH07CiAJCUE3QzFFOEU0MTEyRTcyRUYwMEEzN0Y5OCAvKiBKSVRQcm9w
ZXJ0eUFjY2VzczMyXzY0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEE3QzFFOEM4MTEyRTcwMUMwMEEzN0Y5OCAvKiBKSVRQcm9wZXJ0eUFjY2VzczMy
XzY0LmNwcCAqLzsgfTsKKwkJQTdDNDBDMEExMzBCMDU3RDAwRDAwMkExIC8qIEJsb2NrU3RhY2su
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3QzQwQzA3
MTMwQjA1N0QwMEQwMDJBMSAvKiBCbG9ja1N0YWNrLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQTdDNDBDMEIxMzBCMDU3RDAwRDAwMkExIC8qIFNl
bnRpbmVsTGlua2VkTGlzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQTdDNDBDMDgxMzBCMDU3RDAwRDAwMkExIC8qIFNlbnRpbmVsTGlua2VkTGlzdC5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUE3QzQw
QzBDMTMwQjA1N0QwMEQwMDJBMSAvKiBTaW5nbHlMaW5rZWRMaXN0LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBN0M0MEMwOTEzMEIwNTdEMDBEMDAyQTEg
LyogU2luZ2x5TGlua2VkTGlzdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCUE3QzUzMEU0MTAyQTM4MTMwMDVCQzc0MSAvKiBNYXJrU3RhY2tQb3Np
eC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBN0M1
MzBFMzEwMkEzODEzMDA1QkM3NDEgLyogTWFya1N0YWNrUG9zaXguY3BwICovOyB9OwogCQlBN0Q2
NDlBQTEwMTUyMjRFMDA5QjJFMUIgLyogUG9zc2libHlOdWxsLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBN0Q2NDlBOTEwMTUyMjRFMDA5QjJFMUIgLyog
UG9zc2libHlOdWxsLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJQTdEQ0I5NzMxMkU1MTkzRjAwOTExOTQwIC8qIFdyaXRlQmFycmllci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdEQ0I3NzkxMkUzRDkw
NTAwOTExOTQwIC8qIFdyaXRlQmFycmllci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCUE3RTJFQTZCMEZCNDYwQ0YwMDYwMUYwNiAvKiBMaXRlcmFs
UGFyc2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBB
N0UyRUE2OTBGQjQ2MENGMDA2MDFGMDYgLyogTGl0ZXJhbFBhcnNlci5oICovOyB9OwogCQlBN0Uy
RUE2QzBGQjQ2MENGMDA2MDFGMDYgLyogTGl0ZXJhbFBhcnNlci5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBN0UyRUE2QTBGQjQ2MENGMDA2MDFGMDYg
LyogTGl0ZXJhbFBhcnNlci5jcHAgKi87IH07CisJCUE3RTRGQzhGMTJGOEU0Q0EwMEFGNENGNCAv
KiBHbG9iYWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEE3RTRGQzg3MTJGOEU0Q0EwMEFGNENGNCAvKiBHbG9iYWwuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlBN0U0RkM5MDEyRjhFNENBMDBBRjRDRjQg
LyogSGFuZGxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBBN0U0RkM4ODEyRjhFNENBMDBBRjRDRjQgLyogSGFuZGxlLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQTdFNEZDOTExMkY4RTRDQTAwQUY0Q0Y0
IC8qIEhhbmRsZUhlYXAuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQTdFNEZDODkxMkY4RTRDQTAwQUY0Q0Y0IC8qIEhhbmRsZUhlYXAuY3BwICovOyB9
OworCQlBN0U0RkM5MjEyRjhFNENBMDBBRjRDRjQgLyogSGFuZGxlSGVhcC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdFNEZDOEExMkY4RTRDQTAwQUY0
Q0Y0IC8qIEhhbmRsZUhlYXAuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQlBN0YxOUVDRTExREQ0OTA5MDA5MzFFNzAgLyogRml4ZWRBcnJheS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdGMTlFQ0QxMURE
NDkwOTAwOTMxRTcwIC8qIEZpeGVkQXJyYXkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQlBN0Y5OTM1RjBGRDczMjUxMDBBMEIyRDAgLyogSlNPTk9i
amVjdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdG
OTkzNUQwRkQ3MzI1MTAwQTBCMkQwIC8qIEpTT05PYmplY3QuaCAqLzsgfTsKIAkJQTdGOTkzNjAw
RkQ3MzI1MTAwQTBCMkQwIC8qIEpTT05PYmplY3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdGOTkzNUUwRkQ3MzI1MTAwQTBCMkQwIC8qIEpTT05P
YmplY3QuY3BwICovOyB9OwpAQCAtNTUxLDEyICs1NTgsNiBAQAogCQlCQ0ZEOEM5MzBFRUIyRUU3
MDAyODM4NDggLyogSnVtcFRhYmxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBCQ0ZEOEM5MTBFRUIyRUU3MDAyODM4NDggLyogSnVtcFRhYmxlLmggKi87
IH07CiAJCUMwQTI3MjYzMEU1MEEwNjMwMEU5NkUxNSAvKiBOb3RGb3VuZC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzBBMjcyM0YwRTUwOUYxRTAwRTk2
RTE1IC8qIE5vdEZvdW5kLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJREQzNzdDQkMxMjA3MkMxODAwNkEyNTE3IC8qIEJpdG1hcC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gREQzNzdDQkIxMjA3MkMxODAw
NkEyNTE3IC8qIEJpdG1hcC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07Ci0JCURERTgyQUQzMTIwOUQ5NTUwMDVDMTc1NiAvKiBHQ0hhbmRsZS5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBEREU4MkFEMTEyMDlE
OTU1MDA1QzE3NTYgLyogR0NIYW5kbGUuY3BwICovOyB9OwotCQlEREU4MkFENDEyMDlEOTU1MDA1
QzE3NTYgLyogR0NIYW5kbGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRERFODJBRDExMjA5RDk1NTAwNUMxNzU2IC8qIEdDSGFuZGxlLmNwcCAqLzsg
fTsKLQkJRERFODJBRDUxMjA5RDk1NTAwNUMxNzU2IC8qIEdDSGFuZGxlLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERERTgyQUQxMTIwOUQ5NTUwMDVD
MTc1NiAvKiBHQ0hhbmRsZS5jcHAgKi87IH07Ci0JCURERTgyQUQ2MTIwOUQ5NTUwMDVDMTc1NiAv
KiBHQ0hhbmRsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRERFODJBRDIxMjA5RDk1NTAwNUMxNzU2IC8qIEdDSGFuZGxlLmggKi87IH07Ci0JCURERTgy
QUQ3MTIwOUQ5NTUwMDVDMTc1NiAvKiBHQ0hhbmRsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBEREU4MkFEMTEyMDlEOTU1MDA1QzE3NTYgLyogR0NI
YW5kbGUuY3BwICovOyB9OwotCQlEREU4MkFEODEyMDlEOTU1MDA1QzE3NTYgLyogR0NIYW5kbGUu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERERTgyQUQy
MTIwOUQ5NTUwMDVDMTc1NiAvKiBHQ0hhbmRsZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCURERjdBQkQ0MTFGNjBFRDIwMDEwOEUzNiAvKiBHQ0Fj
dGl2aXR5Q2FsbGJhY2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IERERjdBQkQyMTFGNjBFRDIwMDEwOEUzNiAvKiBHQ0FjdGl2aXR5Q2FsbGJhY2suaCAq
LzsgfTsKIAkJRERGN0FCRDUxMUY2MEVEMjAwMTA4RTM2IC8qIEdDQWN0aXZpdHlDYWxsYmFja0NG
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERERjdB
QkQzMTFGNjBFRDIwMDEwOEUzNiAvKiBHQ0FjdGl2aXR5Q2FsbGJhY2tDRi5jcHAgKi87IH07CiAJ
CUUxMjRBOEY3MEU1NTU3NzUwMDMwOTFGMSAvKiBPcGFxdWVKU1N0cmluZy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTEyNEE4RjUwRTU1NTc3NTAwMzA5
MUYxIC8qIE9wYXF1ZUpTU3RyaW5nLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKQEAgLTEwMzUsNiArMTAzNiw5IEBACiAJCUE3QjQ4REI1MEVFNzRDRkMw
MERDQkRCNiAvKiBFeGVjdXRhYmxlQWxsb2NhdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEV4ZWN1dGFibGVBbGxvY2F0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQTdCNDhEQjYwRUU3NENGQzAwRENCREI2IC8qIEV4ZWN1dGFibGVBbGxvY2F0b3IuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRXhlY3V0YWJsZUFsbG9jYXRv
ci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3QzFFOEM4MTEyRTcwMUMwMEEz
N0Y5OCAvKiBKSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEpJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlBN0M0MEMwNzEzMEIwNTdEMDBEMDAyQTEgLyogQmxvY2tTdGFjay5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCbG9ja1N0YWNrLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3QzQwQzA4MTMwQjA1N0QwMEQwMDJBMSAvKiBTZW50aW5l
bExpbmtlZExpc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2VudGluZWxM
aW5rZWRMaXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3QzQwQzA5MTMwQjA1
N0QwMEQwMDJBMSAvKiBTaW5nbHlMaW5rZWRMaXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFNpbmdseUxpbmtlZExpc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQTdDNTMwRTMxMDJBMzgxMzAwNUJDNzQxIC8qIE1hcmtTdGFja1Bvc2l4LmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1hcmtTdGFja1Bvc2l4LmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTdENjQ5QTkxMDE1MjI0RTAwOUIyRTFCIC8qIFBvc3Np
Ymx5TnVsbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQb3NzaWJseU51bGwu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTdEQ0I3NzkxMkUzRDkwNTAwOTExOTQw
IC8qIFdyaXRlQmFycmllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXcml0
ZUJhcnJpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEwNDIsNiArMTA0Niwx
MCBAQAogCQlBN0UyRUE2QTBGQjQ2MENGMDA2MDFGMDYgLyogTGl0ZXJhbFBhcnNlci5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBMaXRlcmFsUGFyc2VyLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTdFNDJDMTgwRTM5Mzg4MzAwNjVBNTQ0IC8qIEpT
U3RhdGljU2NvcGVPYmplY3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNT
dGF0aWNTY29wZU9iamVjdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBN0U0MkMx
OTBFMzkzODgzMDA2NUE1NDQgLyogSlNTdGF0aWNTY29wZU9iamVjdC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1N0YXRpY1Njb3BlT2JqZWN0LmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTdFNEZDODcxMkY4RTRDQTAwQUY0Q0Y0IC8qIEdsb2Jh
bC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBHbG9iYWwuaDsgcGF0aCA9IGNv
bGxlY3Rvci9oYW5kbGVzL0dsb2JhbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlB
N0U0RkM4ODEyRjhFNENBMDBBRjRDRjQgLyogSGFuZGxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgbmFtZSA9IEhhbmRsZS5oOyBwYXRoID0gY29sbGVjdG9yL2hhbmRsZXMvSGFuZGxlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3RTRGQzg5MTJGOEU0Q0EwMEFGNENGNCAv
KiBIYW5kbGVIZWFwLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEhh
bmRsZUhlYXAuY3BwOyBwYXRoID0gY29sbGVjdG9yL2hhbmRsZXMvSGFuZGxlSGVhcC5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3RTRGQzhBMTJGOEU0Q0EwMEFGNENGNCAvKiBI
YW5kbGVIZWFwLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEhhbmRsZUhlYXAu
aDsgcGF0aCA9IGNvbGxlY3Rvci9oYW5kbGVzL0hhbmRsZUhlYXAuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQTdGMTlFQ0QxMURENDkwOTAwOTMxRTcwIC8qIEZpeGVkQXJyYXkuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRml4ZWRBcnJheS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlBN0Y4NjkwRTBGOTU4NEExMDA1NTg2OTcgLyogQ2FjaGVkQ2Fs
bC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDYWNoZWRDYWxsLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3Rjg2OUVDMEY5NUMyRUMwMDU1ODY5NyAvKiBDYWxs
RnJhbWVDbG9zdXJlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENhbGxGcmFt
ZUNsb3N1cmUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTExNTYsOCArMTE2NCw2
IEBACiAJCUQyMTIwMjI4MEFENDMxMEMwMEVENzlCNiAvKiBEYXRlQ29udmVyc2lvbi5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRGF0ZUNvbnZlcnNpb24uY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEMjEyMDIyOTBBRDQzMTBDMDBFRDc5QjYgLyog
RGF0ZUNvbnZlcnNpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERhdGVD
b252ZXJzaW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUREMzc3Q0JCMTIwNzJD
MTgwMDZBMjUxNyAvKiBCaXRtYXAuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
Qml0bWFwLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCURERTgyQUQxMTIwOUQ5NTUw
MDVDMTc1NiAvKiBHQ0hhbmRsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBHQ0hhbmRsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCURERTgyQUQy
MTIwOUQ5NTUwMDVDMTc1NiAvKiBHQ0hhbmRsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBHQ0hhbmRsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEREY3QUJE
MjExRjYwRUQyMDAxMDhFMzYgLyogR0NBY3Rpdml0eUNhbGxiYWNrLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEdDQWN0aXZpdHlDYWxsYmFjay5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlEREY3QUJEMzExRjYwRUQyMDAxMDhFMzYgLyogR0NBY3Rpdml0eUNhbGxi
YWNrQ0YuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR0NBY3Rpdml0
eUNhbGxiYWNrQ0YuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMTFENTE3NTBC
MkU3OThEMDA1NkMxODggLyogU3RyaW5nRXh0cmFzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFN0cmluZ0V4dHJhcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
MTI0OCw5ICsxMjU0LDkgQEAKIAkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CiAJCQlm
aWxlcyA9ICgKIAkJCQk5MzJGNUJEMzA4MjJBMUM3MDA3MzY5NzUgLyogQ29yZUZvdW5kYXRpb24u
ZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8sCi0JCQkJOTMyRjVCRDUwODIyQTFDNzAwNzM2OTc1
IC8qIEZvdW5kYXRpb24uZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8sCiAJCQkJOTMyRjVCRDcw
ODIyQTFDNzAwNzM2OTc1IC8qIGxpYmljdWNvcmUuZHlsaWIgaW4gRnJhbWV3b3JrcyAqLywKIAkJ
CQk5MzJGNUJENjA4MjJBMUM3MDA3MzY5NzUgLyogbGlib2JqYy5keWxpYiBpbiBGcmFtZXdvcmtz
ICovLAorCQkJCUE3MzFCMjVBMTMwMDkzODgwMDQwQTdGQSAvKiBGb3VuZGF0aW9uLmZyYW1ld29y
ayBpbiBGcmFtZXdvcmtzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHBy
b2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMTMwMyw2ICsxMzA5LDcgQEAKIAkJCQk5Njg4Q0IxMjBF
RDEyQjRFMDAxRDY0OUYgLyogYXNzZW1ibGVyICovLAogCQkJCTk2OUEwNzhGMEVEMUQzQUUwMEYx
RjY4MSAvKiBieXRlY29kZSAqLywKIAkJCQk3RTM5RDgxRDBFQzM4RUZBMDAzQUYxMUEgLyogYnl0
ZWNvbXBpbGVyICovLAorCQkJCUE3RTRGQzgzMTJGOEU0QTMwMEFGNENGNCAvKiBjb2xsZWN0b3Ig
Ki8sCiAJCQkJMTQ4MERCOUEwRERDMjIzMTAwM0NGREYyIC8qIGRlYnVnZ2VyICovLAogCQkJCTE0
MjlENzdBMEVEMjBENzMwMEI4OTYxOSAvKiBpbnRlcnByZXRlciAqLywKIAkJCQkxNDI5RDkyQzBF
RDIyRDcwMDBCODk2MTkgLyogaml0ICovLApAQCAtMTUxMCw2ICsxNTE3LDkgQEAKIAkJNjUxNjJF
RjEwOEU2QTIxQzAwNzU1NkNEIC8qIHd0ZiAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJ
Y2hpbGRyZW4gPSAoCisJCQkJQTdDNDBDMDcxMzBCMDU3RDAwRDAwMkExIC8qIEJsb2NrU3RhY2su
aCAqLywKKwkJCQlBN0M0MEMwODEzMEIwNTdEMDBEMDAyQTEgLyogU2VudGluZWxMaW5rZWRMaXN0
LmggKi8sCisJCQkJQTdDNDBDMDkxMzBCMDU3RDAwRDAwMkExIC8qIFNpbmdseUxpbmtlZExpc3Qu
aCAqLywKIAkJCQk1MTM1RkFENTEyRDI2ODU2MDAzQzA4M0IgLyogRGVjb2Rlci5oICovLAogCQkJ
CTUxMzVGQUQ2MTJEMjY4NTYwMDNDMDgzQiAvKiBFbmNvZGVyLmggKi8sCiAJCQkJOTNBQTRGNzcw
OTU3MjUxRjAwODRCM0E3IC8qIEFsd2F5c0lubGluZS5oICovLApAQCAtMTczMiw4ICsxNzQyLDYg
QEAKIAkJCQlGNjkyQTg1RDAyNTU1OTdEMDFGRjYwRjcgLyogRnVuY3Rpb25Qcm90b3R5cGUuaCAq
LywKIAkJCQlEREY3QUJEMjExRjYwRUQyMDAxMDhFMzYgLyogR0NBY3Rpdml0eUNhbGxiYWNrLmgg
Ki8sCiAJCQkJRERGN0FCRDMxMUY2MEVEMjAwMTA4RTM2IC8qIEdDQWN0aXZpdHlDYWxsYmFja0NG
LmNwcCAqLywKLQkJCQlEREU4MkFEMTEyMDlEOTU1MDA1QzE3NTYgLyogR0NIYW5kbGUuY3BwICov
LAotCQkJCURERTgyQUQyMTIwOUQ5NTUwMDVDMTc1NiAvKiBHQ0hhbmRsZS5oICovLAogCQkJCUJD
MDJFOUI4MEUxODQ1NDUwMDBGOTI5NyAvKiBHZXR0ZXJTZXR0ZXIuY3BwICovLAogCQkJCUJDMzM3
QkRFMEUxQUYwQjgwMDc2OTE4QSAvKiBHZXR0ZXJTZXR0ZXIuaCAqLywKIAkJCQlCQzI1N0RFRDBF
MUY1MkVEMDAxNkI2QzkgLyogR2xvYmFsRXZhbEZ1bmN0aW9uLmNwcCAqLywKQEAgLTIwNDcsNiAr
MjA1NSwyNSBAQAogCQkJbmFtZSA9IGFwaTsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CiAJ
CX07CisJCUE3RTRGQzgzMTJGOEU0QTMwMEFGNENGNCAvKiBjb2xsZWN0b3IgKi8gPSB7CisJCQlp
c2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCUE3RTRGQzg1MTJGOEU0QjEwMEFG
NENGNCAvKiBoYW5kbGVzICovLAorCQkJKTsKKwkJCW5hbWUgPSBjb2xsZWN0b3I7CisJCQlzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOworCQl9OworCQlBN0U0RkM4NTEyRjhFNEIxMDBBRjRDRjQgLyog
aGFuZGxlcyAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJ
QTdFNEZDODcxMkY4RTRDQTAwQUY0Q0Y0IC8qIEdsb2JhbC5oICovLAorCQkJCUE3RTRGQzg4MTJG
OEU0Q0EwMEFGNENGNCAvKiBIYW5kbGUuaCAqLywKKwkJCQlBN0U0RkM4OTEyRjhFNENBMDBBRjRD
RjQgLyogSGFuZGxlSGVhcC5jcHAgKi8sCisJCQkJQTdFNEZDOEExMkY4RTRDQTAwQUY0Q0Y0IC8q
IEhhbmRsZUhlYXAuaCAqLywKKwkJCSk7CisJCQluYW1lID0gaGFuZGxlczsKKwkJCXNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7CisJCX07CiAJCUUxOTU2NzhEMDlFN0NGMTIwMEI4OUQxMyAvKiB1bmlj
b2RlICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKQEAgLTIwODIs
NyArMjEwOSw2IEBACiAJCQkJMTQ0MDA3NTcwQTUzNzBEMjAwMDVGMDYxIC8qIEpTTm9kZUxpc3Qu
aCBpbiBIZWFkZXJzICovLAogCQkJCTE0NDAwNUNDMEE1MzM4RjgwMDA1RjA2MSAvKiBOb2RlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkxNDQwMDc0QTBBNTM2Q0MyMDAwNUYwNjEgLyogTm9kZUxpc3Qu
aCBpbiBIZWFkZXJzICovLAotCQkJCURERTgyQUQ2MTIwOUQ5NTUwMDVDMTc1NiAvKiBHQ0hhbmRs
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJv
Y2Vzc2luZyA9IDA7CiAJCX07CkBAIC0yMTY1LDcgKzIxOTEsNiBAQAogCQkJCUJDMThDNDA0MEUx
NkY1Q0QwMEIzNDQ2MCAvKiBGdW5jdGlvbkNvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlCQzE4QzQwNTBFMTZGNUNEMDBCMzQ0NjAgLyogRnVuY3Rpb25Qcm90b3R5cGUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCURERjdBQkQ0MTFGNjBFRDIwMDEwOEUzNiAvKiBHQ0FjdGl2aXR5Q2FsbGJh
Y2suaCBpbiBIZWFkZXJzICovLAotCQkJCURERTgyQUQ4MTIwOUQ5NTUwMDVDMTc1NiAvKiBHQ0hh
bmRsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0MDYwRTE2RjVDRDAwQjM0NDYwIC8qIEdl
dFB0ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMyNTdERjAwRTFGNTJFRDAwMTZCNkM5IC8qIEds
b2JhbEV2YWxGdW5jdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0MDgwRTE2RjVDRDAw
QjM0NDYwIC8qIEhhc2hDb3VudGVkU2V0LmggaW4gSGVhZGVycyAqLywKQEAgLTI0MTUsNiArMjQ0
MCwxMiBAQAogCQkJCUU0RDhDRUZCMTJGQzQzOTYwMEJDOUY1QSAvKiBCbG9vbUZpbHRlci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJOTc5NDFBNUExMzAyOUFDQzAwNEEzNDQ3IC8qIE9TUmFuZG9tU291
cmNlLmggaW4gSGVhZGVycyAqLywKIAkJCQk5Nzk0MUE3RjEzMDJBMDk4MDA0QTM0NDcgLyogQ3J5
cHRvZ3JhcGhpY2FsbHlSYW5kb21OdW1iZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCUE3RTRGQzhG
MTJGOEU0Q0EwMEFGNENGNCAvKiBHbG9iYWwuaCBpbiBIZWFkZXJzICovLAorCQkJCUE3RTRGQzkw
MTJGOEU0Q0EwMEFGNENGNCAvKiBIYW5kbGUuaCBpbiBIZWFkZXJzICovLAorCQkJCUE3RTRGQzky
MTJGOEU0Q0EwMEFGNENGNCAvKiBIYW5kbGVIZWFwLmggaW4gSGVhZGVycyAqLywKKwkJCQlBN0M0
MEMwQTEzMEIwNTdEMDBEMDAyQTEgLyogQmxvY2tTdGFjay5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
QTdDNDBDMEIxMzBCMDU3RDAwRDAwMkExIC8qIFNlbnRpbmVsTGlua2VkTGlzdC5oIGluIEhlYWRl
cnMgKi8sCisJCQkJQTdDNDBDMEMxMzBCMDU3RDAwRDAwMkExIC8qIFNpbmdseUxpbmtlZExpc3Qu
aCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nl
c3NpbmcgPSAwOwogCQl9OwpAQCAtMjY3Niw3ICsyNzA3LDYgQEAKIAkJCQkxNDEyMTEzNDBBNDg3
OTU4MDA0ODAyNTUgLyogbWluaWRvbS5jIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQ0MDA2M0YwQTUz
NTk4QTAwMDVGMDYxIC8qIE5vZGUuYyBpbiBTb3VyY2VzICovLAogCQkJCTE0NDAwNzRCMEE1MzZD
QzIwMDA1RjA2MSAvKiBOb2RlTGlzdC5jIGluIFNvdXJjZXMgKi8sCi0JCQkJRERFODJBRDUxMjA5
RDk1NTAwNUMxNzU2IC8qIEdDSGFuZGxlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1
bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMjY4NSw3ICsy
NzE1LDYgQEAKIAkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CiAJCQlmaWxlcyA9ICgK
IAkJCQkxNDQwRjYxMDBBNEY4NTY3MDAwNUYwNjEgLyogdGVzdGFwaS5jIGluIFNvdXJjZXMgKi8s
Ci0JCQkJRERFODJBRDQxMjA5RDk1NTAwNUMxNzU2IC8qIEdDSGFuZGxlLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwog
CQl9OwpAQCAtMjczOSw3ICsyNzY4LDYgQEAKIAkJCQkxNDdGMzlDQjEwN0VDMzc2MDA0MjdBNDgg
LyogRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDdGMzlDQzEw
N0VDMzc2MDA0MjdBNDggLyogRnVuY3Rpb25Qcm90b3R5cGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJRERGN0FCRDUxMUY2MEVEMjAwMTA4RTM2IC8qIEdDQWN0aXZpdHlDYWxsYmFja0NGLmNwcCBp
biBTb3VyY2VzICovLAotCQkJCURERTgyQUQ3MTIwOUQ5NTUwMDVDMTc1NiAvKiBHQ0hhbmRsZS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDI4MDg1NTEwN0VDMEU3MDAxM0U3QjIgLyogR2V0dGVy
U2V0dGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0N0YzOUNEMTA3RUMzNzYwMDQyN0E0OCAv
KiBHbG9iYWxFdmFsRnVuY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNjVERkM5MzMwOEVB
MTczQTAwRjczMDBCIC8qIEhhc2hUYWJsZS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTI4NzgsOSAr
MjkwNiwxMCBAQAogCQkJCTg2NzA0Qjg5MTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJyUGF0dGVybi5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQk4NjcwNEI0MjEyREI4QTgxMDBBOUZFN0IgLyogWWFyclN5
bnRheENoZWNrZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTQ5REMxNkIxMkVGMjkzRTAwMTg0
QTFGIC8qIFNvdXJjZVByb3ZpZGVyQ2FjaGUuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJMTRDODI0
QUIxMkY3Qzc3RTAwOEYzNUUwIC8qIE1hcmtlZEJsb2NrLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTk3OTQxQTU3MTMwMjlBQUIwMDRBMzQ0NyAvKiBPU1JhbmRvbVNvdXJjZS5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQk5Nzk0MUE3RTEzMDJBMDk4MDA0QTM0NDcgLyogQ3J5cHRvZ3JhcGhpY2FsbHlS
YW5kb21OdW1iZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQTdFNEZDOTExMkY4RTRDQTAwQUY0
Q0Y0IC8qIEhhbmRsZUhlYXAuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQTdBQzI1QkQxMzA0RDE0
NjAwMzM5NkRFIC8qIE1hcmtlZEJsb2NrLmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1
bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMjg4OSw3ICsy
OTE4LDYgQEAKIAkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CiAJCQlmaWxlcyA9ICgK
IAkJCQk5MzJGNUJERDA4MjJBMUM3MDA3MzY5NzUgLyoganNjLmNwcCBpbiBTb3VyY2VzICovLAot
CQkJCURERTgyQUQzMTIwOUQ5NTUwMDVDMTc1NiAvKiBHQ0hhbmRsZS5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQk5NzJBNDg1RjEyNjYxRTA4MDBGNDUxNEYgLyogVVJMQ2hhcmFjdGVyVHlwZXMuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJOTcyQTQ4NzcxMjY2MjU2RjAwRjQ1MTRGIC8qIFVSTEVzY2Fw
ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvY29sbGVjdG9yL2hhbmRsZXMvR2xvYmFsLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Y29sbGVjdG9yL2hhbmRsZXMvR2xvYmFsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTcxZmUzMTIxMzc2OTQyYzVh
YWYyNTdiN2ViOGZjMjBhYjBlMWE2YgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9jb2xsZWN0b3IvaGFuZGxlcy9HbG9iYWwuaApAQCAtMCwwICsxLDE1OSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpZm5kZWYgR2xvYmFsX2gKKyNkZWZpbmUgR2xvYmFsX2gKKworI2luY2x1ZGUg
IkFzc2VydGlvbnMuaCIKKyNpbmNsdWRlICJIYW5kbGUuaCIKKyNpbmNsdWRlICJIYW5kbGVIZWFw
LmgiCisjaW5jbHVkZSAiSlNHbG9iYWxEYXRhLmgiCisKK25hbWVzcGFjZSBKU0MgeworCisvKgor
ICAgIEEgR2xvYmFsIGlzIGEgcGVyc2lzdGVudCBoYW5kbGUgd2hvc2UgbGlmZXRpbWUgaXMgbm90
IGxpbWl0ZWQgdG8gYW55IGdpdmVuCisgICAgc2NvcGUuIFVzZSBHbG9iYWxzIGZvciBkYXRhIG1l
bWJlcnMgYW5kIGdsb2JhbCB2YXJpYWJsZXMuCisqLworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4g
Y2xhc3MgR2xvYmFsIDogcHVibGljIEhhbmRsZTxUPiB7CitwdWJsaWM6CisgICAgdHlwZWRlZiB0
eXBlbmFtZSBIYW5kbGU8VD46OkV4dGVybmFsVHlwZSBFeHRlcm5hbFR5cGU7CisgICAgR2xvYmFs
KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgRXh0ZXJuYWxUeXBlIHB0ciA9IEV4dGVybmFsVHlw
ZSgpKQorICAgICAgICA6IEhhbmRsZTxUPihnbG9iYWxEYXRhLmFsbG9jYXRlR2xvYmFsSGFuZGxl
KCkpCisgICAgeworICAgICAgICBpbnRlcm5hbFNldChwdHIpOworICAgIH0KKworICAgIEdsb2Jh
bChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEhhbmRsZTxUPiBoYW5kbGUpCisgICAgICAgIDog
SGFuZGxlPFQ+KGdsb2JhbERhdGEuYWxsb2NhdGVHbG9iYWxIYW5kbGUoKSkKKyAgICB7CisgICAg
ICAgIGludGVybmFsU2V0KGhhbmRsZS5nZXQoKSk7CisgICAgfQorICAgIAorICAgIGVudW0gRW1w
dHlWYWx1ZVRhZyB7IEVtcHR5VmFsdWUgfTsKKyAgICBHbG9iYWwoRW1wdHlWYWx1ZVRhZykKKyAg
ICAgICAgOiBIYW5kbGU8VD4oMCwgSGFuZGxlQmFzZTo6RG9udE51bGxDaGVja1Nsb3QpCisgICAg
eworICAgIH0KKworICAgIH5HbG9iYWwoKQorICAgIHsKKyAgICAgICAgSGFuZGxlU2xvdCBzbG90
ID0gdGhpcy0+c2xvdCgpOworICAgICAgICBpZiAoc2xvdCkKKyAgICAgICAgICAgIEhhbmRsZUhl
YXA6OmhlYXBGb3Ioc2xvdCktPmRlYWxsb2NhdGUoc2xvdCk7CisgICAgfQorCisgICAgdm9pZCBz
ZXQoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBFeHRlcm5hbFR5cGUgdmFsdWUpCisgICAgewor
ICAgICAgICBpZiAoIXZhbHVlKSB7CisgICAgICAgICAgICBjbGVhcigpOworICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICB9CisgICAgICAgIGlmICghdGhpcy0+c2xvdCgpKQorICAgICAgICAg
ICAgdGhpcy0+c2V0U2xvdChnbG9iYWxEYXRhLmFsbG9jYXRlR2xvYmFsSGFuZGxlKCkpOworICAg
ICAgICBpbnRlcm5hbFNldCh2YWx1ZSk7CisgICAgfQorCisgICAgdGVtcGxhdGUgPHR5cGVuYW1l
IFU+IEdsb2JhbCYgb3BlcmF0b3I9KGNvbnN0IEdsb2JhbDxVPiYgaGFuZGxlKQorICAgIHsKKyAg
ICAgICAgaWYgKGhhbmRsZS5zbG90KCkpIHsKKyAgICAgICAgICAgIGlmICghdGhpcy0+c2xvdCgp
KQorICAgICAgICAgICAgICAgIHRoaXMtPnNldFNsb3QoSGFuZGxlSGVhcDo6aGVhcEZvcihoYW5k
bGUuc2xvdCgpKS0+YWxsb2NhdGUoKSk7CisgICAgICAgICAgICBpbnRlcm5hbFNldChoYW5kbGUu
Z2V0KCkpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIGNsZWFyKCk7CisgICAgICAgIAor
ICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgfQorICAgIAorICAgIEdsb2JhbCYgb3BlcmF0b3I9
KGNvbnN0IEdsb2JhbCYgaGFuZGxlKQorICAgIHsKKyAgICAgICAgaWYgKGhhbmRsZS5zbG90KCkp
IHsKKyAgICAgICAgICAgIGlmICghdGhpcy0+c2xvdCgpKQorICAgICAgICAgICAgICAgIHRoaXMt
PnNldFNsb3QoSGFuZGxlSGVhcDo6aGVhcEZvcihoYW5kbGUuc2xvdCgpKS0+YWxsb2NhdGUoKSk7
CisgICAgICAgICAgICBpbnRlcm5hbFNldChoYW5kbGUuZ2V0KCkpOworICAgICAgICB9IGVsc2UK
KyAgICAgICAgICAgIGNsZWFyKCk7CisgICAgICAgIAorICAgICAgICByZXR1cm4gKnRoaXM7Cisg
ICAgfQorCisgICAgdm9pZCBjbGVhcigpCisgICAgeworICAgICAgICBpZiAodGhpcy0+c2xvdCgp
KQorICAgICAgICAgICAgaW50ZXJuYWxTZXQoRXh0ZXJuYWxUeXBlKCkpOworICAgIH0KKworICAg
IGVudW0gSGFzaFRhYmxlRGVsZXRlZFZhbHVlVHlwZSB7IEhhc2hUYWJsZURlbGV0ZWRWYWx1ZSB9
OworICAgIGNvbnN0IHN0YXRpYyBpbnRwdHJfdCBIYXNoVGFibGVEZWxldGVkVmFsdWVUYWcgPSAw
eDE7CisgICAgR2xvYmFsKEhhc2hUYWJsZURlbGV0ZWRWYWx1ZVR5cGUpCisgICAgICAgIDogSGFu
ZGxlPFQ+KHJlaW50ZXJwcmV0X2Nhc3Q8SGFuZGxlU2xvdD4oSGFzaFRhYmxlRGVsZXRlZFZhbHVl
VGFnKSkKKyAgICB7CisgICAgfQorICAgIGJvb2wgaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKSBj
b25zdCB7IHJldHVybiBzbG90KCkgPT0gcmVpbnRlcnByZXRfY2FzdDxIYW5kbGVTbG90PihIYXNo
VGFibGVEZWxldGVkVmFsdWVUYWcpOyB9CisKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVT4gR2xv
YmFsKGNvbnN0IEdsb2JhbDxVPiYgb3RoZXIpCisgICAgICAgIDogSGFuZGxlPFQ+KG90aGVyLnNs
b3QoKSA/IEhhbmRsZUhlYXA6OmhlYXBGb3Iob3RoZXIuc2xvdCgpKS0+YWxsb2NhdGUoKSA6IDAs
IEhhbmRsZTxUPjo6RG9udE51bGxDaGVja1Nsb3QpCisgICAgeworICAgICAgICBpZiAob3RoZXIu
c2xvdCgpKQorICAgICAgICAgICAgaW50ZXJuYWxTZXQob3RoZXIuZ2V0KCkpOworICAgIH0KKyAg
ICAKKyAgICBHbG9iYWwoY29uc3QgR2xvYmFsJiBvdGhlcikKKyAgICAgICAgOiBIYW5kbGU8VD4o
b3RoZXIuc2xvdCgpID8gSGFuZGxlSGVhcDo6aGVhcEZvcihvdGhlci5zbG90KCkpLT5hbGxvY2F0
ZSgpIDogMCwgSGFuZGxlPFQ+OjpEb250TnVsbENoZWNrU2xvdCkKKyAgICB7CisgICAgICAgIGlm
IChvdGhlci5zbG90KCkpCisgICAgICAgICAgICBpbnRlcm5hbFNldChvdGhlci5nZXQoKSk7Cisg
ICAgfQorCitwcm90ZWN0ZWQ6CisgICAgdm9pZCBpbnRlcm5hbFNldChFeHRlcm5hbFR5cGUgdmFs
dWUpCisgICAgeworICAgICAgICBKU1ZhbHVlIG5ld1ZhbHVlKEhhbmRsZVR5cGVzPFQ+Ojp0b0pT
VmFsdWUodmFsdWUpKTsKKyAgICAgICAgSGFuZGxlU2xvdCBzbG90ID0gdGhpcy0+c2xvdCgpOwor
ICAgICAgICBBU1NFUlQoc2xvdCk7CisgICAgICAgIEhhbmRsZUhlYXA6OmhlYXBGb3Ioc2xvdCkt
PndyaXRlQmFycmllcihzbG90LCBuZXdWYWx1ZSk7CisgICAgICAgICpzbG90ID0gbmV3VmFsdWU7
CisgICAgfQorCisgICAgdXNpbmcgSGFuZGxlPFQ+OjpzbG90OworICAgIAorfTsKKworfQorCitu
YW1lc3BhY2UgV1RGIHsKKwordGVtcGxhdGU8dHlwZW5hbWUgUD4gc3RydWN0IEhhc2hUcmFpdHM8
SlNDOjpHbG9iYWw8UD4gPiA6IEdlbmVyaWNIYXNoVHJhaXRzPEpTQzo6R2xvYmFsPFA+ID4gewor
ICAgIHN0YXRpYyBjb25zdCBib29sIGVtcHR5VmFsdWVJc1plcm8gPSB0cnVlOworICAgIHN0YXRp
YyBKU0M6Okdsb2JhbDxQPiBlbXB0eVZhbHVlKCkgeyByZXR1cm4gSlNDOjpHbG9iYWw8UD4oSlND
OjpHbG9iYWw8UD46OkVtcHR5VmFsdWUpOyB9CisgICAgc3RhdGljIHZvaWQgY29uc3RydWN0RGVs
ZXRlZFZhbHVlKEpTQzo6R2xvYmFsPFA+JiBzbG90KSB7IG5ldyAoJnNsb3QpIEpTQzo6R2xvYmFs
PFA+KEpTQzo6R2xvYmFsPFA+OjpIYXNoVGFibGVEZWxldGVkVmFsdWUpOyB9CisgICAgc3RhdGlj
IGJvb2wgaXNEZWxldGVkVmFsdWUoY29uc3QgSlNDOjpHbG9iYWw8UD4mIHZhbHVlKSB7IHJldHVy
biB2YWx1ZS5pc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpOyB9Cit9OworCit9CisKKyNlbmRpZiAv
LyBHbG9iYWxfaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2NvbGxlY3Rvci9o
YW5kbGVzL0hhbmRsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2NvbGxlY3Rvci9oYW5kbGVz
L0hhbmRsZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk4YzYwZWNiY2M0YmVhODY1MzI4N2RlODY3YzVhODEzMjc1
OGJiNzcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvY29sbGVjdG9y
L2hhbmRsZXMvSGFuZGxlLmgKQEAgLTAsMCArMSwxODkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVm
IEhhbmRsZV9oCisjZGVmaW5lIEhhbmRsZV9oCisKKyNpbmNsdWRlICJXcml0ZUJhcnJpZXIuaCIK
KworI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CisKK25hbWVzcGFjZSBKU0MgeworCisvKgor
ICAgIEEgSGFuZGxlIGlzIGEgc21hcnQgcG9pbnRlciB0aGF0IHVwZGF0ZXMgYXV0b21hdGljYWxs
eSB3aGVuIHRoZSBnYXJiYWdlCisgICAgY29sbGVjdG9yIG1vdmVzIHRoZSBvYmplY3QgdG8gd2hp
Y2ggaXQgcG9pbnRzLgorCisgICAgVGhlIGJhc2UgSGFuZGxlIGNsYXNzIHJlcHJlc2VudHMgYSB0
ZW1wb3JhcnkgcmVmZXJlbmNlIHRvIGEgcG9pbnRlciB3aG9zZQorICAgIGxpZmV0aW1lIGlzIGd1
YXJhbnRlZWQgYnkgc29tZXRoaW5nIGVsc2UuCisqLworCit0ZW1wbGF0ZSA8Y2xhc3MgVD4gY2xh
c3MgSGFuZGxlOworCisvLyBDcmVhdGluZyBhIEpTVmFsdWUgSGFuZGxlIGlzIGludmFsaWQKK3Rl
bXBsYXRlIDw+IGNsYXNzIEhhbmRsZTxKU1ZhbHVlPjsKKworY2xhc3MgSGFuZGxlQmFzZSB7Cisg
ICAgZnJpZW5kIGNsYXNzIEhhbmRsZUhlYXA7CisKK3B1YmxpYzoKKyAgICBib29sIG9wZXJhdG9y
ISgpIGNvbnN0IHsgcmV0dXJuIGlzRW1wdHkoKTsgfQorCisgICAgLy8gVGhpcyBjb252ZXJzaW9u
IG9wZXJhdG9yIGFsbG93cyBpbXBsaWNpdCBjb252ZXJzaW9uIHRvIGJvb2wgYnV0IG5vdCB0byBv
dGhlciBpbnRlZ2VyIHR5cGVzLgorICAgIHR5cGVkZWYgSlNWYWx1ZSAoSGFuZGxlQmFzZTo6KlVu
c3BlY2lmaWVkQm9vbFR5cGUpOworICAgIG9wZXJhdG9yIFVuc3BlY2lmaWVkQm9vbFR5cGUqKCkg
Y29uc3QgeyByZXR1cm4gKG1fc2xvdCAmJiAqbV9zbG90KSA/IHJlaW50ZXJwcmV0X2Nhc3Q8VW5z
cGVjaWZpZWRCb29sVHlwZSo+KDEpIDogMDsgfQorCisgICAgYm9vbCBpc0VtcHR5KCkgY29uc3Qg
eyByZXR1cm4gIW1fc2xvdCB8fCAhKm1fc2xvdDsgfQorCitwcm90ZWN0ZWQ6CisgICAgSGFuZGxl
QmFzZShIYW5kbGVTbG90IHNsb3QpCisgICAgICAgIDogbV9zbG90KHNsb3QpCisgICAgeworICAg
ICAgICBBU1NFUlQoc2xvdCk7CisgICAgfQorCisgICAgZW51bSBEb250TnVsbENoZWNrU2xvdFRh
ZyB7IERvbnROdWxsQ2hlY2tTbG90IH07CisgICAgSGFuZGxlQmFzZShIYW5kbGVTbG90IHNsb3Qs
IERvbnROdWxsQ2hlY2tTbG90VGFnKQorICAgICAgICA6IG1fc2xvdChzbG90KQorICAgIHsKKyAg
ICB9CisgICAgCisgICAgSGFuZGxlU2xvdCBzbG90KCkgY29uc3QgeyByZXR1cm4gbV9zbG90OyB9
CisgICAgdm9pZCBpbnZhbGlkYXRlKCkKKyAgICB7CisgICAgICAgIC8vIEl0IGlzIHVuc2FmZSB0
byB1c2UgYSBoYW5kbGUgYWZ0ZXIgaW52YWxpZGF0aW5nIGl0LgorICAgICAgICBtX3Nsb3QgPSAw
OworICAgIH0KKworICAgIC8vIG5lZWRlZCBieSBHbG9iYWw8Pjo6b3BlcmF0b3I9IGFuZCBHbG9i
YWw8Pjo6c2V0IGlmIGl0J3MgYW4gZW1wdHkgaGFuZGxlCisgICAgdm9pZCBzZXRTbG90KEhhbmRs
ZVNsb3Qgc2xvdCkKKyAgICB7CisgICAgICAgIEFTU0VSVCghbV9zbG90KTsKKyAgICAgICAgQVNT
RVJUKHNsb3QpOworICAgICAgICBtX3Nsb3QgPSBzbG90OworICAgIH0KKworcHJpdmF0ZToKKyAg
ICBIYW5kbGVTbG90IG1fc2xvdDsKK307CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdHJ1Y3Qg
SGFuZGxlVHlwZXMgeworICAgIHR5cGVkZWYgVCogRXh0ZXJuYWxUeXBlOworICAgIHN0YXRpYyBF
eHRlcm5hbFR5cGUgZ2V0RnJvbVNsb3QoSGFuZGxlU2xvdCBzbG90KSB7IHJldHVybiAoc2xvdCAm
JiAqc2xvdCkgPyByZWludGVycHJldF9jYXN0PEV4dGVybmFsVHlwZT4oc2xvdC0+YXNDZWxsKCkp
IDogMDsgfQorICAgIHN0YXRpYyBKU1ZhbHVlIHRvSlNWYWx1ZShUKiBjZWxsKSB7IHJldHVybiBy
ZWludGVycHJldF9jYXN0PEpTQ2VsbCo+KGNlbGwpOyB9CisgICAgdGVtcGxhdGUgPHR5cGVuYW1l
IFU+IHN0YXRpYyB2b2lkIHZhbGlkYXRlVXBjYXN0KCkgeyBUKiB0ZW1wOyB0ZW1wID0gKFUqKTA7
IH0KK307CisKK3RlbXBsYXRlIDw+IHN0cnVjdCBIYW5kbGVUeXBlczxVbmtub3duPiB7CisgICAg
dHlwZWRlZiBKU1ZhbHVlIEV4dGVybmFsVHlwZTsKKyAgICBzdGF0aWMgRXh0ZXJuYWxUeXBlIGdl
dEZyb21TbG90KEhhbmRsZVNsb3Qgc2xvdCkgeyByZXR1cm4gc2xvdCA/ICpzbG90IDogSlNWYWx1
ZSgpOyB9CisgICAgc3RhdGljIEpTVmFsdWUgdG9KU1ZhbHVlKGNvbnN0IEpTVmFsdWUmIHYpIHsg
cmV0dXJuIHY7IH0KKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVT4gc3RhdGljIHZvaWQgdmFsaWRh
dGVVcGNhc3QoKSB7fQorfTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIEJhc2UsIHR5cGVuYW1lIFQ+
IHN0cnVjdCBIYW5kbGVDb252ZXJ0ZXIgeworICAgIFQqIG9wZXJhdG9yLT4oKSB7IHJldHVybiBz
dGF0aWNfY2FzdDxCYXNlKj4odGhpcyktPmdldCgpOyB9CisgICAgY29uc3QgVCogb3BlcmF0b3It
PigpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IEJhc2UqPih0aGlzKS0+Z2V0KCk7
IH0KKyAgICBUKiBvcGVyYXRvciooKSB7IHJldHVybiBzdGF0aWNfY2FzdDxCYXNlKj4odGhpcykt
PmdldCgpOyB9CisgICAgY29uc3QgVCogb3BlcmF0b3IqKCkgY29uc3QgeyByZXR1cm4gc3RhdGlj
X2Nhc3Q8Y29uc3QgQmFzZSo+KHRoaXMpLT5nZXQoKTsgfQorfTsKKwordGVtcGxhdGUgPHR5cGVu
YW1lIEJhc2U+IHN0cnVjdCBIYW5kbGVDb252ZXJ0ZXI8QmFzZSwgVW5rbm93bj4geworfTsKKwor
dGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzIEhhbmRsZSA6IHB1YmxpYyBIYW5kbGVCYXNlLCBw
dWJsaWMgSGFuZGxlQ29udmVydGVyPEhhbmRsZTxUPiwgVD4geworcHVibGljOgorICAgIHR5cGVk
ZWYgdHlwZW5hbWUgSGFuZGxlVHlwZXM8VD46OkV4dGVybmFsVHlwZSBFeHRlcm5hbFR5cGU7Cisg
ICAgdGVtcGxhdGUgPHR5cGVuYW1lIFU+IEhhbmRsZShIYW5kbGU8VT4gbykKKyAgICB7CisgICAg
ICAgIHR5cGVuYW1lIEhhbmRsZVR5cGVzPFQ+Ojp0ZW1wbGF0ZSB2YWxpZGF0ZVVwY2FzdDxVPigp
OworICAgICAgICBtX3Nsb3QgPSBvLnNsb3QoKTsKKyAgICB9CisKKyAgICBFeHRlcm5hbFR5cGUg
Z2V0KCkgY29uc3QgeyByZXR1cm4gSGFuZGxlVHlwZXM8VD46OmdldEZyb21TbG90KHRoaXMtPnNs
b3QoKSk7IH0KKworcHJvdGVjdGVkOgorCisgICAgSGFuZGxlKEhhbmRsZVNsb3Qgc2xvdCkKKyAg
ICAgICAgOiBIYW5kbGVCYXNlKHNsb3QpCisgICAgeworICAgIH0KKyAgICBIYW5kbGUoSGFuZGxl
U2xvdCBzbG90LCBIYW5kbGVCYXNlOjpEb250TnVsbENoZWNrU2xvdFRhZykKKyAgICAgICAgOiBI
YW5kbGVCYXNlKHNsb3QsIEhhbmRsZUJhc2U6OkRvbnROdWxsQ2hlY2tTbG90KQorICAgIHsKKyAg
ICB9CisgICAgCitwcml2YXRlOgorICAgIGZyaWVuZCBjbGFzcyBIYW5kbGVIZWFwOworCisgICAg
c3RhdGljIEhhbmRsZTxUPiB3cmFwU2xvdChIYW5kbGVTbG90IHNsb3QpCisgICAgeworICAgICAg
ICByZXR1cm4gSGFuZGxlPFQ+KHNsb3QpOworICAgIH0KK307CisKK3RlbXBsYXRlIDx0eXBlbmFt
ZSBULCB0eXBlbmFtZSBVPiBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEhhbmRsZTxUPiYg
YSwgY29uc3QgSGFuZGxlPFU+JiBiKQoreyAKKyAgICByZXR1cm4gYS5nZXQoKSA9PSBiLmdldCgp
OyAKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+IGlubGluZSBib29sIG9w
ZXJhdG9yPT0oY29uc3QgSGFuZGxlPFQ+JiBhLCBVKiBiKQoreyAKKyAgICByZXR1cm4gYS5nZXQo
KSA9PSBiOyAKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+IGlubGluZSBi
b29sIG9wZXJhdG9yPT0oVCogYSwgY29uc3QgSGFuZGxlPFU+JiBiKSAKK3sKKyAgICByZXR1cm4g
YSA9PSBiLmdldCgpOyAKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+IGlu
bGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgSGFuZGxlPFQ+JiBhLCBjb25zdCBIYW5kbGU8VT4m
IGIpCit7IAorICAgIHJldHVybiBhLmdldCgpICE9IGIuZ2V0KCk7IAorfQorCit0ZW1wbGF0ZSA8
dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4gaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBIYW5k
bGU8VD4mIGEsIFUqIGIpCit7CisgICAgcmV0dXJuIGEuZ2V0KCkgIT0gYjsgCit9CisKK3RlbXBs
YXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBpbmxpbmUgYm9vbCBvcGVyYXRvciE9KFQqIGEs
IGNvbnN0IEhhbmRsZTxVPiYgYikKK3sgCisgICAgcmV0dXJuIGEgIT0gYi5nZXQoKTsgCit9CisK
K3RlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBpbmxpbmUgYm9vbCBvcGVyYXRvciE9
KGNvbnN0IEhhbmRsZTxUPiYgYSwgSlNWYWx1ZSBiKQoreworICAgIHJldHVybiBhLmdldCgpICE9
IGI7IAorfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4gaW5saW5lIGJvb2wg
b3BlcmF0b3IhPShKU1ZhbHVlIGEsIGNvbnN0IEhhbmRsZTxVPiYgYikKK3sgCisgICAgcmV0dXJu
IGEgIT0gYi5nZXQoKTsgCit9CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvY29sbGVjdG9yL2hhbmRsZXMvSGFuZGxlSGVhcC5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvY29sbGVjdG9yL2hhbmRsZXMvSGFuZGxlSGVhcC5jcHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
Y2NmZTljZDI5M2VjMjljMzcyZWM1YmZhNDU2OWUyN2Q2YzU2NWFkZAotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9jb2xsZWN0b3IvaGFuZGxlcy9IYW5kbGVIZWFwLmNw
cApAQCAtMCwwICsxLDExMSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKwor
I2luY2x1ZGUgIkhhbmRsZUhlYXAuaCIKKworI2luY2x1ZGUgIkpTQ2VsbC5oIgorCituYW1lc3Bh
Y2UgSlNDIHsKKworSGFuZGxlSGVhcDo6SGFuZGxlSGVhcChKU0dsb2JhbERhdGEqIGdsb2JhbERh
dGEpCisgICAgOiBtX2dsb2JhbERhdGEoZ2xvYmFsRGF0YSkKK3sKKyAgICBncm93KCk7Cit9CisK
K3ZvaWQgSGFuZGxlSGVhcDo6Z3JvdygpCit7CisgICAgTm9kZSogYmxvY2sgPSBtX2Jsb2NrU3Rh
Y2suZ3JvdygpOworICAgIGZvciAoaW50IGkgPSBtX2Jsb2NrU3RhY2suYmxvY2tMZW5ndGggLSAx
OyBpID49IDA7IC0taSkgeworICAgICAgICBOb2RlKiBub2RlID0gJmJsb2NrW2ldOworICAgICAg
ICBuZXcgKG5vZGUpIE5vZGUodGhpcyk7CisgICAgICAgIG1fZnJlZUxpc3QucHVzaChub2RlKTsK
KyAgICB9Cit9CisKK3ZvaWQgSGFuZGxlSGVhcDo6bWFya1N0cm9uZ0hhbmRsZXMoTWFya1N0YWNr
JiBtYXJrU3RhY2spCit7CisgICAgTm9kZSogZW5kID0gbV9zdHJvbmdMaXN0LmVuZCgpOworICAg
IGZvciAoTm9kZSogbm9kZSA9IG1fc3Ryb25nTGlzdC5iZWdpbigpOyBub2RlICE9IGVuZDsgbm9k
ZSA9IG5vZGUtPm5leHQoKSkKKyAgICAgICAgbWFya1N0YWNrLmRlcHJlY2F0ZWRBcHBlbmQobm9k
ZS0+c2xvdCgpKTsKK30KKwordm9pZCBIYW5kbGVIZWFwOjp1cGRhdGVBZnRlck1hcmsoKQorewor
ICAgIE5vZGUqIGVuZCA9IG1fd2Vha0xpc3QuZW5kKCk7CisgICAgZm9yIChOb2RlKiBub2RlID0g
bV93ZWFrTGlzdC5iZWdpbigpOyBub2RlICE9IGVuZDsgbm9kZSA9IG5vZGUtPm5leHQoKSkgewor
ICAgICAgICBKU1ZhbHVlIHZhbHVlID0gKm5vZGUtPnNsb3QoKTsKKyAgICAgICAgaWYgKCF2YWx1
ZSB8fCAhdmFsdWUuaXNDZWxsKCkpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgSlND
ZWxsKiBjZWxsID0gdmFsdWUuYXNDZWxsKCk7CisgICAgICAgIEFTU0VSVCghY2VsbCB8fCBjZWxs
LT5zdHJ1Y3R1cmUoKSk7CisKKyAgICAgICAgaWYgKEhlYXA6OmlzTWFya2VkKGNlbGwpKQorICAg
ICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgaWYgKEZpbmFsaXplciBmaW5hbGl6ZXIgPSBu
b2RlLT5maW5hbGl6ZXIoKSkKKyAgICAgICAgICAgIGZpbmFsaXplcigqbV9nbG9iYWxEYXRhLCBI
YW5kbGU8VW5rbm93bj46OndyYXBTbG90KG5vZGUtPnNsb3QoKSkpOworCisgICAgICAgIGlmIChu
b2RlLT5pc1NlbGZEZXN0cm95aW5nKCkpCisgICAgICAgICAgICBkZWFsbG9jYXRlKHRvSGFuZGxl
KG5vZGUpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgKm5vZGUtPnNsb3QoKSA9IEpTVmFs
dWUoKTsKKyAgICB9Cit9CisgICAgCit2b2lkIEhhbmRsZUhlYXA6OmNsZWFyV2Vha1BvaW50ZXJz
KCkKK3sKKyAgICBOb2RlKiBlbmQgPSBtX3dlYWtMaXN0LmVuZCgpOworICAgIGZvciAoTm9kZSog
bm9kZSA9IG1fd2Vha0xpc3QuYmVnaW4oKTsgbm9kZSAhPSBlbmQ7IG5vZGUgPSBub2RlLT5uZXh0
KCkpIHsKKyAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9ICpub2RlLT5zbG90KCk7CisgICAgICAgIGlm
ICghdmFsdWUgfHwgIXZhbHVlLmlzQ2VsbCgpKQorICAgICAgICAgICAgY29udGludWU7CisgICAg
ICAgIEFTU0VSVCh2YWx1ZS5hc0NlbGwoKS0+c3RydWN0dXJlKCkpOworCisgICAgICAgIGlmIChG
aW5hbGl6ZXIgZmluYWxpemVyID0gbm9kZS0+ZmluYWxpemVyKCkpCisgICAgICAgICAgICBmaW5h
bGl6ZXIoKm1fZ2xvYmFsRGF0YSwgSGFuZGxlPFVua25vd24+Ojp3cmFwU2xvdChub2RlLT5zbG90
KCkpKTsKKyAgICAgICAgKm5vZGUtPnNsb3QoKSA9IEpTVmFsdWUoKTsKKyAgICB9Cit9CisKK3Zv
aWQgSGFuZGxlSGVhcDo6d3JpdGVCYXJyaWVyKEhhbmRsZVNsb3Qgc2xvdCwgY29uc3QgSlNWYWx1
ZSYgdmFsdWUpCit7CisgICAgaWYgKHNsb3QtPmlzQ2VsbCgpID09IHZhbHVlLmlzQ2VsbCgpICYm
ICF2YWx1ZSA9PSAhKnNsb3QpCisgICAgICAgIHJldHVybjsKKyAgICBOb2RlKiBub2RlID0gdG9O
b2RlKHNsb3QpOworICAgIFNlbnRpbmVsTGlua2VkTGlzdDxOb2RlPjo6cmVtb3ZlKG5vZGUpOwor
ICAgIGlmICghdmFsdWUuaXNDZWxsKCkgfHwgIXZhbHVlKSB7CisgICAgICAgIG1faW1tZWRpYXRl
TGlzdC5wdXNoKG5vZGUpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlmIChub2RlLT5p
c1dlYWsoKSkKKyAgICAgICAgbV93ZWFrTGlzdC5wdXNoKG5vZGUpOworICAgIGVsc2UKKyAgICAg
ICAgbV9zdHJvbmdMaXN0LnB1c2gobm9kZSk7Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9jb2xsZWN0b3IvaGFuZGxlcy9IYW5kbGVIZWFwLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvY29sbGVjdG9yL2hhbmRsZXMvSGFuZGxlSGVhcC5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIz
YmI5ZWM3Nzc5ODIzZTI4NWE4ZTJiMWYyNDExZmE3MWI1OTI2OTcKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvY29sbGVjdG9yL2hhbmRsZXMvSGFuZGxlSGVhcC5oCkBA
IC0wLDAgKzEsMjQ5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBIYW5kbGVIZWFwX2gKKyNkZWZp
bmUgSGFuZGxlSGVhcF9oCisKKyNpbmNsdWRlICJCbG9ja1N0YWNrLmgiCisjaW5jbHVkZSAiSGFu
ZGxlLmgiCisjaW5jbHVkZSAiU2VudGluZWxMaW5rZWRMaXN0LmgiCisjaW5jbHVkZSAiU2luZ2x5
TGlua2VkTGlzdC5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgSGFuZGxlSGVhcDsKK2Ns
YXNzIEpTR2xvYmFsRGF0YTsKK2NsYXNzIEpTVmFsdWU7CitjbGFzcyBNYXJrU3RhY2s7CisKK3R5
cGVkZWYgdm9pZCAoKkZpbmFsaXplcikoSlNHbG9iYWxEYXRhJiwgSGFuZGxlPFVua25vd24+KTsK
KworY2xhc3MgSGFuZGxlSGVhcCB7Citwcml2YXRlOgorcHVibGljOgorICAgIHN0YXRpYyBIYW5k
bGVIZWFwKiBoZWFwRm9yKEhhbmRsZVNsb3QpOworCisgICAgSGFuZGxlSGVhcChKU0dsb2JhbERh
dGEqKTsKKworICAgIEhhbmRsZVNsb3QgYWxsb2NhdGUoKTsKKyAgICB2b2lkIGRlYWxsb2NhdGUo
SGFuZGxlU2xvdCk7CisgICAgCisgICAgdm9pZCBtYWtlV2VhayhIYW5kbGVTbG90LCBGaW5hbGl6
ZXIpOworICAgIHZvaWQgbWFrZVNlbGZEZXN0cm95aW5nKEhhbmRsZVNsb3QsIEZpbmFsaXplcik7
CisKKyAgICB2b2lkIG1hcmtTdHJvbmdIYW5kbGVzKE1hcmtTdGFjayYpOworICAgIHZvaWQgdXBk
YXRlQWZ0ZXJNYXJrKCk7CisgICAgCisgICAgLy8gU2hvdWxkIG9ubHkgYmUgY2FsbGVkIGR1cmlu
ZyB0ZWFyZG93bi4KKyAgICB2b2lkIGNsZWFyV2Vha1BvaW50ZXJzKCk7CisKKyAgICB2b2lkIHdy
aXRlQmFycmllcihIYW5kbGVTbG90LCBjb25zdCBKU1ZhbHVlJik7CisKKyNpZiAhQVNTRVJUX0RJ
U0FCTEVECisgICAgRmluYWxpemVyIGdldEZpbmFsaXplcihIYW5kbGVTbG90IGhhbmRsZSkKKyAg
ICB7CisgICAgICAgIHJldHVybiB0b05vZGUoaGFuZGxlKS0+ZmluYWxpemVyKCk7CisgICAgfQor
I2VuZGlmCisKK3ByaXZhdGU6CisgICAgdHlwZWRlZiB1aW50cHRyX3QgSGFuZGxlSGVhcFdpdGhG
bGFnczsKKyAgICBlbnVtIHsgRmxhZ3NNYXNrID0gMywgV2Vha0ZsYWcgPSAxLCBTZWxmRGVzdHJv
eWluZ0ZsYWcgPSAyIH07CisgICAgY2xhc3MgTm9kZSB7CisgICAgcHVibGljOgorICAgICAgICBO
b2RlKFdURjo6U2VudGluZWxUYWcpOworICAgICAgICBOb2RlKEhhbmRsZUhlYXAqKTsKKyAgICAg
ICAgCisgICAgICAgIEhhbmRsZVNsb3Qgc2xvdCgpOworICAgICAgICBIYW5kbGVIZWFwKiBoYW5k
bGVIZWFwKCk7CisKKyAgICAgICAgdm9pZCBzZXRGaW5hbGl6ZXIoRmluYWxpemVyKTsKKyAgICAg
ICAgRmluYWxpemVyIGZpbmFsaXplcigpOworCisgICAgICAgIHZvaWQgc2V0UHJldihOb2RlKik7
CisgICAgICAgIE5vZGUqIHByZXYoKTsKKworICAgICAgICB2b2lkIHNldE5leHQoTm9kZSopOwor
ICAgICAgICBOb2RlKiBuZXh0KCk7CisKKyAgICAgICAgYm9vbCBpc1dlYWsoKTsKKyAgICAgICAg
dm9pZCBtYWtlV2VhaygpOworICAgICAgICAKKyAgICAgICAgYm9vbCBpc1NlbGZEZXN0cm95aW5n
KCk7CisgICAgICAgIHZvaWQgbWFrZVNlbGZEZXN0cm95aW5nKCk7CisKKyAgICBwcml2YXRlOgor
ICAgICAgICBKU1ZhbHVlIG1fdmFsdWU7CisgICAgICAgIEhhbmRsZUhlYXBXaXRoRmxhZ3MgbV9o
YW5kbGVIZWFwV2l0aEZsYWdzOworICAgICAgICBGaW5hbGl6ZXIgbV9maW5hbGl6ZXI7CisgICAg
ICAgIE5vZGUqIG1fcHJldjsKKyAgICAgICAgTm9kZSogbV9uZXh0OworICAgIH07CisKKyAgICBz
dGF0aWMgSGFuZGxlU2xvdCB0b0hhbmRsZShOb2RlKik7CisgICAgc3RhdGljIE5vZGUqIHRvTm9k
ZShIYW5kbGVTbG90KTsKKworICAgIHZvaWQgZ3JvdygpOworCisgICAgSlNHbG9iYWxEYXRhKiBt
X2dsb2JhbERhdGE7CisgICAgQmxvY2tTdGFjazxOb2RlPiBtX2Jsb2NrU3RhY2s7CisKKyAgICBT
ZW50aW5lbExpbmtlZExpc3Q8Tm9kZT4gbV9zdHJvbmdMaXN0OworICAgIFNlbnRpbmVsTGlua2Vk
TGlzdDxOb2RlPiBtX3dlYWtMaXN0OworICAgIFNlbnRpbmVsTGlua2VkTGlzdDxOb2RlPiBtX2lt
bWVkaWF0ZUxpc3Q7CisgICAgU2luZ2x5TGlua2VkTGlzdDxOb2RlPiBtX2ZyZWVMaXN0OworfTsK
KworaW5saW5lIEhhbmRsZUhlYXAqIEhhbmRsZUhlYXA6OmhlYXBGb3IoSGFuZGxlU2xvdCBoYW5k
bGUpCit7CisgICAgcmV0dXJuIHRvTm9kZShoYW5kbGUpLT5oYW5kbGVIZWFwKCk7Cit9CisKK2lu
bGluZSBIYW5kbGVTbG90IEhhbmRsZUhlYXA6OnRvSGFuZGxlKE5vZGUqIG5vZGUpCit7CisgICAg
cmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8SGFuZGxlU2xvdD4obm9kZSk7Cit9CisKK2lubGluZSBI
YW5kbGVIZWFwOjpOb2RlKiBIYW5kbGVIZWFwOjp0b05vZGUoSGFuZGxlU2xvdCBoYW5kbGUpCit7
CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Tm9kZSo+KGhhbmRsZSk7Cit9CisKK2lubGlu
ZSBIYW5kbGVTbG90IEhhbmRsZUhlYXA6OmFsbG9jYXRlKCkKK3sKKyAgICBpZiAobV9mcmVlTGlz
dC5pc0VtcHR5KCkpCisgICAgICAgIGdyb3coKTsKKworICAgIE5vZGUqIG5vZGUgPSBtX2ZyZWVM
aXN0LnBvcCgpOworICAgIG5ldyAobm9kZSkgTm9kZSh0aGlzKTsKKyAgICBtX2ltbWVkaWF0ZUxp
c3QucHVzaChub2RlKTsKKyAgICByZXR1cm4gdG9IYW5kbGUobm9kZSk7Cit9CisKK2lubGluZSB2
b2lkIEhhbmRsZUhlYXA6OmRlYWxsb2NhdGUoSGFuZGxlU2xvdCBoYW5kbGUpCit7CisgICAgTm9k
ZSogbm9kZSA9IHRvTm9kZShoYW5kbGUpOworICAgIFNlbnRpbmVsTGlua2VkTGlzdDxOb2RlPjo6
cmVtb3ZlKG5vZGUpOworICAgIG1fZnJlZUxpc3QucHVzaChub2RlKTsKK30KKworaW5saW5lIHZv
aWQgSGFuZGxlSGVhcDo6bWFrZVdlYWsoSGFuZGxlU2xvdCBoYW5kbGUsIEZpbmFsaXplciBmaW5h
bGl6ZXIpCit7CisgICAgTm9kZSogbm9kZSA9IHRvTm9kZShoYW5kbGUpOworICAgIFNlbnRpbmVs
TGlua2VkTGlzdDxOb2RlPjo6cmVtb3ZlKG5vZGUpOworICAgIG5vZGUtPnNldEZpbmFsaXplcihm
aW5hbGl6ZXIpOworICAgIG5vZGUtPm1ha2VXZWFrKCk7CisgICAgaWYgKGhhbmRsZS0+aXNDZWxs
KCkgJiYgKmhhbmRsZSkKKyAgICAgICAgbV93ZWFrTGlzdC5wdXNoKG5vZGUpOworICAgIGVsc2UK
KyAgICAgICAgbV9pbW1lZGlhdGVMaXN0LnB1c2gobm9kZSk7Cit9CisKK2lubGluZSB2b2lkIEhh
bmRsZUhlYXA6Om1ha2VTZWxmRGVzdHJveWluZyhIYW5kbGVTbG90IGhhbmRsZSwgRmluYWxpemVy
IGZpbmFsaXplcikKK3sKKyAgICBtYWtlV2VhayhoYW5kbGUsIGZpbmFsaXplcik7CisgICAgTm9k
ZSogbm9kZSA9IHRvTm9kZShoYW5kbGUpOworICAgIFNlbnRpbmVsTGlua2VkTGlzdDxOb2RlPjo6
cmVtb3ZlKG5vZGUpOworICAgIG5vZGUtPm1ha2VTZWxmRGVzdHJveWluZygpOworfQorCitpbmxp
bmUgSGFuZGxlSGVhcDo6Tm9kZTo6Tm9kZShIYW5kbGVIZWFwKiBoYW5kbGVIZWFwKQorICAgIDog
bV9oYW5kbGVIZWFwV2l0aEZsYWdzKHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90PihoYW5kbGVI
ZWFwKSkKKyAgICAsIG1fZmluYWxpemVyKDApCit7Cit9CisKK2lubGluZSBIYW5kbGVIZWFwOjpO
b2RlOjpOb2RlKFdURjo6U2VudGluZWxUYWcpCisgICAgOiBtX2hhbmRsZUhlYXBXaXRoRmxhZ3Mo
MCkKKyAgICAsIG1fZmluYWxpemVyKDApCit7Cit9CisKK2lubGluZSBIYW5kbGVTbG90IEhhbmRs
ZUhlYXA6Ok5vZGU6OnNsb3QoKQoreworICAgIHJldHVybiAmbV92YWx1ZTsKK30KKworaW5saW5l
IEhhbmRsZUhlYXAqIEhhbmRsZUhlYXA6Ok5vZGU6OmhhbmRsZUhlYXAoKQoreworICAgIHJldHVy
biByZWludGVycHJldF9jYXN0PEhhbmRsZUhlYXAqPihtX2hhbmRsZUhlYXBXaXRoRmxhZ3MgJiB+
RmxhZ3NNYXNrKTsKK30KKworaW5saW5lIHZvaWQgSGFuZGxlSGVhcDo6Tm9kZTo6c2V0RmluYWxp
emVyKEZpbmFsaXplciBmaW5hbGl6ZXIpCit7CisgICAgbV9maW5hbGl6ZXIgPSBmaW5hbGl6ZXI7
Cit9CisKK2lubGluZSB2b2lkIEhhbmRsZUhlYXA6Ok5vZGU6Om1ha2VXZWFrKCkKK3sKKyAgICBB
U1NFUlQoIShtX2hhbmRsZUhlYXBXaXRoRmxhZ3MgJiBXZWFrRmxhZykpOworICAgIG1faGFuZGxl
SGVhcFdpdGhGbGFncyB8PSBXZWFrRmxhZzsKK30KKworaW5saW5lIGJvb2wgSGFuZGxlSGVhcDo6
Tm9kZTo6aXNXZWFrKCkKK3sKKyAgICByZXR1cm4gISEobV9oYW5kbGVIZWFwV2l0aEZsYWdzICYg
V2Vha0ZsYWcpOworfQorCitpbmxpbmUgdm9pZCBIYW5kbGVIZWFwOjpOb2RlOjptYWtlU2VsZkRl
c3Ryb3lpbmcoKQoreworICAgIEFTU0VSVChtX2hhbmRsZUhlYXBXaXRoRmxhZ3MgJiBXZWFrRmxh
Zyk7CisgICAgQVNTRVJUKCEobV9oYW5kbGVIZWFwV2l0aEZsYWdzICYgU2VsZkRlc3Ryb3lpbmdG
bGFnKSk7CisgICAgbV9oYW5kbGVIZWFwV2l0aEZsYWdzIHw9IFNlbGZEZXN0cm95aW5nRmxhZzsK
K30KKworaW5saW5lIGJvb2wgSGFuZGxlSGVhcDo6Tm9kZTo6aXNTZWxmRGVzdHJveWluZygpCit7
CisgICAgcmV0dXJuICEhKG1faGFuZGxlSGVhcFdpdGhGbGFncyAmIFNlbGZEZXN0cm95aW5nRmxh
Zyk7Cit9CisKK2lubGluZSBGaW5hbGl6ZXIgSGFuZGxlSGVhcDo6Tm9kZTo6ZmluYWxpemVyKCkK
K3sKKyAgICByZXR1cm4gbV9maW5hbGl6ZXI7Cit9CisKK2lubGluZSB2b2lkIEhhbmRsZUhlYXA6
Ok5vZGU6OnNldFByZXYoTm9kZSogcHJldikKK3sKKyAgICBtX3ByZXYgPSBwcmV2OworfQorCitp
bmxpbmUgSGFuZGxlSGVhcDo6Tm9kZSogSGFuZGxlSGVhcDo6Tm9kZTo6cHJldigpCit7CisgICAg
cmV0dXJuIG1fcHJldjsKK30KKworaW5saW5lIHZvaWQgSGFuZGxlSGVhcDo6Tm9kZTo6c2V0TmV4
dChOb2RlKiBuZXh0KQoreworICAgIG1fbmV4dCA9IG5leHQ7Cit9CisKK2lubGluZSBIYW5kbGVI
ZWFwOjpOb2RlKiBIYW5kbGVIZWFwOjpOb2RlOjpuZXh0KCkKK3sKKyAgICByZXR1cm4gbV9uZXh0
OworfQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
dGVycHJldGVyL0ludGVycHJldGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnBy
ZXRlci9JbnRlcnByZXRlci5jcHAKaW5kZXggYzI2MTJhYzBiOWI2MTVkNmM1MWRhNzI1ZWUyMWJk
OWMwMjA0NDNiYy4uNjI0NDZlNTVjNTI4MjkwMDhjNTdmN2U0NjlhNDJiYTlkOTJiNTQ1YyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3Bw
CkBAIC00MTksOSArNDE5LDEwIEBAIE5FVkVSX0lOTElORSBKU1ZhbHVlIEludGVycHJldGVyOjpj
YWxsRXZhbChDYWxsRnJhbWUqIGNhbGxGcmFtZSwgUmVnaXN0ZXJGaWxlKiByCiAgICAgcmV0dXJu
IGNhbGxGcmFtZS0+Z2xvYmFsRGF0YSgpLmludGVycHJldGVyLT5leGVjdXRlKGV2YWwuZ2V0KCks
IGNhbGxGcmFtZSwgY2FsbEZyYW1lLT51bmNoZWNrZWRSKGNvZGVCbG9jay0+dGhpc1JlZ2lzdGVy
KCkpLmpzVmFsdWUoKS50b1RoaXNPYmplY3QoY2FsbEZyYW1lKSwgY2FsbEZyYW1lLT5yZWdpc3Rl
cnMoKSAtIHJlZ2lzdGVyRmlsZS0+c3RhcnQoKSArIHJlZ2lzdGVyT2Zmc2V0LCBzY29wZUNoYWlu
KTsKIH0KIAotSW50ZXJwcmV0ZXI6OkludGVycHJldGVyKCkKK0ludGVycHJldGVyOjpJbnRlcnBy
ZXRlcihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEpCiAgICAgOiBtX3NhbXBsZUVudHJ5RGVwdGgo
MCkKICAgICAsIG1fcmVlbnRyeURlcHRoKDApCisgICAgLCBtX3JlZ2lzdGVyRmlsZShnbG9iYWxE
YXRhKQogewogI2lmIEVOQUJMRShDT01QVVRFRF9HT1RPX0lOVEVSUFJFVEVSKQogICAgIHByaXZh
dGVFeGVjdXRlKEluaXRpYWxpemVBbmRSZXR1cm4sIDAsIDApOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaAppbmRleCA3NTNkOTBlNGFlNDIzMjc1
MTMyZTYwMmI0MGVlZGM3M2NhZTM3MDAxLi44ZjI5ZjYwYjMyZDYyYmJiOTM3OGVhM2Q2MGViZjRm
ZDhhMjc4ZGZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIv
SW50ZXJwcmV0ZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50
ZXJwcmV0ZXIuaApAQCAtNjksNyArNjksNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgZnJp
ZW5kIGNsYXNzIEpJVDsKICAgICAgICAgZnJpZW5kIGNsYXNzIENhY2hlZENhbGw7CiAgICAgcHVi
bGljOgotICAgICAgICBJbnRlcnByZXRlcigpOworICAgICAgICBJbnRlcnByZXRlcihKU0dsb2Jh
bERhdGEmKTsKIAogICAgICAgICBSZWdpc3RlckZpbGUmIHJlZ2lzdGVyRmlsZSgpIHsgcmV0dXJu
IG1fcmVnaXN0ZXJGaWxlOyB9CiAgICAgICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ludGVycHJldGVyL1JlZ2lzdGVyRmlsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW50ZXJwcmV0ZXIvUmVnaXN0ZXJGaWxlLmNwcAppbmRleCA0YzM3Njc2NjJjOWVkMTczNTk0
Y2JlNTdkMzQxZTU5ZDRiZDRmZGEzLi40NWYzZTRiZmJmN2FmYWYzZGQyY2FhMzFiM2UzYTc4ODZi
YWM2YmU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvUmVn
aXN0ZXJGaWxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvUmVn
aXN0ZXJGaWxlLmNwcApAQCAtMjksNiArMjksOCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2lu
Y2x1ZGUgIlJlZ2lzdGVyRmlsZS5oIgogCisjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKKyNpbmNs
dWRlICJKU0dsb2JhbERhdGEuaCIKICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgogCiBuYW1l
c3BhY2UgSlNDIHsKQEAgLTU5LDEyICs2MSwxMyBAQCB2b2lkIFJlZ2lzdGVyRmlsZTo6cmVsZWFz
ZUV4Y2Vzc0NhcGFjaXR5KCkKIAogdm9pZCBSZWdpc3RlckZpbGU6OnNldEdsb2JhbE9iamVjdChK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogewotICAgIG1fZ2xvYmFsT2JqZWN0ID0gZ2xv
YmFsT2JqZWN0OworICAgIG1fZ2xvYmFsT2JqZWN0LnNldChnbG9iYWxPYmplY3QtPmdsb2JhbERh
dGEoKSwgZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3RDb2xsZWN0ZWQpOwogfQogCi1ib29sIFJl
Z2lzdGVyRmlsZTo6Y2xlYXJHbG9iYWxPYmplY3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCkKK3ZvaWQgUmVnaXN0ZXJGaWxlOjpnbG9iYWxPYmplY3RDb2xsZWN0ZWQoSlNHbG9iYWxEYXRh
JiwgSGFuZGxlPFVua25vd24+IHZhbHVlKQogewotICAgIHJldHVybiBtX2dsb2JhbE9iamVjdC5j
bGVhcihnbG9iYWxPYmplY3QpOworICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBh
c0dsb2JhbE9iamVjdCh2YWx1ZS5nZXQoKSk7CisgICAgZ2xvYmFsT2JqZWN0LT5nbG9iYWxEYXRh
KCkuaW50ZXJwcmV0ZXItPnJlZ2lzdGVyRmlsZSgpLnNldE51bUdsb2JhbHMoMCk7CiB9CiAKIEpT
R2xvYmFsT2JqZWN0KiBSZWdpc3RlckZpbGU6Omdsb2JhbE9iamVjdCgpCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvUmVnaXN0ZXJGaWxlLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvUmVnaXN0ZXJGaWxlLmgKaW5kZXggZTljNmRmMWU1
Yzc5Y2E3ZmRmMjlkNWE4NGZlMWMwMzUyMmEyODM2ZC4uZWJmZDQ2ZGVhYjljOTdmYjA0M2M2NDkx
OTU4OWY3YjU1MzcyN2ZlYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVy
cHJldGVyL1JlZ2lzdGVyRmlsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnBy
ZXRlci9SZWdpc3RlckZpbGUuaApAQCAtMTEyLDcgKzExMiw3IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgICAgICAvLyBBbGxvdyA4ayBvZiBleGNlc3MgcmVnaXN0ZXJzIGJlZm9yZSB3ZSBzdGFydCB0
cnlpbmcgdG8gcmVhcCB0aGUgcmVnaXN0ZXJmaWxlCiAgICAgICAgIHN0YXRpYyBjb25zdCBwdHJk
aWZmX3QgbWF4RXhjZXNzQ2FwYWNpdHkgPSA4ICogMTAyNDsKIAotICAgICAgICBSZWdpc3RlckZp
bGUoc2l6ZV90IGNhcGFjaXR5ID0gZGVmYXVsdENhcGFjaXR5LCBzaXplX3QgbWF4R2xvYmFscyA9
IGRlZmF1bHRNYXhHbG9iYWxzKTsKKyAgICAgICAgUmVnaXN0ZXJGaWxlKEpTR2xvYmFsRGF0YSYs
IHNpemVfdCBjYXBhY2l0eSA9IGRlZmF1bHRDYXBhY2l0eSwgc2l6ZV90IG1heEdsb2JhbHMgPSBk
ZWZhdWx0TWF4R2xvYmFscyk7CiAgICAgICAgIH5SZWdpc3RlckZpbGUoKTsKIAogICAgICAgICBS
ZWdpc3Rlciogc3RhcnQoKSBjb25zdCB7IHJldHVybiBtX3N0YXJ0OyB9CkBAIC0xMjAsNyArMTIw
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1
cm4gbV9lbmQgLSBtX3N0YXJ0OyB9CiAKICAgICAgICAgdm9pZCBzZXRHbG9iYWxPYmplY3QoSlNH
bG9iYWxPYmplY3QqKTsKLSAgICAgICAgYm9vbCBjbGVhckdsb2JhbE9iamVjdChKU0dsb2JhbE9i
amVjdCopOworICAgICAgICBzdGF0aWMgdm9pZCBnbG9iYWxPYmplY3RDb2xsZWN0ZWQoSlNHbG9i
YWxEYXRhJiwgSGFuZGxlPFVua25vd24+KTsKICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCgpOwogCiAgICAgICAgIGJvb2wgZ3JvdyhSZWdpc3RlciogbmV3RW5kKTsKQEAgLTE1
MCwxNiArMTUwLDE2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBXZWFrR0NQdHI8SlNHbG9i
YWxPYmplY3Q+IG1fZ2xvYmFsT2JqZWN0OyAvLyBUaGUgZ2xvYmFsIG9iamVjdCB3aG9zZSB2YXJz
IGFyZSBjdXJyZW50bHkgc3RvcmVkIGluIHRoZSByZWdpc3RlciBmaWxlLgogICAgIH07CiAKLSAg
ICBpbmxpbmUgUmVnaXN0ZXJGaWxlOjpSZWdpc3RlckZpbGUoc2l6ZV90IGNhcGFjaXR5LCBzaXpl
X3QgbWF4R2xvYmFscykKKyAgICBpbmxpbmUgUmVnaXN0ZXJGaWxlOjpSZWdpc3RlckZpbGUoSlNH
bG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBzaXplX3QgY2FwYWNpdHksIHNpemVfdCBtYXhHbG9iYWxz
KQogICAgICAgICA6IG1fbnVtR2xvYmFscygwKQogICAgICAgICAsIG1fbWF4R2xvYmFscyhtYXhH
bG9iYWxzKQogICAgICAgICAsIG1fc3RhcnQoMCkKICAgICAgICAgLCBtX2VuZCgwKQogICAgICAg
ICAsIG1fbWF4KDApCisgICAgICAgICwgbV9nbG9iYWxPYmplY3QoZ2xvYmFsRGF0YSwgZ2xvYmFs
T2JqZWN0Q29sbGVjdGVkKQogICAgIHsKICAgICAgICAgQVNTRVJUKG1heEdsb2JhbHMgJiYgaXNQ
YWdlQWxpZ25lZChtYXhHbG9iYWxzKSk7CiAgICAgICAgIEFTU0VSVChjYXBhY2l0eSAmJiBpc1Bh
Z2VBbGlnbmVkKGNhcGFjaXR5KSk7Ci0KICAgICAgICAgc2l6ZV90IGJ1ZmZlckxlbmd0aCA9IChj
YXBhY2l0eSArIG1heEdsb2JhbHMpICogc2l6ZW9mKFJlZ2lzdGVyKTsKICAgICAgICAgbV9yZXNl
cnZhdGlvbiA9IFBhZ2VSZXNlcnZhdGlvbjo6cmVzZXJ2ZShyb3VuZFVwQWxsb2NhdGlvblNpemUo
YnVmZmVyTGVuZ3RoLCBjb21taXRTaXplKSwgT1NBbGxvY2F0b3I6OkpTVk1TdGFja1BhZ2VzKTsK
ICAgICAgICAgdm9pZCogYmFzZSA9IG1fcmVzZXJ2YXRpb24uYmFzZSgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR0NIYW5kbGUuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvR0NIYW5kbGUuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAyOTdkZTM4Y2UwYzFmOTVhNDE1ZDIwMjFhN2I2ZmFhZTU4ZTZjN2Q0Li4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0dDSGFuZGxlLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDg2ICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiR0NIYW5kbGUuaCIKLQot
bmFtZXNwYWNlIEpTQyB7Ci0KLVdlYWtHQ0hhbmRsZVBvb2wqIFdlYWtHQ0hhbmRsZTo6cG9vbCgp
Ci17Ci0gICAgdWludHB0cl90IHBvb2wgPSAocmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KHRo
aXMpICYgV2Vha0dDSGFuZGxlUG9vbDo6cG9vbE1hc2spOwotICAgIHJldHVybiByZWludGVycHJl
dF9jYXN0PFdlYWtHQ0hhbmRsZVBvb2wqPihwb29sKTsKLX0KLQotV2Vha0dDSGFuZGxlUG9vbDo6
V2Vha0dDSGFuZGxlUG9vbCgpCi17Ci0gICAgQVNTRVJUKHNpemVvZihXZWFrR0NIYW5kbGVQb29s
KSA8PSBXZWFrR0NIYW5kbGVQb29sOjpwb29sU2l6ZSk7Ci0gICAgbV9lbnRyaWVzU2l6ZSA9IDA7
Ci0gICAgbV9pbml0aWFsQWxsb2MgPSAxOwotICAgIG1fZW50cmllc1swXS5zZXROZXh0SW5GcmVl
TGlzdCgwKTsKLX0KLQotV2Vha0dDSGFuZGxlKiBXZWFrR0NIYW5kbGVQb29sOjphbGxvY2F0ZShK
U0NlbGwqIGNlbGwpCi17Ci0gICAgQVNTRVJUKGNlbGwpOwotICAgIEFTU0VSVChtX2VudHJpZXNb
MF0uaXNOZXh0KCkpOwotICAgIHVuc2lnbmVkIGZyZWVMaXN0ID0gbV9lbnRyaWVzWzBdLmdldE5l
eHRJbkZyZWVMaXN0KCk7Ci0gICAgQVNTRVJUKGZyZWVMaXN0IDwgV2Vha0dDSGFuZGxlUG9vbDo6
bnVtUG9vbEVudHJpZXMpOwotICAgIEFTU0VSVChtX2VudHJpZXNTaXplIDwgV2Vha0dDSGFuZGxl
UG9vbDo6bnVtUG9vbEVudHJpZXMpOwotCi0gICAgaWYgKG1fZW50cmllc1NpemUgPT0gV2Vha0dD
SGFuZGxlUG9vbDo6bnVtUG9vbEVudHJpZXMgLSAxKQotICAgICAgICByZXR1cm4gMDsKLQotICAg
IGlmIChmcmVlTGlzdCkgewotICAgICAgICB1bnNpZ25lZCBpID0gZnJlZUxpc3Q7Ci0gICAgICAg
IGZyZWVMaXN0ID0gbV9lbnRyaWVzW2ldLmdldE5leHRJbkZyZWVMaXN0KCk7Ci0gICAgICAgIG1f
ZW50cmllc1tpXS5zZXQoY2VsbCk7Ci0gICAgICAgIG1fZW50cmllc1swXS5zZXROZXh0SW5GcmVl
TGlzdChmcmVlTGlzdCk7Ci0gICAgICAgICsrbV9lbnRyaWVzU2l6ZTsKLSAgICAgICAgcmV0dXJu
ICZtX2VudHJpZXNbaV07Ci0gICAgfQotCi0gICAgQVNTRVJUKG1faW5pdGlhbEFsbG9jIDwgV2Vh
a0dDSGFuZGxlUG9vbDo6bnVtUG9vbEVudHJpZXMpOwotCi0gICAgdW5zaWduZWQgaSA9IG1faW5p
dGlhbEFsbG9jOwotICAgICsrbV9pbml0aWFsQWxsb2M7Ci0gICAgbV9lbnRyaWVzW2ldLnNldChj
ZWxsKTsKLSAgICArK21fZW50cmllc1NpemU7Ci0gICAgcmV0dXJuICZtX2VudHJpZXNbaV07Ci0K
LX0KLQotdm9pZCBXZWFrR0NIYW5kbGVQb29sOjpmcmVlKFdlYWtHQ0hhbmRsZSogaGFuZGxlKQot
ewotICAgIEFTU0VSVChoYW5kbGUtPnBvb2woKSA9PSB0aGlzKTsKLSAgICBBU1NFUlQobV9lbnRy
aWVzWzBdLmlzTmV4dCgpKTsKLSAgICB1bnNpZ25lZCBmcmVlTGlzdCA9IG1fZW50cmllc1swXS5n
ZXROZXh0SW5GcmVlTGlzdCgpOwotICAgIEFTU0VSVChmcmVlTGlzdCA8IFdlYWtHQ0hhbmRsZVBv
b2w6Om51bVBvb2xFbnRyaWVzKTsKLSAgICBoYW5kbGUtPnNldE5leHRJbkZyZWVMaXN0KGZyZWVM
aXN0KTsKLSAgICBtX2VudHJpZXNbMF0uc2V0TmV4dEluRnJlZUxpc3QoaGFuZGxlIC0gbV9lbnRy
aWVzKTsKLSAgICAtLW1fZW50cmllc1NpemU7Ci19Ci0KLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0dDSGFuZGxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9HQ0hhbmRsZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ODE4Zjc5
NmFjNDA4ZjZlOWFkMThhNTk4OWI5M2EwYzI2OWE1YTVkLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dD
SGFuZGxlLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxMTYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNp
Zm5kZWYgR0NIYW5kbGVfaAotI2RlZmluZSBHQ0hhbmRsZV9oCi0KLSNpbmNsdWRlIDx3dGYvQXNz
ZXJ0aW9ucy5oPgotCi1uYW1lc3BhY2UgSlNDIHsKLQotY2xhc3MgSGVhcDsKLWNsYXNzIEpTQ2Vs
bDsKLWNsYXNzIFdlYWtHQ0hhbmRsZTsKLWNsYXNzIFdlYWtHQ0hhbmRsZVBvb2w7Ci0KLWNsYXNz
IFdlYWtHQ0hhbmRsZSB7Ci0gICAgZnJpZW5kIGNsYXNzIFdlYWtHQ0hhbmRsZVBvb2w7Ci0KLXB1
YmxpYzoKLSAgICAvLyBCZWNhdXNlIEpTQ2VsbCBvYmplY3RzIGFyZSBhbGlnbmVkLCB3ZSBjYW4g
dXNlIHRoZSBsb3dlciB0d28gYml0cyBhcwotICAgIC8vIHN0YXR1cyBmbGFncy4gVGhlIGxlYXN0
IHNpZ25pZmljYW50IGJpdCBpcyBzZXQgd2hlbiB0aGUgaGFuZGxlIGlzIG5vdCBhCi0gICAgLy8g
cG9pbnRlciwgaS5lLiB3aGVuIGl0J3MgdXNlZCBhcyBhIG9mZnNldCBmb3IgdGhlIGZyZWUgbGlz
dCBpbgotICAgIC8vIFdlYWtHQ0hhbmRsZVBvb2wuIFRoZSBzZWNvbmQgbGVhc3Qgc2lnbmlmaWNh
bnQgYml0IGlzIHNldCB3aGVuIHRoZSBvYmplY3QKLSAgICAvLyB0aGUgcG9pbnRlciBjb3JyZXNw
b25kcyB0byBoYXMgYmVlbiBkZWxldGVkIGJ5IGEgZ2FyYmFnZSBjb2xsZWN0aW9uCi0KLSAgICBi
b29sIGlzVmFsaWRQdHIoKSB7IHJldHVybiAhKG1fcHRyICYgMyk7IH0KLSAgICBib29sIGlzUHRy
KCkgeyByZXR1cm4gIShtX3B0ciAmIDEpOyB9Ci0gICAgYm9vbCBpc05leHQoKSB7IHJldHVybiAo
bV9wdHIgJiAzKSA9PSAxOyB9Ci0KLSAgICB2b2lkIGludmFsaWRhdGUoKQotICAgIHsKLSAgICAg
ICAgQVNTRVJUKGlzVmFsaWRQdHIoKSk7Ci0gICAgICAgIG1fcHRyIHw9IDI7Ci0gICAgfQotCi0g
ICAgSlNDZWxsKiBnZXQoKQotICAgIHsKLSAgICAgICAgQVNTRVJUKGlzUHRyKCkpOwotICAgICAg
ICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxKU0NlbGwqPihtX3B0ciAmIH4zKTsKLSAgICB9Ci0K
LSAgICB2b2lkIHNldChKU0NlbGwqIHApCi0gICAgewotICAgICAgICBtX3B0ciA9IHJlaW50ZXJw
cmV0X2Nhc3Q8dWludHB0cl90PihwKTsKLSAgICAgICAgQVNTRVJUKGlzUHRyKCkpOwotICAgIH0K
LQotICAgIFdlYWtHQ0hhbmRsZVBvb2wqIHBvb2woKTsKLQotcHJpdmF0ZToKLSAgICB1aW50cHRy
X3QgZ2V0TmV4dEluRnJlZUxpc3QoKQotICAgIHsKLSAgICAgICAgQVNTRVJUKGlzTmV4dCgpKTsK
LSAgICAgICAgcmV0dXJuIG1fcHRyID4+IDI7Ci0gICAgfQotCi0gICAgdm9pZCBzZXROZXh0SW5G
cmVlTGlzdCh1aW50cHRyX3QgbikKLSAgICB7Ci0gICAgICAgIG1fcHRyID0gKG4gPDwgMikgfCAx
OwotICAgICAgICBBU1NFUlQoaXNOZXh0KCkpOwotICAgIH0KLQotICAgIHVpbnRwdHJfdCBtX3B0
cjsKLX07Ci0KLWNsYXNzIFdlYWtHQ0hhbmRsZVBvb2wgewotcHVibGljOgotICAgIHN0YXRpYyBj
b25zdCBzaXplX3QgcG9vbFNpemUgPSAzMiAqIDEwMjQ7IC8vIDMyawotICAgIHN0YXRpYyBjb25z
dCBzaXplX3QgcG9vbE1hc2sgPSB+KHBvb2xTaXplIC0gMSk7Ci0gICAgc3RhdGljIGNvbnN0IHNp
emVfdCBudW1Qb29sRW50cmllcyA9IChwb29sU2l6ZSAtIHNpemVvZihIZWFwKikgLSAzICogc2l6
ZW9mKHVuc2lnbmVkKSkgLyBzaXplb2YoV2Vha0dDSGFuZGxlKTsKLQotICAgIFdlYWtHQ0hhbmRs
ZVBvb2woKTsKLQotICAgIFdlYWtHQ0hhbmRsZSogYWxsb2NhdGUoSlNDZWxsKiBjZWxsKTsKLSAg
ICB2b2lkIGZyZWUoV2Vha0dDSGFuZGxlKik7Ci0KLSAgICBib29sIGlzRnVsbCgpCi0gICAgewot
ICAgICAgICBBU1NFUlQobV9lbnRyaWVzU2l6ZSA8IFdlYWtHQ0hhbmRsZVBvb2w6Om51bVBvb2xF
bnRyaWVzKTsKLSAgICAgICAgcmV0dXJuIG1fZW50cmllc1NpemUgPT0gV2Vha0dDSGFuZGxlUG9v
bDo6bnVtUG9vbEVudHJpZXMgLSAxOwotICAgIH0KLQotICAgIHZvaWQgdXBkYXRlKCk7Ci0KLXBy
aXZhdGU6Ci0gICAgSGVhcCogbV9oZWFwOwotICAgIHVuc2lnbmVkIG1fZW50cmllc1NpemU7Ci0g
ICAgdW5zaWduZWQgbV9pbml0aWFsQWxsb2M7Ci0KLSAgICBXZWFrR0NIYW5kbGUgbV9lbnRyaWVz
W1dlYWtHQ0hhbmRsZVBvb2w6Om51bVBvb2xFbnRyaWVzXTsKLX07Ci0KLX0KLSNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSGVhcC5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9IZWFwLmNwcAppbmRleCBjMDUyMzNjYWQ3MDBkY2JmYjJi
MjA3MGM4YTg1YWQ2ZjQ3Njg2NmY4Li5mMDYyMzg4MDA2ZmFkMjRkYThhNmQwYTY5MGRiZTkwZjc0
ZDAwZWY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9IZWFwLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9IZWFwLmNwcApAQCAtMjQsNyAr
MjQsNiBAQAogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgogI2luY2x1ZGUgIkNvbnNlcnZhdGl2ZVNl
dC5oIgogI2luY2x1ZGUgIkdDQWN0aXZpdHlDYWxsYmFjay5oIgotI2luY2x1ZGUgIkdDSGFuZGxl
LmgiCiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJKU0dsb2JhbERhdGEuaCIK
ICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgpAQCAtNDksNiArNDgsNyBAQCBIZWFwOjpIZWFw
KEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSkKICAgICAsIG1fZ2xvYmFsRGF0YShnbG9iYWxEYXRh
KQogICAgICwgbV9tYWNoaW5lU3RhY2tNYXJrZXIodGhpcykKICAgICAsIG1fbWFya1N0YWNrKGds
b2JhbERhdGEtPmpzQXJyYXlWUHRyKQorICAgICwgbV9oYW5kbGVIZWFwKGdsb2JhbERhdGEpCiAg
ICAgLCBtX2V4dHJhQ29zdCgwKQogewogICAgICgqbV9hY3Rpdml0eUNhbGxiYWNrKSgpOwpAQCAt
NzcsNiArNzcsNyBAQCB2b2lkIEhlYXA6OmRlc3Ryb3koKQogICAgIGRlbGV0ZSBtX21hcmtMaXN0
U2V0OwogICAgIG1fbWFya0xpc3RTZXQgPSAwOwogCisgICAgbV9oYW5kbGVIZWFwLmNsZWFyV2Vh
a1BvaW50ZXJzKCk7CiAgICAgbV9tYXJrZWRTcGFjZS5kZXN0cm95KCk7CiAKICAgICBtX2dsb2Jh
bERhdGEgPSAwOwpAQCAtMTI4LDM2ICsxMjksNiBAQCB2b2lkKiBIZWFwOjphbGxvY2F0ZShzaXpl
X3QgcykKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi12b2lkIEhlYXA6OnVwZGF0ZVdlYWtHQ0hh
bmRsZXMoKQotewotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX3dlYWtHQ0hhbmRsZVBv
b2xzLnNpemUoKTsgKytpKQotICAgICAgICB3ZWFrR0NIYW5kbGVQb29sKGkpLT51cGRhdGUoKTsK
LX0KLQotdm9pZCBXZWFrR0NIYW5kbGVQb29sOjp1cGRhdGUoKQotewotICAgIGZvciAodW5zaWdu
ZWQgaSA9IDE7IGkgPCBXZWFrR0NIYW5kbGVQb29sOjpudW1Qb29sRW50cmllczsgKytpKSB7Ci0g
ICAgICAgIGlmIChtX2VudHJpZXNbaV0uaXNWYWxpZFB0cigpKSB7Ci0gICAgICAgICAgICBKU0Nl
bGwqIGNlbGwgPSBtX2VudHJpZXNbaV0uZ2V0KCk7Ci0gICAgICAgICAgICBpZiAoIWNlbGwgfHwg
IUhlYXA6OmlzTWFya2VkKGNlbGwpKQotICAgICAgICAgICAgICAgIG1fZW50cmllc1tpXS5pbnZh
bGlkYXRlKCk7Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KLVdlYWtHQ0hhbmRsZSogSGVhcDo6YWRk
V2Vha0dDSGFuZGxlKEpTQ2VsbCogcHRyKQotewotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBtX3dlYWtHQ0hhbmRsZVBvb2xzLnNpemUoKTsgKytpKQotICAgICAgICBpZiAoIXdlYWtHQ0hh
bmRsZVBvb2woaSktPmlzRnVsbCgpKQotICAgICAgICAgICAgcmV0dXJuIHdlYWtHQ0hhbmRsZVBv
b2woaSktPmFsbG9jYXRlKHB0cik7Ci0KLSAgICBQYWdlQWxsb2NhdGlvbkFsaWduZWQgYWxsb2Nh
dGlvbiA9IFBhZ2VBbGxvY2F0aW9uQWxpZ25lZDo6YWxsb2NhdGUoV2Vha0dDSGFuZGxlUG9vbDo6
cG9vbFNpemUsIFdlYWtHQ0hhbmRsZVBvb2w6OnBvb2xTaXplLCBPU0FsbG9jYXRvcjo6SlNHQ0hl
YXBQYWdlcyk7Ci0gICAgbV93ZWFrR0NIYW5kbGVQb29scy5hcHBlbmQoYWxsb2NhdGlvbik7Ci0K
LSAgICBXZWFrR0NIYW5kbGVQb29sKiBwb29sID0gbmV3IChhbGxvY2F0aW9uLmJhc2UoKSkgV2Vh
a0dDSGFuZGxlUG9vbCgpOwotICAgIHJldHVybiBwb29sLT5hbGxvY2F0ZShwdHIpOwotfQotCiB2
b2lkIEhlYXA6OnByb3RlY3QoSlNWYWx1ZSBrKQogewogICAgIEFTU0VSVChrKTsKQEAgLTI2OSwx
NCArMjQwLDE2IEBAIHZvaWQgSGVhcDo6bWFya1Jvb3RzKCkKICAgICAgICAgSlNPTk9iamVjdDo6
bWFya1N0cmluZ2lmaWVycyhtYXJrU3RhY2ssIG1fZ2xvYmFsRGF0YS0+Zmlyc3RTdHJpbmdpZmll
clRvTWFyayk7CiAgICAgbWFya1N0YWNrLmRyYWluKCk7CiAKKyAgICBtX2hhbmRsZUhlYXAubWFy
a1N0cm9uZ0hhbmRsZXMobWFya1N0YWNrKTsKKwogICAgIC8vIE1hcmsgdGhlIHNtYWxsIHN0cmlu
Z3MgY2FjaGUgbGFzdCwgc2luY2UgaXQgd2lsbCBjbGVhciBpdHNlbGYgaWYgbm90aGluZwogICAg
IC8vIGVsc2UgaGFzIG1hcmtlZCBpdC4KICAgICBtX2dsb2JhbERhdGEtPnNtYWxsU3RyaW5ncy5t
YXJrQ2hpbGRyZW4obWFya1N0YWNrKTsKIAogICAgIG1hcmtTdGFjay5kcmFpbigpOwogICAgIG1h
cmtTdGFjay5jb21wYWN0KCk7Ci0KLSAgICB1cGRhdGVXZWFrR0NIYW5kbGVzKCk7CisgICAgCisg
ICAgbV9oYW5kbGVIZWFwLnVwZGF0ZUFmdGVyTWFyaygpOwogCiAgICAgbV9vcGVyYXRpb25JblBy
b2dyZXNzID0gTm9PcGVyYXRpb247CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9IZWFwLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9IZWFwLmgK
aW5kZXggNjU5MWE1Yjc5MjIyZmVmNDJlNGNlMDMyN2FlNmI1NDBiZWFhYzA0MC4uZmY5ZmE4MDU3
NDNhNmJiYzNiYjZlN2M0NDkyZmFhNmRkOTY5ZTllZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSGVhcC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0hlYXAuaApAQCAtMjIsNiArMjIsNyBAQAogI2lmbmRlZiBIZWFwX2gKICNkZWZpbmUgSGVh
cF9oCiAKKyNpbmNsdWRlICJIYW5kbGVIZWFwLmgiCiAjaW5jbHVkZSAiTWFya1N0YWNrLmgiCiAj
aW5jbHVkZSAiTWFya2VkU3BhY2UuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgpAQCAtMzQs
NyArMzUsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBKU0NlbGw7CiAgICAgY2xhc3Mg
SlNHbG9iYWxEYXRhOwogICAgIGNsYXNzIEpTVmFsdWU7Ci0gICAgY2xhc3MgSlNWYWx1ZTsKICAg
ICBjbGFzcyBMaXZlT2JqZWN0SXRlcmF0b3I7CiAgICAgY2xhc3MgTWFya1N0YWNrOwogICAgIGNs
YXNzIE1hcmtlZEFyZ3VtZW50QnVmZmVyOwpAQCAtODksOCArODksNiBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgUGFzc093blB0cjxUeXBlQ291bnRTZXQ+IHByb3RlY3RlZE9iamVjdFR5cGVD
b3VudHMoKTsKICAgICAgICAgUGFzc093blB0cjxUeXBlQ291bnRTZXQ+IG9iamVjdFR5cGVDb3Vu
dHMoKTsKIAotICAgICAgICBXZWFrR0NIYW5kbGUqIGFkZFdlYWtHQ0hhbmRsZShKU0NlbGwqKTsK
LQogICAgICAgICB2b2lkIHB1c2hUZW1wU29ydFZlY3RvcihWZWN0b3I8VmFsdWVTdHJpbmdQYWly
PiopOwogICAgICAgICB2b2lkIHBvcFRlbXBTb3J0VmVjdG9yKFZlY3RvcjxWYWx1ZVN0cmluZ1Bh
aXI+Kik7CiAgICAgICAgIApAQCAtMTAwLDYgKzk4LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgIAogICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgRnVuY3Rvcj4gdm9pZCBmb3JFYWNoKEZ1
bmN0b3ImKTsKICAgICAgICAgCisgICAgICAgIEhhbmRsZVNsb3QgYWxsb2NhdGVHbG9iYWxIYW5k
bGUoKSB7IHJldHVybiBtX2hhbmRsZUhlYXAuYWxsb2NhdGUoKTsgfQorCiAgICAgcHJpdmF0ZToK
ICAgICAgICAgZnJpZW5kIGNsYXNzIEpTR2xvYmFsRGF0YTsKIApAQCAtMTEyLDkgKzExMiw2IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIG1hcmtQcm90ZWN0ZWRPYmplY3RzKE1hcmtT
dGFjayYpOwogICAgICAgICB2b2lkIG1hcmtUZW1wU29ydFZlY3RvcnMoTWFya1N0YWNrJik7CiAK
LSAgICAgICAgdm9pZCB1cGRhdGVXZWFrR0NIYW5kbGVzKCk7Ci0gICAgICAgIFdlYWtHQ0hhbmRs
ZVBvb2wqIHdlYWtHQ0hhbmRsZVBvb2woc2l6ZV90IGluZGV4KTsKLSAgICAgICAgCiAgICAgICAg
IGVudW0gU3dlZXBUb2dnbGUgeyBEb05vdFN3ZWVwLCBEb1N3ZWVwIH07CiAgICAgICAgIHZvaWQg
cmVzZXQoU3dlZXBUb2dnbGUpOwogCkBAIC0xMjQsNyArMTIxLDYgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgIE1hcmtlZFNwYWNlIG1fbWFya2VkU3BhY2U7CiAKICAgICAgICAgUHJvdGVjdENv
dW50U2V0IG1fcHJvdGVjdGVkVmFsdWVzOwotICAgICAgICBWZWN0b3I8UGFnZUFsbG9jYXRpb25B
bGlnbmVkPiBtX3dlYWtHQ0hhbmRsZVBvb2xzOwogICAgICAgICBWZWN0b3I8VmVjdG9yPFZhbHVl
U3RyaW5nUGFpcj4qID4gbV90ZW1wU29ydGluZ1ZlY3RvcnM7CiAgICAgICAgIEhhc2hTZXQ8R2xv
YmFsQ29kZUJsb2NrKj4gbV9jb2RlQmxvY2tzOwogCkBAIC0xMzYsNiArMTMyLDcgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgIAogICAgICAgICBNYWNoaW5lU3RhY2tNYXJrZXIgbV9tYWNoaW5l
U3RhY2tNYXJrZXI7CiAgICAgICAgIE1hcmtTdGFjayBtX21hcmtTdGFjazsKKyAgICAgICAgSGFu
ZGxlSGVhcCBtX2hhbmRsZUhlYXA7CiAgICAgICAgIAogICAgICAgICBzaXplX3QgbV9leHRyYUNv
c3Q7CiAgICAgfTsKQEAgLTE2NSwxMSArMTYyLDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
IGlmIChjb3N0ID4gbWluRXh0cmFDb3N0KSAKICAgICAgICAgICAgIHJlcG9ydEV4dHJhTWVtb3J5
Q29zdFNsb3dDYXNlKGNvc3QpOwogICAgIH0KLSAgICAKLSAgICBpbmxpbmUgV2Vha0dDSGFuZGxl
UG9vbCogSGVhcDo6d2Vha0dDSGFuZGxlUG9vbChzaXplX3QgaW5kZXgpCi0gICAgewotICAgICAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8V2Vha0dDSGFuZGxlUG9vbCo+KG1fd2Vha0dDSGFuZGxlUG9v
bHNbaW5kZXhdLmJhc2UoKSk7Ci0gICAgfQogCiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIEZ1bmN0
b3I+IGlubGluZSB2b2lkIEhlYXA6OmZvckVhY2goRnVuY3RvciYgZnVuY3RvcikKICAgICB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmNwcAppbmRleCBm
Zjg4MDQ4YzIxOTU5NGI5MTI1ZTAyMmJjYTE4ZWM4NzE3YzEzYjU4Li5jZmY3MjUyMjRhNDQ1OTQw
NTcyZWNlODA5YWU1ZGU1MDM2ZWJhYTQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dsb2JhbERhdGEuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2xvYmFsRGF0YS5jcHAKQEAgLTEzOCw3ICsxMzgsNyBAQCBKU0dsb2JhbERhdGE6
OkpTR2xvYmFsRGF0YShHbG9iYWxEYXRhVHlwZSBnbG9iYWxEYXRhVHlwZSwgVGhyZWFkU3RhY2tU
eXBlIHRocmVhZAogICAgICwgZW1wdHlMaXN0KG5ldyBNYXJrZWRBcmd1bWVudEJ1ZmZlcikKICAg
ICAsIGxleGVyKG5ldyBMZXhlcih0aGlzKSkKICAgICAsIHBhcnNlcihuZXcgUGFyc2VyKQotICAg
ICwgaW50ZXJwcmV0ZXIobmV3IEludGVycHJldGVyKQorICAgICwgaW50ZXJwcmV0ZXIoMCkKICAg
ICAsIGhlYXAodGhpcykKICAgICAsIGR5bmFtaWNHbG9iYWxPYmplY3QoMCkKICAgICAsIGZpcnN0
U3RyaW5naWZpZXJUb01hcmsoMCkKQEAgLTE1Miw2ICsxNTIsNyBAQCBKU0dsb2JhbERhdGE6OkpT
R2xvYmFsRGF0YShHbG9iYWxEYXRhVHlwZSBnbG9iYWxEYXRhVHlwZSwgVGhyZWFkU3RhY2tUeXBl
IHRocmVhZAogICAgICwgZXhjbHVzaXZlVGhyZWFkKDApCiAjZW5kaWYKIHsKKyAgICBpbnRlcnBy
ZXRlciA9IG5ldyBJbnRlcnByZXRlcigqdGhpcyk7CiAgICAgaWYgKGdsb2JhbERhdGFUeXBlID09
IERlZmF1bHQpCiAgICAgICAgIG1fc3RhY2sgPSB3dGZUaHJlYWREYXRhKCkuc3RhY2soKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuaAppbmRleCA3YjY5
MDU1ODFiMDBiMDAyMDViNGMyNTY0ZjliZWI4ZjY0NTNiNjkwLi5hNjA5Yzc3ZTAxZjI5ODBhZDM5
N2UzZjNkNDllNGFjODg5ODRmNjcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dsb2JhbERhdGEuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dsb2JhbERhdGEuaApAQCAtMjUzLDYgKzI1Myw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICB2b2lkIGFkZFJlZ0V4cFRvVHJhY2UoUGFzc1JlZlB0cjxSZWdFeHA+IHJlZ0V4cCk7CiAj
ZW5kaWYKICAgICAgICAgdm9pZCBkdW1wUmVnRXhwVHJhY2UoKTsKKyAgICAgICAgSGFuZGxlU2xv
dCBhbGxvY2F0ZUdsb2JhbEhhbmRsZSgpIHsgcmV0dXJuIGhlYXAuYWxsb2NhdGVHbG9iYWxIYW5k
bGUoKTsgfQorCiAgICAgcHJpdmF0ZToKICAgICAgICAgSlNHbG9iYWxEYXRhKEdsb2JhbERhdGFU
eXBlLCBUaHJlYWRTdGFja1R5cGUpOwogICAgICAgICBzdGF0aWMgSlNHbG9iYWxEYXRhKiYgc2hh
cmVkSW5zdGFuY2VJbnRlcm5hbCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHbG9iYWxPYmplY3QuY3BwCmluZGV4IGYzMDMxOTY3NjQxMTA1ODYxMGNkZDY2MDQ0ODI0
MmM1YjM0YTZhZWUuLjhlYzBkMjhiMTZmYWIyMjBhNDE4Mzk5ZWM2MWM1NmJhZDNhYjkwZDQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAK
QEAgLTEwNiw5ICsxMDYsNiBAQCBKU0dsb2JhbE9iamVjdDo6fkpTR2xvYmFsT2JqZWN0KCkKIAog
ICAgIGQoKS0+Z2xvYmFsRGF0YS0+Z2xvYmFsT2JqZWN0cy50YWtlKHRoaXMpOwogCi0gICAgUmVn
aXN0ZXJGaWxlJiByZWdpc3RlckZpbGUgPSBnbG9iYWxEYXRhKCkuaW50ZXJwcmV0ZXItPnJlZ2lz
dGVyRmlsZSgpOwotICAgIGlmIChyZWdpc3RlckZpbGUuY2xlYXJHbG9iYWxPYmplY3QodGhpcykp
Ci0gICAgICAgIHJlZ2lzdGVyRmlsZS5zZXROdW1HbG9iYWxzKDApOwogICAgIGQoKS0+ZGVzdHJ1
Y3RvcihkKCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuY3BwCmluZGV4IDZmZDI4ZTNmYWZiNTYxOTVlYmE3
OGNlMDNjYjExMjJjZGMzODBmZDQuLjBkNzU5Y2ZjMTVjOWQyYmU5YjAwYzg1Y2FkNjRiMWUyOTY4
MDVlMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVy
dHlOYW1lSXRlcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
UHJvcGVydHlOYW1lSXRlcmF0b3IuY3BwCkBAIC00NywxMiArNDcsNiBAQCBpbmxpbmUgSlNQcm9w
ZXJ0eU5hbWVJdGVyYXRvcjo6SlNQcm9wZXJ0eU5hbWVJdGVyYXRvcihFeGVjU3RhdGUqIGV4ZWMs
IFByb3BlcnR5TgogICAgICAgICBtX2pzU3RyaW5nc1tpXS5zZXQoZXhlYy0+Z2xvYmFsRGF0YSgp
LCB0aGlzLCBqc093bmVkU3RyaW5nKGV4ZWMsIHByb3BlcnR5TmFtZVZlY3RvcltpXS51c3RyaW5n
KCkpKTsKIH0KIAotSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6fkpTUHJvcGVydHlOYW1lSXRlcmF0
b3IoKQotewotICAgIGlmIChtX2NhY2hlZFN0cnVjdHVyZSkKLSAgICAgICAgbV9jYWNoZWRTdHJ1
Y3R1cmUtPmNsZWFyRW51bWVyYXRpb25DYWNoZSh0aGlzKTsKLX0KLQogSlNQcm9wZXJ0eU5hbWVJ
dGVyYXRvciogSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6Y3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywg
SlNPYmplY3QqIG8pCiB7CiAgICAgQVNTRVJUKCFvLT5zdHJ1Y3R1cmUoKS0+ZW51bWVyYXRpb25D
YWNoZSgpIHx8CkBAIC04NSw3ICs3OSw3IEBAIEpTUHJvcGVydHlOYW1lSXRlcmF0b3IqIEpTUHJv
cGVydHlOYW1lSXRlcmF0b3I6OmNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0CiAKICAg
ICBqc1Byb3BlcnR5TmFtZUl0ZXJhdG9yLT5zZXRDYWNoZWRQcm90b3R5cGVDaGFpbihzdHJ1Y3R1
cmVDaGFpbik7CiAgICAganNQcm9wZXJ0eU5hbWVJdGVyYXRvci0+c2V0Q2FjaGVkU3RydWN0dXJl
KG8tPnN0cnVjdHVyZSgpKTsKLSAgICBvLT5zdHJ1Y3R1cmUoKS0+c2V0RW51bWVyYXRpb25DYWNo
ZShqc1Byb3BlcnR5TmFtZUl0ZXJhdG9yKTsKKyAgICBvLT5zdHJ1Y3R1cmUoKS0+c2V0RW51bWVy
YXRpb25DYWNoZShleGVjLT5nbG9iYWxEYXRhKCksIGpzUHJvcGVydHlOYW1lSXRlcmF0b3IpOwog
ICAgIHJldHVybiBqc1Byb3BlcnR5TmFtZUl0ZXJhdG9yOwogfQogCkBAIC0xMDUsNCArOTksMTIg
QEAgdm9pZCBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yOjptYXJrQ2hpbGRyZW4oTWFya1N0YWNrJiBt
YXJrU3RhY2spCiAgICAgbWFya1N0YWNrLmFwcGVuZFZhbHVlcyhtX2pzU3RyaW5ncy5nZXQoKSwg
bV9qc1N0cmluZ3NTaXplLCBNYXlDb250YWluTnVsbFZhbHVlcyk7CiB9CiAKKyNpZiAhQVNTRVJU
X0RJU0FCTEVECisKK0pTUHJvcGVydHlOYW1lSXRlcmF0b3I6On5KU1Byb3BlcnR5TmFtZUl0ZXJh
dG9yKCkKK3sKKyAgICBBU1NFUlQoIW1fY2FjaGVkU3RydWN0dXJlIHx8IG1fY2FjaGVkU3RydWN0
dXJlLT5lbnVtZXJhdGlvbkNhY2hlKCkgIT0gdGhpcyk7Cit9CisKKyNlbmRpZgogfSAvLyBuYW1l
c3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1By
b3BlcnR5TmFtZUl0ZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1By
b3BlcnR5TmFtZUl0ZXJhdG9yLmgKaW5kZXggY2Q0NjI0M2E4MDkxYzIxMGE3NDYyNTU3M2I3Nzkz
NGUzM2RjYTcyNy4uZmYyY2FlNTRlZWJkZjVjZmYyMmQxZDJmMjBmMWEyZTM0Y2UyYTFmMCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVy
YXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1l
SXRlcmF0b3IuaApAQCAtNDksOCArNDksNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgewog
ICAgICAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHByb3RvdHlwZSwgVHlwZUluZm8o
Q29tcG91bmRUeXBlLCBPdmVycmlkZXNNYXJrQ2hpbGRyZW4pLCBBbm9ueW1vdXNTbG90Q291bnQp
OwogICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICB2aXJ0dWFsIH5KU1Byb3BlcnR5TmFtZUl0
ZXJhdG9yKCk7CiAKICAgICAgICAgdmlydHVhbCBib29sIGlzUHJvcGVydHlOYW1lSXRlcmF0b3Io
KSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAKQEAgLTgwLDYgKzc4LDEwIEBAIG5hbWVzcGFjZSBK
U0MgewogCiAgICAgcHJpdmF0ZToKICAgICAgICAgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcihFeGVj
U3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJheURhdGEqIHByb3BlcnR5TmFtZUFycmF5RGF0YSwgc2l6
ZV90IG51bUNhY2hlYWJsZVNsb3QpOworICAgICAgICAKKyNpZiAhQVNTRVJUX0RJU0FCTEVECisg
ICAgICAgIHZpcnR1YWwgfkpTUHJvcGVydHlOYW1lSXRlcmF0b3IoKTsKKyNlbmRpZgogCiAgICAg
ICAgIFJlZlB0cjxTdHJ1Y3R1cmU+IG1fY2FjaGVkU3RydWN0dXJlOwogICAgICAgICBSZWZQdHI8
U3RydWN0dXJlQ2hhaW4+IG1fY2FjaGVkUHJvdG90eXBlQ2hhaW47CkBAIC04OCwxNSArOTAsMTUg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIE93bkFycmF5UHRyPFdyaXRlQmFycmllcjxVbmtu
b3duPiA+IG1fanNTdHJpbmdzOwogICAgIH07CiAKLSAgICBpbmxpbmUgdm9pZCBTdHJ1Y3R1cmU6
OnNldEVudW1lcmF0aW9uQ2FjaGUoSlNQcm9wZXJ0eU5hbWVJdGVyYXRvciogZW51bWVyYXRpb25D
YWNoZSkKKyAgICBpbmxpbmUgdm9pZCBTdHJ1Y3R1cmU6OnNldEVudW1lcmF0aW9uQ2FjaGUoSlNH
bG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yKiBlbnVtZXJhdGlv
bkNhY2hlKQogICAgIHsKICAgICAgICAgQVNTRVJUKCFpc0RpY3Rpb25hcnkoKSk7Ci0gICAgICAg
IG1fZW51bWVyYXRpb25DYWNoZSA9IGVudW1lcmF0aW9uQ2FjaGU7CisgICAgICAgIG1fZW51bWVy
YXRpb25DYWNoZS5zZXQoZ2xvYmFsRGF0YSwgZW51bWVyYXRpb25DYWNoZSwgMCk7CiAgICAgfQog
Ci0gICAgaW5saW5lIHZvaWQgU3RydWN0dXJlOjpjbGVhckVudW1lcmF0aW9uQ2FjaGUoSlNQcm9w
ZXJ0eU5hbWVJdGVyYXRvciogZW51bWVyYXRpb25DYWNoZSkKKyAgICBpbmxpbmUgdm9pZCBTdHJ1
Y3R1cmU6OmNsZWFyRW51bWVyYXRpb25DYWNoZSgpCiAgICAgewotICAgICAgICBtX2VudW1lcmF0
aW9uQ2FjaGUuY2xlYXIoZW51bWVyYXRpb25DYWNoZSk7CisgICAgICAgIG1fZW51bWVyYXRpb25D
YWNoZS5jbGVhcigpOwogICAgIH0KIAogICAgIGlubGluZSBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9y
KiBTdHJ1Y3R1cmU6OmVudW1lcmF0aW9uQ2FjaGUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvUHJvdGVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvUHJvdGVjdC5oCmluZGV4IDBjMWI1ZThlZjQzYmUxYzgxN2NkODhlZGE3Nzk2NzY2ZjFhM2Zh
MWQuLjg0M2M5ZTExMTQ4Y2M3MGE2N2NkYjY2MjU0NDcyNjMxNjhiZmY3YTggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3RlY3QuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Qcm90ZWN0LmgKQEAgLTYxLDE1NSArNjEsNiBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgICAgIGdjVW5wcm90ZWN0KHZhbHVlLmFzQ2VsbCgpKTsKICAgICB9
CiAKLSAgICAvLyBGSVhNRTogU2hhcmUgbW9yZSBjb2RlIHdpdGggUmVmUHRyIHRlbXBsYXRlPyBU
aGUgb25seSBkaWZmZXJlbmNlcyBhcmUgdGhlIHJlZi9kZXJlZiBvcGVyYXRpb24KLSAgICAvLyBh
bmQgdGhlIGltcGxpY2l0IGNvbnZlcnNpb24gdG8gcmF3IHBvaW50ZXIKLSAgICB0ZW1wbGF0ZSA8
Y2xhc3MgVD4gY2xhc3MgUHJvdGVjdGVkUHRyIHsKLSAgICBwdWJsaWM6Ci0gICAgICAgIFByb3Rl
Y3RlZFB0cigpIDogbV9wdHIoMCkge30KLSAgICAgICAgUHJvdGVjdGVkUHRyKFQqIHB0cik7Ci0g
ICAgICAgIFByb3RlY3RlZFB0cihjb25zdCBQcm90ZWN0ZWRQdHImKTsKLSAgICAgICAgflByb3Rl
Y3RlZFB0cigpOwotCi0gICAgICAgIHRlbXBsYXRlIDxjbGFzcyBVPiBQcm90ZWN0ZWRQdHIoY29u
c3QgUHJvdGVjdGVkUHRyPFU+Jik7Ci0gICAgICAgIAotICAgICAgICBUKiBnZXQoKSBjb25zdCB7
IHJldHVybiBtX3B0cjsgfQotICAgICAgICBvcGVyYXRvciBUKigpIGNvbnN0IHsgcmV0dXJuIG1f
cHRyOyB9Ci0gICAgICAgIG9wZXJhdG9yIEpTVmFsdWUoKSBjb25zdCB7IHJldHVybiBKU1ZhbHVl
KG1fcHRyKTsgfQotICAgICAgICBUKiBvcGVyYXRvci0+KCkgY29uc3QgeyByZXR1cm4gbV9wdHI7
IH0KLSAgICAgICAgCi0gICAgICAgIG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiBtX3B0
cjsgfQotICAgICAgICBib29sIG9wZXJhdG9yISgpIGNvbnN0IHsgcmV0dXJuICFtX3B0cjsgfQot
Ci0gICAgICAgIFByb3RlY3RlZFB0ciYgb3BlcmF0b3I9KGNvbnN0IFByb3RlY3RlZFB0ciYpOwot
ICAgICAgICBQcm90ZWN0ZWRQdHImIG9wZXJhdG9yPShUKik7Ci0gICAgICAgIAotICAgIHByaXZh
dGU6Ci0gICAgICAgIFQqIG1fcHRyOwotICAgIH07Ci0KLSAgICBjbGFzcyBQcm90ZWN0ZWRKU1Zh
bHVlIHsKLSAgICBwdWJsaWM6Ci0gICAgICAgIFByb3RlY3RlZEpTVmFsdWUoKSB7fQotICAgICAg
ICBQcm90ZWN0ZWRKU1ZhbHVlKEpTVmFsdWUgdmFsdWUpOwotICAgICAgICBQcm90ZWN0ZWRKU1Zh
bHVlKGNvbnN0IFByb3RlY3RlZEpTVmFsdWUmKTsKLSAgICAgICAgflByb3RlY3RlZEpTVmFsdWUo
KTsKLQotICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVT4gUHJvdGVjdGVkSlNWYWx1ZShjb25zdCBQ
cm90ZWN0ZWRQdHI8VT4mKTsKLSAgICAgICAgCi0gICAgICAgIEpTVmFsdWUgZ2V0KCkgY29uc3Qg
eyByZXR1cm4gbV92YWx1ZTsgfQotICAgICAgICBvcGVyYXRvciBKU1ZhbHVlKCkgY29uc3QgeyBy
ZXR1cm4gbV92YWx1ZTsgfQotICAgICAgICBKU1ZhbHVlIG9wZXJhdG9yLT4oKSBjb25zdCB7IHJl
dHVybiBtX3ZhbHVlOyB9Ci0gICAgICAgIAotICAgICAgICBvcGVyYXRvciBib29sKCkgY29uc3Qg
eyByZXR1cm4gbV92YWx1ZTsgfQotICAgICAgICBib29sIG9wZXJhdG9yISgpIGNvbnN0IHsgcmV0
dXJuICFtX3ZhbHVlOyB9Ci0KLSAgICAgICAgUHJvdGVjdGVkSlNWYWx1ZSYgb3BlcmF0b3I9KGNv
bnN0IFByb3RlY3RlZEpTVmFsdWUmKTsKLSAgICAgICAgUHJvdGVjdGVkSlNWYWx1ZSYgb3BlcmF0
b3I9KEpTVmFsdWUpOwotICAgICAgICAKLSAgICBwcml2YXRlOgotICAgICAgICBKU1ZhbHVlIG1f
dmFsdWU7Ci0gICAgfTsKLQotICAgIHRlbXBsYXRlIDxjbGFzcyBUPiBpbmxpbmUgUHJvdGVjdGVk
UHRyPFQ+OjpQcm90ZWN0ZWRQdHIoVCogcHRyKQotICAgICAgICA6IG1fcHRyKHB0cikKLSAgICB7
Ci0gICAgICAgIGdjUHJvdGVjdE51bGxUb2xlcmFudChtX3B0cik7Ci0gICAgfQotCi0gICAgdGVt
cGxhdGUgPGNsYXNzIFQ+IGlubGluZSBQcm90ZWN0ZWRQdHI8VD46OlByb3RlY3RlZFB0cihjb25z
dCBQcm90ZWN0ZWRQdHImIG8pCi0gICAgICAgIDogbV9wdHIoby5nZXQoKSkKLSAgICB7Ci0gICAg
ICAgIGdjUHJvdGVjdE51bGxUb2xlcmFudChtX3B0cik7Ci0gICAgfQotCi0gICAgdGVtcGxhdGUg
PGNsYXNzIFQ+IGlubGluZSBQcm90ZWN0ZWRQdHI8VD46On5Qcm90ZWN0ZWRQdHIoKQotICAgIHsK
LSAgICAgICAgZ2NVbnByb3RlY3ROdWxsVG9sZXJhbnQobV9wdHIpOwotICAgIH0KLQotICAgIHRl
bXBsYXRlIDxjbGFzcyBUPiB0ZW1wbGF0ZSA8Y2xhc3MgVT4gaW5saW5lIFByb3RlY3RlZFB0cjxU
Pjo6UHJvdGVjdGVkUHRyKGNvbnN0IFByb3RlY3RlZFB0cjxVPiYgbykKLSAgICAgICAgOiBtX3B0
cihvLmdldCgpKQotICAgIHsKLSAgICAgICAgZ2NQcm90ZWN0TnVsbFRvbGVyYW50KG1fcHRyKTsK
LSAgICB9Ci0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVD4gaW5saW5lIFByb3RlY3RlZFB0cjxUPiYg
UHJvdGVjdGVkUHRyPFQ+OjpvcGVyYXRvcj0oY29uc3QgUHJvdGVjdGVkUHRyPFQ+JiBvKSAKLSAg
ICB7Ci0gICAgICAgIFQqIG9wdHIgPSBvLm1fcHRyOwotICAgICAgICBnY1Byb3RlY3ROdWxsVG9s
ZXJhbnQob3B0cik7Ci0gICAgICAgIGdjVW5wcm90ZWN0TnVsbFRvbGVyYW50KG1fcHRyKTsKLSAg
ICAgICAgbV9wdHIgPSBvcHRyOwotICAgICAgICByZXR1cm4gKnRoaXM7Ci0gICAgfQotCi0gICAg
dGVtcGxhdGUgPGNsYXNzIFQ+IGlubGluZSBQcm90ZWN0ZWRQdHI8VD4mIFByb3RlY3RlZFB0cjxU
Pjo6b3BlcmF0b3I9KFQqIG9wdHIpCi0gICAgewotICAgICAgICBnY1Byb3RlY3ROdWxsVG9sZXJh
bnQob3B0cik7Ci0gICAgICAgIGdjVW5wcm90ZWN0TnVsbFRvbGVyYW50KG1fcHRyKTsKLSAgICAg
ICAgbV9wdHIgPSBvcHRyOwotICAgICAgICByZXR1cm4gKnRoaXM7Ci0gICAgfQotCi0gICAgaW5s
aW5lIFByb3RlY3RlZEpTVmFsdWU6OlByb3RlY3RlZEpTVmFsdWUoSlNWYWx1ZSB2YWx1ZSkKLSAg
ICAgICAgOiBtX3ZhbHVlKHZhbHVlKQotICAgIHsKLSAgICAgICAgZ2NQcm90ZWN0KG1fdmFsdWUp
OwotICAgIH0KLQotICAgIGlubGluZSBQcm90ZWN0ZWRKU1ZhbHVlOjpQcm90ZWN0ZWRKU1ZhbHVl
KGNvbnN0IFByb3RlY3RlZEpTVmFsdWUmIG8pCi0gICAgICAgIDogbV92YWx1ZShvLmdldCgpKQot
ICAgIHsKLSAgICAgICAgZ2NQcm90ZWN0KG1fdmFsdWUpOwotICAgIH0KLQotICAgIGlubGluZSBQ
cm90ZWN0ZWRKU1ZhbHVlOjp+UHJvdGVjdGVkSlNWYWx1ZSgpCi0gICAgewotICAgICAgICBnY1Vu
cHJvdGVjdChtX3ZhbHVlKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVT4gUHJvdGVj
dGVkSlNWYWx1ZTo6UHJvdGVjdGVkSlNWYWx1ZShjb25zdCBQcm90ZWN0ZWRQdHI8VT4mIG8pCi0g
ICAgICAgIDogbV92YWx1ZShvLmdldCgpKQotICAgIHsKLSAgICAgICAgZ2NQcm90ZWN0KG1fdmFs
dWUpOwotICAgIH0KLQotICAgIGlubGluZSBQcm90ZWN0ZWRKU1ZhbHVlJiBQcm90ZWN0ZWRKU1Zh
bHVlOjpvcGVyYXRvcj0oY29uc3QgUHJvdGVjdGVkSlNWYWx1ZSYgbykgCi0gICAgewotICAgICAg
ICBKU1ZhbHVlIG92YWx1ZSA9IG8ubV92YWx1ZTsKLSAgICAgICAgZ2NQcm90ZWN0KG92YWx1ZSk7
Ci0gICAgICAgIGdjVW5wcm90ZWN0KG1fdmFsdWUpOwotICAgICAgICBtX3ZhbHVlID0gb3ZhbHVl
OwotICAgICAgICByZXR1cm4gKnRoaXM7Ci0gICAgfQotCi0gICAgaW5saW5lIFByb3RlY3RlZEpT
VmFsdWUmIFByb3RlY3RlZEpTVmFsdWU6Om9wZXJhdG9yPShKU1ZhbHVlIG92YWx1ZSkKLSAgICB7
Ci0gICAgICAgIGdjUHJvdGVjdChvdmFsdWUpOwotICAgICAgICBnY1VucHJvdGVjdChtX3ZhbHVl
KTsKLSAgICAgICAgbV92YWx1ZSA9IG92YWx1ZTsKLSAgICAgICAgcmV0dXJuICp0aGlzOwotICAg
IH0KLQotICAgIHRlbXBsYXRlIDxjbGFzcyBUPiBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0
IFByb3RlY3RlZFB0cjxUPiYgYSwgY29uc3QgUHJvdGVjdGVkUHRyPFQ+JiBiKSB7IHJldHVybiBh
LmdldCgpID09IGIuZ2V0KCk7IH0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVD4gaW5saW5lIGJvb2wg
b3BlcmF0b3I9PShjb25zdCBQcm90ZWN0ZWRQdHI8VD4mIGEsIGNvbnN0IFQqIGIpIHsgcmV0dXJu
IGEuZ2V0KCkgPT0gYjsgfQotICAgIHRlbXBsYXRlIDxjbGFzcyBUPiBpbmxpbmUgYm9vbCBvcGVy
YXRvcj09KGNvbnN0IFQqIGEsIGNvbnN0IFByb3RlY3RlZFB0cjxUPiYgYikgeyByZXR1cm4gYSA9
PSBiLmdldCgpOyB9Ci0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVD4gaW5saW5lIGJvb2wgb3BlcmF0
b3IhPShjb25zdCBQcm90ZWN0ZWRQdHI8VD4mIGEsIGNvbnN0IFByb3RlY3RlZFB0cjxUPiYgYikg
eyByZXR1cm4gYS5nZXQoKSAhPSBiLmdldCgpOyB9Ci0gICAgdGVtcGxhdGUgPGNsYXNzIFQ+IGlu
bGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgUHJvdGVjdGVkUHRyPFQ+JiBhLCBjb25zdCBUKiBi
KSB7IHJldHVybiBhLmdldCgpICE9IGI7IH0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVD4gaW5saW5l
IGJvb2wgb3BlcmF0b3IhPShjb25zdCBUKiBhLCBjb25zdCBQcm90ZWN0ZWRQdHI8VD4mIGIpIHsg
cmV0dXJuIGEgIT0gYi5nZXQoKTsgfQotCi0gICAgaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25z
dCBQcm90ZWN0ZWRKU1ZhbHVlJiBhLCBjb25zdCBQcm90ZWN0ZWRKU1ZhbHVlJiBiKSB7IHJldHVy
biBhLmdldCgpID09IGIuZ2V0KCk7IH0KLSAgICBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0
IFByb3RlY3RlZEpTVmFsdWUmIGEsIGNvbnN0IEpTVmFsdWUgYikgeyByZXR1cm4gYS5nZXQoKSA9
PSBiOyB9Ci0gICAgdGVtcGxhdGUgPGNsYXNzIFQ+IGlubGluZSBib29sIG9wZXJhdG9yPT0oY29u
c3QgUHJvdGVjdGVkSlNWYWx1ZSYgYSwgY29uc3QgUHJvdGVjdGVkUHRyPFQ+JiBiKSB7IHJldHVy
biBhLmdldCgpID09IEpTVmFsdWUoYi5nZXQoKSk7IH0KLSAgICBpbmxpbmUgYm9vbCBvcGVyYXRv
cj09KGNvbnN0IEpTVmFsdWUgYSwgY29uc3QgUHJvdGVjdGVkSlNWYWx1ZSYgYikgeyByZXR1cm4g
YSA9PSBiLmdldCgpOyB9Ci0gICAgdGVtcGxhdGUgPGNsYXNzIFQ+IGlubGluZSBib29sIG9wZXJh
dG9yPT0oY29uc3QgUHJvdGVjdGVkUHRyPFQ+JiBhLCBjb25zdCBQcm90ZWN0ZWRKU1ZhbHVlJiBi
KSB7IHJldHVybiBKU1ZhbHVlKGEuZ2V0KCkpID09IGIuZ2V0KCk7IH0KLQotICAgIGlubGluZSBi
b29sIG9wZXJhdG9yIT0oY29uc3QgUHJvdGVjdGVkSlNWYWx1ZSYgYSwgY29uc3QgUHJvdGVjdGVk
SlNWYWx1ZSYgYikgeyByZXR1cm4gYS5nZXQoKSAhPSBiLmdldCgpOyB9Ci0gICAgaW5saW5lIGJv
b2wgb3BlcmF0b3IhPShjb25zdCBQcm90ZWN0ZWRKU1ZhbHVlJiBhLCBjb25zdCBKU1ZhbHVlIGIp
IHsgcmV0dXJuIGEuZ2V0KCkgIT0gYjsgfQotICAgIHRlbXBsYXRlIDxjbGFzcyBUPiBpbmxpbmUg
Ym9vbCBvcGVyYXRvciE9KGNvbnN0IFByb3RlY3RlZEpTVmFsdWUmIGEsIGNvbnN0IFByb3RlY3Rl
ZFB0cjxUPiYgYikgeyByZXR1cm4gYS5nZXQoKSAhPSBKU1ZhbHVlKGIuZ2V0KCkpOyB9Ci0gICAg
aW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBKU1ZhbHVlIGEsIGNvbnN0IFByb3RlY3RlZEpT
VmFsdWUmIGIpIHsgcmV0dXJuIGEgIT0gYi5nZXQoKTsgfQotICAgIHRlbXBsYXRlIDxjbGFzcyBU
PiBpbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFByb3RlY3RlZFB0cjxUPiYgYSwgY29uc3Qg
UHJvdGVjdGVkSlNWYWx1ZSYgYikgeyByZXR1cm4gSlNWYWx1ZShhLmdldCgpKSAhPSBiLmdldCgp
OyB9Ci0gCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogI2VuZGlmIC8vIFByb3RlY3RfaApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAKaW5kZXggZThmNWQ3YTk5Nzkx
MGQ2YmZjYTk3MjkxZDdjYTQ5Mjg0ZTRlYjdjNS4uOTY3ZTRkN2NiZmMzMDcyMWY0MGNmZTQ2ODFl
Y2JlZGU3YjViMDVlMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U3RydWN0dXJlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1
cmUuY3BwCkBAIC0yNjYsNyArMjY2LDYgQEAgU3RydWN0dXJlOjp+U3RydWN0dXJlKCkKICAgICAg
ICAgbV9wcmV2aW91cy0+dHJhbnNpdGlvblRhYmxlUmVtb3ZlKG1ha2VfcGFpcihtX25hbWVJblBy
ZXZpb3VzLmdldCgpLCBtX2F0dHJpYnV0ZXNJblByZXZpb3VzKSwgbV9zcGVjaWZpY1ZhbHVlSW5Q
cmV2aW91cyk7CiAKICAgICB9Ci0gICAgQVNTRVJUKCFtX2VudW1lcmF0aW9uQ2FjaGUuaGFzRGVh
ZE9iamVjdCgpKTsKIAogICAgIGlmIChtX3Byb3BlcnR5VGFibGUpIHsKICAgICAgICAgdW5zaWdu
ZWQgZW50cnlDb3VudCA9IG1fcHJvcGVydHlUYWJsZS0+a2V5Q291bnQgKyBtX3Byb3BlcnR5VGFi
bGUtPmRlbGV0ZWRTZW50aW5lbENvdW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU3RydWN0dXJlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
dHJ1Y3R1cmUuaAppbmRleCA3NzcyNGFjZmYzNTQ2NjBjODI1MjJhN2E1NzUxNDhmNmU4OWY3ODQ3
Li43ZDAyMDNiNDU4ZjVkMTg0MzdjYzY3OWMzMjEzYWU5YmRlYmE0MTJlIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaApAQCAtMTM2LDggKzEzNiw4IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICB2b2lkIGRlc3BlY2lmeURpY3Rpb25hcnlGdW5jdGlvbihjb25z
dCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpOwogICAgICAgICB2b2lkIGRpc2FibGVTcGVjaWZp
Y0Z1bmN0aW9uVHJhY2tpbmcoKSB7IG1fc3BlY2lmaWNGdW5jdGlvblRocmFzaENvdW50ID0gbWF4
U3BlY2lmaWNGdW5jdGlvblRocmFzaENvdW50OyB9CiAKLSAgICAgICAgdm9pZCBzZXRFbnVtZXJh
dGlvbkNhY2hlKEpTUHJvcGVydHlOYW1lSXRlcmF0b3IqIGVudW1lcmF0aW9uQ2FjaGUpOyAvLyBE
ZWZpbmVkIGluIEpTUHJvcGVydHlOYW1lSXRlcmF0b3IuaC4KLSAgICAgICAgdm9pZCBjbGVhckVu
dW1lcmF0aW9uQ2FjaGUoSlNQcm9wZXJ0eU5hbWVJdGVyYXRvciogZW51bWVyYXRpb25DYWNoZSk7
IC8vIERlZmluZWQgaW4gSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oLgorICAgICAgICB2b2lkIHNl
dEVudW1lcmF0aW9uQ2FjaGUoSlNHbG9iYWxEYXRhJiwgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvciog
ZW51bWVyYXRpb25DYWNoZSk7IC8vIERlZmluZWQgaW4gSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5o
LgorICAgICAgICB2b2lkIGNsZWFyRW51bWVyYXRpb25DYWNoZSgpOyAvLyBEZWZpbmVkIGluIEpT
UHJvcGVydHlOYW1lSXRlcmF0b3IuaC4KICAgICAgICAgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvciog
ZW51bWVyYXRpb25DYWNoZSgpOyAvLyBEZWZpbmVkIGluIEpTUHJvcGVydHlOYW1lSXRlcmF0b3Iu
aC4KICAgICAgICAgdm9pZCBnZXRQcm9wZXJ0eU5hbWVzKFByb3BlcnR5TmFtZUFycmF5JiwgRW51
bWVyYXRpb25Nb2RlIG1vZGUpOwogICAgICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1dlYWtHQ1B0ci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvV2Vha0dDUHRyLmgKaW5kZXggNDk0NmVlN2M1YjEzZTJmMGJlN2JlOGY2ZGQwZTgyYWIzN2U0
NzgyYS4uYTAxMzhjMDhjNTkwNGIyM2NkZGM1MWVmN2MwNjc4Y2M5NGIxZTFjNiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha0dDUHRyLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha0dDUHRyLmgKQEAgLTI2LDEyOCArMjYsNzkgQEAK
ICNpZm5kZWYgV2Vha0dDUHRyX2gKICNkZWZpbmUgV2Vha0dDUHRyX2gKIAorI2luY2x1ZGUgIkds
b2JhbC5oIgogI2luY2x1ZGUgIkhlYXAuaCIKLSNpbmNsdWRlICJHQ0hhbmRsZS5oIgogCiBuYW1l
c3BhY2UgSlNDIHsKKy8vIEEgc21hcnQgcG9pbnRlciB3aG9zZSBnZXQoKSBmdW5jdGlvbiByZXR1
cm5zIDAgZm9yIGNlbGxzIHRoYXQgaGF2ZSBkaWVkCiAKLS8vIEEgc21hcnQgcG9pbnRlciB3aG9z
ZSBnZXQoKSBmdW5jdGlvbiByZXR1cm5zIDAgZm9yIGNlbGxzIGF3YWl0aW5nIGRlc3RydWN0aW9u
LgotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzIFdlYWtHQ1B0ciB7Cit0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVD4gY2xhc3MgV2Vha0dDUHRyIDogcHVibGljIEhhbmRsZUNvbnZlcnRlcjxXZWFrR0NQ
dHI8VD4sIFQ+IHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShXZWFrR0NQdHIpOworCiBwdWJs
aWM6CisgICAgdHlwZWRlZiB0eXBlbmFtZSBIYW5kbGVUeXBlczxUPjo6RXh0ZXJuYWxUeXBlIEV4
dGVybmFsVHlwZTsKKyAgICAKICAgICBXZWFrR0NQdHIoKQotICAgICAgICA6IG1fcHRyKDApCisg
ICAgICAgIDogbV9zbG90KDApCiAgICAgewogICAgIH0KLQotICAgIFdlYWtHQ1B0cihUKiBwdHIp
IHsgYXNzaWduKHB0cik7IH0KLQotICAgIH5XZWFrR0NQdHIoKQorICAgIAorICAgIFdlYWtHQ1B0
cihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEZpbmFsaXplciBmaW5hbGl6ZXIgPSAwKQorICAg
ICAgICA6IG1fc2xvdChnbG9iYWxEYXRhLmFsbG9jYXRlR2xvYmFsSGFuZGxlKCkpCiAgICAgewot
ICAgICAgICBpZiAobV9wdHIpCi0gICAgICAgICAgICBtX3B0ci0+cG9vbCgpLT5mcmVlKG1fcHRy
KTsKKyAgICAgICAgSGFuZGxlSGVhcDo6aGVhcEZvcihtX3Nsb3QpLT5tYWtlV2VhayhtX3Nsb3Qs
IGZpbmFsaXplcik7CiAgICAgfQotCi0gICAgVCogZ2V0KCkgY29uc3QKKyAgICAKKyAgICBXZWFr
R0NQdHIoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBFeHRlcm5hbFR5cGUgdmFsdWUsIEZpbmFs
aXplciBmaW5hbGl6ZXIgPSAwKQorICAgICAgICA6IG1fc2xvdChnbG9iYWxEYXRhLmFsbG9jYXRl
R2xvYmFsSGFuZGxlKCkpCiAgICAgewotICAgICAgICBpZiAobV9wdHIgJiYgbV9wdHItPmlzVmFs
aWRQdHIoKSkKLSAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxUKj4obV9wdHItPmdldCgp
KTsKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIEhhbmRsZUhlYXA6OmhlYXBGb3IobV9zbG90
KS0+bWFrZVdlYWsobV9zbG90LCBmaW5hbGl6ZXIpOworICAgICAgICBpbnRlcm5hbFNldCh2YWx1
ZSk7CiAgICAgfQorCisgICAgRXh0ZXJuYWxUeXBlIGdldCgpIGNvbnN0IHsgcmV0dXJuICBIYW5k
bGVUeXBlczxUPjo6Z2V0RnJvbVNsb3QobV9zbG90KTsgfQogICAgIAotICAgIGJvb2wgY2xlYXIo
SlNDZWxsKiBwKQorICAgIHZvaWQgY2xlYXIoKQogICAgIHsKLSAgICAgICAgaWYgKCFtX3B0ciB8
fCBtX3B0ci0+Z2V0KCkgIT0gcCkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgICAg
ICBtX3B0ci0+cG9vbCgpLT5mcmVlKG1fcHRyKTsKLSAgICAgICAgbV9wdHIgPSAwOwotICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgaWYgKG1fc2xvdCkKKyAgICAgICAgICAgIGludGVybmFs
U2V0KEV4dGVybmFsVHlwZSgpKTsKICAgICB9Ci0KLSAgICBUJiBvcGVyYXRvciooKSBjb25zdCB7
IHJldHVybiAqZ2V0KCk7IH0KLSAgICBUKiBvcGVyYXRvci0+KCkgY29uc3QgeyByZXR1cm4gZ2V0
KCk7IH0KICAgICAKLSAgICBib29sIG9wZXJhdG9yISgpIGNvbnN0IHsgcmV0dXJuICFnZXQoKTsg
fQorICAgIGJvb2wgb3BlcmF0b3IhKCkgY29uc3QgeyByZXR1cm4gIW1fc2xvdCB8fCAhKm1fc2xv
dDsgfQogCiAgICAgLy8gVGhpcyBjb252ZXJzaW9uIG9wZXJhdG9yIGFsbG93cyBpbXBsaWNpdCBj
b252ZXJzaW9uIHRvIGJvb2wgYnV0IG5vdCB0byBvdGhlciBpbnRlZ2VyIHR5cGVzLgotI2lmIENP
TVBJTEVSKFdJTlNDVykKLSAgICBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gbV9wdHI7
IH0KLSNlbHNlCi0gICAgdHlwZWRlZiBXZWFrR0NIYW5kbGUqIFdlYWtHQ1B0cjo6KlVuc3BlY2lm
aWVkQm9vbFR5cGU7Ci0gICAgb3BlcmF0b3IgVW5zcGVjaWZpZWRCb29sVHlwZSgpIGNvbnN0IHsg
cmV0dXJuIGdldCgpID8gJldlYWtHQ1B0cjo6bV9wdHIgOiAwOyB9Ci0jZW5kaWYKKyAgICB0eXBl
ZGVmIEV4dGVybmFsVHlwZSAoV2Vha0dDUHRyOjoqVW5zcGVjaWZpZWRCb29sVHlwZSk7CisgICAg
b3BlcmF0b3IgVW5zcGVjaWZpZWRCb29sVHlwZSooKSBjb25zdCB7IHJldHVybiAhKnRoaXMgPyAw
IDogcmVpbnRlcnByZXRfY2FzdDxVbnNwZWNpZmllZEJvb2xUeXBlKj4oMSk7IH0KIAotICAgIFdl
YWtHQ1B0ciYgb3BlcmF0b3I9KFQqKTsKKyAgICB+V2Vha0dDUHRyKCkKKyAgICB7CisgICAgICAg
IGlmICghbV9zbG90KQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBIYW5kbGVIZWFwOjpo
ZWFwRm9yKG1fc2xvdCktPmRlYWxsb2NhdGUobV9zbG90KTsKKyAgICB9CiAKLSNpZiAhQVNTRVJU
X0RJU0FCTEVECi0gICAgYm9vbCBoYXNEZWFkT2JqZWN0KCkgY29uc3QgeyByZXR1cm4gISFtX3B0
cjsgfQotI2VuZGlmCisgICAgdm9pZCBzZXQoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBFeHRl
cm5hbFR5cGUgdmFsdWUsIEZpbmFsaXplciBmaW5hbGl6ZXIpCisgICAgeworICAgICAgICBpZiAo
IXRoaXMtPm1fc2xvdCkgeworICAgICAgICAgICAgdGhpcy0+bV9zbG90ID0gZ2xvYmFsRGF0YS5h
bGxvY2F0ZUdsb2JhbEhhbmRsZSgpOworICAgICAgICAgICAgSGFuZGxlSGVhcDo6aGVhcEZvcih0
aGlzLT5tX3Nsb3QpLT5tYWtlV2Vhayh0aGlzLT5tX3Nsb3QsIGZpbmFsaXplcik7CisgICAgICAg
IH0gZWxzZQorICAgICAgICAgICAgQVNTRVJUKEhhbmRsZUhlYXA6OmhlYXBGb3IodGhpcy0+bV9z
bG90KS0+Z2V0RmluYWxpemVyKHRoaXMtPm1fc2xvdCkgPT0gZmluYWxpemVyKTsKKyAgICAgICAg
dGhpcy0+aW50ZXJuYWxTZXQodmFsdWUpOworICAgIH0KIAogcHJpdmF0ZToKLSAgICB2b2lkIGFz
c2lnbihKU0NlbGwqIHB0cikKKyAgICB2b2lkIGludGVybmFsU2V0KEV4dGVybmFsVHlwZSB2YWx1
ZSkKICAgICB7Ci0gICAgICAgIEFTU0VSVChwdHIpOwotICAgICAgICBpZiAobV9wdHIpCi0gICAg
ICAgICAgICBtX3B0ci0+c2V0KHB0cik7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1fcHRy
ID0gSGVhcDo6aGVhcChwdHIpLT5hZGRXZWFrR0NIYW5kbGUocHRyKTsKKyAgICAgICAgQVNTRVJU
KG1fc2xvdCk7CisgICAgICAgIEpTVmFsdWUgbmV3VmFsdWUoSGFuZGxlVHlwZXM8VD46OnRvSlNW
YWx1ZSh2YWx1ZSkpOworICAgICAgICBIYW5kbGVIZWFwOjpoZWFwRm9yKG1fc2xvdCktPndyaXRl
QmFycmllcihtX3Nsb3QsIG5ld1ZhbHVlKTsKKyAgICAgICAgKm1fc2xvdCA9IG5ld1ZhbHVlOwog
ICAgIH0KIAotICAgIFdlYWtHQ0hhbmRsZSogbV9wdHI7CisgICAgSGFuZGxlU2xvdCBtX3Nsb3Q7
CiB9OwogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gaW5saW5lIFdlYWtHQ1B0cjxUPiYgV2Vha0dD
UHRyPFQ+OjpvcGVyYXRvcj0oVCogb3B0cikKLXsKLSAgICBhc3NpZ24ob3B0cik7Ci0gICAgcmV0
dXJuICp0aGlzOwotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4gaW5saW5l
IGJvb2wgb3BlcmF0b3I9PShjb25zdCBXZWFrR0NQdHI8VD4mIGEsIGNvbnN0IFdlYWtHQ1B0cjxV
PiYgYikKLXsgCi0gICAgcmV0dXJuIGEuZ2V0KCkgPT0gYi5nZXQoKTsgCi19Ci0KLXRlbXBsYXRl
IDx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFdl
YWtHQ1B0cjxUPiYgYSwgVSogYikKLXsgCi0gICAgcmV0dXJuIGEuZ2V0KCkgPT0gYjsgCi19Ci0K
LXRlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBpbmxpbmUgYm9vbCBvcGVyYXRvcj09
KFQqIGEsIGNvbnN0IFdlYWtHQ1B0cjxVPiYgYikgCi17Ci0gICAgcmV0dXJuIGEgPT0gYi5nZXQo
KTsgCi19Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBpbmxpbmUgYm9vbCBv
cGVyYXRvciE9KGNvbnN0IFdlYWtHQ1B0cjxUPiYgYSwgY29uc3QgV2Vha0dDUHRyPFU+JiBiKQot
eyAKLSAgICByZXR1cm4gYS5nZXQoKSAhPSBiLmdldCgpOyAKLX0KLQotdGVtcGxhdGUgPHR5cGVu
YW1lIFQsIHR5cGVuYW1lIFU+IGlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgV2Vha0dDUHRy
PFQ+JiBhLCBVKiBiKQotewotICAgIHJldHVybiBhLmdldCgpICE9IGI7IAotfQotCi10ZW1wbGF0
ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4gaW5saW5lIGJvb2wgb3BlcmF0b3IhPShUKiBhLCBj
b25zdCBXZWFrR0NQdHI8VT4mIGIpCi17IAotICAgIHJldHVybiBhICE9IGIuZ2V0KCk7IAotfQot
Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4gaW5saW5lIFdlYWtHQ1B0cjxUPiBz
dGF0aWNfcG9pbnRlcl9jYXN0KGNvbnN0IFdlYWtHQ1B0cjxVPiYgcCkKLXsgCi0gICAgcmV0dXJu
IFdlYWtHQ1B0cjxUPihzdGF0aWNfY2FzdDxUKj4ocC5nZXQoKSkpOyAKLX0KLQotdGVtcGxhdGUg
PHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+IGlubGluZSBXZWFrR0NQdHI8VD4gY29uc3RfcG9pbnRl
cl9jYXN0KGNvbnN0IFdlYWtHQ1B0cjxVPiYgcCkKLXsgCi0gICAgcmV0dXJuIFdlYWtHQ1B0cjxU
Pihjb25zdF9jYXN0PFQqPihwLmdldCgpKSk7IAotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4g
aW5saW5lIFQqIGdldChjb25zdCBXZWFrR0NQdHI8VD4mIHApCi17Ci0gICAgcmV0dXJuIHAuZ2V0
KCk7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIEpTQwogCiAjZW5kaWYgLy8gV2Vha0dDUHRyX2gKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dyaXRlQmFycmllci5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV3JpdGVCYXJyaWVyLmgKaW5kZXggNjQxNTBl
ZGNlNThiMWEwNTQ1MTkwYTc4NGQwYTg1ZTkyNDRiMmEwNS4uNDQ4NDBhZGRkNzFhYmZmNTcxMTgy
MjYzMzVkNWVkM2Y3ZTAwNmI3ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvV3JpdGVCYXJyaWVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
V3JpdGVCYXJyaWVyLmgKQEAgLTMzLDYgKzMzLDcgQEAgY2xhc3MgSlNDZWxsOwogY2xhc3MgSlNH
bG9iYWxEYXRhOwogCiB0eXBlZGVmIGVudW0geyB9IFVua25vd247Cit0eXBlZGVmIEpTVmFsdWUq
IEhhbmRsZVNsb3Q7CiAKIHRlbXBsYXRlIDxjbGFzcyBUPiBjbGFzcyBEZXByZWNhdGVkUHRyIHsK
IHB1YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvQmxvY2tTdGFj
ay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9CbG9ja1N0YWNrLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
YTRkNzQyNTdmZDJjYzBmNjNlYjQ4MWQyZjU3YWU5NjkwMTNmY2Q5OQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvQmxvY2tTdGFjay5oCkBAIC0wLDAgKzEsOTUg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaWZuZGVmIEJsb2NrU3RhY2tfaAorI2RlZmluZSBCbG9ja1N0YWNr
X2gKKworI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5o
PgorCituYW1lc3BhY2UgV1RGIHsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzIEJsb2Nr
U3RhY2sgeworcHVibGljOgorICAgIHN0YXRpYyBjb25zdCBzaXplX3QgYmxvY2tTaXplID0gNDA5
NjsKKyAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IGJsb2NrTGVuZ3RoID0gYmxvY2tTaXplIC8gc2l6
ZW9mKFQpOworCisgICAgQmxvY2tTdGFjaygpOworICAgIH5CbG9ja1N0YWNrKCk7CisKKyAgICBU
KiBncm93KCk7CisgICAgdm9pZCBzaHJpbmsoVCopOworCisgICAgY29uc3QgVmVjdG9yPFQqPiYg
YmxvY2tzKCk7CisKK3ByaXZhdGU6CisgICAgVmVjdG9yPFQqPiBtX2Jsb2NrczsKKyAgICBUKiBt
X3NwYXJlQmxvY2s7IC8vIFVzZWQgdG8gYXZvaWQgdGhyYXNoIGF0IGJsb2NrIGJvdW5kYXJpZXMu
Cit9OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gQmxvY2tTdGFjazxUPjo6QmxvY2tTdGFjaygp
CisgICAgOiBtX3NwYXJlQmxvY2soMCkKK3sKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+IEJs
b2NrU3RhY2s8VD46On5CbG9ja1N0YWNrKCkKK3sKKyAgICBpZiAobV9zcGFyZUJsb2NrKQorICAg
ICAgICBmcmVlKG1fc3BhcmVCbG9jayk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2Js
b2Nrcy5zaXplKCk7ICsraSkKKyAgICAgICAgZnJlZShtX2Jsb2Nrc1tpXSk7Cit9CisKK3RlbXBs
YXRlIDx0eXBlbmFtZSBUPiBpbmxpbmUgY29uc3QgVmVjdG9yPFQqPiYgQmxvY2tTdGFjazxUPjo6
YmxvY2tzKCkKK3sKKyAgICByZXR1cm4gbV9ibG9ja3M7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFt
ZSBUPiBUKiBCbG9ja1N0YWNrPFQ+Ojpncm93KCkKK3sKKyAgICBUKiBibG9jayA9IG1fc3BhcmVC
bG9jayA/IG1fc3BhcmVCbG9jayA6IHN0YXRpY19jYXN0PFQqPihtYWxsb2MoYmxvY2tTaXplKSk7
CisgICAgbV9zcGFyZUJsb2NrID0gMDsKKworICAgIG1fYmxvY2tzLmFwcGVuZChibG9jayk7Cisg
ICAgcmV0dXJuIGJsb2NrOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gdm9pZCBCbG9ja1N0
YWNrPFQ+OjpzaHJpbmsoVCogbmV3RW5kKQoreworICAgIEFTU0VSVChuZXdFbmQgIT0gbV9ibG9j
a3MubGFzdCgpICsgYmxvY2tMZW5ndGgpOworICAgIG1fc3BhcmVCbG9jayA9IG1fYmxvY2tzLmxh
c3QoKTsKKyAgICBtX2Jsb2Nrcy5yZW1vdmVMYXN0KCk7CisKKyAgICB3aGlsZSAobV9ibG9ja3Mu
bGFzdCgpICsgYmxvY2tMZW5ndGggIT0gbmV3RW5kKSB7CisgICAgICAgIGZyZWUobV9ibG9ja3Mu
bGFzdCgpKTsKKyAgICAgICAgbV9ibG9ja3MucmVtb3ZlTGFzdCgpOworICAgIH0KK30KKworfQor
Cit1c2luZyBXVEY6OkJsb2NrU3RhY2s7CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3d0Zi9TZW50aW5lbExpbmtlZExpc3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93dGYvU2VudGluZWxMaW5rZWRMaXN0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjEwZDJkMjBmZTFkMjQy
YjhmNjk5ZDFjZGQwZTI1ZjY0NDFkM2ZjMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93dGYvU2VudGluZWxMaW5rZWRMaXN0LmgKQEAgLTAsMCArMSwxMDkgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisvLyAgICBBIFNlbnRpbmVsTGlua2VkTGlzdCBpcyBhIGxpbmtlZCBsaXN0IHdp
dGggZHVtbXkgaGVhZCBhbmQgdGFpbCBzZW50aW5lbHMsCisvLyAgICB3aGljaCBhbGxvdyBmb3Ig
YnJhbmNoLWxlc3MgaW5zZXJ0aW9uIGFuZCByZW1vdmFsLCBhbmQgcmVtb3ZhbCB3aXRob3V0IGEK
Ky8vICAgIHBvaW50ZXIgdG8gdGhlIGxpc3QuCisvLyAgICAKKy8vICAgIFJlcXVpcmVzOiBOb2Rl
IGlzIGEgY29uY3JldGUgY2xhc3Mgd2l0aDoKKy8vICAgICAgICBOb2RlKFNlbnRpbmVsVGFnKTsK
Ky8vICAgICAgICB2b2lkIHNldFByZXYoTm9kZSopOworLy8gICAgICAgIE5vZGUqIHByZXYoKTsK
Ky8vICAgICAgICB2b2lkIHNldE5leHQoTm9kZSopOworLy8gICAgICAgIE5vZGUqIG5leHQoKTsK
KworI2lmbmRlZiBTZW50aW5lbExpbmtlZExpc3RfaAorI2RlZmluZSBTZW50aW5lbExpbmtlZExp
c3RfaAorCituYW1lc3BhY2UgV1RGIHsKKworZW51bSBTZW50aW5lbFRhZyB7IFNlbnRpbmVsIH07
CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBOb2RlPiBjbGFzcyBTZW50aW5lbExpbmtlZExpc3Qgewor
cHVibGljOgorICAgIHR5cGVkZWYgTm9kZSogaXRlcmF0b3I7CisKKyAgICBTZW50aW5lbExpbmtl
ZExpc3QoKTsKKworICAgIHZvaWQgcHVzaChOb2RlKik7CisgICAgc3RhdGljIHZvaWQgcmVtb3Zl
KE5vZGUqKTsKKworICAgIGl0ZXJhdG9yIGJlZ2luKCk7CisgICAgaXRlcmF0b3IgZW5kKCk7CisK
K3ByaXZhdGU6CisgICAgTm9kZSBtX2hlYWRTZW50aW5lbDsKKyAgICBOb2RlIG1fdGFpbFNlbnRp
bmVsOworfTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIE5vZGU+IGlubGluZSBTZW50aW5lbExpbmtl
ZExpc3Q8Tm9kZT46OlNlbnRpbmVsTGlua2VkTGlzdCgpCisgICAgOiBtX2hlYWRTZW50aW5lbChT
ZW50aW5lbCkKKyAgICAsIG1fdGFpbFNlbnRpbmVsKFNlbnRpbmVsKQoreworICAgIG1faGVhZFNl
bnRpbmVsLnNldE5leHQoJm1fdGFpbFNlbnRpbmVsKTsKKyAgICBtX2hlYWRTZW50aW5lbC5zZXRQ
cmV2KDApOworCisgICAgbV90YWlsU2VudGluZWwuc2V0UHJldigmbV9oZWFkU2VudGluZWwpOwor
ICAgIG1fdGFpbFNlbnRpbmVsLnNldE5leHQoMCk7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBO
b2RlPiBpbmxpbmUgdHlwZW5hbWUgU2VudGluZWxMaW5rZWRMaXN0PE5vZGU+OjppdGVyYXRvciBT
ZW50aW5lbExpbmtlZExpc3Q8Tm9kZT46OmJlZ2luKCkKK3sKKyAgICByZXR1cm4gbV9oZWFkU2Vu
dGluZWwubmV4dCgpOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgTm9kZT4gaW5saW5lIHR5cGVu
YW1lIFNlbnRpbmVsTGlua2VkTGlzdDxOb2RlPjo6aXRlcmF0b3IgU2VudGluZWxMaW5rZWRMaXN0
PE5vZGU+OjplbmQoKQoreworICAgIHJldHVybiAmbV90YWlsU2VudGluZWw7Cit9CisKK3RlbXBs
YXRlIDx0eXBlbmFtZSBOb2RlPiBpbmxpbmUgdm9pZCBTZW50aW5lbExpbmtlZExpc3Q8Tm9kZT46
OnB1c2goTm9kZSogbm9kZSkKK3sKKyAgICBBU1NFUlQobm9kZSk7CisgICAgTm9kZSogcHJldiA9
ICZtX2hlYWRTZW50aW5lbDsKKyAgICBOb2RlKiBuZXh0ID0gbV9oZWFkU2VudGluZWwubmV4dCgp
OworCisgICAgbm9kZS0+c2V0UHJldihwcmV2KTsKKyAgICBub2RlLT5zZXROZXh0KG5leHQpOwor
CisgICAgcHJldi0+c2V0TmV4dChub2RlKTsKKyAgICBuZXh0LT5zZXRQcmV2KG5vZGUpOworfQor
Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgTm9kZT4gaW5saW5lIHZvaWQgU2VudGluZWxMaW5rZWRMaXN0
PE5vZGU+OjpyZW1vdmUoTm9kZSogbm9kZSkKK3sKKyAgICBOb2RlKiBwcmV2ID0gbm9kZS0+cHJl
digpOworICAgIE5vZGUqIG5leHQgPSBub2RlLT5uZXh0KCk7CisKKyAgICBwcmV2LT5zZXROZXh0
KG5leHQpOworICAgIG5leHQtPnNldFByZXYocHJldik7Cit9CisKK30KKwordXNpbmcgV1RGOjpT
ZW50aW5lbExpbmtlZExpc3Q7CisKKyNlbmRpZgorCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd3RmL1NpbmdseUxpbmtlZExpc3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
dGYvU2luZ2x5TGlua2VkTGlzdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmMwMGJmMzY4N2I3MTkwZWZlMTllOWUx
NWIzNzZjOTg0MTM3MmZkNmUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd3RmL1NpbmdseUxpbmtlZExpc3QuaApAQCAtMCwwICsxLDcyIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2lmbmRlZiBTaW5nbHlMaW5rZWRMaXN0X2gKKyNkZWZpbmUgU2luZ2x5TGlua2VkTGlzdF9oCisK
K25hbWVzcGFjZSBXVEYgeworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgTm9kZT4gY2xhc3MgU2luZ2x5
TGlua2VkTGlzdCB7CitwdWJsaWM6CisgICAgU2luZ2x5TGlua2VkTGlzdCgpOworICAgIAorICAg
IGJvb2wgaXNFbXB0eSgpOworCisgICAgdm9pZCBwdXNoKE5vZGUqKTsKKyAgICBOb2RlKiBwb3Ao
KTsKKworcHJpdmF0ZToKKyAgICBOb2RlKiBtX2hlYWQ7Cit9OworCit0ZW1wbGF0ZSA8dHlwZW5h
bWUgTm9kZT4gaW5saW5lIFNpbmdseUxpbmtlZExpc3Q8Tm9kZT46OlNpbmdseUxpbmtlZExpc3Qo
KQorICAgIDogbV9oZWFkKDApCit7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBOb2RlPiBpbmxp
bmUgYm9vbCBTaW5nbHlMaW5rZWRMaXN0PE5vZGU+Ojppc0VtcHR5KCkKK3sKKyAgICByZXR1cm4g
IW1faGVhZDsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIE5vZGU+IGlubGluZSB2b2lkIFNpbmds
eUxpbmtlZExpc3Q8Tm9kZT46OnB1c2goTm9kZSogbm9kZSkKK3sKKyAgICBBU1NFUlQobm9kZSk7
CisgICAgbm9kZS0+c2V0TmV4dChtX2hlYWQpOworICAgIG1faGVhZCA9IG5vZGU7Cit9CisKK3Rl
bXBsYXRlIDx0eXBlbmFtZSBOb2RlPiBpbmxpbmUgTm9kZSogU2luZ2x5TGlua2VkTGlzdDxOb2Rl
Pjo6cG9wKCkKK3sKKyAgICBOb2RlKiB0bXAgPSBtX2hlYWQ7CisgICAgbV9oZWFkID0gbV9oZWFk
LT5uZXh0KCk7CisgICAgcmV0dXJuIHRtcDsKK30KKworfQorCit1c2luZyBXVEY6OlNpbmdseUxp
bmtlZExpc3Q7CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRHbHVlL0No
YW5nZUxvZyBiL1NvdXJjZS9KYXZhU2NyaXB0R2x1ZS9DaGFuZ2VMb2cKaW5kZXggY2MxMzg4NGQ5
MTNhZmQ2NGRlODQ2MDllODNkNWFhNTI4YzYzMjRiZC4uMzRlZjQ1MjI3MGJhY2U5MWRjZDE2Yjkz
ODBjMjE2NTcwNTk2MmRlYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRHbHVlL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdEdsdWUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAg
QEAKKzIwMTEtMDItMTQgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZWZhY3RvciBoYW5kbGVz
IGFuZCB3ZWFrIHBvaW50ZXJzIHRvIGJlY29tZSBuaWNlciBhbmQgbW9yZSBhdXRvbWF0aWMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU0NDE1CisKKyAg
ICAgICAgVXBkYXRlIHRvIHVzZSBuZXcgR2xvYmFsPD4gdHlwZQorCisgICAgICAgICogSlNSdW4u
Y3BwOgorICAgICAgICAoSlNSdW46OkpTUnVuKToKKyAgICAgICAgKEpTUnVuOjpHbG9iYWxPYmpl
Y3QpOgorICAgICAgICAqIEpTUnVuLmg6CisgICAgICAgICogSlNWYWx1ZVdyYXBwZXIuY3BwOgor
ICAgICAgICAoSlNWYWx1ZVdyYXBwZXI6OkpTVmFsdWVXcmFwcGVyKToKKyAgICAgICAgKiBKU1Zh
bHVlV3JhcHBlci5oOgorCiAyMDExLTAyLTEzICBDYW1lcm9uIFp3YXJpY2ggIDx6d2FyaWNoQGFw
cGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYW4gQmVybnN0ZWluLgpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRHbHVlL0pTUnVuLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0R2x1
ZS9KU1J1bi5jcHAKaW5kZXggMDNmYzQzMWI5MWFjNWNhOWM5N2FlOWIzZjkwN2RlMGYyMTUxYTMw
Yy4uNzgxNTFjMWU0OTY4OGYyYjMzNWE1OGJjMDQ2NDZkZGYxOTBiYTEyZCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRHbHVlL0pTUnVuLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdEds
dWUvSlNSdW4uY3BwCkBAIC00OCw3ICs0OCw3IEBAIHZvaWQgSlNHbHVlR2xvYmFsT2JqZWN0Ojpk
ZXN0cm95RGF0YSh2b2lkKiBkYXRhKQogSlNSdW46OkpTUnVuKENGU3RyaW5nUmVmIHNvdXJjZSwg
SlNGbGFncyBpbkZsYWdzKQogICAgIDogICBKU0Jhc2Uoa0pTUnVuVHlwZUlEKSwKICAgICAgICAg
ZlNvdXJjZShDRlN0cmluZ1RvVVN0cmluZyhzb3VyY2UpKSwKLSAgICAgICAgZkdsb2JhbE9iamVj
dChuZXcgKCZnZXRUaHJlYWRHbG9iYWxFeGVjU3RhdGUoKS0+Z2xvYmFsRGF0YSgpKSBKU0dsdWVH
bG9iYWxPYmplY3QoSlNHbHVlR2xvYmFsT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUoanNOdWxsKCkp
LCBpbkZsYWdzKSksCisgICAgICAgIGZHbG9iYWxPYmplY3QoZ2V0VGhyZWFkR2xvYmFsRXhlY1N0
YXRlKCktPmdsb2JhbERhdGEoKSwgbmV3ICgmZ2V0VGhyZWFkR2xvYmFsRXhlY1N0YXRlKCktPmds
b2JhbERhdGEoKSkgSlNHbHVlR2xvYmFsT2JqZWN0KEpTR2x1ZUdsb2JhbE9iamVjdDo6Y3JlYXRl
U3RydWN0dXJlKGpzTnVsbCgpKSwgaW5GbGFncykpLAogICAgICAgICBmRmxhZ3MoaW5GbGFncykK
IHsKIH0KQEAgLTY5LDcgKzY5LDcgQEAgVVN0cmluZyBKU1J1bjo6R2V0U291cmNlKCkgY29uc3QK
IAogSlNHbG9iYWxPYmplY3QqIEpTUnVuOjpHbG9iYWxPYmplY3QoKSBjb25zdAogewotICAgIHJl
dHVybiBmR2xvYmFsT2JqZWN0OworICAgIHJldHVybiBmR2xvYmFsT2JqZWN0LmdldCgpOwogfQog
CiBDb21wbGV0aW9uIEpTUnVuOjpFdmFsdWF0ZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdEdsdWUvSlNSdW4uaCBiL1NvdXJjZS9KYXZhU2NyaXB0R2x1ZS9KU1J1bi5oCmluZGV4IDE1
ZDQ5NWI4NDE1OTkwMDYwMTZkMDFmNzg4MmI4ZjYwNTEyOTJlNjEuLjkyNGJlY2QxZDQzMzhkYWI3
ZTgwYzBiMjhjMjc1MDhkNjM3NDJhYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0R2x1
ZS9KU1J1bi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0R2x1ZS9KU1J1bi5oCkBAIC02Nyw3ICs2
Nyw3IEBAIGNsYXNzIEpTUnVuIDogcHVibGljIEpTQmFzZSB7CiAgICAgICAgIEpTRmxhZ3MgRmxh
Z3MoKSBjb25zdDsKICAgICBwcml2YXRlOgogICAgICAgICBVU3RyaW5nIGZTb3VyY2U7Ci0gICAg
ICAgIFByb3RlY3RlZFB0cjxKU0dsb2JhbE9iamVjdD4gZkdsb2JhbE9iamVjdDsKKyAgICAgICAg
R2xvYmFsPEpTR2xvYmFsT2JqZWN0PiBmR2xvYmFsT2JqZWN0OwogICAgICAgICBKU0ZsYWdzIGZG
bGFnczsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0R2x1ZS9KU1ZhbHVlV3Jh
cHBlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdEdsdWUvSlNWYWx1ZVdyYXBwZXIuY3BwCmluZGV4
IGQ5YWM0OTdkOTE5NDJkY2JhZTc3ODVjZDdjM2IxYTU0NTI3NjhmOTkuLjMyNGE5NzQ4NzllNjRj
NmI2YTgyYmFhNDA1NjI0MjJiZDRiMjExY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
R2x1ZS9KU1ZhbHVlV3JhcHBlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRHbHVlL0pTVmFs
dWVXcmFwcGVyLmNwcApAQCAtMzQsNyArMzQsNyBAQAogI2luY2x1ZGUgPHB0aHJlYWQuaD4KIAog
SlNWYWx1ZVdyYXBwZXI6OkpTVmFsdWVXcmFwcGVyKEpTVmFsdWUgaW5WYWx1ZSkKLSAgICA6IGZW
YWx1ZShpblZhbHVlKQorICAgIDogZlZhbHVlKGdldFRocmVhZEdsb2JhbEV4ZWNTdGF0ZSgpLT5n
bG9iYWxEYXRhKCksIGluVmFsdWUpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0R2x1ZS9KU1ZhbHVlV3JhcHBlci5oIGIvU291cmNlL0phdmFTY3JpcHRHbHVlL0pTVmFsdWVX
cmFwcGVyLmgKaW5kZXggY2Q1NDRkMDgwNGExOGY2YmMyNDRjYzdmMzEzMzA3ZGI0YjU5MTVhMy4u
OWQyN2Y4OTkxNDY2M2VjMjA4OThhMzM2YTAwNjVmMThmYzM4NTNmZSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRHbHVlL0pTVmFsdWVXcmFwcGVyLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRHbHVlL0pTVmFsdWVXcmFwcGVyLmgKQEAgLTQzLDcgKzQzLDcgQEAgcHVibGljOgogICAgIEpT
VmFsdWUgR2V0VmFsdWUoKTsKIAogcHJpdmF0ZToKLSAgICBQcm90ZWN0ZWRKU1ZhbHVlIGZWYWx1
ZTsKKyAgICBHbG9iYWw8VW5rbm93bj4gZlZhbHVlOwogICAgIAogICAgIHN0YXRpYyB2b2lkIEpT
T2JqZWN0RGlzcG9zZSh2b2lkICpkYXRhKTsKICAgICBzdGF0aWMgQ0ZBcnJheVJlZiBKU09iamVj
dENvcHlQcm9wZXJ0eU5hbWVzKHZvaWQgKmRhdGEpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGYwZDU2YTI4NTlk
Njg3MDE3YzFhNGNhNTNkYjgxZThmYjkyNWMzMjkuLjZiY2NkMTQ0NDQ0NDA5YzAwYjgwZGVmMTk5
NTk5N2M4NDY3NTJiM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMDkgQEAKKzIwMTEtMDItMTQg
IE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZWZhY3RvciBoYW5kbGVzIGFuZCB3ZWFrIHBvaW50
ZXJzIHRvIGJlY29tZSBuaWNlciBhbmQgbW9yZSBhdXRvbWF0aWMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU0NDE1CisKKyAgICAgICAgVXBkYXRlIFdl
YkNvcmUgdG8gdXNlIHRoZSBuZXcgR2xvYmFsPD4gdHlwZSByYXRoZXIgdGhhbiBQcm90ZWN0ZWRK
U1ZhbHVlCisgICAgICAgIGFuZCBnY1tVbl1Qcm90ZWN0LiAgQWxzbyB1cGRhdGUgdG8gdXNlIG5l
dyBXZWFrR0NQdHIgQVBJcywgYW5kIHJlbW92ZSBub3cKKyAgICAgICAgdW5uZWNlc3NhcnkgZGVz
dHJ1Y3RvcnMuCisKKyAgICAgICAgKiBGb3J3YXJkaW5nSGVhZGVycy9jb2xsZWN0b3IvaGFuZGxl
cy9HbG9iYWwuaDogQWRkZWQuCisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3By
b2o6CisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovY29weUZvcndhcmRpbmdIZWFkZXJzLmNtZDoK
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0NhbGxiYWNrRGF0YS5oOgorICAgICAgICAoV2ViQ29y
ZTo6SlNDYWxsYmFja0RhdGE6OkpTQ2FsbGJhY2tEYXRhKToKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9KU0N1c3RvbVZvaWRDYWxsYmFjay5oOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NQmlu
ZGluZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpmb3JnZXRET01Ob2RlKToKKyAgICAgICAgKFdl
YkNvcmU6OmNhY2hlRE9NTm9kZVdyYXBwZXIpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9N
V2luZG93QmFzZS5oOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93U2hlbGwuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3dTaGVsbDo6c2V0V2luZG93KToKKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9KU0RhdGFHcmlkRGF0YVNvdXJjZS5oOgorICAgICAgICAqIGJpbmRp
bmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0V2ZW50TGlz
dGVuZXI6OkpTRXZlbnRMaXN0ZW5lcik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNFdmVudExp
c3RlbmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpKU0V2ZW50TGlzdGVuZXI6OnNldFdyYXBwZXIp
OgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTTGF6eUV2ZW50TGlzdGVuZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SlNMYXp5RXZlbnRMaXN0ZW5lcjo6aW5pdGlhbGl6ZUpTRnVuY3Rpb24pOgor
ICAgICAgICAqIGJpbmRpbmdzL2pzL1NjaGVkdWxlZEFjdGlvbi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTY2hlZHVsZWRBY3Rpb246OlNjaGVkdWxlZEFjdGlvbik6CisgICAgICAgIChXZWJDb3Jl
OjpTY2hlZHVsZWRBY3Rpb246OmV4ZWN1dGVGdW5jdGlvbkluQ29udGV4dCk6CisgICAgICAgICog
YmluZGluZ3MvanMvU2NoZWR1bGVkQWN0aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpTY2hlZHVs
ZWRBY3Rpb246OlNjaGVkdWxlZEFjdGlvbik6CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0
Q2FjaGVkRnJhbWVEYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENhY2hlZEZyYW1l
RGF0YTo6U2NyaXB0Q2FjaGVkRnJhbWVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENh
Y2hlZEZyYW1lRGF0YTo6cmVzdG9yZSk6CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0Q2Fj
aGVkRnJhbWVEYXRhLmg6CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0Q2FsbFN0YWNrRmFj
dG9yeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVTY3JpcHRBcmd1bWVudHMpOgorICAg
ICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U2NyaXB0Q29udHJvbGxlcjo6Y3JlYXRlV2luZG93U2hlbGwpOgorICAgICAgICAoV2ViQ29y
ZTo6U2NyaXB0Q29udHJvbGxlcjo6ZXZhbHVhdGVJbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6
OlNjcmlwdENvbnRyb2xsZXI6OmNsZWFyV2luZG93U2hlbGwpOgorICAgICAgICAoV2ViQ29yZTo6
U2NyaXB0Q29udHJvbGxlcjo6YXR0YWNoRGVidWdnZXIpOgorICAgICAgICAqIGJpbmRpbmdzL2pz
L1NjcmlwdENvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRGdW5jdGlv
bkNhbGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RnVuY3Rpb25DYWxsOjpjYWxsKToK
KyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENhbGxiYWNrOjpjYWxsKToKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9TY3JpcHRPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0T2JqZWN0
OjpTY3JpcHRPYmplY3QpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdE9iamVjdC5oOgor
ICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdFN0YXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNjcmlwdFN0YXRlUHJvdGVjdGVkUHRyOjpTY3JpcHRTdGF0ZVByb3RlY3RlZFB0cik6CisgICAg
ICAgIChXZWJDb3JlOjpTY3JpcHRTdGF0ZVByb3RlY3RlZFB0cjo6Z2V0KToKKyAgICAgICAgKiBi
aW5kaW5ncy9qcy9TY3JpcHRTdGF0ZS5oOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdFZh
bHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdFZhbHVlOjppc0Z1bmN0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcmlwdFZhbHVlOjpkZXNlcmlhbGl6ZSk6CisgICAgICAgICogYmlu
ZGluZ3MvanMvU2NyaXB0VmFsdWUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdFZhbHVlOjpT
Y3JpcHRWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRWYWx1ZTo6aGFzTm9WYWx1ZSk6
CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0V3JhcHBhYmxlLmg6CisgICAgICAgIChXZWJD
b3JlOjpTY3JpcHRXcmFwcGFibGU6OlNjcmlwdFdyYXBwYWJsZSk6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JpcHRXcmFwcGFibGU6OnNldFdyYXBwZXIpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1dv
cmtlclNjcmlwdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyU2NyaXB0
Q29udHJvbGxlcjo6V29ya2VyU2NyaXB0Q29udHJvbGxlcik6CisgICAgICAgIChXZWJDb3JlOjpX
b3JrZXJTY3JpcHRDb250cm9sbGVyOjp+V29ya2VyU2NyaXB0Q29udHJvbGxlcik6CisgICAgICAg
IChXZWJDb3JlOjpXb3JrZXJTY3JpcHRDb250cm9sbGVyOjppbml0U2NyaXB0KToKKyAgICAgICAg
KFdlYkNvcmU6OldvcmtlclNjcmlwdENvbnRyb2xsZXI6OmV2YWx1YXRlKToKKyAgICAgICAgKiBi
aW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpX
b3JrZXJTY3JpcHRDb250cm9sbGVyOjp3b3JrZXJDb250ZXh0V3JhcHBlcik6CisgICAgICAgICog
YmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG06CisgICAgICAgICogYnJpZGdlL05Q
X2pzb2JqZWN0LmNwcDoKKyAgICAgICAgKF9OUE5fSW52b2tlRGVmYXVsdCk6CisgICAgICAgIChf
TlBOX0ludm9rZSk6CisgICAgICAgIChfTlBOX0V2YWx1YXRlKToKKyAgICAgICAgKF9OUE5fQ29u
c3RydWN0KToKKyAgICAgICAgKiBicmlkZ2UvanNjL0JyaWRnZUpTQy5jcHA6CisgICAgICAgIChK
U0M6OkJpbmRpbmdzOjpJbnN0YW5jZTo6SW5zdGFuY2UpOgorICAgICAgICAoSlNDOjpCaW5kaW5n
czo6SW5zdGFuY2U6On5JbnN0YW5jZSk6CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpJbnN0YW5j
ZTo6d2lsbERlc3Ryb3lSdW50aW1lT2JqZWN0KToKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6Oklu
c3RhbmNlOjp3aWxsSW52YWxpZGF0ZVJ1bnRpbWVPYmplY3QpOgorICAgICAgICAqIGJyaWRnZS9q
c2MvQnJpZGdlSlNDLmg6CisgICAgICAgICogYnJpZGdlL3J1bnRpbWVfb2JqZWN0LmNwcDoKKyAg
ICAgICAgKEpTQzo6QmluZGluZ3M6OlJ1bnRpbWVPYmplY3Q6OmludmFsaWRhdGUpOgorICAgICAg
ICAqIGJyaWRnZS9ydW50aW1lX3Jvb3QuY3BwOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6Um9v
dE9iamVjdDo6Um9vdE9iamVjdCk6CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpSb290T2JqZWN0
OjppbnZhbGlkYXRlKToKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6OlJvb3RPYmplY3Q6Omdsb2Jh
bE9iamVjdCk6CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpSb290T2JqZWN0Ojp1cGRhdGVHbG9i
YWxPYmplY3QpOgorICAgICAgICAqIGJyaWRnZS9ydW50aW1lX3Jvb3QuaDoKKyAgICAgICAgKiBk
b20vRXZlbnRMaXN0ZW5lci5oOgorICAgICAgICAqIGRvbS9FdmVudFRhcmdldC5oOgorICAgICAg
ICAoV2ViQ29yZTo6RXZlbnRUYXJnZXQ6Om1hcmtKU0V2ZW50TGlzdGVuZXJzKToKKyAgICAgICAg
KiB4bWwvWE1MSHR0cFJlcXVlc3QuY3BwOgorICAgICAgICAKKyAgICAgICAgUXQgYmluZGluZ3Mg
Y291cnRlc3kgb2YgQ3NhYmEgT3N6dHJvZ29uw6FjCisgICAgICAgICogYnJpZGdlL3F0L3F0X3J1
bnRpbWUuY3BwOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6UXRSdW50aW1lQ29ubmVjdGlvbk1l
dGhvZDo6Y2FsbCk6CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpRdENvbm5lY3Rpb25PYmplY3Q6
OlF0Q29ubmVjdGlvbk9iamVjdCk6CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpRdENvbm5lY3Rp
b25PYmplY3Q6OmV4ZWN1dGUpOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6UXRDb25uZWN0aW9u
T2JqZWN0OjptYXRjaCk6CisgICAgICAgICogYnJpZGdlL3F0L3F0X3J1bnRpbWUuaDoKKwogMjAx
MS0wMi0xNCAgRW5yaWNhIENhc3VjY2kgIDxlbnJpY2FAYXBwbGUuY29tPgogCiAgICAgICAgIENv
cHkvcGFzdGUgZnJvbSBhIFdlYktpdCB3aW5kb3cgdG8gYSBUZXh0RWRpdCB3aW5kb3cgbG9zZXMg
Zm9udHMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9jb2xs
ZWN0b3IvaGFuZGxlcy9HbG9iYWwuaCBiL1NvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJz
L2NvbGxlY3Rvci9oYW5kbGVzL0dsb2JhbC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBhZDZkNTZlZDM1Njk4ZGE2
MDJhNmRjMzg2NmRlMjMwMDE2MTQzMzYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Gb3J3YXJkaW5nSGVhZGVycy9jb2xsZWN0b3IvaGFuZGxlcy9HbG9iYWwuaApAQCAtMCwwICsx
LDQgQEAKKyNpZm5kZWYgV2ViQ29yZV9GV0RfR2xvYmFsX2gKKyNkZWZpbmUgV2ViQ29yZV9GV0Rf
R2xvYmFsX2gKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9HbG9iYWwuaD4KKyNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2ogYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagppbmRleCAyYThmMzQw
YTY5NDk3MDU3MmZjOWE1NTAwNDhiZjM4M2FmYzllOGI0Li4wNGIzMDU2NGU1N2UxZmJkMzk2YWY0
OTg0NDA3MzUzYzhiMzc4ZGM1IDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZj
cHJvai9XZWJDb3JlLnZjcHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9X
ZWJDb3JlLnZjcHJvagpAQCAtNjQ3ODEsNiArNjQ3ODEsMTggQEAKIAkJCQkJPgogCQkJCTwvRmls
ZT4KIAkJCTwvRmlsdGVyPgorCQkJPEZpbHRlcgorCQkJCU5hbWU9ImNvbGxlY3RvciIKKwkJCQk+
CisJCQkJPEZpbHRlcgorCQkJCQlOYW1lPSJoYW5kbGVzIgorCQkJCQk+CisJCQkJCTxGaWxlCisJ
CQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXEZvcndhcmRpbmdIZWFkZXJzXGNvbGxlY3RvclxoYW5kbGVz
XEdsb2JhbC5oIgorCQkJCQkJPgorCQkJCQk8L0ZpbGU+CisJCQkJPC9GaWx0ZXI+CisJCQk8L0Zp
bHRlcj4KIAkJPC9GaWx0ZXI+CiAJCTxGaWx0ZXIKIAkJCU5hbWU9Imhpc3RvcnkiCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9jb3B5Rm9yd2FyZGluZ0hlYWRlcnMu
Y21kIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovY29weUZvcndhcmRpbmdIZWFkZXJz
LmNtZAppbmRleCAzMzUxZTYwMDg4NDM5NzYyOWE5ZDM0YmU5NmNlZGNjNDNiOTEyM2Q5Li5jNmM3
NGRmM2MxNTdhZDk2NjU3ZDcxMTI0MzY0NWJkMjY5MTBhOTZiIDEwMDc1NQotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnZjcHJvai9jb3B5Rm9yd2FyZGluZ0hlYWRlcnMuY21kCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL2NvcHlGb3J3YXJkaW5nSGVhZGVycy5jbWQKQEAg
LTgsNiArOCw4IEBAIG1rZGlyIDI+TlVMICIlQ09ORklHVVJBVElPTkJVSUxERElSJVxpbmNsdWRl
XFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnNccGFyc2VyIgogbWtkaXIgMj5OVUwgIiVDT05GSUdV
UkFUSU9OQlVJTERESVIlXGluY2x1ZGVcV2ViQ29yZVxGb3J3YXJkaW5nSGVhZGVyc1xydW50aW1l
IgogbWtkaXIgMj5OVUwgIiVDT05GSUdVUkFUSU9OQlVJTERESVIlXGluY2x1ZGVcV2ViQ29yZVxG
b3J3YXJkaW5nSGVhZGVyc1xtYXNtIgogbWtkaXIgMj5OVUwgIiVDT05GSUdVUkFUSU9OQlVJTERE
SVIlXGluY2x1ZGVcV2ViQ29yZVxGb3J3YXJkaW5nSGVhZGVyc1xwcm9maWxlciIKK21rZGlyIDI+
TlVMICIlQ09ORklHVVJBVElPTkJVSUxERElSJVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hl
YWRlcnNcY29sbGVjdG9yIgorbWtkaXIgMj5OVUwgIiVDT05GSUdVUkFUSU9OQlVJTERESVIlXGlu
Y2x1ZGVcV2ViQ29yZVxGb3J3YXJkaW5nSGVhZGVyc1xjb2xsZWN0b3JcaGFuZGxlcyIKIG1rZGly
IDI+TlVMICIlQ09ORklHVVJBVElPTkJVSUxERElSJVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGlu
Z0hlYWRlcnNcd3RmIgogbWtkaXIgMj5OVUwgIiVDT05GSUdVUkFUSU9OQlVJTERESVIlXGluY2x1
ZGVcV2ViQ29yZVxGb3J3YXJkaW5nSGVhZGVyc1x3dGZcdGV4dCIKIG1rZGlyIDI+TlVMICIlQ09O
RklHVVJBVElPTkJVSUxERElSJVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnNcd3Rm
XHVuaWNvZGUiCkBAIC03NSw2ICs3Nyw3IEBAIHhjb3B5IC95IC9kICIlUHJvamVjdERpciUuLlxG
b3J3YXJkaW5nSGVhZGVyc1xwYXJzZXJcKi5oIiAiJUNPTkZJR1VSQVRJT05CVUlMRERJCiB4Y29w
eSAveSAvZCAiJVByb2plY3REaXIlLi5cRm9yd2FyZGluZ0hlYWRlcnNccnVudGltZVwqLmgiICIl
Q09ORklHVVJBVElPTkJVSUxERElSJVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnNc
cnVudGltZSIKIHhjb3B5IC95IC9kICIlUHJvamVjdERpciUuLlxGb3J3YXJkaW5nSGVhZGVyc1xt
YXNtXCouaCIgIiVDT05GSUdVUkFUSU9OQlVJTERESVIlXGluY2x1ZGVcV2ViQ29yZVxGb3J3YXJk
aW5nSGVhZGVyc1xtYXNtIgogeGNvcHkgL3kgL2QgIiVQcm9qZWN0RGlyJS4uXEZvcndhcmRpbmdI
ZWFkZXJzXHByb2ZpbGVyXCouaCIgIiVDT05GSUdVUkFUSU9OQlVJTERESVIlXGluY2x1ZGVcV2Vi
Q29yZVxGb3J3YXJkaW5nSGVhZGVyc1xwcm9maWxlciIKK3hjb3B5IC95IC9kICIlUHJvamVjdERp
ciUuLlxGb3J3YXJkaW5nSGVhZGVyc1xjb2xsZWN0b3JcaGFuZGxlc1wqLmgiICIlQ09ORklHVVJB
VElPTkJVSUxERElSJVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnNcY29sbGVjdG9y
XGhhbmRsZXMiCiB4Y29weSAveSAvZCAiJVByb2plY3REaXIlLi5cRm9yd2FyZGluZ0hlYWRlcnNc
d3RmXCouaCIgIiVDT05GSUdVUkFUSU9OQlVJTERESVIlXGluY2x1ZGVcV2ViQ29yZVxGb3J3YXJk
aW5nSGVhZGVyc1x3dGYiCiB4Y29weSAveSAvZCAiJVByb2plY3REaXIlLi5cRm9yd2FyZGluZ0hl
YWRlcnNcd3RmXHRleHRcKi5oIiAiJUNPTkZJR1VSQVRJT05CVUlMRERJUiVcaW5jbHVkZVxXZWJD
b3JlXEZvcndhcmRpbmdIZWFkZXJzXHd0Zlx0ZXh0IgogeGNvcHkgL3kgL2QgIiVQcm9qZWN0RGly
JS4uXEZvcndhcmRpbmdIZWFkZXJzXHd0Zlx1bmljb2RlXCouaCIgIiVDT05GSUdVUkFUSU9OQlVJ
TERESVIlXGluY2x1ZGVcV2ViQ29yZVxGb3J3YXJkaW5nSGVhZGVyc1x3dGZcdW5pY29kZSIKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ2FsbGJhY2tEYXRhLmggYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NhbGxiYWNrRGF0YS5oCmluZGV4IGY3YjhiZmU5
ZTg1YWY4ZmUwYjU4MjNkZDBkMjBmNTY4ZDI1YzVhYzkuLjk0MmNkOWNjYjcwM2FjNDJhMjUwMjVk
YjRjYmVkYTA4NWQyYWU0MmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTQ2FsbGJhY2tEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDYWxs
YmFja0RhdGEuaApAQCAtMzIsOCArMzIsOCBAQAogI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgog
I2luY2x1ZGUgIkpTRE9NR2xvYmFsT2JqZWN0LmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9u
Q29udGV4dC5oIgorI2luY2x1ZGUgPGNvbGxlY3Rvci9oYW5kbGVzL0dsb2JhbC5oPgogI2luY2x1
ZGUgPHJ1bnRpbWUvSlNPYmplY3QuaD4KLSNpbmNsdWRlIDxydW50aW1lL1Byb3RlY3QuaD4KICNp
bmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTQ3LDgg
KzQ3LDggQEAgcHVibGljOgogICAgIHN0YXRpYyB2b2lkIGRlbGV0ZURhdGEodm9pZCopOwogCiAg
ICAgSlNDYWxsYmFja0RhdGEoSlNDOjpKU09iamVjdCogY2FsbGJhY2ssIEpTRE9NR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QpCi0gICAgICAgIDogbV9jYWxsYmFjayhjYWxsYmFjaykKLSAgICAg
ICAgLCBtX2dsb2JhbE9iamVjdChnbG9iYWxPYmplY3QpCisgICAgICAgIDogbV9jYWxsYmFjayhn
bG9iYWxPYmplY3QtPmdsb2JhbERhdGEoKSwgY2FsbGJhY2spCisgICAgICAgICwgbV9nbG9iYWxP
YmplY3QoZ2xvYmFsT2JqZWN0LT5nbG9iYWxEYXRhKCksIGdsb2JhbE9iamVjdCkKICNpZm5kZWYg
TkRFQlVHCiAgICAgICAgICwgbV90aHJlYWQoY3VycmVudFRocmVhZCgpKQogI2VuZGlmCkBAIC02
Niw4ICs2Niw4IEBAIHB1YmxpYzoKICAgICBKU0M6OkpTVmFsdWUgaW52b2tlQ2FsbGJhY2soSlND
OjpNYXJrZWRBcmd1bWVudEJ1ZmZlciYsIGJvb2wqIHJhaXNlZEV4Y2VwdGlvbiA9IDApOwogCiBw
cml2YXRlOgotICAgIEpTQzo6UHJvdGVjdGVkUHRyPEpTQzo6SlNPYmplY3Q+IG1fY2FsbGJhY2s7
Ci0gICAgSlNDOjpQcm90ZWN0ZWRQdHI8SlNET01HbG9iYWxPYmplY3Q+IG1fZ2xvYmFsT2JqZWN0
OworICAgIEpTQzo6R2xvYmFsPEpTQzo6SlNPYmplY3Q+IG1fY2FsbGJhY2s7CisgICAgSlNDOjpH
bG9iYWw8SlNET01HbG9iYWxPYmplY3Q+IG1fZ2xvYmFsT2JqZWN0OwogI2lmbmRlZiBOREVCVUcK
ICAgICBUaHJlYWRJZGVudGlmaWVyIG1fdGhyZWFkOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbVZvaWRDYWxsYmFjay5oIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21Wb2lkQ2FsbGJhY2suaAppbmRleCA4ZmZlZTQ4YzNl
NzU3YjJmNmZkMjUxNGQ4M2QyZTk5ZjIxZDJlZTMzLi45MjJlMzgwOGY3NmM1OWY0ZDNjODE2OWNi
MDM2MWE5N2M4MmI3ZjgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0N1c3RvbVZvaWRDYWxsYmFjay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
Q3VzdG9tVm9pZENhbGxiYWNrLmgKQEAgLTMxLDcgKzMxLDcgQEAKIAogI2luY2x1ZGUgIkpTRE9N
R2xvYmFsT2JqZWN0LmgiCiAjaW5jbHVkZSAiVm9pZENhbGxiYWNrLmgiCi0jaW5jbHVkZSA8cnVu
dGltZS9Qcm90ZWN0Lmg+CisjaW5jbHVkZSA8Y29sbGVjdG9yL2hhbmRsZXMvR2xvYmFsLmg+CiAj
aW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5jcHAKaW5kZXggN2RlMjcxOWU3NzFmMDQy
MWQxOTlmZGJjNzIxNzQyNGFkYzg4MjJhZS4uNmM0MjBiYWE5MTBjZmNiZTIzYTE0Y2JhNzEyODE4
Y2ZkOWU3YTA2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01C
aW5kaW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcu
Y3BwCkBAIC0yMDYsOCArMjA2LDYgQEAgdm9pZCBmb3JnZXRET01PYmplY3QoRE9NT2JqZWN0KiB3
cmFwcGVyLCB2b2lkKiBvYmplY3RIYW5kbGUpCiAKIHZvaWQgZm9yZ2V0RE9NTm9kZShKU05vZGUq
IHdyYXBwZXIsIE5vZGUqIG5vZGUsIERvY3VtZW50KiBkb2N1bWVudCkKIHsKLSAgICBub2RlLT5j
bGVhcldyYXBwZXIod3JhcHBlcik7Ci0KICAgICBpZiAoIWRvY3VtZW50KSB7CiAgICAgICAgIGZv
cmdldERPTU9iamVjdCh3cmFwcGVyLCBub2RlKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMjMzLDcg
KzIzMSw3IEBAIHZvaWQgY2FjaGVET01Ob2RlV3JhcHBlcihKU0M6OkV4ZWNTdGF0ZSogZXhlYywg
RG9jdW1lbnQqIGRvY3VtZW50LCBOb2RlKiBub2RlLCBKCiAgICAgICAgIGRvY3VtZW50LT5nZXRX
cmFwcGVyQ2FjaGUoY3VycmVudFdvcmxkKGV4ZWMpKS0+c2V0KG5vZGUsIHdyYXBwZXIpOwogCiAg
ICAgaWYgKGN1cnJlbnRXb3JsZChleGVjKS0+aXNOb3JtYWwoKSkKLSAgICAgICAgbm9kZS0+c2V0
V3JhcHBlcih3cmFwcGVyKTsKKyAgICAgICAgbm9kZS0+c2V0V3JhcHBlcihleGVjLT5nbG9iYWxE
YXRhKCksIHdyYXBwZXIpOwogfQogCiBzdGF0aWMgaW5saW5lIGJvb2wgaXNPYnNlcnZhYmxlVGhy
b3VnaERPTShKU05vZGUqIGpzTm9kZSwgRE9NV3JhcHBlcldvcmxkKiB3b3JsZCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5oIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmgKaW5kZXggZmJlZjgwODc1Yjdi
MzkzM2FiYzgyNjI5YWFkNWYyODczMWJmZmE3MS4uMWQ4MzdjOTY3ZDE0YWE1NjRmOGY2OWU4NDQ3
N2JjZjBlNmViYzNkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
T01XaW5kb3dCYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5k
b3dCYXNlLmgKQEAgLTIyLDcgKzIyLDcgQEAKIAogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgi
CiAjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCi0jaW5jbHVkZSA8cnVudGltZS9Qcm90ZWN0Lmg+
CisjaW5jbHVkZSA8Y29sbGVjdG9yL2hhbmRsZXMvR2xvYmFsLmg+CiAjaW5jbHVkZSA8d3RmL0Zv
cndhcmQuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIu
aD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93U2hl
bGwuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dTaGVsbC5jcHAK
aW5kZXggNDBmOTkxMGNhMzRkZTU4YzU3NGViZmZmNWI0NzA3NDBlNTUzNjUyNC4uMTAzM2Y0MmY0
OGFhMzgzZjllYjcwZGU3OTRjNDQxODFlYzM2MDI2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dTaGVsbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNET01XaW5kb3dTaGVsbC5jcHAKQEAgLTYwLDkgKzYwLDkgQEAgdm9pZCBK
U0RPTVdpbmRvd1NoZWxsOjpzZXRXaW5kb3coUGFzc1JlZlB0cjxET01XaW5kb3c+IGRvbVdpbmRv
dykKICAgICAvLyB3aGVuIHdlIGFsbG9jYXRlIHRoZSBnbG9iYWwgb2JqZWN0LiAoT25jZSB0aGUg
Z2xvYmFsIG9iamVjdCBpcyBmdWxseQogICAgIC8vIGNvbnN0cnVjdGVkLCBpdCBjYW4gbWFyayBp
dHMgb3duIHByb3RvdHlwZS4pCiAgICAgUmVmUHRyPFN0cnVjdHVyZT4gcHJvdG90eXBlU3RydWN0
dXJlID0gSlNET01XaW5kb3dQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZShqc051bGwoKSk7Ci0g
ICAgUHJvdGVjdGVkUHRyPEpTRE9NV2luZG93UHJvdG90eXBlPiBwcm90b3R5cGUgPSBuZXcgSlNE
T01XaW5kb3dQcm90b3R5cGUoMCwgcHJvdG90eXBlU3RydWN0dXJlLnJlbGVhc2UoKSk7CisgICAg
R2xvYmFsPEpTRE9NV2luZG93UHJvdG90eXBlPiBwcm90b3R5cGUoKkpTRE9NV2luZG93Ojpjb21t
b25KU0dsb2JhbERhdGEoKSwgbmV3IEpTRE9NV2luZG93UHJvdG90eXBlKDAsIHByb3RvdHlwZVN0
cnVjdHVyZS5yZWxlYXNlKCkpKTsKIAotICAgIFJlZlB0cjxTdHJ1Y3R1cmU+IHN0cnVjdHVyZSA9
IEpTRE9NV2luZG93OjpjcmVhdGVTdHJ1Y3R1cmUocHJvdG90eXBlKTsKKyAgICBSZWZQdHI8U3Ry
dWN0dXJlPiBzdHJ1Y3R1cmUgPSBKU0RPTVdpbmRvdzo6Y3JlYXRlU3RydWN0dXJlKHByb3RvdHlw
ZS5nZXQoKSk7CiAgICAgSlNET01XaW5kb3cqIGpzRE9NV2luZG93ID0gbmV3IChKU0RPTVdpbmRv
dzo6Y29tbW9uSlNHbG9iYWxEYXRhKCkpIEpTRE9NV2luZG93KHN0cnVjdHVyZS5yZWxlYXNlKCks
IGRvbVdpbmRvdywgdGhpcyk7CiAgICAgcHJvdG90eXBlLT5wdXRBbm9ueW1vdXNWYWx1ZSgqSlNE
T01XaW5kb3c6OmNvbW1vbkpTR2xvYmFsRGF0YSgpLCAwLCBqc0RPTVdpbmRvdyk7CiAgICAgc2V0
V2luZG93KCpKU0RPTVdpbmRvdzo6Y29tbW9uSlNHbG9iYWxEYXRhKCksIGpzRE9NV2luZG93KTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGF0YUdyaWREYXRhU291
cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RhdGFHcmlkRGF0YVNvdXJjZS5o
CmluZGV4IDA3N2VmOGY4MGNlZDVlOTFjNWU4YjJiMzgxYWRlMDdjMGY4YmJlOWEuLjY4NGE2NjNj
NTNmZjA3ZmQ2YmIzYTZlY2IzYzRhZTI5OTMyYWNmMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRGF0YUdyaWREYXRhU291cmNlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNEYXRhR3JpZERhdGFTb3VyY2UuaApAQCAtMjksOCArMjksOCBAQAog
I2lmIEVOQUJMRShEQVRBR1JJRCkKIAogI2luY2x1ZGUgIkRhdGFHcmlkRGF0YVNvdXJjZS5oIgor
I2luY2x1ZGUgPGNvbGxlY3Rvci9oYW5kbGVzL0dsb2JhbC5oPgogI2luY2x1ZGUgPHJ1bnRpbWUv
SlNWYWx1ZS5oPgotI2luY2x1ZGUgPHJ1bnRpbWUvUHJvdGVjdC5oPgogI2luY2x1ZGUgPHd0Zi9Q
YXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50TGlzdGVuZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNFdmVudExpc3RlbmVyLmNwcAppbmRleCA2NDI3NjgzZjQyZTYzNDhi
NmIzZmJiN2UzMTBjODBmYmE2ZGFkZDk4Li44MjVhNGFkM2FjNDgwNjU3NmUwOTRjZDRhOGMwN2Ji
NGEzNzE5ODI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50
TGlzdGVuZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRMaXN0
ZW5lci5jcHAKQEAgLTM0LDExICszNCwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIEpTRXZl
bnRMaXN0ZW5lcjo6SlNFdmVudExpc3RlbmVyKEpTT2JqZWN0KiBmdW5jdGlvbiwgSlNPYmplY3Qq
IHdyYXBwZXIsIGJvb2wgaXNBdHRyaWJ1dGUsIERPTVdyYXBwZXJXb3JsZCogaXNvbGF0ZWRXb3Js
ZCkKICAgICA6IEV2ZW50TGlzdGVuZXIoSlNFdmVudExpc3RlbmVyVHlwZSkKKyAgICAsIG1fd3Jh
cHBlcigqaXNvbGF0ZWRXb3JsZC0+Z2xvYmFsRGF0YSgpLCB3cmFwcGVyKQogICAgICwgbV9pc0F0
dHJpYnV0ZShpc0F0dHJpYnV0ZSkKICAgICAsIG1faXNvbGF0ZWRXb3JsZChpc29sYXRlZFdvcmxk
KQogewotICAgIGlmICh3cmFwcGVyKQotICAgICAgICBtX3dyYXBwZXIgPSB3cmFwcGVyOwogICAg
IG1fanNGdW5jdGlvbi5zZXQoKm1faXNvbGF0ZWRXb3JsZC0+Z2xvYmFsRGF0YSgpLCB3cmFwcGVy
LCBmdW5jdGlvbik7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRXZlbnRMaXN0ZW5lci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudExp
c3RlbmVyLmgKaW5kZXggNDdmZjQ0ZWM3NmUyMzgxMjNkZTJiYTM3NWY2NTAxMzMxYTA3YTYwYi4u
MGFmMGY4NjU1NDc2YmVhMGMyY2FlYTY5YmQwZTk2MjY3NmMwYjgzYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudExpc3RlbmVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNFdmVudExpc3RlbmVyLmgKQEAgLTUzLDEyICs1MywxMSBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIERPTVdyYXBwZXJXb3JsZCogaXNvbGF0ZWRXb3Js
ZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNvbGF0ZWRXb3JsZC5nZXQoKTsgfQogCiAgICAgICAgIEpT
Qzo6SlNPYmplY3QqIHdyYXBwZXIoKSBjb25zdCB7IHJldHVybiBtX3dyYXBwZXIuZ2V0KCk7IH0K
LSAgICAgICAgdm9pZCBzZXRXcmFwcGVyKEpTQzo6SlNPYmplY3QqIHdyYXBwZXIpIGNvbnN0IHsg
bV93cmFwcGVyID0gd3JhcHBlcjsgfQorICAgICAgICB2b2lkIHNldFdyYXBwZXIoSlNDOjpKU0ds
b2JhbERhdGEmIGdsb2JhbERhdGEsIEpTQzo6SlNPYmplY3QqIHdyYXBwZXIpIGNvbnN0IHsgbV93
cmFwcGVyLnNldChnbG9iYWxEYXRhLCB3cmFwcGVyLCAwKTsgfQogCiAgICAgcHJpdmF0ZToKICAg
ICAgICAgdmlydHVhbCBKU0M6OkpTT2JqZWN0KiBpbml0aWFsaXplSlNGdW5jdGlvbihTY3JpcHRF
eGVjdXRpb25Db250ZXh0KikgY29uc3Q7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBtYXJrSlNGdW5j
dGlvbihKU0M6Ok1hcmtTdGFjayYpOwotICAgICAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZUpT
RnVuY3Rpb24oSlNDOjpKU09iamVjdCopOwogICAgICAgICB2aXJ0dWFsIGJvb2wgdmlydHVhbGlz
QXR0cmlidXRlKCkgY29uc3Q7CiAKICAgICBwcm90ZWN0ZWQ6CkBAIC05MSwxMSArOTAsNiBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHJldHVybiBtX2pzRnVuY3Rpb24uZ2V0KCk7CiAg
ICAgfQogCi0gICAgaW5saW5lIHZvaWQgSlNFdmVudExpc3RlbmVyOjppbnZhbGlkYXRlSlNGdW5j
dGlvbihKU0M6OkpTT2JqZWN0KiB3cmFwcGVyKQotICAgIHsKLSAgICAgICAgbV93cmFwcGVyLmNs
ZWFyKHdyYXBwZXIpOwotICAgIH0KLQogICAgIC8vIENyZWF0ZXMgYSBKUyBFdmVudExpc3RlbmVy
IGZvciBhbiAib25YWFgiIGV2ZW50IGF0dHJpYnV0ZS4KICAgICBpbmxpbmUgUGFzc1JlZlB0cjxK
U0V2ZW50TGlzdGVuZXI+IGNyZWF0ZUpTQXR0cmlidXRlRXZlbnRMaXN0ZW5lcihKU0M6OkV4ZWNT
dGF0ZSogZXhlYywgSlNDOjpKU1ZhbHVlIGxpc3RlbmVyLCBKU0M6OkpTT2JqZWN0KiB3cmFwcGVy
KQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTGF6eUV2
ZW50TGlzdGVuZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNMYXp5RXZlbnRM
aXN0ZW5lci5jcHAKaW5kZXggMWFhZDdkZmQwNjQ0NmVlNDRlMTg4Nzg2ZDI5ZDUyZTI4YWRkNzA3
YS4uZTE3YTNkNGNiYmVjMTM5ZTJiMjNiNjkzODYxNzUwYjg2ZDZjOTU1ZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNMYXp5RXZlbnRMaXN0ZW5lci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNMYXp5RXZlbnRMaXN0ZW5lci5jcHAKQEAgLTEx
NSw3ICsxMTUsNyBAQCBKU09iamVjdCogSlNMYXp5RXZlbnRMaXN0ZW5lcjo6aW5pdGlhbGl6ZUpT
RnVuY3Rpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogZXhlYwogICAgICAgICAgICAgLy8gRW5z
dXJlIHRoYXQgJ25vZGUnIGhhcyBhIEphdmFTY3JpcHQgd3JhcHBlciB0byBtYXJrIHRoZSBldmVu
dCBsaXN0ZW5lciB3ZSdyZSBjcmVhdGluZy4KICAgICAgICAgICAgIEpTTG9jayBsb2NrKFNpbGVu
Y2VBc3NlcnRpb25zT25seSk7CiAgICAgICAgICAgICAvLyBGSVhNRTogU2hvdWxkIHBhc3MgdGhl
IGdsb2JhbCBvYmplY3QgYXNzb2NpYXRlZCB3aXRoIHRoZSBub2RlCi0gICAgICAgICAgICBzZXRX
cmFwcGVyKGFzT2JqZWN0KHRvSlMoZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCksIGdsb2JhbE9i
amVjdCwgbV9vcmlnaW5hbE5vZGUpKSk7CisgICAgICAgICAgICBzZXRXcmFwcGVyKGV4ZWMtPmds
b2JhbERhdGEoKSwgYXNPYmplY3QodG9KUyhleGVjLCBnbG9iYWxPYmplY3QsIG1fb3JpZ2luYWxO
b2RlKSkpOwogICAgICAgICB9CiAKICAgICAgICAgLy8gQWRkIHRoZSBldmVudCdzIGhvbWUgZWxl
bWVudCB0byB0aGUgc2NvcGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L1NjaGVkdWxlZEFjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY2hlZHVs
ZWRBY3Rpb24uY3BwCmluZGV4IGQ2ZjhhMzhjYzM0MzNmNmUzNzc5MmRkY2EzZWMzODY5NDM1MzBk
ZmUuLmY2MjMwMTcyMmE4ZTRlYmFhOTM5MmU5Nzc3NWY1N2ZlY2FmNDRkYjcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjaGVkdWxlZEFjdGlvbi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NoZWR1bGVkQWN0aW9uLmNwcApAQCAtNjEsMTMgKzYx
LDEzIEBAIFBhc3NPd25QdHI8U2NoZWR1bGVkQWN0aW9uPiBTY2hlZHVsZWRBY3Rpb246OmNyZWF0
ZShFeGVjU3RhdGUqIGV4ZWMsIERPTVdyYXBwZXJXCiB9CiAKIFNjaGVkdWxlZEFjdGlvbjo6U2No
ZWR1bGVkQWN0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBmdW5jdGlvbiwgRE9NV3JhcHBl
cldvcmxkKiBpc29sYXRlZFdvcmxkKQotICAgIDogbV9mdW5jdGlvbihmdW5jdGlvbikKKyAgICA6
IG1fZnVuY3Rpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBmdW5jdGlvbikKICAgICAsIG1faXNvbGF0
ZWRXb3JsZChpc29sYXRlZFdvcmxkKQogewogICAgIC8vIHNldFRpbWVvdXQoZnVuY3Rpb24sIGlu
dGVydmFsLCBhcmcwLCBhcmcxLi4uKS4KICAgICAvLyBTdGFydCBhdCAyIHRvIHNraXAgZnVuY3Rp
b24gYW5kIGludGVydmFsLgogICAgIGZvciAoc2l6ZV90IGkgPSAyOyBpIDwgZXhlYy0+YXJndW1l
bnRDb3VudCgpOyArK2kpCi0gICAgICAgIG1fYXJncy5hcHBlbmQoZXhlYy0+YXJndW1lbnQoaSkp
OworICAgICAgICBtX2FyZ3MuYXBwZW5kKEdsb2JhbDxKU0M6OlVua25vd24+KGV4ZWMtPmdsb2Jh
bERhdGEoKSwgZXhlYy0+YXJndW1lbnQoaSkpKTsKIH0KIAogdm9pZCBTY2hlZHVsZWRBY3Rpb246
OmV4ZWN1dGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKQEAgLTk5LDEzICs5OSwx
MyBAQCB2b2lkIFNjaGVkdWxlZEFjdGlvbjo6ZXhlY3V0ZUZ1bmN0aW9uSW5Db250ZXh0KEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVgogICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFy
Z3M7CiAgICAgc2l6ZV90IHNpemUgPSBtX2FyZ3Muc2l6ZSgpOwogICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgc2l6ZTsgKytpKQotICAgICAgICBhcmdzLmFwcGVuZChtX2FyZ3NbaV0pOworICAg
ICAgICBhcmdzLmFwcGVuZChtX2FyZ3NbaV0uZ2V0KCkpOwogCiAgICAgZ2xvYmFsT2JqZWN0LT5n
bG9iYWxEYXRhKCkudGltZW91dENoZWNrZXIuc3RhcnQoKTsKICAgICBpZiAoY29udGV4dC0+aXNE
b2N1bWVudCgpKQotICAgICAgICBKU01haW5UaHJlYWRFeGVjU3RhdGU6OmNhbGwoZXhlYywgbV9m
dW5jdGlvbiwgY2FsbFR5cGUsIGNhbGxEYXRhLCB0aGlzVmFsdWUsIGFyZ3MpOworICAgICAgICBK
U01haW5UaHJlYWRFeGVjU3RhdGU6OmNhbGwoZXhlYywgbV9mdW5jdGlvbi5nZXQoKSwgY2FsbFR5
cGUsIGNhbGxEYXRhLCB0aGlzVmFsdWUsIGFyZ3MpOwogICAgIGVsc2UKLSAgICAgICAgSlNDOjpj
YWxsKGV4ZWMsIG1fZnVuY3Rpb24sIGNhbGxUeXBlLCBjYWxsRGF0YSwgdGhpc1ZhbHVlLCBhcmdz
KTsKKyAgICAgICAgSlNDOjpjYWxsKGV4ZWMsIG1fZnVuY3Rpb24uZ2V0KCksIGNhbGxUeXBlLCBj
YWxsRGF0YSwgdGhpc1ZhbHVlLCBhcmdzKTsKICAgICBnbG9iYWxPYmplY3QtPmdsb2JhbERhdGEo
KS50aW1lb3V0Q2hlY2tlci5zdG9wKCk7CiAKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY2hlZHVsZWRBY3Rpb24u
aCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjaGVkdWxlZEFjdGlvbi5oCmluZGV4IDU5
YWQ2ZmMyNWIyMzU0N2NhMWYwM2VhODIxYmY3MjNiMzQ5MjUyMDEuLmM0YjNlZGYwNWMzM2U2MTFk
NTc5ZWExYjg0YzJiNTBjM2ZmODFiMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1NjaGVkdWxlZEFjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L1NjaGVkdWxlZEFjdGlvbi5oCkBAIC0yMiw4ICsyMiw4IEBACiAKICNpbmNsdWRlICJQbGF0Zm9y
bVN0cmluZy5oIgogI2luY2x1ZGUgPEpTRE9NQmluZGluZy5oPgorI2luY2x1ZGUgPGNvbGxlY3Rv
ci9oYW5kbGVzL0dsb2JhbC5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvSlNDZWxsLmg+Ci0jaW5jbHVk
ZSA8cnVudGltZS9Qcm90ZWN0Lmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KICNpbmNs
dWRlIDx3dGYvVmVjdG9yLmg+CiAKQEAgLTUxLDcgKzUxLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgIHByaXZhdGU6CiAgICAgICAgIFNjaGVkdWxlZEFjdGlvbihKU0M6OkV4ZWNTdGF0ZSos
IEpTQzo6SlNWYWx1ZSBmdW5jdGlvbiwgRE9NV3JhcHBlcldvcmxkKiBpc29sYXRlZFdvcmxkKTsK
ICAgICAgICAgU2NoZWR1bGVkQWN0aW9uKGNvbnN0IFN0cmluZyYgY29kZSwgRE9NV3JhcHBlcldv
cmxkKiBpc29sYXRlZFdvcmxkKQotICAgICAgICAgICAgOiBtX2NvZGUoY29kZSkKKyAgICAgICAg
ICAgIDogbV9mdW5jdGlvbigqaXNvbGF0ZWRXb3JsZC0+Z2xvYmFsRGF0YSgpKQorICAgICAgICAg
ICAgLCBtX2NvZGUoY29kZSkKICAgICAgICAgICAgICwgbV9pc29sYXRlZFdvcmxkKGlzb2xhdGVk
V29ybGQpCiAgICAgICAgIHsKICAgICAgICAgfQpAQCAtNjIsOCArNjMsOCBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAgICAgICAgIHZvaWQgZXhlY3V0ZShXb3JrZXJDb250ZXh0Kik7CiAjZW5kaWYK
IAotICAgICAgICBKU0M6OlByb3RlY3RlZEpTVmFsdWUgbV9mdW5jdGlvbjsKLSAgICAgICAgVmVj
dG9yPEpTQzo6UHJvdGVjdGVkSlNWYWx1ZT4gbV9hcmdzOworICAgICAgICBKU0M6Okdsb2JhbDxK
U0M6OlVua25vd24+IG1fZnVuY3Rpb247CisgICAgICAgIFZlY3RvcjxKU0M6Okdsb2JhbDxKU0M6
OlVua25vd24+ID4gbV9hcmdzOwogICAgICAgICBTdHJpbmcgbV9jb2RlOwogICAgICAgICBSZWZQ
dHI8RE9NV3JhcHBlcldvcmxkPiBtX2lzb2xhdGVkV29ybGQ7CiAgICAgfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENhY2hlZEZyYW1lRGF0YS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDYWNoZWRGcmFtZURhdGEuY3BwCmluZGV4
IGQ2NWJjZTI2MDEzOGY5MTg2OTBlY2U4NmZkMjRjYmI0ODhlY2MwZGQuLjVhNDY3ZjI5NzNiZTNm
YjNmOWIyZGJiNGNkZDI2MTllYzZiZmFhZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1NjcmlwdENhY2hlZEZyYW1lRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvU2NyaXB0Q2FjaGVkRnJhbWVEYXRhLmNwcApAQCAtNTQsNyArNTQsNyBAQCBT
Y3JpcHRDYWNoZWRGcmFtZURhdGE6OlNjcmlwdENhY2hlZEZyYW1lRGF0YShGcmFtZSogZnJhbWUp
CiAgICAgU2NyaXB0Q29udHJvbGxlcjo6U2hlbGxNYXA6Oml0ZXJhdG9yIHdpbmRvd1NoZWxsc0Vu
ZCA9IHdpbmRvd1NoZWxscy5lbmQoKTsKICAgICBmb3IgKFNjcmlwdENvbnRyb2xsZXI6OlNoZWxs
TWFwOjppdGVyYXRvciBpdGVyID0gd2luZG93U2hlbGxzLmJlZ2luKCk7IGl0ZXIgIT0gd2luZG93
U2hlbGxzRW5kOyArK2l0ZXIpIHsKICAgICAgICAgSlNET01XaW5kb3cqIHdpbmRvdyA9IGl0ZXIt
PnNlY29uZC0+d2luZG93KCk7Ci0gICAgICAgIG1fd2luZG93cy5hZGQoaXRlci0+Zmlyc3QuZ2V0
KCksIHdpbmRvdyk7CisgICAgICAgIG1fd2luZG93cy5hZGQoaXRlci0+Zmlyc3QuZ2V0KCksIEds
b2JhbDxKU0RPTVdpbmRvdz4od2luZG93LT5nbG9iYWxEYXRhKCksIHdpbmRvdykpOwogICAgICAg
ICBtX2RvbVdpbmRvdyA9IHdpbmRvdy0+aW1wbCgpOwogICAgIH0KIApAQCAtODMsNyArODMsNyBA
QCB2b2lkIFNjcmlwdENhY2hlZEZyYW1lRGF0YTo6cmVzdG9yZShGcmFtZSogZnJhbWUpCiAgICAg
ICAgIERPTVdyYXBwZXJXb3JsZCogd29ybGQgPSBpdGVyLT5maXJzdC5nZXQoKTsKICAgICAgICAg
SlNET01XaW5kb3dTaGVsbCogd2luZG93U2hlbGwgPSBpdGVyLT5zZWNvbmQuZ2V0KCk7CiAKLSAg
ICAgICAgaWYgKEpTRE9NV2luZG93KiB3aW5kb3cgPSBtX3dpbmRvd3MuZ2V0KHdvcmxkKSkKKyAg
ICAgICAgaWYgKEpTRE9NV2luZG93KiB3aW5kb3cgPSBtX3dpbmRvd3MuZ2V0KHdvcmxkKS5nZXQo
KSkKICAgICAgICAgICAgIHdpbmRvd1NoZWxsLT5zZXRXaW5kb3cod2luZG93LT5nbG9iYWxEYXRh
KCksIHdpbmRvdyk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgd2luZG93U2hlbGwtPnNl
dFdpbmRvdyhmcmFtZS0+ZG9tV2luZG93KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvU2NyaXB0Q2FjaGVkRnJhbWVEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9TY3JpcHRDYWNoZWRGcmFtZURhdGEuaAppbmRleCA1ZjY5MWQ5MWZmYzY0Y2Q5NWI4
MjY3NWIzMjg4NDAyMDgwN2U4YWNmLi4wODg3NGQ1NTRkYmM5MjY1NmU2MDAwMWNmMDVhN2NmYzll
MDIyNWE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDYWNo
ZWRGcmFtZURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDYWNo
ZWRGcmFtZURhdGEuaApAQCAtMzIsNyArMzIsNyBAQAogI2lmbmRlZiBTY3JpcHRDYWNoZWRGcmFt
ZURhdGFfaAogI2RlZmluZSBTY3JpcHRDYWNoZWRGcmFtZURhdGFfaAogCi0jaW5jbHVkZSA8cnVu
dGltZS9Qcm90ZWN0Lmg+CisjaW5jbHVkZSA8Y29sbGVjdG9yL2hhbmRsZXMvR2xvYmFsLmg+CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBGcmFtZTsKQEAgLTQyLDcgKzQyLDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgY2xhc3MgU2NyaXB0Q2FjaGVkRnJhbWVEYXRhIHsK
ICAgICAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoU2NyaXB0Q2FjaGVkRnJhbWVEYXRhKTsgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7Ci0gICAgICAgIHR5cGVkZWYgSGFzaE1hcDwgUmVmUHRyPERP
TVdyYXBwZXJXb3JsZD4sIEpTQzo6UHJvdGVjdGVkUHRyPEpTRE9NV2luZG93PiA+IEpTRE9NV2lu
ZG93U2V0OworICAgICAgICB0eXBlZGVmIEhhc2hNYXA8IFJlZlB0cjxET01XcmFwcGVyV29ybGQ+
LCBKU0M6Okdsb2JhbDxKU0RPTVdpbmRvdz4gPiBKU0RPTVdpbmRvd1NldDsKIAogICAgIHB1Ymxp
YzoKICAgICAgICAgU2NyaXB0Q2FjaGVkRnJhbWVEYXRhKEZyYW1lKik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDYWxsU3RhY2tGYWN0b3J5LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENhbGxTdGFja0ZhY3RvcnkuY3BwCmluZGV4
IDk0Y2QxMjdkMDIwMDQzMzNmZGQ3YjlmNjlhZTUyZWU2MDczZmY0YzcuLmEyNjY0NDkyMTBkODc0
ZGNjODVmNGM2Y2EyNjRiNDRlODA3YTQ0Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1NjcmlwdENhbGxTdGFja0ZhY3RvcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1NjcmlwdENhbGxTdGFja0ZhY3RvcnkuY3BwCkBAIC04OCw3ICs4OCw3IEBA
IFBhc3NSZWZQdHI8U2NyaXB0QXJndW1lbnRzPiBjcmVhdGVTY3JpcHRBcmd1bWVudHMoSlNDOjpF
eGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkCiAgICAgVmVjdG9yPFNjcmlwdFZhbHVlPiBhcmd1bWVu
dHM7CiAgICAgc2l6ZV90IGFyZ3VtZW50Q291bnQgPSBleGVjLT5hcmd1bWVudENvdW50KCk7CiAg
ICAgZm9yIChzaXplX3QgaSA9IHNraXBBcmd1bWVudENvdW50OyBpIDwgYXJndW1lbnRDb3VudDsg
KytpKQotICAgICAgICBhcmd1bWVudHMuYXBwZW5kKFNjcmlwdFZhbHVlKGV4ZWMtPmFyZ3VtZW50
KGkpKSk7CisgICAgICAgIGFyZ3VtZW50cy5hcHBlbmQoU2NyaXB0VmFsdWUoZXhlYy0+Z2xvYmFs
RGF0YSgpLCBleGVjLT5hcmd1bWVudChpKSkpOwogICAgIHJldHVybiBTY3JpcHRBcmd1bWVudHM6
OmNyZWF0ZShleGVjLCBhcmd1bWVudHMpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwCmluZGV4IGU3ZWFmZDBlMzJmZTYwYjkxYjA5YWYx
MDljNDYzZjRlODlmZjRlMTguLjRiMGY0NGZhNjg3YWZmMGU1MTRmODRjZjczOTkyZDAzZWM5OWVi
OTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xs
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIu
Y3BwCkBAIC0xMDgsMTAgKzEwOCwxMSBAQCB2b2lkIFNjcmlwdENvbnRyb2xsZXI6OmRlc3Ryb3lX
aW5kb3dTaGVsbChET01XcmFwcGVyV29ybGQqIHdvcmxkKQogSlNET01XaW5kb3dTaGVsbCogU2Ny
aXB0Q29udHJvbGxlcjo6Y3JlYXRlV2luZG93U2hlbGwoRE9NV3JhcHBlcldvcmxkKiB3b3JsZCkK
IHsKICAgICBBU1NFUlQoIW1fd2luZG93U2hlbGxzLmNvbnRhaW5zKHdvcmxkKSk7Ci0gICAgSlNE
T01XaW5kb3dTaGVsbCogd2luZG93U2hlbGwgPSBuZXcgSlNET01XaW5kb3dTaGVsbChtX2ZyYW1l
LT5kb21XaW5kb3coKSwgd29ybGQpOworICAgIEdsb2JhbDxKU0RPTVdpbmRvd1NoZWxsPiB3aW5k
b3dTaGVsbCgqd29ybGQtPmdsb2JhbERhdGEoKSwgbmV3IEpTRE9NV2luZG93U2hlbGwobV9mcmFt
ZS0+ZG9tV2luZG93KCksIHdvcmxkKSk7CisgICAgR2xvYmFsPEpTRE9NV2luZG93U2hlbGw+IHdp
bmRvd1NoZWxsMih3aW5kb3dTaGVsbCk7CiAgICAgbV93aW5kb3dTaGVsbHMuYWRkKHdvcmxkLCB3
aW5kb3dTaGVsbCk7CiAgICAgd29ybGQtPmRpZENyZWF0ZVdpbmRvd1NoZWxsKHRoaXMpOwotICAg
IHJldHVybiB3aW5kb3dTaGVsbDsKKyAgICByZXR1cm4gd2luZG93U2hlbGwuZ2V0KCk7CiB9CiAK
IFNjcmlwdFZhbHVlIFNjcmlwdENvbnRyb2xsZXI6OmV2YWx1YXRlSW5Xb3JsZChjb25zdCBTY3Jp
cHRTb3VyY2VDb2RlJiBzb3VyY2VDb2RlLCBET01XcmFwcGVyV29ybGQqIHdvcmxkKQpAQCAtMTQ5
LDE0ICsxNTAsMTQgQEAgU2NyaXB0VmFsdWUgU2NyaXB0Q29udHJvbGxlcjo6ZXZhbHVhdGVJbldv
cmxkKGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUKIAogICAgIGlmIChjb21wLmNv
bXBsVHlwZSgpID09IE5vcm1hbCB8fCBjb21wLmNvbXBsVHlwZSgpID09IFJldHVyblZhbHVlKSB7
CiAgICAgICAgIG1fc291cmNlVVJMID0gc2F2ZWRTb3VyY2VVUkw7Ci0gICAgICAgIHJldHVybiBj
b21wLnZhbHVlKCk7CisgICAgICAgIHJldHVybiBTY3JpcHRWYWx1ZShleGVjLT5nbG9iYWxEYXRh
KCksIGNvbXAudmFsdWUoKSk7CiAgICAgfQogCiAgICAgaWYgKGNvbXAuY29tcGxUeXBlKCkgPT0g
VGhyb3cgfHwgY29tcC5jb21wbFR5cGUoKSA9PSBJbnRlcnJ1cHRlZCkKICAgICAgICAgcmVwb3J0
RXhjZXB0aW9uKGV4ZWMsIGNvbXAudmFsdWUoKSk7CiAKICAgICBtX3NvdXJjZVVSTCA9IHNhdmVk
U291cmNlVVJMOwotICAgIHJldHVybiBKU1ZhbHVlKCk7CisgICAgcmV0dXJuIFNjcmlwdFZhbHVl
KCk7CiB9CiAKIFNjcmlwdFZhbHVlIFNjcmlwdENvbnRyb2xsZXI6OmV2YWx1YXRlKGNvbnN0IFNj
cmlwdFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUpIApAQCAtMTgyLDcgKzE4Myw3IEBAIHZvaWQgU2Ny
aXB0Q29udHJvbGxlcjo6Y2xlYXJXaW5kb3dTaGVsbChib29sIGdvaW5nSW50b1BhZ2VDYWNoZSkK
ICAgICBKU0xvY2sgbG9jayhTaWxlbmNlQXNzZXJ0aW9uc09ubHkpOwogCiAgICAgZm9yIChTaGVs
bE1hcDo6aXRlcmF0b3IgaXRlciA9IG1fd2luZG93U2hlbGxzLmJlZ2luKCk7IGl0ZXIgIT0gbV93
aW5kb3dTaGVsbHMuZW5kKCk7ICsraXRlcikgewotICAgICAgICBKU0RPTVdpbmRvd1NoZWxsKiB3
aW5kb3dTaGVsbCA9IGl0ZXItPnNlY29uZDsKKyAgICAgICAgSlNET01XaW5kb3dTaGVsbCogd2lu
ZG93U2hlbGwgPSBpdGVyLT5zZWNvbmQuZ2V0KCk7CiAKICAgICAgICAgLy8gQ2xlYXIgdGhlIGRl
YnVnZ2VyIGZyb20gdGhlIGN1cnJlbnQgd2luZG93IGJlZm9yZSBzZXR0aW5nIHRoZSBuZXcgd2lu
ZG93LgogICAgICAgICBhdHRhY2hEZWJ1Z2dlcih3aW5kb3dTaGVsbCwgMCk7CkBAIC0zMTcsNyAr
MzE4LDcgQEAgYm9vbCBTY3JpcHRDb250cm9sbGVyOjpjYW5BY2Nlc3NGcm9tQ3VycmVudE9yaWdp
bihGcmFtZSAqZnJhbWUpCiB2b2lkIFNjcmlwdENvbnRyb2xsZXI6OmF0dGFjaERlYnVnZ2VyKEpT
Qzo6RGVidWdnZXIqIGRlYnVnZ2VyKQogewogICAgIGZvciAoU2hlbGxNYXA6Oml0ZXJhdG9yIGl0
ZXIgPSBtX3dpbmRvd1NoZWxscy5iZWdpbigpOyBpdGVyICE9IG1fd2luZG93U2hlbGxzLmVuZCgp
OyArK2l0ZXIpCi0gICAgICAgIGF0dGFjaERlYnVnZ2VyKGl0ZXItPnNlY29uZCwgZGVidWdnZXIp
OworICAgICAgICBhdHRhY2hEZWJ1Z2dlcihpdGVyLT5zZWNvbmQuZ2V0KCksIGRlYnVnZ2VyKTsK
IH0KIAogdm9pZCBTY3JpcHRDb250cm9sbGVyOjphdHRhY2hEZWJ1Z2dlcihKU0RPTVdpbmRvd1No
ZWxsKiBzaGVsbCwgSlNDOjpEZWJ1Z2dlciogZGVidWdnZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmgKaW5kZXggMTk1NDJhZjEwZjk3NWQyNmZhZDIy
OTcxNmExN2MxOWM0ODcxZjQ0MC4uMmVjMzg3MmI3NTFhZWJmOWJiNDAyZWI4ZDljMzgxYmVjYzU0
MDg4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJv
bGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIu
aApAQCAtMjUsNyArMjUsNyBAQAogI2luY2x1ZGUgIkpTRE9NV2luZG93U2hlbGwuaCIKICNpbmNs
dWRlICJTY3JpcHRDb250cm9sbGVyQmFzZS5oIgogI2luY2x1ZGUgIlNjcmlwdEluc3RhbmNlLmgi
Ci0jaW5jbHVkZSA8cnVudGltZS9Qcm90ZWN0Lmg+CisjaW5jbHVkZSA8Y29sbGVjdG9yL2hhbmRs
ZXMvR2xvYmFsLmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvUmVm
UHRyLmg+CiAKQEAgLTY0LDcgKzY0LDcgQEAgdHlwZWRlZiBIYXNoTWFwPHZvaWQqLCBSZWZQdHI8
SlNDOjpCaW5kaW5nczo6Um9vdE9iamVjdD4gPiBSb290T2JqZWN0TWFwOwogCiBjbGFzcyBTY3Jp
cHRDb250cm9sbGVyIHsKICAgICBmcmllbmQgY2xhc3MgU2NyaXB0Q2FjaGVkRnJhbWVEYXRhOwot
ICAgIHR5cGVkZWYgV1RGOjpIYXNoTWFwPCBSZWZQdHI8RE9NV3JhcHBlcldvcmxkPiwgSlNDOjpQ
cm90ZWN0ZWRQdHI8SlNET01XaW5kb3dTaGVsbD4gPiBTaGVsbE1hcDsKKyAgICB0eXBlZGVmIFdU
Rjo6SGFzaE1hcDwgUmVmUHRyPERPTVdyYXBwZXJXb3JsZD4sIEpTQzo6R2xvYmFsPEpTRE9NV2lu
ZG93U2hlbGw+ID4gU2hlbGxNYXA7CiAKIHB1YmxpYzoKICAgICBTY3JpcHRDb250cm9sbGVyKEZy
YW1lKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRGdW5j
dGlvbkNhbGwuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0RnVuY3Rpb25D
YWxsLmNwcAppbmRleCBmNzdjNjkxYmY0MGJkYWZhOTQ2ZjE3ZmYwNDgyZDQ1ZDhmODMzZWQ3Li41
MThhNzg3ZmQ5ZTU4YzIxOTlhMWU3MTJlN2ZmMTI5YzI0OWU3NzI0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRGdW5jdGlvbkNhbGwuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdEZ1bmN0aW9uQ2FsbC5jcHAKQEAgLTE1MCw3ICsx
NTAsNyBAQCBTY3JpcHRWYWx1ZSBTY3JpcHRGdW5jdGlvbkNhbGw6OmNhbGwoYm9vbCYgaGFkRXhj
ZXB0aW9uLCBib29sIHJlcG9ydEV4Y2VwdGlvbnMpCiAgICAgICAgIHJldHVybiBTY3JpcHRWYWx1
ZSgpOwogICAgIH0KIAotICAgIHJldHVybiBTY3JpcHRWYWx1ZShyZXN1bHQpOworICAgIHJldHVy
biBTY3JpcHRWYWx1ZShtX2V4ZWMtPmdsb2JhbERhdGEoKSwgcmVzdWx0KTsKIH0KIAogU2NyaXB0
VmFsdWUgU2NyaXB0RnVuY3Rpb25DYWxsOjpjYWxsKCkKQEAgLTIyMCw3ICsyMjAsNyBAQCBTY3Jp
cHRWYWx1ZSBTY3JpcHRDYWxsYmFjazo6Y2FsbChib29sJiBoYWRFeGNlcHRpb24pCiAgICAgICAg
IHJldHVybiBTY3JpcHRWYWx1ZSgpOwogICAgIH0KIAotICAgIHJldHVybiBTY3JpcHRWYWx1ZShy
ZXN1bHQpOworICAgIHJldHVybiBTY3JpcHRWYWx1ZShtX2V4ZWMtPmdsb2JhbERhdGEoKSwgcmVz
dWx0KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvU2NyaXB0T2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1NjcmlwdE9iamVjdC5jcHAKaW5kZXggYjVjMWYwMTE5NjQ2MDgzNTI2MmRjMjA5NjMz
ZDBiNzRjMzhhNjZmOS4uMDM1NTk3YjE0NzMyYTRiOWI5YTkyZTZjNWE5MjVhNTM2N2FhOGYyYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0T2JqZWN0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRPYmplY3QuY3BwCkBAIC00NSw3
ICs0NSw3IEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFNj
cmlwdE9iamVjdDo6U2NyaXB0T2JqZWN0KFNjcmlwdFN0YXRlKiBzY3JpcHRTdGF0ZSwgSlNPYmpl
Y3QqIG9iamVjdCkKLSAgICA6IFNjcmlwdFZhbHVlKG9iamVjdCkKKyAgICA6IFNjcmlwdFZhbHVl
KHNjcmlwdFN0YXRlLT5nbG9iYWxEYXRhKCksIG9iamVjdCkKICAgICAsIG1fc2NyaXB0U3RhdGUo
c2NyaXB0U3RhdGUpCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9TY3JpcHRPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdE9iamVj
dC5oCmluZGV4IGYwODVlOGJlOGRmZjFiNzdkNTY3OTFlZDdmYmE3NDNmNGRmYjUwNzEuLmMxMGJm
MThiZDMwYTNkOTkyZTBiZWFiN2I4OGZmMWIzZWNkNDIzMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdE9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1NjcmlwdE9iamVjdC5oCkBAIC0zNCw4ICszNCw4IEBACiAjaW5jbHVkZSAiU2Ny
aXB0U3RhdGUuaCIKICNpbmNsdWRlICJTY3JpcHRWYWx1ZS5oIgogCisjaW5jbHVkZSA8Y29sbGVj
dG9yL2hhbmRsZXMvR2xvYmFsLmg+CiAjaW5jbHVkZSA8cnVudGltZS9KU09iamVjdC5oPgotI2lu
Y2x1ZGUgPHJ1bnRpbWUvUHJvdGVjdC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xh
c3MgSW5qZWN0ZWRTY3JpcHRIb3N0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvU2NyaXB0U3RhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0
U3RhdGUuY3BwCmluZGV4IGQ2Njk5ZjZjMzllMWI5YThlMDk5NWU3YzQ4YzU2NDRiMjEyMGZiMGQu
LjhhN2M5YTViYjY4MjM5NzNiYTRmYWUyOTU5YmE5MGM2MjZmMzlhZGMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFN0YXRlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9TY3JpcHRTdGF0ZS5jcHAKQEAgLTQ1LDE0ICs0NSwxNCBAQCBTY3Jp
cHRTdGF0ZVByb3RlY3RlZFB0cjo6flNjcmlwdFN0YXRlUHJvdGVjdGVkUHRyKCkKIH0KIAogU2Ny
aXB0U3RhdGVQcm90ZWN0ZWRQdHI6OlNjcmlwdFN0YXRlUHJvdGVjdGVkUHRyKFNjcmlwdFN0YXRl
KiBzY3JpcHRTdGF0ZSkKLSAgICA6IG1fZ2xvYmFsT2JqZWN0KHNjcmlwdFN0YXRlLT5sZXhpY2Fs
R2xvYmFsT2JqZWN0KCkpCisgICAgOiBtX2dsb2JhbE9iamVjdChzY3JpcHRTdGF0ZS0+Z2xvYmFs
RGF0YSgpLCBzY3JpcHRTdGF0ZS0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKQogewogfQogCiBTY3Jp
cHRTdGF0ZSogU2NyaXB0U3RhdGVQcm90ZWN0ZWRQdHI6OmdldCgpIGNvbnN0CiB7CiAgICAgaWYg
KG1fZ2xvYmFsT2JqZWN0KQotICAgICAgICByZXR1cm4gbV9nbG9iYWxPYmplY3QtPmdsb2JhbEV4
ZWMoKTsKKyAgICAgICAgcmV0dXJuIGNvbnN0X2Nhc3Q8SlNDOjpKU0dsb2JhbE9iamVjdCo+KG1f
Z2xvYmFsT2JqZWN0LmdldCgpKS0+Z2xvYmFsRXhlYygpOwogICAgIHJldHVybiAwOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRTdGF0ZS5oIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0U3RhdGUuaAppbmRleCBlMTljMGM4MzBlZDIx
MTMyNjIyMTI4MTZlNjE4YzRiNDhiY2Y1MWIxLi5mMjdiMzA2YTE4Y2QzZGU1MzgxOGQzZjZjNjZi
M2Q2ZTk0YzEwMTlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3Jp
cHRTdGF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFN0YXRlLmgK
QEAgLTMyLDcgKzMyLDcgQEAKICNpZm5kZWYgU2NyaXB0U3RhdGVfaAogI2RlZmluZSBTY3JpcHRT
dGF0ZV9oCiAKLSNpbmNsdWRlIDxydW50aW1lL1Byb3RlY3QuaD4KKyNpbmNsdWRlIDxjb2xsZWN0
b3IvaGFuZGxlcy9HbG9iYWwuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KIAogbmFt
ZXNwYWNlIEpTQyB7CkBAIC01OSw3ICs1OSw3IEBAIHB1YmxpYzoKICAgICB+U2NyaXB0U3RhdGVQ
cm90ZWN0ZWRQdHIoKTsKICAgICBTY3JpcHRTdGF0ZSogZ2V0KCkgY29uc3Q7CiBwcml2YXRlOgot
ICAgIEpTQzo6UHJvdGVjdGVkUHRyPEpTQzo6SlNHbG9iYWxPYmplY3Q+IG1fZ2xvYmFsT2JqZWN0
OworICAgIEpTQzo6R2xvYmFsPEpTQzo6SlNHbG9iYWxPYmplY3Q+IG1fZ2xvYmFsT2JqZWN0Owog
fTsKIAogU2NyaXB0U3RhdGUqIG1haW5Xb3JsZFNjcmlwdFN0YXRlKEZyYW1lKik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRWYWx1ZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRWYWx1ZS5jcHAKaW5kZXggYTJhNzJiNmQwNzBmYzk5
MGM3N2RhZWZkMzllMWQ0NmNiYTg3ZDgyMC4uNmZlNmVhMzhkMWM0NDYzMjhhZWRhYzNlMzE3OTU2
MjVkNTFjZTNmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0
VmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFZhbHVlLmNw
cApAQCAtMzUsOCArMzUsOCBAQAogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0FQSUNhc3QuaD4K
ICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU1ZhbHVlUmVmLmg+CiAKKyNpbmNsdWRlIDxjb2xs
ZWN0b3IvaGFuZGxlcy9HbG9iYWwuaD4KICNpbmNsdWRlIDxydW50aW1lL0pTTG9jay5oPgotI2lu
Y2x1ZGUgPHJ1bnRpbWUvUHJvdGVjdC5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvVVN0cmluZy5oPgog
CiB1c2luZyBuYW1lc3BhY2UgSlNDOwpAQCAtODcsNyArODcsNyBAQCBib29sIFNjcmlwdFZhbHVl
Ojppc09iamVjdCgpIGNvbnN0CiBib29sIFNjcmlwdFZhbHVlOjppc0Z1bmN0aW9uKCkgY29uc3QK
IHsKICAgICBDYWxsRGF0YSBjYWxsRGF0YTsKLSAgICByZXR1cm4gZ2V0Q2FsbERhdGEobV92YWx1
ZSwgY2FsbERhdGEpICE9IENhbGxUeXBlTm9uZTsKKyAgICByZXR1cm4gZ2V0Q2FsbERhdGEobV92
YWx1ZS5nZXQoKSwgY2FsbERhdGEpICE9IENhbGxUeXBlTm9uZTsKIH0KIAogUGFzc1JlZlB0cjxT
ZXJpYWxpemVkU2NyaXB0VmFsdWU+IFNjcmlwdFZhbHVlOjpzZXJpYWxpemUoU2NyaXB0U3RhdGUq
IHNjcmlwdFN0YXRlKQpAQCAtOTcsNyArOTcsNyBAQCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZT4gU2NyaXB0VmFsdWU6OnNlcmlhbGl6ZShTY3JpcHRTdGF0ZSogc2NyaXB0U3RhdAog
CiBTY3JpcHRWYWx1ZSBTY3JpcHRWYWx1ZTo6ZGVzZXJpYWxpemUoU2NyaXB0U3RhdGUqIHNjcmlw
dFN0YXRlLCBTZXJpYWxpemVkU2NyaXB0VmFsdWUqIHZhbHVlKQogewotICAgIHJldHVybiBTY3Jp
cHRWYWx1ZSh2YWx1ZS0+ZGVzZXJpYWxpemUoc2NyaXB0U3RhdGUsIHNjcmlwdFN0YXRlLT5sZXhp
Y2FsR2xvYmFsT2JqZWN0KCkpKTsKKyAgICByZXR1cm4gU2NyaXB0VmFsdWUoc2NyaXB0U3RhdGUt
Pmdsb2JhbERhdGEoKSwgdmFsdWUtPmRlc2VyaWFsaXplKHNjcmlwdFN0YXRlLCBzY3JpcHRTdGF0
ZS0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKSk7CiB9CiAKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0VmFsdWUuaCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFZhbHVlLmgKaW5kZXggNTc0NmMzZjY3NGFh
ZDJhODk2OWU2ZTBhYjAzMjgwN2ZmZjE2OWZkMy4uMzdjZjI0MzY1MWJhOWE0NGVjODk1N2I1YTY3
NTE3ZGI0ZjRmZGRlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2Ny
aXB0VmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRWYWx1ZS5o
CkBAIC0zNCw4ICszNCw4IEBACiAjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCiAjaW5jbHVkZSAi
UGxhdGZvcm1TdHJpbmcuaCIKICNpbmNsdWRlICJTY3JpcHRTdGF0ZS5oIgorI2luY2x1ZGUgPGNv
bGxlY3Rvci9oYW5kbGVzL0dsb2JhbC5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvSlNWYWx1ZS5oPgot
I2luY2x1ZGUgPHJ1bnRpbWUvUHJvdGVjdC5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTQ1LDcgKzQ1LDggQEAgY2xhc3MgU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlOwogCiBjbGFzcyBTY3JpcHRWYWx1ZSB7CiBwdWJsaWM6Ci0gICAgU2NyaXB0
VmFsdWUoSlNDOjpKU1ZhbHVlIHZhbHVlID0gSlNDOjpKU1ZhbHVlKCkpIDogbV92YWx1ZSh2YWx1
ZSkge30KKyAgICBTY3JpcHRWYWx1ZSgpIDogbV92YWx1ZShKU0M6Okdsb2JhbDxKU0M6OlVua25v
d24+OjpFbXB0eVZhbHVlKSB7IH0KKyAgICBTY3JpcHRWYWx1ZShKU0M6OkpTR2xvYmFsRGF0YSYg
Z2xvYmFsRGF0YSwgSlNDOjpKU1ZhbHVlIHZhbHVlKSA6IG1fdmFsdWUoZ2xvYmFsRGF0YSwgdmFs
dWUpIHt9CiAgICAgdmlydHVhbCB+U2NyaXB0VmFsdWUoKSB7fQogCiAgICAgSlNDOjpKU1ZhbHVl
IGpzVmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlLmdldCgpOyB9CkBAIC01NiwyMSArNTcs
MjEgQEAgcHVibGljOgogICAgIGJvb2wgaXNVbmRlZmluZWQoKSBjb25zdDsKICAgICBib29sIGlz
T2JqZWN0KCkgY29uc3Q7CiAgICAgYm9vbCBpc0Z1bmN0aW9uKCkgY29uc3Q7Ci0gICAgYm9vbCBo
YXNOb1ZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZSA9PSBKU0M6OkpTVmFsdWUoKTsgfQor
ICAgIGJvb2wgaGFzTm9WYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWUuaXNFbXB0eSgpOyB9
CiAKICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgU2NyaXB0VmFsdWUmIG90aGVyKSBjb25zdCB7
IHJldHVybiBtX3ZhbHVlID09IG90aGVyLm1fdmFsdWU7IH0KIAogICAgIFBhc3NSZWZQdHI8U2Vy
aWFsaXplZFNjcmlwdFZhbHVlPiBzZXJpYWxpemUoU2NyaXB0U3RhdGUqKTsKICAgICBzdGF0aWMg
U2NyaXB0VmFsdWUgZGVzZXJpYWxpemUoU2NyaXB0U3RhdGUqLCBTZXJpYWxpemVkU2NyaXB0VmFs
dWUqKTsKIAotICAgIHN0YXRpYyBTY3JpcHRWYWx1ZSB1bmRlZmluZWQoKSB7IHJldHVybiBTY3Jp
cHRWYWx1ZShKU0M6OmpzVW5kZWZpbmVkKCkpOyB9CisgICAgc3RhdGljIFNjcmlwdFZhbHVlIHVu
ZGVmaW5lZCgpOwogCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKICAgICBQYXNzUmVmUHRyPEluc3Bl
Y3RvclZhbHVlPiB0b0luc3BlY3RvclZhbHVlKFNjcmlwdFN0YXRlKikgY29uc3Q7CiAjZW5kaWYK
IAogcHJpdmF0ZToKLSAgICBKU0M6OlByb3RlY3RlZEpTVmFsdWUgbV92YWx1ZTsKKyAgICBKU0M6
Okdsb2JhbDxKU0M6OlVua25vd24+IG1fdmFsdWU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRXcmFwcGFi
bGUuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFdyYXBwYWJsZS5oCmluZGV4
IGM1Nzc5NmMxNjI0MDgxYjkyNDVkYThhYmI1NjdhYTIwMmU0Y2I5ZGYuLjBmYmU5ZTQ0ZDYwNjlk
NGI2ZTgyODk2MzZhY2VkMTQ4ZmU1MzA2ZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1NjcmlwdFdyYXBwYWJsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL1NjcmlwdFdyYXBwYWJsZS5oCkBAIC0zOCwyMSArMzgsMjAgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBjbGFzcyBTY3JpcHRXcmFwcGFibGUgewogcHVibGljOgorICAgIFNjcmlwdFdyYXBw
YWJsZSgpCisgICAgeworICAgIH0KKwogICAgIERPTU9iamVjdCogd3JhcHBlcigpIGNvbnN0CiAg
ICAgewogICAgICAgICByZXR1cm4gbV93cmFwcGVyLmdldCgpOwogICAgIH0KLSAgICAKLSAgICB2
b2lkIHNldFdyYXBwZXIoRE9NT2JqZWN0KiB3cmFwcGVyKQorCisgICAgdm9pZCBzZXRXcmFwcGVy
KEpTQzo6SlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBET01PYmplY3QqIHdyYXBwZXIpCiAgICAg
ewotICAgICAgICBtX3dyYXBwZXIgPSB3cmFwcGVyOwotICAgIH0KLSAgICAKLSAgICB2b2lkIGNs
ZWFyV3JhcHBlcihET01PYmplY3QqIHdyYXBwZXIpIAotICAgIHsgCi0gICAgICAgIG1fd3JhcHBl
ci5jbGVhcih3cmFwcGVyKTsgCisgICAgICAgIG1fd3JhcHBlci5zZXQoZ2xvYmFsRGF0YSwgd3Jh
cHBlciwgMCk7CiAgICAgfQotICAgIAorCiBwcml2YXRlOgogICAgIEpTQzo6V2Vha0dDUHRyPERP
TU9iamVjdD4gbV93cmFwcGVyOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1dvcmtlclNjcmlwdENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvV29ya2VyU2NyaXB0Q29udHJvbGxlci5jcHAKaW5kZXggMGM4OTYzMmQ5OGNlZWU0N2Uz
MzJmZDIwZjY5NjBmMWFjNWM5YWE5Ny4uZDM5MjI4MTY5YmY4ZGJmMjBmNWFiNDIzYmMwNTI1Yzkz
ZTFkNzk5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV29ya2VyU2Ny
aXB0Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV29ya2Vy
U2NyaXB0Q29udHJvbGxlci5jcHAKQEAgLTUyLDYgKzUyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogV29ya2VyU2NyaXB0Q29udHJvbGxlcjo6V29ya2VyU2NyaXB0Q29udHJvbGxlcihXb3JrZXJD
b250ZXh0KiB3b3JrZXJDb250ZXh0KQogICAgIDogbV9nbG9iYWxEYXRhKEpTR2xvYmFsRGF0YTo6
Y3JlYXRlKFRocmVhZFN0YWNrVHlwZVNtYWxsKSkKICAgICAsIG1fd29ya2VyQ29udGV4dCh3b3Jr
ZXJDb250ZXh0KQorICAgICwgbV93b3JrZXJDb250ZXh0V3JhcHBlcigqbV9nbG9iYWxEYXRhKQog
ICAgICwgbV9leGVjdXRpb25Gb3JiaWRkZW4oZmFsc2UpCiB7CiAgICAgaW5pdE5vcm1hbFdvcmxk
Q2xpZW50RGF0YShtX2dsb2JhbERhdGEuZ2V0KCkpOwpAQCAtNTksNyArNjAsNyBAQCBXb3JrZXJT
Y3JpcHRDb250cm9sbGVyOjpXb3JrZXJTY3JpcHRDb250cm9sbGVyKFdvcmtlckNvbnRleHQqIHdv
cmtlckNvbnRleHQpCiAKIFdvcmtlclNjcmlwdENvbnRyb2xsZXI6On5Xb3JrZXJTY3JpcHRDb250
cm9sbGVyKCkKIHsKLSAgICBtX3dvcmtlckNvbnRleHRXcmFwcGVyID0gMDsgLy8gVW5wcm90ZWN0
IHRoZSBnbG9iYWwgb2JqZWN0LgorICAgIG1fd29ya2VyQ29udGV4dFdyYXBwZXIuY2xlYXIoKTsg
Ly8gVW5wcm90ZWN0IHRoZSBnbG9iYWwgb2JqZWN0LgogICAgIG1fZ2xvYmFsRGF0YS0+aGVhcC5k
ZXN0cm95KCk7CiB9CiAKQEAgLTczLDI2ICs3NCwyNiBAQCB2b2lkIFdvcmtlclNjcmlwdENvbnRy
b2xsZXI6OmluaXRTY3JpcHQoKQogICAgIC8vIHdoZW4gd2UgYWxsb2NhdGUgdGhlIGdsb2JhbCBv
YmplY3QuIChPbmNlIHRoZSBnbG9iYWwgb2JqZWN0IGlzIGZ1bGx5CiAgICAgLy8gY29uc3RydWN0
ZWQsIGl0IGNhbiBtYXJrIGl0cyBvd24gcHJvdG90eXBlLikKICAgICBSZWZQdHI8U3RydWN0dXJl
PiB3b3JrZXJDb250ZXh0UHJvdG90eXBlU3RydWN0dXJlID0gSlNXb3JrZXJDb250ZXh0UHJvdG90
eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoanNOdWxsKCkpOwotICAgIFByb3RlY3RlZFB0cjxKU1dvcmtl
ckNvbnRleHRQcm90b3R5cGU+IHdvcmtlckNvbnRleHRQcm90b3R5cGUgPSBuZXcgKG1fZ2xvYmFs
RGF0YS5nZXQoKSkgSlNXb3JrZXJDb250ZXh0UHJvdG90eXBlKDAsIHdvcmtlckNvbnRleHRQcm90
b3R5cGVTdHJ1Y3R1cmUucmVsZWFzZSgpKTsKKyAgICBHbG9iYWw8SlNXb3JrZXJDb250ZXh0UHJv
dG90eXBlPiB3b3JrZXJDb250ZXh0UHJvdG90eXBlKCptX2dsb2JhbERhdGEsIG5ldyAobV9nbG9i
YWxEYXRhLmdldCgpKSBKU1dvcmtlckNvbnRleHRQcm90b3R5cGUoMCwgd29ya2VyQ29udGV4dFBy
b3RvdHlwZVN0cnVjdHVyZS5yZWxlYXNlKCkpKTsKIAogICAgIGlmIChtX3dvcmtlckNvbnRleHQt
PmlzRGVkaWNhdGVkV29ya2VyQ29udGV4dCgpKSB7Ci0gICAgICAgIFJlZlB0cjxTdHJ1Y3R1cmU+
IGRlZGljYXRlZENvbnRleHRQcm90b3R5cGVTdHJ1Y3R1cmUgPSBKU0RlZGljYXRlZFdvcmtlckNv
bnRleHRQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSh3b3JrZXJDb250ZXh0UHJvdG90eXBlKTsK
LSAgICAgICAgUHJvdGVjdGVkUHRyPEpTRGVkaWNhdGVkV29ya2VyQ29udGV4dFByb3RvdHlwZT4g
ZGVkaWNhdGVkQ29udGV4dFByb3RvdHlwZSA9IG5ldyAobV9nbG9iYWxEYXRhLmdldCgpKSBKU0Rl
ZGljYXRlZFdvcmtlckNvbnRleHRQcm90b3R5cGUoMCwgZGVkaWNhdGVkQ29udGV4dFByb3RvdHlw
ZVN0cnVjdHVyZS5yZWxlYXNlKCkpOwotICAgICAgICBSZWZQdHI8U3RydWN0dXJlPiBzdHJ1Y3R1
cmUgPSBKU0RlZGljYXRlZFdvcmtlckNvbnRleHQ6OmNyZWF0ZVN0cnVjdHVyZShkZWRpY2F0ZWRD
b250ZXh0UHJvdG90eXBlKTsKKyAgICAgICAgUmVmUHRyPFN0cnVjdHVyZT4gZGVkaWNhdGVkQ29u
dGV4dFByb3RvdHlwZVN0cnVjdHVyZSA9IEpTRGVkaWNhdGVkV29ya2VyQ29udGV4dFByb3RvdHlw
ZTo6Y3JlYXRlU3RydWN0dXJlKHdvcmtlckNvbnRleHRQcm90b3R5cGUuZ2V0KCkpOworICAgICAg
ICBHbG9iYWw8SlNEZWRpY2F0ZWRXb3JrZXJDb250ZXh0UHJvdG90eXBlPiBkZWRpY2F0ZWRDb250
ZXh0UHJvdG90eXBlKCptX2dsb2JhbERhdGEsIG5ldyAobV9nbG9iYWxEYXRhLmdldCgpKSBKU0Rl
ZGljYXRlZFdvcmtlckNvbnRleHRQcm90b3R5cGUoMCwgZGVkaWNhdGVkQ29udGV4dFByb3RvdHlw
ZVN0cnVjdHVyZS5yZWxlYXNlKCkpKTsKKyAgICAgICAgUmVmUHRyPFN0cnVjdHVyZT4gc3RydWN0
dXJlID0gSlNEZWRpY2F0ZWRXb3JrZXJDb250ZXh0OjpjcmVhdGVTdHJ1Y3R1cmUoZGVkaWNhdGVk
Q29udGV4dFByb3RvdHlwZS5nZXQoKSk7CiAKLSAgICAgICAgbV93b3JrZXJDb250ZXh0V3JhcHBl
ciA9IG5ldyAobV9nbG9iYWxEYXRhLmdldCgpKSBKU0RlZGljYXRlZFdvcmtlckNvbnRleHQoc3Ry
dWN0dXJlLnJlbGVhc2UoKSwgbV93b3JrZXJDb250ZXh0LT50b0RlZGljYXRlZFdvcmtlckNvbnRl
eHQoKSk7Ci0gICAgICAgIHdvcmtlckNvbnRleHRQcm90b3R5cGUtPnB1dEFub255bW91c1ZhbHVl
KCptX2dsb2JhbERhdGEsIDAsIG1fd29ya2VyQ29udGV4dFdyYXBwZXIpOwotICAgICAgICBkZWRp
Y2F0ZWRDb250ZXh0UHJvdG90eXBlLT5wdXRBbm9ueW1vdXNWYWx1ZSgqbV9nbG9iYWxEYXRhLCAw
LCBtX3dvcmtlckNvbnRleHRXcmFwcGVyKTsKKyAgICAgICAgbV93b3JrZXJDb250ZXh0V3JhcHBl
ci5zZXQoKm1fZ2xvYmFsRGF0YSwgbmV3IChtX2dsb2JhbERhdGEuZ2V0KCkpIEpTRGVkaWNhdGVk
V29ya2VyQ29udGV4dChzdHJ1Y3R1cmUucmVsZWFzZSgpLCBtX3dvcmtlckNvbnRleHQtPnRvRGVk
aWNhdGVkV29ya2VyQ29udGV4dCgpKSk7CisgICAgICAgIHdvcmtlckNvbnRleHRQcm90b3R5cGUt
PnB1dEFub255bW91c1ZhbHVlKCptX2dsb2JhbERhdGEsIDAsIG1fd29ya2VyQ29udGV4dFdyYXBw
ZXIuZ2V0KCkpOworICAgICAgICBkZWRpY2F0ZWRDb250ZXh0UHJvdG90eXBlLT5wdXRBbm9ueW1v
dXNWYWx1ZSgqbV9nbG9iYWxEYXRhLCAwLCBtX3dvcmtlckNvbnRleHRXcmFwcGVyLmdldCgpKTsK
ICNpZiBFTkFCTEUoU0hBUkVEX1dPUktFUlMpCiAgICAgfSBlbHNlIHsKICAgICAgICAgQVNTRVJU
KG1fd29ya2VyQ29udGV4dC0+aXNTaGFyZWRXb3JrZXJDb250ZXh0KCkpOwotICAgICAgICBSZWZQ
dHI8U3RydWN0dXJlPiBzaGFyZWRDb250ZXh0UHJvdG90eXBlU3RydWN0dXJlID0gSlNTaGFyZWRX
b3JrZXJDb250ZXh0UHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUod29ya2VyQ29udGV4dFByb3Rv
dHlwZSk7Ci0gICAgICAgIFByb3RlY3RlZFB0cjxKU1NoYXJlZFdvcmtlckNvbnRleHRQcm90b3R5
cGU+IHNoYXJlZENvbnRleHRQcm90b3R5cGUgPSBuZXcgKG1fZ2xvYmFsRGF0YS5nZXQoKSkgSlNT
aGFyZWRXb3JrZXJDb250ZXh0UHJvdG90eXBlKDAsIHNoYXJlZENvbnRleHRQcm90b3R5cGVTdHJ1
Y3R1cmUucmVsZWFzZSgpKTsKLSAgICAgICAgUmVmUHRyPFN0cnVjdHVyZT4gc3RydWN0dXJlID0g
SlNTaGFyZWRXb3JrZXJDb250ZXh0OjpjcmVhdGVTdHJ1Y3R1cmUoc2hhcmVkQ29udGV4dFByb3Rv
dHlwZSk7CisgICAgICAgIFJlZlB0cjxTdHJ1Y3R1cmU+IHNoYXJlZENvbnRleHRQcm90b3R5cGVT
dHJ1Y3R1cmUgPSBKU1NoYXJlZFdvcmtlckNvbnRleHRQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVy
ZSh3b3JrZXJDb250ZXh0UHJvdG90eXBlLmdldCgpKTsKKyAgICAgICAgR2xvYmFsPEpTU2hhcmVk
V29ya2VyQ29udGV4dFByb3RvdHlwZT4gc2hhcmVkQ29udGV4dFByb3RvdHlwZSgqbV9nbG9iYWxE
YXRhLCBuZXcgKG1fZ2xvYmFsRGF0YS5nZXQoKSkgSlNTaGFyZWRXb3JrZXJDb250ZXh0UHJvdG90
eXBlKDAsIHNoYXJlZENvbnRleHRQcm90b3R5cGVTdHJ1Y3R1cmUucmVsZWFzZSgpKSk7CisgICAg
ICAgIFJlZlB0cjxTdHJ1Y3R1cmU+IHN0cnVjdHVyZSA9IEpTU2hhcmVkV29ya2VyQ29udGV4dDo6
Y3JlYXRlU3RydWN0dXJlKHNoYXJlZENvbnRleHRQcm90b3R5cGUuZ2V0KCkpOwogCi0gICAgICAg
IG1fd29ya2VyQ29udGV4dFdyYXBwZXIgPSBuZXcgKG1fZ2xvYmFsRGF0YS5nZXQoKSkgSlNTaGFy
ZWRXb3JrZXJDb250ZXh0KHN0cnVjdHVyZS5yZWxlYXNlKCksIG1fd29ya2VyQ29udGV4dC0+dG9T
aGFyZWRXb3JrZXJDb250ZXh0KCkpOwotICAgICAgICB3b3JrZXJDb250ZXh0UHJvdG90eXBlLT5w
dXRBbm9ueW1vdXNWYWx1ZSgqbV9nbG9iYWxEYXRhLCAwLCBtX3dvcmtlckNvbnRleHRXcmFwcGVy
KTsKLSAgICAgICAgc2hhcmVkQ29udGV4dFByb3RvdHlwZS0+cHV0QW5vbnltb3VzVmFsdWUoKm1f
Z2xvYmFsRGF0YSwgMCwgbV93b3JrZXJDb250ZXh0V3JhcHBlcik7CisgICAgICAgIG1fd29ya2Vy
Q29udGV4dFdyYXBwZXIuc2V0KCptX2dsb2JhbERhdGEsIG5ldyAobV9nbG9iYWxEYXRhLmdldCgp
KSBKU1NoYXJlZFdvcmtlckNvbnRleHQoc3RydWN0dXJlLnJlbGVhc2UoKSwgbV93b3JrZXJDb250
ZXh0LT50b1NoYXJlZFdvcmtlckNvbnRleHQoKSkpOworICAgICAgICB3b3JrZXJDb250ZXh0UHJv
dG90eXBlLT5wdXRBbm9ueW1vdXNWYWx1ZSgqbV9nbG9iYWxEYXRhLCAwLCBtX3dvcmtlckNvbnRl
eHRXcmFwcGVyLmdldCgpKTsKKyAgICAgICAgc2hhcmVkQ29udGV4dFByb3RvdHlwZS0+cHV0QW5v
bnltb3VzVmFsdWUoKm1fZ2xvYmFsRGF0YSwgMCwgbV93b3JrZXJDb250ZXh0V3JhcHBlci5nZXQo
KSk7CiAjZW5kaWYKICAgICB9CiB9CkBAIC0xMDIsMTAgKzEwMywxMCBAQCBTY3JpcHRWYWx1ZSBX
b3JrZXJTY3JpcHRDb250cm9sbGVyOjpldmFsdWF0ZShjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiBz
b3VyY2VDb2RlKQogICAgIHsKICAgICAgICAgTXV0ZXhMb2NrZXIgbG9jayhtX3NoYXJlZERhdGFN
dXRleCk7CiAgICAgICAgIGlmIChtX2V4ZWN1dGlvbkZvcmJpZGRlbikKLSAgICAgICAgICAgIHJl
dHVybiBKU1ZhbHVlKCk7CisgICAgICAgICAgICByZXR1cm4gU2NyaXB0VmFsdWUoKTsKICAgICB9
CiAgICAgU2NyaXB0VmFsdWUgZXhjZXB0aW9uOwotICAgIFNjcmlwdFZhbHVlIHJlc3VsdCA9IGV2
YWx1YXRlKHNvdXJjZUNvZGUsICZleGNlcHRpb24pOworICAgIFNjcmlwdFZhbHVlIHJlc3VsdChl
dmFsdWF0ZShzb3VyY2VDb2RlLCAmZXhjZXB0aW9uKSk7CiAgICAgaWYgKGV4Y2VwdGlvbi5qc1Zh
bHVlKCkpIHsKICAgICAgICAgSlNMb2NrIGxvY2soU2lsZW5jZUFzc2VydGlvbnNPbmx5KTsKICAg
ICAgICAgcmVwb3J0RXhjZXB0aW9uKG1fd29ya2VyQ29udGV4dFdyYXBwZXItPmdsb2JhbEV4ZWMo
KSwgZXhjZXB0aW9uLmpzVmFsdWUoKSk7CkBAIC0xMTgsNyArMTE5LDcgQEAgU2NyaXB0VmFsdWUg
V29ya2VyU2NyaXB0Q29udHJvbGxlcjo6ZXZhbHVhdGUoY29uc3QgU2NyaXB0U291cmNlQ29kZSYg
c291cmNlQ29kZSwKICAgICB7CiAgICAgICAgIE11dGV4TG9ja2VyIGxvY2sobV9zaGFyZWREYXRh
TXV0ZXgpOwogICAgICAgICBpZiAobV9leGVjdXRpb25Gb3JiaWRkZW4pCi0gICAgICAgICAgICBy
ZXR1cm4gSlNWYWx1ZSgpOworICAgICAgICAgICAgcmV0dXJuIFNjcmlwdFZhbHVlKCk7CiAgICAg
fQogCiAgICAgaW5pdFNjcmlwdElmTmVlZGVkKCk7CkBAIC0xMjYsMjIgKzEyNywyMiBAQCBTY3Jp
cHRWYWx1ZSBXb3JrZXJTY3JpcHRDb250cm9sbGVyOjpldmFsdWF0ZShjb25zdCBTY3JpcHRTb3Vy
Y2VDb2RlJiBzb3VyY2VDb2RlLAogCiAgICAgRXhlY1N0YXRlKiBleGVjID0gbV93b3JrZXJDb250
ZXh0V3JhcHBlci0+Z2xvYmFsRXhlYygpOwogICAgIG1fd29ya2VyQ29udGV4dFdyYXBwZXItPmds
b2JhbERhdGEoKS50aW1lb3V0Q2hlY2tlci5zdGFydCgpOwotICAgIENvbXBsZXRpb24gY29tcCA9
IEpTQzo6ZXZhbHVhdGUoZXhlYywgZXhlYy0+ZHluYW1pY0dsb2JhbE9iamVjdCgpLT5nbG9iYWxT
Y29wZUNoYWluKCksIHNvdXJjZUNvZGUuanNTb3VyY2VDb2RlKCksIG1fd29ya2VyQ29udGV4dFdy
YXBwZXIpOworICAgIENvbXBsZXRpb24gY29tcCA9IEpTQzo6ZXZhbHVhdGUoZXhlYywgZXhlYy0+
ZHluYW1pY0dsb2JhbE9iamVjdCgpLT5nbG9iYWxTY29wZUNoYWluKCksIHNvdXJjZUNvZGUuanNT
b3VyY2VDb2RlKCksIG1fd29ya2VyQ29udGV4dFdyYXBwZXIuZ2V0KCkpOwogICAgIG1fd29ya2Vy
Q29udGV4dFdyYXBwZXItPmdsb2JhbERhdGEoKS50aW1lb3V0Q2hlY2tlci5zdG9wKCk7CiAKICAg
ICBpZiAoY29tcC5jb21wbFR5cGUoKSA9PSBOb3JtYWwgfHwgY29tcC5jb21wbFR5cGUoKSA9PSBS
ZXR1cm5WYWx1ZSkKLSAgICAgICAgcmV0dXJuIGNvbXAudmFsdWUoKTsKKyAgICAgICAgcmV0dXJu
IFNjcmlwdFZhbHVlKCptX2dsb2JhbERhdGEsIGNvbXAudmFsdWUoKSk7CiAKICAgICBpZiAoY29t
cC5jb21wbFR5cGUoKSA9PSBUaHJvdykgewogICAgICAgICBTdHJpbmcgZXJyb3JNZXNzYWdlOwog
ICAgICAgICBpbnQgbGluZU51bWJlciA9IDA7CiAgICAgICAgIFN0cmluZyBzb3VyY2VVUkwgPSBz
b3VyY2VDb2RlLnVybCgpLnN0cmluZygpOwogICAgICAgICBpZiAobV93b3JrZXJDb250ZXh0LT5z
YW5pdGl6ZVNjcmlwdEVycm9yKGVycm9yTWVzc2FnZSwgbGluZU51bWJlciwgc291cmNlVVJMKSkK
LSAgICAgICAgICAgICpleGNlcHRpb24gPSBTY3JpcHRWYWx1ZSh0aHJvd0Vycm9yKGV4ZWMsIGNy
ZWF0ZUVycm9yKGV4ZWMsIGVycm9yTWVzc2FnZS5pbXBsKCkpKSk7CisgICAgICAgICAgICAqZXhj
ZXB0aW9uID0gU2NyaXB0VmFsdWUoKm1fZ2xvYmFsRGF0YSwgdGhyb3dFcnJvcihleGVjLCBjcmVh
dGVFcnJvcihleGVjLCBlcnJvck1lc3NhZ2UuaW1wbCgpKSkpOwogICAgICAgICBlbHNlCi0gICAg
ICAgICAgICAqZXhjZXB0aW9uID0gY29tcC52YWx1ZSgpOworICAgICAgICAgICAgKmV4Y2VwdGlv
biA9IFNjcmlwdFZhbHVlKCptX2dsb2JhbERhdGEsIGNvbXAudmFsdWUoKSk7CiAgICAgfQotICAg
IHJldHVybiBKU1ZhbHVlKCk7CisgICAgcmV0dXJuIFNjcmlwdFZhbHVlKCk7CiB9CiAKIHZvaWQg
V29ya2VyU2NyaXB0Q29udHJvbGxlcjo6c2V0RXhjZXB0aW9uKFNjcmlwdFZhbHVlIGV4Y2VwdGlv
bikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENv
bnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENvbnRy
b2xsZXIuaAppbmRleCA0NTc4OTEzYzk1ZWE1ZGMwYTI5MzZmNzNiNWM5MDAzYzQ2NGU5MDIwLi5j
M2I4MjE1ZGQ2MTUzOWJlYmFlOGM0Y2FiMGRlMTczMjMyNjZiNjA2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV29ya2VyU2NyaXB0Q29udHJvbGxlci5oCkBAIC0yOSw3
ICsyOSw3IEBACiAKICNpZiBFTkFCTEUoV09SS0VSUykKIAotI2luY2x1ZGUgPHJ1bnRpbWUvUHJv
dGVjdC5oPgorI2luY2x1ZGUgPGNvbGxlY3Rvci9oYW5kbGVzL0dsb2JhbC5oPgogI2luY2x1ZGUg
PHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgogCkBAIC01Myw3ICs1
Myw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgSlNXb3JrZXJDb250ZXh0KiB3b3Jr
ZXJDb250ZXh0V3JhcHBlcigpCiAgICAgICAgIHsKICAgICAgICAgICAgIGluaXRTY3JpcHRJZk5l
ZWRlZCgpOwotICAgICAgICAgICAgcmV0dXJuIG1fd29ya2VyQ29udGV4dFdyYXBwZXI7CisgICAg
ICAgICAgICByZXR1cm4gbV93b3JrZXJDb250ZXh0V3JhcHBlci5nZXQoKTsKICAgICAgICAgfQog
CiAgICAgICAgIFNjcmlwdFZhbHVlIGV2YWx1YXRlKGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmKTsK
QEAgLTc3LDcgKzc3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIFJlZlB0cjxK
U0M6OkpTR2xvYmFsRGF0YT4gbV9nbG9iYWxEYXRhOwogICAgICAgICBXb3JrZXJDb250ZXh0KiBt
X3dvcmtlckNvbnRleHQ7Ci0gICAgICAgIEpTQzo6UHJvdGVjdGVkUHRyPEpTV29ya2VyQ29udGV4
dD4gbV93b3JrZXJDb250ZXh0V3JhcHBlcjsKKyAgICAgICAgSlNDOjpHbG9iYWw8SlNXb3JrZXJD
b250ZXh0PiBtX3dvcmtlckNvbnRleHRXcmFwcGVyOwogCiAgICAgICAgIE11dGV4IG1fc2hhcmVk
RGF0YU11dGV4OwogICAgICAgICBib29sIG1fZXhlY3V0aW9uRm9yYmlkZGVuOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0gYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQppbmRleCBk
MjMwOWU5MjdmY2JhYWE4NjczZmRjMjY5ZGIxOGZkOTcyMjA2YzY5Li4xNzBmYzliNjM4MzQzNjc3
ZTVhMjUxNjQ0MzZhNjVlOGE4MjhhMzFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQpAQCAtMTQ0NSw3ICsxNDQ1LDYgQEAgc3Vi
IEdlbmVyYXRlSW1wbGVtZW50YXRpb24KIAogICAgICAgICBpZiAoJGV2ZW50VGFyZ2V0KSB7CiAg
ICAgICAgICAgICAkaW1wbEluY2x1ZGVzeyJSZWdpc3RlcmVkRXZlbnRMaXN0ZW5lci5oIn0gPSAx
OwotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaW1wbCgpLT5pbnZhbGlkYXRl
SlNFdmVudExpc3RlbmVycyh0aGlzKTtcbiIpOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKCEk
ZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJFeHRlbmRzRE9NR2xvYmFsT2JqZWN0In0p
IHsKQEAgLTIwMzksNyArMjAzOCw3IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB9CiAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAg
ICAiIC4gR2V0TmF0aXZlVHlwZUZyb21TaWduYXR1cmUoJHBhcmFtZXRlcikgLiAiICRuYW1lID0g
IiAuIEpTVmFsdWVUb05hdGl2ZSgkcGFyYW1ldGVyLCAiZXhlYy0+YXJndW1lbnQoJGFyZ3NJbmRl
eCkiKSAuICI7XG4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIiAgICAiIC4gR2V0TmF0aXZlVHlwZUZyb21TaWduYXR1cmUoJHBhcmFtZXRlcikgLiAi
ICRuYW1lKCIgLiBKU1ZhbHVlVG9OYXRpdmUoJHBhcmFtZXRlciwgImV4ZWMtPmFyZ3VtZW50KCRh
cmdzSW5kZXgpIikgLiAiKTtcbiIpOwogCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBJ
ZiBhIHBhcmFtZXRlciBpcyAiYW4gaW5kZXgiIGFuZCBpdCdzIG5lZ2F0aXZlIGl0IHNob3VsZCB0
aHJvdyBhbiBJTkRFWF9TSVpFX0VSUiBleGNlcHRpb24uCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIyBCdXQgdGhpcyBuZWVkcyB0byBiZSBkb25lIGluIHRoZSBiaW5kaW5ncywgYmVjYXVz
ZSB0aGUgdHlwZSBpcyB1bnNpZ25lZCBhbmQgdGhlIGZhY3QgdGhhdCBpdApAQCAtMjQ5NCwxMiAr
MjQ5MywxMiBAQCBzdWIgSlNWYWx1ZVRvTmF0aXZlCiAgICAgfQogCiAgICAgaWYgKCR0eXBlIGVx
ICJET01PYmplY3QiKSB7Ci0gICAgICAgIHJldHVybiAiJHZhbHVlIjsKKyAgICAgICAgcmV0dXJu
ICJleGVjLT5nbG9iYWxEYXRhKCksICR2YWx1ZSI7CiAgICAgfQogCiAgICAgaWYgKCR0eXBlIGVx
ICJNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyIikgewogICAgICAgICAkaW1wbEluY2x1ZGVzeyJNZWRp
YVF1ZXJ5TGlzdExpc3RlbmVyLmgifSA9IDE7Ci0gICAgICAgIHJldHVybiAiTWVkaWFRdWVyeUxp
c3RMaXN0ZW5lcjo6Y3JlYXRlKCIgLiAkdmFsdWUgLiIpIjsKKyAgICAgICAgcmV0dXJuICJNZWRp
YVF1ZXJ5TGlzdExpc3RlbmVyOjpjcmVhdGUoU2NyaXB0VmFsdWUoZXhlYy0+Z2xvYmFsRGF0YSgp
LCAiIC4gJHZhbHVlIC4iKSkiOwogICAgIH0KIAogICAgIGlmICgkdHlwZSBlcSAiU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlIiBvciAkdHlwZSBlcSAiYW55IikgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYnJpZGdlL05QX2pzb2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9OUF9q
c29iamVjdC5jcHAKaW5kZXggMDc4MGFkNzBjZjI4ZWM3MzAwNjk1MDQ4NmM3MjhmNmEyYmY4MGE4
ZS4uMWFlZDUwNTJmZDlkNzNhNGU4ZGVlNzJmMDZlYzE4Njk3MzJlMWY1NCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYnJpZGdlL05QX2pzb2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9icmlkZ2UvTlBfanNvYmplY3QuY3BwCkBAIC0xODksMTAgKzE4OSwxMCBAQCBib29sIF9OUE5f
SW52b2tlRGVmYXVsdChOUFAsIE5QT2JqZWN0KiBvLCBjb25zdCBOUFZhcmlhbnQqIGFyZ3MsIHVp
bnQzMl90IGFyZ0NvdQogICAgICAgICAKICAgICAgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJn
TGlzdDsKICAgICAgICAgZ2V0TGlzdEZyb21WYXJpYW50QXJncyhleGVjLCBhcmdzLCBhcmdDb3Vu
dCwgcm9vdE9iamVjdCwgYXJnTGlzdCk7Ci0gICAgICAgIFByb3RlY3RlZFB0cjxKU0dsb2JhbE9i
amVjdD4gZ2xvYmFsT2JqZWN0ID0gcm9vdE9iamVjdC0+Z2xvYmFsT2JqZWN0KCk7Ci0gICAgICAg
IGdsb2JhbE9iamVjdC0+Z2xvYmFsRGF0YSgpLnRpbWVvdXRDaGVja2VyLnN0YXJ0KCk7CisgICAg
ICAgIFJlZlB0cjxKU0dsb2JhbERhdGE+IGdsb2JhbERhdGEoJmV4ZWMtPmdsb2JhbERhdGEoKSk7
CisgICAgICAgIGdsb2JhbERhdGEtPnRpbWVvdXRDaGVja2VyLnN0YXJ0KCk7CiAgICAgICAgIEpT
VmFsdWUgcmVzdWx0ViA9IEpTQzo6Y2FsbChleGVjLCBmdW5jdGlvbiwgY2FsbFR5cGUsIGNhbGxE
YXRhLCBmdW5jdGlvbiwgYXJnTGlzdCk7Ci0gICAgICAgIGdsb2JhbE9iamVjdC0+Z2xvYmFsRGF0
YSgpLnRpbWVvdXRDaGVja2VyLnN0b3AoKTsKKyAgICAgICAgZ2xvYmFsRGF0YS0+dGltZW91dENo
ZWNrZXIuc3RvcCgpOwogCiAgICAgICAgIC8vIENvbnZlcnQgYW5kIHJldHVybiB0aGUgcmVzdWx0
IG9mIHRoZSBmdW5jdGlvbiBjYWxsLgogICAgICAgICBjb252ZXJ0VmFsdWVUb05QVmFyaWFudChl
eGVjLCByZXN1bHRWLCByZXN1bHQpOwpAQCAtMjM5LDEwICsyMzksMTAgQEAgYm9vbCBfTlBOX0lu
dm9rZShOUFAgbnBwLCBOUE9iamVjdCogbywgTlBJZGVudGlmaWVyIG1ldGhvZE5hbWUsIGNvbnN0
IE5QVmFyaWFudCoKICAgICAgICAgLy8gQ2FsbCB0aGUgZnVuY3Rpb24gb2JqZWN0LgogICAgICAg
ICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmdMaXN0OwogICAgICAgICBnZXRMaXN0RnJvbVZhcmlh
bnRBcmdzKGV4ZWMsIGFyZ3MsIGFyZ0NvdW50LCByb290T2JqZWN0LCBhcmdMaXN0KTsKLSAgICAg
ICAgUHJvdGVjdGVkUHRyPEpTR2xvYmFsT2JqZWN0PiBnbG9iYWxPYmplY3QgPSByb290T2JqZWN0
LT5nbG9iYWxPYmplY3QoKTsKLSAgICAgICAgZ2xvYmFsT2JqZWN0LT5nbG9iYWxEYXRhKCkudGlt
ZW91dENoZWNrZXIuc3RhcnQoKTsKKyAgICAgICAgUmVmUHRyPEpTR2xvYmFsRGF0YT4gZ2xvYmFs
RGF0YSgmZXhlYy0+Z2xvYmFsRGF0YSgpKTsKKyAgICAgICAgZ2xvYmFsRGF0YS0+dGltZW91dENo
ZWNrZXIuc3RhcnQoKTsKICAgICAgICAgSlNWYWx1ZSByZXN1bHRWID0gSlNDOjpjYWxsKGV4ZWMs
IGZ1bmN0aW9uLCBjYWxsVHlwZSwgY2FsbERhdGEsIG9iai0+aW1wLCBhcmdMaXN0KTsKLSAgICAg
ICAgZ2xvYmFsT2JqZWN0LT5nbG9iYWxEYXRhKCkudGltZW91dENoZWNrZXIuc3RvcCgpOworICAg
ICAgICBnbG9iYWxEYXRhLT50aW1lb3V0Q2hlY2tlci5zdG9wKCk7CiAKICAgICAgICAgLy8gQ29u
dmVydCBhbmQgcmV0dXJuIHRoZSByZXN1bHQgb2YgdGhlIGZ1bmN0aW9uIGNhbGwuCiAgICAgICAg
IGNvbnZlcnRWYWx1ZVRvTlBWYXJpYW50KGV4ZWMsIHJlc3VsdFYsIHJlc3VsdCk7CkBAIC0yNzMs
MTAgKzI3MywxMCBAQCBib29sIF9OUE5fRXZhbHVhdGUoTlBQIGluc3RhbmNlLCBOUE9iamVjdCog
bywgTlBTdHJpbmcqIHMsIE5QVmFyaWFudCogdmFyaWFudCkKICAgICAgICAgRXhlY1N0YXRlKiBl
eGVjID0gcm9vdE9iamVjdC0+Z2xvYmFsT2JqZWN0KCktPmdsb2JhbEV4ZWMoKTsKICAgICAgICAg
SlNMb2NrIGxvY2soU2lsZW5jZUFzc2VydGlvbnNPbmx5KTsKICAgICAgICAgU3RyaW5nIHNjcmlw
dFN0cmluZyA9IGNvbnZlcnROUFN0cmluZ1RvVVRGMTYocyk7Ci0gICAgICAgIFByb3RlY3RlZFB0
cjxKU0dsb2JhbE9iamVjdD4gZ2xvYmFsT2JqZWN0ID0gcm9vdE9iamVjdC0+Z2xvYmFsT2JqZWN0
KCk7Ci0gICAgICAgIGdsb2JhbE9iamVjdC0+Z2xvYmFsRGF0YSgpLnRpbWVvdXRDaGVja2VyLnN0
YXJ0KCk7Ci0gICAgICAgIENvbXBsZXRpb24gY29tcGxldGlvbiA9IEpTQzo6ZXZhbHVhdGUoZ2xv
YmFsT2JqZWN0LT5nbG9iYWxFeGVjKCksIGdsb2JhbE9iamVjdC0+Z2xvYmFsU2NvcGVDaGFpbigp
LCBtYWtlU291cmNlKHNjcmlwdFN0cmluZyksIEpTQzo6SlNWYWx1ZSgpKTsKLSAgICAgICAgZ2xv
YmFsT2JqZWN0LT5nbG9iYWxEYXRhKCkudGltZW91dENoZWNrZXIuc3RvcCgpOworICAgICAgICBS
ZWZQdHI8SlNHbG9iYWxEYXRhPiBnbG9iYWxEYXRhKCZleGVjLT5nbG9iYWxEYXRhKCkpOworICAg
ICAgICBnbG9iYWxEYXRhLT50aW1lb3V0Q2hlY2tlci5zdGFydCgpOworICAgICAgICBDb21wbGV0
aW9uIGNvbXBsZXRpb24gPSBKU0M6OmV2YWx1YXRlKHJvb3RPYmplY3QtPmdsb2JhbE9iamVjdCgp
LT5nbG9iYWxFeGVjKCksIHJvb3RPYmplY3QtPmdsb2JhbE9iamVjdCgpLT5nbG9iYWxTY29wZUNo
YWluKCksIG1ha2VTb3VyY2Uoc2NyaXB0U3RyaW5nKSwgSlNDOjpKU1ZhbHVlKCkpOworICAgICAg
ICBnbG9iYWxEYXRhLT50aW1lb3V0Q2hlY2tlci5zdG9wKCk7CiAgICAgICAgIENvbXBsVHlwZSB0
eXBlID0gY29tcGxldGlvbi5jb21wbFR5cGUoKTsKICAgICAgICAgCiAgICAgICAgIEpTVmFsdWUg
cmVzdWx0OwpAQCAtNTEzLDEwICs1MTMsMTAgQEAgYm9vbCBfTlBOX0NvbnN0cnVjdChOUFAsIE5Q
T2JqZWN0KiBvLCBjb25zdCBOUFZhcmlhbnQqIGFyZ3MsIHVpbnQzMl90IGFyZ0NvdW50LAogICAg
ICAgICAKICAgICAgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJnTGlzdDsKICAgICAgICAgZ2V0
TGlzdEZyb21WYXJpYW50QXJncyhleGVjLCBhcmdzLCBhcmdDb3VudCwgcm9vdE9iamVjdCwgYXJn
TGlzdCk7Ci0gICAgICAgIFByb3RlY3RlZFB0cjxKU0dsb2JhbE9iamVjdD4gZ2xvYmFsT2JqZWN0
ID0gcm9vdE9iamVjdC0+Z2xvYmFsT2JqZWN0KCk7Ci0gICAgICAgIGdsb2JhbE9iamVjdC0+Z2xv
YmFsRGF0YSgpLnRpbWVvdXRDaGVja2VyLnN0YXJ0KCk7CisgICAgICAgIFJlZlB0cjxKU0dsb2Jh
bERhdGE+IGdsb2JhbERhdGEoJmV4ZWMtPmdsb2JhbERhdGEoKSk7CisgICAgICAgIGdsb2JhbERh
dGEtPnRpbWVvdXRDaGVja2VyLnN0YXJ0KCk7CiAgICAgICAgIEpTVmFsdWUgcmVzdWx0ViA9IEpT
Qzo6Y29uc3RydWN0KGV4ZWMsIGNvbnN0cnVjdG9yLCBjb25zdHJ1Y3RUeXBlLCBjb25zdHJ1Y3RE
YXRhLCBhcmdMaXN0KTsKLSAgICAgICAgZ2xvYmFsT2JqZWN0LT5nbG9iYWxEYXRhKCkudGltZW91
dENoZWNrZXIuc3RvcCgpOworICAgICAgICBnbG9iYWxEYXRhLT50aW1lb3V0Q2hlY2tlci5zdG9w
KCk7CiAgICAgICAgIAogICAgICAgICAvLyBDb252ZXJ0IGFuZCByZXR1cm4gdGhlIHJlc3VsdC4K
ICAgICAgICAgY29udmVydFZhbHVlVG9OUFZhcmlhbnQoZXhlYywgcmVzdWx0ViwgcmVzdWx0KTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9qc2MvQnJpZGdlSlNDLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JyaWRnZS9qc2MvQnJpZGdlSlNDLmNwcAppbmRleCAyNzQ3Yzc1MWYyZDY1
ZTUzNTY2ZWM5ZmM2Njg2YjgzNWYzMGI5YjFkLi44YmM0NTNiYzRhMDkzYmFiMzdjMmUzM2FiZGY3
OThiOWUzYzkyNDhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvanNjL0JyaWRn
ZUpTQy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL2pzYy9CcmlkZ2VKU0MuY3BwCkBA
IC0yNywxMCArMjcsMTMgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJCcmlkZ2VK
U0MuaCIKIAorI2luY2x1ZGUgIkpTRE9NV2luZG93QmFzZS5oIgorCiAjaW5jbHVkZSAicnVudGlt
ZV9vYmplY3QuaCIKICNpbmNsdWRlICJydW50aW1lX3Jvb3QuaCIKICNpbmNsdWRlIDxydW50aW1l
L0pTTG9jay5oPgogCisKICNpZiBQTEFURk9STShRVCkKICNpbmNsdWRlICJxdF9pbnN0YW5jZS5o
IgogI2VuZGlmCkBAIC01MSw2ICs1NCw3IEBAIEFycmF5Ojp+QXJyYXkoKQogCiBJbnN0YW5jZTo6
SW5zdGFuY2UoUGFzc1JlZlB0cjxSb290T2JqZWN0PiByb290T2JqZWN0KQogICAgIDogbV9yb290
T2JqZWN0KHJvb3RPYmplY3QpCisgICAgLCBtX3J1bnRpbWVPYmplY3QoKldlYkNvcmU6OkpTRE9N
V2luZG93QmFzZTo6Y29tbW9uSlNHbG9iYWxEYXRhKCkpCiB7CiAgICAgQVNTRVJUKG1fcm9vdE9i
amVjdCk7CiB9CkBAIC01OCw3ICs2Miw2IEBAIEluc3RhbmNlOjpJbnN0YW5jZShQYXNzUmVmUHRy
PFJvb3RPYmplY3Q+IHJvb3RPYmplY3QpCiBJbnN0YW5jZTo6fkluc3RhbmNlKCkKIHsKICAgICBB
U1NFUlQoIW1fcnVudGltZU9iamVjdCk7Ci0gICAgQVNTRVJUKCFtX3J1bnRpbWVPYmplY3QuaGFz
RGVhZE9iamVjdCgpKTsKIH0KIAogc3RhdGljIEtKU0RpZEV4ZWN1dGVGdW5jdGlvblB0ciBzX2Rp
ZEV4ZWN1dGVGdW5jdGlvbjsKQEAgLTkyLDcgKzk1LDcgQEAgSlNPYmplY3QqIEluc3RhbmNlOjpj
cmVhdGVSdW50aW1lT2JqZWN0KEV4ZWNTdGF0ZSogZXhlYykKIAogICAgIEpTTG9jayBsb2NrKFNp
bGVuY2VBc3NlcnRpb25zT25seSk7CiAgICAgUnVudGltZU9iamVjdCogbmV3T2JqZWN0ID0gbmV3
UnVudGltZU9iamVjdChleGVjKTsKLSAgICBtX3J1bnRpbWVPYmplY3QgPSBuZXdPYmplY3Q7Cisg
ICAgbV9ydW50aW1lT2JqZWN0LnNldChleGVjLT5nbG9iYWxEYXRhKCksIG5ld09iamVjdCwgMCk7
CiAgICAgbV9yb290T2JqZWN0LT5hZGRSdW50aW1lT2JqZWN0KG5ld09iamVjdCk7CiAgICAgcmV0
dXJuIG5ld09iamVjdDsKIH0KQEAgLTEwNywxMyArMTEwLDExIEBAIHZvaWQgSW5zdGFuY2U6Ondp
bGxEZXN0cm95UnVudGltZU9iamVjdChSdW50aW1lT2JqZWN0KiBvYmplY3QpCiB7CiAgICAgQVNT
RVJUKG1fcm9vdE9iamVjdCk7CiAgICAgbV9yb290T2JqZWN0LT5yZW1vdmVSdW50aW1lT2JqZWN0
KG9iamVjdCk7Ci0gICAgbV9ydW50aW1lT2JqZWN0LmNsZWFyKG9iamVjdCk7CiB9CiAKLXZvaWQg
SW5zdGFuY2U6OndpbGxJbnZhbGlkYXRlUnVudGltZU9iamVjdChSdW50aW1lT2JqZWN0KiBvYmpl
Y3QpCit2b2lkIEluc3RhbmNlOjp3aWxsSW52YWxpZGF0ZVJ1bnRpbWVPYmplY3QoKQogewotICAg
IEFTU0VSVChvYmplY3QpOwotICAgIG1fcnVudGltZU9iamVjdC5jbGVhcihvYmplY3QpOworICAg
IG1fcnVudGltZU9iamVjdC5jbGVhcigpOwogfQogCiBSb290T2JqZWN0KiBJbnN0YW5jZTo6cm9v
dE9iamVjdCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvanNjL0Jy
aWRnZUpTQy5oIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL2pzYy9CcmlkZ2VKU0MuaAppbmRleCBl
YmNmYWFkMzBmNzBhOTZlNDc0OGQ3OGQ3ZDVlMzAzYTBiMjBiYmI0Li5kZjgyNTk1M2QwODMwZDIw
ZjJjYTM5MDkyOTdkY2Q5MjM1ZjE2MTRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlk
Z2UvanNjL0JyaWRnZUpTQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9qc2MvQnJpZGdl
SlNDLmgKQEAgLTg3LDcgKzg3LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBDbGFzcyogZ2V0
Q2xhc3MoKSBjb25zdCA9IDA7CiAgICAgSlNPYmplY3QqIGNyZWF0ZVJ1bnRpbWVPYmplY3QoRXhl
Y1N0YXRlKik7Ci0gICAgdm9pZCB3aWxsSW52YWxpZGF0ZVJ1bnRpbWVPYmplY3QoUnVudGltZU9i
amVjdCopOworICAgIHZvaWQgd2lsbEludmFsaWRhdGVSdW50aW1lT2JqZWN0KCk7CiAgICAgdm9p
ZCB3aWxsRGVzdHJveVJ1bnRpbWVPYmplY3QoUnVudGltZU9iamVjdCopOwogCiAgICAgLy8gUmV0
dXJucyBmYWxzZSBpZiB0aGUgdmFsdWUgd2FzIG5vdCBzZXQgc3VjY2Vzc2Z1bGx5LgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3F0L3F0X3J1bnRpbWUuY3BwIGIvU291cmNlL1dl
YkNvcmUvYnJpZGdlL3F0L3F0X3J1bnRpbWUuY3BwCmluZGV4IDU1MDdmYzk0ZmJhZjJhMjQ0NThk
Mzc5OWI2MWQzODI5M2EwN2ZkMjAuLjk3YzBhMTA3YjBkY2ZkMGFjMGYxYTM5YjEwZTJkZGVkY2Ux
NTQwNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9xdC9xdF9ydW50aW1lLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcXQvcXRfcnVudGltZS5jcHAKQEAgLTE2Mjks
NyArMTYyOSw3IEBAIEVuY29kZWRKU1ZhbHVlIFF0UnVudGltZUNvbm5lY3Rpb25NZXRob2Q6OmNh
bGwoRXhlY1N0YXRlKiBleGVjKQogICAgICAgICAgICAgICAgIC8vICByZWNlaXZlciBmdW5jdGlv
biBbZnJvbSBhcmd1bWVudHNdCiAgICAgICAgICAgICAgICAgLy8gIHJlY2VpdmVyIHRoaXMgb2Jq
ZWN0IFtmcm9tIGFyZ3VtZW50c10KIAotICAgICAgICAgICAgICAgIFF0Q29ubmVjdGlvbk9iamVj
dCogY29ubiA9IG5ldyBRdENvbm5lY3Rpb25PYmplY3QoZC0+bV9pbnN0YW5jZSwgc2lnbmFsSW5k
ZXgsIHRoaXNPYmplY3QsIGZ1bmNPYmplY3QpOworICAgICAgICAgICAgICAgIFF0Q29ubmVjdGlv
bk9iamVjdCogY29ubiA9IG5ldyBRdENvbm5lY3Rpb25PYmplY3QoZXhlYy0+Z2xvYmFsRGF0YSgp
LCBkLT5tX2luc3RhbmNlLCBzaWduYWxJbmRleCwgdGhpc09iamVjdCwgZnVuY09iamVjdCk7CiAg
ICAgICAgICAgICAgICAgYm9vbCBvayA9IFFNZXRhT2JqZWN0Ojpjb25uZWN0KHNlbmRlciwgc2ln
bmFsSW5kZXgsIGNvbm4sIGNvbm4tPm1ldGFPYmplY3QoKS0+bWV0aG9kT2Zmc2V0KCkpOwogICAg
ICAgICAgICAgICAgIGlmICghb2spIHsKICAgICAgICAgICAgICAgICAgICAgZGVsZXRlIGNvbm47
CkBAIC0xNzIzLDEyICsxNzIzLDEyIEBAIEpTVmFsdWUgUXRSdW50aW1lQ29ubmVjdGlvbk1ldGhv
ZDo6bGVuZ3RoR2V0dGVyKEV4ZWNTdGF0ZSosIEpTVmFsdWUsIGNvbnN0IElkZW50CiAKIC8vID09
PT09PT09PT09PT09PQogCi1RdENvbm5lY3Rpb25PYmplY3Q6OlF0Q29ubmVjdGlvbk9iamVjdChQ
YXNzUmVmUHRyPFF0SW5zdGFuY2U+IGluc3RhbmNlLCBpbnQgc2lnbmFsSW5kZXgsIEpTT2JqZWN0
KiB0aGlzT2JqZWN0LCBKU09iamVjdCogZnVuY09iamVjdCkKK1F0Q29ubmVjdGlvbk9iamVjdDo6
UXRDb25uZWN0aW9uT2JqZWN0KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgUGFzc1JlZlB0cjxR
dEluc3RhbmNlPiBpbnN0YW5jZSwgaW50IHNpZ25hbEluZGV4LCBKU09iamVjdCogdGhpc09iamVj
dCwgSlNPYmplY3QqIGZ1bmNPYmplY3QpCiAgICAgOiBtX2luc3RhbmNlKGluc3RhbmNlKQogICAg
ICwgbV9zaWduYWxJbmRleChzaWduYWxJbmRleCkKICAgICAsIG1fb3JpZ2luYWxPYmplY3QobV9p
bnN0YW5jZS0+Z2V0T2JqZWN0KCkpCi0gICAgLCBtX3RoaXNPYmplY3QodGhpc09iamVjdCkKLSAg
ICAsIG1fZnVuY09iamVjdChmdW5jT2JqZWN0KQorICAgICwgbV90aGlzT2JqZWN0KGdsb2JhbERh
dGEsIHRoaXNPYmplY3QpCisgICAgLCBtX2Z1bmNPYmplY3QoZ2xvYmFsRGF0YSwgZnVuY09iamVj
dCkKIHsKICAgICBzZXRQYXJlbnQobV9vcmlnaW5hbE9iamVjdCk7CiAgICAgQVNTRVJUKEpTTG9j
azo6Y3VycmVudFRocmVhZElzSG9sZGluZ0xvY2soKSk7IC8vIHNvIG91ciBQcm90ZWN0ZWRQdHJz
IGFyZSBzYWZlCkBAIC0xODQzLDcgKzE4NDMsNyBAQCB2b2lkIFF0Q29ubmVjdGlvbk9iamVjdDo6
ZXhlY3V0ZSh2b2lkICoqYXJndikKIAogICAgICAgICAgICAgICAgICAgICBDYWxsRGF0YSBjYWxs
RGF0YTsKICAgICAgICAgICAgICAgICAgICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBtX2Z1bmNPYmpl
Y3QtPmdldENhbGxEYXRhKGNhbGxEYXRhKTsKLSAgICAgICAgICAgICAgICAgICAgY2FsbChleGVj
LCBtX2Z1bmNPYmplY3QsIGNhbGxUeXBlLCBjYWxsRGF0YSwgbV90aGlzT2JqZWN0LCBsKTsKKyAg
ICAgICAgICAgICAgICAgICAgY2FsbChleGVjLCBtX2Z1bmNPYmplY3QuZ2V0KCksIGNhbGxUeXBl
LCBjYWxsRGF0YSwgbV90aGlzT2JqZWN0LCBsKTsKIAogICAgICAgICAgICAgICAgICAgICBpZiAo
ZmltcCkKICAgICAgICAgICAgICAgICAgICAgICAgIGZpbXAtPnNldFNjb3BlKG9sZHNjKTsKQEAg
LTE4NTksNyArMTg1OSw3IEBAIHZvaWQgUXRDb25uZWN0aW9uT2JqZWN0OjpleGVjdXRlKHZvaWQg
Kiphcmd2KQogYm9vbCBRdENvbm5lY3Rpb25PYmplY3Q6Om1hdGNoKFFPYmplY3QqIHNlbmRlciwg
aW50IHNpZ25hbEluZGV4LCBKU09iamVjdCogdGhpc09iamVjdCwgSlNPYmplY3QgKmZ1bmNPYmpl
Y3QpCiB7CiAgICAgaWYgKG1fb3JpZ2luYWxPYmplY3QgPT0gc2VuZGVyICYmIG1fc2lnbmFsSW5k
ZXggPT0gc2lnbmFsSW5kZXgKLSAgICAgICAgJiYgdGhpc09iamVjdCA9PSAoSlNPYmplY3QqKW1f
dGhpc09iamVjdCAmJiBmdW5jT2JqZWN0ID09IChKU09iamVjdCopbV9mdW5jT2JqZWN0KQorICAg
ICAgICAmJiB0aGlzT2JqZWN0ID09IChKU09iamVjdCopbV90aGlzT2JqZWN0LmdldCgpICYmIGZ1
bmNPYmplY3QgPT0gKEpTT2JqZWN0KiltX2Z1bmNPYmplY3QuZ2V0KCkpCiAgICAgICAgIHJldHVy
biB0cnVlOwogICAgIHJldHVybiBmYWxzZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JyaWRnZS9ydW50aW1lX29iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGlt
ZV9vYmplY3QuY3BwCmluZGV4IDM2OGY3YjA4MzcxODhkNWYxNDBmMjgwZTBlZjU3NmY4ZWE2MWE5
ZjYuLmVjYmEyODgzNTk0NTUwZTEyYzVmMzI1Njk0ZmEyNzI3MTIyYjQwYTAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX29iamVjdC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYnJpZGdlL3J1bnRpbWVfb2JqZWN0LmNwcApAQCAtNjIsNyArNjIsNyBAQCB2b2lkIFJ1
bnRpbWVPYmplY3Q6OmludmFsaWRhdGUoKQogewogICAgIEFTU0VSVChtX2luc3RhbmNlKTsKICAg
ICBpZiAobV9pbnN0YW5jZSkKLSAgICAgICAgbV9pbnN0YW5jZS0+d2lsbEludmFsaWRhdGVSdW50
aW1lT2JqZWN0KHRoaXMpOworICAgICAgICBtX2luc3RhbmNlLT53aWxsSW52YWxpZGF0ZVJ1bnRp
bWVPYmplY3QoKTsKICAgICBtX2luc3RhbmNlID0gMDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfcm9vdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uv
cnVudGltZV9yb290LmNwcAppbmRleCA5OTJiMzQzMGY4YjE2MDYwZmE5NTNlY2QyOGJmMTQwMjAz
MWVlNWQ3Li43MDJiYzA5YTIzYjFkYjdhOTZjYTMyY2IyOThhY2JhZDhlZjQ2OTEwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9yb290LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9icmlkZ2UvcnVudGltZV9yb290LmNwcApAQCAtODMsNyArODMsNyBAQCBQYXNzUmVm
UHRyPFJvb3RPYmplY3Q+IFJvb3RPYmplY3Q6OmNyZWF0ZShjb25zdCB2b2lkKiBuYXRpdmVIYW5k
bGUsIEpTR2xvYmFsT2JqZQogUm9vdE9iamVjdDo6Um9vdE9iamVjdChjb25zdCB2b2lkKiBuYXRp
dmVIYW5kbGUsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAgICAgOiBtX2lzVmFsaWQo
dHJ1ZSkKICAgICAsIG1fbmF0aXZlSGFuZGxlKG5hdGl2ZUhhbmRsZSkKLSAgICAsIG1fZ2xvYmFs
T2JqZWN0KGdsb2JhbE9iamVjdCkKKyAgICAsIG1fZ2xvYmFsT2JqZWN0KGdsb2JhbE9iamVjdC0+
Z2xvYmFsRGF0YSgpLCBnbG9iYWxPYmplY3QpCiB7CiAgICAgQVNTRVJUKGdsb2JhbE9iamVjdCk7
CiAgICAgcm9vdE9iamVjdFNldCgpLT5hZGQodGhpcyk7CkBAIC0xMTMsNyArMTEzLDcgQEAgdm9p
ZCBSb290T2JqZWN0OjppbnZhbGlkYXRlKCkKICAgICBtX2lzVmFsaWQgPSBmYWxzZTsKIAogICAg
IG1fbmF0aXZlSGFuZGxlID0gMDsKLSAgICBtX2dsb2JhbE9iamVjdCA9IDA7CisgICAgbV9nbG9i
YWxPYmplY3QuY2xlYXIoKTsKIAogICAgIHsKICAgICAgICAgSGFzaFNldDxJbnZhbGlkYXRpb25D
YWxsYmFjayo+OjppdGVyYXRvciBlbmQgPSBtX2ludmFsaWRhdGlvbkNhbGxiYWNrcy5lbmQoKTsK
QEAgLTE2NywxMiArMTY3LDEyIEBAIGNvbnN0IHZvaWQqIFJvb3RPYmplY3Q6Om5hdGl2ZUhhbmRs
ZSgpIGNvbnN0CiBKU0dsb2JhbE9iamVjdCogUm9vdE9iamVjdDo6Z2xvYmFsT2JqZWN0KCkgY29u
c3QKIHsKICAgICBBU1NFUlQobV9pc1ZhbGlkKTsKLSAgICByZXR1cm4gbV9nbG9iYWxPYmplY3Q7
CisgICAgcmV0dXJuIG1fZ2xvYmFsT2JqZWN0LmdldCgpOwogfQogCiB2b2lkIFJvb3RPYmplY3Q6
OnVwZGF0ZUdsb2JhbE9iamVjdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogewotICAg
IG1fZ2xvYmFsT2JqZWN0ID0gZ2xvYmFsT2JqZWN0OworICAgIG1fZ2xvYmFsT2JqZWN0LnNldChn
bG9iYWxPYmplY3QtPmdsb2JhbERhdGEoKSwgZ2xvYmFsT2JqZWN0KTsKIH0KIAogdm9pZCBSb290
T2JqZWN0OjphZGRSdW50aW1lT2JqZWN0KFJ1bnRpbWVPYmplY3QqIG9iamVjdCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX3Jvb3QuaCBiL1NvdXJjZS9XZWJDb3Jl
L2JyaWRnZS9ydW50aW1lX3Jvb3QuaAppbmRleCBkZGU4YTQ4MDg1NDlhMDFkYzUzMTMwYmMzZTlj
MjJjNWU2NDg4MzYyLi5mYzAxYTA5ZmQxM2U4MjRhOWVhYjg0NjUzZTc3OTI2NWQwNjBhZGYyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9yb290LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfcm9vdC5oCkBAIC0yOSw3ICsyOSw3IEBACiAjaWYg
UExBVEZPUk0oTUFDKQogI2luY2x1ZGUgImpuaV9qc29iamVjdC5oIgogI2VuZGlmCi0jaW5jbHVk
ZSA8cnVudGltZS9Qcm90ZWN0Lmg+CisjaW5jbHVkZSA8Y29sbGVjdG9yL2hhbmRsZXMvR2xvYmFs
Lmg+CiAKICNpbmNsdWRlIDxydW50aW1lL1dlYWtHQ01hcC5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3
YXJkLmg+CkBAIC04Niw3ICs4Niw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2lzVmFsaWQ7CiAg
ICAgCiAgICAgY29uc3Qgdm9pZCogbV9uYXRpdmVIYW5kbGU7Ci0gICAgUHJvdGVjdGVkUHRyPEpT
R2xvYmFsT2JqZWN0PiBtX2dsb2JhbE9iamVjdDsKKyAgICBHbG9iYWw8SlNHbG9iYWxPYmplY3Q+
IG1fZ2xvYmFsT2JqZWN0OwogCiAgICAgUHJvdGVjdENvdW50U2V0IG1fcHJvdGVjdENvdW50U2V0
OwogICAgIFdlYWtHQ01hcDxSdW50aW1lT2JqZWN0KiwgUnVudGltZU9iamVjdD4gbV9ydW50aW1l
T2JqZWN0czsgLy8gUmVhbGx5IG5lZWQgYSBXZWFrR0NTZXQsIGJ1dCB0aGlzIHdpbGwgZG8uCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRMaXN0ZW5lci5oIGIvU291cmNlL1dl
YkNvcmUvZG9tL0V2ZW50TGlzdGVuZXIuaAppbmRleCA5NmQwYmViZDRhNDgxNTRhMzhlMmU5OGVh
ZjZhN2ViNmQxNGRlZGJkLi4zNDg3MDRmY2M4NTJmMmUwNGFjZDQ5MDY0MWRkNTcyZDNmYTBkNDY4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRMaXN0ZW5lci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9FdmVudExpc3RlbmVyLmgKQEAgLTU0LDcgKzU0LDYgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogCiAjaWYgVVNFKEpTQykKICAgICAgICAgdmlydHVhbCB2b2lkIG1hcmtK
U0Z1bmN0aW9uKEpTQzo6TWFya1N0YWNrJikgeyB9Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBpbnZh
bGlkYXRlSlNGdW5jdGlvbihKU0M6OkpTT2JqZWN0KikgeyB9CiAjZW5kaWYKIAogICAgICAgICBi
b29sIGlzQXR0cmlidXRlKCkgY29uc3QgeyByZXR1cm4gdmlydHVhbGlzQXR0cmlidXRlKCk7IH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5oIGIvU291cmNlL1dl
YkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmgKaW5kZXggYTAzODAxYmNiZDUwMGU0ZGJjZTg5NTFjZDQ3
NmI0ZDNkNzA4YThiMy4uZjE4OGMwZWQ3OTBlM2Y4ZDk2MjE1NDY5YzlkNGMzYjEwMTBjYTNjNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmgKQEAgLTIzMSwyMCArMjMxLDYgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgICAgICAgICAgICAgIGVudHJ5W2ldLmxpc3RlbmVyLT5tYXJrSlNGdW5j
dGlvbihtYXJrU3RhY2spOwogICAgICAgICB9CiAgICAgfQotCi0gICAgaW5saW5lIHZvaWQgRXZl
bnRUYXJnZXQ6OmludmFsaWRhdGVKU0V2ZW50TGlzdGVuZXJzKEpTQzo6SlNPYmplY3QqIHdyYXBw
ZXIpCi0gICAgewotICAgICAgICBFdmVudFRhcmdldERhdGEqIGQgPSBldmVudFRhcmdldERhdGEo
KTsKLSAgICAgICAgaWYgKCFkKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIEV2ZW50
TGlzdGVuZXJNYXA6Oml0ZXJhdG9yIGVuZCA9IGQtPmV2ZW50TGlzdGVuZXJNYXAuZW5kKCk7Ci0g
ICAgICAgIGZvciAoRXZlbnRMaXN0ZW5lck1hcDo6aXRlcmF0b3IgaXQgPSBkLT5ldmVudExpc3Rl
bmVyTWFwLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAgICAgICAgRXZlbnRMaXN0
ZW5lclZlY3RvciYgZW50cnkgPSAqaXQtPnNlY29uZDsKLSAgICAgICAgICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgZW50cnkuc2l6ZSgpOyArK2kpCi0gICAgICAgICAgICAgICAgZW50cnlbaV0u
bGlzdGVuZXItPmludmFsaWRhdGVKU0Z1bmN0aW9uKHdyYXBwZXIpOwotICAgICAgICB9Ci0gICAg
fQogI2VuZGlmCiAKICAgICBpbmxpbmUgYm9vbCBFdmVudFRhcmdldDo6aXNGaXJpbmdFdmVudExp
c3RlbmVycygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3Qu
Y3BwIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAppbmRleCBhNTQ4ZWJj
MzRhZDc5MjM3N2RjNzIwZTAyMWRiNTI3M2MwNjk2NTAxLi5mMDNlM2E0YzJlNTExYTRlMjkwNzdl
MmFmOGY5NWVjODIxYWNiZTVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0
cFJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAK
QEAgLTU2LDggKzU2LDggQEAKICNpZiBVU0UoSlNDKQogI2luY2x1ZGUgIkpTRE9NQmluZGluZy5o
IgogI2luY2x1ZGUgIkpTRE9NV2luZG93LmgiCisjaW5jbHVkZSA8Y29sbGVjdG9yL2hhbmRsZXMv
R2xvYmFsLmg+CiAjaW5jbHVkZSA8cnVudGltZS9KU0xvY2suaD4KLSNpbmNsdWRlIDxydW50aW1l
L1Byb3RlY3QuaD4KICNlbmRpZgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cK
aW5kZXggNGEzYzc0ZmU4MDAxZDEwODhjMzBjOTYwM2VlNjlhYzU5NzUyMmM2ZC4uMmRkYWU2ODg0
YWMwMDIzMDNlYmIxMDliYmM3YWIyMzIxZmNjYzFmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDMxIEBACisyMDExLTAyLTE0ICBPbGl2ZXIgSHVudCAgPG9saXZlckBhcHBsZS5jb20+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVmYWN0b3Ig
aGFuZGxlcyBhbmQgd2VhayBwb2ludGVycyB0byBiZWNvbWUgbmljZXIgYW5kIG1vcmUgYXV0b21h
dGljCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NDQx
NQorCisgICAgICAgIFVwZGF0ZSB0byB1c2UgR2xvYmFsPD4gaW5zdGVhZCBvZiBQcm90ZWN0ZWRQ
dHIsIGFuZCByZWZhY3RvcmVkIHNsaWdodGx5CisgICAgICAgIHRvIGdldCBnbG9iYWwgZGF0YSB0
byBwbGFjZXMgaXQncyBuZWVkZWQgZm9yIHdoZW4gd2UncmUgYXNzaWduaW5nIHRvCisgICAgICAg
IEdsb2JhbDw+cworCisgICAgICAgICogRm9yd2FyZGluZ0hlYWRlcnMvY29sbGVjdG9yL2hhbmRs
ZXMvR2xvYmFsLmg6IEFkZGVkLgorICAgICAgICAqIFBsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1
Z2luSW5zdGFuY2VQcm94eS5oOgorICAgICAgICAqIFBsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1
Z2luSW5zdGFuY2VQcm94eS5tbToKKyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW5JbnN0
YW5jZVByb3h5OjpMb2NhbE9iamVjdE1hcDo6Z2V0KToKKyAgICAgICAgKFdlYktpdDo6TmV0c2Nh
cGVQbHVnaW5JbnN0YW5jZVByb3h5OjpMb2NhbE9iamVjdE1hcDo6aWRGb3JPYmplY3QpOgorICAg
ICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHk6OkxvY2FsT2JqZWN0TWFw
Ojpmb3JnZXQpOgorICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHk6
OmdldFdpbmRvd05QT2JqZWN0KToKKyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW5JbnN0
YW5jZVByb3h5OjpnZXRQbHVnaW5FbGVtZW50TlBPYmplY3QpOgorICAgICAgICAoV2ViS2l0OjpO
ZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHk6OmV2YWx1YXRlKToKKyAgICAgICAgKFdlYktpdDo6
TmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5OjppbnZva2UpOgorICAgICAgICAoV2ViS2l0OjpO
ZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHk6Omludm9rZURlZmF1bHQpOgorICAgICAgICAoV2Vi
S2l0OjpOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHk6OmNvbnN0cnVjdCk6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eTo6YWRkVmFsdWVUb0FycmF5KToKKyAg
ICAgICAgKiBXZWJWaWV3L1dlYlNjcmlwdERlYnVnZ2VyLmg6CisgICAgICAgICogV2ViVmlldy9X
ZWJTY3JpcHREZWJ1Z2dlci5tbToKKyAgICAgICAgKFdlYlNjcmlwdERlYnVnZ2VyOjpXZWJTY3Jp
cHREZWJ1Z2dlcik6CisKIDIwMTEtMDItMTEgIEdlb2ZmcmV5IEdhcmVuICA8Z2dhcmVuQGFwcGxl
LmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBPbGl2ZXIgSHVudC4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvbWFjL0ZvcndhcmRpbmdIZWFkZXJzL2NvbGxlY3Rvci9oYW5kbGVzL0dsb2Jh
bC5oIGIvU291cmNlL1dlYktpdC9tYWMvRm9yd2FyZGluZ0hlYWRlcnMvY29sbGVjdG9yL2hhbmRs
ZXMvR2xvYmFsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDIwNjVhZDI0MTVmMGI4ZTVlNTgxNzA1MDkwN2U4YTc2
MWIyNDFlYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL0ZvcndhcmRpbmdI
ZWFkZXJzL2NvbGxlY3Rvci9oYW5kbGVzL0dsb2JhbC5oCkBAIC0wLDAgKzEgQEAKKyNpbXBvcnQg
PEphdmFTY3JpcHRDb3JlL0dsb2JhbC5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMv
UGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5LmggYi9Tb3VyY2UvV2Vi
S2l0L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkuaAppbmRl
eCA0ZjJjNTY2YTc3YTIxNDE1YmIyZGRjMjRmYjQ5MjdmODFiMzk1NzVmLi43ODI4NDYwZjRhMTlm
YTU5NDBmN2NjY2Q4OTQ4YmY2NGZkODg2NTE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21h
Yy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHku
aApAQCAtMjgsNyArMjgsNyBAQAogI2lmbmRlZiBOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHlf
aAogI2RlZmluZSBOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHlfaAogCi0jaW5jbHVkZSA8SmF2
YVNjcmlwdENvcmUvUHJvdGVjdC5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0dsb2JhbC5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvVGltZXIuaD4KICNpbmNsdWRlIDxXZWJLaXQvbnBhcGkuaD4K
ICNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KQEAgLTMxOCw3ICszMTgsNyBAQCBwcml2YXRlOgogICAg
IHB1YmxpYzoKICAgICAgICAgTG9jYWxPYmplY3RNYXAoKTsKICAgICAgICAgfkxvY2FsT2JqZWN0
TWFwKCk7Ci0gICAgICAgIHVpbnQzMl90IGlkRm9yT2JqZWN0KEpTQzo6SlNPYmplY3QqKTsKKyAg
ICAgICAgdWludDMyX3QgaWRGb3JPYmplY3QoSlNDOjpKU0dsb2JhbERhdGEmLCBKU0M6OkpTT2Jq
ZWN0Kik7CiAgICAgICAgIHZvaWQgcmV0YWluKEpTQzo6SlNPYmplY3QqKTsKICAgICAgICAgdm9p
ZCByZWxlYXNlKEpTQzo6SlNPYmplY3QqKTsKICAgICAgICAgdm9pZCBjbGVhcigpOwpAQCAtMzI3
LDcgKzMyNyw3IEBAIHByaXZhdGU6CiAgICAgICAgIEpTQzo6SlNPYmplY3QqIGdldCh1aW50MzJf
dCkgY29uc3Q7CiAKICAgICBwcml2YXRlOgotICAgICAgICBIYXNoTWFwPHVpbnQzMl90LCBKU0M6
OlByb3RlY3RlZFB0cjxKU0M6OkpTT2JqZWN0PiA+IG1faWRUb0pTT2JqZWN0TWFwOworICAgICAg
ICBIYXNoTWFwPHVpbnQzMl90LCBKU0M6Okdsb2JhbDxKU0M6OkpTT2JqZWN0PiA+IG1faWRUb0pT
T2JqZWN0TWFwOwogICAgICAgICAvLyBUaGUgcGFpciBjb25zaXN0cyBvZiBvYmplY3QgSUQgYW5k
IGEgcmVmZXJlbmNlIGNvdW50LiBPbmUgcmVmZXJlbmNlIGJlbG9uZ3MgdG8gcmVtb3RlIHBsdWct
aW4sCiAgICAgICAgIC8vIGFuZCB0aGUgcHJveHkgd2lsbCBhZGQgdHJhbnNpZW50IHJlZmVyZW5j
ZXMgZm9yIGFyZ3VtZW50cyB0aGF0IGFyZSBiZWluZyBzZW50IG91dC4KICAgICAgICAgSGFzaE1h
cDxKU0M6OkpTT2JqZWN0KiwgcGFpcjx1aW50MzJfdCwgdWludDMyX3Q+ID4gbV9qc09iamVjdFRv
SURNYXA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRz
Y2FwZVBsdWdpbkluc3RhbmNlUHJveHkubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hv
c3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkubW0KaW5kZXggZWNhYTBkNjNlMmEzNTJj
YzJiZDYyYjEwYjQ4NzA0NjYzM2NkMzEwYi4uZWQ2NDZkM2U4NjQxZmQ1ODQ4YTgwMWE0ZTQ2Yjk4
ZTA1OGM4YmE3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9Ib3N0ZWQv
TmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1Bs
dWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5tbQpAQCAtMTIxLDEwICsx
MjEsMTAgQEAgaW5saW5lIEpTQzo6SlNPYmplY3QqIE5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94
eTo6TG9jYWxPYmplY3RNYXA6OmdldCh1aW50MzJfdAogICAgIGlmIChvYmplY3RJRCA9PSBIYXNo
VHJhaXRzPHVpbnQzMl90Pjo6ZW1wdHlWYWx1ZSgpIHx8IEhhc2hUcmFpdHM8dWludDMyX3Q+Ojpp
c0RlbGV0ZWRWYWx1ZShvYmplY3RJRCkpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgcmV0dXJu
IG1faWRUb0pTT2JqZWN0TWFwLmdldChvYmplY3RJRCk7CisgICAgcmV0dXJuIG1faWRUb0pTT2Jq
ZWN0TWFwLmdldChvYmplY3RJRCkuZ2V0KCk7CiB9CiAKLXVpbnQzMl90IE5ldHNjYXBlUGx1Z2lu
SW5zdGFuY2VQcm94eTo6TG9jYWxPYmplY3RNYXA6OmlkRm9yT2JqZWN0KEpTT2JqZWN0KiBvYmpl
Y3QpCit1aW50MzJfdCBOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHk6OkxvY2FsT2JqZWN0TWFw
OjppZEZvck9iamVjdChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTT2JqZWN0KiBvYmplY3Qp
CiB7CiAgICAgLy8gVGhpcyBtZXRob2QgY3JlYXRlcyBvYmplY3RzIHdpdGggcmVmY291bnQgb2Yg
MSwgYnV0IGRvZXNuJ3QgaW5jcmVhc2UgcmVmY291bnQgd2hlbiByZXR1cm5pbmcKICAgICAvLyBm
b3VuZCBvYmplY3RzLiBUaGlzIGV4dHJhIGNvdW50IGFjY291bnRzIGZvciB0aGUgbWFpbiAicmVm
ZXJlbmNlIiBrZXB0IGJ5IHBsdWdpbiBwcm9jZXNzLgpAQCAtMTQ4LDcgKzE0OCw3IEBAIHVpbnQz
Ml90IE5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eTo6TG9jYWxPYmplY3RNYXA6OmlkRm9yT2Jq
ZWN0KEpTT2JqZWN0KiBvYmplCiAgICAgICAgIG9iamVjdElEID0gKyttX29iamVjdElEQ291bnRl
cjsKICAgICB9IHdoaWxlICghbV9vYmplY3RJRENvdW50ZXIgfHwgbV9vYmplY3RJRENvdW50ZXIg
PT0gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KC0xKSB8fCBtX2lkVG9KU09iamVjdE1hcC5jb250YWlu
cyhvYmplY3RJRCkpOwogCi0gICAgbV9pZFRvSlNPYmplY3RNYXAuc2V0KG9iamVjdElELCBvYmpl
Y3QpOworICAgIG1faWRUb0pTT2JqZWN0TWFwLnNldChvYmplY3RJRCwgR2xvYmFsPEpTT2JqZWN0
PihnbG9iYWxEYXRhLCBvYmplY3QpKTsKICAgICBtX2pzT2JqZWN0VG9JRE1hcC5zZXQob2JqZWN0
LCBtYWtlX3BhaXI8dWludDMyX3QsIHVpbnQzMl90PihvYmplY3RJRCwgMSkpOwogCiAgICAgcmV0
dXJuIG9iamVjdElEOwpAQCAtMTg4LDcgKzE4OCw3IEBAIGJvb2wgTmV0c2NhcGVQbHVnaW5JbnN0
YW5jZVByb3h5OjpMb2NhbE9iamVjdE1hcDo6Zm9yZ2V0KHVpbnQzMl90IG9iamVjdElEKQogICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAgICBIYXNoTWFwPHVpbnQzMl90LCBKU0M6OlBy
b3RlY3RlZFB0cjxKU0M6OkpTT2JqZWN0PiA+OjppdGVyYXRvciBpdGVyID0gbV9pZFRvSlNPYmpl
Y3RNYXAuZmluZChvYmplY3RJRCk7CisgICAgSGFzaE1hcDx1aW50MzJfdCwgSlNDOjpHbG9iYWw8
SlNDOjpKU09iamVjdD4gPjo6aXRlcmF0b3IgaXRlciA9IG1faWRUb0pTT2JqZWN0TWFwLmZpbmQo
b2JqZWN0SUQpOwogICAgIGlmIChpdGVyID09IG1faWRUb0pTT2JqZWN0TWFwLmVuZCgpKSB7CiAg
ICAgICAgIExPR19FUlJPUigiTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5OjpMb2NhbE9iamVj
dE1hcDo6Zm9yZ2V0OiBsb2NhbCBvYmplY3QgJXUgZG9lc24ndCBleGlzdC4iLCBvYmplY3RJRCk7
CiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtODIzLDcgKzgyMyw3IEBAIGJvb2wgTmV0c2NhcGVQ
bHVnaW5JbnN0YW5jZVByb3h5OjpnZXRXaW5kb3dOUE9iamVjdCh1aW50MzJfdCYgb2JqZWN0SUQp
CiAgICAgaWYgKCFmcmFtZS0+c2NyaXB0KCktPmNhbkV4ZWN1dGVTY3JpcHRzKE5vdEFib3V0VG9F
eGVjdXRlU2NyaXB0KSkKICAgICAgICAgb2JqZWN0SUQgPSAwOwogICAgIGVsc2UKLSAgICAgICAg
b2JqZWN0SUQgPSBtX2xvY2FsT2JqZWN0cy5pZEZvck9iamVjdChmcmFtZS0+c2NyaXB0KCktPndp
bmRvd1NoZWxsKHBsdWdpbldvcmxkKCkpLT53aW5kb3coKSk7CisgICAgICAgIG9iamVjdElEID0g
bV9sb2NhbE9iamVjdHMuaWRGb3JPYmplY3QoKnBsdWdpbldvcmxkKCktPmdsb2JhbERhdGEoKSwg
ZnJhbWUtPnNjcmlwdCgpLT53aW5kb3dTaGVsbChwbHVnaW5Xb3JsZCgpKS0+d2luZG93KCkpOwog
ICAgICAgICAKICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTgzNSw3ICs4MzUsNyBAQCBib29sIE5l
dHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eTo6Z2V0UGx1Z2luRWxlbWVudE5QT2JqZWN0KHVpbnQz
Ml90JiBvYmplY3RJRCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAogICAgIGlmIChKU09i
amVjdCogb2JqZWN0ID0gZnJhbWUtPnNjcmlwdCgpLT5qc09iamVjdEZvclBsdWdpbkVsZW1lbnQo
W21fcGx1Z2luVmlldyBlbGVtZW50XSkpCi0gICAgICAgIG9iamVjdElEID0gbV9sb2NhbE9iamVj
dHMuaWRGb3JPYmplY3Qob2JqZWN0KTsKKyAgICAgICAgb2JqZWN0SUQgPSBtX2xvY2FsT2JqZWN0
cy5pZEZvck9iamVjdCgqcGx1Z2luV29ybGQoKS0+Z2xvYmFsRGF0YSgpLCBvYmplY3QpOwogICAg
IGVsc2UKICAgICAgICAgb2JqZWN0SUQgPSAwOwogICAgIApAQCAtODY2LDcgKzg2Niw3IEBAIGJv
b2wgTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5OjpldmFsdWF0ZSh1aW50MzJfdCBvYmplY3RJ
RCwgY29uc3QgU3RyaW5nJiBzY3JpCiAKICAgICBKU0xvY2sgbG9jayhTaWxlbmNlQXNzZXJ0aW9u
c09ubHkpOwogICAgIAotICAgIFByb3RlY3RlZFB0cjxKU0dsb2JhbE9iamVjdD4gZ2xvYmFsT2Jq
ZWN0ID0gZnJhbWUtPnNjcmlwdCgpLT5nbG9iYWxPYmplY3QocGx1Z2luV29ybGQoKSk7CisgICAg
R2xvYmFsPEpTR2xvYmFsT2JqZWN0PiBnbG9iYWxPYmplY3QoKnBsdWdpbldvcmxkKCktPmdsb2Jh
bERhdGEoKSwgZnJhbWUtPnNjcmlwdCgpLT5nbG9iYWxPYmplY3QocGx1Z2luV29ybGQoKSkpOwog
ICAgIEV4ZWNTdGF0ZSogZXhlYyA9IGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpOwogCiAgICAg
Ym9vbCBvbGRBbGxvd1BvcHVwcyA9IGZyYW1lLT5zY3JpcHQoKS0+YWxsb3dQb3B1cHNGcm9tUGx1
Z2luKCk7CkBAIC05MjAsMTAgKzkyMCwxMCBAQCBib29sIE5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQ
cm94eTo6aW52b2tlKHVpbnQzMl90IG9iamVjdElELCBjb25zdCBJZGVudGlmaWVyJiBtZQogICAg
IE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ0xpc3Q7CiAgICAgZGVtYXJzaGFsVmFsdWVzKGV4ZWMs
IGFyZ3VtZW50c0RhdGEsIGFyZ3VtZW50c0xlbmd0aCwgYXJnTGlzdCk7CiAKLSAgICBQcm90ZWN0
ZWRQdHI8SlNHbG9iYWxPYmplY3Q+IGdsb2JhbE9iamVjdCA9IGZyYW1lLT5zY3JpcHQoKS0+Z2xv
YmFsT2JqZWN0KHBsdWdpbldvcmxkKCkpOwotICAgIGdsb2JhbE9iamVjdC0+Z2xvYmFsRGF0YSgp
LnRpbWVvdXRDaGVja2VyLnN0YXJ0KCk7CisgICAgUmVmUHRyPEpTR2xvYmFsRGF0YT4gZ2xvYmFs
RGF0YSA9IHBsdWdpbldvcmxkKCktPmdsb2JhbERhdGEoKTsKKyAgICBnbG9iYWxEYXRhLT50aW1l
b3V0Q2hlY2tlci5zdGFydCgpOwogICAgIEpTVmFsdWUgdmFsdWUgPSBjYWxsKGV4ZWMsIGZ1bmN0
aW9uLCBjYWxsVHlwZSwgY2FsbERhdGEsIG9iamVjdCwgYXJnTGlzdCk7Ci0gICAgZ2xvYmFsT2Jq
ZWN0LT5nbG9iYWxEYXRhKCkudGltZW91dENoZWNrZXIuc3RvcCgpOworICAgIGdsb2JhbERhdGEt
PnRpbWVvdXRDaGVja2VyLnN0b3AoKTsKICAgICAgICAgCiAgICAgbWFyc2hhbFZhbHVlKGV4ZWMs
IHZhbHVlLCByZXN1bHREYXRhLCByZXN1bHRMZW5ndGgpOwogICAgIGV4ZWMtPmNsZWFyRXhjZXB0
aW9uKCk7CkBAIC05NTUsMTAgKzk1NSwxMCBAQCBib29sIE5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQ
cm94eTo6aW52b2tlRGVmYXVsdCh1aW50MzJfdCBvYmplY3RJRCwgZGF0YV90IGFyZ3VtZQogICAg
IE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ0xpc3Q7CiAgICAgZGVtYXJzaGFsVmFsdWVzKGV4ZWMs
IGFyZ3VtZW50c0RhdGEsIGFyZ3VtZW50c0xlbmd0aCwgYXJnTGlzdCk7CiAKLSAgICBQcm90ZWN0
ZWRQdHI8SlNHbG9iYWxPYmplY3Q+IGdsb2JhbE9iamVjdCA9IGZyYW1lLT5zY3JpcHQoKS0+Z2xv
YmFsT2JqZWN0KHBsdWdpbldvcmxkKCkpOwotICAgIGdsb2JhbE9iamVjdC0+Z2xvYmFsRGF0YSgp
LnRpbWVvdXRDaGVja2VyLnN0YXJ0KCk7CisgICAgUmVmUHRyPEpTR2xvYmFsRGF0YT4gZ2xvYmFs
RGF0YSA9IHBsdWdpbldvcmxkKCktPmdsb2JhbERhdGEoKTsKKyAgICBnbG9iYWxEYXRhLT50aW1l
b3V0Q2hlY2tlci5zdGFydCgpOwogICAgIEpTVmFsdWUgdmFsdWUgPSBjYWxsKGV4ZWMsIG9iamVj
dCwgY2FsbFR5cGUsIGNhbGxEYXRhLCBvYmplY3QsIGFyZ0xpc3QpOwotICAgIGdsb2JhbE9iamVj
dC0+Z2xvYmFsRGF0YSgpLnRpbWVvdXRDaGVja2VyLnN0b3AoKTsKKyAgICBnbG9iYWxEYXRhLT50
aW1lb3V0Q2hlY2tlci5zdG9wKCk7CiAgICAgCiAgICAgbWFyc2hhbFZhbHVlKGV4ZWMsIHZhbHVl
LCByZXN1bHREYXRhLCByZXN1bHRMZW5ndGgpOwogICAgIGV4ZWMtPmNsZWFyRXhjZXB0aW9uKCk7
CkBAIC05OTEsMTAgKzk5MSwxMCBAQCBib29sIE5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eTo6
Y29uc3RydWN0KHVpbnQzMl90IG9iamVjdElELCBkYXRhX3QgYXJndW1lbnRzRAogICAgIE1hcmtl
ZEFyZ3VtZW50QnVmZmVyIGFyZ0xpc3Q7CiAgICAgZGVtYXJzaGFsVmFsdWVzKGV4ZWMsIGFyZ3Vt
ZW50c0RhdGEsIGFyZ3VtZW50c0xlbmd0aCwgYXJnTGlzdCk7CiAKLSAgICBQcm90ZWN0ZWRQdHI8
SlNHbG9iYWxPYmplY3Q+IGdsb2JhbE9iamVjdCA9IGZyYW1lLT5zY3JpcHQoKS0+Z2xvYmFsT2Jq
ZWN0KHBsdWdpbldvcmxkKCkpOwotICAgIGdsb2JhbE9iamVjdC0+Z2xvYmFsRGF0YSgpLnRpbWVv
dXRDaGVja2VyLnN0YXJ0KCk7CisgICAgUmVmUHRyPEpTR2xvYmFsRGF0YT4gZ2xvYmFsRGF0YSA9
IHBsdWdpbldvcmxkKCktPmdsb2JhbERhdGEoKTsKKyAgICBnbG9iYWxEYXRhLT50aW1lb3V0Q2hl
Y2tlci5zdGFydCgpOwogICAgIEpTVmFsdWUgdmFsdWUgPSBKU0M6OmNvbnN0cnVjdChleGVjLCBv
YmplY3QsIGNvbnN0cnVjdFR5cGUsIGNvbnN0cnVjdERhdGEsIGFyZ0xpc3QpOwotICAgIGdsb2Jh
bE9iamVjdC0+Z2xvYmFsRGF0YSgpLnRpbWVvdXRDaGVja2VyLnN0b3AoKTsKKyAgICBnbG9iYWxE
YXRhLT50aW1lb3V0Q2hlY2tlci5zdG9wKCk7CiAgICAgCiAgICAgbWFyc2hhbFZhbHVlKGV4ZWMs
IHZhbHVlLCByZXN1bHREYXRhLCByZXN1bHRMZW5ndGgpOwogICAgIGV4ZWMtPmNsZWFyRXhjZXB0
aW9uKCk7CkBAIC0xMjgzLDcgKzEyODMsNyBAQCB2b2lkIE5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQ
cm94eTo6YWRkVmFsdWVUb0FycmF5KE5TTXV0YWJsZUFycmF5ICphcnJheSwgRXhlY1N0YQogICAg
ICAgICAgICAgfQogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgW2FycmF5IGFkZE9iamVj
dDpbTlNOdW1iZXIgbnVtYmVyV2l0aEludDpKU09iamVjdFZhbHVlVHlwZV1dOwotICAgICAgICAg
ICAgW2FycmF5IGFkZE9iamVjdDpbTlNOdW1iZXIgbnVtYmVyV2l0aEludDptX2xvY2FsT2JqZWN0
cy5pZEZvck9iamVjdChvYmplY3QpXV07CisgICAgICAgICAgICBbYXJyYXkgYWRkT2JqZWN0OltO
U051bWJlciBudW1iZXJXaXRoSW50Om1fbG9jYWxPYmplY3RzLmlkRm9yT2JqZWN0KGV4ZWMtPmds
b2JhbERhdGEoKSwgb2JqZWN0KV1dOwogICAgICAgICB9CiAgICAgfSBlbHNlCiAgICAgICAgIFth
cnJheSBhZGRPYmplY3Q6W05TTnVtYmVyIG51bWJlcldpdGhJbnQ6Vm9pZFZhbHVlVHlwZV1dOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJTY3JpcHREZWJ1Z2dlci5o
IGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJTY3JpcHREZWJ1Z2dlci5oCmluZGV4IDcz
Yzk0NjYyMDZkZDI5ODM4OWM4MzVjMTRmMzBkOGVlNTA5NGU5OTQuLjhmN2ZjYWE1ZDFkYjBhMmNk
NjRmOWQyOTg1ZmNhNWVhM2QwYTYxNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dl
YlZpZXcvV2ViU2NyaXB0RGVidWdnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3
L1dlYlNjcmlwdERlYnVnZ2VyLmgKQEAgLTI5LDggKzI5LDggQEAKICNpZm5kZWYgV2ViU2NyaXB0
RGVidWdnZXJfaAogI2RlZmluZSBXZWJTY3JpcHREZWJ1Z2dlcl9oCiAKKyNpbmNsdWRlIDxjb2xs
ZWN0b3IvaGFuZGxlcy9HbG9iYWwuaD4KICNpbmNsdWRlIDxkZWJ1Z2dlci9EZWJ1Z2dlci5oPgot
I2luY2x1ZGUgPHJ1bnRpbWUvUHJvdGVjdC5oPgogCiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5o
PgogCkBAIC02OSw3ICs2OSw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2NhbGxpbmdEZWxlZ2F0
ZTsKICAgICBSZXRhaW5QdHI8V2ViU2NyaXB0Q2FsbEZyYW1lPiBtX3RvcENhbGxGcmFtZTsKIAot
ICAgIEpTQzo6UHJvdGVjdGVkUHRyPEpTQzo6SlNHbG9iYWxPYmplY3Q+IG1fZ2xvYmFsT2JqZWN0
OworICAgIEpTQzo6R2xvYmFsPEpTQzo6SlNHbG9iYWxPYmplY3Q+IG1fZ2xvYmFsT2JqZWN0Owog
ICAgIFJldGFpblB0cjxXZWJTY3JpcHRDYWxsRnJhbWU+IG1fZ2xvYmFsQ2FsbEZyYW1lOwogfTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJTY3JpcHREZWJ1Z2dl
ci5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViU2NyaXB0RGVidWdnZXIubW0KaW5k
ZXggOWJjM2JjZTBkZDdiNDJiYmRjZWQzMDE5MDc3M2M0OGU5NTIwMTBiNi4uYmZkYjM1YTMyMWM1
OTFmYWM4OGM1ZTlkMGQ2NjQ4OGQxOTY4MDg0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9t
YWMvV2ViVmlldy9XZWJTY3JpcHREZWJ1Z2dlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9X
ZWJWaWV3L1dlYlNjcmlwdERlYnVnZ2VyLm1tCkBAIC04MCw3ICs4MCw3IEBAIHN0YXRpYyBXZWJG
cmFtZSAqdG9XZWJGcmFtZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogCiBXZWJTY3Jp
cHREZWJ1Z2dlcjo6V2ViU2NyaXB0RGVidWdnZXIoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCkKICAgICA6IG1fY2FsbGluZ0RlbGVnYXRlKGZhbHNlKQotICAgICwgbV9nbG9iYWxPYmplY3Qo
Z2xvYmFsT2JqZWN0KQorICAgICwgbV9nbG9iYWxPYmplY3QoZ2xvYmFsT2JqZWN0LT5nbG9iYWxE
YXRhKCksIGdsb2JhbE9iamVjdCkKIHsKICAgICBhdHRhY2goZ2xvYmFsT2JqZWN0KTsKICAgICBp
bml0R2xvYmFsQ2FsbEZyYW1lKGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpp
bmRleCBmNjc5ZWE3YzdiZTFlNWJiZDg5OWYwYjFiYzczYTg1OWI0MWUyNDAwLi5kMzliY2E3ODU4
N2YzMjE5NzE4NTRmMTdmMjc5ZmU0ODYxNGU4YWEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzEg
QEAKKzIwMTEtMDItMTQgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZWZhY3RvciBoYW5kbGVz
IGFuZCB3ZWFrIHBvaW50ZXJzIHRvIGJlY29tZSBuaWNlciBhbmQgbW9yZSBhdXRvbWF0aWMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU0NDE1CisKKyAg
ICAgICAgVXBkYXRlIGNvZGUgdG8gbmV3IEdsb2JhbDw+IEFQSSwgYW5kIHJlZmFjdG9yIHRvIGdl
dCBnbG9iYWwgZGF0YSB0bworICAgICAgICBuZWNlc3NhcnkgcG9pbnRzLgorCisgICAgICAgICog
V2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05QSlNPYmplY3QuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpOUEpTT2JqZWN0OjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpOUEpTT2JqZWN0OjpO
UEpTT2JqZWN0KToKKyAgICAgICAgKFdlYktpdDo6TlBKU09iamVjdDo6aW5pdGlhbGl6ZSk6Cisg
ICAgICAgIChXZWJLaXQ6Ok5QSlNPYmplY3Q6Omludm9rZURlZmF1bHQpOgorICAgICAgICAoV2Vi
S2l0OjpOUEpTT2JqZWN0Ojpjb25zdHJ1Y3QpOgorICAgICAgICAoV2ViS2l0OjpOUEpTT2JqZWN0
OjppbnZva2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OUEpTT2Jq
ZWN0Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05QUnVudGltZU9i
amVjdE1hcC5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5QUnVudGltZU9iamVjdE1hcDo6Z2V0T3JD
cmVhdGVOUE9iamVjdCk6CisgICAgICAgIChXZWJLaXQ6Ok5QUnVudGltZU9iamVjdE1hcDo6Y29u
dmVydEpTVmFsdWVUb05QVmFyaWFudCk6CisgICAgICAgIChXZWJLaXQ6Ok5QUnVudGltZU9iamVj
dE1hcDo6ZXZhbHVhdGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9O
UFJ1bnRpbWVPYmplY3RNYXAuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2lu
Vmlldy5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6OndpbmRvd1NjcmlwdE5QT2Jq
ZWN0KToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luVmlldzo6cGx1Z2luRWxlbWVudE5QT2JqZWN0
KToKKyAgICAgICAgKiBXZWJLaXQyLnBybzoKKwogMjAxMS0wMi0xNCAgU2FtIFdlaW5pZyAgPHNh
bUB3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFuZGVycyBDYXJsc3Nvbi4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIucHJvIGIvU291cmNlL1dlYktpdDIvV2Vi
S2l0Mi5wcm8KaW5kZXggOThmNGQyNWY1ODkwYzQ1ODRiNGE5Yzg4YmFkNzJkN2MxNGE0ZTdjNy4u
NDYxZWQyOGRmODZiZGY5ZTBiMmZkYjAzNTRlYjJkZDY3M2MxNDE5NSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvV2ViS2l0Mi5wcm8KKysrIGIvU291cmNlL1dlYktpdDIvV2ViS2l0Mi5wcm8K
QEAgLTQxLDYgKzQxLDcgQEAgV0VCS0lUMl9JTkNMVURFUEFUSCA9IFwKICAgICAkJFBXRC8uLi9K
YXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIgXAogICAgICQkUFdELy4uL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlIFwKICAgICAkJFBXRC8uLi9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIgXAorICAg
ICQkUFdELy4uL0phdmFTY3JpcHRDb3JlL2NvbGxlY3Rvci9oYW5kbGVzIFwKICAgICAkJFBXRC8u
Li9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlciBcCiAgICAgJCRQV0QvLi4vSmF2YVNjcmlwdENvcmUv
aW50ZXJwcmV0ZXIgXAogICAgICQkUFdELy4uL0phdmFTY3JpcHRDb3JlL2ppdCBcCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTlBKU09iamVj
dC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTlBKU09i
amVjdC5jcHAKaW5kZXggMzQ1YmQ1NGE5ZjNiOTgzNjc3ZDNhMWUzNDFmYjQ3NWEzZGUyYjhkOS4u
ZTg2YTliYzIxOTQ3ZGI0NmVmMTRmZmVhODZkZjFmZWIyNDExODU4ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05QSlNPYmplY3QuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OUEpTT2JqZWN0
LmNwcApAQCAtNDIsMTkgKzQyLDIwIEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1l
c3BhY2UgV2ViS2l0IHsKIAotTlBKU09iamVjdCogTlBKU09iamVjdDo6Y3JlYXRlKE5QUnVudGlt
ZU9iamVjdE1hcCogb2JqZWN0TWFwLCBKU09iamVjdCoganNPYmplY3QpCitOUEpTT2JqZWN0KiBO
UEpTT2JqZWN0OjpjcmVhdGUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBOUFJ1bnRpbWVPYmpl
Y3RNYXAqIG9iamVjdE1hcCwgSlNPYmplY3QqIGpzT2JqZWN0KQogewogICAgIC8vIFdlIHNob3Vs
ZCBuZXZlciBoYXZlIGEgSlNOUE9iamVjdCBpbnNpZGUgYW4gTlBKU09iamVjdC4KICAgICBBU1NF
UlQoIWpzT2JqZWN0LT5pbmhlcml0cygmSlNOUE9iamVjdDo6c19pbmZvKSk7CiAKICAgICBOUEpT
T2JqZWN0KiBucEpTT2JqZWN0ID0gdG9OUEpTT2JqZWN0KGNyZWF0ZU5QT2JqZWN0KDAsIG5wQ2xh
c3MoKSkpOwotICAgIG5wSlNPYmplY3QtPmluaXRpYWxpemUob2JqZWN0TWFwLCBqc09iamVjdCk7
CisgICAgbnBKU09iamVjdC0+aW5pdGlhbGl6ZShnbG9iYWxEYXRhLCBvYmplY3RNYXAsIGpzT2Jq
ZWN0KTsKIAogICAgIHJldHVybiBucEpTT2JqZWN0OwogfQogCiBOUEpTT2JqZWN0OjpOUEpTT2Jq
ZWN0KCkKICAgICA6IG1fb2JqZWN0TWFwKDApCisgICAgLCBtX2pzT2JqZWN0KEdsb2JhbDxKU09i
amVjdD46OkVtcHR5VmFsdWUpCiB7CiB9CiAKQEAgLTY4LDEzICs2OSwxMyBAQCBib29sIE5QSlNP
YmplY3Q6OmlzTlBKU09iamVjdChOUE9iamVjdCogbnBPYmplY3QpCiAgICAgcmV0dXJuIG5wT2Jq
ZWN0LT5fY2xhc3MgPT0gbnBDbGFzcygpOwogfQogCi12b2lkIE5QSlNPYmplY3Q6OmluaXRpYWxp
emUoTlBSdW50aW1lT2JqZWN0TWFwKiBvYmplY3RNYXAsIEpTT2JqZWN0KiBqc09iamVjdCkKK3Zv
aWQgTlBKU09iamVjdDo6aW5pdGlhbGl6ZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIE5QUnVu
dGltZU9iamVjdE1hcCogb2JqZWN0TWFwLCBKU09iamVjdCoganNPYmplY3QpCiB7CiAgICAgQVNT
RVJUKCFtX29iamVjdE1hcCk7CiAgICAgQVNTRVJUKCFtX2pzT2JqZWN0KTsKIAogICAgIG1fb2Jq
ZWN0TWFwID0gb2JqZWN0TWFwOwotICAgIG1fanNPYmplY3QgPSBqc09iamVjdDsKKyAgICBtX2pz
T2JqZWN0LnNldChnbG9iYWxEYXRhLCBqc09iamVjdCk7CiB9CiAKIHN0YXRpYyBJZGVudGlmaWVy
IGlkZW50aWZpZXJGcm9tSWRlbnRpZmllclJlcChFeGVjU3RhdGUqIGV4ZWMsIElkZW50aWZpZXJS
ZXAqIGlkZW50aWZpZXJSZXApCkBAIC0xMzIsNyArMTMzLDcgQEAgYm9vbCBOUEpTT2JqZWN0Ojpp
bnZva2VEZWZhdWx0KGNvbnN0IE5QVmFyaWFudCogYXJndW1lbnRzLCB1aW50MzJfdCBhcmd1bWVu
dENvdW4KIAogICAgIEpTTG9jayBsb2NrKFNpbGVuY2VBc3NlcnRpb25zT25seSk7CiAKLSAgICBK
U1ZhbHVlIGZ1bmN0aW9uID0gbV9qc09iamVjdDsKKyAgICBKU1ZhbHVlIGZ1bmN0aW9uID0gbV9q
c09iamVjdC5nZXQoKTsKICAgICByZXR1cm4gaW52b2tlKGV4ZWMsIG1fb2JqZWN0TWFwLT5nbG9i
YWxPYmplY3QoKSwgZnVuY3Rpb24sIGFyZ3VtZW50cywgYXJndW1lbnRDb3VudCwgcmVzdWx0KTsK
IH0KIApAQCAtMjU5LDcgKzI2MCw3IEBAIGJvb2wgTlBKU09iamVjdDo6Y29uc3RydWN0KGNvbnN0
IE5QVmFyaWFudCogYXJndW1lbnRzLCB1aW50MzJfdCBhcmd1bWVudENvdW50LCBOCiAgICAgSlNM
b2NrIGxvY2soU2lsZW5jZUFzc2VydGlvbnNPbmx5KTsKIAogICAgIENvbnN0cnVjdERhdGEgY29u
c3RydWN0RGF0YTsKLSAgICBDb25zdHJ1Y3RUeXBlIGNvbnN0cnVjdFR5cGUgPSBnZXRDb25zdHJ1
Y3REYXRhKG1fanNPYmplY3QsIGNvbnN0cnVjdERhdGEpOworICAgIENvbnN0cnVjdFR5cGUgY29u
c3RydWN0VHlwZSA9IGdldENvbnN0cnVjdERhdGEobV9qc09iamVjdC5nZXQoKSwgY29uc3RydWN0
RGF0YSk7CiAgICAgaWYgKGNvbnN0cnVjdFR5cGUgPT0gQ29uc3RydWN0VHlwZU5vbmUpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIApAQCAtMjY5LDcgKzI3MCw3IEBAIGJvb2wgTlBKU09iamVjdDo6
Y29uc3RydWN0KGNvbnN0IE5QVmFyaWFudCogYXJndW1lbnRzLCB1aW50MzJfdCBhcmd1bWVudENv
dW50LCBOCiAgICAgICAgIGFyZ3VtZW50TGlzdC5hcHBlbmQobV9vYmplY3RNYXAtPmNvbnZlcnRO
UFZhcmlhbnRUb0pTVmFsdWUoZXhlYywgbV9vYmplY3RNYXAtPmdsb2JhbE9iamVjdCgpLCBhcmd1
bWVudHNbaV0pKTsKIAogICAgIGV4ZWMtPmdsb2JhbERhdGEoKS50aW1lb3V0Q2hlY2tlci5zdGFy
dCgpOwotICAgIEpTVmFsdWUgdmFsdWUgPSBKU0M6OmNvbnN0cnVjdChleGVjLCBtX2pzT2JqZWN0
LCBjb25zdHJ1Y3RUeXBlLCBjb25zdHJ1Y3REYXRhLCBhcmd1bWVudExpc3QpOworICAgIEpTVmFs
dWUgdmFsdWUgPSBKU0M6OmNvbnN0cnVjdChleGVjLCBtX2pzT2JqZWN0LmdldCgpLCBjb25zdHJ1
Y3RUeXBlLCBjb25zdHJ1Y3REYXRhLCBhcmd1bWVudExpc3QpOwogICAgIGV4ZWMtPmdsb2JhbERh
dGEoKS50aW1lb3V0Q2hlY2tlci5zdG9wKCk7CiAgICAgCiAgICAgLy8gQ29udmVydCBhbmQgcmV0
dXJuIHRoZSBuZXcgb2JqZWN0LgpAQCAtMjkyLDcgKzI5Myw3IEBAIGJvb2wgTlBKU09iamVjdDo6
aW52b2tlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNW
YWx1ZSBmCiAgICAgICAgIGFyZ3VtZW50TGlzdC5hcHBlbmQobV9vYmplY3RNYXAtPmNvbnZlcnRO
UFZhcmlhbnRUb0pTVmFsdWUoZXhlYywgZ2xvYmFsT2JqZWN0LCBhcmd1bWVudHNbaV0pKTsKIAog
ICAgIGV4ZWMtPmdsb2JhbERhdGEoKS50aW1lb3V0Q2hlY2tlci5zdGFydCgpOwotICAgIEpTVmFs
dWUgdmFsdWUgPSBKU0M6OmNhbGwoZXhlYywgZnVuY3Rpb24sIGNhbGxUeXBlLCBjYWxsRGF0YSwg
bV9qc09iamVjdCwgYXJndW1lbnRMaXN0KTsKKyAgICBKU1ZhbHVlIHZhbHVlID0gSlNDOjpjYWxs
KGV4ZWMsIGZ1bmN0aW9uLCBjYWxsVHlwZSwgY2FsbERhdGEsIG1fanNPYmplY3QuZ2V0KCksIGFy
Z3VtZW50TGlzdCk7CiAgICAgZXhlYy0+Z2xvYmFsRGF0YSgpLnRpbWVvdXRDaGVja2VyLnN0b3Ao
KTsKIAogICAgIC8vIENvbnZlcnQgYW5kIHJldHVybiB0aGUgcmVzdWx0IG9mIHRoZSBmdW5jdGlv
biBjYWxsLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05l
dHNjYXBlL05QSlNPYmplY3QuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9O
ZXRzY2FwZS9OUEpTT2JqZWN0LmgKaW5kZXggMzUxODIyMTBhM2EzZTkxOTI5NDJiOWFmMjBlZjJi
NmY1MjhjN2QxMi4uNzk2ZjFjMzAzMzk2OGY1MTE3ZDdiNDk2YTFkYjRlZTQ5NzMyZjMyOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05QSlNP
YmplY3QuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUv
TlBKU09iamVjdC5oCkBAIC0yNiwxMyArMjYsMTYgQEAKICNpZm5kZWYgTlBKU09iamVjdF9oCiAj
ZGVmaW5lIE5QSlNPYmplY3RfaAogCi0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvUHJvdGVjdC5o
PgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0dsb2JhbC5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
bnBydW50aW1lX2ludGVybmFsLmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAKIG5h
bWVzcGFjZSBKU0MgewotICAgIGNsYXNzIEpTR2xvYmFsT2JqZWN0OwotICAgIGNsYXNzIEpTT2Jq
ZWN0OworCitjbGFzcyBKU0dsb2JhbERhdGE7CitjbGFzcyBKU0dsb2JhbE9iamVjdDsKK2NsYXNz
IEpTT2JqZWN0OworCiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNDMsNyArNDYsNyBAQCBj
bGFzcyBOUFJ1bnRpbWVPYmplY3RNYXA7CiBjbGFzcyBOUEpTT2JqZWN0IDogcHVibGljIE5QT2Jq
ZWN0IHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShOUEpTT2JqZWN0KTsKIHB1YmxpYzoKLSAg
ICBzdGF0aWMgTlBKU09iamVjdCogY3JlYXRlKE5QUnVudGltZU9iamVjdE1hcCogb2JqZWN0TWFw
LCBKU0M6OkpTT2JqZWN0KiBqc09iamVjdCk7CisgICAgc3RhdGljIE5QSlNPYmplY3QqIGNyZWF0
ZShKU0M6OkpTR2xvYmFsRGF0YSYsIE5QUnVudGltZU9iamVjdE1hcCosIEpTQzo6SlNPYmplY3Qq
KTsKIAogICAgIEpTQzo6SlNPYmplY3QqIGpzT2JqZWN0KCkgY29uc3QgeyByZXR1cm4gbV9qc09i
amVjdC5nZXQoKTsgfQogCkBAIC01OSw3ICs2Miw3IEBAIHByaXZhdGU6CiAgICAgTlBKU09iamVj
dCgpOwogICAgIH5OUEpTT2JqZWN0KCk7CiAKLSAgICB2b2lkIGluaXRpYWxpemUoTlBSdW50aW1l
T2JqZWN0TWFwKiwgSlNDOjpKU09iamVjdCoganNPYmplY3QpOworICAgIHZvaWQgaW5pdGlhbGl6
ZShKU0M6OkpTR2xvYmFsRGF0YSYsIE5QUnVudGltZU9iamVjdE1hcCosIEpTQzo6SlNPYmplY3Qq
KTsKIAogICAgIGJvb2wgaGFzTWV0aG9kKE5QSWRlbnRpZmllciBtZXRob2ROYW1lKTsKICAgICBi
b29sIGludm9rZShOUElkZW50aWZpZXIgbWV0aG9kTmFtZSwgY29uc3QgTlBWYXJpYW50KiBhcmd1
bWVudHMsIHVpbnQzMl90IGFyZ3VtZW50Q291bnQsIE5QVmFyaWFudCogcmVzdWx0KTsKQEAgLTg3
LDcgKzkwLDcgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgYm9vbCBOUF9Db25zdHJ1Y3QoTlBPYmpl
Y3QqLCBjb25zdCBOUFZhcmlhbnQqIGFyZ3VtZW50cywgdWludDMyX3QgYXJndW1lbnRDb3VudCwg
TlBWYXJpYW50KiByZXN1bHQpOwogICAgIAogICAgIE5QUnVudGltZU9iamVjdE1hcCogbV9vYmpl
Y3RNYXA7Ci0gICAgSlNDOjpQcm90ZWN0ZWRQdHI8SlNDOjpKU09iamVjdD4gbV9qc09iamVjdDsK
KyAgICBKU0M6Okdsb2JhbDxKU0M6OkpTT2JqZWN0PiBtX2pzT2JqZWN0OwogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1Bs
dWdpbnMvTmV0c2NhcGUvTlBSdW50aW1lT2JqZWN0TWFwLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OUFJ1bnRpbWVPYmplY3RNYXAuY3BwCmluZGV4IDBh
OTZhZDcyNTAxMDk4ZDMyNmJjNGE1YmVkN2Q5NzU1MjFlODc4YjkuLmZjNTcyZjRjZDRhNGY5YjY5
OWY3MjdmNzAyYzcwYTNlYWJjZTQ1N2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OUFJ1bnRpbWVPYmplY3RNYXAuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OUFJ1bnRpbWVPYmplY3RNYXAu
Y3BwCkBAIC01OCw3ICs1OCw3IEBAIE5QUnVudGltZU9iamVjdE1hcDo6UGx1Z2luUHJvdGVjdG9y
Ojp+UGx1Z2luUHJvdGVjdG9yKCkKIHsKIH0KIAotTlBPYmplY3QqIE5QUnVudGltZU9iamVjdE1h
cDo6Z2V0T3JDcmVhdGVOUE9iamVjdChKU09iamVjdCoganNPYmplY3QpCitOUE9iamVjdCogTlBS
dW50aW1lT2JqZWN0TWFwOjpnZXRPckNyZWF0ZU5QT2JqZWN0KEpTR2xvYmFsRGF0YSYgZ2xvYmFs
RGF0YSwgSlNPYmplY3QqIGpzT2JqZWN0KQogewogICAgIC8vIElmIHRoaXMgaXMgYSBKU05QT2Jq
ZWN0LCB3ZSBjYW4ganVzdCBnZXQgaXRzIHVuZGVybHlpbmcgTlBPYmplY3QuCiAgICAgaWYgKGpz
T2JqZWN0LT5jbGFzc0luZm8oKSA9PSAmSlNOUE9iamVjdDo6c19pbmZvKSB7CkBAIC03NSw3ICs3
NSw3IEBAIE5QT2JqZWN0KiBOUFJ1bnRpbWVPYmplY3RNYXA6OmdldE9yQ3JlYXRlTlBPYmplY3Qo
SlNPYmplY3QqIGpzT2JqZWN0KQogICAgICAgICByZXR1cm4gbnBKU09iamVjdDsKICAgICB9CiAK
LSAgICBOUEpTT2JqZWN0KiBucEpTT2JqZWN0ID0gTlBKU09iamVjdDo6Y3JlYXRlKHRoaXMsIGpz
T2JqZWN0KTsKKyAgICBOUEpTT2JqZWN0KiBucEpTT2JqZWN0ID0gTlBKU09iamVjdDo6Y3JlYXRl
KGdsb2JhbERhdGEsIHRoaXMsIGpzT2JqZWN0KTsKICAgICBtX25wSlNPYmplY3RzLnNldChqc09i
amVjdCwgbnBKU09iamVjdCk7CiAKICAgICByZXR1cm4gbnBKU09iamVjdDsKQEAgLTE3Miw3ICsx
NzIsNyBAQCB2b2lkIE5QUnVudGltZU9iamVjdE1hcDo6Y29udmVydEpTVmFsdWVUb05QVmFyaWFu
dChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdQogICAgIH0KIAogICAgIGlmICh2YWx1ZS5p
c09iamVjdCgpKSB7Ci0gICAgICAgIE5QT2JqZWN0KiBucE9iamVjdCA9IGdldE9yQ3JlYXRlTlBP
YmplY3QoYXNPYmplY3QodmFsdWUpKTsKKyAgICAgICAgTlBPYmplY3QqIG5wT2JqZWN0ID0gZ2V0
T3JDcmVhdGVOUE9iamVjdChleGVjLT5nbG9iYWxEYXRhKCksIGFzT2JqZWN0KHZhbHVlKSk7CiAg
ICAgICAgIE9CSkVDVF9UT19OUFZBUklBTlQobnBPYmplY3QsIHZhcmlhbnQpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQpAQCAtMTgyLDE0ICsxODIsMTQgQEAgdm9pZCBOUFJ1bnRpbWVPYmplY3RN
YXA6OmNvbnZlcnRKU1ZhbHVlVG9OUFZhcmlhbnQoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZh
bHUKIAogYm9vbCBOUFJ1bnRpbWVPYmplY3RNYXA6OmV2YWx1YXRlKE5QT2JqZWN0KiBucE9iamVj
dCwgY29uc3QgU3RyaW5nJnNjcmlwdFN0cmluZywgTlBWYXJpYW50KiByZXN1bHQpCiB7Ci0gICAg
UHJvdGVjdGVkUHRyPEpTR2xvYmFsT2JqZWN0PiBnbG9iYWxPYmplY3QgPSB0aGlzLT5nbG9iYWxP
YmplY3QoKTsKKyAgICBHbG9iYWw8SlNHbG9iYWxPYmplY3Q+IGdsb2JhbE9iamVjdCh0aGlzLT5n
bG9iYWxPYmplY3QoKS0+Z2xvYmFsRGF0YSgpLCB0aGlzLT5nbG9iYWxPYmplY3QoKSk7CiAgICAg
aWYgKCFnbG9iYWxPYmplY3QpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIEV4ZWNTdGF0
ZSogZXhlYyA9IGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpOwogICAgIAogICAgIEpTTG9jayBs
b2NrKFNpbGVuY2VBc3NlcnRpb25zT25seSk7Ci0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBnZXRP
ckNyZWF0ZUpTT2JqZWN0KGdsb2JhbE9iamVjdCwgbnBPYmplY3QpOworICAgIEpTVmFsdWUgdGhp
c1ZhbHVlID0gZ2V0T3JDcmVhdGVKU09iamVjdChnbG9iYWxPYmplY3QuZ2V0KCksIG5wT2JqZWN0
KTsKIAogICAgIGdsb2JhbE9iamVjdC0+Z2xvYmFsRGF0YSgpLnRpbWVvdXRDaGVja2VyLnN0YXJ0
KCk7CiAgICAgQ29tcGxldGlvbiBjb21wbGV0aW9uID0gSlNDOjpldmFsdWF0ZShleGVjLCBnbG9i
YWxPYmplY3QtPmdsb2JhbFNjb3BlQ2hhaW4oKSwgbWFrZVNvdXJjZShVU3RyaW5nKHNjcmlwdFN0
cmluZy5pbXBsKCkpKSwgdGhpc1ZhbHVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OUFJ1bnRpbWVPYmplY3RNYXAuaCBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OUFJ1bnRpbWVPYmplY3RNYXAuaApp
bmRleCBhMTFjMzU0NGUzY2I4YTA1M2RhYmZjZWRmNGY2M2NiM2IxYmIzZmU5Li5kMTNlMWZlZjhj
ZDkwYTU1ODY1MGRhNThmZTIwZjAzMzI1NzJkMDgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTlBSdW50aW1lT2JqZWN0TWFwLmgKKysrIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05QUnVudGltZU9iamVj
dE1hcC5oCkBAIC0zNCw2ICszNCw3IEBAIHR5cGVkZWYgc3RydWN0IF9OUFZhcmlhbnQgTlBWYXJp
YW50OwogCiBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBFeGVjU3RhdGU7CisgICAgY2xhc3Mg
SlNHbG9iYWxEYXRhOwogICAgIGNsYXNzIEpTR2xvYmFsT2JqZWN0OwogICAgIGNsYXNzIEpTT2Jq
ZWN0OwogICAgIGNsYXNzIEpTVmFsdWU7CkBAIC02MSw3ICs2Miw3IEBAIHB1YmxpYzoKIAogICAg
IC8vIFJldHVybnMgYW4gTlBPYmplY3QgdGhhdCB3cmFwcyB0aGUgZ2l2ZW4gSlNPYmplY3Qgb2Jq
ZWN0LiBJZiB0aGVyZSBpcyBhbHJlYWR5IGFuIE5QT2JqZWN0IHRoYXQgd3JhcHMgdGhpcyBKU09i
amVjdCwgaXQgd2lsbAogICAgIC8vIHJldGFpbiBpdCBhbmQgcmV0dXJuIGl0LgotICAgIE5QT2Jq
ZWN0KiBnZXRPckNyZWF0ZU5QT2JqZWN0KEpTQzo6SlNPYmplY3QqKTsKKyAgICBOUE9iamVjdCog
Z2V0T3JDcmVhdGVOUE9iamVjdChKU0M6OkpTR2xvYmFsRGF0YSYsIEpTQzo6SlNPYmplY3QqKTsK
ICAgICB2b2lkIG5wSlNPYmplY3REZXN0cm95ZWQoTlBKU09iamVjdCopOwogCiAgICAgLy8gUmV0
dXJucyBhIEpTT2JqZWN0IG9iamVjdCB0aGF0IHdyYXBzIHRoZSBnaXZlbiBOUE9iamVjdC4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAppbmRl
eCA4YWM3ZDNhYjQ2M2VlNWM3ZWIzNjgzYjg0NDFmMGJkMWE5ZDQ4YjgzLi41OTAxMzg4MzE1ODYw
NzlhOWFlOTIzNDE2NzdiNDIyMTdhMDM2YjU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCkBAIC04ODMsNyArODgzLDcgQEAgTlBPYmpl
Y3QqIFBsdWdpblZpZXc6OndpbmRvd1NjcmlwdE5QT2JqZWN0KCkKICAgICAvLyBGSVhNRTogSGFu
ZGxlIEphdmFTY3JpcHQgYmVpbmcgZGlzYWJsZWQuCiAgICAgQVNTRVJUKGZyYW1lKCktPnNjcmlw
dCgpLT5jYW5FeGVjdXRlU2NyaXB0cyhOb3RBYm91dFRvRXhlY3V0ZVNjcmlwdCkpOwogCi0gICAg
cmV0dXJuIG1fbnBSdW50aW1lT2JqZWN0TWFwLmdldE9yQ3JlYXRlTlBPYmplY3QoZnJhbWUoKS0+
c2NyaXB0KCktPndpbmRvd1NoZWxsKHBsdWdpbldvcmxkKCkpLT53aW5kb3coKSk7CisgICAgcmV0
dXJuIG1fbnBSdW50aW1lT2JqZWN0TWFwLmdldE9yQ3JlYXRlTlBPYmplY3QoKnBsdWdpbldvcmxk
KCktPmdsb2JhbERhdGEoKSwgZnJhbWUoKS0+c2NyaXB0KCktPndpbmRvd1NoZWxsKHBsdWdpbldv
cmxkKCkpLT53aW5kb3coKSk7CiB9CiAKIE5QT2JqZWN0KiBQbHVnaW5WaWV3OjpwbHVnaW5FbGVt
ZW50TlBPYmplY3QoKQpAQCAtODk1LDcgKzg5NSw3IEBAIE5QT2JqZWN0KiBQbHVnaW5WaWV3Ojpw
bHVnaW5FbGVtZW50TlBPYmplY3QoKQogICAgIEpTT2JqZWN0KiBvYmplY3QgPSBmcmFtZSgpLT5z
Y3JpcHQoKS0+anNPYmplY3RGb3JQbHVnaW5FbGVtZW50KG1fcGx1Z2luRWxlbWVudC5nZXQoKSk7
CiAgICAgQVNTRVJUKG9iamVjdCk7CiAKLSAgICByZXR1cm4gbV9ucFJ1bnRpbWVPYmplY3RNYXAu
Z2V0T3JDcmVhdGVOUE9iamVjdChvYmplY3QpOworICAgIHJldHVybiBtX25wUnVudGltZU9iamVj
dE1hcC5nZXRPckNyZWF0ZU5QT2JqZWN0KCpwbHVnaW5Xb3JsZCgpLT5nbG9iYWxEYXRhKCksIG9i
amVjdCk7CiB9CiAKIGJvb2wgUGx1Z2luVmlldzo6ZXZhbHVhdGUoTlBPYmplY3QqIG5wT2JqZWN0
LCBjb25zdCBTdHJpbmcmIHNjcmlwdFN0cmluZywgTlBWYXJpYW50KiByZXN1bHQsIGJvb2wgYWxs
b3dQb3B1cHMpCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>