<?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>113256</bug_id>
          
          <creation_ts>2013-03-25 17:14:01 -0700</creation_ts>
          <short_desc>Crashes in NetworkProcess due to threading issues</short_desc>
          <delta_ts>2013-03-26 14:45:25 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Page Loading</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alexey Proskuryakov">ap</reporter>
          <assigned_to name="Alexey Proskuryakov">ap</assigned_to>
          <cc>dglazkov</cc>
    
    <cc>gtk-ews</cc>
    
    <cc>peter+ews</cc>
    
    <cc>webkit-ews</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>863191</commentid>
    <comment_count>0</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-03-25 17:14:01 -0700</bug_when>
    <thetext>NetworkProcess happily uses WebCore code from secondary threads. A few examples I found:
1. WebCoreCredentialStorage is now used from secondary threads, and has no locking whatsoever.
2. AuthenticaitonManager is now used from secondary threads, and m_challenges set is not protected.
3. ResourceRequests are used from multiple threads, and they contain AtomicStrings.

ResourceHandle code in general was never expected ot run fom non-main threads, so there can be more issues.

&lt;rdar://problem/13194263&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>863192</commentid>
    <comment_count>1</comment_count>
      <attachid>194956</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-03-25 17:14:48 -0700</bug_when>
    <thetext>Created attachment 194956
try EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>863198</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-25 17:18:02 -0700</bug_when>
    <thetext>Attachment 194956 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/WebCore.exp.in&apos;, u&apos;Source/WebCore/WebCore.xcodeproj/project.pbxproj&apos;, u&apos;Source/WebCore/platform/network/CredentialStorage.cpp&apos;, u&apos;Source/WebCore/platform/network/ResourceHandle.cpp&apos;, u&apos;Source/WebCore/platform/network/ResourceHandle.h&apos;, u&apos;Source/WebCore/platform/network/ResourceHandleClient.cpp&apos;, u&apos;Source/WebCore/platform/network/ResourceHandleClient.h&apos;, u&apos;Source/WebCore/platform/network/ResourceHandleInternal.h&apos;, u&apos;Source/WebCore/platform/network/mac/ResourceHandleMac.mm&apos;, u&apos;Source/WebCore/platform/network/mac/WebCoreResourceHandleAsDelegate.mm&apos;, u&apos;Source/WebCore/platform/network/mac/WebCoreResourceHandleAsOperationQueueDelegate.h&apos;, u&apos;Source/WebCore/platform/network/mac/WebCoreResourceHandleAsOperationQueueDelegate.mm&apos;, u&apos;Source/WebKit2/DerivedSources.make&apos;, u&apos;Source/WebKit2/NetworkProcess/NetworkConnectionToWebProcess.cpp&apos;, u&apos;Source/WebKit2/NetworkProcess/NetworkResourceLoader.cpp&apos;, u&apos;Source/WebKit2/NetworkProcess/NetworkResourceLoader.h&apos;, u&apos;Source/WebKit2/NetworkProcess/NetworkResourceLoader.messages.in&apos;, u&apos;Source/WebKit2/Shared/Authentication/AuthenticationManager.cpp&apos;, u&apos;Source/WebKit2/WebKit2.xcodeproj/project.pbxproj&apos;, u&apos;Source/WebKit2/WebProcess/Network/NetworkProcessConnection.cpp&apos;, u&apos;Source/WebKit2/WebProcess/Network/WebResourceLoader.cpp&apos;, u&apos;Source/WebKit2/WebProcess/Network/WebResourceLoader.h&apos;, u&apos;Source/WebKit2/WebProcess/Network/WebResourceLoader.messages.in&apos;]&quot; exit_code: 1
Source/WebCore/platform/network/mac/WebCoreResourceHandleAsOperationQueueDelegate.h:31:  Alphabetical sorting problem.  [build/include_order] [4]
Source/WebCore/platform/network/mac/WebCoreResourceHandleAsOperationQueueDelegate.h:35:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Total errors found: 2 in 22 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>863223</commentid>
    <comment_count>3</comment_count>
      <attachid>194956</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-03-25 17:40:40 -0700</bug_when>
    <thetext>Comment on attachment 194956
try EWS

Attachment 194956 did not pass qt-ews (qt):
Output: http://webkit-commit-queue.appspot.com/results/17319102</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>863228</commentid>
    <comment_count>4</comment_count>
      <attachid>194956</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-03-25 17:48:37 -0700</bug_when>
    <thetext>Comment on attachment 194956
try EWS

Attachment 194956 did not pass efl-ews (efl):
Output: http://webkit-commit-queue.appspot.com/results/17325104</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>863231</commentid>
    <comment_count>5</comment_count>
      <attachid>194956</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-03-25 17:51:35 -0700</bug_when>
    <thetext>Comment on attachment 194956
try EWS

Attachment 194956 did not pass qt-wk2-ews (qt):
Output: http://webkit-commit-queue.appspot.com/results/17297306</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>863232</commentid>
    <comment_count>6</comment_count>
      <attachid>194956</attachid>
    <who name="kov&apos;s GTK+ EWS bot">gtk-ews</who>
    <bug_when>2013-03-25 17:54:56 -0700</bug_when>
    <thetext>Comment on attachment 194956
try EWS

Attachment 194956 did not pass gtk-ews (gtk):
Output: http://webkit-commit-queue.appspot.com/results/17297308</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>863233</commentid>
    <comment_count>7</comment_count>
      <attachid>194966</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-03-25 17:57:17 -0700</bug_when>
    <thetext>Created attachment 194966
more EWS testing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>863234</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-25 18:01:21 -0700</bug_when>
    <thetext>Attachment 194966 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/WebCore.exp.in&apos;, u&apos;Source/WebCore/WebCore.xcodeproj/project.pbxproj&apos;, u&apos;Source/WebCore/platform/network/CredentialStorage.cpp&apos;, u&apos;Source/WebCore/platform/network/ResourceHandle.cpp&apos;, u&apos;Source/WebCore/platform/network/ResourceHandle.h&apos;, u&apos;Source/WebCore/platform/network/ResourceHandleClient.cpp&apos;, u&apos;Source/WebCore/platform/network/ResourceHandleClient.h&apos;, u&apos;Source/WebCore/platform/network/ResourceHandleInternal.h&apos;, u&apos;Source/WebCore/platform/network/mac/ResourceHandleMac.mm&apos;, u&apos;Source/WebCore/platform/network/mac/WebCoreResourceHandleAsDelegate.mm&apos;, u&apos;Source/WebCore/platform/network/mac/WebCoreResourceHandleAsOperationQueueDelegate.h&apos;, u&apos;Source/WebCore/platform/network/mac/WebCoreResourceHandleAsOperationQueueDelegate.mm&apos;, u&apos;Source/WebKit2/DerivedSources.make&apos;, u&apos;Source/WebKit2/NetworkProcess/NetworkConnectionToWebProcess.cpp&apos;, u&apos;Source/WebKit2/NetworkProcess/NetworkResourceLoader.cpp&apos;, u&apos;Source/WebKit2/NetworkProcess/NetworkResourceLoader.h&apos;, u&apos;Source/WebKit2/NetworkProcess/NetworkResourceLoader.messages.in&apos;, u&apos;Source/WebKit2/Shared/Authentication/AuthenticationManager.cpp&apos;, u&apos;Source/WebKit2/WebKit2.xcodeproj/project.pbxproj&apos;, u&apos;Source/WebKit2/WebProcess/Network/NetworkProcessConnection.cpp&apos;, u&apos;Source/WebKit2/WebProcess/Network/WebResourceLoader.cpp&apos;, u&apos;Source/WebKit2/WebProcess/Network/WebResourceLoader.h&apos;, u&apos;Source/WebKit2/WebProcess/Network/WebResourceLoader.messages.in&apos;]&quot; exit_code: 1
Source/WebCore/platform/network/mac/WebCoreResourceHandleAsOperationQueueDelegate.h:35:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Total errors found: 1 in 22 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>863276</commentid>
    <comment_count>9</comment_count>
      <attachid>194966</attachid>
    <who name="Peter Beverloo (cr-android ews)">peter+ews</who>
    <bug_when>2013-03-25 19:20:00 -0700</bug_when>
    <thetext>Comment on attachment 194966
more EWS testing

Attachment 194966 did not pass cr-android-ews (chromium-android):
Output: http://webkit-commit-queue.appspot.com/results/17227574</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>863279</commentid>
    <comment_count>10</comment_count>
      <attachid>194966</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-25 19:29:47 -0700</bug_when>
    <thetext>Comment on attachment 194966
more EWS testing

Attachment 194966 did not pass chromium-ews (chromium-xvfb):
Output: http://webkit-commit-queue.appspot.com/results/17328153</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>863280</commentid>
    <comment_count>11</comment_count>
      <attachid>194966</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-25 19:30:22 -0700</bug_when>
    <thetext>Comment on attachment 194966
more EWS testing

Attachment 194966 did not pass cr-linux-debug-ews (chromium-xvfb):
Output: http://webkit-commit-queue.appspot.com/results/17255432</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>863803</commentid>
    <comment_count>12</comment_count>
      <attachid>195111</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-03-26 10:31:56 -0700</bug_when>
    <thetext>Created attachment 195111
proposed fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>863808</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-26 10:35:09 -0700</bug_when>
    <thetext>Attachment 195111 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCore/WebCore.exp.in&apos;, u&apos;Source/WebCore/WebCore.xcodeproj/project.pbxproj&apos;, u&apos;Source/WebCore/platform/network/CredentialStorage.cpp&apos;, u&apos;Source/WebCore/platform/network/ResourceHandle.cpp&apos;, u&apos;Source/WebCore/platform/network/ResourceHandle.h&apos;, u&apos;Source/WebCore/platform/network/ResourceHandleClient.cpp&apos;, u&apos;Source/WebCore/platform/network/ResourceHandleClient.h&apos;, u&apos;Source/WebCore/platform/network/ResourceHandleInternal.h&apos;, u&apos;Source/WebCore/platform/network/chromium/ResourceHandle.cpp&apos;, u&apos;Source/WebCore/platform/network/mac/ResourceHandleMac.mm&apos;, u&apos;Source/WebCore/platform/network/mac/WebCoreResourceHandleAsDelegate.mm&apos;, u&apos;Source/WebCore/platform/network/mac/WebCoreResourceHandleAsOperationQueueDelegate.h&apos;, u&apos;Source/WebCore/platform/network/mac/WebCoreResourceHandleAsOperationQueueDelegate.mm&apos;, u&apos;Source/WebKit2/ChangeLog&apos;, u&apos;Source/WebKit2/DerivedSources.make&apos;, u&apos;Source/WebKit2/NetworkProcess/NetworkConnectionToWebProcess.cpp&apos;, u&apos;Source/WebKit2/NetworkProcess/NetworkResourceLoader.cpp&apos;, u&apos;Source/WebKit2/NetworkProcess/NetworkResourceLoader.h&apos;, u&apos;Source/WebKit2/NetworkProcess/NetworkResourceLoader.messages.in&apos;, u&apos;Source/WebKit2/Shared/Authentication/AuthenticationManager.cpp&apos;, u&apos;Source/WebKit2/WebKit2.xcodeproj/project.pbxproj&apos;, u&apos;Source/WebKit2/WebProcess/Network/NetworkProcessConnection.cpp&apos;, u&apos;Source/WebKit2/WebProcess/Network/WebResourceLoader.cpp&apos;, u&apos;Source/WebKit2/WebProcess/Network/WebResourceLoader.h&apos;, u&apos;Source/WebKit2/WebProcess/Network/WebResourceLoader.messages.in&apos;]&quot; exit_code: 1
Source/WebCore/platform/network/mac/WebCoreResourceHandleAsOperationQueueDelegate.h:35:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Total errors found: 1 in 25 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>863984</commentid>
    <comment_count>14</comment_count>
      <attachid>195111</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2013-03-26 14:03:21 -0700</bug_when>
    <thetext>Comment on attachment 195111
proposed fix

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

Scary

&gt; Source/WebCore/platform/network/mac/WebCoreResourceHandleAsOperationQueueDelegate.h:36
&gt;  namespace WebCore {
&gt;      class ResourceHandle;
&gt;  }

Indeed!  Don&apos;t care that it&apos;s old code, either.

#petpeeve</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>864005</commentid>
    <comment_count>15</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-03-26 14:30:24 -0700</bug_when>
    <thetext>Committed &lt;http://trac.webkit.org/r146929&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>864019</commentid>
    <comment_count>16</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-03-26 14:45:25 -0700</bug_when>
    <thetext>Some inconsequential cleanup in r146931.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>194956</attachid>
            <date>2013-03-25 17:14:48 -0700</date>
            <delta_ts>2013-03-25 17:57:17 -0700</delta_ts>
            <desc>try EWS</desc>
            <filename>ResourceHandleMainThread.txt</filename>
            <type>text/plain</type>
            <size>85388</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCShyZXZpc2lvbiAxNDY3ODUpCisrKyBTb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLmV4cC5pbgkod29ya2luZyBjb3B5KQpAQCAtMzQwLDggKzM0MCwxMiBAQCBf
X1pON1dlYkNvcmUxNFJlc291cmNlQnVmZmVyQzJFdgogX19aTjdXZWJDb3JlMTRSZXNvdXJjZUJ1
ZmZlckQxRXYKIF9fWk43V2ViQ29yZTE0UmVzb3VyY2VCdWZmZXJEMkV2CiBfX1pON1dlYkNvcmUx
NFJlc291cmNlSGFuZGxlMjBmb3JjZUNvbnRlbnRTbmlmZmluZ0V2CitfX1pON1dlYkNvcmUxNFJl
c291cmNlSGFuZGxlMjNjb250aW51ZVdpbGxTZW5kUmVxdWVzdEVSS05TXzE1UmVzb3VyY2VSZXF1
ZXN0RQorX19aTjdXZWJDb3JlMTRSZXNvdXJjZUhhbmRsZTI1Y29udGludWVXaWxsQ2FjaGVSZXNw
b25zZUVQMTlOU0NhY2hlZFVSTFJlc3BvbnNlCiBfX1pON1dlYkNvcmUxNFJlc291cmNlSGFuZGxl
MjVsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5RVBOU18xN05ldHdvcmtpbmdDb250ZXh0RVJLTlNf
MTVSZXNvdXJjZVJlcXVlc3RFTlNfMTdTdG9yZWRDcmVkZW50aWFsc0VSTlNfMTNSZXNvdXJjZUVy
cm9yRVJOU18xNlJlc291cmNlUmVzcG9uc2VFUk4zV1RGNlZlY3RvckljTG0wRUVFCiBfX1pON1dl
YkNvcmUxNFJlc291cmNlSGFuZGxlMjZzeW5jaHJvbm91c0xvYWRSdW5Mb29wTW9kZUV2CitfX1pO
N1dlYkNvcmUxNFJlc291cmNlSGFuZGxlMzRjb250aW51ZVNob3VsZFVzZUNyZWRlbnRpYWxTdG9y
YWdlRWIKK19fWk43V2ViQ29yZTE0UmVzb3VyY2VIYW5kbGU0NWNvbnRpbnVlQ2FuQXV0aGVudGlj
YXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZUViCiBfX1pON1dlYkNvcmUxNFJlc291cmNlSGFuZGxl
NmNyZWF0ZUVQTlNfMTdOZXR3b3JraW5nQ29udGV4dEVSS05TXzE1UmVzb3VyY2VSZXF1ZXN0RVBO
U18yMFJlc291cmNlSGFuZGxlQ2xpZW50RWJiCiBfX1pON1dlYkNvcmUxNFJlc291cmNlTG9hZGVy
MTRjYW5jZWxsZWRFcnJvckV2CiBfX1pON1dlYkNvcmUxNFJlc291cmNlTG9hZGVyNmNhbmNlbEV2
CkBAIC02MzIsNiArNjM2LDEwIEBAIF9fWk43V2ViQ29yZTIwTm9kZVJlbmRlcmluZ0NvbnRleHRD
MUVQTlMKIF9fWk43V2ViQ29yZTIwTm9kZVJlbmRlcmluZ0NvbnRleHREMUV2CiBfX1pON1dlYkNv
cmUyMFJlbmRlckVtYmVkZGVkT2JqZWN0MjlzZXRQbHVnaW5VbmF2YWlsYWJpbGl0eVJlYXNvbkVO
UzBfMjZQbHVnaW5VbmF2YWlsYWJpbGl0eVJlYXNvbkUKIF9fWk43V2ViQ29yZTIwUmVzb3VyY2VI
YW5kbGVDbGllbnQxNmRpZFJlY2VpdmVCdWZmZXJFUE5TXzE0UmVzb3VyY2VIYW5kbGVFTjNXVEYx
MFBhc3NSZWZQdHJJTlNfMTJTaGFyZWRCdWZmZXJFRUVpCitfX1pON1dlYkNvcmUyMFJlc291cmNl
SGFuZGxlQ2xpZW50MjB3aWxsU2VuZFJlcXVlc3RBc3luY0VQTlNfMTRSZXNvdXJjZUhhbmRsZUVS
S05TXzE1UmVzb3VyY2VSZXF1ZXN0RVJLTlNfMTZSZXNvdXJjZVJlc3BvbnNlRQorX19aTjdXZWJD
b3JlMjBSZXNvdXJjZUhhbmRsZUNsaWVudDIyd2lsbENhY2hlUmVzcG9uc2VBc3luY0VQTlNfMTRS
ZXNvdXJjZUhhbmRsZUVQMTlOU0NhY2hlZFVSTFJlc3BvbnNlCitfX1pON1dlYkNvcmUyMFJlc291
cmNlSGFuZGxlQ2xpZW50MzFzaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZUFzeW5jRVBOU18xNFJl
c291cmNlSGFuZGxlRQorX19aTjdXZWJDb3JlMjBSZXNvdXJjZUhhbmRsZUNsaWVudDQyY2FuQXV0
aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZUFzeW5jRVBOU18xNFJlc291cmNlSGFuZGxl
RVJLTlNfMTVQcm90ZWN0aW9uU3BhY2VFCiBfX1pON1dlYkNvcmUyMFJlc291cmNlSGFuZGxlQ2xp
ZW50QzJFdgogX19aTjdXZWJDb3JlMjBSZXNvdXJjZUhhbmRsZUNsaWVudEQyRXYKIF9fWk43V2Vi
Q29yZTIwUmVzb3VyY2VSZXNwb25zZUJhc2UxMXNldE1pbWVUeXBlRVJLTjNXVEY2U3RyaW5nRQpJ
bmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkocmV2aXNpb24gMTQ2Nzg1KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0zNTc4LDggKzM1NzgsOCBAQAog
CQk5NzNGNDE4QjE2OUI5NjAzMDAwNkJGNjAgLyogSFRNTFBhcnNlck9wdGlvbnMuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTczRjQxODcxNjlCOTVF
RjAwMDZCRjYwIC8qIEhUTUxQYXJzZXJPcHRpb25zLmNwcCAqLzsgfTsKIAkJOTc0MTg3RDMxNkE3
OTMyNzAwRkE3N0E3IC8qIEhUTUxQYXJzZXJUaHJlYWQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTc0MTg3RDAxNkE3OTMyMjAwRkE3N0E3IC8qIEhU
TUxQYXJzZXJUaHJlYWQuY3BwICovOyB9OwogCQk5NzQxODdENDE2QTc5MzI5MDBGQTc3QTcgLyog
SFRNTFBhcnNlclRocmVhZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gOTc0MTg3RDExNkE3OTMyMjAwRkE3N0E3IC8qIEhUTUxQYXJzZXJUaHJlYWQuaCAq
LzsgfTsKLQkJOTc0NkFGMjExNEY0RERFNjAwM0U3QTcyIC8qIENvb3JkaW5hdGVzLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3NDZBRjExMTRGNERE
RTYwMDNFN0E3MiAvKiBDb29yZGluYXRlcy5jcHAgKi87IH07CiAJCTk3NDZBRjIxMTRGNERERTYw
MDNFN0E3MSAvKiBDb29yZGluYXRlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gOTc0NkFGMTExNEY0RERFNjAwM0U3QTcwIC8qIENvb3JkaW5hdGVzLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJOTc0NkFG
MjExNEY0RERFNjAwM0U3QTcyIC8qIENvb3JkaW5hdGVzLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3NDZBRjExMTRGNERERTYwMDNFN0E3MiAvKiBD
b29yZGluYXRlcy5jcHAgKi87IH07CiAJCTk3NDZBRjIzMTRGNERERTYwMDNFN0E3MCAvKiBHZW9s
b2NhdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA5NzQ2QUYxMzE0RjREREU2MDAzRTdBNzAgLyogR2VvbG9jYXRpb24uY3BwICovOyB9OwogCQk5
NzQ2QUYyNDE0RjREREU2MDAzRTdBNzAgLyogR2VvbG9jYXRpb24uaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3NDZBRjE0MTRGNERERTYwMDNFN0E3MCAv
KiBHZW9sb2NhdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTk3NDZBRjI1MTRGNERERTYwMDNFN0E3MSAvKiBHZW9sb2NhdGlvbkNsaWVudC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTc0NkFGMTUx
NEY0RERFNjAwM0U3QTcxIC8qIEdlb2xvY2F0aW9uQ2xpZW50LmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTYyMjAsNiArNjIyMCw4IEBACiAJCUUx
NEYxQzQ1MTRCNURBQzYwMEVBOTAwOSAvKiBIVE1MRm9ybUNvbnRyb2xFbGVtZW50V2l0aFN0YXRl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTRGMUM0
MzE0QjVEQUM2MDBFQTkwMDkgLyogSFRNTEZvcm1Db250cm9sRWxlbWVudFdpdGhTdGF0ZS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUxNTEzRDRG
MTY3N0VBODMwMDE0OUZDQiAvKiBJbml0aWFsaXplTG9nZ2luZy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTE1MTNENEUxNjc3RUE4MzAwMTQ5RkNCIC8q
IEluaXRpYWxpemVMb2dnaW5nLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJRTE1MTNENTExNjc3RjA4ODAwMTQ5RkNCIC8qIE5vdEltcGxlbWVudGVk
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxNTEz
RDUwMTY3N0YwODgwMDE0OUZDQiAvKiBOb3RJbXBsZW1lbnRlZC5jcHAgKi87IH07CisJCUUxNTI1
NTE1MTZGRDIzNTAwMDNEN0FEQiAvKiBXZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1
ZXVlRGVsZWdhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEUxNTI1NTEzMTZGRDIzNEYwMDNEN0FEQiAvKiBXZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09w
ZXJhdGlvblF1ZXVlRGVsZWdhdGUuaCAqLzsgfTsKKwkJRTE1MjU1MTYxNkZEMjM1MDAwM0Q3QURC
IC8qIFdlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZS5tbSBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxNTI1NTE0MTZGRDIz
NEYwMDNEN0FEQiAvKiBXZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdh
dGUubW0gKi87IH07CiAJCUUxNUEzNkQ3MTEwNDU3MjAwMEI3QjYzOSAvKiBYTUxOU05hbWVzLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTVBMzZENjEx
MDQ1NzIwMDBCN0I2MzkgLyogWE1MTlNOYW1lcy5oICovOyB9OwogCQlFMTVBMzZEOTExMDQ1NzI3
MDBCN0I2MzkgLyogWE1MTlNOYW1lcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBFMTVBMzZEODExMDQ1NzI3MDBCN0I2MzkgLyogWE1MTlNOYW1lcy5j
cHAgKi87IH07CiAJCUUxNjk4MDNEMTEzMzU0MkQwMDg5NDExNSAvKiBDUnVudGltZU9iamVjdC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTE2OTgwM0Mx
MTMzNTQyRDAwODk0MTE1IC8qIENSdW50aW1lT2JqZWN0LmggKi87IH07CkBAIC0xMTA5Nyw4ICsx
MTA5OSw4IEBACiAJCTk3M0Y0MTg4MTY5Qjk1RUYwMDA2QkY2MCAvKiBIVE1MUGFyc2VyT3B0aW9u
cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBIVE1MUGFyc2VyT3B0aW9ucy5o
OyBwYXRoID0gcGFyc2VyL0hUTUxQYXJzZXJPcHRpb25zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTk3NDE4N0QwMTZBNzkzMjIwMEZBNzdBNyAvKiBIVE1MUGFyc2VyVGhyZWFkLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEhUTUxQYXJzZXJUaHJlYWQu
Y3BwOyBwYXRoID0gcGFyc2VyL0hUTUxQYXJzZXJUaHJlYWQuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk5NzQxODdEMTE2QTc5MzIyMDBGQTc3QTcgLyogSFRNTFBhcnNlclRocmVh
ZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBIVE1MUGFyc2VyVGhyZWFkLmg7
IHBhdGggPSBwYXJzZXIvSFRNTFBhcnNlclRocmVhZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQk5NzQ2QUYxMTE0RjREREU2MDAzRTdBNzIgLyogQ29vcmRpbmF0ZXMuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gQ29vcmRpbmF0ZXMuY3BwOyBwYXRoID0g
TW9kdWxlcy9nZW9sb2NhdGlvbi9Db29yZGluYXRlcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTk3NDZBRjExMTRGNERERTYwMDNFN0E3MCAvKiBDb29yZGluYXRlcy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBDb29yZGluYXRlcy5oOyBwYXRoID0gTW9kdWxl
cy9nZW9sb2NhdGlvbi9Db29yZGluYXRlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk5NzQ2QUYxMTE0RjREREU2MDAzRTdBNzIgLyogQ29vcmRpbmF0ZXMuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gQ29vcmRpbmF0ZXMuY3BwOyBwYXRoID0gTW9kdWxl
cy9nZW9sb2NhdGlvbi9Db29yZGluYXRlcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTk3NDZBRjEyMTRGNERERTYwMDNFN0E3MCAvKiBDb29yZGluYXRlcy5pZGwgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSB0ZXh0OyBuYW1lID0gQ29vcmRpbmF0ZXMuaWRsOyBwYXRoID0gTW9kdWxlcy9nZW9sb2NhdGlv
bi9Db29yZGluYXRlcy5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk3NDZBRjEz
MTRGNERERTYwMDNFN0E3MCAvKiBHZW9sb2NhdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IG5hbWUgPSBHZW9sb2NhdGlvbi5jcHA7IHBhdGggPSBNb2R1bGVzL2dlb2xvY2F0
aW9uL0dlb2xvY2F0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTc0NkFG
MTQxNEY0RERFNjAwM0U3QTcwIC8qIEdlb2xvY2F0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgbmFtZSA9IEdlb2xvY2F0aW9uLmg7IHBhdGggPSBNb2R1bGVzL2dlb2xvY2F0aW9uL0dl
b2xvY2F0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMzkzOSw2ICsxMzk0
MSw4IEBACiAJCUUxNEYxQzQzMTRCNURBQzYwMEVBOTAwOSAvKiBIVE1MRm9ybUNvbnRyb2xFbGVt
ZW50V2l0aFN0YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhUTUxGb3Jt
Q29udHJvbEVsZW1lbnRXaXRoU3RhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
RTE1MTNENEUxNjc3RUE4MzAwMTQ5RkNCIC8qIEluaXRpYWxpemVMb2dnaW5nLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluaXRpYWxpemVMb2dnaW5nLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUUxNTEzRDUwMTY3N0YwODgwMDE0OUZDQiAvKiBOb3RJbXBsZW1l
bnRlZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBOb3RJbXBsZW1l
bnRlZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUxNTI1NTEzMTZGRDIzNEYw
MDNEN0FEQiAvKiBXZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGUu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQ29yZVJlc291cmNlSGFuZGxl
QXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUUxNTI1NTE0MTZGRDIzNEYwMDNEN0FEQiAvKiBXZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJh
dGlvblF1ZXVlRGVsZWdhdGUubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBh
dGggPSBXZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGUubW07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUxNUEzNkQ2MTEwNDU3MjAwMEI3QjYzOSAvKiBY
TUxOU05hbWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFhNTE5TTmFtZXMu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTE1QTM2RDgxMTA0NTcyNzAwQjdCNjM5
IC8qIFhNTE5TTmFtZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
WE1MTlNOYW1lcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUxNjk4MDNDMTEz
MzU0MkQwMDg5NDExNSAvKiBDUnVudGltZU9iamVjdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBDUnVudGltZU9iamVjdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtMTYzNDksOCArMTYzNTMsMTAgQEAKIAkJCQk1MTRDNzY0QjBDRTkyMzRFMDA3RUYzQ0QgLyog
UmVzb3VyY2VSZXNwb25zZU1hYy5tbSAqLywKIAkJCQkxRkFGQkYxNjE1QTVGQTUyMDAwODNBMjAg
LyogVVRJVXRpbGl0aWVzLmggKi8sCiAJCQkJMUZBRkJGMTcxNUE1RkE1MjAwMDgzQTIwIC8qIFVU
SVV0aWxpdGllcy5tbSAqLywKLQkJCQlFMTgwODEwQzE2RkNFQ0RGMDBCODBEMDcgLyogV2ViQ29y
ZVJlc291cmNlSGFuZGxlQXNEZWxlZ2F0ZS5tbSAqLywKIAkJCQlFMTgwODEwRDE2RkNFQ0RGMDBC
ODBEMDcgLyogV2ViQ29yZVJlc291cmNlSGFuZGxlQXNEZWxlZ2F0ZS5oICovLAorCQkJCUUxODA4
MTBDMTZGQ0VDREYwMEI4MEQwNyAvKiBXZWJDb3JlUmVzb3VyY2VIYW5kbGVBc0RlbGVnYXRlLm1t
ICovLAorCQkJCUUxNTI1NTEzMTZGRDIzNEYwMDNEN0FEQiAvKiBXZWJDb3JlUmVzb3VyY2VIYW5k
bGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGUuaCAqLywKKwkJCQlFMTUyNTUxNDE2RkQyMzRGMDAz
RDdBREIgLyogV2ViQ29yZVJlc291cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlLm1t
ICovLAogCQkJCUUxODA4MTE0MTZGQ0Y5Q0IwMEI4MEQwNyAvKiBTeW5jaHJvbm91c0xvYWRlckNs
aWVudC5tbSAqLywKIAkJCQkzN0Y4MThGQjBENjU3NjA2MDA1RTFGMDUgLyogV2ViQ29yZVVSTFJl
c3BvbnNlLmggKi8sCiAJCQkJMzdGODE4RkMwRDY1NzYwNjAwNUUxRjA1IC8qIFdlYkNvcmVVUkxS
ZXNwb25zZS5tbSAqLywKQEAgLTI2Nzg0LDYgKzI2NzkwLDcgQEAKIAkJCQk1MEUxOENEQTE2Rjky
ODU4MDBDNjU0ODYgLyogU3R5bGVDdXN0b21GaWx0ZXJQcm9ncmFtQ2FjaGUuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUUxODA4MTBGMTZGQ0VDREYwMEI4MEQwNyAvKiBXZWJDb3JlUmVzb3VyY2VIYW5k
bGVBc0RlbGVnYXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMTgwODExNzE2RkNGOUNCMDBCODBE
MDcgLyogU3luY2hyb25vdXNMb2FkZXJDbGllbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCUUxNTI1
NTE1MTZGRDIzNTAwMDNEN0FEQiAvKiBXZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1
ZXVlRGVsZWdhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3lt
ZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMjk5OTUsNiArMzAwMDIsNyBAQAogCQkJ
CUUxODA4MTBFMTZGQ0VDREYwMEI4MEQwNyAvKiBXZWJDb3JlUmVzb3VyY2VIYW5kbGVBc0RlbGVn
YXRlLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJRTE4MDgxMTIxNkZDRjQyRjAwQjgwRDA3IC8qIFN5
bmNocm9ub3VzTG9hZGVyQ2xpZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUxODA4MTE2MTZG
Q0Y5Q0IwMEI4MEQwNyAvKiBTeW5jaHJvbm91c0xvYWRlckNsaWVudC5tbSBpbiBTb3VyY2VzICov
LAorCQkJCUUxNTI1NTE2MTZGRDIzNTAwMDNEN0FEQiAvKiBXZWJDb3JlUmVzb3VyY2VIYW5kbGVB
c09wZXJhdGlvblF1ZXVlRGVsZWdhdGUubW0gaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5P
bmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQ3JlZGVudGlhbFN0b3JhZ2UuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQ3JlZGVudGlhbFN0b3JhZ2UuY3Bw
CShyZXZpc2lvbiAxNDY3ODUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Ny
ZWRlbnRpYWxTdG9yYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMsNiArMzMsNyBAQAogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgog
I2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CisjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KICNp
bmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTQw
LDEyICs0MSwxNCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiB0eXBlZGVmIEhhc2hNYXA8UHJvdGVj
dGlvblNwYWNlLCBDcmVkZW50aWFsPiBQcm90ZWN0aW9uU3BhY2VUb0NyZWRlbnRpYWxNYXA7CiBz
dGF0aWMgUHJvdGVjdGlvblNwYWNlVG9DcmVkZW50aWFsTWFwJiBwcm90ZWN0aW9uU3BhY2VUb0Ny
ZWRlbnRpYWxNYXAoKQogeworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgREVGSU5F
X1NUQVRJQ19MT0NBTChQcm90ZWN0aW9uU3BhY2VUb0NyZWRlbnRpYWxNYXAsIG1hcCwgKCkpOwog
ICAgIHJldHVybiBtYXA7CiB9CiAKIHN0YXRpYyBIYXNoU2V0PFN0cmluZz4mIG9yaWdpbnNXaXRo
Q3JlZGVudGlhbHMoKQogeworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgREVGSU5F
X1NUQVRJQ19MT0NBTChIYXNoU2V0PFN0cmluZz4sIHNldCwgKCkpOwogICAgIHJldHVybiBzZXQ7
CiB9CkBAIC01Myw2ICs1Niw3IEBAIHN0YXRpYyBIYXNoU2V0PFN0cmluZz4mIG9yaWdpbnNXaXRo
Q3JlZGUKIHR5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIFByb3RlY3Rpb25TcGFjZT4gUGF0aFRvRGVm
YXVsdFByb3RlY3Rpb25TcGFjZU1hcDsKIHN0YXRpYyBQYXRoVG9EZWZhdWx0UHJvdGVjdGlvblNw
YWNlTWFwJiBwYXRoVG9EZWZhdWx0UHJvdGVjdGlvblNwYWNlTWFwKCkKIHsKKyAgICBBU1NFUlQo
aXNNYWluVGhyZWFkKCkpOwogICAgIERFRklORV9TVEFUSUNfTE9DQUwoUGF0aFRvRGVmYXVsdFBy
b3RlY3Rpb25TcGFjZU1hcCwgbWFwLCAoKSk7CiAgICAgcmV0dXJuIG1hcDsKIH0KSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuY3Bw
CShyZXZpc2lvbiAxNDY3ODUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jl
c291cmNlSGFuZGxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQ3LDYgKzE0NywyNiBAQCB2b2lk
IFJlc291cmNlSGFuZGxlOjpzZXRDbGllbnQoUmVzb3VyY2VICiAgICAgZC0+bV9jbGllbnQgPSBj
bGllbnQ7CiB9CiAKKyNpZiAhUExBVEZPUk0oTUFDKQorLy8gUmVzb3VyY2VIYW5kbGUgbmV2ZXIg
dXNlcyBhc3luYyBjbGllbnQgY2FsbHMgb24gdGhlc2UgcGxhdGZvcm1zIHlldC4KK3ZvaWQgUmVz
b3VyY2VIYW5kbGU6OmNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVz
dCYpCit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKK3ZvaWQgUmVzb3VyY2VIYW5k
bGU6OmNvbnRpbnVlU2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UoYm9vbCkKK3sKKyAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKK30KKworI2lmIFVTRShQUk9URUNUSU9OX1NQQUNFX0FVVEhfQ0FM
TEJBQ0spCit2b2lkIFJlc291cmNlSGFuZGxlOjpjb250aW51ZUNhbkF1dGhlbnRpY2F0ZUFnYWlu
c3RQcm90ZWN0aW9uU3BhY2UoYm9vbCkKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30K
KyNlbmRpZgorI2VuZGlmCisKIFJlc291cmNlUmVxdWVzdCYgUmVzb3VyY2VIYW5kbGU6OmZpcnN0
UmVxdWVzdCgpCiB7CiAgICAgcmV0dXJuIGQtPm1fZmlyc3RSZXF1ZXN0OwpJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuaAkocmV2aXNp
b24gMTQ2Nzg1KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhh
bmRsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01NSw2ICs1NSw3IEBAIHR5cGVkZWYgTFBWT0lEIEhJ
TlRFUk5FVDsKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oTUFDKQorT0JKQ19DTEFTUyBOU0NhY2hl
ZFVSTFJlc3BvbnNlOwogT0JKQ19DTEFTUyBOU0RhdGE7CiBPQkpDX0NMQVNTIE5TRXJyb3I7CiBP
QkpDX0NMQVNTIE5TVVJMQ29ubmVjdGlvbjsKQEAgLTEyNSw3ICsxMjYsNyBAQCBwdWJsaWM6CiAj
aWYgIVVTRShDRk5FVFdPUkspCiAgICAgdm9pZCBkaWRDYW5jZWxBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZShjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpOwogICAgIE5TVVJMQ29ubmVjdGlv
biAqY29ubmVjdGlvbigpIGNvbnN0OwotICAgIFdlYkNvcmVSZXNvdXJjZUhhbmRsZUFzRGVsZWdh
dGUgKmRlbGVnYXRlKCk7CisgICAgaWQgZGVsZWdhdGUoKTsKICAgICB2b2lkIHJlbGVhc2VEZWxl
Z2F0ZSgpOwogICAgIGlkIHJlbGVhc2VQcm94eSgpOwogI2VuZGlmCkBAIC0xODgsMTAgKzE4OSwy
MyBAQCBwdWJsaWM6CiAgICAgUmVzb3VyY2VIYW5kbGVDbGllbnQqIGNsaWVudCgpIGNvbnN0Owog
ICAgIHZvaWQgc2V0Q2xpZW50KFJlc291cmNlSGFuZGxlQ2xpZW50Kik7CiAKKyAgICAvLyBDYWxs
ZWQgaW4gcmVzcG9uc2UgdG8gUmVzb3VyY2VIYW5kbGVDbGllbnQ6OndpbGxTZW5kUmVxdWVzdEFz
eW5jKCkuCisgICAgdm9pZCBjb250aW51ZVdpbGxTZW5kUmVxdWVzdChjb25zdCBSZXNvdXJjZVJl
cXVlc3QmKTsKKyAgICAvLyBDYWxsZWQgaW4gcmVzcG9uc2UgdG8gUmVzb3VyY2VIYW5kbGVDbGll
bnQ6OnNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlQXN5bmMoKS4KKyAgICB2b2lkIGNvbnRpbnVl
U2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UoYm9vbCk7CisjaWYgVVNFKFBST1RFQ1RJT05fU1BB
Q0VfQVVUSF9DQUxMQkFDSykKKyAgICAvLyBDYWxsZWQgaW4gcmVzcG9uc2UgdG8gUmVzb3VyY2VI
YW5kbGVDbGllbnQ6OmNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2VBc3luYygp
LgorICAgIHZvaWQgY29udGludWVDYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNl
KGJvb2wpOworI2VuZGlmCisjaWYgUExBVEZPUk0oTUFDKQorICAgIC8vIENhbGxlZCBpbiByZXNw
b25zZSB0byBSZXNvdXJjZUhhbmRsZUNsaWVudDo6d2lsbENhY2hlUmVzcG9uc2VBc3luYygpLgor
ICAgIHZvaWQgY29udGludWVXaWxsQ2FjaGVSZXNwb25zZShOU0NhY2hlZFVSTFJlc3BvbnNlICop
OworI2VuZGlmCisKICAgICB2b2lkIHNldERlZmVyc0xvYWRpbmcoYm9vbCk7CiAKICNpZiBQTEFU
Rk9STShCTEFDS0JFUlJZKQotICAgIHZvaWQgcGF1c2VMb2FkKGJvb2wpOworICAgIHZvaWQgcGF1
c2VMb2FkKGJvb2wpOyAvLyBGSVhNRTogSG93IGlzIHRoaXMgZGlmZmVyZW50IGZyb20gc2V0RGVm
ZXJzTG9hZGluZygpPwogI2VuZGlmCiAKICAgICB2b2lkIGRpZENoYW5nZVByaW9yaXR5KFJlc291
cmNlTG9hZFByaW9yaXR5KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
UmVzb3VyY2VIYW5kbGVDbGllbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuY3BwCShyZXZpc2lvbiAxNDY3ODUp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTIsNiArNTIsMjggQEAgUmVzb3VyY2VIYW5kbGVDbGll
bnQ6On5SZXNvdXJjZUhhbmRsZUNsaQogI2VuZGlmCiB9CiAKK3ZvaWQgUmVzb3VyY2VIYW5kbGVD
bGllbnQ6OndpbGxTZW5kUmVxdWVzdEFzeW5jKFJlc291cmNlSGFuZGxlKiBoYW5kbGUsIGNvbnN0
IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgLypyZWRp
cmVjdFJlc3BvbnNlKi8pCit7CisgICAgaGFuZGxlLT5jb250aW51ZVdpbGxTZW5kUmVxdWVzdChy
ZXF1ZXN0KTsKK30KKwordm9pZCBSZXNvdXJjZUhhbmRsZUNsaWVudDo6c2hvdWxkVXNlQ3JlZGVu
dGlhbFN0b3JhZ2VBc3luYyhSZXNvdXJjZUhhbmRsZSogaGFuZGxlKQoreworICAgIGhhbmRsZS0+
Y29udGludWVTaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZShmYWxzZSk7Cit9CisKK3ZvaWQgUmVz
b3VyY2VIYW5kbGVDbGllbnQ6OmNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2VB
c3luYyhSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBjb25zdCBQcm90ZWN0aW9uU3BhY2UmKQorewor
ICAgIGhhbmRsZS0+Y29udGludWVDYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNl
KGZhbHNlKTsKK30KKworI2lmIFBMQVRGT1JNKE1BQykKK3ZvaWQgUmVzb3VyY2VIYW5kbGVDbGll
bnQ6OndpbGxDYWNoZVJlc3BvbnNlQXN5bmMoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwgTlNDYWNo
ZWRVUkxSZXNwb25zZSAqcmVzcG9uc2UpCit7CisgICAgaGFuZGxlLT5jb250aW51ZVdpbGxDYWNo
ZVJlc3BvbnNlKHJlc3BvbnNlKTsKK30KKyNlbmRpZgorCiB2b2lkIFJlc291cmNlSGFuZGxlQ2xp
ZW50OjpkaWRSZWNlaXZlQnVmZmVyKFJlc291cmNlSGFuZGxlKiBoYW5kbGUsIFBhc3NSZWZQdHI8
U2hhcmVkQnVmZmVyPiBidWZmZXIsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkKIHsKICAgICBkaWRS
ZWNlaXZlRGF0YShoYW5kbGUsIGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSwgZW5jb2Rl
ZERhdGFMZW5ndGgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNv
dXJjZUhhbmRsZUNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuaAkocmV2aXNpb24gMTQ2Nzg1KQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC03Niw2ICs3NiwxOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAg
IHZpcnR1YWwgdm9pZCBjYW5ub3RTaG93VVJMKFJlc291cmNlSGFuZGxlKikgeyB9CiAKICAgICAg
ICAgdmlydHVhbCBib29sIHVzZXNBc3luY0NhbGxiYWNrcygpIHsgcmV0dXJuIGZhbHNlOyB9Cisg
ICAgICAgIC8vIENsaWVudCB3aWxsIHBhc3MgYW4gdXBkYXRlZCByZXF1ZXN0IHVzaW5nIFJlc291
cmNlSGFuZGxlOjpjb250aW51ZVdpbGxTZW5kUmVxdWVzdCgpIHdoZW4gcmVhZHkuCisgICAgICAg
IHZpcnR1YWwgdm9pZCB3aWxsU2VuZFJlcXVlc3RBc3luYyhSZXNvdXJjZUhhbmRsZSosIGNvbnN0
IFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9u
c2UpOworICAgICAgICAvLyBDbGllbnQgd2lsbCBwYXNzIGFuIHVwZGF0ZWQgcmVxdWVzdCB1c2lu
ZyBSZXNvdXJjZUhhbmRsZTo6Y29udGludWVTaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZSgpIHdo
ZW4gcmVhZHkuCisgICAgICAgIHZpcnR1YWwgdm9pZCBzaG91bGRVc2VDcmVkZW50aWFsU3RvcmFn
ZUFzeW5jKFJlc291cmNlSGFuZGxlKik7CisjaWYgVVNFKFBST1RFQ1RJT05fU1BBQ0VfQVVUSF9D
QUxMQkFDSykKKyAgICAgICAgLy8gQ2xpZW50IHdpbGwgcGFzcyBhbiB1cGRhdGVkIHJlcXVlc3Qg
dXNpbmcgUmVzb3VyY2VIYW5kbGU6OmNvbnRpbnVlQ2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3Rl
Y3Rpb25TcGFjZSgpIHdoZW4gcmVhZHkuCisgICAgICAgIHZpcnR1YWwgdm9pZCBjYW5BdXRoZW50
aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlQXN5bmMoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBQ
cm90ZWN0aW9uU3BhY2UmKTsKKyNlbmRpZgorI2lmIFBMQVRGT1JNKE1BQykKKyAgICAgICAgLy8g
Q2xpZW50IHdpbGwgcGFzcyBhbiB1cGRhdGVkIHJlcXVlc3QgdXNpbmcgUmVzb3VyY2VIYW5kbGU6
OmNvbnRpbnVlV2lsbENhY2hlUmVzcG9uc2UoKSB3aGVuIHJlYWR5LgorICAgICAgICB2aXJ0dWFs
IHZvaWQgd2lsbENhY2hlUmVzcG9uc2VBc3luYyhSZXNvdXJjZUhhbmRsZSosIE5TQ2FjaGVkVVJM
UmVzcG9uc2UgKik7CisjZW5kaWYKIAogI2lmIFVTRShORVRXT1JLX0NGREFUQV9BUlJBWV9DQUxM
QkFDSykKICAgICAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzRGF0YUFycmF5KCkgeyByZXR1cm4g
ZmFsc2U7IH0KQEAgLTk4LDcgKzExMCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICNpZiBVU0Uo
Q0ZORVRXT1JLKQogICAgICAgICB2aXJ0dWFsIENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYgd2lsbENh
Y2hlUmVzcG9uc2UoUmVzb3VyY2VIYW5kbGUqLCBDRkNhY2hlZFVSTFJlc3BvbnNlUmVmIHJlc3Bv
bnNlKSB7IHJldHVybiByZXNwb25zZTsgfQogI2Vsc2UKLSAgICAgICAgdmlydHVhbCBOU0NhY2hl
ZFVSTFJlc3BvbnNlKiB3aWxsQ2FjaGVSZXNwb25zZShSZXNvdXJjZUhhbmRsZSosIE5TQ2FjaGVk
VVJMUmVzcG9uc2UqIHJlc3BvbnNlKSB7IHJldHVybiByZXNwb25zZTsgfQorICAgICAgICB2aXJ0
dWFsIE5TQ2FjaGVkVVJMUmVzcG9uc2UgKndpbGxDYWNoZVJlc3BvbnNlKFJlc291cmNlSGFuZGxl
KiwgTlNDYWNoZWRVUkxSZXNwb25zZSAqcmVzcG9uc2UpIHsgcmV0dXJuIHJlc3BvbnNlOyB9CiAj
ZW5kaWYKICAgICAgICAgdmlydHVhbCB2b2lkIHdpbGxTdG9wQnVmZmVyaW5nRGF0YShSZXNvdXJj
ZUhhbmRsZSosIGNvbnN0IGNoYXIqLCBpbnQpIHsgfQogI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVJbnRl
cm5hbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVz
b3VyY2VIYW5kbGVJbnRlcm5hbC5oCShyZXZpc2lvbiAxNDY3ODUpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlSW50ZXJuYWwuaAkod29ya2luZyBjb3B5
KQpAQCAtMTYwLDcgKzE2MCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICNlbmRpZgogI2lmIFBM
QVRGT1JNKE1BQykgJiYgIVVTRShDRk5FVFdPUkspCiAgICAgICAgIFJldGFpblB0cjxOU1VSTENv
bm5lY3Rpb24+IG1fY29ubmVjdGlvbjsKLSAgICAgICAgUmV0YWluUHRyPFdlYkNvcmVSZXNvdXJj
ZUhhbmRsZUFzRGVsZWdhdGU+IG1fZGVsZWdhdGU7CisgICAgICAgIFJldGFpblB0cjxpZD4gbV9k
ZWxlZ2F0ZTsKICAgICAgICAgUmV0YWluUHRyPGlkPiBtX3Byb3h5OwogI2VuZGlmCiAjaWYgUExB
VEZPUk0oTUFDKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVz
b3VyY2VIYW5kbGVNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9tYWMvUmVzb3VyY2VIYW5kbGVNYWMubW0JKHJldmlzaW9uIDE0Njc4NSkKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlSGFuZGxlTWFjLm1tCSh3
b3JraW5nIGNvcHkpCkBAIC00OCw2ICs0OCw3IEBACiAjaW1wb3J0ICJTaGFyZWRCdWZmZXIuaCIK
ICNpbXBvcnQgIlN1YnJlc291cmNlTG9hZGVyLmgiCiAjaW1wb3J0ICJXZWJDb3JlUmVzb3VyY2VI
YW5kbGVBc0RlbGVnYXRlLmgiCisjaW1wb3J0ICJXZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJh
dGlvblF1ZXVlRGVsZWdhdGUuaCIKICNpbXBvcnQgIlN5bmNocm9ub3VzTG9hZGVyQ2xpZW50Lmgi
CiAjaW1wb3J0ICJXZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmgiCiAjaW1wb3J0ICJXZWJDb3JlVVJM
UmVzcG9uc2UuaCIKQEAgLTI1NiwxMCArMjU3LDEyIEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6OnVu
c2NoZWR1bGUoU2NoZWR1bGUKICAgICAgICAgW2QtPm1fY29ubmVjdGlvbi5nZXQoKSB1bnNjaGVk
dWxlRnJvbVJ1bkxvb3A6cnVuTG9vcCBmb3JNb2RlOihOU1N0cmluZyAqKXBhaXItPm1vZGUoKV07
CiB9CiAKLVdlYkNvcmVSZXNvdXJjZUhhbmRsZUFzRGVsZWdhdGUgKlJlc291cmNlSGFuZGxlOjpk
ZWxlZ2F0ZSgpCitpZCBSZXNvdXJjZUhhbmRsZTo6ZGVsZWdhdGUoKQogewogICAgIGlmICghZC0+
bV9kZWxlZ2F0ZSkgewotICAgICAgICBXZWJDb3JlUmVzb3VyY2VIYW5kbGVBc0RlbGVnYXRlICpk
ZWxlZ2F0ZSA9IFtbV2ViQ29yZVJlc291cmNlSGFuZGxlQXNEZWxlZ2F0ZSBhbGxvY10gaW5pdFdp
dGhIYW5kbGU6dGhpc107CisgICAgICAgIGlkIDxOU1VSTENvbm5lY3Rpb25EZWxlZ2F0ZT4gZGVs
ZWdhdGUgPSAoY2xpZW50KCkgJiYgY2xpZW50KCktPnVzZXNBc3luY0NhbGxiYWNrcygpKSA/Cisg
ICAgICAgICAgICBbW1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0
ZSBhbGxvY10gaW5pdFdpdGhIYW5kbGU6dGhpc10KKyAgICAgICAgICA6IFtbV2ViQ29yZVJlc291
cmNlSGFuZGxlQXNEZWxlZ2F0ZSBhbGxvY10gaW5pdFdpdGhIYW5kbGU6dGhpc107CiAgICAgICAg
IGQtPm1fZGVsZWdhdGUgPSBkZWxlZ2F0ZTsKICAgICAgICAgW2RlbGVnYXRlIHJlbGVhc2VdOwog
ICAgIH0KQEAgLTI3Miw3ICsyNzUsNyBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjpyZWxlYXNlRGVs
ZWdhdGUoKQogICAgICAgICByZXR1cm47CiAgICAgaWYgKGQtPm1fcHJveHkpCiAgICAgICAgIFtk
LT5tX3Byb3h5LmdldCgpIHNldERlbGVnYXRlOm5pbF07Ci0gICAgW2QtPm1fZGVsZWdhdGUuZ2V0
KCkgZGV0YWNoSGFuZGxlXTsKKyAgICBbKGlkKWQtPm1fZGVsZWdhdGUuZ2V0KCkgZGV0YWNoSGFu
ZGxlXTsKICAgICBkLT5tX2RlbGVnYXRlID0gbmlsOwogfQogCkBAIC00MDAsMjAgKzQwMyw0NiBA
QCB2b2lkIFJlc291cmNlSGFuZGxlOjp3aWxsU2VuZFJlcXVlc3QoUmVzCiAgICAgICAgIH0KICAg
ICB9CiAKLSAgICBSZWZQdHI8UmVzb3VyY2VIYW5kbGU+IHByb3RlY3QodGhpcyk7Ci0gICAgY2xp
ZW50KCktPndpbGxTZW5kUmVxdWVzdCh0aGlzLCByZXF1ZXN0LCByZWRpcmVjdFJlc3BvbnNlKTsK
KyAgICBpZiAoY2xpZW50KCktPnVzZXNBc3luY0NhbGxiYWNrcygpKSB7CisgICAgICAgIGNsaWVu
dCgpLT53aWxsU2VuZFJlcXVlc3RBc3luYyh0aGlzLCByZXF1ZXN0LCByZWRpcmVjdFJlc3BvbnNl
KTsKKyAgICB9IGVsc2UgeworICAgICAgICBSZWZQdHI8UmVzb3VyY2VIYW5kbGU+IHByb3RlY3Qo
dGhpcyk7CisgICAgICAgIGNsaWVudCgpLT53aWxsU2VuZFJlcXVlc3QodGhpcywgcmVxdWVzdCwg
cmVkaXJlY3RSZXNwb25zZSk7CisKKyAgICAgICAgLy8gQ2xpZW50IGNhbGwgbWF5IG5vdCBwcmVz
ZXJ2ZSB0aGUgc2Vzc2lvbiwgZXNwZWNpYWxseSBpZiB0aGUgcmVxdWVzdCBpcyBzZW50IG92ZXIg
SVBDLgorICAgICAgICBpZiAoIXJlcXVlc3QuaXNOdWxsKCkpCisgICAgICAgICAgICByZXF1ZXN0
LnNldFN0b3JhZ2VTZXNzaW9uKGQtPm1fc3RvcmFnZVNlc3Npb24uZ2V0KCkpOworICAgIH0KK30K
Kwordm9pZCBSZXNvdXJjZUhhbmRsZTo6Y29udGludWVXaWxsU2VuZFJlcXVlc3QoY29uc3QgUmVz
b3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQoreworICAgIEFTU0VSVChjbGllbnQoKSAmJiBjbGllbnQo
KS0+dXNlc0FzeW5jQ2FsbGJhY2tzKCkpOwogCiAgICAgLy8gQ2xpZW50IGNhbGwgbWF5IG5vdCBw
cmVzZXJ2ZSB0aGUgc2Vzc2lvbiwgZXNwZWNpYWxseSBpZiB0aGUgcmVxdWVzdCBpcyBzZW50IG92
ZXIgSVBDLgotICAgIGlmICghcmVxdWVzdC5pc051bGwoKSkKLSAgICAgICAgcmVxdWVzdC5zZXRT
dG9yYWdlU2Vzc2lvbihkLT5tX3N0b3JhZ2VTZXNzaW9uLmdldCgpKTsKKyAgICBSZXNvdXJjZVJl
cXVlc3QgbmV3UmVxdWVzdCA9IHJlcXVlc3Q7CisgICAgaWYgKCFuZXdSZXF1ZXN0LmlzTnVsbCgp
KQorICAgICAgICBuZXdSZXF1ZXN0LnNldFN0b3JhZ2VTZXNzaW9uKGQtPm1fc3RvcmFnZVNlc3Np
b24uZ2V0KCkpOworICAgIFsoaWQpZGVsZWdhdGUoKSBjb250aW51ZVdpbGxTZW5kUmVxdWVzdDpu
ZXdSZXF1ZXN0Lm5zVVJMUmVxdWVzdChVcGRhdGVIVFRQQm9keSldOwogfQogCiBib29sIFJlc291
cmNlSGFuZGxlOjpzaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZSgpCiB7Ci0gICAgaWYgKGNsaWVu
dCgpKQotICAgICAgICByZXR1cm4gY2xpZW50KCktPnNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdl
KHRoaXMpOworICAgIGlmIChjbGllbnQoKS0+dXNlc0FzeW5jQ2FsbGJhY2tzKCkpIHsKKyAgICAg
ICAgaWYgKGNsaWVudCgpKQorICAgICAgICAgICAgY2xpZW50KCktPnNob3VsZFVzZUNyZWRlbnRp
YWxTdG9yYWdlQXN5bmModGhpcyk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGNvbnRpbnVl
U2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UoZmFsc2UpOworICAgICAgICByZXR1cm4gZmFsc2U7
IC8vIElnbm9yZWQgYnkgY2FsbGVyLgorICAgIH0gZWxzZQorICAgICAgICByZXR1cm4gY2xpZW50
KCkgJiYgY2xpZW50KCktPnNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlKHRoaXMpOworfQogCi0g
ICAgcmV0dXJuIGZhbHNlOwordm9pZCBSZXNvdXJjZUhhbmRsZTo6Y29udGludWVTaG91bGRVc2VD
cmVkZW50aWFsU3RvcmFnZShib29sIHVzZUNyZWRlbnRpYWxTdG9yYWdlKQoreworICAgIEFTU0VS
VChjbGllbnQoKSAmJiBjbGllbnQoKS0+dXNlc0FzeW5jQ2FsbGJhY2tzKCkpOworCisgICAgWyhp
ZClkZWxlZ2F0ZSgpIGNvbnRpbnVlU2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2U6dXNlQ3JlZGVu
dGlhbFN0b3JhZ2VdOwogfQogCiB2b2lkIFJlc291cmNlSGFuZGxlOjpkaWRSZWNlaXZlQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UoY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGNoYWxsZW5n
ZSkKQEAgLTQ5MiwxMCArNTIxLDIxIEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6OmRpZENhbmNlbEF1
dGhlbnRpY2EKICNpZiBVU0UoUFJPVEVDVElPTl9TUEFDRV9BVVRIX0NBTExCQUNLKQogYm9vbCBS
ZXNvdXJjZUhhbmRsZTo6Y2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZShjb25z
dCBQcm90ZWN0aW9uU3BhY2UmIHByb3RlY3Rpb25TcGFjZSkKIHsKLSAgICBpZiAoY2xpZW50KCkp
Ci0gICAgICAgIHJldHVybiBjbGllbnQoKS0+Y2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rp
b25TcGFjZSh0aGlzLCBwcm90ZWN0aW9uU3BhY2UpOwotICAgICAgICAKLSAgICByZXR1cm4gZmFs
c2U7CisgICAgaWYgKGNsaWVudCgpLT51c2VzQXN5bmNDYWxsYmFja3MoKSkgeworICAgICAgICBp
ZiAoY2xpZW50KCkpCisgICAgICAgICAgICBjbGllbnQoKS0+Y2FuQXV0aGVudGljYXRlQWdhaW5z
dFByb3RlY3Rpb25TcGFjZUFzeW5jKHRoaXMsIHByb3RlY3Rpb25TcGFjZSk7CisgICAgICAgIGVs
c2UKKyAgICAgICAgICAgIGNvbnRpbnVlQ2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25T
cGFjZShmYWxzZSk7CisgICAgICAgIHJldHVybiBmYWxzZTsgLy8gSWdub3JlZCBieSBjYWxsZXIu
CisgICAgfSBlbHNlCisgICAgICAgIHJldHVybiBjbGllbnQoKSAmJiBjbGllbnQoKS0+Y2FuQXV0
aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZSh0aGlzLCBwcm90ZWN0aW9uU3BhY2UpOwor
fQorCit2b2lkIFJlc291cmNlSGFuZGxlOjpjb250aW51ZUNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQ
cm90ZWN0aW9uU3BhY2UoYm9vbCByZXN1bHQpCit7CisgICAgQVNTRVJUKGNsaWVudCgpICYmIGNs
aWVudCgpLT51c2VzQXN5bmNDYWxsYmFja3MoKSk7CisKKyAgICBbKGlkKWRlbGVnYXRlKCkgY29u
dGludWVDYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlOnJlc3VsdF07CiB9CiAj
ZW5kaWYKIApAQCAtNTUzLDYgKzU5MywxNCBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjpyZWNlaXZl
ZENhbmNlbGxhdGlvCiAgICAgICAgIGNsaWVudCgpLT5yZWNlaXZlZENhbmNlbGxhdGlvbih0aGlz
LCBjaGFsbGVuZ2UpOwogfQogCit2b2lkIFJlc291cmNlSGFuZGxlOjpjb250aW51ZVdpbGxDYWNo
ZVJlc3BvbnNlKE5TQ2FjaGVkVVJMUmVzcG9uc2UgKnJlc3BvbnNlKQoreworICAgIEFTU0VSVChj
bGllbnQoKSAmJiBjbGllbnQoKS0+dXNlc0FzeW5jQ2FsbGJhY2tzKCkpOworCisgICAgWyhpZClk
ZWxlZ2F0ZSgpIGNvbnRpbnVlV2lsbENhY2hlUmVzcG9uc2U6cmVzcG9uc2VdOworfQorCisKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vICFVU0UoQ0ZORVRXT1JLKQpJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJlc291cmNlSGFuZGxl
QXNEZWxlZ2F0ZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVBc0RlbGVnYXRlLm1tCShyZXZpc2lvbiAxNDY3
ODUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3Vy
Y2VIYW5kbGVBc0RlbGVnYXRlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNTksMTEgKzI1OSw3IEBA
IC0gKE5TQ2FjaGVkVVJMUmVzcG9uc2UgKiljb25uZWN0aW9uOihOU1UKICAgICAgICAgJiYgW1so
TlNIVFRQVVJMUmVzcG9uc2UgKilbY2FjaGVkUmVzcG9uc2UgcmVzcG9uc2VdIGFsbEhlYWRlckZp
ZWxkc10gb2JqZWN0Rm9yS2V5OkAiVmFyeSJdKQogICAgICAgICByZXR1cm4gbmlsOwogCi0gICAg
TlNDYWNoZWRVUkxSZXNwb25zZSAqbmV3UmVzcG9uc2UgPSBtX2hhbmRsZS0+Y2xpZW50KCktPndp
bGxDYWNoZVJlc3BvbnNlKG1faGFuZGxlLCBjYWNoZWRSZXNwb25zZSk7Ci0gICAgaWYgKG5ld1Jl
c3BvbnNlICE9IGNhY2hlZFJlc3BvbnNlKQotICAgICAgICByZXR1cm4gbmV3UmVzcG9uc2U7Ci0g
ICAgCi0gICAgcmV0dXJuIG5ld1Jlc3BvbnNlOworICAgIHJldHVybiBtX2hhbmRsZS0+Y2xpZW50
KCktPndpbGxDYWNoZVJlc3BvbnNlKG1faGFuZGxlLCBjYWNoZWRSZXNwb25zZSk7CiB9CiAKIEBl
bmQKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNv
dXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3Bl
cmF0aW9uUXVldWVEZWxlZ2F0ZS5oCShyZXZpc2lvbiAxNDY2NzUpCShmcm9tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzRGVsZWdhdGUu
aDoxNDY2NzUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3Jl
UmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGUuaAkod29ya2luZyBjb3B5KQpA
QCAtMCwwICsxLDQzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJDb3JlUmVzb3VyY2VIYW5k
bGVBc0RlbGVnYXRlX2gKKyNkZWZpbmUgV2ViQ29yZVJlc291cmNlSGFuZGxlQXNEZWxlZ2F0ZV9o
CisKKyNpZiAhVVNFKENGTkVUV09SSykKKworbmFtZXNwYWNlIFdlYkNvcmUgeworICAgIGNsYXNz
IFJlc291cmNlSGFuZGxlOworfQorCitAaW50ZXJmYWNlIFdlYkNvcmVSZXNvdXJjZUhhbmRsZUFz
RGVsZWdhdGUgOiBOU09iamVjdCA8TlNVUkxDb25uZWN0aW9uRGVsZWdhdGU+IHsKKyAgICBXZWJD
b3JlOjpSZXNvdXJjZUhhbmRsZSogbV9oYW5kbGU7Cit9CistIChpZClpbml0V2l0aEhhbmRsZToo
V2ViQ29yZTo6UmVzb3VyY2VIYW5kbGUqKWhhbmRsZTsKKy0gKHZvaWQpZGV0YWNoSGFuZGxlOwor
QGVuZAorCisjZW5kaWYgLy8gIVVTRShDRk5FVFdPUkspCisjZW5kaWYgLy8gV2ViQ29yZVJlc291
cmNlSGFuZGxlQXNEZWxlZ2F0ZV9oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGUuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3Jl
UmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGUuaAkocmV2aXNpb24gMTQ2Njc1
KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJlc291cmNl
SGFuZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTIzLDIx
ICsyMywzNiBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNp
Zm5kZWYgV2ViQ29yZVJlc291cmNlSGFuZGxlQXNEZWxlZ2F0ZV9oCi0jZGVmaW5lIFdlYkNvcmVS
ZXNvdXJjZUhhbmRsZUFzRGVsZWdhdGVfaAorI2lmbmRlZiBXZWJDb3JlUmVzb3VyY2VIYW5kbGVB
c09wZXJhdGlvblF1ZXVlRGVsZWdhdGVfaAorI2RlZmluZSBXZWJDb3JlUmVzb3VyY2VIYW5kbGVB
c09wZXJhdGlvblF1ZXVlRGVsZWdhdGVfaAogCiAjaWYgIVVTRShDRk5FVFdPUkspCiAKKyNpbmNs
dWRlIDx3dGYvUmV0YWluUHRyLmg+CisjaW5jbHVkZSA8ZGlzcGF0Y2gvZGlzcGF0Y2guaD4KKwog
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIFJlc291cmNlSGFuZGxlOwogfQogCi1AaW50
ZXJmYWNlIFdlYkNvcmVSZXNvdXJjZUhhbmRsZUFzRGVsZWdhdGUgOiBOU09iamVjdCA8TlNVUkxD
b25uZWN0aW9uRGVsZWdhdGU+IHsKK0BpbnRlcmZhY2UgV2ViQ29yZVJlc291cmNlSGFuZGxlQXNP
cGVyYXRpb25RdWV1ZURlbGVnYXRlIDogTlNPYmplY3QgPE5TVVJMQ29ubmVjdGlvbkRlbGVnYXRl
PiB7CiAgICAgV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGUqIG1faGFuZGxlOworCisgICAgLy8gU3lu
Y2hyb25vdXMgZGVsZWdhdGVzIG9uIG9wZXJhdGlvbiBxdWV1ZSB3YWl0IHVudGlsIG1haW4gdGhy
ZWFkIHNlbmRzIGFuIGFzeW5jaHJvbm91cyByZXNwb25zZS4KKyAgICBkaXNwYXRjaF9zZW1hcGhv
cmVfdCBtX3NlbWFwaG9yZTsKKyAgICBSZXRhaW5QdHI8TlNVUkxSZXF1ZXN0PiBtX3JlcXVlc3RS
ZXN1bHQ7CisgICAgUmV0YWluUHRyPE5TQ2FjaGVkVVJMUmVzcG9uc2U+IG1fY2FjaGVkUmVzcG9u
c2VSZXN1bHQ7CisgICAgQk9PTCBtX2Jvb2xSZXN1bHQ7CiB9CiAtIChpZClpbml0V2l0aEhhbmRs
ZTooV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGUqKWhhbmRsZTsKIC0gKHZvaWQpZGV0YWNoSGFuZGxl
OworLSAodm9pZCljb250aW51ZVdpbGxTZW5kUmVxdWVzdDooTlNVUkxSZXF1ZXN0ICopbmV3UmVx
dWVzdDsKKy0gKHZvaWQpY29udGludWVTaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZTooQk9PTCl1
c2VDcmVkZW50aWFsU3RvcmFnZTsKKyNpZiBVU0UoUFJPVEVDVElPTl9TUEFDRV9BVVRIX0NBTExC
QUNLKQorLSAodm9pZCljb250aW51ZUNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3Bh
Y2U6KEJPT0wpY2FuQXV0aGVudGljYXRlOworI2VuZGlmCistICh2b2lkKWNvbnRpbnVlV2lsbENh
Y2hlUmVzcG9uc2U6KE5TQ2FjaGVkVVJMUmVzcG9uc2UgKilyZXNwb25zZTsKIEBlbmQKIAogI2Vu
ZGlmIC8vICFVU0UoQ0ZORVRXT1JLKQotI2VuZGlmIC8vIFdlYkNvcmVSZXNvdXJjZUhhbmRsZUFz
RGVsZWdhdGVfaAorI2VuZGlmIC8vIFdlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVl
dWVEZWxlZ2F0ZV9oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9X
ZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGUubW0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJlc291cmNl
SGFuZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlLm1tCShyZXZpc2lvbiAxNDY2NzUpCShmcm9t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRs
ZUFzRGVsZWdhdGUubW06MTQ2Njc1KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9tYWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlLm1tCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjcyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA0
LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEwLCAyMDExLCAyMDEyLCAyMDEzIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisj
aW1wb3J0ICJXZWJDb3JlUmVzb3VyY2VIYW5kbGVBc0RlbGVnYXRlLmgiCisKKyNpZiAhVVNFKENG
TkVUV09SSykKKworI2ltcG9ydCAiQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaCIKKyNpbXBvcnQg
IkF1dGhlbnRpY2F0aW9uTWFjLmgiCisjaW1wb3J0ICJMb2dnaW5nLmgiCisjaW1wb3J0ICJSZXNv
dXJjZUhhbmRsZS5oIgorI2ltcG9ydCAiUmVzb3VyY2VIYW5kbGVDbGllbnQuaCIKKyNpbXBvcnQg
IlJlc291cmNlUmVxdWVzdC5oIgorI2ltcG9ydCAiUmVzb3VyY2VSZXNwb25zZS5oIgorI2ltcG9y
dCAiU2hhcmVkQnVmZmVyLmgiCisjaW1wb3J0ICJXZWJDb3JlVVJMUmVzcG9uc2UuaCIKKworQGlu
dGVyZmFjZSBOU1VSTFJlcXVlc3QgKERldGFpbHMpCistIChpZClfcHJvcGVydHlGb3JLZXk6KE5T
U3RyaW5nICopa2V5OworQGVuZAorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworQGltcGxl
bWVudGF0aW9uIFdlYkNvcmVSZXNvdXJjZUhhbmRsZUFzRGVsZWdhdGUKKworLSAoaWQpaW5pdFdp
dGhIYW5kbGU6KFJlc291cmNlSGFuZGxlKiloYW5kbGUKK3sKKyAgICBzZWxmID0gW3NlbGYgaW5p
dF07CisgICAgaWYgKCFzZWxmKQorICAgICAgICByZXR1cm4gbmlsOworICAgIG1faGFuZGxlID0g
aGFuZGxlOworICAgIHJldHVybiBzZWxmOworfQorCistICh2b2lkKWRldGFjaEhhbmRsZQorewor
ICAgIG1faGFuZGxlID0gMDsKK30KKworLSAoTlNVUkxSZXF1ZXN0ICopY29ubmVjdGlvbjooTlNV
UkxDb25uZWN0aW9uICopY29ubmVjdGlvbiB3aWxsU2VuZFJlcXVlc3Q6KE5TVVJMUmVxdWVzdCAq
KW5ld1JlcXVlc3QgcmVkaXJlY3RSZXNwb25zZTooTlNVUkxSZXNwb25zZSAqKXJlZGlyZWN0UmVz
cG9uc2UKK3sKKyAgICBVTlVTRURfUEFSQU0oY29ubmVjdGlvbik7CisKKyAgICBpZiAoIW1faGFu
ZGxlKQorICAgICAgICByZXR1cm4gbmlsOworICAgIAorICAgIC8vIFNlZSA8cmRhcjovL3Byb2Js
ZW0vNTM4MDY5Nz4uIFRoaXMgaXMgYSB3b3JrYXJvdW5kIGZvciBhIGJlaGF2aW9yIGNoYW5nZSBp
biBDRk5ldHdvcmsgd2hlcmUgd2lsbFNlbmRSZXF1ZXN0IGdldHMgY2FsbGVkIG1vcmUgb2Z0ZW4u
CisgICAgaWYgKCFyZWRpcmVjdFJlc3BvbnNlKQorICAgICAgICByZXR1cm4gbmV3UmVxdWVzdDsK
KworI2lmICFMT0dfRElTQUJMRUQKKyAgICBpZiAoW3JlZGlyZWN0UmVzcG9uc2UgaXNLaW5kT2ZD
bGFzczpbTlNIVFRQVVJMUmVzcG9uc2UgY2xhc3NdXSkKKyAgICAgICAgTE9HKE5ldHdvcmssICJI
YW5kbGUgJXAgZGVsZWdhdGUgY29ubmVjdGlvbjolcCB3aWxsU2VuZFJlcXVlc3Q6JUAgcmVkaXJl
Y3RSZXNwb25zZTolZCwgTG9jYXRpb246PCVAPiIsIG1faGFuZGxlLCBjb25uZWN0aW9uLCBbbmV3
UmVxdWVzdCBkZXNjcmlwdGlvbl0sIHN0YXRpY19jYXN0PGludD4oWyhpZClyZWRpcmVjdFJlc3Bv
bnNlIHN0YXR1c0NvZGVdKSwgW1soaWQpcmVkaXJlY3RSZXNwb25zZSBhbGxIZWFkZXJGaWVsZHNd
IG9iamVjdEZvcktleTpAIkxvY2F0aW9uIl0pOworICAgIGVsc2UKKyAgICAgICAgTE9HKE5ldHdv
cmssICJIYW5kbGUgJXAgZGVsZWdhdGUgY29ubmVjdGlvbjolcCB3aWxsU2VuZFJlcXVlc3Q6JUAg
cmVkaXJlY3RSZXNwb25zZTpub24tSFRUUCIsIG1faGFuZGxlLCBjb25uZWN0aW9uLCBbbmV3UmVx
dWVzdCBkZXNjcmlwdGlvbl0pOyAKKyNlbmRpZgorCisgICAgUmVzb3VyY2VSZXF1ZXN0IHJlcXVl
c3QgPSBuZXdSZXF1ZXN0OworCisgICAgbV9oYW5kbGUtPndpbGxTZW5kUmVxdWVzdChyZXF1ZXN0
LCByZWRpcmVjdFJlc3BvbnNlKTsKKworICAgIHJldHVybiByZXF1ZXN0Lm5zVVJMUmVxdWVzdChV
cGRhdGVIVFRQQm9keSk7Cit9CisKKy0gKEJPT0wpY29ubmVjdGlvblNob3VsZFVzZUNyZWRlbnRp
YWxTdG9yYWdlOihOU1VSTENvbm5lY3Rpb24gKiljb25uZWN0aW9uCit7CisgICAgVU5VU0VEX1BB
UkFNKGNvbm5lY3Rpb24pOworCisgICAgTE9HKE5ldHdvcmssICJIYW5kbGUgJXAgZGVsZWdhdGUg
Y29ubmVjdGlvblNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlOiVwIiwgbV9oYW5kbGUsIGNvbm5l
Y3Rpb24pOworCisgICAgaWYgKCFtX2hhbmRsZSkKKyAgICAgICAgcmV0dXJuIE5POworCisgICAg
cmV0dXJuIG1faGFuZGxlLT5zaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZSgpOworfQorCistICh2
b2lkKWNvbm5lY3Rpb246KE5TVVJMQ29ubmVjdGlvbiAqKWNvbm5lY3Rpb24gZGlkUmVjZWl2ZUF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOihOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlICopY2hh
bGxlbmdlCit7CisgICAgVU5VU0VEX1BBUkFNKGNvbm5lY3Rpb24pOworCisgICAgTE9HKE5ldHdv
cmssICJIYW5kbGUgJXAgZGVsZWdhdGUgY29ubmVjdGlvbjolcCBkaWRSZWNlaXZlQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2U6JXAiLCBtX2hhbmRsZSwgY29ubmVjdGlvbiwgY2hhbGxlbmdlKTsKKwor
ICAgIGlmICghbV9oYW5kbGUpIHsKKyAgICAgICAgW1tjaGFsbGVuZ2Ugc2VuZGVyXSBjYW5jZWxB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZTpjaGFsbGVuZ2VdOworICAgICAgICByZXR1cm47CisgICAg
fQorICAgIG1faGFuZGxlLT5kaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoY29yZShj
aGFsbGVuZ2UpKTsKK30KKworLSAodm9pZCljb25uZWN0aW9uOihOU1VSTENvbm5lY3Rpb24gKilj
b25uZWN0aW9uIGRpZENhbmNlbEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOihOU1VSTEF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlICopY2hhbGxlbmdlCit7CisgICAgLy8gRklYTUU6IFdlIHByb2JhYmx5
IGRvbid0IG5lZWQgdG8gaW1wbGVtZW50IHRoaXMgKHNlZSA8cmRhcjovL3Byb2JsZW0vODk2MDEy
ND4pLgorCisgICAgVU5VU0VEX1BBUkFNKGNvbm5lY3Rpb24pOworCisgICAgTE9HKE5ldHdvcmss
ICJIYW5kbGUgJXAgZGVsZWdhdGUgY29ubmVjdGlvbjolcCBkaWRDYW5jZWxBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZTolcCIsIG1faGFuZGxlLCBjb25uZWN0aW9uLCBjaGFsbGVuZ2UpOworCisgICAg
aWYgKCFtX2hhbmRsZSkKKyAgICAgICAgcmV0dXJuOworICAgIG1faGFuZGxlLT5kaWRDYW5jZWxB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZShjb3JlKGNoYWxsZW5nZSkpOworfQorCisjaWYgVVNFKFBS
T1RFQ1RJT05fU1BBQ0VfQVVUSF9DQUxMQkFDSykKKy0gKEJPT0wpY29ubmVjdGlvbjooTlNVUkxD
b25uZWN0aW9uICopY29ubmVjdGlvbiBjYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNw
YWNlOihOU1VSTFByb3RlY3Rpb25TcGFjZSAqKXByb3RlY3Rpb25TcGFjZQoreworICAgIFVOVVNF
RF9QQVJBTShjb25uZWN0aW9uKTsKKworICAgIExPRyhOZXR3b3JrLCAiSGFuZGxlICVwIGRlbGVn
YXRlIGNvbm5lY3Rpb246JXAgY2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZTol
QDovLyVAOiV1IHJlYWxtOiVAIG1ldGhvZDolQCAlQCVAIiwgbV9oYW5kbGUsIGNvbm5lY3Rpb24s
IFtwcm90ZWN0aW9uU3BhY2UgcHJvdG9jb2xdLCBbcHJvdGVjdGlvblNwYWNlIGhvc3RdLCBbcHJv
dGVjdGlvblNwYWNlIHBvcnRdLCBbcHJvdGVjdGlvblNwYWNlIHJlYWxtXSwgW3Byb3RlY3Rpb25T
cGFjZSBhdXRoZW50aWNhdGlvbk1ldGhvZF0sIFtwcm90ZWN0aW9uU3BhY2UgaXNQcm94eV0gPyBA
InByb3h5OiIgOiBAIiIsIFtwcm90ZWN0aW9uU3BhY2UgaXNQcm94eV0gPyBbcHJvdGVjdGlvblNw
YWNlIHByb3h5VHlwZV0gOiBAIiIpOworCisgICAgaWYgKCFtX2hhbmRsZSkKKyAgICAgICAgcmV0
dXJuIE5POworCisgICAgcmV0dXJuIG1faGFuZGxlLT5jYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJv
dGVjdGlvblNwYWNlKGNvcmUocHJvdGVjdGlvblNwYWNlKSk7Cit9CisjZW5kaWYKKworLSAodm9p
ZCljb25uZWN0aW9uOihOU1VSTENvbm5lY3Rpb24gKiljb25uZWN0aW9uIGRpZFJlY2VpdmVSZXNw
b25zZTooTlNVUkxSZXNwb25zZSAqKXIKK3sKKyAgICBVTlVTRURfUEFSQU0oY29ubmVjdGlvbik7
CisKKyAgICBMT0coTmV0d29yaywgIkhhbmRsZSAlcCBkZWxlZ2F0ZSBjb25uZWN0aW9uOiVwIGRp
ZFJlY2VpdmVSZXNwb25zZTolcCAoSFRUUCBzdGF0dXMgJWQsIHJlcG9ydGVkIE1JTUVUeXBlICcl
cycpIiwgbV9oYW5kbGUsIGNvbm5lY3Rpb24sIHIsIFtyIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2Vs
ZWN0b3Ioc3RhdHVzQ29kZSldID8gWyhpZClyIHN0YXR1c0NvZGVdIDogMCwgW1tyIE1JTUVUeXBl
XSBVVEY4U3RyaW5nXSk7CisKKyAgICBpZiAoIW1faGFuZGxlIHx8ICFtX2hhbmRsZS0+Y2xpZW50
KCkpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIEF2b2lkIE1JTUUgdHlwZSBzbmlmZmluZyBp
ZiB0aGUgcmVzcG9uc2UgY29tZXMgYmFjayBhcyAzMDQgTm90IE1vZGlmaWVkLgorICAgIGludCBz
dGF0dXNDb2RlID0gW3IgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihzdGF0dXNDb2RlKV0g
PyBbKGlkKXIgc3RhdHVzQ29kZV0gOiAwOworICAgIGlmIChzdGF0dXNDb2RlICE9IDMwNCkKKyAg
ICAgICAgYWRqdXN0TUlNRVR5cGVJZk5lY2Vzc2FyeShbciBfQ0ZVUkxSZXNwb25zZV0pOworCisg
ICAgaWYgKFttX2hhbmRsZS0+Zmlyc3RSZXF1ZXN0KCkubnNVUkxSZXF1ZXN0KERvTm90VXBkYXRl
SFRUUEJvZHkpIF9wcm9wZXJ0eUZvcktleTpAIkZvcmNlSFRNTE1JTUVUeXBlIl0pCisgICAgICAg
IFtyIF9zZXRNSU1FVHlwZTpAInRleHQvaHRtbCJdOworCisgICAgbV9oYW5kbGUtPmNsaWVudCgp
LT5kaWRSZWNlaXZlUmVzcG9uc2UobV9oYW5kbGUsIHIpOworfQorCisjaWYgVVNFKE5FVFdPUktf
Q0ZEQVRBX0FSUkFZX0NBTExCQUNLKQorLSAodm9pZCljb25uZWN0aW9uOihOU1VSTENvbm5lY3Rp
b24gKiljb25uZWN0aW9uIGRpZFJlY2VpdmVEYXRhQXJyYXk6KE5TQXJyYXkgKilkYXRhQXJyYXkK
K3sKKyAgICBVTlVTRURfUEFSQU0oY29ubmVjdGlvbik7CisgICAgTE9HKE5ldHdvcmssICJIYW5k
bGUgJXAgZGVsZWdhdGUgY29ubmVjdGlvbjolcCBkaWRSZWNlaXZlRGF0YUFycmF5OiVwIGFycmF5
U2l6ZTolZCIsIG1faGFuZGxlLCBjb25uZWN0aW9uLCBkYXRhQXJyYXksIFtkYXRhQXJyYXkgY291
bnRdKTsKKworICAgIGlmICghZGF0YUFycmF5KQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAo
IW1faGFuZGxlIHx8ICFtX2hhbmRsZS0+Y2xpZW50KCkpCisgICAgICAgIHJldHVybjsKKworICAg
IG1faGFuZGxlLT5oYW5kbGVEYXRhQXJyYXkocmVpbnRlcnByZXRfY2FzdDxDRkFycmF5UmVmPihk
YXRhQXJyYXkpKTsKKyAgICAvLyBUaGUgY2FsbCB0byBkaWRSZWNlaXZlRGF0YSBhYm92ZSBjYW4g
Y2FuY2VsIGEgbG9hZCwgYW5kIGlmIHNvLCB0aGUgZGVsZWdhdGUgKHNlbGYpIGNvdWxkIGhhdmUg
YmVlbiBkZWFsbG9jYXRlZCBieSB0aGlzIHBvaW50LgorfQorI2VuZGlmCisKKy0gKHZvaWQpY29u
bmVjdGlvbjooTlNVUkxDb25uZWN0aW9uICopY29ubmVjdGlvbiBkaWRSZWNlaXZlRGF0YTooTlNE
YXRhICopZGF0YSBsZW5ndGhSZWNlaXZlZDoobG9uZyBsb25nKWxlbmd0aFJlY2VpdmVkCit7Cisg
ICAgVU5VU0VEX1BBUkFNKGNvbm5lY3Rpb24pOworICAgIFVOVVNFRF9QQVJBTShsZW5ndGhSZWNl
aXZlZCk7CisKKyAgICBMT0coTmV0d29yaywgIkhhbmRsZSAlcCBkZWxlZ2F0ZSBjb25uZWN0aW9u
OiVwIGRpZFJlY2VpdmVEYXRhOiVwIGxlbmd0aFJlY2VpdmVkOiVsbGQiLCBtX2hhbmRsZSwgY29u
bmVjdGlvbiwgZGF0YSwgbGVuZ3RoUmVjZWl2ZWQpOworCisgICAgaWYgKCFtX2hhbmRsZSB8fCAh
bV9oYW5kbGUtPmNsaWVudCgpKQorICAgICAgICByZXR1cm47CisgICAgLy8gRklYTUU6IElmIHdl
IGdldCBtb3JlIHRoYW4gMkIgYnl0ZXMgaW4gYSBzaW5nbGUgY2h1bmssIHRoaXMgY29kZSB3b24n
dCBkbyB0aGUgcmlnaHQgdGhpbmcuCisgICAgLy8gSG93ZXZlciwgd2l0aCB0b2RheSdzIGNvbXB1
dGVycyBhbmQgbmV0d29ya2luZyBzcGVlZHMsIHRoaXMgd29uJ3QgaGFwcGVuIGluIHByYWN0aWNl
LgorICAgIC8vIENvdWxkIGJlIGFuIGlzc3VlIHdpdGggYSBnaWFudCBsb2NhbCBmaWxlLgorCisg
ICAgLy8gRklYTUU6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTc5
MworICAgIC8vIC0xIG1lYW5zIHdlIGRvIG5vdCBwcm92aWRlIGFueSBkYXRhIGFib3V0IHRyYW5z
ZmVyIHNpemUgdG8gaW5zcGVjdG9yIHNvIGl0IHdvdWxkIHVzZQorICAgIC8vIENvbnRlbnQtTGVu
Z3RoIGhlYWRlcnMgb3IgY29udGVudCBzaXplIHRvIHNob3cgdHJhbnNmZXIgc2l6ZS4KKyAgICBt
X2hhbmRsZS0+Y2xpZW50KCktPmRpZFJlY2VpdmVCdWZmZXIobV9oYW5kbGUsIFNoYXJlZEJ1ZmZl
cjo6d3JhcE5TRGF0YShkYXRhKSwgLTEpOworfQorCistICh2b2lkKWNvbm5lY3Rpb246KE5TVVJM
Q29ubmVjdGlvbiAqKWNvbm5lY3Rpb24gd2lsbFN0b3BCdWZmZXJpbmdEYXRhOihOU0RhdGEgKilk
YXRhCit7CisgICAgVU5VU0VEX1BBUkFNKGNvbm5lY3Rpb24pOworCisgICAgTE9HKE5ldHdvcmss
ICJIYW5kbGUgJXAgZGVsZWdhdGUgY29ubmVjdGlvbjolcCB3aWxsU3RvcEJ1ZmZlcmluZ0RhdGE6
JXAiLCBtX2hhbmRsZSwgY29ubmVjdGlvbiwgZGF0YSk7CisKKyAgICBpZiAoIW1faGFuZGxlIHx8
ICFtX2hhbmRsZS0+Y2xpZW50KCkpCisgICAgICAgIHJldHVybjsKKyAgICAvLyBGSVhNRTogSWYg
d2UgZ2V0IGEgcmVzb3VyY2Ugd2l0aCBtb3JlIHRoYW4gMkIgYnl0ZXMsIHRoaXMgY29kZSB3b24n
dCBkbyB0aGUgcmlnaHQgdGhpbmcuCisgICAgLy8gSG93ZXZlciwgd2l0aCB0b2RheSdzIGNvbXB1
dGVycyBhbmQgbmV0d29ya2luZyBzcGVlZHMsIHRoaXMgd29uJ3QgaGFwcGVuIGluIHByYWN0aWNl
LgorICAgIC8vIENvdWxkIGJlIGFuIGlzc3VlIHdpdGggYSBnaWFudCBsb2NhbCBmaWxlLgorICAg
IG1faGFuZGxlLT5jbGllbnQoKS0+d2lsbFN0b3BCdWZmZXJpbmdEYXRhKG1faGFuZGxlLCAoY29u
c3QgY2hhciopW2RhdGEgYnl0ZXNdLCBzdGF0aWNfY2FzdDxpbnQ+KFtkYXRhIGxlbmd0aF0pKTsK
K30KKworLSAodm9pZCljb25uZWN0aW9uOihOU1VSTENvbm5lY3Rpb24gKiljb25uZWN0aW9uIGRp
ZFNlbmRCb2R5RGF0YTooTlNJbnRlZ2VyKWJ5dGVzV3JpdHRlbiB0b3RhbEJ5dGVzV3JpdHRlbjoo
TlNJbnRlZ2VyKXRvdGFsQnl0ZXNXcml0dGVuIHRvdGFsQnl0ZXNFeHBlY3RlZFRvV3JpdGU6KE5T
SW50ZWdlcil0b3RhbEJ5dGVzRXhwZWN0ZWRUb1dyaXRlCit7CisgICAgVU5VU0VEX1BBUkFNKGNv
bm5lY3Rpb24pOworICAgIFVOVVNFRF9QQVJBTShieXRlc1dyaXR0ZW4pOworCisgICAgTE9HKE5l
dHdvcmssICJIYW5kbGUgJXAgZGVsZWdhdGUgY29ubmVjdGlvbjolcCBkaWRTZW5kQm9keURhdGE6
JWQgdG90YWxCeXRlc1dyaXR0ZW46JWQgdG90YWxCeXRlc0V4cGVjdGVkVG9Xcml0ZTolZCIsIG1f
aGFuZGxlLCBjb25uZWN0aW9uLCBieXRlc1dyaXR0ZW4sIHRvdGFsQnl0ZXNXcml0dGVuLCB0b3Rh
bEJ5dGVzRXhwZWN0ZWRUb1dyaXRlKTsKKworICAgIGlmICghbV9oYW5kbGUgfHwgIW1faGFuZGxl
LT5jbGllbnQoKSkKKyAgICAgICAgcmV0dXJuOworICAgIG1faGFuZGxlLT5jbGllbnQoKS0+ZGlk
U2VuZERhdGEobV9oYW5kbGUsIHRvdGFsQnl0ZXNXcml0dGVuLCB0b3RhbEJ5dGVzRXhwZWN0ZWRU
b1dyaXRlKTsKK30KKworLSAodm9pZCljb25uZWN0aW9uRGlkRmluaXNoTG9hZGluZzooTlNVUkxD
b25uZWN0aW9uICopY29ubmVjdGlvbgoreworICAgIFVOVVNFRF9QQVJBTShjb25uZWN0aW9uKTsK
KworICAgIExPRyhOZXR3b3JrLCAiSGFuZGxlICVwIGRlbGVnYXRlIGNvbm5lY3Rpb25EaWRGaW5p
c2hMb2FkaW5nOiVwIiwgbV9oYW5kbGUsIGNvbm5lY3Rpb24pOworCisgICAgaWYgKCFtX2hhbmRs
ZSB8fCAhbV9oYW5kbGUtPmNsaWVudCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2hhbmRs
ZS0+Y2xpZW50KCktPmRpZEZpbmlzaExvYWRpbmcobV9oYW5kbGUsIDApOworfQorCistICh2b2lk
KWNvbm5lY3Rpb246KE5TVVJMQ29ubmVjdGlvbiAqKWNvbm5lY3Rpb24gZGlkRmFpbFdpdGhFcnJv
cjooTlNFcnJvciAqKWVycm9yCit7CisgICAgVU5VU0VEX1BBUkFNKGNvbm5lY3Rpb24pOworCisg
ICAgTE9HKE5ldHdvcmssICJIYW5kbGUgJXAgZGVsZWdhdGUgY29ubmVjdGlvbjolcCBkaWRGYWls
V2l0aEVycm9yOiVAIiwgbV9oYW5kbGUsIGNvbm5lY3Rpb24sIGVycm9yKTsKKworICAgIGlmICgh
bV9oYW5kbGUgfHwgIW1faGFuZGxlLT5jbGllbnQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAg
bV9oYW5kbGUtPmNsaWVudCgpLT5kaWRGYWlsKG1faGFuZGxlLCBlcnJvcik7Cit9CisKKworLSAo
TlNDYWNoZWRVUkxSZXNwb25zZSAqKWNvbm5lY3Rpb246KE5TVVJMQ29ubmVjdGlvbiAqKWNvbm5l
Y3Rpb24gd2lsbENhY2hlUmVzcG9uc2U6KE5TQ2FjaGVkVVJMUmVzcG9uc2UgKiljYWNoZWRSZXNw
b25zZQoreworICAgIExPRyhOZXR3b3JrLCAiSGFuZGxlICVwIGRlbGVnYXRlIGNvbm5lY3Rpb246
JXAgd2lsbENhY2hlUmVzcG9uc2U6JXAiLCBtX2hhbmRsZSwgY29ubmVjdGlvbiwgY2FjaGVkUmVz
cG9uc2UpOworCisgICAgVU5VU0VEX1BBUkFNKGNvbm5lY3Rpb24pOworCisgICAgaWYgKCFtX2hh
bmRsZSB8fCAhbV9oYW5kbGUtPmNsaWVudCgpKQorICAgICAgICByZXR1cm4gbmlsOworCisgICAg
Ly8gV29ya2Fyb3VuZCBmb3IgPHJkYXI6Ly9wcm9ibGVtLzYzMDA5OTA+IENhY2hpbmcgZG9lcyBu
b3QgcmVzcGVjdCBWYXJ5IEhUVFAgaGVhZGVyLgorICAgIC8vIEZJWE1FOiBXZWJDb3JlIGNhY2hl
IGhhcyBpc3N1ZXMgd2l0aCBWYXJ5LCB0b28gKGJ1ZyA1ODc5NywgYnVnIDcxNTA5KS4KKyAgICBp
ZiAoW1tjYWNoZWRSZXNwb25zZSByZXNwb25zZV0gaXNLaW5kT2ZDbGFzczpbTlNIVFRQVVJMUmVz
cG9uc2UgY2xhc3NdXQorICAgICAgICAmJiBbWyhOU0hUVFBVUkxSZXNwb25zZSAqKVtjYWNoZWRS
ZXNwb25zZSByZXNwb25zZV0gYWxsSGVhZGVyRmllbGRzXSBvYmplY3RGb3JLZXk6QCJWYXJ5Il0p
CisgICAgICAgIHJldHVybiBuaWw7CisKKyAgICBOU0NhY2hlZFVSTFJlc3BvbnNlICpuZXdSZXNw
b25zZSA9IG1faGFuZGxlLT5jbGllbnQoKS0+d2lsbENhY2hlUmVzcG9uc2UobV9oYW5kbGUsIGNh
Y2hlZFJlc3BvbnNlKTsKKyAgICBpZiAobmV3UmVzcG9uc2UgIT0gY2FjaGVkUmVzcG9uc2UpCisg
ICAgICAgIHJldHVybiBuZXdSZXNwb25zZTsKKyAgICAKKyAgICByZXR1cm4gbmV3UmVzcG9uc2U7
Cit9CisKK0BlbmQKKworI2VuZGlmIC8vICFVU0UoQ0ZORVRXT1JLKQorCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJh
dGlvblF1ZXVlRGVsZWdhdGUubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9tYWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVn
YXRlLm1tCShyZXZpc2lvbiAxNDY2NzUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGUubW0J
KHdvcmtpbmcgY29weSkKQEAgLTI0LDcgKzI0LDcgQEAKICAqLwogCiAjaW1wb3J0ICJjb25maWcu
aCIKLSNpbXBvcnQgIldlYkNvcmVSZXNvdXJjZUhhbmRsZUFzRGVsZWdhdGUuaCIKKyNpbXBvcnQg
IldlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZS5oIgogCiAjaWYg
IVVTRShDRk5FVFdPUkspCiAKQEAgLTM3LDYgKzM3LDcgQEAKICNpbXBvcnQgIlJlc291cmNlUmVz
cG9uc2UuaCIKICNpbXBvcnQgIlNoYXJlZEJ1ZmZlci5oIgogI2ltcG9ydCAiV2ViQ29yZVVSTFJl
c3BvbnNlLmgiCisjaW1wb3J0IDx3dGYvTWFpblRocmVhZC5oPgogCiBAaW50ZXJmYWNlIE5TVVJM
UmVxdWVzdCAoRGV0YWlscykKIC0gKGlkKV9wcm9wZXJ0eUZvcktleTooTlNTdHJpbmcgKilrZXk7
CkBAIC00NCwyOSArNDUsNjUgQEAgLSAoaWQpX3Byb3BlcnR5Rm9yS2V5OihOU1N0cmluZyAqKWtl
eTsKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKLUBpbXBsZW1lbnRhdGlvbiBXZWJDb3Jl
UmVzb3VyY2VIYW5kbGVBc0RlbGVnYXRlCitAaW1wbGVtZW50YXRpb24gV2ViQ29yZVJlc291cmNl
SGFuZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlCiAKIC0gKGlkKWluaXRXaXRoSGFuZGxlOihS
ZXNvdXJjZUhhbmRsZSopaGFuZGxlCiB7CiAgICAgc2VsZiA9IFtzZWxmIGluaXRdOwogICAgIGlm
ICghc2VsZikKICAgICAgICAgcmV0dXJuIG5pbDsKKwogICAgIG1faGFuZGxlID0gaGFuZGxlOwor
ICAgIG1fc2VtYXBob3JlID0gZGlzcGF0Y2hfc2VtYXBob3JlX2NyZWF0ZSgwKTsKKwogICAgIHJl
dHVybiBzZWxmOwogfQogCiAtICh2b2lkKWRldGFjaEhhbmRsZQogewogICAgIG1faGFuZGxlID0g
MDsKKworICAgIG1fcmVxdWVzdFJlc3VsdCA9IG51bGxwdHI7CisgICAgbV9jYWNoZWRSZXNwb25z
ZVJlc3VsdCA9IG51bGxwdHI7CisgICAgbV9ib29sUmVzdWx0ID0gTk87CisgICAgZGlzcGF0Y2hf
c2VtYXBob3JlX3NpZ25hbChtX3NlbWFwaG9yZSk7IC8vIE9LIHRvIHNpZ25hbCBldmVuIGlmIHdl
IGFyZSBub3Qgd2FpdGluZy4KK30KKworLSAodm9pZClkZWFsbG9jCit7CisgICAgZGlzcGF0Y2hf
cmVsZWFzZShtX3NlbWFwaG9yZSk7CisgICAgW3N1cGVyIGRlYWxsb2NdOworfQorCistICh2b2lk
KWNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0OihOU1VSTFJlcXVlc3QgKiluZXdSZXF1ZXN0Cit7Cisg
ICAgbV9yZXF1ZXN0UmVzdWx0ID0gW25ld1JlcXVlc3QgcmV0YWluXTsKKyAgICBkaXNwYXRjaF9z
ZW1hcGhvcmVfc2lnbmFsKG1fc2VtYXBob3JlKTsKK30KKworLSAodm9pZCljb250aW51ZVNob3Vs
ZFVzZUNyZWRlbnRpYWxTdG9yYWdlOihCT09MKXVzZUNyZWRlbnRpYWxTdG9yYWdlCit7CisgICAg
bV9ib29sUmVzdWx0ID0gdXNlQ3JlZGVudGlhbFN0b3JhZ2U7CisgICAgZGlzcGF0Y2hfc2VtYXBo
b3JlX3NpZ25hbChtX3NlbWFwaG9yZSk7Cit9CisKKy0gKHZvaWQpY29udGludWVDYW5BdXRoZW50
aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlOihCT09MKWNhbkF1dGhlbnRpY2F0ZQoreworICAg
IG1fYm9vbFJlc3VsdCA9IGNhbkF1dGhlbnRpY2F0ZTsKKyAgICBkaXNwYXRjaF9zZW1hcGhvcmVf
c2lnbmFsKG1fc2VtYXBob3JlKTsKK30KKworLSAodm9pZCljb250aW51ZVdpbGxDYWNoZVJlc3Bv
bnNlOihOU0NhY2hlZFVSTFJlc3BvbnNlICopcmVzcG9uc2UKK3sKKyAgICBtX2NhY2hlZFJlc3Bv
bnNlUmVzdWx0ID0gcmVzcG9uc2U7CisgICAgZGlzcGF0Y2hfc2VtYXBob3JlX3NpZ25hbChtX3Nl
bWFwaG9yZSk7CiB9CiAKIC0gKE5TVVJMUmVxdWVzdCAqKWNvbm5lY3Rpb246KE5TVVJMQ29ubmVj
dGlvbiAqKWNvbm5lY3Rpb24gd2lsbFNlbmRSZXF1ZXN0OihOU1VSTFJlcXVlc3QgKiluZXdSZXF1
ZXN0IHJlZGlyZWN0UmVzcG9uc2U6KE5TVVJMUmVzcG9uc2UgKilyZWRpcmVjdFJlc3BvbnNlCiB7
CisgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CiAgICAgVU5VU0VEX1BBUkFNKGNvbm5lY3Rp
b24pOwogCi0gICAgaWYgKCFtX2hhbmRsZSkKLSAgICAgICAgcmV0dXJuIG5pbDsKLSAgICAKICAg
ICAvLyBTZWUgPHJkYXI6Ly9wcm9ibGVtLzUzODA2OTc+LiBUaGlzIGlzIGEgd29ya2Fyb3VuZCBm
b3IgYSBiZWhhdmlvciBjaGFuZ2UgaW4gQ0ZOZXR3b3JrIHdoZXJlIHdpbGxTZW5kUmVxdWVzdCBn
ZXRzIGNhbGxlZCBtb3JlIG9mdGVuLgogICAgIGlmICghcmVkaXJlY3RSZXNwb25zZSkKICAgICAg
ICAgcmV0dXJuIG5ld1JlcXVlc3Q7CkBAIC03OCwxOTIgKzExNSwyNTMgQEAgLSAoTlNVUkxSZXF1
ZXN0ICopY29ubmVjdGlvbjooTlNVUkxDb25uZQogICAgICAgICBMT0coTmV0d29yaywgIkhhbmRs
ZSAlcCBkZWxlZ2F0ZSBjb25uZWN0aW9uOiVwIHdpbGxTZW5kUmVxdWVzdDolQCByZWRpcmVjdFJl
c3BvbnNlOm5vbi1IVFRQIiwgbV9oYW5kbGUsIGNvbm5lY3Rpb24sIFtuZXdSZXF1ZXN0IGRlc2Ny
aXB0aW9uXSk7IAogI2VuZGlmCiAKLSAgICBSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCA9IG5ld1Jl
cXVlc3Q7CisgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgXnsK
KyAgICAgICAgaWYgKCFtX2hhbmRsZSkgeworICAgICAgICAgICAgbV9yZXF1ZXN0UmVzdWx0ID0g
bnVsbHB0cjsKKyAgICAgICAgICAgIGRpc3BhdGNoX3NlbWFwaG9yZV9zaWduYWwobV9zZW1hcGhv
cmUpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CiAKLSAgICBtX2hhbmRsZS0+d2ls
bFNlbmRSZXF1ZXN0KHJlcXVlc3QsIHJlZGlyZWN0UmVzcG9uc2UpOworICAgICAgICBSZXNvdXJj
ZVJlcXVlc3QgcmVxdWVzdCA9IG5ld1JlcXVlc3Q7CiAKLSAgICByZXR1cm4gcmVxdWVzdC5uc1VS
TFJlcXVlc3QoVXBkYXRlSFRUUEJvZHkpOworICAgICAgICBtX2hhbmRsZS0+d2lsbFNlbmRSZXF1
ZXN0KHJlcXVlc3QsIHJlZGlyZWN0UmVzcG9uc2UpOworICAgIH0pOworCisgICAgZGlzcGF0Y2hf
c2VtYXBob3JlX3dhaXQobV9zZW1hcGhvcmUsIERJU1BBVENIX1RJTUVfRk9SRVZFUik7CisgICAg
cmV0dXJuIFttX3JlcXVlc3RSZXN1bHQubGVha1JlZigpIGF1dG9yZWxlYXNlXTsKIH0KIAogLSAo
Qk9PTCljb25uZWN0aW9uU2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2U6KE5TVVJMQ29ubmVjdGlv
biAqKWNvbm5lY3Rpb24KIHsKKyAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKICAgICBVTlVT
RURfUEFSQU0oY29ubmVjdGlvbik7CiAKICAgICBMT0coTmV0d29yaywgIkhhbmRsZSAlcCBkZWxl
Z2F0ZSBjb25uZWN0aW9uU2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2U6JXAiLCBtX2hhbmRsZSwg
Y29ubmVjdGlvbik7CiAKLSAgICBpZiAoIW1faGFuZGxlKQotICAgICAgICByZXR1cm4gTk87Cisg
ICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgXnsKKyAgICAgICAg
aWYgKCFtX2hhbmRsZSkgeworICAgICAgICAgICAgbV9ib29sUmVzdWx0ID0gTk87CisgICAgICAg
ICAgICBkaXNwYXRjaF9zZW1hcGhvcmVfc2lnbmFsKG1fc2VtYXBob3JlKTsKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBtX2hhbmRsZS0+c2hvdWxkVXNlQ3JlZGVudGlh
bFN0b3JhZ2UoKTsKKyAgICB9KTsKIAotICAgIHJldHVybiBtX2hhbmRsZS0+c2hvdWxkVXNlQ3Jl
ZGVudGlhbFN0b3JhZ2UoKTsKKyAgICBkaXNwYXRjaF9zZW1hcGhvcmVfd2FpdChtX3NlbWFwaG9y
ZSwgRElTUEFUQ0hfVElNRV9GT1JFVkVSKTsKKyAgICByZXR1cm4gbV9ib29sUmVzdWx0OwogfQog
CiAtICh2b2lkKWNvbm5lY3Rpb246KE5TVVJMQ29ubmVjdGlvbiAqKWNvbm5lY3Rpb24gZGlkUmVj
ZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOihOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
ICopY2hhbGxlbmdlCiB7CisgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CiAgICAgVU5VU0VE
X1BBUkFNKGNvbm5lY3Rpb24pOwogCiAgICAgTE9HKE5ldHdvcmssICJIYW5kbGUgJXAgZGVsZWdh
dGUgY29ubmVjdGlvbjolcCBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6JXAiLCBt
X2hhbmRsZSwgY29ubmVjdGlvbiwgY2hhbGxlbmdlKTsKIAotICAgIGlmICghbV9oYW5kbGUpIHsK
LSAgICAgICAgW1tjaGFsbGVuZ2Ugc2VuZGVyXSBjYW5jZWxBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZTpjaGFsbGVuZ2VdOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIG1faGFuZGxlLT5kaWRS
ZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoY29yZShjaGFsbGVuZ2UpKTsKKyAgICBkaXNw
YXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBeeworICAgICAgICBpZiAoIW1f
aGFuZGxlKSB7CisgICAgICAgICAgICBbW2NoYWxsZW5nZSBzZW5kZXJdIGNhbmNlbEF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlOmNoYWxsZW5nZV07CisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IH0KKyAgICAgICAgbV9oYW5kbGUtPmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShj
b3JlKGNoYWxsZW5nZSkpOworICAgIH0pOwogfQogCiAtICh2b2lkKWNvbm5lY3Rpb246KE5TVVJM
Q29ubmVjdGlvbiAqKWNvbm5lY3Rpb24gZGlkQ2FuY2VsQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6
KE5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgKiljaGFsbGVuZ2UKIHsKICAgICAvLyBGSVhN
RTogV2UgcHJvYmFibHkgZG9uJ3QgbmVlZCB0byBpbXBsZW1lbnQgdGhpcyAoc2VlIDxyZGFyOi8v
cHJvYmxlbS84OTYwMTI0PikuCiAKKyAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKICAgICBV
TlVTRURfUEFSQU0oY29ubmVjdGlvbik7CiAKICAgICBMT0coTmV0d29yaywgIkhhbmRsZSAlcCBk
ZWxlZ2F0ZSBjb25uZWN0aW9uOiVwIGRpZENhbmNlbEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOiVw
IiwgbV9oYW5kbGUsIGNvbm5lY3Rpb24sIGNoYWxsZW5nZSk7CiAKLSAgICBpZiAoIW1faGFuZGxl
KQotICAgICAgICByZXR1cm47Ci0gICAgbV9oYW5kbGUtPmRpZENhbmNlbEF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlKGNvcmUoY2hhbGxlbmdlKSk7CisgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hf
Z2V0X21haW5fcXVldWUoKSwgXnsKKyAgICAgICAgaWYgKCFtX2hhbmRsZSkKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgbV9oYW5kbGUtPmRpZENhbmNlbEF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlKGNvcmUoY2hhbGxlbmdlKSk7CisgICAgfSk7CiB9CiAKICNpZiBVU0UoUFJPVEVDVElPTl9T
UEFDRV9BVVRIX0NBTExCQUNLKQogLSAoQk9PTCljb25uZWN0aW9uOihOU1VSTENvbm5lY3Rpb24g
Kiljb25uZWN0aW9uIGNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2U6KE5TVVJM
UHJvdGVjdGlvblNwYWNlICopcHJvdGVjdGlvblNwYWNlCiB7CisgICAgQVNTRVJUKCFpc01haW5U
aHJlYWQoKSk7CiAgICAgVU5VU0VEX1BBUkFNKGNvbm5lY3Rpb24pOwogCiAgICAgTE9HKE5ldHdv
cmssICJIYW5kbGUgJXAgZGVsZWdhdGUgY29ubmVjdGlvbjolcCBjYW5BdXRoZW50aWNhdGVBZ2Fp
bnN0UHJvdGVjdGlvblNwYWNlOiVAOi8vJUA6JXUgcmVhbG06JUAgbWV0aG9kOiVAICVAJUAiLCBt
X2hhbmRsZSwgY29ubmVjdGlvbiwgW3Byb3RlY3Rpb25TcGFjZSBwcm90b2NvbF0sIFtwcm90ZWN0
aW9uU3BhY2UgaG9zdF0sIFtwcm90ZWN0aW9uU3BhY2UgcG9ydF0sIFtwcm90ZWN0aW9uU3BhY2Ug
cmVhbG1dLCBbcHJvdGVjdGlvblNwYWNlIGF1dGhlbnRpY2F0aW9uTWV0aG9kXSwgW3Byb3RlY3Rp
b25TcGFjZSBpc1Byb3h5XSA/IEAicHJveHk6IiA6IEAiIiwgW3Byb3RlY3Rpb25TcGFjZSBpc1By
b3h5XSA/IFtwcm90ZWN0aW9uU3BhY2UgcHJveHlUeXBlXSA6IEAiIik7CiAKLSAgICBpZiAoIW1f
aGFuZGxlKQotICAgICAgICByZXR1cm4gTk87CisgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hf
Z2V0X21haW5fcXVldWUoKSwgXnsKKyAgICAgICAgaWYgKCFtX2hhbmRsZSkgeworICAgICAgICAg
ICAgbV9ib29sUmVzdWx0ID0gTk87CisgICAgICAgICAgICBkaXNwYXRjaF9zZW1hcGhvcmVfc2ln
bmFsKG1fc2VtYXBob3JlKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAg
ICBtX2hhbmRsZS0+Y2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZShjb3JlKHBy
b3RlY3Rpb25TcGFjZSkpOworICAgIH0pOwogCi0gICAgcmV0dXJuIG1faGFuZGxlLT5jYW5BdXRo
ZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlKGNvcmUocHJvdGVjdGlvblNwYWNlKSk7Cisg
ICAgZGlzcGF0Y2hfc2VtYXBob3JlX3dhaXQobV9zZW1hcGhvcmUsIERJU1BBVENIX1RJTUVfRk9S
RVZFUik7CisgICAgcmV0dXJuIG1fYm9vbFJlc3VsdDsKIH0KICNlbmRpZgogCiAtICh2b2lkKWNv
bm5lY3Rpb246KE5TVVJMQ29ubmVjdGlvbiAqKWNvbm5lY3Rpb24gZGlkUmVjZWl2ZVJlc3BvbnNl
OihOU1VSTFJlc3BvbnNlICopcgogeworICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwogICAg
IFVOVVNFRF9QQVJBTShjb25uZWN0aW9uKTsKIAogICAgIExPRyhOZXR3b3JrLCAiSGFuZGxlICVw
IGRlbGVnYXRlIGNvbm5lY3Rpb246JXAgZGlkUmVjZWl2ZVJlc3BvbnNlOiVwIChIVFRQIHN0YXR1
cyAlZCwgcmVwb3J0ZWQgTUlNRVR5cGUgJyVzJykiLCBtX2hhbmRsZSwgY29ubmVjdGlvbiwgciwg
W3IgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihzdGF0dXNDb2RlKV0gPyBbKGlkKXIgc3Rh
dHVzQ29kZV0gOiAwLCBbW3IgTUlNRVR5cGVdIFVURjhTdHJpbmddKTsKIAotICAgIGlmICghbV9o
YW5kbGUgfHwgIW1faGFuZGxlLT5jbGllbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgLy8g
QXZvaWQgTUlNRSB0eXBlIHNuaWZmaW5nIGlmIHRoZSByZXNwb25zZSBjb21lcyBiYWNrIGFzIDMw
NCBOb3QgTW9kaWZpZWQuCi0gICAgaW50IHN0YXR1c0NvZGUgPSBbciByZXNwb25kc1RvU2VsZWN0
b3I6QHNlbGVjdG9yKHN0YXR1c0NvZGUpXSA/IFsoaWQpciBzdGF0dXNDb2RlXSA6IDA7Ci0gICAg
aWYgKHN0YXR1c0NvZGUgIT0gMzA0KQotICAgICAgICBhZGp1c3RNSU1FVHlwZUlmTmVjZXNzYXJ5
KFtyIF9DRlVSTFJlc3BvbnNlXSk7CisgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21h
aW5fcXVldWUoKSwgXnsKKyAgICAgICAgaWYgKCFtX2hhbmRsZSB8fCAhbV9oYW5kbGUtPmNsaWVu
dCgpKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIC8vIEF2b2lkIE1JTUUgdHlwZSBz
bmlmZmluZyBpZiB0aGUgcmVzcG9uc2UgY29tZXMgYmFjayBhcyAzMDQgTm90IE1vZGlmaWVkLgor
ICAgICAgICBpbnQgc3RhdHVzQ29kZSA9IFtyIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Io
c3RhdHVzQ29kZSldID8gWyhpZClyIHN0YXR1c0NvZGVdIDogMDsKKyAgICAgICAgaWYgKHN0YXR1
c0NvZGUgIT0gMzA0KQorICAgICAgICAgICAgYWRqdXN0TUlNRVR5cGVJZk5lY2Vzc2FyeShbciBf
Q0ZVUkxSZXNwb25zZV0pOwogCi0gICAgaWYgKFttX2hhbmRsZS0+Zmlyc3RSZXF1ZXN0KCkubnNV
UkxSZXF1ZXN0KERvTm90VXBkYXRlSFRUUEJvZHkpIF9wcm9wZXJ0eUZvcktleTpAIkZvcmNlSFRN
TE1JTUVUeXBlIl0pCi0gICAgICAgIFtyIF9zZXRNSU1FVHlwZTpAInRleHQvaHRtbCJdOworICAg
ICAgICBpZiAoW21faGFuZGxlLT5maXJzdFJlcXVlc3QoKS5uc1VSTFJlcXVlc3QoRG9Ob3RVcGRh
dGVIVFRQQm9keSkgX3Byb3BlcnR5Rm9yS2V5OkAiRm9yY2VIVE1MTUlNRVR5cGUiXSkKKyAgICAg
ICAgICAgIFtyIF9zZXRNSU1FVHlwZTpAInRleHQvaHRtbCJdOwogCi0gICAgbV9oYW5kbGUtPmNs
aWVudCgpLT5kaWRSZWNlaXZlUmVzcG9uc2UobV9oYW5kbGUsIHIpOworICAgICAgICBtX2hhbmRs
ZS0+Y2xpZW50KCktPmRpZFJlY2VpdmVSZXNwb25zZShtX2hhbmRsZSwgcik7CisgICAgfSk7CiB9
CiAKICNpZiBVU0UoTkVUV09SS19DRkRBVEFfQVJSQVlfQ0FMTEJBQ0spCiAtICh2b2lkKWNvbm5l
Y3Rpb246KE5TVVJMQ29ubmVjdGlvbiAqKWNvbm5lY3Rpb24gZGlkUmVjZWl2ZURhdGFBcnJheToo
TlNBcnJheSAqKWRhdGFBcnJheQogeworICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwogICAg
IFVOVVNFRF9QQVJBTShjb25uZWN0aW9uKTsKLSAgICBMT0coTmV0d29yaywgIkhhbmRsZSAlcCBk
ZWxlZ2F0ZSBjb25uZWN0aW9uOiVwIGRpZFJlY2VpdmVEYXRhQXJyYXk6JXAgYXJyYXlTaXplOiVk
IiwgbV9oYW5kbGUsIGNvbm5lY3Rpb24sIGRhdGFBcnJheSwgW2RhdGFBcnJheSBjb3VudF0pOwot
Ci0gICAgaWYgKCFkYXRhQXJyYXkpCi0gICAgICAgIHJldHVybjsKIAotICAgIGlmICghbV9oYW5k
bGUgfHwgIW1faGFuZGxlLT5jbGllbnQoKSkKLSAgICAgICAgcmV0dXJuOworICAgIExPRyhOZXR3
b3JrLCAiSGFuZGxlICVwIGRlbGVnYXRlIGNvbm5lY3Rpb246JXAgZGlkUmVjZWl2ZURhdGFBcnJh
eTolcCBhcnJheVNpemU6JWQiLCBtX2hhbmRsZSwgY29ubmVjdGlvbiwgZGF0YUFycmF5LCBbZGF0
YUFycmF5IGNvdW50XSk7CiAKLSAgICBtX2hhbmRsZS0+aGFuZGxlRGF0YUFycmF5KHJlaW50ZXJw
cmV0X2Nhc3Q8Q0ZBcnJheVJlZj4oZGF0YUFycmF5KSk7Ci0gICAgLy8gVGhlIGNhbGwgdG8gZGlk
UmVjZWl2ZURhdGEgYWJvdmUgY2FuIGNhbmNlbCBhIGxvYWQsIGFuZCBpZiBzbywgdGhlIGRlbGVn
YXRlIChzZWxmKSBjb3VsZCBoYXZlIGJlZW4gZGVhbGxvY2F0ZWQgYnkgdGhpcyBwb2ludC4KKyAg
ICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBeeworICAgICAgICBp
ZiAoIWRhdGFBcnJheSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBpZiAoIW1faGFu
ZGxlIHx8ICFtX2hhbmRsZS0+Y2xpZW50KCkpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAg
ICAgbV9oYW5kbGUtPmhhbmRsZURhdGFBcnJheShyZWludGVycHJldF9jYXN0PENGQXJyYXlSZWY+
KGRhdGFBcnJheSkpOworICAgICAgICAvLyBUaGUgY2FsbCB0byBkaWRSZWNlaXZlRGF0YSBhYm92
ZSBjYW4gY2FuY2VsIGEgbG9hZCwgYW5kIGlmIHNvLCB0aGUgZGVsZWdhdGUgKHNlbGYpIGNvdWxk
IGhhdmUgYmVlbiBkZWFsbG9jYXRlZCBieSB0aGlzIHBvaW50LgorICAgIH0pOwogfQogI2VuZGlm
CiAKIC0gKHZvaWQpY29ubmVjdGlvbjooTlNVUkxDb25uZWN0aW9uICopY29ubmVjdGlvbiBkaWRS
ZWNlaXZlRGF0YTooTlNEYXRhICopZGF0YSBsZW5ndGhSZWNlaXZlZDoobG9uZyBsb25nKWxlbmd0
aFJlY2VpdmVkCiB7CisgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CiAgICAgVU5VU0VEX1BB
UkFNKGNvbm5lY3Rpb24pOwogICAgIFVOVVNFRF9QQVJBTShsZW5ndGhSZWNlaXZlZCk7CiAKICAg
ICBMT0coTmV0d29yaywgIkhhbmRsZSAlcCBkZWxlZ2F0ZSBjb25uZWN0aW9uOiVwIGRpZFJlY2Vp
dmVEYXRhOiVwIGxlbmd0aFJlY2VpdmVkOiVsbGQiLCBtX2hhbmRsZSwgY29ubmVjdGlvbiwgZGF0
YSwgbGVuZ3RoUmVjZWl2ZWQpOwogCi0gICAgaWYgKCFtX2hhbmRsZSB8fCAhbV9oYW5kbGUtPmNs
aWVudCgpKQotICAgICAgICByZXR1cm47Ci0gICAgLy8gRklYTUU6IElmIHdlIGdldCBtb3JlIHRo
YW4gMkIgYnl0ZXMgaW4gYSBzaW5nbGUgY2h1bmssIHRoaXMgY29kZSB3b24ndCBkbyB0aGUgcmln
aHQgdGhpbmcuCi0gICAgLy8gSG93ZXZlciwgd2l0aCB0b2RheSdzIGNvbXB1dGVycyBhbmQgbmV0
d29ya2luZyBzcGVlZHMsIHRoaXMgd29uJ3QgaGFwcGVuIGluIHByYWN0aWNlLgotICAgIC8vIENv
dWxkIGJlIGFuIGlzc3VlIHdpdGggYSBnaWFudCBsb2NhbCBmaWxlLgotCi0gICAgLy8gRklYTUU6
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTc5MwotICAgIC8vIC0x
IG1lYW5zIHdlIGRvIG5vdCBwcm92aWRlIGFueSBkYXRhIGFib3V0IHRyYW5zZmVyIHNpemUgdG8g
aW5zcGVjdG9yIHNvIGl0IHdvdWxkIHVzZQotICAgIC8vIENvbnRlbnQtTGVuZ3RoIGhlYWRlcnMg
b3IgY29udGVudCBzaXplIHRvIHNob3cgdHJhbnNmZXIgc2l6ZS4KLSAgICBtX2hhbmRsZS0+Y2xp
ZW50KCktPmRpZFJlY2VpdmVCdWZmZXIobV9oYW5kbGUsIFNoYXJlZEJ1ZmZlcjo6d3JhcE5TRGF0
YShkYXRhKSwgLTEpOworICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVl
KCksIF57CisgICAgICAgIGlmICghbV9oYW5kbGUgfHwgIW1faGFuZGxlLT5jbGllbnQoKSkKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgLy8gRklYTUU6IElmIHdlIGdldCBtb3JlIHRoYW4g
MkIgYnl0ZXMgaW4gYSBzaW5nbGUgY2h1bmssIHRoaXMgY29kZSB3b24ndCBkbyB0aGUgcmlnaHQg
dGhpbmcuCisgICAgICAgIC8vIEhvd2V2ZXIsIHdpdGggdG9kYXkncyBjb21wdXRlcnMgYW5kIG5l
dHdvcmtpbmcgc3BlZWRzLCB0aGlzIHdvbid0IGhhcHBlbiBpbiBwcmFjdGljZS4KKyAgICAgICAg
Ly8gQ291bGQgYmUgYW4gaXNzdWUgd2l0aCBhIGdpYW50IGxvY2FsIGZpbGUuCisKKyAgICAgICAg
Ly8gRklYTUU6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTc5Mwor
ICAgICAgICAvLyAtMSBtZWFucyB3ZSBkbyBub3QgcHJvdmlkZSBhbnkgZGF0YSBhYm91dCB0cmFu
c2ZlciBzaXplIHRvIGluc3BlY3RvciBzbyBpdCB3b3VsZCB1c2UKKyAgICAgICAgLy8gQ29udGVu
dC1MZW5ndGggaGVhZGVycyBvciBjb250ZW50IHNpemUgdG8gc2hvdyB0cmFuc2ZlciBzaXplLgor
ICAgICAgICBtX2hhbmRsZS0+Y2xpZW50KCktPmRpZFJlY2VpdmVCdWZmZXIobV9oYW5kbGUsIFNo
YXJlZEJ1ZmZlcjo6d3JhcE5TRGF0YShkYXRhKSwgLTEpOworICAgIH0pOwogfQogCiAtICh2b2lk
KWNvbm5lY3Rpb246KE5TVVJMQ29ubmVjdGlvbiAqKWNvbm5lY3Rpb24gd2lsbFN0b3BCdWZmZXJp
bmdEYXRhOihOU0RhdGEgKilkYXRhCiB7CisgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CiAg
ICAgVU5VU0VEX1BBUkFNKGNvbm5lY3Rpb24pOwogCiAgICAgTE9HKE5ldHdvcmssICJIYW5kbGUg
JXAgZGVsZWdhdGUgY29ubmVjdGlvbjolcCB3aWxsU3RvcEJ1ZmZlcmluZ0RhdGE6JXAiLCBtX2hh
bmRsZSwgY29ubmVjdGlvbiwgZGF0YSk7CiAKLSAgICBpZiAoIW1faGFuZGxlIHx8ICFtX2hhbmRs
ZS0+Y2xpZW50KCkpCi0gICAgICAgIHJldHVybjsKLSAgICAvLyBGSVhNRTogSWYgd2UgZ2V0IGEg
cmVzb3VyY2Ugd2l0aCBtb3JlIHRoYW4gMkIgYnl0ZXMsIHRoaXMgY29kZSB3b24ndCBkbyB0aGUg
cmlnaHQgdGhpbmcuCi0gICAgLy8gSG93ZXZlciwgd2l0aCB0b2RheSdzIGNvbXB1dGVycyBhbmQg
bmV0d29ya2luZyBzcGVlZHMsIHRoaXMgd29uJ3QgaGFwcGVuIGluIHByYWN0aWNlLgotICAgIC8v
IENvdWxkIGJlIGFuIGlzc3VlIHdpdGggYSBnaWFudCBsb2NhbCBmaWxlLgotICAgIG1faGFuZGxl
LT5jbGllbnQoKS0+d2lsbFN0b3BCdWZmZXJpbmdEYXRhKG1faGFuZGxlLCAoY29uc3QgY2hhciop
W2RhdGEgYnl0ZXNdLCBzdGF0aWNfY2FzdDxpbnQ+KFtkYXRhIGxlbmd0aF0pKTsKKyAgICBkaXNw
YXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBeeworICAgICAgICBpZiAoIW1f
aGFuZGxlIHx8ICFtX2hhbmRsZS0+Y2xpZW50KCkpCisgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIC8vIEZJWE1FOiBJZiB3ZSBnZXQgYSByZXNvdXJjZSB3aXRoIG1vcmUgdGhhbiAyQiBieXRl
cywgdGhpcyBjb2RlIHdvbid0IGRvIHRoZSByaWdodCB0aGluZy4KKyAgICAgICAgLy8gSG93ZXZl
ciwgd2l0aCB0b2RheSdzIGNvbXB1dGVycyBhbmQgbmV0d29ya2luZyBzcGVlZHMsIHRoaXMgd29u
J3QgaGFwcGVuIGluIHByYWN0aWNlLgorICAgICAgICAvLyBDb3VsZCBiZSBhbiBpc3N1ZSB3aXRo
IGEgZ2lhbnQgbG9jYWwgZmlsZS4KKyAgICAgICAgbV9oYW5kbGUtPmNsaWVudCgpLT53aWxsU3Rv
cEJ1ZmZlcmluZ0RhdGEobV9oYW5kbGUsIChjb25zdCBjaGFyKilbZGF0YSBieXRlc10sIHN0YXRp
Y19jYXN0PGludD4oW2RhdGEgbGVuZ3RoXSkpOworICAgIH0pOwogfQogCiAtICh2b2lkKWNvbm5l
Y3Rpb246KE5TVVJMQ29ubmVjdGlvbiAqKWNvbm5lY3Rpb24gZGlkU2VuZEJvZHlEYXRhOihOU0lu
dGVnZXIpYnl0ZXNXcml0dGVuIHRvdGFsQnl0ZXNXcml0dGVuOihOU0ludGVnZXIpdG90YWxCeXRl
c1dyaXR0ZW4gdG90YWxCeXRlc0V4cGVjdGVkVG9Xcml0ZTooTlNJbnRlZ2VyKXRvdGFsQnl0ZXNF
eHBlY3RlZFRvV3JpdGUKIHsKKyAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKICAgICBVTlVT
RURfUEFSQU0oY29ubmVjdGlvbik7CiAgICAgVU5VU0VEX1BBUkFNKGJ5dGVzV3JpdHRlbik7CiAK
ICAgICBMT0coTmV0d29yaywgIkhhbmRsZSAlcCBkZWxlZ2F0ZSBjb25uZWN0aW9uOiVwIGRpZFNl
bmRCb2R5RGF0YTolZCB0b3RhbEJ5dGVzV3JpdHRlbjolZCB0b3RhbEJ5dGVzRXhwZWN0ZWRUb1dy
aXRlOiVkIiwgbV9oYW5kbGUsIGNvbm5lY3Rpb24sIGJ5dGVzV3JpdHRlbiwgdG90YWxCeXRlc1dy
aXR0ZW4sIHRvdGFsQnl0ZXNFeHBlY3RlZFRvV3JpdGUpOwogCi0gICAgaWYgKCFtX2hhbmRsZSB8
fCAhbV9oYW5kbGUtPmNsaWVudCgpKQotICAgICAgICByZXR1cm47Ci0gICAgbV9oYW5kbGUtPmNs
aWVudCgpLT5kaWRTZW5kRGF0YShtX2hhbmRsZSwgdG90YWxCeXRlc1dyaXR0ZW4sIHRvdGFsQnl0
ZXNFeHBlY3RlZFRvV3JpdGUpOworICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWlu
X3F1ZXVlKCksIF57CisgICAgICAgIGlmICghbV9oYW5kbGUgfHwgIW1faGFuZGxlLT5jbGllbnQo
KSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgbV9oYW5kbGUtPmNsaWVudCgpLT5kaWRT
ZW5kRGF0YShtX2hhbmRsZSwgdG90YWxCeXRlc1dyaXR0ZW4sIHRvdGFsQnl0ZXNFeHBlY3RlZFRv
V3JpdGUpOworICAgIH0pOwogfQogCiAtICh2b2lkKWNvbm5lY3Rpb25EaWRGaW5pc2hMb2FkaW5n
OihOU1VSTENvbm5lY3Rpb24gKiljb25uZWN0aW9uCiB7CisgICAgQVNTRVJUKCFpc01haW5UaHJl
YWQoKSk7CiAgICAgVU5VU0VEX1BBUkFNKGNvbm5lY3Rpb24pOwogCiAgICAgTE9HKE5ldHdvcmss
ICJIYW5kbGUgJXAgZGVsZWdhdGUgY29ubmVjdGlvbkRpZEZpbmlzaExvYWRpbmc6JXAiLCBtX2hh
bmRsZSwgY29ubmVjdGlvbik7CiAKLSAgICBpZiAoIW1faGFuZGxlIHx8ICFtX2hhbmRsZS0+Y2xp
ZW50KCkpCi0gICAgICAgIHJldHVybjsKKyAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRf
bWFpbl9xdWV1ZSgpLCBeeworICAgICAgICBpZiAoIW1faGFuZGxlIHx8ICFtX2hhbmRsZS0+Y2xp
ZW50KCkpCisgICAgICAgICAgICByZXR1cm47CiAKLSAgICBtX2hhbmRsZS0+Y2xpZW50KCktPmRp
ZEZpbmlzaExvYWRpbmcobV9oYW5kbGUsIDApOworICAgICAgICBtX2hhbmRsZS0+Y2xpZW50KCkt
PmRpZEZpbmlzaExvYWRpbmcobV9oYW5kbGUsIDApOworICAgIH0pOwogfQogCiAtICh2b2lkKWNv
bm5lY3Rpb246KE5TVVJMQ29ubmVjdGlvbiAqKWNvbm5lY3Rpb24gZGlkRmFpbFdpdGhFcnJvcjoo
TlNFcnJvciAqKWVycm9yCiB7CisgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CiAgICAgVU5V
U0VEX1BBUkFNKGNvbm5lY3Rpb24pOwogCiAgICAgTE9HKE5ldHdvcmssICJIYW5kbGUgJXAgZGVs
ZWdhdGUgY29ubmVjdGlvbjolcCBkaWRGYWlsV2l0aEVycm9yOiVAIiwgbV9oYW5kbGUsIGNvbm5l
Y3Rpb24sIGVycm9yKTsKIAotICAgIGlmICghbV9oYW5kbGUgfHwgIW1faGFuZGxlLT5jbGllbnQo
KSkKLSAgICAgICAgcmV0dXJuOworICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWlu
X3F1ZXVlKCksIF57CisgICAgICAgIGlmICghbV9oYW5kbGUgfHwgIW1faGFuZGxlLT5jbGllbnQo
KSkKKyAgICAgICAgICAgIHJldHVybjsKIAotICAgIG1faGFuZGxlLT5jbGllbnQoKS0+ZGlkRmFp
bChtX2hhbmRsZSwgZXJyb3IpOworICAgICAgICBtX2hhbmRsZS0+Y2xpZW50KCktPmRpZEZhaWwo
bV9oYW5kbGUsIGVycm9yKTsKKyAgICB9KTsKIH0KIAogCiAtIChOU0NhY2hlZFVSTFJlc3BvbnNl
ICopY29ubmVjdGlvbjooTlNVUkxDb25uZWN0aW9uICopY29ubmVjdGlvbiB3aWxsQ2FjaGVSZXNw
b25zZTooTlNDYWNoZWRVUkxSZXNwb25zZSAqKWNhY2hlZFJlc3BvbnNlCiB7Ci0gICAgTE9HKE5l
dHdvcmssICJIYW5kbGUgJXAgZGVsZWdhdGUgY29ubmVjdGlvbjolcCB3aWxsQ2FjaGVSZXNwb25z
ZTolcCIsIG1faGFuZGxlLCBjb25uZWN0aW9uLCBjYWNoZWRSZXNwb25zZSk7Ci0KKyAgICBBU1NF
UlQoIWlzTWFpblRocmVhZCgpKTsKICAgICBVTlVTRURfUEFSQU0oY29ubmVjdGlvbik7CiAKLSAg
ICBpZiAoIW1faGFuZGxlIHx8ICFtX2hhbmRsZS0+Y2xpZW50KCkpCi0gICAgICAgIHJldHVybiBu
aWw7CisgICAgTE9HKE5ldHdvcmssICJIYW5kbGUgJXAgZGVsZWdhdGUgY29ubmVjdGlvbjolcCB3
aWxsQ2FjaGVSZXNwb25zZTolcCIsIG1faGFuZGxlLCBjb25uZWN0aW9uLCBjYWNoZWRSZXNwb25z
ZSk7CiAKLSAgICAvLyBXb3JrYXJvdW5kIGZvciA8cmRhcjovL3Byb2JsZW0vNjMwMDk5MD4gQ2Fj
aGluZyBkb2VzIG5vdCByZXNwZWN0IFZhcnkgSFRUUCBoZWFkZXIuCi0gICAgLy8gRklYTUU6IFdl
YkNvcmUgY2FjaGUgaGFzIGlzc3VlcyB3aXRoIFZhcnksIHRvbyAoYnVnIDU4Nzk3LCBidWcgNzE1
MDkpLgotICAgIGlmIChbW2NhY2hlZFJlc3BvbnNlIHJlc3BvbnNlXSBpc0tpbmRPZkNsYXNzOltO
U0hUVFBVUkxSZXNwb25zZSBjbGFzc11dCi0gICAgICAgICYmIFtbKE5TSFRUUFVSTFJlc3BvbnNl
ICopW2NhY2hlZFJlc3BvbnNlIHJlc3BvbnNlXSBhbGxIZWFkZXJGaWVsZHNdIG9iamVjdEZvcktl
eTpAIlZhcnkiXSkKLSAgICAgICAgcmV0dXJuIG5pbDsKKyAgICBkaXNwYXRjaF9hc3luYyhkaXNw
YXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBeeworICAgICAgICBpZiAoIW1faGFuZGxlIHx8ICFtX2hh
bmRsZS0+Y2xpZW50KCkpIHsKKyAgICAgICAgICAgIG1fY2FjaGVkUmVzcG9uc2VSZXN1bHQgPSBu
dWxscHRyOworICAgICAgICAgICAgZGlzcGF0Y2hfc2VtYXBob3JlX3NpZ25hbChtX3NlbWFwaG9y
ZSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICAvLyBXb3JrYXJv
dW5kIGZvciA8cmRhcjovL3Byb2JsZW0vNjMwMDk5MD4gQ2FjaGluZyBkb2VzIG5vdCByZXNwZWN0
IFZhcnkgSFRUUCBoZWFkZXIuCisgICAgICAgIC8vIEZJWE1FOiBXZWJDb3JlIGNhY2hlIGhhcyBp
c3N1ZXMgd2l0aCBWYXJ5LCB0b28gKGJ1ZyA1ODc5NywgYnVnIDcxNTA5KS4KKyAgICAgICAgaWYg
KFtbY2FjaGVkUmVzcG9uc2UgcmVzcG9uc2VdIGlzS2luZE9mQ2xhc3M6W05TSFRUUFVSTFJlc3Bv
bnNlIGNsYXNzXV0KKyAgICAgICAgICAgICYmIFtbKE5TSFRUUFVSTFJlc3BvbnNlICopW2NhY2hl
ZFJlc3BvbnNlIHJlc3BvbnNlXSBhbGxIZWFkZXJGaWVsZHNdIG9iamVjdEZvcktleTpAIlZhcnki
XSkgeworICAgICAgICAgICAgbV9jYWNoZWRSZXNwb25zZVJlc3VsdCA9IG51bGxwdHI7CisgICAg
ICAgICAgICBkaXNwYXRjaF9zZW1hcGhvcmVfc2lnbmFsKG1fc2VtYXBob3JlKTsKKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIG1faGFuZGxlLT5jbGllbnQoKS0+d2ls
bENhY2hlUmVzcG9uc2VBc3luYyhtX2hhbmRsZSwgY2FjaGVkUmVzcG9uc2UpOworICAgIH0pOwog
Ci0gICAgTlNDYWNoZWRVUkxSZXNwb25zZSAqbmV3UmVzcG9uc2UgPSBtX2hhbmRsZS0+Y2xpZW50
KCktPndpbGxDYWNoZVJlc3BvbnNlKG1faGFuZGxlLCBjYWNoZWRSZXNwb25zZSk7Ci0gICAgaWYg
KG5ld1Jlc3BvbnNlICE9IGNhY2hlZFJlc3BvbnNlKQotICAgICAgICByZXR1cm4gbmV3UmVzcG9u
c2U7Ci0gICAgCi0gICAgcmV0dXJuIG5ld1Jlc3BvbnNlOworICAgIGRpc3BhdGNoX3NlbWFwaG9y
ZV93YWl0KG1fc2VtYXBob3JlLCBESVNQQVRDSF9USU1FX0ZPUkVWRVIpOworICAgIHJldHVybiBb
bV9jYWNoZWRSZXNwb25zZVJlc3VsdC5sZWFrUmVmKCkgYXV0b3JlbGVhc2VdOwogfQogCiBAZW5k
CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9EZXJpdmVkU291cmNlcy5tYWtlCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQyL0Rlcml2ZWRTb3VyY2VzLm1ha2UJKHJldmlzaW9uIDE0Njc4NSkKKysr
IFNvdXJjZS9XZWJLaXQyL0Rlcml2ZWRTb3VyY2VzLm1ha2UJKHdvcmtpbmcgY29weSkKQEAgLTY5
LDYgKzY5LDcgQEAgTUVTU0FHRV9SRUNFSVZFUlMgPSBcCiAgICAgTmV0d29ya1Byb2Nlc3MgXAog
ICAgIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbiBcCiAgICAgTmV0d29ya1Byb2Nlc3NQcm94eSBc
CisgICAgTmV0d29ya1Jlc291cmNlTG9hZGVyIFwKICAgICBOUE9iamVjdE1lc3NhZ2VSZWNlaXZl
ciBcCiAgICAgT2ZmbGluZVN0b3JhZ2VQcm9jZXNzIFwKICAgICBQbHVnaW5Db250cm9sbGVyUHJv
eHkgXApJbmRleDogU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAkocmV2aXNpb24gMTQ2Nzg1
KQorKysgU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAi
TmV0d29ya1Byb2Nlc3MuaCIKICNpbmNsdWRlICJOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVy
cy5oIgogI2luY2x1ZGUgIk5ldHdvcmtSZXNvdXJjZUxvYWRlci5oIgorI2luY2x1ZGUgIk5ldHdv
cmtSZXNvdXJjZUxvYWRlck1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiUmVtb3RlTmV0d29ya2luZ0Nv
bnRleHQuaCIKICNpbmNsdWRlICJTeW5jTmV0d29ya1Jlc291cmNlTG9hZGVyLmgiCiAjaW5jbHVk
ZSA8V2ViQ29yZS9CbG9iRGF0YS5oPgpAQCAtNzAsNiArNzEsMTMgQEAgdm9pZCBOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlkUgogICAgICAgICBkaWRSZWNlaXZlTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3NNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQorCisgICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09
IE1lc3NhZ2VzOjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkg
eworICAgICAgICBIYXNoTWFwPFJlc291cmNlTG9hZElkZW50aWZpZXIsIFJlZlB0cjxOZXR3b3Jr
UmVzb3VyY2VMb2FkZXI+ID46Oml0ZXJhdG9yIGxvYWRlckl0ZXJhdG9yID0gbV9uZXR3b3JrUmVz
b3VyY2VMb2FkZXJzLmZpbmQoZGVjb2Rlci5kZXN0aW5hdGlvbklEKCkpOworICAgICAgICBpZiAo
bG9hZGVySXRlcmF0b3IgIT0gbV9uZXR3b3JrUmVzb3VyY2VMb2FkZXJzLmVuZCgpKQorICAgICAg
ICAgICAgbG9hZGVySXRlcmF0b3ItPnZhbHVlLT5kaWRSZWNlaXZlTmV0d29ya1Jlc291cmNlTG9h
ZGVyTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
ICAgICAKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQy
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAko
cmV2aXNpb24gMTQ2Nzg1KQorKysgU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Jlc291cmNlTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjc3LDU0ICsyNzcsNTggQEAg
dm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZEZhaWwoUmVzbwogICAgIHNjaGVkdWxlQ2xl
YW51cE9uTWFpblRocmVhZCgpOwogfQogCi12b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6d2ls
bFNlbmRSZXF1ZXN0KFJlc291cmNlSGFuZGxlKiwgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlKQordm9pZCBOZXR3b3JrUmVz
b3VyY2VMb2FkZXI6OndpbGxTZW5kUmVxdWVzdEFzeW5jKFJlc291cmNlSGFuZGxlKiwgY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVj
dFJlc3BvbnNlKQogewogICAgIC8vIFdlIG9ubHkgZXhwZWN0IHRvIGdldCB0aGUgd2lsbFNlbmRS
ZXF1ZXN0IGNhbGxiYWNrIGZyb20gUmVzb3VyY2VIYW5kbGUgYXMgdGhlIHJlc3VsdCBvZiBhIHJl
ZGlyZWN0LgogICAgIEFTU0VSVCghcmVkaXJlY3RSZXNwb25zZS5pc051bGwoKSk7Ci0gICAgQVNT
RVJUKCFpc01haW5UaHJlYWQoKSk7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIAotICAg
IC8vIElNUE9SVEFOVDogVGhlIGZhY3QgdGhhdCB0aGlzIG1lc3NhZ2UgdG8gdGhlIFdlYlByb2Nl
c3MgaXMgc3luYyBpcyB3aGF0IG1ha2VzIG91ciBjdXJyZW50IGFwcHJvYWNoIHRvIHN5bmNocm9u
b3VzIFhNTEh0dHBSZXF1ZXN0cyBzYWZlLgotICAgIC8vIElmIHRoaXMgbWVzc2FnZSBjaGFuZ2Vz
IHRvIGJlIGFzeW5jaHJvbm91cyB3ZSBtaWdodCBpbnRyb2R1Y2UgYSBzaXR1YXRpb24gd2hlcmUg
dGhlIE5ldHdvcmtQcm9jZXNzIGlzIGRlYWRsb2NrZWQgd2FpdGluZyBmb3IgNiBjb25uZWN0aW9u
cworICAgIG1fc3VnZ2VzdGVkUmVxdWVzdEZvcldpbGxTZW5kUmVxdWVzdCA9IHJlcXVlc3Q7CisK
KyAgICAvLyBUaGlzIG1lc3NhZ2UgaXMgRGlzcGF0Y2hNZXNzYWdlRXZlbldoZW5XYWl0aW5nRm9y
U3luY1JlcGx5IHRvIGF2b2lkIGEgc2l0dWF0aW9uIHdoZXJlIHRoZSBOZXR3b3JrUHJvY2VzcyBp
cyBkZWFkbG9ja2VkIHdhaXRpbmcgZm9yIDYgY29ubmVjdGlvbnMKICAgICAvLyB0byBjb21wbGV0
ZSB3aGlsZSB0aGUgV2ViUHJvY2VzcyBpcyB3YWl0aW5nIGZvciBhIDd0aCB0byBjb21wbGV0ZS4K
LSAgICAvLyBJZiB3ZSBldmVyIGNoYW5nZSB0aGlzIG1lc3NhZ2UgdG8gYmUgYXN5bmNocm9ub3Vz
IHdlIGhhdmUgdG8gaW5jbHVkZSBzYWZlZ3VhcmRzIHRvIG1ha2Ugc3VyZSB0aGUgbmV3IGRlc2ln
biBpbnRlcmFjdHMgd2VsbCB3aXRoIHN5bmMgWEhSLgotICAgIFJlc291cmNlUmVxdWVzdCByZXR1
cm5lZFJlcXVlc3Q7Ci0gICAgaWYgKCFzZW5kU3luY0Fib3J0aW5nT25GYWlsdXJlKE1lc3NhZ2Vz
OjpXZWJSZXNvdXJjZUxvYWRlcjo6V2lsbFNlbmRSZXF1ZXN0KHJlcXVlc3QsIHJlZGlyZWN0UmVz
cG9uc2UpLCBNZXNzYWdlczo6V2ViUmVzb3VyY2VMb2FkZXI6OldpbGxTZW5kUmVxdWVzdDo6UmVw
bHkocmV0dXJuZWRSZXF1ZXN0KSkpCi0gICAgICAgIHJldHVybjsKLSAgICAKLSAgICByZXF1ZXN0
LnVwZGF0ZUZyb21EZWxlZ2F0ZVByZXNlcnZpbmdPbGRIVFRQQm9keShyZXR1cm5lZFJlcXVlc3Qu
bnNVUkxSZXF1ZXN0KERvTm90VXBkYXRlSFRUUEJvZHkpKTsKKyAgICBjb25uZWN0aW9uKCktPnNl
bmQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpXaWxsU2VuZFJlcXVlc3QocmVxdWVzdCwg
cmVkaXJlY3RSZXNwb25zZSksIGRlc3RpbmF0aW9uSUQoKSwgQ29yZUlQQzo6RGlzcGF0Y2hNZXNz
YWdlRXZlbldoZW5XYWl0aW5nRm9yU3luY1JlcGx5KTsKK30KKwordm9pZCBOZXR3b3JrUmVzb3Vy
Y2VMb2FkZXI6OmNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYg
bmV3UmVxdWVzdCkKK3sKKyAgICBtX3N1Z2dlc3RlZFJlcXVlc3RGb3JXaWxsU2VuZFJlcXVlc3Qu
dXBkYXRlRnJvbURlbGVnYXRlUHJlc2VydmluZ09sZEhUVFBCb2R5KG5ld1JlcXVlc3QubnNVUkxS
ZXF1ZXN0KERvTm90VXBkYXRlSFRUUEJvZHkpKTsKKyAgICBtX2hhbmRsZS0+Y29udGludWVXaWxs
U2VuZFJlcXVlc3QobV9zdWdnZXN0ZWRSZXF1ZXN0Rm9yV2lsbFNlbmRSZXF1ZXN0KTsKIAotICAg
IFJ1bkxvb3A6Om1haW4oKS0+ZGlzcGF0Y2goYmluZCgmTmV0d29ya1Jlc291cmNlTG9hZFNjaGVk
dWxlcjo6cmVjZWl2ZWRSZWRpcmVjdCwgJk5ldHdvcmtQcm9jZXNzOjpzaGFyZWQoKS5uZXR3b3Jr
UmVzb3VyY2VMb2FkU2NoZWR1bGVyKCksIHRoaXMsIHJlcXVlc3QudXJsKCkpKTsKKyAgICBSdW5M
b29wOjptYWluKCktPmRpc3BhdGNoKGJpbmQoJk5ldHdvcmtSZXNvdXJjZUxvYWRTY2hlZHVsZXI6
OnJlY2VpdmVkUmVkaXJlY3QsICZOZXR3b3JrUHJvY2Vzczo6c2hhcmVkKCkubmV0d29ya1Jlc291
cmNlTG9hZFNjaGVkdWxlcigpLCB0aGlzLCBtX3N1Z2dlc3RlZFJlcXVlc3RGb3JXaWxsU2VuZFJl
cXVlc3QudXJsKCkpKTsKKworICAgIG1fc3VnZ2VzdGVkUmVxdWVzdEZvcldpbGxTZW5kUmVxdWVz
dCA9IFJlc291cmNlUmVxdWVzdCgpOwogfQogCiAvLyBGSVhNRSAoTmV0d29ya1Byb2Nlc3MpOiBN
YW55IG9mIHRoZSBmb2xsb3dpbmcgUmVzb3VyY2VIYW5kbGVDbGllbnQgbWV0aG9kcyBkZWZpbml0
ZWx5IG5lZWQgaW1wbGVtZW50YXRpb25zLiBBIGZldyB3aWxsIG5vdC4KIC8vIE9uY2Ugd2Uga25v
dyB3aGF0IHRoZXkgYXJlIHRoZXkgY2FuIGJlIHJlbW92ZWQuCiAKLXZvaWQgTmV0d29ya1Jlc291
cmNlTG9hZGVyOjpkaWRTZW5kRGF0YShXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZSosIHVuc2lnbmVk
IGxvbmcgbG9uZyAvKmJ5dGVzU2VudCovLCB1bnNpZ25lZCBsb25nIGxvbmcgLyp0b3RhbEJ5dGVz
VG9CZVNlbnQqLykKK3ZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRTZW5kRGF0YShSZXNv
dXJjZUhhbmRsZSosIHVuc2lnbmVkIGxvbmcgbG9uZyAvKmJ5dGVzU2VudCovLCB1bnNpZ25lZCBs
b25nIGxvbmcgLyp0b3RhbEJ5dGVzVG9CZVNlbnQqLykKIHsKICAgICBub3RJbXBsZW1lbnRlZCgp
OwogfQogCi12b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZUNhY2hlZE1ldGFk
YXRhKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlKiwgY29uc3QgY2hhciosIGludCkKK3ZvaWQgTmV0
d29ya1Jlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlQ2FjaGVkTWV0YWRhdGEoUmVzb3VyY2VIYW5k
bGUqLCBjb25zdCBjaGFyKiwgaW50KQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLXZv
aWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjp3YXNCbG9ja2VkKFdlYkNvcmU6OlJlc291cmNlSGFu
ZGxlKikKK3ZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjp3YXNCbG9ja2VkKFJlc291cmNlSGFu
ZGxlKikKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi12b2lkIE5ldHdvcmtSZXNvdXJj
ZUxvYWRlcjo6Y2Fubm90U2hvd1VSTChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZSopCit2b2lkIE5l
dHdvcmtSZXNvdXJjZUxvYWRlcjo6Y2Fubm90U2hvd1VSTChSZXNvdXJjZUhhbmRsZSopCiB7CiAg
ICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAotYm9vbCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnNo
b3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlKFJlc291cmNlSGFuZGxlKikKK3ZvaWQgTmV0d29ya1Jl
c291cmNlTG9hZGVyOjpzaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZUFzeW5jKFJlc291cmNlSGFu
ZGxlKiBoYW5kbGUpCiB7CiAgICAgLy8gV2hlbiB0aGUgV2ViUHJvY2VzcyBpcyBoYW5kbGluZyBs
b2FkaW5nIGEgY2xpZW50IGlzIGNvbnN1bHRlZCBlYWNoIHRpbWUgdGhpcyBzaG91bGRVc2VDcmVk
ZW50aWFsU3RvcmFnZSBxdWVzdGlvbiBpcyBhc2tlZC4KICAgICAvLyBJbiBOZXR3b3JrUHJvY2Vz
cyBtb2RlIHdlIGFzayB0aGUgV2ViUHJvY2VzcyBjbGllbnQgdXAgZnJvbnQgb25jZSBhbmQgdGhl
biByZXVzZSB0aGUgY2FjaGVkIGFuc3dlci4KIAotICAgIHJldHVybiBhbGxvd1N0b3JlZENyZWRl
bnRpYWxzKCkgPT0gQWxsb3dTdG9yZWRDcmVkZW50aWFsczsKKyAgICBoYW5kbGUtPmNvbnRpbnVl
U2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UoYWxsb3dTdG9yZWRDcmVkZW50aWFscygpID09IEFs
bG93U3RvcmVkQ3JlZGVudGlhbHMpOwogfQogCiB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6
ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFJlc291cmNlSGFuZGxlKiwgY29uc3Qg
QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGNoYWxsZW5nZSkKQEAgLTMzOCwyMCArMzQyLDIwIEBA
IHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRDYW5jZWxBdXQKIH0KIAogI2lmIFVTRShQ
Uk9URUNUSU9OX1NQQUNFX0FVVEhfQ0FMTEJBQ0spCi1ib29sIE5ldHdvcmtSZXNvdXJjZUxvYWRl
cjo6Y2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZShSZXNvdXJjZUhhbmRsZSos
IGNvbnN0IFByb3RlY3Rpb25TcGFjZSYgcHJvdGVjdGlvblNwYWNlKQordm9pZCBOZXR3b3JrUmVz
b3VyY2VMb2FkZXI6OmNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2VBc3luYyhS
ZXNvdXJjZUhhbmRsZSosIGNvbnN0IFByb3RlY3Rpb25TcGFjZSYgcHJvdGVjdGlvblNwYWNlKQog
ewotICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VSVChpc01haW5UaHJlYWQo
KSk7CiAKLSAgICAvLyBJTVBPUlRBTlQ6IFRoZSBmYWN0IHRoYXQgdGhpcyBtZXNzYWdlIHRvIHRo
ZSBXZWJQcm9jZXNzIGlzIHN5bmMgaXMgd2hhdCBtYWtlcyBvdXIgY3VycmVudCBhcHByb2FjaCB0
byBzeW5jaHJvbm91cyBYTUxIdHRwUmVxdWVzdHMgc2FmZS4KLSAgICAvLyBJZiB0aGlzIG1lc3Nh
Z2UgY2hhbmdlcyB0byBiZSBhc3luY2hyb25vdXMgd2UgbWlnaHQgaW50cm9kdWNlIGEgc2l0dWF0
aW9uIHdoZXJlIHRoZSBOZXR3b3JrUHJvY2VzcyBpcyBkZWFkbG9ja2VkIHdhaXRpbmcgZm9yIDYg
Y29ubmVjdGlvbnMKLSAgICAvLyB0byBjb21wbGV0ZSB3aGlsZSB0aGUgV2ViUHJvY2VzcyBpcyB3
YWl0aW5nIGZvciBhIDd0aCB0byBjb21wbGV0ZS4KLSAgICAvLyBJZiB3ZSBldmVyIGNoYW5nZSB0
aGlzIG1lc3NhZ2UgdG8gYmUgYXN5bmNocm9ub3VzIHdlIGhhdmUgdG8gaW5jbHVkZSBzYWZlZ3Vh
cmRzIHRvIG1ha2Ugc3VyZSB0aGUgbmV3IGRlc2lnbiBpbnRlcmFjdHMgd2VsbCB3aXRoIHN5bmMg
WEhSLgotICAgIGJvb2wgcmVzdWx0OwotICAgIGlmICghc2VuZFN5bmNBYm9ydGluZ09uRmFpbHVy
ZShNZXNzYWdlczo6V2ViUmVzb3VyY2VMb2FkZXI6OkNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90
ZWN0aW9uU3BhY2UocHJvdGVjdGlvblNwYWNlKSwgTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVy
OjpDYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlOjpSZXBseShyZXN1bHQpKSkK
LSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIC8vIFRoaXMgbWVzc2FnZSBpcyBEaXNwYXRjaE1l
c3NhZ2VFdmVuV2hlbldhaXRpbmdGb3JTeW5jUmVwbHkgdG8gYXZvaWQgYSBzaXR1YXRpb24gd2hl
cmUgdGhlIE5ldHdvcmtQcm9jZXNzIGlzIGRlYWRsb2NrZWQKKyAgICAvLyB3YWl0aW5nIGZvciA2
IGNvbm5lY3Rpb25zIHRvIGNvbXBsZXRlIHdoaWxlIHRoZSBXZWJQcm9jZXNzIGlzIHdhaXRpbmcg
Zm9yIGEgN3RoIHRvIGNvbXBsZXRlLgorICAgIGNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6
V2ViUmVzb3VyY2VMb2FkZXI6OkNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2Uo
cHJvdGVjdGlvblNwYWNlKSwgZGVzdGluYXRpb25JRCgpLCBDb3JlSVBDOjpEaXNwYXRjaE1lc3Nh
Z2VFdmVuV2hlbldhaXRpbmdGb3JTeW5jUmVwbHkpOworfQogCi0gICAgcmV0dXJuIHJlc3VsdDsK
K3ZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpjb250aW51ZUNhbkF1dGhlbnRpY2F0ZUFnYWlu
c3RQcm90ZWN0aW9uU3BhY2UoYm9vbCByZXN1bHQpCit7CisgICAgbV9oYW5kbGUtPmNvbnRpbnVl
Q2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZShyZXN1bHQpOwogfQorCiAjZW5k
aWYKIAogI2lmIFVTRShORVRXT1JLX0NGREFUQV9BUlJBWV9DQUxMQkFDSykKQEAgLTM2MSw3ICsz
NjUsNyBAQCBib29sIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c3VwcG9ydHNEYXRhCiAgICAgcmV0
dXJuIGZhbHNlOwogfQogCi12b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURh
dGFBcnJheShXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZSosIENGQXJyYXlSZWYpCit2b2lkIE5ldHdv
cmtSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGFBcnJheShSZXNvdXJjZUhhbmRsZSosIENG
QXJyYXlSZWYpCiB7CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgbm90SW1wbGVtZW50
ZWQoKTsKQEAgLTM2OSwyMSArMzczLDEzIEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpk
aWRSZWNlaXZlRGEKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oTUFDKQotI2lmIFVTRShDRk5FVFdP
UkspCi1DRkNhY2hlZFVSTFJlc3BvbnNlUmVmIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6d2lsbENh
Y2hlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGUqLCBDRkNhY2hlZFVSTFJlc3BvbnNl
UmVmIHJlc3BvbnNlKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIHJlc3Bv
bnNlOwotfQotI2Vsc2UKLU5TQ2FjaGVkVVJMUmVzcG9uc2UqIE5ldHdvcmtSZXNvdXJjZUxvYWRl
cjo6d2lsbENhY2hlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGUqLCBOU0NhY2hlZFVS
TFJlc3BvbnNlKiByZXNwb25zZSkKK3ZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjp3aWxsQ2Fj
aGVSZXNwb25zZUFzeW5jKFJlc291cmNlSGFuZGxlKiBoYW5kbGUsIE5TQ2FjaGVkVVJMUmVzcG9u
c2UqIHJlc3BvbnNlKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIHJlc3Bv
bnNlOworICAgIGhhbmRsZS0+Y29udGludWVXaWxsQ2FjaGVSZXNwb25zZShyZXNwb25zZSk7CiB9
Ci0jZW5kaWYKIAotdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OndpbGxTdG9wQnVmZmVyaW5n
RGF0YShXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZSosIGNvbnN0IGNoYXIqLCBpbnQpCit2b2lkIE5l
dHdvcmtSZXNvdXJjZUxvYWRlcjo6d2lsbFN0b3BCdWZmZXJpbmdEYXRhKFJlc291cmNlSGFuZGxl
KiwgY29uc3QgY2hhciosIGludCkKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQpJbmRleDog
U291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNl
TG9hZGVyLmgJKHJldmlzaW9uIDE0Njc4NSkKKysrIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC02MywyMiArNjMs
MjIgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBjb25uZWN0aW9uVG9XZWJQcm9jZXNzRGlk
Q2xvc2UoKSBPVkVSUklERTsKICAgICAgICAgCiAgICAgLy8gUmVzb3VyY2VIYW5kbGVDbGllbnQg
bWV0aG9kcwotICAgIHZpcnR1YWwgdm9pZCB3aWxsU2VuZFJlcXVlc3QoV2ViQ29yZTo6UmVzb3Vy
Y2VIYW5kbGUqLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlJiAvKnJlZGlyZWN0UmVzcG9uc2UqLykgT1ZFUlJJREU7Ci0gICAgdmlydHVh
bCB2b2lkIGRpZFNlbmREYXRhKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlKiwgdW5zaWduZWQgbG9u
ZyBsb25nIC8qYnl0ZXNTZW50Ki8sIHVuc2lnbmVkIGxvbmcgbG9uZyAvKnRvdGFsQnl0ZXNUb0Jl
U2VudCovKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgd2lsbFNlbmRSZXF1ZXN0QXN5bmMo
V2ViQ29yZTo6UmVzb3VyY2VIYW5kbGUqLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlKSBPVkVS
UklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkU2VuZERhdGEoV2ViQ29yZTo6UmVzb3VyY2VIYW5k
bGUqLCB1bnNpZ25lZCBsb25nIGxvbmcgYnl0ZXNTZW50LCB1bnNpZ25lZCBsb25nIGxvbmcgdG90
YWxCeXRlc1RvQmVTZW50KSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJl
c3BvbnNlKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlKiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZSYpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShXZWJD
b3JlOjpSZXNvdXJjZUhhbmRsZSosIGNvbnN0IGNoYXIqLCBpbnQsIGludCAvKmVuY29kZWREYXRh
TGVuZ3RoKi8pIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShXZWJD
b3JlOjpSZXNvdXJjZUhhbmRsZSosIGNvbnN0IGNoYXIqLCBpbnQsIGludCBlbmNvZGVkRGF0YUxl
bmd0aCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVDYWNoZWRNZXRhZGF0
YShXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZSosIGNvbnN0IGNoYXIqLCBpbnQpIE9WRVJSSURFOwot
ICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKFdlYkNvcmU6OlJlc291cmNlSGFuZGxl
KiwgZG91YmxlIC8qZmluaXNoVGltZSovKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlk
RmluaXNoTG9hZGluZyhXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZSosIGRvdWJsZSBmaW5pc2hUaW1l
KSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbChXZWJDb3JlOjpSZXNvdXJjZUhh
bmRsZSosIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKSBPVkVSUklERTsKICAgICB2aXJ0
dWFsIHZvaWQgd2FzQmxvY2tlZChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZSopIE9WRVJSSURFOwog
ICAgIHZpcnR1YWwgdm9pZCBjYW5ub3RTaG93VVJMKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlKikg
T1ZFUlJJREU7Ci0gICAgdmlydHVhbCBib29sIHNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlKFdl
YkNvcmU6OlJlc291cmNlSGFuZGxlKikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHNob3Vs
ZFVzZUNyZWRlbnRpYWxTdG9yYWdlQXN5bmMoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGUqKSBPVkVS
UklERTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
KFdlYkNvcmU6OlJlc291cmNlSGFuZGxlKiwgY29uc3QgV2ViQ29yZTo6QXV0aGVudGljYXRpb25D
aGFsbGVuZ2UmKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2FuY2VsQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGUqLCBjb25zdCBXZWJDb3JlOjpB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgYm9vbCB1c2Vz
QXN5bmNDYWxsYmFja3MoKSBPVkVSUklERSB7IHJldHVybiB0cnVlOyB9CiAKICNpZiBVU0UoUFJP
VEVDVElPTl9TUEFDRV9BVVRIX0NBTExCQUNLKQotICAgIHZpcnR1YWwgYm9vbCBjYW5BdXRoZW50
aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlKiwgY29u
c3QgV2ViQ29yZTo6UHJvdGVjdGlvblNwYWNlJikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lk
IGNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2VBc3luYyhXZWJDb3JlOjpSZXNv
dXJjZUhhbmRsZSosIGNvbnN0IFdlYkNvcmU6OlByb3RlY3Rpb25TcGFjZSYpOwogI2VuZGlmCiAK
ICNpZiBVU0UoTkVUV09SS19DRkRBVEFfQVJSQVlfQ0FMTEJBQ0spCkBAIC04OCwxNyArODgsMjEg
QEAgcHVibGljOgogCiAjaWYgUExBVEZPUk0oTUFDKQogICAgIHN0YXRpYyBzaXplX3QgZmlsZUJh
Y2tlZFJlc291cmNlTWluaW11bVNpemUoKTsKLSNpZiBVU0UoQ0ZORVRXT1JLKQotICAgIHZpcnR1
YWwgQ0ZDYWNoZWRVUkxSZXNwb25zZVJlZiB3aWxsQ2FjaGVSZXNwb25zZShXZWJDb3JlOjpSZXNv
dXJjZUhhbmRsZSosIENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYpIE9WRVJSSURFOwotI2Vsc2UKLSAg
ICB2aXJ0dWFsIE5TQ2FjaGVkVVJMUmVzcG9uc2UqIHdpbGxDYWNoZVJlc3BvbnNlKFdlYkNvcmU6
OlJlc291cmNlSGFuZGxlKiwgTlNDYWNoZWRVUkxSZXNwb25zZSopIE9WRVJSSURFOwotI2VuZGlm
CisgICAgdmlydHVhbCB2b2lkIHdpbGxDYWNoZVJlc3BvbnNlQXN5bmMoV2ViQ29yZTo6UmVzb3Vy
Y2VIYW5kbGUqLCBOU0NhY2hlZFVSTFJlc3BvbnNlICopOwogICAgIHZpcnR1YWwgdm9pZCB3aWxs
U3RvcEJ1ZmZlcmluZ0RhdGEoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGUqLCBjb25zdCBjaGFyKiwg
aW50KSBPVkVSUklERTsKICNlbmRpZiAvLyBQTEFURk9STShNQUMpCiAKKyAgICAvLyBNZXNzYWdl
IGhhbmRsZXJzLgorICAgIHZvaWQgZGlkUmVjZWl2ZU5ldHdvcmtSZXNvdXJjZUxvYWRlck1lc3Nh
Z2UoQ29yZUlQQzo6Q29ubmVjdGlvbiosIENvcmVJUEM6Ok1lc3NhZ2VEZWNvZGVyJik7CisKIHBy
aXZhdGU6CiAgICAgTmV0d29ya1Jlc291cmNlTG9hZGVyKGNvbnN0IE5ldHdvcmtSZXNvdXJjZUxv
YWRQYXJhbWV0ZXJzJiwgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MqKTsKIAorICAgIHZv
aWQgY29udGludWVXaWxsU2VuZFJlcXVlc3QoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiBuZXdSZXF1ZXN0KTsKKyNpZiBVU0UoUFJPVEVDVElPTl9TUEFDRV9BVVRIX0NBTExCQUNLKQor
ICAgIHZvaWQgY29udGludWVDYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlKGJv
b2wpOworI2VuZGlmCisKICAgICB2b2lkIHNjaGVkdWxlQ2xlYW51cE9uTWFpblRocmVhZCgpOwog
ICAgIHN0YXRpYyB2b2lkIHBlcmZvcm1DbGVhbnVwcyh2b2lkKik7CiAgICAgdm9pZCBjbGVhbnVw
KCk7CkBAIC0xMTQsNiArMTE4LDkgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8UmVtb3RlTmV0d29y
a2luZ0NvbnRleHQ+IG1fbmV0d29ya2luZ0NvbnRleHQ7CiAgICAgUmVmUHRyPFdlYkNvcmU6OlJl
c291cmNlSGFuZGxlPiBtX2hhbmRsZTsKIAorICAgIC8vIEtlZXAgdGhlIHN1Z2dlc3RlZCByZXF1
ZXN0IGFyb3VuZCB3aGlsZSBhc3luY2hyb25vdXNseSBhc2tpbmcgdG8gdXBkYXRlIGl0LCBiZWNh
dXNlIHNvbWUgcGFydHMgb2YgdGhlIHJlcXVlc3QgZG9uJ3Qgc3Vydml2ZSBJUEMuCisgICAgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0IG1fc3VnZ2VzdGVkUmVxdWVzdEZvcldpbGxTZW5kUmVxdWVz
dDsKKwogICAgIHVpbnQ2NF90IG1fYnl0ZXNSZWNlaXZlZDsKIAogI2lmIF9fTUFDX09TX1hfVkVS
U0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA5MApJbmRleDogU291cmNlL1dlYktpdDIvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5tZXNzYWdl
cy5pbgkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdv
cmtSZXNvdXJjZUxvYWRlci5tZXNzYWdlcy5pbgkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyNyBA
QAorIyBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
IworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuICBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorIyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisjIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisjIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUKKyMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKKyMgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorIyBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUgorIyBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgorIyBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LAorIyBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCittZXNzYWdlcyAtPiBO
ZXR3b3JrUmVzb3VyY2VMb2FkZXIgTGVnYWN5UmVjZWl2ZXIgeworCisgICAgQ29udGludWVXaWxs
U2VuZFJlcXVlc3QoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QpCisgICAgQ29udGlu
dWVDYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlKGJvb2wgY2FuQXV0aGVudGlj
YXRlKQorfQoKUHJvcGVydHkgY2hhbmdlcyBvbjogU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLm1lc3NhZ2VzLmluCl9fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KQWRkZWQ6IHN2
bjptaW1lLXR5cGUKICAgKyB0ZXh0L3BsYWluCkFkZGVkOiBzdm46ZW9sLXN0eWxlCiAgICsgTEYK
CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRp
b25NYW5hZ2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQXV0aGVu
dGljYXRpb24vQXV0aGVudGljYXRpb25NYW5hZ2VyLmNwcAkocmV2aXNpb24gMTQ2Nzg1KQorKysg
U291cmNlL1dlYktpdDIvU2hhcmVkL0F1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0aW9uTWFuYWdl
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDggKzQ4LDEwIEBAIG5hbWVzcGFjZSBXZWJLaXQg
ewogCiBzdGF0aWMgdWludDY0X3QgZ2VuZXJhdGVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUlEKCkK
IHsKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworCiAgICAgc3RhdGljIGludDY0X3QgdW5p
cXVlQXV0aGVudGljYXRpb25DaGFsbGVuZ2VJRDsKLSAgICByZXR1cm4gYXRvbWljSW5jcmVtZW50
KCZ1bmlxdWVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUlEKTsKKyAgICByZXR1cm4gKyt1bmlxdWVB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZUlEOwogfQogCiBjb25zdCBjaGFyKiBBdXRoZW50aWNhdGlv
bk1hbmFnZXI6OnN1cHBsZW1lbnROYW1lKCkKQEAgLTY1LDYgKzY3LDggQEAgQXV0aGVudGljYXRp
b25NYW5hZ2VyOjpBdXRoZW50aWNhdGlvbk1hbgogCiB1aW50NjRfdCBBdXRoZW50aWNhdGlvbk1h
bmFnZXI6OmVzdGFibGlzaElkZW50aWZpZXJGb3JDaGFsbGVuZ2UoY29uc3QgV2ViQ29yZTo6QXV0
aGVudGljYXRpb25DaGFsbGVuZ2UmIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKQogeworICAgIEFT
U0VSVChpc01haW5UaHJlYWQoKSk7CisKICAgICB1aW50NjRfdCBjaGFsbGVuZ2VJRCA9IGdlbmVy
YXRlQXV0aGVudGljYXRpb25DaGFsbGVuZ2VJRCgpOwogICAgIG1fY2hhbGxlbmdlcy5zZXQoY2hh
bGxlbmdlSUQsIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKTsKICAgICByZXR1cm4gY2hhbGxlbmdl
SUQ7CkBAIC0xMDMsNiArMTA3LDggQEAgYm9vbCBBdXRoZW50aWNhdGlvbk1hbmFnZXI6OnRyeVVz
ZVBsYXRmbwogCiB2b2lkIEF1dGhlbnRpY2F0aW9uTWFuYWdlcjo6dXNlQ3JlZGVudGlhbEZvckNo
YWxsZW5nZSh1aW50NjRfdCBjaGFsbGVuZ2VJRCwgY29uc3QgQ3JlZGVudGlhbCYgY3JlZGVudGlh
bCwgY29uc3QgUGxhdGZvcm1DZXJ0aWZpY2F0ZUluZm8mIGNlcnRpZmljYXRlSW5mbykKIHsKKyAg
ICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworCiAgICAgQXV0aGVudGljYXRpb25DaGFsbGVuZ2Ug
Y2hhbGxlbmdlID0gbV9jaGFsbGVuZ2VzLnRha2UoY2hhbGxlbmdlSUQpOwogICAgIEFTU0VSVCgh
Y2hhbGxlbmdlLmlzTnVsbCgpKTsKICAgICAKQEAgLTEyMSw2ICsxMjcsOCBAQCB2b2lkIEF1dGhl
bnRpY2F0aW9uTWFuYWdlcjo6dXNlQ3JlZGVudGlhCiAKIHZvaWQgQXV0aGVudGljYXRpb25NYW5h
Z2VyOjpjb250aW51ZVdpdGhvdXRDcmVkZW50aWFsRm9yQ2hhbGxlbmdlKHVpbnQ2NF90IGNoYWxs
ZW5nZUlEKQogeworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisKICAgICBBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZSBjaGFsbGVuZ2UgPSBtX2NoYWxsZW5nZXMudGFrZShjaGFsbGVuZ2VJRCk7
CiAgICAgQVNTRVJUKCFjaGFsbGVuZ2UuaXNOdWxsKCkpOwogICAgIEF1dGhlbnRpY2F0aW9uQ2xp
ZW50KiBjb3JlQ2xpZW50ID0gY2hhbGxlbmdlLmF1dGhlbnRpY2F0aW9uQ2xpZW50KCk7CkBAIC0x
MzUsNiArMTQzLDggQEAgdm9pZCBBdXRoZW50aWNhdGlvbk1hbmFnZXI6OmNvbnRpbnVlV2l0aAog
CiB2b2lkIEF1dGhlbnRpY2F0aW9uTWFuYWdlcjo6Y2FuY2VsQ2hhbGxlbmdlKHVpbnQ2NF90IGNo
YWxsZW5nZUlEKQogeworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisKICAgICBBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZSBjaGFsbGVuZ2UgPSBtX2NoYWxsZW5nZXMudGFrZShjaGFsbGVuZ2VJ
RCk7CiAgICAgQVNTRVJUKCFjaGFsbGVuZ2UuaXNOdWxsKCkpOwogICAgIEF1dGhlbnRpY2F0aW9u
Q2xpZW50KiBjb3JlQ2xpZW50ID0gY2hhbGxlbmdlLmF1dGhlbnRpY2F0aW9uQ2xpZW50KCk7Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCShyZXZpc2lvbiAxNDY3ODUpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTEwOTgsNiArMTA5OCw4IEBACiAJ
CUUxNEE5NTRBMTZFMDE2QTQwMDY4REU4MiAvKiBOZXR3b3JrUHJvY2Vzc1BsYXRmb3JtU3RyYXRl
Z2llcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTE0
QTk1NDgxNkUwMTZBNDAwNjhERTgyIC8qIE5ldHdvcmtQcm9jZXNzUGxhdGZvcm1TdHJhdGVnaWVz
LmggKi87IH07CiAJCUUxNTEzQzY2MTY2RUFCQjIwMDE0OUZDQiAvKiBDaGlsZFByb2Nlc3NQcm94
eS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTUx
M0M2NDE2NkVBQkIyMDAxNDlGQ0IgLyogQ2hpbGRQcm9jZXNzUHJveHkuY3BwICovOyB9OwogCQlF
MTUxM0M2NzE2NkVBQkIyMDAxNDlGQ0IgLyogQ2hpbGRQcm9jZXNzUHJveHkuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxNTEzQzY1MTY2RUFCQjIwMDE0
OUZDQiAvKiBDaGlsZFByb2Nlc3NQcm94eS5oICovOyB9OworCQlFMTUyNTUxQTE3MDExODE5MDAz
RDdBREIgLyogTmV0d29ya1Jlc291cmNlTG9hZGVyTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxNTI1NTE4MTcwMTE4MTkw
MDNEN0FEQiAvKiBOZXR3b3JrUmVzb3VyY2VMb2FkZXJNZXNzYWdlUmVjZWl2ZXIuY3BwICovOyB9
OworCQlFMTUyNTUxQjE3MDExODE5MDAzRDdBREIgLyogTmV0d29ya1Jlc291cmNlTG9hZGVyTWVz
c2FnZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUx
NTI1NTE5MTcwMTE4MTkwMDNEN0FEQiAvKiBOZXR3b3JrUmVzb3VyY2VMb2FkZXJNZXNzYWdlcy5o
ICovOyB9OwogCQlFMTcwODc2QjE2RDZDQTY5MDBGOTkyMjYgLyogQmxvYlJlZ2lzdHJ5UHJveHku
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTE3MDg3
NjkxNkQ2Q0E2OTAwRjk5MjI2IC8qIEJsb2JSZWdpc3RyeVByb3h5LmNwcCAqLzsgfTsKIAkJRTE3
MDg3NkMxNkQ2Q0E2OTAwRjk5MjI2IC8qIEJsb2JSZWdpc3RyeVByb3h5LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTcwODc2QTE2RDZDQTY5MDBGOTky
MjYgLyogQmxvYlJlZ2lzdHJ5UHJveHkuaCAqLzsgfTsKIAkJRTE3MDg3NzAxNkQ2Q0ZFNTAwRjk5
MjI2IC8qIEJsb2JSZWdpc3RyYXRpb25EYXRhLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxNzA4NzZFMTZENkNGRTQwMEY5OTIyNiAvKiBCbG9iUmVn
aXN0cmF0aW9uRGF0YS5jcHAgKi87IH07CkBAIC0yNTUwLDYgKzI1NTIsOSBAQAogCQlFMTRBOTU0
ODE2RTAxNkE0MDA2OERFODIgLyogTmV0d29ya1Byb2Nlc3NQbGF0Zm9ybVN0cmF0ZWdpZXMuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTmV0d29ya1Byb2Nlc3NQbGF0Zm9ybVN0
cmF0ZWdpZXMuaDsgcGF0aCA9IE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzUGxhdGZvcm1T
dHJhdGVnaWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUxNTEzQzY0MTY2RUFC
QjIwMDE0OUZDQiAvKiBDaGlsZFByb2Nlc3NQcm94eS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBDaGlsZFByb2Nlc3NQcm94eS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUUxNTEzQzY1MTY2RUFCQjIwMDE0OUZDQiAvKiBDaGlsZFByb2Nlc3NQcm94
eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDaGlsZFByb2Nlc3NQcm94eS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMTUyNTUxNzE3MDEwOUZCMDAzRDdBREIg
LyogTmV0d29ya1Jlc291cmNlTG9hZGVyLm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgbmFtZSA9IE5ldHdvcmtSZXNvdXJj
ZUxvYWRlci5tZXNzYWdlcy5pbjsgcGF0aCA9IE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJj
ZUxvYWRlci5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTE1MjU1
MTgxNzAxMTgxOTAwM0Q3QURCIC8qIE5ldHdvcmtSZXNvdXJjZUxvYWRlck1lc3NhZ2VSZWNlaXZl
ci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBOZXR3b3JrUmVzb3Vy
Y2VMb2FkZXJNZXNzYWdlUmVjZWl2ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlFMTUyNTUxOTE3MDExODE5MDAzRDdBREIgLyogTmV0d29ya1Jlc291cmNlTG9hZGVyTWVzc2Fn
ZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTmV0d29ya1Jlc291cmNlTG9h
ZGVyTWVzc2FnZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTE3MDg3NjkxNkQ2
Q0E2OTAwRjk5MjI2IC8qIEJsb2JSZWdpc3RyeVByb3h5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgbmFtZSA9IEJsb2JSZWdpc3RyeVByb3h5LmNwcDsgcGF0aCA9IFdlYlByb2Nl
c3MvRmlsZUFQSS9CbG9iUmVnaXN0cnlQcm94eS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUUxNzA4NzZBMTZENkNBNjkwMEY5OTIyNiAvKiBCbG9iUmVnaXN0cnlQcm94eS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBCbG9iUmVnaXN0cnlQcm94eS5oOyBwYXRo
ID0gV2ViUHJvY2Vzcy9GaWxlQVBJL0Jsb2JSZWdpc3RyeVByb3h5Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUUxNzA4NzZFMTZENkNGRTQwMEY5OTIyNiAvKiBCbG9iUmVnaXN0cmF0
aW9uRGF0YS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBCbG9iUmVn
aXN0cmF0aW9uRGF0YS5jcHA7IHBhdGggPSBGaWxlQVBJL0Jsb2JSZWdpc3RyYXRpb25EYXRhLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTM0OTgsNiArMzUwMyw3IEBACiAJCQkJ
NTFBOEE2MTcxNjI3RjVCQjAwMEQ5MEU5IC8qIE5ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluICov
LAogCQkJCTUxRkQxOEIzMTY1MUZCQUQwMERCRTFDRSAvKiBOZXR3b3JrUmVzb3VyY2VMb2FkZXIu
Y3BwICovLAogCQkJCTUxRkQxOEI0MTY1MUZCQUQwMERCRTFDRSAvKiBOZXR3b3JrUmVzb3VyY2VM
b2FkZXIuaCAqLywKKwkJCQlFMTUyNTUxNzE3MDEwOUZCMDAzRDdBREIgLyogTmV0d29ya1Jlc291
cmNlTG9hZGVyLm1lc3NhZ2VzLmluICovLAogCQkJCTUxODI5REEzMTYzN0M3MEMwMDA5NTNENiAv
KiBOZXR3b3JrUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmNwcCAqLywKIAkJCQk1MTgyOURBNDE2MzdD
NzBDMDAwOTUzRDYgLyogTmV0d29ya1Jlc291cmNlTG9hZFNjaGVkdWxlci5oICovLAogCQkJCTUx
OUI0RkYyMTZBOUVBOTcwMDY2ODc0RCAvKiBTY2hlZHVsYWJsZUxvYWRlci5jcHAgKi8sCkBAIC00
ODU4LDYgKzQ4NjQsOCBAQAogCQkJCTUxQUNDOTM1MTYyODA2NDgwMDM0MjU1MCAvKiBOZXR3b3Jr
UHJvY2Vzc01lc3NhZ2VzLmggKi8sCiAJCQkJNTEzQTE2M0ExNjMwODhGNjAwNUQ3RDIyIC8qIE5l
dHdvcmtQcm9jZXNzUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwICovLAogCQkJCTUxM0ExNjNCMTYz
MDg4RjYwMDVEN0QyMiAvKiBOZXR3b3JrUHJvY2Vzc1Byb3h5TWVzc2FnZXMuaCAqLywKKwkJCQlF
MTUyNTUxODE3MDExODE5MDAzRDdBREIgLyogTmV0d29ya1Jlc291cmNlTG9hZGVyTWVzc2FnZVJl
Y2VpdmVyLmNwcCAqLywKKwkJCQlFMTUyNTUxOTE3MDExODE5MDAzRDdBREIgLyogTmV0d29ya1Jl
c291cmNlTG9hZGVyTWVzc2FnZXMuaCAqLywKIAkJCQkxQTJEODQzNzEyN0Y2NUQ1MDAxRUI5NjIg
LyogTlBPYmplY3RNZXNzYWdlUmVjZWl2ZXJNZXNzYWdlUmVjZWl2ZXIuY3BwICovLAogCQkJCTFB
MkQ4NDM4MTI3RjY1RDUwMDFFQjk2MiAvKiBOUE9iamVjdE1lc3NhZ2VSZWNlaXZlck1lc3NhZ2Vz
LmggKi8sCiAJCQkJQkNBRjM1RTAxNkNBMjQ5MzAwRDRFOUZDIC8qIE9mZmxpbmVTdG9yYWdlUHJv
Y2Vzc01lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCkBAIC01NjI5LDYgKzU2MzcsNyBAQAogCQkJCUUx
NzA4NzcxMTZENkNGRTUwMEY5OTIyNiAvKiBCbG9iUmVnaXN0cmF0aW9uRGF0YS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJRTE0QTk1NEExNkUwMTZBNDAwNjhERTgyIC8qIE5ldHdvcmtQcm9jZXNzUGxh
dGZvcm1TdHJhdGVnaWVzLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMTc5OEM3QTE2RTY4MTg4MDAy
NDAxMzkgLyogTmV0d29ya0Jsb2JSZWdpc3RyeS5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTE1MjU1
MUIxNzAxMTgxOTAwM0Q3QURCIC8qIE5ldHdvcmtSZXNvdXJjZUxvYWRlck1lc3NhZ2VzLmggaW4g
SGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5n
ID0gMDsKIAkJfTsKQEAgLTY4MzYsNiArNjg0NSw3IEBACiAJCQkJRTE3MDg3NzAxNkQ2Q0ZFNTAw
Rjk5MjI2IC8qIEJsb2JSZWdpc3RyYXRpb25EYXRhLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUx
NEE5NTQ5MTZFMDE2QTQwMDY4REU4MiAvKiBOZXR3b3JrUHJvY2Vzc1BsYXRmb3JtU3RyYXRlZ2ll
cy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFMTc5OEM3OTE2RTY4MTg4MDAyNDAxMzkgLyogTmV0
d29ya0Jsb2JSZWdpc3RyeS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlFMTUyNTUxQTE3MDExODE5
MDAzRDdBREIgLyogTmV0d29ya1Jlc291cmNlTG9hZGVyTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3Npbmcg
PSAwOwogCQl9OwpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdv
cmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAJKHJldmlzaW9uIDE0
Njc4NSkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vz
c0Nvbm5lY3Rpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NiwxMyArNjYsNiBAQCB2b2lkIE5l
dHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6ZGlkUmVjZWl2CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3ND
b25uZWN0aW9uOjpkaWRSZWNlaXZlU3luY01lc3NhZ2UoQ29yZUlQQzo6Q29ubmVjdGlvbiogY29u
bmVjdGlvbiwgQ29yZUlQQzo6TWVzc2FnZURlY29kZXImIGRlY29kZXIsIE93blB0cjxDb3JlSVBD
OjpNZXNzYWdlRW5jb2Rlcj4mIHJlcGx5RW5jb2RlcikKIHsKLSAgICBpZiAoZGVjb2Rlci5tZXNz
YWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjptZXNzYWdl
UmVjZWl2ZXJOYW1lKCkpIHsKLSAgICAgICAgaWYgKFdlYlJlc291cmNlTG9hZGVyKiB3ZWJSZXNv
dXJjZUxvYWRlciA9IFdlYlByb2Nlc3M6OnNoYXJlZCgpLndlYlJlc291cmNlTG9hZFNjaGVkdWxl
cigpLndlYlJlc291cmNlTG9hZGVyRm9ySWRlbnRpZmllcihkZWNvZGVyLmRlc3RpbmF0aW9uSUQo
KSkpCi0gICAgICAgICAgICB3ZWJSZXNvdXJjZUxvYWRlci0+ZGlkUmVjZWl2ZVN5bmNXZWJSZXNv
dXJjZUxvYWRlck1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2RlciwgcmVwbHlFbmNvZGVyKTsKLSAg
ICAgICAgCi0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKIH0KIApJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291
cmNlTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05l
dHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwCShyZXZpc2lvbiAxNDY3ODUpCisrKyBTb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIsIDIwMTMgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1
ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaCIKKyNp
bmNsdWRlICJOZXR3b3JrUmVzb3VyY2VMb2FkZXJNZXNzYWdlcy5oIgogI2luY2x1ZGUgIlBsYXRm
b3JtQ2VydGlmaWNhdGVJbmZvLmgiCiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgi
CiAjaW5jbHVkZSAiV2ViRXJyb3JzLmgiCkBAIC03MiwxMiArNzMsMTMgQEAgdm9pZCBXZWJSZXNv
dXJjZUxvYWRlcjo6Y2FuY2VsUmVzb3VyY2VMbwogICAgIG1fY29yZUxvYWRlci0+Y2FuY2VsKCk7
CiB9CiAKLXZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OndpbGxTZW5kUmVxdWVzdChjb25zdCBSZXNv
dXJjZVJlcXVlc3QmIHByb3Bvc2VkUmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVk
aXJlY3RSZXNwb25zZSwgUmVzb3VyY2VSZXF1ZXN0JiBuZXdSZXF1ZXN0KQordm9pZCBXZWJSZXNv
dXJjZUxvYWRlcjo6d2lsbFNlbmRSZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcHJvcG9z
ZWRSZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlKQogewog
ICAgIExPRyhOZXR3b3JrLCAiKFdlYlByb2Nlc3MpIFdlYlJlc291cmNlTG9hZGVyOjp3aWxsU2Vu
ZFJlcXVlc3QgdG8gJyVzJyIsIHByb3Bvc2VkUmVxdWVzdC51cmwoKS5zdHJpbmcoKS51dGY4KCku
ZGF0YSgpKTsKICAgICAKLSAgICBuZXdSZXF1ZXN0ID0gcHJvcG9zZWRSZXF1ZXN0OworICAgIFJl
c291cmNlUmVxdWVzdCBuZXdSZXF1ZXN0ID0gcHJvcG9zZWRSZXF1ZXN0OwogICAgIG1fY29yZUxv
YWRlci0+d2lsbFNlbmRSZXF1ZXN0KG5ld1JlcXVlc3QsIHJlZGlyZWN0UmVzcG9uc2UpOworICAg
IHNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6Q29udGludWVXaWxsU2VuZFJl
cXVlc3QobmV3UmVxdWVzdCkpOwogfQogCiB2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNl
aXZlUmVzcG9uc2VXaXRoQ2VydGlmaWNhdGVJbmZvKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJl
c3BvbnNlLCBjb25zdCBQbGF0Zm9ybUNlcnRpZmljYXRlSW5mbyYgY2VydGlmaWNhdGVJbmZvKQpA
QCAtMTI1LDkgKzEyNywxMCBAQCB2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVz
b3VyCiAgICAgbV9jb3JlTG9hZGVyLT5kaWRGaW5pc2hMb2FkaW5nKGZpbmlzaFRpbWUpOwogfQog
Ci12b2lkIFdlYlJlc291cmNlTG9hZGVyOjpjYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlv
blNwYWNlKGNvbnN0IFByb3RlY3Rpb25TcGFjZSYgcHJvdGVjdGlvblNwYWNlLCBib29sJiByZXN1
bHQpCit2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpjYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVj
dGlvblNwYWNlKGNvbnN0IFByb3RlY3Rpb25TcGFjZSYgcHJvdGVjdGlvblNwYWNlKQogewotICAg
IHJlc3VsdCA9IG1fY29yZUxvYWRlci0+Y2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25T
cGFjZShwcm90ZWN0aW9uU3BhY2UpOworICAgIGJvb2wgcmVzdWx0ID0gbV9jb3JlTG9hZGVyLT5j
YW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlKHByb3RlY3Rpb25TcGFjZSk7Cisg
ICAgc2VuZChNZXNzYWdlczo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpDb250aW51ZUNhbkF1dGhl
bnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UocmVzdWx0KSk7CiB9CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYktpdApJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJl
c291cmNlTG9hZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9O
ZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmgJKHJldmlzaW9uIDE0Njc4NSkKKysrIFNvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5oCSh3b3JraW5nIGNv
cHkpCkBAIC02NCw3ICs2NCw2IEBAIHB1YmxpYzoKICAgICB1aW50NjRfdCBkZXN0aW5hdGlvbklE
KCkgY29uc3Q7CiAKICAgICB2b2lkIGRpZFJlY2VpdmVXZWJSZXNvdXJjZUxvYWRlck1lc3NhZ2Uo
Q29yZUlQQzo6Q29ubmVjdGlvbiosIENvcmVJUEM6Ok1lc3NhZ2VEZWNvZGVyJik7Ci0gICAgdm9p
ZCBkaWRSZWNlaXZlU3luY1dlYlJlc291cmNlTG9hZGVyTWVzc2FnZShDb3JlSVBDOjpDb25uZWN0
aW9uKiwgQ29yZUlQQzo6TWVzc2FnZURlY29kZXImLCBPd25QdHI8Q29yZUlQQzo6TWVzc2FnZUVu
Y29kZXI+Jik7CiAKICAgICBXZWJDb3JlOjpSZXNvdXJjZUxvYWRlciogcmVzb3VyY2VMb2FkZXIo
KSBjb25zdCB7IHJldHVybiBtX2NvcmVMb2FkZXIuZ2V0KCk7IH0KIApAQCAtNzMsMTQgKzcyLDE0
IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGNhbmNlbFJlc291cmNlTG9hZGVyKCk7CiAKLSAgICB2
b2lkIHdpbGxTZW5kUmVxdWVzdChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlLCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmIG5ld1JlcXVlc3QpOworICAgIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVz
cG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UpOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlV2l0
aENlcnRpZmljYXRlSW5mbyhjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3Qg
UGxhdGZvcm1DZXJ0aWZpY2F0ZUluZm8mKTsKICAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0
IENvcmVJUEM6OkRhdGFSZWZlcmVuY2UmLCBpbnQ2NF90IGVuY29kZWREYXRhTGVuZ3RoKTsKICAg
ICB2b2lkIGRpZEZpbmlzaFJlc291cmNlTG9hZChkb3VibGUgZmluaXNoVGltZSk7CiAgICAgdm9p
ZCBkaWRGYWlsUmVzb3VyY2VMb2FkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKICAg
ICB2b2lkIGRpZFJlY2VpdmVSZXNvdXJjZShjb25zdCBTaGFyZWFibGVSZXNvdXJjZTo6SGFuZGxl
JiwgZG91YmxlIGZpbmlzaFRpbWUpOwogCi0gICAgdm9pZCBjYW5BdXRoZW50aWNhdGVBZ2FpbnN0
UHJvdGVjdGlvblNwYWNlKGNvbnN0IFdlYkNvcmU6OlByb3RlY3Rpb25TcGFjZSYsIGJvb2wmIHJl
c3VsdCk7CisgICAgdm9pZCBjYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlKGNv
bnN0IFdlYkNvcmU6OlByb3RlY3Rpb25TcGFjZSYpOwogCiAgICAgUmVmUHRyPFdlYkNvcmU6OlJl
c291cmNlTG9hZGVyPiBtX2NvcmVMb2FkZXI7CiB9OwpJbmRleDogU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLm1lc3NhZ2VzLmluCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5t
ZXNzYWdlcy5pbgkocmV2aXNpb24gMTQ2Nzg1KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLm1lc3NhZ2VzLmluCSh3b3JraW5nIGNvcHkpCkBA
IC0yNSwxMyArMjUsMTMgQEAgbWVzc2FnZXMgLT4gV2ViUmVzb3VyY2VMb2FkZXIgTGVnYWN5UmVj
ZQogICAgIENhbmNlbFJlc291cmNlTG9hZGVyKCkKIAogICAgIC8vIEZJWE1FIChOZXR3b3JrUHJv
Y2Vzcyk6IFdlJ2xsIG5lZWQgbXVjaCBtb3JlIGdyYW51bGFyaXR5IGZvciByZXNwb25zZSBtZXNz
YWdlcy4KLSAgICBXaWxsU2VuZFJlcXVlc3QoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVl
c3QsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgcmVkaXJlY3RSZXNwb25zZSkgLT4gKFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCBuZXdSZXF1ZXN0KQorICAgIFdpbGxTZW5kUmVxdWVzdChXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSBy
ZWRpcmVjdFJlc3BvbnNlKQogICAgIERpZFJlY2VpdmVSZXNwb25zZVdpdGhDZXJ0aWZpY2F0ZUlu
Zm8oV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSByZXNwb25zZSwgV2ViS2l0OjpQbGF0Zm9ybUNl
cnRpZmljYXRlSW5mbyBjZXJ0aWZpY2F0ZUluZm8pCiAgICAgRGlkUmVjZWl2ZURhdGEoQ29yZUlQ
Qzo6RGF0YVJlZmVyZW5jZSBkYXRhLCBpbnQ2NF90IGVuY29kZWREYXRhTGVuZ3RoKQogICAgIERp
ZEZpbmlzaFJlc291cmNlTG9hZChkb3VibGUgZmluaXNoVGltZSkKICAgICBEaWRGYWlsUmVzb3Vy
Y2VMb2FkKFdlYkNvcmU6OlJlc291cmNlRXJyb3IgZXJyb3IpCiAgICAgCi0gICAgQ2FuQXV0aGVu
dGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZShXZWJDb3JlOjpQcm90ZWN0aW9uU3BhY2UgcHJv
dGVjdGlvblNwYWNlKSAtPiAoYm9vbCByZXNwb25zZSkKKyAgICBDYW5BdXRoZW50aWNhdGVBZ2Fp
bnN0UHJvdGVjdGlvblNwYWNlKFdlYkNvcmU6OlByb3RlY3Rpb25TcGFjZSBwcm90ZWN0aW9uU3Bh
Y2UpCiAKICAgICAvLyBEaWRSZWNlaXZlUmVzb3VyY2UgaXMgZm9yIHdoZW4gd2UgaGF2ZSB0aGUg
ZW50aXJlIHJlc291cmNlIGRhdGEgYXZhaWxhYmxlIGF0IG9uY2UsIHN1Y2ggYXMgd2hlbiB0aGUg
cmVzb3VyY2UgaXMgY2FjaGVkIGluIG1lbW9yeQogICAgIERpZFJlY2VpdmVSZXNvdXJjZShXZWJL
aXQ6OlNoYXJlYWJsZVJlc291cmNlOjpIYW5kbGUgcmVzb3VyY2UsIGRvdWJsZSBmaW5pc2hUaW1l
KQo=
</data>
<flag name="commit-queue"
          id="216772"
          type_id="3"
          status="-"
          setter="webkit-ews"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>194966</attachid>
            <date>2013-03-25 17:57:17 -0700</date>
            <delta_ts>2013-03-26 10:31:56 -0700</delta_ts>
            <desc>more EWS testing</desc>
            <filename>ResourceHandleMainThread.txt</filename>
            <type>text/plain</type>
            <size>85437</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCShyZXZpc2lvbiAxNDY3ODUpCisrKyBTb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLmV4cC5pbgkod29ya2luZyBjb3B5KQpAQCAtMzQwLDggKzM0MCwxMiBAQCBf
X1pON1dlYkNvcmUxNFJlc291cmNlQnVmZmVyQzJFdgogX19aTjdXZWJDb3JlMTRSZXNvdXJjZUJ1
ZmZlckQxRXYKIF9fWk43V2ViQ29yZTE0UmVzb3VyY2VCdWZmZXJEMkV2CiBfX1pON1dlYkNvcmUx
NFJlc291cmNlSGFuZGxlMjBmb3JjZUNvbnRlbnRTbmlmZmluZ0V2CitfX1pON1dlYkNvcmUxNFJl
c291cmNlSGFuZGxlMjNjb250aW51ZVdpbGxTZW5kUmVxdWVzdEVSS05TXzE1UmVzb3VyY2VSZXF1
ZXN0RQorX19aTjdXZWJDb3JlMTRSZXNvdXJjZUhhbmRsZTI1Y29udGludWVXaWxsQ2FjaGVSZXNw
b25zZUVQMTlOU0NhY2hlZFVSTFJlc3BvbnNlCiBfX1pON1dlYkNvcmUxNFJlc291cmNlSGFuZGxl
MjVsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5RVBOU18xN05ldHdvcmtpbmdDb250ZXh0RVJLTlNf
MTVSZXNvdXJjZVJlcXVlc3RFTlNfMTdTdG9yZWRDcmVkZW50aWFsc0VSTlNfMTNSZXNvdXJjZUVy
cm9yRVJOU18xNlJlc291cmNlUmVzcG9uc2VFUk4zV1RGNlZlY3RvckljTG0wRUVFCiBfX1pON1dl
YkNvcmUxNFJlc291cmNlSGFuZGxlMjZzeW5jaHJvbm91c0xvYWRSdW5Mb29wTW9kZUV2CitfX1pO
N1dlYkNvcmUxNFJlc291cmNlSGFuZGxlMzRjb250aW51ZVNob3VsZFVzZUNyZWRlbnRpYWxTdG9y
YWdlRWIKK19fWk43V2ViQ29yZTE0UmVzb3VyY2VIYW5kbGU0NWNvbnRpbnVlQ2FuQXV0aGVudGlj
YXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZUViCiBfX1pON1dlYkNvcmUxNFJlc291cmNlSGFuZGxl
NmNyZWF0ZUVQTlNfMTdOZXR3b3JraW5nQ29udGV4dEVSS05TXzE1UmVzb3VyY2VSZXF1ZXN0RVBO
U18yMFJlc291cmNlSGFuZGxlQ2xpZW50RWJiCiBfX1pON1dlYkNvcmUxNFJlc291cmNlTG9hZGVy
MTRjYW5jZWxsZWRFcnJvckV2CiBfX1pON1dlYkNvcmUxNFJlc291cmNlTG9hZGVyNmNhbmNlbEV2
CkBAIC02MzIsNiArNjM2LDEwIEBAIF9fWk43V2ViQ29yZTIwTm9kZVJlbmRlcmluZ0NvbnRleHRD
MUVQTlMKIF9fWk43V2ViQ29yZTIwTm9kZVJlbmRlcmluZ0NvbnRleHREMUV2CiBfX1pON1dlYkNv
cmUyMFJlbmRlckVtYmVkZGVkT2JqZWN0MjlzZXRQbHVnaW5VbmF2YWlsYWJpbGl0eVJlYXNvbkVO
UzBfMjZQbHVnaW5VbmF2YWlsYWJpbGl0eVJlYXNvbkUKIF9fWk43V2ViQ29yZTIwUmVzb3VyY2VI
YW5kbGVDbGllbnQxNmRpZFJlY2VpdmVCdWZmZXJFUE5TXzE0UmVzb3VyY2VIYW5kbGVFTjNXVEYx
MFBhc3NSZWZQdHJJTlNfMTJTaGFyZWRCdWZmZXJFRUVpCitfX1pON1dlYkNvcmUyMFJlc291cmNl
SGFuZGxlQ2xpZW50MjB3aWxsU2VuZFJlcXVlc3RBc3luY0VQTlNfMTRSZXNvdXJjZUhhbmRsZUVS
S05TXzE1UmVzb3VyY2VSZXF1ZXN0RVJLTlNfMTZSZXNvdXJjZVJlc3BvbnNlRQorX19aTjdXZWJD
b3JlMjBSZXNvdXJjZUhhbmRsZUNsaWVudDIyd2lsbENhY2hlUmVzcG9uc2VBc3luY0VQTlNfMTRS
ZXNvdXJjZUhhbmRsZUVQMTlOU0NhY2hlZFVSTFJlc3BvbnNlCitfX1pON1dlYkNvcmUyMFJlc291
cmNlSGFuZGxlQ2xpZW50MzFzaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZUFzeW5jRVBOU18xNFJl
c291cmNlSGFuZGxlRQorX19aTjdXZWJDb3JlMjBSZXNvdXJjZUhhbmRsZUNsaWVudDQyY2FuQXV0
aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZUFzeW5jRVBOU18xNFJlc291cmNlSGFuZGxl
RVJLTlNfMTVQcm90ZWN0aW9uU3BhY2VFCiBfX1pON1dlYkNvcmUyMFJlc291cmNlSGFuZGxlQ2xp
ZW50QzJFdgogX19aTjdXZWJDb3JlMjBSZXNvdXJjZUhhbmRsZUNsaWVudEQyRXYKIF9fWk43V2Vi
Q29yZTIwUmVzb3VyY2VSZXNwb25zZUJhc2UxMXNldE1pbWVUeXBlRVJLTjNXVEY2U3RyaW5nRQpJ
bmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkocmV2aXNpb24gMTQ2Nzg1KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0zNTc4LDggKzM1NzgsOCBAQAog
CQk5NzNGNDE4QjE2OUI5NjAzMDAwNkJGNjAgLyogSFRNTFBhcnNlck9wdGlvbnMuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTczRjQxODcxNjlCOTVF
RjAwMDZCRjYwIC8qIEhUTUxQYXJzZXJPcHRpb25zLmNwcCAqLzsgfTsKIAkJOTc0MTg3RDMxNkE3
OTMyNzAwRkE3N0E3IC8qIEhUTUxQYXJzZXJUaHJlYWQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTc0MTg3RDAxNkE3OTMyMjAwRkE3N0E3IC8qIEhU
TUxQYXJzZXJUaHJlYWQuY3BwICovOyB9OwogCQk5NzQxODdENDE2QTc5MzI5MDBGQTc3QTcgLyog
SFRNTFBhcnNlclRocmVhZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gOTc0MTg3RDExNkE3OTMyMjAwRkE3N0E3IC8qIEhUTUxQYXJzZXJUaHJlYWQuaCAq
LzsgfTsKLQkJOTc0NkFGMjExNEY0RERFNjAwM0U3QTcyIC8qIENvb3JkaW5hdGVzLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3NDZBRjExMTRGNERE
RTYwMDNFN0E3MiAvKiBDb29yZGluYXRlcy5jcHAgKi87IH07CiAJCTk3NDZBRjIxMTRGNERERTYw
MDNFN0E3MSAvKiBDb29yZGluYXRlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gOTc0NkFGMTExNEY0RERFNjAwM0U3QTcwIC8qIENvb3JkaW5hdGVzLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJOTc0NkFG
MjExNEY0RERFNjAwM0U3QTcyIC8qIENvb3JkaW5hdGVzLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3NDZBRjExMTRGNERERTYwMDNFN0E3MiAvKiBD
b29yZGluYXRlcy5jcHAgKi87IH07CiAJCTk3NDZBRjIzMTRGNERERTYwMDNFN0E3MCAvKiBHZW9s
b2NhdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA5NzQ2QUYxMzE0RjREREU2MDAzRTdBNzAgLyogR2VvbG9jYXRpb24uY3BwICovOyB9OwogCQk5
NzQ2QUYyNDE0RjREREU2MDAzRTdBNzAgLyogR2VvbG9jYXRpb24uaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3NDZBRjE0MTRGNERERTYwMDNFN0E3MCAv
KiBHZW9sb2NhdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTk3NDZBRjI1MTRGNERERTYwMDNFN0E3MSAvKiBHZW9sb2NhdGlvbkNsaWVudC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTc0NkFGMTUx
NEY0RERFNjAwM0U3QTcxIC8qIEdlb2xvY2F0aW9uQ2xpZW50LmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTYyMjAsNiArNjIyMCw4IEBACiAJCUUx
NEYxQzQ1MTRCNURBQzYwMEVBOTAwOSAvKiBIVE1MRm9ybUNvbnRyb2xFbGVtZW50V2l0aFN0YXRl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTRGMUM0
MzE0QjVEQUM2MDBFQTkwMDkgLyogSFRNTEZvcm1Db250cm9sRWxlbWVudFdpdGhTdGF0ZS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUxNTEzRDRG
MTY3N0VBODMwMDE0OUZDQiAvKiBJbml0aWFsaXplTG9nZ2luZy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTE1MTNENEUxNjc3RUE4MzAwMTQ5RkNCIC8q
IEluaXRpYWxpemVMb2dnaW5nLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJRTE1MTNENTExNjc3RjA4ODAwMTQ5RkNCIC8qIE5vdEltcGxlbWVudGVk
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxNTEz
RDUwMTY3N0YwODgwMDE0OUZDQiAvKiBOb3RJbXBsZW1lbnRlZC5jcHAgKi87IH07CisJCUUxNTI1
NTE1MTZGRDIzNTAwMDNEN0FEQiAvKiBXZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1
ZXVlRGVsZWdhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEUxNTI1NTEzMTZGRDIzNEYwMDNEN0FEQiAvKiBXZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09w
ZXJhdGlvblF1ZXVlRGVsZWdhdGUuaCAqLzsgfTsKKwkJRTE1MjU1MTYxNkZEMjM1MDAwM0Q3QURC
IC8qIFdlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZS5tbSBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxNTI1NTE0MTZGRDIz
NEYwMDNEN0FEQiAvKiBXZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdh
dGUubW0gKi87IH07CiAJCUUxNUEzNkQ3MTEwNDU3MjAwMEI3QjYzOSAvKiBYTUxOU05hbWVzLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTVBMzZENjEx
MDQ1NzIwMDBCN0I2MzkgLyogWE1MTlNOYW1lcy5oICovOyB9OwogCQlFMTVBMzZEOTExMDQ1NzI3
MDBCN0I2MzkgLyogWE1MTlNOYW1lcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBFMTVBMzZEODExMDQ1NzI3MDBCN0I2MzkgLyogWE1MTlNOYW1lcy5j
cHAgKi87IH07CiAJCUUxNjk4MDNEMTEzMzU0MkQwMDg5NDExNSAvKiBDUnVudGltZU9iamVjdC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTE2OTgwM0Mx
MTMzNTQyRDAwODk0MTE1IC8qIENSdW50aW1lT2JqZWN0LmggKi87IH07CkBAIC0xMTA5Nyw4ICsx
MTA5OSw4IEBACiAJCTk3M0Y0MTg4MTY5Qjk1RUYwMDA2QkY2MCAvKiBIVE1MUGFyc2VyT3B0aW9u
cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBIVE1MUGFyc2VyT3B0aW9ucy5o
OyBwYXRoID0gcGFyc2VyL0hUTUxQYXJzZXJPcHRpb25zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTk3NDE4N0QwMTZBNzkzMjIwMEZBNzdBNyAvKiBIVE1MUGFyc2VyVGhyZWFkLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEhUTUxQYXJzZXJUaHJlYWQu
Y3BwOyBwYXRoID0gcGFyc2VyL0hUTUxQYXJzZXJUaHJlYWQuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk5NzQxODdEMTE2QTc5MzIyMDBGQTc3QTcgLyogSFRNTFBhcnNlclRocmVh
ZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBIVE1MUGFyc2VyVGhyZWFkLmg7
IHBhdGggPSBwYXJzZXIvSFRNTFBhcnNlclRocmVhZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQk5NzQ2QUYxMTE0RjREREU2MDAzRTdBNzIgLyogQ29vcmRpbmF0ZXMuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gQ29vcmRpbmF0ZXMuY3BwOyBwYXRoID0g
TW9kdWxlcy9nZW9sb2NhdGlvbi9Db29yZGluYXRlcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTk3NDZBRjExMTRGNERERTYwMDNFN0E3MCAvKiBDb29yZGluYXRlcy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBDb29yZGluYXRlcy5oOyBwYXRoID0gTW9kdWxl
cy9nZW9sb2NhdGlvbi9Db29yZGluYXRlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk5NzQ2QUYxMTE0RjREREU2MDAzRTdBNzIgLyogQ29vcmRpbmF0ZXMuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gQ29vcmRpbmF0ZXMuY3BwOyBwYXRoID0gTW9kdWxl
cy9nZW9sb2NhdGlvbi9Db29yZGluYXRlcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTk3NDZBRjEyMTRGNERERTYwMDNFN0E3MCAvKiBDb29yZGluYXRlcy5pZGwgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSB0ZXh0OyBuYW1lID0gQ29vcmRpbmF0ZXMuaWRsOyBwYXRoID0gTW9kdWxlcy9nZW9sb2NhdGlv
bi9Db29yZGluYXRlcy5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk3NDZBRjEz
MTRGNERERTYwMDNFN0E3MCAvKiBHZW9sb2NhdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IG5hbWUgPSBHZW9sb2NhdGlvbi5jcHA7IHBhdGggPSBNb2R1bGVzL2dlb2xvY2F0
aW9uL0dlb2xvY2F0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTc0NkFG
MTQxNEY0RERFNjAwM0U3QTcwIC8qIEdlb2xvY2F0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgbmFtZSA9IEdlb2xvY2F0aW9uLmg7IHBhdGggPSBNb2R1bGVzL2dlb2xvY2F0aW9uL0dl
b2xvY2F0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMzkzOSw2ICsxMzk0
MSw4IEBACiAJCUUxNEYxQzQzMTRCNURBQzYwMEVBOTAwOSAvKiBIVE1MRm9ybUNvbnRyb2xFbGVt
ZW50V2l0aFN0YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhUTUxGb3Jt
Q29udHJvbEVsZW1lbnRXaXRoU3RhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
RTE1MTNENEUxNjc3RUE4MzAwMTQ5RkNCIC8qIEluaXRpYWxpemVMb2dnaW5nLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluaXRpYWxpemVMb2dnaW5nLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUUxNTEzRDUwMTY3N0YwODgwMDE0OUZDQiAvKiBOb3RJbXBsZW1l
bnRlZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBOb3RJbXBsZW1l
bnRlZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUxNTI1NTEzMTZGRDIzNEYw
MDNEN0FEQiAvKiBXZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGUu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQ29yZVJlc291cmNlSGFuZGxl
QXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUUxNTI1NTE0MTZGRDIzNEYwMDNEN0FEQiAvKiBXZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJh
dGlvblF1ZXVlRGVsZWdhdGUubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBh
dGggPSBXZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGUubW07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUxNUEzNkQ2MTEwNDU3MjAwMEI3QjYzOSAvKiBY
TUxOU05hbWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFhNTE5TTmFtZXMu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTE1QTM2RDgxMTA0NTcyNzAwQjdCNjM5
IC8qIFhNTE5TTmFtZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
WE1MTlNOYW1lcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUxNjk4MDNDMTEz
MzU0MkQwMDg5NDExNSAvKiBDUnVudGltZU9iamVjdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBDUnVudGltZU9iamVjdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtMTYzNDksOCArMTYzNTMsMTAgQEAKIAkJCQk1MTRDNzY0QjBDRTkyMzRFMDA3RUYzQ0QgLyog
UmVzb3VyY2VSZXNwb25zZU1hYy5tbSAqLywKIAkJCQkxRkFGQkYxNjE1QTVGQTUyMDAwODNBMjAg
LyogVVRJVXRpbGl0aWVzLmggKi8sCiAJCQkJMUZBRkJGMTcxNUE1RkE1MjAwMDgzQTIwIC8qIFVU
SVV0aWxpdGllcy5tbSAqLywKLQkJCQlFMTgwODEwQzE2RkNFQ0RGMDBCODBEMDcgLyogV2ViQ29y
ZVJlc291cmNlSGFuZGxlQXNEZWxlZ2F0ZS5tbSAqLywKIAkJCQlFMTgwODEwRDE2RkNFQ0RGMDBC
ODBEMDcgLyogV2ViQ29yZVJlc291cmNlSGFuZGxlQXNEZWxlZ2F0ZS5oICovLAorCQkJCUUxODA4
MTBDMTZGQ0VDREYwMEI4MEQwNyAvKiBXZWJDb3JlUmVzb3VyY2VIYW5kbGVBc0RlbGVnYXRlLm1t
ICovLAorCQkJCUUxNTI1NTEzMTZGRDIzNEYwMDNEN0FEQiAvKiBXZWJDb3JlUmVzb3VyY2VIYW5k
bGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGUuaCAqLywKKwkJCQlFMTUyNTUxNDE2RkQyMzRGMDAz
RDdBREIgLyogV2ViQ29yZVJlc291cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlLm1t
ICovLAogCQkJCUUxODA4MTE0MTZGQ0Y5Q0IwMEI4MEQwNyAvKiBTeW5jaHJvbm91c0xvYWRlckNs
aWVudC5tbSAqLywKIAkJCQkzN0Y4MThGQjBENjU3NjA2MDA1RTFGMDUgLyogV2ViQ29yZVVSTFJl
c3BvbnNlLmggKi8sCiAJCQkJMzdGODE4RkMwRDY1NzYwNjAwNUUxRjA1IC8qIFdlYkNvcmVVUkxS
ZXNwb25zZS5tbSAqLywKQEAgLTI2Nzg0LDYgKzI2NzkwLDcgQEAKIAkJCQk1MEUxOENEQTE2Rjky
ODU4MDBDNjU0ODYgLyogU3R5bGVDdXN0b21GaWx0ZXJQcm9ncmFtQ2FjaGUuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUUxODA4MTBGMTZGQ0VDREYwMEI4MEQwNyAvKiBXZWJDb3JlUmVzb3VyY2VIYW5k
bGVBc0RlbGVnYXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMTgwODExNzE2RkNGOUNCMDBCODBE
MDcgLyogU3luY2hyb25vdXNMb2FkZXJDbGllbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCUUxNTI1
NTE1MTZGRDIzNTAwMDNEN0FEQiAvKiBXZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1
ZXVlRGVsZWdhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3lt
ZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMjk5OTUsNiArMzAwMDIsNyBAQAogCQkJ
CUUxODA4MTBFMTZGQ0VDREYwMEI4MEQwNyAvKiBXZWJDb3JlUmVzb3VyY2VIYW5kbGVBc0RlbGVn
YXRlLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJRTE4MDgxMTIxNkZDRjQyRjAwQjgwRDA3IC8qIFN5
bmNocm9ub3VzTG9hZGVyQ2xpZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUxODA4MTE2MTZG
Q0Y5Q0IwMEI4MEQwNyAvKiBTeW5jaHJvbm91c0xvYWRlckNsaWVudC5tbSBpbiBTb3VyY2VzICov
LAorCQkJCUUxNTI1NTE2MTZGRDIzNTAwMDNEN0FEQiAvKiBXZWJDb3JlUmVzb3VyY2VIYW5kbGVB
c09wZXJhdGlvblF1ZXVlRGVsZWdhdGUubW0gaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5P
bmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQ3JlZGVudGlhbFN0b3JhZ2UuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQ3JlZGVudGlhbFN0b3JhZ2UuY3Bw
CShyZXZpc2lvbiAxNDY3ODUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Ny
ZWRlbnRpYWxTdG9yYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMsNiArMzMsNyBAQAogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgog
I2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CisjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KICNp
bmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTQw
LDEyICs0MSwxNCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiB0eXBlZGVmIEhhc2hNYXA8UHJvdGVj
dGlvblNwYWNlLCBDcmVkZW50aWFsPiBQcm90ZWN0aW9uU3BhY2VUb0NyZWRlbnRpYWxNYXA7CiBz
dGF0aWMgUHJvdGVjdGlvblNwYWNlVG9DcmVkZW50aWFsTWFwJiBwcm90ZWN0aW9uU3BhY2VUb0Ny
ZWRlbnRpYWxNYXAoKQogeworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgREVGSU5F
X1NUQVRJQ19MT0NBTChQcm90ZWN0aW9uU3BhY2VUb0NyZWRlbnRpYWxNYXAsIG1hcCwgKCkpOwog
ICAgIHJldHVybiBtYXA7CiB9CiAKIHN0YXRpYyBIYXNoU2V0PFN0cmluZz4mIG9yaWdpbnNXaXRo
Q3JlZGVudGlhbHMoKQogeworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgREVGSU5F
X1NUQVRJQ19MT0NBTChIYXNoU2V0PFN0cmluZz4sIHNldCwgKCkpOwogICAgIHJldHVybiBzZXQ7
CiB9CkBAIC01Myw2ICs1Niw3IEBAIHN0YXRpYyBIYXNoU2V0PFN0cmluZz4mIG9yaWdpbnNXaXRo
Q3JlZGUKIHR5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIFByb3RlY3Rpb25TcGFjZT4gUGF0aFRvRGVm
YXVsdFByb3RlY3Rpb25TcGFjZU1hcDsKIHN0YXRpYyBQYXRoVG9EZWZhdWx0UHJvdGVjdGlvblNw
YWNlTWFwJiBwYXRoVG9EZWZhdWx0UHJvdGVjdGlvblNwYWNlTWFwKCkKIHsKKyAgICBBU1NFUlQo
aXNNYWluVGhyZWFkKCkpOwogICAgIERFRklORV9TVEFUSUNfTE9DQUwoUGF0aFRvRGVmYXVsdFBy
b3RlY3Rpb25TcGFjZU1hcCwgbWFwLCAoKSk7CiAgICAgcmV0dXJuIG1hcDsKIH0KSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuY3Bw
CShyZXZpc2lvbiAxNDY3ODUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jl
c291cmNlSGFuZGxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQ3LDYgKzE0NywyNiBAQCB2b2lk
IFJlc291cmNlSGFuZGxlOjpzZXRDbGllbnQoUmVzb3VyY2VICiAgICAgZC0+bV9jbGllbnQgPSBj
bGllbnQ7CiB9CiAKKyNpZiAhUExBVEZPUk0oTUFDKQorLy8gUmVzb3VyY2VIYW5kbGUgbmV2ZXIg
dXNlcyBhc3luYyBjbGllbnQgY2FsbHMgb24gdGhlc2UgcGxhdGZvcm1zIHlldC4KK3ZvaWQgUmVz
b3VyY2VIYW5kbGU6OmNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVz
dCYpCit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKK3ZvaWQgUmVzb3VyY2VIYW5k
bGU6OmNvbnRpbnVlU2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UoYm9vbCkKK3sKKyAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKK30KKworI2lmIFVTRShQUk9URUNUSU9OX1NQQUNFX0FVVEhfQ0FM
TEJBQ0spCit2b2lkIFJlc291cmNlSGFuZGxlOjpjb250aW51ZUNhbkF1dGhlbnRpY2F0ZUFnYWlu
c3RQcm90ZWN0aW9uU3BhY2UoYm9vbCkKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30K
KyNlbmRpZgorI2VuZGlmCisKIFJlc291cmNlUmVxdWVzdCYgUmVzb3VyY2VIYW5kbGU6OmZpcnN0
UmVxdWVzdCgpCiB7CiAgICAgcmV0dXJuIGQtPm1fZmlyc3RSZXF1ZXN0OwpJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuaAkocmV2aXNp
b24gMTQ2Nzg1KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhh
bmRsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01NSw2ICs1NSw3IEBAIHR5cGVkZWYgTFBWT0lEIEhJ
TlRFUk5FVDsKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oTUFDKQorT0JKQ19DTEFTUyBOU0NhY2hl
ZFVSTFJlc3BvbnNlOwogT0JKQ19DTEFTUyBOU0RhdGE7CiBPQkpDX0NMQVNTIE5TRXJyb3I7CiBP
QkpDX0NMQVNTIE5TVVJMQ29ubmVjdGlvbjsKQEAgLTEyNSw3ICsxMjYsNyBAQCBwdWJsaWM6CiAj
aWYgIVVTRShDRk5FVFdPUkspCiAgICAgdm9pZCBkaWRDYW5jZWxBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZShjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpOwogICAgIE5TVVJMQ29ubmVjdGlv
biAqY29ubmVjdGlvbigpIGNvbnN0OwotICAgIFdlYkNvcmVSZXNvdXJjZUhhbmRsZUFzRGVsZWdh
dGUgKmRlbGVnYXRlKCk7CisgICAgaWQgZGVsZWdhdGUoKTsKICAgICB2b2lkIHJlbGVhc2VEZWxl
Z2F0ZSgpOwogICAgIGlkIHJlbGVhc2VQcm94eSgpOwogI2VuZGlmCkBAIC0xODgsMTAgKzE4OSwy
MyBAQCBwdWJsaWM6CiAgICAgUmVzb3VyY2VIYW5kbGVDbGllbnQqIGNsaWVudCgpIGNvbnN0Owog
ICAgIHZvaWQgc2V0Q2xpZW50KFJlc291cmNlSGFuZGxlQ2xpZW50Kik7CiAKKyAgICAvLyBDYWxs
ZWQgaW4gcmVzcG9uc2UgdG8gUmVzb3VyY2VIYW5kbGVDbGllbnQ6OndpbGxTZW5kUmVxdWVzdEFz
eW5jKCkuCisgICAgdm9pZCBjb250aW51ZVdpbGxTZW5kUmVxdWVzdChjb25zdCBSZXNvdXJjZVJl
cXVlc3QmKTsKKyAgICAvLyBDYWxsZWQgaW4gcmVzcG9uc2UgdG8gUmVzb3VyY2VIYW5kbGVDbGll
bnQ6OnNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlQXN5bmMoKS4KKyAgICB2b2lkIGNvbnRpbnVl
U2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UoYm9vbCk7CisjaWYgVVNFKFBST1RFQ1RJT05fU1BB
Q0VfQVVUSF9DQUxMQkFDSykKKyAgICAvLyBDYWxsZWQgaW4gcmVzcG9uc2UgdG8gUmVzb3VyY2VI
YW5kbGVDbGllbnQ6OmNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2VBc3luYygp
LgorICAgIHZvaWQgY29udGludWVDYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNl
KGJvb2wpOworI2VuZGlmCisjaWYgUExBVEZPUk0oTUFDKQorICAgIC8vIENhbGxlZCBpbiByZXNw
b25zZSB0byBSZXNvdXJjZUhhbmRsZUNsaWVudDo6d2lsbENhY2hlUmVzcG9uc2VBc3luYygpLgor
ICAgIHZvaWQgY29udGludWVXaWxsQ2FjaGVSZXNwb25zZShOU0NhY2hlZFVSTFJlc3BvbnNlICop
OworI2VuZGlmCisKICAgICB2b2lkIHNldERlZmVyc0xvYWRpbmcoYm9vbCk7CiAKICNpZiBQTEFU
Rk9STShCTEFDS0JFUlJZKQotICAgIHZvaWQgcGF1c2VMb2FkKGJvb2wpOworICAgIHZvaWQgcGF1
c2VMb2FkKGJvb2wpOyAvLyBGSVhNRTogSG93IGlzIHRoaXMgZGlmZmVyZW50IGZyb20gc2V0RGVm
ZXJzTG9hZGluZygpPwogI2VuZGlmCiAKICAgICB2b2lkIGRpZENoYW5nZVByaW9yaXR5KFJlc291
cmNlTG9hZFByaW9yaXR5KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
UmVzb3VyY2VIYW5kbGVDbGllbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuY3BwCShyZXZpc2lvbiAxNDY3ODUp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTIsNiArNTIsMzAgQEAgUmVzb3VyY2VIYW5kbGVDbGll
bnQ6On5SZXNvdXJjZUhhbmRsZUNsaQogI2VuZGlmCiB9CiAKK3ZvaWQgUmVzb3VyY2VIYW5kbGVD
bGllbnQ6OndpbGxTZW5kUmVxdWVzdEFzeW5jKFJlc291cmNlSGFuZGxlKiBoYW5kbGUsIGNvbnN0
IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgLypyZWRp
cmVjdFJlc3BvbnNlKi8pCit7CisgICAgaGFuZGxlLT5jb250aW51ZVdpbGxTZW5kUmVxdWVzdChy
ZXF1ZXN0KTsKK30KKwordm9pZCBSZXNvdXJjZUhhbmRsZUNsaWVudDo6c2hvdWxkVXNlQ3JlZGVu
dGlhbFN0b3JhZ2VBc3luYyhSZXNvdXJjZUhhbmRsZSogaGFuZGxlKQoreworICAgIGhhbmRsZS0+
Y29udGludWVTaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZShmYWxzZSk7Cit9CisKKyNpZiBVU0Uo
UFJPVEVDVElPTl9TUEFDRV9BVVRIX0NBTExCQUNLKQordm9pZCBSZXNvdXJjZUhhbmRsZUNsaWVu
dDo6Y2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZUFzeW5jKFJlc291cmNlSGFu
ZGxlKiBoYW5kbGUsIGNvbnN0IFByb3RlY3Rpb25TcGFjZSYpCit7CisgICAgaGFuZGxlLT5jb250
aW51ZUNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UoZmFsc2UpOworfQorI2Vu
ZGlmCisKKyNpZiBQTEFURk9STShNQUMpCit2b2lkIFJlc291cmNlSGFuZGxlQ2xpZW50Ojp3aWxs
Q2FjaGVSZXNwb25zZUFzeW5jKFJlc291cmNlSGFuZGxlKiBoYW5kbGUsIE5TQ2FjaGVkVVJMUmVz
cG9uc2UgKnJlc3BvbnNlKQoreworICAgIGhhbmRsZS0+Y29udGludWVXaWxsQ2FjaGVSZXNwb25z
ZShyZXNwb25zZSk7Cit9CisjZW5kaWYKKwogdm9pZCBSZXNvdXJjZUhhbmRsZUNsaWVudDo6ZGlk
UmVjZWl2ZUJ1ZmZlcihSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBQYXNzUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gYnVmZmVyLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpCiB7CiAgICAgZGlkUmVjZWl2ZURh
dGEoaGFuZGxlLCBidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCksIGVuY29kZWREYXRhTGVu
Z3RoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5k
bGVDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L1Jlc291cmNlSGFuZGxlQ2xpZW50LmgJKHJldmlzaW9uIDE0Njc4NSkKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuaAkod29ya2luZyBjb3B5
KQpAQCAtNzYsNiArNzYsMTggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFs
IHZvaWQgY2Fubm90U2hvd1VSTChSZXNvdXJjZUhhbmRsZSopIHsgfQogCiAgICAgICAgIHZpcnR1
YWwgYm9vbCB1c2VzQXN5bmNDYWxsYmFja3MoKSB7IHJldHVybiBmYWxzZTsgfQorICAgICAgICAv
LyBDbGllbnQgd2lsbCBwYXNzIGFuIHVwZGF0ZWQgcmVxdWVzdCB1c2luZyBSZXNvdXJjZUhhbmRs
ZTo6Y29udGludWVXaWxsU2VuZFJlcXVlc3QoKSB3aGVuIHJlYWR5LgorICAgICAgICB2aXJ0dWFs
IHZvaWQgd2lsbFNlbmRSZXF1ZXN0QXN5bmMoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlKTsKKyAg
ICAgICAgLy8gQ2xpZW50IHdpbGwgcGFzcyBhbiB1cGRhdGVkIHJlcXVlc3QgdXNpbmcgUmVzb3Vy
Y2VIYW5kbGU6OmNvbnRpbnVlU2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UoKSB3aGVuIHJlYWR5
LgorICAgICAgICB2aXJ0dWFsIHZvaWQgc2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2VBc3luYyhS
ZXNvdXJjZUhhbmRsZSopOworI2lmIFVTRShQUk9URUNUSU9OX1NQQUNFX0FVVEhfQ0FMTEJBQ0sp
CisgICAgICAgIC8vIENsaWVudCB3aWxsIHBhc3MgYW4gdXBkYXRlZCByZXF1ZXN0IHVzaW5nIFJl
c291cmNlSGFuZGxlOjpjb250aW51ZUNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3Bh
Y2UoKSB3aGVuIHJlYWR5LgorICAgICAgICB2aXJ0dWFsIHZvaWQgY2FuQXV0aGVudGljYXRlQWdh
aW5zdFByb3RlY3Rpb25TcGFjZUFzeW5jKFJlc291cmNlSGFuZGxlKiwgY29uc3QgUHJvdGVjdGlv
blNwYWNlJik7CisjZW5kaWYKKyNpZiBQTEFURk9STShNQUMpCisgICAgICAgIC8vIENsaWVudCB3
aWxsIHBhc3MgYW4gdXBkYXRlZCByZXF1ZXN0IHVzaW5nIFJlc291cmNlSGFuZGxlOjpjb250aW51
ZVdpbGxDYWNoZVJlc3BvbnNlKCkgd2hlbiByZWFkeS4KKyAgICAgICAgdmlydHVhbCB2b2lkIHdp
bGxDYWNoZVJlc3BvbnNlQXN5bmMoUmVzb3VyY2VIYW5kbGUqLCBOU0NhY2hlZFVSTFJlc3BvbnNl
ICopOworI2VuZGlmCiAKICNpZiBVU0UoTkVUV09SS19DRkRBVEFfQVJSQVlfQ0FMTEJBQ0spCiAg
ICAgICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0RhdGFBcnJheSgpIHsgcmV0dXJuIGZhbHNlOyB9
CkBAIC05OCw3ICsxMTAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAjaWYgVVNFKENGTkVUV09S
SykKICAgICAgICAgdmlydHVhbCBDRkNhY2hlZFVSTFJlc3BvbnNlUmVmIHdpbGxDYWNoZVJlc3Bv
bnNlKFJlc291cmNlSGFuZGxlKiwgQ0ZDYWNoZWRVUkxSZXNwb25zZVJlZiByZXNwb25zZSkgeyBy
ZXR1cm4gcmVzcG9uc2U7IH0KICNlbHNlCi0gICAgICAgIHZpcnR1YWwgTlNDYWNoZWRVUkxSZXNw
b25zZSogd2lsbENhY2hlUmVzcG9uc2UoUmVzb3VyY2VIYW5kbGUqLCBOU0NhY2hlZFVSTFJlc3Bv
bnNlKiByZXNwb25zZSkgeyByZXR1cm4gcmVzcG9uc2U7IH0KKyAgICAgICAgdmlydHVhbCBOU0Nh
Y2hlZFVSTFJlc3BvbnNlICp3aWxsQ2FjaGVSZXNwb25zZShSZXNvdXJjZUhhbmRsZSosIE5TQ2Fj
aGVkVVJMUmVzcG9uc2UgKnJlc3BvbnNlKSB7IHJldHVybiByZXNwb25zZTsgfQogI2VuZGlmCiAg
ICAgICAgIHZpcnR1YWwgdm9pZCB3aWxsU3RvcEJ1ZmZlcmluZ0RhdGEoUmVzb3VyY2VIYW5kbGUq
LCBjb25zdCBjaGFyKiwgaW50KSB7IH0KICNlbmRpZiAvLyBQTEFURk9STShNQUMpCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlSW50ZXJuYWwuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFu
ZGxlSW50ZXJuYWwuaAkocmV2aXNpb24gMTQ2Nzg1KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUludGVybmFsLmgJKHdvcmtpbmcgY29weSkKQEAgLTE2
MCw3ICsxNjAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAjZW5kaWYKICNpZiBQTEFURk9STShN
QUMpICYmICFVU0UoQ0ZORVRXT1JLKQogICAgICAgICBSZXRhaW5QdHI8TlNVUkxDb25uZWN0aW9u
PiBtX2Nvbm5lY3Rpb247Ci0gICAgICAgIFJldGFpblB0cjxXZWJDb3JlUmVzb3VyY2VIYW5kbGVB
c0RlbGVnYXRlPiBtX2RlbGVnYXRlOworICAgICAgICBSZXRhaW5QdHI8aWQ+IG1fZGVsZWdhdGU7
CiAgICAgICAgIFJldGFpblB0cjxpZD4gbV9wcm94eTsKICNlbmRpZgogI2lmIFBMQVRGT1JNKE1B
QykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlSGFu
ZGxlTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
bWFjL1Jlc291cmNlSGFuZGxlTWFjLm1tCShyZXZpc2lvbiAxNDY3ODUpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZUhhbmRsZU1hYy5tbQkod29ya2luZyBj
b3B5KQpAQCAtNDgsNiArNDgsNyBAQAogI2ltcG9ydCAiU2hhcmVkQnVmZmVyLmgiCiAjaW1wb3J0
ICJTdWJyZXNvdXJjZUxvYWRlci5oIgogI2ltcG9ydCAiV2ViQ29yZVJlc291cmNlSGFuZGxlQXNE
ZWxlZ2F0ZS5oIgorI2ltcG9ydCAiV2ViQ29yZVJlc291cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1
ZURlbGVnYXRlLmgiCiAjaW1wb3J0ICJTeW5jaHJvbm91c0xvYWRlckNsaWVudC5oIgogI2ltcG9y
dCAiV2ViQ29yZVN5c3RlbUludGVyZmFjZS5oIgogI2ltcG9ydCAiV2ViQ29yZVVSTFJlc3BvbnNl
LmgiCkBAIC0yNTYsMTAgKzI1NywxMiBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjp1bnNjaGVkdWxl
KFNjaGVkdWxlCiAgICAgICAgIFtkLT5tX2Nvbm5lY3Rpb24uZ2V0KCkgdW5zY2hlZHVsZUZyb21S
dW5Mb29wOnJ1bkxvb3AgZm9yTW9kZTooTlNTdHJpbmcgKilwYWlyLT5tb2RlKCldOwogfQogCi1X
ZWJDb3JlUmVzb3VyY2VIYW5kbGVBc0RlbGVnYXRlICpSZXNvdXJjZUhhbmRsZTo6ZGVsZWdhdGUo
KQoraWQgUmVzb3VyY2VIYW5kbGU6OmRlbGVnYXRlKCkKIHsKICAgICBpZiAoIWQtPm1fZGVsZWdh
dGUpIHsKLSAgICAgICAgV2ViQ29yZVJlc291cmNlSGFuZGxlQXNEZWxlZ2F0ZSAqZGVsZWdhdGUg
PSBbW1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzRGVsZWdhdGUgYWxsb2NdIGluaXRXaXRoSGFuZGxl
OnRoaXNdOworICAgICAgICBpZCA8TlNVUkxDb25uZWN0aW9uRGVsZWdhdGU+IGRlbGVnYXRlID0g
KGNsaWVudCgpICYmIGNsaWVudCgpLT51c2VzQXN5bmNDYWxsYmFja3MoKSkgPworICAgICAgICAg
ICAgW1tXZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGUgYWxsb2Nd
IGluaXRXaXRoSGFuZGxlOnRoaXNdCisgICAgICAgICAgOiBbW1dlYkNvcmVSZXNvdXJjZUhhbmRs
ZUFzRGVsZWdhdGUgYWxsb2NdIGluaXRXaXRoSGFuZGxlOnRoaXNdOwogICAgICAgICBkLT5tX2Rl
bGVnYXRlID0gZGVsZWdhdGU7CiAgICAgICAgIFtkZWxlZ2F0ZSByZWxlYXNlXTsKICAgICB9CkBA
IC0yNzIsNyArMjc1LDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6cmVsZWFzZURlbGVnYXRlKCkK
ICAgICAgICAgcmV0dXJuOwogICAgIGlmIChkLT5tX3Byb3h5KQogICAgICAgICBbZC0+bV9wcm94
eS5nZXQoKSBzZXREZWxlZ2F0ZTpuaWxdOwotICAgIFtkLT5tX2RlbGVnYXRlLmdldCgpIGRldGFj
aEhhbmRsZV07CisgICAgWyhpZClkLT5tX2RlbGVnYXRlLmdldCgpIGRldGFjaEhhbmRsZV07CiAg
ICAgZC0+bV9kZWxlZ2F0ZSA9IG5pbDsKIH0KIApAQCAtNDAwLDIwICs0MDMsNDYgQEAgdm9pZCBS
ZXNvdXJjZUhhbmRsZTo6d2lsbFNlbmRSZXF1ZXN0KFJlcwogICAgICAgICB9CiAgICAgfQogCi0g
ICAgUmVmUHRyPFJlc291cmNlSGFuZGxlPiBwcm90ZWN0KHRoaXMpOwotICAgIGNsaWVudCgpLT53
aWxsU2VuZFJlcXVlc3QodGhpcywgcmVxdWVzdCwgcmVkaXJlY3RSZXNwb25zZSk7CisgICAgaWYg
KGNsaWVudCgpLT51c2VzQXN5bmNDYWxsYmFja3MoKSkgeworICAgICAgICBjbGllbnQoKS0+d2ls
bFNlbmRSZXF1ZXN0QXN5bmModGhpcywgcmVxdWVzdCwgcmVkaXJlY3RSZXNwb25zZSk7CisgICAg
fSBlbHNlIHsKKyAgICAgICAgUmVmUHRyPFJlc291cmNlSGFuZGxlPiBwcm90ZWN0KHRoaXMpOwor
ICAgICAgICBjbGllbnQoKS0+d2lsbFNlbmRSZXF1ZXN0KHRoaXMsIHJlcXVlc3QsIHJlZGlyZWN0
UmVzcG9uc2UpOworCisgICAgICAgIC8vIENsaWVudCBjYWxsIG1heSBub3QgcHJlc2VydmUgdGhl
IHNlc3Npb24sIGVzcGVjaWFsbHkgaWYgdGhlIHJlcXVlc3QgaXMgc2VudCBvdmVyIElQQy4KKyAg
ICAgICAgaWYgKCFyZXF1ZXN0LmlzTnVsbCgpKQorICAgICAgICAgICAgcmVxdWVzdC5zZXRTdG9y
YWdlU2Vzc2lvbihkLT5tX3N0b3JhZ2VTZXNzaW9uLmdldCgpKTsKKyAgICB9Cit9CisKK3ZvaWQg
UmVzb3VyY2VIYW5kbGU6OmNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVx
dWVzdCYgcmVxdWVzdCkKK3sKKyAgICBBU1NFUlQoY2xpZW50KCkgJiYgY2xpZW50KCktPnVzZXNB
c3luY0NhbGxiYWNrcygpKTsKIAogICAgIC8vIENsaWVudCBjYWxsIG1heSBub3QgcHJlc2VydmUg
dGhlIHNlc3Npb24sIGVzcGVjaWFsbHkgaWYgdGhlIHJlcXVlc3QgaXMgc2VudCBvdmVyIElQQy4K
LSAgICBpZiAoIXJlcXVlc3QuaXNOdWxsKCkpCi0gICAgICAgIHJlcXVlc3Quc2V0U3RvcmFnZVNl
c3Npb24oZC0+bV9zdG9yYWdlU2Vzc2lvbi5nZXQoKSk7CisgICAgUmVzb3VyY2VSZXF1ZXN0IG5l
d1JlcXVlc3QgPSByZXF1ZXN0OworICAgIGlmICghbmV3UmVxdWVzdC5pc051bGwoKSkKKyAgICAg
ICAgbmV3UmVxdWVzdC5zZXRTdG9yYWdlU2Vzc2lvbihkLT5tX3N0b3JhZ2VTZXNzaW9uLmdldCgp
KTsKKyAgICBbKGlkKWRlbGVnYXRlKCkgY29udGludWVXaWxsU2VuZFJlcXVlc3Q6bmV3UmVxdWVz
dC5uc1VSTFJlcXVlc3QoVXBkYXRlSFRUUEJvZHkpXTsKIH0KIAogYm9vbCBSZXNvdXJjZUhhbmRs
ZTo6c2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UoKQogewotICAgIGlmIChjbGllbnQoKSkKLSAg
ICAgICAgcmV0dXJuIGNsaWVudCgpLT5zaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZSh0aGlzKTsK
KyAgICBpZiAoY2xpZW50KCktPnVzZXNBc3luY0NhbGxiYWNrcygpKSB7CisgICAgICAgIGlmIChj
bGllbnQoKSkKKyAgICAgICAgICAgIGNsaWVudCgpLT5zaG91bGRVc2VDcmVkZW50aWFsU3RvcmFn
ZUFzeW5jKHRoaXMpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBjb250aW51ZVNob3VsZFVz
ZUNyZWRlbnRpYWxTdG9yYWdlKGZhbHNlKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOyAvLyBJZ25v
cmVkIGJ5IGNhbGxlci4KKyAgICB9IGVsc2UKKyAgICAgICAgcmV0dXJuIGNsaWVudCgpICYmIGNs
aWVudCgpLT5zaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZSh0aGlzKTsKK30KIAotICAgIHJldHVy
biBmYWxzZTsKK3ZvaWQgUmVzb3VyY2VIYW5kbGU6OmNvbnRpbnVlU2hvdWxkVXNlQ3JlZGVudGlh
bFN0b3JhZ2UoYm9vbCB1c2VDcmVkZW50aWFsU3RvcmFnZSkKK3sKKyAgICBBU1NFUlQoY2xpZW50
KCkgJiYgY2xpZW50KCktPnVzZXNBc3luY0NhbGxiYWNrcygpKTsKKworICAgIFsoaWQpZGVsZWdh
dGUoKSBjb250aW51ZVNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlOnVzZUNyZWRlbnRpYWxTdG9y
YWdlXTsKIH0KIAogdm9pZCBSZXNvdXJjZUhhbmRsZTo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBjaGFsbGVuZ2UpCkBAIC00
OTIsMTAgKzUyMSwyMSBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjpkaWRDYW5jZWxBdXRoZW50aWNh
CiAjaWYgVVNFKFBST1RFQ1RJT05fU1BBQ0VfQVVUSF9DQUxMQkFDSykKIGJvb2wgUmVzb3VyY2VI
YW5kbGU6OmNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UoY29uc3QgUHJvdGVj
dGlvblNwYWNlJiBwcm90ZWN0aW9uU3BhY2UpCiB7Ci0gICAgaWYgKGNsaWVudCgpKQotICAgICAg
ICByZXR1cm4gY2xpZW50KCktPmNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2Uo
dGhpcywgcHJvdGVjdGlvblNwYWNlKTsKLSAgICAgICAgCi0gICAgcmV0dXJuIGZhbHNlOworICAg
IGlmIChjbGllbnQoKS0+dXNlc0FzeW5jQ2FsbGJhY2tzKCkpIHsKKyAgICAgICAgaWYgKGNsaWVu
dCgpKQorICAgICAgICAgICAgY2xpZW50KCktPmNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0
aW9uU3BhY2VBc3luYyh0aGlzLCBwcm90ZWN0aW9uU3BhY2UpOworICAgICAgICBlbHNlCisgICAg
ICAgICAgICBjb250aW51ZUNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UoZmFs
c2UpOworICAgICAgICByZXR1cm4gZmFsc2U7IC8vIElnbm9yZWQgYnkgY2FsbGVyLgorICAgIH0g
ZWxzZQorICAgICAgICByZXR1cm4gY2xpZW50KCkgJiYgY2xpZW50KCktPmNhbkF1dGhlbnRpY2F0
ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UodGhpcywgcHJvdGVjdGlvblNwYWNlKTsKK30KKwordm9p
ZCBSZXNvdXJjZUhhbmRsZTo6Y29udGludWVDYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlv
blNwYWNlKGJvb2wgcmVzdWx0KQoreworICAgIEFTU0VSVChjbGllbnQoKSAmJiBjbGllbnQoKS0+
dXNlc0FzeW5jQ2FsbGJhY2tzKCkpOworCisgICAgWyhpZClkZWxlZ2F0ZSgpIGNvbnRpbnVlQ2Fu
QXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZTpyZXN1bHRdOwogfQogI2VuZGlmCiAK
QEAgLTU1Myw2ICs1OTMsMTQgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6cmVjZWl2ZWRDYW5jZWxs
YXRpbwogICAgICAgICBjbGllbnQoKS0+cmVjZWl2ZWRDYW5jZWxsYXRpb24odGhpcywgY2hhbGxl
bmdlKTsKIH0KIAordm9pZCBSZXNvdXJjZUhhbmRsZTo6Y29udGludWVXaWxsQ2FjaGVSZXNwb25z
ZShOU0NhY2hlZFVSTFJlc3BvbnNlICpyZXNwb25zZSkKK3sKKyAgICBBU1NFUlQoY2xpZW50KCkg
JiYgY2xpZW50KCktPnVzZXNBc3luY0NhbGxiYWNrcygpKTsKKworICAgIFsoaWQpZGVsZWdhdGUo
KSBjb250aW51ZVdpbGxDYWNoZVJlc3BvbnNlOnJlc3BvbnNlXTsKK30KKworCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyAhVVNFKENGTkVUV09SSykKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzRGVsZWdh
dGUubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMv
V2ViQ29yZVJlc291cmNlSGFuZGxlQXNEZWxlZ2F0ZS5tbQkocmV2aXNpb24gMTQ2Nzg1KQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJlc291cmNlSGFuZGxl
QXNEZWxlZ2F0ZS5tbQkod29ya2luZyBjb3B5KQpAQCAtMjU5LDExICsyNTksNyBAQCAtIChOU0Nh
Y2hlZFVSTFJlc3BvbnNlICopY29ubmVjdGlvbjooTlNVCiAgICAgICAgICYmIFtbKE5TSFRUUFVS
TFJlc3BvbnNlICopW2NhY2hlZFJlc3BvbnNlIHJlc3BvbnNlXSBhbGxIZWFkZXJGaWVsZHNdIG9i
amVjdEZvcktleTpAIlZhcnkiXSkKICAgICAgICAgcmV0dXJuIG5pbDsKIAotICAgIE5TQ2FjaGVk
VVJMUmVzcG9uc2UgKm5ld1Jlc3BvbnNlID0gbV9oYW5kbGUtPmNsaWVudCgpLT53aWxsQ2FjaGVS
ZXNwb25zZShtX2hhbmRsZSwgY2FjaGVkUmVzcG9uc2UpOwotICAgIGlmIChuZXdSZXNwb25zZSAh
PSBjYWNoZWRSZXNwb25zZSkKLSAgICAgICAgcmV0dXJuIG5ld1Jlc3BvbnNlOwotICAgIAotICAg
IHJldHVybiBuZXdSZXNwb25zZTsKKyAgICByZXR1cm4gbV9oYW5kbGUtPmNsaWVudCgpLT53aWxs
Q2FjaGVSZXNwb25zZShtX2hhbmRsZSwgY2FjaGVkUmVzcG9uc2UpOwogfQogCiBAZW5kCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5k
bGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1
ZXVlRGVsZWdhdGUuaAkocmV2aXNpb24gMTQ2Njc1KQkoZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVBc0RlbGVnYXRlLmg6MTQ2Njc1
KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJlc291cmNl
SGFuZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCAr
MSw0MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViQ29yZVJlc291cmNlSGFuZGxlQXNEZWxl
Z2F0ZV9oCisjZGVmaW5lIFdlYkNvcmVSZXNvdXJjZUhhbmRsZUFzRGVsZWdhdGVfaAorCisjaWYg
IVVTRShDRk5FVFdPUkspCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKyAgICBjbGFzcyBSZXNvdXJj
ZUhhbmRsZTsKK30KKworQGludGVyZmFjZSBXZWJDb3JlUmVzb3VyY2VIYW5kbGVBc0RlbGVnYXRl
IDogTlNPYmplY3QgPE5TVVJMQ29ubmVjdGlvbkRlbGVnYXRlPiB7CisgICAgV2ViQ29yZTo6UmVz
b3VyY2VIYW5kbGUqIG1faGFuZGxlOworfQorLSAoaWQpaW5pdFdpdGhIYW5kbGU6KFdlYkNvcmU6
OlJlc291cmNlSGFuZGxlKiloYW5kbGU7CistICh2b2lkKWRldGFjaEhhbmRsZTsKK0BlbmQKKwor
I2VuZGlmIC8vICFVU0UoQ0ZORVRXT1JLKQorI2VuZGlmIC8vIFdlYkNvcmVSZXNvdXJjZUhhbmRs
ZUFzRGVsZWdhdGVfaApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMv
V2ViQ29yZVJlc291cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJlc291cmNl
SGFuZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlLmgJKHJldmlzaW9uIDE0NjY3NSkKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFz
T3BlcmF0aW9uUXVldWVEZWxlZ2F0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMywyMSArMjMsMzYg
QEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIFdl
YkNvcmVSZXNvdXJjZUhhbmRsZUFzRGVsZWdhdGVfaAotI2RlZmluZSBXZWJDb3JlUmVzb3VyY2VI
YW5kbGVBc0RlbGVnYXRlX2gKKyNpZm5kZWYgV2ViQ29yZVJlc291cmNlSGFuZGxlQXNPcGVyYXRp
b25RdWV1ZURlbGVnYXRlX2gKKyNkZWZpbmUgV2ViQ29yZVJlc291cmNlSGFuZGxlQXNPcGVyYXRp
b25RdWV1ZURlbGVnYXRlX2gKIAogI2lmICFVU0UoQ0ZORVRXT1JLKQogCisjaW5jbHVkZSA8ZGlz
cGF0Y2gvZGlzcGF0Y2guaD4KKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICBjbGFzcyBSZXNvdXJjZUhhbmRsZTsKIH0KIAotQGludGVyZmFjZSBX
ZWJDb3JlUmVzb3VyY2VIYW5kbGVBc0RlbGVnYXRlIDogTlNPYmplY3QgPE5TVVJMQ29ubmVjdGlv
bkRlbGVnYXRlPiB7CitAaW50ZXJmYWNlIFdlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9u
UXVldWVEZWxlZ2F0ZSA6IE5TT2JqZWN0IDxOU1VSTENvbm5lY3Rpb25EZWxlZ2F0ZT4gewogICAg
IFdlYkNvcmU6OlJlc291cmNlSGFuZGxlKiBtX2hhbmRsZTsKKworICAgIC8vIFN5bmNocm9ub3Vz
IGRlbGVnYXRlcyBvbiBvcGVyYXRpb24gcXVldWUgd2FpdCB1bnRpbCBtYWluIHRocmVhZCBzZW5k
cyBhbiBhc3luY2hyb25vdXMgcmVzcG9uc2UuCisgICAgZGlzcGF0Y2hfc2VtYXBob3JlX3QgbV9z
ZW1hcGhvcmU7CisgICAgUmV0YWluUHRyPE5TVVJMUmVxdWVzdD4gbV9yZXF1ZXN0UmVzdWx0Owor
ICAgIFJldGFpblB0cjxOU0NhY2hlZFVSTFJlc3BvbnNlPiBtX2NhY2hlZFJlc3BvbnNlUmVzdWx0
OworICAgIEJPT0wgbV9ib29sUmVzdWx0OwogfQogLSAoaWQpaW5pdFdpdGhIYW5kbGU6KFdlYkNv
cmU6OlJlc291cmNlSGFuZGxlKiloYW5kbGU7CiAtICh2b2lkKWRldGFjaEhhbmRsZTsKKy0gKHZv
aWQpY29udGludWVXaWxsU2VuZFJlcXVlc3Q6KE5TVVJMUmVxdWVzdCAqKW5ld1JlcXVlc3Q7Cist
ICh2b2lkKWNvbnRpbnVlU2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2U6KEJPT0wpdXNlQ3JlZGVu
dGlhbFN0b3JhZ2U7CisjaWYgVVNFKFBST1RFQ1RJT05fU1BBQ0VfQVVUSF9DQUxMQkFDSykKKy0g
KHZvaWQpY29udGludWVDYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlOihCT09M
KWNhbkF1dGhlbnRpY2F0ZTsKKyNlbmRpZgorLSAodm9pZCljb250aW51ZVdpbGxDYWNoZVJlc3Bv
bnNlOihOU0NhY2hlZFVSTFJlc3BvbnNlICopcmVzcG9uc2U7CiBAZW5kCiAKICNlbmRpZiAvLyAh
VVNFKENGTkVUV09SSykKLSNlbmRpZiAvLyBXZWJDb3JlUmVzb3VyY2VIYW5kbGVBc0RlbGVnYXRl
X2gKKyNlbmRpZiAvLyBXZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdh
dGVfaApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJl
c291cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlLm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFz
T3BlcmF0aW9uUXVldWVEZWxlZ2F0ZS5tbQkocmV2aXNpb24gMTQ2Njc1KQkoZnJvbSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVBc0RlbGVn
YXRlLm1tOjE0NjY3NSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dl
YkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZS5tbQkod29ya2luZyBj
b3B5KQpAQCAtMCwwICsxLDI3MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNiwg
MjAwNywgMjAwOCwgMjAwOSwgMjAxMCwgMjAxMSwgMjAxMiwgMjAxMyBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAi
V2ViQ29yZVJlc291cmNlSGFuZGxlQXNEZWxlZ2F0ZS5oIgorCisjaWYgIVVTRShDRk5FVFdPUksp
CisKKyNpbXBvcnQgIkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmgiCisjaW1wb3J0ICJBdXRoZW50
aWNhdGlvbk1hYy5oIgorI2ltcG9ydCAiTG9nZ2luZy5oIgorI2ltcG9ydCAiUmVzb3VyY2VIYW5k
bGUuaCIKKyNpbXBvcnQgIlJlc291cmNlSGFuZGxlQ2xpZW50LmgiCisjaW1wb3J0ICJSZXNvdXJj
ZVJlcXVlc3QuaCIKKyNpbXBvcnQgIlJlc291cmNlUmVzcG9uc2UuaCIKKyNpbXBvcnQgIlNoYXJl
ZEJ1ZmZlci5oIgorI2ltcG9ydCAiV2ViQ29yZVVSTFJlc3BvbnNlLmgiCisKK0BpbnRlcmZhY2Ug
TlNVUkxSZXF1ZXN0IChEZXRhaWxzKQorLSAoaWQpX3Byb3BlcnR5Rm9yS2V5OihOU1N0cmluZyAq
KWtleTsKK0BlbmQKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK0BpbXBsZW1lbnRhdGlv
biBXZWJDb3JlUmVzb3VyY2VIYW5kbGVBc0RlbGVnYXRlCisKKy0gKGlkKWluaXRXaXRoSGFuZGxl
OihSZXNvdXJjZUhhbmRsZSopaGFuZGxlCit7CisgICAgc2VsZiA9IFtzZWxmIGluaXRdOworICAg
IGlmICghc2VsZikKKyAgICAgICAgcmV0dXJuIG5pbDsKKyAgICBtX2hhbmRsZSA9IGhhbmRsZTsK
KyAgICByZXR1cm4gc2VsZjsKK30KKworLSAodm9pZClkZXRhY2hIYW5kbGUKK3sKKyAgICBtX2hh
bmRsZSA9IDA7Cit9CisKKy0gKE5TVVJMUmVxdWVzdCAqKWNvbm5lY3Rpb246KE5TVVJMQ29ubmVj
dGlvbiAqKWNvbm5lY3Rpb24gd2lsbFNlbmRSZXF1ZXN0OihOU1VSTFJlcXVlc3QgKiluZXdSZXF1
ZXN0IHJlZGlyZWN0UmVzcG9uc2U6KE5TVVJMUmVzcG9uc2UgKilyZWRpcmVjdFJlc3BvbnNlCit7
CisgICAgVU5VU0VEX1BBUkFNKGNvbm5lY3Rpb24pOworCisgICAgaWYgKCFtX2hhbmRsZSkKKyAg
ICAgICAgcmV0dXJuIG5pbDsKKyAgICAKKyAgICAvLyBTZWUgPHJkYXI6Ly9wcm9ibGVtLzUzODA2
OTc+LiBUaGlzIGlzIGEgd29ya2Fyb3VuZCBmb3IgYSBiZWhhdmlvciBjaGFuZ2UgaW4gQ0ZOZXR3
b3JrIHdoZXJlIHdpbGxTZW5kUmVxdWVzdCBnZXRzIGNhbGxlZCBtb3JlIG9mdGVuLgorICAgIGlm
ICghcmVkaXJlY3RSZXNwb25zZSkKKyAgICAgICAgcmV0dXJuIG5ld1JlcXVlc3Q7CisKKyNpZiAh
TE9HX0RJU0FCTEVECisgICAgaWYgKFtyZWRpcmVjdFJlc3BvbnNlIGlzS2luZE9mQ2xhc3M6W05T
SFRUUFVSTFJlc3BvbnNlIGNsYXNzXV0pCisgICAgICAgIExPRyhOZXR3b3JrLCAiSGFuZGxlICVw
IGRlbGVnYXRlIGNvbm5lY3Rpb246JXAgd2lsbFNlbmRSZXF1ZXN0OiVAIHJlZGlyZWN0UmVzcG9u
c2U6JWQsIExvY2F0aW9uOjwlQD4iLCBtX2hhbmRsZSwgY29ubmVjdGlvbiwgW25ld1JlcXVlc3Qg
ZGVzY3JpcHRpb25dLCBzdGF0aWNfY2FzdDxpbnQ+KFsoaWQpcmVkaXJlY3RSZXNwb25zZSBzdGF0
dXNDb2RlXSksIFtbKGlkKXJlZGlyZWN0UmVzcG9uc2UgYWxsSGVhZGVyRmllbGRzXSBvYmplY3RG
b3JLZXk6QCJMb2NhdGlvbiJdKTsKKyAgICBlbHNlCisgICAgICAgIExPRyhOZXR3b3JrLCAiSGFu
ZGxlICVwIGRlbGVnYXRlIGNvbm5lY3Rpb246JXAgd2lsbFNlbmRSZXF1ZXN0OiVAIHJlZGlyZWN0
UmVzcG9uc2U6bm9uLUhUVFAiLCBtX2hhbmRsZSwgY29ubmVjdGlvbiwgW25ld1JlcXVlc3QgZGVz
Y3JpcHRpb25dKTsgCisjZW5kaWYKKworICAgIFJlc291cmNlUmVxdWVzdCByZXF1ZXN0ID0gbmV3
UmVxdWVzdDsKKworICAgIG1faGFuZGxlLT53aWxsU2VuZFJlcXVlc3QocmVxdWVzdCwgcmVkaXJl
Y3RSZXNwb25zZSk7CisKKyAgICByZXR1cm4gcmVxdWVzdC5uc1VSTFJlcXVlc3QoVXBkYXRlSFRU
UEJvZHkpOworfQorCistIChCT09MKWNvbm5lY3Rpb25TaG91bGRVc2VDcmVkZW50aWFsU3RvcmFn
ZTooTlNVUkxDb25uZWN0aW9uICopY29ubmVjdGlvbgoreworICAgIFVOVVNFRF9QQVJBTShjb25u
ZWN0aW9uKTsKKworICAgIExPRyhOZXR3b3JrLCAiSGFuZGxlICVwIGRlbGVnYXRlIGNvbm5lY3Rp
b25TaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZTolcCIsIG1faGFuZGxlLCBjb25uZWN0aW9uKTsK
KworICAgIGlmICghbV9oYW5kbGUpCisgICAgICAgIHJldHVybiBOTzsKKworICAgIHJldHVybiBt
X2hhbmRsZS0+c2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UoKTsKK30KKworLSAodm9pZCljb25u
ZWN0aW9uOihOU1VSTENvbm5lY3Rpb24gKiljb25uZWN0aW9uIGRpZFJlY2VpdmVBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZTooTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAqKWNoYWxsZW5nZQor
eworICAgIFVOVVNFRF9QQVJBTShjb25uZWN0aW9uKTsKKworICAgIExPRyhOZXR3b3JrLCAiSGFu
ZGxlICVwIGRlbGVnYXRlIGNvbm5lY3Rpb246JXAgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlOiVwIiwgbV9oYW5kbGUsIGNvbm5lY3Rpb24sIGNoYWxsZW5nZSk7CisKKyAgICBpZiAo
IW1faGFuZGxlKSB7CisgICAgICAgIFtbY2hhbGxlbmdlIHNlbmRlcl0gY2FuY2VsQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2U6Y2hhbGxlbmdlXTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBt
X2hhbmRsZS0+ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKGNvcmUoY2hhbGxlbmdl
KSk7Cit9CisKKy0gKHZvaWQpY29ubmVjdGlvbjooTlNVUkxDb25uZWN0aW9uICopY29ubmVjdGlv
biBkaWRDYW5jZWxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTooTlNVUkxBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZSAqKWNoYWxsZW5nZQoreworICAgIC8vIEZJWE1FOiBXZSBwcm9iYWJseSBkb24ndCBu
ZWVkIHRvIGltcGxlbWVudCB0aGlzIChzZWUgPHJkYXI6Ly9wcm9ibGVtLzg5NjAxMjQ+KS4KKwor
ICAgIFVOVVNFRF9QQVJBTShjb25uZWN0aW9uKTsKKworICAgIExPRyhOZXR3b3JrLCAiSGFuZGxl
ICVwIGRlbGVnYXRlIGNvbm5lY3Rpb246JXAgZGlkQ2FuY2VsQXV0aGVudGljYXRpb25DaGFsbGVu
Z2U6JXAiLCBtX2hhbmRsZSwgY29ubmVjdGlvbiwgY2hhbGxlbmdlKTsKKworICAgIGlmICghbV9o
YW5kbGUpCisgICAgICAgIHJldHVybjsKKyAgICBtX2hhbmRsZS0+ZGlkQ2FuY2VsQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UoY29yZShjaGFsbGVuZ2UpKTsKK30KKworI2lmIFVTRShQUk9URUNUSU9O
X1NQQUNFX0FVVEhfQ0FMTEJBQ0spCistIChCT09MKWNvbm5lY3Rpb246KE5TVVJMQ29ubmVjdGlv
biAqKWNvbm5lY3Rpb24gY2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZTooTlNV
UkxQcm90ZWN0aW9uU3BhY2UgKilwcm90ZWN0aW9uU3BhY2UKK3sKKyAgICBVTlVTRURfUEFSQU0o
Y29ubmVjdGlvbik7CisKKyAgICBMT0coTmV0d29yaywgIkhhbmRsZSAlcCBkZWxlZ2F0ZSBjb25u
ZWN0aW9uOiVwIGNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2U6JUA6Ly8lQDol
dSByZWFsbTolQCBtZXRob2Q6JUAgJUAlQCIsIG1faGFuZGxlLCBjb25uZWN0aW9uLCBbcHJvdGVj
dGlvblNwYWNlIHByb3RvY29sXSwgW3Byb3RlY3Rpb25TcGFjZSBob3N0XSwgW3Byb3RlY3Rpb25T
cGFjZSBwb3J0XSwgW3Byb3RlY3Rpb25TcGFjZSByZWFsbV0sIFtwcm90ZWN0aW9uU3BhY2UgYXV0
aGVudGljYXRpb25NZXRob2RdLCBbcHJvdGVjdGlvblNwYWNlIGlzUHJveHldID8gQCJwcm94eToi
IDogQCIiLCBbcHJvdGVjdGlvblNwYWNlIGlzUHJveHldID8gW3Byb3RlY3Rpb25TcGFjZSBwcm94
eVR5cGVdIDogQCIiKTsKKworICAgIGlmICghbV9oYW5kbGUpCisgICAgICAgIHJldHVybiBOTzsK
KworICAgIHJldHVybiBtX2hhbmRsZS0+Y2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25T
cGFjZShjb3JlKHByb3RlY3Rpb25TcGFjZSkpOworfQorI2VuZGlmCisKKy0gKHZvaWQpY29ubmVj
dGlvbjooTlNVUkxDb25uZWN0aW9uICopY29ubmVjdGlvbiBkaWRSZWNlaXZlUmVzcG9uc2U6KE5T
VVJMUmVzcG9uc2UgKilyCit7CisgICAgVU5VU0VEX1BBUkFNKGNvbm5lY3Rpb24pOworCisgICAg
TE9HKE5ldHdvcmssICJIYW5kbGUgJXAgZGVsZWdhdGUgY29ubmVjdGlvbjolcCBkaWRSZWNlaXZl
UmVzcG9uc2U6JXAgKEhUVFAgc3RhdHVzICVkLCByZXBvcnRlZCBNSU1FVHlwZSAnJXMnKSIsIG1f
aGFuZGxlLCBjb25uZWN0aW9uLCByLCBbciByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHN0
YXR1c0NvZGUpXSA/IFsoaWQpciBzdGF0dXNDb2RlXSA6IDAsIFtbciBNSU1FVHlwZV0gVVRGOFN0
cmluZ10pOworCisgICAgaWYgKCFtX2hhbmRsZSB8fCAhbV9oYW5kbGUtPmNsaWVudCgpKQorICAg
ICAgICByZXR1cm47CisKKyAgICAvLyBBdm9pZCBNSU1FIHR5cGUgc25pZmZpbmcgaWYgdGhlIHJl
c3BvbnNlIGNvbWVzIGJhY2sgYXMgMzA0IE5vdCBNb2RpZmllZC4KKyAgICBpbnQgc3RhdHVzQ29k
ZSA9IFtyIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Ioc3RhdHVzQ29kZSldID8gWyhpZCly
IHN0YXR1c0NvZGVdIDogMDsKKyAgICBpZiAoc3RhdHVzQ29kZSAhPSAzMDQpCisgICAgICAgIGFk
anVzdE1JTUVUeXBlSWZOZWNlc3NhcnkoW3IgX0NGVVJMUmVzcG9uc2VdKTsKKworICAgIGlmIChb
bV9oYW5kbGUtPmZpcnN0UmVxdWVzdCgpLm5zVVJMUmVxdWVzdChEb05vdFVwZGF0ZUhUVFBCb2R5
KSBfcHJvcGVydHlGb3JLZXk6QCJGb3JjZUhUTUxNSU1FVHlwZSJdKQorICAgICAgICBbciBfc2V0
TUlNRVR5cGU6QCJ0ZXh0L2h0bWwiXTsKKworICAgIG1faGFuZGxlLT5jbGllbnQoKS0+ZGlkUmVj
ZWl2ZVJlc3BvbnNlKG1faGFuZGxlLCByKTsKK30KKworI2lmIFVTRShORVRXT1JLX0NGREFUQV9B
UlJBWV9DQUxMQkFDSykKKy0gKHZvaWQpY29ubmVjdGlvbjooTlNVUkxDb25uZWN0aW9uICopY29u
bmVjdGlvbiBkaWRSZWNlaXZlRGF0YUFycmF5OihOU0FycmF5ICopZGF0YUFycmF5Cit7CisgICAg
VU5VU0VEX1BBUkFNKGNvbm5lY3Rpb24pOworICAgIExPRyhOZXR3b3JrLCAiSGFuZGxlICVwIGRl
bGVnYXRlIGNvbm5lY3Rpb246JXAgZGlkUmVjZWl2ZURhdGFBcnJheTolcCBhcnJheVNpemU6JWQi
LCBtX2hhbmRsZSwgY29ubmVjdGlvbiwgZGF0YUFycmF5LCBbZGF0YUFycmF5IGNvdW50XSk7CisK
KyAgICBpZiAoIWRhdGFBcnJheSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKCFtX2hhbmRs
ZSB8fCAhbV9oYW5kbGUtPmNsaWVudCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2hhbmRs
ZS0+aGFuZGxlRGF0YUFycmF5KHJlaW50ZXJwcmV0X2Nhc3Q8Q0ZBcnJheVJlZj4oZGF0YUFycmF5
KSk7CisgICAgLy8gVGhlIGNhbGwgdG8gZGlkUmVjZWl2ZURhdGEgYWJvdmUgY2FuIGNhbmNlbCBh
IGxvYWQsIGFuZCBpZiBzbywgdGhlIGRlbGVnYXRlIChzZWxmKSBjb3VsZCBoYXZlIGJlZW4gZGVh
bGxvY2F0ZWQgYnkgdGhpcyBwb2ludC4KK30KKyNlbmRpZgorCistICh2b2lkKWNvbm5lY3Rpb246
KE5TVVJMQ29ubmVjdGlvbiAqKWNvbm5lY3Rpb24gZGlkUmVjZWl2ZURhdGE6KE5TRGF0YSAqKWRh
dGEgbGVuZ3RoUmVjZWl2ZWQ6KGxvbmcgbG9uZylsZW5ndGhSZWNlaXZlZAoreworICAgIFVOVVNF
RF9QQVJBTShjb25uZWN0aW9uKTsKKyAgICBVTlVTRURfUEFSQU0obGVuZ3RoUmVjZWl2ZWQpOwor
CisgICAgTE9HKE5ldHdvcmssICJIYW5kbGUgJXAgZGVsZWdhdGUgY29ubmVjdGlvbjolcCBkaWRS
ZWNlaXZlRGF0YTolcCBsZW5ndGhSZWNlaXZlZDolbGxkIiwgbV9oYW5kbGUsIGNvbm5lY3Rpb24s
IGRhdGEsIGxlbmd0aFJlY2VpdmVkKTsKKworICAgIGlmICghbV9oYW5kbGUgfHwgIW1faGFuZGxl
LT5jbGllbnQoKSkKKyAgICAgICAgcmV0dXJuOworICAgIC8vIEZJWE1FOiBJZiB3ZSBnZXQgbW9y
ZSB0aGFuIDJCIGJ5dGVzIGluIGEgc2luZ2xlIGNodW5rLCB0aGlzIGNvZGUgd29uJ3QgZG8gdGhl
IHJpZ2h0IHRoaW5nLgorICAgIC8vIEhvd2V2ZXIsIHdpdGggdG9kYXkncyBjb21wdXRlcnMgYW5k
IG5ldHdvcmtpbmcgc3BlZWRzLCB0aGlzIHdvbid0IGhhcHBlbiBpbiBwcmFjdGljZS4KKyAgICAv
LyBDb3VsZCBiZSBhbiBpc3N1ZSB3aXRoIGEgZ2lhbnQgbG9jYWwgZmlsZS4KKworICAgIC8vIEZJ
WE1FOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk3OTMKKyAgICAv
LyAtMSBtZWFucyB3ZSBkbyBub3QgcHJvdmlkZSBhbnkgZGF0YSBhYm91dCB0cmFuc2ZlciBzaXpl
IHRvIGluc3BlY3RvciBzbyBpdCB3b3VsZCB1c2UKKyAgICAvLyBDb250ZW50LUxlbmd0aCBoZWFk
ZXJzIG9yIGNvbnRlbnQgc2l6ZSB0byBzaG93IHRyYW5zZmVyIHNpemUuCisgICAgbV9oYW5kbGUt
PmNsaWVudCgpLT5kaWRSZWNlaXZlQnVmZmVyKG1faGFuZGxlLCBTaGFyZWRCdWZmZXI6OndyYXBO
U0RhdGEoZGF0YSksIC0xKTsKK30KKworLSAodm9pZCljb25uZWN0aW9uOihOU1VSTENvbm5lY3Rp
b24gKiljb25uZWN0aW9uIHdpbGxTdG9wQnVmZmVyaW5nRGF0YTooTlNEYXRhICopZGF0YQorewor
ICAgIFVOVVNFRF9QQVJBTShjb25uZWN0aW9uKTsKKworICAgIExPRyhOZXR3b3JrLCAiSGFuZGxl
ICVwIGRlbGVnYXRlIGNvbm5lY3Rpb246JXAgd2lsbFN0b3BCdWZmZXJpbmdEYXRhOiVwIiwgbV9o
YW5kbGUsIGNvbm5lY3Rpb24sIGRhdGEpOworCisgICAgaWYgKCFtX2hhbmRsZSB8fCAhbV9oYW5k
bGUtPmNsaWVudCgpKQorICAgICAgICByZXR1cm47CisgICAgLy8gRklYTUU6IElmIHdlIGdldCBh
IHJlc291cmNlIHdpdGggbW9yZSB0aGFuIDJCIGJ5dGVzLCB0aGlzIGNvZGUgd29uJ3QgZG8gdGhl
IHJpZ2h0IHRoaW5nLgorICAgIC8vIEhvd2V2ZXIsIHdpdGggdG9kYXkncyBjb21wdXRlcnMgYW5k
IG5ldHdvcmtpbmcgc3BlZWRzLCB0aGlzIHdvbid0IGhhcHBlbiBpbiBwcmFjdGljZS4KKyAgICAv
LyBDb3VsZCBiZSBhbiBpc3N1ZSB3aXRoIGEgZ2lhbnQgbG9jYWwgZmlsZS4KKyAgICBtX2hhbmRs
ZS0+Y2xpZW50KCktPndpbGxTdG9wQnVmZmVyaW5nRGF0YShtX2hhbmRsZSwgKGNvbnN0IGNoYXIq
KVtkYXRhIGJ5dGVzXSwgc3RhdGljX2Nhc3Q8aW50PihbZGF0YSBsZW5ndGhdKSk7Cit9CisKKy0g
KHZvaWQpY29ubmVjdGlvbjooTlNVUkxDb25uZWN0aW9uICopY29ubmVjdGlvbiBkaWRTZW5kQm9k
eURhdGE6KE5TSW50ZWdlcilieXRlc1dyaXR0ZW4gdG90YWxCeXRlc1dyaXR0ZW46KE5TSW50ZWdl
cil0b3RhbEJ5dGVzV3JpdHRlbiB0b3RhbEJ5dGVzRXhwZWN0ZWRUb1dyaXRlOihOU0ludGVnZXIp
dG90YWxCeXRlc0V4cGVjdGVkVG9Xcml0ZQoreworICAgIFVOVVNFRF9QQVJBTShjb25uZWN0aW9u
KTsKKyAgICBVTlVTRURfUEFSQU0oYnl0ZXNXcml0dGVuKTsKKworICAgIExPRyhOZXR3b3JrLCAi
SGFuZGxlICVwIGRlbGVnYXRlIGNvbm5lY3Rpb246JXAgZGlkU2VuZEJvZHlEYXRhOiVkIHRvdGFs
Qnl0ZXNXcml0dGVuOiVkIHRvdGFsQnl0ZXNFeHBlY3RlZFRvV3JpdGU6JWQiLCBtX2hhbmRsZSwg
Y29ubmVjdGlvbiwgYnl0ZXNXcml0dGVuLCB0b3RhbEJ5dGVzV3JpdHRlbiwgdG90YWxCeXRlc0V4
cGVjdGVkVG9Xcml0ZSk7CisKKyAgICBpZiAoIW1faGFuZGxlIHx8ICFtX2hhbmRsZS0+Y2xpZW50
KCkpCisgICAgICAgIHJldHVybjsKKyAgICBtX2hhbmRsZS0+Y2xpZW50KCktPmRpZFNlbmREYXRh
KG1faGFuZGxlLCB0b3RhbEJ5dGVzV3JpdHRlbiwgdG90YWxCeXRlc0V4cGVjdGVkVG9Xcml0ZSk7
Cit9CisKKy0gKHZvaWQpY29ubmVjdGlvbkRpZEZpbmlzaExvYWRpbmc6KE5TVVJMQ29ubmVjdGlv
biAqKWNvbm5lY3Rpb24KK3sKKyAgICBVTlVTRURfUEFSQU0oY29ubmVjdGlvbik7CisKKyAgICBM
T0coTmV0d29yaywgIkhhbmRsZSAlcCBkZWxlZ2F0ZSBjb25uZWN0aW9uRGlkRmluaXNoTG9hZGlu
ZzolcCIsIG1faGFuZGxlLCBjb25uZWN0aW9uKTsKKworICAgIGlmICghbV9oYW5kbGUgfHwgIW1f
aGFuZGxlLT5jbGllbnQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9oYW5kbGUtPmNsaWVu
dCgpLT5kaWRGaW5pc2hMb2FkaW5nKG1faGFuZGxlLCAwKTsKK30KKworLSAodm9pZCljb25uZWN0
aW9uOihOU1VSTENvbm5lY3Rpb24gKiljb25uZWN0aW9uIGRpZEZhaWxXaXRoRXJyb3I6KE5TRXJy
b3IgKillcnJvcgoreworICAgIFVOVVNFRF9QQVJBTShjb25uZWN0aW9uKTsKKworICAgIExPRyhO
ZXR3b3JrLCAiSGFuZGxlICVwIGRlbGVnYXRlIGNvbm5lY3Rpb246JXAgZGlkRmFpbFdpdGhFcnJv
cjolQCIsIG1faGFuZGxlLCBjb25uZWN0aW9uLCBlcnJvcik7CisKKyAgICBpZiAoIW1faGFuZGxl
IHx8ICFtX2hhbmRsZS0+Y2xpZW50KCkpCisgICAgICAgIHJldHVybjsKKworICAgIG1faGFuZGxl
LT5jbGllbnQoKS0+ZGlkRmFpbChtX2hhbmRsZSwgZXJyb3IpOworfQorCisKKy0gKE5TQ2FjaGVk
VVJMUmVzcG9uc2UgKiljb25uZWN0aW9uOihOU1VSTENvbm5lY3Rpb24gKiljb25uZWN0aW9uIHdp
bGxDYWNoZVJlc3BvbnNlOihOU0NhY2hlZFVSTFJlc3BvbnNlICopY2FjaGVkUmVzcG9uc2UKK3sK
KyAgICBMT0coTmV0d29yaywgIkhhbmRsZSAlcCBkZWxlZ2F0ZSBjb25uZWN0aW9uOiVwIHdpbGxD
YWNoZVJlc3BvbnNlOiVwIiwgbV9oYW5kbGUsIGNvbm5lY3Rpb24sIGNhY2hlZFJlc3BvbnNlKTsK
KworICAgIFVOVVNFRF9QQVJBTShjb25uZWN0aW9uKTsKKworICAgIGlmICghbV9oYW5kbGUgfHwg
IW1faGFuZGxlLT5jbGllbnQoKSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKworICAgIC8vIFdvcmth
cm91bmQgZm9yIDxyZGFyOi8vcHJvYmxlbS82MzAwOTkwPiBDYWNoaW5nIGRvZXMgbm90IHJlc3Bl
Y3QgVmFyeSBIVFRQIGhlYWRlci4KKyAgICAvLyBGSVhNRTogV2ViQ29yZSBjYWNoZSBoYXMgaXNz
dWVzIHdpdGggVmFyeSwgdG9vIChidWcgNTg3OTcsIGJ1ZyA3MTUwOSkuCisgICAgaWYgKFtbY2Fj
aGVkUmVzcG9uc2UgcmVzcG9uc2VdIGlzS2luZE9mQ2xhc3M6W05TSFRUUFVSTFJlc3BvbnNlIGNs
YXNzXV0KKyAgICAgICAgJiYgW1soTlNIVFRQVVJMUmVzcG9uc2UgKilbY2FjaGVkUmVzcG9uc2Ug
cmVzcG9uc2VdIGFsbEhlYWRlckZpZWxkc10gb2JqZWN0Rm9yS2V5OkAiVmFyeSJdKQorICAgICAg
ICByZXR1cm4gbmlsOworCisgICAgTlNDYWNoZWRVUkxSZXNwb25zZSAqbmV3UmVzcG9uc2UgPSBt
X2hhbmRsZS0+Y2xpZW50KCktPndpbGxDYWNoZVJlc3BvbnNlKG1faGFuZGxlLCBjYWNoZWRSZXNw
b25zZSk7CisgICAgaWYgKG5ld1Jlc3BvbnNlICE9IGNhY2hlZFJlc3BvbnNlKQorICAgICAgICBy
ZXR1cm4gbmV3UmVzcG9uc2U7CisgICAgCisgICAgcmV0dXJuIG5ld1Jlc3BvbnNlOworfQorCitA
ZW5kCisKKyNlbmRpZiAvLyAhVVNFKENGTkVUV09SSykKKwpJbmRleDogU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1
ZURlbGVnYXRlLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZS5tbQko
cmV2aXNpb24gMTQ2Njc1KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMv
V2ViQ29yZVJlc291cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlLm1tCSh3b3JraW5n
IGNvcHkpCkBAIC0yNCw3ICsyNCw3IEBACiAgKi8KIAogI2ltcG9ydCAiY29uZmlnLmgiCi0jaW1w
b3J0ICJXZWJDb3JlUmVzb3VyY2VIYW5kbGVBc0RlbGVnYXRlLmgiCisjaW1wb3J0ICJXZWJDb3Jl
UmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGUuaCIKIAogI2lmICFVU0UoQ0ZO
RVRXT1JLKQogCkBAIC0zNyw2ICszNyw3IEBACiAjaW1wb3J0ICJSZXNvdXJjZVJlc3BvbnNlLmgi
CiAjaW1wb3J0ICJTaGFyZWRCdWZmZXIuaCIKICNpbXBvcnQgIldlYkNvcmVVUkxSZXNwb25zZS5o
IgorI2ltcG9ydCA8d3RmL01haW5UaHJlYWQuaD4KIAogQGludGVyZmFjZSBOU1VSTFJlcXVlc3Qg
KERldGFpbHMpCiAtIChpZClfcHJvcGVydHlGb3JLZXk6KE5TU3RyaW5nICopa2V5OwpAQCAtNDQs
MjkgKzQ1LDY1IEBAIC0gKGlkKV9wcm9wZXJ0eUZvcktleTooTlNTdHJpbmcgKilrZXk7CiAKIHVz
aW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCi1AaW1wbGVtZW50YXRpb24gV2ViQ29yZVJlc291cmNl
SGFuZGxlQXNEZWxlZ2F0ZQorQGltcGxlbWVudGF0aW9uIFdlYkNvcmVSZXNvdXJjZUhhbmRsZUFz
T3BlcmF0aW9uUXVldWVEZWxlZ2F0ZQogCiAtIChpZClpbml0V2l0aEhhbmRsZTooUmVzb3VyY2VI
YW5kbGUqKWhhbmRsZQogewogICAgIHNlbGYgPSBbc2VsZiBpbml0XTsKICAgICBpZiAoIXNlbGYp
CiAgICAgICAgIHJldHVybiBuaWw7CisKICAgICBtX2hhbmRsZSA9IGhhbmRsZTsKKyAgICBtX3Nl
bWFwaG9yZSA9IGRpc3BhdGNoX3NlbWFwaG9yZV9jcmVhdGUoMCk7CisKICAgICByZXR1cm4gc2Vs
ZjsKIH0KIAogLSAodm9pZClkZXRhY2hIYW5kbGUKIHsKICAgICBtX2hhbmRsZSA9IDA7CisKKyAg
ICBtX3JlcXVlc3RSZXN1bHQgPSBudWxscHRyOworICAgIG1fY2FjaGVkUmVzcG9uc2VSZXN1bHQg
PSBudWxscHRyOworICAgIG1fYm9vbFJlc3VsdCA9IE5POworICAgIGRpc3BhdGNoX3NlbWFwaG9y
ZV9zaWduYWwobV9zZW1hcGhvcmUpOyAvLyBPSyB0byBzaWduYWwgZXZlbiBpZiB3ZSBhcmUgbm90
IHdhaXRpbmcuCit9CisKKy0gKHZvaWQpZGVhbGxvYworeworICAgIGRpc3BhdGNoX3JlbGVhc2Uo
bV9zZW1hcGhvcmUpOworICAgIFtzdXBlciBkZWFsbG9jXTsKK30KKworLSAodm9pZCljb250aW51
ZVdpbGxTZW5kUmVxdWVzdDooTlNVUkxSZXF1ZXN0ICopbmV3UmVxdWVzdAoreworICAgIG1fcmVx
dWVzdFJlc3VsdCA9IFtuZXdSZXF1ZXN0IHJldGFpbl07CisgICAgZGlzcGF0Y2hfc2VtYXBob3Jl
X3NpZ25hbChtX3NlbWFwaG9yZSk7Cit9CisKKy0gKHZvaWQpY29udGludWVTaG91bGRVc2VDcmVk
ZW50aWFsU3RvcmFnZTooQk9PTCl1c2VDcmVkZW50aWFsU3RvcmFnZQoreworICAgIG1fYm9vbFJl
c3VsdCA9IHVzZUNyZWRlbnRpYWxTdG9yYWdlOworICAgIGRpc3BhdGNoX3NlbWFwaG9yZV9zaWdu
YWwobV9zZW1hcGhvcmUpOworfQorCistICh2b2lkKWNvbnRpbnVlQ2FuQXV0aGVudGljYXRlQWdh
aW5zdFByb3RlY3Rpb25TcGFjZTooQk9PTCljYW5BdXRoZW50aWNhdGUKK3sKKyAgICBtX2Jvb2xS
ZXN1bHQgPSBjYW5BdXRoZW50aWNhdGU7CisgICAgZGlzcGF0Y2hfc2VtYXBob3JlX3NpZ25hbCht
X3NlbWFwaG9yZSk7Cit9CisKKy0gKHZvaWQpY29udGludWVXaWxsQ2FjaGVSZXNwb25zZTooTlND
YWNoZWRVUkxSZXNwb25zZSAqKXJlc3BvbnNlCit7CisgICAgbV9jYWNoZWRSZXNwb25zZVJlc3Vs
dCA9IHJlc3BvbnNlOworICAgIGRpc3BhdGNoX3NlbWFwaG9yZV9zaWduYWwobV9zZW1hcGhvcmUp
OwogfQogCiAtIChOU1VSTFJlcXVlc3QgKiljb25uZWN0aW9uOihOU1VSTENvbm5lY3Rpb24gKilj
b25uZWN0aW9uIHdpbGxTZW5kUmVxdWVzdDooTlNVUkxSZXF1ZXN0ICopbmV3UmVxdWVzdCByZWRp
cmVjdFJlc3BvbnNlOihOU1VSTFJlc3BvbnNlICopcmVkaXJlY3RSZXNwb25zZQogeworICAgIEFT
U0VSVCghaXNNYWluVGhyZWFkKCkpOwogICAgIFVOVVNFRF9QQVJBTShjb25uZWN0aW9uKTsKIAot
ICAgIGlmICghbV9oYW5kbGUpCi0gICAgICAgIHJldHVybiBuaWw7Ci0gICAgCiAgICAgLy8gU2Vl
IDxyZGFyOi8vcHJvYmxlbS81MzgwNjk3Pi4gVGhpcyBpcyBhIHdvcmthcm91bmQgZm9yIGEgYmVo
YXZpb3IgY2hhbmdlIGluIENGTmV0d29yayB3aGVyZSB3aWxsU2VuZFJlcXVlc3QgZ2V0cyBjYWxs
ZWQgbW9yZSBvZnRlbi4KICAgICBpZiAoIXJlZGlyZWN0UmVzcG9uc2UpCiAgICAgICAgIHJldHVy
biBuZXdSZXF1ZXN0OwpAQCAtNzgsMTkyICsxMTUsMjUzIEBAIC0gKE5TVVJMUmVxdWVzdCAqKWNv
bm5lY3Rpb246KE5TVVJMQ29ubmUKICAgICAgICAgTE9HKE5ldHdvcmssICJIYW5kbGUgJXAgZGVs
ZWdhdGUgY29ubmVjdGlvbjolcCB3aWxsU2VuZFJlcXVlc3Q6JUAgcmVkaXJlY3RSZXNwb25zZTpu
b24tSFRUUCIsIG1faGFuZGxlLCBjb25uZWN0aW9uLCBbbmV3UmVxdWVzdCBkZXNjcmlwdGlvbl0p
OyAKICNlbmRpZgogCi0gICAgUmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QgPSBuZXdSZXF1ZXN0Owor
ICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIF57CisgICAgICAg
IGlmICghbV9oYW5kbGUpIHsKKyAgICAgICAgICAgIG1fcmVxdWVzdFJlc3VsdCA9IG51bGxwdHI7
CisgICAgICAgICAgICBkaXNwYXRjaF9zZW1hcGhvcmVfc2lnbmFsKG1fc2VtYXBob3JlKTsKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQogCi0gICAgbV9oYW5kbGUtPndpbGxTZW5kUmVx
dWVzdChyZXF1ZXN0LCByZWRpcmVjdFJlc3BvbnNlKTsKKyAgICAgICAgUmVzb3VyY2VSZXF1ZXN0
IHJlcXVlc3QgPSBuZXdSZXF1ZXN0OwogCi0gICAgcmV0dXJuIHJlcXVlc3QubnNVUkxSZXF1ZXN0
KFVwZGF0ZUhUVFBCb2R5KTsKKyAgICAgICAgbV9oYW5kbGUtPndpbGxTZW5kUmVxdWVzdChyZXF1
ZXN0LCByZWRpcmVjdFJlc3BvbnNlKTsKKyAgICB9KTsKKworICAgIGRpc3BhdGNoX3NlbWFwaG9y
ZV93YWl0KG1fc2VtYXBob3JlLCBESVNQQVRDSF9USU1FX0ZPUkVWRVIpOworICAgIHJldHVybiBb
bV9yZXF1ZXN0UmVzdWx0LmxlYWtSZWYoKSBhdXRvcmVsZWFzZV07CiB9CiAKIC0gKEJPT0wpY29u
bmVjdGlvblNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlOihOU1VSTENvbm5lY3Rpb24gKiljb25u
ZWN0aW9uCiB7CisgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CiAgICAgVU5VU0VEX1BBUkFN
KGNvbm5lY3Rpb24pOwogCiAgICAgTE9HKE5ldHdvcmssICJIYW5kbGUgJXAgZGVsZWdhdGUgY29u
bmVjdGlvblNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlOiVwIiwgbV9oYW5kbGUsIGNvbm5lY3Rp
b24pOwogCi0gICAgaWYgKCFtX2hhbmRsZSkKLSAgICAgICAgcmV0dXJuIE5POworICAgIGRpc3Bh
dGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIF57CisgICAgICAgIGlmICghbV9o
YW5kbGUpIHsKKyAgICAgICAgICAgIG1fYm9vbFJlc3VsdCA9IE5POworICAgICAgICAgICAgZGlz
cGF0Y2hfc2VtYXBob3JlX3NpZ25hbChtX3NlbWFwaG9yZSk7CisgICAgICAgICAgICByZXR1cm47
CisgICAgICAgIH0KKyAgICAgICAgbV9oYW5kbGUtPnNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdl
KCk7CisgICAgfSk7CiAKLSAgICByZXR1cm4gbV9oYW5kbGUtPnNob3VsZFVzZUNyZWRlbnRpYWxT
dG9yYWdlKCk7CisgICAgZGlzcGF0Y2hfc2VtYXBob3JlX3dhaXQobV9zZW1hcGhvcmUsIERJU1BB
VENIX1RJTUVfRk9SRVZFUik7CisgICAgcmV0dXJuIG1fYm9vbFJlc3VsdDsKIH0KIAogLSAodm9p
ZCljb25uZWN0aW9uOihOU1VSTENvbm5lY3Rpb24gKiljb25uZWN0aW9uIGRpZFJlY2VpdmVBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZTooTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAqKWNoYWxs
ZW5nZQogeworICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwogICAgIFVOVVNFRF9QQVJBTShj
b25uZWN0aW9uKTsKIAogICAgIExPRyhOZXR3b3JrLCAiSGFuZGxlICVwIGRlbGVnYXRlIGNvbm5l
Y3Rpb246JXAgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOiVwIiwgbV9oYW5kbGUs
IGNvbm5lY3Rpb24sIGNoYWxsZW5nZSk7CiAKLSAgICBpZiAoIW1faGFuZGxlKSB7Ci0gICAgICAg
IFtbY2hhbGxlbmdlIHNlbmRlcl0gY2FuY2VsQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6Y2hhbGxl
bmdlXTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBtX2hhbmRsZS0+ZGlkUmVjZWl2ZUF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKGNvcmUoY2hhbGxlbmdlKSk7CisgICAgZGlzcGF0Y2hfYXN5
bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgXnsKKyAgICAgICAgaWYgKCFtX2hhbmRsZSkg
eworICAgICAgICAgICAgW1tjaGFsbGVuZ2Ugc2VuZGVyXSBjYW5jZWxBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZTpjaGFsbGVuZ2VdOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAg
ICAgIG1faGFuZGxlLT5kaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoY29yZShjaGFs
bGVuZ2UpKTsKKyAgICB9KTsKIH0KIAogLSAodm9pZCljb25uZWN0aW9uOihOU1VSTENvbm5lY3Rp
b24gKiljb25uZWN0aW9uIGRpZENhbmNlbEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOihOU1VSTEF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlICopY2hhbGxlbmdlCiB7CiAgICAgLy8gRklYTUU6IFdlIHBy
b2JhYmx5IGRvbid0IG5lZWQgdG8gaW1wbGVtZW50IHRoaXMgKHNlZSA8cmRhcjovL3Byb2JsZW0v
ODk2MDEyND4pLgogCisgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CiAgICAgVU5VU0VEX1BB
UkFNKGNvbm5lY3Rpb24pOwogCiAgICAgTE9HKE5ldHdvcmssICJIYW5kbGUgJXAgZGVsZWdhdGUg
Y29ubmVjdGlvbjolcCBkaWRDYW5jZWxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTolcCIsIG1faGFu
ZGxlLCBjb25uZWN0aW9uLCBjaGFsbGVuZ2UpOwogCi0gICAgaWYgKCFtX2hhbmRsZSkKLSAgICAg
ICAgcmV0dXJuOwotICAgIG1faGFuZGxlLT5kaWRDYW5jZWxBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZShjb3JlKGNoYWxsZW5nZSkpOworICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWlu
X3F1ZXVlKCksIF57CisgICAgICAgIGlmICghbV9oYW5kbGUpCisgICAgICAgICAgICByZXR1cm47
CisgICAgICAgIG1faGFuZGxlLT5kaWRDYW5jZWxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShjb3Jl
KGNoYWxsZW5nZSkpOworICAgIH0pOwogfQogCiAjaWYgVVNFKFBST1RFQ1RJT05fU1BBQ0VfQVVU
SF9DQUxMQkFDSykKIC0gKEJPT0wpY29ubmVjdGlvbjooTlNVUkxDb25uZWN0aW9uICopY29ubmVj
dGlvbiBjYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlOihOU1VSTFByb3RlY3Rp
b25TcGFjZSAqKXByb3RlY3Rpb25TcGFjZQogeworICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkp
OwogICAgIFVOVVNFRF9QQVJBTShjb25uZWN0aW9uKTsKIAogICAgIExPRyhOZXR3b3JrLCAiSGFu
ZGxlICVwIGRlbGVnYXRlIGNvbm5lY3Rpb246JXAgY2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3Rl
Y3Rpb25TcGFjZTolQDovLyVAOiV1IHJlYWxtOiVAIG1ldGhvZDolQCAlQCVAIiwgbV9oYW5kbGUs
IGNvbm5lY3Rpb24sIFtwcm90ZWN0aW9uU3BhY2UgcHJvdG9jb2xdLCBbcHJvdGVjdGlvblNwYWNl
IGhvc3RdLCBbcHJvdGVjdGlvblNwYWNlIHBvcnRdLCBbcHJvdGVjdGlvblNwYWNlIHJlYWxtXSwg
W3Byb3RlY3Rpb25TcGFjZSBhdXRoZW50aWNhdGlvbk1ldGhvZF0sIFtwcm90ZWN0aW9uU3BhY2Ug
aXNQcm94eV0gPyBAInByb3h5OiIgOiBAIiIsIFtwcm90ZWN0aW9uU3BhY2UgaXNQcm94eV0gPyBb
cHJvdGVjdGlvblNwYWNlIHByb3h5VHlwZV0gOiBAIiIpOwogCi0gICAgaWYgKCFtX2hhbmRsZSkK
LSAgICAgICAgcmV0dXJuIE5POworICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWlu
X3F1ZXVlKCksIF57CisgICAgICAgIGlmICghbV9oYW5kbGUpIHsKKyAgICAgICAgICAgIG1fYm9v
bFJlc3VsdCA9IE5POworICAgICAgICAgICAgZGlzcGF0Y2hfc2VtYXBob3JlX3NpZ25hbChtX3Nl
bWFwaG9yZSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgbV9oYW5k
bGUtPmNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UoY29yZShwcm90ZWN0aW9u
U3BhY2UpKTsKKyAgICB9KTsKIAotICAgIHJldHVybiBtX2hhbmRsZS0+Y2FuQXV0aGVudGljYXRl
QWdhaW5zdFByb3RlY3Rpb25TcGFjZShjb3JlKHByb3RlY3Rpb25TcGFjZSkpOworICAgIGRpc3Bh
dGNoX3NlbWFwaG9yZV93YWl0KG1fc2VtYXBob3JlLCBESVNQQVRDSF9USU1FX0ZPUkVWRVIpOwor
ICAgIHJldHVybiBtX2Jvb2xSZXN1bHQ7CiB9CiAjZW5kaWYKIAogLSAodm9pZCljb25uZWN0aW9u
OihOU1VSTENvbm5lY3Rpb24gKiljb25uZWN0aW9uIGRpZFJlY2VpdmVSZXNwb25zZTooTlNVUkxS
ZXNwb25zZSAqKXIKIHsKKyAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKICAgICBVTlVTRURf
UEFSQU0oY29ubmVjdGlvbik7CiAKICAgICBMT0coTmV0d29yaywgIkhhbmRsZSAlcCBkZWxlZ2F0
ZSBjb25uZWN0aW9uOiVwIGRpZFJlY2VpdmVSZXNwb25zZTolcCAoSFRUUCBzdGF0dXMgJWQsIHJl
cG9ydGVkIE1JTUVUeXBlICclcycpIiwgbV9oYW5kbGUsIGNvbm5lY3Rpb24sIHIsIFtyIHJlc3Bv
bmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Ioc3RhdHVzQ29kZSldID8gWyhpZClyIHN0YXR1c0NvZGVd
IDogMCwgW1tyIE1JTUVUeXBlXSBVVEY4U3RyaW5nXSk7CiAKLSAgICBpZiAoIW1faGFuZGxlIHx8
ICFtX2hhbmRsZS0+Y2xpZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIC8vIEF2b2lkIE1J
TUUgdHlwZSBzbmlmZmluZyBpZiB0aGUgcmVzcG9uc2UgY29tZXMgYmFjayBhcyAzMDQgTm90IE1v
ZGlmaWVkLgotICAgIGludCBzdGF0dXNDb2RlID0gW3IgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxl
Y3RvcihzdGF0dXNDb2RlKV0gPyBbKGlkKXIgc3RhdHVzQ29kZV0gOiAwOwotICAgIGlmIChzdGF0
dXNDb2RlICE9IDMwNCkKLSAgICAgICAgYWRqdXN0TUlNRVR5cGVJZk5lY2Vzc2FyeShbciBfQ0ZV
UkxSZXNwb25zZV0pOworICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVl
KCksIF57CisgICAgICAgIGlmICghbV9oYW5kbGUgfHwgIW1faGFuZGxlLT5jbGllbnQoKSkKKyAg
ICAgICAgICAgIHJldHVybjsKKworICAgICAgICAvLyBBdm9pZCBNSU1FIHR5cGUgc25pZmZpbmcg
aWYgdGhlIHJlc3BvbnNlIGNvbWVzIGJhY2sgYXMgMzA0IE5vdCBNb2RpZmllZC4KKyAgICAgICAg
aW50IHN0YXR1c0NvZGUgPSBbciByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHN0YXR1c0Nv
ZGUpXSA/IFsoaWQpciBzdGF0dXNDb2RlXSA6IDA7CisgICAgICAgIGlmIChzdGF0dXNDb2RlICE9
IDMwNCkKKyAgICAgICAgICAgIGFkanVzdE1JTUVUeXBlSWZOZWNlc3NhcnkoW3IgX0NGVVJMUmVz
cG9uc2VdKTsKIAotICAgIGlmIChbbV9oYW5kbGUtPmZpcnN0UmVxdWVzdCgpLm5zVVJMUmVxdWVz
dChEb05vdFVwZGF0ZUhUVFBCb2R5KSBfcHJvcGVydHlGb3JLZXk6QCJGb3JjZUhUTUxNSU1FVHlw
ZSJdKQotICAgICAgICBbciBfc2V0TUlNRVR5cGU6QCJ0ZXh0L2h0bWwiXTsKKyAgICAgICAgaWYg
KFttX2hhbmRsZS0+Zmlyc3RSZXF1ZXN0KCkubnNVUkxSZXF1ZXN0KERvTm90VXBkYXRlSFRUUEJv
ZHkpIF9wcm9wZXJ0eUZvcktleTpAIkZvcmNlSFRNTE1JTUVUeXBlIl0pCisgICAgICAgICAgICBb
ciBfc2V0TUlNRVR5cGU6QCJ0ZXh0L2h0bWwiXTsKIAotICAgIG1faGFuZGxlLT5jbGllbnQoKS0+
ZGlkUmVjZWl2ZVJlc3BvbnNlKG1faGFuZGxlLCByKTsKKyAgICAgICAgbV9oYW5kbGUtPmNsaWVu
dCgpLT5kaWRSZWNlaXZlUmVzcG9uc2UobV9oYW5kbGUsIHIpOworICAgIH0pOwogfQogCiAjaWYg
VVNFKE5FVFdPUktfQ0ZEQVRBX0FSUkFZX0NBTExCQUNLKQogLSAodm9pZCljb25uZWN0aW9uOihO
U1VSTENvbm5lY3Rpb24gKiljb25uZWN0aW9uIGRpZFJlY2VpdmVEYXRhQXJyYXk6KE5TQXJyYXkg
KilkYXRhQXJyYXkKIHsKKyAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKICAgICBVTlVTRURf
UEFSQU0oY29ubmVjdGlvbik7Ci0gICAgTE9HKE5ldHdvcmssICJIYW5kbGUgJXAgZGVsZWdhdGUg
Y29ubmVjdGlvbjolcCBkaWRSZWNlaXZlRGF0YUFycmF5OiVwIGFycmF5U2l6ZTolZCIsIG1faGFu
ZGxlLCBjb25uZWN0aW9uLCBkYXRhQXJyYXksIFtkYXRhQXJyYXkgY291bnRdKTsKLQotICAgIGlm
ICghZGF0YUFycmF5KQotICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoIW1faGFuZGxlIHx8ICFt
X2hhbmRsZS0+Y2xpZW50KCkpCi0gICAgICAgIHJldHVybjsKKyAgICBMT0coTmV0d29yaywgIkhh
bmRsZSAlcCBkZWxlZ2F0ZSBjb25uZWN0aW9uOiVwIGRpZFJlY2VpdmVEYXRhQXJyYXk6JXAgYXJy
YXlTaXplOiVkIiwgbV9oYW5kbGUsIGNvbm5lY3Rpb24sIGRhdGFBcnJheSwgW2RhdGFBcnJheSBj
b3VudF0pOwogCi0gICAgbV9oYW5kbGUtPmhhbmRsZURhdGFBcnJheShyZWludGVycHJldF9jYXN0
PENGQXJyYXlSZWY+KGRhdGFBcnJheSkpOwotICAgIC8vIFRoZSBjYWxsIHRvIGRpZFJlY2VpdmVE
YXRhIGFib3ZlIGNhbiBjYW5jZWwgYSBsb2FkLCBhbmQgaWYgc28sIHRoZSBkZWxlZ2F0ZSAoc2Vs
ZikgY291bGQgaGF2ZSBiZWVuIGRlYWxsb2NhdGVkIGJ5IHRoaXMgcG9pbnQuCisgICAgZGlzcGF0
Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgXnsKKyAgICAgICAgaWYgKCFkYXRh
QXJyYXkpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgaWYgKCFtX2hhbmRsZSB8fCAh
bV9oYW5kbGUtPmNsaWVudCgpKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIG1faGFu
ZGxlLT5oYW5kbGVEYXRhQXJyYXkocmVpbnRlcnByZXRfY2FzdDxDRkFycmF5UmVmPihkYXRhQXJy
YXkpKTsKKyAgICAgICAgLy8gVGhlIGNhbGwgdG8gZGlkUmVjZWl2ZURhdGEgYWJvdmUgY2FuIGNh
bmNlbCBhIGxvYWQsIGFuZCBpZiBzbywgdGhlIGRlbGVnYXRlIChzZWxmKSBjb3VsZCBoYXZlIGJl
ZW4gZGVhbGxvY2F0ZWQgYnkgdGhpcyBwb2ludC4KKyAgICB9KTsKIH0KICNlbmRpZgogCiAtICh2
b2lkKWNvbm5lY3Rpb246KE5TVVJMQ29ubmVjdGlvbiAqKWNvbm5lY3Rpb24gZGlkUmVjZWl2ZURh
dGE6KE5TRGF0YSAqKWRhdGEgbGVuZ3RoUmVjZWl2ZWQ6KGxvbmcgbG9uZylsZW5ndGhSZWNlaXZl
ZAogeworICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwogICAgIFVOVVNFRF9QQVJBTShjb25u
ZWN0aW9uKTsKICAgICBVTlVTRURfUEFSQU0obGVuZ3RoUmVjZWl2ZWQpOwogCiAgICAgTE9HKE5l
dHdvcmssICJIYW5kbGUgJXAgZGVsZWdhdGUgY29ubmVjdGlvbjolcCBkaWRSZWNlaXZlRGF0YTol
cCBsZW5ndGhSZWNlaXZlZDolbGxkIiwgbV9oYW5kbGUsIGNvbm5lY3Rpb24sIGRhdGEsIGxlbmd0
aFJlY2VpdmVkKTsKIAotICAgIGlmICghbV9oYW5kbGUgfHwgIW1faGFuZGxlLT5jbGllbnQoKSkK
LSAgICAgICAgcmV0dXJuOwotICAgIC8vIEZJWE1FOiBJZiB3ZSBnZXQgbW9yZSB0aGFuIDJCIGJ5
dGVzIGluIGEgc2luZ2xlIGNodW5rLCB0aGlzIGNvZGUgd29uJ3QgZG8gdGhlIHJpZ2h0IHRoaW5n
LgotICAgIC8vIEhvd2V2ZXIsIHdpdGggdG9kYXkncyBjb21wdXRlcnMgYW5kIG5ldHdvcmtpbmcg
c3BlZWRzLCB0aGlzIHdvbid0IGhhcHBlbiBpbiBwcmFjdGljZS4KLSAgICAvLyBDb3VsZCBiZSBh
biBpc3N1ZSB3aXRoIGEgZ2lhbnQgbG9jYWwgZmlsZS4KLQotICAgIC8vIEZJWE1FOiBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk3OTMKLSAgICAvLyAtMSBtZWFucyB3
ZSBkbyBub3QgcHJvdmlkZSBhbnkgZGF0YSBhYm91dCB0cmFuc2ZlciBzaXplIHRvIGluc3BlY3Rv
ciBzbyBpdCB3b3VsZCB1c2UKLSAgICAvLyBDb250ZW50LUxlbmd0aCBoZWFkZXJzIG9yIGNvbnRl
bnQgc2l6ZSB0byBzaG93IHRyYW5zZmVyIHNpemUuCi0gICAgbV9oYW5kbGUtPmNsaWVudCgpLT5k
aWRSZWNlaXZlQnVmZmVyKG1faGFuZGxlLCBTaGFyZWRCdWZmZXI6OndyYXBOU0RhdGEoZGF0YSks
IC0xKTsKKyAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBeewor
ICAgICAgICBpZiAoIW1faGFuZGxlIHx8ICFtX2hhbmRsZS0+Y2xpZW50KCkpCisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIC8vIEZJWE1FOiBJZiB3ZSBnZXQgbW9yZSB0aGFuIDJCIGJ5dGVz
IGluIGEgc2luZ2xlIGNodW5rLCB0aGlzIGNvZGUgd29uJ3QgZG8gdGhlIHJpZ2h0IHRoaW5nLgor
ICAgICAgICAvLyBIb3dldmVyLCB3aXRoIHRvZGF5J3MgY29tcHV0ZXJzIGFuZCBuZXR3b3JraW5n
IHNwZWVkcywgdGhpcyB3b24ndCBoYXBwZW4gaW4gcHJhY3RpY2UuCisgICAgICAgIC8vIENvdWxk
IGJlIGFuIGlzc3VlIHdpdGggYSBnaWFudCBsb2NhbCBmaWxlLgorCisgICAgICAgIC8vIEZJWE1F
OiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk3OTMKKyAgICAgICAg
Ly8gLTEgbWVhbnMgd2UgZG8gbm90IHByb3ZpZGUgYW55IGRhdGEgYWJvdXQgdHJhbnNmZXIgc2l6
ZSB0byBpbnNwZWN0b3Igc28gaXQgd291bGQgdXNlCisgICAgICAgIC8vIENvbnRlbnQtTGVuZ3Ro
IGhlYWRlcnMgb3IgY29udGVudCBzaXplIHRvIHNob3cgdHJhbnNmZXIgc2l6ZS4KKyAgICAgICAg
bV9oYW5kbGUtPmNsaWVudCgpLT5kaWRSZWNlaXZlQnVmZmVyKG1faGFuZGxlLCBTaGFyZWRCdWZm
ZXI6OndyYXBOU0RhdGEoZGF0YSksIC0xKTsKKyAgICB9KTsKIH0KIAogLSAodm9pZCljb25uZWN0
aW9uOihOU1VSTENvbm5lY3Rpb24gKiljb25uZWN0aW9uIHdpbGxTdG9wQnVmZmVyaW5nRGF0YToo
TlNEYXRhICopZGF0YQogeworICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwogICAgIFVOVVNF
RF9QQVJBTShjb25uZWN0aW9uKTsKIAogICAgIExPRyhOZXR3b3JrLCAiSGFuZGxlICVwIGRlbGVn
YXRlIGNvbm5lY3Rpb246JXAgd2lsbFN0b3BCdWZmZXJpbmdEYXRhOiVwIiwgbV9oYW5kbGUsIGNv
bm5lY3Rpb24sIGRhdGEpOwogCi0gICAgaWYgKCFtX2hhbmRsZSB8fCAhbV9oYW5kbGUtPmNsaWVu
dCgpKQotICAgICAgICByZXR1cm47Ci0gICAgLy8gRklYTUU6IElmIHdlIGdldCBhIHJlc291cmNl
IHdpdGggbW9yZSB0aGFuIDJCIGJ5dGVzLCB0aGlzIGNvZGUgd29uJ3QgZG8gdGhlIHJpZ2h0IHRo
aW5nLgotICAgIC8vIEhvd2V2ZXIsIHdpdGggdG9kYXkncyBjb21wdXRlcnMgYW5kIG5ldHdvcmtp
bmcgc3BlZWRzLCB0aGlzIHdvbid0IGhhcHBlbiBpbiBwcmFjdGljZS4KLSAgICAvLyBDb3VsZCBi
ZSBhbiBpc3N1ZSB3aXRoIGEgZ2lhbnQgbG9jYWwgZmlsZS4KLSAgICBtX2hhbmRsZS0+Y2xpZW50
KCktPndpbGxTdG9wQnVmZmVyaW5nRGF0YShtX2hhbmRsZSwgKGNvbnN0IGNoYXIqKVtkYXRhIGJ5
dGVzXSwgc3RhdGljX2Nhc3Q8aW50PihbZGF0YSBsZW5ndGhdKSk7CisgICAgZGlzcGF0Y2hfYXN5
bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgXnsKKyAgICAgICAgaWYgKCFtX2hhbmRsZSB8
fCAhbV9oYW5kbGUtPmNsaWVudCgpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAvLyBG
SVhNRTogSWYgd2UgZ2V0IGEgcmVzb3VyY2Ugd2l0aCBtb3JlIHRoYW4gMkIgYnl0ZXMsIHRoaXMg
Y29kZSB3b24ndCBkbyB0aGUgcmlnaHQgdGhpbmcuCisgICAgICAgIC8vIEhvd2V2ZXIsIHdpdGgg
dG9kYXkncyBjb21wdXRlcnMgYW5kIG5ldHdvcmtpbmcgc3BlZWRzLCB0aGlzIHdvbid0IGhhcHBl
biBpbiBwcmFjdGljZS4KKyAgICAgICAgLy8gQ291bGQgYmUgYW4gaXNzdWUgd2l0aCBhIGdpYW50
IGxvY2FsIGZpbGUuCisgICAgICAgIG1faGFuZGxlLT5jbGllbnQoKS0+d2lsbFN0b3BCdWZmZXJp
bmdEYXRhKG1faGFuZGxlLCAoY29uc3QgY2hhciopW2RhdGEgYnl0ZXNdLCBzdGF0aWNfY2FzdDxp
bnQ+KFtkYXRhIGxlbmd0aF0pKTsKKyAgICB9KTsKIH0KIAogLSAodm9pZCljb25uZWN0aW9uOihO
U1VSTENvbm5lY3Rpb24gKiljb25uZWN0aW9uIGRpZFNlbmRCb2R5RGF0YTooTlNJbnRlZ2VyKWJ5
dGVzV3JpdHRlbiB0b3RhbEJ5dGVzV3JpdHRlbjooTlNJbnRlZ2VyKXRvdGFsQnl0ZXNXcml0dGVu
IHRvdGFsQnl0ZXNFeHBlY3RlZFRvV3JpdGU6KE5TSW50ZWdlcil0b3RhbEJ5dGVzRXhwZWN0ZWRU
b1dyaXRlCiB7CisgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CiAgICAgVU5VU0VEX1BBUkFN
KGNvbm5lY3Rpb24pOwogICAgIFVOVVNFRF9QQVJBTShieXRlc1dyaXR0ZW4pOwogCiAgICAgTE9H
KE5ldHdvcmssICJIYW5kbGUgJXAgZGVsZWdhdGUgY29ubmVjdGlvbjolcCBkaWRTZW5kQm9keURh
dGE6JWQgdG90YWxCeXRlc1dyaXR0ZW46JWQgdG90YWxCeXRlc0V4cGVjdGVkVG9Xcml0ZTolZCIs
IG1faGFuZGxlLCBjb25uZWN0aW9uLCBieXRlc1dyaXR0ZW4sIHRvdGFsQnl0ZXNXcml0dGVuLCB0
b3RhbEJ5dGVzRXhwZWN0ZWRUb1dyaXRlKTsKIAotICAgIGlmICghbV9oYW5kbGUgfHwgIW1faGFu
ZGxlLT5jbGllbnQoKSkKLSAgICAgICAgcmV0dXJuOwotICAgIG1faGFuZGxlLT5jbGllbnQoKS0+
ZGlkU2VuZERhdGEobV9oYW5kbGUsIHRvdGFsQnl0ZXNXcml0dGVuLCB0b3RhbEJ5dGVzRXhwZWN0
ZWRUb1dyaXRlKTsKKyAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgp
LCBeeworICAgICAgICBpZiAoIW1faGFuZGxlIHx8ICFtX2hhbmRsZS0+Y2xpZW50KCkpCisgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIG1faGFuZGxlLT5jbGllbnQoKS0+ZGlkU2VuZERhdGEo
bV9oYW5kbGUsIHRvdGFsQnl0ZXNXcml0dGVuLCB0b3RhbEJ5dGVzRXhwZWN0ZWRUb1dyaXRlKTsK
KyAgICB9KTsKIH0KIAogLSAodm9pZCljb25uZWN0aW9uRGlkRmluaXNoTG9hZGluZzooTlNVUkxD
b25uZWN0aW9uICopY29ubmVjdGlvbgogeworICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwog
ICAgIFVOVVNFRF9QQVJBTShjb25uZWN0aW9uKTsKIAogICAgIExPRyhOZXR3b3JrLCAiSGFuZGxl
ICVwIGRlbGVnYXRlIGNvbm5lY3Rpb25EaWRGaW5pc2hMb2FkaW5nOiVwIiwgbV9oYW5kbGUsIGNv
bm5lY3Rpb24pOwogCi0gICAgaWYgKCFtX2hhbmRsZSB8fCAhbV9oYW5kbGUtPmNsaWVudCgpKQot
ICAgICAgICByZXR1cm47CisgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVl
dWUoKSwgXnsKKyAgICAgICAgaWYgKCFtX2hhbmRsZSB8fCAhbV9oYW5kbGUtPmNsaWVudCgpKQor
ICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9oYW5kbGUtPmNsaWVudCgpLT5kaWRGaW5pc2hM
b2FkaW5nKG1faGFuZGxlLCAwKTsKKyAgICAgICAgbV9oYW5kbGUtPmNsaWVudCgpLT5kaWRGaW5p
c2hMb2FkaW5nKG1faGFuZGxlLCAwKTsKKyAgICB9KTsKIH0KIAogLSAodm9pZCljb25uZWN0aW9u
OihOU1VSTENvbm5lY3Rpb24gKiljb25uZWN0aW9uIGRpZEZhaWxXaXRoRXJyb3I6KE5TRXJyb3Ig
KillcnJvcgogeworICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwogICAgIFVOVVNFRF9QQVJB
TShjb25uZWN0aW9uKTsKIAogICAgIExPRyhOZXR3b3JrLCAiSGFuZGxlICVwIGRlbGVnYXRlIGNv
bm5lY3Rpb246JXAgZGlkRmFpbFdpdGhFcnJvcjolQCIsIG1faGFuZGxlLCBjb25uZWN0aW9uLCBl
cnJvcik7CiAKLSAgICBpZiAoIW1faGFuZGxlIHx8ICFtX2hhbmRsZS0+Y2xpZW50KCkpCi0gICAg
ICAgIHJldHVybjsKKyAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgp
LCBeeworICAgICAgICBpZiAoIW1faGFuZGxlIHx8ICFtX2hhbmRsZS0+Y2xpZW50KCkpCisgICAg
ICAgICAgICByZXR1cm47CiAKLSAgICBtX2hhbmRsZS0+Y2xpZW50KCktPmRpZEZhaWwobV9oYW5k
bGUsIGVycm9yKTsKKyAgICAgICAgbV9oYW5kbGUtPmNsaWVudCgpLT5kaWRGYWlsKG1faGFuZGxl
LCBlcnJvcik7CisgICAgfSk7CiB9CiAKIAogLSAoTlNDYWNoZWRVUkxSZXNwb25zZSAqKWNvbm5l
Y3Rpb246KE5TVVJMQ29ubmVjdGlvbiAqKWNvbm5lY3Rpb24gd2lsbENhY2hlUmVzcG9uc2U6KE5T
Q2FjaGVkVVJMUmVzcG9uc2UgKiljYWNoZWRSZXNwb25zZQogewotICAgIExPRyhOZXR3b3JrLCAi
SGFuZGxlICVwIGRlbGVnYXRlIGNvbm5lY3Rpb246JXAgd2lsbENhY2hlUmVzcG9uc2U6JXAiLCBt
X2hhbmRsZSwgY29ubmVjdGlvbiwgY2FjaGVkUmVzcG9uc2UpOwotCisgICAgQVNTRVJUKCFpc01h
aW5UaHJlYWQoKSk7CiAgICAgVU5VU0VEX1BBUkFNKGNvbm5lY3Rpb24pOwogCi0gICAgaWYgKCFt
X2hhbmRsZSB8fCAhbV9oYW5kbGUtPmNsaWVudCgpKQotICAgICAgICByZXR1cm4gbmlsOworICAg
IExPRyhOZXR3b3JrLCAiSGFuZGxlICVwIGRlbGVnYXRlIGNvbm5lY3Rpb246JXAgd2lsbENhY2hl
UmVzcG9uc2U6JXAiLCBtX2hhbmRsZSwgY29ubmVjdGlvbiwgY2FjaGVkUmVzcG9uc2UpOwogCi0g
ICAgLy8gV29ya2Fyb3VuZCBmb3IgPHJkYXI6Ly9wcm9ibGVtLzYzMDA5OTA+IENhY2hpbmcgZG9l
cyBub3QgcmVzcGVjdCBWYXJ5IEhUVFAgaGVhZGVyLgotICAgIC8vIEZJWE1FOiBXZWJDb3JlIGNh
Y2hlIGhhcyBpc3N1ZXMgd2l0aCBWYXJ5LCB0b28gKGJ1ZyA1ODc5NywgYnVnIDcxNTA5KS4KLSAg
ICBpZiAoW1tjYWNoZWRSZXNwb25zZSByZXNwb25zZV0gaXNLaW5kT2ZDbGFzczpbTlNIVFRQVVJM
UmVzcG9uc2UgY2xhc3NdXQotICAgICAgICAmJiBbWyhOU0hUVFBVUkxSZXNwb25zZSAqKVtjYWNo
ZWRSZXNwb25zZSByZXNwb25zZV0gYWxsSGVhZGVyRmllbGRzXSBvYmplY3RGb3JLZXk6QCJWYXJ5
Il0pCi0gICAgICAgIHJldHVybiBuaWw7CisgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0
X21haW5fcXVldWUoKSwgXnsKKyAgICAgICAgaWYgKCFtX2hhbmRsZSB8fCAhbV9oYW5kbGUtPmNs
aWVudCgpKSB7CisgICAgICAgICAgICBtX2NhY2hlZFJlc3BvbnNlUmVzdWx0ID0gbnVsbHB0cjsK
KyAgICAgICAgICAgIGRpc3BhdGNoX3NlbWFwaG9yZV9zaWduYWwobV9zZW1hcGhvcmUpOworICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgLy8gV29ya2Fyb3VuZCBmb3Ig
PHJkYXI6Ly9wcm9ibGVtLzYzMDA5OTA+IENhY2hpbmcgZG9lcyBub3QgcmVzcGVjdCBWYXJ5IEhU
VFAgaGVhZGVyLgorICAgICAgICAvLyBGSVhNRTogV2ViQ29yZSBjYWNoZSBoYXMgaXNzdWVzIHdp
dGggVmFyeSwgdG9vIChidWcgNTg3OTcsIGJ1ZyA3MTUwOSkuCisgICAgICAgIGlmIChbW2NhY2hl
ZFJlc3BvbnNlIHJlc3BvbnNlXSBpc0tpbmRPZkNsYXNzOltOU0hUVFBVUkxSZXNwb25zZSBjbGFz
c11dCisgICAgICAgICAgICAmJiBbWyhOU0hUVFBVUkxSZXNwb25zZSAqKVtjYWNoZWRSZXNwb25z
ZSByZXNwb25zZV0gYWxsSGVhZGVyRmllbGRzXSBvYmplY3RGb3JLZXk6QCJWYXJ5Il0pIHsKKyAg
ICAgICAgICAgIG1fY2FjaGVkUmVzcG9uc2VSZXN1bHQgPSBudWxscHRyOworICAgICAgICAgICAg
ZGlzcGF0Y2hfc2VtYXBob3JlX3NpZ25hbChtX3NlbWFwaG9yZSk7CisgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIH0KKworICAgICAgICBtX2hhbmRsZS0+Y2xpZW50KCktPndpbGxDYWNoZVJl
c3BvbnNlQXN5bmMobV9oYW5kbGUsIGNhY2hlZFJlc3BvbnNlKTsKKyAgICB9KTsKIAotICAgIE5T
Q2FjaGVkVVJMUmVzcG9uc2UgKm5ld1Jlc3BvbnNlID0gbV9oYW5kbGUtPmNsaWVudCgpLT53aWxs
Q2FjaGVSZXNwb25zZShtX2hhbmRsZSwgY2FjaGVkUmVzcG9uc2UpOwotICAgIGlmIChuZXdSZXNw
b25zZSAhPSBjYWNoZWRSZXNwb25zZSkKLSAgICAgICAgcmV0dXJuIG5ld1Jlc3BvbnNlOwotICAg
IAotICAgIHJldHVybiBuZXdSZXNwb25zZTsKKyAgICBkaXNwYXRjaF9zZW1hcGhvcmVfd2FpdCht
X3NlbWFwaG9yZSwgRElTUEFUQ0hfVElNRV9GT1JFVkVSKTsKKyAgICByZXR1cm4gW21fY2FjaGVk
UmVzcG9uc2VSZXN1bHQubGVha1JlZigpIGF1dG9yZWxlYXNlXTsKIH0KIAogQGVuZApJbmRleDog
U291cmNlL1dlYktpdDIvRGVyaXZlZFNvdXJjZXMubWFrZQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0Mi9EZXJpdmVkU291cmNlcy5tYWtlCShyZXZpc2lvbiAxNDY3ODUpCisrKyBTb3VyY2Uv
V2ViS2l0Mi9EZXJpdmVkU291cmNlcy5tYWtlCSh3b3JraW5nIGNvcHkpCkBAIC02OSw2ICs2OSw3
IEBAIE1FU1NBR0VfUkVDRUlWRVJTID0gXAogICAgIE5ldHdvcmtQcm9jZXNzIFwKICAgICBOZXR3
b3JrUHJvY2Vzc0Nvbm5lY3Rpb24gXAogICAgIE5ldHdvcmtQcm9jZXNzUHJveHkgXAorICAgIE5l
dHdvcmtSZXNvdXJjZUxvYWRlciBcCiAgICAgTlBPYmplY3RNZXNzYWdlUmVjZWl2ZXIgXAogICAg
IE9mZmxpbmVTdG9yYWdlUHJvY2VzcyBcCiAgICAgUGx1Z2luQ29udHJvbGxlclByb3h5IFwKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAJKHJldmlzaW9uIDE0Njc4NSkKKysrIFNv
dXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIk5ldHdvcmtQ
cm9jZXNzLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuaCIKICNp
bmNsdWRlICJOZXR3b3JrUmVzb3VyY2VMb2FkZXIuaCIKKyNpbmNsdWRlICJOZXR3b3JrUmVzb3Vy
Y2VMb2FkZXJNZXNzYWdlcy5oIgogI2luY2x1ZGUgIlJlbW90ZU5ldHdvcmtpbmdDb250ZXh0Lmgi
CiAjaW5jbHVkZSAiU3luY05ldHdvcmtSZXNvdXJjZUxvYWRlci5oIgogI2luY2x1ZGUgPFdlYkNv
cmUvQmxvYkRhdGEuaD4KQEAgLTcwLDYgKzcxLDEzIEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6OmRpZFIKICAgICAgICAgZGlkUmVjZWl2ZU5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KKworICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdl
czo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpIHsKKyAgICAg
ICAgSGFzaE1hcDxSZXNvdXJjZUxvYWRJZGVudGlmaWVyLCBSZWZQdHI8TmV0d29ya1Jlc291cmNl
TG9hZGVyPiA+OjppdGVyYXRvciBsb2FkZXJJdGVyYXRvciA9IG1fbmV0d29ya1Jlc291cmNlTG9h
ZGVycy5maW5kKGRlY29kZXIuZGVzdGluYXRpb25JRCgpKTsKKyAgICAgICAgaWYgKGxvYWRlckl0
ZXJhdG9yICE9IG1fbmV0d29ya1Jlc291cmNlTG9hZGVycy5lbmQoKSkKKyAgICAgICAgICAgIGxv
YWRlckl0ZXJhdG9yLT52YWx1ZS0+ZGlkUmVjZWl2ZU5ldHdvcmtSZXNvdXJjZUxvYWRlck1lc3Nh
Z2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7CisgICAgICAgIHJldHVybjsKKyAgICB9CiAgICAgCiAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAJKHJldmlzaW9u
IDE0Njc4NSkKKysrIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJj
ZUxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3Nyw1NCArMjc3LDU4IEBAIHZvaWQgTmV0
d29ya1Jlc291cmNlTG9hZGVyOjpkaWRGYWlsKFJlc28KICAgICBzY2hlZHVsZUNsZWFudXBPbk1h
aW5UaHJlYWQoKTsKIH0KIAotdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OndpbGxTZW5kUmVx
dWVzdChSZXNvdXJjZUhhbmRsZSosIFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSkKK3ZvaWQgTmV0d29ya1Jlc291cmNlTG9h
ZGVyOjp3aWxsU2VuZFJlcXVlc3RBc3luYyhSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFJlc291cmNl
UmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25z
ZSkKIHsKICAgICAvLyBXZSBvbmx5IGV4cGVjdCB0byBnZXQgdGhlIHdpbGxTZW5kUmVxdWVzdCBj
YWxsYmFjayBmcm9tIFJlc291cmNlSGFuZGxlIGFzIHRoZSByZXN1bHQgb2YgYSByZWRpcmVjdC4K
ICAgICBBU1NFUlQoIXJlZGlyZWN0UmVzcG9uc2UuaXNOdWxsKCkpOwotICAgIEFTU0VSVCghaXNN
YWluVGhyZWFkKCkpOworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAKLSAgICAvLyBJTVBP
UlRBTlQ6IFRoZSBmYWN0IHRoYXQgdGhpcyBtZXNzYWdlIHRvIHRoZSBXZWJQcm9jZXNzIGlzIHN5
bmMgaXMgd2hhdCBtYWtlcyBvdXIgY3VycmVudCBhcHByb2FjaCB0byBzeW5jaHJvbm91cyBYTUxI
dHRwUmVxdWVzdHMgc2FmZS4KLSAgICAvLyBJZiB0aGlzIG1lc3NhZ2UgY2hhbmdlcyB0byBiZSBh
c3luY2hyb25vdXMgd2UgbWlnaHQgaW50cm9kdWNlIGEgc2l0dWF0aW9uIHdoZXJlIHRoZSBOZXR3
b3JrUHJvY2VzcyBpcyBkZWFkbG9ja2VkIHdhaXRpbmcgZm9yIDYgY29ubmVjdGlvbnMKKyAgICBt
X3N1Z2dlc3RlZFJlcXVlc3RGb3JXaWxsU2VuZFJlcXVlc3QgPSByZXF1ZXN0OworCisgICAgLy8g
VGhpcyBtZXNzYWdlIGlzIERpc3BhdGNoTWVzc2FnZUV2ZW5XaGVuV2FpdGluZ0ZvclN5bmNSZXBs
eSB0byBhdm9pZCBhIHNpdHVhdGlvbiB3aGVyZSB0aGUgTmV0d29ya1Byb2Nlc3MgaXMgZGVhZGxv
Y2tlZCB3YWl0aW5nIGZvciA2IGNvbm5lY3Rpb25zCiAgICAgLy8gdG8gY29tcGxldGUgd2hpbGUg
dGhlIFdlYlByb2Nlc3MgaXMgd2FpdGluZyBmb3IgYSA3dGggdG8gY29tcGxldGUuCi0gICAgLy8g
SWYgd2UgZXZlciBjaGFuZ2UgdGhpcyBtZXNzYWdlIHRvIGJlIGFzeW5jaHJvbm91cyB3ZSBoYXZl
IHRvIGluY2x1ZGUgc2FmZWd1YXJkcyB0byBtYWtlIHN1cmUgdGhlIG5ldyBkZXNpZ24gaW50ZXJh
Y3RzIHdlbGwgd2l0aCBzeW5jIFhIUi4KLSAgICBSZXNvdXJjZVJlcXVlc3QgcmV0dXJuZWRSZXF1
ZXN0OwotICAgIGlmICghc2VuZFN5bmNBYm9ydGluZ09uRmFpbHVyZShNZXNzYWdlczo6V2ViUmVz
b3VyY2VMb2FkZXI6OldpbGxTZW5kUmVxdWVzdChyZXF1ZXN0LCByZWRpcmVjdFJlc3BvbnNlKSwg
TWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpXaWxsU2VuZFJlcXVlc3Q6OlJlcGx5KHJldHVy
bmVkUmVxdWVzdCkpKQotICAgICAgICByZXR1cm47Ci0gICAgCi0gICAgcmVxdWVzdC51cGRhdGVG
cm9tRGVsZWdhdGVQcmVzZXJ2aW5nT2xkSFRUUEJvZHkocmV0dXJuZWRSZXF1ZXN0Lm5zVVJMUmVx
dWVzdChEb05vdFVwZGF0ZUhUVFBCb2R5KSk7CisgICAgY29ubmVjdGlvbigpLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJSZXNvdXJjZUxvYWRlcjo6V2lsbFNlbmRSZXF1ZXN0KHJlcXVlc3QsIHJlZGlyZWN0
UmVzcG9uc2UpLCBkZXN0aW5hdGlvbklEKCksIENvcmVJUEM6OkRpc3BhdGNoTWVzc2FnZUV2ZW5X
aGVuV2FpdGluZ0ZvclN5bmNSZXBseSk7Cit9CisKK3ZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVy
Ojpjb250aW51ZVdpbGxTZW5kUmVxdWVzdChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIG5ld1JlcXVl
c3QpCit7CisgICAgbV9zdWdnZXN0ZWRSZXF1ZXN0Rm9yV2lsbFNlbmRSZXF1ZXN0LnVwZGF0ZUZy
b21EZWxlZ2F0ZVByZXNlcnZpbmdPbGRIVFRQQm9keShuZXdSZXF1ZXN0Lm5zVVJMUmVxdWVzdChE
b05vdFVwZGF0ZUhUVFBCb2R5KSk7CisgICAgbV9oYW5kbGUtPmNvbnRpbnVlV2lsbFNlbmRSZXF1
ZXN0KG1fc3VnZ2VzdGVkUmVxdWVzdEZvcldpbGxTZW5kUmVxdWVzdCk7CiAKLSAgICBSdW5Mb29w
OjptYWluKCktPmRpc3BhdGNoKGJpbmQoJk5ldHdvcmtSZXNvdXJjZUxvYWRTY2hlZHVsZXI6OnJl
Y2VpdmVkUmVkaXJlY3QsICZOZXR3b3JrUHJvY2Vzczo6c2hhcmVkKCkubmV0d29ya1Jlc291cmNl
TG9hZFNjaGVkdWxlcigpLCB0aGlzLCByZXF1ZXN0LnVybCgpKSk7CisgICAgUnVuTG9vcDo6bWFp
bigpLT5kaXNwYXRjaChiaW5kKCZOZXR3b3JrUmVzb3VyY2VMb2FkU2NoZWR1bGVyOjpyZWNlaXZl
ZFJlZGlyZWN0LCAmTmV0d29ya1Byb2Nlc3M6OnNoYXJlZCgpLm5ldHdvcmtSZXNvdXJjZUxvYWRT
Y2hlZHVsZXIoKSwgdGhpcywgbV9zdWdnZXN0ZWRSZXF1ZXN0Rm9yV2lsbFNlbmRSZXF1ZXN0LnVy
bCgpKSk7CisKKyAgICBtX3N1Z2dlc3RlZFJlcXVlc3RGb3JXaWxsU2VuZFJlcXVlc3QgPSBSZXNv
dXJjZVJlcXVlc3QoKTsKIH0KIAogLy8gRklYTUUgKE5ldHdvcmtQcm9jZXNzKTogTWFueSBvZiB0
aGUgZm9sbG93aW5nIFJlc291cmNlSGFuZGxlQ2xpZW50IG1ldGhvZHMgZGVmaW5pdGVseSBuZWVk
IGltcGxlbWVudGF0aW9ucy4gQSBmZXcgd2lsbCBub3QuCiAvLyBPbmNlIHdlIGtub3cgd2hhdCB0
aGV5IGFyZSB0aGV5IGNhbiBiZSByZW1vdmVkLgogCi12b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRl
cjo6ZGlkU2VuZERhdGEoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGUqLCB1bnNpZ25lZCBsb25nIGxv
bmcgLypieXRlc1NlbnQqLywgdW5zaWduZWQgbG9uZyBsb25nIC8qdG90YWxCeXRlc1RvQmVTZW50
Ki8pCit2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkU2VuZERhdGEoUmVzb3VyY2VIYW5k
bGUqLCB1bnNpZ25lZCBsb25nIGxvbmcgLypieXRlc1NlbnQqLywgdW5zaWduZWQgbG9uZyBsb25n
IC8qdG90YWxCeXRlc1RvQmVTZW50Ki8pCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAot
dm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVDYWNoZWRNZXRhZGF0YShXZWJD
b3JlOjpSZXNvdXJjZUhhbmRsZSosIGNvbnN0IGNoYXIqLCBpbnQpCit2b2lkIE5ldHdvcmtSZXNv
dXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZUNhY2hlZE1ldGFkYXRhKFJlc291cmNlSGFuZGxlKiwgY29u
c3QgY2hhciosIGludCkKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi12b2lkIE5ldHdv
cmtSZXNvdXJjZUxvYWRlcjo6d2FzQmxvY2tlZChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZSopCit2
b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6d2FzQmxvY2tlZChSZXNvdXJjZUhhbmRsZSopCiB7
CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAotdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6
OmNhbm5vdFNob3dVUkwoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGUqKQordm9pZCBOZXR3b3JrUmVz
b3VyY2VMb2FkZXI6OmNhbm5vdFNob3dVUkwoUmVzb3VyY2VIYW5kbGUqKQogewogICAgIG5vdElt
cGxlbWVudGVkKCk7CiB9CiAKLWJvb2wgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpzaG91bGRVc2VD
cmVkZW50aWFsU3RvcmFnZShSZXNvdXJjZUhhbmRsZSopCit2b2lkIE5ldHdvcmtSZXNvdXJjZUxv
YWRlcjo6c2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2VBc3luYyhSZXNvdXJjZUhhbmRsZSogaGFu
ZGxlKQogewogICAgIC8vIFdoZW4gdGhlIFdlYlByb2Nlc3MgaXMgaGFuZGxpbmcgbG9hZGluZyBh
IGNsaWVudCBpcyBjb25zdWx0ZWQgZWFjaCB0aW1lIHRoaXMgc2hvdWxkVXNlQ3JlZGVudGlhbFN0
b3JhZ2UgcXVlc3Rpb24gaXMgYXNrZWQuCiAgICAgLy8gSW4gTmV0d29ya1Byb2Nlc3MgbW9kZSB3
ZSBhc2sgdGhlIFdlYlByb2Nlc3MgY2xpZW50IHVwIGZyb250IG9uY2UgYW5kIHRoZW4gcmV1c2Ug
dGhlIGNhY2hlZCBhbnN3ZXIuCiAKLSAgICByZXR1cm4gYWxsb3dTdG9yZWRDcmVkZW50aWFscygp
ID09IEFsbG93U3RvcmVkQ3JlZGVudGlhbHM7CisgICAgaGFuZGxlLT5jb250aW51ZVNob3VsZFVz
ZUNyZWRlbnRpYWxTdG9yYWdlKGFsbG93U3RvcmVkQ3JlZGVudGlhbHMoKSA9PSBBbGxvd1N0b3Jl
ZENyZWRlbnRpYWxzKTsKIH0KIAogdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2Vp
dmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IEF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlJiBjaGFsbGVuZ2UpCkBAIC0zMzgsMjAgKzM0MiwyMCBAQCB2b2lkIE5l
dHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkQ2FuY2VsQXV0CiB9CiAKICNpZiBVU0UoUFJPVEVDVElP
Tl9TUEFDRV9BVVRIX0NBTExCQUNLKQotYm9vbCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmNhbkF1
dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBQ
cm90ZWN0aW9uU3BhY2UmIHByb3RlY3Rpb25TcGFjZSkKK3ZvaWQgTmV0d29ya1Jlc291cmNlTG9h
ZGVyOjpjYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlQXN5bmMoUmVzb3VyY2VI
YW5kbGUqLCBjb25zdCBQcm90ZWN0aW9uU3BhY2UmIHByb3RlY3Rpb25TcGFjZSkKIHsKLSAgICBB
U1NFUlQoIWlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogCi0g
ICAgLy8gSU1QT1JUQU5UOiBUaGUgZmFjdCB0aGF0IHRoaXMgbWVzc2FnZSB0byB0aGUgV2ViUHJv
Y2VzcyBpcyBzeW5jIGlzIHdoYXQgbWFrZXMgb3VyIGN1cnJlbnQgYXBwcm9hY2ggdG8gc3luY2hy
b25vdXMgWE1MSHR0cFJlcXVlc3RzIHNhZmUuCi0gICAgLy8gSWYgdGhpcyBtZXNzYWdlIGNoYW5n
ZXMgdG8gYmUgYXN5bmNocm9ub3VzIHdlIG1pZ2h0IGludHJvZHVjZSBhIHNpdHVhdGlvbiB3aGVy
ZSB0aGUgTmV0d29ya1Byb2Nlc3MgaXMgZGVhZGxvY2tlZCB3YWl0aW5nIGZvciA2IGNvbm5lY3Rp
b25zCi0gICAgLy8gdG8gY29tcGxldGUgd2hpbGUgdGhlIFdlYlByb2Nlc3MgaXMgd2FpdGluZyBm
b3IgYSA3dGggdG8gY29tcGxldGUuCi0gICAgLy8gSWYgd2UgZXZlciBjaGFuZ2UgdGhpcyBtZXNz
YWdlIHRvIGJlIGFzeW5jaHJvbm91cyB3ZSBoYXZlIHRvIGluY2x1ZGUgc2FmZWd1YXJkcyB0byBt
YWtlIHN1cmUgdGhlIG5ldyBkZXNpZ24gaW50ZXJhY3RzIHdlbGwgd2l0aCBzeW5jIFhIUi4KLSAg
ICBib29sIHJlc3VsdDsKLSAgICBpZiAoIXNlbmRTeW5jQWJvcnRpbmdPbkZhaWx1cmUoTWVzc2Fn
ZXM6OldlYlJlc291cmNlTG9hZGVyOjpDYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNw
YWNlKHByb3RlY3Rpb25TcGFjZSksIE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUxvYWRlcjo6Q2FuQXV0
aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZTo6UmVwbHkocmVzdWx0KSkpCi0gICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAvLyBUaGlzIG1lc3NhZ2UgaXMgRGlzcGF0Y2hNZXNzYWdlRXZl
bldoZW5XYWl0aW5nRm9yU3luY1JlcGx5IHRvIGF2b2lkIGEgc2l0dWF0aW9uIHdoZXJlIHRoZSBO
ZXR3b3JrUHJvY2VzcyBpcyBkZWFkbG9ja2VkCisgICAgLy8gd2FpdGluZyBmb3IgNiBjb25uZWN0
aW9ucyB0byBjb21wbGV0ZSB3aGlsZSB0aGUgV2ViUHJvY2VzcyBpcyB3YWl0aW5nIGZvciBhIDd0
aCB0byBjb21wbGV0ZS4KKyAgICBjb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYlJlc291
cmNlTG9hZGVyOjpDYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlKHByb3RlY3Rp
b25TcGFjZSksIGRlc3RpbmF0aW9uSUQoKSwgQ29yZUlQQzo6RGlzcGF0Y2hNZXNzYWdlRXZlbldo
ZW5XYWl0aW5nRm9yU3luY1JlcGx5KTsKK30KIAotICAgIHJldHVybiByZXN1bHQ7Cit2b2lkIE5l
dHdvcmtSZXNvdXJjZUxvYWRlcjo6Y29udGludWVDYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVj
dGlvblNwYWNlKGJvb2wgcmVzdWx0KQoreworICAgIG1faGFuZGxlLT5jb250aW51ZUNhbkF1dGhl
bnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UocmVzdWx0KTsKIH0KKwogI2VuZGlmCiAKICNp
ZiBVU0UoTkVUV09SS19DRkRBVEFfQVJSQVlfQ0FMTEJBQ0spCkBAIC0zNjEsNyArMzY1LDcgQEAg
Ym9vbCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnN1cHBvcnRzRGF0YQogICAgIHJldHVybiBmYWxz
ZTsKIH0KIAotdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhQXJyYXko
V2ViQ29yZTo6UmVzb3VyY2VIYW5kbGUqLCBDRkFycmF5UmVmKQordm9pZCBOZXR3b3JrUmVzb3Vy
Y2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhQXJyYXkoUmVzb3VyY2VIYW5kbGUqLCBDRkFycmF5UmVm
KQogewogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIG5vdEltcGxlbWVudGVkKCk7CkBA
IC0zNjksMjEgKzM3MywxMyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2
ZURhCiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKE1BQykKLSNpZiBVU0UoQ0ZORVRXT1JLKQotQ0ZD
YWNoZWRVUkxSZXNwb25zZVJlZiBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OndpbGxDYWNoZVJlc3Bv
bnNlKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlKiwgQ0ZDYWNoZWRVUkxSZXNwb25zZVJlZiByZXNw
b25zZSkKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiByZXNwb25zZTsKLX0K
LSNlbHNlCi1OU0NhY2hlZFVSTFJlc3BvbnNlKiBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OndpbGxD
YWNoZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlKiwgTlNDYWNoZWRVUkxSZXNwb25z
ZSogcmVzcG9uc2UpCit2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6d2lsbENhY2hlUmVzcG9u
c2VBc3luYyhSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBOU0NhY2hlZFVSTFJlc3BvbnNlKiByZXNw
b25zZSkKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiByZXNwb25zZTsKKyAg
ICBoYW5kbGUtPmNvbnRpbnVlV2lsbENhY2hlUmVzcG9uc2UocmVzcG9uc2UpOwogfQotI2VuZGlm
CiAKLXZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjp3aWxsU3RvcEJ1ZmZlcmluZ0RhdGEoV2Vi
Q29yZTo6UmVzb3VyY2VIYW5kbGUqLCBjb25zdCBjaGFyKiwgaW50KQordm9pZCBOZXR3b3JrUmVz
b3VyY2VMb2FkZXI6OndpbGxTdG9wQnVmZmVyaW5nRGF0YShSZXNvdXJjZUhhbmRsZSosIGNvbnN0
IGNoYXIqLCBpbnQpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KSW5kZXg6IFNvdXJjZS9X
ZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5o
CShyZXZpc2lvbiAxNDY3ODUpCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUmVzb3VyY2VMb2FkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNjMsMjIgKzYzLDIyIEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgY29ubmVjdGlvblRvV2ViUHJvY2Vzc0RpZENsb3NlKCkg
T1ZFUlJJREU7CiAgICAgICAgIAogICAgIC8vIFJlc291cmNlSGFuZGxlQ2xpZW50IG1ldGhvZHMK
LSAgICB2aXJ0dWFsIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlSGFuZGxl
KiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNw
b25zZSYgLypyZWRpcmVjdFJlc3BvbnNlKi8pIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCBk
aWRTZW5kRGF0YShXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZSosIHVuc2lnbmVkIGxvbmcgbG9uZyAv
KmJ5dGVzU2VudCovLCB1bnNpZ25lZCBsb25nIGxvbmcgLyp0b3RhbEJ5dGVzVG9CZVNlbnQqLykg
T1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHdpbGxTZW5kUmVxdWVzdEFzeW5jKFdlYkNvcmU6
OlJlc291cmNlSGFuZGxlKiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSkgT1ZFUlJJREU7Cisg
ICAgdmlydHVhbCB2b2lkIGRpZFNlbmREYXRhKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlKiwgdW5z
aWduZWQgbG9uZyBsb25nIGJ5dGVzU2VudCwgdW5zaWduZWQgbG9uZyBsb25nIHRvdGFsQnl0ZXNU
b0JlU2VudCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShX
ZWJDb3JlOjpSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2Um
KSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoV2ViQ29yZTo6UmVz
b3VyY2VIYW5kbGUqLCBjb25zdCBjaGFyKiwgaW50LCBpbnQgLyplbmNvZGVkRGF0YUxlbmd0aCov
KSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoV2ViQ29yZTo6UmVz
b3VyY2VIYW5kbGUqLCBjb25zdCBjaGFyKiwgaW50LCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpIE9W
RVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlQ2FjaGVkTWV0YWRhdGEoV2ViQ29y
ZTo6UmVzb3VyY2VIYW5kbGUqLCBjb25zdCBjaGFyKiwgaW50KSBPVkVSUklERTsKLSAgICB2aXJ0
dWFsIHZvaWQgZGlkRmluaXNoTG9hZGluZyhXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZSosIGRvdWJs
ZSAvKmZpbmlzaFRpbWUqLykgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExv
YWRpbmcoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGUqLCBkb3VibGUgZmluaXNoVGltZSkgT1ZFUlJJ
REU7CiAgICAgdmlydHVhbCB2b2lkIGRpZEZhaWwoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGUqLCBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lk
IHdhc0Jsb2NrZWQoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGUqKSBPVkVSUklERTsKICAgICB2aXJ0
dWFsIHZvaWQgY2Fubm90U2hvd1VSTChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZSopIE9WRVJSSURF
OwotICAgIHZpcnR1YWwgYm9vbCBzaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZShXZWJDb3JlOjpS
ZXNvdXJjZUhhbmRsZSopIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBzaG91bGRVc2VDcmVk
ZW50aWFsU3RvcmFnZUFzeW5jKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlKikgT1ZFUlJJREU7CiAg
ICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShXZWJDb3Jl
OjpSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
JikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGRpZENhbmNlbEF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlKiwgY29uc3QgV2ViQ29yZTo6QXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UmKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIGJvb2wgdXNlc0FzeW5jQ2Fs
bGJhY2tzKCkgT1ZFUlJJREUgeyByZXR1cm4gdHJ1ZTsgfQogCiAjaWYgVVNFKFBST1RFQ1RJT05f
U1BBQ0VfQVVUSF9DQUxMQkFDSykKLSAgICB2aXJ0dWFsIGJvb2wgY2FuQXV0aGVudGljYXRlQWdh
aW5zdFByb3RlY3Rpb25TcGFjZShXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFdlYkNv
cmU6OlByb3RlY3Rpb25TcGFjZSYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBjYW5BdXRo
ZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlQXN5bmMoV2ViQ29yZTo6UmVzb3VyY2VIYW5k
bGUqLCBjb25zdCBXZWJDb3JlOjpQcm90ZWN0aW9uU3BhY2UmKTsKICNlbmRpZgogCiAjaWYgVVNF
KE5FVFdPUktfQ0ZEQVRBX0FSUkFZX0NBTExCQUNLKQpAQCAtODgsMTcgKzg4LDIxIEBAIHB1Ymxp
YzoKIAogI2lmIFBMQVRGT1JNKE1BQykKICAgICBzdGF0aWMgc2l6ZV90IGZpbGVCYWNrZWRSZXNv
dXJjZU1pbmltdW1TaXplKCk7Ci0jaWYgVVNFKENGTkVUV09SSykKLSAgICB2aXJ0dWFsIENGQ2Fj
aGVkVVJMUmVzcG9uc2VSZWYgd2lsbENhY2hlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VIYW5k
bGUqLCBDRkNhY2hlZFVSTFJlc3BvbnNlUmVmKSBPVkVSUklERTsKLSNlbHNlCi0gICAgdmlydHVh
bCBOU0NhY2hlZFVSTFJlc3BvbnNlKiB3aWxsQ2FjaGVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJj
ZUhhbmRsZSosIE5TQ2FjaGVkVVJMUmVzcG9uc2UqKSBPVkVSUklERTsKLSNlbmRpZgorICAgIHZp
cnR1YWwgdm9pZCB3aWxsQ2FjaGVSZXNwb25zZUFzeW5jKFdlYkNvcmU6OlJlc291cmNlSGFuZGxl
KiwgTlNDYWNoZWRVUkxSZXNwb25zZSAqKTsKICAgICB2aXJ0dWFsIHZvaWQgd2lsbFN0b3BCdWZm
ZXJpbmdEYXRhKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlKiwgY29uc3QgY2hhciosIGludCkgT1ZF
UlJJREU7CiAjZW5kaWYgLy8gUExBVEZPUk0oTUFDKQogCisgICAgLy8gTWVzc2FnZSBoYW5kbGVy
cy4KKyAgICB2b2lkIGRpZFJlY2VpdmVOZXR3b3JrUmVzb3VyY2VMb2FkZXJNZXNzYWdlKENvcmVJ
UEM6OkNvbm5lY3Rpb24qLCBDb3JlSVBDOjpNZXNzYWdlRGVjb2RlciYpOworCiBwcml2YXRlOgog
ICAgIE5ldHdvcmtSZXNvdXJjZUxvYWRlcihjb25zdCBOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1l
dGVycyYsIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKik7CiAKKyAgICB2b2lkIGNvbnRp
bnVlV2lsbFNlbmRSZXF1ZXN0KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgbmV3UmVx
dWVzdCk7CisjaWYgVVNFKFBST1RFQ1RJT05fU1BBQ0VfQVVUSF9DQUxMQkFDSykKKyAgICB2b2lk
IGNvbnRpbnVlQ2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZShib29sKTsKKyNl
bmRpZgorCiAgICAgdm9pZCBzY2hlZHVsZUNsZWFudXBPbk1haW5UaHJlYWQoKTsKICAgICBzdGF0
aWMgdm9pZCBwZXJmb3JtQ2xlYW51cHModm9pZCopOwogICAgIHZvaWQgY2xlYW51cCgpOwpAQCAt
MTE0LDYgKzExOCw5IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPFJlbW90ZU5ldHdvcmtpbmdDb250
ZXh0PiBtX25ldHdvcmtpbmdDb250ZXh0OwogICAgIFJlZlB0cjxXZWJDb3JlOjpSZXNvdXJjZUhh
bmRsZT4gbV9oYW5kbGU7CiAKKyAgICAvLyBLZWVwIHRoZSBzdWdnZXN0ZWQgcmVxdWVzdCBhcm91
bmQgd2hpbGUgYXN5bmNocm9ub3VzbHkgYXNraW5nIHRvIHVwZGF0ZSBpdCwgYmVjYXVzZSBzb21l
IHBhcnRzIG9mIHRoZSByZXF1ZXN0IGRvbid0IHN1cnZpdmUgSVBDLgorICAgIFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCBtX3N1Z2dlc3RlZFJlcXVlc3RGb3JXaWxsU2VuZFJlcXVlc3Q7CisKICAg
ICB1aW50NjRfdCBtX2J5dGVzUmVjZWl2ZWQ7CiAKICNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlO
X1JFUVVJUkVEID49IDEwOTAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05l
dHdvcmtSZXNvdXJjZUxvYWRlci5tZXNzYWdlcy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIubWVzc2FnZXMuaW4JKHJl
dmlzaW9uIDApCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3Vy
Y2VMb2FkZXIubWVzc2FnZXMuaW4JKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjcgQEAKKyMgQ29w
eXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiAgUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIwor
IyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnIEFORAorIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorIyBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFCisjIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisjIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyMgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IKKyMgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyMgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyMgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworbWVzc2FnZXMgLT4gTmV0d29ya1Jl
c291cmNlTG9hZGVyIExlZ2FjeVJlY2VpdmVyIHsKKworICAgIENvbnRpbnVlV2lsbFNlbmRSZXF1
ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0KQorICAgIENvbnRpbnVlQ2FuQXV0
aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZShib29sIGNhbkF1dGhlbnRpY2F0ZSkKK30K
ClByb3BlcnR5IGNoYW5nZXMgb246IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdv
cmtSZXNvdXJjZUxvYWRlci5tZXNzYWdlcy5pbgpfX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkFkZGVkOiBzdm46bWltZS10
eXBlCiAgICsgdGV4dC9wbGFpbgpBZGRlZDogc3ZuOmVvbC1zdHlsZQogICArIExGCgpJbmRleDog
U291cmNlL1dlYktpdDIvU2hhcmVkL0F1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0aW9uTWFuYWdl
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL0F1dGhlbnRpY2F0aW9u
L0F1dGhlbnRpY2F0aW9uTWFuYWdlci5jcHAJKHJldmlzaW9uIDE0Njc4NSkKKysrIFNvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbk1hbmFnZXIuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC00OCw4ICs0OCwxMCBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogc3Rh
dGljIHVpbnQ2NF90IGdlbmVyYXRlQXV0aGVudGljYXRpb25DaGFsbGVuZ2VJRCgpCiB7CisgICAg
QVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKwogICAgIHN0YXRpYyBpbnQ2NF90IHVuaXF1ZUF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlSUQ7Ci0gICAgcmV0dXJuIGF0b21pY0luY3JlbWVudCgmdW5pcXVl
QXV0aGVudGljYXRpb25DaGFsbGVuZ2VJRCk7CisgICAgcmV0dXJuICsrdW5pcXVlQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2VJRDsKIH0KIAogY29uc3QgY2hhciogQXV0aGVudGljYXRpb25NYW5hZ2Vy
OjpzdXBwbGVtZW50TmFtZSgpCkBAIC02NSw2ICs2Nyw4IEBAIEF1dGhlbnRpY2F0aW9uTWFuYWdl
cjo6QXV0aGVudGljYXRpb25NYW4KIAogdWludDY0X3QgQXV0aGVudGljYXRpb25NYW5hZ2VyOjpl
c3RhYmxpc2hJZGVudGlmaWVyRm9yQ2hhbGxlbmdlKGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlJiBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSkKIHsKKyAgICBBU1NFUlQoaXNN
YWluVGhyZWFkKCkpOworCiAgICAgdWludDY0X3QgY2hhbGxlbmdlSUQgPSBnZW5lcmF0ZUF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlSUQoKTsKICAgICBtX2NoYWxsZW5nZXMuc2V0KGNoYWxsZW5nZUlE
LCBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSk7CiAgICAgcmV0dXJuIGNoYWxsZW5nZUlEOwpAQCAt
MTAzLDYgKzEwNyw4IEBAIGJvb2wgQXV0aGVudGljYXRpb25NYW5hZ2VyOjp0cnlVc2VQbGF0Zm8K
IAogdm9pZCBBdXRoZW50aWNhdGlvbk1hbmFnZXI6OnVzZUNyZWRlbnRpYWxGb3JDaGFsbGVuZ2Uo
dWludDY0X3QgY2hhbGxlbmdlSUQsIGNvbnN0IENyZWRlbnRpYWwmIGNyZWRlbnRpYWwsIGNvbnN0
IFBsYXRmb3JtQ2VydGlmaWNhdGVJbmZvJiBjZXJ0aWZpY2F0ZUluZm8pCiB7CisgICAgQVNTRVJU
KGlzTWFpblRocmVhZCgpKTsKKwogICAgIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIGNoYWxsZW5n
ZSA9IG1fY2hhbGxlbmdlcy50YWtlKGNoYWxsZW5nZUlEKTsKICAgICBBU1NFUlQoIWNoYWxsZW5n
ZS5pc051bGwoKSk7CiAgICAgCkBAIC0xMjEsNiArMTI3LDggQEAgdm9pZCBBdXRoZW50aWNhdGlv
bk1hbmFnZXI6OnVzZUNyZWRlbnRpYQogCiB2b2lkIEF1dGhlbnRpY2F0aW9uTWFuYWdlcjo6Y29u
dGludWVXaXRob3V0Q3JlZGVudGlhbEZvckNoYWxsZW5nZSh1aW50NjRfdCBjaGFsbGVuZ2VJRCkK
IHsKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworCiAgICAgQXV0aGVudGljYXRpb25DaGFs
bGVuZ2UgY2hhbGxlbmdlID0gbV9jaGFsbGVuZ2VzLnRha2UoY2hhbGxlbmdlSUQpOwogICAgIEFT
U0VSVCghY2hhbGxlbmdlLmlzTnVsbCgpKTsKICAgICBBdXRoZW50aWNhdGlvbkNsaWVudCogY29y
ZUNsaWVudCA9IGNoYWxsZW5nZS5hdXRoZW50aWNhdGlvbkNsaWVudCgpOwpAQCAtMTM1LDYgKzE0
Myw4IEBAIHZvaWQgQXV0aGVudGljYXRpb25NYW5hZ2VyOjpjb250aW51ZVdpdGgKIAogdm9pZCBB
dXRoZW50aWNhdGlvbk1hbmFnZXI6OmNhbmNlbENoYWxsZW5nZSh1aW50NjRfdCBjaGFsbGVuZ2VJ
RCkKIHsKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworCiAgICAgQXV0aGVudGljYXRpb25D
aGFsbGVuZ2UgY2hhbGxlbmdlID0gbV9jaGFsbGVuZ2VzLnRha2UoY2hhbGxlbmdlSUQpOwogICAg
IEFTU0VSVCghY2hhbGxlbmdlLmlzTnVsbCgpKTsKICAgICBBdXRoZW50aWNhdGlvbkNsaWVudCog
Y29yZUNsaWVudCA9IGNoYWxsZW5nZS5hdXRoZW50aWNhdGlvbkNsaWVudCgpOwpJbmRleDogU291
cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2
aXNpb24gMTQ2Nzg1KQorKysgU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xMDk4LDYgKzEwOTgsOCBAQAogCQlFMTRBOTU0
QTE2RTAxNkE0MDA2OERFODIgLyogTmV0d29ya1Byb2Nlc3NQbGF0Zm9ybVN0cmF0ZWdpZXMuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxNEE5NTQ4MTZF
MDE2QTQwMDY4REU4MiAvKiBOZXR3b3JrUHJvY2Vzc1BsYXRmb3JtU3RyYXRlZ2llcy5oICovOyB9
OwogCQlFMTUxM0M2NjE2NkVBQkIyMDAxNDlGQ0IgLyogQ2hpbGRQcm9jZXNzUHJveHkuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTE1MTNDNjQxNjZF
QUJCMjAwMTQ5RkNCIC8qIENoaWxkUHJvY2Vzc1Byb3h5LmNwcCAqLzsgfTsKIAkJRTE1MTNDNjcx
NjZFQUJCMjAwMTQ5RkNCIC8qIENoaWxkUHJvY2Vzc1Byb3h5LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTUxM0M2NTE2NkVBQkIyMDAxNDlGQ0IgLyog
Q2hpbGRQcm9jZXNzUHJveHkuaCAqLzsgfTsKKwkJRTE1MjU1MUExNzAxMTgxOTAwM0Q3QURCIC8q
IE5ldHdvcmtSZXNvdXJjZUxvYWRlck1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTUyNTUxODE3MDExODE5MDAzRDdBREIg
LyogTmV0d29ya1Jlc291cmNlTG9hZGVyTWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsKKwkJRTE1
MjU1MUIxNzAxMTgxOTAwM0Q3QURCIC8qIE5ldHdvcmtSZXNvdXJjZUxvYWRlck1lc3NhZ2VzLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTUyNTUxOTE3
MDExODE5MDAzRDdBREIgLyogTmV0d29ya1Jlc291cmNlTG9hZGVyTWVzc2FnZXMuaCAqLzsgfTsK
IAkJRTE3MDg3NkIxNkQ2Q0E2OTAwRjk5MjI2IC8qIEJsb2JSZWdpc3RyeVByb3h5LmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxNzA4NzY5MTZENkNB
NjkwMEY5OTIyNiAvKiBCbG9iUmVnaXN0cnlQcm94eS5jcHAgKi87IH07CiAJCUUxNzA4NzZDMTZE
NkNBNjkwMEY5OTIyNiAvKiBCbG9iUmVnaXN0cnlQcm94eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTE3MDg3NkExNkQ2Q0E2OTAwRjk5MjI2IC8qIEJs
b2JSZWdpc3RyeVByb3h5LmggKi87IH07CiAJCUUxNzA4NzcwMTZENkNGRTUwMEY5OTIyNiAvKiBC
bG9iUmVnaXN0cmF0aW9uRGF0YS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBFMTcwODc2RTE2RDZDRkU0MDBGOTkyMjYgLyogQmxvYlJlZ2lzdHJhdGlv
bkRhdGEuY3BwICovOyB9OwpAQCAtMjU1MCw2ICsyNTUyLDkgQEAKIAkJRTE0QTk1NDgxNkUwMTZB
NDAwNjhERTgyIC8qIE5ldHdvcmtQcm9jZXNzUGxhdGZvcm1TdHJhdGVnaWVzLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IE5ldHdvcmtQcm9jZXNzUGxhdGZvcm1TdHJhdGVnaWVz
Lmg7IHBhdGggPSBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzc1BsYXRmb3JtU3RyYXRlZ2ll
cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMTUxM0M2NDE2NkVBQkIyMDAxNDlG
Q0IgLyogQ2hpbGRQcm9jZXNzUHJveHkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gQ2hpbGRQcm9jZXNzUHJveHkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlFMTUxM0M2NTE2NkVBQkIyMDAxNDlGQ0IgLyogQ2hpbGRQcm9jZXNzUHJveHkuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2hpbGRQcm9jZXNzUHJveHkuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTE1MjU1MTcxNzAxMDlGQjAwM0Q3QURCIC8qIE5ldHdv
cmtSZXNvdXJjZUxvYWRlci5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IG5hbWUgPSBOZXR3b3JrUmVzb3VyY2VMb2FkZXIu
bWVzc2FnZXMuaW47IHBhdGggPSBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIu
bWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUxNTI1NTE4MTcwMTE4
MTkwMDNEN0FEQiAvKiBOZXR3b3JrUmVzb3VyY2VMb2FkZXJNZXNzYWdlUmVjZWl2ZXIuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTmV0d29ya1Jlc291cmNlTG9hZGVy
TWVzc2FnZVJlY2VpdmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTE1MjU1
MTkxNzAxMTgxOTAwM0Q3QURCIC8qIE5ldHdvcmtSZXNvdXJjZUxvYWRlck1lc3NhZ2VzLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5ldHdvcmtSZXNvdXJjZUxvYWRlck1lc3Nh
Z2VzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUxNzA4NzY5MTZENkNBNjkwMEY5
OTIyNiAvKiBCbG9iUmVnaXN0cnlQcm94eS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IG5hbWUgPSBCbG9iUmVnaXN0cnlQcm94eS5jcHA7IHBhdGggPSBXZWJQcm9jZXNzL0ZpbGVB
UEkvQmxvYlJlZ2lzdHJ5UHJveHkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlF
MTcwODc2QTE2RDZDQTY5MDBGOTkyMjYgLyogQmxvYlJlZ2lzdHJ5UHJveHkuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQmxvYlJlZ2lzdHJ5UHJveHkuaDsgcGF0aCA9IFdlYlBy
b2Nlc3MvRmlsZUFQSS9CbG9iUmVnaXN0cnlQcm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlFMTcwODc2RTE2RDZDRkU0MDBGOTkyMjYgLyogQmxvYlJlZ2lzdHJhdGlvbkRhdGEu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gQmxvYlJlZ2lzdHJhdGlv
bkRhdGEuY3BwOyBwYXRoID0gRmlsZUFQSS9CbG9iUmVnaXN0cmF0aW9uRGF0YS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0zNDk4LDYgKzM1MDMsNyBAQAogCQkJCTUxQThBNjE3
MTYyN0Y1QkIwMDBEOTBFOSAvKiBOZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbiAqLywKIAkJCQk1
MUZEMThCMzE2NTFGQkFEMDBEQkUxQ0UgLyogTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcCAqLywK
IAkJCQk1MUZEMThCNDE2NTFGQkFEMDBEQkUxQ0UgLyogTmV0d29ya1Jlc291cmNlTG9hZGVyLmgg
Ki8sCisJCQkJRTE1MjU1MTcxNzAxMDlGQjAwM0Q3QURCIC8qIE5ldHdvcmtSZXNvdXJjZUxvYWRl
ci5tZXNzYWdlcy5pbiAqLywKIAkJCQk1MTgyOURBMzE2MzdDNzBDMDAwOTUzRDYgLyogTmV0d29y
a1Jlc291cmNlTG9hZFNjaGVkdWxlci5jcHAgKi8sCiAJCQkJNTE4MjlEQTQxNjM3QzcwQzAwMDk1
M0Q2IC8qIE5ldHdvcmtSZXNvdXJjZUxvYWRTY2hlZHVsZXIuaCAqLywKIAkJCQk1MTlCNEZGMjE2
QTlFQTk3MDA2Njg3NEQgLyogU2NoZWR1bGFibGVMb2FkZXIuY3BwICovLApAQCAtNDg1OCw2ICs0
ODY0LDggQEAKIAkJCQk1MUFDQzkzNTE2MjgwNjQ4MDAzNDI1NTAgLyogTmV0d29ya1Byb2Nlc3NN
ZXNzYWdlcy5oICovLAogCQkJCTUxM0ExNjNBMTYzMDg4RjYwMDVEN0QyMiAvKiBOZXR3b3JrUHJv
Y2Vzc1Byb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCAqLywKIAkJCQk1MTNBMTYzQjE2MzA4OEY2MDA1
RDdEMjIgLyogTmV0d29ya1Byb2Nlc3NQcm94eU1lc3NhZ2VzLmggKi8sCisJCQkJRTE1MjU1MTgx
NzAxMTgxOTAwM0Q3QURCIC8qIE5ldHdvcmtSZXNvdXJjZUxvYWRlck1lc3NhZ2VSZWNlaXZlci5j
cHAgKi8sCisJCQkJRTE1MjU1MTkxNzAxMTgxOTAwM0Q3QURCIC8qIE5ldHdvcmtSZXNvdXJjZUxv
YWRlck1lc3NhZ2VzLmggKi8sCiAJCQkJMUEyRDg0MzcxMjdGNjVENTAwMUVCOTYyIC8qIE5QT2Jq
ZWN0TWVzc2FnZVJlY2VpdmVyTWVzc2FnZVJlY2VpdmVyLmNwcCAqLywKIAkJCQkxQTJEODQzODEy
N0Y2NUQ1MDAxRUI5NjIgLyogTlBPYmplY3RNZXNzYWdlUmVjZWl2ZXJNZXNzYWdlcy5oICovLAog
CQkJCUJDQUYzNUUwMTZDQTI0OTMwMEQ0RTlGQyAvKiBPZmZsaW5lU3RvcmFnZVByb2Nlc3NNZXNz
YWdlUmVjZWl2ZXIuY3BwICovLApAQCAtNTYyOSw2ICs1NjM3LDcgQEAKIAkJCQlFMTcwODc3MTE2
RDZDRkU1MDBGOTkyMjYgLyogQmxvYlJlZ2lzdHJhdGlvbkRhdGEuaCBpbiBIZWFkZXJzICovLAog
CQkJCUUxNEE5NTRBMTZFMDE2QTQwMDY4REU4MiAvKiBOZXR3b3JrUHJvY2Vzc1BsYXRmb3JtU3Ry
YXRlZ2llcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTE3OThDN0ExNkU2ODE4ODAwMjQwMTM5IC8q
IE5ldHdvcmtCbG9iUmVnaXN0cnkuaCBpbiBIZWFkZXJzICovLAorCQkJCUUxNTI1NTFCMTcwMTE4
MTkwMDNEN0FEQiAvKiBOZXR3b3JrUmVzb3VyY2VMb2FkZXJNZXNzYWdlcy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJ
CX07CkBAIC02ODM2LDYgKzY4NDUsNyBAQAogCQkJCUUxNzA4NzcwMTZENkNGRTUwMEY5OTIyNiAv
KiBCbG9iUmVnaXN0cmF0aW9uRGF0YS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFMTRBOTU0OTE2
RTAxNkE0MDA2OERFODIgLyogTmV0d29ya1Byb2Nlc3NQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJRTE3OThDNzkxNkU2ODE4ODAwMjQwMTM5IC8qIE5ldHdvcmtCbG9i
UmVnaXN0cnkuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRTE1MjU1MUExNzAxMTgxOTAwM0Q3QURC
IC8qIE5ldHdvcmtSZXNvdXJjZUxvYWRlck1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAq
LywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJ
fTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vz
c0Nvbm5lY3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
TmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCShyZXZpc2lvbiAxNDY3ODUpCisr
KyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0
aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjYsMTMgKzY2LDYgQEAgdm9pZCBOZXR3b3JrUHJv
Y2Vzc0Nvbm5lY3Rpb246OmRpZFJlY2VpdgogCiB2b2lkIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlv
bjo6ZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qIGNvbm5lY3Rpb24s
IENvcmVJUEM6Ok1lc3NhZ2VEZWNvZGVyJiBkZWNvZGVyLCBPd25QdHI8Q29yZUlQQzo6TWVzc2Fn
ZUVuY29kZXI+JiByZXBseUVuY29kZXIpCiB7Ci0gICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2Vp
dmVyTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUxvYWRlcjo6bWVzc2FnZVJlY2VpdmVy
TmFtZSgpKSB7Ci0gICAgICAgIGlmIChXZWJSZXNvdXJjZUxvYWRlciogd2ViUmVzb3VyY2VMb2Fk
ZXIgPSBXZWJQcm9jZXNzOjpzaGFyZWQoKS53ZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIoKS53ZWJS
ZXNvdXJjZUxvYWRlckZvcklkZW50aWZpZXIoZGVjb2Rlci5kZXN0aW5hdGlvbklEKCkpKQotICAg
ICAgICAgICAgd2ViUmVzb3VyY2VMb2FkZXItPmRpZFJlY2VpdmVTeW5jV2ViUmVzb3VyY2VMb2Fk
ZXJNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIsIHJlcGx5RW5jb2Rlcik7Ci0gICAgICAgIAot
ICAgICAgICByZXR1cm47Ci0gICAgfQotCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAK
SW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRl
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL1dl
YlJlc291cmNlTG9hZGVyLmNwcAkocmV2aXNpb24gMTQ2Nzg1KQorKysgU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyLCAyMDEzIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
MzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJMb2dn
aW5nLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAi
TmV0d29ya1Jlc291cmNlTG9hZGVyTWVzc2FnZXMuaCIKICNpbmNsdWRlICJQbGF0Zm9ybUNlcnRp
ZmljYXRlSW5mby5oIgogI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgogI2luY2x1
ZGUgIldlYkVycm9ycy5oIgpAQCAtNzIsMTIgKzczLDEzIEBAIHZvaWQgV2ViUmVzb3VyY2VMb2Fk
ZXI6OmNhbmNlbFJlc291cmNlTG8KICAgICBtX2NvcmVMb2FkZXItPmNhbmNlbCgpOwogfQogCi12
b2lkIFdlYlJlc291cmNlTG9hZGVyOjp3aWxsU2VuZFJlcXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1
ZXN0JiBwcm9wb3NlZFJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVz
cG9uc2UsIFJlc291cmNlUmVxdWVzdCYgbmV3UmVxdWVzdCkKK3ZvaWQgV2ViUmVzb3VyY2VMb2Fk
ZXI6OndpbGxTZW5kUmVxdWVzdChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHByb3Bvc2VkUmVxdWVz
dCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSkKIHsKICAgICBMT0co
TmV0d29yaywgIihXZWJQcm9jZXNzKSBXZWJSZXNvdXJjZUxvYWRlcjo6d2lsbFNlbmRSZXF1ZXN0
IHRvICclcyciLCBwcm9wb3NlZFJlcXVlc3QudXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7
CiAgICAgCi0gICAgbmV3UmVxdWVzdCA9IHByb3Bvc2VkUmVxdWVzdDsKKyAgICBSZXNvdXJjZVJl
cXVlc3QgbmV3UmVxdWVzdCA9IHByb3Bvc2VkUmVxdWVzdDsKICAgICBtX2NvcmVMb2FkZXItPndp
bGxTZW5kUmVxdWVzdChuZXdSZXF1ZXN0LCByZWRpcmVjdFJlc3BvbnNlKTsKKyAgICBzZW5kKE1l
c3NhZ2VzOjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OkNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0KG5l
d1JlcXVlc3QpKTsKIH0KIAogdm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3Bv
bnNlV2l0aENlcnRpZmljYXRlSW5mbyhjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwg
Y29uc3QgUGxhdGZvcm1DZXJ0aWZpY2F0ZUluZm8mIGNlcnRpZmljYXRlSW5mbykKQEAgLTEyNSw5
ICsxMjcsMTAgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc291cgogICAg
IG1fY29yZUxvYWRlci0+ZGlkRmluaXNoTG9hZGluZyhmaW5pc2hUaW1lKTsKIH0KIAotdm9pZCBX
ZWJSZXNvdXJjZUxvYWRlcjo6Y2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZShj
b25zdCBQcm90ZWN0aW9uU3BhY2UmIHByb3RlY3Rpb25TcGFjZSwgYm9vbCYgcmVzdWx0KQordm9p
ZCBXZWJSZXNvdXJjZUxvYWRlcjo6Y2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFj
ZShjb25zdCBQcm90ZWN0aW9uU3BhY2UmIHByb3RlY3Rpb25TcGFjZSkKIHsKLSAgICByZXN1bHQg
PSBtX2NvcmVMb2FkZXItPmNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UocHJv
dGVjdGlvblNwYWNlKTsKKyAgICBib29sIHJlc3VsdCA9IG1fY29yZUxvYWRlci0+Y2FuQXV0aGVu
dGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZShwcm90ZWN0aW9uU3BhY2UpOworICAgIHNlbmQo
TWVzc2FnZXM6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6Q29udGludWVDYW5BdXRoZW50aWNhdGVB
Z2FpbnN0UHJvdGVjdGlvblNwYWNlKHJlc3VsdCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxv
YWRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9X
ZWJSZXNvdXJjZUxvYWRlci5oCShyZXZpc2lvbiAxNDY3ODUpCisrKyBTb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuaAkod29ya2luZyBjb3B5KQpAQCAt
NjQsNyArNjQsNiBAQCBwdWJsaWM6CiAgICAgdWludDY0X3QgZGVzdGluYXRpb25JRCgpIGNvbnN0
OwogCiAgICAgdm9pZCBkaWRSZWNlaXZlV2ViUmVzb3VyY2VMb2FkZXJNZXNzYWdlKENvcmVJUEM6
OkNvbm5lY3Rpb24qLCBDb3JlSVBDOjpNZXNzYWdlRGVjb2RlciYpOwotICAgIHZvaWQgZGlkUmVj
ZWl2ZVN5bmNXZWJSZXNvdXJjZUxvYWRlck1lc3NhZ2UoQ29yZUlQQzo6Q29ubmVjdGlvbiosIENv
cmVJUEM6Ok1lc3NhZ2VEZWNvZGVyJiwgT3duUHRyPENvcmVJUEM6Ok1lc3NhZ2VFbmNvZGVyPiYp
OwogCiAgICAgV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXIqIHJlc291cmNlTG9hZGVyKCkgY29uc3Qg
eyByZXR1cm4gbV9jb3JlTG9hZGVyLmdldCgpOyB9CiAKQEAgLTczLDE0ICs3MiwxNCBAQCBwcml2
YXRlOgogCiAgICAgdm9pZCBjYW5jZWxSZXNvdXJjZUxvYWRlcigpOwogCi0gICAgdm9pZCB3aWxs
U2VuZFJlcXVlc3QoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSwgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0JiBuZXdSZXF1ZXN0KTsKKyAgICB2b2lkIHdpbGxTZW5kUmVxdWVzdChjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiBy
ZWRpcmVjdFJlc3BvbnNlKTsKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZVdpdGhDZXJ0aWZp
Y2F0ZUluZm8oY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IFBsYXRmb3Jt
Q2VydGlmaWNhdGVJbmZvJik7CiAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBDb3JlSVBD
OjpEYXRhUmVmZXJlbmNlJiwgaW50NjRfdCBlbmNvZGVkRGF0YUxlbmd0aCk7CiAgICAgdm9pZCBk
aWRGaW5pc2hSZXNvdXJjZUxvYWQoZG91YmxlIGZpbmlzaFRpbWUpOwogICAgIHZvaWQgZGlkRmFp
bFJlc291cmNlTG9hZChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7CiAgICAgdm9pZCBk
aWRSZWNlaXZlUmVzb3VyY2UoY29uc3QgU2hhcmVhYmxlUmVzb3VyY2U6OkhhbmRsZSYsIGRvdWJs
ZSBmaW5pc2hUaW1lKTsKIAotICAgIHZvaWQgY2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rp
b25TcGFjZShjb25zdCBXZWJDb3JlOjpQcm90ZWN0aW9uU3BhY2UmLCBib29sJiByZXN1bHQpOwor
ICAgIHZvaWQgY2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZShjb25zdCBXZWJD
b3JlOjpQcm90ZWN0aW9uU3BhY2UmKTsKIAogICAgIFJlZlB0cjxXZWJDb3JlOjpSZXNvdXJjZUxv
YWRlcj4gbV9jb3JlTG9hZGVyOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
TmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5tZXNzYWdlcy5pbgo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIubWVzc2FnZXMu
aW4JKHJldmlzaW9uIDE0Njc4NSkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29y
ay9XZWJSZXNvdXJjZUxvYWRlci5tZXNzYWdlcy5pbgkod29ya2luZyBjb3B5KQpAQCAtMjUsMTMg
KzI1LDEzIEBAIG1lc3NhZ2VzIC0+IFdlYlJlc291cmNlTG9hZGVyIExlZ2FjeVJlY2UKICAgICBD
YW5jZWxSZXNvdXJjZUxvYWRlcigpCiAKICAgICAvLyBGSVhNRSAoTmV0d29ya1Byb2Nlc3MpOiBX
ZSdsbCBuZWVkIG11Y2ggbW9yZSBncmFudWxhcml0eSBmb3IgcmVzcG9uc2UgbWVzc2FnZXMuCi0g
ICAgV2lsbFNlbmRSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCBXZWJD
b3JlOjpSZXNvdXJjZVJlc3BvbnNlIHJlZGlyZWN0UmVzcG9uc2UpIC0+IChXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QgbmV3UmVxdWVzdCkKKyAgICBXaWxsU2VuZFJlcXVlc3QoV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0IHJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgcmVkaXJlY3RS
ZXNwb25zZSkKICAgICBEaWRSZWNlaXZlUmVzcG9uc2VXaXRoQ2VydGlmaWNhdGVJbmZvKFdlYkNv
cmU6OlJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2UsIFdlYktpdDo6UGxhdGZvcm1DZXJ0aWZpY2F0
ZUluZm8gY2VydGlmaWNhdGVJbmZvKQogICAgIERpZFJlY2VpdmVEYXRhKENvcmVJUEM6OkRhdGFS
ZWZlcmVuY2UgZGF0YSwgaW50NjRfdCBlbmNvZGVkRGF0YUxlbmd0aCkKICAgICBEaWRGaW5pc2hS
ZXNvdXJjZUxvYWQoZG91YmxlIGZpbmlzaFRpbWUpCiAgICAgRGlkRmFpbFJlc291cmNlTG9hZChX
ZWJDb3JlOjpSZXNvdXJjZUVycm9yIGVycm9yKQogICAgIAotICAgIENhbkF1dGhlbnRpY2F0ZUFn
YWluc3RQcm90ZWN0aW9uU3BhY2UoV2ViQ29yZTo6UHJvdGVjdGlvblNwYWNlIHByb3RlY3Rpb25T
cGFjZSkgLT4gKGJvb2wgcmVzcG9uc2UpCisgICAgQ2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3Rl
Y3Rpb25TcGFjZShXZWJDb3JlOjpQcm90ZWN0aW9uU3BhY2UgcHJvdGVjdGlvblNwYWNlKQogCiAg
ICAgLy8gRGlkUmVjZWl2ZVJlc291cmNlIGlzIGZvciB3aGVuIHdlIGhhdmUgdGhlIGVudGlyZSBy
ZXNvdXJjZSBkYXRhIGF2YWlsYWJsZSBhdCBvbmNlLCBzdWNoIGFzIHdoZW4gdGhlIHJlc291cmNl
IGlzIGNhY2hlZCBpbiBtZW1vcnkKICAgICBEaWRSZWNlaXZlUmVzb3VyY2UoV2ViS2l0OjpTaGFy
ZWFibGVSZXNvdXJjZTo6SGFuZGxlIHJlc291cmNlLCBkb3VibGUgZmluaXNoVGltZSkK
</data>
<flag name="commit-queue"
          id="216790"
          type_id="3"
          status="-"
          setter="peter+ews"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>195111</attachid>
            <date>2013-03-26 10:31:56 -0700</date>
            <delta_ts>2013-03-26 14:03:20 -0700</delta_ts>
            <desc>proposed fix</desc>
            <filename>ResourceHandleMainThread.txt</filename>
            <type>text/plain</type>
            <size>96469</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0Njg5NykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDkxIEBACisyMDEzLTAzLTI2ICBBbGV4ZXkg
UHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgorCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8x
MzE5NDI2Mz4gQ3Jhc2hlcyBpbiBOZXR3b3JrUHJvY2VzcyBkdWUgdG8gdGhyZWFkaW5nIGlzc3Vl
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEzMjU2
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkZWQg
YSBuZXcgY29kZSBwYXRoIGluIFJlc291cmNlSGFuZGxlL1Jlc291cmNlSGFuZGxlQ2xpZW50IHRo
YXQgZG9lc24ndCBuZWVkCisgICAgICAgIGJsb2NraW5nIGNhbGxzLiBJbXBsZW1lbnRlZCBpdCBm
b3IgTlNVUkxDb25uZWN0aW9uIGJ5IGNoYW5naW5nIE5TT3BlcmF0aW9uUXVldWUKKyAgICAgICAg
dmVyc2lvbiB0byBmb3J3YXJkIGNhbGxzIHRvIG1haW4gdGhyZWFkLgorCisgICAgICAgICogV2Vi
Q29yZS5leHAuaW46IEV4cG9ydCBuZXcgbWV0aG9kcy4KKyAgICAgICAgKiBXZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2o6IEFkZGVkIFdlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0
aW9uUXVldWVEZWxlZ2F0ZS4KKworICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvQ3JlZGVudGlh
bFN0b3JhZ2UuY3BwOiBBc3NlcnQgdGhhdCB1bnByb3RlY3RlZCBnbG9iYWwgbWFwIG9wZXJhdGlv
bnMKKyAgICAgICAgaGFwcGVuIG9uIG1haW4gdGhyZWFkLgorCisgICAgICAgICogcGxhdGZvcm0v
bmV0d29yay9SZXNvdXJjZUhhbmRsZS5jcHA6IEFkZGVkIGRlZmF1bHQgaW1wbGVtZW50YXRpb25z
IG9mIGZ1bmN0aW9ucworICAgICAgICB0aGF0IGhhbmRsZSBhc3luYyByZXNwb25zZXMuCisKKyAg
ICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2Nocm9taXVtL1Jlc291cmNlSGFuZGxlLmNwcDogRGl0
dG8uCisKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmg6IEFkZGVk
IGZ1bmN0aW9ucyB0aGF0IGFyZSBjYWxsZWQgaW4gcmVzcG9uc2UKKyAgICAgICAgdG8gbmV3IGFz
eW5jIGZ1bmN0aW9ucyBpbiBSZXNvdXJjZUhhbmRsZUNsaWVudC4gQ2hhbmdlZCBNYWMgZGVsZWdh
dGUgdHlwZSB0byBpZCwKKyAgICAgICAgYXN0IGNhbiBub3cgYmUgZWl0aGVyIFdlYkNvcmVSZXNv
dXJjZUhhbmRsZUFzRGVsZWdhdGUgb3IgV2ViQ29yZVJlc291cmNlSGFuZGxlQXNPcGVyYXRpb25R
dWV1ZURlbGVnYXRlLgorCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRs
ZUNsaWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZUNsaWVudDo6d2ls
bFNlbmRSZXF1ZXN0QXN5bmMpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGVDbGll
bnQ6OnNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlQXN5bmMpOgorICAgICAgICAoV2ViQ29yZTo6
UmVzb3VyY2VIYW5kbGVDbGllbnQ6OmNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3Bh
Y2VBc3luYyk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZUNsaWVudDo6d2lsbENh
Y2hlUmVzcG9uc2VBc3luYyk6CisgICAgICAgIERlZmF1bHQgaW1wbGVtZW50YXRpb25zIG9mIGFz
eW5jIGNsaWVudCBmdW5jdGlvbnMuIFRoZXNlIG1hdGNoIGRlZmF1bHQgYmVoYXZpb3Igb2YKKyAg
ICAgICAgc3luYyB2ZXJzaW9ucy4KKworICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3Vy
Y2VIYW5kbGVDbGllbnQuaDogQWRkZWQgYXN5bmMgZnVuY3Rpb25zLiBBIFJlc291cmNlSGFuZGxl
CisgICAgICAgIHNob3VsZCB1c2UgdGhlc2Ugd2hlbiB0aGUgY2xpZW50IHJldHVybnMgdHJ1ZSBm
cm9tIHVzZXNBc3luY0NhbGxiYWNrcygpLgorCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9S
ZXNvdXJjZUhhbmRsZUludGVybmFsLmg6IENoYW5nZWQgdG8gdXNlIGlkIGZvciBkZWxlZ2F0ZSB0
eXBlCisgICAgICAgIGhlcmUsIHRvby4KKworICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvbWFj
L1Jlc291cmNlSGFuZGxlTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU6
OmRlbGVnYXRlKTogQ3JlYXRlIGFuIGFwcHJvcHJpYXRlIGRlbGVnYXRlIGZvciB0aGUgY2xpZW50
LgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU6OndpbGxTZW5kUmVxdWVzdCk6IFNp
bmNlIHRoaXMgZnVuY3Rpb24gaGFzIGEgbG90IG9mIGNvbW1vbgorICAgICAgICBiZWhhdmlvciBp
biBzeW5jIGFuZCBhc3luYyBjYXNlcywgaW1wbGVtZW50IHRoZSBuZXcgY29kZSBwYXRoIGFzIGEg
YnJhbmNoIGluc2lkZQorICAgICAgICBpdCwgbm90IGFzIGEgbmV3IGZ1bmN0aW9uLgorICAgICAg
ICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU6OmNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0KTogVW5i
bG9jayB0aGUgY29ubmVjdGlvbiB3aGVuCisgICAgICAgIHJlc3BvbnNlIGlzIGtub3duLgorICAg
ICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU6OnNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdl
KTogQnJhbmNoZWQgaGVyZSB0b28sIGZvciBjb25zaXN0ZW5jeS4KKyAgICAgICAgUGVyaGFwcyB3
ZSdsbCB3YW50IHRvIGJyZWFrIHRoaXMgaW50byBzZXBhcmF0ZSBmdW5jdGlvbnMgdGhvdWdoLgor
ICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU6OmNvbnRpbnVlU2hvdWxkVXNlQ3JlZGVu
dGlhbFN0b3JhZ2UpOiBVbmJsb2NrIHRoZSBjb25uZWN0aW9uLgorICAgICAgICAoV2ViQ29yZTo6
UmVzb3VyY2VIYW5kbGU6OmNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UpOiBT
YW1lIGNoYW5nZSBhcyBhYm92ZS4KKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjpj
b250aW51ZUNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UpOiBEaXR0by4KKyAg
ICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjpjb250aW51ZVdpbGxDYWNoZVJlc3BvbnNl
KTogRGl0dG8uIEN1cnJlbnRseSwgZGVsZWdhdGUKKyAgICAgICAgY2FsbHMgdGhlIGNsaWVudCBk
aXJlY3RseSwgc28gd2Ugb25seSBoYXZlIGEgImNvbnRpbnVlIiBmdW5jdGlvbiwgYW5kIG5vICJ3
aWxsQ2FjaGVSZXNwb25zZSIuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJD
b3JlUmVzb3VyY2VIYW5kbGVBc0RlbGVnYXRlLm1tOgorICAgICAgICAoLVtXZWJDb3JlUmVzb3Vy
Y2VIYW5kbGVBc0RlbGVnYXRlIGNvbm5lY3Rpb246d2lsbENhY2hlUmVzcG9uc2U6XSk6IFJlbW92
ZWQgc29tZQorICAgICAgICBub25zZW5zZSBjb2RlLgorCisgICAgICAgICogcGxhdGZvcm0vbmV0
d29yay9tYWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlLmg6
IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVS
ZXNvdXJjZUhhbmRsZUFzRGVsZWdhdGUuaC4KKyAgICAgICAgVGhpcyBkZWxlZ2F0ZSBpcyByZXNw
b25zaWJsZSBmb3IgZm9yd2FyZGluZyBjYWxscyB0byBtYWluIHRocmVhZC4gVW5mb3J0dW5hdGVs
eSwKKyAgICAgICAgdGhpcyBhZGRzIHNvbWUgY29kZSBkdXBsaWNhdGlvbiwgd2hpY2ggSSB0cmll
ZCB0byByZWN0aWZ5IHNvbWV3aGF0IGluIHByZXZpb3VzIHBhdGNoZXMKKyAgICAgICAgYnkgbW92
aW5nIG1vcmUgbG9naWMgdG8gUmVzb3VyY2VIYW5kbGUuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9u
ZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGUu
bW06IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNv
cmVSZXNvdXJjZUhhbmRsZUFzRGVsZWdhdGUubW0uCisgICAgICAgICgtW1dlYkNvcmVSZXNvdXJj
ZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZSBkZXRhY2hIYW5kbGVdKTogVW5ibG9jayB3
YWl0aW5nCisgICAgICAgIHRocmVhZHMgaWYgd2UgZG9uJ3QgZXhwZWN0IGEgcmVzcG9uc2UgYW55
IG1vcmUuCisgICAgICAgICgtW1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVE
ZWxlZ2F0ZSBkZWFsbG9jXSk6IFJlbGVhc2UgdGhlIHNlbWFwaG9yZS4KKyAgICAgICAgKC1bV2Vi
Q29yZVJlc291cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlIGNvbnRpbnVlV2lsbFNl
bmRSZXF1ZXN0Ol0pOiBVbmJsb2NrCisgICAgICAgIGEgd2FpdGluZyB0aHJlYWQgd2l0aCBhIHJl
c3BvbnNlLgorICAgICAgICAoLVtXZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVl
RGVsZWdhdGUgY29udGludWVTaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZTpdKTogRGl0dG8uCisg
ICAgICAgICgtW1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZSBj
b250aW51ZUNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2U6XSk6IERpdHRvLgor
ICAgICAgICAoLVtXZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGUg
Y29udGludWVXaWxsQ2FjaGVSZXNwb25zZTpdKTogRGl0dG8uCisgICAgICAgICgtW1dlYkNvcmVS
ZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZSBjb25uZWN0aW9uOndpbGxTZW5k
UmVxdWVzdDpyZWRpcmVjdFJlc3BvbnNlOl0pOgorICAgICAgICBSdW4gY29kZSB0aGF0IHVzZXMg
V2ViQ29yZSBvYmplY3RzIG9uIG1haW4gdGhyZWFkLgorICAgICAgICAoLVtXZWJDb3JlUmVzb3Vy
Y2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGUgY29ubmVjdGlvblNob3VsZFVzZUNyZWRl
bnRpYWxTdG9yYWdlOl0pOiBEaXR0by4KKyAgICAgICAgKC1bV2ViQ29yZVJlc291cmNlSGFuZGxl
QXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlIGNvbm5lY3Rpb246ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlOl0pOiBEaXR0by4KKyAgICAgICAgKC1bV2ViQ29yZVJlc291cmNlSGFuZGxl
QXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlIGNvbm5lY3Rpb246ZGlkQ2FuY2VsQXV0aGVudGljYXRp
b25DaGFsbGVuZ2U6XSk6IERpdHRvLgorICAgICAgICAoLVtXZWJDb3JlUmVzb3VyY2VIYW5kbGVB
c09wZXJhdGlvblF1ZXVlRGVsZWdhdGUgY29ubmVjdGlvbjpjYW5BdXRoZW50aWNhdGVBZ2FpbnN0
UHJvdGVjdGlvblNwYWNlOl0pOiBEaXR0by4KKyAgICAgICAgKC1bV2ViQ29yZVJlc291cmNlSGFu
ZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlIGNvbm5lY3Rpb246ZGlkUmVjZWl2ZVJlc3BvbnNl
Ol0pOiBEaXR0by4KKyAgICAgICAgKC1bV2ViQ29yZVJlc291cmNlSGFuZGxlQXNPcGVyYXRpb25R
dWV1ZURlbGVnYXRlIGNvbm5lY3Rpb246ZGlkUmVjZWl2ZURhdGFBcnJheTpdKTogRGl0dG8uCisg
ICAgICAgICgtW1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZSBj
b25uZWN0aW9uOmRpZFJlY2VpdmVEYXRhOmxlbmd0aFJlY2VpdmVkOl0pOiBEaXR0by4KKyAgICAg
ICAgKC1bV2ViQ29yZVJlc291cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlIGNvbm5l
Y3Rpb246d2lsbFN0b3BCdWZmZXJpbmdEYXRhOl0pOiBEaXR0by4KKyAgICAgICAgKC1bV2ViQ29y
ZVJlc291cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlIGNvbm5lY3Rpb246ZGlkU2Vu
ZEJvZHlEYXRhOnRvdGFsQnl0ZXNXcml0dGVuOnRvdGFsQnl0ZXNFeHBlY3RlZFRvV3JpdGU6XSk6
IERpdHRvLgorICAgICAgICAoLVtXZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVl
RGVsZWdhdGUgY29ubmVjdGlvbkRpZEZpbmlzaExvYWRpbmc6XSk6IERpdHRvLgorICAgICAgICAo
LVtXZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGUgY29ubmVjdGlv
bjpkaWRGYWlsV2l0aEVycm9yOl0pOiBEaXR0by4KKyAgICAgICAgKC1bV2ViQ29yZVJlc291cmNl
SGFuZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlIGNvbm5lY3Rpb246d2lsbENhY2hlUmVzcG9u
c2U6XSk6IERpdHRvLgorCiAyMDEzLTAzLTI2ICBBbGV4YW5kZXIgUGF2bG92ICA8YXBhdmxvdkBj
aHJvbWl1bS5vcmc+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogW0VsZW1lbnRzXSBVbmFibGUg
dG8gIkVkaXQgYXMgSFRNTCIgWEhUTUwvU1ZHIGRvY3VtZW50cy4KSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL1dlYkNvcmUuZXhwLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
ZXhwLmluCShyZXZpc2lvbiAxNDY3ODUpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5p
bgkod29ya2luZyBjb3B5KQpAQCAtMzQwLDggKzM0MCwxMiBAQCBfX1pON1dlYkNvcmUxNFJlc291
cmNlQnVmZmVyQzJFdgogX19aTjdXZWJDb3JlMTRSZXNvdXJjZUJ1ZmZlckQxRXYKIF9fWk43V2Vi
Q29yZTE0UmVzb3VyY2VCdWZmZXJEMkV2CiBfX1pON1dlYkNvcmUxNFJlc291cmNlSGFuZGxlMjBm
b3JjZUNvbnRlbnRTbmlmZmluZ0V2CitfX1pON1dlYkNvcmUxNFJlc291cmNlSGFuZGxlMjNjb250
aW51ZVdpbGxTZW5kUmVxdWVzdEVSS05TXzE1UmVzb3VyY2VSZXF1ZXN0RQorX19aTjdXZWJDb3Jl
MTRSZXNvdXJjZUhhbmRsZTI1Y29udGludWVXaWxsQ2FjaGVSZXNwb25zZUVQMTlOU0NhY2hlZFVS
TFJlc3BvbnNlCiBfX1pON1dlYkNvcmUxNFJlc291cmNlSGFuZGxlMjVsb2FkUmVzb3VyY2VTeW5j
aHJvbm91c2x5RVBOU18xN05ldHdvcmtpbmdDb250ZXh0RVJLTlNfMTVSZXNvdXJjZVJlcXVlc3RF
TlNfMTdTdG9yZWRDcmVkZW50aWFsc0VSTlNfMTNSZXNvdXJjZUVycm9yRVJOU18xNlJlc291cmNl
UmVzcG9uc2VFUk4zV1RGNlZlY3RvckljTG0wRUVFCiBfX1pON1dlYkNvcmUxNFJlc291cmNlSGFu
ZGxlMjZzeW5jaHJvbm91c0xvYWRSdW5Mb29wTW9kZUV2CitfX1pON1dlYkNvcmUxNFJlc291cmNl
SGFuZGxlMzRjb250aW51ZVNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlRWIKK19fWk43V2ViQ29y
ZTE0UmVzb3VyY2VIYW5kbGU0NWNvbnRpbnVlQ2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rp
b25TcGFjZUViCiBfX1pON1dlYkNvcmUxNFJlc291cmNlSGFuZGxlNmNyZWF0ZUVQTlNfMTdOZXR3
b3JraW5nQ29udGV4dEVSS05TXzE1UmVzb3VyY2VSZXF1ZXN0RVBOU18yMFJlc291cmNlSGFuZGxl
Q2xpZW50RWJiCiBfX1pON1dlYkNvcmUxNFJlc291cmNlTG9hZGVyMTRjYW5jZWxsZWRFcnJvckV2
CiBfX1pON1dlYkNvcmUxNFJlc291cmNlTG9hZGVyNmNhbmNlbEV2CkBAIC02MzIsNiArNjM2LDEw
IEBAIF9fWk43V2ViQ29yZTIwTm9kZVJlbmRlcmluZ0NvbnRleHRDMUVQTlMKIF9fWk43V2ViQ29y
ZTIwTm9kZVJlbmRlcmluZ0NvbnRleHREMUV2CiBfX1pON1dlYkNvcmUyMFJlbmRlckVtYmVkZGVk
T2JqZWN0MjlzZXRQbHVnaW5VbmF2YWlsYWJpbGl0eVJlYXNvbkVOUzBfMjZQbHVnaW5VbmF2YWls
YWJpbGl0eVJlYXNvbkUKIF9fWk43V2ViQ29yZTIwUmVzb3VyY2VIYW5kbGVDbGllbnQxNmRpZFJl
Y2VpdmVCdWZmZXJFUE5TXzE0UmVzb3VyY2VIYW5kbGVFTjNXVEYxMFBhc3NSZWZQdHJJTlNfMTJT
aGFyZWRCdWZmZXJFRUVpCitfX1pON1dlYkNvcmUyMFJlc291cmNlSGFuZGxlQ2xpZW50MjB3aWxs
U2VuZFJlcXVlc3RBc3luY0VQTlNfMTRSZXNvdXJjZUhhbmRsZUVSS05TXzE1UmVzb3VyY2VSZXF1
ZXN0RVJLTlNfMTZSZXNvdXJjZVJlc3BvbnNlRQorX19aTjdXZWJDb3JlMjBSZXNvdXJjZUhhbmRs
ZUNsaWVudDIyd2lsbENhY2hlUmVzcG9uc2VBc3luY0VQTlNfMTRSZXNvdXJjZUhhbmRsZUVQMTlO
U0NhY2hlZFVSTFJlc3BvbnNlCitfX1pON1dlYkNvcmUyMFJlc291cmNlSGFuZGxlQ2xpZW50MzFz
aG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZUFzeW5jRVBOU18xNFJlc291cmNlSGFuZGxlRQorX19a
TjdXZWJDb3JlMjBSZXNvdXJjZUhhbmRsZUNsaWVudDQyY2FuQXV0aGVudGljYXRlQWdhaW5zdFBy
b3RlY3Rpb25TcGFjZUFzeW5jRVBOU18xNFJlc291cmNlSGFuZGxlRVJLTlNfMTVQcm90ZWN0aW9u
U3BhY2VFCiBfX1pON1dlYkNvcmUyMFJlc291cmNlSGFuZGxlQ2xpZW50QzJFdgogX19aTjdXZWJD
b3JlMjBSZXNvdXJjZUhhbmRsZUNsaWVudEQyRXYKIF9fWk43V2ViQ29yZTIwUmVzb3VyY2VSZXNw
b25zZUJhc2UxMXNldE1pbWVUeXBlRVJLTjNXVEY2U3RyaW5nRQpJbmRleDogU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTQ2
Nzg1KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CSh3b3JraW5nIGNvcHkpCkBAIC0zNTc4LDggKzM1NzgsOCBAQAogCQk5NzNGNDE4QjE2OUI5NjAz
MDAwNkJGNjAgLyogSFRNTFBhcnNlck9wdGlvbnMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTczRjQxODcxNjlCOTVFRjAwMDZCRjYwIC8qIEhUTUxQ
YXJzZXJPcHRpb25zLmNwcCAqLzsgfTsKIAkJOTc0MTg3RDMxNkE3OTMyNzAwRkE3N0E3IC8qIEhU
TUxQYXJzZXJUaHJlYWQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gOTc0MTg3RDAxNkE3OTMyMjAwRkE3N0E3IC8qIEhUTUxQYXJzZXJUaHJlYWQuY3Bw
ICovOyB9OwogCQk5NzQxODdENDE2QTc5MzI5MDBGQTc3QTcgLyogSFRNTFBhcnNlclRocmVhZC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTc0MTg3RDEx
NkE3OTMyMjAwRkE3N0E3IC8qIEhUTUxQYXJzZXJUaHJlYWQuaCAqLzsgfTsKLQkJOTc0NkFGMjEx
NEY0RERFNjAwM0U3QTcyIC8qIENvb3JkaW5hdGVzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3NDZBRjExMTRGNERERTYwMDNFN0E3MiAvKiBDb29y
ZGluYXRlcy5jcHAgKi87IH07CiAJCTk3NDZBRjIxMTRGNERERTYwMDNFN0E3MSAvKiBDb29yZGlu
YXRlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTc0
NkFGMTExNEY0RERFNjAwM0U3QTcwIC8qIENvb3JkaW5hdGVzLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJOTc0NkFGMjExNEY0RERFNjAwM0U3QTcy
IC8qIENvb3JkaW5hdGVzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDk3NDZBRjExMTRGNERERTYwMDNFN0E3MiAvKiBDb29yZGluYXRlcy5jcHAgKi87
IH07CiAJCTk3NDZBRjIzMTRGNERERTYwMDNFN0E3MCAvKiBHZW9sb2NhdGlvbi5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NzQ2QUYxMzE0RjREREU2
MDAzRTdBNzAgLyogR2VvbG9jYXRpb24uY3BwICovOyB9OwogCQk5NzQ2QUYyNDE0RjREREU2MDAz
RTdBNzAgLyogR2VvbG9jYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDk3NDZBRjE0MTRGNERERTYwMDNFN0E3MCAvKiBHZW9sb2NhdGlvbi5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTk3NDZBRjI1
MTRGNERERTYwMDNFN0E3MSAvKiBHZW9sb2NhdGlvbkNsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTc0NkFGMTUxNEY0RERFNjAwM0U3QTcxIC8q
IEdlb2xvY2F0aW9uQ2xpZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKQEAgLTYyMjAsNiArNjIyMCw4IEBACiAJCUUxNEYxQzQ1MTRCNURBQzYwMEVB
OTAwOSAvKiBIVE1MRm9ybUNvbnRyb2xFbGVtZW50V2l0aFN0YXRlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTRGMUM0MzE0QjVEQUM2MDBFQTkwMDkg
LyogSFRNTEZvcm1Db250cm9sRWxlbWVudFdpdGhTdGF0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUxNTEzRDRGMTY3N0VBODMwMDE0OUZDQiAv
KiBJbml0aWFsaXplTG9nZ2luZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRTE1MTNENEUxNjc3RUE4MzAwMTQ5RkNCIC8qIEluaXRpYWxpemVMb2dnaW5n
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTE1
MTNENTExNjc3RjA4ODAwMTQ5RkNCIC8qIE5vdEltcGxlbWVudGVkLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxNTEzRDUwMTY3N0YwODgwMDE0OUZD
QiAvKiBOb3RJbXBsZW1lbnRlZC5jcHAgKi87IH07CisJCUUxNTI1NTE1MTZGRDIzNTAwMDNEN0FE
QiAvKiBXZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGUuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxNTI1NTEzMTZGRDIz
NEYwMDNEN0FEQiAvKiBXZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdh
dGUuaCAqLzsgfTsKKwkJRTE1MjU1MTYxNkZEMjM1MDAwM0Q3QURCIC8qIFdlYkNvcmVSZXNvdXJj
ZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxNTI1NTE0MTZGRDIzNEYwMDNEN0FEQiAvKiBXZWJD
b3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGUubW0gKi87IH07CiAJCUUx
NUEzNkQ3MTEwNDU3MjAwMEI3QjYzOSAvKiBYTUxOU05hbWVzLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTVBMzZENjExMDQ1NzIwMDBCN0I2MzkgLyog
WE1MTlNOYW1lcy5oICovOyB9OwogCQlFMTVBMzZEOTExMDQ1NzI3MDBCN0I2MzkgLyogWE1MTlNO
YW1lcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBF
MTVBMzZEODExMDQ1NzI3MDBCN0I2MzkgLyogWE1MTlNOYW1lcy5jcHAgKi87IH07CiAJCUUxNjk4
MDNEMTEzMzU0MkQwMDg5NDExNSAvKiBDUnVudGltZU9iamVjdC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTE2OTgwM0MxMTMzNTQyRDAwODk0MTE1IC8q
IENSdW50aW1lT2JqZWN0LmggKi87IH07CkBAIC0xMTA5Nyw4ICsxMTA5OSw4IEBACiAJCTk3M0Y0
MTg4MTY5Qjk1RUYwMDA2QkY2MCAvKiBIVE1MUGFyc2VyT3B0aW9ucy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IG5hbWUgPSBIVE1MUGFyc2VyT3B0aW9ucy5oOyBwYXRoID0gcGFyc2VyL0hU
TUxQYXJzZXJPcHRpb25zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk3NDE4N0Qw
MTZBNzkzMjIwMEZBNzdBNyAvKiBIVE1MUGFyc2VyVGhyZWFkLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEhUTUxQYXJzZXJUaHJlYWQuY3BwOyBwYXRoID0gcGFyc2Vy
L0hUTUxQYXJzZXJUaHJlYWQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5NzQx
ODdEMTE2QTc5MzIyMDBGQTc3QTcgLyogSFRNTFBhcnNlclRocmVhZC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IG5hbWUgPSBIVE1MUGFyc2VyVGhyZWFkLmg7IHBhdGggPSBwYXJzZXIvSFRN
TFBhcnNlclRocmVhZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk5NzQ2QUYxMTE0
RjREREU2MDAzRTdBNzIgLyogQ29vcmRpbmF0ZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBuYW1lID0gQ29vcmRpbmF0ZXMuY3BwOyBwYXRoID0gTW9kdWxlcy9nZW9sb2NhdGlv
bi9Db29yZGluYXRlcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk3NDZBRjEx
MTRGNERERTYwMDNFN0E3MCAvKiBDb29yZGluYXRlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IG5hbWUgPSBDb29yZGluYXRlcy5oOyBwYXRoID0gTW9kdWxlcy9nZW9sb2NhdGlvbi9Db29y
ZGluYXRlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5NzQ2QUYxMTE0RjREREU2
MDAzRTdBNzIgLyogQ29vcmRpbmF0ZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBuYW1lID0gQ29vcmRpbmF0ZXMuY3BwOyBwYXRoID0gTW9kdWxlcy9nZW9sb2NhdGlvbi9Db29y
ZGluYXRlcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk3NDZBRjEyMTRGNERE
RTYwMDNFN0E3MCAvKiBDb29yZGluYXRlcy5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBuYW1lID0gQ29v
cmRpbmF0ZXMuaWRsOyBwYXRoID0gTW9kdWxlcy9nZW9sb2NhdGlvbi9Db29yZGluYXRlcy5pZGw7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk3NDZBRjEzMTRGNERERTYwMDNFN0E3MCAv
KiBHZW9sb2NhdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBH
ZW9sb2NhdGlvbi5jcHA7IHBhdGggPSBNb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTc0NkFGMTQxNEY0RERFNjAwM0U3QTcw
IC8qIEdlb2xvY2F0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEdlb2xv
Y2F0aW9uLmg7IHBhdGggPSBNb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMzkzOSw2ICsxMzk0MSw4IEBACiAJCUUxNEYxQzQz
MTRCNURBQzYwMEVBOTAwOSAvKiBIVE1MRm9ybUNvbnRyb2xFbGVtZW50V2l0aFN0YXRlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhUTUxGb3JtQ29udHJvbEVsZW1lbnRXaXRo
U3RhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTE1MTNENEUxNjc3RUE4MzAw
MTQ5RkNCIC8qIEluaXRpYWxpemVMb2dnaW5nLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEluaXRpYWxpemVMb2dnaW5nLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUUxNTEzRDUwMTY3N0YwODgwMDE0OUZDQiAvKiBOb3RJbXBsZW1lbnRlZC5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBOb3RJbXBsZW1lbnRlZC5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUUxNTI1NTEzMTZGRDIzNEYwMDNEN0FEQiAvKiBXZWJDb3Jl
UmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGUuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gV2ViQ29yZVJlc291cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1ZURl
bGVnYXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUxNTI1NTE0MTZGRDIzNEYw
MDNEN0FEQiAvKiBXZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGUu
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJDb3JlUmVzb3Vy
Y2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGUubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUUxNUEzNkQ2MTEwNDU3MjAwMEI3QjYzOSAvKiBYTUxOU05hbWVzLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFhNTE5TTmFtZXMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJRTE1QTM2RDgxMTA0NTcyNzAwQjdCNjM5IC8qIFhNTE5TTmFtZXMuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gWE1MTlNOYW1lcy5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUxNjk4MDNDMTEzMzU0MkQwMDg5NDExNSAvKiBD
UnVudGltZU9iamVjdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDUnVudGlt
ZU9iamVjdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTYzNDksOCArMTYzNTMs
MTAgQEAKIAkJCQk1MTRDNzY0QjBDRTkyMzRFMDA3RUYzQ0QgLyogUmVzb3VyY2VSZXNwb25zZU1h
Yy5tbSAqLywKIAkJCQkxRkFGQkYxNjE1QTVGQTUyMDAwODNBMjAgLyogVVRJVXRpbGl0aWVzLmgg
Ki8sCiAJCQkJMUZBRkJGMTcxNUE1RkE1MjAwMDgzQTIwIC8qIFVUSVV0aWxpdGllcy5tbSAqLywK
LQkJCQlFMTgwODEwQzE2RkNFQ0RGMDBCODBEMDcgLyogV2ViQ29yZVJlc291cmNlSGFuZGxlQXNE
ZWxlZ2F0ZS5tbSAqLywKIAkJCQlFMTgwODEwRDE2RkNFQ0RGMDBCODBEMDcgLyogV2ViQ29yZVJl
c291cmNlSGFuZGxlQXNEZWxlZ2F0ZS5oICovLAorCQkJCUUxODA4MTBDMTZGQ0VDREYwMEI4MEQw
NyAvKiBXZWJDb3JlUmVzb3VyY2VIYW5kbGVBc0RlbGVnYXRlLm1tICovLAorCQkJCUUxNTI1NTEz
MTZGRDIzNEYwMDNEN0FEQiAvKiBXZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVl
RGVsZWdhdGUuaCAqLywKKwkJCQlFMTUyNTUxNDE2RkQyMzRGMDAzRDdBREIgLyogV2ViQ29yZVJl
c291cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlLm1tICovLAogCQkJCUUxODA4MTE0
MTZGQ0Y5Q0IwMEI4MEQwNyAvKiBTeW5jaHJvbm91c0xvYWRlckNsaWVudC5tbSAqLywKIAkJCQkz
N0Y4MThGQjBENjU3NjA2MDA1RTFGMDUgLyogV2ViQ29yZVVSTFJlc3BvbnNlLmggKi8sCiAJCQkJ
MzdGODE4RkMwRDY1NzYwNjAwNUUxRjA1IC8qIFdlYkNvcmVVUkxSZXNwb25zZS5tbSAqLywKQEAg
LTI2Nzg0LDYgKzI2NzkwLDcgQEAKIAkJCQk1MEUxOENEQTE2RjkyODU4MDBDNjU0ODYgLyogU3R5
bGVDdXN0b21GaWx0ZXJQcm9ncmFtQ2FjaGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUUxODA4MTBG
MTZGQ0VDREYwMEI4MEQwNyAvKiBXZWJDb3JlUmVzb3VyY2VIYW5kbGVBc0RlbGVnYXRlLmggaW4g
SGVhZGVycyAqLywKIAkJCQlFMTgwODExNzE2RkNGOUNCMDBCODBEMDcgLyogU3luY2hyb25vdXNM
b2FkZXJDbGllbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCUUxNTI1NTE1MTZGRDIzNTAwMDNEN0FE
QiAvKiBXZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGUuaCBpbiBI
ZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3Npbmcg
PSAwOwogCQl9OwpAQCAtMjk5OTUsNiArMzAwMDIsNyBAQAogCQkJCUUxODA4MTBFMTZGQ0VDREYw
MEI4MEQwNyAvKiBXZWJDb3JlUmVzb3VyY2VIYW5kbGVBc0RlbGVnYXRlLm1tIGluIFNvdXJjZXMg
Ki8sCiAJCQkJRTE4MDgxMTIxNkZDRjQyRjAwQjgwRDA3IC8qIFN5bmNocm9ub3VzTG9hZGVyQ2xp
ZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUxODA4MTE2MTZGQ0Y5Q0IwMEI4MEQwNyAvKiBT
eW5jaHJvbm91c0xvYWRlckNsaWVudC5tbSBpbiBTb3VyY2VzICovLAorCQkJCUUxNTI1NTE2MTZG
RDIzNTAwMDNEN0FEQiAvKiBXZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVs
ZWdhdGUubW0gaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBv
c3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvQ3JlZGVudGlhbFN0b3JhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvQ3JlZGVudGlhbFN0b3JhZ2UuY3BwCShyZXZpc2lvbiAxNDY3ODUp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0NyZWRlbnRpYWxTdG9yYWdlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0
cmluZ0hhc2guaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNo
U2V0Lmg+CisjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGli
RXh0cmFzLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTQwLDEyICs0MSwxNCBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiB0eXBlZGVmIEhhc2hNYXA8UHJvdGVjdGlvblNwYWNlLCBDcmVkZW50
aWFsPiBQcm90ZWN0aW9uU3BhY2VUb0NyZWRlbnRpYWxNYXA7CiBzdGF0aWMgUHJvdGVjdGlvblNw
YWNlVG9DcmVkZW50aWFsTWFwJiBwcm90ZWN0aW9uU3BhY2VUb0NyZWRlbnRpYWxNYXAoKQogewor
ICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChQcm90
ZWN0aW9uU3BhY2VUb0NyZWRlbnRpYWxNYXAsIG1hcCwgKCkpOwogICAgIHJldHVybiBtYXA7CiB9
CiAKIHN0YXRpYyBIYXNoU2V0PFN0cmluZz4mIG9yaWdpbnNXaXRoQ3JlZGVudGlhbHMoKQogewor
ICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChIYXNo
U2V0PFN0cmluZz4sIHNldCwgKCkpOwogICAgIHJldHVybiBzZXQ7CiB9CkBAIC01Myw2ICs1Niw3
IEBAIHN0YXRpYyBIYXNoU2V0PFN0cmluZz4mIG9yaWdpbnNXaXRoQ3JlZGUKIHR5cGVkZWYgSGFz
aE1hcDxTdHJpbmcsIFByb3RlY3Rpb25TcGFjZT4gUGF0aFRvRGVmYXVsdFByb3RlY3Rpb25TcGFj
ZU1hcDsKIHN0YXRpYyBQYXRoVG9EZWZhdWx0UHJvdGVjdGlvblNwYWNlTWFwJiBwYXRoVG9EZWZh
dWx0UHJvdGVjdGlvblNwYWNlTWFwKCkKIHsKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwog
ICAgIERFRklORV9TVEFUSUNfTE9DQUwoUGF0aFRvRGVmYXVsdFByb3RlY3Rpb25TcGFjZU1hcCwg
bWFwLCAoKSk7CiAgICAgcmV0dXJuIG1hcDsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuY3BwCShyZXZpc2lvbiAxNDY3ODUp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTQ3LDYgKzE0NywyNiBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjpz
ZXRDbGllbnQoUmVzb3VyY2VICiAgICAgZC0+bV9jbGllbnQgPSBjbGllbnQ7CiB9CiAKKyNpZiAh
UExBVEZPUk0oTUFDKQorLy8gUmVzb3VyY2VIYW5kbGUgbmV2ZXIgdXNlcyBhc3luYyBjbGllbnQg
Y2FsbHMgb24gdGhlc2UgcGxhdGZvcm1zIHlldC4KK3ZvaWQgUmVzb3VyY2VIYW5kbGU6OmNvbnRp
bnVlV2lsbFNlbmRSZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYpCit7CisgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7Cit9CisKK3ZvaWQgUmVzb3VyY2VIYW5kbGU6OmNvbnRpbnVlU2hvdWxk
VXNlQ3JlZGVudGlhbFN0b3JhZ2UoYm9vbCkKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
K30KKworI2lmIFVTRShQUk9URUNUSU9OX1NQQUNFX0FVVEhfQ0FMTEJBQ0spCit2b2lkIFJlc291
cmNlSGFuZGxlOjpjb250aW51ZUNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2Uo
Ym9vbCkKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKyNlbmRpZgorI2VuZGlmCisK
IFJlc291cmNlUmVxdWVzdCYgUmVzb3VyY2VIYW5kbGU6OmZpcnN0UmVxdWVzdCgpCiB7CiAgICAg
cmV0dXJuIGQtPm1fZmlyc3RSZXF1ZXN0OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9SZXNvdXJjZUhhbmRsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuaAkocmV2aXNpb24gMTQ2Nzg1KQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC01NSwxMCArNTUsMTAgQEAgdHlwZWRlZiBMUFZPSUQgSElOVEVSTkVUOwogI2VuZGlm
CiAKICNpZiBQTEFURk9STShNQUMpCitPQkpDX0NMQVNTIE5TQ2FjaGVkVVJMUmVzcG9uc2U7CiBP
QkpDX0NMQVNTIE5TRGF0YTsKIE9CSkNfQ0xBU1MgTlNFcnJvcjsKIE9CSkNfQ0xBU1MgTlNVUkxD
b25uZWN0aW9uOwotT0JKQ19DTEFTUyBXZWJDb3JlUmVzb3VyY2VIYW5kbGVBc0RlbGVnYXRlOwog
I2lmbmRlZiBfX09CSkNfXwogdHlwZWRlZiBzdHJ1Y3Qgb2JqY19vYmplY3QgKmlkOwogI2VuZGlm
CkBAIC0xMjUsNyArMTI1LDcgQEAgcHVibGljOgogI2lmICFVU0UoQ0ZORVRXT1JLKQogICAgIHZv
aWQgZGlkQ2FuY2VsQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoY29uc3QgQXV0aGVudGljYXRpb25D
aGFsbGVuZ2UmKTsKICAgICBOU1VSTENvbm5lY3Rpb24gKmNvbm5lY3Rpb24oKSBjb25zdDsKLSAg
ICBXZWJDb3JlUmVzb3VyY2VIYW5kbGVBc0RlbGVnYXRlICpkZWxlZ2F0ZSgpOworICAgIGlkIGRl
bGVnYXRlKCk7CiAgICAgdm9pZCByZWxlYXNlRGVsZWdhdGUoKTsKICAgICBpZCByZWxlYXNlUHJv
eHkoKTsKICNlbmRpZgpAQCAtMTg4LDEwICsxODgsMjMgQEAgcHVibGljOgogICAgIFJlc291cmNl
SGFuZGxlQ2xpZW50KiBjbGllbnQoKSBjb25zdDsKICAgICB2b2lkIHNldENsaWVudChSZXNvdXJj
ZUhhbmRsZUNsaWVudCopOwogCisgICAgLy8gQ2FsbGVkIGluIHJlc3BvbnNlIHRvIFJlc291cmNl
SGFuZGxlQ2xpZW50Ojp3aWxsU2VuZFJlcXVlc3RBc3luYygpLgorICAgIHZvaWQgY29udGludWVX
aWxsU2VuZFJlcXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7CisgICAgLy8gQ2FsbGVkIGlu
IHJlc3BvbnNlIHRvIFJlc291cmNlSGFuZGxlQ2xpZW50OjpzaG91bGRVc2VDcmVkZW50aWFsU3Rv
cmFnZUFzeW5jKCkuCisgICAgdm9pZCBjb250aW51ZVNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdl
KGJvb2wpOworI2lmIFVTRShQUk9URUNUSU9OX1NQQUNFX0FVVEhfQ0FMTEJBQ0spCisgICAgLy8g
Q2FsbGVkIGluIHJlc3BvbnNlIHRvIFJlc291cmNlSGFuZGxlQ2xpZW50OjpjYW5BdXRoZW50aWNh
dGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlQXN5bmMoKS4KKyAgICB2b2lkIGNvbnRpbnVlQ2FuQXV0
aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZShib29sKTsKKyNlbmRpZgorI2lmIFBMQVRG
T1JNKE1BQykKKyAgICAvLyBDYWxsZWQgaW4gcmVzcG9uc2UgdG8gUmVzb3VyY2VIYW5kbGVDbGll
bnQ6OndpbGxDYWNoZVJlc3BvbnNlQXN5bmMoKS4KKyAgICB2b2lkIGNvbnRpbnVlV2lsbENhY2hl
UmVzcG9uc2UoTlNDYWNoZWRVUkxSZXNwb25zZSAqKTsKKyNlbmRpZgorCiAgICAgdm9pZCBzZXRE
ZWZlcnNMb2FkaW5nKGJvb2wpOwogCiAjaWYgUExBVEZPUk0oQkxBQ0tCRVJSWSkKLSAgICB2b2lk
IHBhdXNlTG9hZChib29sKTsKKyAgICB2b2lkIHBhdXNlTG9hZChib29sKTsgLy8gRklYTUU6IEhv
dyBpcyB0aGlzIGRpZmZlcmVudCBmcm9tIHNldERlZmVyc0xvYWRpbmcoKT8KICNlbmRpZgogCiAg
ICAgdm9pZCBkaWRDaGFuZ2VQcmlvcml0eShSZXNvdXJjZUxvYWRQcmlvcml0eSk7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFu
ZGxlQ2xpZW50LmNwcAkocmV2aXNpb24gMTQ2Nzg1KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUy
LDYgKzUyLDMwIEBAIFJlc291cmNlSGFuZGxlQ2xpZW50Ojp+UmVzb3VyY2VIYW5kbGVDbGkKICNl
bmRpZgogfQogCit2b2lkIFJlc291cmNlSGFuZGxlQ2xpZW50Ojp3aWxsU2VuZFJlcXVlc3RBc3lu
YyhSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3Qs
IGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIC8qcmVkaXJlY3RSZXNwb25zZSovKQoreworICAgIGhh
bmRsZS0+Y29udGludWVXaWxsU2VuZFJlcXVlc3QocmVxdWVzdCk7Cit9CisKK3ZvaWQgUmVzb3Vy
Y2VIYW5kbGVDbGllbnQ6OnNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlQXN5bmMoUmVzb3VyY2VI
YW5kbGUqIGhhbmRsZSkKK3sKKyAgICBoYW5kbGUtPmNvbnRpbnVlU2hvdWxkVXNlQ3JlZGVudGlh
bFN0b3JhZ2UoZmFsc2UpOworfQorCisjaWYgVVNFKFBST1RFQ1RJT05fU1BBQ0VfQVVUSF9DQUxM
QkFDSykKK3ZvaWQgUmVzb3VyY2VIYW5kbGVDbGllbnQ6OmNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQ
cm90ZWN0aW9uU3BhY2VBc3luYyhSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBjb25zdCBQcm90ZWN0
aW9uU3BhY2UmKQoreworICAgIGhhbmRsZS0+Y29udGludWVDYW5BdXRoZW50aWNhdGVBZ2FpbnN0
UHJvdGVjdGlvblNwYWNlKGZhbHNlKTsKK30KKyNlbmRpZgorCisjaWYgUExBVEZPUk0oTUFDKQor
dm9pZCBSZXNvdXJjZUhhbmRsZUNsaWVudDo6d2lsbENhY2hlUmVzcG9uc2VBc3luYyhSZXNvdXJj
ZUhhbmRsZSogaGFuZGxlLCBOU0NhY2hlZFVSTFJlc3BvbnNlICpyZXNwb25zZSkKK3sKKyAgICBo
YW5kbGUtPmNvbnRpbnVlV2lsbENhY2hlUmVzcG9uc2UocmVzcG9uc2UpOworfQorI2VuZGlmCisK
IHZvaWQgUmVzb3VyY2VIYW5kbGVDbGllbnQ6OmRpZFJlY2VpdmVCdWZmZXIoUmVzb3VyY2VIYW5k
bGUqIGhhbmRsZSwgUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciwgaW50IGVuY29kZWRE
YXRhTGVuZ3RoKQogewogICAgIGRpZFJlY2VpdmVEYXRhKGhhbmRsZSwgYnVmZmVyLT5kYXRhKCks
IGJ1ZmZlci0+c2l6ZSgpLCBlbmNvZGVkRGF0YUxlbmd0aCk7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5oCShy
ZXZpc2lvbiAxNDY3ODUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291
cmNlSGFuZGxlQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTc2LDYgKzc2LDE4IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCB2b2lkIGNhbm5vdFNob3dVUkwoUmVzb3Vy
Y2VIYW5kbGUqKSB7IH0KIAogICAgICAgICB2aXJ0dWFsIGJvb2wgdXNlc0FzeW5jQ2FsbGJhY2tz
KCkgeyByZXR1cm4gZmFsc2U7IH0KKyAgICAgICAgLy8gQ2xpZW50IHdpbGwgcGFzcyBhbiB1cGRh
dGVkIHJlcXVlc3QgdXNpbmcgUmVzb3VyY2VIYW5kbGU6OmNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0
KCkgd2hlbiByZWFkeS4KKyAgICAgICAgdmlydHVhbCB2b2lkIHdpbGxTZW5kUmVxdWVzdEFzeW5j
KFJlc291cmNlSGFuZGxlKiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSk7CisgICAgICAgIC8vIENsaWVudCB3aWxsIHBhc3Mg
YW4gdXBkYXRlZCByZXF1ZXN0IHVzaW5nIFJlc291cmNlSGFuZGxlOjpjb250aW51ZVNob3VsZFVz
ZUNyZWRlbnRpYWxTdG9yYWdlKCkgd2hlbiByZWFkeS4KKyAgICAgICAgdmlydHVhbCB2b2lkIHNo
b3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlQXN5bmMoUmVzb3VyY2VIYW5kbGUqKTsKKyNpZiBVU0Uo
UFJPVEVDVElPTl9TUEFDRV9BVVRIX0NBTExCQUNLKQorICAgICAgICAvLyBDbGllbnQgd2lsbCBw
YXNzIGFuIHVwZGF0ZWQgcmVxdWVzdCB1c2luZyBSZXNvdXJjZUhhbmRsZTo6Y29udGludWVDYW5B
dXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlKCkgd2hlbiByZWFkeS4KKyAgICAgICAg
dmlydHVhbCB2b2lkIGNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2VBc3luYyhS
ZXNvdXJjZUhhbmRsZSosIGNvbnN0IFByb3RlY3Rpb25TcGFjZSYpOworI2VuZGlmCisjaWYgUExB
VEZPUk0oTUFDKQorICAgICAgICAvLyBDbGllbnQgd2lsbCBwYXNzIGFuIHVwZGF0ZWQgcmVxdWVz
dCB1c2luZyBSZXNvdXJjZUhhbmRsZTo6Y29udGludWVXaWxsQ2FjaGVSZXNwb25zZSgpIHdoZW4g
cmVhZHkuCisgICAgICAgIHZpcnR1YWwgdm9pZCB3aWxsQ2FjaGVSZXNwb25zZUFzeW5jKFJlc291
cmNlSGFuZGxlKiwgTlNDYWNoZWRVUkxSZXNwb25zZSAqKTsKKyNlbmRpZgogCiAjaWYgVVNFKE5F
VFdPUktfQ0ZEQVRBX0FSUkFZX0NBTExCQUNLKQogICAgICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9y
dHNEYXRhQXJyYXkoKSB7IHJldHVybiBmYWxzZTsgfQpAQCAtOTgsNyArMTEwLDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogI2lmIFVTRShDRk5FVFdPUkspCiAgICAgICAgIHZpcnR1YWwgQ0ZDYWNo
ZWRVUkxSZXNwb25zZVJlZiB3aWxsQ2FjaGVSZXNwb25zZShSZXNvdXJjZUhhbmRsZSosIENGQ2Fj
aGVkVVJMUmVzcG9uc2VSZWYgcmVzcG9uc2UpIHsgcmV0dXJuIHJlc3BvbnNlOyB9CiAjZWxzZQot
ICAgICAgICB2aXJ0dWFsIE5TQ2FjaGVkVVJMUmVzcG9uc2UqIHdpbGxDYWNoZVJlc3BvbnNlKFJl
c291cmNlSGFuZGxlKiwgTlNDYWNoZWRVUkxSZXNwb25zZSogcmVzcG9uc2UpIHsgcmV0dXJuIHJl
c3BvbnNlOyB9CisgICAgICAgIHZpcnR1YWwgTlNDYWNoZWRVUkxSZXNwb25zZSAqd2lsbENhY2hl
UmVzcG9uc2UoUmVzb3VyY2VIYW5kbGUqLCBOU0NhY2hlZFVSTFJlc3BvbnNlICpyZXNwb25zZSkg
eyByZXR1cm4gcmVzcG9uc2U7IH0KICNlbmRpZgogICAgICAgICB2aXJ0dWFsIHZvaWQgd2lsbFN0
b3BCdWZmZXJpbmdEYXRhKFJlc291cmNlSGFuZGxlKiwgY29uc3QgY2hhciosIGludCkgeyB9CiAj
ZW5kaWYgLy8gUExBVEZPUk0oTUFDKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9SZXNvdXJjZUhhbmRsZUludGVybmFsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUludGVybmFsLmgJKHJldmlzaW9uIDE0
Njc4NSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVJ
bnRlcm5hbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNjAsNyArMTYwLDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogI2VuZGlmCiAjaWYgUExBVEZPUk0oTUFDKSAmJiAhVVNFKENGTkVUV09SSykKICAg
ICAgICAgUmV0YWluUHRyPE5TVVJMQ29ubmVjdGlvbj4gbV9jb25uZWN0aW9uOwotICAgICAgICBS
ZXRhaW5QdHI8V2ViQ29yZVJlc291cmNlSGFuZGxlQXNEZWxlZ2F0ZT4gbV9kZWxlZ2F0ZTsKKyAg
ICAgICAgUmV0YWluUHRyPGlkPiBtX2RlbGVnYXRlOwogICAgICAgICBSZXRhaW5QdHI8aWQ+IG1f
cHJveHk7CiAjZW5kaWYKICNpZiBQTEFURk9STShNQUMpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2Nocm9taXVtL1Jlc291cmNlSGFuZGxlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nocm9taXVtL1Jlc291cmNlSGFuZGxl
LmNwcAkocmV2aXNpb24gMTQ2Nzg1KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jaHJvbWl1bS9SZXNvdXJjZUhhbmRsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIyMiw2ICsy
MjIsMTggQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6c2V0Q2xpZW50KFJlc291cmNlSAogICAgIGQt
PnNldENsaWVudChjbGllbnQpOwogfQogCit2b2lkIFJlc291cmNlSGFuZGxlOjpjb250aW51ZVdp
bGxTZW5kUmVxdWVzdChjb25zdCBSZXNvdXJjZVJlcXVlc3QmKQoreworICAgIC8vIFJlc291cmNl
SGFuZGxlIG5ldmVyIHVzZXMgYXN5bmMgY2xpZW50IGNhbGxzIG9uIENocm9taXVtIHlldC4KKyAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKwordm9pZCBSZXNvdXJjZUhhbmRsZTo6Y29udGlu
dWVTaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZShib29sKQoreworICAgIC8vIFJlc291cmNlSGFu
ZGxlIG5ldmVyIHVzZXMgYXN5bmMgY2xpZW50IGNhbGxzIG9uIENocm9taXVtIHlldC4KKyAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKwogdm9pZCBSZXNvdXJjZUhhbmRsZTo6c2V0RGVmZXJz
TG9hZGluZyhib29sIHZhbHVlKQogewogICAgIGQtPnNldERlZmVyc0xvYWRpbmcodmFsdWUpOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VIYW5kbGVN
YWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMv
UmVzb3VyY2VIYW5kbGVNYWMubW0JKHJldmlzaW9uIDE0Njc4NSkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlSGFuZGxlTWFjLm1tCSh3b3JraW5nIGNvcHkp
CkBAIC00OCw2ICs0OCw3IEBACiAjaW1wb3J0ICJTaGFyZWRCdWZmZXIuaCIKICNpbXBvcnQgIlN1
YnJlc291cmNlTG9hZGVyLmgiCiAjaW1wb3J0ICJXZWJDb3JlUmVzb3VyY2VIYW5kbGVBc0RlbGVn
YXRlLmgiCisjaW1wb3J0ICJXZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVs
ZWdhdGUuaCIKICNpbXBvcnQgIlN5bmNocm9ub3VzTG9hZGVyQ2xpZW50LmgiCiAjaW1wb3J0ICJX
ZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmgiCiAjaW1wb3J0ICJXZWJDb3JlVVJMUmVzcG9uc2UuaCIK
QEAgLTI1NiwxMCArMjU3LDEyIEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6OnVuc2NoZWR1bGUoU2No
ZWR1bGUKICAgICAgICAgW2QtPm1fY29ubmVjdGlvbi5nZXQoKSB1bnNjaGVkdWxlRnJvbVJ1bkxv
b3A6cnVuTG9vcCBmb3JNb2RlOihOU1N0cmluZyAqKXBhaXItPm1vZGUoKV07CiB9CiAKLVdlYkNv
cmVSZXNvdXJjZUhhbmRsZUFzRGVsZWdhdGUgKlJlc291cmNlSGFuZGxlOjpkZWxlZ2F0ZSgpCitp
ZCBSZXNvdXJjZUhhbmRsZTo6ZGVsZWdhdGUoKQogewogICAgIGlmICghZC0+bV9kZWxlZ2F0ZSkg
ewotICAgICAgICBXZWJDb3JlUmVzb3VyY2VIYW5kbGVBc0RlbGVnYXRlICpkZWxlZ2F0ZSA9IFtb
V2ViQ29yZVJlc291cmNlSGFuZGxlQXNEZWxlZ2F0ZSBhbGxvY10gaW5pdFdpdGhIYW5kbGU6dGhp
c107CisgICAgICAgIGlkIDxOU1VSTENvbm5lY3Rpb25EZWxlZ2F0ZT4gZGVsZWdhdGUgPSAoY2xp
ZW50KCkgJiYgY2xpZW50KCktPnVzZXNBc3luY0NhbGxiYWNrcygpKSA/CisgICAgICAgICAgICBb
W1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZSBhbGxvY10gaW5p
dFdpdGhIYW5kbGU6dGhpc10KKyAgICAgICAgICA6IFtbV2ViQ29yZVJlc291cmNlSGFuZGxlQXNE
ZWxlZ2F0ZSBhbGxvY10gaW5pdFdpdGhIYW5kbGU6dGhpc107CiAgICAgICAgIGQtPm1fZGVsZWdh
dGUgPSBkZWxlZ2F0ZTsKICAgICAgICAgW2RlbGVnYXRlIHJlbGVhc2VdOwogICAgIH0KQEAgLTQw
MCwyMCArNDAzLDQ2IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6OndpbGxTZW5kUmVxdWVzdChSZXMK
ICAgICAgICAgfQogICAgIH0KIAotICAgIFJlZlB0cjxSZXNvdXJjZUhhbmRsZT4gcHJvdGVjdCh0
aGlzKTsKLSAgICBjbGllbnQoKS0+d2lsbFNlbmRSZXF1ZXN0KHRoaXMsIHJlcXVlc3QsIHJlZGly
ZWN0UmVzcG9uc2UpOworICAgIGlmIChjbGllbnQoKS0+dXNlc0FzeW5jQ2FsbGJhY2tzKCkpIHsK
KyAgICAgICAgY2xpZW50KCktPndpbGxTZW5kUmVxdWVzdEFzeW5jKHRoaXMsIHJlcXVlc3QsIHJl
ZGlyZWN0UmVzcG9uc2UpOworICAgIH0gZWxzZSB7CisgICAgICAgIFJlZlB0cjxSZXNvdXJjZUhh
bmRsZT4gcHJvdGVjdCh0aGlzKTsKKyAgICAgICAgY2xpZW50KCktPndpbGxTZW5kUmVxdWVzdCh0
aGlzLCByZXF1ZXN0LCByZWRpcmVjdFJlc3BvbnNlKTsKKworICAgICAgICAvLyBDbGllbnQgY2Fs
bCBtYXkgbm90IHByZXNlcnZlIHRoZSBzZXNzaW9uLCBlc3BlY2lhbGx5IGlmIHRoZSByZXF1ZXN0
IGlzIHNlbnQgb3ZlciBJUEMuCisgICAgICAgIGlmICghcmVxdWVzdC5pc051bGwoKSkKKyAgICAg
ICAgICAgIHJlcXVlc3Quc2V0U3RvcmFnZVNlc3Npb24oZC0+bV9zdG9yYWdlU2Vzc2lvbi5nZXQo
KSk7CisgICAgfQorfQorCit2b2lkIFJlc291cmNlSGFuZGxlOjpjb250aW51ZVdpbGxTZW5kUmVx
dWVzdChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCit7CisgICAgQVNTRVJUKGNsaWVu
dCgpICYmIGNsaWVudCgpLT51c2VzQXN5bmNDYWxsYmFja3MoKSk7CiAKICAgICAvLyBDbGllbnQg
Y2FsbCBtYXkgbm90IHByZXNlcnZlIHRoZSBzZXNzaW9uLCBlc3BlY2lhbGx5IGlmIHRoZSByZXF1
ZXN0IGlzIHNlbnQgb3ZlciBJUEMuCi0gICAgaWYgKCFyZXF1ZXN0LmlzTnVsbCgpKQotICAgICAg
ICByZXF1ZXN0LnNldFN0b3JhZ2VTZXNzaW9uKGQtPm1fc3RvcmFnZVNlc3Npb24uZ2V0KCkpOwor
ICAgIFJlc291cmNlUmVxdWVzdCBuZXdSZXF1ZXN0ID0gcmVxdWVzdDsKKyAgICBpZiAoIW5ld1Jl
cXVlc3QuaXNOdWxsKCkpCisgICAgICAgIG5ld1JlcXVlc3Quc2V0U3RvcmFnZVNlc3Npb24oZC0+
bV9zdG9yYWdlU2Vzc2lvbi5nZXQoKSk7CisgICAgWyhpZClkZWxlZ2F0ZSgpIGNvbnRpbnVlV2ls
bFNlbmRSZXF1ZXN0Om5ld1JlcXVlc3QubnNVUkxSZXF1ZXN0KFVwZGF0ZUhUVFBCb2R5KV07CiB9
CiAKIGJvb2wgUmVzb3VyY2VIYW5kbGU6OnNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlKCkKIHsK
LSAgICBpZiAoY2xpZW50KCkpCi0gICAgICAgIHJldHVybiBjbGllbnQoKS0+c2hvdWxkVXNlQ3Jl
ZGVudGlhbFN0b3JhZ2UodGhpcyk7CisgICAgaWYgKGNsaWVudCgpLT51c2VzQXN5bmNDYWxsYmFj
a3MoKSkgeworICAgICAgICBpZiAoY2xpZW50KCkpCisgICAgICAgICAgICBjbGllbnQoKS0+c2hv
dWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2VBc3luYyh0aGlzKTsKKyAgICAgICAgZWxzZQorICAgICAg
ICAgICAgY29udGludWVTaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZShmYWxzZSk7CisgICAgICAg
IHJldHVybiBmYWxzZTsgLy8gSWdub3JlZCBieSBjYWxsZXIuCisgICAgfSBlbHNlCisgICAgICAg
IHJldHVybiBjbGllbnQoKSAmJiBjbGllbnQoKS0+c2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2Uo
dGhpcyk7Cit9CiAKLSAgICByZXR1cm4gZmFsc2U7Cit2b2lkIFJlc291cmNlSGFuZGxlOjpjb250
aW51ZVNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlKGJvb2wgdXNlQ3JlZGVudGlhbFN0b3JhZ2Up
Cit7CisgICAgQVNTRVJUKGNsaWVudCgpICYmIGNsaWVudCgpLT51c2VzQXN5bmNDYWxsYmFja3Mo
KSk7CisKKyAgICBbKGlkKWRlbGVnYXRlKCkgY29udGludWVTaG91bGRVc2VDcmVkZW50aWFsU3Rv
cmFnZTp1c2VDcmVkZW50aWFsU3RvcmFnZV07CiB9CiAKIHZvaWQgUmVzb3VyY2VIYW5kbGU6OmRp
ZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZSYgY2hhbGxlbmdlKQpAQCAtNDkyLDEwICs1MjEsMjEgQEAgdm9pZCBSZXNvdXJjZUhhbmRs
ZTo6ZGlkQ2FuY2VsQXV0aGVudGljYQogI2lmIFVTRShQUk9URUNUSU9OX1NQQUNFX0FVVEhfQ0FM
TEJBQ0spCiBib29sIFJlc291cmNlSGFuZGxlOjpjYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVj
dGlvblNwYWNlKGNvbnN0IFByb3RlY3Rpb25TcGFjZSYgcHJvdGVjdGlvblNwYWNlKQogewotICAg
IGlmIChjbGllbnQoKSkKLSAgICAgICAgcmV0dXJuIGNsaWVudCgpLT5jYW5BdXRoZW50aWNhdGVB
Z2FpbnN0UHJvdGVjdGlvblNwYWNlKHRoaXMsIHByb3RlY3Rpb25TcGFjZSk7Ci0gICAgICAgIAot
ICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoY2xpZW50KCktPnVzZXNBc3luY0NhbGxiYWNrcygp
KSB7CisgICAgICAgIGlmIChjbGllbnQoKSkKKyAgICAgICAgICAgIGNsaWVudCgpLT5jYW5BdXRo
ZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlQXN5bmModGhpcywgcHJvdGVjdGlvblNwYWNl
KTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgY29udGludWVDYW5BdXRoZW50aWNhdGVBZ2Fp
bnN0UHJvdGVjdGlvblNwYWNlKGZhbHNlKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOyAvLyBJZ25v
cmVkIGJ5IGNhbGxlci4KKyAgICB9IGVsc2UKKyAgICAgICAgcmV0dXJuIGNsaWVudCgpICYmIGNs
aWVudCgpLT5jYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlKHRoaXMsIHByb3Rl
Y3Rpb25TcGFjZSk7Cit9CisKK3ZvaWQgUmVzb3VyY2VIYW5kbGU6OmNvbnRpbnVlQ2FuQXV0aGVu
dGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZShib29sIHJlc3VsdCkKK3sKKyAgICBBU1NFUlQo
Y2xpZW50KCkgJiYgY2xpZW50KCktPnVzZXNBc3luY0NhbGxiYWNrcygpKTsKKworICAgIFsoaWQp
ZGVsZWdhdGUoKSBjb250aW51ZUNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2U6
cmVzdWx0XTsKIH0KICNlbmRpZgogCkBAIC01NTMsNiArNTkzLDE0IEBAIHZvaWQgUmVzb3VyY2VI
YW5kbGU6OnJlY2VpdmVkQ2FuY2VsbGF0aW8KICAgICAgICAgY2xpZW50KCktPnJlY2VpdmVkQ2Fu
Y2VsbGF0aW9uKHRoaXMsIGNoYWxsZW5nZSk7CiB9CiAKK3ZvaWQgUmVzb3VyY2VIYW5kbGU6OmNv
bnRpbnVlV2lsbENhY2hlUmVzcG9uc2UoTlNDYWNoZWRVUkxSZXNwb25zZSAqcmVzcG9uc2UpCit7
CisgICAgQVNTRVJUKGNsaWVudCgpICYmIGNsaWVudCgpLT51c2VzQXN5bmNDYWxsYmFja3MoKSk7
CisKKyAgICBbKGlkKWRlbGVnYXRlKCkgY29udGludWVXaWxsQ2FjaGVSZXNwb25zZTpyZXNwb25z
ZV07Cit9CisKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gIVVTRShDRk5F
VFdPUkspCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3Jl
UmVzb3VyY2VIYW5kbGVBc0RlbGVnYXRlLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzRGVsZWdhdGUubW0J
KHJldmlzaW9uIDE0Njc4NSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFj
L1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzRGVsZWdhdGUubW0JKHdvcmtpbmcgY29weSkKQEAgLTI1
OSwxMSArMjU5LDcgQEAgLSAoTlNDYWNoZWRVUkxSZXNwb25zZSAqKWNvbm5lY3Rpb246KE5TVQog
ICAgICAgICAmJiBbWyhOU0hUVFBVUkxSZXNwb25zZSAqKVtjYWNoZWRSZXNwb25zZSByZXNwb25z
ZV0gYWxsSGVhZGVyRmllbGRzXSBvYmplY3RGb3JLZXk6QCJWYXJ5Il0pCiAgICAgICAgIHJldHVy
biBuaWw7CiAKLSAgICBOU0NhY2hlZFVSTFJlc3BvbnNlICpuZXdSZXNwb25zZSA9IG1faGFuZGxl
LT5jbGllbnQoKS0+d2lsbENhY2hlUmVzcG9uc2UobV9oYW5kbGUsIGNhY2hlZFJlc3BvbnNlKTsK
LSAgICBpZiAobmV3UmVzcG9uc2UgIT0gY2FjaGVkUmVzcG9uc2UpCi0gICAgICAgIHJldHVybiBu
ZXdSZXNwb25zZTsKLSAgICAKLSAgICByZXR1cm4gbmV3UmVzcG9uc2U7CisgICAgcmV0dXJuIG1f
aGFuZGxlLT5jbGllbnQoKS0+d2lsbENhY2hlUmVzcG9uc2UobV9oYW5kbGUsIGNhY2hlZFJlc3Bv
bnNlKTsKIH0KIAogQGVuZApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9t
YWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJlc291
cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlLmgJKHJldmlzaW9uIDE0NjY3NSkJKGZy
b20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJlc291cmNlSGFu
ZGxlQXNEZWxlZ2F0ZS5oOjE0NjY3NSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYkNv
cmVSZXNvdXJjZUhhbmRsZUFzRGVsZWdhdGVfaAorI2RlZmluZSBXZWJDb3JlUmVzb3VyY2VIYW5k
bGVBc0RlbGVnYXRlX2gKKworI2lmICFVU0UoQ0ZORVRXT1JLKQorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisgICAgY2xhc3MgUmVzb3VyY2VIYW5kbGU7Cit9CisKK0BpbnRlcmZhY2UgV2ViQ29yZVJl
c291cmNlSGFuZGxlQXNEZWxlZ2F0ZSA6IE5TT2JqZWN0IDxOU1VSTENvbm5lY3Rpb25EZWxlZ2F0
ZT4geworICAgIFdlYkNvcmU6OlJlc291cmNlSGFuZGxlKiBtX2hhbmRsZTsKK30KKy0gKGlkKWlu
aXRXaXRoSGFuZGxlOihXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZSopaGFuZGxlOworLSAodm9pZClk
ZXRhY2hIYW5kbGU7CitAZW5kCisKKyNlbmRpZiAvLyAhVVNFKENGTkVUV09SSykKKyNlbmRpZiAv
LyBXZWJDb3JlUmVzb3VyY2VIYW5kbGVBc0RlbGVnYXRlX2gKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVl
dWVEZWxlZ2F0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZS5oCShy
ZXZpc2lvbiAxNDY2NzUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9X
ZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGUuaAkod29ya2luZyBj
b3B5KQpAQCAtMjMsMjEgKzIzLDM2IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCiAgKi8KIAotI2lmbmRlZiBXZWJDb3JlUmVzb3VyY2VIYW5kbGVBc0RlbGVnYXRlX2gKLSNk
ZWZpbmUgV2ViQ29yZVJlc291cmNlSGFuZGxlQXNEZWxlZ2F0ZV9oCisjaWZuZGVmIFdlYkNvcmVS
ZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZV9oCisjZGVmaW5lIFdlYkNvcmVS
ZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZV9oCiAKICNpZiAhVVNFKENGTkVU
V09SSykKIAorI2luY2x1ZGUgPGRpc3BhdGNoL2Rpc3BhdGNoLmg+CisjaW5jbHVkZSA8d3RmL1Jl
dGFpblB0ci5oPgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgUmVzb3VyY2VIYW5k
bGU7CiB9CiAKLUBpbnRlcmZhY2UgV2ViQ29yZVJlc291cmNlSGFuZGxlQXNEZWxlZ2F0ZSA6IE5T
T2JqZWN0IDxOU1VSTENvbm5lY3Rpb25EZWxlZ2F0ZT4geworQGludGVyZmFjZSBXZWJDb3JlUmVz
b3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGUgOiBOU09iamVjdCA8TlNVUkxDb25u
ZWN0aW9uRGVsZWdhdGU+IHsKICAgICBXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZSogbV9oYW5kbGU7
CisKKyAgICAvLyBTeW5jaHJvbm91cyBkZWxlZ2F0ZXMgb24gb3BlcmF0aW9uIHF1ZXVlIHdhaXQg
dW50aWwgbWFpbiB0aHJlYWQgc2VuZHMgYW4gYXN5bmNocm9ub3VzIHJlc3BvbnNlLgorICAgIGRp
c3BhdGNoX3NlbWFwaG9yZV90IG1fc2VtYXBob3JlOworICAgIFJldGFpblB0cjxOU1VSTFJlcXVl
c3Q+IG1fcmVxdWVzdFJlc3VsdDsKKyAgICBSZXRhaW5QdHI8TlNDYWNoZWRVUkxSZXNwb25zZT4g
bV9jYWNoZWRSZXNwb25zZVJlc3VsdDsKKyAgICBCT09MIG1fYm9vbFJlc3VsdDsKIH0KIC0gKGlk
KWluaXRXaXRoSGFuZGxlOihXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZSopaGFuZGxlOwogLSAodm9p
ZClkZXRhY2hIYW5kbGU7CistICh2b2lkKWNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0OihOU1VSTFJl
cXVlc3QgKiluZXdSZXF1ZXN0OworLSAodm9pZCljb250aW51ZVNob3VsZFVzZUNyZWRlbnRpYWxT
dG9yYWdlOihCT09MKXVzZUNyZWRlbnRpYWxTdG9yYWdlOworI2lmIFVTRShQUk9URUNUSU9OX1NQ
QUNFX0FVVEhfQ0FMTEJBQ0spCistICh2b2lkKWNvbnRpbnVlQ2FuQXV0aGVudGljYXRlQWdhaW5z
dFByb3RlY3Rpb25TcGFjZTooQk9PTCljYW5BdXRoZW50aWNhdGU7CisjZW5kaWYKKy0gKHZvaWQp
Y29udGludWVXaWxsQ2FjaGVSZXNwb25zZTooTlNDYWNoZWRVUkxSZXNwb25zZSAqKXJlc3BvbnNl
OwogQGVuZAogCiAjZW5kaWYgLy8gIVVTRShDRk5FVFdPUkspCi0jZW5kaWYgLy8gV2ViQ29yZVJl
c291cmNlSGFuZGxlQXNEZWxlZ2F0ZV9oCisjZW5kaWYgLy8gV2ViQ29yZVJlc291cmNlSGFuZGxl
QXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlX2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0
ZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9X
ZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGUubW0JKHJldmlzaW9u
IDE0NjY3NSkJKGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29y
ZVJlc291cmNlSGFuZGxlQXNEZWxlZ2F0ZS5tbToxNDY2NzUpCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVl
RGVsZWdhdGUubW0JKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyNzIgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMDQsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAsIDIwMTEsIDIwMTIs
IDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0
ICJjb25maWcuaCIKKyNpbXBvcnQgIldlYkNvcmVSZXNvdXJjZUhhbmRsZUFzRGVsZWdhdGUuaCIK
KworI2lmICFVU0UoQ0ZORVRXT1JLKQorCisjaW1wb3J0ICJBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZS5oIgorI2ltcG9ydCAiQXV0aGVudGljYXRpb25NYWMuaCIKKyNpbXBvcnQgIkxvZ2dpbmcuaCIK
KyNpbXBvcnQgIlJlc291cmNlSGFuZGxlLmgiCisjaW1wb3J0ICJSZXNvdXJjZUhhbmRsZUNsaWVu
dC5oIgorI2ltcG9ydCAiUmVzb3VyY2VSZXF1ZXN0LmgiCisjaW1wb3J0ICJSZXNvdXJjZVJlc3Bv
bnNlLmgiCisjaW1wb3J0ICJTaGFyZWRCdWZmZXIuaCIKKyNpbXBvcnQgIldlYkNvcmVVUkxSZXNw
b25zZS5oIgorCitAaW50ZXJmYWNlIE5TVVJMUmVxdWVzdCAoRGV0YWlscykKKy0gKGlkKV9wcm9w
ZXJ0eUZvcktleTooTlNTdHJpbmcgKilrZXk7CitAZW5kCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOworCitAaW1wbGVtZW50YXRpb24gV2ViQ29yZVJlc291cmNlSGFuZGxlQXNEZWxlZ2F0ZQor
CistIChpZClpbml0V2l0aEhhbmRsZTooUmVzb3VyY2VIYW5kbGUqKWhhbmRsZQoreworICAgIHNl
bGYgPSBbc2VsZiBpbml0XTsKKyAgICBpZiAoIXNlbGYpCisgICAgICAgIHJldHVybiBuaWw7Cisg
ICAgbV9oYW5kbGUgPSBoYW5kbGU7CisgICAgcmV0dXJuIHNlbGY7Cit9CisKKy0gKHZvaWQpZGV0
YWNoSGFuZGxlCit7CisgICAgbV9oYW5kbGUgPSAwOworfQorCistIChOU1VSTFJlcXVlc3QgKilj
b25uZWN0aW9uOihOU1VSTENvbm5lY3Rpb24gKiljb25uZWN0aW9uIHdpbGxTZW5kUmVxdWVzdDoo
TlNVUkxSZXF1ZXN0ICopbmV3UmVxdWVzdCByZWRpcmVjdFJlc3BvbnNlOihOU1VSTFJlc3BvbnNl
ICopcmVkaXJlY3RSZXNwb25zZQoreworICAgIFVOVVNFRF9QQVJBTShjb25uZWN0aW9uKTsKKwor
ICAgIGlmICghbV9oYW5kbGUpCisgICAgICAgIHJldHVybiBuaWw7CisgICAgCisgICAgLy8gU2Vl
IDxyZGFyOi8vcHJvYmxlbS81MzgwNjk3Pi4gVGhpcyBpcyBhIHdvcmthcm91bmQgZm9yIGEgYmVo
YXZpb3IgY2hhbmdlIGluIENGTmV0d29yayB3aGVyZSB3aWxsU2VuZFJlcXVlc3QgZ2V0cyBjYWxs
ZWQgbW9yZSBvZnRlbi4KKyAgICBpZiAoIXJlZGlyZWN0UmVzcG9uc2UpCisgICAgICAgIHJldHVy
biBuZXdSZXF1ZXN0OworCisjaWYgIUxPR19ESVNBQkxFRAorICAgIGlmIChbcmVkaXJlY3RSZXNw
b25zZSBpc0tpbmRPZkNsYXNzOltOU0hUVFBVUkxSZXNwb25zZSBjbGFzc11dKQorICAgICAgICBM
T0coTmV0d29yaywgIkhhbmRsZSAlcCBkZWxlZ2F0ZSBjb25uZWN0aW9uOiVwIHdpbGxTZW5kUmVx
dWVzdDolQCByZWRpcmVjdFJlc3BvbnNlOiVkLCBMb2NhdGlvbjo8JUA+IiwgbV9oYW5kbGUsIGNv
bm5lY3Rpb24sIFtuZXdSZXF1ZXN0IGRlc2NyaXB0aW9uXSwgc3RhdGljX2Nhc3Q8aW50PihbKGlk
KXJlZGlyZWN0UmVzcG9uc2Ugc3RhdHVzQ29kZV0pLCBbWyhpZClyZWRpcmVjdFJlc3BvbnNlIGFs
bEhlYWRlckZpZWxkc10gb2JqZWN0Rm9yS2V5OkAiTG9jYXRpb24iXSk7CisgICAgZWxzZQorICAg
ICAgICBMT0coTmV0d29yaywgIkhhbmRsZSAlcCBkZWxlZ2F0ZSBjb25uZWN0aW9uOiVwIHdpbGxT
ZW5kUmVxdWVzdDolQCByZWRpcmVjdFJlc3BvbnNlOm5vbi1IVFRQIiwgbV9oYW5kbGUsIGNvbm5l
Y3Rpb24sIFtuZXdSZXF1ZXN0IGRlc2NyaXB0aW9uXSk7IAorI2VuZGlmCisKKyAgICBSZXNvdXJj
ZVJlcXVlc3QgcmVxdWVzdCA9IG5ld1JlcXVlc3Q7CisKKyAgICBtX2hhbmRsZS0+d2lsbFNlbmRS
ZXF1ZXN0KHJlcXVlc3QsIHJlZGlyZWN0UmVzcG9uc2UpOworCisgICAgcmV0dXJuIHJlcXVlc3Qu
bnNVUkxSZXF1ZXN0KFVwZGF0ZUhUVFBCb2R5KTsKK30KKworLSAoQk9PTCljb25uZWN0aW9uU2hv
dWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2U6KE5TVVJMQ29ubmVjdGlvbiAqKWNvbm5lY3Rpb24KK3sK
KyAgICBVTlVTRURfUEFSQU0oY29ubmVjdGlvbik7CisKKyAgICBMT0coTmV0d29yaywgIkhhbmRs
ZSAlcCBkZWxlZ2F0ZSBjb25uZWN0aW9uU2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2U6JXAiLCBt
X2hhbmRsZSwgY29ubmVjdGlvbik7CisKKyAgICBpZiAoIW1faGFuZGxlKQorICAgICAgICByZXR1
cm4gTk87CisKKyAgICByZXR1cm4gbV9oYW5kbGUtPnNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdl
KCk7Cit9CisKKy0gKHZvaWQpY29ubmVjdGlvbjooTlNVUkxDb25uZWN0aW9uICopY29ubmVjdGlv
biBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6KE5TVVJMQXV0aGVudGljYXRpb25D
aGFsbGVuZ2UgKiljaGFsbGVuZ2UKK3sKKyAgICBVTlVTRURfUEFSQU0oY29ubmVjdGlvbik7CisK
KyAgICBMT0coTmV0d29yaywgIkhhbmRsZSAlcCBkZWxlZ2F0ZSBjb25uZWN0aW9uOiVwIGRpZFJl
Y2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTolcCIsIG1faGFuZGxlLCBjb25uZWN0aW9uLCBj
aGFsbGVuZ2UpOworCisgICAgaWYgKCFtX2hhbmRsZSkgeworICAgICAgICBbW2NoYWxsZW5nZSBz
ZW5kZXJdIGNhbmNlbEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOmNoYWxsZW5nZV07CisgICAgICAg
IHJldHVybjsKKyAgICB9CisgICAgbV9oYW5kbGUtPmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZShjb3JlKGNoYWxsZW5nZSkpOworfQorCistICh2b2lkKWNvbm5lY3Rpb246KE5TVVJM
Q29ubmVjdGlvbiAqKWNvbm5lY3Rpb24gZGlkQ2FuY2VsQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6
KE5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgKiljaGFsbGVuZ2UKK3sKKyAgICAvLyBGSVhN
RTogV2UgcHJvYmFibHkgZG9uJ3QgbmVlZCB0byBpbXBsZW1lbnQgdGhpcyAoc2VlIDxyZGFyOi8v
cHJvYmxlbS84OTYwMTI0PikuCisKKyAgICBVTlVTRURfUEFSQU0oY29ubmVjdGlvbik7CisKKyAg
ICBMT0coTmV0d29yaywgIkhhbmRsZSAlcCBkZWxlZ2F0ZSBjb25uZWN0aW9uOiVwIGRpZENhbmNl
bEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOiVwIiwgbV9oYW5kbGUsIGNvbm5lY3Rpb24sIGNoYWxs
ZW5nZSk7CisKKyAgICBpZiAoIW1faGFuZGxlKQorICAgICAgICByZXR1cm47CisgICAgbV9oYW5k
bGUtPmRpZENhbmNlbEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKGNvcmUoY2hhbGxlbmdlKSk7Cit9
CisKKyNpZiBVU0UoUFJPVEVDVElPTl9TUEFDRV9BVVRIX0NBTExCQUNLKQorLSAoQk9PTCljb25u
ZWN0aW9uOihOU1VSTENvbm5lY3Rpb24gKiljb25uZWN0aW9uIGNhbkF1dGhlbnRpY2F0ZUFnYWlu
c3RQcm90ZWN0aW9uU3BhY2U6KE5TVVJMUHJvdGVjdGlvblNwYWNlICopcHJvdGVjdGlvblNwYWNl
Cit7CisgICAgVU5VU0VEX1BBUkFNKGNvbm5lY3Rpb24pOworCisgICAgTE9HKE5ldHdvcmssICJI
YW5kbGUgJXAgZGVsZWdhdGUgY29ubmVjdGlvbjolcCBjYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJv
dGVjdGlvblNwYWNlOiVAOi8vJUA6JXUgcmVhbG06JUAgbWV0aG9kOiVAICVAJUAiLCBtX2hhbmRs
ZSwgY29ubmVjdGlvbiwgW3Byb3RlY3Rpb25TcGFjZSBwcm90b2NvbF0sIFtwcm90ZWN0aW9uU3Bh
Y2UgaG9zdF0sIFtwcm90ZWN0aW9uU3BhY2UgcG9ydF0sIFtwcm90ZWN0aW9uU3BhY2UgcmVhbG1d
LCBbcHJvdGVjdGlvblNwYWNlIGF1dGhlbnRpY2F0aW9uTWV0aG9kXSwgW3Byb3RlY3Rpb25TcGFj
ZSBpc1Byb3h5XSA/IEAicHJveHk6IiA6IEAiIiwgW3Byb3RlY3Rpb25TcGFjZSBpc1Byb3h5XSA/
IFtwcm90ZWN0aW9uU3BhY2UgcHJveHlUeXBlXSA6IEAiIik7CisKKyAgICBpZiAoIW1faGFuZGxl
KQorICAgICAgICByZXR1cm4gTk87CisKKyAgICByZXR1cm4gbV9oYW5kbGUtPmNhbkF1dGhlbnRp
Y2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UoY29yZShwcm90ZWN0aW9uU3BhY2UpKTsKK30KKyNl
bmRpZgorCistICh2b2lkKWNvbm5lY3Rpb246KE5TVVJMQ29ubmVjdGlvbiAqKWNvbm5lY3Rpb24g
ZGlkUmVjZWl2ZVJlc3BvbnNlOihOU1VSTFJlc3BvbnNlICopcgoreworICAgIFVOVVNFRF9QQVJB
TShjb25uZWN0aW9uKTsKKworICAgIExPRyhOZXR3b3JrLCAiSGFuZGxlICVwIGRlbGVnYXRlIGNv
bm5lY3Rpb246JXAgZGlkUmVjZWl2ZVJlc3BvbnNlOiVwIChIVFRQIHN0YXR1cyAlZCwgcmVwb3J0
ZWQgTUlNRVR5cGUgJyVzJykiLCBtX2hhbmRsZSwgY29ubmVjdGlvbiwgciwgW3IgcmVzcG9uZHNU
b1NlbGVjdG9yOkBzZWxlY3RvcihzdGF0dXNDb2RlKV0gPyBbKGlkKXIgc3RhdHVzQ29kZV0gOiAw
LCBbW3IgTUlNRVR5cGVdIFVURjhTdHJpbmddKTsKKworICAgIGlmICghbV9oYW5kbGUgfHwgIW1f
aGFuZGxlLT5jbGllbnQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gQXZvaWQgTUlNRSB0
eXBlIHNuaWZmaW5nIGlmIHRoZSByZXNwb25zZSBjb21lcyBiYWNrIGFzIDMwNCBOb3QgTW9kaWZp
ZWQuCisgICAgaW50IHN0YXR1c0NvZGUgPSBbciByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9y
KHN0YXR1c0NvZGUpXSA/IFsoaWQpciBzdGF0dXNDb2RlXSA6IDA7CisgICAgaWYgKHN0YXR1c0Nv
ZGUgIT0gMzA0KQorICAgICAgICBhZGp1c3RNSU1FVHlwZUlmTmVjZXNzYXJ5KFtyIF9DRlVSTFJl
c3BvbnNlXSk7CisKKyAgICBpZiAoW21faGFuZGxlLT5maXJzdFJlcXVlc3QoKS5uc1VSTFJlcXVl
c3QoRG9Ob3RVcGRhdGVIVFRQQm9keSkgX3Byb3BlcnR5Rm9yS2V5OkAiRm9yY2VIVE1MTUlNRVR5
cGUiXSkKKyAgICAgICAgW3IgX3NldE1JTUVUeXBlOkAidGV4dC9odG1sIl07CisKKyAgICBtX2hh
bmRsZS0+Y2xpZW50KCktPmRpZFJlY2VpdmVSZXNwb25zZShtX2hhbmRsZSwgcik7Cit9CisKKyNp
ZiBVU0UoTkVUV09SS19DRkRBVEFfQVJSQVlfQ0FMTEJBQ0spCistICh2b2lkKWNvbm5lY3Rpb246
KE5TVVJMQ29ubmVjdGlvbiAqKWNvbm5lY3Rpb24gZGlkUmVjZWl2ZURhdGFBcnJheTooTlNBcnJh
eSAqKWRhdGFBcnJheQoreworICAgIFVOVVNFRF9QQVJBTShjb25uZWN0aW9uKTsKKyAgICBMT0co
TmV0d29yaywgIkhhbmRsZSAlcCBkZWxlZ2F0ZSBjb25uZWN0aW9uOiVwIGRpZFJlY2VpdmVEYXRh
QXJyYXk6JXAgYXJyYXlTaXplOiVkIiwgbV9oYW5kbGUsIGNvbm5lY3Rpb24sIGRhdGFBcnJheSwg
W2RhdGFBcnJheSBjb3VudF0pOworCisgICAgaWYgKCFkYXRhQXJyYXkpCisgICAgICAgIHJldHVy
bjsKKworICAgIGlmICghbV9oYW5kbGUgfHwgIW1faGFuZGxlLT5jbGllbnQoKSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgbV9oYW5kbGUtPmhhbmRsZURhdGFBcnJheShyZWludGVycHJldF9jYXN0
PENGQXJyYXlSZWY+KGRhdGFBcnJheSkpOworICAgIC8vIFRoZSBjYWxsIHRvIGRpZFJlY2VpdmVE
YXRhIGFib3ZlIGNhbiBjYW5jZWwgYSBsb2FkLCBhbmQgaWYgc28sIHRoZSBkZWxlZ2F0ZSAoc2Vs
ZikgY291bGQgaGF2ZSBiZWVuIGRlYWxsb2NhdGVkIGJ5IHRoaXMgcG9pbnQuCit9CisjZW5kaWYK
KworLSAodm9pZCljb25uZWN0aW9uOihOU1VSTENvbm5lY3Rpb24gKiljb25uZWN0aW9uIGRpZFJl
Y2VpdmVEYXRhOihOU0RhdGEgKilkYXRhIGxlbmd0aFJlY2VpdmVkOihsb25nIGxvbmcpbGVuZ3Ro
UmVjZWl2ZWQKK3sKKyAgICBVTlVTRURfUEFSQU0oY29ubmVjdGlvbik7CisgICAgVU5VU0VEX1BB
UkFNKGxlbmd0aFJlY2VpdmVkKTsKKworICAgIExPRyhOZXR3b3JrLCAiSGFuZGxlICVwIGRlbGVn
YXRlIGNvbm5lY3Rpb246JXAgZGlkUmVjZWl2ZURhdGE6JXAgbGVuZ3RoUmVjZWl2ZWQ6JWxsZCIs
IG1faGFuZGxlLCBjb25uZWN0aW9uLCBkYXRhLCBsZW5ndGhSZWNlaXZlZCk7CisKKyAgICBpZiAo
IW1faGFuZGxlIHx8ICFtX2hhbmRsZS0+Y2xpZW50KCkpCisgICAgICAgIHJldHVybjsKKyAgICAv
LyBGSVhNRTogSWYgd2UgZ2V0IG1vcmUgdGhhbiAyQiBieXRlcyBpbiBhIHNpbmdsZSBjaHVuaywg
dGhpcyBjb2RlIHdvbid0IGRvIHRoZSByaWdodCB0aGluZy4KKyAgICAvLyBIb3dldmVyLCB3aXRo
IHRvZGF5J3MgY29tcHV0ZXJzIGFuZCBuZXR3b3JraW5nIHNwZWVkcywgdGhpcyB3b24ndCBoYXBw
ZW4gaW4gcHJhY3RpY2UuCisgICAgLy8gQ291bGQgYmUgYW4gaXNzdWUgd2l0aCBhIGdpYW50IGxv
Y2FsIGZpbGUuCisKKyAgICAvLyBGSVhNRTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE5NzkzCisgICAgLy8gLTEgbWVhbnMgd2UgZG8gbm90IHByb3ZpZGUgYW55IGRh
dGEgYWJvdXQgdHJhbnNmZXIgc2l6ZSB0byBpbnNwZWN0b3Igc28gaXQgd291bGQgdXNlCisgICAg
Ly8gQ29udGVudC1MZW5ndGggaGVhZGVycyBvciBjb250ZW50IHNpemUgdG8gc2hvdyB0cmFuc2Zl
ciBzaXplLgorICAgIG1faGFuZGxlLT5jbGllbnQoKS0+ZGlkUmVjZWl2ZUJ1ZmZlcihtX2hhbmRs
ZSwgU2hhcmVkQnVmZmVyOjp3cmFwTlNEYXRhKGRhdGEpLCAtMSk7Cit9CisKKy0gKHZvaWQpY29u
bmVjdGlvbjooTlNVUkxDb25uZWN0aW9uICopY29ubmVjdGlvbiB3aWxsU3RvcEJ1ZmZlcmluZ0Rh
dGE6KE5TRGF0YSAqKWRhdGEKK3sKKyAgICBVTlVTRURfUEFSQU0oY29ubmVjdGlvbik7CisKKyAg
ICBMT0coTmV0d29yaywgIkhhbmRsZSAlcCBkZWxlZ2F0ZSBjb25uZWN0aW9uOiVwIHdpbGxTdG9w
QnVmZmVyaW5nRGF0YTolcCIsIG1faGFuZGxlLCBjb25uZWN0aW9uLCBkYXRhKTsKKworICAgIGlm
ICghbV9oYW5kbGUgfHwgIW1faGFuZGxlLT5jbGllbnQoKSkKKyAgICAgICAgcmV0dXJuOworICAg
IC8vIEZJWE1FOiBJZiB3ZSBnZXQgYSByZXNvdXJjZSB3aXRoIG1vcmUgdGhhbiAyQiBieXRlcywg
dGhpcyBjb2RlIHdvbid0IGRvIHRoZSByaWdodCB0aGluZy4KKyAgICAvLyBIb3dldmVyLCB3aXRo
IHRvZGF5J3MgY29tcHV0ZXJzIGFuZCBuZXR3b3JraW5nIHNwZWVkcywgdGhpcyB3b24ndCBoYXBw
ZW4gaW4gcHJhY3RpY2UuCisgICAgLy8gQ291bGQgYmUgYW4gaXNzdWUgd2l0aCBhIGdpYW50IGxv
Y2FsIGZpbGUuCisgICAgbV9oYW5kbGUtPmNsaWVudCgpLT53aWxsU3RvcEJ1ZmZlcmluZ0RhdGEo
bV9oYW5kbGUsIChjb25zdCBjaGFyKilbZGF0YSBieXRlc10sIHN0YXRpY19jYXN0PGludD4oW2Rh
dGEgbGVuZ3RoXSkpOworfQorCistICh2b2lkKWNvbm5lY3Rpb246KE5TVVJMQ29ubmVjdGlvbiAq
KWNvbm5lY3Rpb24gZGlkU2VuZEJvZHlEYXRhOihOU0ludGVnZXIpYnl0ZXNXcml0dGVuIHRvdGFs
Qnl0ZXNXcml0dGVuOihOU0ludGVnZXIpdG90YWxCeXRlc1dyaXR0ZW4gdG90YWxCeXRlc0V4cGVj
dGVkVG9Xcml0ZTooTlNJbnRlZ2VyKXRvdGFsQnl0ZXNFeHBlY3RlZFRvV3JpdGUKK3sKKyAgICBV
TlVTRURfUEFSQU0oY29ubmVjdGlvbik7CisgICAgVU5VU0VEX1BBUkFNKGJ5dGVzV3JpdHRlbik7
CisKKyAgICBMT0coTmV0d29yaywgIkhhbmRsZSAlcCBkZWxlZ2F0ZSBjb25uZWN0aW9uOiVwIGRp
ZFNlbmRCb2R5RGF0YTolZCB0b3RhbEJ5dGVzV3JpdHRlbjolZCB0b3RhbEJ5dGVzRXhwZWN0ZWRU
b1dyaXRlOiVkIiwgbV9oYW5kbGUsIGNvbm5lY3Rpb24sIGJ5dGVzV3JpdHRlbiwgdG90YWxCeXRl
c1dyaXR0ZW4sIHRvdGFsQnl0ZXNFeHBlY3RlZFRvV3JpdGUpOworCisgICAgaWYgKCFtX2hhbmRs
ZSB8fCAhbV9oYW5kbGUtPmNsaWVudCgpKQorICAgICAgICByZXR1cm47CisgICAgbV9oYW5kbGUt
PmNsaWVudCgpLT5kaWRTZW5kRGF0YShtX2hhbmRsZSwgdG90YWxCeXRlc1dyaXR0ZW4sIHRvdGFs
Qnl0ZXNFeHBlY3RlZFRvV3JpdGUpOworfQorCistICh2b2lkKWNvbm5lY3Rpb25EaWRGaW5pc2hM
b2FkaW5nOihOU1VSTENvbm5lY3Rpb24gKiljb25uZWN0aW9uCit7CisgICAgVU5VU0VEX1BBUkFN
KGNvbm5lY3Rpb24pOworCisgICAgTE9HKE5ldHdvcmssICJIYW5kbGUgJXAgZGVsZWdhdGUgY29u
bmVjdGlvbkRpZEZpbmlzaExvYWRpbmc6JXAiLCBtX2hhbmRsZSwgY29ubmVjdGlvbik7CisKKyAg
ICBpZiAoIW1faGFuZGxlIHx8ICFtX2hhbmRsZS0+Y2xpZW50KCkpCisgICAgICAgIHJldHVybjsK
KworICAgIG1faGFuZGxlLT5jbGllbnQoKS0+ZGlkRmluaXNoTG9hZGluZyhtX2hhbmRsZSwgMCk7
Cit9CisKKy0gKHZvaWQpY29ubmVjdGlvbjooTlNVUkxDb25uZWN0aW9uICopY29ubmVjdGlvbiBk
aWRGYWlsV2l0aEVycm9yOihOU0Vycm9yICopZXJyb3IKK3sKKyAgICBVTlVTRURfUEFSQU0oY29u
bmVjdGlvbik7CisKKyAgICBMT0coTmV0d29yaywgIkhhbmRsZSAlcCBkZWxlZ2F0ZSBjb25uZWN0
aW9uOiVwIGRpZEZhaWxXaXRoRXJyb3I6JUAiLCBtX2hhbmRsZSwgY29ubmVjdGlvbiwgZXJyb3Ip
OworCisgICAgaWYgKCFtX2hhbmRsZSB8fCAhbV9oYW5kbGUtPmNsaWVudCgpKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBtX2hhbmRsZS0+Y2xpZW50KCktPmRpZEZhaWwobV9oYW5kbGUsIGVycm9y
KTsKK30KKworCistIChOU0NhY2hlZFVSTFJlc3BvbnNlICopY29ubmVjdGlvbjooTlNVUkxDb25u
ZWN0aW9uICopY29ubmVjdGlvbiB3aWxsQ2FjaGVSZXNwb25zZTooTlNDYWNoZWRVUkxSZXNwb25z
ZSAqKWNhY2hlZFJlc3BvbnNlCit7CisgICAgTE9HKE5ldHdvcmssICJIYW5kbGUgJXAgZGVsZWdh
dGUgY29ubmVjdGlvbjolcCB3aWxsQ2FjaGVSZXNwb25zZTolcCIsIG1faGFuZGxlLCBjb25uZWN0
aW9uLCBjYWNoZWRSZXNwb25zZSk7CisKKyAgICBVTlVTRURfUEFSQU0oY29ubmVjdGlvbik7CisK
KyAgICBpZiAoIW1faGFuZGxlIHx8ICFtX2hhbmRsZS0+Y2xpZW50KCkpCisgICAgICAgIHJldHVy
biBuaWw7CisKKyAgICAvLyBXb3JrYXJvdW5kIGZvciA8cmRhcjovL3Byb2JsZW0vNjMwMDk5MD4g
Q2FjaGluZyBkb2VzIG5vdCByZXNwZWN0IFZhcnkgSFRUUCBoZWFkZXIuCisgICAgLy8gRklYTUU6
IFdlYkNvcmUgY2FjaGUgaGFzIGlzc3VlcyB3aXRoIFZhcnksIHRvbyAoYnVnIDU4Nzk3LCBidWcg
NzE1MDkpLgorICAgIGlmIChbW2NhY2hlZFJlc3BvbnNlIHJlc3BvbnNlXSBpc0tpbmRPZkNsYXNz
OltOU0hUVFBVUkxSZXNwb25zZSBjbGFzc11dCisgICAgICAgICYmIFtbKE5TSFRUUFVSTFJlc3Bv
bnNlICopW2NhY2hlZFJlc3BvbnNlIHJlc3BvbnNlXSBhbGxIZWFkZXJGaWVsZHNdIG9iamVjdEZv
cktleTpAIlZhcnkiXSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKworICAgIE5TQ2FjaGVkVVJMUmVz
cG9uc2UgKm5ld1Jlc3BvbnNlID0gbV9oYW5kbGUtPmNsaWVudCgpLT53aWxsQ2FjaGVSZXNwb25z
ZShtX2hhbmRsZSwgY2FjaGVkUmVzcG9uc2UpOworICAgIGlmIChuZXdSZXNwb25zZSAhPSBjYWNo
ZWRSZXNwb25zZSkKKyAgICAgICAgcmV0dXJuIG5ld1Jlc3BvbnNlOworICAgIAorICAgIHJldHVy
biBuZXdSZXNwb25zZTsKK30KKworQGVuZAorCisjZW5kaWYgLy8gIVVTRShDRk5FVFdPUkspCisK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJj
ZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZS5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJh
dGlvblF1ZXVlRGVsZWdhdGUubW0JKHJldmlzaW9uIDE0NjY3NSkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVl
dWVEZWxlZ2F0ZS5tbQkod29ya2luZyBjb3B5KQpAQCAtMjQsNyArMjQsNyBAQAogICovCiAKICNp
bXBvcnQgImNvbmZpZy5oIgotI2ltcG9ydCAiV2ViQ29yZVJlc291cmNlSGFuZGxlQXNEZWxlZ2F0
ZS5oIgorI2ltcG9ydCAiV2ViQ29yZVJlc291cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVn
YXRlLmgiCiAKICNpZiAhVVNFKENGTkVUV09SSykKIApAQCAtMzcsNiArMzcsNyBAQAogI2ltcG9y
dCAiUmVzb3VyY2VSZXNwb25zZS5oIgogI2ltcG9ydCAiU2hhcmVkQnVmZmVyLmgiCiAjaW1wb3J0
ICJXZWJDb3JlVVJMUmVzcG9uc2UuaCIKKyNpbXBvcnQgPHd0Zi9NYWluVGhyZWFkLmg+CiAKIEBp
bnRlcmZhY2UgTlNVUkxSZXF1ZXN0IChEZXRhaWxzKQogLSAoaWQpX3Byb3BlcnR5Rm9yS2V5OihO
U1N0cmluZyAqKWtleTsKQEAgLTQ0LDI5ICs0NSw2NSBAQCAtIChpZClfcHJvcGVydHlGb3JLZXk6
KE5TU3RyaW5nICopa2V5OwogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAotQGltcGxlbWVu
dGF0aW9uIFdlYkNvcmVSZXNvdXJjZUhhbmRsZUFzRGVsZWdhdGUKK0BpbXBsZW1lbnRhdGlvbiBX
ZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGUKIAogLSAoaWQpaW5p
dFdpdGhIYW5kbGU6KFJlc291cmNlSGFuZGxlKiloYW5kbGUKIHsKICAgICBzZWxmID0gW3NlbGYg
aW5pdF07CiAgICAgaWYgKCFzZWxmKQogICAgICAgICByZXR1cm4gbmlsOworCiAgICAgbV9oYW5k
bGUgPSBoYW5kbGU7CisgICAgbV9zZW1hcGhvcmUgPSBkaXNwYXRjaF9zZW1hcGhvcmVfY3JlYXRl
KDApOworCiAgICAgcmV0dXJuIHNlbGY7CiB9CiAKIC0gKHZvaWQpZGV0YWNoSGFuZGxlCiB7CiAg
ICAgbV9oYW5kbGUgPSAwOworCisgICAgbV9yZXF1ZXN0UmVzdWx0ID0gbnVsbHB0cjsKKyAgICBt
X2NhY2hlZFJlc3BvbnNlUmVzdWx0ID0gbnVsbHB0cjsKKyAgICBtX2Jvb2xSZXN1bHQgPSBOTzsK
KyAgICBkaXNwYXRjaF9zZW1hcGhvcmVfc2lnbmFsKG1fc2VtYXBob3JlKTsgLy8gT0sgdG8gc2ln
bmFsIGV2ZW4gaWYgd2UgYXJlIG5vdCB3YWl0aW5nLgorfQorCistICh2b2lkKWRlYWxsb2MKK3sK
KyAgICBkaXNwYXRjaF9yZWxlYXNlKG1fc2VtYXBob3JlKTsKKyAgICBbc3VwZXIgZGVhbGxvY107
Cit9CisKKy0gKHZvaWQpY29udGludWVXaWxsU2VuZFJlcXVlc3Q6KE5TVVJMUmVxdWVzdCAqKW5l
d1JlcXVlc3QKK3sKKyAgICBtX3JlcXVlc3RSZXN1bHQgPSBbbmV3UmVxdWVzdCByZXRhaW5dOwor
ICAgIGRpc3BhdGNoX3NlbWFwaG9yZV9zaWduYWwobV9zZW1hcGhvcmUpOworfQorCistICh2b2lk
KWNvbnRpbnVlU2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2U6KEJPT0wpdXNlQ3JlZGVudGlhbFN0
b3JhZ2UKK3sKKyAgICBtX2Jvb2xSZXN1bHQgPSB1c2VDcmVkZW50aWFsU3RvcmFnZTsKKyAgICBk
aXNwYXRjaF9zZW1hcGhvcmVfc2lnbmFsKG1fc2VtYXBob3JlKTsKK30KKworLSAodm9pZCljb250
aW51ZUNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2U6KEJPT0wpY2FuQXV0aGVu
dGljYXRlCit7CisgICAgbV9ib29sUmVzdWx0ID0gY2FuQXV0aGVudGljYXRlOworICAgIGRpc3Bh
dGNoX3NlbWFwaG9yZV9zaWduYWwobV9zZW1hcGhvcmUpOworfQorCistICh2b2lkKWNvbnRpbnVl
V2lsbENhY2hlUmVzcG9uc2U6KE5TQ2FjaGVkVVJMUmVzcG9uc2UgKilyZXNwb25zZQoreworICAg
IG1fY2FjaGVkUmVzcG9uc2VSZXN1bHQgPSByZXNwb25zZTsKKyAgICBkaXNwYXRjaF9zZW1hcGhv
cmVfc2lnbmFsKG1fc2VtYXBob3JlKTsKIH0KIAogLSAoTlNVUkxSZXF1ZXN0ICopY29ubmVjdGlv
bjooTlNVUkxDb25uZWN0aW9uICopY29ubmVjdGlvbiB3aWxsU2VuZFJlcXVlc3Q6KE5TVVJMUmVx
dWVzdCAqKW5ld1JlcXVlc3QgcmVkaXJlY3RSZXNwb25zZTooTlNVUkxSZXNwb25zZSAqKXJlZGly
ZWN0UmVzcG9uc2UKIHsKKyAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKICAgICBVTlVTRURf
UEFSQU0oY29ubmVjdGlvbik7CiAKLSAgICBpZiAoIW1faGFuZGxlKQotICAgICAgICByZXR1cm4g
bmlsOwotICAgIAogICAgIC8vIFNlZSA8cmRhcjovL3Byb2JsZW0vNTM4MDY5Nz4uIFRoaXMgaXMg
YSB3b3JrYXJvdW5kIGZvciBhIGJlaGF2aW9yIGNoYW5nZSBpbiBDRk5ldHdvcmsgd2hlcmUgd2ls
bFNlbmRSZXF1ZXN0IGdldHMgY2FsbGVkIG1vcmUgb2Z0ZW4uCiAgICAgaWYgKCFyZWRpcmVjdFJl
c3BvbnNlKQogICAgICAgICByZXR1cm4gbmV3UmVxdWVzdDsKQEAgLTc4LDE5MiArMTE1LDI1MyBA
QCAtIChOU1VSTFJlcXVlc3QgKiljb25uZWN0aW9uOihOU1VSTENvbm5lCiAgICAgICAgIExPRyhO
ZXR3b3JrLCAiSGFuZGxlICVwIGRlbGVnYXRlIGNvbm5lY3Rpb246JXAgd2lsbFNlbmRSZXF1ZXN0
OiVAIHJlZGlyZWN0UmVzcG9uc2U6bm9uLUhUVFAiLCBtX2hhbmRsZSwgY29ubmVjdGlvbiwgW25l
d1JlcXVlc3QgZGVzY3JpcHRpb25dKTsgCiAjZW5kaWYKIAotICAgIFJlc291cmNlUmVxdWVzdCBy
ZXF1ZXN0ID0gbmV3UmVxdWVzdDsKKyAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFp
bl9xdWV1ZSgpLCBeeworICAgICAgICBpZiAoIW1faGFuZGxlKSB7CisgICAgICAgICAgICBtX3Jl
cXVlc3RSZXN1bHQgPSBudWxscHRyOworICAgICAgICAgICAgZGlzcGF0Y2hfc2VtYXBob3JlX3Np
Z25hbChtX3NlbWFwaG9yZSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KIAotICAg
IG1faGFuZGxlLT53aWxsU2VuZFJlcXVlc3QocmVxdWVzdCwgcmVkaXJlY3RSZXNwb25zZSk7Cisg
ICAgICAgIFJlc291cmNlUmVxdWVzdCByZXF1ZXN0ID0gbmV3UmVxdWVzdDsKIAotICAgIHJldHVy
biByZXF1ZXN0Lm5zVVJMUmVxdWVzdChVcGRhdGVIVFRQQm9keSk7CisgICAgICAgIG1faGFuZGxl
LT53aWxsU2VuZFJlcXVlc3QocmVxdWVzdCwgcmVkaXJlY3RSZXNwb25zZSk7CisgICAgfSk7CisK
KyAgICBkaXNwYXRjaF9zZW1hcGhvcmVfd2FpdChtX3NlbWFwaG9yZSwgRElTUEFUQ0hfVElNRV9G
T1JFVkVSKTsKKyAgICByZXR1cm4gW21fcmVxdWVzdFJlc3VsdC5sZWFrUmVmKCkgYXV0b3JlbGVh
c2VdOwogfQogCiAtIChCT09MKWNvbm5lY3Rpb25TaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZToo
TlNVUkxDb25uZWN0aW9uICopY29ubmVjdGlvbgogeworICAgIEFTU0VSVCghaXNNYWluVGhyZWFk
KCkpOwogICAgIFVOVVNFRF9QQVJBTShjb25uZWN0aW9uKTsKIAogICAgIExPRyhOZXR3b3JrLCAi
SGFuZGxlICVwIGRlbGVnYXRlIGNvbm5lY3Rpb25TaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZTol
cCIsIG1faGFuZGxlLCBjb25uZWN0aW9uKTsKIAotICAgIGlmICghbV9oYW5kbGUpCi0gICAgICAg
IHJldHVybiBOTzsKKyAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgp
LCBeeworICAgICAgICBpZiAoIW1faGFuZGxlKSB7CisgICAgICAgICAgICBtX2Jvb2xSZXN1bHQg
PSBOTzsKKyAgICAgICAgICAgIGRpc3BhdGNoX3NlbWFwaG9yZV9zaWduYWwobV9zZW1hcGhvcmUp
OworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIG1faGFuZGxlLT5zaG91
bGRVc2VDcmVkZW50aWFsU3RvcmFnZSgpOworICAgIH0pOwogCi0gICAgcmV0dXJuIG1faGFuZGxl
LT5zaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZSgpOworICAgIGRpc3BhdGNoX3NlbWFwaG9yZV93
YWl0KG1fc2VtYXBob3JlLCBESVNQQVRDSF9USU1FX0ZPUkVWRVIpOworICAgIHJldHVybiBtX2Jv
b2xSZXN1bHQ7CiB9CiAKIC0gKHZvaWQpY29ubmVjdGlvbjooTlNVUkxDb25uZWN0aW9uICopY29u
bmVjdGlvbiBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6KE5TVVJMQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UgKiljaGFsbGVuZ2UKIHsKKyAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgp
KTsKICAgICBVTlVTRURfUEFSQU0oY29ubmVjdGlvbik7CiAKICAgICBMT0coTmV0d29yaywgIkhh
bmRsZSAlcCBkZWxlZ2F0ZSBjb25uZWN0aW9uOiVwIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZTolcCIsIG1faGFuZGxlLCBjb25uZWN0aW9uLCBjaGFsbGVuZ2UpOwogCi0gICAgaWYg
KCFtX2hhbmRsZSkgewotICAgICAgICBbW2NoYWxsZW5nZSBzZW5kZXJdIGNhbmNlbEF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlOmNoYWxsZW5nZV07Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAg
bV9oYW5kbGUtPmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShjb3JlKGNoYWxsZW5n
ZSkpOworICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIF57Cisg
ICAgICAgIGlmICghbV9oYW5kbGUpIHsKKyAgICAgICAgICAgIFtbY2hhbGxlbmdlIHNlbmRlcl0g
Y2FuY2VsQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6Y2hhbGxlbmdlXTsKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgfQorICAgICAgICBtX2hhbmRsZS0+ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlKGNvcmUoY2hhbGxlbmdlKSk7CisgICAgfSk7CiB9CiAKIC0gKHZvaWQpY29u
bmVjdGlvbjooTlNVUkxDb25uZWN0aW9uICopY29ubmVjdGlvbiBkaWRDYW5jZWxBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZTooTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAqKWNoYWxsZW5nZQog
ewogICAgIC8vIEZJWE1FOiBXZSBwcm9iYWJseSBkb24ndCBuZWVkIHRvIGltcGxlbWVudCB0aGlz
IChzZWUgPHJkYXI6Ly9wcm9ibGVtLzg5NjAxMjQ+KS4KIAorICAgIEFTU0VSVCghaXNNYWluVGhy
ZWFkKCkpOwogICAgIFVOVVNFRF9QQVJBTShjb25uZWN0aW9uKTsKIAogICAgIExPRyhOZXR3b3Jr
LCAiSGFuZGxlICVwIGRlbGVnYXRlIGNvbm5lY3Rpb246JXAgZGlkQ2FuY2VsQXV0aGVudGljYXRp
b25DaGFsbGVuZ2U6JXAiLCBtX2hhbmRsZSwgY29ubmVjdGlvbiwgY2hhbGxlbmdlKTsKIAotICAg
IGlmICghbV9oYW5kbGUpCi0gICAgICAgIHJldHVybjsKLSAgICBtX2hhbmRsZS0+ZGlkQ2FuY2Vs
QXV0aGVudGljYXRpb25DaGFsbGVuZ2UoY29yZShjaGFsbGVuZ2UpKTsKKyAgICBkaXNwYXRjaF9h
c3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBeeworICAgICAgICBpZiAoIW1faGFuZGxl
KQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBtX2hhbmRsZS0+ZGlkQ2FuY2VsQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UoY29yZShjaGFsbGVuZ2UpKTsKKyAgICB9KTsKIH0KIAogI2lmIFVT
RShQUk9URUNUSU9OX1NQQUNFX0FVVEhfQ0FMTEJBQ0spCiAtIChCT09MKWNvbm5lY3Rpb246KE5T
VVJMQ29ubmVjdGlvbiAqKWNvbm5lY3Rpb24gY2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rp
b25TcGFjZTooTlNVUkxQcm90ZWN0aW9uU3BhY2UgKilwcm90ZWN0aW9uU3BhY2UKIHsKKyAgICBB
U1NFUlQoIWlzTWFpblRocmVhZCgpKTsKICAgICBVTlVTRURfUEFSQU0oY29ubmVjdGlvbik7CiAK
ICAgICBMT0coTmV0d29yaywgIkhhbmRsZSAlcCBkZWxlZ2F0ZSBjb25uZWN0aW9uOiVwIGNhbkF1
dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2U6JUA6Ly8lQDoldSByZWFsbTolQCBtZXRo
b2Q6JUAgJUAlQCIsIG1faGFuZGxlLCBjb25uZWN0aW9uLCBbcHJvdGVjdGlvblNwYWNlIHByb3Rv
Y29sXSwgW3Byb3RlY3Rpb25TcGFjZSBob3N0XSwgW3Byb3RlY3Rpb25TcGFjZSBwb3J0XSwgW3By
b3RlY3Rpb25TcGFjZSByZWFsbV0sIFtwcm90ZWN0aW9uU3BhY2UgYXV0aGVudGljYXRpb25NZXRo
b2RdLCBbcHJvdGVjdGlvblNwYWNlIGlzUHJveHldID8gQCJwcm94eToiIDogQCIiLCBbcHJvdGVj
dGlvblNwYWNlIGlzUHJveHldID8gW3Byb3RlY3Rpb25TcGFjZSBwcm94eVR5cGVdIDogQCIiKTsK
IAotICAgIGlmICghbV9oYW5kbGUpCi0gICAgICAgIHJldHVybiBOTzsKKyAgICBkaXNwYXRjaF9h
c3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBeeworICAgICAgICBpZiAoIW1faGFuZGxl
KSB7CisgICAgICAgICAgICBtX2Jvb2xSZXN1bHQgPSBOTzsKKyAgICAgICAgICAgIGRpc3BhdGNo
X3NlbWFwaG9yZV9zaWduYWwobV9zZW1hcGhvcmUpOworICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICB9CisgICAgICAgIG1faGFuZGxlLT5jYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlv
blNwYWNlKGNvcmUocHJvdGVjdGlvblNwYWNlKSk7CisgICAgfSk7CiAKLSAgICByZXR1cm4gbV9o
YW5kbGUtPmNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UoY29yZShwcm90ZWN0
aW9uU3BhY2UpKTsKKyAgICBkaXNwYXRjaF9zZW1hcGhvcmVfd2FpdChtX3NlbWFwaG9yZSwgRElT
UEFUQ0hfVElNRV9GT1JFVkVSKTsKKyAgICByZXR1cm4gbV9ib29sUmVzdWx0OwogfQogI2VuZGlm
CiAKIC0gKHZvaWQpY29ubmVjdGlvbjooTlNVUkxDb25uZWN0aW9uICopY29ubmVjdGlvbiBkaWRS
ZWNlaXZlUmVzcG9uc2U6KE5TVVJMUmVzcG9uc2UgKilyCiB7CisgICAgQVNTRVJUKCFpc01haW5U
aHJlYWQoKSk7CiAgICAgVU5VU0VEX1BBUkFNKGNvbm5lY3Rpb24pOwogCiAgICAgTE9HKE5ldHdv
cmssICJIYW5kbGUgJXAgZGVsZWdhdGUgY29ubmVjdGlvbjolcCBkaWRSZWNlaXZlUmVzcG9uc2U6
JXAgKEhUVFAgc3RhdHVzICVkLCByZXBvcnRlZCBNSU1FVHlwZSAnJXMnKSIsIG1faGFuZGxlLCBj
b25uZWN0aW9uLCByLCBbciByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHN0YXR1c0NvZGUp
XSA/IFsoaWQpciBzdGF0dXNDb2RlXSA6IDAsIFtbciBNSU1FVHlwZV0gVVRGOFN0cmluZ10pOwog
Ci0gICAgaWYgKCFtX2hhbmRsZSB8fCAhbV9oYW5kbGUtPmNsaWVudCgpKQotICAgICAgICByZXR1
cm47Ci0KLSAgICAvLyBBdm9pZCBNSU1FIHR5cGUgc25pZmZpbmcgaWYgdGhlIHJlc3BvbnNlIGNv
bWVzIGJhY2sgYXMgMzA0IE5vdCBNb2RpZmllZC4KLSAgICBpbnQgc3RhdHVzQ29kZSA9IFtyIHJl
c3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Ioc3RhdHVzQ29kZSldID8gWyhpZClyIHN0YXR1c0Nv
ZGVdIDogMDsKLSAgICBpZiAoc3RhdHVzQ29kZSAhPSAzMDQpCi0gICAgICAgIGFkanVzdE1JTUVU
eXBlSWZOZWNlc3NhcnkoW3IgX0NGVVJMUmVzcG9uc2VdKTsKKyAgICBkaXNwYXRjaF9hc3luYyhk
aXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBeeworICAgICAgICBpZiAoIW1faGFuZGxlIHx8ICFt
X2hhbmRsZS0+Y2xpZW50KCkpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgLy8gQXZv
aWQgTUlNRSB0eXBlIHNuaWZmaW5nIGlmIHRoZSByZXNwb25zZSBjb21lcyBiYWNrIGFzIDMwNCBO
b3QgTW9kaWZpZWQuCisgICAgICAgIGludCBzdGF0dXNDb2RlID0gW3IgcmVzcG9uZHNUb1NlbGVj
dG9yOkBzZWxlY3RvcihzdGF0dXNDb2RlKV0gPyBbKGlkKXIgc3RhdHVzQ29kZV0gOiAwOworICAg
ICAgICBpZiAoc3RhdHVzQ29kZSAhPSAzMDQpCisgICAgICAgICAgICBhZGp1c3RNSU1FVHlwZUlm
TmVjZXNzYXJ5KFtyIF9DRlVSTFJlc3BvbnNlXSk7CiAKLSAgICBpZiAoW21faGFuZGxlLT5maXJz
dFJlcXVlc3QoKS5uc1VSTFJlcXVlc3QoRG9Ob3RVcGRhdGVIVFRQQm9keSkgX3Byb3BlcnR5Rm9y
S2V5OkAiRm9yY2VIVE1MTUlNRVR5cGUiXSkKLSAgICAgICAgW3IgX3NldE1JTUVUeXBlOkAidGV4
dC9odG1sIl07CisgICAgICAgIGlmIChbbV9oYW5kbGUtPmZpcnN0UmVxdWVzdCgpLm5zVVJMUmVx
dWVzdChEb05vdFVwZGF0ZUhUVFBCb2R5KSBfcHJvcGVydHlGb3JLZXk6QCJGb3JjZUhUTUxNSU1F
VHlwZSJdKQorICAgICAgICAgICAgW3IgX3NldE1JTUVUeXBlOkAidGV4dC9odG1sIl07CiAKLSAg
ICBtX2hhbmRsZS0+Y2xpZW50KCktPmRpZFJlY2VpdmVSZXNwb25zZShtX2hhbmRsZSwgcik7Cisg
ICAgICAgIG1faGFuZGxlLT5jbGllbnQoKS0+ZGlkUmVjZWl2ZVJlc3BvbnNlKG1faGFuZGxlLCBy
KTsKKyAgICB9KTsKIH0KIAogI2lmIFVTRShORVRXT1JLX0NGREFUQV9BUlJBWV9DQUxMQkFDSykK
IC0gKHZvaWQpY29ubmVjdGlvbjooTlNVUkxDb25uZWN0aW9uICopY29ubmVjdGlvbiBkaWRSZWNl
aXZlRGF0YUFycmF5OihOU0FycmF5ICopZGF0YUFycmF5CiB7CisgICAgQVNTRVJUKCFpc01haW5U
aHJlYWQoKSk7CiAgICAgVU5VU0VEX1BBUkFNKGNvbm5lY3Rpb24pOwotICAgIExPRyhOZXR3b3Jr
LCAiSGFuZGxlICVwIGRlbGVnYXRlIGNvbm5lY3Rpb246JXAgZGlkUmVjZWl2ZURhdGFBcnJheTol
cCBhcnJheVNpemU6JWQiLCBtX2hhbmRsZSwgY29ubmVjdGlvbiwgZGF0YUFycmF5LCBbZGF0YUFy
cmF5IGNvdW50XSk7Ci0KLSAgICBpZiAoIWRhdGFBcnJheSkKLSAgICAgICAgcmV0dXJuOwogCi0g
ICAgaWYgKCFtX2hhbmRsZSB8fCAhbV9oYW5kbGUtPmNsaWVudCgpKQotICAgICAgICByZXR1cm47
CisgICAgTE9HKE5ldHdvcmssICJIYW5kbGUgJXAgZGVsZWdhdGUgY29ubmVjdGlvbjolcCBkaWRS
ZWNlaXZlRGF0YUFycmF5OiVwIGFycmF5U2l6ZTolZCIsIG1faGFuZGxlLCBjb25uZWN0aW9uLCBk
YXRhQXJyYXksIFtkYXRhQXJyYXkgY291bnRdKTsKIAotICAgIG1faGFuZGxlLT5oYW5kbGVEYXRh
QXJyYXkocmVpbnRlcnByZXRfY2FzdDxDRkFycmF5UmVmPihkYXRhQXJyYXkpKTsKLSAgICAvLyBU
aGUgY2FsbCB0byBkaWRSZWNlaXZlRGF0YSBhYm92ZSBjYW4gY2FuY2VsIGEgbG9hZCwgYW5kIGlm
IHNvLCB0aGUgZGVsZWdhdGUgKHNlbGYpIGNvdWxkIGhhdmUgYmVlbiBkZWFsbG9jYXRlZCBieSB0
aGlzIHBvaW50LgorICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCks
IF57CisgICAgICAgIGlmICghZGF0YUFycmF5KQorICAgICAgICAgICAgcmV0dXJuOworCisgICAg
ICAgIGlmICghbV9oYW5kbGUgfHwgIW1faGFuZGxlLT5jbGllbnQoKSkKKyAgICAgICAgICAgIHJl
dHVybjsKKworICAgICAgICBtX2hhbmRsZS0+aGFuZGxlRGF0YUFycmF5KHJlaW50ZXJwcmV0X2Nh
c3Q8Q0ZBcnJheVJlZj4oZGF0YUFycmF5KSk7CisgICAgICAgIC8vIFRoZSBjYWxsIHRvIGRpZFJl
Y2VpdmVEYXRhIGFib3ZlIGNhbiBjYW5jZWwgYSBsb2FkLCBhbmQgaWYgc28sIHRoZSBkZWxlZ2F0
ZSAoc2VsZikgY291bGQgaGF2ZSBiZWVuIGRlYWxsb2NhdGVkIGJ5IHRoaXMgcG9pbnQuCisgICAg
fSk7CiB9CiAjZW5kaWYKIAogLSAodm9pZCljb25uZWN0aW9uOihOU1VSTENvbm5lY3Rpb24gKilj
b25uZWN0aW9uIGRpZFJlY2VpdmVEYXRhOihOU0RhdGEgKilkYXRhIGxlbmd0aFJlY2VpdmVkOihs
b25nIGxvbmcpbGVuZ3RoUmVjZWl2ZWQKIHsKKyAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsK
ICAgICBVTlVTRURfUEFSQU0oY29ubmVjdGlvbik7CiAgICAgVU5VU0VEX1BBUkFNKGxlbmd0aFJl
Y2VpdmVkKTsKIAogICAgIExPRyhOZXR3b3JrLCAiSGFuZGxlICVwIGRlbGVnYXRlIGNvbm5lY3Rp
b246JXAgZGlkUmVjZWl2ZURhdGE6JXAgbGVuZ3RoUmVjZWl2ZWQ6JWxsZCIsIG1faGFuZGxlLCBj
b25uZWN0aW9uLCBkYXRhLCBsZW5ndGhSZWNlaXZlZCk7CiAKLSAgICBpZiAoIW1faGFuZGxlIHx8
ICFtX2hhbmRsZS0+Y2xpZW50KCkpCi0gICAgICAgIHJldHVybjsKLSAgICAvLyBGSVhNRTogSWYg
d2UgZ2V0IG1vcmUgdGhhbiAyQiBieXRlcyBpbiBhIHNpbmdsZSBjaHVuaywgdGhpcyBjb2RlIHdv
bid0IGRvIHRoZSByaWdodCB0aGluZy4KLSAgICAvLyBIb3dldmVyLCB3aXRoIHRvZGF5J3MgY29t
cHV0ZXJzIGFuZCBuZXR3b3JraW5nIHNwZWVkcywgdGhpcyB3b24ndCBoYXBwZW4gaW4gcHJhY3Rp
Y2UuCi0gICAgLy8gQ291bGQgYmUgYW4gaXNzdWUgd2l0aCBhIGdpYW50IGxvY2FsIGZpbGUuCi0K
LSAgICAvLyBGSVhNRTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5
NzkzCi0gICAgLy8gLTEgbWVhbnMgd2UgZG8gbm90IHByb3ZpZGUgYW55IGRhdGEgYWJvdXQgdHJh
bnNmZXIgc2l6ZSB0byBpbnNwZWN0b3Igc28gaXQgd291bGQgdXNlCi0gICAgLy8gQ29udGVudC1M
ZW5ndGggaGVhZGVycyBvciBjb250ZW50IHNpemUgdG8gc2hvdyB0cmFuc2ZlciBzaXplLgotICAg
IG1faGFuZGxlLT5jbGllbnQoKS0+ZGlkUmVjZWl2ZUJ1ZmZlcihtX2hhbmRsZSwgU2hhcmVkQnVm
ZmVyOjp3cmFwTlNEYXRhKGRhdGEpLCAtMSk7CisgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hf
Z2V0X21haW5fcXVldWUoKSwgXnsKKyAgICAgICAgaWYgKCFtX2hhbmRsZSB8fCAhbV9oYW5kbGUt
PmNsaWVudCgpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAvLyBGSVhNRTogSWYgd2Ug
Z2V0IG1vcmUgdGhhbiAyQiBieXRlcyBpbiBhIHNpbmdsZSBjaHVuaywgdGhpcyBjb2RlIHdvbid0
IGRvIHRoZSByaWdodCB0aGluZy4KKyAgICAgICAgLy8gSG93ZXZlciwgd2l0aCB0b2RheSdzIGNv
bXB1dGVycyBhbmQgbmV0d29ya2luZyBzcGVlZHMsIHRoaXMgd29uJ3QgaGFwcGVuIGluIHByYWN0
aWNlLgorICAgICAgICAvLyBDb3VsZCBiZSBhbiBpc3N1ZSB3aXRoIGEgZ2lhbnQgbG9jYWwgZmls
ZS4KKworICAgICAgICAvLyBGSVhNRTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE5NzkzCisgICAgICAgIC8vIC0xIG1lYW5zIHdlIGRvIG5vdCBwcm92aWRlIGFueSBk
YXRhIGFib3V0IHRyYW5zZmVyIHNpemUgdG8gaW5zcGVjdG9yIHNvIGl0IHdvdWxkIHVzZQorICAg
ICAgICAvLyBDb250ZW50LUxlbmd0aCBoZWFkZXJzIG9yIGNvbnRlbnQgc2l6ZSB0byBzaG93IHRy
YW5zZmVyIHNpemUuCisgICAgICAgIG1faGFuZGxlLT5jbGllbnQoKS0+ZGlkUmVjZWl2ZUJ1ZmZl
cihtX2hhbmRsZSwgU2hhcmVkQnVmZmVyOjp3cmFwTlNEYXRhKGRhdGEpLCAtMSk7CisgICAgfSk7
CiB9CiAKIC0gKHZvaWQpY29ubmVjdGlvbjooTlNVUkxDb25uZWN0aW9uICopY29ubmVjdGlvbiB3
aWxsU3RvcEJ1ZmZlcmluZ0RhdGE6KE5TRGF0YSAqKWRhdGEKIHsKKyAgICBBU1NFUlQoIWlzTWFp
blRocmVhZCgpKTsKICAgICBVTlVTRURfUEFSQU0oY29ubmVjdGlvbik7CiAKICAgICBMT0coTmV0
d29yaywgIkhhbmRsZSAlcCBkZWxlZ2F0ZSBjb25uZWN0aW9uOiVwIHdpbGxTdG9wQnVmZmVyaW5n
RGF0YTolcCIsIG1faGFuZGxlLCBjb25uZWN0aW9uLCBkYXRhKTsKIAotICAgIGlmICghbV9oYW5k
bGUgfHwgIW1faGFuZGxlLT5jbGllbnQoKSkKLSAgICAgICAgcmV0dXJuOwotICAgIC8vIEZJWE1F
OiBJZiB3ZSBnZXQgYSByZXNvdXJjZSB3aXRoIG1vcmUgdGhhbiAyQiBieXRlcywgdGhpcyBjb2Rl
IHdvbid0IGRvIHRoZSByaWdodCB0aGluZy4KLSAgICAvLyBIb3dldmVyLCB3aXRoIHRvZGF5J3Mg
Y29tcHV0ZXJzIGFuZCBuZXR3b3JraW5nIHNwZWVkcywgdGhpcyB3b24ndCBoYXBwZW4gaW4gcHJh
Y3RpY2UuCi0gICAgLy8gQ291bGQgYmUgYW4gaXNzdWUgd2l0aCBhIGdpYW50IGxvY2FsIGZpbGUu
Ci0gICAgbV9oYW5kbGUtPmNsaWVudCgpLT53aWxsU3RvcEJ1ZmZlcmluZ0RhdGEobV9oYW5kbGUs
IChjb25zdCBjaGFyKilbZGF0YSBieXRlc10sIHN0YXRpY19jYXN0PGludD4oW2RhdGEgbGVuZ3Ro
XSkpOworICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIF57Cisg
ICAgICAgIGlmICghbV9oYW5kbGUgfHwgIW1faGFuZGxlLT5jbGllbnQoKSkKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgLy8gRklYTUU6IElmIHdlIGdldCBhIHJlc291cmNlIHdpdGggbW9y
ZSB0aGFuIDJCIGJ5dGVzLCB0aGlzIGNvZGUgd29uJ3QgZG8gdGhlIHJpZ2h0IHRoaW5nLgorICAg
ICAgICAvLyBIb3dldmVyLCB3aXRoIHRvZGF5J3MgY29tcHV0ZXJzIGFuZCBuZXR3b3JraW5nIHNw
ZWVkcywgdGhpcyB3b24ndCBoYXBwZW4gaW4gcHJhY3RpY2UuCisgICAgICAgIC8vIENvdWxkIGJl
IGFuIGlzc3VlIHdpdGggYSBnaWFudCBsb2NhbCBmaWxlLgorICAgICAgICBtX2hhbmRsZS0+Y2xp
ZW50KCktPndpbGxTdG9wQnVmZmVyaW5nRGF0YShtX2hhbmRsZSwgKGNvbnN0IGNoYXIqKVtkYXRh
IGJ5dGVzXSwgc3RhdGljX2Nhc3Q8aW50PihbZGF0YSBsZW5ndGhdKSk7CisgICAgfSk7CiB9CiAK
IC0gKHZvaWQpY29ubmVjdGlvbjooTlNVUkxDb25uZWN0aW9uICopY29ubmVjdGlvbiBkaWRTZW5k
Qm9keURhdGE6KE5TSW50ZWdlcilieXRlc1dyaXR0ZW4gdG90YWxCeXRlc1dyaXR0ZW46KE5TSW50
ZWdlcil0b3RhbEJ5dGVzV3JpdHRlbiB0b3RhbEJ5dGVzRXhwZWN0ZWRUb1dyaXRlOihOU0ludGVn
ZXIpdG90YWxCeXRlc0V4cGVjdGVkVG9Xcml0ZQogeworICAgIEFTU0VSVCghaXNNYWluVGhyZWFk
KCkpOwogICAgIFVOVVNFRF9QQVJBTShjb25uZWN0aW9uKTsKICAgICBVTlVTRURfUEFSQU0oYnl0
ZXNXcml0dGVuKTsKIAogICAgIExPRyhOZXR3b3JrLCAiSGFuZGxlICVwIGRlbGVnYXRlIGNvbm5l
Y3Rpb246JXAgZGlkU2VuZEJvZHlEYXRhOiVkIHRvdGFsQnl0ZXNXcml0dGVuOiVkIHRvdGFsQnl0
ZXNFeHBlY3RlZFRvV3JpdGU6JWQiLCBtX2hhbmRsZSwgY29ubmVjdGlvbiwgYnl0ZXNXcml0dGVu
LCB0b3RhbEJ5dGVzV3JpdHRlbiwgdG90YWxCeXRlc0V4cGVjdGVkVG9Xcml0ZSk7CiAKLSAgICBp
ZiAoIW1faGFuZGxlIHx8ICFtX2hhbmRsZS0+Y2xpZW50KCkpCi0gICAgICAgIHJldHVybjsKLSAg
ICBtX2hhbmRsZS0+Y2xpZW50KCktPmRpZFNlbmREYXRhKG1faGFuZGxlLCB0b3RhbEJ5dGVzV3Jp
dHRlbiwgdG90YWxCeXRlc0V4cGVjdGVkVG9Xcml0ZSk7CisgICAgZGlzcGF0Y2hfYXN5bmMoZGlz
cGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgXnsKKyAgICAgICAgaWYgKCFtX2hhbmRsZSB8fCAhbV9o
YW5kbGUtPmNsaWVudCgpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBtX2hhbmRsZS0+
Y2xpZW50KCktPmRpZFNlbmREYXRhKG1faGFuZGxlLCB0b3RhbEJ5dGVzV3JpdHRlbiwgdG90YWxC
eXRlc0V4cGVjdGVkVG9Xcml0ZSk7CisgICAgfSk7CiB9CiAKIC0gKHZvaWQpY29ubmVjdGlvbkRp
ZEZpbmlzaExvYWRpbmc6KE5TVVJMQ29ubmVjdGlvbiAqKWNvbm5lY3Rpb24KIHsKKyAgICBBU1NF
UlQoIWlzTWFpblRocmVhZCgpKTsKICAgICBVTlVTRURfUEFSQU0oY29ubmVjdGlvbik7CiAKICAg
ICBMT0coTmV0d29yaywgIkhhbmRsZSAlcCBkZWxlZ2F0ZSBjb25uZWN0aW9uRGlkRmluaXNoTG9h
ZGluZzolcCIsIG1faGFuZGxlLCBjb25uZWN0aW9uKTsKIAotICAgIGlmICghbV9oYW5kbGUgfHwg
IW1faGFuZGxlLT5jbGllbnQoKSkKLSAgICAgICAgcmV0dXJuOworICAgIGRpc3BhdGNoX2FzeW5j
KGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIF57CisgICAgICAgIGlmICghbV9oYW5kbGUgfHwg
IW1faGFuZGxlLT5jbGllbnQoKSkKKyAgICAgICAgICAgIHJldHVybjsKIAotICAgIG1faGFuZGxl
LT5jbGllbnQoKS0+ZGlkRmluaXNoTG9hZGluZyhtX2hhbmRsZSwgMCk7CisgICAgICAgIG1faGFu
ZGxlLT5jbGllbnQoKS0+ZGlkRmluaXNoTG9hZGluZyhtX2hhbmRsZSwgMCk7CisgICAgfSk7CiB9
CiAKIC0gKHZvaWQpY29ubmVjdGlvbjooTlNVUkxDb25uZWN0aW9uICopY29ubmVjdGlvbiBkaWRG
YWlsV2l0aEVycm9yOihOU0Vycm9yICopZXJyb3IKIHsKKyAgICBBU1NFUlQoIWlzTWFpblRocmVh
ZCgpKTsKICAgICBVTlVTRURfUEFSQU0oY29ubmVjdGlvbik7CiAKICAgICBMT0coTmV0d29yaywg
IkhhbmRsZSAlcCBkZWxlZ2F0ZSBjb25uZWN0aW9uOiVwIGRpZEZhaWxXaXRoRXJyb3I6JUAiLCBt
X2hhbmRsZSwgY29ubmVjdGlvbiwgZXJyb3IpOwogCi0gICAgaWYgKCFtX2hhbmRsZSB8fCAhbV9o
YW5kbGUtPmNsaWVudCgpKQotICAgICAgICByZXR1cm47CisgICAgZGlzcGF0Y2hfYXN5bmMoZGlz
cGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgXnsKKyAgICAgICAgaWYgKCFtX2hhbmRsZSB8fCAhbV9o
YW5kbGUtPmNsaWVudCgpKQorICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9oYW5kbGUtPmNs
aWVudCgpLT5kaWRGYWlsKG1faGFuZGxlLCBlcnJvcik7CisgICAgICAgIG1faGFuZGxlLT5jbGll
bnQoKS0+ZGlkRmFpbChtX2hhbmRsZSwgZXJyb3IpOworICAgIH0pOwogfQogCiAKIC0gKE5TQ2Fj
aGVkVVJMUmVzcG9uc2UgKiljb25uZWN0aW9uOihOU1VSTENvbm5lY3Rpb24gKiljb25uZWN0aW9u
IHdpbGxDYWNoZVJlc3BvbnNlOihOU0NhY2hlZFVSTFJlc3BvbnNlICopY2FjaGVkUmVzcG9uc2UK
IHsKLSAgICBMT0coTmV0d29yaywgIkhhbmRsZSAlcCBkZWxlZ2F0ZSBjb25uZWN0aW9uOiVwIHdp
bGxDYWNoZVJlc3BvbnNlOiVwIiwgbV9oYW5kbGUsIGNvbm5lY3Rpb24sIGNhY2hlZFJlc3BvbnNl
KTsKLQorICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwogICAgIFVOVVNFRF9QQVJBTShjb25u
ZWN0aW9uKTsKIAotICAgIGlmICghbV9oYW5kbGUgfHwgIW1faGFuZGxlLT5jbGllbnQoKSkKLSAg
ICAgICAgcmV0dXJuIG5pbDsKKyAgICBMT0coTmV0d29yaywgIkhhbmRsZSAlcCBkZWxlZ2F0ZSBj
b25uZWN0aW9uOiVwIHdpbGxDYWNoZVJlc3BvbnNlOiVwIiwgbV9oYW5kbGUsIGNvbm5lY3Rpb24s
IGNhY2hlZFJlc3BvbnNlKTsKIAotICAgIC8vIFdvcmthcm91bmQgZm9yIDxyZGFyOi8vcHJvYmxl
bS82MzAwOTkwPiBDYWNoaW5nIGRvZXMgbm90IHJlc3BlY3QgVmFyeSBIVFRQIGhlYWRlci4KLSAg
ICAvLyBGSVhNRTogV2ViQ29yZSBjYWNoZSBoYXMgaXNzdWVzIHdpdGggVmFyeSwgdG9vIChidWcg
NTg3OTcsIGJ1ZyA3MTUwOSkuCi0gICAgaWYgKFtbY2FjaGVkUmVzcG9uc2UgcmVzcG9uc2VdIGlz
S2luZE9mQ2xhc3M6W05TSFRUUFVSTFJlc3BvbnNlIGNsYXNzXV0KLSAgICAgICAgJiYgW1soTlNI
VFRQVVJMUmVzcG9uc2UgKilbY2FjaGVkUmVzcG9uc2UgcmVzcG9uc2VdIGFsbEhlYWRlckZpZWxk
c10gb2JqZWN0Rm9yS2V5OkAiVmFyeSJdKQotICAgICAgICByZXR1cm4gbmlsOworICAgIGRpc3Bh
dGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIF57CisgICAgICAgIGlmICghbV9o
YW5kbGUgfHwgIW1faGFuZGxlLT5jbGllbnQoKSkgeworICAgICAgICAgICAgbV9jYWNoZWRSZXNw
b25zZVJlc3VsdCA9IG51bGxwdHI7CisgICAgICAgICAgICBkaXNwYXRjaF9zZW1hcGhvcmVfc2ln
bmFsKG1fc2VtYXBob3JlKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAg
ICAgIC8vIFdvcmthcm91bmQgZm9yIDxyZGFyOi8vcHJvYmxlbS82MzAwOTkwPiBDYWNoaW5nIGRv
ZXMgbm90IHJlc3BlY3QgVmFyeSBIVFRQIGhlYWRlci4KKyAgICAgICAgLy8gRklYTUU6IFdlYkNv
cmUgY2FjaGUgaGFzIGlzc3VlcyB3aXRoIFZhcnksIHRvbyAoYnVnIDU4Nzk3LCBidWcgNzE1MDkp
LgorICAgICAgICBpZiAoW1tjYWNoZWRSZXNwb25zZSByZXNwb25zZV0gaXNLaW5kT2ZDbGFzczpb
TlNIVFRQVVJMUmVzcG9uc2UgY2xhc3NdXQorICAgICAgICAgICAgJiYgW1soTlNIVFRQVVJMUmVz
cG9uc2UgKilbY2FjaGVkUmVzcG9uc2UgcmVzcG9uc2VdIGFsbEhlYWRlckZpZWxkc10gb2JqZWN0
Rm9yS2V5OkAiVmFyeSJdKSB7CisgICAgICAgICAgICBtX2NhY2hlZFJlc3BvbnNlUmVzdWx0ID0g
bnVsbHB0cjsKKyAgICAgICAgICAgIGRpc3BhdGNoX3NlbWFwaG9yZV9zaWduYWwobV9zZW1hcGhv
cmUpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgbV9oYW5kbGUt
PmNsaWVudCgpLT53aWxsQ2FjaGVSZXNwb25zZUFzeW5jKG1faGFuZGxlLCBjYWNoZWRSZXNwb25z
ZSk7CisgICAgfSk7CiAKLSAgICBOU0NhY2hlZFVSTFJlc3BvbnNlICpuZXdSZXNwb25zZSA9IG1f
aGFuZGxlLT5jbGllbnQoKS0+d2lsbENhY2hlUmVzcG9uc2UobV9oYW5kbGUsIGNhY2hlZFJlc3Bv
bnNlKTsKLSAgICBpZiAobmV3UmVzcG9uc2UgIT0gY2FjaGVkUmVzcG9uc2UpCi0gICAgICAgIHJl
dHVybiBuZXdSZXNwb25zZTsKLSAgICAKLSAgICByZXR1cm4gbmV3UmVzcG9uc2U7CisgICAgZGlz
cGF0Y2hfc2VtYXBob3JlX3dhaXQobV9zZW1hcGhvcmUsIERJU1BBVENIX1RJTUVfRk9SRVZFUik7
CisgICAgcmV0dXJuIFttX2NhY2hlZFJlc3BvbnNlUmVzdWx0LmxlYWtSZWYoKSBhdXRvcmVsZWFz
ZV07CiB9CiAKIEBlbmQKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0Njg5NykKKysrIFNvdXJj
ZS9XZWJLaXQyL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDYyIEBACisyMDEz
LTAzLTI2ICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgorCisgICAgICAgIDxy
ZGFyOi8vcHJvYmxlbS8xMzE5NDI2Mz4gQ3Jhc2hlcyBpbiBOZXR3b3JrUHJvY2VzcyBkdWUgdG8g
dGhyZWFkaW5nIGlzc3VlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTEzMjU2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgVXNlIGFzeW5jaHJvbm91cyB2ZXJzaW9uIG9mIFJlc291cmNlSGFuZGxlL1Jlc291
cmNlSGFuZGxlQ2xpZW50IGluIE5ldHdvcmtQcm9jZXNzLgorICAgICAgICBXZSBub3cgcnVuIFdl
YkNvcmUgY29kZSBvbiBtYWluIHRocmVhZCwgc28gd2UgY2FuJ3QgYmxvY2sgaXQuCisKKyAgICAg
ICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRpZFJlY2VpdmVNZXNzYWdlKToKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIubWVzc2FnZXMuaW46IEFkZGVkLgorICAg
ICAgICAqIFdlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgTWFkZSBO
ZXR3b3JrUmVzb3VyY2VMb2FkZXIgYSBtZXNzYWdlIHJlY2VpdmVyLiBNZXNzYWdlcyB0aGF0IHVz
ZWQgdG8gYmUgc3luYyBhcmUKKyAgICAgICAgbm93IGFzeW5jLCBhbmQgcmVzcG9uc2VzIG5lZWQg
dG8gYmUgc2VudCB0byB0aGUgbG9hZGVyLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Jlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNl
TG9hZGVyOjp3aWxsU2VuZFJlcXVlc3RBc3luYyk6IFRoaXMgbm93IGhhcHBlbnMgb24gbWFpbgor
ICAgICAgICB0aHJlYWQsIGFuZCB0aHVzIGNhbm5vdCBiZSBzeW5jLgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0KTogTm90aWZ5
IHRoZSByZXNvdXJjZQorICAgICAgICBoYW5kbGUgb25jZSBhIHJlc3BvbnNlIGlzIHJlYWR5Lgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZFNlbmREYXRhKTogUmVt
b3ZlZCB1bm5lY2Vzc2FyeSBXZWJDb3JlIHByZWZpeGVzLgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVDYWNoZWRNZXRhZGF0YSk6IERpdHRvLgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6Ondhc0Jsb2NrZWQpOiAgRGl0dG8u
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6Y2Fubm90U2hvd1VSTCk6
IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnNob3VsZFVz
ZUNyZWRlbnRpYWxTdG9yYWdlQXN5bmMpOiBUaGlzIGZ1bmN0aW9uCisgICAgICAgIGRvZXNuJ3Qg
Y2FsbCB0aHJvdWdoIHRvIFdlYlByb2Nlc3MsIHNvIHdlIGNhbiBrZWVwIGl0IHN5bmNocm9ub3Vz
LiBCdXQgd2Ugc3RpbGwKKyAgICAgICAgbmVlZCB0byBpbXBsZW1lbnQgdGhlIGFzeW5jIHZlcnNp
b24sIHNpbmNlIHRoYXQncyB3aGF0IFJlc291cmNlSGFuZGxlIGNhbGxzLgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0
aW9uU3BhY2VBc3luYyk6CisgICAgICAgIE1hZGUgYXN5bmMuCisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtSZXNvdXJjZUxvYWRlcjo6Y29udGludWVDYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVj
dGlvblNwYWNlKToKKyAgICAgICAgTm90aWZ5IFJlc291cmNlSGFuZGxlIHdoZW4gcmVzcG9uc2Ug
aXMgcmVhZHkuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkUmVj
ZWl2ZURhdGFBcnJheSk6IFJlbW92ZWQgdW5uZWNlc3NhcnkgV2ViQ29yZSBwcmVmaXhlcy4KKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjp3aWxsQ2FjaGVSZXNwb25zZUFz
eW5jKTogVGhpcyBtYXRjaGVzIGRlZmF1bHQKKyAgICAgICAgaW1wbGVtZW50YXRpb24sIGJ1dCB3
ZSBhcmUgb3ZlcnJpZGluZyBldmVyeXRoaW5nIHRvIG1ha2UgaXQgY2xlYXJlciB3aGF0J3MgbWlz
c2luZy4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjp3aWxsU3RvcEJ1
ZmZlcmluZ0RhdGEpOiBSZW1vdmVkIHVubmVjZXNzYXJ5IFdlYkNvcmUgcHJlZml4ZXMuCisKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaDogVXBkYXRlZCB0
byB1c2UgYXN5bmMgY2xpZW50IG1ldGhvZHMuCisgICAgICAgIEtlZXAgUmVzb3VyY2VSZXF1ZXN0
IGFyb3VuZCB3aGlsZSBoYW5kbGluZyB3aWxsU2VuZFJlcXVlc3QsIGFzIHdlIG5lZWQgdGhlIG9y
aWdpbmFsCisgICAgICAgIHRvIHJlY29tYmluZSB0aGUgcmVxdWVzdC4gUmVtb3ZlZCBDRk5ldCB2
ZXJzaW9uIG9mIHdpbGxDYWNoZVJlc3BvbnNlIGZvciBub3csCisgICAgICAgIGFzIHdlIGFyZSBu
b3QgdXNpbmcgaXQgeWV0LgorCisgICAgICAgICogU2hhcmVkL0F1dGhlbnRpY2F0aW9uL0F1dGhl
bnRpY2F0aW9uTWFuYWdlci5jcHA6IEFzc2VydCB0aGF0IG1ldGhvZHMgdG91Y2hpbmcKKyAgICAg
ICAgYSBnbG9iYWwgSGFzaE1hcCBhbGwgcnVuIG9uIG1haW4gdGhyZWFkLiBDaGFuZ2VkIGdlbmVy
YXRlQXV0aGVudGljYXRpb25DaGFsbGVuZ2VJRCgpCisgICAgICAgIHRvIHVzZSByZWd1bGFyIGlu
Y3JlbWVudCwgYXMgdGhlcmUgaXMgbm8gbmVlZCB0byBydW4gaXQgZnJvbSBhIHNlY29uZGFyeSB0
aHJlYWQuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25u
ZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpk
aWRSZWNlaXZlU3luY01lc3NhZ2UpOiBXZSBubyBsb25nZXIgaGF2ZSBhbnkKKyAgICAgICAgc3lu
YyBtZXNzYWdlcy4KKworICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxv
YWRlci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZGVyOjp3aWxsU2VuZFJlcXVlc3Qp
OgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRlcjo6Y2FuQXV0aGVudGljYXRlQWdh
aW5zdFByb3RlY3Rpb25TcGFjZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJl
c291cmNlTG9hZGVyLm1lc3NhZ2VzLmluOgorICAgICAgICBDaGFuZ2VkIHRvIHVzZSBhc3luYyBt
ZXNzYWdlcy4KKwogMjAxMy0wMy0yNiAgWmVubyBBbGJpc3NlciAgPHplbm9Ad2Via2l0Lm9yZz4K
IAogICAgICAgICBbUXRdIFVJUHJvY2VzcyBzaG91bGQgaW5pdGlhbGl6ZSBXZWJDb3JlU3lzdGVt
SW50ZXJmYWNlLgpJbmRleDogU291cmNlL1dlYktpdDIvRGVyaXZlZFNvdXJjZXMubWFrZQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9EZXJpdmVkU291cmNlcy5tYWtlCShyZXZpc2lvbiAx
NDY3ODUpCisrKyBTb3VyY2UvV2ViS2l0Mi9EZXJpdmVkU291cmNlcy5tYWtlCSh3b3JraW5nIGNv
cHkpCkBAIC02OSw2ICs2OSw3IEBAIE1FU1NBR0VfUkVDRUlWRVJTID0gXAogICAgIE5ldHdvcmtQ
cm9jZXNzIFwKICAgICBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24gXAogICAgIE5ldHdvcmtQcm9j
ZXNzUHJveHkgXAorICAgIE5ldHdvcmtSZXNvdXJjZUxvYWRlciBcCiAgICAgTlBPYmplY3RNZXNz
YWdlUmVjZWl2ZXIgXAogICAgIE9mZmxpbmVTdG9yYWdlUHJvY2VzcyBcCiAgICAgUGx1Z2luQ29u
dHJvbGxlclByb3h5IFwKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAJKHJldmlz
aW9uIDE0Njc4NSkKKysrIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMsNiArMzMsNyBAQAog
I2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Jlc291cmNlTG9h
ZFBhcmFtZXRlcnMuaCIKICNpbmNsdWRlICJOZXR3b3JrUmVzb3VyY2VMb2FkZXIuaCIKKyNpbmNs
dWRlICJOZXR3b3JrUmVzb3VyY2VMb2FkZXJNZXNzYWdlcy5oIgogI2luY2x1ZGUgIlJlbW90ZU5l
dHdvcmtpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSAiU3luY05ldHdvcmtSZXNvdXJjZUxvYWRlci5o
IgogI2luY2x1ZGUgPFdlYkNvcmUvQmxvYkRhdGEuaD4KQEAgLTcwLDYgKzcxLDEzIEBAIHZvaWQg
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRpZFIKICAgICAgICAgZGlkUmVjZWl2ZU5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KKworICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZl
ck5hbWUoKSA9PSBNZXNzYWdlczo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjptZXNzYWdlUmVjZWl2
ZXJOYW1lKCkpIHsKKyAgICAgICAgSGFzaE1hcDxSZXNvdXJjZUxvYWRJZGVudGlmaWVyLCBSZWZQ
dHI8TmV0d29ya1Jlc291cmNlTG9hZGVyPiA+OjppdGVyYXRvciBsb2FkZXJJdGVyYXRvciA9IG1f
bmV0d29ya1Jlc291cmNlTG9hZGVycy5maW5kKGRlY29kZXIuZGVzdGluYXRpb25JRCgpKTsKKyAg
ICAgICAgaWYgKGxvYWRlckl0ZXJhdG9yICE9IG1fbmV0d29ya1Jlc291cmNlTG9hZGVycy5lbmQo
KSkKKyAgICAgICAgICAgIGxvYWRlckl0ZXJhdG9yLT52YWx1ZS0+ZGlkUmVjZWl2ZU5ldHdvcmtS
ZXNvdXJjZUxvYWRlck1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CiAgICAgCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxv
YWRlci5jcHAJKHJldmlzaW9uIDE0Njc4NSkKKysrIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3Nyw1NCAr
Mjc3LDU4IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRGYWlsKFJlc28KICAgICBz
Y2hlZHVsZUNsZWFudXBPbk1haW5UaHJlYWQoKTsKIH0KIAotdm9pZCBOZXR3b3JrUmVzb3VyY2VM
b2FkZXI6OndpbGxTZW5kUmVxdWVzdChSZXNvdXJjZUhhbmRsZSosIFJlc291cmNlUmVxdWVzdCYg
cmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSkKK3ZvaWQg
TmV0d29ya1Jlc291cmNlTG9hZGVyOjp3aWxsU2VuZFJlcXVlc3RBc3luYyhSZXNvdXJjZUhhbmRs
ZSosIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYgcmVkaXJlY3RSZXNwb25zZSkKIHsKICAgICAvLyBXZSBvbmx5IGV4cGVjdCB0byBnZXQgdGhl
IHdpbGxTZW5kUmVxdWVzdCBjYWxsYmFjayBmcm9tIFJlc291cmNlSGFuZGxlIGFzIHRoZSByZXN1
bHQgb2YgYSByZWRpcmVjdC4KICAgICBBU1NFUlQoIXJlZGlyZWN0UmVzcG9uc2UuaXNOdWxsKCkp
OwotICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VSVChpc01haW5UaHJlYWQo
KSk7CiAKLSAgICAvLyBJTVBPUlRBTlQ6IFRoZSBmYWN0IHRoYXQgdGhpcyBtZXNzYWdlIHRvIHRo
ZSBXZWJQcm9jZXNzIGlzIHN5bmMgaXMgd2hhdCBtYWtlcyBvdXIgY3VycmVudCBhcHByb2FjaCB0
byBzeW5jaHJvbm91cyBYTUxIdHRwUmVxdWVzdHMgc2FmZS4KLSAgICAvLyBJZiB0aGlzIG1lc3Nh
Z2UgY2hhbmdlcyB0byBiZSBhc3luY2hyb25vdXMgd2UgbWlnaHQgaW50cm9kdWNlIGEgc2l0dWF0
aW9uIHdoZXJlIHRoZSBOZXR3b3JrUHJvY2VzcyBpcyBkZWFkbG9ja2VkIHdhaXRpbmcgZm9yIDYg
Y29ubmVjdGlvbnMKKyAgICBtX3N1Z2dlc3RlZFJlcXVlc3RGb3JXaWxsU2VuZFJlcXVlc3QgPSBy
ZXF1ZXN0OworCisgICAgLy8gVGhpcyBtZXNzYWdlIGlzIERpc3BhdGNoTWVzc2FnZUV2ZW5XaGVu
V2FpdGluZ0ZvclN5bmNSZXBseSB0byBhdm9pZCBhIHNpdHVhdGlvbiB3aGVyZSB0aGUgTmV0d29y
a1Byb2Nlc3MgaXMgZGVhZGxvY2tlZCB3YWl0aW5nIGZvciA2IGNvbm5lY3Rpb25zCiAgICAgLy8g
dG8gY29tcGxldGUgd2hpbGUgdGhlIFdlYlByb2Nlc3MgaXMgd2FpdGluZyBmb3IgYSA3dGggdG8g
Y29tcGxldGUuCi0gICAgLy8gSWYgd2UgZXZlciBjaGFuZ2UgdGhpcyBtZXNzYWdlIHRvIGJlIGFz
eW5jaHJvbm91cyB3ZSBoYXZlIHRvIGluY2x1ZGUgc2FmZWd1YXJkcyB0byBtYWtlIHN1cmUgdGhl
IG5ldyBkZXNpZ24gaW50ZXJhY3RzIHdlbGwgd2l0aCBzeW5jIFhIUi4KLSAgICBSZXNvdXJjZVJl
cXVlc3QgcmV0dXJuZWRSZXF1ZXN0OwotICAgIGlmICghc2VuZFN5bmNBYm9ydGluZ09uRmFpbHVy
ZShNZXNzYWdlczo6V2ViUmVzb3VyY2VMb2FkZXI6OldpbGxTZW5kUmVxdWVzdChyZXF1ZXN0LCBy
ZWRpcmVjdFJlc3BvbnNlKSwgTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpXaWxsU2VuZFJl
cXVlc3Q6OlJlcGx5KHJldHVybmVkUmVxdWVzdCkpKQotICAgICAgICByZXR1cm47Ci0gICAgCi0g
ICAgcmVxdWVzdC51cGRhdGVGcm9tRGVsZWdhdGVQcmVzZXJ2aW5nT2xkSFRUUEJvZHkocmV0dXJu
ZWRSZXF1ZXN0Lm5zVVJMUmVxdWVzdChEb05vdFVwZGF0ZUhUVFBCb2R5KSk7CisgICAgY29ubmVj
dGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUxvYWRlcjo6V2lsbFNlbmRSZXF1ZXN0
KHJlcXVlc3QsIHJlZGlyZWN0UmVzcG9uc2UpLCBkZXN0aW5hdGlvbklEKCksIENvcmVJUEM6OkRp
c3BhdGNoTWVzc2FnZUV2ZW5XaGVuV2FpdGluZ0ZvclN5bmNSZXBseSk7Cit9CisKK3ZvaWQgTmV0
d29ya1Jlc291cmNlTG9hZGVyOjpjb250aW51ZVdpbGxTZW5kUmVxdWVzdChjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmIG5ld1JlcXVlc3QpCit7CisgICAgbV9zdWdnZXN0ZWRSZXF1ZXN0Rm9yV2lsbFNl
bmRSZXF1ZXN0LnVwZGF0ZUZyb21EZWxlZ2F0ZVByZXNlcnZpbmdPbGRIVFRQQm9keShuZXdSZXF1
ZXN0Lm5zVVJMUmVxdWVzdChEb05vdFVwZGF0ZUhUVFBCb2R5KSk7CiAKLSAgICBSdW5Mb29wOjpt
YWluKCktPmRpc3BhdGNoKGJpbmQoJk5ldHdvcmtSZXNvdXJjZUxvYWRTY2hlZHVsZXI6OnJlY2Vp
dmVkUmVkaXJlY3QsICZOZXR3b3JrUHJvY2Vzczo6c2hhcmVkKCkubmV0d29ya1Jlc291cmNlTG9h
ZFNjaGVkdWxlcigpLCB0aGlzLCByZXF1ZXN0LnVybCgpKSk7CisgICAgUnVuTG9vcDo6bWFpbigp
LT5kaXNwYXRjaChiaW5kKCZOZXR3b3JrUmVzb3VyY2VMb2FkU2NoZWR1bGVyOjpyZWNlaXZlZFJl
ZGlyZWN0LCAmTmV0d29ya1Byb2Nlc3M6OnNoYXJlZCgpLm5ldHdvcmtSZXNvdXJjZUxvYWRTY2hl
ZHVsZXIoKSwgdGhpcywgbV9zdWdnZXN0ZWRSZXF1ZXN0Rm9yV2lsbFNlbmRSZXF1ZXN0LnVybCgp
KSk7CisgICAgbV9oYW5kbGUtPmNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0KG1fc3VnZ2VzdGVkUmVx
dWVzdEZvcldpbGxTZW5kUmVxdWVzdCk7CisKKyAgICBtX3N1Z2dlc3RlZFJlcXVlc3RGb3JXaWxs
U2VuZFJlcXVlc3QgPSBSZXNvdXJjZVJlcXVlc3QoKTsKIH0KIAogLy8gRklYTUUgKE5ldHdvcmtQ
cm9jZXNzKTogTWFueSBvZiB0aGUgZm9sbG93aW5nIFJlc291cmNlSGFuZGxlQ2xpZW50IG1ldGhv
ZHMgZGVmaW5pdGVseSBuZWVkIGltcGxlbWVudGF0aW9ucy4gQSBmZXcgd2lsbCBub3QuCiAvLyBP
bmNlIHdlIGtub3cgd2hhdCB0aGV5IGFyZSB0aGV5IGNhbiBiZSByZW1vdmVkLgogCi12b2lkIE5l
dHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkU2VuZERhdGEoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGUq
LCB1bnNpZ25lZCBsb25nIGxvbmcgLypieXRlc1NlbnQqLywgdW5zaWduZWQgbG9uZyBsb25nIC8q
dG90YWxCeXRlc1RvQmVTZW50Ki8pCit2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkU2Vu
ZERhdGEoUmVzb3VyY2VIYW5kbGUqLCB1bnNpZ25lZCBsb25nIGxvbmcgLypieXRlc1NlbnQqLywg
dW5zaWduZWQgbG9uZyBsb25nIC8qdG90YWxCeXRlc1RvQmVTZW50Ki8pCiB7CiAgICAgbm90SW1w
bGVtZW50ZWQoKTsKIH0KIAotdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVD
YWNoZWRNZXRhZGF0YShXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZSosIGNvbnN0IGNoYXIqLCBpbnQp
Cit2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZUNhY2hlZE1ldGFkYXRhKFJl
c291cmNlSGFuZGxlKiwgY29uc3QgY2hhciosIGludCkKIHsKICAgICBub3RJbXBsZW1lbnRlZCgp
OwogfQogCi12b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6d2FzQmxvY2tlZChXZWJDb3JlOjpS
ZXNvdXJjZUhhbmRsZSopCit2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6d2FzQmxvY2tlZChS
ZXNvdXJjZUhhbmRsZSopCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAotdm9pZCBOZXR3
b3JrUmVzb3VyY2VMb2FkZXI6OmNhbm5vdFNob3dVUkwoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGUq
KQordm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmNhbm5vdFNob3dVUkwoUmVzb3VyY2VIYW5k
bGUqKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLWJvb2wgTmV0d29ya1Jlc291cmNl
TG9hZGVyOjpzaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZShSZXNvdXJjZUhhbmRsZSopCit2b2lk
IE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2VBc3luYyhS
ZXNvdXJjZUhhbmRsZSogaGFuZGxlKQogewogICAgIC8vIFdoZW4gdGhlIFdlYlByb2Nlc3MgaXMg
aGFuZGxpbmcgbG9hZGluZyBhIGNsaWVudCBpcyBjb25zdWx0ZWQgZWFjaCB0aW1lIHRoaXMgc2hv
dWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UgcXVlc3Rpb24gaXMgYXNrZWQuCiAgICAgLy8gSW4gTmV0
d29ya1Byb2Nlc3MgbW9kZSB3ZSBhc2sgdGhlIFdlYlByb2Nlc3MgY2xpZW50IHVwIGZyb250IG9u
Y2UgYW5kIHRoZW4gcmV1c2UgdGhlIGNhY2hlZCBhbnN3ZXIuCiAKLSAgICByZXR1cm4gYWxsb3dT
dG9yZWRDcmVkZW50aWFscygpID09IEFsbG93U3RvcmVkQ3JlZGVudGlhbHM7CisgICAgaGFuZGxl
LT5jb250aW51ZVNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlKGFsbG93U3RvcmVkQ3JlZGVudGlh
bHMoKSA9PSBBbGxvd1N0b3JlZENyZWRlbnRpYWxzKTsKIH0KIAogdm9pZCBOZXR3b3JrUmVzb3Vy
Y2VMb2FkZXI6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShSZXNvdXJjZUhhbmRs
ZSosIGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBjaGFsbGVuZ2UpCkBAIC0zMzgsMjAg
KzM0MiwyMCBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkQ2FuY2VsQXV0CiB9CiAK
ICNpZiBVU0UoUFJPVEVDVElPTl9TUEFDRV9BVVRIX0NBTExCQUNLKQotYm9vbCBOZXR3b3JrUmVz
b3VyY2VMb2FkZXI6OmNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UoUmVzb3Vy
Y2VIYW5kbGUqLCBjb25zdCBQcm90ZWN0aW9uU3BhY2UmIHByb3RlY3Rpb25TcGFjZSkKK3ZvaWQg
TmV0d29ya1Jlc291cmNlTG9hZGVyOjpjYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNw
YWNlQXN5bmMoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBQcm90ZWN0aW9uU3BhY2UmIHByb3RlY3Rp
b25TcGFjZSkKIHsKLSAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQoaXNN
YWluVGhyZWFkKCkpOwogCi0gICAgLy8gSU1QT1JUQU5UOiBUaGUgZmFjdCB0aGF0IHRoaXMgbWVz
c2FnZSB0byB0aGUgV2ViUHJvY2VzcyBpcyBzeW5jIGlzIHdoYXQgbWFrZXMgb3VyIGN1cnJlbnQg
YXBwcm9hY2ggdG8gc3luY2hyb25vdXMgWE1MSHR0cFJlcXVlc3RzIHNhZmUuCi0gICAgLy8gSWYg
dGhpcyBtZXNzYWdlIGNoYW5nZXMgdG8gYmUgYXN5bmNocm9ub3VzIHdlIG1pZ2h0IGludHJvZHVj
ZSBhIHNpdHVhdGlvbiB3aGVyZSB0aGUgTmV0d29ya1Byb2Nlc3MgaXMgZGVhZGxvY2tlZCB3YWl0
aW5nIGZvciA2IGNvbm5lY3Rpb25zCi0gICAgLy8gdG8gY29tcGxldGUgd2hpbGUgdGhlIFdlYlBy
b2Nlc3MgaXMgd2FpdGluZyBmb3IgYSA3dGggdG8gY29tcGxldGUuCi0gICAgLy8gSWYgd2UgZXZl
ciBjaGFuZ2UgdGhpcyBtZXNzYWdlIHRvIGJlIGFzeW5jaHJvbm91cyB3ZSBoYXZlIHRvIGluY2x1
ZGUgc2FmZWd1YXJkcyB0byBtYWtlIHN1cmUgdGhlIG5ldyBkZXNpZ24gaW50ZXJhY3RzIHdlbGwg
d2l0aCBzeW5jIFhIUi4KLSAgICBib29sIHJlc3VsdDsKLSAgICBpZiAoIXNlbmRTeW5jQWJvcnRp
bmdPbkZhaWx1cmUoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpDYW5BdXRoZW50aWNhdGVB
Z2FpbnN0UHJvdGVjdGlvblNwYWNlKHByb3RlY3Rpb25TcGFjZSksIE1lc3NhZ2VzOjpXZWJSZXNv
dXJjZUxvYWRlcjo6Q2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZTo6UmVwbHko
cmVzdWx0KSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAvLyBUaGlzIG1lc3NhZ2UgaXMg
RGlzcGF0Y2hNZXNzYWdlRXZlbldoZW5XYWl0aW5nRm9yU3luY1JlcGx5IHRvIGF2b2lkIGEgc2l0
dWF0aW9uIHdoZXJlIHRoZSBOZXR3b3JrUHJvY2VzcyBpcyBkZWFkbG9ja2VkCisgICAgLy8gd2Fp
dGluZyBmb3IgNiBjb25uZWN0aW9ucyB0byBjb21wbGV0ZSB3aGlsZSB0aGUgV2ViUHJvY2VzcyBp
cyB3YWl0aW5nIGZvciBhIDd0aCB0byBjb21wbGV0ZS4KKyAgICBjb25uZWN0aW9uKCktPnNlbmQo
TWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpDYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVj
dGlvblNwYWNlKHByb3RlY3Rpb25TcGFjZSksIGRlc3RpbmF0aW9uSUQoKSwgQ29yZUlQQzo6RGlz
cGF0Y2hNZXNzYWdlRXZlbldoZW5XYWl0aW5nRm9yU3luY1JlcGx5KTsKK30KIAotICAgIHJldHVy
biByZXN1bHQ7Cit2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6Y29udGludWVDYW5BdXRoZW50
aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlKGJvb2wgcmVzdWx0KQoreworICAgIG1faGFuZGxl
LT5jb250aW51ZUNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UocmVzdWx0KTsK
IH0KKwogI2VuZGlmCiAKICNpZiBVU0UoTkVUV09SS19DRkRBVEFfQVJSQVlfQ0FMTEJBQ0spCkBA
IC0zNjEsNyArMzY1LDcgQEAgYm9vbCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnN1cHBvcnRzRGF0
YQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRp
ZFJlY2VpdmVEYXRhQXJyYXkoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGUqLCBDRkFycmF5UmVmKQor
dm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhQXJyYXkoUmVzb3VyY2VI
YW5kbGUqLCBDRkFycmF5UmVmKQogewogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIG5v
dEltcGxlbWVudGVkKCk7CkBAIC0zNjksMjEgKzM3MywxMyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJj
ZUxvYWRlcjo6ZGlkUmVjZWl2ZURhCiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKE1BQykKLSNpZiBV
U0UoQ0ZORVRXT1JLKQotQ0ZDYWNoZWRVUkxSZXNwb25zZVJlZiBOZXR3b3JrUmVzb3VyY2VMb2Fk
ZXI6OndpbGxDYWNoZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlKiwgQ0ZDYWNoZWRV
UkxSZXNwb25zZVJlZiByZXNwb25zZSkKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJl
dHVybiByZXNwb25zZTsKLX0KLSNlbHNlCi1OU0NhY2hlZFVSTFJlc3BvbnNlKiBOZXR3b3JrUmVz
b3VyY2VMb2FkZXI6OndpbGxDYWNoZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlKiwg
TlNDYWNoZWRVUkxSZXNwb25zZSogcmVzcG9uc2UpCit2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRl
cjo6d2lsbENhY2hlUmVzcG9uc2VBc3luYyhSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBOU0NhY2hl
ZFVSTFJlc3BvbnNlKiByZXNwb25zZSkKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJl
dHVybiByZXNwb25zZTsKKyAgICBoYW5kbGUtPmNvbnRpbnVlV2lsbENhY2hlUmVzcG9uc2UocmVz
cG9uc2UpOwogfQotI2VuZGlmCiAKLXZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjp3aWxsU3Rv
cEJ1ZmZlcmluZ0RhdGEoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGUqLCBjb25zdCBjaGFyKiwgaW50
KQordm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OndpbGxTdG9wQnVmZmVyaW5nRGF0YShSZXNv
dXJjZUhhbmRsZSosIGNvbnN0IGNoYXIqLCBpbnQpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsK
IH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxv
YWRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdv
cmtSZXNvdXJjZUxvYWRlci5oCShyZXZpc2lvbiAxNDY3ODUpCisrKyBTb3VyY2UvV2ViS2l0Mi9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaAkod29ya2luZyBjb3B5KQpAQCAt
NjMsMjIgKzYzLDIyIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgY29ubmVjdGlvblRvV2Vi
UHJvY2Vzc0RpZENsb3NlKCkgT1ZFUlJJREU7CiAgICAgICAgIAogICAgIC8vIFJlc291cmNlSGFu
ZGxlQ2xpZW50IG1ldGhvZHMKLSAgICB2aXJ0dWFsIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KFdlYkNv
cmU6OlJlc291cmNlSGFuZGxlKiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VSZXNwb25zZSYgLypyZWRpcmVjdFJlc3BvbnNlKi8pIE9WRVJSSURFOwot
ICAgIHZpcnR1YWwgdm9pZCBkaWRTZW5kRGF0YShXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZSosIHVu
c2lnbmVkIGxvbmcgbG9uZyAvKmJ5dGVzU2VudCovLCB1bnNpZ25lZCBsb25nIGxvbmcgLyp0b3Rh
bEJ5dGVzVG9CZVNlbnQqLykgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHdpbGxTZW5kUmVx
dWVzdEFzeW5jKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlKiwgY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNw
b25zZSkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRpZFNlbmREYXRhKFdlYkNvcmU6OlJl
c291cmNlSGFuZGxlKiwgdW5zaWduZWQgbG9uZyBsb25nIGJ5dGVzU2VudCwgdW5zaWduZWQgbG9u
ZyBsb25nIHRvdGFsQnl0ZXNUb0JlU2VudCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGRp
ZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVzcG9uc2UmKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2
ZURhdGEoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGUqLCBjb25zdCBjaGFyKiwgaW50LCBpbnQgLypl
bmNvZGVkRGF0YUxlbmd0aCovKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2
ZURhdGEoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGUqLCBjb25zdCBjaGFyKiwgaW50LCBpbnQgZW5j
b2RlZERhdGFMZW5ndGgpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlQ2Fj
aGVkTWV0YWRhdGEoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGUqLCBjb25zdCBjaGFyKiwgaW50KSBP
VkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9hZGluZyhXZWJDb3JlOjpSZXNv
dXJjZUhhbmRsZSosIGRvdWJsZSAvKmZpbmlzaFRpbWUqLykgT1ZFUlJJREU7CisgICAgdmlydHVh
bCB2b2lkIGRpZEZpbmlzaExvYWRpbmcoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGUqLCBkb3VibGUg
ZmluaXNoVGltZSkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGRpZEZhaWwoV2ViQ29yZTo6
UmVzb3VyY2VIYW5kbGUqLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJikgT1ZFUlJJREU7
CiAgICAgdmlydHVhbCB2b2lkIHdhc0Jsb2NrZWQoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGUqKSBP
VkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgY2Fubm90U2hvd1VSTChXZWJDb3JlOjpSZXNvdXJj
ZUhhbmRsZSopIE9WRVJSSURFOwotICAgIHZpcnR1YWwgYm9vbCBzaG91bGRVc2VDcmVkZW50aWFs
U3RvcmFnZShXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZSopIE9WRVJSSURFOworICAgIHZpcnR1YWwg
dm9pZCBzaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZUFzeW5jKFdlYkNvcmU6OlJlc291cmNlSGFu
ZGxlKikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZShXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFdlYkNvcmU6OkF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlJikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGRpZENhbmNl
bEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlKiwgY29uc3Qg
V2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKSBPVkVSUklERTsKICAgICB2aXJ0dWFs
IGJvb2wgdXNlc0FzeW5jQ2FsbGJhY2tzKCkgT1ZFUlJJREUgeyByZXR1cm4gdHJ1ZTsgfQogCiAj
aWYgVVNFKFBST1RFQ1RJT05fU1BBQ0VfQVVUSF9DQUxMQkFDSykKLSAgICB2aXJ0dWFsIGJvb2wg
Y2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZShXZWJDb3JlOjpSZXNvdXJjZUhh
bmRsZSosIGNvbnN0IFdlYkNvcmU6OlByb3RlY3Rpb25TcGFjZSYpIE9WRVJSSURFOworICAgIHZp
cnR1YWwgdm9pZCBjYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlQXN5bmMoV2Vi
Q29yZTo6UmVzb3VyY2VIYW5kbGUqLCBjb25zdCBXZWJDb3JlOjpQcm90ZWN0aW9uU3BhY2UmKTsK
ICNlbmRpZgogCiAjaWYgVVNFKE5FVFdPUktfQ0ZEQVRBX0FSUkFZX0NBTExCQUNLKQpAQCAtODgs
MTcgKzg4LDIxIEBAIHB1YmxpYzoKIAogI2lmIFBMQVRGT1JNKE1BQykKICAgICBzdGF0aWMgc2l6
ZV90IGZpbGVCYWNrZWRSZXNvdXJjZU1pbmltdW1TaXplKCk7Ci0jaWYgVVNFKENGTkVUV09SSykK
LSAgICB2aXJ0dWFsIENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYgd2lsbENhY2hlUmVzcG9uc2UoV2Vi
Q29yZTo6UmVzb3VyY2VIYW5kbGUqLCBDRkNhY2hlZFVSTFJlc3BvbnNlUmVmKSBPVkVSUklERTsK
LSNlbHNlCi0gICAgdmlydHVhbCBOU0NhY2hlZFVSTFJlc3BvbnNlKiB3aWxsQ2FjaGVSZXNwb25z
ZShXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZSosIE5TQ2FjaGVkVVJMUmVzcG9uc2UqKSBPVkVSUklE
RTsKLSNlbmRpZgorICAgIHZpcnR1YWwgdm9pZCB3aWxsQ2FjaGVSZXNwb25zZUFzeW5jKFdlYkNv
cmU6OlJlc291cmNlSGFuZGxlKiwgTlNDYWNoZWRVUkxSZXNwb25zZSAqKTsKICAgICB2aXJ0dWFs
IHZvaWQgd2lsbFN0b3BCdWZmZXJpbmdEYXRhKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlKiwgY29u
c3QgY2hhciosIGludCkgT1ZFUlJJREU7CiAjZW5kaWYgLy8gUExBVEZPUk0oTUFDKQogCisgICAg
Ly8gTWVzc2FnZSBoYW5kbGVycy4KKyAgICB2b2lkIGRpZFJlY2VpdmVOZXR3b3JrUmVzb3VyY2VM
b2FkZXJNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qLCBDb3JlSVBDOjpNZXNzYWdlRGVjb2Rl
ciYpOworCiBwcml2YXRlOgogICAgIE5ldHdvcmtSZXNvdXJjZUxvYWRlcihjb25zdCBOZXR3b3Jr
UmVzb3VyY2VMb2FkUGFyYW1ldGVycyYsIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKik7
CiAKKyAgICB2b2lkIGNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0KGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYgbmV3UmVxdWVzdCk7CisjaWYgVVNFKFBST1RFQ1RJT05fU1BBQ0VfQVVUSF9D
QUxMQkFDSykKKyAgICB2b2lkIGNvbnRpbnVlQ2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rp
b25TcGFjZShib29sKTsKKyNlbmRpZgorCiAgICAgdm9pZCBzY2hlZHVsZUNsZWFudXBPbk1haW5U
aHJlYWQoKTsKICAgICBzdGF0aWMgdm9pZCBwZXJmb3JtQ2xlYW51cHModm9pZCopOwogICAgIHZv
aWQgY2xlYW51cCgpOwpAQCAtMTE0LDYgKzExOCw5IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPFJl
bW90ZU5ldHdvcmtpbmdDb250ZXh0PiBtX25ldHdvcmtpbmdDb250ZXh0OwogICAgIFJlZlB0cjxX
ZWJDb3JlOjpSZXNvdXJjZUhhbmRsZT4gbV9oYW5kbGU7CiAKKyAgICAvLyBLZWVwIHRoZSBzdWdn
ZXN0ZWQgcmVxdWVzdCBhcm91bmQgd2hpbGUgYXN5bmNocm9ub3VzbHkgYXNraW5nIHRvIHVwZGF0
ZSBpdCwgYmVjYXVzZSBzb21lIHBhcnRzIG9mIHRoZSByZXF1ZXN0IGRvbid0IHN1cnZpdmUgSVBD
LgorICAgIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCBtX3N1Z2dlc3RlZFJlcXVlc3RGb3JXaWxs
U2VuZFJlcXVlc3Q7CisKICAgICB1aW50NjRfdCBtX2J5dGVzUmVjZWl2ZWQ7CiAKICNpZiBfX01B
Q19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwOTAKSW5kZXg6IFNvdXJjZS9XZWJLaXQy
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5tZXNzYWdlcy5pbgo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2Fk
ZXIubWVzc2FnZXMuaW4JKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIubWVzc2FnZXMuaW4JKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsMjcgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiAg
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorIyBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRAorIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFCisjIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisjIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwKKyMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyMgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyMgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwKKyMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworbWVz
c2FnZXMgLT4gTmV0d29ya1Jlc291cmNlTG9hZGVyIExlZ2FjeVJlY2VpdmVyIHsKKworICAgIENv
bnRpbnVlV2lsbFNlbmRSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0KQor
ICAgIENvbnRpbnVlQ2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZShib29sIGNh
bkF1dGhlbnRpY2F0ZSkKK30KClByb3BlcnR5IGNoYW5nZXMgb246IFNvdXJjZS9XZWJLaXQyL05l
dHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5tZXNzYWdlcy5pbgpfX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
CkFkZGVkOiBzdm46bWltZS10eXBlCiAgICsgdGV4dC9wbGFpbgpBZGRlZDogc3ZuOmVvbC1zdHls
ZQogICArIExGCgpJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL0F1dGhlbnRpY2F0aW9uL0F1
dGhlbnRpY2F0aW9uTWFuYWdlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hh
cmVkL0F1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0aW9uTWFuYWdlci5jcHAJKHJldmlzaW9uIDE0
Njc4NSkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNh
dGlvbk1hbmFnZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw3ICszNiw2IEBACiAjaW5jbHVk
ZSAiV2ViUGFnZVByb3h5TWVzc2FnZXMuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0F1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9BdXRoZW50aWNhdGlvbkNsaWVudC5o
PgotI2luY2x1ZGUgPHd0Zi9BdG9taWNzLmg+CiAKICNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNT
KQogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzUHJveHlNZXNzYWdlcy5oIgpAQCAtNDgsOCArNDcs
MTAgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIHN0YXRpYyB1aW50NjRfdCBnZW5lcmF0ZUF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlSUQoKQogeworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisK
ICAgICBzdGF0aWMgaW50NjRfdCB1bmlxdWVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUlEOwotICAg
IHJldHVybiBhdG9taWNJbmNyZW1lbnQoJnVuaXF1ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlSUQp
OworICAgIHJldHVybiArK3VuaXF1ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlSUQ7CiB9CiAKIGNv
bnN0IGNoYXIqIEF1dGhlbnRpY2F0aW9uTWFuYWdlcjo6c3VwcGxlbWVudE5hbWUoKQpAQCAtNjUs
NiArNjYsOCBAQCBBdXRoZW50aWNhdGlvbk1hbmFnZXI6OkF1dGhlbnRpY2F0aW9uTWFuCiAKIHVp
bnQ2NF90IEF1dGhlbnRpY2F0aW9uTWFuYWdlcjo6ZXN0YWJsaXNoSWRlbnRpZmllckZvckNoYWxs
ZW5nZShjb25zdCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgYXV0aGVudGljYXRp
b25DaGFsbGVuZ2UpCiB7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKwogICAgIHVpbnQ2
NF90IGNoYWxsZW5nZUlEID0gZ2VuZXJhdGVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUlEKCk7CiAg
ICAgbV9jaGFsbGVuZ2VzLnNldChjaGFsbGVuZ2VJRCwgYXV0aGVudGljYXRpb25DaGFsbGVuZ2Up
OwogICAgIHJldHVybiBjaGFsbGVuZ2VJRDsKQEAgLTEwMyw2ICsxMDYsOCBAQCBib29sIEF1dGhl
bnRpY2F0aW9uTWFuYWdlcjo6dHJ5VXNlUGxhdGZvCiAKIHZvaWQgQXV0aGVudGljYXRpb25NYW5h
Z2VyOjp1c2VDcmVkZW50aWFsRm9yQ2hhbGxlbmdlKHVpbnQ2NF90IGNoYWxsZW5nZUlELCBjb25z
dCBDcmVkZW50aWFsJiBjcmVkZW50aWFsLCBjb25zdCBQbGF0Zm9ybUNlcnRpZmljYXRlSW5mbyYg
Y2VydGlmaWNhdGVJbmZvKQogeworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisKICAgICBB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZSBjaGFsbGVuZ2UgPSBtX2NoYWxsZW5nZXMudGFrZShjaGFs
bGVuZ2VJRCk7CiAgICAgQVNTRVJUKCFjaGFsbGVuZ2UuaXNOdWxsKCkpOwogICAgIApAQCAtMTIx
LDYgKzEyNiw4IEBAIHZvaWQgQXV0aGVudGljYXRpb25NYW5hZ2VyOjp1c2VDcmVkZW50aWEKIAog
dm9pZCBBdXRoZW50aWNhdGlvbk1hbmFnZXI6OmNvbnRpbnVlV2l0aG91dENyZWRlbnRpYWxGb3JD
aGFsbGVuZ2UodWludDY0X3QgY2hhbGxlbmdlSUQpCiB7CisgICAgQVNTRVJUKGlzTWFpblRocmVh
ZCgpKTsKKwogICAgIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIGNoYWxsZW5nZSA9IG1fY2hhbGxl
bmdlcy50YWtlKGNoYWxsZW5nZUlEKTsKICAgICBBU1NFUlQoIWNoYWxsZW5nZS5pc051bGwoKSk7
CiAgICAgQXV0aGVudGljYXRpb25DbGllbnQqIGNvcmVDbGllbnQgPSBjaGFsbGVuZ2UuYXV0aGVu
dGljYXRpb25DbGllbnQoKTsKQEAgLTEzNSw2ICsxNDIsOCBAQCB2b2lkIEF1dGhlbnRpY2F0aW9u
TWFuYWdlcjo6Y29udGludWVXaXRoCiAKIHZvaWQgQXV0aGVudGljYXRpb25NYW5hZ2VyOjpjYW5j
ZWxDaGFsbGVuZ2UodWludDY0X3QgY2hhbGxlbmdlSUQpCiB7CisgICAgQVNTRVJUKGlzTWFpblRo
cmVhZCgpKTsKKwogICAgIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIGNoYWxsZW5nZSA9IG1fY2hh
bGxlbmdlcy50YWtlKGNoYWxsZW5nZUlEKTsKICAgICBBU1NFUlQoIWNoYWxsZW5nZS5pc051bGwo
KSk7CiAgICAgQXV0aGVudGljYXRpb25DbGllbnQqIGNvcmVDbGllbnQgPSBjaGFsbGVuZ2UuYXV0
aGVudGljYXRpb25DbGllbnQoKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJLaXQy
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDE0Njc4NSkKKysrIFNvdXJjZS9X
ZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpA
QCAtMTA5OCw2ICsxMDk4LDggQEAKIAkJRTE0QTk1NEExNkUwMTZBNDAwNjhERTgyIC8qIE5ldHdv
cmtQcm9jZXNzUGxhdGZvcm1TdHJhdGVnaWVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBFMTRBOTU0ODE2RTAxNkE0MDA2OERFODIgLyogTmV0d29ya1By
b2Nlc3NQbGF0Zm9ybVN0cmF0ZWdpZXMuaCAqLzsgfTsKIAkJRTE1MTNDNjYxNjZFQUJCMjAwMTQ5
RkNCIC8qIENoaWxkUHJvY2Vzc1Byb3h5LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEUxNTEzQzY0MTY2RUFCQjIwMDE0OUZDQiAvKiBDaGlsZFByb2Nl
c3NQcm94eS5jcHAgKi87IH07CiAJCUUxNTEzQzY3MTY2RUFCQjIwMDE0OUZDQiAvKiBDaGlsZFBy
b2Nlc3NQcm94eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRTE1MTNDNjUxNjZFQUJCMjAwMTQ5RkNCIC8qIENoaWxkUHJvY2Vzc1Byb3h5LmggKi87IH07
CisJCUUxNTI1NTFBMTcwMTE4MTkwMDNEN0FEQiAvKiBOZXR3b3JrUmVzb3VyY2VMb2FkZXJNZXNz
YWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRTE1MjU1MTgxNzAxMTgxOTAwM0Q3QURCIC8qIE5ldHdvcmtSZXNvdXJjZUxvYWRlck1l
c3NhZ2VSZWNlaXZlci5jcHAgKi87IH07CisJCUUxNTI1NTFCMTcwMTE4MTkwMDNEN0FEQiAvKiBO
ZXR3b3JrUmVzb3VyY2VMb2FkZXJNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRTE1MjU1MTkxNzAxMTgxOTAwM0Q3QURCIC8qIE5ldHdvcmtS
ZXNvdXJjZUxvYWRlck1lc3NhZ2VzLmggKi87IH07CiAJCUUxNzA4NzZCMTZENkNBNjkwMEY5OTIy
NiAvKiBCbG9iUmVnaXN0cnlQcm94eS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBFMTcwODc2OTE2RDZDQTY5MDBGOTkyMjYgLyogQmxvYlJlZ2lzdHJ5
UHJveHkuY3BwICovOyB9OwogCQlFMTcwODc2QzE2RDZDQTY5MDBGOTkyMjYgLyogQmxvYlJlZ2lz
dHJ5UHJveHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEUxNzA4NzZBMTZENkNBNjkwMEY5OTIyNiAvKiBCbG9iUmVnaXN0cnlQcm94eS5oICovOyB9Owog
CQlFMTcwODc3MDE2RDZDRkU1MDBGOTkyMjYgLyogQmxvYlJlZ2lzdHJhdGlvbkRhdGEuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTE3MDg3NkUxNkQ2
Q0ZFNDAwRjk5MjI2IC8qIEJsb2JSZWdpc3RyYXRpb25EYXRhLmNwcCAqLzsgfTsKQEAgLTI1NTAs
NiArMjU1Miw5IEBACiAJCUUxNEE5NTQ4MTZFMDE2QTQwMDY4REU4MiAvKiBOZXR3b3JrUHJvY2Vz
c1BsYXRmb3JtU3RyYXRlZ2llcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBO
ZXR3b3JrUHJvY2Vzc1BsYXRmb3JtU3RyYXRlZ2llcy5oOyBwYXRoID0gTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Byb2Nlc3NQbGF0Zm9ybVN0cmF0ZWdpZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJRTE1MTNDNjQxNjZFQUJCMjAwMTQ5RkNCIC8qIENoaWxkUHJvY2Vzc1Byb3h5LmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENoaWxkUHJvY2Vzc1Byb3h5
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTE1MTNDNjUxNjZFQUJCMjAwMTQ5
RkNCIC8qIENoaWxkUHJvY2Vzc1Byb3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IENoaWxkUHJvY2Vzc1Byb3h5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUx
NTI1NTE3MTcwMTA5RkIwMDNEN0FEQiAvKiBOZXR3b3JrUmVzb3VyY2VMb2FkZXIubWVzc2FnZXMu
aW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0
OyBuYW1lID0gTmV0d29ya1Jlc291cmNlTG9hZGVyLm1lc3NhZ2VzLmluOyBwYXRoID0gTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlFMTUyNTUxODE3MDExODE5MDAzRDdBREIgLyogTmV0d29ya1Jlc291
cmNlTG9hZGVyTWVzc2FnZVJlY2VpdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IE5ldHdvcmtSZXNvdXJjZUxvYWRlck1lc3NhZ2VSZWNlaXZlci5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUxNTI1NTE5MTcwMTE4MTkwMDNEN0FEQiAvKiBOZXR3
b3JrUmVzb3VyY2VMb2FkZXJNZXNzYWdlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBOZXR3b3JrUmVzb3VyY2VMb2FkZXJNZXNzYWdlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlFMTcwODc2OTE2RDZDQTY5MDBGOTkyMjYgLyogQmxvYlJlZ2lzdHJ5UHJveHku
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gQmxvYlJlZ2lzdHJ5UHJv
eHkuY3BwOyBwYXRoID0gV2ViUHJvY2Vzcy9GaWxlQVBJL0Jsb2JSZWdpc3RyeVByb3h5LmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTE3MDg3NkExNkQ2Q0E2OTAwRjk5MjI2IC8q
IEJsb2JSZWdpc3RyeVByb3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEJs
b2JSZWdpc3RyeVByb3h5Lmg7IHBhdGggPSBXZWJQcm9jZXNzL0ZpbGVBUEkvQmxvYlJlZ2lzdHJ5
UHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTE3MDg3NkUxNkQ2Q0ZFNDAw
Rjk5MjI2IC8qIEJsb2JSZWdpc3RyYXRpb25EYXRhLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgbmFtZSA9IEJsb2JSZWdpc3RyYXRpb25EYXRhLmNwcDsgcGF0aCA9IEZpbGVBUEkv
QmxvYlJlZ2lzdHJhdGlvbkRhdGEuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
MzQ5OCw2ICszNTAzLDcgQEAKIAkJCQk1MUE4QTYxNzE2MjdGNUJCMDAwRDkwRTkgLyogTmV0d29y
a1Byb2Nlc3MubWVzc2FnZXMuaW4gKi8sCiAJCQkJNTFGRDE4QjMxNjUxRkJBRDAwREJFMUNFIC8q
IE5ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAgKi8sCiAJCQkJNTFGRDE4QjQxNjUxRkJBRDAwREJF
MUNFIC8qIE5ldHdvcmtSZXNvdXJjZUxvYWRlci5oICovLAorCQkJCUUxNTI1NTE3MTcwMTA5RkIw
MDNEN0FEQiAvKiBOZXR3b3JrUmVzb3VyY2VMb2FkZXIubWVzc2FnZXMuaW4gKi8sCiAJCQkJNTE4
MjlEQTMxNjM3QzcwQzAwMDk1M0Q2IC8qIE5ldHdvcmtSZXNvdXJjZUxvYWRTY2hlZHVsZXIuY3Bw
ICovLAogCQkJCTUxODI5REE0MTYzN0M3MEMwMDA5NTNENiAvKiBOZXR3b3JrUmVzb3VyY2VMb2Fk
U2NoZWR1bGVyLmggKi8sCiAJCQkJNTE5QjRGRjIxNkE5RUE5NzAwNjY4NzREIC8qIFNjaGVkdWxh
YmxlTG9hZGVyLmNwcCAqLywKQEAgLTQ4NTgsNiArNDg2NCw4IEBACiAJCQkJNTFBQ0M5MzUxNjI4
MDY0ODAwMzQyNTUwIC8qIE5ldHdvcmtQcm9jZXNzTWVzc2FnZXMuaCAqLywKIAkJCQk1MTNBMTYz
QTE2MzA4OEY2MDA1RDdEMjIgLyogTmV0d29ya1Byb2Nlc3NQcm94eU1lc3NhZ2VSZWNlaXZlci5j
cHAgKi8sCiAJCQkJNTEzQTE2M0IxNjMwODhGNjAwNUQ3RDIyIC8qIE5ldHdvcmtQcm9jZXNzUHJv
eHlNZXNzYWdlcy5oICovLAorCQkJCUUxNTI1NTE4MTcwMTE4MTkwMDNEN0FEQiAvKiBOZXR3b3Jr
UmVzb3VyY2VMb2FkZXJNZXNzYWdlUmVjZWl2ZXIuY3BwICovLAorCQkJCUUxNTI1NTE5MTcwMTE4
MTkwMDNEN0FEQiAvKiBOZXR3b3JrUmVzb3VyY2VMb2FkZXJNZXNzYWdlcy5oICovLAogCQkJCTFB
MkQ4NDM3MTI3RjY1RDUwMDFFQjk2MiAvKiBOUE9iamVjdE1lc3NhZ2VSZWNlaXZlck1lc3NhZ2VS
ZWNlaXZlci5jcHAgKi8sCiAJCQkJMUEyRDg0MzgxMjdGNjVENTAwMUVCOTYyIC8qIE5QT2JqZWN0
TWVzc2FnZVJlY2VpdmVyTWVzc2FnZXMuaCAqLywKIAkJCQlCQ0FGMzVFMDE2Q0EyNDkzMDBENEU5
RkMgLyogT2ZmbGluZVN0b3JhZ2VQcm9jZXNzTWVzc2FnZVJlY2VpdmVyLmNwcCAqLywKQEAgLTU2
MjksNiArNTYzNyw3IEBACiAJCQkJRTE3MDg3NzExNkQ2Q0ZFNTAwRjk5MjI2IC8qIEJsb2JSZWdp
c3RyYXRpb25EYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMTRBOTU0QTE2RTAxNkE0MDA2OERF
ODIgLyogTmV0d29ya1Byb2Nlc3NQbGF0Zm9ybVN0cmF0ZWdpZXMuaCBpbiBIZWFkZXJzICovLAog
CQkJCUUxNzk4QzdBMTZFNjgxODgwMDI0MDEzOSAvKiBOZXR3b3JrQmxvYlJlZ2lzdHJ5LmggaW4g
SGVhZGVycyAqLywKKwkJCQlFMTUyNTUxQjE3MDExODE5MDAzRDdBREIgLyogTmV0d29ya1Jlc291
cmNlTG9hZGVyTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JE
ZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtNjgzNiw2ICs2ODQ1LDcgQEAK
IAkJCQlFMTcwODc3MDE2RDZDRkU1MDBGOTkyMjYgLyogQmxvYlJlZ2lzdHJhdGlvbkRhdGEuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJRTE0QTk1NDkxNkUwMTZBNDAwNjhERTgyIC8qIE5ldHdvcmtQ
cm9jZXNzUGxhdGZvcm1TdHJhdGVnaWVzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUxNzk4Qzc5
MTZFNjgxODgwMDI0MDEzOSAvKiBOZXR3b3JrQmxvYlJlZ2lzdHJ5LmNwcCBpbiBTb3VyY2VzICov
LAorCQkJCUUxNTI1NTFBMTcwMTE4MTkwMDNEN0FEQiAvKiBOZXR3b3JrUmVzb3VyY2VMb2FkZXJN
ZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRl
cGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25u
ZWN0aW9uLmNwcAkocmV2aXNpb24gMTQ2Nzg1KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTY2LDEzICs2Niw2IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpkaWRSZWNlaXYK
IAogdm9pZCBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZFJlY2VpdmVTeW5jTWVzc2FnZShD
b3JlSVBDOjpDb25uZWN0aW9uKiBjb25uZWN0aW9uLCBDb3JlSVBDOjpNZXNzYWdlRGVjb2RlciYg
ZGVjb2RlciwgT3duUHRyPENvcmVJUEM6Ok1lc3NhZ2VFbmNvZGVyPiYgcmVwbHlFbmNvZGVyKQog
ewotICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6V2Vi
UmVzb3VyY2VMb2FkZXI6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgewotICAgICAgICBpZiAoV2Vi
UmVzb3VyY2VMb2FkZXIqIHdlYlJlc291cmNlTG9hZGVyID0gV2ViUHJvY2Vzczo6c2hhcmVkKCku
d2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyKCkud2ViUmVzb3VyY2VMb2FkZXJGb3JJZGVudGlmaWVy
KGRlY29kZXIuZGVzdGluYXRpb25JRCgpKSkKLSAgICAgICAgICAgIHdlYlJlc291cmNlTG9hZGVy
LT5kaWRSZWNlaXZlU3luY1dlYlJlc291cmNlTG9hZGVyTWVzc2FnZShjb25uZWN0aW9uLCBkZWNv
ZGVyLCByZXBseUVuY29kZXIpOwotICAgICAgICAKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQog
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAJKHJldmlz
aW9uIDE0Njc4NSkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNv
dXJjZUxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxMiwgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJE
YXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk5ldHdvcmtQ
cm9jZXNzQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIk5ldHdvcmtSZXNvdXJjZUxvYWRlck1lc3Nh
Z2VzLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1DZXJ0aWZpY2F0ZUluZm8uaCIKICNpbmNsdWRlICJX
ZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKICNpbmNsdWRlICJXZWJFcnJvcnMuaCIKQEAgLTcyLDEy
ICs3MywxMyBAQCB2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpjYW5jZWxSZXNvdXJjZUxvCiAgICAg
bV9jb3JlTG9hZGVyLT5jYW5jZWwoKTsKIH0KIAotdm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6d2ls
bFNlbmRSZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcHJvcG9zZWRSZXF1ZXN0LCBjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlLCBSZXNvdXJjZVJlcXVlc3QmIG5l
d1JlcXVlc3QpCit2b2lkIFdlYlJlc291cmNlTG9hZGVyOjp3aWxsU2VuZFJlcXVlc3QoY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0JiBwcm9wb3NlZFJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
IHJlZGlyZWN0UmVzcG9uc2UpCiB7CiAgICAgTE9HKE5ldHdvcmssICIoV2ViUHJvY2VzcykgV2Vi
UmVzb3VyY2VMb2FkZXI6OndpbGxTZW5kUmVxdWVzdCB0byAnJXMnIiwgcHJvcG9zZWRSZXF1ZXN0
LnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogICAgIAotICAgIG5ld1JlcXVlc3QgPSBw
cm9wb3NlZFJlcXVlc3Q7CisgICAgUmVzb3VyY2VSZXF1ZXN0IG5ld1JlcXVlc3QgPSBwcm9wb3Nl
ZFJlcXVlc3Q7CiAgICAgbV9jb3JlTG9hZGVyLT53aWxsU2VuZFJlcXVlc3QobmV3UmVxdWVzdCwg
cmVkaXJlY3RSZXNwb25zZSk7CisgICAgc2VuZChNZXNzYWdlczo6TmV0d29ya1Jlc291cmNlTG9h
ZGVyOjpDb250aW51ZVdpbGxTZW5kUmVxdWVzdChuZXdSZXF1ZXN0KSk7CiB9CiAKIHZvaWQgV2Vi
UmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZVdpdGhDZXJ0aWZpY2F0ZUluZm8oY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIGNvbnN0IFBsYXRmb3JtQ2VydGlmaWNhdGVJ
bmZvJiBjZXJ0aWZpY2F0ZUluZm8pCkBAIC0xMjUsOSArMTI3LDEwIEBAIHZvaWQgV2ViUmVzb3Vy
Y2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNvdXIKICAgICBtX2NvcmVMb2FkZXItPmRpZEZpbmlzaExv
YWRpbmcoZmluaXNoVGltZSk7CiB9CiAKLXZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmNhbkF1dGhl
bnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UoY29uc3QgUHJvdGVjdGlvblNwYWNlJiBwcm90
ZWN0aW9uU3BhY2UsIGJvb2wmIHJlc3VsdCkKK3ZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmNhbkF1
dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UoY29uc3QgUHJvdGVjdGlvblNwYWNlJiBw
cm90ZWN0aW9uU3BhY2UpCiB7Ci0gICAgcmVzdWx0ID0gbV9jb3JlTG9hZGVyLT5jYW5BdXRoZW50
aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlKHByb3RlY3Rpb25TcGFjZSk7CisgICAgYm9vbCBy
ZXN1bHQgPSBtX2NvcmVMb2FkZXItPmNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3Bh
Y2UocHJvdGVjdGlvblNwYWNlKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUmVzb3VyY2VM
b2FkZXI6OkNvbnRpbnVlQ2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZShyZXN1
bHQpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuaAkocmV2aXNp
b24gMTQ2Nzg1KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291
cmNlTG9hZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTY0LDcgKzY0LDYgQEAgcHVibGljOgogICAg
IHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQoKSBjb25zdDsKIAogICAgIHZvaWQgZGlkUmVjZWl2ZVdl
YlJlc291cmNlTG9hZGVyTWVzc2FnZShDb3JlSVBDOjpDb25uZWN0aW9uKiwgQ29yZUlQQzo6TWVz
c2FnZURlY29kZXImKTsKLSAgICB2b2lkIGRpZFJlY2VpdmVTeW5jV2ViUmVzb3VyY2VMb2FkZXJN
ZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qLCBDb3JlSVBDOjpNZXNzYWdlRGVjb2RlciYsIE93
blB0cjxDb3JlSVBDOjpNZXNzYWdlRW5jb2Rlcj4mKTsKIAogICAgIFdlYkNvcmU6OlJlc291cmNl
TG9hZGVyKiByZXNvdXJjZUxvYWRlcigpIGNvbnN0IHsgcmV0dXJuIG1fY29yZUxvYWRlci5nZXQo
KTsgfQogCkBAIC03MywxNCArNzIsMTQgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgY2FuY2VsUmVz
b3VyY2VMb2FkZXIoKTsKIAotICAgIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlZGly
ZWN0UmVzcG9uc2UsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgbmV3UmVxdWVzdCk7CisgICAg
dm9pZCB3aWxsU2VuZFJlcXVlc3QoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSk7CiAgICAgdm9p
ZCBkaWRSZWNlaXZlUmVzcG9uc2VXaXRoQ2VydGlmaWNhdGVJbmZvKGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlUmVzcG9uc2UmLCBjb25zdCBQbGF0Zm9ybUNlcnRpZmljYXRlSW5mbyYpOwogICAgIHZv
aWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgQ29yZUlQQzo6RGF0YVJlZmVyZW5jZSYsIGludDY0X3Qg
ZW5jb2RlZERhdGFMZW5ndGgpOwogICAgIHZvaWQgZGlkRmluaXNoUmVzb3VyY2VMb2FkKGRvdWJs
ZSBmaW5pc2hUaW1lKTsKICAgICB2b2lkIGRpZEZhaWxSZXNvdXJjZUxvYWQoY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VFcnJvciYpOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc291cmNlKGNvbnN0IFNo
YXJlYWJsZVJlc291cmNlOjpIYW5kbGUmLCBkb3VibGUgZmluaXNoVGltZSk7CiAKLSAgICB2b2lk
IGNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UoY29uc3QgV2ViQ29yZTo6UHJv
dGVjdGlvblNwYWNlJiwgYm9vbCYgcmVzdWx0KTsKKyAgICB2b2lkIGNhbkF1dGhlbnRpY2F0ZUFn
YWluc3RQcm90ZWN0aW9uU3BhY2UoY29uc3QgV2ViQ29yZTo6UHJvdGVjdGlvblNwYWNlJik7CiAK
ICAgICBSZWZQdHI8V2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI+IG1fY29yZUxvYWRlcjsKIH07Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIu
bWVzc2FnZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3
b3JrL1dlYlJlc291cmNlTG9hZGVyLm1lc3NhZ2VzLmluCShyZXZpc2lvbiAxNDY3ODUpCisrKyBT
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIubWVzc2Fn
ZXMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTI1LDEzICsyNSwxMyBAQCBtZXNzYWdlcyAtPiBXZWJS
ZXNvdXJjZUxvYWRlciBMZWdhY3lSZWNlCiAgICAgQ2FuY2VsUmVzb3VyY2VMb2FkZXIoKQogCiAg
ICAgLy8gRklYTUUgKE5ldHdvcmtQcm9jZXNzKTogV2UnbGwgbmVlZCBtdWNoIG1vcmUgZ3JhbnVs
YXJpdHkgZm9yIHJlc3BvbnNlIG1lc3NhZ2VzLgotICAgIFdpbGxTZW5kUmVxdWVzdChXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSByZWRp
cmVjdFJlc3BvbnNlKSAtPiAoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IG5ld1JlcXVlc3QpCisg
ICAgV2lsbFNlbmRSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCBXZWJD
b3JlOjpSZXNvdXJjZVJlc3BvbnNlIHJlZGlyZWN0UmVzcG9uc2UpCiAgICAgRGlkUmVjZWl2ZVJl
c3BvbnNlV2l0aENlcnRpZmljYXRlSW5mbyhXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIHJlc3Bv
bnNlLCBXZWJLaXQ6OlBsYXRmb3JtQ2VydGlmaWNhdGVJbmZvIGNlcnRpZmljYXRlSW5mbykKICAg
ICBEaWRSZWNlaXZlRGF0YShDb3JlSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGEsIGludDY0X3QgZW5j
b2RlZERhdGFMZW5ndGgpCiAgICAgRGlkRmluaXNoUmVzb3VyY2VMb2FkKGRvdWJsZSBmaW5pc2hU
aW1lKQogICAgIERpZEZhaWxSZXNvdXJjZUxvYWQoV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBlcnJv
cikKICAgICAKLSAgICBDYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlKFdlYkNv
cmU6OlByb3RlY3Rpb25TcGFjZSBwcm90ZWN0aW9uU3BhY2UpIC0+IChib29sIHJlc3BvbnNlKQor
ICAgIENhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UoV2ViQ29yZTo6UHJvdGVj
dGlvblNwYWNlIHByb3RlY3Rpb25TcGFjZSkKIAogICAgIC8vIERpZFJlY2VpdmVSZXNvdXJjZSBp
cyBmb3Igd2hlbiB3ZSBoYXZlIHRoZSBlbnRpcmUgcmVzb3VyY2UgZGF0YSBhdmFpbGFibGUgYXQg
b25jZSwgc3VjaCBhcyB3aGVuIHRoZSByZXNvdXJjZSBpcyBjYWNoZWQgaW4gbWVtb3J5CiAgICAg
RGlkUmVjZWl2ZVJlc291cmNlKFdlYktpdDo6U2hhcmVhYmxlUmVzb3VyY2U6OkhhbmRsZSByZXNv
dXJjZSwgZG91YmxlIGZpbmlzaFRpbWUpCg==
</data>
<flag name="review"
          id="216947"
          type_id="1"
          status="+"
          setter="beidson"
    />
          </attachment>
      

    </bug>

</bugzilla>