<?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>173583</bug_id>
          
          <creation_ts>2017-06-19 22:14:41 -0700</creation_ts>
          <short_desc>Use WTF::Function instead of std::function in more places in WebCore/</short_desc>
          <delta_ts>2017-06-20 16:48:26 -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>WebCore Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>achristensen</cc>
    
    <cc>beidson</cc>
    
    <cc>buildbot</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>kling</cc>
    
    <cc>koivisto</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1320989</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-06-19 22:14:41 -0700</bug_when>
    <thetext>Use WTF::Function instead of std::function in more places in WebCore/ to reduce copying.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1320993</commentid>
    <comment_count>1</comment_count>
      <attachid>313367</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-06-19 22:17:55 -0700</bug_when>
    <thetext>Created attachment 313367
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1320995</commentid>
    <comment_count>2</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-06-19 22:19:15 -0700</bug_when>
    <thetext>Attachment 313367 did not pass style-queue:


ERROR: Source/WebCore/platform/graphics/gstreamer/MediaPlayerRequestInstallMissingPluginsCallback.h:32:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/graphics/gstreamer/MediaPlayerRequestInstallMissingPluginsCallback.h:51:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/graphics/gstreamer/MediaPlayerRequestInstallMissingPluginsCallback.h:56:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/network/soup/SoupNetworkSession.cpp:296:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/graphics/GraphicsLayer.cpp:675:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/ScrollAnimationSmooth.cpp:43:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/network/NetworkStateNotifier.h:62:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/network/NetworkStateNotifier.h:70:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.h:117:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.h:134:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/workers/Worker.cpp:62:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/page/Page.cpp:284:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/platform/network/soup/SoupNetworkSession.h:68:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/graphics/GraphicsLayer.h:574:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/network/soup/CookieStorageSoup.cpp:26:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/mac/WebCoreNSURLExtras.mm:297:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/platform/cf/MainThreadSharedTimerCF.cpp:60:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/platform/graphics/Path.h:34:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WebCore/platform/graphics/Path.h:104:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/ScrollAnimationSmooth.h:41:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/ScrollAnimationSmooth.h:100:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/network/NetworkStateNotifier.cpp:51:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/Logging.cpp:86:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/network/CookieStorage.h:34:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/network/cf/CookieStorageCFNet.cpp:47:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/network/cf/CookieStorageCFNet.cpp:49:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/network/cf/CookieStorageCFNet.cpp:72:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/network/mac/CookieStorageMac.mm:35:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/network/mac/CookieStorageMac.mm:39:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/network/mac/CookieStorageMac.mm:57:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/network/mac/CookieStorageMac.mm:76:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/rendering/RenderLayerBacking.cpp:2092:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:3378:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:3453:  Missing space before {  [whitespace/braces] [5]
Total errors found: 34 in 66 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>1321001</commentid>
    <comment_count>3</comment_count>
      <attachid>313369</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-06-19 22:33:47 -0700</bug_when>
    <thetext>Created attachment 313369
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1321002</commentid>
    <comment_count>4</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-06-19 22:35:02 -0700</bug_when>
    <thetext>Attachment 313369 did not pass style-queue:


ERROR: Source/WebCore/platform/graphics/gstreamer/MediaPlayerRequestInstallMissingPluginsCallback.h:32:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/graphics/gstreamer/MediaPlayerRequestInstallMissingPluginsCallback.h:51:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/graphics/gstreamer/MediaPlayerRequestInstallMissingPluginsCallback.h:56:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/network/soup/SoupNetworkSession.cpp:296:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/graphics/GraphicsLayer.cpp:675:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/ScrollAnimationSmooth.cpp:43:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/network/NetworkStateNotifier.h:62:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/network/NetworkStateNotifier.h:70:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.h:117:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.h:134:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/workers/Worker.cpp:62:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/page/Page.cpp:284:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/platform/network/soup/SoupNetworkSession.h:68:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/graphics/GraphicsLayer.h:574:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/network/soup/CookieStorageSoup.cpp:26:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/mac/WebCoreNSURLExtras.mm:297:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/platform/cf/MainThreadSharedTimerCF.cpp:60:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/platform/graphics/Path.h:34:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WebCore/platform/graphics/Path.h:104:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/ScrollAnimationSmooth.h:41:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/ScrollAnimationSmooth.h:100:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/network/NetworkStateNotifier.cpp:51:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/Logging.cpp:86:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/network/CookieStorage.h:34:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/network/cf/CookieStorageCFNet.cpp:47:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/network/cf/CookieStorageCFNet.cpp:49:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/network/cf/CookieStorageCFNet.cpp:72:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/network/mac/CookieStorageMac.mm:35:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/network/mac/CookieStorageMac.mm:39:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/network/mac/CookieStorageMac.mm:57:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/network/mac/CookieStorageMac.mm:76:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/rendering/RenderLayerBacking.cpp:2092:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:3378:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:3453:  Missing space before {  [whitespace/braces] [5]
Total errors found: 34 in 66 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>1321003</commentid>
    <comment_count>5</comment_count>
      <attachid>313370</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-06-19 22:35:33 -0700</bug_when>
    <thetext>Created attachment 313370
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1321004</commentid>
    <comment_count>6</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-06-19 22:37:58 -0700</bug_when>
    <thetext>Attachment 313370 did not pass style-queue:


ERROR: Source/WebCore/platform/graphics/gstreamer/MediaPlayerRequestInstallMissingPluginsCallback.h:32:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/graphics/gstreamer/MediaPlayerRequestInstallMissingPluginsCallback.h:51:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/graphics/gstreamer/MediaPlayerRequestInstallMissingPluginsCallback.h:56:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/network/soup/SoupNetworkSession.cpp:296:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/graphics/GraphicsLayer.cpp:675:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/ScrollAnimationSmooth.cpp:43:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/network/NetworkStateNotifier.h:62:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/network/NetworkStateNotifier.h:70:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.h:117:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.h:134:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/workers/Worker.cpp:62:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/page/Page.cpp:284:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/platform/network/soup/SoupNetworkSession.h:68:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/graphics/GraphicsLayer.h:574:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/network/soup/CookieStorageSoup.cpp:26:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/mac/WebCoreNSURLExtras.mm:297:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/platform/cf/MainThreadSharedTimerCF.cpp:60:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/platform/graphics/Path.h:34:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WebCore/platform/graphics/Path.h:104:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/ScrollAnimationSmooth.h:41:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/ScrollAnimationSmooth.h:100:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/network/NetworkStateNotifier.cpp:51:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/Logging.cpp:87:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/network/CookieStorage.h:34:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/network/cf/CookieStorageCFNet.cpp:47:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/network/cf/CookieStorageCFNet.cpp:49:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/network/cf/CookieStorageCFNet.cpp:72:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/network/mac/CookieStorageMac.mm:35:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/network/mac/CookieStorageMac.mm:39:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/network/mac/CookieStorageMac.mm:57:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/network/mac/CookieStorageMac.mm:76:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/rendering/RenderLayerBacking.cpp:2092:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:3378:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:3453:  Missing space before {  [whitespace/braces] [5]
Total errors found: 34 in 66 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>1321005</commentid>
    <comment_count>7</comment_count>
      <attachid>313371</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-06-19 22:47:35 -0700</bug_when>
    <thetext>Created attachment 313371
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1321006</commentid>
    <comment_count>8</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-06-19 22:49:07 -0700</bug_when>
    <thetext>Attachment 313371 did not pass style-queue:


ERROR: Source/WebCore/platform/graphics/gstreamer/MediaPlayerRequestInstallMissingPluginsCallback.h:32:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/graphics/gstreamer/MediaPlayerRequestInstallMissingPluginsCallback.h:51:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/graphics/gstreamer/MediaPlayerRequestInstallMissingPluginsCallback.h:56:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/network/soup/SoupNetworkSession.cpp:296:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/graphics/GraphicsLayer.cpp:675:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/ScrollAnimationSmooth.cpp:43:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/network/NetworkStateNotifier.h:62:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/network/NetworkStateNotifier.h:70:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.h:117:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.h:134:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/workers/Worker.cpp:62:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/page/Page.cpp:284:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/platform/network/soup/SoupNetworkSession.h:68:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/graphics/GraphicsLayer.h:574:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/network/soup/CookieStorageSoup.cpp:26:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/mac/WebCoreNSURLExtras.mm:297:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/platform/cf/MainThreadSharedTimerCF.cpp:60:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/platform/graphics/Path.h:34:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WebCore/platform/graphics/Path.h:104:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/ScrollAnimationSmooth.h:41:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/ScrollAnimationSmooth.h:100:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/network/NetworkStateNotifier.cpp:51:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/Logging.cpp:87:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/network/CookieStorage.h:34:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/network/cf/CookieStorageCFNet.cpp:47:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/network/cf/CookieStorageCFNet.cpp:49:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/network/cf/CookieStorageCFNet.cpp:72:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/network/mac/CookieStorageMac.mm:35:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/network/mac/CookieStorageMac.mm:39:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/network/mac/CookieStorageMac.mm:57:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/network/mac/CookieStorageMac.mm:76:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/rendering/RenderLayerBacking.cpp:2092:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:3378:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:3453:  Missing space before {  [whitespace/braces] [5]
Total errors found: 34 in 66 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>1321124</commentid>
    <comment_count>9</comment_count>
      <attachid>313402</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-06-20 09:11:12 -0700</bug_when>
    <thetext>Created attachment 313402
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1321125</commentid>
    <comment_count>10</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-06-20 09:12:24 -0700</bug_when>
    <thetext>Attachment 313402 did not pass style-queue:


ERROR: Source/WebCore/platform/graphics/gstreamer/MediaPlayerRequestInstallMissingPluginsCallback.h:32:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/graphics/gstreamer/MediaPlayerRequestInstallMissingPluginsCallback.h:51:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/graphics/gstreamer/MediaPlayerRequestInstallMissingPluginsCallback.h:56:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/network/soup/SoupNetworkSession.cpp:296:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/graphics/GraphicsLayer.cpp:675:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/ScrollAnimationSmooth.cpp:43:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/network/NetworkStateNotifier.h:62:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/network/NetworkStateNotifier.h:70:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.h:117:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.h:134:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/workers/Worker.cpp:62:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/page/Page.cpp:284:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/platform/network/soup/SoupNetworkSession.h:68:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/graphics/GraphicsLayer.h:574:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/network/soup/CookieStorageSoup.cpp:26:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/mac/WebCoreNSURLExtras.mm:297:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/platform/cf/MainThreadSharedTimerCF.cpp:60:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/platform/graphics/Path.h:34:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WebCore/platform/graphics/Path.h:104:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/ScrollAnimationSmooth.h:41:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/ScrollAnimationSmooth.h:100:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/network/NetworkStateNotifier.cpp:51:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/Logging.cpp:87:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/network/CookieStorage.h:34:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/network/cf/CookieStorageCFNet.cpp:47:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/network/cf/CookieStorageCFNet.cpp:49:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/network/cf/CookieStorageCFNet.cpp:73:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/network/mac/CookieStorageMac.mm:35:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/network/mac/CookieStorageMac.mm:39:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/network/mac/CookieStorageMac.mm:57:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/network/mac/CookieStorageMac.mm:76:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/page/mac/PageMac.mm:64:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/page/mac/PageMac.mm:65:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/rendering/RenderLayerBacking.cpp:2092:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:3378:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:3453:  Missing space before {  [whitespace/braces] [5]
Total errors found: 36 in 67 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>1321129</commentid>
    <comment_count>11</comment_count>
      <attachid>313405</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-06-20 09:31:10 -0700</bug_when>
    <thetext>Created attachment 313405
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1321137</commentid>
    <comment_count>12</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-06-20 09:38:03 -0700</bug_when>
    <thetext>Attachment 313405 did not pass style-queue:


ERROR: Source/WebCore/platform/graphics/gstreamer/MediaPlayerRequestInstallMissingPluginsCallback.h:32:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/graphics/gstreamer/MediaPlayerRequestInstallMissingPluginsCallback.h:51:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/graphics/gstreamer/MediaPlayerRequestInstallMissingPluginsCallback.h:56:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/network/soup/SoupNetworkSession.cpp:296:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/graphics/GraphicsLayer.cpp:675:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/ScrollAnimationSmooth.cpp:43:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/network/NetworkStateNotifier.h:62:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/network/NetworkStateNotifier.h:70:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.h:117:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.h:134:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/workers/Worker.cpp:62:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/page/Page.cpp:284:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/platform/network/soup/SoupNetworkSession.h:68:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/graphics/GraphicsLayer.h:574:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/network/soup/CookieStorageSoup.cpp:26:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/mac/WebCoreNSURLExtras.mm:297:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/platform/cf/MainThreadSharedTimerCF.cpp:60:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/platform/graphics/Path.h:34:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WebCore/platform/graphics/Path.h:104:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/ScrollAnimationSmooth.h:41:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/ScrollAnimationSmooth.h:100:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/network/NetworkStateNotifier.cpp:51:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/Logging.cpp:87:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/network/CookieStorage.h:34:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/network/cf/CookieStorageCFNet.cpp:47:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/network/cf/CookieStorageCFNet.cpp:49:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/network/cf/CookieStorageCFNet.cpp:73:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/network/mac/CookieStorageMac.mm:35:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/network/mac/CookieStorageMac.mm:39:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/network/mac/CookieStorageMac.mm:57:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/network/mac/CookieStorageMac.mm:76:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/page/mac/PageMac.mm:64:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/page/mac/PageMac.mm:65:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/rendering/RenderLayerBacking.cpp:2092:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/rendering/SimpleLineLayout.cpp:257:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/rendering/SimpleLineLayout.cpp:258:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/rendering/SimpleLineLayout.cpp:259:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:3378:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:3453:  Missing space before {  [whitespace/braces] [5]
Total errors found: 39 in 68 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>1321165</commentid>
    <comment_count>13</comment_count>
      <attachid>313414</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-06-20 11:02:25 -0700</bug_when>
    <thetext>Created attachment 313414
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1321166</commentid>
    <comment_count>14</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-06-20 11:04:37 -0700</bug_when>
    <thetext>Attachment 313414 did not pass style-queue:


ERROR: Source/WebCore/platform/graphics/gstreamer/MediaPlayerRequestInstallMissingPluginsCallback.h:32:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/graphics/gstreamer/MediaPlayerRequestInstallMissingPluginsCallback.h:51:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/graphics/gstreamer/MediaPlayerRequestInstallMissingPluginsCallback.h:56:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/network/soup/SoupNetworkSession.cpp:296:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/graphics/GraphicsLayer.cpp:675:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/ScrollAnimationSmooth.cpp:43:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/network/NetworkStateNotifier.h:62:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/network/NetworkStateNotifier.h:70:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.h:117:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.h:134:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/workers/Worker.cpp:62:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/page/Page.cpp:284:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/platform/network/soup/SoupNetworkSession.h:68:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/graphics/GraphicsLayer.h:574:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/network/soup/CookieStorageSoup.cpp:26:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/mac/WebCoreNSURLExtras.mm:297:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/platform/cf/MainThreadSharedTimerCF.cpp:60:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/platform/graphics/Path.h:34:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WebCore/platform/graphics/Path.h:104:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/ScrollAnimationSmooth.h:41:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/ScrollAnimationSmooth.h:100:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/network/NetworkStateNotifier.cpp:51:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/Logging.cpp:87:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/network/CookieStorage.h:34:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/network/cf/CookieStorageCFNet.cpp:47:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/network/cf/CookieStorageCFNet.cpp:49:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/network/cf/CookieStorageCFNet.cpp:73:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/network/mac/CookieStorageMac.mm:35:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/network/mac/CookieStorageMac.mm:39:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/network/mac/CookieStorageMac.mm:57:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/network/mac/CookieStorageMac.mm:76:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/page/mac/PageMac.mm:64:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/page/mac/PageMac.mm:65:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/rendering/RenderLayerBacking.cpp:2092:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/rendering/SimpleLineLayout.cpp:257:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/rendering/SimpleLineLayout.cpp:258:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/rendering/SimpleLineLayout.cpp:259:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:3378:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:3453:  Missing space before {  [whitespace/braces] [5]
Total errors found: 39 in 68 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>1321209</commentid>
    <comment_count>15</comment_count>
      <attachid>313429</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-06-20 13:09:53 -0700</bug_when>
    <thetext>Created attachment 313429
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1321210</commentid>
    <comment_count>16</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-06-20 13:12:05 -0700</bug_when>
    <thetext>Attachment 313429 did not pass style-queue:


ERROR: Source/WebCore/platform/graphics/gstreamer/MediaPlayerRequestInstallMissingPluginsCallback.h:32:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/graphics/gstreamer/MediaPlayerRequestInstallMissingPluginsCallback.h:51:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/graphics/gstreamer/MediaPlayerRequestInstallMissingPluginsCallback.h:56:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/network/soup/SoupNetworkSession.cpp:296:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/graphics/GraphicsLayer.cpp:675:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/ScrollAnimationSmooth.cpp:43:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/network/NetworkStateNotifier.h:62:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/network/NetworkStateNotifier.h:70:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.h:117:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.h:134:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/workers/Worker.cpp:62:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/page/Page.cpp:284:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/platform/network/soup/SoupNetworkSession.h:68:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/graphics/GraphicsLayer.h:574:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/network/soup/CookieStorageSoup.cpp:26:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/mac/WebCoreNSURLExtras.mm:297:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/platform/cf/MainThreadSharedTimerCF.cpp:60:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/platform/graphics/Path.h:34:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WebCore/platform/graphics/Path.h:104:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/ScrollAnimationSmooth.h:41:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/ScrollAnimationSmooth.h:100:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/network/NetworkStateNotifier.cpp:51:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/Logging.cpp:87:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/network/CookieStorage.h:34:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/network/cf/CookieStorageCFNet.cpp:47:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/network/cf/CookieStorageCFNet.cpp:49:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/network/cf/CookieStorageCFNet.cpp:73:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/network/mac/CookieStorageMac.mm:35:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/network/mac/CookieStorageMac.mm:39:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/network/mac/CookieStorageMac.mm:57:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/network/mac/CookieStorageMac.mm:76:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/page/mac/PageMac.mm:64:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/page/mac/PageMac.mm:65:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/rendering/RenderLayerBacking.cpp:2092:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/rendering/SimpleLineLayout.cpp:257:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/rendering/SimpleLineLayout.cpp:258:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/rendering/SimpleLineLayout.cpp:259:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:3378:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:3453:  Missing space before {  [whitespace/braces] [5]
Total errors found: 39 in 68 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>1321284</commentid>
    <comment_count>17</comment_count>
      <attachid>313429</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2017-06-20 16:12:48 -0700</bug_when>
    <thetext>Comment on attachment 313429
Patch

Should do more #pragma once as you go.

Annoying that we can’t just pass a C++ function to WTF::Function. Not sure I understand why.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1321295</commentid>
    <comment_count>18</comment_count>
      <attachid>313429</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-06-20 16:42:23 -0700</bug_when>
    <thetext>Comment on attachment 313429
Patch

Clearing flags on attachment: 313429

Committed r218615: &lt;http://trac.webkit.org/changeset/218615&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1321296</commentid>
    <comment_count>19</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-06-20 16:42:25 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1321297</commentid>
    <comment_count>20</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-06-20 16:48:26 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #17)
&gt; Comment on attachment 313429 [details]
&gt; Patch
&gt; 
&gt; Should do more #pragma once as you go.
&gt; 
&gt; Annoying that we can’t just pass a C++ function to WTF::Function. Not sure I
&gt; understand why.

Right, this is annoying. I will look into making this work.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>313367</attachid>
            <date>2017-06-19 22:17:55 -0700</date>
            <delta_ts>2017-06-19 22:33:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-173583-20170619221755.patch</filename>
            <type>text/plain</type>
            <size>79831</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE4NTI4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWRjMjgyZDE0ODRkZjk3
MzQ0NTA1MmZiNTI0ZTM3MDljZmQxZDcwNy4uMThlYjAzMzJjOGE2NjQ5ZjdlNDJhOGI0NDUxYjAz
MmE1MDAyODU0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzMCBAQAorMjAxNy0wNi0xOSAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFVzZSBXVEY6OkZ1bmN0aW9u
IGluc3RlYWQgb2Ygc3RkOjpmdW5jdGlvbiBpbiBtb3JlIHBsYWNlcyBpbiBXZWJDb3JlLworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTczNTgzCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXNlIFdURjo6RnVu
Y3Rpb24gaW5zdGVhZCBvZiBzdGQ6OmZ1bmN0aW9uIGluIG1vcmUgcGxhY2VzIGluIFdlYkNvcmUv
IHRvCisgICAgICAgIHJlZHVjZSBjb3B5aW5nLgorCisgICAgICAgICogcGFnZS9QYWdlLmNwcDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9IeXN0ZXJlc2lzQWN0aXZpdHkuaDoKKyAgICAgICAgKFdlYkNv
cmU6Okh5c3RlcmVzaXNBY3Rpdml0eTo6SHlzdGVyZXNpc0FjdGl2aXR5KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9Mb2dnaW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnJlZ2lzdGVyTm90aWZ5Q2Fs
bGJhY2spOgorICAgICAgICAqIHBsYXRmb3JtL0xvZ2dpbmcuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9NYWluVGhyZWFkU2hhcmVkVGltZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWFpblRocmVh
ZFNoYXJlZFRpbWVyOjpzZXRGaXJlZEZ1bmN0aW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9NYWlu
VGhyZWFkU2hhcmVkVGltZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9QbGF0Zm9ybVBhc3RlYm9h
cmQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9TY29wZUd1YXJkLmg6CisgICAgICAgIChXZWJDb3Jl
OjpTY29wZUd1YXJkOjpTY29wZUd1YXJkKToKKyAgICAgICAgKFdlYkNvcmU6OlNjb3BlR3VhcmQ6
OmVuYWJsZSk6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uU21vb3RoLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdGlvblNtb290aDo6U2Nyb2xsQW5pbWF0aW9u
U21vb3RoKToKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxBbmltYXRpb25TbW9vdGguaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9TaGFyZWRUaW1lci5oOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlv
L1BsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbGF0
Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6OmN1cnJlbnRTZXNzaW9uc01hdGNoaW5nKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXIuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9jZi9NYWluVGhyZWFkU2hhcmVkVGltZXJDRi5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpzZXR1cFBvd2VyT2JzZXJ2ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2NmL1J1bkxv
b3BPYnNlcnZlci5oOgorICAgICAgICAoV2ViQ29yZTo6UnVuTG9vcE9ic2VydmVyOjpSdW5Mb29w
T2JzZXJ2ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5o
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6dHJhdmVyc2UpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9N
ZWRpYVBsYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjphZGRNZWRpYUVuZ2luZSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9QYXRoLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb246OnNlZWtDb21wbGV0ZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uOjpzY2hlZHVsZU1haW5U
aHJlYWROb3RpZmljYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uOjpkaXNwYXRjaE5vdGlmaWNhdGlvbik6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5oOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uOjpOb3RpZmlj
YXRpb246Ok5vdGlmaWNhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb246Ok5vdGlmaWNhdGlvbjo6ZnVuY3Rpb24pOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbk9iakMubW06CisgICAgICAgICgtW1dlYkNvcmVBVkZNb3ZpZU9ic2VydmVyIG9ic2VydmVW
YWx1ZUZvcktleVBhdGg6b2ZPYmplY3Q6Y2hhbmdlOmNvbnRleHQ6XSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFT
dHJlYW1BVkZPYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6cnVuV2l0aG91dEFuaW1hdGlvbnMp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0lPU3VyZmFjZS5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0lPU3VyZmFjZS5tbToKKyAgICAgICAgKFdlYkNv
cmU6OklPU3VyZmFjZTo6Y29udmVydFRvRm9ybWF0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvTWFpblRocmVhZE5vdGlmaWVyLmg6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUmVxdWVzdEluc3RhbGxNaXNzaW5nUGx1Z2lu
c0NhbGxiYWNrLmg6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclJlcXVlc3RJbnN0YWxs
TWlzc2luZ1BsdWdpbnNDYWxsYmFjazo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
UGxheWVyUmVxdWVzdEluc3RhbGxNaXNzaW5nUGx1Z2luc0NhbGxiYWNrOjpNZWRpYVBsYXllclJl
cXVlc3RJbnN0YWxsTWlzc2luZ1BsdWdpbnNDYWxsYmFjayk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dERpcmVjdDJELmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd1dpdGhvdXRTaGFkb3cpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3V2l0aFNoYWRvdyk6CisgICAgICAgICogcGxhdGZvcm0v
Z3RrL1Bhc3RlYm9hcmRIZWxwZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkU2V0
RGF0YTo6Q2xpcGJvYXJkU2V0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkSGVs
cGVyOjp3cml0ZUNsaXBib2FyZENvbnRlbnRzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvUGFz
dGVib2FyZEhlbHBlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9QbGF0Zm9ybVBhc3RlYm9h
cmRHdGsuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1QYXN0ZWJvYXJkOjp3cml0ZVRv
Q2xpcGJvYXJkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuSW50
ZXJmYWNlQVZLaXQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVu
SW50ZXJmYWNlQVZLaXQubW06CisgICAgICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VB
VktpdDo6cHJlcGFyZWRUb1JldHVyblRvSW5saW5lKToKKyAgICAgICAgKFdlYlZpZGVvRnVsbHNj
cmVlbkludGVyZmFjZUFWS2l0OjpmdWxsc2NyZWVuTWF5UmV0dXJuVG9JbmxpbmUpOgorICAgICAg
ICAqIHBsYXRmb3JtL21hYy9Qb3dlck9ic2VydmVyTWFjLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlBvd2VyT2JzZXJ2ZXI6OlBvd2VyT2JzZXJ2ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9Q
b3dlck9ic2VydmVyTWFjLmg6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1dlYkNvcmVOU1VSTEV4
dHJhcy5tbToKKyAgICAgICAgKFdlYkNvcmU6OmlzU2Vjb25kTGV2ZWxEb21haW5OYW1lQWxsb3dl
ZEJ5VExEUnVsZXMpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL0NhcHR1cmVEZXZp
Y2VNYW5hZ2VyLmNwcDoKKyAgICAgICAgKENhcHR1cmVEZXZpY2VNYW5hZ2VyOjphZGRDYXB0dXJl
RGV2aWNlQ2hhbmdlZE9ic2VydmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9D
YXB0dXJlRGV2aWNlTWFuYWdlci5oOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL1Jl
YWx0aW1lTWVkaWFTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNv
dXJjZTo6c2NoZWR1bGVEZWZlcnJlZFRhc2spOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3Ry
ZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVh
bS9pb3MvQVZBdWRpb1Nlc3Npb25DYXB0dXJlRGV2aWNlTWFuYWdlci5tbToKKyAgICAgICAgKC1b
V2ViQVZBdWRpb1Nlc3Npb25BdmFpbGFibGVJbnB1dHNMaXN0ZW5lciBpbml0V2l0aENhbGxiYWNr
Ol0pOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Db3JlQXVkaW9DYXB0dXJl
U291cmNlLmg6CisgICAgICAgICogcGxhdGZvcm0vbW9jay9TY3JvbGxBbmltYXRvck1vY2suY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3JNb2NrOjpTY3JvbGxBbmltYXRvck1v
Y2spOgorICAgICAgICAqIHBsYXRmb3JtL21vY2svU2Nyb2xsQW5pbWF0b3JNb2NrLmg6CisgICAg
ICAgICogcGxhdGZvcm0vbmV0d29yay9Db29raWVTdG9yYWdlLmg6CisgICAgICAgICogcGxhdGZv
cm0vbmV0d29yay9OZXR3b3JrU3RhdGVOb3RpZmllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpO
ZXR3b3JrU3RhdGVOb3RpZmllcjo6YWRkTmV0d29ya1N0YXRlQ2hhbmdlTGlzdGVuZXIpOgorICAg
ICAgICAqIHBsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0YXRlTm90aWZpZXIuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246OmZvckVhY2gpOgorICAgICAgICAqIHBsYXRm
b3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmg6CisgICAgICAgICogcGxhdGZvcm0v
bmV0d29yay9jZi9Db29raWVTdG9yYWdlQ0ZOZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29v
a2llQ2hhbmdlQ2FsbGJhY2tNYXApOgorICAgICAgICAoV2ViQ29yZTo6c3RhcnRPYnNlcnZpbmdD
b29raWVDaGFuZ2VzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL1NvY2tldFN0cmVh
bUhhbmRsZUltcGxDRk5ldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjYWxsT25NYWluVGhyZWFk
QW5kV2FpdCk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9tYWMvQ29va2llU3RvcmFnZU1h
Yy5tbToKKyAgICAgICAgKC1bV2ViQ29va2llU3RvcmFnZU9iakNBZGFwdGVyIHN0YXJ0TGlzdGVu
aW5nRm9yQ29va2llQ2hhbmdlTm90aWZpY2F0aW9uc1dpdGhDYWxsYmFjazpdKToKKyAgICAgICAg
KFdlYkNvcmU6OnN0YXJ0T2JzZXJ2aW5nQ29va2llQ2hhbmdlcyk6CisgICAgICAgICogcGxhdGZv
cm0vbmV0d29yay9zb3VwL0Nvb2tpZVN0b3JhZ2VTb3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OnN0YXJ0T2JzZXJ2aW5nQ29va2llQ2hhbmdlcyk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29y
ay9zb3VwL1NvdXBOZXR3b3JrU2Vzc2lvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTb3VwTmV0
d29ya1Nlc3Npb246OmNoZWNrVExTRXJyb3JzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3Jr
L3NvdXAvU291cE5ldHdvcmtTZXNzaW9uLmg6CisgICAgICAgICogcGxhdGZvcm0vc3FsL1NRTGl0
ZURhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmRlc3Ryb3lDb2xsYXRpb25GdW5jdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpjYWxsQ29sbGF0aW9uRnVuY3Rpb24pOgorICAgICAgICAo
V2ViQ29yZTo6U1FMaXRlRGF0YWJhc2U6OnNldENvbGxhdGlvbkZ1bmN0aW9uKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2UuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyTGF5ZXJCYWNraW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRyYXZlcnNlVmlzaWJsZU5v
bkNvbXBvc2l0ZWREZXNjZW5kYW50TGF5ZXJzKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
TGlzdEJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMaXN0Qm94OjpwYWludEl0ZW0p
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMaXN0Qm94Lmg6CisgICAgICAgICogcmVuZGVy
aW5nL2xpbmUvQnJlYWtpbmdDb250ZXh0Lmg6CisgICAgICAgIChXZWJDb3JlOjpCcmVha2luZ0Nv
bnRleHQ6OklubGluZUl0ZXJhdG9ySGlzdG9yeTo6cHVzaCk6CisgICAgICAgIChXZWJDb3JlOjpC
cmVha2luZ0NvbnRleHQ6OklubGluZUl0ZXJhdG9ySGlzdG9yeTo6dXBkYXRlKToKKyAgICAgICAg
KiB3b3JrZXJzL1dvcmtlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXI6Oldvcmtlcik6
CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJSdW5Mb29wLmNwcDoKKwogMjAxNy0wNi0xOSAgTXls
ZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgogCiAgICAgICAgIFtDb2NvYV0g
VGhlIHN5c3RlbSBKYXBhbmVzZSBmb250IGNhbm5vdCBiZSBpdGFsaWNpemVkCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdl
LmNwcAppbmRleCAwMWZhZDM0NTg5ZmUxNDU4MzFkNWY0ZDJiNzRiOWE3NDllN2I5MzAwLi43NGEx
OWU4N2JlMmQ0YWJmOWZhMzA0ZWUyOTU0NzI4ODljYTU1N2I3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAK
QEAgLTI4MSw3ICsyODEsNyBAQCBQYWdlOjpQYWdlKFBhZ2VDb25maWd1cmF0aW9uJiYgcGFnZUNv
bmZpZ3VyYXRpb24pCiAgICAgaWYgKCFhbGxQYWdlcykgewogICAgICAgICBhbGxQYWdlcyA9IG5l
dyBIYXNoU2V0PFBhZ2UqPjsKICAgICAgICAgCi0gICAgICAgIG5ldHdvcmtTdGF0ZU5vdGlmaWVy
KCkuYWRkTmV0d29ya1N0YXRlQ2hhbmdlTGlzdGVuZXIobmV0d29ya1N0YXRlQ2hhbmdlZCk7Cisg
ICAgICAgIG5ldHdvcmtTdGF0ZU5vdGlmaWVyKCkuYWRkTmV0d29ya1N0YXRlQ2hhbmdlTGlzdGVu
ZXIoW10gKGJvb2wgaXNPbkxpbmUpIHsgbmV0d29ya1N0YXRlQ2hhbmdlZChpc09uTGluZSk7IH0p
OwogICAgIH0KIAogICAgIEFTU0VSVCghYWxsUGFnZXMtPmNvbnRhaW5zKHRoaXMpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0h5c3RlcmVzaXNBY3Rpdml0eS5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vSHlzdGVyZXNpc0FjdGl2aXR5LmgKaW5kZXggNTk5ZTE3MWVj
MWFjYWQyMGVkOGYxNWQxYjQ1YzllYWE5ZjFjZTBhMC4uOTExOGVhNGU5ZmQwNThjZTMxMDc0Mjk2
MTEzZjNjM2NjYzMwMWU0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vSHlz
dGVyZXNpc0FjdGl2aXR5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vSHlzdGVyZXNp
c0FjdGl2aXR5LmgKQEAgLTM5LDggKzM5LDggQEAgZW51bSBjbGFzcyBIeXN0ZXJlc2lzU3RhdGUg
ewogCiBjbGFzcyBIeXN0ZXJlc2lzQWN0aXZpdHkgewogcHVibGljOgotICAgIGV4cGxpY2l0IEh5
c3RlcmVzaXNBY3Rpdml0eShzdGQ6OmZ1bmN0aW9uPHZvaWQoSHlzdGVyZXNpc1N0YXRlKT4gY2Fs
bGJhY2sgPSBbXShIeXN0ZXJlc2lzU3RhdGUpIHsgfSwgZG91YmxlIGh5c3RlcmVzaXNTZWNvbmRz
ID0gRGVmYXVsdEh5c3RlcmVzaXNTZWNvbmRzKQotICAgICAgICA6IG1fY2FsbGJhY2soY2FsbGJh
Y2spCisgICAgZXhwbGljaXQgSHlzdGVyZXNpc0FjdGl2aXR5KFdURjo6RnVuY3Rpb248dm9pZChI
eXN0ZXJlc2lzU3RhdGUpPiYmIGNhbGxiYWNrID0gW10oSHlzdGVyZXNpc1N0YXRlKSB7IH0sIGRv
dWJsZSBoeXN0ZXJlc2lzU2Vjb25kcyA9IERlZmF1bHRIeXN0ZXJlc2lzU2Vjb25kcykKKyAgICAg
ICAgOiBtX2NhbGxiYWNrKFdURk1vdmUoY2FsbGJhY2spKQogICAgICAgICAsIG1faHlzdGVyZXNp
c1NlY29uZHMoaHlzdGVyZXNpc1NlY29uZHMpCiAgICAgICAgICwgbV9hY3RpdmUoZmFsc2UpCiAg
ICAgICAgICwgbV90aW1lcigqdGhpcywgJkh5c3RlcmVzaXNBY3Rpdml0eTo6aHlzdGVyZXNpc1Rp
bWVyRmlyZWQpCkBAIC04OCw3ICs4OCw3IEBAIHByaXZhdGU6CiAgICAgICAgIG1fY2FsbGJhY2so
SHlzdGVyZXNpc1N0YXRlOjpTdG9wcGVkKTsKICAgICB9CiAKLSAgICBzdGQ6OmZ1bmN0aW9uPHZv
aWQoSHlzdGVyZXNpc1N0YXRlKT4gbV9jYWxsYmFjazsKKyAgICBXVEY6OkZ1bmN0aW9uPHZvaWQo
SHlzdGVyZXNpc1N0YXRlKT4gbV9jYWxsYmFjazsKICAgICBkb3VibGUgbV9oeXN0ZXJlc2lzU2Vj
b25kczsgLy8gRklYTUU6IFNob3VsZCB1c2UgU2Vjb25kcy4KICAgICBib29sIG1fYWN0aXZlOwog
ICAgIFRpbWVyIG1fdGltZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9M
b2dnaW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xvZ2dpbmcuY3BwCmluZGV4IDBm
YjViZjgxMjljOTY0NTRjNGU0ZjgwYzAwZGJmZjE3YWEyMzdiOTQuLmJiZWRhNDU0ZjAyZjZkZTQ3
ZGY1YzFkZTYwMWU5MTEyMGIzMGE2ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL0xvZ2dpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xvZ2dpbmcuY3Bw
CkBAIC03OSwxMyArNzksMTMgQEAgdm9pZCBpbml0aWFsaXplTG9nQ2hhbm5lbHNJZk5lY2Vzc2Fy
eSgpCiB9CiAKICNpZm5kZWYgTkRFQlVHCi12b2lkIHJlZ2lzdGVyTm90aWZ5Q2FsbGJhY2soY29u
c3QgU3RyaW5nJiBub3RpZnlJRCwgc3RkOjpmdW5jdGlvbjx2b2lkKCk+IGNhbGxiYWNrKQordm9p
ZCByZWdpc3Rlck5vdGlmeUNhbGxiYWNrKGNvbnN0IFN0cmluZyYgbm90aWZ5SUQsIFdURjo6RnVu
Y3Rpb248dm9pZCgpPiYmIGNhbGxiYWNrKQogewogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIGlu
dCB0b2tlbjsKLSAgICBub3RpZnlfcmVnaXN0ZXJfZGlzcGF0Y2gobm90aWZ5SUQudXRmOCgpLmRh
dGEoKSwgJnRva2VuLCBkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBeKGludCkgeworICAgIG5v
dGlmeV9yZWdpc3Rlcl9kaXNwYXRjaChub3RpZnlJRC51dGY4KCkuZGF0YSgpLCAmdG9rZW4sIGRp
c3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIEJsb2NrUHRyPHZvaWQgKGludCk+Ojpmcm9tQ2FsbGFi
bGUoW10gKGludCkgewogICAgICAgICBjYWxsYmFjaygpOwotICAgIH0pOworICAgIH0pLmdldCgp
KTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKG5vdGlmeUlEKTsKICAgICBVTlVTRURfUEFSQU0o
Y2FsbGJhY2spOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTG9nZ2luZy5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTG9nZ2luZy5oCmluZGV4IDg4M2E5ZjIyMDk3ZWVj
MTZkZWNjYTQ2MzIyODg1MDY2YjQ2N2I3NGUuLjVhYjAxNjJhMTU4NGQxODVhMWJlM2Q1MDZlZThm
YTI4ZWFkNzAzNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xvZ2dpbmcu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2dnaW5nLmgKQEAgLTEwMyw3ICsxMDMs
NyBAQCBTdHJpbmcgbG9nTGV2ZWxTdHJpbmcoKTsKIGJvb2wgaXNMb2dDaGFubmVsRW5hYmxlZChj
b25zdCBTdHJpbmcmIG5hbWUpOwogV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRMb2dDaGFubmVsVG9B
Y2N1bXVsYXRlKGNvbnN0IFN0cmluZyYgbmFtZSk7CiAjaWZuZGVmIE5ERUJVRwotdm9pZCByZWdp
c3Rlck5vdGlmeUNhbGxiYWNrKGNvbnN0IFN0cmluZyYgbm90aWZ5SUQsIHN0ZDo6ZnVuY3Rpb248
dm9pZCgpPiBjYWxsYmFjayk7Cit2b2lkIHJlZ2lzdGVyTm90aWZ5Q2FsbGJhY2soY29uc3QgU3Ry
aW5nJiBub3RpZnlJRCwgV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYgY2FsbGJhY2spOwogI2VuZGlm
CiAKICNlbmRpZiAvLyAhTE9HX0RJU0FCTEVEIHx8ICFSRUxFQVNFX0xPR19ESVNBQkxFRApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWFpblRocmVhZFNoYXJlZFRpbWVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01haW5UaHJlYWRTaGFyZWRUaW1lci5jcHAKaW5k
ZXggZGRhNjgyZWI4NDExYmI4NjMyMmIzMmExZmE1MWIwYmQyYTUxN2I4NC4uNjhmZjA0Mzg5N2Ji
Y2E5MzM5YmYyM2RjNGRkMTNjNTIwNGNlMzBlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vTWFpblRocmVhZFNoYXJlZFRpbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9NYWluVGhyZWFkU2hhcmVkVGltZXIuY3BwCkBAIC00MCw3ICs0MCw3IEBAIE1haW5U
aHJlYWRTaGFyZWRUaW1lcjo6TWFpblRocmVhZFNoYXJlZFRpbWVyKCkKIH0KICNlbmRpZgogCi12
b2lkIE1haW5UaHJlYWRTaGFyZWRUaW1lcjo6c2V0RmlyZWRGdW5jdGlvbihzdGQ6OmZ1bmN0aW9u
PHZvaWQoKT4mJiBmaXJlZEZ1bmN0aW9uKQordm9pZCBNYWluVGhyZWFkU2hhcmVkVGltZXI6OnNl
dEZpcmVkRnVuY3Rpb24oV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYgZmlyZWRGdW5jdGlvbikKIHsK
ICAgICBSRUxFQVNFX0FTU0VSVCghbV9maXJlZEZ1bmN0aW9uIHx8ICFmaXJlZEZ1bmN0aW9uKTsK
ICAgICBtX2ZpcmVkRnVuY3Rpb24gPSBXVEZNb3ZlKGZpcmVkRnVuY3Rpb24pOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWFpblRocmVhZFNoYXJlZFRpbWVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9NYWluVGhyZWFkU2hhcmVkVGltZXIuaAppbmRleCA0OTA3MzBm
MTQzMmQ5MzYwYmIyYmQ1OGMwYWFjYjc0MjQ5ODU0ZTRiLi45NGExOTBkMzc3OTlmMjk0NmNkNTZl
OTdkOTAzZjdjODVkNTY0ZmYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9N
YWluVGhyZWFkU2hhcmVkVGltZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NYWlu
VGhyZWFkU2hhcmVkVGltZXIuaApAQCAtNDEsNyArNDEsNyBAQCBjbGFzcyBNYWluVGhyZWFkU2hh
cmVkVGltZXIgZmluYWwgOiBwdWJsaWMgU2hhcmVkVGltZXIgewogcHVibGljOgogICAgIHN0YXRp
YyBNYWluVGhyZWFkU2hhcmVkVGltZXImIHNpbmdsZXRvbigpOwogCi0gICAgdm9pZCBzZXRGaXJl
ZEZ1bmN0aW9uKHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiYmKSBvdmVycmlkZTsKKyAgICB2b2lkIHNl
dEZpcmVkRnVuY3Rpb24oV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYpIG92ZXJyaWRlOwogICAgIHZv
aWQgc2V0RmlyZUludGVydmFsKFNlY29uZHMpIG92ZXJyaWRlOwogICAgIHZvaWQgc3RvcCgpIG92
ZXJyaWRlOwogICAgIHZvaWQgaW52YWxpZGF0ZSgpIG92ZXJyaWRlOwpAQCAtNTMsNyArNTMsNyBA
QCBwdWJsaWM6CiBwcml2YXRlOgogICAgIE1haW5UaHJlYWRTaGFyZWRUaW1lcigpOwogCi0gICAg
c3RkOjpmdW5jdGlvbjx2b2lkKCk+IG1fZmlyZWRGdW5jdGlvbjsKKyAgICBXVEY6OkZ1bmN0aW9u
PHZvaWQoKT4gbV9maXJlZEZ1bmN0aW9uOwogI2lmIFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0o
V1BFKQogICAgIFJ1bkxvb3A6OlRpbWVyPE1haW5UaHJlYWRTaGFyZWRUaW1lcj4gbV90aW1lcjsK
ICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1QYXN0
ZWJvYXJkLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVBhc3RlYm9hcmQuaApp
bmRleCBhZmRhMTU1ZWYxMzQ0M2E5MTFlODMwNzBkZGM3NzcxYjViNTIzZDg4Li4xM2U1OTg5MDgw
MTlmNjI0ZDVkNWRjNzQzMzI1NTBkM2UwNjY2NmMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9QbGF0Zm9ybVBhc3RlYm9hcmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9QbGF0Zm9ybVBhc3RlYm9hcmQuaApAQCAtMjYsOCArMjYsOCBAQAogI2lmbmRlZiBQbGF0
Zm9ybVBhc3RlYm9hcmRfaAogI2RlZmluZSBQbGF0Zm9ybVBhc3RlYm9hcmRfaAogCi0jaW5jbHVk
ZSA8ZnVuY3Rpb25hbD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9G
dW5jdGlvbi5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1Jl
dGFpblB0ci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KQEAgLTkzLDcgKzkzLDcgQEAgcHVi
bGljOgogICAgIFdFQkNPUkVfRVhQT1JUIGludCBudW1iZXJPZkZpbGVzKCk7CiAKICNpZiBQTEFU
Rk9STShHVEspCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB3cml0ZVRvQ2xpcGJvYXJkKGNvbnN0
IFNlbGVjdGlvbkRhdGEmLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4mJiBwcmltYXJ5U2VsZWN0aW9u
Q2xlYXJlZCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB3cml0ZVRvQ2xpcGJvYXJkKGNvbnN0
IFNlbGVjdGlvbkRhdGEmLCBXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJiBwcmltYXJ5U2VsZWN0aW9u
Q2xlYXJlZCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgUmVmPFNlbGVjdGlvbkRhdGE+IHJlYWRGcm9t
Q2xpcGJvYXJkKCk7CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vU2NvcGVHdWFyZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2NvcGVHdWFyZC5oCmlu
ZGV4IDI0YWI3ZmY1OWUwNGE5NGEwMDYzOTEyYWE5ZmE5ZjUxMzY5MDU4NTEuLmQ0Y2IzYjlmOGVi
MjQ0ZTFjMTM4YTA3Zjc2Mjc4MWRkNmQxYTI3NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1Njb3BlR3VhcmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY29w
ZUd1YXJkLmgKQEAgLTI1LDcgKzI1LDcgQEAKICNpZm5kZWYgU2NvcGVHdWFyZF9oCiAjZGVmaW5l
IFNjb3BlR3VhcmRfaAogCi0jaW5jbHVkZSA8ZnVuY3Rpb25hbD4KKyNpbmNsdWRlIDx3dGYvRnVu
Y3Rpb24uaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0zNSw3ICszNSw3IEBAIHB1Ymxp
YzoKICAgICB7CiAgICAgfQogCi0gICAgU2NvcGVHdWFyZChzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4g
ZnVuY3Rpb24pCisgICAgU2NvcGVHdWFyZChXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJiBmdW5jdGlv
bikKICAgICAgICAgOiBtX2Z1bmN0aW9uKFdURk1vdmUoZnVuY3Rpb24pKQogICAgIHsKICAgICB9
CkBAIC00Niw3ICs0Niw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIG1fZnVuY3Rpb24oKTsKICAg
ICB9CiAKLSAgICB2b2lkIGVuYWJsZShzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4gZnVuY3Rpb24pCisg
ICAgdm9pZCBlbmFibGUoV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYgZnVuY3Rpb24pCiAgICAgewog
ICAgICAgICBtX2Z1bmN0aW9uID0gV1RGTW92ZShmdW5jdGlvbik7CiAgICAgfQpAQCAtNTcsNyAr
NTcsNyBAQCBwdWJsaWM6CiAgICAgfQogCiBwcml2YXRlOgotICAgIHN0ZDo6ZnVuY3Rpb248dm9p
ZCgpPiBtX2Z1bmN0aW9uIHsgbnVsbHB0ciB9OworICAgIFdURjo6RnVuY3Rpb248dm9pZCgpPiBt
X2Z1bmN0aW9uOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uU21vb3RoLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdGlvblNtb290aC5jcHAKaW5kZXggNGM2YjgxNGY5
MGRhZWYwZjE0OWFjNTQ2NmU4YzljNzhiNWFhOTk3MC4uZTBmYjEyYzQ5MTdhOTAxY2UwYzI0OGNk
MzQ4Y2JmMGY1ZjlmMzI2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Ny
b2xsQW5pbWF0aW9uU21vb3RoLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3Jv
bGxBbmltYXRpb25TbW9vdGguY3BwCkBAIC00MCw3ICs0MCw3IEBAIHN0YXRpYyBjb25zdCBkb3Vi
bGUgZnJhbWVSYXRlID0gNjA7CiBzdGF0aWMgY29uc3QgU2Vjb25kcyB0aWNrVGltZSA9IDFfcyAv
IGZyYW1lUmF0ZTsKIHN0YXRpYyBjb25zdCBTZWNvbmRzIG1pbmltdW1UaW1lckludGVydmFsIHsg
MV9tcyB9OwogCi1TY3JvbGxBbmltYXRpb25TbW9vdGg6OlNjcm9sbEFuaW1hdGlvblNtb290aChT
Y3JvbGxhYmxlQXJlYSYgc2Nyb2xsYWJsZUFyZWEsIGNvbnN0IEZsb2F0UG9pbnQmIHBvc2l0aW9u
LCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKEZsb2F0UG9pbnQmJik+JiYgbm90aWZ5UG9zaXRpb25DaGFu
Z2VkRnVuY3Rpb24pCitTY3JvbGxBbmltYXRpb25TbW9vdGg6OlNjcm9sbEFuaW1hdGlvblNtb290
aChTY3JvbGxhYmxlQXJlYSYgc2Nyb2xsYWJsZUFyZWEsIGNvbnN0IEZsb2F0UG9pbnQmIHBvc2l0
aW9uLCBXVEY6OkZ1bmN0aW9uPHZvaWQgKEZsb2F0UG9pbnQmJik+JiYgbm90aWZ5UG9zaXRpb25D
aGFuZ2VkRnVuY3Rpb24pCiAgICAgOiBTY3JvbGxBbmltYXRpb24oc2Nyb2xsYWJsZUFyZWEpCiAg
ICAgLCBtX25vdGlmeVBvc2l0aW9uQ2hhbmdlZEZ1bmN0aW9uKFdURk1vdmUobm90aWZ5UG9zaXRp
b25DaGFuZ2VkRnVuY3Rpb24pKQogICAgICwgbV9ob3Jpem9udGFsRGF0YShwb3NpdGlvbi54KCks
IHNjcm9sbGFibGVBcmVhLnZpc2libGVXaWR0aCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uU21vb3RoLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9TY3JvbGxBbmltYXRpb25TbW9vdGguaAppbmRleCAyNDM5NjQ4ZjE4NGRjN2QyMjg0OWNh
ZTM5NTFjMGE2ZDg2NzJkYzkzLi4wMmNjNGVlMmJkNzQzZDA2MjllYWQwNDhiZjc2YzQ4MTY3YmZl
OGVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRpb25T
bW9vdGguaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRpb25TbW9v
dGguaApAQCAtMzgsNyArMzgsNyBAQCBjbGFzcyBTY3JvbGxhYmxlQXJlYTsKIAogY2xhc3MgU2Ny
b2xsQW5pbWF0aW9uU21vb3RoIGZpbmFsOiBwdWJsaWMgU2Nyb2xsQW5pbWF0aW9uIHsKIHB1Ymxp
YzoKLSAgICBTY3JvbGxBbmltYXRpb25TbW9vdGgoU2Nyb2xsYWJsZUFyZWEmLCBjb25zdCBGbG9h
dFBvaW50Jiwgc3RkOjpmdW5jdGlvbjx2b2lkIChGbG9hdFBvaW50JiYpPiYmIG5vdGlmeVBvc2l0
aW9uQ2hhbmdlZEZ1bmN0aW9uKTsKKyAgICBTY3JvbGxBbmltYXRpb25TbW9vdGgoU2Nyb2xsYWJs
ZUFyZWEmLCBjb25zdCBGbG9hdFBvaW50JiwgV1RGOjpGdW5jdGlvbjx2b2lkIChGbG9hdFBvaW50
JiYpPiYmIG5vdGlmeVBvc2l0aW9uQ2hhbmdlZEZ1bmN0aW9uKTsKICAgICB2aXJ0dWFsIH5TY3Jv
bGxBbmltYXRpb25TbW9vdGgoKTsKIAogICAgIGVudW0gY2xhc3MgQ3VydmUgewpAQCAtOTcsNyAr
OTcsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgYW5pbWF0aW9uVGltZXJGaXJlZCgpOwogICAgIGJv
b2wgYW5pbWF0aW9uVGltZXJBY3RpdmUoKSBjb25zdDsKIAotICAgIHN0ZDo6ZnVuY3Rpb248dm9p
ZCAoRmxvYXRQb2ludCYmKT4gbV9ub3RpZnlQb3NpdGlvbkNoYW5nZWRGdW5jdGlvbjsKKyAgICBX
VEY6OkZ1bmN0aW9uPHZvaWQgKEZsb2F0UG9pbnQmJik+IG1fbm90aWZ5UG9zaXRpb25DaGFuZ2Vk
RnVuY3Rpb247CiAKICAgICBQZXJBeGlzRGF0YSBtX2hvcml6b250YWxEYXRhOwogICAgIFBlckF4
aXNEYXRhIG1fdmVydGljYWxEYXRhOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vU2hhcmVkVGltZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZFRpbWVyLmgK
aW5kZXggNzc3N2Y2N2M5YWFmNzNlMGNiZmE3MDg4ODc2MTNiNmYyMzMyOTI2Mi4uNDQ0NWUzYjcy
ZTc2YTkyMWMwYmU4ZjNlODc3OWU1NTUzNjJlNzA0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vU2hhcmVkVGltZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
aGFyZWRUaW1lci5oCkBAIC0yNiw4ICsyNiw4IEBACiAjaWZuZGVmIFNoYXJlZFRpbWVyX2gKICNk
ZWZpbmUgU2hhcmVkVGltZXJfaAogCi0jaW5jbHVkZSA8ZnVuY3Rpb25hbD4KICNpbmNsdWRlIDx3
dGYvRmFzdE1hbGxvYy5oPgorI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgogI2luY2x1ZGUgPHd0
Zi9Ob25jb3B5YWJsZS5oPgogI2luY2x1ZGUgPHd0Zi9TZWNvbmRzLmg+CiAKQEAgLTQxLDcgKzQx
LDcgQEAgY2xhc3MgU2hhcmVkVGltZXIgewogcHVibGljOgogICAgIFNoYXJlZFRpbWVyKCkgPSBk
ZWZhdWx0OwogICAgIHZpcnR1YWwgflNoYXJlZFRpbWVyKCkgeyB9Ci0gICAgdmlydHVhbCB2b2lk
IHNldEZpcmVkRnVuY3Rpb24oc3RkOjpmdW5jdGlvbjx2b2lkKCk+JiYpID0gMDsKKyAgICB2aXJ0
dWFsIHZvaWQgc2V0RmlyZWRGdW5jdGlvbihXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJikgPSAwOwog
CiAgICAgLy8gVGhlIGZpcmUgaW50ZXJ2YWwgaXMgaW4gc2Vjb25kcyByZWxhdGl2ZSB0byB0aGUg
Y3VycmVudCBtb25vdG9uaWMgY2xvY2sgdGltZS4KICAgICB2aXJ0dWFsIHZvaWQgc2V0RmlyZUlu
dGVydmFsKFNlY29uZHMpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXIuY3BwCmluZGV4IGFkZGJj
NDNmODA1ZGQ1MDJiM2NkNzllZTQ2NzUzNjU2ZTU0Yjc2YWEuLjAzZDc2MWViYzE4OTQ2Mjg1Nzg5
MzhlN2QxY2FjMGJhYzYwMGI3ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyLmNwcApAQCAtMjc3
LDcgKzI3Nyw3IEBAIFBsYXRmb3JtTWVkaWFTZXNzaW9uKiBQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1h
bmFnZXI6OmN1cnJlbnRTZXNzaW9uKCkgY29uc3QKICAgICByZXR1cm4gbV9zZXNzaW9uc1swXTsK
IH0KIAotVmVjdG9yPFBsYXRmb3JtTWVkaWFTZXNzaW9uKj4gUGxhdGZvcm1NZWRpYVNlc3Npb25N
YW5hZ2VyOjpjdXJyZW50U2Vzc2lvbnNNYXRjaGluZyhzdGQ6OmZ1bmN0aW9uPGJvb2woY29uc3Qg
UGxhdGZvcm1NZWRpYVNlc3Npb24gJik+IGZpbHRlcikKK1ZlY3RvcjxQbGF0Zm9ybU1lZGlhU2Vz
c2lvbio+IFBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6Y3VycmVudFNlc3Npb25zTWF0Y2hp
bmcoY29uc3QgV1RGOjpGdW5jdGlvbjxib29sKGNvbnN0IFBsYXRmb3JtTWVkaWFTZXNzaW9uJik+
JiBmaWx0ZXIpCiB7CiAgICAgVmVjdG9yPFBsYXRmb3JtTWVkaWFTZXNzaW9uKj4gbWF0Y2hpbmdT
ZXNzaW9uczsKICAgICBmb3JFYWNoU2Vzc2lvbihbJl0gKFBsYXRmb3JtTWVkaWFTZXNzaW9uJiBz
ZXNzaW9uLCBzaXplX3QpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyLmgKaW5kZXggZjJlMGY5ODczNzRi
YzU5NDUzMjg5MTE4MzVmOTBlMTVjMDAwZjY4Mi4uODQyNzQ4ZmZiNjQ5NWVjMTM2NzQwMzMyNWEx
MzZmZjA2ZDlmMWMxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
UGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyLmgKQEAgLTEwNSw3ICsxMDUsNyBA
QCBwdWJsaWM6CiAgICAgdm9pZCBzZXRDdXJyZW50U2Vzc2lvbihQbGF0Zm9ybU1lZGlhU2Vzc2lv
biYpOwogICAgIFBsYXRmb3JtTWVkaWFTZXNzaW9uKiBjdXJyZW50U2Vzc2lvbigpIGNvbnN0Owog
Ci0gICAgVmVjdG9yPFBsYXRmb3JtTWVkaWFTZXNzaW9uKj4gY3VycmVudFNlc3Npb25zTWF0Y2hp
bmcoc3RkOjpmdW5jdGlvbjxib29sKGNvbnN0IFBsYXRmb3JtTWVkaWFTZXNzaW9uJik+KTsKKyAg
ICBWZWN0b3I8UGxhdGZvcm1NZWRpYVNlc3Npb24qPiBjdXJyZW50U2Vzc2lvbnNNYXRjaGluZyhj
b25zdCBXVEY6OkZ1bmN0aW9uPGJvb2woY29uc3QgUGxhdGZvcm1NZWRpYVNlc3Npb24mKT4mKTsK
IAogICAgIHZvaWQgc2Vzc2lvbklzUGxheWluZ1RvV2lyZWxlc3NQbGF5YmFja1RhcmdldENoYW5n
ZWQoUGxhdGZvcm1NZWRpYVNlc3Npb24mKTsKICAgICB2b2lkIHNlc3Npb25DYW5Qcm9kdWNlQXVk
aW9DaGFuZ2VkKFBsYXRmb3JtTWVkaWFTZXNzaW9uJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jZi9NYWluVGhyZWFkU2hhcmVkVGltZXJDRi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jZi9NYWluVGhyZWFkU2hhcmVkVGltZXJDRi5jcHAKaW5kZXggZjllNGJm
ODAwMDI0ZGVhZmQ2ZTMwMzI0MDVmYWRjODVkMGRjNzA1YS4uZjAxODNiMTRkYmZjMmM0OGNkMjE5
NjNiZjg0NzM5OTZiMjBiMTRmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y2YvTWFpblRocmVhZFNoYXJlZFRpbWVyQ0YuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2NmL01haW5UaHJlYWRTaGFyZWRUaW1lckNGLmNwcApAQCAtNTcsNyArNTcsNyBAQCBzdGF0
aWMgdm9pZCBzZXR1cFBvd2VyT2JzZXJ2ZXIoKQogI2lmIFBMQVRGT1JNKE1BQykKICAgICBzdGF0
aWMgUG93ZXJPYnNlcnZlciogcG93ZXJPYnNlcnZlcjsKICAgICBpZiAoIXBvd2VyT2JzZXJ2ZXIp
Ci0gICAgICAgIHBvd2VyT2JzZXJ2ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFBvd2VyT2JzZXJ2ZXI+
KHJlc3RhcnRTaGFyZWRUaW1lcikucmVsZWFzZSgpOworICAgICAgICBwb3dlck9ic2VydmVyID0g
c3RkOjptYWtlX3VuaXF1ZTxQb3dlck9ic2VydmVyPihbXSB7IHJlc3RhcnRTaGFyZWRUaW1lcigp
OyB9KS5yZWxlYXNlKCk7CiAjZWxpZiBQTEFURk9STShJT1MpCiAgICAgc3RhdGljIGJvb2wgcmVn
aXN0ZXJlZEZvckFwcGxpY2F0aW9uTm90aWZpY2F0aW9uID0gZmFsc2U7CiAgICAgaWYgKCFyZWdp
c3RlcmVkRm9yQXBwbGljYXRpb25Ob3RpZmljYXRpb24pIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2NmL1J1bkxvb3BPYnNlcnZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vY2YvUnVuTG9vcE9ic2VydmVyLmgKaW5kZXggYzFiNmEwZDlkYzliODI3MjVmMDRiNTVj
ODMxOGU2MWFkMTU2OTA4MC4uOTY5YTAzNzg2YmJiMWYxMWM5NzQ2ZmUwYjA2ZTJlYmVhYWZlZDNl
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvUnVuTG9vcE9ic2VydmVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvUnVuTG9vcE9ic2VydmVyLmgKQEAg
LTI3LDcgKzI3LDcgQEAKICNkZWZpbmUgUnVuTG9vcE9ic2VydmVyX2gKIAogI2luY2x1ZGUgPENv
cmVGb3VuZGF0aW9uL0NvcmVGb3VuZGF0aW9uLmg+Ci0jaW5jbHVkZSA8ZnVuY3Rpb25hbD4KKyNp
bmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNp
bmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAKQEAgLTM2LDExICszNiwxMSBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiBjbGFzcyBSdW5Mb29wT2JzZXJ2ZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlB
QkxFKFJ1bkxvb3BPYnNlcnZlcik7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgot
ICAgIHR5cGVkZWYgc3RkOjpmdW5jdGlvbjx2b2lkICgpPiBSdW5Mb29wT2JzZXJ2ZXJDYWxsYmFj
azsKKyAgICB0eXBlZGVmIFdURjo6RnVuY3Rpb248dm9pZCAoKT4gUnVuTG9vcE9ic2VydmVyQ2Fs
bGJhY2s7CiAKLSAgICBSdW5Mb29wT2JzZXJ2ZXIoQ0ZJbmRleCBvcmRlciwgUnVuTG9vcE9ic2Vy
dmVyQ2FsbGJhY2sgY2FsbGJhY2spCisgICAgUnVuTG9vcE9ic2VydmVyKENGSW5kZXggb3JkZXIs
IFJ1bkxvb3BPYnNlcnZlckNhbGxiYWNrJiYgY2FsbGJhY2spCiAgICAgICAgIDogbV9vcmRlcihv
cmRlcikKLSAgICAgICAgLCBtX2NhbGxiYWNrKGNhbGxiYWNrKQorICAgICAgICAsIG1fY2FsbGJh
Y2soV1RGTW92ZShjYWxsYmFjaykpCiAgICAgeyB9CiAKICAgICBXRUJDT1JFX0VYUE9SVCB+UnVu
TG9vcE9ic2VydmVyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzQ29udGV4dC5oCmluZGV4IGM0NzA3NDY0OGRlN2Y0YjA3OGNhMmYxYTZhZmFlYTg0
OWVlNzk0OWUuLjUyZjdkZTI3NTNjY2RiNmNjNmRlNTM5ZjZhYzAwMjBlMDY4YWNhZmUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5o
CkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiSW1hZ2UuaCIKICNpbmNsdWRlICJJbWFnZU9y
aWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiUGF0dGVybi5oIgorI2luY2x1ZGUgPHd0Zi9GdW5jdGlv
bi5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogCiAjaWYgVVNFKENHKQpAQCAtNTk5
LDggKzYwMCw4IEBAIHByaXZhdGU6CiAKICNpZiBVU0UoRElSRUNUMkQpCiAgICAgdm9pZCBwbGF0
Zm9ybUluaXQoSERDLCBJRDJEMVJlbmRlclRhcmdldCoqLCBSRUNULCBib29sIGhhc0FscGhhID0g
ZmFsc2UpOwotICAgIHZvaWQgZHJhd1dpdGhvdXRTaGFkb3coY29uc3QgRmxvYXRSZWN0JiBib3Vu
ZGluZ1JlY3QsIGNvbnN0IHN0ZDo6ZnVuY3Rpb248dm9pZChJRDJEMVJlbmRlclRhcmdldCopPiYp
OwotICAgIHZvaWQgZHJhd1dpdGhTaGFkb3coY29uc3QgRmxvYXRSZWN0JiBib3VuZGluZ1JlY3Qs
IGNvbnN0IHN0ZDo6ZnVuY3Rpb248dm9pZChJRDJEMVJlbmRlclRhcmdldCopPiYpOworICAgIHZv
aWQgZHJhd1dpdGhvdXRTaGFkb3coY29uc3QgRmxvYXRSZWN0JiBib3VuZGluZ1JlY3QsIGNvbnN0
IFdURjo6RnVuY3Rpb248dm9pZChJRDJEMVJlbmRlclRhcmdldCopPiYpOworICAgIHZvaWQgZHJh
d1dpdGhTaGFkb3coY29uc3QgRmxvYXRSZWN0JiBib3VuZGluZ1JlY3QsIGNvbnN0IFdURjo6RnVu
Y3Rpb248dm9pZChJRDJEMVJlbmRlclRhcmdldCopPiYpOwogI2VuZGlmCiAKICAgICB2b2lkIHNh
dmVQbGF0Zm9ybVN0YXRlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HcmFwaGljc0xheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzTGF5ZXIuY3BwCmluZGV4IGY3OWY0NGVlMGI5MGE1MjcyMWQ5YTJhMGFkODk5
MDEwMDVlZDE4NTQuLjE2YzY3ZjQ5ZTlmYmE5NDQyNWRiMWYyODZhMzg2YzI4MmNiYTdlMzYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIu
Y3BwCkBAIC02NzIsNyArNjcyLDcgQEAgdm9pZCBHcmFwaGljc0xheWVyOjphZGRSZXBhaW50UmVj
dChjb25zdCBGbG9hdFJlY3QmIHJlcGFpbnRSZWN0KQogICAgIH0KIH0KIAotdm9pZCBHcmFwaGlj
c0xheWVyOjp0cmF2ZXJzZShHcmFwaGljc0xheWVyJiBsYXllciwgc3RkOjpmdW5jdGlvbjx2b2lk
IChHcmFwaGljc0xheWVyJik+IHRyYXZlcnNhbEZ1bmMpCit2b2lkIEdyYXBoaWNzTGF5ZXI6OnRy
YXZlcnNlKEdyYXBoaWNzTGF5ZXImIGxheWVyLCBjb25zdCBXVEY6OkZ1bmN0aW9uPHZvaWQgKEdy
YXBoaWNzTGF5ZXImKT4mIHRyYXZlcnNhbEZ1bmMpCiB7CiAgICAgdHJhdmVyc2FsRnVuYyhsYXll
cik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBo
aWNzTGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5
ZXIuaAppbmRleCBlY2ZlMzljNjY3NTQ2NDc0MThkYjAzOTIzZGIyNTIzNzg4ZTNhY2M1Li42YzFi
Nzk2ZDI4MzIzNmFkNjk5YjJiOTUxMTQ2M2Q5ZjE1MGY2MWMyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5oCkBAIC0zNyw2ICszNyw3IEBA
CiAjaW5jbHVkZSAiUGxhdGZvcm1MYXllci5oIgogI2luY2x1ZGUgIlRyYW5zZm9ybU9wZXJhdGlv
bnMuaCIKICNpbmNsdWRlICJXaW5kUnVsZS5oIgorI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgog
I2luY2x1ZGUgPHd0Zi9UeXBlQ2FzdHMuaD4KIAogI2lmIEVOQUJMRShDU1NfQ09NUE9TSVRJTkcp
CkBAIC01NzAsNyArNTcxLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBpc0dyYXBoaWNz
TGF5ZXJUZXh0dXJlTWFwcGVyKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFs
IGJvb2wgaXNDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXIoKSBjb25zdCB7IHJldHVybiBmYWxzZTsg
fQogCi0gICAgc3RhdGljIHZvaWQgdHJhdmVyc2UoR3JhcGhpY3NMYXllciYsIHN0ZDo6ZnVuY3Rp
b248dm9pZCAoR3JhcGhpY3NMYXllciYpPik7CisgICAgc3RhdGljIHZvaWQgdHJhdmVyc2UoR3Jh
cGhpY3NMYXllciYsIGNvbnN0IFdURjo6RnVuY3Rpb248dm9pZCAoR3JhcGhpY3NMYXllciYpPiYp
OwogCiBwcm90ZWN0ZWQ6CiAgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgR3JhcGhpY3NMYXll
cihUeXBlLCBHcmFwaGljc0xheWVyQ2xpZW50Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKaW5kZXggNmQyZTVhYTNhMDM3MmRlYTI5ZGJj
MDM5ZTlmNjM2YmJkZDM1MTA5Ni4uYjBmYjNkZDc3YzQ2NDNmYjhkMmMyZmQ3MGZiYjg1OWU0ZDVj
YzQ3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQ
bGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxh
eWVyLmNwcApAQCAtMTg4LDcgKzE4OCw3IEBAIHN0cnVjdCBNZWRpYVBsYXllckZhY3Rvcnkgewog
ICAgIE1lZGlhRW5naW5lU3VwcG9ydHNLZXlTeXN0ZW0gc3VwcG9ydHNLZXlTeXN0ZW07CiB9Owog
Ci1zdGF0aWMgdm9pZCBhZGRNZWRpYUVuZ2luZShDcmVhdGVNZWRpYUVuZ2luZVBsYXllciwgTWVk
aWFFbmdpbmVTdXBwb3J0ZWRUeXBlcywgTWVkaWFFbmdpbmVTdXBwb3J0c1R5cGUsIE1lZGlhRW5n
aW5lT3JpZ2luc0luTWVkaWFDYWNoZSwgTWVkaWFFbmdpbmVDbGVhck1lZGlhQ2FjaGUsIE1lZGlh
RW5naW5lQ2xlYXJNZWRpYUNhY2hlRm9yT3JpZ2lucywgTWVkaWFFbmdpbmVTdXBwb3J0c0tleVN5
c3RlbSk7CitzdGF0aWMgdm9pZCBhZGRNZWRpYUVuZ2luZShDcmVhdGVNZWRpYUVuZ2luZVBsYXll
ciYmLCBNZWRpYUVuZ2luZVN1cHBvcnRlZFR5cGVzLCBNZWRpYUVuZ2luZVN1cHBvcnRzVHlwZSwg
TWVkaWFFbmdpbmVPcmlnaW5zSW5NZWRpYUNhY2hlLCBNZWRpYUVuZ2luZUNsZWFyTWVkaWFDYWNo
ZSwgTWVkaWFFbmdpbmVDbGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5zLCBNZWRpYUVuZ2luZVN1cHBv
cnRzS2V5U3lzdGVtKTsKIAogc3RhdGljIExvY2smIG1lZGlhRW5naW5lVmVjdG9yTG9jaygpCiB7
CkBAIC0yNjksMTQgKzI2OSwxNCBAQCBzdGF0aWMgY29uc3QgVmVjdG9yPE1lZGlhUGxheWVyRmFj
dG9yeT4mIGluc3RhbGxlZE1lZGlhRW5naW5lcygpCiAgICAgcmV0dXJuIG11dGFibGVJbnN0YWxs
ZWRNZWRpYUVuZ2luZXNWZWN0b3IoKTsKIH0KIAotc3RhdGljIHZvaWQgYWRkTWVkaWFFbmdpbmUo
Q3JlYXRlTWVkaWFFbmdpbmVQbGF5ZXIgY29uc3RydWN0b3IsIE1lZGlhRW5naW5lU3VwcG9ydGVk
VHlwZXMgZ2V0U3VwcG9ydGVkVHlwZXMsIE1lZGlhRW5naW5lU3VwcG9ydHNUeXBlIHN1cHBvcnRz
VHlwZSwKK3N0YXRpYyB2b2lkIGFkZE1lZGlhRW5naW5lKENyZWF0ZU1lZGlhRW5naW5lUGxheWVy
JiYgY29uc3RydWN0b3IsIE1lZGlhRW5naW5lU3VwcG9ydGVkVHlwZXMgZ2V0U3VwcG9ydGVkVHlw
ZXMsIE1lZGlhRW5naW5lU3VwcG9ydHNUeXBlIHN1cHBvcnRzVHlwZSwKICAgICBNZWRpYUVuZ2lu
ZU9yaWdpbnNJbk1lZGlhQ2FjaGUgb3JpZ2luc0luTWVkaWFDYWNoZSwgTWVkaWFFbmdpbmVDbGVh
ck1lZGlhQ2FjaGUgY2xlYXJNZWRpYUNhY2hlLCBNZWRpYUVuZ2luZUNsZWFyTWVkaWFDYWNoZUZv
ck9yaWdpbnMgY2xlYXJNZWRpYUNhY2hlRm9yT3JpZ2lucywgTWVkaWFFbmdpbmVTdXBwb3J0c0tl
eVN5c3RlbSBzdXBwb3J0c0tleVN5c3RlbSkKIHsKICAgICBBU1NFUlQoY29uc3RydWN0b3IpOwog
ICAgIEFTU0VSVChnZXRTdXBwb3J0ZWRUeXBlcyk7CiAgICAgQVNTRVJUKHN1cHBvcnRzVHlwZSk7
CiAKLSAgICBtdXRhYmxlSW5zdGFsbGVkTWVkaWFFbmdpbmVzVmVjdG9yKCkuYXBwZW5kKE1lZGlh
UGxheWVyRmFjdG9yeSB7IGNvbnN0cnVjdG9yLCBnZXRTdXBwb3J0ZWRUeXBlcywgc3VwcG9ydHNU
eXBlLCBvcmlnaW5zSW5NZWRpYUNhY2hlLCBjbGVhck1lZGlhQ2FjaGUsIGNsZWFyTWVkaWFDYWNo
ZUZvck9yaWdpbnMsIHN1cHBvcnRzS2V5U3lzdGVtIH0pOworICAgIG11dGFibGVJbnN0YWxsZWRN
ZWRpYUVuZ2luZXNWZWN0b3IoKS5hcHBlbmQoTWVkaWFQbGF5ZXJGYWN0b3J5IHsgV1RGTW92ZShj
b25zdHJ1Y3RvciksIGdldFN1cHBvcnRlZFR5cGVzLCBzdXBwb3J0c1R5cGUsIG9yaWdpbnNJbk1l
ZGlhQ2FjaGUsIGNsZWFyTWVkaWFDYWNoZSwgY2xlYXJNZWRpYUNhY2hlRm9yT3JpZ2lucywgc3Vw
cG9ydHNLZXlTeXN0ZW0gfSk7CiB9CiAKIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIGFwcGxp
Y2F0aW9uT2N0ZXRTdHJlYW0oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvTWVkaWFQbGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L01lZGlhUGxheWVyLmgKaW5kZXggMWNiMzUwNGIxMjA5OTkwOWJkNDIzZWY5YWJmNzk1ZTZjZjU4
NTY4OC4uOTJmMjQ4NTY4ZGVjOWExYjMyOTllNmEwNzNkODRlZTRhZTVmMzZkYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCkBAIC02MjgsNyAr
NjI4LDcgQEAgcHJpdmF0ZToKICNlbmRpZgogfTsKIAotdHlwZWRlZiBzdGQ6OmZ1bmN0aW9uPHN0
ZDo6dW5pcXVlX3B0cjxNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2U+IChNZWRpYVBsYXllciop
PiBDcmVhdGVNZWRpYUVuZ2luZVBsYXllcjsKK3VzaW5nIENyZWF0ZU1lZGlhRW5naW5lUGxheWVy
ID0gV1RGOjpGdW5jdGlvbjxzdGQ6OnVuaXF1ZV9wdHI8TWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJm
YWNlPiAoTWVkaWFQbGF5ZXIqKT47CiB0eXBlZGVmIHZvaWQgKCpNZWRpYUVuZ2luZVN1cHBvcnRl
ZFR5cGVzKShIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiYgdHlwZXMp
OwogdHlwZWRlZiBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlICgqTWVkaWFFbmdpbmVTdXBwb3J0
c1R5cGUpKGNvbnN0IE1lZGlhRW5naW5lU3VwcG9ydFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpOwog
dHlwZWRlZiBIYXNoU2V0PFJlZlB0cjxTZWN1cml0eU9yaWdpbj4+ICgqTWVkaWFFbmdpbmVPcmln
aW5zSW5NZWRpYUNhY2hlKShjb25zdCBTdHJpbmcmIHBhdGgpOwpAQCAtNjM2LDcgKzYzNiw3IEBA
IHR5cGVkZWYgdm9pZCAoKk1lZGlhRW5naW5lQ2xlYXJNZWRpYUNhY2hlKShjb25zdCBTdHJpbmcm
IHBhdGgsIHN0ZDo6Y2hyb25vOjpzeXN0CiB0eXBlZGVmIHZvaWQgKCpNZWRpYUVuZ2luZUNsZWFy
TWVkaWFDYWNoZUZvck9yaWdpbnMpKGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgSGFzaFNldDxS
ZWZQdHI8U2VjdXJpdHlPcmlnaW4+PiYpOwogdHlwZWRlZiBib29sICgqTWVkaWFFbmdpbmVTdXBw
b3J0c0tleVN5c3RlbSkoY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0sIGNvbnN0IFN0cmluZyYgbWlt
ZVR5cGUpOwogCi10eXBlZGVmIHZvaWQgKCpNZWRpYUVuZ2luZVJlZ2lzdHJhcikoQ3JlYXRlTWVk
aWFFbmdpbmVQbGF5ZXIsIE1lZGlhRW5naW5lU3VwcG9ydGVkVHlwZXMsIE1lZGlhRW5naW5lU3Vw
cG9ydHNUeXBlLAordHlwZWRlZiB2b2lkICgqTWVkaWFFbmdpbmVSZWdpc3RyYXIpKENyZWF0ZU1l
ZGlhRW5naW5lUGxheWVyJiYsIE1lZGlhRW5naW5lU3VwcG9ydGVkVHlwZXMsIE1lZGlhRW5naW5l
U3VwcG9ydHNUeXBlLAogICAgIE1lZGlhRW5naW5lT3JpZ2luc0luTWVkaWFDYWNoZSwgTWVkaWFF
bmdpbmVDbGVhck1lZGlhQ2FjaGUsIE1lZGlhRW5naW5lQ2xlYXJNZWRpYUNhY2hlRm9yT3JpZ2lu
cywgTWVkaWFFbmdpbmVTdXBwb3J0c0tleVN5c3RlbSk7CiB0eXBlZGVmIHZvaWQgKCpNZWRpYUVu
Z2luZVJlZ2lzdGVyKShNZWRpYUVuZ2luZVJlZ2lzdHJhcik7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BhdGguaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL1BhdGguaAppbmRleCAyODMxY2ZlMzNlN2MwNmE4OGQzYzZiODNjOTEyNmI4
NTAyYTM0ZWZjLi43Y2FiYTRjYjZlNzg5MzgzM2RkOGI2YWMxNGNmZWM5ZjFjMjk5NzFjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXRoLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0aC5oCkBAIC0zMCw4ICszMCw4IEBACiAK
ICNpbmNsdWRlICJGbG9hdFJlY3QuaCIKICNpbmNsdWRlICJXaW5kUnVsZS5oIgotI2luY2x1ZGUg
PGZ1bmN0aW9uYWw+CiAjaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KKyNpbmNsdWRlIDx3dGYv
RnVuY3Rpb24uaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0
b3IuaD4KIApAQCAtMTAxLDcgKzEwMSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAg
RmxvYXRQb2ludCogcG9pbnRzOwogICAgIH07CiAKLSAgICB0eXBlZGVmIHN0ZDo6ZnVuY3Rpb248
dm9pZCAoY29uc3QgUGF0aEVsZW1lbnQmKT4gUGF0aEFwcGxpZXJGdW5jdGlvbjsKKyAgICB1c2lu
ZyBQYXRoQXBwbGllckZ1bmN0aW9uID0gV1RGOjpGdW5jdGlvbjx2b2lkIChjb25zdCBQYXRoRWxl
bWVudCYpPjsKIAogICAgIGNsYXNzIFBhdGggewogICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24uY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbi5jcHAKaW5kZXggYjBjMjZhZjUzM2Y0MjM3YzQ3NjQ5NjE1YjRlZDY0MWI0MmMwZGU4
ZC4uNWRiODc3M2Y1YTVmOTNmMzExOTNiOTUzMGRiNGNlM2RiYTNjYjQ5ZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5jcHAKQEAg
LTY1OSw3ICs2NTksNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbjo6c2Vl
a0NvbXBsZXRlZChib29sIGZpbmlzaGVkKQogCiAgICAgbV9zZWVraW5nID0gZmFsc2U7CiAKLSAg
ICBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4gcGVuZGluZ1NlZWs7CisgICAgV1RGOjpGdW5jdGlvbjx2
b2lkKCk+IHBlbmRpbmdTZWVrOwogICAgIHN0ZDo6c3dhcChwZW5kaW5nU2VlaywgbV9wZW5kaW5n
U2Vlayk7CiAKICAgICBpZiAocGVuZGluZ1NlZWspIHsKQEAgLTc5MCwxNiArNzkwLDE3IEBAIHN0
YXRpYyBjb25zdCBjaGFyKiBub3RpZmljYXRpb25OYW1lKE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbjo6Tm90aWZpY2F0aW9uCiAjZW5kaWYgLy8gIUxPR19ESVNBQkxFRAogICAgIAogCi12
b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbjo6c2NoZWR1bGVNYWluVGhyZWFkTm90
aWZpY2F0aW9uKE5vdGlmaWNhdGlvbiBub3RpZmljYXRpb24pCit2b2lkIE1lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbjo6c2NoZWR1bGVNYWluVGhyZWFkTm90aWZpY2F0aW9uKE5vdGlmaWNh
dGlvbiYmIG5vdGlmaWNhdGlvbikKIHsKLSAgICBpZiAobm90aWZpY2F0aW9uLnR5cGUoKSAhPSBO
b3RpZmljYXRpb246OkZ1bmN0aW9uVHlwZSkKKyAgICBhdXRvIG5vdGlmaWNhdGlvblR5cGUgPSBu
b3RpZmljYXRpb24udHlwZSgpOworICAgIGlmIChub3RpZmljYXRpb25UeXBlICE9IE5vdGlmaWNh
dGlvbjo6RnVuY3Rpb25UeXBlKQogICAgICAgICBMT0coTWVkaWEsICJNZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb246OnNjaGVkdWxlTWFpblRocmVhZE5vdGlmaWNhdGlvbiglcCkgLSBub3Rp
ZmljYXRpb24gJXMiLCB0aGlzLCBub3RpZmljYXRpb25OYW1lKG5vdGlmaWNhdGlvbikpOwogCiAg
ICAgbV9xdWV1ZU11dGV4LmxvY2soKTsKIAogICAgIC8vIEl0IGlzIGltcG9ydGFudCB0byBhbHdh
eXMgcHJvY2VzcyB0aGUgcHJvcGVydGllcyBpbiB0aGUgb3JkZXIgdGhhdCB3ZSBhcmUgbm90aWZp
ZWQsCiAgICAgLy8gc28gYWx3YXlzIGdvIHRocm91Z2ggdGhlIHF1ZXVlIGJlY2F1c2Ugbm90aWZp
Y2F0aW9ucyBoYXBwZW4gb24gZGlmZmVyZW50IHRocmVhZHMuCi0gICAgbV9xdWV1ZWROb3RpZmlj
YXRpb25zLmFwcGVuZChub3RpZmljYXRpb24pOworICAgIG1fcXVldWVkTm90aWZpY2F0aW9ucy5h
cHBlbmQoV1RGTW92ZShub3RpZmljYXRpb24pKTsKIAogI2lmIE9TKFdJTkRPV1MpCiAgICAgYm9v
bCBkZWxheURpc3BhdGNoID0gdHJ1ZTsKQEAgLTgyMCw3ICs4MjEsNyBAQCB2b2lkIE1lZGlhUGxh
eWVyUHJpdmF0ZUFWRm91bmRhdGlvbjo6c2NoZWR1bGVNYWluVGhyZWFkTm90aWZpY2F0aW9uKE5v
dGlmaWNhdGlvbgogICAgIG1fcXVldWVNdXRleC51bmxvY2soKTsKIAogICAgIGlmIChkZWxheURp
c3BhdGNoKSB7Ci0gICAgICAgIGlmIChub3RpZmljYXRpb24udHlwZSgpICE9IE5vdGlmaWNhdGlv
bjo6RnVuY3Rpb25UeXBlKQorICAgICAgICBpZiAobm90aWZpY2F0aW9uVHlwZSAhPSBOb3RpZmlj
YXRpb246OkZ1bmN0aW9uVHlwZSkKICAgICAgICAgICAgIExPRyhNZWRpYSwgIk1lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbjo6c2NoZWR1bGVNYWluVGhyZWFkTm90aWZpY2F0aW9uKCVwKSAt
IGVhcmx5IHJldHVybiIsIHRoaXMpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtODMyLDcg
KzgzMyw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uOjpkaXNwYXRjaE5v
dGlmaWNhdGlvbigpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIAotICAgIE5vdGlm
aWNhdGlvbiBub3RpZmljYXRpb24gPSBOb3RpZmljYXRpb24oKTsKKyAgICBOb3RpZmljYXRpb24g
bm90aWZpY2F0aW9uOwogICAgIHsKICAgICAgICAgTG9ja0hvbGRlciBsb2NrKG1fcXVldWVNdXRl
eCk7CiAgICAgICAgIApAQCAtODQxLDggKzg0Miw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uOjpkaXNwYXRjaE5vdGlmaWNhdGlvbigpCiAgICAgICAgIAogICAgICAgICBp
ZiAoIW1fZGVsYXlDYWxsYmFja3MpIHsKICAgICAgICAgICAgIC8vIE9ubHkgZGlzcGF0Y2ggb25l
IG5vdGlmaWNhdGlvbiBjYWxsYmFjayBwZXIgaW52b2NhdGlvbiBiZWNhdXNlIHRoZXkgY2FuIGNh
dXNlIHJlY3Vyc2lvbi4KLSAgICAgICAgICAgIG5vdGlmaWNhdGlvbiA9IG1fcXVldWVkTm90aWZp
Y2F0aW9ucy5maXJzdCgpOwotICAgICAgICAgICAgbV9xdWV1ZWROb3RpZmljYXRpb25zLnJlbW92
ZSgwKTsKKyAgICAgICAgICAgIG5vdGlmaWNhdGlvbiA9IG1fcXVldWVkTm90aWZpY2F0aW9ucy50
YWtlRmlyc3QoKTsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgaWYgKCFtX3F1ZXVlZE5v
dGlmaWNhdGlvbnMuaXNFbXB0eSgpICYmICFtX21haW5UaHJlYWRDYWxsUGVuZGluZykgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01l
ZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5oCmlu
ZGV4IDBhZDI5OGIwNWZjMGEzMDcwNWIxZWI4MDMxNjA4ZWI0OWY4ZjJmMzEuLjA4OGJhNDcwNTc4
YTdjZDM5ZjFkOTAxN2NmNTk4NDIwNTdmZjg2NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmgKQEAgLTMyLDcgKzMyLDggQEAKICNp
bmNsdWRlICJJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGLmgiCiAjaW5jbHVkZSAiTWVkaWFQbGF5
ZXJQcml2YXRlLmgiCiAjaW5jbHVkZSAiVGltZXIuaCIKLSNpbmNsdWRlIDxmdW5jdGlvbmFsPgor
I2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgorI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgogI2luY2x1
ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL0xvY2suaD4KICNpbmNsdWRlIDx3dGYv
UmV0YWluUHRyLmg+CkBAIC0xMTMsMTAgKzExNCwxMCBAQCBwdWJsaWM6CiAgICAgICAgIHsKICAg
ICAgICAgfQogCi0gICAgICAgIE5vdGlmaWNhdGlvbihzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+IGZ1
bmN0aW9uKQorICAgICAgICBOb3RpZmljYXRpb24oV1RGOjpGdW5jdGlvbjx2b2lkICgpPiYmIGZ1
bmN0aW9uKQogICAgICAgICAgICAgOiBtX3R5cGUoRnVuY3Rpb25UeXBlKQogICAgICAgICAgICAg
LCBtX2ZpbmlzaGVkKGZhbHNlKQotICAgICAgICAgICAgLCBtX2Z1bmN0aW9uKGZ1bmN0aW9uKQor
ICAgICAgICAgICAgLCBtX2Z1bmN0aW9uKFdURk1vdmUoZnVuY3Rpb24pKQogICAgICAgICB7CiAg
ICAgICAgIH0KICAgICAgICAgCkBAIC0xMjQsMTYgKzEyNSwxNiBAQCBwdWJsaWM6CiAgICAgICAg
IGJvb2wgaXNWYWxpZCgpIHsgcmV0dXJuIG1fdHlwZSAhPSBOb25lOyB9CiAgICAgICAgIE1lZGlh
VGltZSB0aW1lKCkgeyByZXR1cm4gbV90aW1lOyB9CiAgICAgICAgIGJvb2wgZmluaXNoZWQoKSB7
IHJldHVybiBtX2ZpbmlzaGVkOyB9Ci0gICAgICAgIHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4mIGZ1
bmN0aW9uKCkgeyByZXR1cm4gbV9mdW5jdGlvbjsgfQorICAgICAgICBXVEY6OkZ1bmN0aW9uPHZv
aWQgKCk+JiBmdW5jdGlvbigpIHsgcmV0dXJuIG1fZnVuY3Rpb247IH0KICAgICAgICAgCiAgICAg
cHJpdmF0ZToKICAgICAgICAgVHlwZSBtX3R5cGU7CiAgICAgICAgIE1lZGlhVGltZSBtX3RpbWU7
CiAgICAgICAgIGJvb2wgbV9maW5pc2hlZDsKLSAgICAgICAgc3RkOjpmdW5jdGlvbjx2b2lkICgp
PiBtX2Z1bmN0aW9uOworICAgICAgICBXVEY6OkZ1bmN0aW9uPHZvaWQgKCk+IG1fZnVuY3Rpb247
CiAgICAgfTsKIAotICAgIHZvaWQgc2NoZWR1bGVNYWluVGhyZWFkTm90aWZpY2F0aW9uKE5vdGlm
aWNhdGlvbik7CisgICAgdm9pZCBzY2hlZHVsZU1haW5UaHJlYWROb3RpZmljYXRpb24oTm90aWZp
Y2F0aW9uJiYpOwogICAgIHZvaWQgc2NoZWR1bGVNYWluVGhyZWFkTm90aWZpY2F0aW9uKE5vdGlm
aWNhdGlvbjo6VHlwZSwgY29uc3QgTWVkaWFUaW1lJiA9IE1lZGlhVGltZTo6emVyb1RpbWUoKSk7
CiAgICAgdm9pZCBzY2hlZHVsZU1haW5UaHJlYWROb3RpZmljYXRpb24oTm90aWZpY2F0aW9uOjpU
eXBlLCBib29sIGNvbXBsZXRlZCk7CiAgICAgdm9pZCBkaXNwYXRjaE5vdGlmaWNhdGlvbigpOwpA
QCAtMzE3LDkgKzMxOCw5IEBAIHByaXZhdGU6CiAKICAgICBXZWFrUHRyRmFjdG9yeTxNZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb24+IG1fd2Vha1B0ckZhY3Rvcnk7CiAKLSAgICBzdGQ6OmZ1
bmN0aW9uPHZvaWQoKT4gbV9wZW5kaW5nU2VlazsKKyAgICBXVEY6OkZ1bmN0aW9uPHZvaWQoKT4g
bV9wZW5kaW5nU2VlazsKIAotICAgIFZlY3RvcjxOb3RpZmljYXRpb24+IG1fcXVldWVkTm90aWZp
Y2F0aW9uczsKKyAgICBEZXF1ZTxOb3RpZmljYXRpb24+IG1fcXVldWVkTm90aWZpY2F0aW9uczsK
ICAgICBtdXRhYmxlIExvY2sgbV9xdWV1ZU11dGV4OwogCiAgICAgbXV0YWJsZSBzdGQ6OnVuaXF1
ZV9wdHI8UGxhdGZvcm1UaW1lUmFuZ2VzPiBtX2NhY2hlZExvYWRlZFRpbWVSYW5nZXM7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uT2JqQy5tbQppbmRleCA0ZmZkYTVlOWYzMmZhNTBhMWVmYWIzMmNmNTJiY2NjZGYx
NzdhMzMzLi42ZmRmNjFkZjQ5NDA4NmVmNTBlNTg1NTRlN2Q5ZGRlM2IwMTMyMGYzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9N
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbk9iakMubW0KQEAgLTMzNzUsNyArMzM3NSw3IEBAIC0gKHZvaWQpb2JzZXJ2ZVZh
bHVlRm9yS2V5UGF0aDprZXlQYXRoIG9mT2JqZWN0OihpZClvYmplY3QgY2hhbmdlOihOU0RpY3Rp
b25hcnkKICAgICB9CiAjZW5kaWYKIAotICAgIHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4gZnVuY3Rp
b247CisgICAgV1RGOjpGdW5jdGlvbjx2b2lkICgpPiBmdW5jdGlvbjsKIAogICAgIGlmIChjb250
ZXh0ID09IE1lZGlhUGxheWVyQVZGb3VuZGF0aW9uT2JzZXJ2YXRpb25Db250ZXh0QVZQbGF5ZXJM
YXllcikgewogICAgICAgICBpZiAoW2tleVBhdGggaXNFcXVhbFRvU3RyaW5nOkAicmVhZHlGb3JE
aXNwbGF5Il0pCkBAIC0zNDUwLDcgKzM0NTAsNyBAQCAtICh2b2lkKW9ic2VydmVWYWx1ZUZvcktl
eVBhdGg6a2V5UGF0aCBvZk9iamVjdDooaWQpb2JqZWN0IGNoYW5nZTooTlNEaWN0aW9uYXJ5CiAg
ICAgICAgIHJldHVybjsKIAogICAgIGF1dG8gd2Vha1RoaXMgPSBtX2NhbGxiYWNrLT5jcmVhdGVX
ZWFrUHRyKCk7Ci0gICAgbV9jYWxsYmFjay0+c2NoZWR1bGVNYWluVGhyZWFkTm90aWZpY2F0aW9u
KE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbjo6Tm90aWZpY2F0aW9uKFt3ZWFrVGhpcywg
ZnVuY3Rpb25deworICAgIG1fY2FsbGJhY2stPnNjaGVkdWxlTWFpblRocmVhZE5vdGlmaWNhdGlv
bihNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb246Ok5vdGlmaWNhdGlvbihbd2Vha1RoaXMs
IGZ1bmN0aW9uID0gV1RGTW92ZShmdW5jdGlvbildewogICAgICAgICAvLyB3ZWFrVGhpcyBhbmQg
ZnVuY3Rpb24gYm90aCByZWZlciB0byB0aGUgc2FtZSBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb25PYmpDIGluc3RhbmNlLiBJZiB0aGUgV2Vha1B0ciBoYXMKICAgICAgICAgLy8gYmVlbiBj
bGVhcmVkLCB0aGUgdW5kZXJseWluZyBvYmplY3QgaGFzIGJlZW4gZGVzdHJveWVkLCBhbmQgaXQg
aXMgdW5zYWZlIHRvIGNhbGwgZnVuY3Rpb24oKS4KICAgICAgICAgaWYgKCF3ZWFrVGhpcykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0
ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbQppbmRleCAzOGNhZGU5NDlhOGU1NTdjMzQ4Mzc3OWFkNTVm
YjRlMGQzZjEwNzI2Li45NWFiNDVjY2VkMjAxNmI4OWIwMWM0Zjg4NmZkZjZlYTk4NmJiZmFlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQ
cml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tCkBAIC00MSw2ICs0MSw3IEBACiAjaW1wb3J0IDxR
dWFydHpDb3JlL0NBTGF5ZXIuaD4KICNpbXBvcnQgPFF1YXJ0ekNvcmUvQ0FUcmFuc2FjdGlvbi5o
PgogI2ltcG9ydCA8b2JqY19ydW50aW1lLmg+CisjaW1wb3J0IDx3dGYvRnVuY3Rpb24uaD4KICNp
bXBvcnQgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW1wb3J0IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4K
IApAQCAtMzI1LDcgKzMyNiw3IEBAIENHQWZmaW5lVHJhbnNmb3JtIE1lZGlhUGxheWVyUHJpdmF0
ZU1lZGlhU3RyZWFtQVZGT2JqQzo6dmlkZW9UcmFuc2Zvcm1hdGlvbk1hdHJpCiAgICAgcmV0dXJu
IG1fdmlkZW9UcmFuc2Zvcm07CiB9CiAKLXN0YXRpYyB2b2lkIHJ1bldpdGhvdXRBbmltYXRpb25z
KHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiBmdW5jdGlvbikKK3N0YXRpYyB2b2lkIHJ1bldpdGhvdXRB
bmltYXRpb25zKGNvbnN0IFdURjo6RnVuY3Rpb248dm9pZCgpPiYgZnVuY3Rpb24pCiB7CiAgICAg
W0NBVHJhbnNhY3Rpb24gYmVnaW5dOwogICAgIFtDQVRyYW5zYWN0aW9uIHNldEFuaW1hdGlvbkR1
cmF0aW9uOjBdOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y29jb2EvSU9TdXJmYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9JT1N1cmZhY2UuaAppbmRleCAyMTY5OWYzNmZkYzAwNTE5ZDBhOTM5NGY1M2QyZDVlMDdjNmNm
MWU1Li4wMGFkMmNiMzQzOWZiYjliMjZiMTFhYjFiNmZkMzdlM2YzMjYwMDI0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9JT1N1cmZhY2UuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9JT1N1cmZhY2UuaApAQCAt
OTYsNyArOTYsNyBAQCBwdWJsaWM6CiAKICNpZiBQTEFURk9STShJT1MpCiAgICAgV0VCQ09SRV9F
WFBPUlQgc3RhdGljIGJvb2wgYWxsb3dDb252ZXJzaW9uRnJvbUZvcm1hdFRvRm9ybWF0KEZvcm1h
dCwgRm9ybWF0KTsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9pZCBjb252ZXJ0VG9Gb3Jt
YXQoc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OklPU3VyZmFjZT4mJiBpblN1cmZhY2UsIEZvcm1h
dCwgc3RkOjpmdW5jdGlvbjx2b2lkKHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpJT1N1cmZhY2U+
KT4pOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIGNvbnZlcnRUb0Zvcm1hdChzdGQ6
OnVuaXF1ZV9wdHI8V2ViQ29yZTo6SU9TdXJmYWNlPiYmIGluU3VyZmFjZSwgRm9ybWF0LCBXVEY6
OkZ1bmN0aW9uPHZvaWQoc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OklPU3VyZmFjZT4pPiYmKTsK
ICNlbmRpZgogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvSU9TdXJmYWNlLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvSU9TdXJmYWNlLm1tCmluZGV4IDc4Yzc4MDIzODgxNjNjNWRmZDc1MmM2OTky
YjMzZGE4N2UxODNjYzYuLjQ5ZDA0NmU5Y2QyNWFjNjQ0Mzk1NGQzNmZlYmQyMzkwOGM2ZDM3ODAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0lPU3Vy
ZmFjZS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9JT1N1
cmZhY2UubW0KQEAgLTM4MCw3ICszODAsNyBAQCBib29sIFdlYkNvcmU6OklPU3VyZmFjZTo6YWxs
b3dDb252ZXJzaW9uRnJvbUZvcm1hdFRvRm9ybWF0KEZvcm1hdCBzb3VyY2VGb3JtYXQsCiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgV2ViQ29yZTo6SU9TdXJmYWNlOjpjb252ZXJ0VG9Gb3Jt
YXQoc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OklPU3VyZmFjZT4mJiBpblN1cmZhY2UsIEZvcm1h
dCBmb3JtYXQsIHN0ZDo6ZnVuY3Rpb248dm9pZChzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6SU9T
dXJmYWNlPik+IGNhbGxiYWNrKQordm9pZCBXZWJDb3JlOjpJT1N1cmZhY2U6OmNvbnZlcnRUb0Zv
cm1hdChzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6SU9TdXJmYWNlPiYmIGluU3VyZmFjZSwgRm9y
bWF0IGZvcm1hdCwgV1RGOjpGdW5jdGlvbjx2b2lkKHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpJ
T1N1cmZhY2U+KT4mJiBjYWxsYmFjaykKIHsKICAgICBzdGF0aWMgSU9TdXJmYWNlQWNjZWxlcmF0
b3JSZWYgYWNjZWxlcmF0b3I7CiAgICAgaWYgKCFhY2NlbGVyYXRvcikgewpAQCAtNDAzLDEwICs0
MDMsMTAgQEAgdm9pZCBXZWJDb3JlOjpJT1N1cmZhY2U6OmNvbnZlcnRUb0Zvcm1hdChzdGQ6OnVu
aXF1ZV9wdHI8V2ViQ29yZTo6SU9TdXJmYWNlPiYmIGkKIAogICAgIElPU3VyZmFjZVJlZiBkZXN0
aW5hdGlvbklPU3VyZmFjZVJlZiA9IGRlc3RpbmF0aW9uU3VyZmFjZS0+c3VyZmFjZSgpOwogICAg
IElPU3VyZmFjZUFjY2VsZXJhdG9yQ29tcGxldGlvbiBjb21wbGV0aW9uOwotICAgIGNvbXBsZXRp
b24uY29tcGxldGlvblJlZkNvbiA9IG5ldyBzdGQ6OmZ1bmN0aW9uPHZvaWQoc3RkOjp1bmlxdWVf
cHRyPFdlYkNvcmU6OklPU3VyZmFjZT4pPiAoV1RGTW92ZShjYWxsYmFjaykpOworICAgIGNvbXBs
ZXRpb24uY29tcGxldGlvblJlZkNvbiA9IG5ldyBXVEY6OkZ1bmN0aW9uPHZvaWQoc3RkOjp1bmlx
dWVfcHRyPFdlYkNvcmU6OklPU3VyZmFjZT4pPiAoV1RGTW92ZShjYWxsYmFjaykpOwogICAgIGNv
bXBsZXRpb24uY29tcGxldGlvblJlZkNvbjIgPSBkZXN0aW5hdGlvblN1cmZhY2UucmVsZWFzZSgp
OwogICAgIGNvbXBsZXRpb24uY29tcGxldGlvbkNhbGxiYWNrID0gW10odm9pZCAqY29tcGxldGlv
blJlZkNvbiwgSU9SZXR1cm4sIHZvaWQgKiBjb21wbGV0aW9uUmVmQ29uMikgewotICAgICAgICBh
dXRvKiBjYWxsYmFjayA9IHN0YXRpY19jYXN0PHN0ZDo6ZnVuY3Rpb248dm9pZChzdGQ6OnVuaXF1
ZV9wdHI8V2ViQ29yZTo6SU9TdXJmYWNlPik+Kj4oY29tcGxldGlvblJlZkNvbik7CisgICAgICAg
IGF1dG8qIGNhbGxiYWNrID0gc3RhdGljX2Nhc3Q8V1RGOjpGdW5jdGlvbjx2b2lkKHN0ZDo6dW5p
cXVlX3B0cjxXZWJDb3JlOjpJT1N1cmZhY2U+KT4qPihjb21wbGV0aW9uUmVmQ29uKTsKICAgICAg
ICAgYXV0byBkZXN0aW5hdGlvblN1cmZhY2UgPSBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6SU9T
dXJmYWNlPihzdGF0aWNfY2FzdDxXZWJDb3JlOjpJT1N1cmZhY2UqPihjb21wbGV0aW9uUmVmQ29u
MikpOwogICAgICAgICAKICAgICAgICAgKCpjYWxsYmFjaykoV1RGTW92ZShkZXN0aW5hdGlvblN1
cmZhY2UpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9NYWluVGhyZWFkTm90aWZpZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9NYWluVGhyZWFkTm90aWZpZXIuaAppbmRleCBmMTQwNTBkZDJlZjQ0
NjljMDE4MDkyYTVkN2Q4NzJlMDZjMWU4MTAwLi5lYWNjNzA5YzQzNGNlNDEyMTQ5OGYwYTY5Y2M0
YzEyODQzYWQ1MGE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvTWFpblRocmVhZE5vdGlmaWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01haW5UaHJlYWROb3RpZmllci5oCkBAIC00OCw3ICs0
OCw3IEBAIHB1YmxpYzoKICAgICAgICAgaWYgKCFhZGRQZW5kaW5nTm90aWZpY2F0aW9uKG5vdGlm
aWNhdGlvblR5cGUpKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIFJ1bkxvb3A6Om1h
aW4oKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBub3Rp
ZmljYXRpb25UeXBlLCBjYWxsYmFjayA9IHN0ZDo6ZnVuY3Rpb248dm9pZCgpPihjYWxsYmFja0Z1
bmN0b3IpXSB7CisgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbdGhpcywgcHJvdGVj
dGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBub3RpZmljYXRpb25UeXBlLCBjYWxsYmFjayA9IFdU
Rjo6RnVuY3Rpb248dm9pZCgpPihjYWxsYmFja0Z1bmN0b3IpXSB7CiAgICAgICAgICAgICBpZiAo
IW1faXNWYWxpZC5sb2FkKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAg
aWYgKHJlbW92ZVBlbmRpbmdOb3RpZmljYXRpb24obm90aWZpY2F0aW9uVHlwZSkpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5
ZXJSZXF1ZXN0SW5zdGFsbE1pc3NpbmdQbHVnaW5zQ2FsbGJhY2suaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclJlcXVlc3RJbnN0YWxsTWlz
c2luZ1BsdWdpbnNDYWxsYmFjay5oCmluZGV4IDk1ZWQyZGE2MzNmMTJjYWQ0OGUzZmUwMDI0YzEx
YzE2N2Q2NzQ1M2UuLjA1ODdkMGRmOTJiMDY4MmFmMjZjMDhkOGVlY2Q2ZmQ0OGYyZDY5NWYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRp
YVBsYXllclJlcXVlc3RJbnN0YWxsTWlzc2luZ1BsdWdpbnNDYWxsYmFjay5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclJlcXVlc3RJ
bnN0YWxsTWlzc2luZ1BsdWdpbnNDYWxsYmFjay5oCkBAIC0yMSw2ICsyMSw3IEBACiAjZGVmaW5l
IE1lZGlhUGxheWVyUmVxdWVzdEluc3RhbGxNaXNzaW5nUGx1Z2luc0NhbGxiYWNrX2gKIAogI2lm
IEVOQUJMRShWSURFTykgJiYgVVNFKEdTVFJFQU1FUikKKyNpbmNsdWRlIDx3dGYvRnVuY3Rpb24u
aD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBA
IC0yOCw3ICsyOSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIE1lZGlhUGxheWVyUmVx
dWVzdEluc3RhbGxNaXNzaW5nUGx1Z2luc0NhbGxiYWNrIDogcHVibGljIFJlZkNvdW50ZWQ8TWVk
aWFQbGF5ZXJSZXF1ZXN0SW5zdGFsbE1pc3NpbmdQbHVnaW5zQ2FsbGJhY2s+IHsKICAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRCgpOwogcHVibGljOgotICAgIHN0YXRpYyBSZWY8TWVkaWFQbGF5
ZXJSZXF1ZXN0SW5zdGFsbE1pc3NpbmdQbHVnaW5zQ2FsbGJhY2s+IGNyZWF0ZShzdGQ6OmZ1bmN0
aW9uPHZvaWQgKHVpbnQzMl90KT4mJiBmdW5jdGlvbikKKyAgICBzdGF0aWMgUmVmPE1lZGlhUGxh
eWVyUmVxdWVzdEluc3RhbGxNaXNzaW5nUGx1Z2luc0NhbGxiYWNrPiBjcmVhdGUoV1RGOjpGdW5j
dGlvbjx2b2lkICh1aW50MzJfdCk+JiYgZnVuY3Rpb24pCiAgICAgewogICAgICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBNZWRpYVBsYXllclJlcXVlc3RJbnN0YWxsTWlzc2luZ1BsdWdpbnNDYWxs
YmFjayhXVEZNb3ZlKGZ1bmN0aW9uKSkpOwogICAgIH0KQEAgLTQ3LDEyICs0OCwxMiBAQCBwdWJs
aWM6CiAgICAgfQogCiBwcml2YXRlOgotICAgIE1lZGlhUGxheWVyUmVxdWVzdEluc3RhbGxNaXNz
aW5nUGx1Z2luc0NhbGxiYWNrKHN0ZDo6ZnVuY3Rpb248dm9pZCAodWludDMyX3QpPiYmIGZ1bmN0
aW9uKQorICAgIE1lZGlhUGxheWVyUmVxdWVzdEluc3RhbGxNaXNzaW5nUGx1Z2luc0NhbGxiYWNr
KFdURjo6RnVuY3Rpb248dm9pZCAodWludDMyX3QpPiYmIGZ1bmN0aW9uKQogICAgICAgICA6IG1f
ZnVuY3Rpb24oV1RGTW92ZShmdW5jdGlvbikpCiAgICAgewogICAgIH0KIAotICAgIHN0ZDo6ZnVu
Y3Rpb248dm9pZCAodWludDMyX3QpPiBtX2Z1bmN0aW9uOworICAgIFdURjo6RnVuY3Rpb248dm9p
ZCAodWludDMyX3QpPiBtX2Z1bmN0aW9uOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNz
Q29udGV4dERpcmVjdDJELmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dp
bi9HcmFwaGljc0NvbnRleHREaXJlY3QyRC5jcHAKaW5kZXggNjQwNTk3MGYyNzVlYmE1MmI3MWUy
ZGFiNGFkNzYwZWQ5YTMyZTJmMi4uZDA2NjdjM2QwMGNmMjhlMjMxYjIxYWU5NjI5NGQyY2Y2OThi
M2I0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dy
YXBoaWNzQ29udGV4dERpcmVjdDJELmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0RGlyZWN0MkQuY3BwCkBAIC05MzUsNyArOTM1LDcg
QEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdQYXRoKGNvbnN0IFBhdGgmIHBhdGgpCiAgICAg
Zmx1c2goKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdXaXRob3V0U2hhZG93KGNv
bnN0IEZsb2F0UmVjdCYgLypib3VuZGluZ1JlY3QqLywgY29uc3Qgc3RkOjpmdW5jdGlvbjx2b2lk
KElEMkQxUmVuZGVyVGFyZ2V0Kik+JiBkcmF3Q29tbWFuZHMpCit2b2lkIEdyYXBoaWNzQ29udGV4
dDo6ZHJhd1dpdGhvdXRTaGFkb3coY29uc3QgRmxvYXRSZWN0JiAvKmJvdW5kaW5nUmVjdCovLCBj
b25zdCBXVEY6OkZ1bmN0aW9uPHZvaWQoSUQyRDFSZW5kZXJUYXJnZXQqKT4mIGRyYXdDb21tYW5k
cykKIHsKICAgICBkcmF3Q29tbWFuZHMocGxhdGZvcm1Db250ZXh0KCkpOwogfQpAQCAtOTgxLDcg
Kzk4MSw3IEBAIHN0YXRpYyB2b2lkIGRyYXdXaXRoU2hhZG93SGVscGVyKElEMkQxUmVuZGVyVGFy
Z2V0KiBjb250ZXh0LCBJRDJEMUJpdG1hcCogYml0bWFwCiAgICAgZGV2aWNlQ29udGV4dC0+RHJh
d0ltYWdlKGNvbXBvc2l0b3IuZ2V0KCksIEQyRDFfSU5URVJQT0xBVElPTl9NT0RFX0xJTkVBUik7
CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3V2l0aFNoYWRvdyhjb25zdCBGbG9hdFJl
Y3QmIGJvdW5kaW5nUmVjdCwgY29uc3Qgc3RkOjpmdW5jdGlvbjx2b2lkKElEMkQxUmVuZGVyVGFy
Z2V0Kik+JiBkcmF3Q29tbWFuZHMpCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd1dpdGhTaGFk
b3coY29uc3QgRmxvYXRSZWN0JiBib3VuZGluZ1JlY3QsIGNvbnN0IFdURjo6RnVuY3Rpb248dm9p
ZChJRDJEMVJlbmRlclRhcmdldCopPiYgZHJhd0NvbW1hbmRzKQogewogICAgIGF1dG8gY29udGV4
dCA9IHBsYXRmb3JtQ29udGV4dCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ndGsvUGFzdGVib2FyZEhlbHBlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
dGsvUGFzdGVib2FyZEhlbHBlci5jcHAKaW5kZXggMDgyZmI3Y2RhMzFiNmE0YmYxNjVjZmJjZjE0
OThjNTA5Y2Q5Njg4Zi4uYmExNTZkMTlkYmQwZmQ3Njk0NWI5OGNmNzIzMmE0ODBhNmQxMzFlNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRIZWxwZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkSGVscGVyLmNw
cApAQCAtMjY1LDcgKzI2NSw3IEBAIFZlY3RvcjxHZGtBdG9tPiBQYXN0ZWJvYXJkSGVscGVyOjpk
cm9wQXRvbXNGb3JDb250ZXh0KEd0a1dpZGdldCogd2lkZ2V0LCBHZGtEcmFnCiBzdGF0aWMgU2Vs
ZWN0aW9uRGF0YSogc2V0dGluZ0NsaXBib2FyZFNlbGVjdGlvbjsKIAogc3RydWN0IENsaXBib2Fy
ZFNldERhdGEgewotICAgIENsaXBib2FyZFNldERhdGEoU2VsZWN0aW9uRGF0YSYgc2VsZWN0aW9u
LCBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4mJiBzZWxlY3Rpb25DbGVhcmVkQ2FsbGJhY2spCisgICAg
Q2xpcGJvYXJkU2V0RGF0YShTZWxlY3Rpb25EYXRhJiBzZWxlY3Rpb24sIFdURjo6RnVuY3Rpb248
dm9pZCgpPiYmIHNlbGVjdGlvbkNsZWFyZWRDYWxsYmFjaykKICAgICAgICAgOiBzZWxlY3Rpb25E
YXRhKHNlbGVjdGlvbikKICAgICAgICAgLCBzZWxlY3Rpb25DbGVhcmVkQ2FsbGJhY2soV1RGTW92
ZShzZWxlY3Rpb25DbGVhcmVkQ2FsbGJhY2spKQogICAgIHsKQEAgLTI3Niw3ICsyNzYsNyBAQCBz
dHJ1Y3QgQ2xpcGJvYXJkU2V0RGF0YSB7CiAgICAgfQogCiAgICAgUmVmPFNlbGVjdGlvbkRhdGE+
IHNlbGVjdGlvbkRhdGE7Ci0gICAgc3RkOjpmdW5jdGlvbjx2b2lkKCk+IHNlbGVjdGlvbkNsZWFy
ZWRDYWxsYmFjazsKKyAgICBXVEY6OkZ1bmN0aW9udW5jdGlvbjx2b2lkKCk+IHNlbGVjdGlvbkNs
ZWFyZWRDYWxsYmFjazsKIH07CiAKIHN0YXRpYyB2b2lkIGdldENsaXBib2FyZENvbnRlbnRzQ2Fs
bGJhY2soR3RrQ2xpcGJvYXJkKiwgR3RrU2VsZWN0aW9uRGF0YSAqc2VsZWN0aW9uRGF0YSwgZ3Vp
bnQgaW5mbywgZ3BvaW50ZXIgdXNlckRhdGEpCkBAIC0yOTIsNyArMjkyLDcgQEAgc3RhdGljIHZv
aWQgY2xlYXJDbGlwYm9hcmRDb250ZW50c0NhbGxiYWNrKEd0a0NsaXBib2FyZCosIGdwb2ludGVy
IHVzZXJEYXRhKQogICAgICAgICBkYXRhLT5zZWxlY3Rpb25DbGVhcmVkQ2FsbGJhY2soKTsKIH0K
IAotdm9pZCBQYXN0ZWJvYXJkSGVscGVyOjp3cml0ZUNsaXBib2FyZENvbnRlbnRzKEd0a0NsaXBi
b2FyZCogY2xpcGJvYXJkLCBjb25zdCBTZWxlY3Rpb25EYXRhJiBzZWxlY3Rpb24sIHN0ZDo6ZnVu
Y3Rpb248dm9pZCgpPiYmIHByaW1hcnlTZWxlY3Rpb25DbGVhcmVkKQordm9pZCBQYXN0ZWJvYXJk
SGVscGVyOjp3cml0ZUNsaXBib2FyZENvbnRlbnRzKEd0a0NsaXBib2FyZCogY2xpcGJvYXJkLCBj
b25zdCBTZWxlY3Rpb25EYXRhJiBzZWxlY3Rpb24sIFdURjo6RnVuY3Rpb248dm9pZCgpPiYmIHBy
aW1hcnlTZWxlY3Rpb25DbGVhcmVkKQogewogICAgIEdSZWZQdHI8R3RrVGFyZ2V0TGlzdD4gbGlz
dCA9IHRhcmdldExpc3RGb3JTZWxlY3Rpb25EYXRhKHNlbGVjdGlvbik7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkSGVscGVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGFzdGVib2FyZEhlbHBlci5oCmluZGV4IDRhNGRlOTk1NmVk
ZThmNWU1Zjc2ZTI1YmZhNjRmODU2M2E2M2I2ODguLjA5NWVlNGFkZDIyODc5OWRiNzhmMWFkZDE3
ZDFjNDgwNzBkMDYwNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9Q
YXN0ZWJvYXJkSGVscGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Bhc3Rl
Ym9hcmRIZWxwZXIuaApAQCAtMjYsNyArMjYsNyBAQAogI2RlZmluZSBQYXN0ZWJvYXJkSGVscGVy
X2gKIAogI2luY2x1ZGUgIkdSZWZQdHJHdGsuaCIKLSNpbmNsdWRlIDxmdW5jdGlvbmFsPgorI2lu
Y2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogI2lu
Y2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvZ2xpYi9HUmVmUHRyLmg+CkBAIC00
Nyw3ICs0Nyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGZpbGxTZWxlY3Rpb25EYXRhKGNvbnN0IFNl
bGVjdGlvbkRhdGEmLCB1bnNpZ25lZCwgR3RrU2VsZWN0aW9uRGF0YSopOwogICAgIHZvaWQgZmls
bFNlbGVjdGlvbkRhdGEoR3RrU2VsZWN0aW9uRGF0YSosIHVuc2lnbmVkLCBTZWxlY3Rpb25EYXRh
Jik7CiAgICAgVmVjdG9yPEdka0F0b20+IGRyb3BBdG9tc0ZvckNvbnRleHQoR3RrV2lkZ2V0Kiwg
R2RrRHJhZ0NvbnRleHQqKTsKLSAgICB2b2lkIHdyaXRlQ2xpcGJvYXJkQ29udGVudHMoR3RrQ2xp
cGJvYXJkKiwgY29uc3QgU2VsZWN0aW9uRGF0YSYsIHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiYmIHBy
aW1hcnlTZWxlY3Rpb25DbGVhcmVkID0gbnVsbHB0cik7CisgICAgdm9pZCB3cml0ZUNsaXBib2Fy
ZENvbnRlbnRzKEd0a0NsaXBib2FyZCosIGNvbnN0IFNlbGVjdGlvbkRhdGEmLCBXVEY6OkZ1bmN0
aW9uPHZvaWQoKT4mJiBwcmltYXJ5U2VsZWN0aW9uQ2xlYXJlZCA9IG51bGxwdHIpOwogICAgIHZv
aWQgZ2V0Q2xpcGJvYXJkQ29udGVudHMoR3RrQ2xpcGJvYXJkKiwgU2VsZWN0aW9uRGF0YSYpOwog
CiAgICAgZW51bSBQYXN0ZWJvYXJkVGFyZ2V0VHlwZSB7IFRhcmdldFR5cGVNYXJrdXAsIFRhcmdl
dFR5cGVUZXh0LCBUYXJnZXRUeXBlSW1hZ2UsIFRhcmdldFR5cGVVUklMaXN0LCBUYXJnZXRUeXBl
TmV0c2NhcGVVUkwsIFRhcmdldFR5cGVTbWFydFBhc3RlLCBUYXJnZXRUeXBlVW5rbm93biB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1BsYXRmb3JtUGFzdGVib2Fy
ZEd0ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGxhdGZvcm1QYXN0ZWJvYXJk
R3RrLmNwcAppbmRleCA4NDgxY2I4NDI3ZTU5MDE0OTgxNTllNjBhYjg4YmJmY2UwZDA3NzBlLi5l
YmEzZTAzNzYyMTg5OGY4NzUzNTYwZmZmY2ZkZGRjNmJkZTYyMzNhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGxhdGZvcm1QYXN0ZWJvYXJkR3RrLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGxhdGZvcm1QYXN0ZWJvYXJkR3RrLmNwcApAQCAt
MzQsNyArMzQsNyBAQCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OlBsYXRmb3JtUGFzdGVib2FyZChjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQogICAgIEFTU0VSVChtX2NsaXBib2FyZCk7CiB9CiAK
LXZvaWQgUGxhdGZvcm1QYXN0ZWJvYXJkOjp3cml0ZVRvQ2xpcGJvYXJkKGNvbnN0IFNlbGVjdGlv
bkRhdGEmIHNlbGVjdGlvbiwgc3RkOjpmdW5jdGlvbjx2b2lkKCk+JiYgcHJpbWFyeVNlbGVjdGlv
bkNsZWFyZWQpCit2b2lkIFBsYXRmb3JtUGFzdGVib2FyZDo6d3JpdGVUb0NsaXBib2FyZChjb25z
dCBTZWxlY3Rpb25EYXRhJiBzZWxlY3Rpb24sIFdURjo6RnVuY3Rpb248dm9pZCgpPiYmIHByaW1h
cnlTZWxlY3Rpb25DbGVhcmVkKQogewogICAgIFBhc3RlYm9hcmRIZWxwZXI6OnNpbmdsZXRvbigp
LndyaXRlQ2xpcGJvYXJkQ29udGVudHMobV9jbGlwYm9hcmQsIHNlbGVjdGlvbiwgZ3RrX2NsaXBi
b2FyZF9nZXQoR0RLX1NFTEVDVElPTl9QUklNQVJZKSA9PSBtX2NsaXBib2FyZCA/IFdURk1vdmUo
cHJpbWFyeVNlbGVjdGlvbkNsZWFyZWQpIDogbnVsbHB0cik7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZh
Y2VBVktpdC5oCmluZGV4IDhkM2M0NzNjMDZmYTdkODRhNDQ2OTliMDYwMjAwMjNmN2NiODMwZTAu
Ljk4YjRkYmRjYzhiMGRlYmE5YzgwMjgwMjM0NDVjODc0ZGExMWY3NDQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktp
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5J
bnRlcmZhY2VBVktpdC5oCkBAIC0zNCw4ICszNCw4IEBACiAjaW5jbHVkZSAiUGxhdGZvcm1MYXll
ci5oIgogI2luY2x1ZGUgIldlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0LmgiCiAjaW5j
bHVkZSAiV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWwuaCIKLSNpbmNsdWRlIDxmdW5jdGlvbmFsPgog
I2luY2x1ZGUgPG9iamMvb2JqYy5oPgorI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgogI2luY2x1
ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUg
PHd0Zi9SZXRhaW5QdHIuaD4KQEAgLTEwMSw3ICsxMDEsNyBAQCBwdWJsaWM6CiAgICAgSFRNTE1l
ZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlIG1vZGUoKSBjb25zdCB7IHJldHVy
biBtX21vZGU7IH0KICAgICBib29sIGFsbG93c1BpY3R1cmVJblBpY3R1cmVQbGF5YmFjaygpIGNv
bnN0IHsgcmV0dXJuIG1fYWxsb3dzUGljdHVyZUluUGljdHVyZVBsYXliYWNrOyB9CiAgICAgV0VC
Q09SRV9FWFBPUlQgYm9vbCBtYXlBdXRvbWF0aWNhbGx5U2hvd1ZpZGVvUGljdHVyZUluUGljdHVy
ZSgpIGNvbnN0OwotICAgIHZvaWQgZnVsbHNjcmVlbk1heVJldHVyblRvSW5saW5lKHN0ZDo6ZnVu
Y3Rpb248dm9pZChib29sKT4gY2FsbGJhY2spOworICAgIHZvaWQgZnVsbHNjcmVlbk1heVJldHVy
blRvSW5saW5lKFdURjo6RnVuY3Rpb248dm9pZChib29sKT4mJiBjYWxsYmFjayk7CiAgICAgYm9v
bCB3aXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZCgpIGNvbnN0OwogICAgIHZvaWQgYXBwbGlj
YXRpb25EaWRCZWNvbWVBY3RpdmUoKTsKIApAQCAtMTM4LDcgKzEzOCw3IEBAIHByb3RlY3RlZDoK
ICAgICBSZXRhaW5QdHI8VUlXaW5kb3c+IG1fcGFyZW50V2luZG93OwogICAgIFJldGFpblB0cjxX
ZWJBVlBsYXllckxheWVyVmlldz4gbV9wbGF5ZXJMYXllclZpZXc7CiAgICAgSFRNTE1lZGlhRWxl
bWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlIG1fbW9kZSB7IEhUTUxNZWRpYUVsZW1lbnRF
bnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZU5vbmUgfTsKLSAgICBzdGQ6OmZ1bmN0aW9uPHZvaWQo
Ym9vbCk+IG1fcHJlcGFyZVRvSW5saW5lQ2FsbGJhY2s7CisgICAgV1RGOjpGdW5jdGlvbjx2b2lk
KGJvb2wpPiBtX3ByZXBhcmVUb0lubGluZUNhbGxiYWNrOwogICAgIFJ1bkxvb3A6OlRpbWVyPFdl
YlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0PiBtX3dhdGNoZG9nVGltZXI7CiAgICAgYm9v
bCBtX2FsbG93c1BpY3R1cmVJblBpY3R1cmVQbGF5YmFjayB7IGZhbHNlIH07CiAgICAgYm9vbCBt
X2V4aXRSZXF1ZXN0ZWQgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Lm1tIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Lm1tCmlu
ZGV4IDZiYWJjMWVkNTIwYmIyNDkzNWI1Zjk2ZGJkZWE5NDYxZjUyZWZmNTcuLjc2ZmZmYzIwMDQ4
ZGJlNDNiZGI1NDgxNzg2OGIyY2EzNzI3N2M2M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZL
aXQubW0KQEAgLTg0NCw3ICs4NDQsNyBAQCB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFj
ZUFWS2l0OjpwcmVwYXJlZFRvUmV0dXJuVG9JbmxpbmUoYm9vbCB2aXNpYmxlLCBjbwogICAgICAg
ICAKICAgICAgICAgW21fcGxheWVyVmlld0NvbnRyb2xsZXIgdmlld10uZnJhbWUgPSBbbV9wYXJl
bnRWaWV3IGNvbnZlcnRSZWN0OmlubGluZVJlY3QgdG9WaWV3OlttX3BsYXllclZpZXdDb250cm9s
bGVyIHZpZXddLnN1cGVydmlld107CiAKLSAgICAgICAgc3RkOjpmdW5jdGlvbjx2b2lkKGJvb2wp
PiBjYWxsYmFjayA9IFdURk1vdmUobV9wcmVwYXJlVG9JbmxpbmVDYWxsYmFjayk7CisgICAgICAg
IFdURjo6RnVuY3Rpb248dm9pZChib29sKT4gY2FsbGJhY2sgPSBXVEZNb3ZlKG1fcHJlcGFyZVRv
SW5saW5lQ2FsbGJhY2spOwogICAgICAgICBjYWxsYmFjayh2aXNpYmxlKTsKICAgICB9CiB9CkBA
IC04NTQsOSArODU0LDkgQEAgYm9vbCBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6
bWF5QXV0b21hdGljYWxseVNob3dWaWRlb1BpY3R1cmVJblBpY3R1cmUKICAgICByZXR1cm4gW3Bs
YXllckNvbnRyb2xsZXIoKSBpc1BsYXlpbmddICYmIG1fbW9kZSA9PSBIVE1MTWVkaWFFbGVtZW50
RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGVTdGFuZGFyZCAmJiBzdXBwb3J0c1BpY3R1cmVJblBp
Y3R1cmUoKTsKIH0KIAotdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6ZnVs
bHNjcmVlbk1heVJldHVyblRvSW5saW5lKHN0ZDo6ZnVuY3Rpb248dm9pZChib29sKT4gY2FsbGJh
Y2spCit2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpmdWxsc2NyZWVuTWF5
UmV0dXJuVG9JbmxpbmUoV1RGOjpGdW5jdGlvbjx2b2lkKGJvb2wpPiYmIGNhbGxiYWNrKQogewot
ICAgIG1fcHJlcGFyZVRvSW5saW5lQ2FsbGJhY2sgPSBjYWxsYmFjazsKKyAgICBtX3ByZXBhcmVU
b0lubGluZUNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayk7CiAgICAgaWYgKG1fZnVsbHNjcmVl
bkNoYW5nZU9ic2VydmVyKQogICAgICAgICBtX2Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlci0+ZnVs
bHNjcmVlbk1heVJldHVyblRvSW5saW5lKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tYWMvUG93ZXJPYnNlcnZlck1hYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tYWMvUG93ZXJPYnNlcnZlck1hYy5jcHAKaW5kZXggMzI5MDJmZGEwNjhhYjE2ZmYzZTVl
NDA3MjNiOGYyM2IxNzUxZDc3Ni4uOGYzN2RkNzFmMDc3NGUzODViNjY5NjI5Y2JkMmUwZDU4NGM0
NjZiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bvd2VyT2JzZXJ2
ZXJNYWMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9Qb3dlck9ic2VydmVy
TWFjLmNwcApAQCAtMzAsOCArMzAsOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVBvd2Vy
T2JzZXJ2ZXI6OlBvd2VyT2JzZXJ2ZXIoY29uc3Qgc3RkOjpmdW5jdGlvbjx2b2lkKCk+JiBwb3dl
ck9uSGFuZGVyKQotICAgIDogbV9wb3dlck9uSGFuZGVyKHBvd2VyT25IYW5kZXIpCitQb3dlck9i
c2VydmVyOjpQb3dlck9ic2VydmVyKFdURjo6RnVuY3Rpb248dm9pZCgpPiYmIHBvd2VyT25IYW5k
ZXIpCisgICAgOiBtX3Bvd2VyT25IYW5kZXIoV1RGTW92ZShwb3dlck9uSGFuZGVyKSkKICAgICAs
IG1fcG93ZXJDb25uZWN0aW9uKDApCiAgICAgLCBtX25vdGlmaWNhdGlvblBvcnQobnVsbHB0cikK
ICAgICAsIG1fbm90aWZpZXJSZWZlcmVuY2UoMCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21hYy9Qb3dlck9ic2VydmVyTWFjLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tYWMvUG93ZXJPYnNlcnZlck1hYy5oCmluZGV4IDc1ZmE4YjQwMTI5MGZkMzViZmM2NWY5NTJl
ZTU4NzFlZDFkNjZmOWEuLmNiOTdiNWRlNWY2NWZjNzZkZWNkYWYzZDAxNjNjYzU0NjFhMmQwOWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9Qb3dlck9ic2VydmVyTWFj
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bvd2VyT2JzZXJ2ZXJNYWMuaApA
QCAtMjgsNyArMjgsNyBAQAogCiAjaW1wb3J0IDxJT0tpdC9JT01lc3NhZ2UuaD4KICNpbXBvcnQg
PElPS2l0L3B3cl9tZ3QvSU9QTUxpYi5oPgotI2ltcG9ydCA8ZnVuY3Rpb25hbD4KKyNpbXBvcnQg
PHd0Zi9GdW5jdGlvbi5oPgogI2ltcG9ydCA8d3RmL05vbmNvcHlhYmxlLmg+CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKQEAgLTM3LDEzICszNywxMyBAQCBjbGFzcyBQb3dlck9ic2VydmVyIHsKICAg
ICBXVEZfTUFLRV9OT05DT1BZQUJMRShQb3dlck9ic2VydmVyKTsgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CiAKIHB1YmxpYzoKLSAgICBQb3dlck9ic2VydmVyKGNvbnN0IHN0ZDo6ZnVuY3Rpb248
dm9pZCgpPiYgcG93ZXJPbkhhbmRlcik7CisgICAgUG93ZXJPYnNlcnZlcihXVEY6OkZ1bmN0aW9u
PHZvaWQoKT4mJiBwb3dlck9uSGFuZGVyKTsKICAgICB+UG93ZXJPYnNlcnZlcigpOwogCiBwcml2
YXRlOgogICAgIHZvaWQgZGlkUmVjZWl2ZVN5c3RlbVBvd2VyTm90aWZpY2F0aW9uKGlvX3NlcnZp
Y2VfdCwgdWludDMyX3QgbWVzc2FnZVR5cGUsIHZvaWQqIG1lc3NhZ2VBcmd1bWVudCk7CiAKLSAg
ICBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4gbV9wb3dlck9uSGFuZGVyOworICAgIFdURjo6RnVuY3Rp
b248dm9pZCgpPiBtX3Bvd2VyT25IYW5kZXI7CiAgICAgaW9fY29ubmVjdF90IG1fcG93ZXJDb25u
ZWN0aW9uOwogICAgIElPTm90aWZpY2F0aW9uUG9ydFJlZiBtX25vdGlmaWNhdGlvblBvcnQ7CiAg
ICAgaW9fb2JqZWN0X3QgbV9ub3RpZmllclJlZmVyZW5jZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlTlNVUkxFeHRyYXMubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tYWMvV2ViQ29yZU5TVVJMRXh0cmFzLm1tCmluZGV4IDZmYjYwMDVkM2M5ZWY3
N2U2OTdjOTUxNTY4Zjc2ZmY4MjczYTU3ZjQuLmFlZDYwNTdjYTUyNzZkM2E0M2EwMjJhNjIxMGJh
NDUxMTAzOWFlODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJD
b3JlTlNVUkxFeHRyYXMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNv
cmVOU1VSTEV4dHJhcy5tbQpAQCAtMzIsNyArMzIsNyBAQAogI2ltcG9ydCAiV2ViQ29yZU5TU3Ry
aW5nRXh0cmFzLmgiCiAjaW1wb3J0ICJXZWJDb3JlTlNVUkxFeHRyYXMuaCIKICNpbXBvcnQgIldl
YkNvcmVTeXN0ZW1JbnRlcmZhY2UuaCIKLSNpbXBvcnQgPGZ1bmN0aW9uYWw+CisjaW1wb3J0IDx3
dGYvRnVuY3Rpb24uaD4KICNpbXBvcnQgPHd0Zi9IZXhOdW1iZXIuaD4KICNpbXBvcnQgPHd0Zi9P
YmpjUnVudGltZUV4dHJhcy5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgpAQCAtMjcxLDcg
KzI3MSw3IEBAIHN0YXRpYyBCT09MIGFsbENoYXJhY3RlcnNJbklETlNjcmlwdFdoaXRlTGlzdChj
b25zdCBVQ2hhciAqYnVmZmVyLCBpbnQzMl90IGxlbmd0CiAgICAgcmV0dXJuIFlFUzsKIH0KIAot
c3RhdGljIGJvb2wgaXNTZWNvbmRMZXZlbERvbWFpbk5hbWVBbGxvd2VkQnlUTERSdWxlcyhjb25z
dCBVQ2hhciogYnVmZmVyLCBpbnQzMl90IGxlbmd0aCwgY29uc3Qgc3RkOjpmdW5jdGlvbjxib29s
KFVDaGFyKT4mIGNoYXJhY3RlcklzQWxsb3dlZCkKK3N0YXRpYyBib29sIGlzU2Vjb25kTGV2ZWxE
b21haW5OYW1lQWxsb3dlZEJ5VExEUnVsZXMoY29uc3QgVUNoYXIqIGJ1ZmZlciwgaW50MzJfdCBs
ZW5ndGgsIGNvbnN0IFdURjo6RnVuY3Rpb248Ym9vbChVQ2hhcik+JiBjaGFyYWN0ZXJJc0FsbG93
ZWQpCiB7CiAgICAgQVNTRVJUKGxlbmd0aCA+IDApOwogCkBAIC0yOTQsNyArMjk0LDcgQEAgc3Rh
dGljIGJvb2wgaXNTZWNvbmRMZXZlbERvbWFpbk5hbWVBbGxvd2VkQnlUTERSdWxlcyhjb25zdCBV
Q2hhciogYnVmZmVyLCBpbnQzMl8KICAgICB7IFwKICAgICAgICAgc3RhdGljIGNvbnN0IGludDMy
X3Qgc3VmZml4TGVuZ3RoID0gc2l6ZW9mKHN1ZmZpeCkgLyBzaXplb2Yoc3VmZml4WzBdKTsgXAog
ICAgICAgICBpZiAobGVuZ3RoID4gc3VmZml4TGVuZ3RoICYmIDAgPT0gbWVtY21wKGJ1ZmZlciAr
IGxlbmd0aCAtIHN1ZmZpeExlbmd0aCwgc3VmZml4LCBzaXplb2Yoc3VmZml4KSkpIFwKLSAgICAg
ICAgICAgIHJldHVybiBpc1NlY29uZExldmVsRG9tYWluTmFtZUFsbG93ZWRCeVRMRFJ1bGVzKGJ1
ZmZlciwgbGVuZ3RoIC0gc3VmZml4TGVuZ3RoLCBmdW5jdGlvbik7IFwKKyAgICAgICAgICAgIHJl
dHVybiBpc1NlY29uZExldmVsRG9tYWluTmFtZUFsbG93ZWRCeVRMRFJ1bGVzKGJ1ZmZlciwgbGVu
Z3RoIC0gc3VmZml4TGVuZ3RoLCBbXShVQ2hhciBjKSB7IHJldHVybiBmdW5jdGlvbihjKTsgfSk7
IFwKICAgICB9CiAKIHN0YXRpYyBib29sIGlzUnVzc2lhbkRvbWFpbk5hbWVDaGFyYWN0ZXIoVUNo
YXIgY2gpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9D
YXB0dXJlRGV2aWNlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9DYXB0dXJlRGV2aWNlTWFuYWdlci5jcHAKaW5kZXggNzUwMDU5MTc4OWM4MTNiZmRjYmUy
NWZlZWNlYTFmZjFkZDkwNmIwZC4uNmUwOTE2NjE4ZjI5NTU0MzYwZjFkOGViZTE4N2FiOGJlZGQy
NTNkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vQ2Fw
dHVyZURldmljZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL0NhcHR1cmVEZXZpY2VNYW5hZ2VyLmNwcApAQCAtMTEzLDcgKzExMyw3IEBAIHN0YXRp
YyBDYXB0dXJlRGV2aWNlTWFuYWdlcjo6T2JzZXJ2ZXJUb2tlbiBuZXh0T2JzZXJ2ZXJUb2tlbigp
CiAgICAgcmV0dXJuICsrbmV4dFRva2VuOwogfQogCi1DYXB0dXJlRGV2aWNlTWFuYWdlcjo6T2Jz
ZXJ2ZXJUb2tlbiBDYXB0dXJlRGV2aWNlTWFuYWdlcjo6YWRkQ2FwdHVyZURldmljZUNoYW5nZWRP
YnNlcnZlcihDYXB0dXJlRGV2aWNlQ2hhbmdlZENhbGxiYWNrIG9ic2VydmVyKQorQ2FwdHVyZURl
dmljZU1hbmFnZXI6Ok9ic2VydmVyVG9rZW4gQ2FwdHVyZURldmljZU1hbmFnZXI6OmFkZENhcHR1
cmVEZXZpY2VDaGFuZ2VkT2JzZXJ2ZXIoQ2FwdHVyZURldmljZUNoYW5nZWRDYWxsYmFjayYmIG9i
c2VydmVyKQogewogICAgIGF1dG8gdG9rZW4gPSBuZXh0T2JzZXJ2ZXJUb2tlbigpOwogICAgIG1f
b2JzZXJ2ZXJzLnNldCh0b2tlbiwgV1RGTW92ZShvYnNlcnZlcikpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vQ2FwdHVyZURldmljZU1hbmFnZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL0NhcHR1cmVEZXZpY2VNYW5hZ2Vy
LmgKaW5kZXggZGZmMDAyMzU5MmU0ZDE1NmFiODFjYjMxYmU4ZDE1YWQ4OGVjYTY0ZC4uZGZjNjBk
MWMyNGVkNjk5YWI2ODA1N2ZhNjU4N2U2NTFmMTUwNjljNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vQ2FwdHVyZURldmljZU1hbmFnZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9DYXB0dXJlRGV2aWNlTWFuYWdlci5o
CkBAIC0zNCw5ICszNCw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ2FwdHVyZURl
dmljZU1hbmFnZXIgewogcHVibGljOgotICAgIHVzaW5nIENhcHR1cmVEZXZpY2VDaGFuZ2VkQ2Fs
bGJhY2sgPSBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT47CisgICAgdXNpbmcgQ2FwdHVyZURldmljZUNo
YW5nZWRDYWxsYmFjayA9IFdURjo6RnVuY3Rpb248dm9pZCgpPjsKICAgICB1c2luZyBPYnNlcnZl
clRva2VuID0gdWludDMyX3Q7Ci0gICAgdmlydHVhbCBPYnNlcnZlclRva2VuIGFkZENhcHR1cmVE
ZXZpY2VDaGFuZ2VkT2JzZXJ2ZXIoQ2FwdHVyZURldmljZUNoYW5nZWRDYWxsYmFjayk7CisgICAg
dmlydHVhbCBPYnNlcnZlclRva2VuIGFkZENhcHR1cmVEZXZpY2VDaGFuZ2VkT2JzZXJ2ZXIoQ2Fw
dHVyZURldmljZUNoYW5nZWRDYWxsYmFjayYmKTsKICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlQ2Fw
dHVyZURldmljZUNoYW5nZWRPYnNlcnZlcihPYnNlcnZlclRva2VuKTsKIAogICAgIHZpcnR1YWwg
VmVjdG9yPENhcHR1cmVEZXZpY2U+JiBjYXB0dXJlRGV2aWNlcygpID0gMDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2Uu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNv
dXJjZS5jcHAKaW5kZXggMzMyNDZhMDFjZGU4NGEzNjJlMWM4NjkxNTQzNmViMjBiYzQxZTVlNy4u
YjM4NjYyNmFiOTNhYjQ0YWM0Zjg4ZDNjMjJlNWU3ZTc1MTViMmRmYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNv
dXJjZS5jcHAKQEAgLTg4Miw3ICs4ODIsNyBAQCB2b2lkIFJlYWx0aW1lTWVkaWFTb3VyY2U6OnNl
dEVjaG9DYW5jZWxsYXRpb24oYm9vbCBlY2hvQ2FuY2VsbGF0aW9uKQogICAgIHNldHRpbmdzRGlk
Q2hhbmdlKCk7CiB9CiAKLXZvaWQgUmVhbHRpbWVNZWRpYVNvdXJjZTo6c2NoZWR1bGVEZWZlcnJl
ZFRhc2soc3RkOjpmdW5jdGlvbjx2b2lkKCk+JiYgZnVuY3Rpb24pCit2b2lkIFJlYWx0aW1lTWVk
aWFTb3VyY2U6OnNjaGVkdWxlRGVmZXJyZWRUYXNrKFdURjo6RnVuY3Rpb248dm9pZCgpPiYmIGZ1
bmN0aW9uKQogewogICAgIEFTU0VSVChmdW5jdGlvbik7CiAgICAgY2FsbE9uTWFpblRocmVhZChb
d2Vha1RoaXMgPSBjcmVhdGVXZWFrUHRyKCksIGZ1bmN0aW9uID0gV1RGTW92ZShmdW5jdGlvbild
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0
aW1lTWVkaWFTb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1Jl
YWx0aW1lTWVkaWFTb3VyY2UuaAppbmRleCAwNDEwZWU1YzcyN2YzY2YyZGUwYzkyNDAyOWNmOTVl
YTI1MjFlZGY4Li40MDM5Yzk1M2RjOTVlYzM5YzdmOTA3MDliMWFkMGJkN2NiZTYwZGJkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlh
U291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRp
bWVNZWRpYVNvdXJjZS5oCkBAIC0xOTAsOCArMTkwLDggQEAgcHVibGljOgogICAgIHZpcnR1YWwg
Y29uc3QgUmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllcyYgY2FwYWJpbGl0aWVzKCkgY29u
c3QgPSAwOwogICAgIHZpcnR1YWwgY29uc3QgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzJiBz
ZXR0aW5ncygpIGNvbnN0ID0gMDsKIAotICAgIHVzaW5nIFN1Y2Nlc3NIYW5kbGVyID0gc3RkOjpm
dW5jdGlvbjx2b2lkKCk+OwotICAgIHVzaW5nIEZhaWx1cmVIYW5kbGVyID0gc3RkOjpmdW5jdGlv
bjx2b2lkKGNvbnN0IFN0cmluZyYgYmFkQ29uc3RyYWludCwgY29uc3QgU3RyaW5nJiBlcnJvclN0
cmluZyk+OworICAgIHVzaW5nIFN1Y2Nlc3NIYW5kbGVyID0gV1RGOjpGdW5jdGlvbjx2b2lkKCk+
OworICAgIHVzaW5nIEZhaWx1cmVIYW5kbGVyID0gV1RGOjpGdW5jdGlvbjx2b2lkKGNvbnN0IFN0
cmluZyYgYmFkQ29uc3RyYWludCwgY29uc3QgU3RyaW5nJiBlcnJvclN0cmluZyk+OwogICAgIHZp
cnR1YWwgdm9pZCBhcHBseUNvbnN0cmFpbnRzKGNvbnN0IE1lZGlhQ29uc3RyYWludHMmLCBTdWNj
ZXNzSGFuZGxlciYmLCBGYWlsdXJlSGFuZGxlciYmKTsKICAgICBzdGQ6Om9wdGlvbmFsPHN0ZDo6
cGFpcjxTdHJpbmcsIFN0cmluZz4+IGFwcGx5Q29uc3RyYWludHMoY29uc3QgTWVkaWFDb25zdHJh
aW50cyYpOwogCkBAIC0yMTIsNyArMjEyLDcgQEAgcHVibGljOgogcHJvdGVjdGVkOgogICAgIFJl
YWx0aW1lTWVkaWFTb3VyY2UoY29uc3QgU3RyaW5nJiBpZCwgVHlwZSwgY29uc3QgU3RyaW5nJiBu
YW1lKTsKIAotICAgIHZvaWQgc2NoZWR1bGVEZWZlcnJlZFRhc2soc3RkOjpmdW5jdGlvbjx2b2lk
KCk+JiYpOworICAgIHZvaWQgc2NoZWR1bGVEZWZlcnJlZFRhc2soV1RGOjpGdW5jdGlvbjx2b2lk
KCk+JiYpOwogCiAgICAgdmlydHVhbCB2b2lkIGJlZ2luQ29uZmlndXJhdGlvbigpIHsgfQogICAg
IHZpcnR1YWwgdm9pZCBjb21taXRDb25maWd1cmF0aW9uKCkgeyB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9pb3MvQVZBdWRpb1Nlc3Npb25DYXB0dXJl
RGV2aWNlTWFuYWdlci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2lv
cy9BVkF1ZGlvU2Vzc2lvbkNhcHR1cmVEZXZpY2VNYW5hZ2VyLm1tCmluZGV4IGNiMDA4Y2JiYjkx
YWJiNjk1YTBlNWU3NDQ0ZmE2MDhmOTQ3NDgxMmUuLjBmZGExM2YxMWUyN2Y0ZWJhNDRhYjA5ZTBl
ZDQ5ZTdlZTg0MDEzODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL2lvcy9BVkF1ZGlvU2Vzc2lvbkNhcHR1cmVEZXZpY2VNYW5hZ2VyLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2lvcy9BVkF1ZGlvU2Vzc2lvbkNhcHR1
cmVEZXZpY2VNYW5hZ2VyLm1tCkBAIC00MCwxOCArNDAsMTggQEAgU09GVF9MSU5LX0NMQVNTKEFW
Rm91bmRhdGlvbiwgQVZBdWRpb1Nlc3Npb24pCiB2b2lkKiBBdmFpbGFibGVJbnB1dHNDb250ZXh0
ID0gJkF2YWlsYWJsZUlucHV0c0NvbnRleHQ7CiAKIEBpbnRlcmZhY2UgV2ViQVZBdWRpb1Nlc3Np
b25BdmFpbGFibGVJbnB1dHNMaXN0ZW5lciA6IE5TT2JqZWN0IHsKLSAgICBzdGQ6OmZ1bmN0aW9u
PHZvaWQoKT4gX2NhbGxiYWNrOworICAgIFdURjo6RnVuY3Rpb248dm9pZCgpPiBfY2FsbGJhY2s7
CiB9CiBAZW5kCiAKIEBpbXBsZW1lbnRhdGlvbiBXZWJBVkF1ZGlvU2Vzc2lvbkF2YWlsYWJsZUlu
cHV0c0xpc3RlbmVyCi0tIChpZClpbml0V2l0aENhbGxiYWNrOihzdGQ6OmZ1bmN0aW9uPHZvaWQo
KT4pY2FsbGJhY2sKKy0gKGlkKWluaXRXaXRoQ2FsbGJhY2s6KFdURjo6RnVuY3Rpb248dm9pZCgp
PiYmKWNhbGxiYWNrCiB7CiAgICAgc2VsZiA9IFtzdXBlciBpbml0XTsKICAgICBpZiAoIXNlbGYp
CiAgICAgICAgIHJldHVybiBuaWw7CiAKLSAgICBfY2FsbGJhY2sgPSBjYWxsYmFjazsKKyAgICBf
Y2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKTsKICAgICByZXR1cm4gc2VsZjsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0NvcmVBdWRp
b0NhcHR1cmVTb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21h
Yy9Db3JlQXVkaW9DYXB0dXJlU291cmNlLmgKaW5kZXggY2UwYmRlZTE2ODI0NzEwZTczNGUwMTFm
OTI0NGRjOWQ2ZWFlNzQxNS4uOGU4OTc0MzIzMGEwM2IwYjdlYTE1YTE1NmVhNmJmMmE1MzgyMjc0
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0Nv
cmVBdWRpb0NhcHR1cmVTb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9tYWMvQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZS5oCkBAIC02MSw3ICs2MSw3IEBAIHB1
YmxpYzoKICAgICB2b2lkIGFkZEVjaG9DYW5jZWxsYXRpb25Tb3VyY2UoQXVkaW9TYW1wbGVEYXRh
U291cmNlJik7CiAgICAgdm9pZCByZW1vdmVFY2hvQ2FuY2VsbGF0aW9uU291cmNlKEF1ZGlvU2Ft
cGxlRGF0YVNvdXJjZSYpOwogCi0gICAgdXNpbmcgTWljcm9waG9uZURhdGFDYWxsYmFjayA9IHN0
ZDo6ZnVuY3Rpb248dm9pZChjb25zdCBNZWRpYVRpbWUmIHNhbXBsZVRpbWUsIGNvbnN0IFBsYXRm
b3JtQXVkaW9EYXRhJiBhdWRpb0RhdGEsIGNvbnN0IEF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mIGRl
c2NyaXB0aW9uLCBzaXplX3Qgc2FtcGxlQ291bnQpPjsKKyAgICB1c2luZyBNaWNyb3Bob25lRGF0
YUNhbGxiYWNrID0gV1RGOjpGdW5jdGlvbjx2b2lkKGNvbnN0IE1lZGlhVGltZSYgc2FtcGxlVGlt
ZSwgY29uc3QgUGxhdGZvcm1BdWRpb0RhdGEmIGF1ZGlvRGF0YSwgY29uc3QgQXVkaW9TdHJlYW1E
ZXNjcmlwdGlvbiYgZGVzY3JpcHRpb24sIHNpemVfdCBzYW1wbGVDb3VudCk+OwogCiAgICAgdWlu
dDY0X3QgYWRkTWljcm9waG9uZURhdGFDb25zdW1lcihNaWNyb3Bob25lRGF0YUNhbGxiYWNrJiYp
OwogICAgIHZvaWQgcmVtb3ZlTWljcm9waG9uZURhdGFDb25zdW1lcih1aW50NjRfdCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1Njcm9sbEFuaW1hdG9yTW9jay5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1Njcm9sbEFuaW1hdG9yTW9jay5jcHAK
aW5kZXggYzA4MDM4MTBlZGQ4ZDVjZmRkYWU0Yjc2NDkxYTM4Nzc2YjI3NmJmYi4uNTIyYWViMmFj
ZGI1Mjg5M2FhZGM2NjI0MTE3OWQyNTRlYjQ5ZjhmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbW9jay9TY3JvbGxBbmltYXRvck1vY2suY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21vY2svU2Nyb2xsQW5pbWF0b3JNb2NrLmNwcApAQCAtMzYsNyArMzYsNyBA
QAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVNjcm9sbEFuaW1hdG9yTW9jazo6U2Nyb2xsQW5p
bWF0b3JNb2NrKFNjcm9sbGFibGVBcmVhJiBzY3JvbGxhYmxlQXJlYSwgc3RkOjpmdW5jdGlvbjx2
b2lkKGNvbnN0IFN0cmluZyYpPiYmIGxvZ2dlcikKK1Njcm9sbEFuaW1hdG9yTW9jazo6U2Nyb2xs
QW5pbWF0b3JNb2NrKFNjcm9sbGFibGVBcmVhJiBzY3JvbGxhYmxlQXJlYSwgV1RGOjpGdW5jdGlv
bjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmIGxvZ2dlcikKICAgICA6IFNjcm9sbEFuaW1hdG9yKHNj
cm9sbGFibGVBcmVhKQogICAgICwgbV9sb2dnZXIoV1RGTW92ZShsb2dnZXIpKQogewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9TY3JvbGxBbmltYXRvck1vY2suaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svU2Nyb2xsQW5pbWF0b3JNb2NrLmgKaW5kZXgg
ODVkYzRmNmVkYzNlNWIzY2NlNDUzNzgzZTZlMGQzZDk1MTEyNGY3ZC4uMjMwYjlhZjMxZDA3ZmIy
ODNiNjZiMWQ5ZjI2NmI4MDFhY2ZjMzIyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbW9jay9TY3JvbGxBbmltYXRvck1vY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tb2NrL1Njcm9sbEFuaW1hdG9yTW9jay5oCkBAIC00MCw3ICs0MCw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIC8vIHRoZSBpbnRlcm5hbCBzZXR0aW5nIGVuYWJsZU1vY2tTY3JvbGxBbmlt
YXRvci4KIGNsYXNzIFNjcm9sbEFuaW1hdG9yTW9jayBmaW5hbCA6IHB1YmxpYyBTY3JvbGxBbmlt
YXRvciB7CiBwdWJsaWM6Ci0gICAgU2Nyb2xsQW5pbWF0b3JNb2NrKFNjcm9sbGFibGVBcmVhJiwg
c3RkOjpmdW5jdGlvbjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmKTsKKyAgICBTY3JvbGxBbmltYXRv
ck1vY2soU2Nyb2xsYWJsZUFyZWEmLCBXVEY6OkZ1bmN0aW9uPHZvaWQoY29uc3QgU3RyaW5nJik+
JiYpOwogICAgIHZpcnR1YWwgflNjcm9sbEFuaW1hdG9yTW9jaygpOwogCiAjaWYgRU5BQkxFKFJV
QkJFUl9CQU5ESU5HKQpAQCAtNjgsNyArNjgsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgbW91c2VF
eGl0ZWRTY3JvbGxiYXIoU2Nyb2xsYmFyKikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdm9pZCBtb3Vz
ZUlzRG93bkluU2Nyb2xsYmFyKFNjcm9sbGJhciosIGJvb2wpIGNvbnN0IG92ZXJyaWRlOwogCi0g
ICAgc3RkOjpmdW5jdGlvbjx2b2lkKGNvbnN0IFN0cmluZyYpPiBtX2xvZ2dlcjsKKyAgICBXVEY6
OkZ1bmN0aW9uPHZvaWQoY29uc3QgU3RyaW5nJik+IG1fbG9nZ2VyOwogICAgIFNjcm9sbGJhciog
bV92ZXJ0aWNhbFNjcm9sbGJhciB7IG51bGxwdHIgfTsKICAgICBTY3JvbGxiYXIqIG1faG9yaXpv
bnRhbFNjcm9sbGJhciB7IG51bGxwdHIgfTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL0Nvb2tpZVN0b3JhZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvQ29va2llU3RvcmFnZS5oCmluZGV4IGM1MDUzY2M5MDVkYjZlODFiZjZmNGU1
ZDY4ZjlmNTg4NTYwMDIzMmMuLjgxZWZjYmYwMDVlODRkNTNhNTI0YzYzZGI1MzM2YmJiNzJmYzg1
OWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQ29va2llU3Rv
cmFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQ29va2llU3RvcmFn
ZS5oCkBAIC0yNSwxMyArMjUsMTMgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlIDxmdW5j
dGlvbmFsPgorI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIGNsYXNzIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjsKIAotV0VCQ09SRV9FWFBPUlQgdm9pZCBz
dGFydE9ic2VydmluZ0Nvb2tpZUNoYW5nZXMoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwg
c3RkOjpmdW5jdGlvbjx2b2lkICgpPiYmKTsKK1dFQkNPUkVfRVhQT1JUIHZvaWQgc3RhcnRPYnNl
cnZpbmdDb29raWVDaGFuZ2VzKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIFdURjo6RnVu
Y3Rpb248dm9pZCAoKT4mJik7CiBXRUJDT1JFX0VYUE9SVCB2b2lkIHN0b3BPYnNlcnZpbmdDb29r
aWVDaGFuZ2VzKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYpOwogCiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdGF0ZU5vdGlmaWVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0YXRlTm90aWZpZXIu
Y3BwCmluZGV4IDU1NzRhMzU4MzRjYzYwMWY1ODZlZWQ3OTUyYzVhYTQ4MTE2Zjg5ZWYuLmFkMTVl
NWNmM2MzZmQxNTI2ZjdhNjQ0ODUwNDBiNWQ5OTgyYzkzMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0YXRlTm90aWZpZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0YXRlTm90aWZpZXIuY3BwCkBA
IC00OCw3ICs0OCw3IEBAIE5ldHdvcmtTdGF0ZU5vdGlmaWVyJiBuZXR3b3JrU3RhdGVOb3RpZmll
cigpCiAgICAgcmV0dXJuIG5ldHdvcmtTdGF0ZU5vdGlmaWVyOwogfQogCi12b2lkIE5ldHdvcmtT
dGF0ZU5vdGlmaWVyOjphZGROZXR3b3JrU3RhdGVDaGFuZ2VMaXN0ZW5lcihzdGQ6OmZ1bmN0aW9u
PHZvaWQgKGJvb2wpPiBsaXN0ZW5lcikKK3ZvaWQgTmV0d29ya1N0YXRlTm90aWZpZXI6OmFkZE5l
dHdvcmtTdGF0ZUNoYW5nZUxpc3RlbmVyKFdURjo6RnVuY3Rpb248dm9pZCAoYm9vbCk+JiYgbGlz
dGVuZXIpCiB7CiAgICAgQVNTRVJUKGxpc3RlbmVyKTsKICNpZiBQTEFURk9STShJT1MpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdGF0ZU5vdGlm
aWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdGF0ZU5vdGlm
aWVyLmgKaW5kZXggNTI4MmVjMDY2YWJiYTIzNzE3NjhhODRhZDlhMmE1MjA2MGJkMzQyZi4uYzNh
NDI5MDNjZDBiODljYTYyYTFiMTg1MjYxM2VlZDBhZTg2YTE4MSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RhdGVOb3RpZmllci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0YXRlTm90aWZpZXIuaApAQCAt
MjYsOCArMjYsOCBAQAogI2lmbmRlZiBOZXR3b3JrU3RhdGVOb3RpZmllcl9oCiAjZGVmaW5lIE5l
dHdvcmtTdGF0ZU5vdGlmaWVyX2gKIAotI2luY2x1ZGUgPGZ1bmN0aW9uYWw+CiAjaW5jbHVkZSA8
d3RmL0Zhc3RNYWxsb2MuaD4KKyNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KICNpbmNsdWRlIDx3
dGYvTm9uY29weWFibGUuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKQEAgLTU5LDcgKzU5
LDcgQEAgcHVibGljOgogI2lmIFBMQVRGT1JNKElPUykKICAgICB+TmV0d29ya1N0YXRlTm90aWZp
ZXIoKTsKICNlbmRpZgotICAgIHZvaWQgYWRkTmV0d29ya1N0YXRlQ2hhbmdlTGlzdGVuZXIoc3Rk
OjpmdW5jdGlvbjx2b2lkIChib29sIGlzT25MaW5lKT4pOworICAgIHZvaWQgYWRkTmV0d29ya1N0
YXRlQ2hhbmdlTGlzdGVuZXIoV1RGOjpGdW5jdGlvbjx2b2lkIChib29sIGlzT25MaW5lKT4mJik7
CiAKICAgICBib29sIG9uTGluZSgpIGNvbnN0OwogCkBAIC02Nyw3ICs2Nyw3IEBAIHByaXZhdGU6
CiAjaWYgIVBMQVRGT1JNKElPUykKICAgICBib29sIG1faXNPbkxpbmU7CiAjZW5kaWYKLSAgICBW
ZWN0b3I8c3RkOjpmdW5jdGlvbjx2b2lkIChib29sKT4+IG1fbGlzdGVuZXJzOworICAgIFZlY3Rv
cjxXVEY6OkZ1bmN0aW9uPHZvaWQgKGJvb2wpPj4gbV9saXN0ZW5lcnM7CiAKICAgICB2b2lkIG5v
dGlmeU5ldHdvcmtTdGF0ZUNoYW5nZSgpIGNvbnN0OwogICAgIHZvaWQgdXBkYXRlU3RhdGUoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0
b3JhZ2VTZXNzaW9uLmNwcAppbmRleCA1NWJlOWNjZjQyYTZmYzExZDE1NjdiYzA3YzRmOTE0NGFj
ZjYzYmYzLi45OGRhMDgyYWVlNjM0Nzg5NzBiY2UwOTM5NTZmMzNjMTk4YTU2NTEwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lv
bi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFn
ZVNlc3Npb24uY3BwCkBAIC01MCw3ICs1MCw3IEBAIHZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9u
OjpkZXN0cm95U2Vzc2lvbihTZXNzaW9uSUQgc2Vzc2lvbklEKQogICAgIGdsb2JhbFNlc3Npb25N
YXAoKS5yZW1vdmUoc2Vzc2lvbklEKTsKIH0KIAotdm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246
OmZvckVhY2goc3RkOjpmdW5jdGlvbjx2b2lkKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdl
U2Vzc2lvbiYpPiBmdW5jdG9yKQordm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmZvckVhY2go
Y29uc3QgV1RGOjpGdW5jdGlvbjx2b2lkKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vz
c2lvbiYpPiYgZnVuY3RvcikKIHsKICAgICBmdW5jdG9yKGRlZmF1bHRTdG9yYWdlU2Vzc2lvbigp
KTsKICAgICBmb3IgKGF1dG8mIHN0b3JhZ2VTZXNzaW9uIDogZ2xvYmFsU2Vzc2lvbk1hcCgpLnZh
bHVlcygpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3
b3JrU3RvcmFnZVNlc3Npb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0
d29ya1N0b3JhZ2VTZXNzaW9uLmgKaW5kZXggYjA5NzZkOTc1MjA2Mjg4ZTcxNGRiYzBmY2NiNTY0
NmIzMzc1ODkxNS4uMjg1NWNiNzlkMjE2YTZjZTRmZDg4ZWRhNTM5NDMyM2JjODc0NTdkMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNl
c3Npb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9y
YWdlU2Vzc2lvbi5oCkBAIC0yNyw3ICsyNyw3IEBACiAKICNpbmNsdWRlICJDcmVkZW50aWFsU3Rv
cmFnZS5oIgogI2luY2x1ZGUgIlNlc3Npb25JRC5oIgotI2luY2x1ZGUgPGZ1bmN0aW9uYWw+Cisj
aW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNs
dWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApAQCAtNjIsNyArNjIsNyBAQCBwdWJsaWM6CiAg
ICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQgZW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lv
bihTZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgaWRlbnRpZmllckJhc2UgPSBTdHJpbmcoKSk7CiAg
ICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQgZW5zdXJlU2Vzc2lvbihTZXNzaW9uSUQsIGNv
bnN0IFN0cmluZyYgaWRlbnRpZmllckJhc2UgPSBTdHJpbmcoKSk7CiAgICAgV0VCQ09SRV9FWFBP
UlQgc3RhdGljIHZvaWQgZGVzdHJveVNlc3Npb24oU2Vzc2lvbklEKTsKLSAgICBXRUJDT1JFX0VY
UE9SVCBzdGF0aWMgdm9pZCBmb3JFYWNoKHN0ZDo6ZnVuY3Rpb248dm9pZChjb25zdCBXZWJDb3Jl
OjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mKT4pOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2
b2lkIGZvckVhY2goY29uc3QgV1RGOjpGdW5jdGlvbjx2b2lkKGNvbnN0IFdlYkNvcmU6Ok5ldHdv
cmtTdG9yYWdlU2Vzc2lvbiYpPiYpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQg
c3dpdGNoVG9OZXdUZXN0aW5nU2Vzc2lvbigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0Nvb2tpZVN0b3JhZ2VDRk5ldC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0Nvb2tpZVN0b3JhZ2VDRk5ldC5jcHAKaW5kZXggNjE5
YjA3ODkwOWQzMWJkNDRjMTNjY2ZjOTMyYTNjZGRkYmM4Y2E1My4uZjNjZTIzOGY1ZWU5NTQyYjIy
YjlmZDkxYzdlN2RjOTRlNWNkMjgwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jZi9Db29raWVTdG9yYWdlQ0ZOZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY2YvQ29va2llU3RvcmFnZUNGTmV0LmNwcApAQCAtMjcsNiArMjcs
NyBAQAogI2luY2x1ZGUgIkNvb2tpZVN0b3JhZ2UuaCIKIAogI2luY2x1ZGUgIk5ldHdvcmtTdG9y
YWdlU2Vzc2lvbi5oIgorI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgogI2luY2x1ZGUgPHd0Zi9I
YXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KICNpbmNsdWRlIDx3dGYvTmV2
ZXJEZXN0cm95ZWQuaD4KQEAgLTQzLDkgKzQ0LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAj
aWYgUExBVEZPUk0oV0lOKQogCi1zdGF0aWMgSGFzaE1hcDxDRkhUVFBDb29raWVTdG9yYWdlUmVm
LCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+PiYgY29va2llQ2hhbmdlQ2FsbGJhY2tNYXAoKQorc3Rh
dGljIEhhc2hNYXA8Q0ZIVFRQQ29va2llU3RvcmFnZVJlZiwgV1RGOjpGdW5jdGlvbjx2b2lkICgp
Pj4mIGNvb2tpZUNoYW5nZUNhbGxiYWNrTWFwKCkKIHsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95
ZWQ8SGFzaE1hcDxDRkhUVFBDb29raWVTdG9yYWdlUmVmLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+
Pj4gbWFwOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoTWFwPENGSFRUUENvb2tpZVN0
b3JhZ2VSZWYsIFdURjo6RnVuY3Rpb248dm9pZCAoKT4+PiBtYXA7CiAgICAgcmV0dXJuIG1hcDsK
IH0KIApAQCAtNjgsNyArNjksNyBAQCBzdGF0aWMgaW5saW5lIENGUnVuTG9vcFJlZiBjb29raWVT
dG9yYWdlT2JzZXJ2ZXJSdW5Mb29wKCkKICAgICByZXR1cm4gbG9hZGVyUnVuTG9vcCgpOwogfQog
Ci12b2lkIHN0YXJ0T2JzZXJ2aW5nQ29va2llQ2hhbmdlcyhjb25zdCBOZXR3b3JrU3RvcmFnZVNl
c3Npb24mIHN0b3JhZ2VTZXNzaW9uLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+JiYgY2FsbGJhY2sp
Cit2b2lkIHN0YXJ0T2JzZXJ2aW5nQ29va2llQ2hhbmdlcyhjb25zdCBOZXR3b3JrU3RvcmFnZVNl
c3Npb24mIHN0b3JhZ2VTZXNzaW9uLCBXVEY6OkZ1bmN0aW9uPHZvaWQgKCk+JiYgY2FsbGJhY2sp
CiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsQ0ZOZXQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Tb2NrZXRTdHJlYW1IYW5kbGVJ
bXBsQ0ZOZXQuY3BwCmluZGV4IGVkNDEwOWFlNmQ3Njk4MDExZTM0ZTI1MmQyNjRmNjgxOTExOWM5
ZmEuLjQxNzY4MDA4ZDgzMTVjY2U5Y2FkNmM0NjJhNDBkNGQzMjFjY2ZlNGQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvU29ja2V0U3RyZWFtSGFuZGxlSW1w
bENGTmV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1NvY2tl
dFN0cmVhbUhhbmRsZUltcGxDRk5ldC5jcHAKQEAgLTE0NCw3ICsxNDQsNyBAQCBDRlN0cmluZ1Jl
ZiBTb2NrZXRTdHJlYW1IYW5kbGVJbXBsOjpjb3B5UEFDRXhlY3V0aW9uRGVzY3JpcHRpb24odm9p
ZCopCiAgICAgcmV0dXJuIENGU1RSKCJXZWJTb2NrZXQgcHJveHkgUEFDIGZpbGUgZXhlY3V0aW9u
Iik7CiB9CiAKLXN0YXRpYyB2b2lkIGNhbGxPbk1haW5UaHJlYWRBbmRXYWl0KHN0ZDo6ZnVuY3Rp
b248dm9pZCgpPiBmdW5jdGlvbikKK3N0YXRpYyB2b2lkIGNhbGxPbk1haW5UaHJlYWRBbmRXYWl0
KFdURjo6RnVuY3Rpb248dm9pZCgpPiYmIGZ1bmN0aW9uKQogewogICAgIGlmIChpc01haW5UaHJl
YWQoKSkgewogICAgICAgICBmdW5jdGlvbigpOwpAQCAtMTU2LDcgKzE1Niw3IEBAIHN0YXRpYyB2
b2lkIGNhbGxPbk1haW5UaHJlYWRBbmRXYWl0KHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiBmdW5jdGlv
bikKIAogICAgIGJvb2wgaXNGaW5pc2hlZCA9IGZhbHNlOwogCi0gICAgY2FsbE9uTWFpblRocmVh
ZChbJl0geworICAgIGNhbGxPbk1haW5UaHJlYWQoWyYsIGZ1bmN0aW9uID0gV1RGTW92ZShmdW5j
dGlvbildIHsKICAgICAgICAgZnVuY3Rpb24oKTsKIAogICAgICAgICBzdGQ6OmxvY2tfZ3VhcmQ8
TG9jaz4gbG9jayhtdXRleCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL21hYy9Db29raWVTdG9yYWdlTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9tYWMvQ29va2llU3RvcmFnZU1hYy5tbQppbmRleCBlNzgyYjA2NmU0ZWE5Njg1YTQ4
YWRiNzllODFlMDM4NTA5ZGM0NmNiLi5lMTRlM2QxNDBmYjFkNTcyNWEyZTc2ZmM1NGU5OWRiY2Q5
MTYzNGI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9D
b29raWVTdG9yYWdlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
bWFjL0Nvb2tpZVN0b3JhZ2VNYWMubW0KQEAgLTIzLDE5ICsyMywyMCBAQAogICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4gCiAgKi8KIAotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkNvb2tpZVN0b3JhZ2Uu
aCIKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiQ29va2llU3RvcmFnZS5oIgogCiAjaW1w
b3J0ICJXZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmgiCisjaW1wb3J0IDx3dGYvRnVuY3Rpb24uaD4K
IAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIEBpbnRlcmZhY2UgV2ViQ29va2llU3RvcmFn
ZU9iakNBZGFwdGVyIDogTlNPYmplY3QgewotICAgIHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4gbV9j
b29raWVDaGFuZ2VDYWxsYmFjazsKKyAgICBXVEY6OkZ1bmN0aW9uPHZvaWQgKCk+IG1fY29va2ll
Q2hhbmdlQ2FsbGJhY2s7CiB9CiAtKHZvaWQpbm90aWZ5Q29va2llc0NoYW5nZWRPbk1haW5UaHJl
YWQ7CiAtKHZvaWQpY29va2llc0NoYW5nZWROb3RpZmljYXRpb25IYW5kbGVyOihOU05vdGlmaWNh
dGlvbiAqKW5vdGlmaWNhdGlvbjsKLS0odm9pZClzdGFydExpc3RlbmluZ0ZvckNvb2tpZUNoYW5n
ZU5vdGlmaWNhdGlvbnNXaXRoQ2FsbGJhY2s6KHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4mJiljYWxs
YmFjazsKKy0odm9pZClzdGFydExpc3RlbmluZ0ZvckNvb2tpZUNoYW5nZU5vdGlmaWNhdGlvbnNX
aXRoQ2FsbGJhY2s6KFdURjo6RnVuY3Rpb248dm9pZCAoKT4mJiljYWxsYmFjazsKIC0odm9pZClz
dG9wTGlzdGVuaW5nRm9yQ29va2llQ2hhbmdlTm90aWZpY2F0aW9uczsKIEBlbmQKIApAQCAtNTMs
NyArNTQsNyBAQCAtKHZvaWQpY29va2llc0NoYW5nZWROb3RpZmljYXRpb25IYW5kbGVyOihOU05v
dGlmaWNhdGlvbiAqKW5vdGlmaWNhdGlvbgogICAgIFtzZWxmIHBlcmZvcm1TZWxlY3Rvck9uTWFp
blRocmVhZDpAc2VsZWN0b3Iobm90aWZ5Q29va2llc0NoYW5nZWRPbk1haW5UaHJlYWQpIHdpdGhP
YmplY3Q6bmlsIHdhaXRVbnRpbERvbmU6RkFMU0VdOwogfQogCi0tKHZvaWQpc3RhcnRMaXN0ZW5p
bmdGb3JDb29raWVDaGFuZ2VOb3RpZmljYXRpb25zV2l0aENhbGxiYWNrOihzdGQ6OmZ1bmN0aW9u
PHZvaWQgKCk+JiYpY2FsbGJhY2sKKy0odm9pZClzdGFydExpc3RlbmluZ0ZvckNvb2tpZUNoYW5n
ZU5vdGlmaWNhdGlvbnNXaXRoQ2FsbGJhY2s6KFdURjo6RnVuY3Rpb248dm9pZCAoKT4mJiljYWxs
YmFjawogewogICAgIEFTU0VSVCghbV9jb29raWVDaGFuZ2VDYWxsYmFjayk7CiAgICAgbV9jb29r
aWVDaGFuZ2VDYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spOwpAQCAtNzIsNyArNzMsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRpYyBXZWJDb29raWVTdG9yYWdlT2JqQ0FkYXB0ZXIg
KmNvb2tpZVN0b3JhZ2VBZGFwdGVyOwogCi12b2lkIHN0YXJ0T2JzZXJ2aW5nQ29va2llQ2hhbmdl
cyhjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+JiYg
Y2FsbGJhY2spCit2b2lkIHN0YXJ0T2JzZXJ2aW5nQ29va2llQ2hhbmdlcyhjb25zdCBOZXR3b3Jr
U3RvcmFnZVNlc3Npb24mLCBXVEY6OkZ1bmN0aW9uPHZvaWQgKCk+JiYgY2FsbGJhY2spCiB7CiAg
ICAgaWYgKCFjb29raWVTdG9yYWdlQWRhcHRlcikKICAgICAgICAgY29va2llU3RvcmFnZUFkYXB0
ZXIgPSBbW1dlYkNvb2tpZVN0b3JhZ2VPYmpDQWRhcHRlciBhbGxvY10gaW5pdF07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvQ29va2llU3RvcmFnZVNv
dXAuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0Nvb2tpZVN0b3Jh
Z2VTb3VwLmNwcAppbmRleCBlYTZhNmIyOTI3ODA5MzViMTgzZGFjNmYxNDFkOTY5ZjNkNTMxYTBk
Li40NWQ3YTkxMzA5M2EzZDVmZDk2OTAyNzY3NzFmYTQwNGFjZjQwM2U0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvQ29va2llU3RvcmFnZVNvdXAuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Db29raWVTdG9yYWdl
U291cC5jcHAKQEAgLTIzLDcgKzIzLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi12b2lk
IHN0YXJ0T2JzZXJ2aW5nQ29va2llQ2hhbmdlcyhjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24m
LCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+JiYpCit2b2lkIHN0YXJ0T2JzZXJ2aW5nQ29va2llQ2hh
bmdlcyhjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBXVEY6OkZ1bmN0aW9uPHZvaWQgKCk+
JiYpCiB7CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU291cE5ldHdvcmtTZXNzaW9uLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb3VwTmV0d29ya1Nlc3Npb24uY3Bw
CmluZGV4IDdjMTdlNjA0ZTc4YmI5NWI0ZGZhNDAwN2YwMTI2ZGUxMjliYWYzNGEuLmEzZDg0ODA4
NDhlMzkxYWY4MjAyMTA0ZjM2Y2FlOWM0ZGI1YjkxM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb3VwTmV0d29ya1Nlc3Npb24uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb3VwTmV0d29ya1Nlc3Npb24uY3Bw
CkBAIC0yOTMsNyArMjkzLDcgQEAgdm9pZCBTb3VwTmV0d29ya1Nlc3Npb246OnNldFNob3VsZEln
bm9yZVRMU0Vycm9ycyhib29sIGlnbm9yZVRMU0Vycm9ycykKICAgICBnSWdub3JlVExTRXJyb3Jz
ID0gaWdub3JlVExTRXJyb3JzOwogfQogCi12b2lkIFNvdXBOZXR3b3JrU2Vzc2lvbjo6Y2hlY2tU
TFNFcnJvcnMoU291cFJlcXVlc3QqIHNvdXBSZXF1ZXN0LCBTb3VwTWVzc2FnZSogbWVzc2FnZSwg
c3RkOjpmdW5jdGlvbjx2b2lkIChjb25zdCBSZXNvdXJjZUVycm9yJik+JiYgY29tcGxldGlvbkhh
bmRsZXIpCit2b2lkIFNvdXBOZXR3b3JrU2Vzc2lvbjo6Y2hlY2tUTFNFcnJvcnMoU291cFJlcXVl
c3QqIHNvdXBSZXF1ZXN0LCBTb3VwTWVzc2FnZSogbWVzc2FnZSwgV1RGOjpGdW5jdGlvbjx2b2lk
IChjb25zdCBSZXNvdXJjZUVycm9yJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYg
KGdJZ25vcmVUTFNFcnJvcnMpIHsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9KTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb3VwTmV0d29y
a1Nlc3Npb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb3VwTmV0
d29ya1Nlc3Npb24uaAppbmRleCA5MDhiNmNiNmQ1ZTU0NmU4MjFmNmU3NDg5OGJlOGViZjFhZDk2
YjQwLi5jZDgxMGYxMjE1NzY5MWM3Y2VlYjI2ZDM3N2YxMTY4YWQyZGYzY2Q5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU291cE5ldHdvcmtTZXNzaW9u
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvdXBOZXR3b3Jr
U2Vzc2lvbi5oCkBAIC0yNiw4ICsyNiw4IEBACiAjaWZuZGVmIFNvdXBOZXR3b3JrU2Vzc2lvbl9o
CiAjZGVmaW5lIFNvdXBOZXR3b3JrU2Vzc2lvbl9oCiAKLSNpbmNsdWRlIDxmdW5jdGlvbmFsPgog
I2luY2x1ZGUgPGdsaWItb2JqZWN0Lmg+CisjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+CiAjaW5j
bHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1
ZGUgPHd0Zi9nbGliL0dSZWZQdHIuaD4KQEAgLTY1LDcgKzY1LDcgQEAgcHVibGljOgogICAgIHZv
aWQgc2V0QWNjZXB0TGFuZ3VhZ2VzKGNvbnN0IENTdHJpbmcmKTsKIAogICAgIHN0YXRpYyB2b2lk
IHNldFNob3VsZElnbm9yZVRMU0Vycm9ycyhib29sKTsKLSAgICBzdGF0aWMgdm9pZCBjaGVja1RM
U0Vycm9ycyhTb3VwUmVxdWVzdCosIFNvdXBNZXNzYWdlKiwgc3RkOjpmdW5jdGlvbjx2b2lkIChj
b25zdCBSZXNvdXJjZUVycm9yJik+JiYpOworICAgIHN0YXRpYyB2b2lkIGNoZWNrVExTRXJyb3Jz
KFNvdXBSZXF1ZXN0KiwgU291cE1lc3NhZ2UqLCBXVEY6OkZ1bmN0aW9uPHZvaWQgKGNvbnN0IFJl
c291cmNlRXJyb3ImKT4mJik7CiAgICAgc3RhdGljIHZvaWQgYWxsb3dTcGVjaWZpY0hUVFBTQ2Vy
dGlmaWNhdGVGb3JIb3N0KGNvbnN0IENlcnRpZmljYXRlSW5mbyYsIGNvbnN0IFN0cmluZyYgaG9z
dCk7CiAKICAgICBzdGF0aWMgdm9pZCBzZXRDdXN0b21Qcm90b2NvbFJlcXVlc3RUeXBlKEdUeXBl
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFz
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2UuY3BwCmlu
ZGV4IDg2YzRkN2E4Mjk0ZjliYjk5Mjg3Nzk0MjY1YjZjY2FiNjI0M2Q1ZTkuLjc1NWRlNzlmNTEx
Njk5ODY4NzQzNDA3ZmJhZmZmMmRmMWRiODQ4ODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlLmNwcApAQCAtNTE2LDE5ICs1MTYsMTkgQEAgYm9vbCBT
UUxpdGVEYXRhYmFzZTo6dHVybk9uSW5jcmVtZW50YWxBdXRvVmFjdXVtKCkKIAogc3RhdGljIHZv
aWQgZGVzdHJveUNvbGxhdGlvbkZ1bmN0aW9uKHZvaWQqIGFyZykKIHsKLSAgICBhdXRvIGYgPSBz
dGF0aWNfY2FzdDxzdGQ6OmZ1bmN0aW9uPGludChpbnQsIGNvbnN0IHZvaWQqLCBpbnQsIGNvbnN0
IHZvaWQqKT4qPihhcmcpOworICAgIGF1dG8gZiA9IHN0YXRpY19jYXN0PFdURjo6RnVuY3Rpb248
aW50KGludCwgY29uc3Qgdm9pZCosIGludCwgY29uc3Qgdm9pZCopPio+KGFyZyk7CiAgICAgZGVs
ZXRlIGY7CiB9CiAKIHN0YXRpYyBpbnQgY2FsbENvbGxhdGlvbkZ1bmN0aW9uKHZvaWQqIGFyZywg
aW50IGFMZW5ndGgsIGNvbnN0IHZvaWQqIGEsIGludCBiTGVuZ3RoLCBjb25zdCB2b2lkKiBiKQog
ewotICAgIGF1dG8gZiA9IHN0YXRpY19jYXN0PHN0ZDo6ZnVuY3Rpb248aW50KGludCwgY29uc3Qg
dm9pZCosIGludCwgY29uc3Qgdm9pZCopPio+KGFyZyk7CisgICAgYXV0byBmID0gc3RhdGljX2Nh
c3Q8V1RGOjpGdW5jdGlvbjxpbnQoaW50LCBjb25zdCB2b2lkKiwgaW50LCBjb25zdCB2b2lkKik+
Kj4oYXJnKTsKICAgICByZXR1cm4gKCpmKShhTGVuZ3RoLCBhLCBiTGVuZ3RoLCBiKTsKIH0KIAot
dm9pZCBTUUxpdGVEYXRhYmFzZTo6c2V0Q29sbGF0aW9uRnVuY3Rpb24oY29uc3QgU3RyaW5nJiBj
b2xsYXRpb25OYW1lLCBzdGQ6OmZ1bmN0aW9uPGludChpbnQsIGNvbnN0IHZvaWQqLCBpbnQsIGNv
bnN0IHZvaWQqKT4gY29sbGF0aW9uRnVuY3Rpb24pCit2b2lkIFNRTGl0ZURhdGFiYXNlOjpzZXRD
b2xsYXRpb25GdW5jdGlvbihjb25zdCBTdHJpbmcmIGNvbGxhdGlvbk5hbWUsIFdURjo6RnVuY3Rp
b248aW50KGludCwgY29uc3Qgdm9pZCosIGludCwgY29uc3Qgdm9pZCopPiYmIGNvbGxhdGlvbkZ1
bmN0aW9uKQogewotICAgIGF1dG8gZnVuY3Rpb25PYmplY3QgPSBuZXcgc3RkOjpmdW5jdGlvbjxp
bnQoaW50LCBjb25zdCB2b2lkKiwgaW50LCBjb25zdCB2b2lkKik+KGNvbGxhdGlvbkZ1bmN0aW9u
KTsKKyAgICBhdXRvIGZ1bmN0aW9uT2JqZWN0ID0gbmV3IFdURjo6RnVuY3Rpb248aW50KGludCwg
Y29uc3Qgdm9pZCosIGludCwgY29uc3Qgdm9pZCopPihXVEZNb3ZlKGNvbGxhdGlvbkZ1bmN0aW9u
KSk7CiAgICAgc3FsaXRlM19jcmVhdGVfY29sbGF0aW9uX3YyKG1fZGIsIGNvbGxhdGlvbk5hbWUu
dXRmOCgpLmRhdGEoKSwgU1FMSVRFX1VURjgsIGZ1bmN0aW9uT2JqZWN0LCBjYWxsQ29sbGF0aW9u
RnVuY3Rpb24sIGRlc3Ryb3lDb2xsYXRpb25GdW5jdGlvbik7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlLmgKaW5kZXggZWU5YmEyYmUxZTI1MDQ1Zjlj
M2E2MTVlNjZlNzdiZmY3NTNjNDI4OC4uMzRkYjY5NGNjMzNjZjJlMDYxNWY4YzY2ZTE1YjFjMTlj
YzkxYjk5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURh
dGFiYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNl
LmgKQEAgLTEyNSw3ICsxMjUsNyBAQCBwdWJsaWM6CiAgICAgZW51bSBBdXRvVmFjdXVtUHJhZ21h
IHsgQXV0b1ZhY3V1bU5vbmUgPSAwLCBBdXRvVmFjdXVtRnVsbCA9IDEsIEF1dG9WYWN1dW1JbmNy
ZW1lbnRhbCA9IDIgfTsKICAgICBib29sIHR1cm5PbkluY3JlbWVudGFsQXV0b1ZhY3V1bSgpOwog
Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRDb2xsYXRpb25GdW5jdGlvbihjb25zdCBTdHJp
bmcmIGNvbGxhdGlvbk5hbWUsIHN0ZDo6ZnVuY3Rpb248aW50KGludCwgY29uc3Qgdm9pZCosIGlu
dCwgY29uc3Qgdm9pZCopPik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRDb2xsYXRpb25G
dW5jdGlvbihjb25zdCBTdHJpbmcmIGNvbGxhdGlvbk5hbWUsIFdURjo6RnVuY3Rpb248aW50KGlu
dCwgY29uc3Qgdm9pZCosIGludCwgY29uc3Qgdm9pZCopPiYmKTsKICAgICB2b2lkIHJlbW92ZUNv
bGxhdGlvbkZ1bmN0aW9uKGNvbnN0IFN0cmluZyYgY29sbGF0aW9uTmFtZSk7CiAKICAgICAvLyBT
ZXQgdGhpcyBmbGFnIHRvIGFsbG93IGFjY2VzcyBmcm9tIG11bHRpcGxlIHRocmVhZHMuICBOb3Qg
YWxsIG11bHRpLXRocmVhZGVkIGFjY2Vzc2VzIGFyZSBzYWZlIQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcAppbmRleCA0NmJhZWQxMDM0YjI0ZTYz
YjU4ZTM5NzY0ZDk3MzcxYTdhNGY5MjkzLi4yOThiZTAyZDhkMWViZjczZDc0MjlhYTE3ZWM4ZWEw
YzYwYWRmMjNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5
ZXJCYWNraW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJC
YWNraW5nLmNwcApAQCAtMjA4OSw3ICsyMDg5LDcgQEAgYm9vbCBSZW5kZXJMYXllckJhY2tpbmc6
OmlzU2ltcGxlQ29udGFpbmVyQ29tcG9zaXRpbmdMYXllcihQYWludGVkQ29udGVudHNJbmZvJgog
Ly8gUmV0dXJuaW5nIHRydWUgc3RvcHMgdGhlIHRyYXZlcnNhbC4KIGVudW0gY2xhc3MgTGF5ZXJU
cmF2ZXJzYWwgeyBDb250aW51ZSwgU3RvcCB9OwogCi1zdGF0aWMgTGF5ZXJUcmF2ZXJzYWwgdHJh
dmVyc2VWaXNpYmxlTm9uQ29tcG9zaXRlZERlc2NlbmRhbnRMYXllcnMoUmVuZGVyTGF5ZXImIHBh
cmVudCwgc3RkOjpmdW5jdGlvbjxMYXllclRyYXZlcnNhbCAoY29uc3QgUmVuZGVyTGF5ZXImKT4g
bGF5ZXJGdW5jKQorc3RhdGljIExheWVyVHJhdmVyc2FsIHRyYXZlcnNlVmlzaWJsZU5vbkNvbXBv
c2l0ZWREZXNjZW5kYW50TGF5ZXJzKFJlbmRlckxheWVyJiBwYXJlbnQsIGNvbnN0IFdURjo6RnVu
Y3Rpb248TGF5ZXJUcmF2ZXJzYWwgKGNvbnN0IFJlbmRlckxheWVyJik+JiBsYXllckZ1bmMpCiB7
CiAgICAgLy8gRklYTUU6IFdlIHNob3VsZG4ndCBiZSBjYWxsZWQgd2l0aCBhIHN0YWxlIHotb3Jk
ZXIgbGlzdHMuIFNlZSBidWcgODU1MTIuCiAgICAgcGFyZW50LnVwZGF0ZUxheWVyTGlzdHNJZk5l
ZWRlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RC
b3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guY3BwCmluZGV4
IGNjYTQ3NDg2NDIxOGYwYjc4MzQ5OWE5N2UzNDRlZDk0YWM5Y2M4ZTUuLjM1YThkNjRhYmE4M2Mx
ZmYyYjgyYjhmN2JlMzIxM2ExYTRhNzdkOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTGlzdEJveC5jcHAKQEAgLTI4Niw3ICsyODYsNyBAQCBMYXlvdXRSZWN0IFJlbmRlckxp
c3RCb3g6Oml0ZW1Cb3VuZGluZ0JveFJlY3QoY29uc3QgTGF5b3V0UG9pbnQmIGFkZGl0aW9uYWxP
ZmZzZQogICAgIHJldHVybiBMYXlvdXRSZWN0KHgsIHksIGNvbnRlbnRXaWR0aCgpLCBpdGVtSGVp
Z2h0KCkpOwogfQogCi12b2lkIFJlbmRlckxpc3RCb3g6OnBhaW50SXRlbShQYWludEluZm8mIHBh
aW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0LCBQYWludEZ1bmN0aW9uIHBh
aW50RnVuY3Rpb24pCit2b2lkIFJlbmRlckxpc3RCb3g6OnBhaW50SXRlbShQYWludEluZm8mIHBh
aW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0LCBjb25zdCBQYWludEZ1bmN0
aW9uJiBwYWludEZ1bmN0aW9uKQogewogICAgIGludCBsaXN0SXRlbXNTaXplID0gbnVtSXRlbXMo
KTsKICAgICBpbnQgZmlyc3RWaXNpYmxlSXRlbSA9IG1faW5kZXhPZkZpcnN0VmlzaWJsZUl0ZW1J
bnNpZGVQYWRkaW5nVG9wQXJlYS52YWx1ZV9vcihtX2luZGV4T2Zmc2V0KTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmggYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5oCmluZGV4IGIxNjU0ZGZiNjMzYzgyZWE5MTI0ZDMx
M2M0YmViZGU4ZTA3NDdiYTIuLjI0ODk4Y2RkYjQ3NjQ2ODI5MjFiOGFkZmQ2ZTBkNjJmYzljZTEz
NGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guaApAQCAtMTQzLDgg
KzE0Myw4IEBAIHByaXZhdGU6CiAgICAgLy8gTk9URTogVGhpcyBzaG91bGQgb25seSBiZSBjYWxs
ZWQgYnkgdGhlIG92ZXJyaWRlbiBzZXRTY3JvbGxPZmZzZXQgZnJvbSBTY3JvbGxhYmxlQXJlYS4K
ICAgICB2b2lkIHNjcm9sbFRvKGludCBuZXdPZmZzZXQpOwogCi0gICAgdXNpbmcgUGFpbnRGdW5j
dGlvbiA9IHN0ZDo6ZnVuY3Rpb248dm9pZChQYWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYs
IGludCBsaXN0SXRlbUluZGV4KT47Ci0gICAgdm9pZCBwYWludEl0ZW0oUGFpbnRJbmZvJiwgY29u
c3QgTGF5b3V0UG9pbnQmLCBQYWludEZ1bmN0aW9uKTsKKyAgICB1c2luZyBQYWludEZ1bmN0aW9u
ID0gV1RGOjpGdW5jdGlvbjx2b2lkKFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50JiwgaW50
IGxpc3RJdGVtSW5kZXgpPjsKKyAgICB2b2lkIHBhaW50SXRlbShQYWludEluZm8mLCBjb25zdCBM
YXlvdXRQb2ludCYsIGNvbnN0IFBhaW50RnVuY3Rpb24mKTsKIAogICAgIHZvaWQgc2V0SGFzVmVy
dGljYWxTY3JvbGxiYXIoYm9vbCBoYXNTY3JvbGxiYXIpOwogICAgIFJlZjxTY3JvbGxiYXI+IGNy
ZWF0ZVNjcm9sbGJhcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2xp
bmUvQnJlYWtpbmdDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbGluZS9CcmVh
a2luZ0NvbnRleHQuaAppbmRleCAxMjZmZDNkNGVjZjk5ZDA0MzRiYTcxMzJhNTc5YmY0NTE4ZmRi
OGExLi4yZDgzZjA3N2ExYmNiNjE2YzY5MmMwNTVjNzdiODdmNGYxYzc1ZjBmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbGluZS9CcmVha2luZ0NvbnRleHQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbGluZS9CcmVha2luZ0NvbnRleHQuaApAQCAtMzgsNiAr
MzgsNyBAQAogI2luY2x1ZGUgIlJlbmRlclJ1YnlSdW4uaCIKICNpbmNsdWRlICJSZW5kZXJTVkdJ
bmxpbmVUZXh0LmgiCiAjaW5jbHVkZSAiVHJhaWxpbmdPYmplY3RzLmgiCisjaW5jbHVkZSA8d3Rm
L0Z1bmN0aW9uLmg+CiAjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CiAjaW5jbHVkZSA8d3RmL3Rl
eHQvU3RyaW5nVmlldy5oPgogI2luY2x1ZGUgPHd0Zi91bmljb2RlL0NoYXJhY3Rlck5hbWVzLmg+
CkBAIC0xOTEsNyArMTkyLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHRoaXMtPmFwcGVuZChp
bml0aWFsKTsKICAgICAgICAgfQogCi0gICAgICAgIHZvaWQgcHVzaChzdGQ6OmZ1bmN0aW9uPHZv
aWQoSW5saW5lSXRlcmF0b3ImIG1vZGlmeU1lKT4gdXBkYXRlcikKKyAgICAgICAgdm9pZCBwdXNo
KGNvbnN0IFdURjo6RnVuY3Rpb248dm9pZChJbmxpbmVJdGVyYXRvciYgbW9kaWZ5TWUpPiYgdXBk
YXRlcikKICAgICAgICAgewogICAgICAgICAgICAgQVNTRVJUKCF0aGlzLT5pc0VtcHR5KCkpOwog
ICAgICAgICAgICAgaWYgKG1fY2FwYWNpdHkgIT0gMSkKQEAgLTIwMSw3ICsyMDIsNyBAQCBwcml2
YXRlOgogICAgICAgICAgICAgICAgIHRoaXMtPnJlc2l6ZShtX2NhcGFjaXR5KTsKICAgICAgICAg
fQogCi0gICAgICAgIHZvaWQgdXBkYXRlKHN0ZDo6ZnVuY3Rpb248dm9pZChJbmxpbmVJdGVyYXRv
ciYgbW9kaWZ5TWUpPiB1cGRhdGVyKQorICAgICAgICB2b2lkIHVwZGF0ZShjb25zdCBXVEY6OkZ1
bmN0aW9uPHZvaWQoSW5saW5lSXRlcmF0b3ImIG1vZGlmeU1lKT4mIHVwZGF0ZXIpCiAgICAgICAg
IHsKICAgICAgICAgICAgIEFTU0VSVCghdGhpcy0+aXNFbXB0eSgpKTsKICAgICAgICAgICAgIHVw
ZGF0ZXIodGhpcy0+YXQoMCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9X
b3JrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXIuY3BwCmluZGV4IDljOTg3
NWYwZjU3Nzg2YWYyYmRmM2ZmODNmNWI3NGYyOGExYmEyMTMuLjY2ZThkYWZhOTg3ODc3MTE2ODYz
NTEzMjQ3NmU0YTcwNDViZDEzM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
V29ya2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlci5jcHAKQEAgLTU5
LDcgKzU5LDcgQEAgaW5saW5lIFdvcmtlcjo6V29ya2VyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQm
IGNvbnRleHQsIEpTQzo6UnVudGltZUZsYWdzIHJ1bnRpbWUKIHsKICAgICBpZiAoIWFsbFdvcmtl
cnMpIHsKICAgICAgICAgYWxsV29ya2VycyA9IG5ldyBIYXNoU2V0PFdvcmtlcio+OwotICAgICAg
ICBuZXR3b3JrU3RhdGVOb3RpZmllcigpLmFkZE5ldHdvcmtTdGF0ZUNoYW5nZUxpc3RlbmVyKG5l
dHdvcmtTdGF0ZUNoYW5nZWQpOworICAgICAgICBuZXR3b3JrU3RhdGVOb3RpZmllcigpLmFkZE5l
dHdvcmtTdGF0ZUNoYW5nZUxpc3RlbmVyKFtdIChib29sIGlzT25MaW5lKSB7IG5ldHdvcmtTdGF0
ZUNoYW5nZWQoaXNPbkxpbmUpOyB9KTsKICAgICB9CiAKICAgICBhdXRvIGFkZFJlc3VsdCA9IGFs
bFdvcmtlcnMtPmFkZCh0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
V29ya2VyUnVuTG9vcC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclJ1bkxvb3Au
Y3BwCmluZGV4IDY0YzJlZjQ1YzRmZDU5MGY1ODFkMzBmMzgwMTllYzZlNjA2MzZlMWMuLjIzNjFi
Zjc0NWFhYjU0ZjU5MTM2MDczOTI3NjliNjJhZGIzZTBiY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvV29ya2VyUnVuTG9vcC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9Xb3JrZXJSdW5Mb29wLmNwcApAQCAtNTAsNyArNTAsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiBjbGFzcyBXb3JrZXJTaGFyZWRUaW1lciBmaW5hbCA6IHB1YmxpYyBTaGFyZWRUaW1lciB7
CiBwdWJsaWM6CiAgICAgLy8gU2hhcmVkVGltZXIgaW50ZXJmYWNlLgotICAgIHZvaWQgc2V0Rmly
ZWRGdW5jdGlvbihzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4mJiBmdW5jdGlvbikgb3ZlcnJpZGUgeyBt
X3NoYXJlZFRpbWVyRnVuY3Rpb24gPSBXVEZNb3ZlKGZ1bmN0aW9uKTsgfQorICAgIHZvaWQgc2V0
RmlyZWRGdW5jdGlvbihXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJiBmdW5jdGlvbikgb3ZlcnJpZGUg
eyBtX3NoYXJlZFRpbWVyRnVuY3Rpb24gPSBXVEZNb3ZlKGZ1bmN0aW9uKTsgfQogICAgIHZvaWQg
c2V0RmlyZUludGVydmFsKFNlY29uZHMgaW50ZXJ2YWwpIG92ZXJyaWRlIHsgbV9uZXh0RmlyZVRp
bWUgPSBpbnRlcnZhbCArIFdhbGxUaW1lOjpub3coKTsgfQogICAgIHZvaWQgc3RvcCgpIG92ZXJy
aWRlIHsgbV9uZXh0RmlyZVRpbWUgPSBXYWxsVGltZSgpOyB9CiAKQEAgLTU5LDcgKzU5LDcgQEAg
cHVibGljOgogICAgIHZvaWQgZmlyZSgpIHsgbV9zaGFyZWRUaW1lckZ1bmN0aW9uKCk7IH0KIAog
cHJpdmF0ZToKLSAgICBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4gbV9zaGFyZWRUaW1lckZ1bmN0aW9u
OworICAgIFdURjo6RnVuY3Rpb248dm9pZCgpPiBtX3NoYXJlZFRpbWVyRnVuY3Rpb247CiAgICAg
V2FsbFRpbWUgbV9uZXh0RmlyZVRpbWU7CiB9OwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>313369</attachid>
            <date>2017-06-19 22:33:47 -0700</date>
            <delta_ts>2017-06-19 22:35:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-173583-20170619223346.patch</filename>
            <type>text/plain</type>
            <size>80095</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE4NTI4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWRjMjgyZDE0ODRkZjk3
MzQ0NTA1MmZiNTI0ZTM3MDljZmQxZDcwNy4uMThlYjAzMzJjOGE2NjQ5ZjdlNDJhOGI0NDUxYjAz
MmE1MDAyODU0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzMCBAQAorMjAxNy0wNi0xOSAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFVzZSBXVEY6OkZ1bmN0aW9u
IGluc3RlYWQgb2Ygc3RkOjpmdW5jdGlvbiBpbiBtb3JlIHBsYWNlcyBpbiBXZWJDb3JlLworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTczNTgzCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXNlIFdURjo6RnVu
Y3Rpb24gaW5zdGVhZCBvZiBzdGQ6OmZ1bmN0aW9uIGluIG1vcmUgcGxhY2VzIGluIFdlYkNvcmUv
IHRvCisgICAgICAgIHJlZHVjZSBjb3B5aW5nLgorCisgICAgICAgICogcGFnZS9QYWdlLmNwcDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9IeXN0ZXJlc2lzQWN0aXZpdHkuaDoKKyAgICAgICAgKFdlYkNv
cmU6Okh5c3RlcmVzaXNBY3Rpdml0eTo6SHlzdGVyZXNpc0FjdGl2aXR5KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9Mb2dnaW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnJlZ2lzdGVyTm90aWZ5Q2Fs
bGJhY2spOgorICAgICAgICAqIHBsYXRmb3JtL0xvZ2dpbmcuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9NYWluVGhyZWFkU2hhcmVkVGltZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWFpblRocmVh
ZFNoYXJlZFRpbWVyOjpzZXRGaXJlZEZ1bmN0aW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9NYWlu
VGhyZWFkU2hhcmVkVGltZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9QbGF0Zm9ybVBhc3RlYm9h
cmQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9TY29wZUd1YXJkLmg6CisgICAgICAgIChXZWJDb3Jl
OjpTY29wZUd1YXJkOjpTY29wZUd1YXJkKToKKyAgICAgICAgKFdlYkNvcmU6OlNjb3BlR3VhcmQ6
OmVuYWJsZSk6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uU21vb3RoLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdGlvblNtb290aDo6U2Nyb2xsQW5pbWF0aW9u
U21vb3RoKToKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxBbmltYXRpb25TbW9vdGguaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9TaGFyZWRUaW1lci5oOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlv
L1BsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbGF0
Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6OmN1cnJlbnRTZXNzaW9uc01hdGNoaW5nKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXIuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9jZi9NYWluVGhyZWFkU2hhcmVkVGltZXJDRi5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpzZXR1cFBvd2VyT2JzZXJ2ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2NmL1J1bkxv
b3BPYnNlcnZlci5oOgorICAgICAgICAoV2ViQ29yZTo6UnVuTG9vcE9ic2VydmVyOjpSdW5Mb29w
T2JzZXJ2ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5o
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6dHJhdmVyc2UpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9N
ZWRpYVBsYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjphZGRNZWRpYUVuZ2luZSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9QYXRoLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb246OnNlZWtDb21wbGV0ZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uOjpzY2hlZHVsZU1haW5U
aHJlYWROb3RpZmljYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uOjpkaXNwYXRjaE5vdGlmaWNhdGlvbik6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5oOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uOjpOb3RpZmlj
YXRpb246Ok5vdGlmaWNhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb246Ok5vdGlmaWNhdGlvbjo6ZnVuY3Rpb24pOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbk9iakMubW06CisgICAgICAgICgtW1dlYkNvcmVBVkZNb3ZpZU9ic2VydmVyIG9ic2VydmVW
YWx1ZUZvcktleVBhdGg6b2ZPYmplY3Q6Y2hhbmdlOmNvbnRleHQ6XSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFT
dHJlYW1BVkZPYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6cnVuV2l0aG91dEFuaW1hdGlvbnMp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0lPU3VyZmFjZS5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0lPU3VyZmFjZS5tbToKKyAgICAgICAgKFdlYkNv
cmU6OklPU3VyZmFjZTo6Y29udmVydFRvRm9ybWF0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvTWFpblRocmVhZE5vdGlmaWVyLmg6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUmVxdWVzdEluc3RhbGxNaXNzaW5nUGx1Z2lu
c0NhbGxiYWNrLmg6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclJlcXVlc3RJbnN0YWxs
TWlzc2luZ1BsdWdpbnNDYWxsYmFjazo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
UGxheWVyUmVxdWVzdEluc3RhbGxNaXNzaW5nUGx1Z2luc0NhbGxiYWNrOjpNZWRpYVBsYXllclJl
cXVlc3RJbnN0YWxsTWlzc2luZ1BsdWdpbnNDYWxsYmFjayk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dERpcmVjdDJELmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd1dpdGhvdXRTaGFkb3cpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3V2l0aFNoYWRvdyk6CisgICAgICAgICogcGxhdGZvcm0v
Z3RrL1Bhc3RlYm9hcmRIZWxwZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkU2V0
RGF0YTo6Q2xpcGJvYXJkU2V0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkSGVs
cGVyOjp3cml0ZUNsaXBib2FyZENvbnRlbnRzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvUGFz
dGVib2FyZEhlbHBlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9QbGF0Zm9ybVBhc3RlYm9h
cmRHdGsuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1QYXN0ZWJvYXJkOjp3cml0ZVRv
Q2xpcGJvYXJkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuSW50
ZXJmYWNlQVZLaXQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVu
SW50ZXJmYWNlQVZLaXQubW06CisgICAgICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VB
VktpdDo6cHJlcGFyZWRUb1JldHVyblRvSW5saW5lKToKKyAgICAgICAgKFdlYlZpZGVvRnVsbHNj
cmVlbkludGVyZmFjZUFWS2l0OjpmdWxsc2NyZWVuTWF5UmV0dXJuVG9JbmxpbmUpOgorICAgICAg
ICAqIHBsYXRmb3JtL21hYy9Qb3dlck9ic2VydmVyTWFjLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlBvd2VyT2JzZXJ2ZXI6OlBvd2VyT2JzZXJ2ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9Q
b3dlck9ic2VydmVyTWFjLmg6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1dlYkNvcmVOU1VSTEV4
dHJhcy5tbToKKyAgICAgICAgKFdlYkNvcmU6OmlzU2Vjb25kTGV2ZWxEb21haW5OYW1lQWxsb3dl
ZEJ5VExEUnVsZXMpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL0NhcHR1cmVEZXZp
Y2VNYW5hZ2VyLmNwcDoKKyAgICAgICAgKENhcHR1cmVEZXZpY2VNYW5hZ2VyOjphZGRDYXB0dXJl
RGV2aWNlQ2hhbmdlZE9ic2VydmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9D
YXB0dXJlRGV2aWNlTWFuYWdlci5oOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL1Jl
YWx0aW1lTWVkaWFTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNv
dXJjZTo6c2NoZWR1bGVEZWZlcnJlZFRhc2spOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3Ry
ZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVh
bS9pb3MvQVZBdWRpb1Nlc3Npb25DYXB0dXJlRGV2aWNlTWFuYWdlci5tbToKKyAgICAgICAgKC1b
V2ViQVZBdWRpb1Nlc3Npb25BdmFpbGFibGVJbnB1dHNMaXN0ZW5lciBpbml0V2l0aENhbGxiYWNr
Ol0pOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Db3JlQXVkaW9DYXB0dXJl
U291cmNlLmg6CisgICAgICAgICogcGxhdGZvcm0vbW9jay9TY3JvbGxBbmltYXRvck1vY2suY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3JNb2NrOjpTY3JvbGxBbmltYXRvck1v
Y2spOgorICAgICAgICAqIHBsYXRmb3JtL21vY2svU2Nyb2xsQW5pbWF0b3JNb2NrLmg6CisgICAg
ICAgICogcGxhdGZvcm0vbmV0d29yay9Db29raWVTdG9yYWdlLmg6CisgICAgICAgICogcGxhdGZv
cm0vbmV0d29yay9OZXR3b3JrU3RhdGVOb3RpZmllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpO
ZXR3b3JrU3RhdGVOb3RpZmllcjo6YWRkTmV0d29ya1N0YXRlQ2hhbmdlTGlzdGVuZXIpOgorICAg
ICAgICAqIHBsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0YXRlTm90aWZpZXIuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246OmZvckVhY2gpOgorICAgICAgICAqIHBsYXRm
b3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmg6CisgICAgICAgICogcGxhdGZvcm0v
bmV0d29yay9jZi9Db29raWVTdG9yYWdlQ0ZOZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29v
a2llQ2hhbmdlQ2FsbGJhY2tNYXApOgorICAgICAgICAoV2ViQ29yZTo6c3RhcnRPYnNlcnZpbmdD
b29raWVDaGFuZ2VzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL1NvY2tldFN0cmVh
bUhhbmRsZUltcGxDRk5ldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjYWxsT25NYWluVGhyZWFk
QW5kV2FpdCk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9tYWMvQ29va2llU3RvcmFnZU1h
Yy5tbToKKyAgICAgICAgKC1bV2ViQ29va2llU3RvcmFnZU9iakNBZGFwdGVyIHN0YXJ0TGlzdGVu
aW5nRm9yQ29va2llQ2hhbmdlTm90aWZpY2F0aW9uc1dpdGhDYWxsYmFjazpdKToKKyAgICAgICAg
KFdlYkNvcmU6OnN0YXJ0T2JzZXJ2aW5nQ29va2llQ2hhbmdlcyk6CisgICAgICAgICogcGxhdGZv
cm0vbmV0d29yay9zb3VwL0Nvb2tpZVN0b3JhZ2VTb3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OnN0YXJ0T2JzZXJ2aW5nQ29va2llQ2hhbmdlcyk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29y
ay9zb3VwL1NvdXBOZXR3b3JrU2Vzc2lvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTb3VwTmV0
d29ya1Nlc3Npb246OmNoZWNrVExTRXJyb3JzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3Jr
L3NvdXAvU291cE5ldHdvcmtTZXNzaW9uLmg6CisgICAgICAgICogcGxhdGZvcm0vc3FsL1NRTGl0
ZURhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmRlc3Ryb3lDb2xsYXRpb25GdW5jdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpjYWxsQ29sbGF0aW9uRnVuY3Rpb24pOgorICAgICAgICAo
V2ViQ29yZTo6U1FMaXRlRGF0YWJhc2U6OnNldENvbGxhdGlvbkZ1bmN0aW9uKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2UuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyTGF5ZXJCYWNraW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRyYXZlcnNlVmlzaWJsZU5v
bkNvbXBvc2l0ZWREZXNjZW5kYW50TGF5ZXJzKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
TGlzdEJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMaXN0Qm94OjpwYWludEl0ZW0p
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMaXN0Qm94Lmg6CisgICAgICAgICogcmVuZGVy
aW5nL2xpbmUvQnJlYWtpbmdDb250ZXh0Lmg6CisgICAgICAgIChXZWJDb3JlOjpCcmVha2luZ0Nv
bnRleHQ6OklubGluZUl0ZXJhdG9ySGlzdG9yeTo6cHVzaCk6CisgICAgICAgIChXZWJDb3JlOjpC
cmVha2luZ0NvbnRleHQ6OklubGluZUl0ZXJhdG9ySGlzdG9yeTo6dXBkYXRlKToKKyAgICAgICAg
KiB3b3JrZXJzL1dvcmtlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXI6Oldvcmtlcik6
CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJSdW5Mb29wLmNwcDoKKwogMjAxNy0wNi0xOSAgTXls
ZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgogCiAgICAgICAgIFtDb2NvYV0g
VGhlIHN5c3RlbSBKYXBhbmVzZSBmb250IGNhbm5vdCBiZSBpdGFsaWNpemVkCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdl
LmNwcAppbmRleCAwMWZhZDM0NTg5ZmUxNDU4MzFkNWY0ZDJiNzRiOWE3NDllN2I5MzAwLi43NGEx
OWU4N2JlMmQ0YWJmOWZhMzA0ZWUyOTU0NzI4ODljYTU1N2I3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAK
QEAgLTI4MSw3ICsyODEsNyBAQCBQYWdlOjpQYWdlKFBhZ2VDb25maWd1cmF0aW9uJiYgcGFnZUNv
bmZpZ3VyYXRpb24pCiAgICAgaWYgKCFhbGxQYWdlcykgewogICAgICAgICBhbGxQYWdlcyA9IG5l
dyBIYXNoU2V0PFBhZ2UqPjsKICAgICAgICAgCi0gICAgICAgIG5ldHdvcmtTdGF0ZU5vdGlmaWVy
KCkuYWRkTmV0d29ya1N0YXRlQ2hhbmdlTGlzdGVuZXIobmV0d29ya1N0YXRlQ2hhbmdlZCk7Cisg
ICAgICAgIG5ldHdvcmtTdGF0ZU5vdGlmaWVyKCkuYWRkTmV0d29ya1N0YXRlQ2hhbmdlTGlzdGVu
ZXIoW10gKGJvb2wgaXNPbkxpbmUpIHsgbmV0d29ya1N0YXRlQ2hhbmdlZChpc09uTGluZSk7IH0p
OwogICAgIH0KIAogICAgIEFTU0VSVCghYWxsUGFnZXMtPmNvbnRhaW5zKHRoaXMpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0h5c3RlcmVzaXNBY3Rpdml0eS5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vSHlzdGVyZXNpc0FjdGl2aXR5LmgKaW5kZXggNTk5ZTE3MWVj
MWFjYWQyMGVkOGYxNWQxYjQ1YzllYWE5ZjFjZTBhMC4uOTExOGVhNGU5ZmQwNThjZTMxMDc0Mjk2
MTEzZjNjM2NjYzMwMWU0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vSHlz
dGVyZXNpc0FjdGl2aXR5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vSHlzdGVyZXNp
c0FjdGl2aXR5LmgKQEAgLTM5LDggKzM5LDggQEAgZW51bSBjbGFzcyBIeXN0ZXJlc2lzU3RhdGUg
ewogCiBjbGFzcyBIeXN0ZXJlc2lzQWN0aXZpdHkgewogcHVibGljOgotICAgIGV4cGxpY2l0IEh5
c3RlcmVzaXNBY3Rpdml0eShzdGQ6OmZ1bmN0aW9uPHZvaWQoSHlzdGVyZXNpc1N0YXRlKT4gY2Fs
bGJhY2sgPSBbXShIeXN0ZXJlc2lzU3RhdGUpIHsgfSwgZG91YmxlIGh5c3RlcmVzaXNTZWNvbmRz
ID0gRGVmYXVsdEh5c3RlcmVzaXNTZWNvbmRzKQotICAgICAgICA6IG1fY2FsbGJhY2soY2FsbGJh
Y2spCisgICAgZXhwbGljaXQgSHlzdGVyZXNpc0FjdGl2aXR5KFdURjo6RnVuY3Rpb248dm9pZChI
eXN0ZXJlc2lzU3RhdGUpPiYmIGNhbGxiYWNrID0gW10oSHlzdGVyZXNpc1N0YXRlKSB7IH0sIGRv
dWJsZSBoeXN0ZXJlc2lzU2Vjb25kcyA9IERlZmF1bHRIeXN0ZXJlc2lzU2Vjb25kcykKKyAgICAg
ICAgOiBtX2NhbGxiYWNrKFdURk1vdmUoY2FsbGJhY2spKQogICAgICAgICAsIG1faHlzdGVyZXNp
c1NlY29uZHMoaHlzdGVyZXNpc1NlY29uZHMpCiAgICAgICAgICwgbV9hY3RpdmUoZmFsc2UpCiAg
ICAgICAgICwgbV90aW1lcigqdGhpcywgJkh5c3RlcmVzaXNBY3Rpdml0eTo6aHlzdGVyZXNpc1Rp
bWVyRmlyZWQpCkBAIC04OCw3ICs4OCw3IEBAIHByaXZhdGU6CiAgICAgICAgIG1fY2FsbGJhY2so
SHlzdGVyZXNpc1N0YXRlOjpTdG9wcGVkKTsKICAgICB9CiAKLSAgICBzdGQ6OmZ1bmN0aW9uPHZv
aWQoSHlzdGVyZXNpc1N0YXRlKT4gbV9jYWxsYmFjazsKKyAgICBXVEY6OkZ1bmN0aW9uPHZvaWQo
SHlzdGVyZXNpc1N0YXRlKT4gbV9jYWxsYmFjazsKICAgICBkb3VibGUgbV9oeXN0ZXJlc2lzU2Vj
b25kczsgLy8gRklYTUU6IFNob3VsZCB1c2UgU2Vjb25kcy4KICAgICBib29sIG1fYWN0aXZlOwog
ICAgIFRpbWVyIG1fdGltZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9M
b2dnaW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xvZ2dpbmcuY3BwCmluZGV4IDBm
YjViZjgxMjljOTY0NTRjNGU0ZjgwYzAwZGJmZjE3YWEyMzdiOTQuLmJiZWRhNDU0ZjAyZjZkZTQ3
ZGY1YzFkZTYwMWU5MTEyMGIzMGE2ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL0xvZ2dpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xvZ2dpbmcuY3Bw
CkBAIC03OSwxMyArNzksMTMgQEAgdm9pZCBpbml0aWFsaXplTG9nQ2hhbm5lbHNJZk5lY2Vzc2Fy
eSgpCiB9CiAKICNpZm5kZWYgTkRFQlVHCi12b2lkIHJlZ2lzdGVyTm90aWZ5Q2FsbGJhY2soY29u
c3QgU3RyaW5nJiBub3RpZnlJRCwgc3RkOjpmdW5jdGlvbjx2b2lkKCk+IGNhbGxiYWNrKQordm9p
ZCByZWdpc3Rlck5vdGlmeUNhbGxiYWNrKGNvbnN0IFN0cmluZyYgbm90aWZ5SUQsIFdURjo6RnVu
Y3Rpb248dm9pZCgpPiYmIGNhbGxiYWNrKQogewogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIGlu
dCB0b2tlbjsKLSAgICBub3RpZnlfcmVnaXN0ZXJfZGlzcGF0Y2gobm90aWZ5SUQudXRmOCgpLmRh
dGEoKSwgJnRva2VuLCBkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBeKGludCkgeworICAgIG5v
dGlmeV9yZWdpc3Rlcl9kaXNwYXRjaChub3RpZnlJRC51dGY4KCkuZGF0YSgpLCAmdG9rZW4sIGRp
c3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIEJsb2NrUHRyPHZvaWQgKGludCk+Ojpmcm9tQ2FsbGFi
bGUoW10gKGludCkgewogICAgICAgICBjYWxsYmFjaygpOwotICAgIH0pOworICAgIH0pLmdldCgp
KTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKG5vdGlmeUlEKTsKICAgICBVTlVTRURfUEFSQU0o
Y2FsbGJhY2spOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTG9nZ2luZy5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTG9nZ2luZy5oCmluZGV4IDg4M2E5ZjIyMDk3ZWVj
MTZkZWNjYTQ2MzIyODg1MDY2YjQ2N2I3NGUuLjVhYjAxNjJhMTU4NGQxODVhMWJlM2Q1MDZlZThm
YTI4ZWFkNzAzNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xvZ2dpbmcu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2dnaW5nLmgKQEAgLTEwMyw3ICsxMDMs
NyBAQCBTdHJpbmcgbG9nTGV2ZWxTdHJpbmcoKTsKIGJvb2wgaXNMb2dDaGFubmVsRW5hYmxlZChj
b25zdCBTdHJpbmcmIG5hbWUpOwogV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRMb2dDaGFubmVsVG9B
Y2N1bXVsYXRlKGNvbnN0IFN0cmluZyYgbmFtZSk7CiAjaWZuZGVmIE5ERUJVRwotdm9pZCByZWdp
c3Rlck5vdGlmeUNhbGxiYWNrKGNvbnN0IFN0cmluZyYgbm90aWZ5SUQsIHN0ZDo6ZnVuY3Rpb248
dm9pZCgpPiBjYWxsYmFjayk7Cit2b2lkIHJlZ2lzdGVyTm90aWZ5Q2FsbGJhY2soY29uc3QgU3Ry
aW5nJiBub3RpZnlJRCwgV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYgY2FsbGJhY2spOwogI2VuZGlm
CiAKICNlbmRpZiAvLyAhTE9HX0RJU0FCTEVEIHx8ICFSRUxFQVNFX0xPR19ESVNBQkxFRApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWFpblRocmVhZFNoYXJlZFRpbWVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01haW5UaHJlYWRTaGFyZWRUaW1lci5jcHAKaW5k
ZXggZGRhNjgyZWI4NDExYmI4NjMyMmIzMmExZmE1MWIwYmQyYTUxN2I4NC4uNjhmZjA0Mzg5N2Ji
Y2E5MzM5YmYyM2RjNGRkMTNjNTIwNGNlMzBlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vTWFpblRocmVhZFNoYXJlZFRpbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9NYWluVGhyZWFkU2hhcmVkVGltZXIuY3BwCkBAIC00MCw3ICs0MCw3IEBAIE1haW5U
aHJlYWRTaGFyZWRUaW1lcjo6TWFpblRocmVhZFNoYXJlZFRpbWVyKCkKIH0KICNlbmRpZgogCi12
b2lkIE1haW5UaHJlYWRTaGFyZWRUaW1lcjo6c2V0RmlyZWRGdW5jdGlvbihzdGQ6OmZ1bmN0aW9u
PHZvaWQoKT4mJiBmaXJlZEZ1bmN0aW9uKQordm9pZCBNYWluVGhyZWFkU2hhcmVkVGltZXI6OnNl
dEZpcmVkRnVuY3Rpb24oV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYgZmlyZWRGdW5jdGlvbikKIHsK
ICAgICBSRUxFQVNFX0FTU0VSVCghbV9maXJlZEZ1bmN0aW9uIHx8ICFmaXJlZEZ1bmN0aW9uKTsK
ICAgICBtX2ZpcmVkRnVuY3Rpb24gPSBXVEZNb3ZlKGZpcmVkRnVuY3Rpb24pOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWFpblRocmVhZFNoYXJlZFRpbWVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9NYWluVGhyZWFkU2hhcmVkVGltZXIuaAppbmRleCA0OTA3MzBm
MTQzMmQ5MzYwYmIyYmQ1OGMwYWFjYjc0MjQ5ODU0ZTRiLi45NGExOTBkMzc3OTlmMjk0NmNkNTZl
OTdkOTAzZjdjODVkNTY0ZmYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9N
YWluVGhyZWFkU2hhcmVkVGltZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NYWlu
VGhyZWFkU2hhcmVkVGltZXIuaApAQCAtNDEsNyArNDEsNyBAQCBjbGFzcyBNYWluVGhyZWFkU2hh
cmVkVGltZXIgZmluYWwgOiBwdWJsaWMgU2hhcmVkVGltZXIgewogcHVibGljOgogICAgIHN0YXRp
YyBNYWluVGhyZWFkU2hhcmVkVGltZXImIHNpbmdsZXRvbigpOwogCi0gICAgdm9pZCBzZXRGaXJl
ZEZ1bmN0aW9uKHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiYmKSBvdmVycmlkZTsKKyAgICB2b2lkIHNl
dEZpcmVkRnVuY3Rpb24oV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYpIG92ZXJyaWRlOwogICAgIHZv
aWQgc2V0RmlyZUludGVydmFsKFNlY29uZHMpIG92ZXJyaWRlOwogICAgIHZvaWQgc3RvcCgpIG92
ZXJyaWRlOwogICAgIHZvaWQgaW52YWxpZGF0ZSgpIG92ZXJyaWRlOwpAQCAtNTMsNyArNTMsNyBA
QCBwdWJsaWM6CiBwcml2YXRlOgogICAgIE1haW5UaHJlYWRTaGFyZWRUaW1lcigpOwogCi0gICAg
c3RkOjpmdW5jdGlvbjx2b2lkKCk+IG1fZmlyZWRGdW5jdGlvbjsKKyAgICBXVEY6OkZ1bmN0aW9u
PHZvaWQoKT4gbV9maXJlZEZ1bmN0aW9uOwogI2lmIFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0o
V1BFKQogICAgIFJ1bkxvb3A6OlRpbWVyPE1haW5UaHJlYWRTaGFyZWRUaW1lcj4gbV90aW1lcjsK
ICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1QYXN0
ZWJvYXJkLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVBhc3RlYm9hcmQuaApp
bmRleCBhZmRhMTU1ZWYxMzQ0M2E5MTFlODMwNzBkZGM3NzcxYjViNTIzZDg4Li4xM2U1OTg5MDgw
MTlmNjI0ZDVkNWRjNzQzMzI1NTBkM2UwNjY2NmMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9QbGF0Zm9ybVBhc3RlYm9hcmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9QbGF0Zm9ybVBhc3RlYm9hcmQuaApAQCAtMjYsOCArMjYsOCBAQAogI2lmbmRlZiBQbGF0
Zm9ybVBhc3RlYm9hcmRfaAogI2RlZmluZSBQbGF0Zm9ybVBhc3RlYm9hcmRfaAogCi0jaW5jbHVk
ZSA8ZnVuY3Rpb25hbD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9G
dW5jdGlvbi5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1Jl
dGFpblB0ci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KQEAgLTkzLDcgKzkzLDcgQEAgcHVi
bGljOgogICAgIFdFQkNPUkVfRVhQT1JUIGludCBudW1iZXJPZkZpbGVzKCk7CiAKICNpZiBQTEFU
Rk9STShHVEspCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB3cml0ZVRvQ2xpcGJvYXJkKGNvbnN0
IFNlbGVjdGlvbkRhdGEmLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4mJiBwcmltYXJ5U2VsZWN0aW9u
Q2xlYXJlZCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB3cml0ZVRvQ2xpcGJvYXJkKGNvbnN0
IFNlbGVjdGlvbkRhdGEmLCBXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJiBwcmltYXJ5U2VsZWN0aW9u
Q2xlYXJlZCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgUmVmPFNlbGVjdGlvbkRhdGE+IHJlYWRGcm9t
Q2xpcGJvYXJkKCk7CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vU2NvcGVHdWFyZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2NvcGVHdWFyZC5oCmlu
ZGV4IDI0YWI3ZmY1OWUwNGE5NGEwMDYzOTEyYWE5ZmE5ZjUxMzY5MDU4NTEuLmQ0Y2IzYjlmOGVi
MjQ0ZTFjMTM4YTA3Zjc2Mjc4MWRkNmQxYTI3NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1Njb3BlR3VhcmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY29w
ZUd1YXJkLmgKQEAgLTI1LDcgKzI1LDcgQEAKICNpZm5kZWYgU2NvcGVHdWFyZF9oCiAjZGVmaW5l
IFNjb3BlR3VhcmRfaAogCi0jaW5jbHVkZSA8ZnVuY3Rpb25hbD4KKyNpbmNsdWRlIDx3dGYvRnVu
Y3Rpb24uaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0zNSw3ICszNSw3IEBAIHB1Ymxp
YzoKICAgICB7CiAgICAgfQogCi0gICAgU2NvcGVHdWFyZChzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4g
ZnVuY3Rpb24pCisgICAgU2NvcGVHdWFyZChXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJiBmdW5jdGlv
bikKICAgICAgICAgOiBtX2Z1bmN0aW9uKFdURk1vdmUoZnVuY3Rpb24pKQogICAgIHsKICAgICB9
CkBAIC00Niw3ICs0Niw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIG1fZnVuY3Rpb24oKTsKICAg
ICB9CiAKLSAgICB2b2lkIGVuYWJsZShzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4gZnVuY3Rpb24pCisg
ICAgdm9pZCBlbmFibGUoV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYgZnVuY3Rpb24pCiAgICAgewog
ICAgICAgICBtX2Z1bmN0aW9uID0gV1RGTW92ZShmdW5jdGlvbik7CiAgICAgfQpAQCAtNTcsNyAr
NTcsNyBAQCBwdWJsaWM6CiAgICAgfQogCiBwcml2YXRlOgotICAgIHN0ZDo6ZnVuY3Rpb248dm9p
ZCgpPiBtX2Z1bmN0aW9uIHsgbnVsbHB0ciB9OworICAgIFdURjo6RnVuY3Rpb248dm9pZCgpPiBt
X2Z1bmN0aW9uOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uU21vb3RoLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdGlvblNtb290aC5jcHAKaW5kZXggNGM2YjgxNGY5
MGRhZWYwZjE0OWFjNTQ2NmU4YzljNzhiNWFhOTk3MC4uZTBmYjEyYzQ5MTdhOTAxY2UwYzI0OGNk
MzQ4Y2JmMGY1ZjlmMzI2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Ny
b2xsQW5pbWF0aW9uU21vb3RoLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3Jv
bGxBbmltYXRpb25TbW9vdGguY3BwCkBAIC00MCw3ICs0MCw3IEBAIHN0YXRpYyBjb25zdCBkb3Vi
bGUgZnJhbWVSYXRlID0gNjA7CiBzdGF0aWMgY29uc3QgU2Vjb25kcyB0aWNrVGltZSA9IDFfcyAv
IGZyYW1lUmF0ZTsKIHN0YXRpYyBjb25zdCBTZWNvbmRzIG1pbmltdW1UaW1lckludGVydmFsIHsg
MV9tcyB9OwogCi1TY3JvbGxBbmltYXRpb25TbW9vdGg6OlNjcm9sbEFuaW1hdGlvblNtb290aChT
Y3JvbGxhYmxlQXJlYSYgc2Nyb2xsYWJsZUFyZWEsIGNvbnN0IEZsb2F0UG9pbnQmIHBvc2l0aW9u
LCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKEZsb2F0UG9pbnQmJik+JiYgbm90aWZ5UG9zaXRpb25DaGFu
Z2VkRnVuY3Rpb24pCitTY3JvbGxBbmltYXRpb25TbW9vdGg6OlNjcm9sbEFuaW1hdGlvblNtb290
aChTY3JvbGxhYmxlQXJlYSYgc2Nyb2xsYWJsZUFyZWEsIGNvbnN0IEZsb2F0UG9pbnQmIHBvc2l0
aW9uLCBXVEY6OkZ1bmN0aW9uPHZvaWQgKEZsb2F0UG9pbnQmJik+JiYgbm90aWZ5UG9zaXRpb25D
aGFuZ2VkRnVuY3Rpb24pCiAgICAgOiBTY3JvbGxBbmltYXRpb24oc2Nyb2xsYWJsZUFyZWEpCiAg
ICAgLCBtX25vdGlmeVBvc2l0aW9uQ2hhbmdlZEZ1bmN0aW9uKFdURk1vdmUobm90aWZ5UG9zaXRp
b25DaGFuZ2VkRnVuY3Rpb24pKQogICAgICwgbV9ob3Jpem9udGFsRGF0YShwb3NpdGlvbi54KCks
IHNjcm9sbGFibGVBcmVhLnZpc2libGVXaWR0aCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uU21vb3RoLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9TY3JvbGxBbmltYXRpb25TbW9vdGguaAppbmRleCAyNDM5NjQ4ZjE4NGRjN2QyMjg0OWNh
ZTM5NTFjMGE2ZDg2NzJkYzkzLi4wMmNjNGVlMmJkNzQzZDA2MjllYWQwNDhiZjc2YzQ4MTY3YmZl
OGVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRpb25T
bW9vdGguaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRpb25TbW9v
dGguaApAQCAtMzgsNyArMzgsNyBAQCBjbGFzcyBTY3JvbGxhYmxlQXJlYTsKIAogY2xhc3MgU2Ny
b2xsQW5pbWF0aW9uU21vb3RoIGZpbmFsOiBwdWJsaWMgU2Nyb2xsQW5pbWF0aW9uIHsKIHB1Ymxp
YzoKLSAgICBTY3JvbGxBbmltYXRpb25TbW9vdGgoU2Nyb2xsYWJsZUFyZWEmLCBjb25zdCBGbG9h
dFBvaW50Jiwgc3RkOjpmdW5jdGlvbjx2b2lkIChGbG9hdFBvaW50JiYpPiYmIG5vdGlmeVBvc2l0
aW9uQ2hhbmdlZEZ1bmN0aW9uKTsKKyAgICBTY3JvbGxBbmltYXRpb25TbW9vdGgoU2Nyb2xsYWJs
ZUFyZWEmLCBjb25zdCBGbG9hdFBvaW50JiwgV1RGOjpGdW5jdGlvbjx2b2lkIChGbG9hdFBvaW50
JiYpPiYmIG5vdGlmeVBvc2l0aW9uQ2hhbmdlZEZ1bmN0aW9uKTsKICAgICB2aXJ0dWFsIH5TY3Jv
bGxBbmltYXRpb25TbW9vdGgoKTsKIAogICAgIGVudW0gY2xhc3MgQ3VydmUgewpAQCAtOTcsNyAr
OTcsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgYW5pbWF0aW9uVGltZXJGaXJlZCgpOwogICAgIGJv
b2wgYW5pbWF0aW9uVGltZXJBY3RpdmUoKSBjb25zdDsKIAotICAgIHN0ZDo6ZnVuY3Rpb248dm9p
ZCAoRmxvYXRQb2ludCYmKT4gbV9ub3RpZnlQb3NpdGlvbkNoYW5nZWRGdW5jdGlvbjsKKyAgICBX
VEY6OkZ1bmN0aW9uPHZvaWQgKEZsb2F0UG9pbnQmJik+IG1fbm90aWZ5UG9zaXRpb25DaGFuZ2Vk
RnVuY3Rpb247CiAKICAgICBQZXJBeGlzRGF0YSBtX2hvcml6b250YWxEYXRhOwogICAgIFBlckF4
aXNEYXRhIG1fdmVydGljYWxEYXRhOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vU2hhcmVkVGltZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZFRpbWVyLmgK
aW5kZXggNzc3N2Y2N2M5YWFmNzNlMGNiZmE3MDg4ODc2MTNiNmYyMzMyOTI2Mi4uNDQ0NWUzYjcy
ZTc2YTkyMWMwYmU4ZjNlODc3OWU1NTUzNjJlNzA0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vU2hhcmVkVGltZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
aGFyZWRUaW1lci5oCkBAIC0yNiw4ICsyNiw4IEBACiAjaWZuZGVmIFNoYXJlZFRpbWVyX2gKICNk
ZWZpbmUgU2hhcmVkVGltZXJfaAogCi0jaW5jbHVkZSA8ZnVuY3Rpb25hbD4KICNpbmNsdWRlIDx3
dGYvRmFzdE1hbGxvYy5oPgorI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgogI2luY2x1ZGUgPHd0
Zi9Ob25jb3B5YWJsZS5oPgogI2luY2x1ZGUgPHd0Zi9TZWNvbmRzLmg+CiAKQEAgLTQxLDcgKzQx
LDcgQEAgY2xhc3MgU2hhcmVkVGltZXIgewogcHVibGljOgogICAgIFNoYXJlZFRpbWVyKCkgPSBk
ZWZhdWx0OwogICAgIHZpcnR1YWwgflNoYXJlZFRpbWVyKCkgeyB9Ci0gICAgdmlydHVhbCB2b2lk
IHNldEZpcmVkRnVuY3Rpb24oc3RkOjpmdW5jdGlvbjx2b2lkKCk+JiYpID0gMDsKKyAgICB2aXJ0
dWFsIHZvaWQgc2V0RmlyZWRGdW5jdGlvbihXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJikgPSAwOwog
CiAgICAgLy8gVGhlIGZpcmUgaW50ZXJ2YWwgaXMgaW4gc2Vjb25kcyByZWxhdGl2ZSB0byB0aGUg
Y3VycmVudCBtb25vdG9uaWMgY2xvY2sgdGltZS4KICAgICB2aXJ0dWFsIHZvaWQgc2V0RmlyZUlu
dGVydmFsKFNlY29uZHMpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXIuY3BwCmluZGV4IGFkZGJj
NDNmODA1ZGQ1MDJiM2NkNzllZTQ2NzUzNjU2ZTU0Yjc2YWEuLjAzZDc2MWViYzE4OTQ2Mjg1Nzg5
MzhlN2QxY2FjMGJhYzYwMGI3ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyLmNwcApAQCAtMjc3
LDcgKzI3Nyw3IEBAIFBsYXRmb3JtTWVkaWFTZXNzaW9uKiBQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1h
bmFnZXI6OmN1cnJlbnRTZXNzaW9uKCkgY29uc3QKICAgICByZXR1cm4gbV9zZXNzaW9uc1swXTsK
IH0KIAotVmVjdG9yPFBsYXRmb3JtTWVkaWFTZXNzaW9uKj4gUGxhdGZvcm1NZWRpYVNlc3Npb25N
YW5hZ2VyOjpjdXJyZW50U2Vzc2lvbnNNYXRjaGluZyhzdGQ6OmZ1bmN0aW9uPGJvb2woY29uc3Qg
UGxhdGZvcm1NZWRpYVNlc3Npb24gJik+IGZpbHRlcikKK1ZlY3RvcjxQbGF0Zm9ybU1lZGlhU2Vz
c2lvbio+IFBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6Y3VycmVudFNlc3Npb25zTWF0Y2hp
bmcoY29uc3QgV1RGOjpGdW5jdGlvbjxib29sKGNvbnN0IFBsYXRmb3JtTWVkaWFTZXNzaW9uJik+
JiBmaWx0ZXIpCiB7CiAgICAgVmVjdG9yPFBsYXRmb3JtTWVkaWFTZXNzaW9uKj4gbWF0Y2hpbmdT
ZXNzaW9uczsKICAgICBmb3JFYWNoU2Vzc2lvbihbJl0gKFBsYXRmb3JtTWVkaWFTZXNzaW9uJiBz
ZXNzaW9uLCBzaXplX3QpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyLmgKaW5kZXggZjJlMGY5ODczNzRi
YzU5NDUzMjg5MTE4MzVmOTBlMTVjMDAwZjY4Mi4uODQyNzQ4ZmZiNjQ5NWVjMTM2NzQwMzMyNWEx
MzZmZjA2ZDlmMWMxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
UGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyLmgKQEAgLTEwNSw3ICsxMDUsNyBA
QCBwdWJsaWM6CiAgICAgdm9pZCBzZXRDdXJyZW50U2Vzc2lvbihQbGF0Zm9ybU1lZGlhU2Vzc2lv
biYpOwogICAgIFBsYXRmb3JtTWVkaWFTZXNzaW9uKiBjdXJyZW50U2Vzc2lvbigpIGNvbnN0Owog
Ci0gICAgVmVjdG9yPFBsYXRmb3JtTWVkaWFTZXNzaW9uKj4gY3VycmVudFNlc3Npb25zTWF0Y2hp
bmcoc3RkOjpmdW5jdGlvbjxib29sKGNvbnN0IFBsYXRmb3JtTWVkaWFTZXNzaW9uJik+KTsKKyAg
ICBWZWN0b3I8UGxhdGZvcm1NZWRpYVNlc3Npb24qPiBjdXJyZW50U2Vzc2lvbnNNYXRjaGluZyhj
b25zdCBXVEY6OkZ1bmN0aW9uPGJvb2woY29uc3QgUGxhdGZvcm1NZWRpYVNlc3Npb24mKT4mKTsK
IAogICAgIHZvaWQgc2Vzc2lvbklzUGxheWluZ1RvV2lyZWxlc3NQbGF5YmFja1RhcmdldENoYW5n
ZWQoUGxhdGZvcm1NZWRpYVNlc3Npb24mKTsKICAgICB2b2lkIHNlc3Npb25DYW5Qcm9kdWNlQXVk
aW9DaGFuZ2VkKFBsYXRmb3JtTWVkaWFTZXNzaW9uJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jZi9NYWluVGhyZWFkU2hhcmVkVGltZXJDRi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jZi9NYWluVGhyZWFkU2hhcmVkVGltZXJDRi5jcHAKaW5kZXggZjllNGJm
ODAwMDI0ZGVhZmQ2ZTMwMzI0MDVmYWRjODVkMGRjNzA1YS4uZjAxODNiMTRkYmZjMmM0OGNkMjE5
NjNiZjg0NzM5OTZiMjBiMTRmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y2YvTWFpblRocmVhZFNoYXJlZFRpbWVyQ0YuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2NmL01haW5UaHJlYWRTaGFyZWRUaW1lckNGLmNwcApAQCAtNTcsNyArNTcsNyBAQCBzdGF0
aWMgdm9pZCBzZXR1cFBvd2VyT2JzZXJ2ZXIoKQogI2lmIFBMQVRGT1JNKE1BQykKICAgICBzdGF0
aWMgUG93ZXJPYnNlcnZlciogcG93ZXJPYnNlcnZlcjsKICAgICBpZiAoIXBvd2VyT2JzZXJ2ZXIp
Ci0gICAgICAgIHBvd2VyT2JzZXJ2ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFBvd2VyT2JzZXJ2ZXI+
KHJlc3RhcnRTaGFyZWRUaW1lcikucmVsZWFzZSgpOworICAgICAgICBwb3dlck9ic2VydmVyID0g
c3RkOjptYWtlX3VuaXF1ZTxQb3dlck9ic2VydmVyPihbXSB7IHJlc3RhcnRTaGFyZWRUaW1lcigp
OyB9KS5yZWxlYXNlKCk7CiAjZWxpZiBQTEFURk9STShJT1MpCiAgICAgc3RhdGljIGJvb2wgcmVn
aXN0ZXJlZEZvckFwcGxpY2F0aW9uTm90aWZpY2F0aW9uID0gZmFsc2U7CiAgICAgaWYgKCFyZWdp
c3RlcmVkRm9yQXBwbGljYXRpb25Ob3RpZmljYXRpb24pIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2NmL1J1bkxvb3BPYnNlcnZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vY2YvUnVuTG9vcE9ic2VydmVyLmgKaW5kZXggYzFiNmEwZDlkYzliODI3MjVmMDRiNTVj
ODMxOGU2MWFkMTU2OTA4MC4uOTY5YTAzNzg2YmJiMWYxMWM5NzQ2ZmUwYjA2ZTJlYmVhYWZlZDNl
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvUnVuTG9vcE9ic2VydmVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvUnVuTG9vcE9ic2VydmVyLmgKQEAg
LTI3LDcgKzI3LDcgQEAKICNkZWZpbmUgUnVuTG9vcE9ic2VydmVyX2gKIAogI2luY2x1ZGUgPENv
cmVGb3VuZGF0aW9uL0NvcmVGb3VuZGF0aW9uLmg+Ci0jaW5jbHVkZSA8ZnVuY3Rpb25hbD4KKyNp
bmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNp
bmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAKQEAgLTM2LDExICszNiwxMSBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiBjbGFzcyBSdW5Mb29wT2JzZXJ2ZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlB
QkxFKFJ1bkxvb3BPYnNlcnZlcik7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgot
ICAgIHR5cGVkZWYgc3RkOjpmdW5jdGlvbjx2b2lkICgpPiBSdW5Mb29wT2JzZXJ2ZXJDYWxsYmFj
azsKKyAgICB0eXBlZGVmIFdURjo6RnVuY3Rpb248dm9pZCAoKT4gUnVuTG9vcE9ic2VydmVyQ2Fs
bGJhY2s7CiAKLSAgICBSdW5Mb29wT2JzZXJ2ZXIoQ0ZJbmRleCBvcmRlciwgUnVuTG9vcE9ic2Vy
dmVyQ2FsbGJhY2sgY2FsbGJhY2spCisgICAgUnVuTG9vcE9ic2VydmVyKENGSW5kZXggb3JkZXIs
IFJ1bkxvb3BPYnNlcnZlckNhbGxiYWNrJiYgY2FsbGJhY2spCiAgICAgICAgIDogbV9vcmRlcihv
cmRlcikKLSAgICAgICAgLCBtX2NhbGxiYWNrKGNhbGxiYWNrKQorICAgICAgICAsIG1fY2FsbGJh
Y2soV1RGTW92ZShjYWxsYmFjaykpCiAgICAgeyB9CiAKICAgICBXRUJDT1JFX0VYUE9SVCB+UnVu
TG9vcE9ic2VydmVyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzQ29udGV4dC5oCmluZGV4IGM0NzA3NDY0OGRlN2Y0YjA3OGNhMmYxYTZhZmFlYTg0
OWVlNzk0OWUuLjUyZjdkZTI3NTNjY2RiNmNjNmRlNTM5ZjZhYzAwMjBlMDY4YWNhZmUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5o
CkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiSW1hZ2UuaCIKICNpbmNsdWRlICJJbWFnZU9y
aWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiUGF0dGVybi5oIgorI2luY2x1ZGUgPHd0Zi9GdW5jdGlv
bi5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogCiAjaWYgVVNFKENHKQpAQCAtNTk5
LDggKzYwMCw4IEBAIHByaXZhdGU6CiAKICNpZiBVU0UoRElSRUNUMkQpCiAgICAgdm9pZCBwbGF0
Zm9ybUluaXQoSERDLCBJRDJEMVJlbmRlclRhcmdldCoqLCBSRUNULCBib29sIGhhc0FscGhhID0g
ZmFsc2UpOwotICAgIHZvaWQgZHJhd1dpdGhvdXRTaGFkb3coY29uc3QgRmxvYXRSZWN0JiBib3Vu
ZGluZ1JlY3QsIGNvbnN0IHN0ZDo6ZnVuY3Rpb248dm9pZChJRDJEMVJlbmRlclRhcmdldCopPiYp
OwotICAgIHZvaWQgZHJhd1dpdGhTaGFkb3coY29uc3QgRmxvYXRSZWN0JiBib3VuZGluZ1JlY3Qs
IGNvbnN0IHN0ZDo6ZnVuY3Rpb248dm9pZChJRDJEMVJlbmRlclRhcmdldCopPiYpOworICAgIHZv
aWQgZHJhd1dpdGhvdXRTaGFkb3coY29uc3QgRmxvYXRSZWN0JiBib3VuZGluZ1JlY3QsIGNvbnN0
IFdURjo6RnVuY3Rpb248dm9pZChJRDJEMVJlbmRlclRhcmdldCopPiYpOworICAgIHZvaWQgZHJh
d1dpdGhTaGFkb3coY29uc3QgRmxvYXRSZWN0JiBib3VuZGluZ1JlY3QsIGNvbnN0IFdURjo6RnVu
Y3Rpb248dm9pZChJRDJEMVJlbmRlclRhcmdldCopPiYpOwogI2VuZGlmCiAKICAgICB2b2lkIHNh
dmVQbGF0Zm9ybVN0YXRlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HcmFwaGljc0xheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzTGF5ZXIuY3BwCmluZGV4IGY3OWY0NGVlMGI5MGE1MjcyMWQ5YTJhMGFkODk5
MDEwMDVlZDE4NTQuLjE2YzY3ZjQ5ZTlmYmE5NDQyNWRiMWYyODZhMzg2YzI4MmNiYTdlMzYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIu
Y3BwCkBAIC02NzIsNyArNjcyLDcgQEAgdm9pZCBHcmFwaGljc0xheWVyOjphZGRSZXBhaW50UmVj
dChjb25zdCBGbG9hdFJlY3QmIHJlcGFpbnRSZWN0KQogICAgIH0KIH0KIAotdm9pZCBHcmFwaGlj
c0xheWVyOjp0cmF2ZXJzZShHcmFwaGljc0xheWVyJiBsYXllciwgc3RkOjpmdW5jdGlvbjx2b2lk
IChHcmFwaGljc0xheWVyJik+IHRyYXZlcnNhbEZ1bmMpCit2b2lkIEdyYXBoaWNzTGF5ZXI6OnRy
YXZlcnNlKEdyYXBoaWNzTGF5ZXImIGxheWVyLCBjb25zdCBXVEY6OkZ1bmN0aW9uPHZvaWQgKEdy
YXBoaWNzTGF5ZXImKT4mIHRyYXZlcnNhbEZ1bmMpCiB7CiAgICAgdHJhdmVyc2FsRnVuYyhsYXll
cik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBo
aWNzTGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5
ZXIuaAppbmRleCBlY2ZlMzljNjY3NTQ2NDc0MThkYjAzOTIzZGIyNTIzNzg4ZTNhY2M1Li42YzFi
Nzk2ZDI4MzIzNmFkNjk5YjJiOTUxMTQ2M2Q5ZjE1MGY2MWMyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5oCkBAIC0zNyw2ICszNyw3IEBA
CiAjaW5jbHVkZSAiUGxhdGZvcm1MYXllci5oIgogI2luY2x1ZGUgIlRyYW5zZm9ybU9wZXJhdGlv
bnMuaCIKICNpbmNsdWRlICJXaW5kUnVsZS5oIgorI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgog
I2luY2x1ZGUgPHd0Zi9UeXBlQ2FzdHMuaD4KIAogI2lmIEVOQUJMRShDU1NfQ09NUE9TSVRJTkcp
CkBAIC01NzAsNyArNTcxLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBpc0dyYXBoaWNz
TGF5ZXJUZXh0dXJlTWFwcGVyKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFs
IGJvb2wgaXNDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXIoKSBjb25zdCB7IHJldHVybiBmYWxzZTsg
fQogCi0gICAgc3RhdGljIHZvaWQgdHJhdmVyc2UoR3JhcGhpY3NMYXllciYsIHN0ZDo6ZnVuY3Rp
b248dm9pZCAoR3JhcGhpY3NMYXllciYpPik7CisgICAgc3RhdGljIHZvaWQgdHJhdmVyc2UoR3Jh
cGhpY3NMYXllciYsIGNvbnN0IFdURjo6RnVuY3Rpb248dm9pZCAoR3JhcGhpY3NMYXllciYpPiYp
OwogCiBwcm90ZWN0ZWQ6CiAgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgR3JhcGhpY3NMYXll
cihUeXBlLCBHcmFwaGljc0xheWVyQ2xpZW50Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKaW5kZXggNmQyZTVhYTNhMDM3MmRlYTI5ZGJj
MDM5ZTlmNjM2YmJkZDM1MTA5Ni4uYjBmYjNkZDc3YzQ2NDNmYjhkMmMyZmQ3MGZiYjg1OWU0ZDVj
YzQ3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQ
bGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxh
eWVyLmNwcApAQCAtMTg4LDcgKzE4OCw3IEBAIHN0cnVjdCBNZWRpYVBsYXllckZhY3Rvcnkgewog
ICAgIE1lZGlhRW5naW5lU3VwcG9ydHNLZXlTeXN0ZW0gc3VwcG9ydHNLZXlTeXN0ZW07CiB9Owog
Ci1zdGF0aWMgdm9pZCBhZGRNZWRpYUVuZ2luZShDcmVhdGVNZWRpYUVuZ2luZVBsYXllciwgTWVk
aWFFbmdpbmVTdXBwb3J0ZWRUeXBlcywgTWVkaWFFbmdpbmVTdXBwb3J0c1R5cGUsIE1lZGlhRW5n
aW5lT3JpZ2luc0luTWVkaWFDYWNoZSwgTWVkaWFFbmdpbmVDbGVhck1lZGlhQ2FjaGUsIE1lZGlh
RW5naW5lQ2xlYXJNZWRpYUNhY2hlRm9yT3JpZ2lucywgTWVkaWFFbmdpbmVTdXBwb3J0c0tleVN5
c3RlbSk7CitzdGF0aWMgdm9pZCBhZGRNZWRpYUVuZ2luZShDcmVhdGVNZWRpYUVuZ2luZVBsYXll
ciYmLCBNZWRpYUVuZ2luZVN1cHBvcnRlZFR5cGVzLCBNZWRpYUVuZ2luZVN1cHBvcnRzVHlwZSwg
TWVkaWFFbmdpbmVPcmlnaW5zSW5NZWRpYUNhY2hlLCBNZWRpYUVuZ2luZUNsZWFyTWVkaWFDYWNo
ZSwgTWVkaWFFbmdpbmVDbGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5zLCBNZWRpYUVuZ2luZVN1cHBv
cnRzS2V5U3lzdGVtKTsKIAogc3RhdGljIExvY2smIG1lZGlhRW5naW5lVmVjdG9yTG9jaygpCiB7
CkBAIC0yNjksMTQgKzI2OSwxNCBAQCBzdGF0aWMgY29uc3QgVmVjdG9yPE1lZGlhUGxheWVyRmFj
dG9yeT4mIGluc3RhbGxlZE1lZGlhRW5naW5lcygpCiAgICAgcmV0dXJuIG11dGFibGVJbnN0YWxs
ZWRNZWRpYUVuZ2luZXNWZWN0b3IoKTsKIH0KIAotc3RhdGljIHZvaWQgYWRkTWVkaWFFbmdpbmUo
Q3JlYXRlTWVkaWFFbmdpbmVQbGF5ZXIgY29uc3RydWN0b3IsIE1lZGlhRW5naW5lU3VwcG9ydGVk
VHlwZXMgZ2V0U3VwcG9ydGVkVHlwZXMsIE1lZGlhRW5naW5lU3VwcG9ydHNUeXBlIHN1cHBvcnRz
VHlwZSwKK3N0YXRpYyB2b2lkIGFkZE1lZGlhRW5naW5lKENyZWF0ZU1lZGlhRW5naW5lUGxheWVy
JiYgY29uc3RydWN0b3IsIE1lZGlhRW5naW5lU3VwcG9ydGVkVHlwZXMgZ2V0U3VwcG9ydGVkVHlw
ZXMsIE1lZGlhRW5naW5lU3VwcG9ydHNUeXBlIHN1cHBvcnRzVHlwZSwKICAgICBNZWRpYUVuZ2lu
ZU9yaWdpbnNJbk1lZGlhQ2FjaGUgb3JpZ2luc0luTWVkaWFDYWNoZSwgTWVkaWFFbmdpbmVDbGVh
ck1lZGlhQ2FjaGUgY2xlYXJNZWRpYUNhY2hlLCBNZWRpYUVuZ2luZUNsZWFyTWVkaWFDYWNoZUZv
ck9yaWdpbnMgY2xlYXJNZWRpYUNhY2hlRm9yT3JpZ2lucywgTWVkaWFFbmdpbmVTdXBwb3J0c0tl
eVN5c3RlbSBzdXBwb3J0c0tleVN5c3RlbSkKIHsKICAgICBBU1NFUlQoY29uc3RydWN0b3IpOwog
ICAgIEFTU0VSVChnZXRTdXBwb3J0ZWRUeXBlcyk7CiAgICAgQVNTRVJUKHN1cHBvcnRzVHlwZSk7
CiAKLSAgICBtdXRhYmxlSW5zdGFsbGVkTWVkaWFFbmdpbmVzVmVjdG9yKCkuYXBwZW5kKE1lZGlh
UGxheWVyRmFjdG9yeSB7IGNvbnN0cnVjdG9yLCBnZXRTdXBwb3J0ZWRUeXBlcywgc3VwcG9ydHNU
eXBlLCBvcmlnaW5zSW5NZWRpYUNhY2hlLCBjbGVhck1lZGlhQ2FjaGUsIGNsZWFyTWVkaWFDYWNo
ZUZvck9yaWdpbnMsIHN1cHBvcnRzS2V5U3lzdGVtIH0pOworICAgIG11dGFibGVJbnN0YWxsZWRN
ZWRpYUVuZ2luZXNWZWN0b3IoKS5hcHBlbmQoTWVkaWFQbGF5ZXJGYWN0b3J5IHsgV1RGTW92ZShj
b25zdHJ1Y3RvciksIGdldFN1cHBvcnRlZFR5cGVzLCBzdXBwb3J0c1R5cGUsIG9yaWdpbnNJbk1l
ZGlhQ2FjaGUsIGNsZWFyTWVkaWFDYWNoZSwgY2xlYXJNZWRpYUNhY2hlRm9yT3JpZ2lucywgc3Vw
cG9ydHNLZXlTeXN0ZW0gfSk7CiB9CiAKIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIGFwcGxp
Y2F0aW9uT2N0ZXRTdHJlYW0oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvTWVkaWFQbGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L01lZGlhUGxheWVyLmgKaW5kZXggMWNiMzUwNGIxMjA5OTkwOWJkNDIzZWY5YWJmNzk1ZTZjZjU4
NTY4OC4uOTJmMjQ4NTY4ZGVjOWExYjMyOTllNmEwNzNkODRlZTRhZTVmMzZkYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCkBAIC02MjgsNyAr
NjI4LDcgQEAgcHJpdmF0ZToKICNlbmRpZgogfTsKIAotdHlwZWRlZiBzdGQ6OmZ1bmN0aW9uPHN0
ZDo6dW5pcXVlX3B0cjxNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2U+IChNZWRpYVBsYXllciop
PiBDcmVhdGVNZWRpYUVuZ2luZVBsYXllcjsKK3VzaW5nIENyZWF0ZU1lZGlhRW5naW5lUGxheWVy
ID0gV1RGOjpGdW5jdGlvbjxzdGQ6OnVuaXF1ZV9wdHI8TWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJm
YWNlPiAoTWVkaWFQbGF5ZXIqKT47CiB0eXBlZGVmIHZvaWQgKCpNZWRpYUVuZ2luZVN1cHBvcnRl
ZFR5cGVzKShIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiYgdHlwZXMp
OwogdHlwZWRlZiBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlICgqTWVkaWFFbmdpbmVTdXBwb3J0
c1R5cGUpKGNvbnN0IE1lZGlhRW5naW5lU3VwcG9ydFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpOwog
dHlwZWRlZiBIYXNoU2V0PFJlZlB0cjxTZWN1cml0eU9yaWdpbj4+ICgqTWVkaWFFbmdpbmVPcmln
aW5zSW5NZWRpYUNhY2hlKShjb25zdCBTdHJpbmcmIHBhdGgpOwpAQCAtNjM2LDcgKzYzNiw3IEBA
IHR5cGVkZWYgdm9pZCAoKk1lZGlhRW5naW5lQ2xlYXJNZWRpYUNhY2hlKShjb25zdCBTdHJpbmcm
IHBhdGgsIHN0ZDo6Y2hyb25vOjpzeXN0CiB0eXBlZGVmIHZvaWQgKCpNZWRpYUVuZ2luZUNsZWFy
TWVkaWFDYWNoZUZvck9yaWdpbnMpKGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgSGFzaFNldDxS
ZWZQdHI8U2VjdXJpdHlPcmlnaW4+PiYpOwogdHlwZWRlZiBib29sICgqTWVkaWFFbmdpbmVTdXBw
b3J0c0tleVN5c3RlbSkoY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0sIGNvbnN0IFN0cmluZyYgbWlt
ZVR5cGUpOwogCi10eXBlZGVmIHZvaWQgKCpNZWRpYUVuZ2luZVJlZ2lzdHJhcikoQ3JlYXRlTWVk
aWFFbmdpbmVQbGF5ZXIsIE1lZGlhRW5naW5lU3VwcG9ydGVkVHlwZXMsIE1lZGlhRW5naW5lU3Vw
cG9ydHNUeXBlLAordHlwZWRlZiB2b2lkICgqTWVkaWFFbmdpbmVSZWdpc3RyYXIpKENyZWF0ZU1l
ZGlhRW5naW5lUGxheWVyJiYsIE1lZGlhRW5naW5lU3VwcG9ydGVkVHlwZXMsIE1lZGlhRW5naW5l
U3VwcG9ydHNUeXBlLAogICAgIE1lZGlhRW5naW5lT3JpZ2luc0luTWVkaWFDYWNoZSwgTWVkaWFF
bmdpbmVDbGVhck1lZGlhQ2FjaGUsIE1lZGlhRW5naW5lQ2xlYXJNZWRpYUNhY2hlRm9yT3JpZ2lu
cywgTWVkaWFFbmdpbmVTdXBwb3J0c0tleVN5c3RlbSk7CiB0eXBlZGVmIHZvaWQgKCpNZWRpYUVu
Z2luZVJlZ2lzdGVyKShNZWRpYUVuZ2luZVJlZ2lzdHJhcik7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BhdGguaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL1BhdGguaAppbmRleCAyODMxY2ZlMzNlN2MwNmE4OGQzYzZiODNjOTEyNmI4
NTAyYTM0ZWZjLi43Y2FiYTRjYjZlNzg5MzgzM2RkOGI2YWMxNGNmZWM5ZjFjMjk5NzFjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXRoLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0aC5oCkBAIC0zMCw4ICszMCw4IEBACiAK
ICNpbmNsdWRlICJGbG9hdFJlY3QuaCIKICNpbmNsdWRlICJXaW5kUnVsZS5oIgotI2luY2x1ZGUg
PGZ1bmN0aW9uYWw+CiAjaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KKyNpbmNsdWRlIDx3dGYv
RnVuY3Rpb24uaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0
b3IuaD4KIApAQCAtMTAxLDcgKzEwMSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAg
RmxvYXRQb2ludCogcG9pbnRzOwogICAgIH07CiAKLSAgICB0eXBlZGVmIHN0ZDo6ZnVuY3Rpb248
dm9pZCAoY29uc3QgUGF0aEVsZW1lbnQmKT4gUGF0aEFwcGxpZXJGdW5jdGlvbjsKKyAgICB1c2lu
ZyBQYXRoQXBwbGllckZ1bmN0aW9uID0gV1RGOjpGdW5jdGlvbjx2b2lkIChjb25zdCBQYXRoRWxl
bWVudCYpPjsKIAogICAgIGNsYXNzIFBhdGggewogICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24uY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbi5jcHAKaW5kZXggYjBjMjZhZjUzM2Y0MjM3YzQ3NjQ5NjE1YjRlZDY0MWI0MmMwZGU4
ZC4uNWRiODc3M2Y1YTVmOTNmMzExOTNiOTUzMGRiNGNlM2RiYTNjYjQ5ZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5jcHAKQEAg
LTY1OSw3ICs2NTksNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbjo6c2Vl
a0NvbXBsZXRlZChib29sIGZpbmlzaGVkKQogCiAgICAgbV9zZWVraW5nID0gZmFsc2U7CiAKLSAg
ICBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4gcGVuZGluZ1NlZWs7CisgICAgV1RGOjpGdW5jdGlvbjx2
b2lkKCk+IHBlbmRpbmdTZWVrOwogICAgIHN0ZDo6c3dhcChwZW5kaW5nU2VlaywgbV9wZW5kaW5n
U2Vlayk7CiAKICAgICBpZiAocGVuZGluZ1NlZWspIHsKQEAgLTc5MCwxNiArNzkwLDE3IEBAIHN0
YXRpYyBjb25zdCBjaGFyKiBub3RpZmljYXRpb25OYW1lKE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbjo6Tm90aWZpY2F0aW9uCiAjZW5kaWYgLy8gIUxPR19ESVNBQkxFRAogICAgIAogCi12
b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbjo6c2NoZWR1bGVNYWluVGhyZWFkTm90
aWZpY2F0aW9uKE5vdGlmaWNhdGlvbiBub3RpZmljYXRpb24pCit2b2lkIE1lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbjo6c2NoZWR1bGVNYWluVGhyZWFkTm90aWZpY2F0aW9uKE5vdGlmaWNh
dGlvbiYmIG5vdGlmaWNhdGlvbikKIHsKLSAgICBpZiAobm90aWZpY2F0aW9uLnR5cGUoKSAhPSBO
b3RpZmljYXRpb246OkZ1bmN0aW9uVHlwZSkKKyAgICBhdXRvIG5vdGlmaWNhdGlvblR5cGUgPSBu
b3RpZmljYXRpb24udHlwZSgpOworICAgIGlmIChub3RpZmljYXRpb25UeXBlICE9IE5vdGlmaWNh
dGlvbjo6RnVuY3Rpb25UeXBlKQogICAgICAgICBMT0coTWVkaWEsICJNZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb246OnNjaGVkdWxlTWFpblRocmVhZE5vdGlmaWNhdGlvbiglcCkgLSBub3Rp
ZmljYXRpb24gJXMiLCB0aGlzLCBub3RpZmljYXRpb25OYW1lKG5vdGlmaWNhdGlvbikpOwogCiAg
ICAgbV9xdWV1ZU11dGV4LmxvY2soKTsKIAogICAgIC8vIEl0IGlzIGltcG9ydGFudCB0byBhbHdh
eXMgcHJvY2VzcyB0aGUgcHJvcGVydGllcyBpbiB0aGUgb3JkZXIgdGhhdCB3ZSBhcmUgbm90aWZp
ZWQsCiAgICAgLy8gc28gYWx3YXlzIGdvIHRocm91Z2ggdGhlIHF1ZXVlIGJlY2F1c2Ugbm90aWZp
Y2F0aW9ucyBoYXBwZW4gb24gZGlmZmVyZW50IHRocmVhZHMuCi0gICAgbV9xdWV1ZWROb3RpZmlj
YXRpb25zLmFwcGVuZChub3RpZmljYXRpb24pOworICAgIG1fcXVldWVkTm90aWZpY2F0aW9ucy5h
cHBlbmQoV1RGTW92ZShub3RpZmljYXRpb24pKTsKIAogI2lmIE9TKFdJTkRPV1MpCiAgICAgYm9v
bCBkZWxheURpc3BhdGNoID0gdHJ1ZTsKQEAgLTgyMCw3ICs4MjEsNyBAQCB2b2lkIE1lZGlhUGxh
eWVyUHJpdmF0ZUFWRm91bmRhdGlvbjo6c2NoZWR1bGVNYWluVGhyZWFkTm90aWZpY2F0aW9uKE5v
dGlmaWNhdGlvbgogICAgIG1fcXVldWVNdXRleC51bmxvY2soKTsKIAogICAgIGlmIChkZWxheURp
c3BhdGNoKSB7Ci0gICAgICAgIGlmIChub3RpZmljYXRpb24udHlwZSgpICE9IE5vdGlmaWNhdGlv
bjo6RnVuY3Rpb25UeXBlKQorICAgICAgICBpZiAobm90aWZpY2F0aW9uVHlwZSAhPSBOb3RpZmlj
YXRpb246OkZ1bmN0aW9uVHlwZSkKICAgICAgICAgICAgIExPRyhNZWRpYSwgIk1lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbjo6c2NoZWR1bGVNYWluVGhyZWFkTm90aWZpY2F0aW9uKCVwKSAt
IGVhcmx5IHJldHVybiIsIHRoaXMpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtODMyLDcg
KzgzMyw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uOjpkaXNwYXRjaE5v
dGlmaWNhdGlvbigpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIAotICAgIE5vdGlm
aWNhdGlvbiBub3RpZmljYXRpb24gPSBOb3RpZmljYXRpb24oKTsKKyAgICBOb3RpZmljYXRpb24g
bm90aWZpY2F0aW9uOwogICAgIHsKICAgICAgICAgTG9ja0hvbGRlciBsb2NrKG1fcXVldWVNdXRl
eCk7CiAgICAgICAgIApAQCAtODQxLDggKzg0Miw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uOjpkaXNwYXRjaE5vdGlmaWNhdGlvbigpCiAgICAgICAgIAogICAgICAgICBp
ZiAoIW1fZGVsYXlDYWxsYmFja3MpIHsKICAgICAgICAgICAgIC8vIE9ubHkgZGlzcGF0Y2ggb25l
IG5vdGlmaWNhdGlvbiBjYWxsYmFjayBwZXIgaW52b2NhdGlvbiBiZWNhdXNlIHRoZXkgY2FuIGNh
dXNlIHJlY3Vyc2lvbi4KLSAgICAgICAgICAgIG5vdGlmaWNhdGlvbiA9IG1fcXVldWVkTm90aWZp
Y2F0aW9ucy5maXJzdCgpOwotICAgICAgICAgICAgbV9xdWV1ZWROb3RpZmljYXRpb25zLnJlbW92
ZSgwKTsKKyAgICAgICAgICAgIG5vdGlmaWNhdGlvbiA9IG1fcXVldWVkTm90aWZpY2F0aW9ucy50
YWtlRmlyc3QoKTsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgaWYgKCFtX3F1ZXVlZE5v
dGlmaWNhdGlvbnMuaXNFbXB0eSgpICYmICFtX21haW5UaHJlYWRDYWxsUGVuZGluZykgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01l
ZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5oCmlu
ZGV4IDBhZDI5OGIwNWZjMGEzMDcwNWIxZWI4MDMxNjA4ZWI0OWY4ZjJmMzEuLjA4OGJhNDcwNTc4
YTdjZDM5ZjFkOTAxN2NmNTk4NDIwNTdmZjg2NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmgKQEAgLTMyLDcgKzMyLDggQEAKICNp
bmNsdWRlICJJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGLmgiCiAjaW5jbHVkZSAiTWVkaWFQbGF5
ZXJQcml2YXRlLmgiCiAjaW5jbHVkZSAiVGltZXIuaCIKLSNpbmNsdWRlIDxmdW5jdGlvbmFsPgor
I2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgorI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgogI2luY2x1
ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL0xvY2suaD4KICNpbmNsdWRlIDx3dGYv
UmV0YWluUHRyLmg+CkBAIC0xMTMsMTAgKzExNCwxMCBAQCBwdWJsaWM6CiAgICAgICAgIHsKICAg
ICAgICAgfQogCi0gICAgICAgIE5vdGlmaWNhdGlvbihzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+IGZ1
bmN0aW9uKQorICAgICAgICBOb3RpZmljYXRpb24oV1RGOjpGdW5jdGlvbjx2b2lkICgpPiYmIGZ1
bmN0aW9uKQogICAgICAgICAgICAgOiBtX3R5cGUoRnVuY3Rpb25UeXBlKQogICAgICAgICAgICAg
LCBtX2ZpbmlzaGVkKGZhbHNlKQotICAgICAgICAgICAgLCBtX2Z1bmN0aW9uKGZ1bmN0aW9uKQor
ICAgICAgICAgICAgLCBtX2Z1bmN0aW9uKFdURk1vdmUoZnVuY3Rpb24pKQogICAgICAgICB7CiAg
ICAgICAgIH0KICAgICAgICAgCkBAIC0xMjQsMTYgKzEyNSwxNiBAQCBwdWJsaWM6CiAgICAgICAg
IGJvb2wgaXNWYWxpZCgpIHsgcmV0dXJuIG1fdHlwZSAhPSBOb25lOyB9CiAgICAgICAgIE1lZGlh
VGltZSB0aW1lKCkgeyByZXR1cm4gbV90aW1lOyB9CiAgICAgICAgIGJvb2wgZmluaXNoZWQoKSB7
IHJldHVybiBtX2ZpbmlzaGVkOyB9Ci0gICAgICAgIHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4mIGZ1
bmN0aW9uKCkgeyByZXR1cm4gbV9mdW5jdGlvbjsgfQorICAgICAgICBXVEY6OkZ1bmN0aW9uPHZv
aWQgKCk+JiBmdW5jdGlvbigpIHsgcmV0dXJuIG1fZnVuY3Rpb247IH0KICAgICAgICAgCiAgICAg
cHJpdmF0ZToKICAgICAgICAgVHlwZSBtX3R5cGU7CiAgICAgICAgIE1lZGlhVGltZSBtX3RpbWU7
CiAgICAgICAgIGJvb2wgbV9maW5pc2hlZDsKLSAgICAgICAgc3RkOjpmdW5jdGlvbjx2b2lkICgp
PiBtX2Z1bmN0aW9uOworICAgICAgICBXVEY6OkZ1bmN0aW9uPHZvaWQgKCk+IG1fZnVuY3Rpb247
CiAgICAgfTsKIAotICAgIHZvaWQgc2NoZWR1bGVNYWluVGhyZWFkTm90aWZpY2F0aW9uKE5vdGlm
aWNhdGlvbik7CisgICAgdm9pZCBzY2hlZHVsZU1haW5UaHJlYWROb3RpZmljYXRpb24oTm90aWZp
Y2F0aW9uJiYpOwogICAgIHZvaWQgc2NoZWR1bGVNYWluVGhyZWFkTm90aWZpY2F0aW9uKE5vdGlm
aWNhdGlvbjo6VHlwZSwgY29uc3QgTWVkaWFUaW1lJiA9IE1lZGlhVGltZTo6emVyb1RpbWUoKSk7
CiAgICAgdm9pZCBzY2hlZHVsZU1haW5UaHJlYWROb3RpZmljYXRpb24oTm90aWZpY2F0aW9uOjpU
eXBlLCBib29sIGNvbXBsZXRlZCk7CiAgICAgdm9pZCBkaXNwYXRjaE5vdGlmaWNhdGlvbigpOwpA
QCAtMzE3LDkgKzMxOCw5IEBAIHByaXZhdGU6CiAKICAgICBXZWFrUHRyRmFjdG9yeTxNZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb24+IG1fd2Vha1B0ckZhY3Rvcnk7CiAKLSAgICBzdGQ6OmZ1
bmN0aW9uPHZvaWQoKT4gbV9wZW5kaW5nU2VlazsKKyAgICBXVEY6OkZ1bmN0aW9uPHZvaWQoKT4g
bV9wZW5kaW5nU2VlazsKIAotICAgIFZlY3RvcjxOb3RpZmljYXRpb24+IG1fcXVldWVkTm90aWZp
Y2F0aW9uczsKKyAgICBEZXF1ZTxOb3RpZmljYXRpb24+IG1fcXVldWVkTm90aWZpY2F0aW9uczsK
ICAgICBtdXRhYmxlIExvY2sgbV9xdWV1ZU11dGV4OwogCiAgICAgbXV0YWJsZSBzdGQ6OnVuaXF1
ZV9wdHI8UGxhdGZvcm1UaW1lUmFuZ2VzPiBtX2NhY2hlZExvYWRlZFRpbWVSYW5nZXM7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uT2JqQy5tbQppbmRleCA0ZmZkYTVlOWYzMmZhNTBhMWVmYWIzMmNmNTJiY2NjZGYx
NzdhMzMzLi42ZmRmNjFkZjQ5NDA4NmVmNTBlNTg1NTRlN2Q5ZGRlM2IwMTMyMGYzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9N
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbk9iakMubW0KQEAgLTMzNzUsNyArMzM3NSw3IEBAIC0gKHZvaWQpb2JzZXJ2ZVZh
bHVlRm9yS2V5UGF0aDprZXlQYXRoIG9mT2JqZWN0OihpZClvYmplY3QgY2hhbmdlOihOU0RpY3Rp
b25hcnkKICAgICB9CiAjZW5kaWYKIAotICAgIHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4gZnVuY3Rp
b247CisgICAgV1RGOjpGdW5jdGlvbjx2b2lkICgpPiBmdW5jdGlvbjsKIAogICAgIGlmIChjb250
ZXh0ID09IE1lZGlhUGxheWVyQVZGb3VuZGF0aW9uT2JzZXJ2YXRpb25Db250ZXh0QVZQbGF5ZXJM
YXllcikgewogICAgICAgICBpZiAoW2tleVBhdGggaXNFcXVhbFRvU3RyaW5nOkAicmVhZHlGb3JE
aXNwbGF5Il0pCkBAIC0zNDUwLDcgKzM0NTAsNyBAQCAtICh2b2lkKW9ic2VydmVWYWx1ZUZvcktl
eVBhdGg6a2V5UGF0aCBvZk9iamVjdDooaWQpb2JqZWN0IGNoYW5nZTooTlNEaWN0aW9uYXJ5CiAg
ICAgICAgIHJldHVybjsKIAogICAgIGF1dG8gd2Vha1RoaXMgPSBtX2NhbGxiYWNrLT5jcmVhdGVX
ZWFrUHRyKCk7Ci0gICAgbV9jYWxsYmFjay0+c2NoZWR1bGVNYWluVGhyZWFkTm90aWZpY2F0aW9u
KE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbjo6Tm90aWZpY2F0aW9uKFt3ZWFrVGhpcywg
ZnVuY3Rpb25deworICAgIG1fY2FsbGJhY2stPnNjaGVkdWxlTWFpblRocmVhZE5vdGlmaWNhdGlv
bihNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb246Ok5vdGlmaWNhdGlvbihbd2Vha1RoaXMs
IGZ1bmN0aW9uID0gV1RGTW92ZShmdW5jdGlvbildewogICAgICAgICAvLyB3ZWFrVGhpcyBhbmQg
ZnVuY3Rpb24gYm90aCByZWZlciB0byB0aGUgc2FtZSBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb25PYmpDIGluc3RhbmNlLiBJZiB0aGUgV2Vha1B0ciBoYXMKICAgICAgICAgLy8gYmVlbiBj
bGVhcmVkLCB0aGUgdW5kZXJseWluZyBvYmplY3QgaGFzIGJlZW4gZGVzdHJveWVkLCBhbmQgaXQg
aXMgdW5zYWZlIHRvIGNhbGwgZnVuY3Rpb24oKS4KICAgICAgICAgaWYgKCF3ZWFrVGhpcykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0
ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbQppbmRleCAzOGNhZGU5NDlhOGU1NTdjMzQ4Mzc3OWFkNTVm
YjRlMGQzZjEwNzI2Li45NWFiNDVjY2VkMjAxNmI4OWIwMWM0Zjg4NmZkZjZlYTk4NmJiZmFlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQ
cml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tCkBAIC00MSw2ICs0MSw3IEBACiAjaW1wb3J0IDxR
dWFydHpDb3JlL0NBTGF5ZXIuaD4KICNpbXBvcnQgPFF1YXJ0ekNvcmUvQ0FUcmFuc2FjdGlvbi5o
PgogI2ltcG9ydCA8b2JqY19ydW50aW1lLmg+CisjaW1wb3J0IDx3dGYvRnVuY3Rpb24uaD4KICNp
bXBvcnQgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW1wb3J0IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4K
IApAQCAtMzI1LDcgKzMyNiw3IEBAIENHQWZmaW5lVHJhbnNmb3JtIE1lZGlhUGxheWVyUHJpdmF0
ZU1lZGlhU3RyZWFtQVZGT2JqQzo6dmlkZW9UcmFuc2Zvcm1hdGlvbk1hdHJpCiAgICAgcmV0dXJu
IG1fdmlkZW9UcmFuc2Zvcm07CiB9CiAKLXN0YXRpYyB2b2lkIHJ1bldpdGhvdXRBbmltYXRpb25z
KHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiBmdW5jdGlvbikKK3N0YXRpYyB2b2lkIHJ1bldpdGhvdXRB
bmltYXRpb25zKGNvbnN0IFdURjo6RnVuY3Rpb248dm9pZCgpPiYgZnVuY3Rpb24pCiB7CiAgICAg
W0NBVHJhbnNhY3Rpb24gYmVnaW5dOwogICAgIFtDQVRyYW5zYWN0aW9uIHNldEFuaW1hdGlvbkR1
cmF0aW9uOjBdOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y29jb2EvSU9TdXJmYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9JT1N1cmZhY2UuaAppbmRleCAyMTY5OWYzNmZkYzAwNTE5ZDBhOTM5NGY1M2QyZDVlMDdjNmNm
MWU1Li4wMGFkMmNiMzQzOWZiYjliMjZiMTFhYjFiNmZkMzdlM2YzMjYwMDI0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9JT1N1cmZhY2UuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9JT1N1cmZhY2UuaApAQCAt
OTYsNyArOTYsNyBAQCBwdWJsaWM6CiAKICNpZiBQTEFURk9STShJT1MpCiAgICAgV0VCQ09SRV9F
WFBPUlQgc3RhdGljIGJvb2wgYWxsb3dDb252ZXJzaW9uRnJvbUZvcm1hdFRvRm9ybWF0KEZvcm1h
dCwgRm9ybWF0KTsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9pZCBjb252ZXJ0VG9Gb3Jt
YXQoc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OklPU3VyZmFjZT4mJiBpblN1cmZhY2UsIEZvcm1h
dCwgc3RkOjpmdW5jdGlvbjx2b2lkKHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpJT1N1cmZhY2U+
KT4pOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIGNvbnZlcnRUb0Zvcm1hdChzdGQ6
OnVuaXF1ZV9wdHI8V2ViQ29yZTo6SU9TdXJmYWNlPiYmIGluU3VyZmFjZSwgRm9ybWF0LCBXVEY6
OkZ1bmN0aW9uPHZvaWQoc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OklPU3VyZmFjZT4pPiYmKTsK
ICNlbmRpZgogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvSU9TdXJmYWNlLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvSU9TdXJmYWNlLm1tCmluZGV4IDc4Yzc4MDIzODgxNjNjNWRmZDc1MmM2OTky
YjMzZGE4N2UxODNjYzYuLjQ5ZDA0NmU5Y2QyNWFjNjQ0Mzk1NGQzNmZlYmQyMzkwOGM2ZDM3ODAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0lPU3Vy
ZmFjZS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9JT1N1
cmZhY2UubW0KQEAgLTM4MCw3ICszODAsNyBAQCBib29sIFdlYkNvcmU6OklPU3VyZmFjZTo6YWxs
b3dDb252ZXJzaW9uRnJvbUZvcm1hdFRvRm9ybWF0KEZvcm1hdCBzb3VyY2VGb3JtYXQsCiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgV2ViQ29yZTo6SU9TdXJmYWNlOjpjb252ZXJ0VG9Gb3Jt
YXQoc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OklPU3VyZmFjZT4mJiBpblN1cmZhY2UsIEZvcm1h
dCBmb3JtYXQsIHN0ZDo6ZnVuY3Rpb248dm9pZChzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6SU9T
dXJmYWNlPik+IGNhbGxiYWNrKQordm9pZCBXZWJDb3JlOjpJT1N1cmZhY2U6OmNvbnZlcnRUb0Zv
cm1hdChzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6SU9TdXJmYWNlPiYmIGluU3VyZmFjZSwgRm9y
bWF0IGZvcm1hdCwgV1RGOjpGdW5jdGlvbjx2b2lkKHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpJ
T1N1cmZhY2U+KT4mJiBjYWxsYmFjaykKIHsKICAgICBzdGF0aWMgSU9TdXJmYWNlQWNjZWxlcmF0
b3JSZWYgYWNjZWxlcmF0b3I7CiAgICAgaWYgKCFhY2NlbGVyYXRvcikgewpAQCAtNDAzLDEwICs0
MDMsMTAgQEAgdm9pZCBXZWJDb3JlOjpJT1N1cmZhY2U6OmNvbnZlcnRUb0Zvcm1hdChzdGQ6OnVu
aXF1ZV9wdHI8V2ViQ29yZTo6SU9TdXJmYWNlPiYmIGkKIAogICAgIElPU3VyZmFjZVJlZiBkZXN0
aW5hdGlvbklPU3VyZmFjZVJlZiA9IGRlc3RpbmF0aW9uU3VyZmFjZS0+c3VyZmFjZSgpOwogICAg
IElPU3VyZmFjZUFjY2VsZXJhdG9yQ29tcGxldGlvbiBjb21wbGV0aW9uOwotICAgIGNvbXBsZXRp
b24uY29tcGxldGlvblJlZkNvbiA9IG5ldyBzdGQ6OmZ1bmN0aW9uPHZvaWQoc3RkOjp1bmlxdWVf
cHRyPFdlYkNvcmU6OklPU3VyZmFjZT4pPiAoV1RGTW92ZShjYWxsYmFjaykpOworICAgIGNvbXBs
ZXRpb24uY29tcGxldGlvblJlZkNvbiA9IG5ldyBXVEY6OkZ1bmN0aW9uPHZvaWQoc3RkOjp1bmlx
dWVfcHRyPFdlYkNvcmU6OklPU3VyZmFjZT4pPiAoV1RGTW92ZShjYWxsYmFjaykpOwogICAgIGNv
bXBsZXRpb24uY29tcGxldGlvblJlZkNvbjIgPSBkZXN0aW5hdGlvblN1cmZhY2UucmVsZWFzZSgp
OwogICAgIGNvbXBsZXRpb24uY29tcGxldGlvbkNhbGxiYWNrID0gW10odm9pZCAqY29tcGxldGlv
blJlZkNvbiwgSU9SZXR1cm4sIHZvaWQgKiBjb21wbGV0aW9uUmVmQ29uMikgewotICAgICAgICBh
dXRvKiBjYWxsYmFjayA9IHN0YXRpY19jYXN0PHN0ZDo6ZnVuY3Rpb248dm9pZChzdGQ6OnVuaXF1
ZV9wdHI8V2ViQ29yZTo6SU9TdXJmYWNlPik+Kj4oY29tcGxldGlvblJlZkNvbik7CisgICAgICAg
IGF1dG8qIGNhbGxiYWNrID0gc3RhdGljX2Nhc3Q8V1RGOjpGdW5jdGlvbjx2b2lkKHN0ZDo6dW5p
cXVlX3B0cjxXZWJDb3JlOjpJT1N1cmZhY2U+KT4qPihjb21wbGV0aW9uUmVmQ29uKTsKICAgICAg
ICAgYXV0byBkZXN0aW5hdGlvblN1cmZhY2UgPSBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6SU9T
dXJmYWNlPihzdGF0aWNfY2FzdDxXZWJDb3JlOjpJT1N1cmZhY2UqPihjb21wbGV0aW9uUmVmQ29u
MikpOwogICAgICAgICAKICAgICAgICAgKCpjYWxsYmFjaykoV1RGTW92ZShkZXN0aW5hdGlvblN1
cmZhY2UpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9NYWluVGhyZWFkTm90aWZpZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9NYWluVGhyZWFkTm90aWZpZXIuaAppbmRleCBmMTQwNTBkZDJlZjQ0
NjljMDE4MDkyYTVkN2Q4NzJlMDZjMWU4MTAwLi4zNzUyZGMyNzVlNzE5NTc4ZWJmMTk1OTZmNGZh
NmJmMmZjODhmOWI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvTWFpblRocmVhZE5vdGlmaWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01haW5UaHJlYWROb3RpZmllci5oCkBAIC0zNiw3ICsz
Niw3IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGPgotICAgIHZv
aWQgbm90aWZ5KFQgbm90aWZpY2F0aW9uVHlwZSwgY29uc3QgRiYgY2FsbGJhY2tGdW5jdG9yKQor
ICAgIHZvaWQgbm90aWZ5KFQgbm90aWZpY2F0aW9uVHlwZSwgRiYmIGNhbGxiYWNrRnVuY3RvcikK
ICAgICB7CiAgICAgICAgIEFTU0VSVChtX2lzVmFsaWQubG9hZCgpKTsKICAgICAgICAgaWYgKGlz
TWFpblRocmVhZCgpKSB7CkBAIC00OCw3ICs0OCw3IEBAIHB1YmxpYzoKICAgICAgICAgaWYgKCFh
ZGRQZW5kaW5nTm90aWZpY2F0aW9uKG5vdGlmaWNhdGlvblR5cGUpKQogICAgICAgICAgICAgcmV0
dXJuOwogCi0gICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVk
VGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBub3RpZmljYXRpb25UeXBlLCBjYWxsYmFjayA9IHN0ZDo6
ZnVuY3Rpb248dm9pZCgpPihjYWxsYmFja0Z1bmN0b3IpXSB7CisgICAgICAgIFJ1bkxvb3A6Om1h
aW4oKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBub3Rp
ZmljYXRpb25UeXBlLCBjYWxsYmFjayA9IFdURjo6RnVuY3Rpb248dm9pZCgpPihXVEZNb3ZlKGNh
bGxiYWNrRnVuY3RvcikpXSB7CiAgICAgICAgICAgICBpZiAoIW1faXNWYWxpZC5sb2FkKCkpCiAg
ICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgaWYgKHJlbW92ZVBlbmRpbmdOb3Rp
ZmljYXRpb24obm90aWZpY2F0aW9uVHlwZSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJSZXF1ZXN0SW5zdGFsbE1pc3Np
bmdQbHVnaW5zQ2FsbGJhY2suaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9NZWRpYVBsYXllclJlcXVlc3RJbnN0YWxsTWlzc2luZ1BsdWdpbnNDYWxsYmFjay5o
CmluZGV4IDk1ZWQyZGE2MzNmMTJjYWQ0OGUzZmUwMDI0YzExYzE2N2Q2NzQ1M2UuLjA1ODdkMGRm
OTJiMDY4MmFmMjZjMDhkOGVlY2Q2ZmQ0OGYyZDY5NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclJlcXVlc3RJbnN0YWxs
TWlzc2luZ1BsdWdpbnNDYWxsYmFjay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclJlcXVlc3RJbnN0YWxsTWlzc2luZ1BsdWdpbnND
YWxsYmFjay5oCkBAIC0yMSw2ICsyMSw3IEBACiAjZGVmaW5lIE1lZGlhUGxheWVyUmVxdWVzdElu
c3RhbGxNaXNzaW5nUGx1Z2luc0NhbGxiYWNrX2gKIAogI2lmIEVOQUJMRShWSURFTykgJiYgVVNF
KEdTVFJFQU1FUikKKyNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KICNpbmNsdWRlIDx3dGYvUmVm
Q291bnRlZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0yOCw3ICsyOSw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIGNsYXNzIE1lZGlhUGxheWVyUmVxdWVzdEluc3RhbGxNaXNzaW5nUGx1
Z2luc0NhbGxiYWNrIDogcHVibGljIFJlZkNvdW50ZWQ8TWVkaWFQbGF5ZXJSZXF1ZXN0SW5zdGFs
bE1pc3NpbmdQbHVnaW5zQ2FsbGJhY2s+IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRCgp
OwogcHVibGljOgotICAgIHN0YXRpYyBSZWY8TWVkaWFQbGF5ZXJSZXF1ZXN0SW5zdGFsbE1pc3Np
bmdQbHVnaW5zQ2FsbGJhY2s+IGNyZWF0ZShzdGQ6OmZ1bmN0aW9uPHZvaWQgKHVpbnQzMl90KT4m
JiBmdW5jdGlvbikKKyAgICBzdGF0aWMgUmVmPE1lZGlhUGxheWVyUmVxdWVzdEluc3RhbGxNaXNz
aW5nUGx1Z2luc0NhbGxiYWNrPiBjcmVhdGUoV1RGOjpGdW5jdGlvbjx2b2lkICh1aW50MzJfdCk+
JiYgZnVuY3Rpb24pCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBNZWRpYVBs
YXllclJlcXVlc3RJbnN0YWxsTWlzc2luZ1BsdWdpbnNDYWxsYmFjayhXVEZNb3ZlKGZ1bmN0aW9u
KSkpOwogICAgIH0KQEAgLTQ3LDEyICs0OCwxMiBAQCBwdWJsaWM6CiAgICAgfQogCiBwcml2YXRl
OgotICAgIE1lZGlhUGxheWVyUmVxdWVzdEluc3RhbGxNaXNzaW5nUGx1Z2luc0NhbGxiYWNrKHN0
ZDo6ZnVuY3Rpb248dm9pZCAodWludDMyX3QpPiYmIGZ1bmN0aW9uKQorICAgIE1lZGlhUGxheWVy
UmVxdWVzdEluc3RhbGxNaXNzaW5nUGx1Z2luc0NhbGxiYWNrKFdURjo6RnVuY3Rpb248dm9pZCAo
dWludDMyX3QpPiYmIGZ1bmN0aW9uKQogICAgICAgICA6IG1fZnVuY3Rpb24oV1RGTW92ZShmdW5j
dGlvbikpCiAgICAgewogICAgIH0KIAotICAgIHN0ZDo6ZnVuY3Rpb248dm9pZCAodWludDMyX3Qp
PiBtX2Z1bmN0aW9uOworICAgIFdURjo6RnVuY3Rpb248dm9pZCAodWludDMyX3QpPiBtX2Z1bmN0
aW9uOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dERpcmVjdDJELmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHREaXJl
Y3QyRC5jcHAKaW5kZXggNjQwNTk3MGYyNzVlYmE1MmI3MWUyZGFiNGFkNzYwZWQ5YTMyZTJmMi4u
ZDA2NjdjM2QwMGNmMjhlMjMxYjIxYWU5NjI5NGQyY2Y2OThiM2I0NCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dERpcmVjdDJE
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3ND
b250ZXh0RGlyZWN0MkQuY3BwCkBAIC05MzUsNyArOTM1LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRl
eHQ6OmRyYXdQYXRoKGNvbnN0IFBhdGgmIHBhdGgpCiAgICAgZmx1c2goKTsKIH0KIAotdm9pZCBH
cmFwaGljc0NvbnRleHQ6OmRyYXdXaXRob3V0U2hhZG93KGNvbnN0IEZsb2F0UmVjdCYgLypib3Vu
ZGluZ1JlY3QqLywgY29uc3Qgc3RkOjpmdW5jdGlvbjx2b2lkKElEMkQxUmVuZGVyVGFyZ2V0Kik+
JiBkcmF3Q29tbWFuZHMpCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd1dpdGhvdXRTaGFkb3co
Y29uc3QgRmxvYXRSZWN0JiAvKmJvdW5kaW5nUmVjdCovLCBjb25zdCBXVEY6OkZ1bmN0aW9uPHZv
aWQoSUQyRDFSZW5kZXJUYXJnZXQqKT4mIGRyYXdDb21tYW5kcykKIHsKICAgICBkcmF3Q29tbWFu
ZHMocGxhdGZvcm1Db250ZXh0KCkpOwogfQpAQCAtOTgxLDcgKzk4MSw3IEBAIHN0YXRpYyB2b2lk
IGRyYXdXaXRoU2hhZG93SGVscGVyKElEMkQxUmVuZGVyVGFyZ2V0KiBjb250ZXh0LCBJRDJEMUJp
dG1hcCogYml0bWFwCiAgICAgZGV2aWNlQ29udGV4dC0+RHJhd0ltYWdlKGNvbXBvc2l0b3IuZ2V0
KCksIEQyRDFfSU5URVJQT0xBVElPTl9NT0RFX0xJTkVBUik7CiB9CiAKLXZvaWQgR3JhcGhpY3ND
b250ZXh0OjpkcmF3V2l0aFNoYWRvdyhjb25zdCBGbG9hdFJlY3QmIGJvdW5kaW5nUmVjdCwgY29u
c3Qgc3RkOjpmdW5jdGlvbjx2b2lkKElEMkQxUmVuZGVyVGFyZ2V0Kik+JiBkcmF3Q29tbWFuZHMp
Cit2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd1dpdGhTaGFkb3coY29uc3QgRmxvYXRSZWN0JiBi
b3VuZGluZ1JlY3QsIGNvbnN0IFdURjo6RnVuY3Rpb248dm9pZChJRDJEMVJlbmRlclRhcmdldCop
PiYgZHJhd0NvbW1hbmRzKQogewogICAgIGF1dG8gY29udGV4dCA9IHBsYXRmb3JtQ29udGV4dCgp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGFzdGVib2FyZEhl
bHBlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGFzdGVib2FyZEhlbHBlci5j
cHAKaW5kZXggMDgyZmI3Y2RhMzFiNmE0YmYxNjVjZmJjZjE0OThjNTA5Y2Q5Njg4Zi4uYmExNTZk
MTlkYmQwZmQ3Njk0NWI5OGNmNzIzMmE0ODBhNmQxMzFlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRIZWxwZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkSGVscGVyLmNwcApAQCAtMjY1LDcgKzI2NSw3IEBA
IFZlY3RvcjxHZGtBdG9tPiBQYXN0ZWJvYXJkSGVscGVyOjpkcm9wQXRvbXNGb3JDb250ZXh0KEd0
a1dpZGdldCogd2lkZ2V0LCBHZGtEcmFnCiBzdGF0aWMgU2VsZWN0aW9uRGF0YSogc2V0dGluZ0Ns
aXBib2FyZFNlbGVjdGlvbjsKIAogc3RydWN0IENsaXBib2FyZFNldERhdGEgewotICAgIENsaXBi
b2FyZFNldERhdGEoU2VsZWN0aW9uRGF0YSYgc2VsZWN0aW9uLCBzdGQ6OmZ1bmN0aW9uPHZvaWQo
KT4mJiBzZWxlY3Rpb25DbGVhcmVkQ2FsbGJhY2spCisgICAgQ2xpcGJvYXJkU2V0RGF0YShTZWxl
Y3Rpb25EYXRhJiBzZWxlY3Rpb24sIFdURjo6RnVuY3Rpb248dm9pZCgpPiYmIHNlbGVjdGlvbkNs
ZWFyZWRDYWxsYmFjaykKICAgICAgICAgOiBzZWxlY3Rpb25EYXRhKHNlbGVjdGlvbikKICAgICAg
ICAgLCBzZWxlY3Rpb25DbGVhcmVkQ2FsbGJhY2soV1RGTW92ZShzZWxlY3Rpb25DbGVhcmVkQ2Fs
bGJhY2spKQogICAgIHsKQEAgLTI3Niw3ICsyNzYsNyBAQCBzdHJ1Y3QgQ2xpcGJvYXJkU2V0RGF0
YSB7CiAgICAgfQogCiAgICAgUmVmPFNlbGVjdGlvbkRhdGE+IHNlbGVjdGlvbkRhdGE7Ci0gICAg
c3RkOjpmdW5jdGlvbjx2b2lkKCk+IHNlbGVjdGlvbkNsZWFyZWRDYWxsYmFjazsKKyAgICBXVEY6
OkZ1bmN0aW9udW5jdGlvbjx2b2lkKCk+IHNlbGVjdGlvbkNsZWFyZWRDYWxsYmFjazsKIH07CiAK
IHN0YXRpYyB2b2lkIGdldENsaXBib2FyZENvbnRlbnRzQ2FsbGJhY2soR3RrQ2xpcGJvYXJkKiwg
R3RrU2VsZWN0aW9uRGF0YSAqc2VsZWN0aW9uRGF0YSwgZ3VpbnQgaW5mbywgZ3BvaW50ZXIgdXNl
ckRhdGEpCkBAIC0yOTIsNyArMjkyLDcgQEAgc3RhdGljIHZvaWQgY2xlYXJDbGlwYm9hcmRDb250
ZW50c0NhbGxiYWNrKEd0a0NsaXBib2FyZCosIGdwb2ludGVyIHVzZXJEYXRhKQogICAgICAgICBk
YXRhLT5zZWxlY3Rpb25DbGVhcmVkQ2FsbGJhY2soKTsKIH0KIAotdm9pZCBQYXN0ZWJvYXJkSGVs
cGVyOjp3cml0ZUNsaXBib2FyZENvbnRlbnRzKEd0a0NsaXBib2FyZCogY2xpcGJvYXJkLCBjb25z
dCBTZWxlY3Rpb25EYXRhJiBzZWxlY3Rpb24sIHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiYmIHByaW1h
cnlTZWxlY3Rpb25DbGVhcmVkKQordm9pZCBQYXN0ZWJvYXJkSGVscGVyOjp3cml0ZUNsaXBib2Fy
ZENvbnRlbnRzKEd0a0NsaXBib2FyZCogY2xpcGJvYXJkLCBjb25zdCBTZWxlY3Rpb25EYXRhJiBz
ZWxlY3Rpb24sIFdURjo6RnVuY3Rpb248dm9pZCgpPiYmIHByaW1hcnlTZWxlY3Rpb25DbGVhcmVk
KQogewogICAgIEdSZWZQdHI8R3RrVGFyZ2V0TGlzdD4gbGlzdCA9IHRhcmdldExpc3RGb3JTZWxl
Y3Rpb25EYXRhKHNlbGVjdGlvbik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2d0ay9QYXN0ZWJvYXJkSGVscGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsv
UGFzdGVib2FyZEhlbHBlci5oCmluZGV4IDRhNGRlOTk1NmVkZThmNWU1Zjc2ZTI1YmZhNjRmODU2
M2E2M2I2ODguLjA5NWVlNGFkZDIyODc5OWRiNzhmMWFkZDE3ZDFjNDgwNzBkMDYwNjUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkSGVscGVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRIZWxwZXIuaApAQCAtMjYs
NyArMjYsNyBAQAogI2RlZmluZSBQYXN0ZWJvYXJkSGVscGVyX2gKIAogI2luY2x1ZGUgIkdSZWZQ
dHJHdGsuaCIKLSNpbmNsdWRlIDxmdW5jdGlvbmFsPgorI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5o
PgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4K
ICNpbmNsdWRlIDx3dGYvZ2xpYi9HUmVmUHRyLmg+CkBAIC00Nyw3ICs0Nyw3IEBAIHB1YmxpYzoK
ICAgICB2b2lkIGZpbGxTZWxlY3Rpb25EYXRhKGNvbnN0IFNlbGVjdGlvbkRhdGEmLCB1bnNpZ25l
ZCwgR3RrU2VsZWN0aW9uRGF0YSopOwogICAgIHZvaWQgZmlsbFNlbGVjdGlvbkRhdGEoR3RrU2Vs
ZWN0aW9uRGF0YSosIHVuc2lnbmVkLCBTZWxlY3Rpb25EYXRhJik7CiAgICAgVmVjdG9yPEdka0F0
b20+IGRyb3BBdG9tc0ZvckNvbnRleHQoR3RrV2lkZ2V0KiwgR2RrRHJhZ0NvbnRleHQqKTsKLSAg
ICB2b2lkIHdyaXRlQ2xpcGJvYXJkQ29udGVudHMoR3RrQ2xpcGJvYXJkKiwgY29uc3QgU2VsZWN0
aW9uRGF0YSYsIHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiYmIHByaW1hcnlTZWxlY3Rpb25DbGVhcmVk
ID0gbnVsbHB0cik7CisgICAgdm9pZCB3cml0ZUNsaXBib2FyZENvbnRlbnRzKEd0a0NsaXBib2Fy
ZCosIGNvbnN0IFNlbGVjdGlvbkRhdGEmLCBXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJiBwcmltYXJ5
U2VsZWN0aW9uQ2xlYXJlZCA9IG51bGxwdHIpOwogICAgIHZvaWQgZ2V0Q2xpcGJvYXJkQ29udGVu
dHMoR3RrQ2xpcGJvYXJkKiwgU2VsZWN0aW9uRGF0YSYpOwogCiAgICAgZW51bSBQYXN0ZWJvYXJk
VGFyZ2V0VHlwZSB7IFRhcmdldFR5cGVNYXJrdXAsIFRhcmdldFR5cGVUZXh0LCBUYXJnZXRUeXBl
SW1hZ2UsIFRhcmdldFR5cGVVUklMaXN0LCBUYXJnZXRUeXBlTmV0c2NhcGVVUkwsIFRhcmdldFR5
cGVTbWFydFBhc3RlLCBUYXJnZXRUeXBlVW5rbm93biB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3RrL1BsYXRmb3JtUGFzdGVib2FyZEd0ay5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ndGsvUGxhdGZvcm1QYXN0ZWJvYXJkR3RrLmNwcAppbmRleCA4NDgxY2I4
NDI3ZTU5MDE0OTgxNTllNjBhYjg4YmJmY2UwZDA3NzBlLi5lYmEzZTAzNzYyMTg5OGY4NzUzNTYw
ZmZmY2ZkZGRjNmJkZTYyMzNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
dGsvUGxhdGZvcm1QYXN0ZWJvYXJkR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ndGsvUGxhdGZvcm1QYXN0ZWJvYXJkR3RrLmNwcApAQCAtMzQsNyArMzQsNyBAQCBQbGF0Zm9y
bVBhc3RlYm9hcmQ6OlBsYXRmb3JtUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lKQogICAgIEFTU0VSVChtX2NsaXBib2FyZCk7CiB9CiAKLXZvaWQgUGxhdGZvcm1QYXN0ZWJv
YXJkOjp3cml0ZVRvQ2xpcGJvYXJkKGNvbnN0IFNlbGVjdGlvbkRhdGEmIHNlbGVjdGlvbiwgc3Rk
OjpmdW5jdGlvbjx2b2lkKCk+JiYgcHJpbWFyeVNlbGVjdGlvbkNsZWFyZWQpCit2b2lkIFBsYXRm
b3JtUGFzdGVib2FyZDo6d3JpdGVUb0NsaXBib2FyZChjb25zdCBTZWxlY3Rpb25EYXRhJiBzZWxl
Y3Rpb24sIFdURjo6RnVuY3Rpb248dm9pZCgpPiYmIHByaW1hcnlTZWxlY3Rpb25DbGVhcmVkKQog
ewogICAgIFBhc3RlYm9hcmRIZWxwZXI6OnNpbmdsZXRvbigpLndyaXRlQ2xpcGJvYXJkQ29udGVu
dHMobV9jbGlwYm9hcmQsIHNlbGVjdGlvbiwgZ3RrX2NsaXBib2FyZF9nZXQoR0RLX1NFTEVDVElP
Tl9QUklNQVJZKSA9PSBtX2NsaXBib2FyZCA/IFdURk1vdmUocHJpbWFyeVNlbGVjdGlvbkNsZWFy
ZWQpIDogbnVsbHB0cik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
b3MvV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5oCmluZGV4IDhkM2M0
NzNjMDZmYTdkODRhNDQ2OTliMDYwMjAwMjNmN2NiODMwZTAuLjk4YjRkYmRjYzhiMGRlYmE5Yzgw
MjgwMjM0NDVjODc0ZGExMWY3NDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5oCkBAIC0z
NCw4ICszNCw4IEBACiAjaW5jbHVkZSAiUGxhdGZvcm1MYXllci5oIgogI2luY2x1ZGUgIldlYlBs
YXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0LmgiCiAjaW5jbHVkZSAiV2ViVmlkZW9GdWxsc2Ny
ZWVuTW9kZWwuaCIKLSNpbmNsdWRlIDxmdW5jdGlvbmFsPgogI2luY2x1ZGUgPG9iamMvb2JqYy5o
PgorI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+
CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KQEAg
LTEwMSw3ICsxMDEsNyBAQCBwdWJsaWM6CiAgICAgSFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRl
b0Z1bGxzY3JlZW5Nb2RlIG1vZGUoKSBjb25zdCB7IHJldHVybiBtX21vZGU7IH0KICAgICBib29s
IGFsbG93c1BpY3R1cmVJblBpY3R1cmVQbGF5YmFjaygpIGNvbnN0IHsgcmV0dXJuIG1fYWxsb3dz
UGljdHVyZUluUGljdHVyZVBsYXliYWNrOyB9CiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBtYXlB
dXRvbWF0aWNhbGx5U2hvd1ZpZGVvUGljdHVyZUluUGljdHVyZSgpIGNvbnN0OwotICAgIHZvaWQg
ZnVsbHNjcmVlbk1heVJldHVyblRvSW5saW5lKHN0ZDo6ZnVuY3Rpb248dm9pZChib29sKT4gY2Fs
bGJhY2spOworICAgIHZvaWQgZnVsbHNjcmVlbk1heVJldHVyblRvSW5saW5lKFdURjo6RnVuY3Rp
b248dm9pZChib29sKT4mJiBjYWxsYmFjayk7CiAgICAgYm9vbCB3aXJlbGVzc1ZpZGVvUGxheWJh
Y2tEaXNhYmxlZCgpIGNvbnN0OwogICAgIHZvaWQgYXBwbGljYXRpb25EaWRCZWNvbWVBY3RpdmUo
KTsKIApAQCAtMTM4LDcgKzEzOCw3IEBAIHByb3RlY3RlZDoKICAgICBSZXRhaW5QdHI8VUlXaW5k
b3c+IG1fcGFyZW50V2luZG93OwogICAgIFJldGFpblB0cjxXZWJBVlBsYXllckxheWVyVmlldz4g
bV9wbGF5ZXJMYXllclZpZXc7CiAgICAgSFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxz
Y3JlZW5Nb2RlIG1fbW9kZSB7IEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVu
TW9kZU5vbmUgfTsKLSAgICBzdGQ6OmZ1bmN0aW9uPHZvaWQoYm9vbCk+IG1fcHJlcGFyZVRvSW5s
aW5lQ2FsbGJhY2s7CisgICAgV1RGOjpGdW5jdGlvbjx2b2lkKGJvb2wpPiBtX3ByZXBhcmVUb0lu
bGluZUNhbGxiYWNrOwogICAgIFJ1bkxvb3A6OlRpbWVyPFdlYlZpZGVvRnVsbHNjcmVlbkludGVy
ZmFjZUFWS2l0PiBtX3dhdGNoZG9nVGltZXI7CiAgICAgYm9vbCBtX2FsbG93c1BpY3R1cmVJblBp
Y3R1cmVQbGF5YmFjayB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2V4aXRSZXF1ZXN0ZWQgeyBmYWxz
ZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVs
bHNjcmVlbkludGVyZmFjZUFWS2l0Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dl
YlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Lm1tCmluZGV4IDZiYWJjMWVkNTIwYmIyNDkz
NWI1Zjk2ZGJkZWE5NDYxZjUyZWZmNTcuLjc2ZmZmYzIwMDQ4ZGJlNDNiZGI1NDgxNzg2OGIyY2Ez
NzI3N2M2M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRl
b0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQubW0KQEAgLTg0NCw3ICs4NDQs
NyBAQCB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpwcmVwYXJlZFRvUmV0
dXJuVG9JbmxpbmUoYm9vbCB2aXNpYmxlLCBjbwogICAgICAgICAKICAgICAgICAgW21fcGxheWVy
Vmlld0NvbnRyb2xsZXIgdmlld10uZnJhbWUgPSBbbV9wYXJlbnRWaWV3IGNvbnZlcnRSZWN0Omlu
bGluZVJlY3QgdG9WaWV3OlttX3BsYXllclZpZXdDb250cm9sbGVyIHZpZXddLnN1cGVydmlld107
CiAKLSAgICAgICAgc3RkOjpmdW5jdGlvbjx2b2lkKGJvb2wpPiBjYWxsYmFjayA9IFdURk1vdmUo
bV9wcmVwYXJlVG9JbmxpbmVDYWxsYmFjayk7CisgICAgICAgIFdURjo6RnVuY3Rpb248dm9pZChi
b29sKT4gY2FsbGJhY2sgPSBXVEZNb3ZlKG1fcHJlcGFyZVRvSW5saW5lQ2FsbGJhY2spOwogICAg
ICAgICBjYWxsYmFjayh2aXNpYmxlKTsKICAgICB9CiB9CkBAIC04NTQsOSArODU0LDkgQEAgYm9v
bCBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6bWF5QXV0b21hdGljYWxseVNob3dW
aWRlb1BpY3R1cmVJblBpY3R1cmUKICAgICByZXR1cm4gW3BsYXllckNvbnRyb2xsZXIoKSBpc1Bs
YXlpbmddICYmIG1fbW9kZSA9PSBIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVl
bk1vZGVTdGFuZGFyZCAmJiBzdXBwb3J0c1BpY3R1cmVJblBpY3R1cmUoKTsKIH0KIAotdm9pZCBX
ZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6ZnVsbHNjcmVlbk1heVJldHVyblRvSW5s
aW5lKHN0ZDo6ZnVuY3Rpb248dm9pZChib29sKT4gY2FsbGJhY2spCit2b2lkIFdlYlZpZGVvRnVs
bHNjcmVlbkludGVyZmFjZUFWS2l0OjpmdWxsc2NyZWVuTWF5UmV0dXJuVG9JbmxpbmUoV1RGOjpG
dW5jdGlvbjx2b2lkKGJvb2wpPiYmIGNhbGxiYWNrKQogewotICAgIG1fcHJlcGFyZVRvSW5saW5l
Q2FsbGJhY2sgPSBjYWxsYmFjazsKKyAgICBtX3ByZXBhcmVUb0lubGluZUNhbGxiYWNrID0gV1RG
TW92ZShjYWxsYmFjayk7CiAgICAgaWYgKG1fZnVsbHNjcmVlbkNoYW5nZU9ic2VydmVyKQogICAg
ICAgICBtX2Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlci0+ZnVsbHNjcmVlbk1heVJldHVyblRvSW5s
aW5lKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUG93ZXJP
YnNlcnZlck1hYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUG93ZXJPYnNlcnZl
ck1hYy5jcHAKaW5kZXggMzI5MDJmZGEwNjhhYjE2ZmYzZTVlNDA3MjNiOGYyM2IxNzUxZDc3Ni4u
OGYzN2RkNzFmMDc3NGUzODViNjY5NjI5Y2JkMmUwZDU4NGM0NjZiYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bvd2VyT2JzZXJ2ZXJNYWMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9Qb3dlck9ic2VydmVyTWFjLmNwcApAQCAtMzAsOCArMzAs
OCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVBvd2VyT2JzZXJ2ZXI6OlBvd2VyT2JzZXJ2
ZXIoY29uc3Qgc3RkOjpmdW5jdGlvbjx2b2lkKCk+JiBwb3dlck9uSGFuZGVyKQotICAgIDogbV9w
b3dlck9uSGFuZGVyKHBvd2VyT25IYW5kZXIpCitQb3dlck9ic2VydmVyOjpQb3dlck9ic2VydmVy
KFdURjo6RnVuY3Rpb248dm9pZCgpPiYmIHBvd2VyT25IYW5kZXIpCisgICAgOiBtX3Bvd2VyT25I
YW5kZXIoV1RGTW92ZShwb3dlck9uSGFuZGVyKSkKICAgICAsIG1fcG93ZXJDb25uZWN0aW9uKDAp
CiAgICAgLCBtX25vdGlmaWNhdGlvblBvcnQobnVsbHB0cikKICAgICAsIG1fbm90aWZpZXJSZWZl
cmVuY2UoMCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9Qb3dlck9i
c2VydmVyTWFjLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUG93ZXJPYnNlcnZlck1h
Yy5oCmluZGV4IDc1ZmE4YjQwMTI5MGZkMzViZmM2NWY5NTJlZTU4NzFlZDFkNjZmOWEuLmNiOTdi
NWRlNWY2NWZjNzZkZWNkYWYzZDAxNjNjYzU0NjFhMmQwOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21hYy9Qb3dlck9ic2VydmVyTWFjLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWFjL1Bvd2VyT2JzZXJ2ZXJNYWMuaApAQCAtMjgsNyArMjgsNyBAQAogCiAj
aW1wb3J0IDxJT0tpdC9JT01lc3NhZ2UuaD4KICNpbXBvcnQgPElPS2l0L3B3cl9tZ3QvSU9QTUxp
Yi5oPgotI2ltcG9ydCA8ZnVuY3Rpb25hbD4KKyNpbXBvcnQgPHd0Zi9GdW5jdGlvbi5oPgogI2lt
cG9ydCA8d3RmL05vbmNvcHlhYmxlLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTM3LDEz
ICszNywxMyBAQCBjbGFzcyBQb3dlck9ic2VydmVyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJM
RShQb3dlck9ic2VydmVyKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAKIHB1YmxpYzoKLSAg
ICBQb3dlck9ic2VydmVyKGNvbnN0IHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiYgcG93ZXJPbkhhbmRl
cik7CisgICAgUG93ZXJPYnNlcnZlcihXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJiBwb3dlck9uSGFu
ZGVyKTsKICAgICB+UG93ZXJPYnNlcnZlcigpOwogCiBwcml2YXRlOgogICAgIHZvaWQgZGlkUmVj
ZWl2ZVN5c3RlbVBvd2VyTm90aWZpY2F0aW9uKGlvX3NlcnZpY2VfdCwgdWludDMyX3QgbWVzc2Fn
ZVR5cGUsIHZvaWQqIG1lc3NhZ2VBcmd1bWVudCk7CiAKLSAgICBzdGQ6OmZ1bmN0aW9uPHZvaWQo
KT4gbV9wb3dlck9uSGFuZGVyOworICAgIFdURjo6RnVuY3Rpb248dm9pZCgpPiBtX3Bvd2VyT25I
YW5kZXI7CiAgICAgaW9fY29ubmVjdF90IG1fcG93ZXJDb25uZWN0aW9uOwogICAgIElPTm90aWZp
Y2F0aW9uUG9ydFJlZiBtX25vdGlmaWNhdGlvblBvcnQ7CiAgICAgaW9fb2JqZWN0X3QgbV9ub3Rp
ZmllclJlZmVyZW5jZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9X
ZWJDb3JlTlNVUkxFeHRyYXMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29y
ZU5TVVJMRXh0cmFzLm1tCmluZGV4IDZmYjYwMDVkM2M5ZWY3N2U2OTdjOTUxNTY4Zjc2ZmY4Mjcz
YTU3ZjQuLmFlZDYwNTdjYTUyNzZkM2E0M2EwMjJhNjIxMGJhNDUxMTAzOWFlODEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlTlNVUkxFeHRyYXMubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVOU1VSTEV4dHJhcy5tbQpAQCAt
MzIsNyArMzIsNyBAQAogI2ltcG9ydCAiV2ViQ29yZU5TU3RyaW5nRXh0cmFzLmgiCiAjaW1wb3J0
ICJXZWJDb3JlTlNVUkxFeHRyYXMuaCIKICNpbXBvcnQgIldlYkNvcmVTeXN0ZW1JbnRlcmZhY2Uu
aCIKLSNpbXBvcnQgPGZ1bmN0aW9uYWw+CisjaW1wb3J0IDx3dGYvRnVuY3Rpb24uaD4KICNpbXBv
cnQgPHd0Zi9IZXhOdW1iZXIuaD4KICNpbXBvcnQgPHd0Zi9PYmpjUnVudGltZUV4dHJhcy5oPgog
I2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgpAQCAtMjcxLDcgKzI3MSw3IEBAIHN0YXRpYyBCT09M
IGFsbENoYXJhY3RlcnNJbklETlNjcmlwdFdoaXRlTGlzdChjb25zdCBVQ2hhciAqYnVmZmVyLCBp
bnQzMl90IGxlbmd0CiAgICAgcmV0dXJuIFlFUzsKIH0KIAotc3RhdGljIGJvb2wgaXNTZWNvbmRM
ZXZlbERvbWFpbk5hbWVBbGxvd2VkQnlUTERSdWxlcyhjb25zdCBVQ2hhciogYnVmZmVyLCBpbnQz
Ml90IGxlbmd0aCwgY29uc3Qgc3RkOjpmdW5jdGlvbjxib29sKFVDaGFyKT4mIGNoYXJhY3Rlcklz
QWxsb3dlZCkKK3N0YXRpYyBib29sIGlzU2Vjb25kTGV2ZWxEb21haW5OYW1lQWxsb3dlZEJ5VExE
UnVsZXMoY29uc3QgVUNoYXIqIGJ1ZmZlciwgaW50MzJfdCBsZW5ndGgsIGNvbnN0IFdURjo6RnVu
Y3Rpb248Ym9vbChVQ2hhcik+JiBjaGFyYWN0ZXJJc0FsbG93ZWQpCiB7CiAgICAgQVNTRVJUKGxl
bmd0aCA+IDApOwogCkBAIC0yOTQsNyArMjk0LDcgQEAgc3RhdGljIGJvb2wgaXNTZWNvbmRMZXZl
bERvbWFpbk5hbWVBbGxvd2VkQnlUTERSdWxlcyhjb25zdCBVQ2hhciogYnVmZmVyLCBpbnQzMl8K
ICAgICB7IFwKICAgICAgICAgc3RhdGljIGNvbnN0IGludDMyX3Qgc3VmZml4TGVuZ3RoID0gc2l6
ZW9mKHN1ZmZpeCkgLyBzaXplb2Yoc3VmZml4WzBdKTsgXAogICAgICAgICBpZiAobGVuZ3RoID4g
c3VmZml4TGVuZ3RoICYmIDAgPT0gbWVtY21wKGJ1ZmZlciArIGxlbmd0aCAtIHN1ZmZpeExlbmd0
aCwgc3VmZml4LCBzaXplb2Yoc3VmZml4KSkpIFwKLSAgICAgICAgICAgIHJldHVybiBpc1NlY29u
ZExldmVsRG9tYWluTmFtZUFsbG93ZWRCeVRMRFJ1bGVzKGJ1ZmZlciwgbGVuZ3RoIC0gc3VmZml4
TGVuZ3RoLCBmdW5jdGlvbik7IFwKKyAgICAgICAgICAgIHJldHVybiBpc1NlY29uZExldmVsRG9t
YWluTmFtZUFsbG93ZWRCeVRMRFJ1bGVzKGJ1ZmZlciwgbGVuZ3RoIC0gc3VmZml4TGVuZ3RoLCBb
XShVQ2hhciBjKSB7IHJldHVybiBmdW5jdGlvbihjKTsgfSk7IFwKICAgICB9CiAKIHN0YXRpYyBi
b29sIGlzUnVzc2lhbkRvbWFpbk5hbWVDaGFyYWN0ZXIoVUNoYXIgY2gpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9DYXB0dXJlRGV2aWNlTWFuYWdlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9DYXB0dXJlRGV2aWNlTWFu
YWdlci5jcHAKaW5kZXggNzUwMDU5MTc4OWM4MTNiZmRjYmUyNWZlZWNlYTFmZjFkZDkwNmIwZC4u
NmUwOTE2NjE4ZjI5NTU0MzYwZjFkOGViZTE4N2FiOGJlZGQyNTNkZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vQ2FwdHVyZURldmljZU1hbmFnZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL0NhcHR1cmVEZXZpY2VN
YW5hZ2VyLmNwcApAQCAtMTEzLDcgKzExMyw3IEBAIHN0YXRpYyBDYXB0dXJlRGV2aWNlTWFuYWdl
cjo6T2JzZXJ2ZXJUb2tlbiBuZXh0T2JzZXJ2ZXJUb2tlbigpCiAgICAgcmV0dXJuICsrbmV4dFRv
a2VuOwogfQogCi1DYXB0dXJlRGV2aWNlTWFuYWdlcjo6T2JzZXJ2ZXJUb2tlbiBDYXB0dXJlRGV2
aWNlTWFuYWdlcjo6YWRkQ2FwdHVyZURldmljZUNoYW5nZWRPYnNlcnZlcihDYXB0dXJlRGV2aWNl
Q2hhbmdlZENhbGxiYWNrIG9ic2VydmVyKQorQ2FwdHVyZURldmljZU1hbmFnZXI6Ok9ic2VydmVy
VG9rZW4gQ2FwdHVyZURldmljZU1hbmFnZXI6OmFkZENhcHR1cmVEZXZpY2VDaGFuZ2VkT2JzZXJ2
ZXIoQ2FwdHVyZURldmljZUNoYW5nZWRDYWxsYmFjayYmIG9ic2VydmVyKQogewogICAgIGF1dG8g
dG9rZW4gPSBuZXh0T2JzZXJ2ZXJUb2tlbigpOwogICAgIG1fb2JzZXJ2ZXJzLnNldCh0b2tlbiwg
V1RGTW92ZShvYnNlcnZlcikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vQ2FwdHVyZURldmljZU1hbmFnZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL0NhcHR1cmVEZXZpY2VNYW5hZ2VyLmgKaW5kZXggZGZmMDAyMzU5MmU0
ZDE1NmFiODFjYjMxYmU4ZDE1YWQ4OGVjYTY0ZC4uZGZjNjBkMWMyNGVkNjk5YWI2ODA1N2ZhNjU4
N2U2NTFmMTUwNjljNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vQ2FwdHVyZURldmljZU1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9DYXB0dXJlRGV2aWNlTWFuYWdlci5oCkBAIC0zNCw5ICszNCw5IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ2FwdHVyZURldmljZU1hbmFnZXIgewogcHVibGlj
OgotICAgIHVzaW5nIENhcHR1cmVEZXZpY2VDaGFuZ2VkQ2FsbGJhY2sgPSBzdGQ6OmZ1bmN0aW9u
PHZvaWQoKT47CisgICAgdXNpbmcgQ2FwdHVyZURldmljZUNoYW5nZWRDYWxsYmFjayA9IFdURjo6
RnVuY3Rpb248dm9pZCgpPjsKICAgICB1c2luZyBPYnNlcnZlclRva2VuID0gdWludDMyX3Q7Ci0g
ICAgdmlydHVhbCBPYnNlcnZlclRva2VuIGFkZENhcHR1cmVEZXZpY2VDaGFuZ2VkT2JzZXJ2ZXIo
Q2FwdHVyZURldmljZUNoYW5nZWRDYWxsYmFjayk7CisgICAgdmlydHVhbCBPYnNlcnZlclRva2Vu
IGFkZENhcHR1cmVEZXZpY2VDaGFuZ2VkT2JzZXJ2ZXIoQ2FwdHVyZURldmljZUNoYW5nZWRDYWxs
YmFjayYmKTsKICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlQ2FwdHVyZURldmljZUNoYW5nZWRPYnNl
cnZlcihPYnNlcnZlclRva2VuKTsKIAogICAgIHZpcnR1YWwgVmVjdG9yPENhcHR1cmVEZXZpY2U+
JiBjYXB0dXJlRGV2aWNlcygpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZS5jcHAKaW5kZXggMzMyNDZh
MDFjZGU4NGEzNjJlMWM4NjkxNTQzNmViMjBiYzQxZTVlNy4uYjM4NjYyNmFiOTNhYjQ0YWM0Zjg4
ZDNjMjJlNWU3ZTc1MTViMmRmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZS5jcHAKQEAgLTg4Miw3ICs4
ODIsNyBAQCB2b2lkIFJlYWx0aW1lTWVkaWFTb3VyY2U6OnNldEVjaG9DYW5jZWxsYXRpb24oYm9v
bCBlY2hvQ2FuY2VsbGF0aW9uKQogICAgIHNldHRpbmdzRGlkQ2hhbmdlKCk7CiB9CiAKLXZvaWQg
UmVhbHRpbWVNZWRpYVNvdXJjZTo6c2NoZWR1bGVEZWZlcnJlZFRhc2soc3RkOjpmdW5jdGlvbjx2
b2lkKCk+JiYgZnVuY3Rpb24pCit2b2lkIFJlYWx0aW1lTWVkaWFTb3VyY2U6OnNjaGVkdWxlRGVm
ZXJyZWRUYXNrKFdURjo6RnVuY3Rpb248dm9pZCgpPiYmIGZ1bmN0aW9uKQogewogICAgIEFTU0VS
VChmdW5jdGlvbik7CiAgICAgY2FsbE9uTWFpblRocmVhZChbd2Vha1RoaXMgPSBjcmVhdGVXZWFr
UHRyKCksIGZ1bmN0aW9uID0gV1RGTW92ZShmdW5jdGlvbildIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2UuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2UuaApp
bmRleCAwNDEwZWU1YzcyN2YzY2YyZGUwYzkyNDAyOWNmOTVlYTI1MjFlZGY4Li40MDM5Yzk1M2Rj
OTVlYzM5YzdmOTA3MDliMWFkMGJkN2NiZTYwZGJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZS5oCkBAIC0x
OTAsOCArMTkwLDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgY29uc3QgUmVhbHRpbWVNZWRpYVNv
dXJjZUNhcGFiaWxpdGllcyYgY2FwYWJpbGl0aWVzKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwg
Y29uc3QgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzJiBzZXR0aW5ncygpIGNvbnN0ID0gMDsK
IAotICAgIHVzaW5nIFN1Y2Nlc3NIYW5kbGVyID0gc3RkOjpmdW5jdGlvbjx2b2lkKCk+OwotICAg
IHVzaW5nIEZhaWx1cmVIYW5kbGVyID0gc3RkOjpmdW5jdGlvbjx2b2lkKGNvbnN0IFN0cmluZyYg
YmFkQ29uc3RyYWludCwgY29uc3QgU3RyaW5nJiBlcnJvclN0cmluZyk+OworICAgIHVzaW5nIFN1
Y2Nlc3NIYW5kbGVyID0gV1RGOjpGdW5jdGlvbjx2b2lkKCk+OworICAgIHVzaW5nIEZhaWx1cmVI
YW5kbGVyID0gV1RGOjpGdW5jdGlvbjx2b2lkKGNvbnN0IFN0cmluZyYgYmFkQ29uc3RyYWludCwg
Y29uc3QgU3RyaW5nJiBlcnJvclN0cmluZyk+OwogICAgIHZpcnR1YWwgdm9pZCBhcHBseUNvbnN0
cmFpbnRzKGNvbnN0IE1lZGlhQ29uc3RyYWludHMmLCBTdWNjZXNzSGFuZGxlciYmLCBGYWlsdXJl
SGFuZGxlciYmKTsKICAgICBzdGQ6Om9wdGlvbmFsPHN0ZDo6cGFpcjxTdHJpbmcsIFN0cmluZz4+
IGFwcGx5Q29uc3RyYWludHMoY29uc3QgTWVkaWFDb25zdHJhaW50cyYpOwogCkBAIC0yMTIsNyAr
MjEyLDcgQEAgcHVibGljOgogcHJvdGVjdGVkOgogICAgIFJlYWx0aW1lTWVkaWFTb3VyY2UoY29u
c3QgU3RyaW5nJiBpZCwgVHlwZSwgY29uc3QgU3RyaW5nJiBuYW1lKTsKIAotICAgIHZvaWQgc2No
ZWR1bGVEZWZlcnJlZFRhc2soc3RkOjpmdW5jdGlvbjx2b2lkKCk+JiYpOworICAgIHZvaWQgc2No
ZWR1bGVEZWZlcnJlZFRhc2soV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYpOwogCiAgICAgdmlydHVh
bCB2b2lkIGJlZ2luQ29uZmlndXJhdGlvbigpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBjb21taXRD
b25maWd1cmF0aW9uKCkgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9pb3MvQVZBdWRpb1Nlc3Npb25DYXB0dXJlRGV2aWNlTWFuYWdlci5tbSBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2lvcy9BVkF1ZGlvU2Vzc2lvbkNhcHR1
cmVEZXZpY2VNYW5hZ2VyLm1tCmluZGV4IGNiMDA4Y2JiYjkxYWJiNjk1YTBlNWU3NDQ0ZmE2MDhm
OTQ3NDgxMmUuLjBmZGExM2YxMWUyN2Y0ZWJhNDRhYjA5ZTBlZDQ5ZTdlZTg0MDEzODIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2lvcy9BVkF1ZGlvU2Vz
c2lvbkNhcHR1cmVEZXZpY2VNYW5hZ2VyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL2lvcy9BVkF1ZGlvU2Vzc2lvbkNhcHR1cmVEZXZpY2VNYW5hZ2VyLm1tCkBA
IC00MCwxOCArNDAsMTggQEAgU09GVF9MSU5LX0NMQVNTKEFWRm91bmRhdGlvbiwgQVZBdWRpb1Nl
c3Npb24pCiB2b2lkKiBBdmFpbGFibGVJbnB1dHNDb250ZXh0ID0gJkF2YWlsYWJsZUlucHV0c0Nv
bnRleHQ7CiAKIEBpbnRlcmZhY2UgV2ViQVZBdWRpb1Nlc3Npb25BdmFpbGFibGVJbnB1dHNMaXN0
ZW5lciA6IE5TT2JqZWN0IHsKLSAgICBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4gX2NhbGxiYWNrOwor
ICAgIFdURjo6RnVuY3Rpb248dm9pZCgpPiBfY2FsbGJhY2s7CiB9CiBAZW5kCiAKIEBpbXBsZW1l
bnRhdGlvbiBXZWJBVkF1ZGlvU2Vzc2lvbkF2YWlsYWJsZUlucHV0c0xpc3RlbmVyCi0tIChpZClp
bml0V2l0aENhbGxiYWNrOihzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4pY2FsbGJhY2sKKy0gKGlkKWlu
aXRXaXRoQ2FsbGJhY2s6KFdURjo6RnVuY3Rpb248dm9pZCgpPiYmKWNhbGxiYWNrCiB7CiAgICAg
c2VsZiA9IFtzdXBlciBpbml0XTsKICAgICBpZiAoIXNlbGYpCiAgICAgICAgIHJldHVybiBuaWw7
CiAKLSAgICBfY2FsbGJhY2sgPSBjYWxsYmFjazsKKyAgICBfY2FsbGJhY2sgPSBXVEZNb3ZlKGNh
bGxiYWNrKTsKICAgICByZXR1cm4gc2VsZjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0NvcmVBdWRpb0NhcHR1cmVTb3VyY2UuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Db3JlQXVkaW9DYXB0dXJlU291
cmNlLmgKaW5kZXggY2UwYmRlZTE2ODI0NzEwZTczNGUwMTFmOTI0NGRjOWQ2ZWFlNzQxNS4uOGU4
OTc0MzIzMGEwM2IwYjdlYTE1YTE1NmVhNmJmMmE1MzgyMjc0NSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0NvcmVBdWRpb0NhcHR1cmVTb3VyY2Uu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ29yZUF1ZGlv
Q2FwdHVyZVNvdXJjZS5oCkBAIC02MSw3ICs2MSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGFkZEVj
aG9DYW5jZWxsYXRpb25Tb3VyY2UoQXVkaW9TYW1wbGVEYXRhU291cmNlJik7CiAgICAgdm9pZCBy
ZW1vdmVFY2hvQ2FuY2VsbGF0aW9uU291cmNlKEF1ZGlvU2FtcGxlRGF0YVNvdXJjZSYpOwogCi0g
ICAgdXNpbmcgTWljcm9waG9uZURhdGFDYWxsYmFjayA9IHN0ZDo6ZnVuY3Rpb248dm9pZChjb25z
dCBNZWRpYVRpbWUmIHNhbXBsZVRpbWUsIGNvbnN0IFBsYXRmb3JtQXVkaW9EYXRhJiBhdWRpb0Rh
dGEsIGNvbnN0IEF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mIGRlc2NyaXB0aW9uLCBzaXplX3Qgc2Ft
cGxlQ291bnQpPjsKKyAgICB1c2luZyBNaWNyb3Bob25lRGF0YUNhbGxiYWNrID0gV1RGOjpGdW5j
dGlvbjx2b2lkKGNvbnN0IE1lZGlhVGltZSYgc2FtcGxlVGltZSwgY29uc3QgUGxhdGZvcm1BdWRp
b0RhdGEmIGF1ZGlvRGF0YSwgY29uc3QgQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYgZGVzY3JpcHRp
b24sIHNpemVfdCBzYW1wbGVDb3VudCk+OwogCiAgICAgdWludDY0X3QgYWRkTWljcm9waG9uZURh
dGFDb25zdW1lcihNaWNyb3Bob25lRGF0YUNhbGxiYWNrJiYpOwogICAgIHZvaWQgcmVtb3ZlTWlj
cm9waG9uZURhdGFDb25zdW1lcih1aW50NjRfdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tb2NrL1Njcm9sbEFuaW1hdG9yTW9jay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tb2NrL1Njcm9sbEFuaW1hdG9yTW9jay5jcHAKaW5kZXggYzA4MDM4MTBlZGQ4ZDVj
ZmRkYWU0Yjc2NDkxYTM4Nzc2YjI3NmJmYi4uNTIyYWViMmFjZGI1Mjg5M2FhZGM2NjI0MTE3OWQy
NTRlYjQ5ZjhmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9TY3Jv
bGxBbmltYXRvck1vY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svU2Ny
b2xsQW5pbWF0b3JNb2NrLmNwcApAQCAtMzYsNyArMzYsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLVNjcm9sbEFuaW1hdG9yTW9jazo6U2Nyb2xsQW5pbWF0b3JNb2NrKFNjcm9sbGFibGVB
cmVhJiBzY3JvbGxhYmxlQXJlYSwgc3RkOjpmdW5jdGlvbjx2b2lkKGNvbnN0IFN0cmluZyYpPiYm
IGxvZ2dlcikKK1Njcm9sbEFuaW1hdG9yTW9jazo6U2Nyb2xsQW5pbWF0b3JNb2NrKFNjcm9sbGFi
bGVBcmVhJiBzY3JvbGxhYmxlQXJlYSwgV1RGOjpGdW5jdGlvbjx2b2lkKGNvbnN0IFN0cmluZyYp
PiYmIGxvZ2dlcikKICAgICA6IFNjcm9sbEFuaW1hdG9yKHNjcm9sbGFibGVBcmVhKQogICAgICwg
bV9sb2dnZXIoV1RGTW92ZShsb2dnZXIpKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbW9jay9TY3JvbGxBbmltYXRvck1vY2suaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21vY2svU2Nyb2xsQW5pbWF0b3JNb2NrLmgKaW5kZXggODVkYzRmNmVkYzNlNWIzY2NlNDUz
NzgzZTZlMGQzZDk1MTEyNGY3ZC4uMjMwYjlhZjMxZDA3ZmIyODNiNjZiMWQ5ZjI2NmI4MDFhY2Zj
MzIyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9TY3JvbGxBbmlt
YXRvck1vY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1Njcm9sbEFuaW1h
dG9yTW9jay5oCkBAIC00MCw3ICs0MCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIC8vIHRoZSBp
bnRlcm5hbCBzZXR0aW5nIGVuYWJsZU1vY2tTY3JvbGxBbmltYXRvci4KIGNsYXNzIFNjcm9sbEFu
aW1hdG9yTW9jayBmaW5hbCA6IHB1YmxpYyBTY3JvbGxBbmltYXRvciB7CiBwdWJsaWM6Ci0gICAg
U2Nyb2xsQW5pbWF0b3JNb2NrKFNjcm9sbGFibGVBcmVhJiwgc3RkOjpmdW5jdGlvbjx2b2lkKGNv
bnN0IFN0cmluZyYpPiYmKTsKKyAgICBTY3JvbGxBbmltYXRvck1vY2soU2Nyb2xsYWJsZUFyZWEm
LCBXVEY6OkZ1bmN0aW9uPHZvaWQoY29uc3QgU3RyaW5nJik+JiYpOwogICAgIHZpcnR1YWwgflNj
cm9sbEFuaW1hdG9yTW9jaygpOwogCiAjaWYgRU5BQkxFKFJVQkJFUl9CQU5ESU5HKQpAQCAtNjgs
NyArNjgsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgbW91c2VFeGl0ZWRTY3JvbGxiYXIoU2Nyb2xs
YmFyKikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdm9pZCBtb3VzZUlzRG93bkluU2Nyb2xsYmFyKFNj
cm9sbGJhciosIGJvb2wpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgc3RkOjpmdW5jdGlvbjx2b2lk
KGNvbnN0IFN0cmluZyYpPiBtX2xvZ2dlcjsKKyAgICBXVEY6OkZ1bmN0aW9uPHZvaWQoY29uc3Qg
U3RyaW5nJik+IG1fbG9nZ2VyOwogICAgIFNjcm9sbGJhciogbV92ZXJ0aWNhbFNjcm9sbGJhciB7
IG51bGxwdHIgfTsKICAgICBTY3JvbGxiYXIqIG1faG9yaXpvbnRhbFNjcm9sbGJhciB7IG51bGxw
dHIgfTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Nv
b2tpZVN0b3JhZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQ29va2llU3Rv
cmFnZS5oCmluZGV4IGM1MDUzY2M5MDVkYjZlODFiZjZmNGU1ZDY4ZjlmNTg4NTYwMDIzMmMuLjgx
ZWZjYmYwMDVlODRkNTNhNTI0YzYzZGI1MzM2YmJiNzJmYzg1OWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQ29va2llU3RvcmFnZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQ29va2llU3RvcmFnZS5oCkBAIC0yNSwxMyArMjUsMTMg
QEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlIDxmdW5jdGlvbmFsPgorI2luY2x1ZGUgPHd0
Zi9GdW5jdGlvbi5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbjsKIAotV0VCQ09SRV9FWFBPUlQgdm9pZCBzdGFydE9ic2VydmluZ0Nvb2tpZUNo
YW5nZXMoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgc3RkOjpmdW5jdGlvbjx2b2lkICgp
PiYmKTsKK1dFQkNPUkVfRVhQT1JUIHZvaWQgc3RhcnRPYnNlcnZpbmdDb29raWVDaGFuZ2VzKGNv
bnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIFdURjo6RnVuY3Rpb248dm9pZCAoKT4mJik7CiBX
RUJDT1JFX0VYUE9SVCB2b2lkIHN0b3BPYnNlcnZpbmdDb29raWVDaGFuZ2VzKGNvbnN0IE5ldHdv
cmtTdG9yYWdlU2Vzc2lvbiYpOwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL05ldHdvcmtTdGF0ZU5vdGlmaWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvTmV0d29ya1N0YXRlTm90aWZpZXIuY3BwCmluZGV4IDU1NzRhMzU4MzRj
YzYwMWY1ODZlZWQ3OTUyYzVhYTQ4MTE2Zjg5ZWYuLmFkMTVlNWNmM2MzZmQxNTI2ZjdhNjQ0ODUw
NDBiNWQ5OTgyYzkzMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvTmV0d29ya1N0YXRlTm90aWZpZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvTmV0d29ya1N0YXRlTm90aWZpZXIuY3BwCkBAIC00OCw3ICs0OCw3IEBAIE5ldHdv
cmtTdGF0ZU5vdGlmaWVyJiBuZXR3b3JrU3RhdGVOb3RpZmllcigpCiAgICAgcmV0dXJuIG5ldHdv
cmtTdGF0ZU5vdGlmaWVyOwogfQogCi12b2lkIE5ldHdvcmtTdGF0ZU5vdGlmaWVyOjphZGROZXR3
b3JrU3RhdGVDaGFuZ2VMaXN0ZW5lcihzdGQ6OmZ1bmN0aW9uPHZvaWQgKGJvb2wpPiBsaXN0ZW5l
cikKK3ZvaWQgTmV0d29ya1N0YXRlTm90aWZpZXI6OmFkZE5ldHdvcmtTdGF0ZUNoYW5nZUxpc3Rl
bmVyKFdURjo6RnVuY3Rpb248dm9pZCAoYm9vbCk+JiYgbGlzdGVuZXIpCiB7CiAgICAgQVNTRVJU
KGxpc3RlbmVyKTsKICNpZiBQTEFURk9STShJT1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdGF0ZU5vdGlmaWVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdGF0ZU5vdGlmaWVyLmgKaW5kZXggNTI4MmVjMDY2
YWJiYTIzNzE3NjhhODRhZDlhMmE1MjA2MGJkMzQyZi4uYzNhNDI5MDNjZDBiODljYTYyYTFiMTg1
MjYxM2VlZDBhZTg2YTE4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9OZXR3b3JrU3RhdGVOb3RpZmllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvTmV0d29ya1N0YXRlTm90aWZpZXIuaApAQCAtMjYsOCArMjYsOCBAQAogI2lmbmRl
ZiBOZXR3b3JrU3RhdGVOb3RpZmllcl9oCiAjZGVmaW5lIE5ldHdvcmtTdGF0ZU5vdGlmaWVyX2gK
IAotI2luY2x1ZGUgPGZ1bmN0aW9uYWw+CiAjaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KKyNp
bmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNp
bmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKQEAgLTU5LDcgKzU5LDcgQEAgcHVibGljOgogI2lmIFBM
QVRGT1JNKElPUykKICAgICB+TmV0d29ya1N0YXRlTm90aWZpZXIoKTsKICNlbmRpZgotICAgIHZv
aWQgYWRkTmV0d29ya1N0YXRlQ2hhbmdlTGlzdGVuZXIoc3RkOjpmdW5jdGlvbjx2b2lkIChib29s
IGlzT25MaW5lKT4pOworICAgIHZvaWQgYWRkTmV0d29ya1N0YXRlQ2hhbmdlTGlzdGVuZXIoV1RG
OjpGdW5jdGlvbjx2b2lkIChib29sIGlzT25MaW5lKT4mJik7CiAKICAgICBib29sIG9uTGluZSgp
IGNvbnN0OwogCkBAIC02Nyw3ICs2Nyw3IEBAIHByaXZhdGU6CiAjaWYgIVBMQVRGT1JNKElPUykK
ICAgICBib29sIG1faXNPbkxpbmU7CiAjZW5kaWYKLSAgICBWZWN0b3I8c3RkOjpmdW5jdGlvbjx2
b2lkIChib29sKT4+IG1fbGlzdGVuZXJzOworICAgIFZlY3RvcjxXVEY6OkZ1bmN0aW9uPHZvaWQg
KGJvb2wpPj4gbV9saXN0ZW5lcnM7CiAKICAgICB2b2lkIG5vdGlmeU5ldHdvcmtTdGF0ZUNoYW5n
ZSgpIGNvbnN0OwogICAgIHZvaWQgdXBkYXRlU3RhdGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmNwcAppbmRl
eCA1NWJlOWNjZjQyYTZmYzExZDE1NjdiYzA3YzRmOTE0NGFjZjYzYmYzLi45OGRhMDgyYWVlNjM0
Nzg5NzBiY2UwOTM5NTZmMzNjMTk4YTU2NTEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uY3BwCkBAIC01MCw3
ICs1MCw3IEBAIHZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkZXN0cm95U2Vzc2lvbihTZXNz
aW9uSUQgc2Vzc2lvbklEKQogICAgIGdsb2JhbFNlc3Npb25NYXAoKS5yZW1vdmUoc2Vzc2lvbklE
KTsKIH0KIAotdm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmZvckVhY2goc3RkOjpmdW5jdGlv
bjx2b2lkKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYpPiBmdW5jdG9yKQor
dm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmZvckVhY2goY29uc3QgV1RGOjpGdW5jdGlvbjx2
b2lkKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYpPiYgZnVuY3RvcikKIHsK
ICAgICBmdW5jdG9yKGRlZmF1bHRTdG9yYWdlU2Vzc2lvbigpKTsKICAgICBmb3IgKGF1dG8mIHN0
b3JhZ2VTZXNzaW9uIDogZ2xvYmFsU2Vzc2lvbk1hcCgpLnZhbHVlcygpKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmgK
aW5kZXggYjA5NzZkOTc1MjA2Mjg4ZTcxNGRiYzBmY2NiNTY0NmIzMzc1ODkxNS4uMjg1NWNiNzlk
MjE2YTZjZTRmZDg4ZWRhNTM5NDMyM2JjODc0NTdkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oCkBAIC0yNyw3
ICsyNyw3IEBACiAKICNpbmNsdWRlICJDcmVkZW50aWFsU3RvcmFnZS5oIgogI2luY2x1ZGUgIlNl
c3Npb25JRC5oIgotI2luY2x1ZGUgPGZ1bmN0aW9uYWw+CisjaW5jbHVkZSA8d3RmL0Z1bmN0aW9u
Lmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJp
bmcuaD4KIApAQCAtNjIsNyArNjIsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgc3Rh
dGljIHZvaWQgZW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbihTZXNzaW9uSUQsIGNvbnN0IFN0
cmluZyYgaWRlbnRpZmllckJhc2UgPSBTdHJpbmcoKSk7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3Rh
dGljIHZvaWQgZW5zdXJlU2Vzc2lvbihTZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgaWRlbnRpZmll
ckJhc2UgPSBTdHJpbmcoKSk7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQgZGVzdHJv
eVNlc3Npb24oU2Vzc2lvbklEKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9pZCBmb3JF
YWNoKHN0ZDo6ZnVuY3Rpb248dm9pZChjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Np
b24mKT4pOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIGZvckVhY2goY29uc3QgV1RG
OjpGdW5jdGlvbjx2b2lkKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYpPiYp
OwogCiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQgc3dpdGNoVG9OZXdUZXN0aW5nU2Vz
c2lvbigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nm
L0Nvb2tpZVN0b3JhZ2VDRk5ldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2NmL0Nvb2tpZVN0b3JhZ2VDRk5ldC5jcHAKaW5kZXggNjE5YjA3ODkwOWQzMWJkNDRjMTNjY2Zj
OTMyYTNjZGRkYmM4Y2E1My4uZjNjZTIzOGY1ZWU5NTQyYjIyYjlmZDkxYzdlN2RjOTRlNWNkMjgw
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Db29raWVT
dG9yYWdlQ0ZOZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2Yv
Q29va2llU3RvcmFnZUNGTmV0LmNwcApAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgIkNvb2tp
ZVN0b3JhZ2UuaCIKIAogI2luY2x1ZGUgIk5ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oIgorI2luY2x1
ZGUgPHd0Zi9GdW5jdGlvbi5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8
d3RmL01haW5UaHJlYWQuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KQEAgLTQz
LDkgKzQ0LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAjaWYgUExBVEZPUk0oV0lOKQogCi1z
dGF0aWMgSGFzaE1hcDxDRkhUVFBDb29raWVTdG9yYWdlUmVmLCBzdGQ6OmZ1bmN0aW9uPHZvaWQg
KCk+PiYgY29va2llQ2hhbmdlQ2FsbGJhY2tNYXAoKQorc3RhdGljIEhhc2hNYXA8Q0ZIVFRQQ29v
a2llU3RvcmFnZVJlZiwgV1RGOjpGdW5jdGlvbjx2b2lkICgpPj4mIGNvb2tpZUNoYW5nZUNhbGxi
YWNrTWFwKCkKIHsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaE1hcDxDRkhUVFBDb29r
aWVTdG9yYWdlUmVmLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+Pj4gbWFwOworICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZDxIYXNoTWFwPENGSFRUUENvb2tpZVN0b3JhZ2VSZWYsIFdURjo6RnVuY3Rp
b248dm9pZCAoKT4+PiBtYXA7CiAgICAgcmV0dXJuIG1hcDsKIH0KIApAQCAtNjgsNyArNjksNyBA
QCBzdGF0aWMgaW5saW5lIENGUnVuTG9vcFJlZiBjb29raWVTdG9yYWdlT2JzZXJ2ZXJSdW5Mb29w
KCkKICAgICByZXR1cm4gbG9hZGVyUnVuTG9vcCgpOwogfQogCi12b2lkIHN0YXJ0T2JzZXJ2aW5n
Q29va2llQ2hhbmdlcyhjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHN0b3JhZ2VTZXNzaW9u
LCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+JiYgY2FsbGJhY2spCit2b2lkIHN0YXJ0T2JzZXJ2aW5n
Q29va2llQ2hhbmdlcyhjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHN0b3JhZ2VTZXNzaW9u
LCBXVEY6OkZ1bmN0aW9uPHZvaWQgKCk+JiYgY2FsbGJhY2spCiB7CiAgICAgQVNTRVJUKGlzTWFp
blRocmVhZCgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jZi9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsQ0ZOZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jZi9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsQ0ZOZXQuY3BwCmluZGV4IGVk
NDEwOWFlNmQ3Njk4MDExZTM0ZTI1MmQyNjRmNjgxOTExOWM5ZmEuLjQxNzY4MDA4ZDgzMTVjY2U5
Y2FkNmM0NjJhNDBkNGQzMjFjY2ZlNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY2YvU29ja2V0U3RyZWFtSGFuZGxlSW1wbENGTmV0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1NvY2tldFN0cmVhbUhhbmRsZUltcGxDRk5l
dC5jcHAKQEAgLTE0NCw3ICsxNDQsNyBAQCBDRlN0cmluZ1JlZiBTb2NrZXRTdHJlYW1IYW5kbGVJ
bXBsOjpjb3B5UEFDRXhlY3V0aW9uRGVzY3JpcHRpb24odm9pZCopCiAgICAgcmV0dXJuIENGU1RS
KCJXZWJTb2NrZXQgcHJveHkgUEFDIGZpbGUgZXhlY3V0aW9uIik7CiB9CiAKLXN0YXRpYyB2b2lk
IGNhbGxPbk1haW5UaHJlYWRBbmRXYWl0KHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiBmdW5jdGlvbikK
K3N0YXRpYyB2b2lkIGNhbGxPbk1haW5UaHJlYWRBbmRXYWl0KFdURjo6RnVuY3Rpb248dm9pZCgp
PiYmIGZ1bmN0aW9uKQogewogICAgIGlmIChpc01haW5UaHJlYWQoKSkgewogICAgICAgICBmdW5j
dGlvbigpOwpAQCAtMTU2LDcgKzE1Niw3IEBAIHN0YXRpYyB2b2lkIGNhbGxPbk1haW5UaHJlYWRB
bmRXYWl0KHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiBmdW5jdGlvbikKIAogICAgIGJvb2wgaXNGaW5p
c2hlZCA9IGZhbHNlOwogCi0gICAgY2FsbE9uTWFpblRocmVhZChbJl0geworICAgIGNhbGxPbk1h
aW5UaHJlYWQoWyYsIGZ1bmN0aW9uID0gV1RGTW92ZShmdW5jdGlvbildIHsKICAgICAgICAgZnVu
Y3Rpb24oKTsKIAogICAgICAgICBzdGQ6OmxvY2tfZ3VhcmQ8TG9jaz4gbG9jayhtdXRleCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9Db29raWVTdG9y
YWdlTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvQ29va2llU3Rv
cmFnZU1hYy5tbQppbmRleCBlNzgyYjA2NmU0ZWE5Njg1YTQ4YWRiNzllODFlMDM4NTA5ZGM0NmNi
Li5lMTRlM2QxNDBmYjFkNTcyNWEyZTc2ZmM1NGU5OWRiY2Q5MTYzNGI1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9Db29raWVTdG9yYWdlTWFjLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0Nvb2tpZVN0b3JhZ2VNYWMu
bW0KQEAgLTIzLDE5ICsyMywyMCBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCiAgKi8KIAotI2luY2x1ZGUg
ImNvbmZpZy5oIgotI2luY2x1ZGUgIkNvb2tpZVN0b3JhZ2UuaCIKKyNpbXBvcnQgImNvbmZpZy5o
IgorI2ltcG9ydCAiQ29va2llU3RvcmFnZS5oIgogCiAjaW1wb3J0ICJXZWJDb3JlU3lzdGVtSW50
ZXJmYWNlLmgiCisjaW1wb3J0IDx3dGYvRnVuY3Rpb24uaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdl
YkNvcmU7CiAKIEBpbnRlcmZhY2UgV2ViQ29va2llU3RvcmFnZU9iakNBZGFwdGVyIDogTlNPYmpl
Y3QgewotICAgIHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4gbV9jb29raWVDaGFuZ2VDYWxsYmFjazsK
KyAgICBXVEY6OkZ1bmN0aW9uPHZvaWQgKCk+IG1fY29va2llQ2hhbmdlQ2FsbGJhY2s7CiB9CiAt
KHZvaWQpbm90aWZ5Q29va2llc0NoYW5nZWRPbk1haW5UaHJlYWQ7CiAtKHZvaWQpY29va2llc0No
YW5nZWROb3RpZmljYXRpb25IYW5kbGVyOihOU05vdGlmaWNhdGlvbiAqKW5vdGlmaWNhdGlvbjsK
LS0odm9pZClzdGFydExpc3RlbmluZ0ZvckNvb2tpZUNoYW5nZU5vdGlmaWNhdGlvbnNXaXRoQ2Fs
bGJhY2s6KHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4mJiljYWxsYmFjazsKKy0odm9pZClzdGFydExp
c3RlbmluZ0ZvckNvb2tpZUNoYW5nZU5vdGlmaWNhdGlvbnNXaXRoQ2FsbGJhY2s6KFdURjo6RnVu
Y3Rpb248dm9pZCAoKT4mJiljYWxsYmFjazsKIC0odm9pZClzdG9wTGlzdGVuaW5nRm9yQ29va2ll
Q2hhbmdlTm90aWZpY2F0aW9uczsKIEBlbmQKIApAQCAtNTMsNyArNTQsNyBAQCAtKHZvaWQpY29v
a2llc0NoYW5nZWROb3RpZmljYXRpb25IYW5kbGVyOihOU05vdGlmaWNhdGlvbiAqKW5vdGlmaWNh
dGlvbgogICAgIFtzZWxmIHBlcmZvcm1TZWxlY3Rvck9uTWFpblRocmVhZDpAc2VsZWN0b3Iobm90
aWZ5Q29va2llc0NoYW5nZWRPbk1haW5UaHJlYWQpIHdpdGhPYmplY3Q6bmlsIHdhaXRVbnRpbERv
bmU6RkFMU0VdOwogfQogCi0tKHZvaWQpc3RhcnRMaXN0ZW5pbmdGb3JDb29raWVDaGFuZ2VOb3Rp
ZmljYXRpb25zV2l0aENhbGxiYWNrOihzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+JiYpY2FsbGJhY2sK
Ky0odm9pZClzdGFydExpc3RlbmluZ0ZvckNvb2tpZUNoYW5nZU5vdGlmaWNhdGlvbnNXaXRoQ2Fs
bGJhY2s6KFdURjo6RnVuY3Rpb248dm9pZCAoKT4mJiljYWxsYmFjawogewogICAgIEFTU0VSVCgh
bV9jb29raWVDaGFuZ2VDYWxsYmFjayk7CiAgICAgbV9jb29raWVDaGFuZ2VDYWxsYmFjayA9IFdU
Rk1vdmUoY2FsbGJhY2spOwpAQCAtNzIsNyArNzMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IHN0YXRpYyBXZWJDb29raWVTdG9yYWdlT2JqQ0FkYXB0ZXIgKmNvb2tpZVN0b3JhZ2VBZGFwdGVy
OwogCi12b2lkIHN0YXJ0T2JzZXJ2aW5nQ29va2llQ2hhbmdlcyhjb25zdCBOZXR3b3JrU3RvcmFn
ZVNlc3Npb24mLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+JiYgY2FsbGJhY2spCit2b2lkIHN0YXJ0
T2JzZXJ2aW5nQ29va2llQ2hhbmdlcyhjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBXVEY6
OkZ1bmN0aW9uPHZvaWQgKCk+JiYgY2FsbGJhY2spCiB7CiAgICAgaWYgKCFjb29raWVTdG9yYWdl
QWRhcHRlcikKICAgICAgICAgY29va2llU3RvcmFnZUFkYXB0ZXIgPSBbW1dlYkNvb2tpZVN0b3Jh
Z2VPYmpDQWRhcHRlciBhbGxvY10gaW5pdF07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL3NvdXAvQ29va2llU3RvcmFnZVNvdXAuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0Nvb2tpZVN0b3JhZ2VTb3VwLmNwcAppbmRleCBlYTZh
NmIyOTI3ODA5MzViMTgzZGFjNmYxNDFkOTY5ZjNkNTMxYTBkLi40NWQ3YTkxMzA5M2EzZDVmZDk2
OTAyNzY3NzFmYTQwNGFjZjQwM2U0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL3NvdXAvQ29va2llU3RvcmFnZVNvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvc291cC9Db29raWVTdG9yYWdlU291cC5jcHAKQEAgLTIzLDcgKzIz
LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi12b2lkIHN0YXJ0T2JzZXJ2aW5nQ29va2ll
Q2hhbmdlcyhjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBzdGQ6OmZ1bmN0aW9uPHZvaWQg
KCk+JiYpCit2b2lkIHN0YXJ0T2JzZXJ2aW5nQ29va2llQ2hhbmdlcyhjb25zdCBOZXR3b3JrU3Rv
cmFnZVNlc3Npb24mLCBXVEY6OkZ1bmN0aW9uPHZvaWQgKCk+JiYpCiB7CiAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL3NvdXAvU291cE5ldHdvcmtTZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvc291cC9Tb3VwTmV0d29ya1Nlc3Npb24uY3BwCmluZGV4IDdjMTdlNjA0ZTc4YmI5
NWI0ZGZhNDAwN2YwMTI2ZGUxMjliYWYzNGEuLmEzZDg0ODA4NDhlMzkxYWY4MjAyMTA0ZjM2Y2Fl
OWM0ZGI1YjkxM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
c291cC9Tb3VwTmV0d29ya1Nlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvc291cC9Tb3VwTmV0d29ya1Nlc3Npb24uY3BwCkBAIC0yOTMsNyArMjkzLDcgQEAg
dm9pZCBTb3VwTmV0d29ya1Nlc3Npb246OnNldFNob3VsZElnbm9yZVRMU0Vycm9ycyhib29sIGln
bm9yZVRMU0Vycm9ycykKICAgICBnSWdub3JlVExTRXJyb3JzID0gaWdub3JlVExTRXJyb3JzOwog
fQogCi12b2lkIFNvdXBOZXR3b3JrU2Vzc2lvbjo6Y2hlY2tUTFNFcnJvcnMoU291cFJlcXVlc3Qq
IHNvdXBSZXF1ZXN0LCBTb3VwTWVzc2FnZSogbWVzc2FnZSwgc3RkOjpmdW5jdGlvbjx2b2lkIChj
b25zdCBSZXNvdXJjZUVycm9yJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFNvdXBOZXR3
b3JrU2Vzc2lvbjo6Y2hlY2tUTFNFcnJvcnMoU291cFJlcXVlc3QqIHNvdXBSZXF1ZXN0LCBTb3Vw
TWVzc2FnZSogbWVzc2FnZSwgV1RGOjpGdW5jdGlvbjx2b2lkIChjb25zdCBSZXNvdXJjZUVycm9y
Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKGdJZ25vcmVUTFNFcnJvcnMpIHsK
ICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb3VwTmV0d29ya1Nlc3Npb24uaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb3VwTmV0d29ya1Nlc3Npb24uaAppbmRleCA5
MDhiNmNiNmQ1ZTU0NmU4MjFmNmU3NDg5OGJlOGViZjFhZDk2YjQwLi5jZDgxMGYxMjE1NzY5MWM3
Y2VlYjI2ZDM3N2YxMTY4YWQyZGYzY2Q5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL3NvdXAvU291cE5ldHdvcmtTZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvdXBOZXR3b3JrU2Vzc2lvbi5oCkBAIC0yNiw4ICsy
Niw4IEBACiAjaWZuZGVmIFNvdXBOZXR3b3JrU2Vzc2lvbl9oCiAjZGVmaW5lIFNvdXBOZXR3b3Jr
U2Vzc2lvbl9oCiAKLSNpbmNsdWRlIDxmdW5jdGlvbmFsPgogI2luY2x1ZGUgPGdsaWItb2JqZWN0
Lmg+CisjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxl
Lmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi9nbGliL0dSZWZQdHIu
aD4KQEAgLTY1LDcgKzY1LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0QWNjZXB0TGFuZ3VhZ2Vz
KGNvbnN0IENTdHJpbmcmKTsKIAogICAgIHN0YXRpYyB2b2lkIHNldFNob3VsZElnbm9yZVRMU0Vy
cm9ycyhib29sKTsKLSAgICBzdGF0aWMgdm9pZCBjaGVja1RMU0Vycm9ycyhTb3VwUmVxdWVzdCos
IFNvdXBNZXNzYWdlKiwgc3RkOjpmdW5jdGlvbjx2b2lkIChjb25zdCBSZXNvdXJjZUVycm9yJik+
JiYpOworICAgIHN0YXRpYyB2b2lkIGNoZWNrVExTRXJyb3JzKFNvdXBSZXF1ZXN0KiwgU291cE1l
c3NhZ2UqLCBXVEY6OkZ1bmN0aW9uPHZvaWQgKGNvbnN0IFJlc291cmNlRXJyb3ImKT4mJik7CiAg
ICAgc3RhdGljIHZvaWQgYWxsb3dTcGVjaWZpY0hUVFBTQ2VydGlmaWNhdGVGb3JIb3N0KGNvbnN0
IENlcnRpZmljYXRlSW5mbyYsIGNvbnN0IFN0cmluZyYgaG9zdCk7CiAKICAgICBzdGF0aWMgdm9p
ZCBzZXRDdXN0b21Qcm90b2NvbFJlcXVlc3RUeXBlKEdUeXBlKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2UuY3BwCmluZGV4IDg2YzRkN2E4Mjk0ZjliYjk5
Mjg3Nzk0MjY1YjZjY2FiNjI0M2Q1ZTkuLjc1NWRlNzlmNTExNjk5ODY4NzQzNDA3ZmJhZmZmMmRm
MWRiODQ4ODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVE
YXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFi
YXNlLmNwcApAQCAtNTE2LDE5ICs1MTYsMTkgQEAgYm9vbCBTUUxpdGVEYXRhYmFzZTo6dHVybk9u
SW5jcmVtZW50YWxBdXRvVmFjdXVtKCkKIAogc3RhdGljIHZvaWQgZGVzdHJveUNvbGxhdGlvbkZ1
bmN0aW9uKHZvaWQqIGFyZykKIHsKLSAgICBhdXRvIGYgPSBzdGF0aWNfY2FzdDxzdGQ6OmZ1bmN0
aW9uPGludChpbnQsIGNvbnN0IHZvaWQqLCBpbnQsIGNvbnN0IHZvaWQqKT4qPihhcmcpOworICAg
IGF1dG8gZiA9IHN0YXRpY19jYXN0PFdURjo6RnVuY3Rpb248aW50KGludCwgY29uc3Qgdm9pZCos
IGludCwgY29uc3Qgdm9pZCopPio+KGFyZyk7CiAgICAgZGVsZXRlIGY7CiB9CiAKIHN0YXRpYyBp
bnQgY2FsbENvbGxhdGlvbkZ1bmN0aW9uKHZvaWQqIGFyZywgaW50IGFMZW5ndGgsIGNvbnN0IHZv
aWQqIGEsIGludCBiTGVuZ3RoLCBjb25zdCB2b2lkKiBiKQogewotICAgIGF1dG8gZiA9IHN0YXRp
Y19jYXN0PHN0ZDo6ZnVuY3Rpb248aW50KGludCwgY29uc3Qgdm9pZCosIGludCwgY29uc3Qgdm9p
ZCopPio+KGFyZyk7CisgICAgYXV0byBmID0gc3RhdGljX2Nhc3Q8V1RGOjpGdW5jdGlvbjxpbnQo
aW50LCBjb25zdCB2b2lkKiwgaW50LCBjb25zdCB2b2lkKik+Kj4oYXJnKTsKICAgICByZXR1cm4g
KCpmKShhTGVuZ3RoLCBhLCBiTGVuZ3RoLCBiKTsKIH0KIAotdm9pZCBTUUxpdGVEYXRhYmFzZTo6
c2V0Q29sbGF0aW9uRnVuY3Rpb24oY29uc3QgU3RyaW5nJiBjb2xsYXRpb25OYW1lLCBzdGQ6OmZ1
bmN0aW9uPGludChpbnQsIGNvbnN0IHZvaWQqLCBpbnQsIGNvbnN0IHZvaWQqKT4gY29sbGF0aW9u
RnVuY3Rpb24pCit2b2lkIFNRTGl0ZURhdGFiYXNlOjpzZXRDb2xsYXRpb25GdW5jdGlvbihjb25z
dCBTdHJpbmcmIGNvbGxhdGlvbk5hbWUsIFdURjo6RnVuY3Rpb248aW50KGludCwgY29uc3Qgdm9p
ZCosIGludCwgY29uc3Qgdm9pZCopPiYmIGNvbGxhdGlvbkZ1bmN0aW9uKQogewotICAgIGF1dG8g
ZnVuY3Rpb25PYmplY3QgPSBuZXcgc3RkOjpmdW5jdGlvbjxpbnQoaW50LCBjb25zdCB2b2lkKiwg
aW50LCBjb25zdCB2b2lkKik+KGNvbGxhdGlvbkZ1bmN0aW9uKTsKKyAgICBhdXRvIGZ1bmN0aW9u
T2JqZWN0ID0gbmV3IFdURjo6RnVuY3Rpb248aW50KGludCwgY29uc3Qgdm9pZCosIGludCwgY29u
c3Qgdm9pZCopPihXVEZNb3ZlKGNvbGxhdGlvbkZ1bmN0aW9uKSk7CiAgICAgc3FsaXRlM19jcmVh
dGVfY29sbGF0aW9uX3YyKG1fZGIsIGNvbGxhdGlvbk5hbWUudXRmOCgpLmRhdGEoKSwgU1FMSVRF
X1VURjgsIGZ1bmN0aW9uT2JqZWN0LCBjYWxsQ29sbGF0aW9uRnVuY3Rpb24sIGRlc3Ryb3lDb2xs
YXRpb25GdW5jdGlvbik7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3NxbC9TUUxpdGVEYXRhYmFzZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0
ZURhdGFiYXNlLmgKaW5kZXggZWU5YmEyYmUxZTI1MDQ1ZjljM2E2MTVlNjZlNzdiZmY3NTNjNDI4
OC4uMzRkYjY5NGNjMzNjZjJlMDYxNWY4YzY2ZTE1YjFjMTljYzkxYjk5OSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlLmgKQEAgLTEyNSw3ICsxMjUsNyBA
QCBwdWJsaWM6CiAgICAgZW51bSBBdXRvVmFjdXVtUHJhZ21hIHsgQXV0b1ZhY3V1bU5vbmUgPSAw
LCBBdXRvVmFjdXVtRnVsbCA9IDEsIEF1dG9WYWN1dW1JbmNyZW1lbnRhbCA9IDIgfTsKICAgICBi
b29sIHR1cm5PbkluY3JlbWVudGFsQXV0b1ZhY3V1bSgpOwogCi0gICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBzZXRDb2xsYXRpb25GdW5jdGlvbihjb25zdCBTdHJpbmcmIGNvbGxhdGlvbk5hbWUsIHN0
ZDo6ZnVuY3Rpb248aW50KGludCwgY29uc3Qgdm9pZCosIGludCwgY29uc3Qgdm9pZCopPik7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRDb2xsYXRpb25GdW5jdGlvbihjb25zdCBTdHJpbmcm
IGNvbGxhdGlvbk5hbWUsIFdURjo6RnVuY3Rpb248aW50KGludCwgY29uc3Qgdm9pZCosIGludCwg
Y29uc3Qgdm9pZCopPiYmKTsKICAgICB2b2lkIHJlbW92ZUNvbGxhdGlvbkZ1bmN0aW9uKGNvbnN0
IFN0cmluZyYgY29sbGF0aW9uTmFtZSk7CiAKICAgICAvLyBTZXQgdGhpcyBmbGFnIHRvIGFsbG93
IGFjY2VzcyBmcm9tIG11bHRpcGxlIHRocmVhZHMuICBOb3QgYWxsIG11bHRpLXRocmVhZGVkIGFj
Y2Vzc2VzIGFyZSBzYWZlIQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxheWVyQmFja2luZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5
ZXJCYWNraW5nLmNwcAppbmRleCA0NmJhZWQxMDM0YjI0ZTYzYjU4ZTM5NzY0ZDk3MzcxYTdhNGY5
MjkzLi4yOThiZTAyZDhkMWViZjczZDc0MjlhYTE3ZWM4ZWEwYzYwYWRmMjNjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcApAQCAtMjA4OSw3
ICsyMDg5LDcgQEAgYm9vbCBSZW5kZXJMYXllckJhY2tpbmc6OmlzU2ltcGxlQ29udGFpbmVyQ29t
cG9zaXRpbmdMYXllcihQYWludGVkQ29udGVudHNJbmZvJgogLy8gUmV0dXJuaW5nIHRydWUgc3Rv
cHMgdGhlIHRyYXZlcnNhbC4KIGVudW0gY2xhc3MgTGF5ZXJUcmF2ZXJzYWwgeyBDb250aW51ZSwg
U3RvcCB9OwogCi1zdGF0aWMgTGF5ZXJUcmF2ZXJzYWwgdHJhdmVyc2VWaXNpYmxlTm9uQ29tcG9z
aXRlZERlc2NlbmRhbnRMYXllcnMoUmVuZGVyTGF5ZXImIHBhcmVudCwgc3RkOjpmdW5jdGlvbjxM
YXllclRyYXZlcnNhbCAoY29uc3QgUmVuZGVyTGF5ZXImKT4gbGF5ZXJGdW5jKQorc3RhdGljIExh
eWVyVHJhdmVyc2FsIHRyYXZlcnNlVmlzaWJsZU5vbkNvbXBvc2l0ZWREZXNjZW5kYW50TGF5ZXJz
KFJlbmRlckxheWVyJiBwYXJlbnQsIGNvbnN0IFdURjo6RnVuY3Rpb248TGF5ZXJUcmF2ZXJzYWwg
KGNvbnN0IFJlbmRlckxheWVyJik+JiBsYXllckZ1bmMpCiB7CiAgICAgLy8gRklYTUU6IFdlIHNo
b3VsZG4ndCBiZSBjYWxsZWQgd2l0aCBhIHN0YWxlIHotb3JkZXIgbGlzdHMuIFNlZSBidWcgODU1
MTIuCiAgICAgcGFyZW50LnVwZGF0ZUxheWVyTGlzdHNJZk5lZWRlZCgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guY3BwCmluZGV4IGNjYTQ3NDg2NDIxOGYwYjc4MzQ5
OWE5N2UzNDRlZDk0YWM5Y2M4ZTUuLjM1YThkNjRhYmE4M2MxZmYyYjgyYjhmN2JlMzIxM2ExYTRh
NzdkOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHAKQEAg
LTI4Niw3ICsyODYsNyBAQCBMYXlvdXRSZWN0IFJlbmRlckxpc3RCb3g6Oml0ZW1Cb3VuZGluZ0Jv
eFJlY3QoY29uc3QgTGF5b3V0UG9pbnQmIGFkZGl0aW9uYWxPZmZzZQogICAgIHJldHVybiBMYXlv
dXRSZWN0KHgsIHksIGNvbnRlbnRXaWR0aCgpLCBpdGVtSGVpZ2h0KCkpOwogfQogCi12b2lkIFJl
bmRlckxpc3RCb3g6OnBhaW50SXRlbShQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0
UG9pbnQmIHBhaW50T2Zmc2V0LCBQYWludEZ1bmN0aW9uIHBhaW50RnVuY3Rpb24pCit2b2lkIFJl
bmRlckxpc3RCb3g6OnBhaW50SXRlbShQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0
UG9pbnQmIHBhaW50T2Zmc2V0LCBjb25zdCBQYWludEZ1bmN0aW9uJiBwYWludEZ1bmN0aW9uKQog
ewogICAgIGludCBsaXN0SXRlbXNTaXplID0gbnVtSXRlbXMoKTsKICAgICBpbnQgZmlyc3RWaXNp
YmxlSXRlbSA9IG1faW5kZXhPZkZpcnN0VmlzaWJsZUl0ZW1JbnNpZGVQYWRkaW5nVG9wQXJlYS52
YWx1ZV9vcihtX2luZGV4T2Zmc2V0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMaXN0Qm94LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlz
dEJveC5oCmluZGV4IGIxNjU0ZGZiNjMzYzgyZWE5MTI0ZDMxM2M0YmViZGU4ZTA3NDdiYTIuLjI0
ODk4Y2RkYjQ3NjQ2ODI5MjFiOGFkZmQ2ZTBkNjJmYzljZTEzNGYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxpc3RCb3guaApAQCAtMTQzLDggKzE0Myw4IEBAIHByaXZhdGU6CiAg
ICAgLy8gTk9URTogVGhpcyBzaG91bGQgb25seSBiZSBjYWxsZWQgYnkgdGhlIG92ZXJyaWRlbiBz
ZXRTY3JvbGxPZmZzZXQgZnJvbSBTY3JvbGxhYmxlQXJlYS4KICAgICB2b2lkIHNjcm9sbFRvKGlu
dCBuZXdPZmZzZXQpOwogCi0gICAgdXNpbmcgUGFpbnRGdW5jdGlvbiA9IHN0ZDo6ZnVuY3Rpb248
dm9pZChQYWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYsIGludCBsaXN0SXRlbUluZGV4KT47
Ci0gICAgdm9pZCBwYWludEl0ZW0oUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmLCBQYWlu
dEZ1bmN0aW9uKTsKKyAgICB1c2luZyBQYWludEZ1bmN0aW9uID0gV1RGOjpGdW5jdGlvbjx2b2lk
KFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50JiwgaW50IGxpc3RJdGVtSW5kZXgpPjsKKyAg
ICB2b2lkIHBhaW50SXRlbShQYWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYsIGNvbnN0IFBh
aW50RnVuY3Rpb24mKTsKIAogICAgIHZvaWQgc2V0SGFzVmVydGljYWxTY3JvbGxiYXIoYm9vbCBo
YXNTY3JvbGxiYXIpOwogICAgIFJlZjxTY3JvbGxiYXI+IGNyZWF0ZVNjcm9sbGJhcigpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2xpbmUvQnJlYWtpbmdDb250ZXh0Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbGluZS9CcmVha2luZ0NvbnRleHQuaAppbmRleCAx
MjZmZDNkNGVjZjk5ZDA0MzRiYTcxMzJhNTc5YmY0NTE4ZmRiOGExLi4yZDgzZjA3N2ExYmNiNjE2
YzY5MmMwNTVjNzdiODdmNGYxYzc1ZjBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvbGluZS9CcmVha2luZ0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvbGluZS9CcmVha2luZ0NvbnRleHQuaApAQCAtMzgsNiArMzgsNyBAQAogI2luY2x1ZGUgIlJl
bmRlclJ1YnlSdW4uaCIKICNpbmNsdWRlICJSZW5kZXJTVkdJbmxpbmVUZXh0LmgiCiAjaW5jbHVk
ZSAiVHJhaWxpbmdPYmplY3RzLmgiCisjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+CiAjaW5jbHVk
ZSA8d3RmL09wdGlvbmFsLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nVmlldy5oPgogI2lu
Y2x1ZGUgPHd0Zi91bmljb2RlL0NoYXJhY3Rlck5hbWVzLmg+CkBAIC0xOTEsNyArMTkyLDcgQEAg
cHJpdmF0ZToKICAgICAgICAgICAgIHRoaXMtPmFwcGVuZChpbml0aWFsKTsKICAgICAgICAgfQog
Ci0gICAgICAgIHZvaWQgcHVzaChzdGQ6OmZ1bmN0aW9uPHZvaWQoSW5saW5lSXRlcmF0b3ImIG1v
ZGlmeU1lKT4gdXBkYXRlcikKKyAgICAgICAgdm9pZCBwdXNoKGNvbnN0IFdURjo6RnVuY3Rpb248
dm9pZChJbmxpbmVJdGVyYXRvciYgbW9kaWZ5TWUpPiYgdXBkYXRlcikKICAgICAgICAgewogICAg
ICAgICAgICAgQVNTRVJUKCF0aGlzLT5pc0VtcHR5KCkpOwogICAgICAgICAgICAgaWYgKG1fY2Fw
YWNpdHkgIT0gMSkKQEAgLTIwMSw3ICsyMDIsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAg
IHRoaXMtPnJlc2l6ZShtX2NhcGFjaXR5KTsKICAgICAgICAgfQogCi0gICAgICAgIHZvaWQgdXBk
YXRlKHN0ZDo6ZnVuY3Rpb248dm9pZChJbmxpbmVJdGVyYXRvciYgbW9kaWZ5TWUpPiB1cGRhdGVy
KQorICAgICAgICB2b2lkIHVwZGF0ZShjb25zdCBXVEY6OkZ1bmN0aW9uPHZvaWQoSW5saW5lSXRl
cmF0b3ImIG1vZGlmeU1lKT4mIHVwZGF0ZXIpCiAgICAgICAgIHsKICAgICAgICAgICAgIEFTU0VS
VCghdGhpcy0+aXNFbXB0eSgpKTsKICAgICAgICAgICAgIHVwZGF0ZXIodGhpcy0+YXQoMCkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9Xb3JrZXIuY3BwCmluZGV4IDljOTg3NWYwZjU3Nzg2YWYyYmRmM2ZmODNm
NWI3NGYyOGExYmEyMTMuLjY2ZThkYWZhOTg3ODc3MTE2ODYzNTEzMjQ3NmU0YTcwNDViZDEzM2Qg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlci5jcHAKQEAgLTU5LDcgKzU5LDcgQEAgaW5saW5lIFdv
cmtlcjo6V29ya2VyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIEpTQzo6UnVudGlt
ZUZsYWdzIHJ1bnRpbWUKIHsKICAgICBpZiAoIWFsbFdvcmtlcnMpIHsKICAgICAgICAgYWxsV29y
a2VycyA9IG5ldyBIYXNoU2V0PFdvcmtlcio+OwotICAgICAgICBuZXR3b3JrU3RhdGVOb3RpZmll
cigpLmFkZE5ldHdvcmtTdGF0ZUNoYW5nZUxpc3RlbmVyKG5ldHdvcmtTdGF0ZUNoYW5nZWQpOwor
ICAgICAgICBuZXR3b3JrU3RhdGVOb3RpZmllcigpLmFkZE5ldHdvcmtTdGF0ZUNoYW5nZUxpc3Rl
bmVyKFtdIChib29sIGlzT25MaW5lKSB7IG5ldHdvcmtTdGF0ZUNoYW5nZWQoaXNPbkxpbmUpOyB9
KTsKICAgICB9CiAKICAgICBhdXRvIGFkZFJlc3VsdCA9IGFsbFdvcmtlcnMtPmFkZCh0aGlzKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyUnVuTG9vcC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclJ1bkxvb3AuY3BwCmluZGV4IDY0YzJlZjQ1YzRm
ZDU5MGY1ODFkMzBmMzgwMTllYzZlNjA2MzZlMWMuLjIzNjFiZjc0NWFhYjU0ZjU5MTM2MDczOTI3
NjliNjJhZGIzZTBiY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2Vy
UnVuTG9vcC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJSdW5Mb29wLmNw
cApAQCAtNTAsNyArNTAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBXb3JrZXJTaGFy
ZWRUaW1lciBmaW5hbCA6IHB1YmxpYyBTaGFyZWRUaW1lciB7CiBwdWJsaWM6CiAgICAgLy8gU2hh
cmVkVGltZXIgaW50ZXJmYWNlLgotICAgIHZvaWQgc2V0RmlyZWRGdW5jdGlvbihzdGQ6OmZ1bmN0
aW9uPHZvaWQoKT4mJiBmdW5jdGlvbikgb3ZlcnJpZGUgeyBtX3NoYXJlZFRpbWVyRnVuY3Rpb24g
PSBXVEZNb3ZlKGZ1bmN0aW9uKTsgfQorICAgIHZvaWQgc2V0RmlyZWRGdW5jdGlvbihXVEY6OkZ1
bmN0aW9uPHZvaWQoKT4mJiBmdW5jdGlvbikgb3ZlcnJpZGUgeyBtX3NoYXJlZFRpbWVyRnVuY3Rp
b24gPSBXVEZNb3ZlKGZ1bmN0aW9uKTsgfQogICAgIHZvaWQgc2V0RmlyZUludGVydmFsKFNlY29u
ZHMgaW50ZXJ2YWwpIG92ZXJyaWRlIHsgbV9uZXh0RmlyZVRpbWUgPSBpbnRlcnZhbCArIFdhbGxU
aW1lOjpub3coKTsgfQogICAgIHZvaWQgc3RvcCgpIG92ZXJyaWRlIHsgbV9uZXh0RmlyZVRpbWUg
PSBXYWxsVGltZSgpOyB9CiAKQEAgLTU5LDcgKzU5LDcgQEAgcHVibGljOgogICAgIHZvaWQgZmly
ZSgpIHsgbV9zaGFyZWRUaW1lckZ1bmN0aW9uKCk7IH0KIAogcHJpdmF0ZToKLSAgICBzdGQ6OmZ1
bmN0aW9uPHZvaWQoKT4gbV9zaGFyZWRUaW1lckZ1bmN0aW9uOworICAgIFdURjo6RnVuY3Rpb248
dm9pZCgpPiBtX3NoYXJlZFRpbWVyRnVuY3Rpb247CiAgICAgV2FsbFRpbWUgbV9uZXh0RmlyZVRp
bWU7CiB9OwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>313370</attachid>
            <date>2017-06-19 22:35:33 -0700</date>
            <delta_ts>2017-06-19 22:47:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-173583-20170619223532.patch</filename>
            <type>text/plain</type>
            <size>80319</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE4NTI4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWRjMjgyZDE0ODRkZjk3
MzQ0NTA1MmZiNTI0ZTM3MDljZmQxZDcwNy4uMThlYjAzMzJjOGE2NjQ5ZjdlNDJhOGI0NDUxYjAz
MmE1MDAyODU0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzMCBAQAorMjAxNy0wNi0xOSAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFVzZSBXVEY6OkZ1bmN0aW9u
IGluc3RlYWQgb2Ygc3RkOjpmdW5jdGlvbiBpbiBtb3JlIHBsYWNlcyBpbiBXZWJDb3JlLworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTczNTgzCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXNlIFdURjo6RnVu
Y3Rpb24gaW5zdGVhZCBvZiBzdGQ6OmZ1bmN0aW9uIGluIG1vcmUgcGxhY2VzIGluIFdlYkNvcmUv
IHRvCisgICAgICAgIHJlZHVjZSBjb3B5aW5nLgorCisgICAgICAgICogcGFnZS9QYWdlLmNwcDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9IeXN0ZXJlc2lzQWN0aXZpdHkuaDoKKyAgICAgICAgKFdlYkNv
cmU6Okh5c3RlcmVzaXNBY3Rpdml0eTo6SHlzdGVyZXNpc0FjdGl2aXR5KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9Mb2dnaW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnJlZ2lzdGVyTm90aWZ5Q2Fs
bGJhY2spOgorICAgICAgICAqIHBsYXRmb3JtL0xvZ2dpbmcuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9NYWluVGhyZWFkU2hhcmVkVGltZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWFpblRocmVh
ZFNoYXJlZFRpbWVyOjpzZXRGaXJlZEZ1bmN0aW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9NYWlu
VGhyZWFkU2hhcmVkVGltZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9QbGF0Zm9ybVBhc3RlYm9h
cmQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9TY29wZUd1YXJkLmg6CisgICAgICAgIChXZWJDb3Jl
OjpTY29wZUd1YXJkOjpTY29wZUd1YXJkKToKKyAgICAgICAgKFdlYkNvcmU6OlNjb3BlR3VhcmQ6
OmVuYWJsZSk6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uU21vb3RoLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdGlvblNtb290aDo6U2Nyb2xsQW5pbWF0aW9u
U21vb3RoKToKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxBbmltYXRpb25TbW9vdGguaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9TaGFyZWRUaW1lci5oOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlv
L1BsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbGF0
Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6OmN1cnJlbnRTZXNzaW9uc01hdGNoaW5nKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXIuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9jZi9NYWluVGhyZWFkU2hhcmVkVGltZXJDRi5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpzZXR1cFBvd2VyT2JzZXJ2ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2NmL1J1bkxv
b3BPYnNlcnZlci5oOgorICAgICAgICAoV2ViQ29yZTo6UnVuTG9vcE9ic2VydmVyOjpSdW5Mb29w
T2JzZXJ2ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5o
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6dHJhdmVyc2UpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9N
ZWRpYVBsYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjphZGRNZWRpYUVuZ2luZSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9QYXRoLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb246OnNlZWtDb21wbGV0ZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uOjpzY2hlZHVsZU1haW5U
aHJlYWROb3RpZmljYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uOjpkaXNwYXRjaE5vdGlmaWNhdGlvbik6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5oOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uOjpOb3RpZmlj
YXRpb246Ok5vdGlmaWNhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb246Ok5vdGlmaWNhdGlvbjo6ZnVuY3Rpb24pOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbk9iakMubW06CisgICAgICAgICgtW1dlYkNvcmVBVkZNb3ZpZU9ic2VydmVyIG9ic2VydmVW
YWx1ZUZvcktleVBhdGg6b2ZPYmplY3Q6Y2hhbmdlOmNvbnRleHQ6XSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFT
dHJlYW1BVkZPYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6cnVuV2l0aG91dEFuaW1hdGlvbnMp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0lPU3VyZmFjZS5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0lPU3VyZmFjZS5tbToKKyAgICAgICAgKFdlYkNv
cmU6OklPU3VyZmFjZTo6Y29udmVydFRvRm9ybWF0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvTWFpblRocmVhZE5vdGlmaWVyLmg6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUmVxdWVzdEluc3RhbGxNaXNzaW5nUGx1Z2lu
c0NhbGxiYWNrLmg6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclJlcXVlc3RJbnN0YWxs
TWlzc2luZ1BsdWdpbnNDYWxsYmFjazo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
UGxheWVyUmVxdWVzdEluc3RhbGxNaXNzaW5nUGx1Z2luc0NhbGxiYWNrOjpNZWRpYVBsYXllclJl
cXVlc3RJbnN0YWxsTWlzc2luZ1BsdWdpbnNDYWxsYmFjayk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dERpcmVjdDJELmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd1dpdGhvdXRTaGFkb3cpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3V2l0aFNoYWRvdyk6CisgICAgICAgICogcGxhdGZvcm0v
Z3RrL1Bhc3RlYm9hcmRIZWxwZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkU2V0
RGF0YTo6Q2xpcGJvYXJkU2V0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkSGVs
cGVyOjp3cml0ZUNsaXBib2FyZENvbnRlbnRzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvUGFz
dGVib2FyZEhlbHBlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9QbGF0Zm9ybVBhc3RlYm9h
cmRHdGsuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1QYXN0ZWJvYXJkOjp3cml0ZVRv
Q2xpcGJvYXJkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuSW50
ZXJmYWNlQVZLaXQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVu
SW50ZXJmYWNlQVZLaXQubW06CisgICAgICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VB
VktpdDo6cHJlcGFyZWRUb1JldHVyblRvSW5saW5lKToKKyAgICAgICAgKFdlYlZpZGVvRnVsbHNj
cmVlbkludGVyZmFjZUFWS2l0OjpmdWxsc2NyZWVuTWF5UmV0dXJuVG9JbmxpbmUpOgorICAgICAg
ICAqIHBsYXRmb3JtL21hYy9Qb3dlck9ic2VydmVyTWFjLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlBvd2VyT2JzZXJ2ZXI6OlBvd2VyT2JzZXJ2ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9Q
b3dlck9ic2VydmVyTWFjLmg6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1dlYkNvcmVOU1VSTEV4
dHJhcy5tbToKKyAgICAgICAgKFdlYkNvcmU6OmlzU2Vjb25kTGV2ZWxEb21haW5OYW1lQWxsb3dl
ZEJ5VExEUnVsZXMpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL0NhcHR1cmVEZXZp
Y2VNYW5hZ2VyLmNwcDoKKyAgICAgICAgKENhcHR1cmVEZXZpY2VNYW5hZ2VyOjphZGRDYXB0dXJl
RGV2aWNlQ2hhbmdlZE9ic2VydmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9D
YXB0dXJlRGV2aWNlTWFuYWdlci5oOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL1Jl
YWx0aW1lTWVkaWFTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNv
dXJjZTo6c2NoZWR1bGVEZWZlcnJlZFRhc2spOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3Ry
ZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVh
bS9pb3MvQVZBdWRpb1Nlc3Npb25DYXB0dXJlRGV2aWNlTWFuYWdlci5tbToKKyAgICAgICAgKC1b
V2ViQVZBdWRpb1Nlc3Npb25BdmFpbGFibGVJbnB1dHNMaXN0ZW5lciBpbml0V2l0aENhbGxiYWNr
Ol0pOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Db3JlQXVkaW9DYXB0dXJl
U291cmNlLmg6CisgICAgICAgICogcGxhdGZvcm0vbW9jay9TY3JvbGxBbmltYXRvck1vY2suY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3JNb2NrOjpTY3JvbGxBbmltYXRvck1v
Y2spOgorICAgICAgICAqIHBsYXRmb3JtL21vY2svU2Nyb2xsQW5pbWF0b3JNb2NrLmg6CisgICAg
ICAgICogcGxhdGZvcm0vbmV0d29yay9Db29raWVTdG9yYWdlLmg6CisgICAgICAgICogcGxhdGZv
cm0vbmV0d29yay9OZXR3b3JrU3RhdGVOb3RpZmllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpO
ZXR3b3JrU3RhdGVOb3RpZmllcjo6YWRkTmV0d29ya1N0YXRlQ2hhbmdlTGlzdGVuZXIpOgorICAg
ICAgICAqIHBsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0YXRlTm90aWZpZXIuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246OmZvckVhY2gpOgorICAgICAgICAqIHBsYXRm
b3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmg6CisgICAgICAgICogcGxhdGZvcm0v
bmV0d29yay9jZi9Db29raWVTdG9yYWdlQ0ZOZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29v
a2llQ2hhbmdlQ2FsbGJhY2tNYXApOgorICAgICAgICAoV2ViQ29yZTo6c3RhcnRPYnNlcnZpbmdD
b29raWVDaGFuZ2VzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL1NvY2tldFN0cmVh
bUhhbmRsZUltcGxDRk5ldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjYWxsT25NYWluVGhyZWFk
QW5kV2FpdCk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9tYWMvQ29va2llU3RvcmFnZU1h
Yy5tbToKKyAgICAgICAgKC1bV2ViQ29va2llU3RvcmFnZU9iakNBZGFwdGVyIHN0YXJ0TGlzdGVu
aW5nRm9yQ29va2llQ2hhbmdlTm90aWZpY2F0aW9uc1dpdGhDYWxsYmFjazpdKToKKyAgICAgICAg
KFdlYkNvcmU6OnN0YXJ0T2JzZXJ2aW5nQ29va2llQ2hhbmdlcyk6CisgICAgICAgICogcGxhdGZv
cm0vbmV0d29yay9zb3VwL0Nvb2tpZVN0b3JhZ2VTb3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OnN0YXJ0T2JzZXJ2aW5nQ29va2llQ2hhbmdlcyk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29y
ay9zb3VwL1NvdXBOZXR3b3JrU2Vzc2lvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTb3VwTmV0
d29ya1Nlc3Npb246OmNoZWNrVExTRXJyb3JzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3Jr
L3NvdXAvU291cE5ldHdvcmtTZXNzaW9uLmg6CisgICAgICAgICogcGxhdGZvcm0vc3FsL1NRTGl0
ZURhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmRlc3Ryb3lDb2xsYXRpb25GdW5jdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpjYWxsQ29sbGF0aW9uRnVuY3Rpb24pOgorICAgICAgICAo
V2ViQ29yZTo6U1FMaXRlRGF0YWJhc2U6OnNldENvbGxhdGlvbkZ1bmN0aW9uKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2UuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyTGF5ZXJCYWNraW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRyYXZlcnNlVmlzaWJsZU5v
bkNvbXBvc2l0ZWREZXNjZW5kYW50TGF5ZXJzKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
TGlzdEJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMaXN0Qm94OjpwYWludEl0ZW0p
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMaXN0Qm94Lmg6CisgICAgICAgICogcmVuZGVy
aW5nL2xpbmUvQnJlYWtpbmdDb250ZXh0Lmg6CisgICAgICAgIChXZWJDb3JlOjpCcmVha2luZ0Nv
bnRleHQ6OklubGluZUl0ZXJhdG9ySGlzdG9yeTo6cHVzaCk6CisgICAgICAgIChXZWJDb3JlOjpC
cmVha2luZ0NvbnRleHQ6OklubGluZUl0ZXJhdG9ySGlzdG9yeTo6dXBkYXRlKToKKyAgICAgICAg
KiB3b3JrZXJzL1dvcmtlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXI6Oldvcmtlcik6
CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJSdW5Mb29wLmNwcDoKKwogMjAxNy0wNi0xOSAgTXls
ZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgogCiAgICAgICAgIFtDb2NvYV0g
VGhlIHN5c3RlbSBKYXBhbmVzZSBmb250IGNhbm5vdCBiZSBpdGFsaWNpemVkCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdl
LmNwcAppbmRleCAwMWZhZDM0NTg5ZmUxNDU4MzFkNWY0ZDJiNzRiOWE3NDllN2I5MzAwLi43NGEx
OWU4N2JlMmQ0YWJmOWZhMzA0ZWUyOTU0NzI4ODljYTU1N2I3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAK
QEAgLTI4MSw3ICsyODEsNyBAQCBQYWdlOjpQYWdlKFBhZ2VDb25maWd1cmF0aW9uJiYgcGFnZUNv
bmZpZ3VyYXRpb24pCiAgICAgaWYgKCFhbGxQYWdlcykgewogICAgICAgICBhbGxQYWdlcyA9IG5l
dyBIYXNoU2V0PFBhZ2UqPjsKICAgICAgICAgCi0gICAgICAgIG5ldHdvcmtTdGF0ZU5vdGlmaWVy
KCkuYWRkTmV0d29ya1N0YXRlQ2hhbmdlTGlzdGVuZXIobmV0d29ya1N0YXRlQ2hhbmdlZCk7Cisg
ICAgICAgIG5ldHdvcmtTdGF0ZU5vdGlmaWVyKCkuYWRkTmV0d29ya1N0YXRlQ2hhbmdlTGlzdGVu
ZXIoW10gKGJvb2wgaXNPbkxpbmUpIHsgbmV0d29ya1N0YXRlQ2hhbmdlZChpc09uTGluZSk7IH0p
OwogICAgIH0KIAogICAgIEFTU0VSVCghYWxsUGFnZXMtPmNvbnRhaW5zKHRoaXMpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0h5c3RlcmVzaXNBY3Rpdml0eS5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vSHlzdGVyZXNpc0FjdGl2aXR5LmgKaW5kZXggNTk5ZTE3MWVj
MWFjYWQyMGVkOGYxNWQxYjQ1YzllYWE5ZjFjZTBhMC4uOTExOGVhNGU5ZmQwNThjZTMxMDc0Mjk2
MTEzZjNjM2NjYzMwMWU0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vSHlz
dGVyZXNpc0FjdGl2aXR5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vSHlzdGVyZXNp
c0FjdGl2aXR5LmgKQEAgLTM5LDggKzM5LDggQEAgZW51bSBjbGFzcyBIeXN0ZXJlc2lzU3RhdGUg
ewogCiBjbGFzcyBIeXN0ZXJlc2lzQWN0aXZpdHkgewogcHVibGljOgotICAgIGV4cGxpY2l0IEh5
c3RlcmVzaXNBY3Rpdml0eShzdGQ6OmZ1bmN0aW9uPHZvaWQoSHlzdGVyZXNpc1N0YXRlKT4gY2Fs
bGJhY2sgPSBbXShIeXN0ZXJlc2lzU3RhdGUpIHsgfSwgZG91YmxlIGh5c3RlcmVzaXNTZWNvbmRz
ID0gRGVmYXVsdEh5c3RlcmVzaXNTZWNvbmRzKQotICAgICAgICA6IG1fY2FsbGJhY2soY2FsbGJh
Y2spCisgICAgZXhwbGljaXQgSHlzdGVyZXNpc0FjdGl2aXR5KFdURjo6RnVuY3Rpb248dm9pZChI
eXN0ZXJlc2lzU3RhdGUpPiYmIGNhbGxiYWNrID0gW10oSHlzdGVyZXNpc1N0YXRlKSB7IH0sIGRv
dWJsZSBoeXN0ZXJlc2lzU2Vjb25kcyA9IERlZmF1bHRIeXN0ZXJlc2lzU2Vjb25kcykKKyAgICAg
ICAgOiBtX2NhbGxiYWNrKFdURk1vdmUoY2FsbGJhY2spKQogICAgICAgICAsIG1faHlzdGVyZXNp
c1NlY29uZHMoaHlzdGVyZXNpc1NlY29uZHMpCiAgICAgICAgICwgbV9hY3RpdmUoZmFsc2UpCiAg
ICAgICAgICwgbV90aW1lcigqdGhpcywgJkh5c3RlcmVzaXNBY3Rpdml0eTo6aHlzdGVyZXNpc1Rp
bWVyRmlyZWQpCkBAIC04OCw3ICs4OCw3IEBAIHByaXZhdGU6CiAgICAgICAgIG1fY2FsbGJhY2so
SHlzdGVyZXNpc1N0YXRlOjpTdG9wcGVkKTsKICAgICB9CiAKLSAgICBzdGQ6OmZ1bmN0aW9uPHZv
aWQoSHlzdGVyZXNpc1N0YXRlKT4gbV9jYWxsYmFjazsKKyAgICBXVEY6OkZ1bmN0aW9uPHZvaWQo
SHlzdGVyZXNpc1N0YXRlKT4gbV9jYWxsYmFjazsKICAgICBkb3VibGUgbV9oeXN0ZXJlc2lzU2Vj
b25kczsgLy8gRklYTUU6IFNob3VsZCB1c2UgU2Vjb25kcy4KICAgICBib29sIG1fYWN0aXZlOwog
ICAgIFRpbWVyIG1fdGltZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9M
b2dnaW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xvZ2dpbmcuY3BwCmluZGV4IDBm
YjViZjgxMjljOTY0NTRjNGU0ZjgwYzAwZGJmZjE3YWEyMzdiOTQuLmQ4NTdmZDhjNTg5ODY2ZDY4
NDczYWY5ZjA2MDBjYzM4ZTAyZGJlYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL0xvZ2dpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xvZ2dpbmcuY3Bw
CkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIkxvZ0lu
aXRpYWxpemF0aW9uLmgiCiAKKyNpbmNsdWRlIDx3dGYvQmxvY2tQdHIuaD4KICNpbmNsdWRlIDx3
dGYvU3RkTGliRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2luY2x1
ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpAQCAtNzksMTMgKzgwLDEzIEBAIHZvaWQgaW5pdGlh
bGl6ZUxvZ0NoYW5uZWxzSWZOZWNlc3NhcnkoKQogfQogCiAjaWZuZGVmIE5ERUJVRwotdm9pZCBy
ZWdpc3Rlck5vdGlmeUNhbGxiYWNrKGNvbnN0IFN0cmluZyYgbm90aWZ5SUQsIHN0ZDo6ZnVuY3Rp
b248dm9pZCgpPiBjYWxsYmFjaykKK3ZvaWQgcmVnaXN0ZXJOb3RpZnlDYWxsYmFjayhjb25zdCBT
dHJpbmcmIG5vdGlmeUlELCBXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJiBjYWxsYmFjaykKIHsKICNp
ZiBQTEFURk9STShDT0NPQSkKICAgICBpbnQgdG9rZW47Ci0gICAgbm90aWZ5X3JlZ2lzdGVyX2Rp
c3BhdGNoKG5vdGlmeUlELnV0ZjgoKS5kYXRhKCksICZ0b2tlbiwgZGlzcGF0Y2hfZ2V0X21haW5f
cXVldWUoKSwgXihpbnQpIHsKKyAgICBub3RpZnlfcmVnaXN0ZXJfZGlzcGF0Y2gobm90aWZ5SUQu
dXRmOCgpLmRhdGEoKSwgJnRva2VuLCBkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBCbG9ja1B0
cjx2b2lkIChpbnQpPjo6ZnJvbUNhbGxhYmxlKFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2sp
XSAoaW50KSB7CiAgICAgICAgIGNhbGxiYWNrKCk7Ci0gICAgfSk7CisgICAgfSkuZ2V0KCkpOwog
I2Vsc2UKICAgICBVTlVTRURfUEFSQU0obm90aWZ5SUQpOwogICAgIFVOVVNFRF9QQVJBTShjYWxs
YmFjayk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2dnaW5nLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2dnaW5nLmgKaW5kZXggODgzYTlmMjIwOTdlZWMxNmRl
Y2NhNDYzMjI4ODUwNjZiNDY3Yjc0ZS4uNWFiMDE2MmExNTg0ZDE4NWExYmUzZDUwNmVlOGZhMjhl
YWQ3MDM2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTG9nZ2luZy5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xvZ2dpbmcuaApAQCAtMTAzLDcgKzEwMyw3IEBA
IFN0cmluZyBsb2dMZXZlbFN0cmluZygpOwogYm9vbCBpc0xvZ0NoYW5uZWxFbmFibGVkKGNvbnN0
IFN0cmluZyYgbmFtZSk7CiBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldExvZ0NoYW5uZWxUb0FjY3Vt
dWxhdGUoY29uc3QgU3RyaW5nJiBuYW1lKTsKICNpZm5kZWYgTkRFQlVHCi12b2lkIHJlZ2lzdGVy
Tm90aWZ5Q2FsbGJhY2soY29uc3QgU3RyaW5nJiBub3RpZnlJRCwgc3RkOjpmdW5jdGlvbjx2b2lk
KCk+IGNhbGxiYWNrKTsKK3ZvaWQgcmVnaXN0ZXJOb3RpZnlDYWxsYmFjayhjb25zdCBTdHJpbmcm
IG5vdGlmeUlELCBXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJiBjYWxsYmFjayk7CiAjZW5kaWYKIAog
I2VuZGlmIC8vICFMT0dfRElTQUJMRUQgfHwgIVJFTEVBU0VfTE9HX0RJU0FCTEVECmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NYWluVGhyZWFkU2hhcmVkVGltZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWFpblRocmVhZFNoYXJlZFRpbWVyLmNwcAppbmRleCBk
ZGE2ODJlYjg0MTFiYjg2MzIyYjMyYTFmYTUxYjBiZDJhNTE3Yjg0Li42OGZmMDQzODk3YmJjYTkz
MzliZjIzZGM0ZGQxM2M1MjA0Y2UzMGUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9NYWluVGhyZWFkU2hhcmVkVGltZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL01haW5UaHJlYWRTaGFyZWRUaW1lci5jcHAKQEAgLTQwLDcgKzQwLDcgQEAgTWFpblRocmVh
ZFNoYXJlZFRpbWVyOjpNYWluVGhyZWFkU2hhcmVkVGltZXIoKQogfQogI2VuZGlmCiAKLXZvaWQg
TWFpblRocmVhZFNoYXJlZFRpbWVyOjpzZXRGaXJlZEZ1bmN0aW9uKHN0ZDo6ZnVuY3Rpb248dm9p
ZCgpPiYmIGZpcmVkRnVuY3Rpb24pCit2b2lkIE1haW5UaHJlYWRTaGFyZWRUaW1lcjo6c2V0Rmly
ZWRGdW5jdGlvbihXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJiBmaXJlZEZ1bmN0aW9uKQogewogICAg
IFJFTEVBU0VfQVNTRVJUKCFtX2ZpcmVkRnVuY3Rpb24gfHwgIWZpcmVkRnVuY3Rpb24pOwogICAg
IG1fZmlyZWRGdW5jdGlvbiA9IFdURk1vdmUoZmlyZWRGdW5jdGlvbik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NYWluVGhyZWFkU2hhcmVkVGltZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL01haW5UaHJlYWRTaGFyZWRUaW1lci5oCmluZGV4IDQ5MDczMGYxNDMy
ZDkzNjBiYjJiZDU4YzBhYWNiNzQyNDk4NTRlNGIuLjk0YTE5MGQzNzc5OWYyOTQ2Y2Q1NmU5N2Q5
MDNmN2M4NWQ1NjRmZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01haW5U
aHJlYWRTaGFyZWRUaW1lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01haW5UaHJl
YWRTaGFyZWRUaW1lci5oCkBAIC00MSw3ICs0MSw3IEBAIGNsYXNzIE1haW5UaHJlYWRTaGFyZWRU
aW1lciBmaW5hbCA6IHB1YmxpYyBTaGFyZWRUaW1lciB7CiBwdWJsaWM6CiAgICAgc3RhdGljIE1h
aW5UaHJlYWRTaGFyZWRUaW1lciYgc2luZ2xldG9uKCk7CiAKLSAgICB2b2lkIHNldEZpcmVkRnVu
Y3Rpb24oc3RkOjpmdW5jdGlvbjx2b2lkKCk+JiYpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0Rmly
ZWRGdW5jdGlvbihXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBz
ZXRGaXJlSW50ZXJ2YWwoU2Vjb25kcykgb3ZlcnJpZGU7CiAgICAgdm9pZCBzdG9wKCkgb3ZlcnJp
ZGU7CiAgICAgdm9pZCBpbnZhbGlkYXRlKCkgb3ZlcnJpZGU7CkBAIC01Myw3ICs1Myw3IEBAIHB1
YmxpYzoKIHByaXZhdGU6CiAgICAgTWFpblRocmVhZFNoYXJlZFRpbWVyKCk7CiAKLSAgICBzdGQ6
OmZ1bmN0aW9uPHZvaWQoKT4gbV9maXJlZEZ1bmN0aW9uOworICAgIFdURjo6RnVuY3Rpb248dm9p
ZCgpPiBtX2ZpcmVkRnVuY3Rpb247CiAjaWYgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShXUEUp
CiAgICAgUnVuTG9vcDo6VGltZXI8TWFpblRocmVhZFNoYXJlZFRpbWVyPiBtX3RpbWVyOwogI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVBhc3RlYm9h
cmQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtUGFzdGVib2FyZC5oCmluZGV4
IGFmZGExNTVlZjEzNDQzYTkxMWU4MzA3MGRkYzc3NzFiNWI1MjNkODguLjEzZTU5ODkwODAxOWY2
MjRkNWQ1ZGM3NDMzMjU1MGQzZTA2NjY2YzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1BsYXRmb3JtUGFzdGVib2FyZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1BsYXRmb3JtUGFzdGVib2FyZC5oCkBAIC0yNiw4ICsyNiw4IEBACiAjaWZuZGVmIFBsYXRmb3Jt
UGFzdGVib2FyZF9oCiAjZGVmaW5lIFBsYXRmb3JtUGFzdGVib2FyZF9oCiAKLSNpbmNsdWRlIDxm
dW5jdGlvbmFsPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL0Z1bmN0
aW9uLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWlu
UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgpAQCAtOTMsNyArOTMsNyBAQCBwdWJsaWM6
CiAgICAgV0VCQ09SRV9FWFBPUlQgaW50IG51bWJlck9mRmlsZXMoKTsKIAogI2lmIFBMQVRGT1JN
KEdUSykKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHdyaXRlVG9DbGlwYm9hcmQoY29uc3QgU2Vs
ZWN0aW9uRGF0YSYsIHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiYmIHByaW1hcnlTZWxlY3Rpb25DbGVh
cmVkKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHdyaXRlVG9DbGlwYm9hcmQoY29uc3QgU2Vs
ZWN0aW9uRGF0YSYsIFdURjo6RnVuY3Rpb248dm9pZCgpPiYmIHByaW1hcnlTZWxlY3Rpb25DbGVh
cmVkKTsKICAgICBXRUJDT1JFX0VYUE9SVCBSZWY8U2VsZWN0aW9uRGF0YT4gcmVhZEZyb21DbGlw
Ym9hcmQoKTsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
Y29wZUd1YXJkLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY29wZUd1YXJkLmgKaW5kZXgg
MjRhYjdmZjU5ZTA0YTk0YTAwNjM5MTJhYTlmYTlmNTEzNjkwNTg1MS4uZDRjYjNiOWY4ZWIyNDRl
MWMxMzhhMDdmNzYyNzgxZGQ2ZDFhMjc1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU2NvcGVHdWFyZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njb3BlR3Vh
cmQuaApAQCAtMjUsNyArMjUsNyBAQAogI2lmbmRlZiBTY29wZUd1YXJkX2gKICNkZWZpbmUgU2Nv
cGVHdWFyZF9oCiAKLSNpbmNsdWRlIDxmdW5jdGlvbmFsPgorI2luY2x1ZGUgPHd0Zi9GdW5jdGlv
bi5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTM1LDcgKzM1LDcgQEAgcHVibGljOgog
ICAgIHsKICAgICB9CiAKLSAgICBTY29wZUd1YXJkKHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiBmdW5j
dGlvbikKKyAgICBTY29wZUd1YXJkKFdURjo6RnVuY3Rpb248dm9pZCgpPiYmIGZ1bmN0aW9uKQog
ICAgICAgICA6IG1fZnVuY3Rpb24oV1RGTW92ZShmdW5jdGlvbikpCiAgICAgewogICAgIH0KQEAg
LTQ2LDcgKzQ2LDcgQEAgcHVibGljOgogICAgICAgICAgICAgbV9mdW5jdGlvbigpOwogICAgIH0K
IAotICAgIHZvaWQgZW5hYmxlKHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiBmdW5jdGlvbikKKyAgICB2
b2lkIGVuYWJsZShXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJiBmdW5jdGlvbikKICAgICB7CiAgICAg
ICAgIG1fZnVuY3Rpb24gPSBXVEZNb3ZlKGZ1bmN0aW9uKTsKICAgICB9CkBAIC01Nyw3ICs1Nyw3
IEBAIHB1YmxpYzoKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgc3RkOjpmdW5jdGlvbjx2b2lkKCk+
IG1fZnVuY3Rpb24geyBudWxscHRyIH07CisgICAgV1RGOjpGdW5jdGlvbjx2b2lkKCk+IG1fZnVu
Y3Rpb247CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRpb25TbW9vdGguY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uU21vb3RoLmNwcAppbmRleCA0YzZiODE0ZjkwZGFl
ZjBmMTQ5YWM1NDY2ZThjOWM3OGI1YWE5OTcwLi5lMGZiMTJjNDkxN2E5MDFjZTBjMjQ4Y2QzNDhj
YmYwZjVmOWYzMjYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxB
bmltYXRpb25TbW9vdGguY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFu
aW1hdGlvblNtb290aC5jcHAKQEAgLTQwLDcgKzQwLDcgQEAgc3RhdGljIGNvbnN0IGRvdWJsZSBm
cmFtZVJhdGUgPSA2MDsKIHN0YXRpYyBjb25zdCBTZWNvbmRzIHRpY2tUaW1lID0gMV9zIC8gZnJh
bWVSYXRlOwogc3RhdGljIGNvbnN0IFNlY29uZHMgbWluaW11bVRpbWVySW50ZXJ2YWwgeyAxX21z
IH07CiAKLVNjcm9sbEFuaW1hdGlvblNtb290aDo6U2Nyb2xsQW5pbWF0aW9uU21vb3RoKFNjcm9s
bGFibGVBcmVhJiBzY3JvbGxhYmxlQXJlYSwgY29uc3QgRmxvYXRQb2ludCYgcG9zaXRpb24sIHN0
ZDo6ZnVuY3Rpb248dm9pZCAoRmxvYXRQb2ludCYmKT4mJiBub3RpZnlQb3NpdGlvbkNoYW5nZWRG
dW5jdGlvbikKK1Njcm9sbEFuaW1hdGlvblNtb290aDo6U2Nyb2xsQW5pbWF0aW9uU21vb3RoKFNj
cm9sbGFibGVBcmVhJiBzY3JvbGxhYmxlQXJlYSwgY29uc3QgRmxvYXRQb2ludCYgcG9zaXRpb24s
IFdURjo6RnVuY3Rpb248dm9pZCAoRmxvYXRQb2ludCYmKT4mJiBub3RpZnlQb3NpdGlvbkNoYW5n
ZWRGdW5jdGlvbikKICAgICA6IFNjcm9sbEFuaW1hdGlvbihzY3JvbGxhYmxlQXJlYSkKICAgICAs
IG1fbm90aWZ5UG9zaXRpb25DaGFuZ2VkRnVuY3Rpb24oV1RGTW92ZShub3RpZnlQb3NpdGlvbkNo
YW5nZWRGdW5jdGlvbikpCiAgICAgLCBtX2hvcml6b250YWxEYXRhKHBvc2l0aW9uLngoKSwgc2Ny
b2xsYWJsZUFyZWEudmlzaWJsZVdpZHRoKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9TY3JvbGxBbmltYXRpb25TbW9vdGguaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1Njcm9sbEFuaW1hdGlvblNtb290aC5oCmluZGV4IDI0Mzk2NDhmMTg0ZGM3ZDIyODQ5Y2FlMzk1
MWMwYTZkODY3MmRjOTMuLjAyY2M0ZWUyYmQ3NDNkMDYyOWVhZDA0OGJmNzZjNDgxNjdiZmU4ZWQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdGlvblNtb290
aC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdGlvblNtb290aC5o
CkBAIC0zOCw3ICszOCw3IEBAIGNsYXNzIFNjcm9sbGFibGVBcmVhOwogCiBjbGFzcyBTY3JvbGxB
bmltYXRpb25TbW9vdGggZmluYWw6IHB1YmxpYyBTY3JvbGxBbmltYXRpb24gewogcHVibGljOgot
ICAgIFNjcm9sbEFuaW1hdGlvblNtb290aChTY3JvbGxhYmxlQXJlYSYsIGNvbnN0IEZsb2F0UG9p
bnQmLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKEZsb2F0UG9pbnQmJik+JiYgbm90aWZ5UG9zaXRpb25D
aGFuZ2VkRnVuY3Rpb24pOworICAgIFNjcm9sbEFuaW1hdGlvblNtb290aChTY3JvbGxhYmxlQXJl
YSYsIGNvbnN0IEZsb2F0UG9pbnQmLCBXVEY6OkZ1bmN0aW9uPHZvaWQgKEZsb2F0UG9pbnQmJik+
JiYgbm90aWZ5UG9zaXRpb25DaGFuZ2VkRnVuY3Rpb24pOwogICAgIHZpcnR1YWwgflNjcm9sbEFu
aW1hdGlvblNtb290aCgpOwogCiAgICAgZW51bSBjbGFzcyBDdXJ2ZSB7CkBAIC05Nyw3ICs5Nyw3
IEBAIHByaXZhdGU6CiAgICAgdm9pZCBhbmltYXRpb25UaW1lckZpcmVkKCk7CiAgICAgYm9vbCBh
bmltYXRpb25UaW1lckFjdGl2ZSgpIGNvbnN0OwogCi0gICAgc3RkOjpmdW5jdGlvbjx2b2lkIChG
bG9hdFBvaW50JiYpPiBtX25vdGlmeVBvc2l0aW9uQ2hhbmdlZEZ1bmN0aW9uOworICAgIFdURjo6
RnVuY3Rpb248dm9pZCAoRmxvYXRQb2ludCYmKT4gbV9ub3RpZnlQb3NpdGlvbkNoYW5nZWRGdW5j
dGlvbjsKIAogICAgIFBlckF4aXNEYXRhIG1faG9yaXpvbnRhbERhdGE7CiAgICAgUGVyQXhpc0Rh
dGEgbV92ZXJ0aWNhbERhdGE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
aGFyZWRUaW1lci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkVGltZXIuaAppbmRl
eCA3Nzc3ZjY3YzlhYWY3M2UwY2JmYTcwODg4NzYxM2I2ZjIzMzI5MjYyLi40NDQ1ZTNiNzJlNzZh
OTIxYzBiZThmM2U4Nzc5ZTU1NTM2MmU3MDQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9TaGFyZWRUaW1lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJl
ZFRpbWVyLmgKQEAgLTI2LDggKzI2LDggQEAKICNpZm5kZWYgU2hhcmVkVGltZXJfaAogI2RlZmlu
ZSBTaGFyZWRUaW1lcl9oCiAKLSNpbmNsdWRlIDxmdW5jdGlvbmFsPgogI2luY2x1ZGUgPHd0Zi9G
YXN0TWFsbG9jLmg+CisjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+CiAjaW5jbHVkZSA8d3RmL05v
bmNvcHlhYmxlLmg+CiAjaW5jbHVkZSA8d3RmL1NlY29uZHMuaD4KIApAQCAtNDEsNyArNDEsNyBA
QCBjbGFzcyBTaGFyZWRUaW1lciB7CiBwdWJsaWM6CiAgICAgU2hhcmVkVGltZXIoKSA9IGRlZmF1
bHQ7CiAgICAgdmlydHVhbCB+U2hhcmVkVGltZXIoKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgc2V0
RmlyZWRGdW5jdGlvbihzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4mJikgPSAwOworICAgIHZpcnR1YWwg
dm9pZCBzZXRGaXJlZEZ1bmN0aW9uKFdURjo6RnVuY3Rpb248dm9pZCgpPiYmKSA9IDA7CiAKICAg
ICAvLyBUaGUgZmlyZSBpbnRlcnZhbCBpcyBpbiBzZWNvbmRzIHJlbGF0aXZlIHRvIHRoZSBjdXJy
ZW50IG1vbm90b25pYyBjbG9jayB0aW1lLgogICAgIHZpcnR1YWwgdm9pZCBzZXRGaXJlSW50ZXJ2
YWwoU2Vjb25kcykgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlci5jcHAKaW5kZXggYWRkYmM0M2Y4
MDVkZDUwMmIzY2Q3OWVlNDY3NTM2NTZlNTRiNzZhYS4uMDNkNzYxZWJjMTg5NDYyODU3ODkzOGU3
ZDFjYWMwYmFjNjAwYjdkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXIuY3BwCkBAIC0yNzcsNyAr
Mjc3LDcgQEAgUGxhdGZvcm1NZWRpYVNlc3Npb24qIFBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdl
cjo6Y3VycmVudFNlc3Npb24oKSBjb25zdAogICAgIHJldHVybiBtX3Nlc3Npb25zWzBdOwogfQog
Ci1WZWN0b3I8UGxhdGZvcm1NZWRpYVNlc3Npb24qPiBQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFn
ZXI6OmN1cnJlbnRTZXNzaW9uc01hdGNoaW5nKHN0ZDo6ZnVuY3Rpb248Ym9vbChjb25zdCBQbGF0
Zm9ybU1lZGlhU2Vzc2lvbiAmKT4gZmlsdGVyKQorVmVjdG9yPFBsYXRmb3JtTWVkaWFTZXNzaW9u
Kj4gUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyOjpjdXJyZW50U2Vzc2lvbnNNYXRjaGluZyhj
b25zdCBXVEY6OkZ1bmN0aW9uPGJvb2woY29uc3QgUGxhdGZvcm1NZWRpYVNlc3Npb24mKT4mIGZp
bHRlcikKIHsKICAgICBWZWN0b3I8UGxhdGZvcm1NZWRpYVNlc3Npb24qPiBtYXRjaGluZ1Nlc3Np
b25zOwogICAgIGZvckVhY2hTZXNzaW9uKFsmXSAoUGxhdGZvcm1NZWRpYVNlc3Npb24mIHNlc3Np
b24sIHNpemVfdCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
UGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXIuaAppbmRleCBmMmUwZjk4NzM3NGJjNTk0
NTMyODkxMTgzNWY5MGUxNWMwMDBmNjgyLi44NDI3NDhmZmI2NDk1ZWMxMzY3NDAzMzI1YTEzNmZm
MDZkOWYxYzFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9QbGF0
Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXIuaApAQCAtMTA1LDcgKzEwNSw3IEBAIHB1
YmxpYzoKICAgICB2b2lkIHNldEN1cnJlbnRTZXNzaW9uKFBsYXRmb3JtTWVkaWFTZXNzaW9uJik7
CiAgICAgUGxhdGZvcm1NZWRpYVNlc3Npb24qIGN1cnJlbnRTZXNzaW9uKCkgY29uc3Q7CiAKLSAg
ICBWZWN0b3I8UGxhdGZvcm1NZWRpYVNlc3Npb24qPiBjdXJyZW50U2Vzc2lvbnNNYXRjaGluZyhz
dGQ6OmZ1bmN0aW9uPGJvb2woY29uc3QgUGxhdGZvcm1NZWRpYVNlc3Npb24mKT4pOworICAgIFZl
Y3RvcjxQbGF0Zm9ybU1lZGlhU2Vzc2lvbio+IGN1cnJlbnRTZXNzaW9uc01hdGNoaW5nKGNvbnN0
IFdURjo6RnVuY3Rpb248Ym9vbChjb25zdCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbiYpPiYpOwogCiAg
ICAgdm9pZCBzZXNzaW9uSXNQbGF5aW5nVG9XaXJlbGVzc1BsYXliYWNrVGFyZ2V0Q2hhbmdlZChQ
bGF0Zm9ybU1lZGlhU2Vzc2lvbiYpOwogICAgIHZvaWQgc2Vzc2lvbkNhblByb2R1Y2VBdWRpb0No
YW5nZWQoUGxhdGZvcm1NZWRpYVNlc3Npb24mKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2NmL01haW5UaHJlYWRTaGFyZWRUaW1lckNGLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2NmL01haW5UaHJlYWRTaGFyZWRUaW1lckNGLmNwcAppbmRleCBmOWU0YmY4MDAw
MjRkZWFmZDZlMzAzMjQwNWZhZGM4NWQwZGM3MDVhLi5mMDE4M2IxNGRiZmMyYzQ4Y2QyMTk2M2Jm
ODQ3Mzk5NmIyMGIxNGZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9N
YWluVGhyZWFkU2hhcmVkVGltZXJDRi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y2YvTWFpblRocmVhZFNoYXJlZFRpbWVyQ0YuY3BwCkBAIC01Nyw3ICs1Nyw3IEBAIHN0YXRpYyB2
b2lkIHNldHVwUG93ZXJPYnNlcnZlcigpCiAjaWYgUExBVEZPUk0oTUFDKQogICAgIHN0YXRpYyBQ
b3dlck9ic2VydmVyKiBwb3dlck9ic2VydmVyOwogICAgIGlmICghcG93ZXJPYnNlcnZlcikKLSAg
ICAgICAgcG93ZXJPYnNlcnZlciA9IHN0ZDo6bWFrZV91bmlxdWU8UG93ZXJPYnNlcnZlcj4ocmVz
dGFydFNoYXJlZFRpbWVyKS5yZWxlYXNlKCk7CisgICAgICAgIHBvd2VyT2JzZXJ2ZXIgPSBzdGQ6
Om1ha2VfdW5pcXVlPFBvd2VyT2JzZXJ2ZXI+KFtdIHsgcmVzdGFydFNoYXJlZFRpbWVyKCk7IH0p
LnJlbGVhc2UoKTsKICNlbGlmIFBMQVRGT1JNKElPUykKICAgICBzdGF0aWMgYm9vbCByZWdpc3Rl
cmVkRm9yQXBwbGljYXRpb25Ob3RpZmljYXRpb24gPSBmYWxzZTsKICAgICBpZiAoIXJlZ2lzdGVy
ZWRGb3JBcHBsaWNhdGlvbk5vdGlmaWNhdGlvbikgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vY2YvUnVuTG9vcE9ic2VydmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9jZi9SdW5Mb29wT2JzZXJ2ZXIuaAppbmRleCBjMWI2YTBkOWRjOWI4MjcyNWYwNGI1NWM4MzE4
ZTYxYWQxNTY5MDgwLi45NjlhMDM3ODZiYmIxZjExYzk3NDZmZTBiMDZlMmViZWFhZmVkM2UwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9SdW5Mb29wT2JzZXJ2ZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9SdW5Mb29wT2JzZXJ2ZXIuaApAQCAtMjcs
NyArMjcsNyBAQAogI2RlZmluZSBSdW5Mb29wT2JzZXJ2ZXJfaAogCiAjaW5jbHVkZSA8Q29yZUZv
dW5kYXRpb24vQ29yZUZvdW5kYXRpb24uaD4KLSNpbmNsdWRlIDxmdW5jdGlvbmFsPgorI2luY2x1
ZGUgPHd0Zi9GdW5jdGlvbi5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogI2luY2x1
ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KIApAQCAtMzYsMTEgKzM2LDExIEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIGNsYXNzIFJ1bkxvb3BPYnNlcnZlciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUo
UnVuTG9vcE9ic2VydmVyKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAg
dHlwZWRlZiBzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+IFJ1bkxvb3BPYnNlcnZlckNhbGxiYWNrOwor
ICAgIHR5cGVkZWYgV1RGOjpGdW5jdGlvbjx2b2lkICgpPiBSdW5Mb29wT2JzZXJ2ZXJDYWxsYmFj
azsKIAotICAgIFJ1bkxvb3BPYnNlcnZlcihDRkluZGV4IG9yZGVyLCBSdW5Mb29wT2JzZXJ2ZXJD
YWxsYmFjayBjYWxsYmFjaykKKyAgICBSdW5Mb29wT2JzZXJ2ZXIoQ0ZJbmRleCBvcmRlciwgUnVu
TG9vcE9ic2VydmVyQ2FsbGJhY2smJiBjYWxsYmFjaykKICAgICAgICAgOiBtX29yZGVyKG9yZGVy
KQotICAgICAgICAsIG1fY2FsbGJhY2soY2FsbGJhY2spCisgICAgICAgICwgbV9jYWxsYmFjayhX
VEZNb3ZlKGNhbGxiYWNrKSkKICAgICB7IH0KIAogICAgIFdFQkNPUkVfRVhQT1JUIH5SdW5Mb29w
T2JzZXJ2ZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
cGhpY3NDb250ZXh0LmgKaW5kZXggYzQ3MDc0NjQ4ZGU3ZjRiMDc4Y2EyZjFhNmFmYWVhODQ5ZWU3
OTQ5ZS4uNTJmN2RlMjc1M2NjZGI2Y2M2ZGU1MzlmNmFjMDAyMGUwNjhhY2FmZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKQEAg
LTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJJbWFnZS5oIgogI2luY2x1ZGUgIkltYWdlT3JpZW50
YXRpb24uaCIKICNpbmNsdWRlICJQYXR0ZXJuLmgiCisjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+
CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAKICNpZiBVU0UoQ0cpCkBAIC01OTksOCAr
NjAwLDggQEAgcHJpdmF0ZToKIAogI2lmIFVTRShESVJFQ1QyRCkKICAgICB2b2lkIHBsYXRmb3Jt
SW5pdChIREMsIElEMkQxUmVuZGVyVGFyZ2V0KiosIFJFQ1QsIGJvb2wgaGFzQWxwaGEgPSBmYWxz
ZSk7Ci0gICAgdm9pZCBkcmF3V2l0aG91dFNoYWRvdyhjb25zdCBGbG9hdFJlY3QmIGJvdW5kaW5n
UmVjdCwgY29uc3Qgc3RkOjpmdW5jdGlvbjx2b2lkKElEMkQxUmVuZGVyVGFyZ2V0Kik+Jik7Ci0g
ICAgdm9pZCBkcmF3V2l0aFNoYWRvdyhjb25zdCBGbG9hdFJlY3QmIGJvdW5kaW5nUmVjdCwgY29u
c3Qgc3RkOjpmdW5jdGlvbjx2b2lkKElEMkQxUmVuZGVyVGFyZ2V0Kik+Jik7CisgICAgdm9pZCBk
cmF3V2l0aG91dFNoYWRvdyhjb25zdCBGbG9hdFJlY3QmIGJvdW5kaW5nUmVjdCwgY29uc3QgV1RG
OjpGdW5jdGlvbjx2b2lkKElEMkQxUmVuZGVyVGFyZ2V0Kik+Jik7CisgICAgdm9pZCBkcmF3V2l0
aFNoYWRvdyhjb25zdCBGbG9hdFJlY3QmIGJvdW5kaW5nUmVjdCwgY29uc3QgV1RGOjpGdW5jdGlv
bjx2b2lkKElEMkQxUmVuZGVyVGFyZ2V0Kik+Jik7CiAjZW5kaWYKIAogICAgIHZvaWQgc2F2ZVBs
YXRmb3JtU3RhdGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NMYXllci5jcHAKaW5kZXggZjc5ZjQ0ZWUwYjkwYTUyNzIxZDlhMmEwYWQ4OTkwMTAw
NWVkMTg1NC4uMTZjNjdmNDllOWZiYTk0NDI1ZGIxZjI4NmEzODZjMjgyY2JhN2UzNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5jcHAK
QEAgLTY3Miw3ICs2NzIsNyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXI6OmFkZFJlcGFpbnRSZWN0KGNv
bnN0IEZsb2F0UmVjdCYgcmVwYWludFJlY3QpCiAgICAgfQogfQogCi12b2lkIEdyYXBoaWNzTGF5
ZXI6OnRyYXZlcnNlKEdyYXBoaWNzTGF5ZXImIGxheWVyLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKEdy
YXBoaWNzTGF5ZXImKT4gdHJhdmVyc2FsRnVuYykKK3ZvaWQgR3JhcGhpY3NMYXllcjo6dHJhdmVy
c2UoR3JhcGhpY3NMYXllciYgbGF5ZXIsIGNvbnN0IFdURjo6RnVuY3Rpb248dm9pZCAoR3JhcGhp
Y3NMYXllciYpPiYgdHJhdmVyc2FsRnVuYykKIHsKICAgICB0cmF2ZXJzYWxGdW5jKGxheWVyKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NM
YXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5o
CmluZGV4IGVjZmUzOWM2Njc1NDY0NzQxOGRiMDM5MjNkYjI1MjM3ODhlM2FjYzUuLjZjMWI3OTZk
MjgzMjM2YWQ2OTliMmI5NTExNDYzZDlmMTUwZjYxYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmgKQEAgLTM3LDYgKzM3LDcgQEAKICNp
bmNsdWRlICJQbGF0Zm9ybUxheWVyLmgiCiAjaW5jbHVkZSAiVHJhbnNmb3JtT3BlcmF0aW9ucy5o
IgogI2luY2x1ZGUgIldpbmRSdWxlLmgiCisjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+CiAjaW5j
bHVkZSA8d3RmL1R5cGVDYXN0cy5oPgogCiAjaWYgRU5BQkxFKENTU19DT01QT1NJVElORykKQEAg
LTU3MCw3ICs1NzEsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGlzR3JhcGhpY3NMYXll
clRleHR1cmVNYXBwZXIoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9v
bCBpc0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllcigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAK
LSAgICBzdGF0aWMgdm9pZCB0cmF2ZXJzZShHcmFwaGljc0xheWVyJiwgc3RkOjpmdW5jdGlvbjx2
b2lkIChHcmFwaGljc0xheWVyJik+KTsKKyAgICBzdGF0aWMgdm9pZCB0cmF2ZXJzZShHcmFwaGlj
c0xheWVyJiwgY29uc3QgV1RGOjpGdW5jdGlvbjx2b2lkIChHcmFwaGljc0xheWVyJik+Jik7CiAK
IHByb3RlY3RlZDoKICAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBHcmFwaGljc0xheWVyKFR5
cGUsIEdyYXBoaWNzTGF5ZXJDbGllbnQmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcAppbmRleCA2ZDJlNWFhM2EwMzcyZGVhMjlkYmMwMzll
OWY2MzZiYmRkMzUxMDk2Li5iMGZiM2RkNzdjNDY0M2ZiOGQyYzJmZDcwZmJiODU5ZTRkNWNjNDdj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXll
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIu
Y3BwCkBAIC0xODgsNyArMTg4LDcgQEAgc3RydWN0IE1lZGlhUGxheWVyRmFjdG9yeSB7CiAgICAg
TWVkaWFFbmdpbmVTdXBwb3J0c0tleVN5c3RlbSBzdXBwb3J0c0tleVN5c3RlbTsKIH07CiAKLXN0
YXRpYyB2b2lkIGFkZE1lZGlhRW5naW5lKENyZWF0ZU1lZGlhRW5naW5lUGxheWVyLCBNZWRpYUVu
Z2luZVN1cHBvcnRlZFR5cGVzLCBNZWRpYUVuZ2luZVN1cHBvcnRzVHlwZSwgTWVkaWFFbmdpbmVP
cmlnaW5zSW5NZWRpYUNhY2hlLCBNZWRpYUVuZ2luZUNsZWFyTWVkaWFDYWNoZSwgTWVkaWFFbmdp
bmVDbGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5zLCBNZWRpYUVuZ2luZVN1cHBvcnRzS2V5U3lzdGVt
KTsKK3N0YXRpYyB2b2lkIGFkZE1lZGlhRW5naW5lKENyZWF0ZU1lZGlhRW5naW5lUGxheWVyJiYs
IE1lZGlhRW5naW5lU3VwcG9ydGVkVHlwZXMsIE1lZGlhRW5naW5lU3VwcG9ydHNUeXBlLCBNZWRp
YUVuZ2luZU9yaWdpbnNJbk1lZGlhQ2FjaGUsIE1lZGlhRW5naW5lQ2xlYXJNZWRpYUNhY2hlLCBN
ZWRpYUVuZ2luZUNsZWFyTWVkaWFDYWNoZUZvck9yaWdpbnMsIE1lZGlhRW5naW5lU3VwcG9ydHNL
ZXlTeXN0ZW0pOwogCiBzdGF0aWMgTG9jayYgbWVkaWFFbmdpbmVWZWN0b3JMb2NrKCkKIHsKQEAg
LTI2OSwxNCArMjY5LDE0IEBAIHN0YXRpYyBjb25zdCBWZWN0b3I8TWVkaWFQbGF5ZXJGYWN0b3J5
PiYgaW5zdGFsbGVkTWVkaWFFbmdpbmVzKCkKICAgICByZXR1cm4gbXV0YWJsZUluc3RhbGxlZE1l
ZGlhRW5naW5lc1ZlY3RvcigpOwogfQogCi1zdGF0aWMgdm9pZCBhZGRNZWRpYUVuZ2luZShDcmVh
dGVNZWRpYUVuZ2luZVBsYXllciBjb25zdHJ1Y3RvciwgTWVkaWFFbmdpbmVTdXBwb3J0ZWRUeXBl
cyBnZXRTdXBwb3J0ZWRUeXBlcywgTWVkaWFFbmdpbmVTdXBwb3J0c1R5cGUgc3VwcG9ydHNUeXBl
LAorc3RhdGljIHZvaWQgYWRkTWVkaWFFbmdpbmUoQ3JlYXRlTWVkaWFFbmdpbmVQbGF5ZXImJiBj
b25zdHJ1Y3RvciwgTWVkaWFFbmdpbmVTdXBwb3J0ZWRUeXBlcyBnZXRTdXBwb3J0ZWRUeXBlcywg
TWVkaWFFbmdpbmVTdXBwb3J0c1R5cGUgc3VwcG9ydHNUeXBlLAogICAgIE1lZGlhRW5naW5lT3Jp
Z2luc0luTWVkaWFDYWNoZSBvcmlnaW5zSW5NZWRpYUNhY2hlLCBNZWRpYUVuZ2luZUNsZWFyTWVk
aWFDYWNoZSBjbGVhck1lZGlhQ2FjaGUsIE1lZGlhRW5naW5lQ2xlYXJNZWRpYUNhY2hlRm9yT3Jp
Z2lucyBjbGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5zLCBNZWRpYUVuZ2luZVN1cHBvcnRzS2V5U3lz
dGVtIHN1cHBvcnRzS2V5U3lzdGVtKQogewogICAgIEFTU0VSVChjb25zdHJ1Y3Rvcik7CiAgICAg
QVNTRVJUKGdldFN1cHBvcnRlZFR5cGVzKTsKICAgICBBU1NFUlQoc3VwcG9ydHNUeXBlKTsKIAot
ICAgIG11dGFibGVJbnN0YWxsZWRNZWRpYUVuZ2luZXNWZWN0b3IoKS5hcHBlbmQoTWVkaWFQbGF5
ZXJGYWN0b3J5IHsgY29uc3RydWN0b3IsIGdldFN1cHBvcnRlZFR5cGVzLCBzdXBwb3J0c1R5cGUs
IG9yaWdpbnNJbk1lZGlhQ2FjaGUsIGNsZWFyTWVkaWFDYWNoZSwgY2xlYXJNZWRpYUNhY2hlRm9y
T3JpZ2lucywgc3VwcG9ydHNLZXlTeXN0ZW0gfSk7CisgICAgbXV0YWJsZUluc3RhbGxlZE1lZGlh
RW5naW5lc1ZlY3RvcigpLmFwcGVuZChNZWRpYVBsYXllckZhY3RvcnkgeyBXVEZNb3ZlKGNvbnN0
cnVjdG9yKSwgZ2V0U3VwcG9ydGVkVHlwZXMsIHN1cHBvcnRzVHlwZSwgb3JpZ2luc0luTWVkaWFD
YWNoZSwgY2xlYXJNZWRpYUNhY2hlLCBjbGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5zLCBzdXBwb3J0
c0tleVN5c3RlbSB9KTsKIH0KIAogc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgYXBwbGljYXRp
b25PY3RldFN0cmVhbSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9NZWRpYVBsYXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVk
aWFQbGF5ZXIuaAppbmRleCAxY2IzNTA0YjEyMDk5OTA5YmQ0MjNlZjlhYmY3OTVlNmNmNTg1Njg4
Li45MmYyNDg1NjhkZWM5YTFiMzI5OWU2YTA3M2Q4NGVlNGFlNWYzNmRhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgKQEAgLTYyOCw3ICs2Mjgs
NyBAQCBwcml2YXRlOgogI2VuZGlmCiB9OwogCi10eXBlZGVmIHN0ZDo6ZnVuY3Rpb248c3RkOjp1
bmlxdWVfcHRyPE1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZT4gKE1lZGlhUGxheWVyKik+IENy
ZWF0ZU1lZGlhRW5naW5lUGxheWVyOwordXNpbmcgQ3JlYXRlTWVkaWFFbmdpbmVQbGF5ZXIgPSBX
VEY6OkZ1bmN0aW9uPHN0ZDo6dW5pcXVlX3B0cjxNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2U+
IChNZWRpYVBsYXllciopPjsKIHR5cGVkZWYgdm9pZCAoKk1lZGlhRW5naW5lU3VwcG9ydGVkVHlw
ZXMpKEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+JiB0eXBlcyk7CiB0
eXBlZGVmIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgKCpNZWRpYUVuZ2luZVN1cHBvcnRzVHlw
ZSkoY29uc3QgTWVkaWFFbmdpbmVTdXBwb3J0UGFyYW1ldGVycyYgcGFyYW1ldGVycyk7CiB0eXBl
ZGVmIEhhc2hTZXQ8UmVmUHRyPFNlY3VyaXR5T3JpZ2luPj4gKCpNZWRpYUVuZ2luZU9yaWdpbnNJ
bk1lZGlhQ2FjaGUpKGNvbnN0IFN0cmluZyYgcGF0aCk7CkBAIC02MzYsNyArNjM2LDcgQEAgdHlw
ZWRlZiB2b2lkICgqTWVkaWFFbmdpbmVDbGVhck1lZGlhQ2FjaGUpKGNvbnN0IFN0cmluZyYgcGF0
aCwgc3RkOjpjaHJvbm86OnN5c3QKIHR5cGVkZWYgdm9pZCAoKk1lZGlhRW5naW5lQ2xlYXJNZWRp
YUNhY2hlRm9yT3JpZ2lucykoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBIYXNoU2V0PFJlZlB0
cjxTZWN1cml0eU9yaWdpbj4+Jik7CiB0eXBlZGVmIGJvb2wgKCpNZWRpYUVuZ2luZVN1cHBvcnRz
S2V5U3lzdGVtKShjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwgY29uc3QgU3RyaW5nJiBtaW1lVHlw
ZSk7CiAKLXR5cGVkZWYgdm9pZCAoKk1lZGlhRW5naW5lUmVnaXN0cmFyKShDcmVhdGVNZWRpYUVu
Z2luZVBsYXllciwgTWVkaWFFbmdpbmVTdXBwb3J0ZWRUeXBlcywgTWVkaWFFbmdpbmVTdXBwb3J0
c1R5cGUsCit0eXBlZGVmIHZvaWQgKCpNZWRpYUVuZ2luZVJlZ2lzdHJhcikoQ3JlYXRlTWVkaWFF
bmdpbmVQbGF5ZXImJiwgTWVkaWFFbmdpbmVTdXBwb3J0ZWRUeXBlcywgTWVkaWFFbmdpbmVTdXBw
b3J0c1R5cGUsCiAgICAgTWVkaWFFbmdpbmVPcmlnaW5zSW5NZWRpYUNhY2hlLCBNZWRpYUVuZ2lu
ZUNsZWFyTWVkaWFDYWNoZSwgTWVkaWFFbmdpbmVDbGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5zLCBN
ZWRpYUVuZ2luZVN1cHBvcnRzS2V5U3lzdGVtKTsKIHR5cGVkZWYgdm9pZCAoKk1lZGlhRW5naW5l
UmVnaXN0ZXIpKE1lZGlhRW5naW5lUmVnaXN0cmFyKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0aC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvUGF0aC5oCmluZGV4IDI4MzFjZmUzM2U3YzA2YTg4ZDNjNmI4M2M5MTI2Yjg1MDJh
MzRlZmMuLjdjYWJhNGNiNmU3ODkzODMzZGQ4YjZhYzE0Y2ZlYzlmMWMyOTk3MWMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BhdGguaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXRoLmgKQEAgLTMwLDggKzMwLDggQEAKIAogI2lu
Y2x1ZGUgIkZsb2F0UmVjdC5oIgogI2luY2x1ZGUgIldpbmRSdWxlLmgiCi0jaW5jbHVkZSA8ZnVu
Y3Rpb25hbD4KICNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgorI2luY2x1ZGUgPHd0Zi9GdW5j
dGlvbi5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5o
PgogCkBAIC0xMDEsNyArMTAxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBGbG9h
dFBvaW50KiBwb2ludHM7CiAgICAgfTsKIAotICAgIHR5cGVkZWYgc3RkOjpmdW5jdGlvbjx2b2lk
IChjb25zdCBQYXRoRWxlbWVudCYpPiBQYXRoQXBwbGllckZ1bmN0aW9uOworICAgIHVzaW5nIFBh
dGhBcHBsaWVyRnVuY3Rpb24gPSBXVEY6OkZ1bmN0aW9uPHZvaWQgKGNvbnN0IFBhdGhFbGVtZW50
Jik+OwogCiAgICAgY2xhc3MgUGF0aCB7CiAgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uLmNwcAppbmRleCBiMGMyNmFmNTMzZjQyMzdjNDc2NDk2MTViNGVkNjQxYjQyYzBkZThkLi41
ZGI4NzczZjVhNWY5M2YzMTE5M2I5NTMwZGI0Y2UzZGJhM2NiNDlmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2
YXRlQVZGb3VuZGF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmNwcApAQCAtNjU5
LDcgKzY1OSw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uOjpzZWVrQ29t
cGxldGVkKGJvb2wgZmluaXNoZWQpCiAKICAgICBtX3NlZWtpbmcgPSBmYWxzZTsKIAotICAgIHN0
ZDo6ZnVuY3Rpb248dm9pZCgpPiBwZW5kaW5nU2VlazsKKyAgICBXVEY6OkZ1bmN0aW9uPHZvaWQo
KT4gcGVuZGluZ1NlZWs7CiAgICAgc3RkOjpzd2FwKHBlbmRpbmdTZWVrLCBtX3BlbmRpbmdTZWVr
KTsKIAogICAgIGlmIChwZW5kaW5nU2VlaykgewpAQCAtNzkwLDE2ICs3OTAsMTcgQEAgc3RhdGlj
IGNvbnN0IGNoYXIqIG5vdGlmaWNhdGlvbk5hbWUoTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uOjpOb3RpZmljYXRpb24KICNlbmRpZiAvLyAhTE9HX0RJU0FCTEVECiAgICAgCiAKLXZvaWQg
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uOjpzY2hlZHVsZU1haW5UaHJlYWROb3RpZmlj
YXRpb24oTm90aWZpY2F0aW9uIG5vdGlmaWNhdGlvbikKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uOjpzY2hlZHVsZU1haW5UaHJlYWROb3RpZmljYXRpb24oTm90aWZpY2F0aW9u
JiYgbm90aWZpY2F0aW9uKQogewotICAgIGlmIChub3RpZmljYXRpb24udHlwZSgpICE9IE5vdGlm
aWNhdGlvbjo6RnVuY3Rpb25UeXBlKQorICAgIGF1dG8gbm90aWZpY2F0aW9uVHlwZSA9IG5vdGlm
aWNhdGlvbi50eXBlKCk7CisgICAgaWYgKG5vdGlmaWNhdGlvblR5cGUgIT0gTm90aWZpY2F0aW9u
OjpGdW5jdGlvblR5cGUpCiAgICAgICAgIExPRyhNZWRpYSwgIk1lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbjo6c2NoZWR1bGVNYWluVGhyZWFkTm90aWZpY2F0aW9uKCVwKSAtIG5vdGlmaWNh
dGlvbiAlcyIsIHRoaXMsIG5vdGlmaWNhdGlvbk5hbWUobm90aWZpY2F0aW9uKSk7CiAKICAgICBt
X3F1ZXVlTXV0ZXgubG9jaygpOwogCiAgICAgLy8gSXQgaXMgaW1wb3J0YW50IHRvIGFsd2F5cyBw
cm9jZXNzIHRoZSBwcm9wZXJ0aWVzIGluIHRoZSBvcmRlciB0aGF0IHdlIGFyZSBub3RpZmllZCwK
ICAgICAvLyBzbyBhbHdheXMgZ28gdGhyb3VnaCB0aGUgcXVldWUgYmVjYXVzZSBub3RpZmljYXRp
b25zIGhhcHBlbiBvbiBkaWZmZXJlbnQgdGhyZWFkcy4KLSAgICBtX3F1ZXVlZE5vdGlmaWNhdGlv
bnMuYXBwZW5kKG5vdGlmaWNhdGlvbik7CisgICAgbV9xdWV1ZWROb3RpZmljYXRpb25zLmFwcGVu
ZChXVEZNb3ZlKG5vdGlmaWNhdGlvbikpOwogCiAjaWYgT1MoV0lORE9XUykKICAgICBib29sIGRl
bGF5RGlzcGF0Y2ggPSB0cnVlOwpAQCAtODIwLDcgKzgyMSw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uOjpzY2hlZHVsZU1haW5UaHJlYWROb3RpZmljYXRpb24oTm90aWZp
Y2F0aW9uCiAgICAgbV9xdWV1ZU11dGV4LnVubG9jaygpOwogCiAgICAgaWYgKGRlbGF5RGlzcGF0
Y2gpIHsKLSAgICAgICAgaWYgKG5vdGlmaWNhdGlvbi50eXBlKCkgIT0gTm90aWZpY2F0aW9uOjpG
dW5jdGlvblR5cGUpCisgICAgICAgIGlmIChub3RpZmljYXRpb25UeXBlICE9IE5vdGlmaWNhdGlv
bjo6RnVuY3Rpb25UeXBlKQogICAgICAgICAgICAgTE9HKE1lZGlhLCAiTWVkaWFQbGF5ZXJQcml2
YXRlQVZGb3VuZGF0aW9uOjpzY2hlZHVsZU1haW5UaHJlYWROb3RpZmljYXRpb24oJXApIC0gZWFy
bHkgcmV0dXJuIiwgdGhpcyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC04MzIsNyArODMz
LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb246OmRpc3BhdGNoTm90aWZp
Y2F0aW9uKCkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogCi0gICAgTm90aWZpY2F0
aW9uIG5vdGlmaWNhdGlvbiA9IE5vdGlmaWNhdGlvbigpOworICAgIE5vdGlmaWNhdGlvbiBub3Rp
ZmljYXRpb247CiAgICAgewogICAgICAgICBMb2NrSG9sZGVyIGxvY2sobV9xdWV1ZU11dGV4KTsK
ICAgICAgICAgCkBAIC04NDEsOCArODQyLDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb246OmRpc3BhdGNoTm90aWZpY2F0aW9uKCkKICAgICAgICAgCiAgICAgICAgIGlmICgh
bV9kZWxheUNhbGxiYWNrcykgewogICAgICAgICAgICAgLy8gT25seSBkaXNwYXRjaCBvbmUgbm90
aWZpY2F0aW9uIGNhbGxiYWNrIHBlciBpbnZvY2F0aW9uIGJlY2F1c2UgdGhleSBjYW4gY2F1c2Ug
cmVjdXJzaW9uLgotICAgICAgICAgICAgbm90aWZpY2F0aW9uID0gbV9xdWV1ZWROb3RpZmljYXRp
b25zLmZpcnN0KCk7Ci0gICAgICAgICAgICBtX3F1ZXVlZE5vdGlmaWNhdGlvbnMucmVtb3ZlKDAp
OworICAgICAgICAgICAgbm90aWZpY2F0aW9uID0gbV9xdWV1ZWROb3RpZmljYXRpb25zLnRha2VG
aXJzdCgpOwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBpZiAoIW1fcXVldWVkTm90aWZp
Y2F0aW9ucy5pc0VtcHR5KCkgJiYgIW1fbWFpblRocmVhZENhbGxQZW5kaW5nKSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmgKaW5kZXgg
MGFkMjk4YjA1ZmMwYTMwNzA1YjFlYjgwMzE2MDhlYjQ5ZjhmMmYzMS4uMDg4YmE0NzA1NzhhN2Nk
MzlmMWQ5MDE3Y2Y1OTg0MjA1N2ZmODY0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9N
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24uaApAQCAtMzIsNyArMzIsOCBAQAogI2luY2x1
ZGUgIkluYmFuZFRleHRUcmFja1ByaXZhdGVBVkYuaCIKICNpbmNsdWRlICJNZWRpYVBsYXllclBy
aXZhdGUuaCIKICNpbmNsdWRlICJUaW1lci5oIgotI2luY2x1ZGUgPGZ1bmN0aW9uYWw+CisjaW5j
bHVkZSA8d3RmL0RlcXVlLmg+CisjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+CiAjaW5jbHVkZSA8
d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvTG9jay5oPgogI2luY2x1ZGUgPHd0Zi9SZXRh
aW5QdHIuaD4KQEAgLTExMywxMCArMTE0LDEwIEBAIHB1YmxpYzoKICAgICAgICAgewogICAgICAg
ICB9CiAKLSAgICAgICAgTm90aWZpY2F0aW9uKHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4gZnVuY3Rp
b24pCisgICAgICAgIE5vdGlmaWNhdGlvbihXVEY6OkZ1bmN0aW9uPHZvaWQgKCk+JiYgZnVuY3Rp
b24pCiAgICAgICAgICAgICA6IG1fdHlwZShGdW5jdGlvblR5cGUpCiAgICAgICAgICAgICAsIG1f
ZmluaXNoZWQoZmFsc2UpCi0gICAgICAgICAgICAsIG1fZnVuY3Rpb24oZnVuY3Rpb24pCisgICAg
ICAgICAgICAsIG1fZnVuY3Rpb24oV1RGTW92ZShmdW5jdGlvbikpCiAgICAgICAgIHsKICAgICAg
ICAgfQogICAgICAgICAKQEAgLTEyNCwxNiArMTI1LDE2IEBAIHB1YmxpYzoKICAgICAgICAgYm9v
bCBpc1ZhbGlkKCkgeyByZXR1cm4gbV90eXBlICE9IE5vbmU7IH0KICAgICAgICAgTWVkaWFUaW1l
IHRpbWUoKSB7IHJldHVybiBtX3RpbWU7IH0KICAgICAgICAgYm9vbCBmaW5pc2hlZCgpIHsgcmV0
dXJuIG1fZmluaXNoZWQ7IH0KLSAgICAgICAgc3RkOjpmdW5jdGlvbjx2b2lkICgpPiYgZnVuY3Rp
b24oKSB7IHJldHVybiBtX2Z1bmN0aW9uOyB9CisgICAgICAgIFdURjo6RnVuY3Rpb248dm9pZCAo
KT4mIGZ1bmN0aW9uKCkgeyByZXR1cm4gbV9mdW5jdGlvbjsgfQogICAgICAgICAKICAgICBwcml2
YXRlOgogICAgICAgICBUeXBlIG1fdHlwZTsKICAgICAgICAgTWVkaWFUaW1lIG1fdGltZTsKICAg
ICAgICAgYm9vbCBtX2ZpbmlzaGVkOwotICAgICAgICBzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+IG1f
ZnVuY3Rpb247CisgICAgICAgIFdURjo6RnVuY3Rpb248dm9pZCAoKT4gbV9mdW5jdGlvbjsKICAg
ICB9OwogCi0gICAgdm9pZCBzY2hlZHVsZU1haW5UaHJlYWROb3RpZmljYXRpb24oTm90aWZpY2F0
aW9uKTsKKyAgICB2b2lkIHNjaGVkdWxlTWFpblRocmVhZE5vdGlmaWNhdGlvbihOb3RpZmljYXRp
b24mJik7CiAgICAgdm9pZCBzY2hlZHVsZU1haW5UaHJlYWROb3RpZmljYXRpb24oTm90aWZpY2F0
aW9uOjpUeXBlLCBjb25zdCBNZWRpYVRpbWUmID0gTWVkaWFUaW1lOjp6ZXJvVGltZSgpKTsKICAg
ICB2b2lkIHNjaGVkdWxlTWFpblRocmVhZE5vdGlmaWNhdGlvbihOb3RpZmljYXRpb246OlR5cGUs
IGJvb2wgY29tcGxldGVkKTsKICAgICB2b2lkIGRpc3BhdGNoTm90aWZpY2F0aW9uKCk7CkBAIC0z
MTcsOSArMzE4LDkgQEAgcHJpdmF0ZToKIAogICAgIFdlYWtQdHJGYWN0b3J5PE1lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbj4gbV93ZWFrUHRyRmFjdG9yeTsKIAotICAgIHN0ZDo6ZnVuY3Rp
b248dm9pZCgpPiBtX3BlbmRpbmdTZWVrOworICAgIFdURjo6RnVuY3Rpb248dm9pZCgpPiBtX3Bl
bmRpbmdTZWVrOwogCi0gICAgVmVjdG9yPE5vdGlmaWNhdGlvbj4gbV9xdWV1ZWROb3RpZmljYXRp
b25zOworICAgIERlcXVlPE5vdGlmaWNhdGlvbj4gbV9xdWV1ZWROb3RpZmljYXRpb25zOwogICAg
IG11dGFibGUgTG9jayBtX3F1ZXVlTXV0ZXg7CiAKICAgICBtdXRhYmxlIHN0ZDo6dW5pcXVlX3B0
cjxQbGF0Zm9ybVRpbWVSYW5nZXM+IG1fY2FjaGVkTG9hZGVkVGltZVJhbmdlczsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01l
ZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb25PYmpDLm1tCmluZGV4IDRmZmRhNWU5ZjMyZmE1MGExZWZhYjMyY2Y1MmJjY2NkZjE3N2Ez
MzMuLjZmZGY2MWRmNDk0MDg2ZWY1MGU1ODU1NGU3ZDlkZGUzYjAxMzIwZjMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uT2JqQy5tbQpAQCAtMzM3NSw3ICszMzc1LDcgQEAgLSAodm9pZClvYnNlcnZlVmFsdWVG
b3JLZXlQYXRoOmtleVBhdGggb2ZPYmplY3Q6KGlkKW9iamVjdCBjaGFuZ2U6KE5TRGljdGlvbmFy
eQogICAgIH0KICNlbmRpZgogCi0gICAgc3RkOjpmdW5jdGlvbjx2b2lkICgpPiBmdW5jdGlvbjsK
KyAgICBXVEY6OkZ1bmN0aW9uPHZvaWQgKCk+IGZ1bmN0aW9uOwogCiAgICAgaWYgKGNvbnRleHQg
PT0gTWVkaWFQbGF5ZXJBVkZvdW5kYXRpb25PYnNlcnZhdGlvbkNvbnRleHRBVlBsYXllckxheWVy
KSB7CiAgICAgICAgIGlmIChba2V5UGF0aCBpc0VxdWFsVG9TdHJpbmc6QCJyZWFkeUZvckRpc3Bs
YXkiXSkKQEAgLTM0NTAsNyArMzQ1MCw3IEBAIC0gKHZvaWQpb2JzZXJ2ZVZhbHVlRm9yS2V5UGF0
aDprZXlQYXRoIG9mT2JqZWN0OihpZClvYmplY3QgY2hhbmdlOihOU0RpY3Rpb25hcnkKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgYXV0byB3ZWFrVGhpcyA9IG1fY2FsbGJhY2stPmNyZWF0ZVdlYWtQ
dHIoKTsKLSAgICBtX2NhbGxiYWNrLT5zY2hlZHVsZU1haW5UaHJlYWROb3RpZmljYXRpb24oTWVk
aWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uOjpOb3RpZmljYXRpb24oW3dlYWtUaGlzLCBmdW5j
dGlvbl17CisgICAgbV9jYWxsYmFjay0+c2NoZWR1bGVNYWluVGhyZWFkTm90aWZpY2F0aW9uKE1l
ZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbjo6Tm90aWZpY2F0aW9uKFt3ZWFrVGhpcywgZnVu
Y3Rpb24gPSBXVEZNb3ZlKGZ1bmN0aW9uKV17CiAgICAgICAgIC8vIHdlYWtUaGlzIGFuZCBmdW5j
dGlvbiBib3RoIHJlZmVyIHRvIHRoZSBzYW1lIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bk9iakMgaW5zdGFuY2UuIElmIHRoZSBXZWFrUHRyIGhhcwogICAgICAgICAvLyBiZWVuIGNsZWFy
ZWQsIHRoZSB1bmRlcmx5aW5nIG9iamVjdCBoYXMgYmVlbiBkZXN0cm95ZWQsIGFuZCBpdCBpcyB1
bnNhZmUgdG8gY2FsbCBmdW5jdGlvbigpLgogICAgICAgICBpZiAoIXdlYWtUaGlzKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVk
aWFTdHJlYW1BVkZPYmpDLm1tCmluZGV4IDM4Y2FkZTk0OWE4ZTU1N2MzNDgzNzc5YWQ1NWZiNGUw
ZDNmMTA3MjYuLjk1YWI0NWNjZWQyMDE2Yjg5YjAxYzRmODg2ZmRmNmVhOTg2YmJmYWUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZh
dGVNZWRpYVN0cmVhbUFWRk9iakMubW0KQEAgLTQxLDYgKzQxLDcgQEAKICNpbXBvcnQgPFF1YXJ0
ekNvcmUvQ0FMYXllci5oPgogI2ltcG9ydCA8UXVhcnR6Q29yZS9DQVRyYW5zYWN0aW9uLmg+CiAj
aW1wb3J0IDxvYmpjX3J1bnRpbWUuaD4KKyNpbXBvcnQgPHd0Zi9GdW5jdGlvbi5oPgogI2ltcG9y
dCA8d3RmL01haW5UaHJlYWQuaD4KICNpbXBvcnQgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCkBA
IC0zMjUsNyArMzI2LDcgQEAgQ0dBZmZpbmVUcmFuc2Zvcm0gTWVkaWFQbGF5ZXJQcml2YXRlTWVk
aWFTdHJlYW1BVkZPYmpDOjp2aWRlb1RyYW5zZm9ybWF0aW9uTWF0cmkKICAgICByZXR1cm4gbV92
aWRlb1RyYW5zZm9ybTsKIH0KIAotc3RhdGljIHZvaWQgcnVuV2l0aG91dEFuaW1hdGlvbnMoc3Rk
OjpmdW5jdGlvbjx2b2lkKCk+IGZ1bmN0aW9uKQorc3RhdGljIHZvaWQgcnVuV2l0aG91dEFuaW1h
dGlvbnMoY29uc3QgV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiBmdW5jdGlvbikKIHsKICAgICBbQ0FU
cmFuc2FjdGlvbiBiZWdpbl07CiAgICAgW0NBVHJhbnNhY3Rpb24gc2V0QW5pbWF0aW9uRHVyYXRp
b246MF07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9JT1N1cmZhY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0lP
U3VyZmFjZS5oCmluZGV4IDIxNjk5ZjM2ZmRjMDA1MTlkMGE5Mzk0ZjUzZDJkNWUwN2M2Y2YxZTUu
LjAwYWQyY2IzNDM5ZmJiOWIyNmIxMWFiMWI2ZmQzN2UzZjMyNjAwMjQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0lPU3VyZmFjZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0lPU3VyZmFjZS5oCkBAIC05Niw3
ICs5Niw3IEBAIHB1YmxpYzoKIAogI2lmIFBMQVRGT1JNKElPUykKICAgICBXRUJDT1JFX0VYUE9S
VCBzdGF0aWMgYm9vbCBhbGxvd0NvbnZlcnNpb25Gcm9tRm9ybWF0VG9Gb3JtYXQoRm9ybWF0LCBG
b3JtYXQpOwotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIGNvbnZlcnRUb0Zvcm1hdChz
dGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6SU9TdXJmYWNlPiYmIGluU3VyZmFjZSwgRm9ybWF0LCBz
dGQ6OmZ1bmN0aW9uPHZvaWQoc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OklPU3VyZmFjZT4pPik7
CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQgY29udmVydFRvRm9ybWF0KHN0ZDo6dW5p
cXVlX3B0cjxXZWJDb3JlOjpJT1N1cmZhY2U+JiYgaW5TdXJmYWNlLCBGb3JtYXQsIFdURjo6RnVu
Y3Rpb248dm9pZChzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6SU9TdXJmYWNlPik+JiYpOwogI2Vu
ZGlmCiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jb2NvYS9JT1N1cmZhY2UubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jb2NvYS9JT1N1cmZhY2UubW0KaW5kZXggNzhjNzgwMjM4ODE2M2M1ZGZkNzUyYzY5OTJiMzNk
YTg3ZTE4M2NjNi4uNDlkMDQ2ZTljZDI1YWM2NDQzOTU0ZDM2ZmViZDIzOTA4YzZkMzc4MCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSU9TdXJmYWNl
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0lPU3VyZmFj
ZS5tbQpAQCAtMzgwLDcgKzM4MCw3IEBAIGJvb2wgV2ViQ29yZTo6SU9TdXJmYWNlOjphbGxvd0Nv
bnZlcnNpb25Gcm9tRm9ybWF0VG9Gb3JtYXQoRm9ybWF0IHNvdXJjZUZvcm1hdCwKICAgICByZXR1
cm4gdHJ1ZTsKIH0KIAotdm9pZCBXZWJDb3JlOjpJT1N1cmZhY2U6OmNvbnZlcnRUb0Zvcm1hdChz
dGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6SU9TdXJmYWNlPiYmIGluU3VyZmFjZSwgRm9ybWF0IGZv
cm1hdCwgc3RkOjpmdW5jdGlvbjx2b2lkKHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpJT1N1cmZh
Y2U+KT4gY2FsbGJhY2spCit2b2lkIFdlYkNvcmU6OklPU3VyZmFjZTo6Y29udmVydFRvRm9ybWF0
KHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpJT1N1cmZhY2U+JiYgaW5TdXJmYWNlLCBGb3JtYXQg
Zm9ybWF0LCBXVEY6OkZ1bmN0aW9uPHZvaWQoc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OklPU3Vy
ZmFjZT4pPiYmIGNhbGxiYWNrKQogewogICAgIHN0YXRpYyBJT1N1cmZhY2VBY2NlbGVyYXRvclJl
ZiBhY2NlbGVyYXRvcjsKICAgICBpZiAoIWFjY2VsZXJhdG9yKSB7CkBAIC00MDMsMTAgKzQwMywx
MCBAQCB2b2lkIFdlYkNvcmU6OklPU3VyZmFjZTo6Y29udmVydFRvRm9ybWF0KHN0ZDo6dW5pcXVl
X3B0cjxXZWJDb3JlOjpJT1N1cmZhY2U+JiYgaQogCiAgICAgSU9TdXJmYWNlUmVmIGRlc3RpbmF0
aW9uSU9TdXJmYWNlUmVmID0gZGVzdGluYXRpb25TdXJmYWNlLT5zdXJmYWNlKCk7CiAgICAgSU9T
dXJmYWNlQWNjZWxlcmF0b3JDb21wbGV0aW9uIGNvbXBsZXRpb247Ci0gICAgY29tcGxldGlvbi5j
b21wbGV0aW9uUmVmQ29uID0gbmV3IHN0ZDo6ZnVuY3Rpb248dm9pZChzdGQ6OnVuaXF1ZV9wdHI8
V2ViQ29yZTo6SU9TdXJmYWNlPik+IChXVEZNb3ZlKGNhbGxiYWNrKSk7CisgICAgY29tcGxldGlv
bi5jb21wbGV0aW9uUmVmQ29uID0gbmV3IFdURjo6RnVuY3Rpb248dm9pZChzdGQ6OnVuaXF1ZV9w
dHI8V2ViQ29yZTo6SU9TdXJmYWNlPik+IChXVEZNb3ZlKGNhbGxiYWNrKSk7CiAgICAgY29tcGxl
dGlvbi5jb21wbGV0aW9uUmVmQ29uMiA9IGRlc3RpbmF0aW9uU3VyZmFjZS5yZWxlYXNlKCk7CiAg
ICAgY29tcGxldGlvbi5jb21wbGV0aW9uQ2FsbGJhY2sgPSBbXSh2b2lkICpjb21wbGV0aW9uUmVm
Q29uLCBJT1JldHVybiwgdm9pZCAqIGNvbXBsZXRpb25SZWZDb24yKSB7Ci0gICAgICAgIGF1dG8q
IGNhbGxiYWNrID0gc3RhdGljX2Nhc3Q8c3RkOjpmdW5jdGlvbjx2b2lkKHN0ZDo6dW5pcXVlX3B0
cjxXZWJDb3JlOjpJT1N1cmZhY2U+KT4qPihjb21wbGV0aW9uUmVmQ29uKTsKKyAgICAgICAgYXV0
byogY2FsbGJhY2sgPSBzdGF0aWNfY2FzdDxXVEY6OkZ1bmN0aW9uPHZvaWQoc3RkOjp1bmlxdWVf
cHRyPFdlYkNvcmU6OklPU3VyZmFjZT4pPio+KGNvbXBsZXRpb25SZWZDb24pOwogICAgICAgICBh
dXRvIGRlc3RpbmF0aW9uU3VyZmFjZSA9IHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpJT1N1cmZh
Y2U+KHN0YXRpY19jYXN0PFdlYkNvcmU6OklPU3VyZmFjZSo+KGNvbXBsZXRpb25SZWZDb24yKSk7
CiAgICAgICAgIAogICAgICAgICAoKmNhbGxiYWNrKShXVEZNb3ZlKGRlc3RpbmF0aW9uU3VyZmFj
ZSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL01haW5UaHJlYWROb3RpZmllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL01haW5UaHJlYWROb3RpZmllci5oCmluZGV4IGYxNDA1MGRkMmVmNDQ2OWMw
MTgwOTJhNWQ3ZDg3MmUwNmMxZTgxMDAuLjM3NTJkYzI3NWU3MTk1NzhlYmYxOTU5NmY0ZmE2YmYy
ZmM4OGY5YjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9NYWluVGhyZWFkTm90aWZpZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvTWFpblRocmVhZE5vdGlmaWVyLmgKQEAgLTM2LDcgKzM2LDcg
QEAgcHVibGljOgogICAgIH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEY+Ci0gICAgdm9pZCBu
b3RpZnkoVCBub3RpZmljYXRpb25UeXBlLCBjb25zdCBGJiBjYWxsYmFja0Z1bmN0b3IpCisgICAg
dm9pZCBub3RpZnkoVCBub3RpZmljYXRpb25UeXBlLCBGJiYgY2FsbGJhY2tGdW5jdG9yKQogICAg
IHsKICAgICAgICAgQVNTRVJUKG1faXNWYWxpZC5sb2FkKCkpOwogICAgICAgICBpZiAoaXNNYWlu
VGhyZWFkKCkpIHsKQEAgLTQ4LDcgKzQ4LDcgQEAgcHVibGljOgogICAgICAgICBpZiAoIWFkZFBl
bmRpbmdOb3RpZmljYXRpb24obm90aWZpY2F0aW9uVHlwZSkpCiAgICAgICAgICAgICByZXR1cm47
CiAKLSAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlz
ID0gbWFrZVJlZigqdGhpcyksIG5vdGlmaWNhdGlvblR5cGUsIGNhbGxiYWNrID0gc3RkOjpmdW5j
dGlvbjx2b2lkKCk+KGNhbGxiYWNrRnVuY3RvcildIHsKKyAgICAgICAgUnVuTG9vcDo6bWFpbigp
LmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIG5vdGlmaWNh
dGlvblR5cGUsIGNhbGxiYWNrID0gV1RGOjpGdW5jdGlvbjx2b2lkKCk+KFdURk1vdmUoY2FsbGJh
Y2tGdW5jdG9yKSldIHsKICAgICAgICAgICAgIGlmICghbV9pc1ZhbGlkLmxvYWQoKSkKICAgICAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICBpZiAocmVtb3ZlUGVuZGluZ05vdGlmaWNh
dGlvbihub3RpZmljYXRpb25UeXBlKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclJlcXVlc3RJbnN0YWxsTWlzc2luZ1Bs
dWdpbnNDYWxsYmFjay5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL01lZGlhUGxheWVyUmVxdWVzdEluc3RhbGxNaXNzaW5nUGx1Z2luc0NhbGxiYWNrLmgKaW5k
ZXggOTVlZDJkYTYzM2YxMmNhZDQ4ZTNmZTAwMjRjMTFjMTY3ZDY3NDUzZS4uMDU4N2QwZGY5MmIw
NjgyYWYyNmMwOGQ4ZWVjZDZmZDQ4ZjJkNjk1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUmVxdWVzdEluc3RhbGxNaXNz
aW5nUGx1Z2luc0NhbGxiYWNrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUmVxdWVzdEluc3RhbGxNaXNzaW5nUGx1Z2luc0NhbGxi
YWNrLmgKQEAgLTIxLDYgKzIxLDcgQEAKICNkZWZpbmUgTWVkaWFQbGF5ZXJSZXF1ZXN0SW5zdGFs
bE1pc3NpbmdQbHVnaW5zQ2FsbGJhY2tfaAogCiAjaWYgRU5BQkxFKFZJREVPKSAmJiBVU0UoR1NU
UkVBTUVSKQorI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3Vu
dGVkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTI4LDcgKzI5LDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogY2xhc3MgTWVkaWFQbGF5ZXJSZXF1ZXN0SW5zdGFsbE1pc3NpbmdQbHVnaW5z
Q2FsbGJhY2sgOiBwdWJsaWMgUmVmQ291bnRlZDxNZWRpYVBsYXllclJlcXVlc3RJbnN0YWxsTWlz
c2luZ1BsdWdpbnNDYWxsYmFjaz4gewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEKCk7CiBw
dWJsaWM6Ci0gICAgc3RhdGljIFJlZjxNZWRpYVBsYXllclJlcXVlc3RJbnN0YWxsTWlzc2luZ1Bs
dWdpbnNDYWxsYmFjaz4gY3JlYXRlKHN0ZDo6ZnVuY3Rpb248dm9pZCAodWludDMyX3QpPiYmIGZ1
bmN0aW9uKQorICAgIHN0YXRpYyBSZWY8TWVkaWFQbGF5ZXJSZXF1ZXN0SW5zdGFsbE1pc3NpbmdQ
bHVnaW5zQ2FsbGJhY2s+IGNyZWF0ZShXVEY6OkZ1bmN0aW9uPHZvaWQgKHVpbnQzMl90KT4mJiBm
dW5jdGlvbikKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE1lZGlhUGxheWVy
UmVxdWVzdEluc3RhbGxNaXNzaW5nUGx1Z2luc0NhbGxiYWNrKFdURk1vdmUoZnVuY3Rpb24pKSk7
CiAgICAgfQpAQCAtNDcsMTIgKzQ4LDEyIEBAIHB1YmxpYzoKICAgICB9CiAKIHByaXZhdGU6Ci0g
ICAgTWVkaWFQbGF5ZXJSZXF1ZXN0SW5zdGFsbE1pc3NpbmdQbHVnaW5zQ2FsbGJhY2soc3RkOjpm
dW5jdGlvbjx2b2lkICh1aW50MzJfdCk+JiYgZnVuY3Rpb24pCisgICAgTWVkaWFQbGF5ZXJSZXF1
ZXN0SW5zdGFsbE1pc3NpbmdQbHVnaW5zQ2FsbGJhY2soV1RGOjpGdW5jdGlvbjx2b2lkICh1aW50
MzJfdCk+JiYgZnVuY3Rpb24pCiAgICAgICAgIDogbV9mdW5jdGlvbihXVEZNb3ZlKGZ1bmN0aW9u
KSkKICAgICB7CiAgICAgfQogCi0gICAgc3RkOjpmdW5jdGlvbjx2b2lkICh1aW50MzJfdCk+IG1f
ZnVuY3Rpb247CisgICAgV1RGOjpGdW5jdGlvbjx2b2lkICh1aW50MzJfdCk+IG1fZnVuY3Rpb247
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0RGlyZWN0MkQuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dERpcmVjdDJE
LmNwcAppbmRleCA2NDA1OTcwZjI3NWViYTUyYjcxZTJkYWI0YWQ3NjBlZDlhMzJlMmYyLi5kMDY2
N2MzZDAwY2YyOGUyMzFiMjFhZTk2Mjk0ZDJjZjY5OGIzYjQ0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0RGlyZWN0MkQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRl
eHREaXJlY3QyRC5jcHAKQEAgLTkzNSw3ICs5MzUsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6
ZHJhd1BhdGgoY29uc3QgUGF0aCYgcGF0aCkKICAgICBmbHVzaCgpOwogfQogCi12b2lkIEdyYXBo
aWNzQ29udGV4dDo6ZHJhd1dpdGhvdXRTaGFkb3coY29uc3QgRmxvYXRSZWN0JiAvKmJvdW5kaW5n
UmVjdCovLCBjb25zdCBzdGQ6OmZ1bmN0aW9uPHZvaWQoSUQyRDFSZW5kZXJUYXJnZXQqKT4mIGRy
YXdDb21tYW5kcykKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3V2l0aG91dFNoYWRvdyhjb25z
dCBGbG9hdFJlY3QmIC8qYm91bmRpbmdSZWN0Ki8sIGNvbnN0IFdURjo6RnVuY3Rpb248dm9pZChJ
RDJEMVJlbmRlclRhcmdldCopPiYgZHJhd0NvbW1hbmRzKQogewogICAgIGRyYXdDb21tYW5kcyhw
bGF0Zm9ybUNvbnRleHQoKSk7CiB9CkBAIC05ODEsNyArOTgxLDcgQEAgc3RhdGljIHZvaWQgZHJh
d1dpdGhTaGFkb3dIZWxwZXIoSUQyRDFSZW5kZXJUYXJnZXQqIGNvbnRleHQsIElEMkQxQml0bWFw
KiBiaXRtYXAKICAgICBkZXZpY2VDb250ZXh0LT5EcmF3SW1hZ2UoY29tcG9zaXRvci5nZXQoKSwg
RDJEMV9JTlRFUlBPTEFUSU9OX01PREVfTElORUFSKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRl
eHQ6OmRyYXdXaXRoU2hhZG93KGNvbnN0IEZsb2F0UmVjdCYgYm91bmRpbmdSZWN0LCBjb25zdCBz
dGQ6OmZ1bmN0aW9uPHZvaWQoSUQyRDFSZW5kZXJUYXJnZXQqKT4mIGRyYXdDb21tYW5kcykKK3Zv
aWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3V2l0aFNoYWRvdyhjb25zdCBGbG9hdFJlY3QmIGJvdW5k
aW5nUmVjdCwgY29uc3QgV1RGOjpGdW5jdGlvbjx2b2lkKElEMkQxUmVuZGVyVGFyZ2V0Kik+JiBk
cmF3Q29tbWFuZHMpCiB7CiAgICAgYXV0byBjb250ZXh0ID0gcGxhdGZvcm1Db250ZXh0KCk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkSGVscGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkSGVscGVyLmNwcApp
bmRleCAwODJmYjdjZGEzMWI2YTRiZjE2NWNmYmNmMTQ5OGM1MDljZDk2ODhmLi5iYTE1NmQxOWRi
ZDBmZDc2OTQ1Yjk4Y2Y3MjMyYTQ4MGE2ZDEzMWU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ndGsvUGFzdGVib2FyZEhlbHBlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRIZWxwZXIuY3BwCkBAIC0yNjUsNyArMjY1LDcgQEAgVmVj
dG9yPEdka0F0b20+IFBhc3RlYm9hcmRIZWxwZXI6OmRyb3BBdG9tc0ZvckNvbnRleHQoR3RrV2lk
Z2V0KiB3aWRnZXQsIEdka0RyYWcKIHN0YXRpYyBTZWxlY3Rpb25EYXRhKiBzZXR0aW5nQ2xpcGJv
YXJkU2VsZWN0aW9uOwogCiBzdHJ1Y3QgQ2xpcGJvYXJkU2V0RGF0YSB7Ci0gICAgQ2xpcGJvYXJk
U2V0RGF0YShTZWxlY3Rpb25EYXRhJiBzZWxlY3Rpb24sIHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiYm
IHNlbGVjdGlvbkNsZWFyZWRDYWxsYmFjaykKKyAgICBDbGlwYm9hcmRTZXREYXRhKFNlbGVjdGlv
bkRhdGEmIHNlbGVjdGlvbiwgV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYgc2VsZWN0aW9uQ2xlYXJl
ZENhbGxiYWNrKQogICAgICAgICA6IHNlbGVjdGlvbkRhdGEoc2VsZWN0aW9uKQogICAgICAgICAs
IHNlbGVjdGlvbkNsZWFyZWRDYWxsYmFjayhXVEZNb3ZlKHNlbGVjdGlvbkNsZWFyZWRDYWxsYmFj
aykpCiAgICAgewpAQCAtMjc2LDcgKzI3Niw3IEBAIHN0cnVjdCBDbGlwYm9hcmRTZXREYXRhIHsK
ICAgICB9CiAKICAgICBSZWY8U2VsZWN0aW9uRGF0YT4gc2VsZWN0aW9uRGF0YTsKLSAgICBzdGQ6
OmZ1bmN0aW9uPHZvaWQoKT4gc2VsZWN0aW9uQ2xlYXJlZENhbGxiYWNrOworICAgIFdURjo6RnVu
Y3Rpb251bmN0aW9uPHZvaWQoKT4gc2VsZWN0aW9uQ2xlYXJlZENhbGxiYWNrOwogfTsKIAogc3Rh
dGljIHZvaWQgZ2V0Q2xpcGJvYXJkQ29udGVudHNDYWxsYmFjayhHdGtDbGlwYm9hcmQqLCBHdGtT
ZWxlY3Rpb25EYXRhICpzZWxlY3Rpb25EYXRhLCBndWludCBpbmZvLCBncG9pbnRlciB1c2VyRGF0
YSkKQEAgLTI5Miw3ICsyOTIsNyBAQCBzdGF0aWMgdm9pZCBjbGVhckNsaXBib2FyZENvbnRlbnRz
Q2FsbGJhY2soR3RrQ2xpcGJvYXJkKiwgZ3BvaW50ZXIgdXNlckRhdGEpCiAgICAgICAgIGRhdGEt
PnNlbGVjdGlvbkNsZWFyZWRDYWxsYmFjaygpOwogfQogCi12b2lkIFBhc3RlYm9hcmRIZWxwZXI6
OndyaXRlQ2xpcGJvYXJkQ29udGVudHMoR3RrQ2xpcGJvYXJkKiBjbGlwYm9hcmQsIGNvbnN0IFNl
bGVjdGlvbkRhdGEmIHNlbGVjdGlvbiwgc3RkOjpmdW5jdGlvbjx2b2lkKCk+JiYgcHJpbWFyeVNl
bGVjdGlvbkNsZWFyZWQpCit2b2lkIFBhc3RlYm9hcmRIZWxwZXI6OndyaXRlQ2xpcGJvYXJkQ29u
dGVudHMoR3RrQ2xpcGJvYXJkKiBjbGlwYm9hcmQsIGNvbnN0IFNlbGVjdGlvbkRhdGEmIHNlbGVj
dGlvbiwgV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYgcHJpbWFyeVNlbGVjdGlvbkNsZWFyZWQpCiB7
CiAgICAgR1JlZlB0cjxHdGtUYXJnZXRMaXN0PiBsaXN0ID0gdGFyZ2V0TGlzdEZvclNlbGVjdGlv
bkRhdGEoc2VsZWN0aW9uKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3RrL1Bhc3RlYm9hcmRIZWxwZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QYXN0
ZWJvYXJkSGVscGVyLmgKaW5kZXggNGE0ZGU5OTU2ZWRlOGY1ZTVmNzZlMjViZmE2NGY4NTYzYTYz
YjY4OC4uMDk1ZWU0YWRkMjI4Nzk5ZGI3OGYxYWRkMTdkMWM0ODA3MGQwNjA2NSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRIZWxwZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGFzdGVib2FyZEhlbHBlci5oCkBAIC0yNiw3ICsy
Niw3IEBACiAjZGVmaW5lIFBhc3RlYm9hcmRIZWxwZXJfaAogCiAjaW5jbHVkZSAiR1JlZlB0ckd0
ay5oIgotI2luY2x1ZGUgPGZ1bmN0aW9uYWw+CisjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+CiAj
aW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2lu
Y2x1ZGUgPHd0Zi9nbGliL0dSZWZQdHIuaD4KQEAgLTQ3LDcgKzQ3LDcgQEAgcHVibGljOgogICAg
IHZvaWQgZmlsbFNlbGVjdGlvbkRhdGEoY29uc3QgU2VsZWN0aW9uRGF0YSYsIHVuc2lnbmVkLCBH
dGtTZWxlY3Rpb25EYXRhKik7CiAgICAgdm9pZCBmaWxsU2VsZWN0aW9uRGF0YShHdGtTZWxlY3Rp
b25EYXRhKiwgdW5zaWduZWQsIFNlbGVjdGlvbkRhdGEmKTsKICAgICBWZWN0b3I8R2RrQXRvbT4g
ZHJvcEF0b21zRm9yQ29udGV4dChHdGtXaWRnZXQqLCBHZGtEcmFnQ29udGV4dCopOwotICAgIHZv
aWQgd3JpdGVDbGlwYm9hcmRDb250ZW50cyhHdGtDbGlwYm9hcmQqLCBjb25zdCBTZWxlY3Rpb25E
YXRhJiwgc3RkOjpmdW5jdGlvbjx2b2lkKCk+JiYgcHJpbWFyeVNlbGVjdGlvbkNsZWFyZWQgPSBu
dWxscHRyKTsKKyAgICB2b2lkIHdyaXRlQ2xpcGJvYXJkQ29udGVudHMoR3RrQ2xpcGJvYXJkKiwg
Y29uc3QgU2VsZWN0aW9uRGF0YSYsIFdURjo6RnVuY3Rpb248dm9pZCgpPiYmIHByaW1hcnlTZWxl
Y3Rpb25DbGVhcmVkID0gbnVsbHB0cik7CiAgICAgdm9pZCBnZXRDbGlwYm9hcmRDb250ZW50cyhH
dGtDbGlwYm9hcmQqLCBTZWxlY3Rpb25EYXRhJik7CiAKICAgICBlbnVtIFBhc3RlYm9hcmRUYXJn
ZXRUeXBlIHsgVGFyZ2V0VHlwZU1hcmt1cCwgVGFyZ2V0VHlwZVRleHQsIFRhcmdldFR5cGVJbWFn
ZSwgVGFyZ2V0VHlwZVVSSUxpc3QsIFRhcmdldFR5cGVOZXRzY2FwZVVSTCwgVGFyZ2V0VHlwZVNt
YXJ0UGFzdGUsIFRhcmdldFR5cGVVbmtub3duIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ndGsvUGxhdGZvcm1QYXN0ZWJvYXJkR3RrLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2d0ay9QbGF0Zm9ybVBhc3RlYm9hcmRHdGsuY3BwCmluZGV4IDg0ODFjYjg0Mjdl
NTkwMTQ5ODE1OWU2MGFiODhiYmZjZTBkMDc3MGUuLmViYTNlMDM3NjIxODk4Zjg3NTM1NjBmZmZj
ZmRkZGM2YmRlNjIzM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9Q
bGF0Zm9ybVBhc3RlYm9hcmRHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0
ay9QbGF0Zm9ybVBhc3RlYm9hcmRHdGsuY3BwCkBAIC0zNCw3ICszNCw3IEBAIFBsYXRmb3JtUGFz
dGVib2FyZDo6UGxhdGZvcm1QYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUp
CiAgICAgQVNTRVJUKG1fY2xpcGJvYXJkKTsKIH0KIAotdm9pZCBQbGF0Zm9ybVBhc3RlYm9hcmQ6
OndyaXRlVG9DbGlwYm9hcmQoY29uc3QgU2VsZWN0aW9uRGF0YSYgc2VsZWN0aW9uLCBzdGQ6OmZ1
bmN0aW9uPHZvaWQoKT4mJiBwcmltYXJ5U2VsZWN0aW9uQ2xlYXJlZCkKK3ZvaWQgUGxhdGZvcm1Q
YXN0ZWJvYXJkOjp3cml0ZVRvQ2xpcGJvYXJkKGNvbnN0IFNlbGVjdGlvbkRhdGEmIHNlbGVjdGlv
biwgV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYgcHJpbWFyeVNlbGVjdGlvbkNsZWFyZWQpCiB7CiAg
ICAgUGFzdGVib2FyZEhlbHBlcjo6c2luZ2xldG9uKCkud3JpdGVDbGlwYm9hcmRDb250ZW50cyht
X2NsaXBib2FyZCwgc2VsZWN0aW9uLCBndGtfY2xpcGJvYXJkX2dldChHREtfU0VMRUNUSU9OX1BS
SU1BUlkpID09IG1fY2xpcGJvYXJkID8gV1RGTW92ZShwcmltYXJ5U2VsZWN0aW9uQ2xlYXJlZCkg
OiBudWxscHRyKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9X
ZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0LmgKaW5kZXggOGQzYzQ3M2Mw
NmZhN2Q4NGE0NDY5OWIwNjAyMDAyM2Y3Y2I4MzBlMC4uOThiNGRiZGNjOGIwZGViYTljODAyODAy
MzQ0NWM4NzRkYTExZjc0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9z
L1dlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0LmgKQEAgLTM0LDgg
KzM0LDggQEAKICNpbmNsdWRlICJQbGF0Zm9ybUxheWVyLmgiCiAjaW5jbHVkZSAiV2ViUGxheWJh
Y2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQuaCIKICNpbmNsdWRlICJXZWJWaWRlb0Z1bGxzY3JlZW5N
b2RlbC5oIgotI2luY2x1ZGUgPGZ1bmN0aW9uYWw+CiAjaW5jbHVkZSA8b2JqYy9vYmpjLmg+Cisj
aW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNp
bmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgpAQCAtMTAx
LDcgKzEwMSw3IEBAIHB1YmxpYzoKICAgICBIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVs
bHNjcmVlbk1vZGUgbW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fbW9kZTsgfQogICAgIGJvb2wgYWxs
b3dzUGljdHVyZUluUGljdHVyZVBsYXliYWNrKCkgY29uc3QgeyByZXR1cm4gbV9hbGxvd3NQaWN0
dXJlSW5QaWN0dXJlUGxheWJhY2s7IH0KICAgICBXRUJDT1JFX0VYUE9SVCBib29sIG1heUF1dG9t
YXRpY2FsbHlTaG93VmlkZW9QaWN0dXJlSW5QaWN0dXJlKCkgY29uc3Q7Ci0gICAgdm9pZCBmdWxs
c2NyZWVuTWF5UmV0dXJuVG9JbmxpbmUoc3RkOjpmdW5jdGlvbjx2b2lkKGJvb2wpPiBjYWxsYmFj
ayk7CisgICAgdm9pZCBmdWxsc2NyZWVuTWF5UmV0dXJuVG9JbmxpbmUoV1RGOjpGdW5jdGlvbjx2
b2lkKGJvb2wpPiYmIGNhbGxiYWNrKTsKICAgICBib29sIHdpcmVsZXNzVmlkZW9QbGF5YmFja0Rp
c2FibGVkKCkgY29uc3Q7CiAgICAgdm9pZCBhcHBsaWNhdGlvbkRpZEJlY29tZUFjdGl2ZSgpOwog
CkBAIC0xMzgsNyArMTM4LDcgQEAgcHJvdGVjdGVkOgogICAgIFJldGFpblB0cjxVSVdpbmRvdz4g
bV9wYXJlbnRXaW5kb3c7CiAgICAgUmV0YWluUHRyPFdlYkFWUGxheWVyTGF5ZXJWaWV3PiBtX3Bs
YXllckxheWVyVmlldzsKICAgICBIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVl
bk1vZGUgbV9tb2RlIHsgSFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2Rl
Tm9uZSB9OwotICAgIHN0ZDo6ZnVuY3Rpb248dm9pZChib29sKT4gbV9wcmVwYXJlVG9JbmxpbmVD
YWxsYmFjazsKKyAgICBXVEY6OkZ1bmN0aW9uPHZvaWQoYm9vbCk+IG1fcHJlcGFyZVRvSW5saW5l
Q2FsbGJhY2s7CiAgICAgUnVuTG9vcDo6VGltZXI8V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNl
QVZLaXQ+IG1fd2F0Y2hkb2dUaW1lcjsKICAgICBib29sIG1fYWxsb3dzUGljdHVyZUluUGljdHVy
ZVBsYXliYWNrIHsgZmFsc2UgfTsKICAgICBib29sIG1fZXhpdFJlcXVlc3RlZCB7IGZhbHNlIH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2Ny
ZWVuSW50ZXJmYWNlQVZLaXQubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlk
ZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQubW0KaW5kZXggNmJhYmMxZWQ1MjBiYjI0OTM1YjVm
OTZkYmRlYTk0NjFmNTJlZmY1Ny4uNzZmZmZjMjAwNDhkYmU0M2JkYjU0ODE3ODY4YjJjYTM3Mjc3
YzYzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVs
bHNjcmVlbkludGVyZmFjZUFWS2l0Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lv
cy9XZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5tbQpAQCAtODQ0LDcgKzg0NCw3IEBA
IHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OnByZXBhcmVkVG9SZXR1cm5U
b0lubGluZShib29sIHZpc2libGUsIGNvCiAgICAgICAgIAogICAgICAgICBbbV9wbGF5ZXJWaWV3
Q29udHJvbGxlciB2aWV3XS5mcmFtZSA9IFttX3BhcmVudFZpZXcgY29udmVydFJlY3Q6aW5saW5l
UmVjdCB0b1ZpZXc6W21fcGxheWVyVmlld0NvbnRyb2xsZXIgdmlld10uc3VwZXJ2aWV3XTsKIAot
ICAgICAgICBzdGQ6OmZ1bmN0aW9uPHZvaWQoYm9vbCk+IGNhbGxiYWNrID0gV1RGTW92ZShtX3By
ZXBhcmVUb0lubGluZUNhbGxiYWNrKTsKKyAgICAgICAgV1RGOjpGdW5jdGlvbjx2b2lkKGJvb2wp
PiBjYWxsYmFjayA9IFdURk1vdmUobV9wcmVwYXJlVG9JbmxpbmVDYWxsYmFjayk7CiAgICAgICAg
IGNhbGxiYWNrKHZpc2libGUpOwogICAgIH0KIH0KQEAgLTg1NCw5ICs4NTQsOSBAQCBib29sIFdl
YlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjptYXlBdXRvbWF0aWNhbGx5U2hvd1ZpZGVv
UGljdHVyZUluUGljdHVyZQogICAgIHJldHVybiBbcGxheWVyQ29udHJvbGxlcigpIGlzUGxheWlu
Z10gJiYgbV9tb2RlID09IEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9k
ZVN0YW5kYXJkICYmIHN1cHBvcnRzUGljdHVyZUluUGljdHVyZSgpOwogfQogCi12b2lkIFdlYlZp
ZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpmdWxsc2NyZWVuTWF5UmV0dXJuVG9JbmxpbmUo
c3RkOjpmdW5jdGlvbjx2b2lkKGJvb2wpPiBjYWxsYmFjaykKK3ZvaWQgV2ViVmlkZW9GdWxsc2Ny
ZWVuSW50ZXJmYWNlQVZLaXQ6OmZ1bGxzY3JlZW5NYXlSZXR1cm5Ub0lubGluZShXVEY6OkZ1bmN0
aW9uPHZvaWQoYm9vbCk+JiYgY2FsbGJhY2spCiB7Ci0gICAgbV9wcmVwYXJlVG9JbmxpbmVDYWxs
YmFjayA9IGNhbGxiYWNrOworICAgIG1fcHJlcGFyZVRvSW5saW5lQ2FsbGJhY2sgPSBXVEZNb3Zl
KGNhbGxiYWNrKTsKICAgICBpZiAobV9mdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXIpCiAgICAgICAg
IG1fZnVsbHNjcmVlbkNoYW5nZU9ic2VydmVyLT5mdWxsc2NyZWVuTWF5UmV0dXJuVG9JbmxpbmUo
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9Qb3dlck9ic2Vy
dmVyTWFjLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9Qb3dlck9ic2VydmVyTWFj
LmNwcAppbmRleCAzMjkwMmZkYTA2OGFiMTZmZjNlNWU0MDcyM2I4ZjIzYjE3NTFkNzc2Li44ZjM3
ZGQ3MWYwNzc0ZTM4NWI2Njk2MjljYmQyZTBkNTg0YzQ2NmJhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tYWMvUG93ZXJPYnNlcnZlck1hYy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWFjL1Bvd2VyT2JzZXJ2ZXJNYWMuY3BwCkBAIC0zMCw4ICszMCw4IEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUG93ZXJPYnNlcnZlcjo6UG93ZXJPYnNlcnZlcihj
b25zdCBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4mIHBvd2VyT25IYW5kZXIpCi0gICAgOiBtX3Bvd2Vy
T25IYW5kZXIocG93ZXJPbkhhbmRlcikKK1Bvd2VyT2JzZXJ2ZXI6OlBvd2VyT2JzZXJ2ZXIoV1RG
OjpGdW5jdGlvbjx2b2lkKCk+JiYgcG93ZXJPbkhhbmRlcikKKyAgICA6IG1fcG93ZXJPbkhhbmRl
cihXVEZNb3ZlKHBvd2VyT25IYW5kZXIpKQogICAgICwgbV9wb3dlckNvbm5lY3Rpb24oMCkKICAg
ICAsIG1fbm90aWZpY2F0aW9uUG9ydChudWxscHRyKQogICAgICwgbV9ub3RpZmllclJlZmVyZW5j
ZSgwKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bvd2VyT2JzZXJ2
ZXJNYWMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9Qb3dlck9ic2VydmVyTWFjLmgK
aW5kZXggNzVmYThiNDAxMjkwZmQzNWJmYzY1Zjk1MmVlNTg3MWVkMWQ2NmY5YS4uY2I5N2I1ZGU1
ZjY1ZmM3NmRlY2RhZjNkMDE2M2NjNTQ2MWEyZDA5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWFjL1Bvd2VyT2JzZXJ2ZXJNYWMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tYWMvUG93ZXJPYnNlcnZlck1hYy5oCkBAIC0yOCw3ICsyOCw3IEBACiAKICNpbXBv
cnQgPElPS2l0L0lPTWVzc2FnZS5oPgogI2ltcG9ydCA8SU9LaXQvcHdyX21ndC9JT1BNTGliLmg+
Ci0jaW1wb3J0IDxmdW5jdGlvbmFsPgorI2ltcG9ydCA8d3RmL0Z1bmN0aW9uLmg+CiAjaW1wb3J0
IDx3dGYvTm9uY29weWFibGUuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzcsMTMgKzM3
LDEzIEBAIGNsYXNzIFBvd2VyT2JzZXJ2ZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFBv
d2VyT2JzZXJ2ZXIpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIAogcHVibGljOgotICAgIFBv
d2VyT2JzZXJ2ZXIoY29uc3Qgc3RkOjpmdW5jdGlvbjx2b2lkKCk+JiBwb3dlck9uSGFuZGVyKTsK
KyAgICBQb3dlck9ic2VydmVyKFdURjo6RnVuY3Rpb248dm9pZCgpPiYmIHBvd2VyT25IYW5kZXIp
OwogICAgIH5Qb3dlck9ic2VydmVyKCk7CiAKIHByaXZhdGU6CiAgICAgdm9pZCBkaWRSZWNlaXZl
U3lzdGVtUG93ZXJOb3RpZmljYXRpb24oaW9fc2VydmljZV90LCB1aW50MzJfdCBtZXNzYWdlVHlw
ZSwgdm9pZCogbWVzc2FnZUFyZ3VtZW50KTsKIAotICAgIHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiBt
X3Bvd2VyT25IYW5kZXI7CisgICAgV1RGOjpGdW5jdGlvbjx2b2lkKCk+IG1fcG93ZXJPbkhhbmRl
cjsKICAgICBpb19jb25uZWN0X3QgbV9wb3dlckNvbm5lY3Rpb247CiAgICAgSU9Ob3RpZmljYXRp
b25Qb3J0UmVmIG1fbm90aWZpY2F0aW9uUG9ydDsKICAgICBpb19vYmplY3RfdCBtX25vdGlmaWVy
UmVmZXJlbmNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNv
cmVOU1VSTEV4dHJhcy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlTlNV
UkxFeHRyYXMubW0KaW5kZXggNmZiNjAwNWQzYzllZjc3ZTY5N2M5NTE1NjhmNzZmZjgyNzNhNTdm
NC4uYWVkNjA1N2NhNTI3NmQzYTQzYTAyMmE2MjEwYmE0NTExMDM5YWU4MSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVOU1VSTEV4dHJhcy5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29yZU5TVVJMRXh0cmFzLm1tCkBAIC0zMiw3
ICszMiw3IEBACiAjaW1wb3J0ICJXZWJDb3JlTlNTdHJpbmdFeHRyYXMuaCIKICNpbXBvcnQgIldl
YkNvcmVOU1VSTEV4dHJhcy5oIgogI2ltcG9ydCAiV2ViQ29yZVN5c3RlbUludGVyZmFjZS5oIgot
I2ltcG9ydCA8ZnVuY3Rpb25hbD4KKyNpbXBvcnQgPHd0Zi9GdW5jdGlvbi5oPgogI2ltcG9ydCA8
d3RmL0hleE51bWJlci5oPgogI2ltcG9ydCA8d3RmL09iamNSdW50aW1lRXh0cmFzLmg+CiAjaW1w
b3J0IDx3dGYvUmV0YWluUHRyLmg+CkBAIC0yNzEsNyArMjcxLDcgQEAgc3RhdGljIEJPT0wgYWxs
Q2hhcmFjdGVyc0luSUROU2NyaXB0V2hpdGVMaXN0KGNvbnN0IFVDaGFyICpidWZmZXIsIGludDMy
X3QgbGVuZ3QKICAgICByZXR1cm4gWUVTOwogfQogCi1zdGF0aWMgYm9vbCBpc1NlY29uZExldmVs
RG9tYWluTmFtZUFsbG93ZWRCeVRMRFJ1bGVzKGNvbnN0IFVDaGFyKiBidWZmZXIsIGludDMyX3Qg
bGVuZ3RoLCBjb25zdCBzdGQ6OmZ1bmN0aW9uPGJvb2woVUNoYXIpPiYgY2hhcmFjdGVySXNBbGxv
d2VkKQorc3RhdGljIGJvb2wgaXNTZWNvbmRMZXZlbERvbWFpbk5hbWVBbGxvd2VkQnlUTERSdWxl
cyhjb25zdCBVQ2hhciogYnVmZmVyLCBpbnQzMl90IGxlbmd0aCwgY29uc3QgV1RGOjpGdW5jdGlv
bjxib29sKFVDaGFyKT4mIGNoYXJhY3RlcklzQWxsb3dlZCkKIHsKICAgICBBU1NFUlQobGVuZ3Ro
ID4gMCk7CiAKQEAgLTI5NCw3ICsyOTQsNyBAQCBzdGF0aWMgYm9vbCBpc1NlY29uZExldmVsRG9t
YWluTmFtZUFsbG93ZWRCeVRMRFJ1bGVzKGNvbnN0IFVDaGFyKiBidWZmZXIsIGludDMyXwogICAg
IHsgXAogICAgICAgICBzdGF0aWMgY29uc3QgaW50MzJfdCBzdWZmaXhMZW5ndGggPSBzaXplb2Yo
c3VmZml4KSAvIHNpemVvZihzdWZmaXhbMF0pOyBcCiAgICAgICAgIGlmIChsZW5ndGggPiBzdWZm
aXhMZW5ndGggJiYgMCA9PSBtZW1jbXAoYnVmZmVyICsgbGVuZ3RoIC0gc3VmZml4TGVuZ3RoLCBz
dWZmaXgsIHNpemVvZihzdWZmaXgpKSkgXAotICAgICAgICAgICAgcmV0dXJuIGlzU2Vjb25kTGV2
ZWxEb21haW5OYW1lQWxsb3dlZEJ5VExEUnVsZXMoYnVmZmVyLCBsZW5ndGggLSBzdWZmaXhMZW5n
dGgsIGZ1bmN0aW9uKTsgXAorICAgICAgICAgICAgcmV0dXJuIGlzU2Vjb25kTGV2ZWxEb21haW5O
YW1lQWxsb3dlZEJ5VExEUnVsZXMoYnVmZmVyLCBsZW5ndGggLSBzdWZmaXhMZW5ndGgsIFtdKFVD
aGFyIGMpIHsgcmV0dXJuIGZ1bmN0aW9uKGMpOyB9KTsgXAogICAgIH0KIAogc3RhdGljIGJvb2wg
aXNSdXNzaWFuRG9tYWluTmFtZUNoYXJhY3RlcihVQ2hhciBjaCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL0NhcHR1cmVEZXZpY2VNYW5hZ2VyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL0NhcHR1cmVEZXZpY2VNYW5hZ2Vy
LmNwcAppbmRleCA3NTAwNTkxNzg5YzgxM2JmZGNiZTI1ZmVlY2VhMWZmMWRkOTA2YjBkLi42ZTA5
MTY2MThmMjk1NTQzNjBmMWQ4ZWJlMTg3YWI4YmVkZDI1M2RkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9DYXB0dXJlRGV2aWNlTWFuYWdlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vQ2FwdHVyZURldmljZU1hbmFn
ZXIuY3BwCkBAIC0xMTMsNyArMTEzLDcgQEAgc3RhdGljIENhcHR1cmVEZXZpY2VNYW5hZ2VyOjpP
YnNlcnZlclRva2VuIG5leHRPYnNlcnZlclRva2VuKCkKICAgICByZXR1cm4gKytuZXh0VG9rZW47
CiB9CiAKLUNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpPYnNlcnZlclRva2VuIENhcHR1cmVEZXZpY2VN
YW5hZ2VyOjphZGRDYXB0dXJlRGV2aWNlQ2hhbmdlZE9ic2VydmVyKENhcHR1cmVEZXZpY2VDaGFu
Z2VkQ2FsbGJhY2sgb2JzZXJ2ZXIpCitDYXB0dXJlRGV2aWNlTWFuYWdlcjo6T2JzZXJ2ZXJUb2tl
biBDYXB0dXJlRGV2aWNlTWFuYWdlcjo6YWRkQ2FwdHVyZURldmljZUNoYW5nZWRPYnNlcnZlcihD
YXB0dXJlRGV2aWNlQ2hhbmdlZENhbGxiYWNrJiYgb2JzZXJ2ZXIpCiB7CiAgICAgYXV0byB0b2tl
biA9IG5leHRPYnNlcnZlclRva2VuKCk7CiAgICAgbV9vYnNlcnZlcnMuc2V0KHRva2VuLCBXVEZN
b3ZlKG9ic2VydmVyKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9DYXB0dXJlRGV2aWNlTWFuYWdlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vQ2FwdHVyZURldmljZU1hbmFnZXIuaAppbmRleCBkZmYwMDIzNTkyZTRkMTU2
YWI4MWNiMzFiZThkMTVhZDg4ZWNhNjRkLi5kZmM2MGQxYzI0ZWQ2OTlhYjY4MDU3ZmE2NTg3ZTY1
MWYxNTA2OWM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9DYXB0dXJlRGV2aWNlTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL0NhcHR1cmVEZXZpY2VNYW5hZ2VyLmgKQEAgLTM0LDkgKzM0LDkgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBjbGFzcyBDYXB0dXJlRGV2aWNlTWFuYWdlciB7CiBwdWJsaWM6Ci0g
ICAgdXNpbmcgQ2FwdHVyZURldmljZUNoYW5nZWRDYWxsYmFjayA9IHN0ZDo6ZnVuY3Rpb248dm9p
ZCgpPjsKKyAgICB1c2luZyBDYXB0dXJlRGV2aWNlQ2hhbmdlZENhbGxiYWNrID0gV1RGOjpGdW5j
dGlvbjx2b2lkKCk+OwogICAgIHVzaW5nIE9ic2VydmVyVG9rZW4gPSB1aW50MzJfdDsKLSAgICB2
aXJ0dWFsIE9ic2VydmVyVG9rZW4gYWRkQ2FwdHVyZURldmljZUNoYW5nZWRPYnNlcnZlcihDYXB0
dXJlRGV2aWNlQ2hhbmdlZENhbGxiYWNrKTsKKyAgICB2aXJ0dWFsIE9ic2VydmVyVG9rZW4gYWRk
Q2FwdHVyZURldmljZUNoYW5nZWRPYnNlcnZlcihDYXB0dXJlRGV2aWNlQ2hhbmdlZENhbGxiYWNr
JiYpOwogICAgIHZpcnR1YWwgdm9pZCByZW1vdmVDYXB0dXJlRGV2aWNlQ2hhbmdlZE9ic2VydmVy
KE9ic2VydmVyVG9rZW4pOwogCiAgICAgdmlydHVhbCBWZWN0b3I8Q2FwdHVyZURldmljZT4mIGNh
cHR1cmVEZXZpY2VzKCkgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlLmNwcAppbmRleCAzMzI0NmEwMWNk
ZTg0YTM2MmUxYzg2OTE1NDM2ZWIyMGJjNDFlNWU3Li5iMzg2NjI2YWI5M2FiNDRhYzRmODhkM2My
MmU1ZTdlNzUxNWIyZGZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlLmNwcApAQCAtODgyLDcgKzg4Miw3
IEBAIHZvaWQgUmVhbHRpbWVNZWRpYVNvdXJjZTo6c2V0RWNob0NhbmNlbGxhdGlvbihib29sIGVj
aG9DYW5jZWxsYXRpb24pCiAgICAgc2V0dGluZ3NEaWRDaGFuZ2UoKTsKIH0KIAotdm9pZCBSZWFs
dGltZU1lZGlhU291cmNlOjpzY2hlZHVsZURlZmVycmVkVGFzayhzdGQ6OmZ1bmN0aW9uPHZvaWQo
KT4mJiBmdW5jdGlvbikKK3ZvaWQgUmVhbHRpbWVNZWRpYVNvdXJjZTo6c2NoZWR1bGVEZWZlcnJl
ZFRhc2soV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYgZnVuY3Rpb24pCiB7CiAgICAgQVNTRVJUKGZ1
bmN0aW9uKTsKICAgICBjYWxsT25NYWluVGhyZWFkKFt3ZWFrVGhpcyA9IGNyZWF0ZVdlYWtQdHIo
KSwgZnVuY3Rpb24gPSBXVEZNb3ZlKGZ1bmN0aW9uKV0gewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZS5oCmluZGV4
IDA0MTBlZTVjNzI3ZjNjZjJkZTBjOTI0MDI5Y2Y5NWVhMjUyMWVkZjguLjQwMzljOTUzZGM5NWVj
MzljN2Y5MDcwOWIxYWQwYmQ3Y2JlNjBkYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2UuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlLmgKQEAgLTE5MCw4
ICsxOTAsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBjb25zdCBSZWFsdGltZU1lZGlhU291cmNl
Q2FwYWJpbGl0aWVzJiBjYXBhYmlsaXRpZXMoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBjb25z
dCBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MmIHNldHRpbmdzKCkgY29uc3QgPSAwOwogCi0g
ICAgdXNpbmcgU3VjY2Vzc0hhbmRsZXIgPSBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT47Ci0gICAgdXNp
bmcgRmFpbHVyZUhhbmRsZXIgPSBzdGQ6OmZ1bmN0aW9uPHZvaWQoY29uc3QgU3RyaW5nJiBiYWRD
b25zdHJhaW50LCBjb25zdCBTdHJpbmcmIGVycm9yU3RyaW5nKT47CisgICAgdXNpbmcgU3VjY2Vz
c0hhbmRsZXIgPSBXVEY6OkZ1bmN0aW9uPHZvaWQoKT47CisgICAgdXNpbmcgRmFpbHVyZUhhbmRs
ZXIgPSBXVEY6OkZ1bmN0aW9uPHZvaWQoY29uc3QgU3RyaW5nJiBiYWRDb25zdHJhaW50LCBjb25z
dCBTdHJpbmcmIGVycm9yU3RyaW5nKT47CiAgICAgdmlydHVhbCB2b2lkIGFwcGx5Q29uc3RyYWlu
dHMoY29uc3QgTWVkaWFDb25zdHJhaW50cyYsIFN1Y2Nlc3NIYW5kbGVyJiYsIEZhaWx1cmVIYW5k
bGVyJiYpOwogICAgIHN0ZDo6b3B0aW9uYWw8c3RkOjpwYWlyPFN0cmluZywgU3RyaW5nPj4gYXBw
bHlDb25zdHJhaW50cyhjb25zdCBNZWRpYUNvbnN0cmFpbnRzJik7CiAKQEAgLTIxMiw3ICsyMTIs
NyBAQCBwdWJsaWM6CiBwcm90ZWN0ZWQ6CiAgICAgUmVhbHRpbWVNZWRpYVNvdXJjZShjb25zdCBT
dHJpbmcmIGlkLCBUeXBlLCBjb25zdCBTdHJpbmcmIG5hbWUpOwogCi0gICAgdm9pZCBzY2hlZHVs
ZURlZmVycmVkVGFzayhzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4mJik7CisgICAgdm9pZCBzY2hlZHVs
ZURlZmVycmVkVGFzayhXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJik7CiAKICAgICB2aXJ0dWFsIHZv
aWQgYmVnaW5Db25maWd1cmF0aW9uKCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIGNvbW1pdENvbmZp
Z3VyYXRpb24oKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL2lvcy9BVkF1ZGlvU2Vzc2lvbkNhcHR1cmVEZXZpY2VNYW5hZ2VyLm1tIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vaW9zL0FWQXVkaW9TZXNzaW9uQ2FwdHVyZURl
dmljZU1hbmFnZXIubW0KaW5kZXggY2IwMDhjYmJiOTFhYmI2OTVhMGU1ZTc0NDRmYTYwOGY5NDc0
ODEyZS4uMGZkYTEzZjExZTI3ZjRlYmE0NGFiMDllMGVkNDllN2VlODQwMTM4MiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vaW9zL0FWQXVkaW9TZXNzaW9u
Q2FwdHVyZURldmljZU1hbmFnZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vaW9zL0FWQXVkaW9TZXNzaW9uQ2FwdHVyZURldmljZU1hbmFnZXIubW0KQEAgLTQw
LDE4ICs0MCwxOCBAQCBTT0ZUX0xJTktfQ0xBU1MoQVZGb3VuZGF0aW9uLCBBVkF1ZGlvU2Vzc2lv
bikKIHZvaWQqIEF2YWlsYWJsZUlucHV0c0NvbnRleHQgPSAmQXZhaWxhYmxlSW5wdXRzQ29udGV4
dDsKIAogQGludGVyZmFjZSBXZWJBVkF1ZGlvU2Vzc2lvbkF2YWlsYWJsZUlucHV0c0xpc3RlbmVy
IDogTlNPYmplY3QgewotICAgIHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiBfY2FsbGJhY2s7CisgICAg
V1RGOjpGdW5jdGlvbjx2b2lkKCk+IF9jYWxsYmFjazsKIH0KIEBlbmQKIAogQGltcGxlbWVudGF0
aW9uIFdlYkFWQXVkaW9TZXNzaW9uQXZhaWxhYmxlSW5wdXRzTGlzdGVuZXIKLS0gKGlkKWluaXRX
aXRoQ2FsbGJhY2s6KHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiljYWxsYmFjaworLSAoaWQpaW5pdFdp
dGhDYWxsYmFjazooV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYpY2FsbGJhY2sKIHsKICAgICBzZWxm
ID0gW3N1cGVyIGluaXRdOwogICAgIGlmICghc2VsZikKICAgICAgICAgcmV0dXJuIG5pbDsKIAot
ICAgIF9jYWxsYmFjayA9IGNhbGxiYWNrOworICAgIF9jYWxsYmFjayA9IFdURk1vdmUoY2FsbGJh
Y2spOwogICAgIHJldHVybiBzZWxmOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0NvcmVBdWRpb0NhcHR1cmVTb3VyY2Uu
aAppbmRleCBjZTBiZGVlMTY4MjQ3MTBlNzM0ZTAxMWY5MjQ0ZGM5ZDZlYWU3NDE1Li44ZTg5NzQz
MjMwYTAzYjBiN2VhMTVhMTU2ZWE2YmYyYTUzODIyNzQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Db3JlQXVkaW9DYXB0
dXJlU291cmNlLmgKQEAgLTYxLDcgKzYxLDcgQEAgcHVibGljOgogICAgIHZvaWQgYWRkRWNob0Nh
bmNlbGxhdGlvblNvdXJjZShBdWRpb1NhbXBsZURhdGFTb3VyY2UmKTsKICAgICB2b2lkIHJlbW92
ZUVjaG9DYW5jZWxsYXRpb25Tb3VyY2UoQXVkaW9TYW1wbGVEYXRhU291cmNlJik7CiAKLSAgICB1
c2luZyBNaWNyb3Bob25lRGF0YUNhbGxiYWNrID0gc3RkOjpmdW5jdGlvbjx2b2lkKGNvbnN0IE1l
ZGlhVGltZSYgc2FtcGxlVGltZSwgY29uc3QgUGxhdGZvcm1BdWRpb0RhdGEmIGF1ZGlvRGF0YSwg
Y29uc3QgQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYgZGVzY3JpcHRpb24sIHNpemVfdCBzYW1wbGVD
b3VudCk+OworICAgIHVzaW5nIE1pY3JvcGhvbmVEYXRhQ2FsbGJhY2sgPSBXVEY6OkZ1bmN0aW9u
PHZvaWQoY29uc3QgTWVkaWFUaW1lJiBzYW1wbGVUaW1lLCBjb25zdCBQbGF0Zm9ybUF1ZGlvRGF0
YSYgYXVkaW9EYXRhLCBjb25zdCBBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiBkZXNjcmlwdGlvbiwg
c2l6ZV90IHNhbXBsZUNvdW50KT47CiAKICAgICB1aW50NjRfdCBhZGRNaWNyb3Bob25lRGF0YUNv
bnN1bWVyKE1pY3JvcGhvbmVEYXRhQ2FsbGJhY2smJik7CiAgICAgdm9pZCByZW1vdmVNaWNyb3Bo
b25lRGF0YUNvbnN1bWVyKHVpbnQ2NF90KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21vY2svU2Nyb2xsQW5pbWF0b3JNb2NrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21vY2svU2Nyb2xsQW5pbWF0b3JNb2NrLmNwcAppbmRleCBjMDgwMzgxMGVkZDhkNWNmZGRh
ZTRiNzY0OTFhMzg3NzZiMjc2YmZiLi41MjJhZWIyYWNkYjUyODkzYWFkYzY2MjQxMTc5ZDI1NGVi
NDlmOGY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1Njcm9sbEFu
aW1hdG9yTW9jay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9TY3JvbGxB
bmltYXRvck1vY2suY3BwCkBAIC0zNiw3ICszNiw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotU2Nyb2xsQW5pbWF0b3JNb2NrOjpTY3JvbGxBbmltYXRvck1vY2soU2Nyb2xsYWJsZUFyZWEm
IHNjcm9sbGFibGVBcmVhLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoY29uc3QgU3RyaW5nJik+JiYgbG9n
Z2VyKQorU2Nyb2xsQW5pbWF0b3JNb2NrOjpTY3JvbGxBbmltYXRvck1vY2soU2Nyb2xsYWJsZUFy
ZWEmIHNjcm9sbGFibGVBcmVhLCBXVEY6OkZ1bmN0aW9uPHZvaWQoY29uc3QgU3RyaW5nJik+JiYg
bG9nZ2VyKQogICAgIDogU2Nyb2xsQW5pbWF0b3Ioc2Nyb2xsYWJsZUFyZWEpCiAgICAgLCBtX2xv
Z2dlcihXVEZNb3ZlKGxvZ2dlcikpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tb2NrL1Njcm9sbEFuaW1hdG9yTW9jay5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bW9jay9TY3JvbGxBbmltYXRvck1vY2suaAppbmRleCA4NWRjNGY2ZWRjM2U1YjNjY2U0NTM3ODNl
NmUwZDNkOTUxMTI0ZjdkLi4yMzBiOWFmMzFkMDdmYjI4M2I2NmIxZDlmMjY2YjgwMWFjZmMzMjJh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1Njcm9sbEFuaW1hdG9y
TW9jay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svU2Nyb2xsQW5pbWF0b3JN
b2NrLmgKQEAgLTQwLDcgKzQwLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogLy8gdGhlIGludGVy
bmFsIHNldHRpbmcgZW5hYmxlTW9ja1Njcm9sbEFuaW1hdG9yLgogY2xhc3MgU2Nyb2xsQW5pbWF0
b3JNb2NrIGZpbmFsIDogcHVibGljIFNjcm9sbEFuaW1hdG9yIHsKIHB1YmxpYzoKLSAgICBTY3Jv
bGxBbmltYXRvck1vY2soU2Nyb2xsYWJsZUFyZWEmLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoY29uc3Qg
U3RyaW5nJik+JiYpOworICAgIFNjcm9sbEFuaW1hdG9yTW9jayhTY3JvbGxhYmxlQXJlYSYsIFdU
Rjo6RnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcmKT4mJik7CiAgICAgdmlydHVhbCB+U2Nyb2xs
QW5pbWF0b3JNb2NrKCk7CiAKICNpZiBFTkFCTEUoUlVCQkVSX0JBTkRJTkcpCkBAIC02OCw3ICs2
OCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBtb3VzZUV4aXRlZFNjcm9sbGJhcihTY3JvbGxiYXIq
KSBjb25zdCBvdmVycmlkZTsKICAgICB2b2lkIG1vdXNlSXNEb3duSW5TY3JvbGxiYXIoU2Nyb2xs
YmFyKiwgYm9vbCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICBzdGQ6OmZ1bmN0aW9uPHZvaWQoY29u
c3QgU3RyaW5nJik+IG1fbG9nZ2VyOworICAgIFdURjo6RnVuY3Rpb248dm9pZChjb25zdCBTdHJp
bmcmKT4gbV9sb2dnZXI7CiAgICAgU2Nyb2xsYmFyKiBtX3ZlcnRpY2FsU2Nyb2xsYmFyIHsgbnVs
bHB0ciB9OwogICAgIFNjcm9sbGJhciogbV9ob3Jpem9udGFsU2Nyb2xsYmFyIHsgbnVsbHB0ciB9
OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQ29va2ll
U3RvcmFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Db29raWVTdG9yYWdl
LmgKaW5kZXggYzUwNTNjYzkwNWRiNmU4MWJmNmY0ZTVkNjhmOWY1ODg1NjAwMjMyYy4uODFlZmNi
ZjAwNWU4NGQ1M2E1MjRjNjNkYjUzMzZiYmI3MmZjODU5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9Db29raWVTdG9yYWdlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9Db29raWVTdG9yYWdlLmgKQEAgLTI1LDEzICsyNSwxMyBAQAog
CiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgPGZ1bmN0aW9uYWw+CisjaW5jbHVkZSA8d3RmL0Z1
bmN0aW9uLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uOwogCi1XRUJDT1JFX0VYUE9SVCB2b2lkIHN0YXJ0T2JzZXJ2aW5nQ29va2llQ2hhbmdl
cyhjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+JiYp
OworV0VCQ09SRV9FWFBPUlQgdm9pZCBzdGFydE9ic2VydmluZ0Nvb2tpZUNoYW5nZXMoY29uc3Qg
TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgV1RGOjpGdW5jdGlvbjx2b2lkICgpPiYmKTsKIFdFQkNP
UkVfRVhQT1JUIHZvaWQgc3RvcE9ic2VydmluZ0Nvb2tpZUNoYW5nZXMoY29uc3QgTmV0d29ya1N0
b3JhZ2VTZXNzaW9uJik7CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvTmV0d29ya1N0YXRlTm90aWZpZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9OZXR3b3JrU3RhdGVOb3RpZmllci5jcHAKaW5kZXggNTU3NGEzNTgzNGNjNjAx
ZjU4NmVlZDc5NTJjNWFhNDgxMTZmODllZi4uYWQxNWU1Y2YzYzNmZDE1MjZmN2E2NDQ4NTA0MGI1
ZDk5ODJjOTMwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9O
ZXR3b3JrU3RhdGVOb3RpZmllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9OZXR3b3JrU3RhdGVOb3RpZmllci5jcHAKQEAgLTQ4LDcgKzQ4LDcgQEAgTmV0d29ya1N0
YXRlTm90aWZpZXImIG5ldHdvcmtTdGF0ZU5vdGlmaWVyKCkKICAgICByZXR1cm4gbmV0d29ya1N0
YXRlTm90aWZpZXI7CiB9CiAKLXZvaWQgTmV0d29ya1N0YXRlTm90aWZpZXI6OmFkZE5ldHdvcmtT
dGF0ZUNoYW5nZUxpc3RlbmVyKHN0ZDo6ZnVuY3Rpb248dm9pZCAoYm9vbCk+IGxpc3RlbmVyKQor
dm9pZCBOZXR3b3JrU3RhdGVOb3RpZmllcjo6YWRkTmV0d29ya1N0YXRlQ2hhbmdlTGlzdGVuZXIo
V1RGOjpGdW5jdGlvbjx2b2lkIChib29sKT4mJiBsaXN0ZW5lcikKIHsKICAgICBBU1NFUlQobGlz
dGVuZXIpOwogI2lmIFBMQVRGT1JNKElPUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvTmV0d29ya1N0YXRlTm90aWZpZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvTmV0d29ya1N0YXRlTm90aWZpZXIuaAppbmRleCA1MjgyZWMwNjZhYmJh
MjM3MTc2OGE4NGFkOWEyYTUyMDYwYmQzNDJmLi5jM2E0MjkwM2NkMGI4OWNhNjJhMWIxODUyNjEz
ZWVkMGFlODZhMTgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L05ldHdvcmtTdGF0ZU5vdGlmaWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9OZXR3b3JrU3RhdGVOb3RpZmllci5oCkBAIC0yNiw4ICsyNiw4IEBACiAjaWZuZGVmIE5l
dHdvcmtTdGF0ZU5vdGlmaWVyX2gKICNkZWZpbmUgTmV0d29ya1N0YXRlTm90aWZpZXJfaAogCi0j
aW5jbHVkZSA8ZnVuY3Rpb25hbD4KICNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgorI2luY2x1
ZGUgPHd0Zi9GdW5jdGlvbi5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogI2luY2x1
ZGUgPHd0Zi9WZWN0b3IuaD4KIApAQCAtNTksNyArNTksNyBAQCBwdWJsaWM6CiAjaWYgUExBVEZP
Uk0oSU9TKQogICAgIH5OZXR3b3JrU3RhdGVOb3RpZmllcigpOwogI2VuZGlmCi0gICAgdm9pZCBh
ZGROZXR3b3JrU3RhdGVDaGFuZ2VMaXN0ZW5lcihzdGQ6OmZ1bmN0aW9uPHZvaWQgKGJvb2wgaXNP
bkxpbmUpPik7CisgICAgdm9pZCBhZGROZXR3b3JrU3RhdGVDaGFuZ2VMaXN0ZW5lcihXVEY6OkZ1
bmN0aW9uPHZvaWQgKGJvb2wgaXNPbkxpbmUpPiYmKTsKIAogICAgIGJvb2wgb25MaW5lKCkgY29u
c3Q7CiAKQEAgLTY3LDcgKzY3LDcgQEAgcHJpdmF0ZToKICNpZiAhUExBVEZPUk0oSU9TKQogICAg
IGJvb2wgbV9pc09uTGluZTsKICNlbmRpZgotICAgIFZlY3RvcjxzdGQ6OmZ1bmN0aW9uPHZvaWQg
KGJvb2wpPj4gbV9saXN0ZW5lcnM7CisgICAgVmVjdG9yPFdURjo6RnVuY3Rpb248dm9pZCAoYm9v
bCk+PiBtX2xpc3RlbmVyczsKIAogICAgIHZvaWQgbm90aWZ5TmV0d29ya1N0YXRlQ2hhbmdlKCkg
Y29uc3Q7CiAgICAgdm9pZCB1cGRhdGVTdGF0ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uY3BwCmluZGV4IDU1
YmU5Y2NmNDJhNmZjMTFkMTU2N2JjMDdjNGY5MTQ0YWNmNjNiZjMuLjk4ZGEwODJhZWU2MzQ3ODk3
MGJjZTA5Mzk1NmYzM2MxOThhNTY1MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5jcHAKQEAgLTUwLDcgKzUw
LDcgQEAgdm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmRlc3Ryb3lTZXNzaW9uKFNlc3Npb25J
RCBzZXNzaW9uSUQpCiAgICAgZ2xvYmFsU2Vzc2lvbk1hcCgpLnJlbW92ZShzZXNzaW9uSUQpOwog
fQogCi12b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Zm9yRWFjaChzdGQ6OmZ1bmN0aW9uPHZv
aWQoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJik+IGZ1bmN0b3IpCit2b2lk
IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Zm9yRWFjaChjb25zdCBXVEY6OkZ1bmN0aW9uPHZvaWQo
Y29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJik+JiBmdW5jdG9yKQogewogICAg
IGZ1bmN0b3IoZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCkpOwogICAgIGZvciAoYXV0byYgc3RvcmFn
ZVNlc3Npb24gOiBnbG9iYWxTZXNzaW9uTWFwKCkudmFsdWVzKCkpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaAppbmRl
eCBiMDk3NmQ5NzUyMDYyODhlNzE0ZGJjMGZjY2I1NjQ2YjMzNzU4OTE1Li4yODU1Y2I3OWQyMTZh
NmNlNGZkODhlZGE1Mzk0MzIzYmM4NzQ1N2QxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmgKQEAgLTI3LDcgKzI3
LDcgQEAKIAogI2luY2x1ZGUgIkNyZWRlbnRpYWxTdG9yYWdlLmgiCiAjaW5jbHVkZSAiU2Vzc2lv
bklELmgiCi0jaW5jbHVkZSA8ZnVuY3Rpb25hbD4KKyNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4K
ICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5o
PgogCkBAIC02Miw3ICs2Miw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMg
dm9pZCBlbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKFNlc3Npb25JRCwgY29uc3QgU3RyaW5n
JiBpZGVudGlmaWVyQmFzZSA9IFN0cmluZygpKTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMg
dm9pZCBlbnN1cmVTZXNzaW9uKFNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyQmFz
ZSA9IFN0cmluZygpKTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9pZCBkZXN0cm95U2Vz
c2lvbihTZXNzaW9uSUQpOwotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIGZvckVhY2go
c3RkOjpmdW5jdGlvbjx2b2lkKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYp
Pik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQgZm9yRWFjaChjb25zdCBXVEY6OkZ1
bmN0aW9uPHZvaWQoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJik+Jik7CiAK
ICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9pZCBzd2l0Y2hUb05ld1Rlc3RpbmdTZXNzaW9u
KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvQ29v
a2llU3RvcmFnZUNGTmV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2Yv
Q29va2llU3RvcmFnZUNGTmV0LmNwcAppbmRleCA2MTliMDc4OTA5ZDMxYmQ0NGMxM2NjZmM5MzJh
M2NkZGRiYzhjYTUzLi5mM2NlMjM4ZjVlZTk1NDJiMjJiOWZkOTFjN2U3ZGM5NGU1Y2QyODBmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0Nvb2tpZVN0b3Jh
Z2VDRk5ldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Db29r
aWVTdG9yYWdlQ0ZOZXQuY3BwCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiQ29va2llU3Rv
cmFnZS5oIgogCiAjaW5jbHVkZSAiTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmgiCisjaW5jbHVkZSA8
d3RmL0Z1bmN0aW9uLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYv
TWFpblRocmVhZC5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgpAQCAtNDMsOSAr
NDQsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICNpZiBQTEFURk9STShXSU4pCiAKLXN0YXRp
YyBIYXNoTWFwPENGSFRUUENvb2tpZVN0b3JhZ2VSZWYsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4+
JiBjb29raWVDaGFuZ2VDYWxsYmFja01hcCgpCitzdGF0aWMgSGFzaE1hcDxDRkhUVFBDb29raWVT
dG9yYWdlUmVmLCBXVEY6OkZ1bmN0aW9uPHZvaWQgKCk+PiYgY29va2llQ2hhbmdlQ2FsbGJhY2tN
YXAoKQogewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoTWFwPENGSFRUUENvb2tpZVN0
b3JhZ2VSZWYsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4+PiBtYXA7CisgICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPEhhc2hNYXA8Q0ZIVFRQQ29va2llU3RvcmFnZVJlZiwgV1RGOjpGdW5jdGlvbjx2
b2lkICgpPj4+IG1hcDsKICAgICByZXR1cm4gbWFwOwogfQogCkBAIC02OCw3ICs2OSw3IEBAIHN0
YXRpYyBpbmxpbmUgQ0ZSdW5Mb29wUmVmIGNvb2tpZVN0b3JhZ2VPYnNlcnZlclJ1bkxvb3AoKQog
ICAgIHJldHVybiBsb2FkZXJSdW5Mb29wKCk7CiB9CiAKLXZvaWQgc3RhcnRPYnNlcnZpbmdDb29r
aWVDaGFuZ2VzKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc3RvcmFnZVNlc3Npb24sIHN0
ZDo6ZnVuY3Rpb248dm9pZCAoKT4mJiBjYWxsYmFjaykKK3ZvaWQgc3RhcnRPYnNlcnZpbmdDb29r
aWVDaGFuZ2VzKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc3RvcmFnZVNlc3Npb24sIFdU
Rjo6RnVuY3Rpb248dm9pZCAoKT4mJiBjYWxsYmFjaykKIHsKICAgICBBU1NFUlQoaXNNYWluVGhy
ZWFkKCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nm
L1NvY2tldFN0cmVhbUhhbmRsZUltcGxDRk5ldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2NmL1NvY2tldFN0cmVhbUhhbmRsZUltcGxDRk5ldC5jcHAKaW5kZXggZWQ0MTA5
YWU2ZDc2OTgwMTFlMzRlMjUyZDI2NGY2ODE5MTE5YzlmYS4uNDE3NjgwMDhkODMxNWNjZTljYWQ2
YzQ2MmE0MGQ0ZDMyMWNjZmU0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jZi9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsQ0ZOZXQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvU29ja2V0U3RyZWFtSGFuZGxlSW1wbENGTmV0LmNw
cApAQCAtMTQ0LDcgKzE0NCw3IEBAIENGU3RyaW5nUmVmIFNvY2tldFN0cmVhbUhhbmRsZUltcGw6
OmNvcHlQQUNFeGVjdXRpb25EZXNjcmlwdGlvbih2b2lkKikKICAgICByZXR1cm4gQ0ZTVFIoIldl
YlNvY2tldCBwcm94eSBQQUMgZmlsZSBleGVjdXRpb24iKTsKIH0KIAotc3RhdGljIHZvaWQgY2Fs
bE9uTWFpblRocmVhZEFuZFdhaXQoc3RkOjpmdW5jdGlvbjx2b2lkKCk+IGZ1bmN0aW9uKQorc3Rh
dGljIHZvaWQgY2FsbE9uTWFpblRocmVhZEFuZFdhaXQoV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYg
ZnVuY3Rpb24pCiB7CiAgICAgaWYgKGlzTWFpblRocmVhZCgpKSB7CiAgICAgICAgIGZ1bmN0aW9u
KCk7CkBAIC0xNTYsNyArMTU2LDcgQEAgc3RhdGljIHZvaWQgY2FsbE9uTWFpblRocmVhZEFuZFdh
aXQoc3RkOjpmdW5jdGlvbjx2b2lkKCk+IGZ1bmN0aW9uKQogCiAgICAgYm9vbCBpc0ZpbmlzaGVk
ID0gZmFsc2U7CiAKLSAgICBjYWxsT25NYWluVGhyZWFkKFsmXSB7CisgICAgY2FsbE9uTWFpblRo
cmVhZChbJiwgZnVuY3Rpb24gPSBXVEZNb3ZlKGZ1bmN0aW9uKV0gewogICAgICAgICBmdW5jdGlv
bigpOwogCiAgICAgICAgIHN0ZDo6bG9ja19ndWFyZDxMb2NrPiBsb2NrKG11dGV4KTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0Nvb2tpZVN0b3JhZ2VN
YWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9Db29raWVTdG9yYWdl
TWFjLm1tCmluZGV4IGU3ODJiMDY2ZTRlYTk2ODVhNDhhZGI3OWU4MWUwMzg1MDlkYzQ2Y2IuLmUx
NGUzZDE0MGZiMWQ1NzI1YTJlNzZmYzU0ZTk5ZGJjZDkxNjM0YjUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0Nvb2tpZVN0b3JhZ2VNYWMubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvQ29va2llU3RvcmFnZU1hYy5tbQpA
QCAtMjMsMTkgKzIzLDIwIEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKICAqLwogCi0jaW5jbHVkZSAiY29u
ZmlnLmgiCi0jaW5jbHVkZSAiQ29va2llU3RvcmFnZS5oIgorI2ltcG9ydCAiY29uZmlnLmgiCisj
aW1wb3J0ICJDb29raWVTdG9yYWdlLmgiCiAKICNpbXBvcnQgIldlYkNvcmVTeXN0ZW1JbnRlcmZh
Y2UuaCIKKyNpbXBvcnQgPHd0Zi9GdW5jdGlvbi5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29y
ZTsKIAogQGludGVyZmFjZSBXZWJDb29raWVTdG9yYWdlT2JqQ0FkYXB0ZXIgOiBOU09iamVjdCB7
Ci0gICAgc3RkOjpmdW5jdGlvbjx2b2lkICgpPiBtX2Nvb2tpZUNoYW5nZUNhbGxiYWNrOworICAg
IFdURjo6RnVuY3Rpb248dm9pZCAoKT4gbV9jb29raWVDaGFuZ2VDYWxsYmFjazsKIH0KIC0odm9p
ZClub3RpZnlDb29raWVzQ2hhbmdlZE9uTWFpblRocmVhZDsKIC0odm9pZCljb29raWVzQ2hhbmdl
ZE5vdGlmaWNhdGlvbkhhbmRsZXI6KE5TTm90aWZpY2F0aW9uICopbm90aWZpY2F0aW9uOwotLSh2
b2lkKXN0YXJ0TGlzdGVuaW5nRm9yQ29va2llQ2hhbmdlTm90aWZpY2F0aW9uc1dpdGhDYWxsYmFj
azooc3RkOjpmdW5jdGlvbjx2b2lkICgpPiYmKWNhbGxiYWNrOworLSh2b2lkKXN0YXJ0TGlzdGVu
aW5nRm9yQ29va2llQ2hhbmdlTm90aWZpY2F0aW9uc1dpdGhDYWxsYmFjazooV1RGOjpGdW5jdGlv
bjx2b2lkICgpPiYmKWNhbGxiYWNrOwogLSh2b2lkKXN0b3BMaXN0ZW5pbmdGb3JDb29raWVDaGFu
Z2VOb3RpZmljYXRpb25zOwogQGVuZAogCkBAIC01Myw3ICs1NCw3IEBAIC0odm9pZCljb29raWVz
Q2hhbmdlZE5vdGlmaWNhdGlvbkhhbmRsZXI6KE5TTm90aWZpY2F0aW9uICopbm90aWZpY2F0aW9u
CiAgICAgW3NlbGYgcGVyZm9ybVNlbGVjdG9yT25NYWluVGhyZWFkOkBzZWxlY3Rvcihub3RpZnlD
b29raWVzQ2hhbmdlZE9uTWFpblRocmVhZCkgd2l0aE9iamVjdDpuaWwgd2FpdFVudGlsRG9uZTpG
QUxTRV07CiB9CiAKLS0odm9pZClzdGFydExpc3RlbmluZ0ZvckNvb2tpZUNoYW5nZU5vdGlmaWNh
dGlvbnNXaXRoQ2FsbGJhY2s6KHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4mJiljYWxsYmFjaworLSh2
b2lkKXN0YXJ0TGlzdGVuaW5nRm9yQ29va2llQ2hhbmdlTm90aWZpY2F0aW9uc1dpdGhDYWxsYmFj
azooV1RGOjpGdW5jdGlvbjx2b2lkICgpPiYmKWNhbGxiYWNrCiB7CiAgICAgQVNTRVJUKCFtX2Nv
b2tpZUNoYW5nZUNhbGxiYWNrKTsKICAgICBtX2Nvb2tpZUNoYW5nZUNhbGxiYWNrID0gV1RGTW92
ZShjYWxsYmFjayk7CkBAIC03Miw3ICs3Myw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3Rh
dGljIFdlYkNvb2tpZVN0b3JhZ2VPYmpDQWRhcHRlciAqY29va2llU3RvcmFnZUFkYXB0ZXI7CiAK
LXZvaWQgc3RhcnRPYnNlcnZpbmdDb29raWVDaGFuZ2VzKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vz
c2lvbiYsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4mJiBjYWxsYmFjaykKK3ZvaWQgc3RhcnRPYnNl
cnZpbmdDb29raWVDaGFuZ2VzKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIFdURjo6RnVu
Y3Rpb248dm9pZCAoKT4mJiBjYWxsYmFjaykKIHsKICAgICBpZiAoIWNvb2tpZVN0b3JhZ2VBZGFw
dGVyKQogICAgICAgICBjb29raWVTdG9yYWdlQWRhcHRlciA9IFtbV2ViQ29va2llU3RvcmFnZU9i
akNBZGFwdGVyIGFsbG9jXSBpbml0XTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvc291cC9Db29raWVTdG9yYWdlU291cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL3NvdXAvQ29va2llU3RvcmFnZVNvdXAuY3BwCmluZGV4IGVhNmE2YjI5
Mjc4MDkzNWIxODNkYWM2ZjE0MWQ5NjlmM2Q1MzFhMGQuLjQ1ZDdhOTEzMDkzYTNkNWZkOTY5MDI3
Njc3MWZhNDA0YWNmNDAzZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvc291cC9Db29raWVTdG9yYWdlU291cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9zb3VwL0Nvb2tpZVN0b3JhZ2VTb3VwLmNwcApAQCAtMjMsNyArMjMsNyBA
QAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXZvaWQgc3RhcnRPYnNlcnZpbmdDb29raWVDaGFu
Z2VzKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4m
JikKK3ZvaWQgc3RhcnRPYnNlcnZpbmdDb29raWVDaGFuZ2VzKGNvbnN0IE5ldHdvcmtTdG9yYWdl
U2Vzc2lvbiYsIFdURjo6RnVuY3Rpb248dm9pZCAoKT4mJikKIHsKICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
c291cC9Tb3VwTmV0d29ya1Nlc3Npb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9zb3VwL1NvdXBOZXR3b3JrU2Vzc2lvbi5jcHAKaW5kZXggN2MxN2U2MDRlNzhiYjk1YjRk
ZmE0MDA3ZjAxMjZkZTEyOWJhZjM0YS4uYTNkODQ4MDg0OGUzOTFhZjgyMDIxMDRmMzZjYWU5YzRk
YjViOTEzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3Vw
L1NvdXBOZXR3b3JrU2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9zb3VwL1NvdXBOZXR3b3JrU2Vzc2lvbi5jcHAKQEAgLTI5Myw3ICsyOTMsNyBAQCB2b2lk
IFNvdXBOZXR3b3JrU2Vzc2lvbjo6c2V0U2hvdWxkSWdub3JlVExTRXJyb3JzKGJvb2wgaWdub3Jl
VExTRXJyb3JzKQogICAgIGdJZ25vcmVUTFNFcnJvcnMgPSBpZ25vcmVUTFNFcnJvcnM7CiB9CiAK
LXZvaWQgU291cE5ldHdvcmtTZXNzaW9uOjpjaGVja1RMU0Vycm9ycyhTb3VwUmVxdWVzdCogc291
cFJlcXVlc3QsIFNvdXBNZXNzYWdlKiBtZXNzYWdlLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKGNvbnN0
IFJlc291cmNlRXJyb3ImKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgU291cE5ldHdvcmtT
ZXNzaW9uOjpjaGVja1RMU0Vycm9ycyhTb3VwUmVxdWVzdCogc291cFJlcXVlc3QsIFNvdXBNZXNz
YWdlKiBtZXNzYWdlLCBXVEY6OkZ1bmN0aW9uPHZvaWQgKGNvbnN0IFJlc291cmNlRXJyb3ImKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAoZ0lnbm9yZVRMU0Vycm9ycykgewogICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcih7IH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9zb3VwL1NvdXBOZXR3b3JrU2Vzc2lvbi5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvdXBOZXR3b3JrU2Vzc2lvbi5oCmluZGV4IDkwOGI2
Y2I2ZDVlNTQ2ZTgyMWY2ZTc0ODk4YmU4ZWJmMWFkOTZiNDAuLmNkODEwZjEyMTU3NjkxYzdjZWVi
MjZkMzc3ZjExNjhhZDJkZjNjZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvc291cC9Tb3VwTmV0d29ya1Nlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL3NvdXAvU291cE5ldHdvcmtTZXNzaW9uLmgKQEAgLTI2LDggKzI2LDgg
QEAKICNpZm5kZWYgU291cE5ldHdvcmtTZXNzaW9uX2gKICNkZWZpbmUgU291cE5ldHdvcmtTZXNz
aW9uX2gKIAotI2luY2x1ZGUgPGZ1bmN0aW9uYWw+CiAjaW5jbHVkZSA8Z2xpYi1vYmplY3QuaD4K
KyNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4K
ICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL2dsaWIvR1JlZlB0ci5oPgpA
QCAtNjUsNyArNjUsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRBY2NlcHRMYW5ndWFnZXMoY29u
c3QgQ1N0cmluZyYpOwogCiAgICAgc3RhdGljIHZvaWQgc2V0U2hvdWxkSWdub3JlVExTRXJyb3Jz
KGJvb2wpOwotICAgIHN0YXRpYyB2b2lkIGNoZWNrVExTRXJyb3JzKFNvdXBSZXF1ZXN0KiwgU291
cE1lc3NhZ2UqLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKGNvbnN0IFJlc291cmNlRXJyb3ImKT4mJik7
CisgICAgc3RhdGljIHZvaWQgY2hlY2tUTFNFcnJvcnMoU291cFJlcXVlc3QqLCBTb3VwTWVzc2Fn
ZSosIFdURjo6RnVuY3Rpb248dm9pZCAoY29uc3QgUmVzb3VyY2VFcnJvciYpPiYmKTsKICAgICBz
dGF0aWMgdm9pZCBhbGxvd1NwZWNpZmljSFRUUFNDZXJ0aWZpY2F0ZUZvckhvc3QoY29uc3QgQ2Vy
dGlmaWNhdGVJbmZvJiwgY29uc3QgU3RyaW5nJiBob3N0KTsKIAogICAgIHN0YXRpYyB2b2lkIHNl
dEN1c3RvbVByb3RvY29sUmVxdWVzdFR5cGUoR1R5cGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZS5jcHAKaW5kZXggODZjNGQ3YTgyOTRmOWJiOTkyODc3
OTQyNjViNmNjYWI2MjQzZDVlOS4uNzU1ZGU3OWY1MTE2OTk4Njg3NDM0MDdmYmFmZmYyZGYxZGI4
NDg4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFi
YXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2Uu
Y3BwCkBAIC01MTYsMTkgKzUxNiwxOSBAQCBib29sIFNRTGl0ZURhdGFiYXNlOjp0dXJuT25JbmNy
ZW1lbnRhbEF1dG9WYWN1dW0oKQogCiBzdGF0aWMgdm9pZCBkZXN0cm95Q29sbGF0aW9uRnVuY3Rp
b24odm9pZCogYXJnKQogewotICAgIGF1dG8gZiA9IHN0YXRpY19jYXN0PHN0ZDo6ZnVuY3Rpb248
aW50KGludCwgY29uc3Qgdm9pZCosIGludCwgY29uc3Qgdm9pZCopPio+KGFyZyk7CisgICAgYXV0
byBmID0gc3RhdGljX2Nhc3Q8V1RGOjpGdW5jdGlvbjxpbnQoaW50LCBjb25zdCB2b2lkKiwgaW50
LCBjb25zdCB2b2lkKik+Kj4oYXJnKTsKICAgICBkZWxldGUgZjsKIH0KIAogc3RhdGljIGludCBj
YWxsQ29sbGF0aW9uRnVuY3Rpb24odm9pZCogYXJnLCBpbnQgYUxlbmd0aCwgY29uc3Qgdm9pZCog
YSwgaW50IGJMZW5ndGgsIGNvbnN0IHZvaWQqIGIpCiB7Ci0gICAgYXV0byBmID0gc3RhdGljX2Nh
c3Q8c3RkOjpmdW5jdGlvbjxpbnQoaW50LCBjb25zdCB2b2lkKiwgaW50LCBjb25zdCB2b2lkKik+
Kj4oYXJnKTsKKyAgICBhdXRvIGYgPSBzdGF0aWNfY2FzdDxXVEY6OkZ1bmN0aW9uPGludChpbnQs
IGNvbnN0IHZvaWQqLCBpbnQsIGNvbnN0IHZvaWQqKT4qPihhcmcpOwogICAgIHJldHVybiAoKmYp
KGFMZW5ndGgsIGEsIGJMZW5ndGgsIGIpOwogfQogCi12b2lkIFNRTGl0ZURhdGFiYXNlOjpzZXRD
b2xsYXRpb25GdW5jdGlvbihjb25zdCBTdHJpbmcmIGNvbGxhdGlvbk5hbWUsIHN0ZDo6ZnVuY3Rp
b248aW50KGludCwgY29uc3Qgdm9pZCosIGludCwgY29uc3Qgdm9pZCopPiBjb2xsYXRpb25GdW5j
dGlvbikKK3ZvaWQgU1FMaXRlRGF0YWJhc2U6OnNldENvbGxhdGlvbkZ1bmN0aW9uKGNvbnN0IFN0
cmluZyYgY29sbGF0aW9uTmFtZSwgV1RGOjpGdW5jdGlvbjxpbnQoaW50LCBjb25zdCB2b2lkKiwg
aW50LCBjb25zdCB2b2lkKik+JiYgY29sbGF0aW9uRnVuY3Rpb24pCiB7Ci0gICAgYXV0byBmdW5j
dGlvbk9iamVjdCA9IG5ldyBzdGQ6OmZ1bmN0aW9uPGludChpbnQsIGNvbnN0IHZvaWQqLCBpbnQs
IGNvbnN0IHZvaWQqKT4oY29sbGF0aW9uRnVuY3Rpb24pOworICAgIGF1dG8gZnVuY3Rpb25PYmpl
Y3QgPSBuZXcgV1RGOjpGdW5jdGlvbjxpbnQoaW50LCBjb25zdCB2b2lkKiwgaW50LCBjb25zdCB2
b2lkKik+KFdURk1vdmUoY29sbGF0aW9uRnVuY3Rpb24pKTsKICAgICBzcWxpdGUzX2NyZWF0ZV9j
b2xsYXRpb25fdjIobV9kYiwgY29sbGF0aW9uTmFtZS51dGY4KCkuZGF0YSgpLCBTUUxJVEVfVVRG
OCwgZnVuY3Rpb25PYmplY3QsIGNhbGxDb2xsYXRpb25GdW5jdGlvbiwgZGVzdHJveUNvbGxhdGlv
bkZ1bmN0aW9uKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3Fs
L1NRTGl0ZURhdGFiYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0
YWJhc2UuaAppbmRleCBlZTliYTJiZTFlMjUwNDVmOWMzYTYxNWU2NmU3N2JmZjc1M2M0Mjg4Li4z
NGRiNjk0Y2MzM2NmMmUwNjE1ZjhjNjZlMTViMWMxOWNjOTFiOTk5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2UuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2UuaApAQCAtMTI1LDcgKzEyNSw3IEBAIHB1
YmxpYzoKICAgICBlbnVtIEF1dG9WYWN1dW1QcmFnbWEgeyBBdXRvVmFjdXVtTm9uZSA9IDAsIEF1
dG9WYWN1dW1GdWxsID0gMSwgQXV0b1ZhY3V1bUluY3JlbWVudGFsID0gMiB9OwogICAgIGJvb2wg
dHVybk9uSW5jcmVtZW50YWxBdXRvVmFjdXVtKCk7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IHNldENvbGxhdGlvbkZ1bmN0aW9uKGNvbnN0IFN0cmluZyYgY29sbGF0aW9uTmFtZSwgc3RkOjpm
dW5jdGlvbjxpbnQoaW50LCBjb25zdCB2b2lkKiwgaW50LCBjb25zdCB2b2lkKik+KTsKKyAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIHNldENvbGxhdGlvbkZ1bmN0aW9uKGNvbnN0IFN0cmluZyYgY29s
bGF0aW9uTmFtZSwgV1RGOjpGdW5jdGlvbjxpbnQoaW50LCBjb25zdCB2b2lkKiwgaW50LCBjb25z
dCB2b2lkKik+JiYpOwogICAgIHZvaWQgcmVtb3ZlQ29sbGF0aW9uRnVuY3Rpb24oY29uc3QgU3Ry
aW5nJiBjb2xsYXRpb25OYW1lKTsKIAogICAgIC8vIFNldCB0aGlzIGZsYWcgdG8gYWxsb3cgYWNj
ZXNzIGZyb20gbXVsdGlwbGUgdGhyZWFkcy4gIE5vdCBhbGwgbXVsdGktdGhyZWFkZWQgYWNjZXNz
ZXMgYXJlIHNhZmUhCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TGF5ZXJCYWNraW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJh
Y2tpbmcuY3BwCmluZGV4IDQ2YmFlZDEwMzRiMjRlNjNiNThlMzk3NjRkOTczNzFhN2E0ZjkyOTMu
LjI5OGJlMDJkOGQxZWJmNzNkNzQyOWFhMTdlYzhlYTBjNjBhZGYyM2MgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCkBAIC0yMDg5LDcgKzIw
ODksNyBAQCBib29sIFJlbmRlckxheWVyQmFja2luZzo6aXNTaW1wbGVDb250YWluZXJDb21wb3Np
dGluZ0xheWVyKFBhaW50ZWRDb250ZW50c0luZm8mCiAvLyBSZXR1cm5pbmcgdHJ1ZSBzdG9wcyB0
aGUgdHJhdmVyc2FsLgogZW51bSBjbGFzcyBMYXllclRyYXZlcnNhbCB7IENvbnRpbnVlLCBTdG9w
IH07CiAKLXN0YXRpYyBMYXllclRyYXZlcnNhbCB0cmF2ZXJzZVZpc2libGVOb25Db21wb3NpdGVk
RGVzY2VuZGFudExheWVycyhSZW5kZXJMYXllciYgcGFyZW50LCBzdGQ6OmZ1bmN0aW9uPExheWVy
VHJhdmVyc2FsIChjb25zdCBSZW5kZXJMYXllciYpPiBsYXllckZ1bmMpCitzdGF0aWMgTGF5ZXJU
cmF2ZXJzYWwgdHJhdmVyc2VWaXNpYmxlTm9uQ29tcG9zaXRlZERlc2NlbmRhbnRMYXllcnMoUmVu
ZGVyTGF5ZXImIHBhcmVudCwgY29uc3QgV1RGOjpGdW5jdGlvbjxMYXllclRyYXZlcnNhbCAoY29u
c3QgUmVuZGVyTGF5ZXImKT4mIGxheWVyRnVuYykKIHsKICAgICAvLyBGSVhNRTogV2Ugc2hvdWxk
bid0IGJlIGNhbGxlZCB3aXRoIGEgc3RhbGUgei1vcmRlciBsaXN0cy4gU2VlIGJ1ZyA4NTUxMi4K
ICAgICBwYXJlbnQudXBkYXRlTGF5ZXJMaXN0c0lmTmVlZGVkKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHAKaW5kZXggY2NhNDc0ODY0MjE4ZjBiNzgzNDk5YTk3
ZTM0NGVkOTRhYzljYzhlNS4uMzVhOGQ2NGFiYTgzYzFmZjJiODJiOGY3YmUzMjEzYTFhNGE3N2Q5
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcApAQCAtMjg2
LDcgKzI4Niw3IEBAIExheW91dFJlY3QgUmVuZGVyTGlzdEJveDo6aXRlbUJvdW5kaW5nQm94UmVj
dChjb25zdCBMYXlvdXRQb2ludCYgYWRkaXRpb25hbE9mZnNlCiAgICAgcmV0dXJuIExheW91dFJl
Y3QoeCwgeSwgY29udGVudFdpZHRoKCksIGl0ZW1IZWlnaHQoKSk7CiB9CiAKLXZvaWQgUmVuZGVy
TGlzdEJveDo6cGFpbnRJdGVtKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2lu
dCYgcGFpbnRPZmZzZXQsIFBhaW50RnVuY3Rpb24gcGFpbnRGdW5jdGlvbikKK3ZvaWQgUmVuZGVy
TGlzdEJveDo6cGFpbnRJdGVtKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2lu
dCYgcGFpbnRPZmZzZXQsIGNvbnN0IFBhaW50RnVuY3Rpb24mIHBhaW50RnVuY3Rpb24pCiB7CiAg
ICAgaW50IGxpc3RJdGVtc1NpemUgPSBudW1JdGVtcygpOwogICAgIGludCBmaXJzdFZpc2libGVJ
dGVtID0gbV9pbmRleE9mRmlyc3RWaXNpYmxlSXRlbUluc2lkZVBhZGRpbmdUb3BBcmVhLnZhbHVl
X29yKG1faW5kZXhPZmZzZXQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckxpc3RCb3guaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94
LmgKaW5kZXggYjE2NTRkZmI2MzNjODJlYTkxMjRkMzEzYzRiZWJkZThlMDc0N2JhMi4uMjQ4OThj
ZGRiNDc2NDY4MjkyMWI4YWRmZDZlMGQ2MmZjOWNlMTM0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGlzdEJveC5oCkBAIC0xNDMsOCArMTQzLDggQEAgcHJpdmF0ZToKICAgICAv
LyBOT1RFOiBUaGlzIHNob3VsZCBvbmx5IGJlIGNhbGxlZCBieSB0aGUgb3ZlcnJpZGVuIHNldFNj
cm9sbE9mZnNldCBmcm9tIFNjcm9sbGFibGVBcmVhLgogICAgIHZvaWQgc2Nyb2xsVG8oaW50IG5l
d09mZnNldCk7CiAKLSAgICB1c2luZyBQYWludEZ1bmN0aW9uID0gc3RkOjpmdW5jdGlvbjx2b2lk
KFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50JiwgaW50IGxpc3RJdGVtSW5kZXgpPjsKLSAg
ICB2b2lkIHBhaW50SXRlbShQYWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYsIFBhaW50RnVu
Y3Rpb24pOworICAgIHVzaW5nIFBhaW50RnVuY3Rpb24gPSBXVEY6OkZ1bmN0aW9uPHZvaWQoUGFp
bnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmLCBpbnQgbGlzdEl0ZW1JbmRleCk+OworICAgIHZv
aWQgcGFpbnRJdGVtKFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50JiwgY29uc3QgUGFpbnRG
dW5jdGlvbiYpOwogCiAgICAgdm9pZCBzZXRIYXNWZXJ0aWNhbFNjcm9sbGJhcihib29sIGhhc1Nj
cm9sbGJhcik7CiAgICAgUmVmPFNjcm9sbGJhcj4gY3JlYXRlU2Nyb2xsYmFyKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbGluZS9CcmVha2luZ0NvbnRleHQuaCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9saW5lL0JyZWFraW5nQ29udGV4dC5oCmluZGV4IDEyNmZk
M2Q0ZWNmOTlkMDQzNGJhNzEzMmE1NzliZjQ1MThmZGI4YTEuLjJkODNmMDc3YTFiY2I2MTZjNjky
YzA1NWM3N2I4N2Y0ZjFjNzVmMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9saW5lL0JyZWFraW5nQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9s
aW5lL0JyZWFraW5nQ29udGV4dC5oCkBAIC0zOCw2ICszOCw3IEBACiAjaW5jbHVkZSAiUmVuZGVy
UnVieVJ1bi5oIgogI2luY2x1ZGUgIlJlbmRlclNWR0lubGluZVRleHQuaCIKICNpbmNsdWRlICJU
cmFpbGluZ09iamVjdHMuaCIKKyNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KICNpbmNsdWRlIDx3
dGYvT3B0aW9uYWwuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdWaWV3Lmg+CiAjaW5jbHVk
ZSA8d3RmL3VuaWNvZGUvQ2hhcmFjdGVyTmFtZXMuaD4KQEAgLTE5MSw3ICsxOTIsNyBAQCBwcml2
YXRlOgogICAgICAgICAgICAgdGhpcy0+YXBwZW5kKGluaXRpYWwpOwogICAgICAgICB9CiAKLSAg
ICAgICAgdm9pZCBwdXNoKHN0ZDo6ZnVuY3Rpb248dm9pZChJbmxpbmVJdGVyYXRvciYgbW9kaWZ5
TWUpPiB1cGRhdGVyKQorICAgICAgICB2b2lkIHB1c2goY29uc3QgV1RGOjpGdW5jdGlvbjx2b2lk
KElubGluZUl0ZXJhdG9yJiBtb2RpZnlNZSk+JiB1cGRhdGVyKQogICAgICAgICB7CiAgICAgICAg
ICAgICBBU1NFUlQoIXRoaXMtPmlzRW1wdHkoKSk7CiAgICAgICAgICAgICBpZiAobV9jYXBhY2l0
eSAhPSAxKQpAQCAtMjAxLDcgKzIwMiw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgdGhp
cy0+cmVzaXplKG1fY2FwYWNpdHkpOwogICAgICAgICB9CiAKLSAgICAgICAgdm9pZCB1cGRhdGUo
c3RkOjpmdW5jdGlvbjx2b2lkKElubGluZUl0ZXJhdG9yJiBtb2RpZnlNZSk+IHVwZGF0ZXIpCisg
ICAgICAgIHZvaWQgdXBkYXRlKGNvbnN0IFdURjo6RnVuY3Rpb248dm9pZChJbmxpbmVJdGVyYXRv
ciYgbW9kaWZ5TWUpPiYgdXBkYXRlcikKICAgICAgICAgewogICAgICAgICAgICAgQVNTRVJUKCF0
aGlzLT5pc0VtcHR5KCkpOwogICAgICAgICAgICAgdXBkYXRlcih0aGlzLT5hdCgwKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL1dvcmtlci5jcHAKaW5kZXggOWM5ODc1ZjBmNTc3ODZhZjJiZGYzZmY4M2Y1Yjc0
ZjI4YTFiYTIxMy4uNjZlOGRhZmE5ODc4NzcxMTY4NjM1MTMyNDc2ZTRhNzA0NWJkMTMzZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvV29ya2VyLmNwcApAQCAtNTksNyArNTksNyBAQCBpbmxpbmUgV29ya2Vy
OjpXb3JrZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgSlNDOjpSdW50aW1lRmxh
Z3MgcnVudGltZQogewogICAgIGlmICghYWxsV29ya2VycykgewogICAgICAgICBhbGxXb3JrZXJz
ID0gbmV3IEhhc2hTZXQ8V29ya2VyKj47Ci0gICAgICAgIG5ldHdvcmtTdGF0ZU5vdGlmaWVyKCku
YWRkTmV0d29ya1N0YXRlQ2hhbmdlTGlzdGVuZXIobmV0d29ya1N0YXRlQ2hhbmdlZCk7CisgICAg
ICAgIG5ldHdvcmtTdGF0ZU5vdGlmaWVyKCkuYWRkTmV0d29ya1N0YXRlQ2hhbmdlTGlzdGVuZXIo
W10gKGJvb2wgaXNPbkxpbmUpIHsgbmV0d29ya1N0YXRlQ2hhbmdlZChpc09uTGluZSk7IH0pOwog
ICAgIH0KIAogICAgIGF1dG8gYWRkUmVzdWx0ID0gYWxsV29ya2Vycy0+YWRkKHRoaXMpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJSdW5Mb29wLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyUnVuTG9vcC5jcHAKaW5kZXggNjRjMmVmNDVjNGZkNTkw
ZjU4MWQzMGYzODAxOWVjNmU2MDYzNmUxYy4uMjM2MWJmNzQ1YWFiNTRmNTkxMzYwNzM5Mjc2OWI2
MmFkYjNlMGJjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJSdW5M
b29wLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclJ1bkxvb3AuY3BwCkBA
IC01MCw3ICs1MCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFdvcmtlclNoYXJlZFRp
bWVyIGZpbmFsIDogcHVibGljIFNoYXJlZFRpbWVyIHsKIHB1YmxpYzoKICAgICAvLyBTaGFyZWRU
aW1lciBpbnRlcmZhY2UuCi0gICAgdm9pZCBzZXRGaXJlZEZ1bmN0aW9uKHN0ZDo6ZnVuY3Rpb248
dm9pZCgpPiYmIGZ1bmN0aW9uKSBvdmVycmlkZSB7IG1fc2hhcmVkVGltZXJGdW5jdGlvbiA9IFdU
Rk1vdmUoZnVuY3Rpb24pOyB9CisgICAgdm9pZCBzZXRGaXJlZEZ1bmN0aW9uKFdURjo6RnVuY3Rp
b248dm9pZCgpPiYmIGZ1bmN0aW9uKSBvdmVycmlkZSB7IG1fc2hhcmVkVGltZXJGdW5jdGlvbiA9
IFdURk1vdmUoZnVuY3Rpb24pOyB9CiAgICAgdm9pZCBzZXRGaXJlSW50ZXJ2YWwoU2Vjb25kcyBp
bnRlcnZhbCkgb3ZlcnJpZGUgeyBtX25leHRGaXJlVGltZSA9IGludGVydmFsICsgV2FsbFRpbWU6
Om5vdygpOyB9CiAgICAgdm9pZCBzdG9wKCkgb3ZlcnJpZGUgeyBtX25leHRGaXJlVGltZSA9IFdh
bGxUaW1lKCk7IH0KIApAQCAtNTksNyArNTksNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBmaXJlKCkg
eyBtX3NoYXJlZFRpbWVyRnVuY3Rpb24oKTsgfQogCiBwcml2YXRlOgotICAgIHN0ZDo6ZnVuY3Rp
b248dm9pZCgpPiBtX3NoYXJlZFRpbWVyRnVuY3Rpb247CisgICAgV1RGOjpGdW5jdGlvbjx2b2lk
KCk+IG1fc2hhcmVkVGltZXJGdW5jdGlvbjsKICAgICBXYWxsVGltZSBtX25leHRGaXJlVGltZTsK
IH07CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>313371</attachid>
            <date>2017-06-19 22:47:35 -0700</date>
            <delta_ts>2017-06-20 09:11:11 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-173583-20170619224734.patch</filename>
            <type>text/plain</type>
            <size>80243</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE4NTI4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWRjMjgyZDE0ODRkZjk3
MzQ0NTA1MmZiNTI0ZTM3MDljZmQxZDcwNy4uMThlYjAzMzJjOGE2NjQ5ZjdlNDJhOGI0NDUxYjAz
MmE1MDAyODU0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzMCBAQAorMjAxNy0wNi0xOSAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFVzZSBXVEY6OkZ1bmN0aW9u
IGluc3RlYWQgb2Ygc3RkOjpmdW5jdGlvbiBpbiBtb3JlIHBsYWNlcyBpbiBXZWJDb3JlLworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTczNTgzCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXNlIFdURjo6RnVu
Y3Rpb24gaW5zdGVhZCBvZiBzdGQ6OmZ1bmN0aW9uIGluIG1vcmUgcGxhY2VzIGluIFdlYkNvcmUv
IHRvCisgICAgICAgIHJlZHVjZSBjb3B5aW5nLgorCisgICAgICAgICogcGFnZS9QYWdlLmNwcDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9IeXN0ZXJlc2lzQWN0aXZpdHkuaDoKKyAgICAgICAgKFdlYkNv
cmU6Okh5c3RlcmVzaXNBY3Rpdml0eTo6SHlzdGVyZXNpc0FjdGl2aXR5KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9Mb2dnaW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnJlZ2lzdGVyTm90aWZ5Q2Fs
bGJhY2spOgorICAgICAgICAqIHBsYXRmb3JtL0xvZ2dpbmcuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9NYWluVGhyZWFkU2hhcmVkVGltZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWFpblRocmVh
ZFNoYXJlZFRpbWVyOjpzZXRGaXJlZEZ1bmN0aW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9NYWlu
VGhyZWFkU2hhcmVkVGltZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9QbGF0Zm9ybVBhc3RlYm9h
cmQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9TY29wZUd1YXJkLmg6CisgICAgICAgIChXZWJDb3Jl
OjpTY29wZUd1YXJkOjpTY29wZUd1YXJkKToKKyAgICAgICAgKFdlYkNvcmU6OlNjb3BlR3VhcmQ6
OmVuYWJsZSk6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uU21vb3RoLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdGlvblNtb290aDo6U2Nyb2xsQW5pbWF0aW9u
U21vb3RoKToKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxBbmltYXRpb25TbW9vdGguaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9TaGFyZWRUaW1lci5oOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlv
L1BsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbGF0
Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6OmN1cnJlbnRTZXNzaW9uc01hdGNoaW5nKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXIuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9jZi9NYWluVGhyZWFkU2hhcmVkVGltZXJDRi5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpzZXR1cFBvd2VyT2JzZXJ2ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2NmL1J1bkxv
b3BPYnNlcnZlci5oOgorICAgICAgICAoV2ViQ29yZTo6UnVuTG9vcE9ic2VydmVyOjpSdW5Mb29w
T2JzZXJ2ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5o
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6dHJhdmVyc2UpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9N
ZWRpYVBsYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjphZGRNZWRpYUVuZ2luZSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9QYXRoLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb246OnNlZWtDb21wbGV0ZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uOjpzY2hlZHVsZU1haW5U
aHJlYWROb3RpZmljYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uOjpkaXNwYXRjaE5vdGlmaWNhdGlvbik6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5oOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uOjpOb3RpZmlj
YXRpb246Ok5vdGlmaWNhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb246Ok5vdGlmaWNhdGlvbjo6ZnVuY3Rpb24pOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbk9iakMubW06CisgICAgICAgICgtW1dlYkNvcmVBVkZNb3ZpZU9ic2VydmVyIG9ic2VydmVW
YWx1ZUZvcktleVBhdGg6b2ZPYmplY3Q6Y2hhbmdlOmNvbnRleHQ6XSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFT
dHJlYW1BVkZPYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6cnVuV2l0aG91dEFuaW1hdGlvbnMp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0lPU3VyZmFjZS5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0lPU3VyZmFjZS5tbToKKyAgICAgICAgKFdlYkNv
cmU6OklPU3VyZmFjZTo6Y29udmVydFRvRm9ybWF0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvTWFpblRocmVhZE5vdGlmaWVyLmg6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUmVxdWVzdEluc3RhbGxNaXNzaW5nUGx1Z2lu
c0NhbGxiYWNrLmg6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclJlcXVlc3RJbnN0YWxs
TWlzc2luZ1BsdWdpbnNDYWxsYmFjazo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
UGxheWVyUmVxdWVzdEluc3RhbGxNaXNzaW5nUGx1Z2luc0NhbGxiYWNrOjpNZWRpYVBsYXllclJl
cXVlc3RJbnN0YWxsTWlzc2luZ1BsdWdpbnNDYWxsYmFjayk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dERpcmVjdDJELmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd1dpdGhvdXRTaGFkb3cpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3V2l0aFNoYWRvdyk6CisgICAgICAgICogcGxhdGZvcm0v
Z3RrL1Bhc3RlYm9hcmRIZWxwZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkU2V0
RGF0YTo6Q2xpcGJvYXJkU2V0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkSGVs
cGVyOjp3cml0ZUNsaXBib2FyZENvbnRlbnRzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvUGFz
dGVib2FyZEhlbHBlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9QbGF0Zm9ybVBhc3RlYm9h
cmRHdGsuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1QYXN0ZWJvYXJkOjp3cml0ZVRv
Q2xpcGJvYXJkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuSW50
ZXJmYWNlQVZLaXQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVu
SW50ZXJmYWNlQVZLaXQubW06CisgICAgICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VB
VktpdDo6cHJlcGFyZWRUb1JldHVyblRvSW5saW5lKToKKyAgICAgICAgKFdlYlZpZGVvRnVsbHNj
cmVlbkludGVyZmFjZUFWS2l0OjpmdWxsc2NyZWVuTWF5UmV0dXJuVG9JbmxpbmUpOgorICAgICAg
ICAqIHBsYXRmb3JtL21hYy9Qb3dlck9ic2VydmVyTWFjLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlBvd2VyT2JzZXJ2ZXI6OlBvd2VyT2JzZXJ2ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9Q
b3dlck9ic2VydmVyTWFjLmg6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1dlYkNvcmVOU1VSTEV4
dHJhcy5tbToKKyAgICAgICAgKFdlYkNvcmU6OmlzU2Vjb25kTGV2ZWxEb21haW5OYW1lQWxsb3dl
ZEJ5VExEUnVsZXMpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL0NhcHR1cmVEZXZp
Y2VNYW5hZ2VyLmNwcDoKKyAgICAgICAgKENhcHR1cmVEZXZpY2VNYW5hZ2VyOjphZGRDYXB0dXJl
RGV2aWNlQ2hhbmdlZE9ic2VydmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9D
YXB0dXJlRGV2aWNlTWFuYWdlci5oOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL1Jl
YWx0aW1lTWVkaWFTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNv
dXJjZTo6c2NoZWR1bGVEZWZlcnJlZFRhc2spOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3Ry
ZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVh
bS9pb3MvQVZBdWRpb1Nlc3Npb25DYXB0dXJlRGV2aWNlTWFuYWdlci5tbToKKyAgICAgICAgKC1b
V2ViQVZBdWRpb1Nlc3Npb25BdmFpbGFibGVJbnB1dHNMaXN0ZW5lciBpbml0V2l0aENhbGxiYWNr
Ol0pOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Db3JlQXVkaW9DYXB0dXJl
U291cmNlLmg6CisgICAgICAgICogcGxhdGZvcm0vbW9jay9TY3JvbGxBbmltYXRvck1vY2suY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3JNb2NrOjpTY3JvbGxBbmltYXRvck1v
Y2spOgorICAgICAgICAqIHBsYXRmb3JtL21vY2svU2Nyb2xsQW5pbWF0b3JNb2NrLmg6CisgICAg
ICAgICogcGxhdGZvcm0vbmV0d29yay9Db29raWVTdG9yYWdlLmg6CisgICAgICAgICogcGxhdGZv
cm0vbmV0d29yay9OZXR3b3JrU3RhdGVOb3RpZmllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpO
ZXR3b3JrU3RhdGVOb3RpZmllcjo6YWRkTmV0d29ya1N0YXRlQ2hhbmdlTGlzdGVuZXIpOgorICAg
ICAgICAqIHBsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0YXRlTm90aWZpZXIuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246OmZvckVhY2gpOgorICAgICAgICAqIHBsYXRm
b3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmg6CisgICAgICAgICogcGxhdGZvcm0v
bmV0d29yay9jZi9Db29raWVTdG9yYWdlQ0ZOZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29v
a2llQ2hhbmdlQ2FsbGJhY2tNYXApOgorICAgICAgICAoV2ViQ29yZTo6c3RhcnRPYnNlcnZpbmdD
b29raWVDaGFuZ2VzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL1NvY2tldFN0cmVh
bUhhbmRsZUltcGxDRk5ldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjYWxsT25NYWluVGhyZWFk
QW5kV2FpdCk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9tYWMvQ29va2llU3RvcmFnZU1h
Yy5tbToKKyAgICAgICAgKC1bV2ViQ29va2llU3RvcmFnZU9iakNBZGFwdGVyIHN0YXJ0TGlzdGVu
aW5nRm9yQ29va2llQ2hhbmdlTm90aWZpY2F0aW9uc1dpdGhDYWxsYmFjazpdKToKKyAgICAgICAg
KFdlYkNvcmU6OnN0YXJ0T2JzZXJ2aW5nQ29va2llQ2hhbmdlcyk6CisgICAgICAgICogcGxhdGZv
cm0vbmV0d29yay9zb3VwL0Nvb2tpZVN0b3JhZ2VTb3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OnN0YXJ0T2JzZXJ2aW5nQ29va2llQ2hhbmdlcyk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29y
ay9zb3VwL1NvdXBOZXR3b3JrU2Vzc2lvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTb3VwTmV0
d29ya1Nlc3Npb246OmNoZWNrVExTRXJyb3JzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3Jr
L3NvdXAvU291cE5ldHdvcmtTZXNzaW9uLmg6CisgICAgICAgICogcGxhdGZvcm0vc3FsL1NRTGl0
ZURhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmRlc3Ryb3lDb2xsYXRpb25GdW5jdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpjYWxsQ29sbGF0aW9uRnVuY3Rpb24pOgorICAgICAgICAo
V2ViQ29yZTo6U1FMaXRlRGF0YWJhc2U6OnNldENvbGxhdGlvbkZ1bmN0aW9uKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2UuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyTGF5ZXJCYWNraW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRyYXZlcnNlVmlzaWJsZU5v
bkNvbXBvc2l0ZWREZXNjZW5kYW50TGF5ZXJzKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
TGlzdEJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMaXN0Qm94OjpwYWludEl0ZW0p
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMaXN0Qm94Lmg6CisgICAgICAgICogcmVuZGVy
aW5nL2xpbmUvQnJlYWtpbmdDb250ZXh0Lmg6CisgICAgICAgIChXZWJDb3JlOjpCcmVha2luZ0Nv
bnRleHQ6OklubGluZUl0ZXJhdG9ySGlzdG9yeTo6cHVzaCk6CisgICAgICAgIChXZWJDb3JlOjpC
cmVha2luZ0NvbnRleHQ6OklubGluZUl0ZXJhdG9ySGlzdG9yeTo6dXBkYXRlKToKKyAgICAgICAg
KiB3b3JrZXJzL1dvcmtlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXI6Oldvcmtlcik6
CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJSdW5Mb29wLmNwcDoKKwogMjAxNy0wNi0xOSAgTXls
ZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgogCiAgICAgICAgIFtDb2NvYV0g
VGhlIHN5c3RlbSBKYXBhbmVzZSBmb250IGNhbm5vdCBiZSBpdGFsaWNpemVkCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdl
LmNwcAppbmRleCAwMWZhZDM0NTg5ZmUxNDU4MzFkNWY0ZDJiNzRiOWE3NDllN2I5MzAwLi43NGEx
OWU4N2JlMmQ0YWJmOWZhMzA0ZWUyOTU0NzI4ODljYTU1N2I3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAK
QEAgLTI4MSw3ICsyODEsNyBAQCBQYWdlOjpQYWdlKFBhZ2VDb25maWd1cmF0aW9uJiYgcGFnZUNv
bmZpZ3VyYXRpb24pCiAgICAgaWYgKCFhbGxQYWdlcykgewogICAgICAgICBhbGxQYWdlcyA9IG5l
dyBIYXNoU2V0PFBhZ2UqPjsKICAgICAgICAgCi0gICAgICAgIG5ldHdvcmtTdGF0ZU5vdGlmaWVy
KCkuYWRkTmV0d29ya1N0YXRlQ2hhbmdlTGlzdGVuZXIobmV0d29ya1N0YXRlQ2hhbmdlZCk7Cisg
ICAgICAgIG5ldHdvcmtTdGF0ZU5vdGlmaWVyKCkuYWRkTmV0d29ya1N0YXRlQ2hhbmdlTGlzdGVu
ZXIoW10gKGJvb2wgaXNPbkxpbmUpIHsgbmV0d29ya1N0YXRlQ2hhbmdlZChpc09uTGluZSk7IH0p
OwogICAgIH0KIAogICAgIEFTU0VSVCghYWxsUGFnZXMtPmNvbnRhaW5zKHRoaXMpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0h5c3RlcmVzaXNBY3Rpdml0eS5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vSHlzdGVyZXNpc0FjdGl2aXR5LmgKaW5kZXggNTk5ZTE3MWVj
MWFjYWQyMGVkOGYxNWQxYjQ1YzllYWE5ZjFjZTBhMC4uOTExOGVhNGU5ZmQwNThjZTMxMDc0Mjk2
MTEzZjNjM2NjYzMwMWU0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vSHlz
dGVyZXNpc0FjdGl2aXR5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vSHlzdGVyZXNp
c0FjdGl2aXR5LmgKQEAgLTM5LDggKzM5LDggQEAgZW51bSBjbGFzcyBIeXN0ZXJlc2lzU3RhdGUg
ewogCiBjbGFzcyBIeXN0ZXJlc2lzQWN0aXZpdHkgewogcHVibGljOgotICAgIGV4cGxpY2l0IEh5
c3RlcmVzaXNBY3Rpdml0eShzdGQ6OmZ1bmN0aW9uPHZvaWQoSHlzdGVyZXNpc1N0YXRlKT4gY2Fs
bGJhY2sgPSBbXShIeXN0ZXJlc2lzU3RhdGUpIHsgfSwgZG91YmxlIGh5c3RlcmVzaXNTZWNvbmRz
ID0gRGVmYXVsdEh5c3RlcmVzaXNTZWNvbmRzKQotICAgICAgICA6IG1fY2FsbGJhY2soY2FsbGJh
Y2spCisgICAgZXhwbGljaXQgSHlzdGVyZXNpc0FjdGl2aXR5KFdURjo6RnVuY3Rpb248dm9pZChI
eXN0ZXJlc2lzU3RhdGUpPiYmIGNhbGxiYWNrID0gW10oSHlzdGVyZXNpc1N0YXRlKSB7IH0sIGRv
dWJsZSBoeXN0ZXJlc2lzU2Vjb25kcyA9IERlZmF1bHRIeXN0ZXJlc2lzU2Vjb25kcykKKyAgICAg
ICAgOiBtX2NhbGxiYWNrKFdURk1vdmUoY2FsbGJhY2spKQogICAgICAgICAsIG1faHlzdGVyZXNp
c1NlY29uZHMoaHlzdGVyZXNpc1NlY29uZHMpCiAgICAgICAgICwgbV9hY3RpdmUoZmFsc2UpCiAg
ICAgICAgICwgbV90aW1lcigqdGhpcywgJkh5c3RlcmVzaXNBY3Rpdml0eTo6aHlzdGVyZXNpc1Rp
bWVyRmlyZWQpCkBAIC04OCw3ICs4OCw3IEBAIHByaXZhdGU6CiAgICAgICAgIG1fY2FsbGJhY2so
SHlzdGVyZXNpc1N0YXRlOjpTdG9wcGVkKTsKICAgICB9CiAKLSAgICBzdGQ6OmZ1bmN0aW9uPHZv
aWQoSHlzdGVyZXNpc1N0YXRlKT4gbV9jYWxsYmFjazsKKyAgICBXVEY6OkZ1bmN0aW9uPHZvaWQo
SHlzdGVyZXNpc1N0YXRlKT4gbV9jYWxsYmFjazsKICAgICBkb3VibGUgbV9oeXN0ZXJlc2lzU2Vj
b25kczsgLy8gRklYTUU6IFNob3VsZCB1c2UgU2Vjb25kcy4KICAgICBib29sIG1fYWN0aXZlOwog
ICAgIFRpbWVyIG1fdGltZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9M
b2dnaW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xvZ2dpbmcuY3BwCmluZGV4IDBm
YjViZjgxMjljOTY0NTRjNGU0ZjgwYzAwZGJmZjE3YWEyMzdiOTQuLjg4ODQzOTk1YzUzNjY4YTM0
ZTZiZGM1ZWJmNDE3ZDMxYTM1MmRlMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL0xvZ2dpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xvZ2dpbmcuY3Bw
CkBAIC0zMyw2ICszMyw3IEBACiAKICNpZiBQTEFURk9STShDT0NPQSkKICNpbmNsdWRlIDxub3Rp
ZnkuaD4KKyNpbmNsdWRlIDx3dGYvQmxvY2tQdHIuaD4KICNlbmRpZgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CkBAIC03OSwxMyArODAsMTMgQEAgdm9pZCBpbml0aWFsaXplTG9nQ2hhbm5lbHNJZk5l
Y2Vzc2FyeSgpCiB9CiAKICNpZm5kZWYgTkRFQlVHCi12b2lkIHJlZ2lzdGVyTm90aWZ5Q2FsbGJh
Y2soY29uc3QgU3RyaW5nJiBub3RpZnlJRCwgc3RkOjpmdW5jdGlvbjx2b2lkKCk+IGNhbGxiYWNr
KQordm9pZCByZWdpc3Rlck5vdGlmeUNhbGxiYWNrKGNvbnN0IFN0cmluZyYgbm90aWZ5SUQsIFdU
Rjo6RnVuY3Rpb248dm9pZCgpPiYmIGNhbGxiYWNrKQogewogI2lmIFBMQVRGT1JNKENPQ09BKQog
ICAgIGludCB0b2tlbjsKLSAgICBub3RpZnlfcmVnaXN0ZXJfZGlzcGF0Y2gobm90aWZ5SUQudXRm
OCgpLmRhdGEoKSwgJnRva2VuLCBkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBeKGludCkgewor
ICAgIG5vdGlmeV9yZWdpc3Rlcl9kaXNwYXRjaChub3RpZnlJRC51dGY4KCkuZGF0YSgpLCAmdG9r
ZW4sIGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIEJsb2NrUHRyPHZvaWQgKGludCk+Ojpmcm9t
Q2FsbGFibGUoW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldIChpbnQpIHsKICAgICAgICAg
Y2FsbGJhY2soKTsKLSAgICB9KTsKKyAgICB9KS5nZXQoKSk7CiAjZWxzZQogICAgIFVOVVNFRF9Q
QVJBTShub3RpZnlJRCk7CiAgICAgVU5VU0VEX1BBUkFNKGNhbGxiYWNrKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xvZ2dpbmcuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL0xvZ2dpbmcuaAppbmRleCA4ODNhOWYyMjA5N2VlYzE2ZGVjY2E0NjMyMjg4NTA2NmI0Njdi
NzRlLi41YWIwMTYyYTE1ODRkMTg1YTFiZTNkNTA2ZWU4ZmEyOGVhZDcwMzY3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2dnaW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vTG9nZ2luZy5oCkBAIC0xMDMsNyArMTAzLDcgQEAgU3RyaW5nIGxvZ0xldmVsU3Ry
aW5nKCk7CiBib29sIGlzTG9nQ2hhbm5lbEVuYWJsZWQoY29uc3QgU3RyaW5nJiBuYW1lKTsKIFdF
QkNPUkVfRVhQT1JUIHZvaWQgc2V0TG9nQ2hhbm5lbFRvQWNjdW11bGF0ZShjb25zdCBTdHJpbmcm
IG5hbWUpOwogI2lmbmRlZiBOREVCVUcKLXZvaWQgcmVnaXN0ZXJOb3RpZnlDYWxsYmFjayhjb25z
dCBTdHJpbmcmIG5vdGlmeUlELCBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4gY2FsbGJhY2spOwordm9p
ZCByZWdpc3Rlck5vdGlmeUNhbGxiYWNrKGNvbnN0IFN0cmluZyYgbm90aWZ5SUQsIFdURjo6RnVu
Y3Rpb248dm9pZCgpPiYmIGNhbGxiYWNrKTsKICNlbmRpZgogCiAjZW5kaWYgLy8gIUxPR19ESVNB
QkxFRCB8fCAhUkVMRUFTRV9MT0dfRElTQUJMRUQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL01haW5UaHJlYWRTaGFyZWRUaW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9NYWluVGhyZWFkU2hhcmVkVGltZXIuY3BwCmluZGV4IGRkYTY4MmViODQxMWJiODYzMjJi
MzJhMWZhNTFiMGJkMmE1MTdiODQuLjY4ZmYwNDM4OTdiYmNhOTMzOWJmMjNkYzRkZDEzYzUyMDRj
ZTMwZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01haW5UaHJlYWRTaGFy
ZWRUaW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWFpblRocmVhZFNoYXJl
ZFRpbWVyLmNwcApAQCAtNDAsNyArNDAsNyBAQCBNYWluVGhyZWFkU2hhcmVkVGltZXI6Ok1haW5U
aHJlYWRTaGFyZWRUaW1lcigpCiB9CiAjZW5kaWYKIAotdm9pZCBNYWluVGhyZWFkU2hhcmVkVGlt
ZXI6OnNldEZpcmVkRnVuY3Rpb24oc3RkOjpmdW5jdGlvbjx2b2lkKCk+JiYgZmlyZWRGdW5jdGlv
bikKK3ZvaWQgTWFpblRocmVhZFNoYXJlZFRpbWVyOjpzZXRGaXJlZEZ1bmN0aW9uKFdURjo6RnVu
Y3Rpb248dm9pZCgpPiYmIGZpcmVkRnVuY3Rpb24pCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQoIW1f
ZmlyZWRGdW5jdGlvbiB8fCAhZmlyZWRGdW5jdGlvbik7CiAgICAgbV9maXJlZEZ1bmN0aW9uID0g
V1RGTW92ZShmaXJlZEZ1bmN0aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL01haW5UaHJlYWRTaGFyZWRUaW1lci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWFp
blRocmVhZFNoYXJlZFRpbWVyLmgKaW5kZXggNDkwNzMwZjE0MzJkOTM2MGJiMmJkNThjMGFhY2I3
NDI0OTg1NGU0Yi4uOTRhMTkwZDM3Nzk5ZjI5NDZjZDU2ZTk3ZDkwM2Y3Yzg1ZDU2NGZmMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWFpblRocmVhZFNoYXJlZFRpbWVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWFpblRocmVhZFNoYXJlZFRpbWVyLmgKQEAg
LTQxLDcgKzQxLDcgQEAgY2xhc3MgTWFpblRocmVhZFNoYXJlZFRpbWVyIGZpbmFsIDogcHVibGlj
IFNoYXJlZFRpbWVyIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgTWFpblRocmVhZFNoYXJlZFRpbWVy
JiBzaW5nbGV0b24oKTsKIAotICAgIHZvaWQgc2V0RmlyZWRGdW5jdGlvbihzdGQ6OmZ1bmN0aW9u
PHZvaWQoKT4mJikgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRGaXJlZEZ1bmN0aW9uKFdURjo6RnVu
Y3Rpb248dm9pZCgpPiYmKSBvdmVycmlkZTsKICAgICB2b2lkIHNldEZpcmVJbnRlcnZhbChTZWNv
bmRzKSBvdmVycmlkZTsKICAgICB2b2lkIHN0b3AoKSBvdmVycmlkZTsKICAgICB2b2lkIGludmFs
aWRhdGUoKSBvdmVycmlkZTsKQEAgLTUzLDcgKzUzLDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAg
ICBNYWluVGhyZWFkU2hhcmVkVGltZXIoKTsKIAotICAgIHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiBt
X2ZpcmVkRnVuY3Rpb247CisgICAgV1RGOjpGdW5jdGlvbjx2b2lkKCk+IG1fZmlyZWRGdW5jdGlv
bjsKICNpZiBQTEFURk9STShHVEspIHx8IFBMQVRGT1JNKFdQRSkKICAgICBSdW5Mb29wOjpUaW1l
cjxNYWluVGhyZWFkU2hhcmVkVGltZXI+IG1fdGltZXI7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtUGFzdGVib2FyZC5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vUGxhdGZvcm1QYXN0ZWJvYXJkLmgKaW5kZXggYWZkYTE1NWVmMTM0NDNhOTEx
ZTgzMDcwZGRjNzc3MWI1YjUyM2Q4OC4uMTNlNTk4OTA4MDE5ZjYyNGQ1ZDVkYzc0MzMyNTUwZDNl
MDY2NjZjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1QYXN0
ZWJvYXJkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1QYXN0ZWJvYXJk
LmgKQEAgLTI2LDggKzI2LDggQEAKICNpZm5kZWYgUGxhdGZvcm1QYXN0ZWJvYXJkX2gKICNkZWZp
bmUgUGxhdGZvcm1QYXN0ZWJvYXJkX2gKIAotI2luY2x1ZGUgPGZ1bmN0aW9uYWw+CiAjaW5jbHVk
ZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KICNpbmNsdWRlIDx3
dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbmNsdWRlIDx3
dGYvVmVjdG9yLmg+CkBAIC05Myw3ICs5Myw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9S
VCBpbnQgbnVtYmVyT2ZGaWxlcygpOwogCiAjaWYgUExBVEZPUk0oR1RLKQotICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgd3JpdGVUb0NsaXBib2FyZChjb25zdCBTZWxlY3Rpb25EYXRhJiwgc3RkOjpm
dW5jdGlvbjx2b2lkKCk+JiYgcHJpbWFyeVNlbGVjdGlvbkNsZWFyZWQpOworICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgd3JpdGVUb0NsaXBib2FyZChjb25zdCBTZWxlY3Rpb25EYXRhJiwgV1RGOjpG
dW5jdGlvbjx2b2lkKCk+JiYgcHJpbWFyeVNlbGVjdGlvbkNsZWFyZWQpOwogICAgIFdFQkNPUkVf
RVhQT1JUIFJlZjxTZWxlY3Rpb25EYXRhPiByZWFkRnJvbUNsaXBib2FyZCgpOwogI2VuZGlmCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njb3BlR3VhcmQuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1Njb3BlR3VhcmQuaAppbmRleCAyNGFiN2ZmNTllMDRhOTRhMDA2
MzkxMmFhOWZhOWY1MTM2OTA1ODUxLi5kNGNiM2I5ZjhlYjI0NGUxYzEzOGEwN2Y3NjI3ODFkZDZk
MWEyNzU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY29wZUd1YXJkLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2NvcGVHdWFyZC5oCkBAIC0yNSw3ICsyNSw3
IEBACiAjaWZuZGVmIFNjb3BlR3VhcmRfaAogI2RlZmluZSBTY29wZUd1YXJkX2gKIAotI2luY2x1
ZGUgPGZ1bmN0aW9uYWw+CisjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIApAQCAtMzUsNyArMzUsNyBAQCBwdWJsaWM6CiAgICAgewogICAgIH0KIAotICAg
IFNjb3BlR3VhcmQoc3RkOjpmdW5jdGlvbjx2b2lkKCk+IGZ1bmN0aW9uKQorICAgIFNjb3BlR3Vh
cmQoV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYgZnVuY3Rpb24pCiAgICAgICAgIDogbV9mdW5jdGlv
bihXVEZNb3ZlKGZ1bmN0aW9uKSkKICAgICB7CiAgICAgfQpAQCAtNDYsNyArNDYsNyBAQCBwdWJs
aWM6CiAgICAgICAgICAgICBtX2Z1bmN0aW9uKCk7CiAgICAgfQogCi0gICAgdm9pZCBlbmFibGUo
c3RkOjpmdW5jdGlvbjx2b2lkKCk+IGZ1bmN0aW9uKQorICAgIHZvaWQgZW5hYmxlKFdURjo6RnVu
Y3Rpb248dm9pZCgpPiYmIGZ1bmN0aW9uKQogICAgIHsKICAgICAgICAgbV9mdW5jdGlvbiA9IFdU
Rk1vdmUoZnVuY3Rpb24pOwogICAgIH0KQEAgLTU3LDcgKzU3LDcgQEAgcHVibGljOgogICAgIH0K
IAogcHJpdmF0ZToKLSAgICBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4gbV9mdW5jdGlvbiB7IG51bGxw
dHIgfTsKKyAgICBXVEY6OkZ1bmN0aW9uPHZvaWQoKT4gbV9mdW5jdGlvbjsKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Nj
cm9sbEFuaW1hdGlvblNtb290aC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxB
bmltYXRpb25TbW9vdGguY3BwCmluZGV4IDRjNmI4MTRmOTBkYWVmMGYxNDlhYzU0NjZlOGM5Yzc4
YjVhYTk5NzAuLmUwZmIxMmM0OTE3YTkwMWNlMGMyNDhjZDM0OGNiZjBmNWY5ZjMyNjAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdGlvblNtb290aC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uU21vb3RoLmNwcApA
QCAtNDAsNyArNDAsNyBAQCBzdGF0aWMgY29uc3QgZG91YmxlIGZyYW1lUmF0ZSA9IDYwOwogc3Rh
dGljIGNvbnN0IFNlY29uZHMgdGlja1RpbWUgPSAxX3MgLyBmcmFtZVJhdGU7CiBzdGF0aWMgY29u
c3QgU2Vjb25kcyBtaW5pbXVtVGltZXJJbnRlcnZhbCB7IDFfbXMgfTsKIAotU2Nyb2xsQW5pbWF0
aW9uU21vb3RoOjpTY3JvbGxBbmltYXRpb25TbW9vdGgoU2Nyb2xsYWJsZUFyZWEmIHNjcm9sbGFi
bGVBcmVhLCBjb25zdCBGbG9hdFBvaW50JiBwb3NpdGlvbiwgc3RkOjpmdW5jdGlvbjx2b2lkIChG
bG9hdFBvaW50JiYpPiYmIG5vdGlmeVBvc2l0aW9uQ2hhbmdlZEZ1bmN0aW9uKQorU2Nyb2xsQW5p
bWF0aW9uU21vb3RoOjpTY3JvbGxBbmltYXRpb25TbW9vdGgoU2Nyb2xsYWJsZUFyZWEmIHNjcm9s
bGFibGVBcmVhLCBjb25zdCBGbG9hdFBvaW50JiBwb3NpdGlvbiwgV1RGOjpGdW5jdGlvbjx2b2lk
IChGbG9hdFBvaW50JiYpPiYmIG5vdGlmeVBvc2l0aW9uQ2hhbmdlZEZ1bmN0aW9uKQogICAgIDog
U2Nyb2xsQW5pbWF0aW9uKHNjcm9sbGFibGVBcmVhKQogICAgICwgbV9ub3RpZnlQb3NpdGlvbkNo
YW5nZWRGdW5jdGlvbihXVEZNb3ZlKG5vdGlmeVBvc2l0aW9uQ2hhbmdlZEZ1bmN0aW9uKSkKICAg
ICAsIG1faG9yaXpvbnRhbERhdGEocG9zaXRpb24ueCgpLCBzY3JvbGxhYmxlQXJlYS52aXNpYmxl
V2lkdGgoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1h
dGlvblNtb290aC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uU21v
b3RoLmgKaW5kZXggMjQzOTY0OGYxODRkYzdkMjI4NDljYWUzOTUxYzBhNmQ4NjcyZGM5My4uMDJj
YzRlZTJiZDc0M2QwNjI5ZWFkMDQ4YmY3NmM0ODE2N2JmZThlZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uU21vb3RoLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uU21vb3RoLmgKQEAgLTM4LDcgKzM4LDcgQEAg
Y2xhc3MgU2Nyb2xsYWJsZUFyZWE7CiAKIGNsYXNzIFNjcm9sbEFuaW1hdGlvblNtb290aCBmaW5h
bDogcHVibGljIFNjcm9sbEFuaW1hdGlvbiB7CiBwdWJsaWM6Ci0gICAgU2Nyb2xsQW5pbWF0aW9u
U21vb3RoKFNjcm9sbGFibGVBcmVhJiwgY29uc3QgRmxvYXRQb2ludCYsIHN0ZDo6ZnVuY3Rpb248
dm9pZCAoRmxvYXRQb2ludCYmKT4mJiBub3RpZnlQb3NpdGlvbkNoYW5nZWRGdW5jdGlvbik7Cisg
ICAgU2Nyb2xsQW5pbWF0aW9uU21vb3RoKFNjcm9sbGFibGVBcmVhJiwgY29uc3QgRmxvYXRQb2lu
dCYsIFdURjo6RnVuY3Rpb248dm9pZCAoRmxvYXRQb2ludCYmKT4mJiBub3RpZnlQb3NpdGlvbkNo
YW5nZWRGdW5jdGlvbik7CiAgICAgdmlydHVhbCB+U2Nyb2xsQW5pbWF0aW9uU21vb3RoKCk7CiAK
ICAgICBlbnVtIGNsYXNzIEN1cnZlIHsKQEAgLTk3LDcgKzk3LDcgQEAgcHJpdmF0ZToKICAgICB2
b2lkIGFuaW1hdGlvblRpbWVyRmlyZWQoKTsKICAgICBib29sIGFuaW1hdGlvblRpbWVyQWN0aXZl
KCkgY29uc3Q7CiAKLSAgICBzdGQ6OmZ1bmN0aW9uPHZvaWQgKEZsb2F0UG9pbnQmJik+IG1fbm90
aWZ5UG9zaXRpb25DaGFuZ2VkRnVuY3Rpb247CisgICAgV1RGOjpGdW5jdGlvbjx2b2lkIChGbG9h
dFBvaW50JiYpPiBtX25vdGlmeVBvc2l0aW9uQ2hhbmdlZEZ1bmN0aW9uOwogCiAgICAgUGVyQXhp
c0RhdGEgbV9ob3Jpem9udGFsRGF0YTsKICAgICBQZXJBeGlzRGF0YSBtX3ZlcnRpY2FsRGF0YTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZFRpbWVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRUaW1lci5oCmluZGV4IDc3NzdmNjdjOWFhZjczZTBj
YmZhNzA4ODg3NjEzYjZmMjMzMjkyNjIuLjQ0NDVlM2I3MmU3NmE5MjFjMGJlOGYzZTg3NzllNTU1
MzYyZTcwNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZFRpbWVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkVGltZXIuaApAQCAtMjYsOCAr
MjYsOCBAQAogI2lmbmRlZiBTaGFyZWRUaW1lcl9oCiAjZGVmaW5lIFNoYXJlZFRpbWVyX2gKIAot
I2luY2x1ZGUgPGZ1bmN0aW9uYWw+CiAjaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KKyNpbmNs
dWRlIDx3dGYvRnVuY3Rpb24uaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNpbmNs
dWRlIDx3dGYvU2Vjb25kcy5oPgogCkBAIC00MSw3ICs0MSw3IEBAIGNsYXNzIFNoYXJlZFRpbWVy
IHsKIHB1YmxpYzoKICAgICBTaGFyZWRUaW1lcigpID0gZGVmYXVsdDsKICAgICB2aXJ0dWFsIH5T
aGFyZWRUaW1lcigpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBzZXRGaXJlZEZ1bmN0aW9uKHN0ZDo6
ZnVuY3Rpb248dm9pZCgpPiYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNldEZpcmVkRnVuY3Rp
b24oV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYpID0gMDsKIAogICAgIC8vIFRoZSBmaXJlIGludGVy
dmFsIGlzIGluIHNlY29uZHMgcmVsYXRpdmUgdG8gdGhlIGN1cnJlbnQgbW9ub3RvbmljIGNsb2Nr
IHRpbWUuCiAgICAgdmlydHVhbCB2b2lkIHNldEZpcmVJbnRlcnZhbChTZWNvbmRzKSA9IDA7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vz
c2lvbk1hbmFnZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1N
ZWRpYVNlc3Npb25NYW5hZ2VyLmNwcAppbmRleCBhZGRiYzQzZjgwNWRkNTAyYjNjZDc5ZWU0Njc1
MzY1NmU1NGI3NmFhLi4wM2Q3NjFlYmMxODk0NjI4NTc4OTM4ZTdkMWNhYzBiYWM2MDBiN2Q5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vz
c2lvbk1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1BsYXRm
b3JtTWVkaWFTZXNzaW9uTWFuYWdlci5jcHAKQEAgLTI3Nyw3ICsyNzcsNyBAQCBQbGF0Zm9ybU1l
ZGlhU2Vzc2lvbiogUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyOjpjdXJyZW50U2Vzc2lvbigp
IGNvbnN0CiAgICAgcmV0dXJuIG1fc2Vzc2lvbnNbMF07CiB9CiAKLVZlY3RvcjxQbGF0Zm9ybU1l
ZGlhU2Vzc2lvbio+IFBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6Y3VycmVudFNlc3Npb25z
TWF0Y2hpbmcoc3RkOjpmdW5jdGlvbjxib29sKGNvbnN0IFBsYXRmb3JtTWVkaWFTZXNzaW9uICYp
PiBmaWx0ZXIpCitWZWN0b3I8UGxhdGZvcm1NZWRpYVNlc3Npb24qPiBQbGF0Zm9ybU1lZGlhU2Vz
c2lvbk1hbmFnZXI6OmN1cnJlbnRTZXNzaW9uc01hdGNoaW5nKGNvbnN0IFdURjo6RnVuY3Rpb248
Ym9vbChjb25zdCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbiYpPiYgZmlsdGVyKQogewogICAgIFZlY3Rv
cjxQbGF0Zm9ybU1lZGlhU2Vzc2lvbio+IG1hdGNoaW5nU2Vzc2lvbnM7CiAgICAgZm9yRWFjaFNl
c3Npb24oWyZdIChQbGF0Zm9ybU1lZGlhU2Vzc2lvbiYgc2Vzc2lvbiwgc2l6ZV90KSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lv
bk1hbmFnZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFT
ZXNzaW9uTWFuYWdlci5oCmluZGV4IGYyZTBmOTg3Mzc0YmM1OTQ1MzI4OTExODM1ZjkwZTE1YzAw
MGY2ODIuLjg0Mjc0OGZmYjY0OTVlYzEzNjc0MDMzMjVhMTM2ZmYwNmQ5ZjFjMWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9uTWFu
YWdlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFT
ZXNzaW9uTWFuYWdlci5oCkBAIC0xMDUsNyArMTA1LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0
Q3VycmVudFNlc3Npb24oUGxhdGZvcm1NZWRpYVNlc3Npb24mKTsKICAgICBQbGF0Zm9ybU1lZGlh
U2Vzc2lvbiogY3VycmVudFNlc3Npb24oKSBjb25zdDsKIAotICAgIFZlY3RvcjxQbGF0Zm9ybU1l
ZGlhU2Vzc2lvbio+IGN1cnJlbnRTZXNzaW9uc01hdGNoaW5nKHN0ZDo6ZnVuY3Rpb248Ym9vbChj
b25zdCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbiYpPik7CisgICAgVmVjdG9yPFBsYXRmb3JtTWVkaWFT
ZXNzaW9uKj4gY3VycmVudFNlc3Npb25zTWF0Y2hpbmcoY29uc3QgV1RGOjpGdW5jdGlvbjxib29s
KGNvbnN0IFBsYXRmb3JtTWVkaWFTZXNzaW9uJik+Jik7CiAKICAgICB2b2lkIHNlc3Npb25Jc1Bs
YXlpbmdUb1dpcmVsZXNzUGxheWJhY2tUYXJnZXRDaGFuZ2VkKFBsYXRmb3JtTWVkaWFTZXNzaW9u
Jik7CiAgICAgdm9pZCBzZXNzaW9uQ2FuUHJvZHVjZUF1ZGlvQ2hhbmdlZChQbGF0Zm9ybU1lZGlh
U2Vzc2lvbiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvTWFpblRo
cmVhZFNoYXJlZFRpbWVyQ0YuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvTWFpblRo
cmVhZFNoYXJlZFRpbWVyQ0YuY3BwCmluZGV4IGY5ZTRiZjgwMDAyNGRlYWZkNmUzMDMyNDA1ZmFk
Yzg1ZDBkYzcwNWEuLmYwMTgzYjE0ZGJmYzJjNDhjZDIxOTYzYmY4NDczOTk2YjIwYjE0ZmUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL01haW5UaHJlYWRTaGFyZWRUaW1l
ckNGLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9NYWluVGhyZWFkU2hhcmVk
VGltZXJDRi5jcHAKQEAgLTU3LDcgKzU3LDcgQEAgc3RhdGljIHZvaWQgc2V0dXBQb3dlck9ic2Vy
dmVyKCkKICNpZiBQTEFURk9STShNQUMpCiAgICAgc3RhdGljIFBvd2VyT2JzZXJ2ZXIqIHBvd2Vy
T2JzZXJ2ZXI7CiAgICAgaWYgKCFwb3dlck9ic2VydmVyKQotICAgICAgICBwb3dlck9ic2VydmVy
ID0gc3RkOjptYWtlX3VuaXF1ZTxQb3dlck9ic2VydmVyPihyZXN0YXJ0U2hhcmVkVGltZXIpLnJl
bGVhc2UoKTsKKyAgICAgICAgcG93ZXJPYnNlcnZlciA9IHN0ZDo6bWFrZV91bmlxdWU8UG93ZXJP
YnNlcnZlcj4oW10geyByZXN0YXJ0U2hhcmVkVGltZXIoKTsgfSkucmVsZWFzZSgpOwogI2VsaWYg
UExBVEZPUk0oSU9TKQogICAgIHN0YXRpYyBib29sIHJlZ2lzdGVyZWRGb3JBcHBsaWNhdGlvbk5v
dGlmaWNhdGlvbiA9IGZhbHNlOwogICAgIGlmICghcmVnaXN0ZXJlZEZvckFwcGxpY2F0aW9uTm90
aWZpY2F0aW9uKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9SdW5M
b29wT2JzZXJ2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL1J1bkxvb3BPYnNlcnZl
ci5oCmluZGV4IGMxYjZhMGQ5ZGM5YjgyNzI1ZjA0YjU1YzgzMThlNjFhZDE1NjkwODAuLjk2OWEw
Mzc4NmJiYjFmMTFjOTc0NmZlMGIwNmUyZWJlYWFmZWQzZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2NmL1J1bkxvb3BPYnNlcnZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2NmL1J1bkxvb3BPYnNlcnZlci5oCkBAIC0yNyw3ICsyNyw3IEBACiAjZGVmaW5l
IFJ1bkxvb3BPYnNlcnZlcl9oCiAKICNpbmNsdWRlIDxDb3JlRm91bmRhdGlvbi9Db3JlRm91bmRh
dGlvbi5oPgotI2luY2x1ZGUgPGZ1bmN0aW9uYWw+CisjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+
CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5o
PgogCkBAIC0zNiwxMSArMzYsMTEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgUnVuTG9v
cE9ic2VydmVyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShSdW5Mb29wT2JzZXJ2ZXIpOyBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICB0eXBlZGVmIHN0ZDo6ZnVuY3Rp
b248dm9pZCAoKT4gUnVuTG9vcE9ic2VydmVyQ2FsbGJhY2s7CisgICAgdHlwZWRlZiBXVEY6OkZ1
bmN0aW9uPHZvaWQgKCk+IFJ1bkxvb3BPYnNlcnZlckNhbGxiYWNrOwogCi0gICAgUnVuTG9vcE9i
c2VydmVyKENGSW5kZXggb3JkZXIsIFJ1bkxvb3BPYnNlcnZlckNhbGxiYWNrIGNhbGxiYWNrKQor
ICAgIFJ1bkxvb3BPYnNlcnZlcihDRkluZGV4IG9yZGVyLCBSdW5Mb29wT2JzZXJ2ZXJDYWxsYmFj
ayYmIGNhbGxiYWNrKQogICAgICAgICA6IG1fb3JkZXIob3JkZXIpCi0gICAgICAgICwgbV9jYWxs
YmFjayhjYWxsYmFjaykKKyAgICAgICAgLCBtX2NhbGxiYWNrKFdURk1vdmUoY2FsbGJhY2spKQog
ICAgIHsgfQogCiAgICAgV0VCQ09SRV9FWFBPUlQgflJ1bkxvb3BPYnNlcnZlcigpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAppbmRl
eCBjNDcwNzQ2NDhkZTdmNGIwNzhjYTJmMWE2YWZhZWE4NDllZTc5NDllLi41MmY3ZGUyNzUzY2Nk
YjZjYzZkZTUzOWY2YWMwMDIwZTA2OGFjYWZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaApAQCAtMzQsNiArMzQsNyBAQAogI2lu
Y2x1ZGUgIkltYWdlLmgiCiAjaW5jbHVkZSAiSW1hZ2VPcmllbnRhdGlvbi5oIgogI2luY2x1ZGUg
IlBhdHRlcm4uaCIKKyNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KICNpbmNsdWRlIDx3dGYvTm9u
Y29weWFibGUuaD4KIAogI2lmIFVTRShDRykKQEAgLTU5OSw4ICs2MDAsOCBAQCBwcml2YXRlOgog
CiAjaWYgVVNFKERJUkVDVDJEKQogICAgIHZvaWQgcGxhdGZvcm1Jbml0KEhEQywgSUQyRDFSZW5k
ZXJUYXJnZXQqKiwgUkVDVCwgYm9vbCBoYXNBbHBoYSA9IGZhbHNlKTsKLSAgICB2b2lkIGRyYXdX
aXRob3V0U2hhZG93KGNvbnN0IEZsb2F0UmVjdCYgYm91bmRpbmdSZWN0LCBjb25zdCBzdGQ6OmZ1
bmN0aW9uPHZvaWQoSUQyRDFSZW5kZXJUYXJnZXQqKT4mKTsKLSAgICB2b2lkIGRyYXdXaXRoU2hh
ZG93KGNvbnN0IEZsb2F0UmVjdCYgYm91bmRpbmdSZWN0LCBjb25zdCBzdGQ6OmZ1bmN0aW9uPHZv
aWQoSUQyRDFSZW5kZXJUYXJnZXQqKT4mKTsKKyAgICB2b2lkIGRyYXdXaXRob3V0U2hhZG93KGNv
bnN0IEZsb2F0UmVjdCYgYm91bmRpbmdSZWN0LCBjb25zdCBXVEY6OkZ1bmN0aW9uPHZvaWQoSUQy
RDFSZW5kZXJUYXJnZXQqKT4mKTsKKyAgICB2b2lkIGRyYXdXaXRoU2hhZG93KGNvbnN0IEZsb2F0
UmVjdCYgYm91bmRpbmdSZWN0LCBjb25zdCBXVEY6OkZ1bmN0aW9uPHZvaWQoSUQyRDFSZW5kZXJU
YXJnZXQqKT4mKTsKICNlbmRpZgogCiAgICAgdm9pZCBzYXZlUGxhdGZvcm1TdGF0ZSgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmNwcApp
bmRleCBmNzlmNDRlZTBiOTBhNTI3MjFkOWEyYTBhZDg5OTAxMDA1ZWQxODU0Li4xNmM2N2Y0OWU5
ZmJhOTQ0MjVkYjFmMjg2YTM4NmMyODJjYmE3ZTM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmNwcApAQCAtNjcyLDcgKzY3Miw3IEBA
IHZvaWQgR3JhcGhpY3NMYXllcjo6YWRkUmVwYWludFJlY3QoY29uc3QgRmxvYXRSZWN0JiByZXBh
aW50UmVjdCkKICAgICB9CiB9CiAKLXZvaWQgR3JhcGhpY3NMYXllcjo6dHJhdmVyc2UoR3JhcGhp
Y3NMYXllciYgbGF5ZXIsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoR3JhcGhpY3NMYXllciYpPiB0cmF2
ZXJzYWxGdW5jKQordm9pZCBHcmFwaGljc0xheWVyOjp0cmF2ZXJzZShHcmFwaGljc0xheWVyJiBs
YXllciwgY29uc3QgV1RGOjpGdW5jdGlvbjx2b2lkIChHcmFwaGljc0xheWVyJik+JiB0cmF2ZXJz
YWxGdW5jKQogewogICAgIHRyYXZlcnNhbEZ1bmMobGF5ZXIpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmgKaW5kZXggZWNmZTM5YzY2NzU0
NjQ3NDE4ZGIwMzkyM2RiMjUyMzc4OGUzYWNjNS4uNmMxYjc5NmQyODMyMzZhZDY5OWIyYjk1MTE0
NjNkOWYxNTBmNjFjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NMYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzTGF5ZXIuaApAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgIlBsYXRmb3JtTGF5
ZXIuaCIKICNpbmNsdWRlICJUcmFuc2Zvcm1PcGVyYXRpb25zLmgiCiAjaW5jbHVkZSAiV2luZFJ1
bGUuaCIKKyNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KICNpbmNsdWRlIDx3dGYvVHlwZUNhc3Rz
Lmg+CiAKICNpZiBFTkFCTEUoQ1NTX0NPTVBPU0lUSU5HKQpAQCAtNTcwLDcgKzU3MSw3IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgaXNHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcigpIGNv
bnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGlzQ29vcmRpbmF0ZWRHcmFw
aGljc0xheWVyKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIAotICAgIHN0YXRpYyB2b2lkIHRy
YXZlcnNlKEdyYXBoaWNzTGF5ZXImLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKEdyYXBoaWNzTGF5ZXIm
KT4pOworICAgIHN0YXRpYyB2b2lkIHRyYXZlcnNlKEdyYXBoaWNzTGF5ZXImLCBjb25zdCBXVEY6
OkZ1bmN0aW9uPHZvaWQgKEdyYXBoaWNzTGF5ZXImKT4mKTsKIAogcHJvdGVjdGVkOgogICAgIFdF
QkNPUkVfRVhQT1JUIGV4cGxpY2l0IEdyYXBoaWNzTGF5ZXIoVHlwZSwgR3JhcGhpY3NMYXllckNs
aWVudCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVk
aWFQbGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5
ZXIuY3BwCmluZGV4IDZkMmU1YWEzYTAzNzJkZWEyOWRiYzAzOWU5ZjYzNmJiZGQzNTEwOTYuLmIw
ZmIzZGQ3N2M0NjQzZmI4ZDJjMmZkNzBmYmI4NTllNGQ1Y2M0N2MgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKQEAgLTE4OCw3ICsxODgs
NyBAQCBzdHJ1Y3QgTWVkaWFQbGF5ZXJGYWN0b3J5IHsKICAgICBNZWRpYUVuZ2luZVN1cHBvcnRz
S2V5U3lzdGVtIHN1cHBvcnRzS2V5U3lzdGVtOwogfTsKIAotc3RhdGljIHZvaWQgYWRkTWVkaWFF
bmdpbmUoQ3JlYXRlTWVkaWFFbmdpbmVQbGF5ZXIsIE1lZGlhRW5naW5lU3VwcG9ydGVkVHlwZXMs
IE1lZGlhRW5naW5lU3VwcG9ydHNUeXBlLCBNZWRpYUVuZ2luZU9yaWdpbnNJbk1lZGlhQ2FjaGUs
IE1lZGlhRW5naW5lQ2xlYXJNZWRpYUNhY2hlLCBNZWRpYUVuZ2luZUNsZWFyTWVkaWFDYWNoZUZv
ck9yaWdpbnMsIE1lZGlhRW5naW5lU3VwcG9ydHNLZXlTeXN0ZW0pOworc3RhdGljIHZvaWQgYWRk
TWVkaWFFbmdpbmUoQ3JlYXRlTWVkaWFFbmdpbmVQbGF5ZXImJiwgTWVkaWFFbmdpbmVTdXBwb3J0
ZWRUeXBlcywgTWVkaWFFbmdpbmVTdXBwb3J0c1R5cGUsIE1lZGlhRW5naW5lT3JpZ2luc0luTWVk
aWFDYWNoZSwgTWVkaWFFbmdpbmVDbGVhck1lZGlhQ2FjaGUsIE1lZGlhRW5naW5lQ2xlYXJNZWRp
YUNhY2hlRm9yT3JpZ2lucywgTWVkaWFFbmdpbmVTdXBwb3J0c0tleVN5c3RlbSk7CiAKIHN0YXRp
YyBMb2NrJiBtZWRpYUVuZ2luZVZlY3RvckxvY2soKQogewpAQCAtMjY5LDE0ICsyNjksMTQgQEAg
c3RhdGljIGNvbnN0IFZlY3RvcjxNZWRpYVBsYXllckZhY3Rvcnk+JiBpbnN0YWxsZWRNZWRpYUVu
Z2luZXMoKQogICAgIHJldHVybiBtdXRhYmxlSW5zdGFsbGVkTWVkaWFFbmdpbmVzVmVjdG9yKCk7
CiB9CiAKLXN0YXRpYyB2b2lkIGFkZE1lZGlhRW5naW5lKENyZWF0ZU1lZGlhRW5naW5lUGxheWVy
IGNvbnN0cnVjdG9yLCBNZWRpYUVuZ2luZVN1cHBvcnRlZFR5cGVzIGdldFN1cHBvcnRlZFR5cGVz
LCBNZWRpYUVuZ2luZVN1cHBvcnRzVHlwZSBzdXBwb3J0c1R5cGUsCitzdGF0aWMgdm9pZCBhZGRN
ZWRpYUVuZ2luZShDcmVhdGVNZWRpYUVuZ2luZVBsYXllciYmIGNvbnN0cnVjdG9yLCBNZWRpYUVu
Z2luZVN1cHBvcnRlZFR5cGVzIGdldFN1cHBvcnRlZFR5cGVzLCBNZWRpYUVuZ2luZVN1cHBvcnRz
VHlwZSBzdXBwb3J0c1R5cGUsCiAgICAgTWVkaWFFbmdpbmVPcmlnaW5zSW5NZWRpYUNhY2hlIG9y
aWdpbnNJbk1lZGlhQ2FjaGUsIE1lZGlhRW5naW5lQ2xlYXJNZWRpYUNhY2hlIGNsZWFyTWVkaWFD
YWNoZSwgTWVkaWFFbmdpbmVDbGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5zIGNsZWFyTWVkaWFDYWNo
ZUZvck9yaWdpbnMsIE1lZGlhRW5naW5lU3VwcG9ydHNLZXlTeXN0ZW0gc3VwcG9ydHNLZXlTeXN0
ZW0pCiB7CiAgICAgQVNTRVJUKGNvbnN0cnVjdG9yKTsKICAgICBBU1NFUlQoZ2V0U3VwcG9ydGVk
VHlwZXMpOwogICAgIEFTU0VSVChzdXBwb3J0c1R5cGUpOwogCi0gICAgbXV0YWJsZUluc3RhbGxl
ZE1lZGlhRW5naW5lc1ZlY3RvcigpLmFwcGVuZChNZWRpYVBsYXllckZhY3RvcnkgeyBjb25zdHJ1
Y3RvciwgZ2V0U3VwcG9ydGVkVHlwZXMsIHN1cHBvcnRzVHlwZSwgb3JpZ2luc0luTWVkaWFDYWNo
ZSwgY2xlYXJNZWRpYUNhY2hlLCBjbGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5zLCBzdXBwb3J0c0tl
eVN5c3RlbSB9KTsKKyAgICBtdXRhYmxlSW5zdGFsbGVkTWVkaWFFbmdpbmVzVmVjdG9yKCkuYXBw
ZW5kKE1lZGlhUGxheWVyRmFjdG9yeSB7IFdURk1vdmUoY29uc3RydWN0b3IpLCBnZXRTdXBwb3J0
ZWRUeXBlcywgc3VwcG9ydHNUeXBlLCBvcmlnaW5zSW5NZWRpYUNhY2hlLCBjbGVhck1lZGlhQ2Fj
aGUsIGNsZWFyTWVkaWFDYWNoZUZvck9yaWdpbnMsIHN1cHBvcnRzS2V5U3lzdGVtIH0pOwogfQog
CiBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBhcHBsaWNhdGlvbk9jdGV0U3RyZWFtKCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCmluZGV4IDFj
YjM1MDRiMTIwOTk5MDliZDQyM2VmOWFiZjc5NWU2Y2Y1ODU2ODguLjkyZjI0ODU2OGRlYzlhMWIz
Mjk5ZTZhMDczZDg0ZWU0YWU1ZjM2ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvTWVkaWFQbGF5ZXIuaApAQCAtNjI4LDcgKzYyOCw3IEBAIHByaXZhdGU6CiAjZW5k
aWYKIH07CiAKLXR5cGVkZWYgc3RkOjpmdW5jdGlvbjxzdGQ6OnVuaXF1ZV9wdHI8TWVkaWFQbGF5
ZXJQcml2YXRlSW50ZXJmYWNlPiAoTWVkaWFQbGF5ZXIqKT4gQ3JlYXRlTWVkaWFFbmdpbmVQbGF5
ZXI7Cit1c2luZyBDcmVhdGVNZWRpYUVuZ2luZVBsYXllciA9IFdURjo6RnVuY3Rpb248c3RkOjp1
bmlxdWVfcHRyPE1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZT4gKE1lZGlhUGxheWVyKik+Owog
dHlwZWRlZiB2b2lkICgqTWVkaWFFbmdpbmVTdXBwb3J0ZWRUeXBlcykoSGFzaFNldDxTdHJpbmcs
IEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4mIHR5cGVzKTsKIHR5cGVkZWYgTWVkaWFQbGF5ZXI6
OlN1cHBvcnRzVHlwZSAoKk1lZGlhRW5naW5lU3VwcG9ydHNUeXBlKShjb25zdCBNZWRpYUVuZ2lu
ZVN1cHBvcnRQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKTsKIHR5cGVkZWYgSGFzaFNldDxSZWZQdHI8
U2VjdXJpdHlPcmlnaW4+PiAoKk1lZGlhRW5naW5lT3JpZ2luc0luTWVkaWFDYWNoZSkoY29uc3Qg
U3RyaW5nJiBwYXRoKTsKQEAgLTYzNiw3ICs2MzYsNyBAQCB0eXBlZGVmIHZvaWQgKCpNZWRpYUVu
Z2luZUNsZWFyTWVkaWFDYWNoZSkoY29uc3QgU3RyaW5nJiBwYXRoLCBzdGQ6OmNocm9ubzo6c3lz
dAogdHlwZWRlZiB2b2lkICgqTWVkaWFFbmdpbmVDbGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5zKShj
b25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IEhhc2hTZXQ8UmVmUHRyPFNlY3VyaXR5T3JpZ2luPj4m
KTsKIHR5cGVkZWYgYm9vbCAoKk1lZGlhRW5naW5lU3VwcG9ydHNLZXlTeXN0ZW0pKGNvbnN0IFN0
cmluZyYga2V5U3lzdGVtLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKTsKIAotdHlwZWRlZiB2b2lk
ICgqTWVkaWFFbmdpbmVSZWdpc3RyYXIpKENyZWF0ZU1lZGlhRW5naW5lUGxheWVyLCBNZWRpYUVu
Z2luZVN1cHBvcnRlZFR5cGVzLCBNZWRpYUVuZ2luZVN1cHBvcnRzVHlwZSwKK3R5cGVkZWYgdm9p
ZCAoKk1lZGlhRW5naW5lUmVnaXN0cmFyKShDcmVhdGVNZWRpYUVuZ2luZVBsYXllciYmLCBNZWRp
YUVuZ2luZVN1cHBvcnRlZFR5cGVzLCBNZWRpYUVuZ2luZVN1cHBvcnRzVHlwZSwKICAgICBNZWRp
YUVuZ2luZU9yaWdpbnNJbk1lZGlhQ2FjaGUsIE1lZGlhRW5naW5lQ2xlYXJNZWRpYUNhY2hlLCBN
ZWRpYUVuZ2luZUNsZWFyTWVkaWFDYWNoZUZvck9yaWdpbnMsIE1lZGlhRW5naW5lU3VwcG9ydHNL
ZXlTeXN0ZW0pOwogdHlwZWRlZiB2b2lkICgqTWVkaWFFbmdpbmVSZWdpc3RlcikoTWVkaWFFbmdp
bmVSZWdpc3RyYXIpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9QYXRoLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXRoLmgKaW5k
ZXggMjgzMWNmZTMzZTdjMDZhODhkM2M2YjgzYzkxMjZiODUwMmEzNGVmYy4uN2NhYmE0Y2I2ZTc4
OTM4MzNkZDhiNmFjMTRjZmVjOWYxYzI5OTcxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvUGF0aC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL1BhdGguaApAQCAtMzAsOCArMzAsOCBAQAogCiAjaW5jbHVkZSAiRmxvYXRSZWN0Lmgi
CiAjaW5jbHVkZSAiV2luZFJ1bGUuaCIKLSNpbmNsdWRlIDxmdW5jdGlvbmFsPgogI2luY2x1ZGUg
PHd0Zi9GYXN0TWFsbG9jLmg+CisjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+CiAjaW5jbHVkZSA8
d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKQEAgLTEwMSw3ICsxMDEs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIEZsb2F0UG9pbnQqIHBvaW50czsKICAg
ICB9OwogCi0gICAgdHlwZWRlZiBzdGQ6OmZ1bmN0aW9uPHZvaWQgKGNvbnN0IFBhdGhFbGVtZW50
Jik+IFBhdGhBcHBsaWVyRnVuY3Rpb247CisgICAgdXNpbmcgUGF0aEFwcGxpZXJGdW5jdGlvbiA9
IFdURjo6RnVuY3Rpb248dm9pZCAoY29uc3QgUGF0aEVsZW1lbnQmKT47CiAKICAgICBjbGFzcyBQ
YXRoIHsKICAgICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2
YXRlQVZGb3VuZGF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24uY3BwCmluZGV4IGIwYzI2
YWY1MzNmNDIzN2M0NzY0OTYxNWI0ZWQ2NDFiNDJjMGRlOGQuLjVkYjg3NzNmNWE1ZjkzZjMxMTkz
Yjk1MzBkYjRjZTNkYmEzY2I0OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24uY3BwCkBAIC02NTksNyArNjU5LDcgQEAgdm9pZCBN
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb246OnNlZWtDb21wbGV0ZWQoYm9vbCBmaW5pc2hl
ZCkKIAogICAgIG1fc2Vla2luZyA9IGZhbHNlOwogCi0gICAgc3RkOjpmdW5jdGlvbjx2b2lkKCk+
IHBlbmRpbmdTZWVrOworICAgIFdURjo6RnVuY3Rpb248dm9pZCgpPiBwZW5kaW5nU2VlazsKICAg
ICBzdGQ6OnN3YXAocGVuZGluZ1NlZWssIG1fcGVuZGluZ1NlZWspOwogCiAgICAgaWYgKHBlbmRp
bmdTZWVrKSB7CkBAIC03OTAsMTYgKzc5MCwxNyBAQCBzdGF0aWMgY29uc3QgY2hhciogbm90aWZp
Y2F0aW9uTmFtZShNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb246Ok5vdGlmaWNhdGlvbgog
I2VuZGlmIC8vICFMT0dfRElTQUJMRUQKICAgICAKIAotdm9pZCBNZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb246OnNjaGVkdWxlTWFpblRocmVhZE5vdGlmaWNhdGlvbihOb3RpZmljYXRpb24g
bm90aWZpY2F0aW9uKQordm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb246OnNjaGVk
dWxlTWFpblRocmVhZE5vdGlmaWNhdGlvbihOb3RpZmljYXRpb24mJiBub3RpZmljYXRpb24pCiB7
Ci0gICAgaWYgKG5vdGlmaWNhdGlvbi50eXBlKCkgIT0gTm90aWZpY2F0aW9uOjpGdW5jdGlvblR5
cGUpCisgICAgYXV0byBub3RpZmljYXRpb25UeXBlID0gbm90aWZpY2F0aW9uLnR5cGUoKTsKKyAg
ICBpZiAobm90aWZpY2F0aW9uVHlwZSAhPSBOb3RpZmljYXRpb246OkZ1bmN0aW9uVHlwZSkKICAg
ICAgICAgTE9HKE1lZGlhLCAiTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uOjpzY2hlZHVs
ZU1haW5UaHJlYWROb3RpZmljYXRpb24oJXApIC0gbm90aWZpY2F0aW9uICVzIiwgdGhpcywgbm90
aWZpY2F0aW9uTmFtZShub3RpZmljYXRpb24pKTsKIAogICAgIG1fcXVldWVNdXRleC5sb2NrKCk7
CiAKICAgICAvLyBJdCBpcyBpbXBvcnRhbnQgdG8gYWx3YXlzIHByb2Nlc3MgdGhlIHByb3BlcnRp
ZXMgaW4gdGhlIG9yZGVyIHRoYXQgd2UgYXJlIG5vdGlmaWVkLAogICAgIC8vIHNvIGFsd2F5cyBn
byB0aHJvdWdoIHRoZSBxdWV1ZSBiZWNhdXNlIG5vdGlmaWNhdGlvbnMgaGFwcGVuIG9uIGRpZmZl
cmVudCB0aHJlYWRzLgotICAgIG1fcXVldWVkTm90aWZpY2F0aW9ucy5hcHBlbmQobm90aWZpY2F0
aW9uKTsKKyAgICBtX3F1ZXVlZE5vdGlmaWNhdGlvbnMuYXBwZW5kKFdURk1vdmUobm90aWZpY2F0
aW9uKSk7CiAKICNpZiBPUyhXSU5ET1dTKQogICAgIGJvb2wgZGVsYXlEaXNwYXRjaCA9IHRydWU7
CkBAIC04MjAsNyArODIxLDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb246
OnNjaGVkdWxlTWFpblRocmVhZE5vdGlmaWNhdGlvbihOb3RpZmljYXRpb24KICAgICBtX3F1ZXVl
TXV0ZXgudW5sb2NrKCk7CiAKICAgICBpZiAoZGVsYXlEaXNwYXRjaCkgewotICAgICAgICBpZiAo
bm90aWZpY2F0aW9uLnR5cGUoKSAhPSBOb3RpZmljYXRpb246OkZ1bmN0aW9uVHlwZSkKKyAgICAg
ICAgaWYgKG5vdGlmaWNhdGlvblR5cGUgIT0gTm90aWZpY2F0aW9uOjpGdW5jdGlvblR5cGUpCiAg
ICAgICAgICAgICBMT0coTWVkaWEsICJNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb246OnNj
aGVkdWxlTWFpblRocmVhZE5vdGlmaWNhdGlvbiglcCkgLSBlYXJseSByZXR1cm4iLCB0aGlzKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTgzMiw3ICs4MzMsNyBAQCB2b2lkIE1lZGlhUGxh
eWVyUHJpdmF0ZUFWRm91bmRhdGlvbjo6ZGlzcGF0Y2hOb3RpZmljYXRpb24oKQogewogICAgIEFT
U0VSVChpc01haW5UaHJlYWQoKSk7CiAKLSAgICBOb3RpZmljYXRpb24gbm90aWZpY2F0aW9uID0g
Tm90aWZpY2F0aW9uKCk7CisgICAgTm90aWZpY2F0aW9uIG5vdGlmaWNhdGlvbjsKICAgICB7CiAg
ICAgICAgIExvY2tIb2xkZXIgbG9jayhtX3F1ZXVlTXV0ZXgpOwogICAgICAgICAKQEAgLTg0MSw4
ICs4NDIsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbjo6ZGlzcGF0Y2hO
b3RpZmljYXRpb24oKQogICAgICAgICAKICAgICAgICAgaWYgKCFtX2RlbGF5Q2FsbGJhY2tzKSB7
CiAgICAgICAgICAgICAvLyBPbmx5IGRpc3BhdGNoIG9uZSBub3RpZmljYXRpb24gY2FsbGJhY2sg
cGVyIGludm9jYXRpb24gYmVjYXVzZSB0aGV5IGNhbiBjYXVzZSByZWN1cnNpb24uCi0gICAgICAg
ICAgICBub3RpZmljYXRpb24gPSBtX3F1ZXVlZE5vdGlmaWNhdGlvbnMuZmlyc3QoKTsKLSAgICAg
ICAgICAgIG1fcXVldWVkTm90aWZpY2F0aW9ucy5yZW1vdmUoMCk7CisgICAgICAgICAgICBub3Rp
ZmljYXRpb24gPSBtX3F1ZXVlZE5vdGlmaWNhdGlvbnMudGFrZUZpcnN0KCk7CiAgICAgICAgIH0K
ICAgICAgICAgCiAgICAgICAgIGlmICghbV9xdWV1ZWROb3RpZmljYXRpb25zLmlzRW1wdHkoKSAm
JiAhbV9tYWluVGhyZWFkQ2FsbFBlbmRpbmcpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9N
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24uaAppbmRleCAwYWQyOThiMDVmYzBhMzA3MDVi
MWViODAzMTYwOGViNDlmOGYyZjMxLi4wODhiYTQ3MDU3OGE3Y2QzOWYxZDkwMTdjZjU5ODQyMDU3
ZmY4NjQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbi5oCkBAIC0zMiw3ICszMiw4IEBACiAjaW5jbHVkZSAiSW5iYW5kVGV4dFRyYWNr
UHJpdmF0ZUFWRi5oIgogI2luY2x1ZGUgIk1lZGlhUGxheWVyUHJpdmF0ZS5oIgogI2luY2x1ZGUg
IlRpbWVyLmgiCi0jaW5jbHVkZSA8ZnVuY3Rpb25hbD4KKyNpbmNsdWRlIDx3dGYvRGVxdWUuaD4K
KyNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2lu
Y2x1ZGUgPHd0Zi9Mb2NrLmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgpAQCAtMTEzLDEw
ICsxMTQsMTAgQEAgcHVibGljOgogICAgICAgICB7CiAgICAgICAgIH0KIAotICAgICAgICBOb3Rp
ZmljYXRpb24oc3RkOjpmdW5jdGlvbjx2b2lkICgpPiBmdW5jdGlvbikKKyAgICAgICAgTm90aWZp
Y2F0aW9uKFdURjo6RnVuY3Rpb248dm9pZCAoKT4mJiBmdW5jdGlvbikKICAgICAgICAgICAgIDog
bV90eXBlKEZ1bmN0aW9uVHlwZSkKICAgICAgICAgICAgICwgbV9maW5pc2hlZChmYWxzZSkKLSAg
ICAgICAgICAgICwgbV9mdW5jdGlvbihmdW5jdGlvbikKKyAgICAgICAgICAgICwgbV9mdW5jdGlv
bihXVEZNb3ZlKGZ1bmN0aW9uKSkKICAgICAgICAgewogICAgICAgICB9CiAgICAgICAgIApAQCAt
MTI0LDE2ICsxMjUsMTYgQEAgcHVibGljOgogICAgICAgICBib29sIGlzVmFsaWQoKSB7IHJldHVy
biBtX3R5cGUgIT0gTm9uZTsgfQogICAgICAgICBNZWRpYVRpbWUgdGltZSgpIHsgcmV0dXJuIG1f
dGltZTsgfQogICAgICAgICBib29sIGZpbmlzaGVkKCkgeyByZXR1cm4gbV9maW5pc2hlZDsgfQot
ICAgICAgICBzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+JiBmdW5jdGlvbigpIHsgcmV0dXJuIG1fZnVu
Y3Rpb247IH0KKyAgICAgICAgV1RGOjpGdW5jdGlvbjx2b2lkICgpPiYgZnVuY3Rpb24oKSB7IHJl
dHVybiBtX2Z1bmN0aW9uOyB9CiAgICAgICAgIAogICAgIHByaXZhdGU6CiAgICAgICAgIFR5cGUg
bV90eXBlOwogICAgICAgICBNZWRpYVRpbWUgbV90aW1lOwogICAgICAgICBib29sIG1fZmluaXNo
ZWQ7Ci0gICAgICAgIHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4gbV9mdW5jdGlvbjsKKyAgICAgICAg
V1RGOjpGdW5jdGlvbjx2b2lkICgpPiBtX2Z1bmN0aW9uOwogICAgIH07CiAKLSAgICB2b2lkIHNj
aGVkdWxlTWFpblRocmVhZE5vdGlmaWNhdGlvbihOb3RpZmljYXRpb24pOworICAgIHZvaWQgc2No
ZWR1bGVNYWluVGhyZWFkTm90aWZpY2F0aW9uKE5vdGlmaWNhdGlvbiYmKTsKICAgICB2b2lkIHNj
aGVkdWxlTWFpblRocmVhZE5vdGlmaWNhdGlvbihOb3RpZmljYXRpb246OlR5cGUsIGNvbnN0IE1l
ZGlhVGltZSYgPSBNZWRpYVRpbWU6Onplcm9UaW1lKCkpOwogICAgIHZvaWQgc2NoZWR1bGVNYWlu
VGhyZWFkTm90aWZpY2F0aW9uKE5vdGlmaWNhdGlvbjo6VHlwZSwgYm9vbCBjb21wbGV0ZWQpOwog
ICAgIHZvaWQgZGlzcGF0Y2hOb3RpZmljYXRpb24oKTsKQEAgLTMxNyw5ICszMTgsOSBAQCBwcml2
YXRlOgogCiAgICAgV2Vha1B0ckZhY3Rvcnk8TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
PiBtX3dlYWtQdHJGYWN0b3J5OwogCi0gICAgc3RkOjpmdW5jdGlvbjx2b2lkKCk+IG1fcGVuZGlu
Z1NlZWs7CisgICAgV1RGOjpGdW5jdGlvbjx2b2lkKCk+IG1fcGVuZGluZ1NlZWs7CiAKLSAgICBW
ZWN0b3I8Tm90aWZpY2F0aW9uPiBtX3F1ZXVlZE5vdGlmaWNhdGlvbnM7CisgICAgRGVxdWU8Tm90
aWZpY2F0aW9uPiBtX3F1ZXVlZE5vdGlmaWNhdGlvbnM7CiAgICAgbXV0YWJsZSBMb2NrIG1fcXVl
dWVNdXRleDsKIAogICAgIG11dGFibGUgc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtVGltZVJhbmdl
cz4gbV9jYWNoZWRMb2FkZWRUaW1lUmFuZ2VzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KaW5kZXgg
NGZmZGE1ZTlmMzJmYTUwYTFlZmFiMzJjZjUyYmNjY2RmMTc3YTMzMy4uNmZkZjYxZGY0OTQwODZl
ZjUwZTU4NTU0ZTdkOWRkZTNiMDEzMjBmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCkBAIC0z
Mzc1LDcgKzMzNzUsNyBAQCAtICh2b2lkKW9ic2VydmVWYWx1ZUZvcktleVBhdGg6a2V5UGF0aCBv
Zk9iamVjdDooaWQpb2JqZWN0IGNoYW5nZTooTlNEaWN0aW9uYXJ5CiAgICAgfQogI2VuZGlmCiAK
LSAgICBzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+IGZ1bmN0aW9uOworICAgIFdURjo6RnVuY3Rpb248
dm9pZCAoKT4gZnVuY3Rpb247CiAKICAgICBpZiAoY29udGV4dCA9PSBNZWRpYVBsYXllckFWRm91
bmRhdGlvbk9ic2VydmF0aW9uQ29udGV4dEFWUGxheWVyTGF5ZXIpIHsKICAgICAgICAgaWYgKFtr
ZXlQYXRoIGlzRXF1YWxUb1N0cmluZzpAInJlYWR5Rm9yRGlzcGxheSJdKQpAQCAtMzQ1MCw3ICsz
NDUwLDcgQEAgLSAodm9pZClvYnNlcnZlVmFsdWVGb3JLZXlQYXRoOmtleVBhdGggb2ZPYmplY3Q6
KGlkKW9iamVjdCBjaGFuZ2U6KE5TRGljdGlvbmFyeQogICAgICAgICByZXR1cm47CiAKICAgICBh
dXRvIHdlYWtUaGlzID0gbV9jYWxsYmFjay0+Y3JlYXRlV2Vha1B0cigpOwotICAgIG1fY2FsbGJh
Y2stPnNjaGVkdWxlTWFpblRocmVhZE5vdGlmaWNhdGlvbihNZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb246Ok5vdGlmaWNhdGlvbihbd2Vha1RoaXMsIGZ1bmN0aW9uXXsKKyAgICBtX2NhbGxi
YWNrLT5zY2hlZHVsZU1haW5UaHJlYWROb3RpZmljYXRpb24oTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uOjpOb3RpZmljYXRpb24oW3dlYWtUaGlzLCBmdW5jdGlvbiA9IFdURk1vdmUoZnVu
Y3Rpb24pXXsKICAgICAgICAgLy8gd2Vha1RoaXMgYW5kIGZ1bmN0aW9uIGJvdGggcmVmZXIgdG8g
dGhlIHNhbWUgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQyBpbnN0YW5jZS4gSWYg
dGhlIFdlYWtQdHIgaGFzCiAgICAgICAgIC8vIGJlZW4gY2xlYXJlZCwgdGhlIHVuZGVybHlpbmcg
b2JqZWN0IGhhcyBiZWVuIGRlc3Ryb3llZCwgYW5kIGl0IGlzIHVuc2FmZSB0byBjYWxsIGZ1bmN0
aW9uKCkuCiAgICAgICAgIGlmICghd2Vha1RoaXMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVN
ZWRpYVN0cmVhbUFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMubW0K
aW5kZXggMzhjYWRlOTQ5YThlNTU3YzM0ODM3NzlhZDU1ZmI0ZTBkM2YxMDcyNi4uOTVhYjQ1Y2Nl
ZDIwMTZiODliMDFjNGY4ODZmZGY2ZWE5ODZiYmZhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRl
TWVkaWFTdHJlYW1BVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2Jq
Qy5tbQpAQCAtNDEsNiArNDEsNyBAQAogI2ltcG9ydCA8UXVhcnR6Q29yZS9DQUxheWVyLmg+CiAj
aW1wb3J0IDxRdWFydHpDb3JlL0NBVHJhbnNhY3Rpb24uaD4KICNpbXBvcnQgPG9iamNfcnVudGlt
ZS5oPgorI2ltcG9ydCA8d3RmL0Z1bmN0aW9uLmg+CiAjaW1wb3J0IDx3dGYvTWFpblRocmVhZC5o
PgogI2ltcG9ydCA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKQEAgLTMyNSw3ICszMjYsNyBAQCBD
R0FmZmluZVRyYW5zZm9ybSBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnZp
ZGVvVHJhbnNmb3JtYXRpb25NYXRyaQogICAgIHJldHVybiBtX3ZpZGVvVHJhbnNmb3JtOwogfQog
Ci1zdGF0aWMgdm9pZCBydW5XaXRob3V0QW5pbWF0aW9ucyhzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4g
ZnVuY3Rpb24pCitzdGF0aWMgdm9pZCBydW5XaXRob3V0QW5pbWF0aW9ucyhjb25zdCBXVEY6OkZ1
bmN0aW9uPHZvaWQoKT4mIGZ1bmN0aW9uKQogewogICAgIFtDQVRyYW5zYWN0aW9uIGJlZ2luXTsK
ICAgICBbQ0FUcmFuc2FjdGlvbiBzZXRBbmltYXRpb25EdXJhdGlvbjowXTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0lPU3VyZmFjZS5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSU9TdXJmYWNlLmgKaW5kZXggMjE2
OTlmMzZmZGMwMDUxOWQwYTkzOTRmNTNkMmQ1ZTA3YzZjZjFlNS4uMDBhZDJjYjM0MzlmYmI5YjI2
YjExYWIxYjZmZDM3ZTNmMzI2MDAyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY29jb2EvSU9TdXJmYWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY29jb2EvSU9TdXJmYWNlLmgKQEAgLTk2LDcgKzk2LDcgQEAgcHVibGljOgog
CiAjaWYgUExBVEZPUk0oSU9TKQogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBib29sIGFsbG93
Q29udmVyc2lvbkZyb21Gb3JtYXRUb0Zvcm1hdChGb3JtYXQsIEZvcm1hdCk7Ci0gICAgV0VCQ09S
RV9FWFBPUlQgc3RhdGljIHZvaWQgY29udmVydFRvRm9ybWF0KHN0ZDo6dW5pcXVlX3B0cjxXZWJD
b3JlOjpJT1N1cmZhY2U+JiYgaW5TdXJmYWNlLCBGb3JtYXQsIHN0ZDo6ZnVuY3Rpb248dm9pZChz
dGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6SU9TdXJmYWNlPik+KTsKKyAgICBXRUJDT1JFX0VYUE9S
VCBzdGF0aWMgdm9pZCBjb252ZXJ0VG9Gb3JtYXQoc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OklP
U3VyZmFjZT4mJiBpblN1cmZhY2UsIEZvcm1hdCwgV1RGOjpGdW5jdGlvbjx2b2lkKHN0ZDo6dW5p
cXVlX3B0cjxXZWJDb3JlOjpJT1N1cmZhY2U+KT4mJik7CiAjZW5kaWYKIAogcHJpdmF0ZToKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0lPU3VyZmFj
ZS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0lPU3VyZmFjZS5t
bQppbmRleCA3OGM3ODAyMzg4MTYzYzVkZmQ3NTJjNjk5MmIzM2RhODdlMTgzY2M2Li40OWQwNDZl
OWNkMjVhYzY0NDM5NTRkMzZmZWJkMjM5MDhjNmQzNzgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9JT1N1cmZhY2UubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSU9TdXJmYWNlLm1tCkBAIC0zODAsNyArMzgw
LDcgQEAgYm9vbCBXZWJDb3JlOjpJT1N1cmZhY2U6OmFsbG93Q29udmVyc2lvbkZyb21Gb3JtYXRU
b0Zvcm1hdChGb3JtYXQgc291cmNlRm9ybWF0LAogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lk
IFdlYkNvcmU6OklPU3VyZmFjZTo6Y29udmVydFRvRm9ybWF0KHN0ZDo6dW5pcXVlX3B0cjxXZWJD
b3JlOjpJT1N1cmZhY2U+JiYgaW5TdXJmYWNlLCBGb3JtYXQgZm9ybWF0LCBzdGQ6OmZ1bmN0aW9u
PHZvaWQoc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OklPU3VyZmFjZT4pPiBjYWxsYmFjaykKK3Zv
aWQgV2ViQ29yZTo6SU9TdXJmYWNlOjpjb252ZXJ0VG9Gb3JtYXQoc3RkOjp1bmlxdWVfcHRyPFdl
YkNvcmU6OklPU3VyZmFjZT4mJiBpblN1cmZhY2UsIEZvcm1hdCBmb3JtYXQsIFdURjo6RnVuY3Rp
b248dm9pZChzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6SU9TdXJmYWNlPik+JiYgY2FsbGJhY2sp
CiB7CiAgICAgc3RhdGljIElPU3VyZmFjZUFjY2VsZXJhdG9yUmVmIGFjY2VsZXJhdG9yOwogICAg
IGlmICghYWNjZWxlcmF0b3IpIHsKQEAgLTQwMywxMCArNDAzLDEwIEBAIHZvaWQgV2ViQ29yZTo6
SU9TdXJmYWNlOjpjb252ZXJ0VG9Gb3JtYXQoc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OklPU3Vy
ZmFjZT4mJiBpCiAKICAgICBJT1N1cmZhY2VSZWYgZGVzdGluYXRpb25JT1N1cmZhY2VSZWYgPSBk
ZXN0aW5hdGlvblN1cmZhY2UtPnN1cmZhY2UoKTsKICAgICBJT1N1cmZhY2VBY2NlbGVyYXRvckNv
bXBsZXRpb24gY29tcGxldGlvbjsKLSAgICBjb21wbGV0aW9uLmNvbXBsZXRpb25SZWZDb24gPSBu
ZXcgc3RkOjpmdW5jdGlvbjx2b2lkKHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpJT1N1cmZhY2U+
KT4gKFdURk1vdmUoY2FsbGJhY2spKTsKKyAgICBjb21wbGV0aW9uLmNvbXBsZXRpb25SZWZDb24g
PSBuZXcgV1RGOjpGdW5jdGlvbjx2b2lkKHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpJT1N1cmZh
Y2U+KT4gKFdURk1vdmUoY2FsbGJhY2spKTsKICAgICBjb21wbGV0aW9uLmNvbXBsZXRpb25SZWZD
b24yID0gZGVzdGluYXRpb25TdXJmYWNlLnJlbGVhc2UoKTsKICAgICBjb21wbGV0aW9uLmNvbXBs
ZXRpb25DYWxsYmFjayA9IFtdKHZvaWQgKmNvbXBsZXRpb25SZWZDb24sIElPUmV0dXJuLCB2b2lk
ICogY29tcGxldGlvblJlZkNvbjIpIHsKLSAgICAgICAgYXV0byogY2FsbGJhY2sgPSBzdGF0aWNf
Y2FzdDxzdGQ6OmZ1bmN0aW9uPHZvaWQoc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OklPU3VyZmFj
ZT4pPio+KGNvbXBsZXRpb25SZWZDb24pOworICAgICAgICBhdXRvKiBjYWxsYmFjayA9IHN0YXRp
Y19jYXN0PFdURjo6RnVuY3Rpb248dm9pZChzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6SU9TdXJm
YWNlPik+Kj4oY29tcGxldGlvblJlZkNvbik7CiAgICAgICAgIGF1dG8gZGVzdGluYXRpb25TdXJm
YWNlID0gc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OklPU3VyZmFjZT4oc3RhdGljX2Nhc3Q8V2Vi
Q29yZTo6SU9TdXJmYWNlKj4oY29tcGxldGlvblJlZkNvbjIpKTsKICAgICAgICAgCiAgICAgICAg
ICgqY2FsbGJhY2spKFdURk1vdmUoZGVzdGluYXRpb25TdXJmYWNlKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWFpblRocmVhZE5vdGlm
aWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWFpblRo
cmVhZE5vdGlmaWVyLmgKaW5kZXggZjE0MDUwZGQyZWY0NDY5YzAxODA5MmE1ZDdkODcyZTA2YzFl
ODEwMC4uMzc1MmRjMjc1ZTcxOTU3OGViZjE5NTk2ZjRmYTZiZjJmYzg4ZjliNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01haW5UaHJlYWRO
b3RpZmllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9NYWluVGhyZWFkTm90aWZpZXIuaApAQCAtMzYsNyArMzYsNyBAQCBwdWJsaWM6CiAgICAgfQog
CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRj4KLSAgICB2b2lkIG5vdGlmeShUIG5vdGlmaWNhdGlv
blR5cGUsIGNvbnN0IEYmIGNhbGxiYWNrRnVuY3RvcikKKyAgICB2b2lkIG5vdGlmeShUIG5vdGlm
aWNhdGlvblR5cGUsIEYmJiBjYWxsYmFja0Z1bmN0b3IpCiAgICAgewogICAgICAgICBBU1NFUlQo
bV9pc1ZhbGlkLmxvYWQoKSk7CiAgICAgICAgIGlmIChpc01haW5UaHJlYWQoKSkgewpAQCAtNDgs
NyArNDgsNyBAQCBwdWJsaWM6CiAgICAgICAgIGlmICghYWRkUGVuZGluZ05vdGlmaWNhdGlvbihu
b3RpZmljYXRpb25UeXBlKSkKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBSdW5Mb29w
OjptYWluKCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwg
bm90aWZpY2F0aW9uVHlwZSwgY2FsbGJhY2sgPSBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4oY2FsbGJh
Y2tGdW5jdG9yKV0geworICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3RoaXMsIHBy
b3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgbm90aWZpY2F0aW9uVHlwZSwgY2FsbGJhY2sg
PSBXVEY6OkZ1bmN0aW9uPHZvaWQoKT4oV1RGTW92ZShjYWxsYmFja0Z1bmN0b3IpKV0gewogICAg
ICAgICAgICAgaWYgKCFtX2lzVmFsaWQubG9hZCgpKQogICAgICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgICAgIGlmIChyZW1vdmVQZW5kaW5nTm90aWZpY2F0aW9uKG5vdGlmaWNhdGlvblR5
cGUpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL01lZGlhUGxheWVyUmVxdWVzdEluc3RhbGxNaXNzaW5nUGx1Z2luc0NhbGxiYWNrLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJSZXF1
ZXN0SW5zdGFsbE1pc3NpbmdQbHVnaW5zQ2FsbGJhY2suaAppbmRleCA5NWVkMmRhNjMzZjEyY2Fk
NDhlM2ZlMDAyNGMxMWMxNjdkNjc0NTNlLi4wNTg3ZDBkZjkyYjA2ODJhZjI2YzA4ZDhlZWNkNmZk
NDhmMmQ2OTVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvTWVkaWFQbGF5ZXJSZXF1ZXN0SW5zdGFsbE1pc3NpbmdQbHVnaW5zQ2FsbGJhY2su
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQ
bGF5ZXJSZXF1ZXN0SW5zdGFsbE1pc3NpbmdQbHVnaW5zQ2FsbGJhY2suaApAQCAtMjEsNiArMjEs
NyBAQAogI2RlZmluZSBNZWRpYVBsYXllclJlcXVlc3RJbnN0YWxsTWlzc2luZ1BsdWdpbnNDYWxs
YmFja19oCiAKICNpZiBFTkFCTEUoVklERU8pICYmIFVTRShHU1RSRUFNRVIpCisjaW5jbHVkZSA8
d3RmL0Z1bmN0aW9uLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewpAQCAtMjgsNyArMjksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBN
ZWRpYVBsYXllclJlcXVlc3RJbnN0YWxsTWlzc2luZ1BsdWdpbnNDYWxsYmFjayA6IHB1YmxpYyBS
ZWZDb3VudGVkPE1lZGlhUGxheWVyUmVxdWVzdEluc3RhbGxNaXNzaW5nUGx1Z2luc0NhbGxiYWNr
PiB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQoKTsKIHB1YmxpYzoKLSAgICBzdGF0aWMg
UmVmPE1lZGlhUGxheWVyUmVxdWVzdEluc3RhbGxNaXNzaW5nUGx1Z2luc0NhbGxiYWNrPiBjcmVh
dGUoc3RkOjpmdW5jdGlvbjx2b2lkICh1aW50MzJfdCk+JiYgZnVuY3Rpb24pCisgICAgc3RhdGlj
IFJlZjxNZWRpYVBsYXllclJlcXVlc3RJbnN0YWxsTWlzc2luZ1BsdWdpbnNDYWxsYmFjaz4gY3Jl
YXRlKFdURjo6RnVuY3Rpb248dm9pZCAodWludDMyX3QpPiYmIGZ1bmN0aW9uKQogICAgIHsKICAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTWVkaWFQbGF5ZXJSZXF1ZXN0SW5zdGFsbE1pc3Np
bmdQbHVnaW5zQ2FsbGJhY2soV1RGTW92ZShmdW5jdGlvbikpKTsKICAgICB9CkBAIC00NywxMiAr
NDgsMTIgQEAgcHVibGljOgogICAgIH0KIAogcHJpdmF0ZToKLSAgICBNZWRpYVBsYXllclJlcXVl
c3RJbnN0YWxsTWlzc2luZ1BsdWdpbnNDYWxsYmFjayhzdGQ6OmZ1bmN0aW9uPHZvaWQgKHVpbnQz
Ml90KT4mJiBmdW5jdGlvbikKKyAgICBNZWRpYVBsYXllclJlcXVlc3RJbnN0YWxsTWlzc2luZ1Bs
dWdpbnNDYWxsYmFjayhXVEY6OkZ1bmN0aW9uPHZvaWQgKHVpbnQzMl90KT4mJiBmdW5jdGlvbikK
ICAgICAgICAgOiBtX2Z1bmN0aW9uKFdURk1vdmUoZnVuY3Rpb24pKQogICAgIHsKICAgICB9CiAK
LSAgICBzdGQ6OmZ1bmN0aW9uPHZvaWQgKHVpbnQzMl90KT4gbV9mdW5jdGlvbjsKKyAgICBXVEY6
OkZ1bmN0aW9uPHZvaWQgKHVpbnQzMl90KT4gbV9mdW5jdGlvbjsKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3dpbi9HcmFwaGljc0NvbnRleHREaXJlY3QyRC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0RGlyZWN0MkQuY3BwCmluZGV4IDY0MDU5NzBm
Mjc1ZWJhNTJiNzFlMmRhYjRhZDc2MGVkOWEzMmUyZjIuLmQwNjY3YzNkMDBjZjI4ZTIzMWIyMWFl
OTYyOTRkMmNmNjk4YjNiNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHREaXJlY3QyRC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dERpcmVjdDJELmNwcApAQCAt
OTM1LDcgKzkzNSw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3UGF0aChjb25zdCBQYXRo
JiBwYXRoKQogICAgIGZsdXNoKCk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3V2l0
aG91dFNoYWRvdyhjb25zdCBGbG9hdFJlY3QmIC8qYm91bmRpbmdSZWN0Ki8sIGNvbnN0IHN0ZDo6
ZnVuY3Rpb248dm9pZChJRDJEMVJlbmRlclRhcmdldCopPiYgZHJhd0NvbW1hbmRzKQordm9pZCBH
cmFwaGljc0NvbnRleHQ6OmRyYXdXaXRob3V0U2hhZG93KGNvbnN0IEZsb2F0UmVjdCYgLypib3Vu
ZGluZ1JlY3QqLywgY29uc3QgV1RGOjpGdW5jdGlvbjx2b2lkKElEMkQxUmVuZGVyVGFyZ2V0Kik+
JiBkcmF3Q29tbWFuZHMpCiB7CiAgICAgZHJhd0NvbW1hbmRzKHBsYXRmb3JtQ29udGV4dCgpKTsK
IH0KQEAgLTk4MSw3ICs5ODEsNyBAQCBzdGF0aWMgdm9pZCBkcmF3V2l0aFNoYWRvd0hlbHBlcihJ
RDJEMVJlbmRlclRhcmdldCogY29udGV4dCwgSUQyRDFCaXRtYXAqIGJpdG1hcAogICAgIGRldmlj
ZUNvbnRleHQtPkRyYXdJbWFnZShjb21wb3NpdG9yLmdldCgpLCBEMkQxX0lOVEVSUE9MQVRJT05f
TU9ERV9MSU5FQVIpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd1dpdGhTaGFkb3co
Y29uc3QgRmxvYXRSZWN0JiBib3VuZGluZ1JlY3QsIGNvbnN0IHN0ZDo6ZnVuY3Rpb248dm9pZChJ
RDJEMVJlbmRlclRhcmdldCopPiYgZHJhd0NvbW1hbmRzKQordm9pZCBHcmFwaGljc0NvbnRleHQ6
OmRyYXdXaXRoU2hhZG93KGNvbnN0IEZsb2F0UmVjdCYgYm91bmRpbmdSZWN0LCBjb25zdCBXVEY6
OkZ1bmN0aW9uPHZvaWQoSUQyRDFSZW5kZXJUYXJnZXQqKT4mIGRyYXdDb21tYW5kcykKIHsKICAg
ICBhdXRvIGNvbnRleHQgPSBwbGF0Zm9ybUNvbnRleHQoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRIZWxwZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRIZWxwZXIuY3BwCmluZGV4IDA4MmZiN2NkYTMxYjZh
NGJmMTY1Y2ZiY2YxNDk4YzUwOWNkOTY4OGYuLmJhMTU2ZDE5ZGJkMGZkNzY5NDViOThjZjcyMzJh
NDgwYTZkMTMxZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QYXN0
ZWJvYXJkSGVscGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGFzdGVi
b2FyZEhlbHBlci5jcHAKQEAgLTI2NSw3ICsyNjUsNyBAQCBWZWN0b3I8R2RrQXRvbT4gUGFzdGVi
b2FyZEhlbHBlcjo6ZHJvcEF0b21zRm9yQ29udGV4dChHdGtXaWRnZXQqIHdpZGdldCwgR2RrRHJh
Zwogc3RhdGljIFNlbGVjdGlvbkRhdGEqIHNldHRpbmdDbGlwYm9hcmRTZWxlY3Rpb247CiAKIHN0
cnVjdCBDbGlwYm9hcmRTZXREYXRhIHsKLSAgICBDbGlwYm9hcmRTZXREYXRhKFNlbGVjdGlvbkRh
dGEmIHNlbGVjdGlvbiwgc3RkOjpmdW5jdGlvbjx2b2lkKCk+JiYgc2VsZWN0aW9uQ2xlYXJlZENh
bGxiYWNrKQorICAgIENsaXBib2FyZFNldERhdGEoU2VsZWN0aW9uRGF0YSYgc2VsZWN0aW9uLCBX
VEY6OkZ1bmN0aW9uPHZvaWQoKT4mJiBzZWxlY3Rpb25DbGVhcmVkQ2FsbGJhY2spCiAgICAgICAg
IDogc2VsZWN0aW9uRGF0YShzZWxlY3Rpb24pCiAgICAgICAgICwgc2VsZWN0aW9uQ2xlYXJlZENh
bGxiYWNrKFdURk1vdmUoc2VsZWN0aW9uQ2xlYXJlZENhbGxiYWNrKSkKICAgICB7CkBAIC0yNzYs
NyArMjc2LDcgQEAgc3RydWN0IENsaXBib2FyZFNldERhdGEgewogICAgIH0KIAogICAgIFJlZjxT
ZWxlY3Rpb25EYXRhPiBzZWxlY3Rpb25EYXRhOwotICAgIHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiBz
ZWxlY3Rpb25DbGVhcmVkQ2FsbGJhY2s7CisgICAgV1RGOjpGdW5jdGlvbnVuY3Rpb248dm9pZCgp
PiBzZWxlY3Rpb25DbGVhcmVkQ2FsbGJhY2s7CiB9OwogCiBzdGF0aWMgdm9pZCBnZXRDbGlwYm9h
cmRDb250ZW50c0NhbGxiYWNrKEd0a0NsaXBib2FyZCosIEd0a1NlbGVjdGlvbkRhdGEgKnNlbGVj
dGlvbkRhdGEsIGd1aW50IGluZm8sIGdwb2ludGVyIHVzZXJEYXRhKQpAQCAtMjkyLDcgKzI5Miw3
IEBAIHN0YXRpYyB2b2lkIGNsZWFyQ2xpcGJvYXJkQ29udGVudHNDYWxsYmFjayhHdGtDbGlwYm9h
cmQqLCBncG9pbnRlciB1c2VyRGF0YSkKICAgICAgICAgZGF0YS0+c2VsZWN0aW9uQ2xlYXJlZENh
bGxiYWNrKCk7CiB9CiAKLXZvaWQgUGFzdGVib2FyZEhlbHBlcjo6d3JpdGVDbGlwYm9hcmRDb250
ZW50cyhHdGtDbGlwYm9hcmQqIGNsaXBib2FyZCwgY29uc3QgU2VsZWN0aW9uRGF0YSYgc2VsZWN0
aW9uLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4mJiBwcmltYXJ5U2VsZWN0aW9uQ2xlYXJlZCkKK3Zv
aWQgUGFzdGVib2FyZEhlbHBlcjo6d3JpdGVDbGlwYm9hcmRDb250ZW50cyhHdGtDbGlwYm9hcmQq
IGNsaXBib2FyZCwgY29uc3QgU2VsZWN0aW9uRGF0YSYgc2VsZWN0aW9uLCBXVEY6OkZ1bmN0aW9u
PHZvaWQoKT4mJiBwcmltYXJ5U2VsZWN0aW9uQ2xlYXJlZCkKIHsKICAgICBHUmVmUHRyPEd0a1Rh
cmdldExpc3Q+IGxpc3QgPSB0YXJnZXRMaXN0Rm9yU2VsZWN0aW9uRGF0YShzZWxlY3Rpb24pOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGFzdGVib2FyZEhlbHBl
ci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRIZWxwZXIuaAppbmRl
eCA0YTRkZTk5NTZlZGU4ZjVlNWY3NmUyNWJmYTY0Zjg1NjNhNjNiNjg4Li4wOTVlZTRhZGQyMjg3
OTlkYjc4ZjFhZGQxN2QxYzQ4MDcwZDA2MDY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ndGsvUGFzdGVib2FyZEhlbHBlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2d0ay9QYXN0ZWJvYXJkSGVscGVyLmgKQEAgLTI2LDcgKzI2LDcgQEAKICNkZWZpbmUgUGFz
dGVib2FyZEhlbHBlcl9oCiAKICNpbmNsdWRlICJHUmVmUHRyR3RrLmgiCi0jaW5jbHVkZSA8ZnVu
Y3Rpb25hbD4KKyNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KICNpbmNsdWRlIDx3dGYvTm9uY29w
eWFibGUuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL2dsaWIvR1Jl
ZlB0ci5oPgpAQCAtNDcsNyArNDcsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBmaWxsU2VsZWN0aW9u
RGF0YShjb25zdCBTZWxlY3Rpb25EYXRhJiwgdW5zaWduZWQsIEd0a1NlbGVjdGlvbkRhdGEqKTsK
ICAgICB2b2lkIGZpbGxTZWxlY3Rpb25EYXRhKEd0a1NlbGVjdGlvbkRhdGEqLCB1bnNpZ25lZCwg
U2VsZWN0aW9uRGF0YSYpOwogICAgIFZlY3RvcjxHZGtBdG9tPiBkcm9wQXRvbXNGb3JDb250ZXh0
KEd0a1dpZGdldCosIEdka0RyYWdDb250ZXh0Kik7Ci0gICAgdm9pZCB3cml0ZUNsaXBib2FyZENv
bnRlbnRzKEd0a0NsaXBib2FyZCosIGNvbnN0IFNlbGVjdGlvbkRhdGEmLCBzdGQ6OmZ1bmN0aW9u
PHZvaWQoKT4mJiBwcmltYXJ5U2VsZWN0aW9uQ2xlYXJlZCA9IG51bGxwdHIpOworICAgIHZvaWQg
d3JpdGVDbGlwYm9hcmRDb250ZW50cyhHdGtDbGlwYm9hcmQqLCBjb25zdCBTZWxlY3Rpb25EYXRh
JiwgV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYgcHJpbWFyeVNlbGVjdGlvbkNsZWFyZWQgPSBudWxs
cHRyKTsKICAgICB2b2lkIGdldENsaXBib2FyZENvbnRlbnRzKEd0a0NsaXBib2FyZCosIFNlbGVj
dGlvbkRhdGEmKTsKIAogICAgIGVudW0gUGFzdGVib2FyZFRhcmdldFR5cGUgeyBUYXJnZXRUeXBl
TWFya3VwLCBUYXJnZXRUeXBlVGV4dCwgVGFyZ2V0VHlwZUltYWdlLCBUYXJnZXRUeXBlVVJJTGlz
dCwgVGFyZ2V0VHlwZU5ldHNjYXBlVVJMLCBUYXJnZXRUeXBlU21hcnRQYXN0ZSwgVGFyZ2V0VHlw
ZVVua25vd24gfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QbGF0
Zm9ybVBhc3RlYm9hcmRHdGsuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1BsYXRm
b3JtUGFzdGVib2FyZEd0ay5jcHAKaW5kZXggODQ4MWNiODQyN2U1OTAxNDk4MTU5ZTYwYWI4OGJi
ZmNlMGQwNzcwZS4uZWJhM2UwMzc2MjE4OThmODc1MzU2MGZmZmNmZGRkYzZiZGU2MjMzYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1BsYXRmb3JtUGFzdGVib2FyZEd0
ay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1BsYXRmb3JtUGFzdGVib2Fy
ZEd0ay5jcHAKQEAgLTM0LDcgKzM0LDcgQEAgUGxhdGZvcm1QYXN0ZWJvYXJkOjpQbGF0Zm9ybVBh
c3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKICAgICBBU1NFUlQobV9jbGlw
Ym9hcmQpOwogfQogCi12b2lkIFBsYXRmb3JtUGFzdGVib2FyZDo6d3JpdGVUb0NsaXBib2FyZChj
b25zdCBTZWxlY3Rpb25EYXRhJiBzZWxlY3Rpb24sIHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiYmIHBy
aW1hcnlTZWxlY3Rpb25DbGVhcmVkKQordm9pZCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OndyaXRlVG9D
bGlwYm9hcmQoY29uc3QgU2VsZWN0aW9uRGF0YSYgc2VsZWN0aW9uLCBXVEY6OkZ1bmN0aW9uPHZv
aWQoKT4mJiBwcmltYXJ5U2VsZWN0aW9uQ2xlYXJlZCkKIHsKICAgICBQYXN0ZWJvYXJkSGVscGVy
OjpzaW5nbGV0b24oKS53cml0ZUNsaXBib2FyZENvbnRlbnRzKG1fY2xpcGJvYXJkLCBzZWxlY3Rp
b24sIGd0a19jbGlwYm9hcmRfZ2V0KEdES19TRUxFQ1RJT05fUFJJTUFSWSkgPT0gbV9jbGlwYm9h
cmQgPyBXVEZNb3ZlKHByaW1hcnlTZWxlY3Rpb25DbGVhcmVkKSA6IG51bGxwdHIpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbklu
dGVyZmFjZUFWS2l0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxs
c2NyZWVuSW50ZXJmYWNlQVZLaXQuaAppbmRleCA4ZDNjNDczYzA2ZmE3ZDg0YTQ0Njk5YjA2MDIw
MDIzZjdjYjgzMGUwLi45OGI0ZGJkY2M4YjBkZWJhOWM4MDI4MDIzNDQ1Yzg3NGRhMTFmNzQ0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVu
SW50ZXJmYWNlQVZLaXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlk
ZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQuaApAQCAtMzQsOCArMzQsOCBAQAogI2luY2x1ZGUg
IlBsYXRmb3JtTGF5ZXIuaCIKICNpbmNsdWRlICJXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VB
VktpdC5oIgogI2luY2x1ZGUgIldlYlZpZGVvRnVsbHNjcmVlbk1vZGVsLmgiCi0jaW5jbHVkZSA8
ZnVuY3Rpb25hbD4KICNpbmNsdWRlIDxvYmpjL29iamMuaD4KKyNpbmNsdWRlIDx3dGYvRnVuY3Rp
b24uaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIu
aD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CkBAIC0xMDEsNyArMTAxLDcgQEAgcHVibGlj
OgogICAgIEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZSBtb2RlKCkg
Y29uc3QgeyByZXR1cm4gbV9tb2RlOyB9CiAgICAgYm9vbCBhbGxvd3NQaWN0dXJlSW5QaWN0dXJl
UGxheWJhY2soKSBjb25zdCB7IHJldHVybiBtX2FsbG93c1BpY3R1cmVJblBpY3R1cmVQbGF5YmFj
azsgfQogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgbWF5QXV0b21hdGljYWxseVNob3dWaWRlb1Bp
Y3R1cmVJblBpY3R1cmUoKSBjb25zdDsKLSAgICB2b2lkIGZ1bGxzY3JlZW5NYXlSZXR1cm5Ub0lu
bGluZShzdGQ6OmZ1bmN0aW9uPHZvaWQoYm9vbCk+IGNhbGxiYWNrKTsKKyAgICB2b2lkIGZ1bGxz
Y3JlZW5NYXlSZXR1cm5Ub0lubGluZShXVEY6OkZ1bmN0aW9uPHZvaWQoYm9vbCk+JiYgY2FsbGJh
Y2spOwogICAgIGJvb2wgd2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQoKSBjb25zdDsKICAg
ICB2b2lkIGFwcGxpY2F0aW9uRGlkQmVjb21lQWN0aXZlKCk7CiAKQEAgLTEzOCw3ICsxMzgsNyBA
QCBwcm90ZWN0ZWQ6CiAgICAgUmV0YWluUHRyPFVJV2luZG93PiBtX3BhcmVudFdpbmRvdzsKICAg
ICBSZXRhaW5QdHI8V2ViQVZQbGF5ZXJMYXllclZpZXc+IG1fcGxheWVyTGF5ZXJWaWV3OwogICAg
IEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZSBtX21vZGUgeyBIVE1M
TWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGVOb25lIH07Ci0gICAgc3RkOjpm
dW5jdGlvbjx2b2lkKGJvb2wpPiBtX3ByZXBhcmVUb0lubGluZUNhbGxiYWNrOworICAgIFdURjo6
RnVuY3Rpb248dm9pZChib29sKT4gbV9wcmVwYXJlVG9JbmxpbmVDYWxsYmFjazsKICAgICBSdW5M
b29wOjpUaW1lcjxXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdD4gbV93YXRjaGRvZ1Rp
bWVyOwogICAgIGJvb2wgbV9hbGxvd3NQaWN0dXJlSW5QaWN0dXJlUGxheWJhY2sgeyBmYWxzZSB9
OwogICAgIGJvb2wgbV9leGl0UmVxdWVzdGVkIHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZh
Y2VBVktpdC5tbQppbmRleCA2YmFiYzFlZDUyMGJiMjQ5MzViNWY5NmRiZGVhOTQ2MWY1MmVmZjU3
Li43NmZmZmMyMDA0OGRiZTQzYmRiNTQ4MTc4NjhiMmNhMzcyNzdjNjNlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZL
aXQubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVl
bkludGVyZmFjZUFWS2l0Lm1tCkBAIC04NDQsNyArODQ0LDcgQEAgdm9pZCBXZWJWaWRlb0Z1bGxz
Y3JlZW5JbnRlcmZhY2VBVktpdDo6cHJlcGFyZWRUb1JldHVyblRvSW5saW5lKGJvb2wgdmlzaWJs
ZSwgY28KICAgICAgICAgCiAgICAgICAgIFttX3BsYXllclZpZXdDb250cm9sbGVyIHZpZXddLmZy
YW1lID0gW21fcGFyZW50VmlldyBjb252ZXJ0UmVjdDppbmxpbmVSZWN0IHRvVmlldzpbbV9wbGF5
ZXJWaWV3Q29udHJvbGxlciB2aWV3XS5zdXBlcnZpZXddOwogCi0gICAgICAgIHN0ZDo6ZnVuY3Rp
b248dm9pZChib29sKT4gY2FsbGJhY2sgPSBXVEZNb3ZlKG1fcHJlcGFyZVRvSW5saW5lQ2FsbGJh
Y2spOworICAgICAgICBXVEY6OkZ1bmN0aW9uPHZvaWQoYm9vbCk+IGNhbGxiYWNrID0gV1RGTW92
ZShtX3ByZXBhcmVUb0lubGluZUNhbGxiYWNrKTsKICAgICAgICAgY2FsbGJhY2sodmlzaWJsZSk7
CiAgICAgfQogfQpAQCAtODU0LDkgKzg1NCw5IEBAIGJvb2wgV2ViVmlkZW9GdWxsc2NyZWVuSW50
ZXJmYWNlQVZLaXQ6Om1heUF1dG9tYXRpY2FsbHlTaG93VmlkZW9QaWN0dXJlSW5QaWN0dXJlCiAg
ICAgcmV0dXJuIFtwbGF5ZXJDb250cm9sbGVyKCkgaXNQbGF5aW5nXSAmJiBtX21vZGUgPT0gSFRN
TE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlU3RhbmRhcmQgJiYgc3VwcG9y
dHNQaWN0dXJlSW5QaWN0dXJlKCk7CiB9CiAKLXZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJm
YWNlQVZLaXQ6OmZ1bGxzY3JlZW5NYXlSZXR1cm5Ub0lubGluZShzdGQ6OmZ1bmN0aW9uPHZvaWQo
Ym9vbCk+IGNhbGxiYWNrKQordm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6
ZnVsbHNjcmVlbk1heVJldHVyblRvSW5saW5lKFdURjo6RnVuY3Rpb248dm9pZChib29sKT4mJiBj
YWxsYmFjaykKIHsKLSAgICBtX3ByZXBhcmVUb0lubGluZUNhbGxiYWNrID0gY2FsbGJhY2s7Cisg
ICAgbV9wcmVwYXJlVG9JbmxpbmVDYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spOwogICAgIGlm
IChtX2Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlcikKICAgICAgICAgbV9mdWxsc2NyZWVuQ2hhbmdl
T2JzZXJ2ZXItPmZ1bGxzY3JlZW5NYXlSZXR1cm5Ub0lubGluZSgpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bvd2VyT2JzZXJ2ZXJNYWMuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bvd2VyT2JzZXJ2ZXJNYWMuY3BwCmluZGV4IDMyOTAyZmRh
MDY4YWIxNmZmM2U1ZTQwNzIzYjhmMjNiMTc1MWQ3NzYuLjhmMzdkZDcxZjA3NzRlMzg1YjY2OTYy
OWNiZDJlMGQ1ODRjNDY2YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21h
Yy9Qb3dlck9ic2VydmVyTWFjLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMv
UG93ZXJPYnNlcnZlck1hYy5jcHAKQEAgLTMwLDggKzMwLDggQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi1Qb3dlck9ic2VydmVyOjpQb3dlck9ic2VydmVyKGNvbnN0IHN0ZDo6ZnVuY3Rpb248
dm9pZCgpPiYgcG93ZXJPbkhhbmRlcikKLSAgICA6IG1fcG93ZXJPbkhhbmRlcihwb3dlck9uSGFu
ZGVyKQorUG93ZXJPYnNlcnZlcjo6UG93ZXJPYnNlcnZlcihXVEY6OkZ1bmN0aW9uPHZvaWQoKT4m
JiBwb3dlck9uSGFuZGVyKQorICAgIDogbV9wb3dlck9uSGFuZGVyKFdURk1vdmUocG93ZXJPbkhh
bmRlcikpCiAgICAgLCBtX3Bvd2VyQ29ubmVjdGlvbigwKQogICAgICwgbV9ub3RpZmljYXRpb25Q
b3J0KG51bGxwdHIpCiAgICAgLCBtX25vdGlmaWVyUmVmZXJlbmNlKDApCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUG93ZXJPYnNlcnZlck1hYy5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWFjL1Bvd2VyT2JzZXJ2ZXJNYWMuaAppbmRleCA3NWZhOGI0MDEyOTBm
ZDM1YmZjNjVmOTUyZWU1ODcxZWQxZDY2ZjlhLi5jYjk3YjVkZTVmNjVmYzc2ZGVjZGFmM2QwMTYz
Y2M1NDYxYTJkMDljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUG93
ZXJPYnNlcnZlck1hYy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9Qb3dlck9i
c2VydmVyTWFjLmgKQEAgLTI4LDcgKzI4LDcgQEAKIAogI2ltcG9ydCA8SU9LaXQvSU9NZXNzYWdl
Lmg+CiAjaW1wb3J0IDxJT0tpdC9wd3JfbWd0L0lPUE1MaWIuaD4KLSNpbXBvcnQgPGZ1bmN0aW9u
YWw+CisjaW1wb3J0IDx3dGYvRnVuY3Rpb24uaD4KICNpbXBvcnQgPHd0Zi9Ob25jb3B5YWJsZS5o
PgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0zNywxMyArMzcsMTMgQEAgY2xhc3MgUG93ZXJP
YnNlcnZlciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUG93ZXJPYnNlcnZlcik7IFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwogCiBwdWJsaWM6Ci0gICAgUG93ZXJPYnNlcnZlcihjb25zdCBz
dGQ6OmZ1bmN0aW9uPHZvaWQoKT4mIHBvd2VyT25IYW5kZXIpOworICAgIFBvd2VyT2JzZXJ2ZXIo
V1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYgcG93ZXJPbkhhbmRlcik7CiAgICAgflBvd2VyT2JzZXJ2
ZXIoKTsKIAogcHJpdmF0ZToKICAgICB2b2lkIGRpZFJlY2VpdmVTeXN0ZW1Qb3dlck5vdGlmaWNh
dGlvbihpb19zZXJ2aWNlX3QsIHVpbnQzMl90IG1lc3NhZ2VUeXBlLCB2b2lkKiBtZXNzYWdlQXJn
dW1lbnQpOwogCi0gICAgc3RkOjpmdW5jdGlvbjx2b2lkKCk+IG1fcG93ZXJPbkhhbmRlcjsKKyAg
ICBXVEY6OkZ1bmN0aW9uPHZvaWQoKT4gbV9wb3dlck9uSGFuZGVyOwogICAgIGlvX2Nvbm5lY3Rf
dCBtX3Bvd2VyQ29ubmVjdGlvbjsKICAgICBJT05vdGlmaWNhdGlvblBvcnRSZWYgbV9ub3RpZmlj
YXRpb25Qb3J0OwogICAgIGlvX29iamVjdF90IG1fbm90aWZpZXJSZWZlcmVuY2U7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29yZU5TVVJMRXh0cmFzLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVOU1VSTEV4dHJhcy5tbQppbmRleCA2
ZmI2MDA1ZDNjOWVmNzdlNjk3Yzk1MTU2OGY3NmZmODI3M2E1N2Y0Li5hZWQ2MDU3Y2E1Mjc2ZDNh
NDNhMDIyYTYyMTBiYTQ1MTEwMzlhZTgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tYWMvV2ViQ29yZU5TVVJMRXh0cmFzLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21hYy9XZWJDb3JlTlNVUkxFeHRyYXMubW0KQEAgLTMyLDcgKzMyLDcgQEAKICNpbXBvcnQg
IldlYkNvcmVOU1N0cmluZ0V4dHJhcy5oIgogI2ltcG9ydCAiV2ViQ29yZU5TVVJMRXh0cmFzLmgi
CiAjaW1wb3J0ICJXZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmgiCi0jaW1wb3J0IDxmdW5jdGlvbmFs
PgorI2ltcG9ydCA8d3RmL0Z1bmN0aW9uLmg+CiAjaW1wb3J0IDx3dGYvSGV4TnVtYmVyLmg+CiAj
aW1wb3J0IDx3dGYvT2JqY1J1bnRpbWVFeHRyYXMuaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIu
aD4KQEAgLTI3MSw3ICsyNzEsNyBAQCBzdGF0aWMgQk9PTCBhbGxDaGFyYWN0ZXJzSW5JRE5TY3Jp
cHRXaGl0ZUxpc3QoY29uc3QgVUNoYXIgKmJ1ZmZlciwgaW50MzJfdCBsZW5ndAogICAgIHJldHVy
biBZRVM7CiB9CiAKLXN0YXRpYyBib29sIGlzU2Vjb25kTGV2ZWxEb21haW5OYW1lQWxsb3dlZEJ5
VExEUnVsZXMoY29uc3QgVUNoYXIqIGJ1ZmZlciwgaW50MzJfdCBsZW5ndGgsIGNvbnN0IHN0ZDo6
ZnVuY3Rpb248Ym9vbChVQ2hhcik+JiBjaGFyYWN0ZXJJc0FsbG93ZWQpCitzdGF0aWMgYm9vbCBp
c1NlY29uZExldmVsRG9tYWluTmFtZUFsbG93ZWRCeVRMRFJ1bGVzKGNvbnN0IFVDaGFyKiBidWZm
ZXIsIGludDMyX3QgbGVuZ3RoLCBjb25zdCBXVEY6OkZ1bmN0aW9uPGJvb2woVUNoYXIpPiYgY2hh
cmFjdGVySXNBbGxvd2VkKQogewogICAgIEFTU0VSVChsZW5ndGggPiAwKTsKIApAQCAtMjk0LDcg
KzI5NCw3IEBAIHN0YXRpYyBib29sIGlzU2Vjb25kTGV2ZWxEb21haW5OYW1lQWxsb3dlZEJ5VExE
UnVsZXMoY29uc3QgVUNoYXIqIGJ1ZmZlciwgaW50MzJfCiAgICAgeyBcCiAgICAgICAgIHN0YXRp
YyBjb25zdCBpbnQzMl90IHN1ZmZpeExlbmd0aCA9IHNpemVvZihzdWZmaXgpIC8gc2l6ZW9mKHN1
ZmZpeFswXSk7IFwKICAgICAgICAgaWYgKGxlbmd0aCA+IHN1ZmZpeExlbmd0aCAmJiAwID09IG1l
bWNtcChidWZmZXIgKyBsZW5ndGggLSBzdWZmaXhMZW5ndGgsIHN1ZmZpeCwgc2l6ZW9mKHN1ZmZp
eCkpKSBcCi0gICAgICAgICAgICByZXR1cm4gaXNTZWNvbmRMZXZlbERvbWFpbk5hbWVBbGxvd2Vk
QnlUTERSdWxlcyhidWZmZXIsIGxlbmd0aCAtIHN1ZmZpeExlbmd0aCwgZnVuY3Rpb24pOyBcCisg
ICAgICAgICAgICByZXR1cm4gaXNTZWNvbmRMZXZlbERvbWFpbk5hbWVBbGxvd2VkQnlUTERSdWxl
cyhidWZmZXIsIGxlbmd0aCAtIHN1ZmZpeExlbmd0aCwgW10oVUNoYXIgYykgeyByZXR1cm4gZnVu
Y3Rpb24oYyk7IH0pOyBcCiAgICAgfQogCiBzdGF0aWMgYm9vbCBpc1J1c3NpYW5Eb21haW5OYW1l
Q2hhcmFjdGVyKFVDaGFyIGNoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vQ2FwdHVyZURldmljZU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vQ2FwdHVyZURldmljZU1hbmFnZXIuY3BwCmluZGV4IDc1MDA1OTE3
ODljODEzYmZkY2JlMjVmZWVjZWExZmYxZGQ5MDZiMGQuLjZlMDkxNjYxOGYyOTU1NDM2MGYxZDhl
YmUxODdhYjhiZWRkMjUzZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL0NhcHR1cmVEZXZpY2VNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9DYXB0dXJlRGV2aWNlTWFuYWdlci5jcHAKQEAgLTExMyw3ICsx
MTMsNyBAQCBzdGF0aWMgQ2FwdHVyZURldmljZU1hbmFnZXI6Ok9ic2VydmVyVG9rZW4gbmV4dE9i
c2VydmVyVG9rZW4oKQogICAgIHJldHVybiArK25leHRUb2tlbjsKIH0KIAotQ2FwdHVyZURldmlj
ZU1hbmFnZXI6Ok9ic2VydmVyVG9rZW4gQ2FwdHVyZURldmljZU1hbmFnZXI6OmFkZENhcHR1cmVE
ZXZpY2VDaGFuZ2VkT2JzZXJ2ZXIoQ2FwdHVyZURldmljZUNoYW5nZWRDYWxsYmFjayBvYnNlcnZl
cikKK0NhcHR1cmVEZXZpY2VNYW5hZ2VyOjpPYnNlcnZlclRva2VuIENhcHR1cmVEZXZpY2VNYW5h
Z2VyOjphZGRDYXB0dXJlRGV2aWNlQ2hhbmdlZE9ic2VydmVyKENhcHR1cmVEZXZpY2VDaGFuZ2Vk
Q2FsbGJhY2smJiBvYnNlcnZlcikKIHsKICAgICBhdXRvIHRva2VuID0gbmV4dE9ic2VydmVyVG9r
ZW4oKTsKICAgICBtX29ic2VydmVycy5zZXQodG9rZW4sIFdURk1vdmUob2JzZXJ2ZXIpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL0NhcHR1cmVEZXZp
Y2VNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9DYXB0dXJl
RGV2aWNlTWFuYWdlci5oCmluZGV4IGRmZjAwMjM1OTJlNGQxNTZhYjgxY2IzMWJlOGQxNWFkODhl
Y2E2NGQuLmRmYzYwZDFjMjRlZDY5OWFiNjgwNTdmYTY1ODdlNjUxZjE1MDY5YzYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL0NhcHR1cmVEZXZpY2VNYW5h
Z2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vQ2FwdHVyZURl
dmljZU1hbmFnZXIuaApAQCAtMzQsOSArMzQsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNs
YXNzIENhcHR1cmVEZXZpY2VNYW5hZ2VyIHsKIHB1YmxpYzoKLSAgICB1c2luZyBDYXB0dXJlRGV2
aWNlQ2hhbmdlZENhbGxiYWNrID0gc3RkOjpmdW5jdGlvbjx2b2lkKCk+OworICAgIHVzaW5nIENh
cHR1cmVEZXZpY2VDaGFuZ2VkQ2FsbGJhY2sgPSBXVEY6OkZ1bmN0aW9uPHZvaWQoKT47CiAgICAg
dXNpbmcgT2JzZXJ2ZXJUb2tlbiA9IHVpbnQzMl90OwotICAgIHZpcnR1YWwgT2JzZXJ2ZXJUb2tl
biBhZGRDYXB0dXJlRGV2aWNlQ2hhbmdlZE9ic2VydmVyKENhcHR1cmVEZXZpY2VDaGFuZ2VkQ2Fs
bGJhY2spOworICAgIHZpcnR1YWwgT2JzZXJ2ZXJUb2tlbiBhZGRDYXB0dXJlRGV2aWNlQ2hhbmdl
ZE9ic2VydmVyKENhcHR1cmVEZXZpY2VDaGFuZ2VkQ2FsbGJhY2smJik7CiAgICAgdmlydHVhbCB2
b2lkIHJlbW92ZUNhcHR1cmVEZXZpY2VDaGFuZ2VkT2JzZXJ2ZXIoT2JzZXJ2ZXJUb2tlbik7CiAK
ICAgICB2aXJ0dWFsIFZlY3RvcjxDYXB0dXJlRGV2aWNlPiYgY2FwdHVyZURldmljZXMoKSA9IDA7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGlt
ZU1lZGlhU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1Jl
YWx0aW1lTWVkaWFTb3VyY2UuY3BwCmluZGV4IDMzMjQ2YTAxY2RlODRhMzYyZTFjODY5MTU0MzZl
YjIwYmM0MWU1ZTcuLmIzODY2MjZhYjkzYWI0NGFjNGY4OGQzYzIyZTVlN2U3NTE1YjJkZmIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVk
aWFTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1Jl
YWx0aW1lTWVkaWFTb3VyY2UuY3BwCkBAIC04ODIsNyArODgyLDcgQEAgdm9pZCBSZWFsdGltZU1l
ZGlhU291cmNlOjpzZXRFY2hvQ2FuY2VsbGF0aW9uKGJvb2wgZWNob0NhbmNlbGxhdGlvbikKICAg
ICBzZXR0aW5nc0RpZENoYW5nZSgpOwogfQogCi12b2lkIFJlYWx0aW1lTWVkaWFTb3VyY2U6OnNj
aGVkdWxlRGVmZXJyZWRUYXNrKHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiYmIGZ1bmN0aW9uKQordm9p
ZCBSZWFsdGltZU1lZGlhU291cmNlOjpzY2hlZHVsZURlZmVycmVkVGFzayhXVEY6OkZ1bmN0aW9u
PHZvaWQoKT4mJiBmdW5jdGlvbikKIHsKICAgICBBU1NFUlQoZnVuY3Rpb24pOwogICAgIGNhbGxP
bk1haW5UaHJlYWQoW3dlYWtUaGlzID0gY3JlYXRlV2Vha1B0cigpLCBmdW5jdGlvbiA9IFdURk1v
dmUoZnVuY3Rpb24pXSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlLmgKaW5kZXggMDQxMGVlNWM3MjdmM2NmMmRl
MGM5MjQwMjljZjk1ZWEyNTIxZWRmOC4uNDAzOWM5NTNkYzk1ZWMzOWM3ZjkwNzA5YjFhZDBiZDdj
YmU2MGRiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
UmVhbHRpbWVNZWRpYVNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2UuaApAQCAtMTkwLDggKzE5MCw4IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIGNvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXMmIGNhcGFi
aWxpdGllcygpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIGNvbnN0IFJlYWx0aW1lTWVkaWFTb3Vy
Y2VTZXR0aW5ncyYgc2V0dGluZ3MoKSBjb25zdCA9IDA7CiAKLSAgICB1c2luZyBTdWNjZXNzSGFu
ZGxlciA9IHN0ZDo6ZnVuY3Rpb248dm9pZCgpPjsKLSAgICB1c2luZyBGYWlsdXJlSGFuZGxlciA9
IHN0ZDo6ZnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcmIGJhZENvbnN0cmFpbnQsIGNvbnN0IFN0
cmluZyYgZXJyb3JTdHJpbmcpPjsKKyAgICB1c2luZyBTdWNjZXNzSGFuZGxlciA9IFdURjo6RnVu
Y3Rpb248dm9pZCgpPjsKKyAgICB1c2luZyBGYWlsdXJlSGFuZGxlciA9IFdURjo6RnVuY3Rpb248
dm9pZChjb25zdCBTdHJpbmcmIGJhZENvbnN0cmFpbnQsIGNvbnN0IFN0cmluZyYgZXJyb3JTdHJp
bmcpPjsKICAgICB2aXJ0dWFsIHZvaWQgYXBwbHlDb25zdHJhaW50cyhjb25zdCBNZWRpYUNvbnN0
cmFpbnRzJiwgU3VjY2Vzc0hhbmRsZXImJiwgRmFpbHVyZUhhbmRsZXImJik7CiAgICAgc3RkOjpv
cHRpb25hbDxzdGQ6OnBhaXI8U3RyaW5nLCBTdHJpbmc+PiBhcHBseUNvbnN0cmFpbnRzKGNvbnN0
IE1lZGlhQ29uc3RyYWludHMmKTsKIApAQCAtMjEyLDcgKzIxMiw3IEBAIHB1YmxpYzoKIHByb3Rl
Y3RlZDoKICAgICBSZWFsdGltZU1lZGlhU291cmNlKGNvbnN0IFN0cmluZyYgaWQsIFR5cGUsIGNv
bnN0IFN0cmluZyYgbmFtZSk7CiAKLSAgICB2b2lkIHNjaGVkdWxlRGVmZXJyZWRUYXNrKHN0ZDo6
ZnVuY3Rpb248dm9pZCgpPiYmKTsKKyAgICB2b2lkIHNjaGVkdWxlRGVmZXJyZWRUYXNrKFdURjo6
RnVuY3Rpb248dm9pZCgpPiYmKTsKIAogICAgIHZpcnR1YWwgdm9pZCBiZWdpbkNvbmZpZ3VyYXRp
b24oKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgY29tbWl0Q29uZmlndXJhdGlvbigpIHsgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vaW9zL0FWQXVkaW9T
ZXNzaW9uQ2FwdHVyZURldmljZU1hbmFnZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9pb3MvQVZBdWRpb1Nlc3Npb25DYXB0dXJlRGV2aWNlTWFuYWdlci5tbQppbmRl
eCBjYjAwOGNiYmI5MWFiYjY5NWEwZTVlNzQ0NGZhNjA4Zjk0NzQ4MTJlLi4wZmRhMTNmMTFlMjdm
NGViYTQ0YWIwOWUwZWQ0OWU3ZWU4NDAxMzgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9pb3MvQVZBdWRpb1Nlc3Npb25DYXB0dXJlRGV2aWNlTWFuYWdl
ci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9pb3MvQVZBdWRp
b1Nlc3Npb25DYXB0dXJlRGV2aWNlTWFuYWdlci5tbQpAQCAtNDAsMTggKzQwLDE4IEBAIFNPRlRf
TElOS19DTEFTUyhBVkZvdW5kYXRpb24sIEFWQXVkaW9TZXNzaW9uKQogdm9pZCogQXZhaWxhYmxl
SW5wdXRzQ29udGV4dCA9ICZBdmFpbGFibGVJbnB1dHNDb250ZXh0OwogCiBAaW50ZXJmYWNlIFdl
YkFWQXVkaW9TZXNzaW9uQXZhaWxhYmxlSW5wdXRzTGlzdGVuZXIgOiBOU09iamVjdCB7Ci0gICAg
c3RkOjpmdW5jdGlvbjx2b2lkKCk+IF9jYWxsYmFjazsKKyAgICBXVEY6OkZ1bmN0aW9uPHZvaWQo
KT4gX2NhbGxiYWNrOwogfQogQGVuZAogCiBAaW1wbGVtZW50YXRpb24gV2ViQVZBdWRpb1Nlc3Np
b25BdmFpbGFibGVJbnB1dHNMaXN0ZW5lcgotLSAoaWQpaW5pdFdpdGhDYWxsYmFjazooc3RkOjpm
dW5jdGlvbjx2b2lkKCk+KWNhbGxiYWNrCistIChpZClpbml0V2l0aENhbGxiYWNrOihXVEY6OkZ1
bmN0aW9uPHZvaWQoKT4mJiljYWxsYmFjawogewogICAgIHNlbGYgPSBbc3VwZXIgaW5pdF07CiAg
ICAgaWYgKCFzZWxmKQogICAgICAgICByZXR1cm4gbmlsOwogCi0gICAgX2NhbGxiYWNrID0gY2Fs
bGJhY2s7CisgICAgX2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayk7CiAgICAgcmV0dXJuIHNl
bGY7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L21hYy9Db3JlQXVkaW9DYXB0dXJlU291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9tYWMvQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZS5oCmluZGV4IGNlMGJkZWUxNjgy
NDcxMGU3MzRlMDExZjkyNDRkYzlkNmVhZTc0MTUuLjhlODk3NDMyMzBhMDNiMGI3ZWExNWExNTZl
YTZiZjJhNTM4MjI3NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL21hYy9Db3JlQXVkaW9DYXB0dXJlU291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0NvcmVBdWRpb0NhcHR1cmVTb3VyY2UuaApAQCAtNjEs
NyArNjEsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBhZGRFY2hvQ2FuY2VsbGF0aW9uU291cmNlKEF1
ZGlvU2FtcGxlRGF0YVNvdXJjZSYpOwogICAgIHZvaWQgcmVtb3ZlRWNob0NhbmNlbGxhdGlvblNv
dXJjZShBdWRpb1NhbXBsZURhdGFTb3VyY2UmKTsKIAotICAgIHVzaW5nIE1pY3JvcGhvbmVEYXRh
Q2FsbGJhY2sgPSBzdGQ6OmZ1bmN0aW9uPHZvaWQoY29uc3QgTWVkaWFUaW1lJiBzYW1wbGVUaW1l
LCBjb25zdCBQbGF0Zm9ybUF1ZGlvRGF0YSYgYXVkaW9EYXRhLCBjb25zdCBBdWRpb1N0cmVhbURl
c2NyaXB0aW9uJiBkZXNjcmlwdGlvbiwgc2l6ZV90IHNhbXBsZUNvdW50KT47CisgICAgdXNpbmcg
TWljcm9waG9uZURhdGFDYWxsYmFjayA9IFdURjo6RnVuY3Rpb248dm9pZChjb25zdCBNZWRpYVRp
bWUmIHNhbXBsZVRpbWUsIGNvbnN0IFBsYXRmb3JtQXVkaW9EYXRhJiBhdWRpb0RhdGEsIGNvbnN0
IEF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mIGRlc2NyaXB0aW9uLCBzaXplX3Qgc2FtcGxlQ291bnQp
PjsKIAogICAgIHVpbnQ2NF90IGFkZE1pY3JvcGhvbmVEYXRhQ29uc3VtZXIoTWljcm9waG9uZURh
dGFDYWxsYmFjayYmKTsKICAgICB2b2lkIHJlbW92ZU1pY3JvcGhvbmVEYXRhQ29uc3VtZXIodWlu
dDY0X3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9TY3JvbGxB
bmltYXRvck1vY2suY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9TY3JvbGxBbmlt
YXRvck1vY2suY3BwCmluZGV4IGMwODAzODEwZWRkOGQ1Y2ZkZGFlNGI3NjQ5MWEzODc3NmIyNzZi
ZmIuLjUyMmFlYjJhY2RiNTI4OTNhYWRjNjYyNDExNzlkMjU0ZWI0OWY4ZjYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svU2Nyb2xsQW5pbWF0b3JNb2NrLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1Njcm9sbEFuaW1hdG9yTW9jay5jcHAKQEAg
LTM2LDcgKzM2LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1TY3JvbGxBbmltYXRvck1v
Y2s6OlNjcm9sbEFuaW1hdG9yTW9jayhTY3JvbGxhYmxlQXJlYSYgc2Nyb2xsYWJsZUFyZWEsIHN0
ZDo6ZnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcmKT4mJiBsb2dnZXIpCitTY3JvbGxBbmltYXRv
ck1vY2s6OlNjcm9sbEFuaW1hdG9yTW9jayhTY3JvbGxhYmxlQXJlYSYgc2Nyb2xsYWJsZUFyZWEs
IFdURjo6RnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcmKT4mJiBsb2dnZXIpCiAgICAgOiBTY3Jv
bGxBbmltYXRvcihzY3JvbGxhYmxlQXJlYSkKICAgICAsIG1fbG9nZ2VyKFdURk1vdmUobG9nZ2Vy
KSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svU2Nyb2xsQW5p
bWF0b3JNb2NrLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1Njcm9sbEFuaW1hdG9y
TW9jay5oCmluZGV4IDg1ZGM0ZjZlZGMzZTViM2NjZTQ1Mzc4M2U2ZTBkM2Q5NTExMjRmN2QuLjIz
MGI5YWYzMWQwN2ZiMjgzYjY2YjFkOWYyNjZiODAxYWNmYzMyMmEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svU2Nyb2xsQW5pbWF0b3JNb2NrLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbW9jay9TY3JvbGxBbmltYXRvck1vY2suaApAQCAtNDAsNyArNDAs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAvLyB0aGUgaW50ZXJuYWwgc2V0dGluZyBlbmFibGVN
b2NrU2Nyb2xsQW5pbWF0b3IuCiBjbGFzcyBTY3JvbGxBbmltYXRvck1vY2sgZmluYWwgOiBwdWJs
aWMgU2Nyb2xsQW5pbWF0b3IgewogcHVibGljOgotICAgIFNjcm9sbEFuaW1hdG9yTW9jayhTY3Jv
bGxhYmxlQXJlYSYsIHN0ZDo6ZnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcmKT4mJik7CisgICAg
U2Nyb2xsQW5pbWF0b3JNb2NrKFNjcm9sbGFibGVBcmVhJiwgV1RGOjpGdW5jdGlvbjx2b2lkKGNv
bnN0IFN0cmluZyYpPiYmKTsKICAgICB2aXJ0dWFsIH5TY3JvbGxBbmltYXRvck1vY2soKTsKIAog
I2lmIEVOQUJMRShSVUJCRVJfQkFORElORykKQEAgLTY4LDcgKzY4LDcgQEAgcHJpdmF0ZToKICAg
ICB2b2lkIG1vdXNlRXhpdGVkU2Nyb2xsYmFyKFNjcm9sbGJhciopIGNvbnN0IG92ZXJyaWRlOwog
ICAgIHZvaWQgbW91c2VJc0Rvd25JblNjcm9sbGJhcihTY3JvbGxiYXIqLCBib29sKSBjb25zdCBv
dmVycmlkZTsKIAotICAgIHN0ZDo6ZnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcmKT4gbV9sb2dn
ZXI7CisgICAgV1RGOjpGdW5jdGlvbjx2b2lkKGNvbnN0IFN0cmluZyYpPiBtX2xvZ2dlcjsKICAg
ICBTY3JvbGxiYXIqIG1fdmVydGljYWxTY3JvbGxiYXIgeyBudWxscHRyIH07CiAgICAgU2Nyb2xs
YmFyKiBtX2hvcml6b250YWxTY3JvbGxiYXIgeyBudWxscHRyIH07CiB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Db29raWVTdG9yYWdlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Nvb2tpZVN0b3JhZ2UuaAppbmRleCBjNTA1M2NjOTA1
ZGI2ZTgxYmY2ZjRlNWQ2OGY5ZjU4ODU2MDAyMzJjLi44MWVmY2JmMDA1ZTg0ZDUzYTUyNGM2M2Ri
NTMzNmJiYjcyZmM4NTlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL0Nvb2tpZVN0b3JhZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L0Nvb2tpZVN0b3JhZ2UuaApAQCAtMjUsMTMgKzI1LDEzIEBACiAKICNwcmFnbWEgb25jZQogCi0j
aW5jbHVkZSA8ZnVuY3Rpb25hbD4KKyNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBjbGFzcyBOZXR3b3JrU3RvcmFnZVNlc3Npb247CiAKLVdFQkNPUkVf
RVhQT1JUIHZvaWQgc3RhcnRPYnNlcnZpbmdDb29raWVDaGFuZ2VzKGNvbnN0IE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbiYsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4mJik7CitXRUJDT1JFX0VYUE9SVCB2
b2lkIHN0YXJ0T2JzZXJ2aW5nQ29va2llQ2hhbmdlcyhjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Np
b24mLCBXVEY6OkZ1bmN0aW9uPHZvaWQgKCk+JiYpOwogV0VCQ09SRV9FWFBPUlQgdm9pZCBzdG9w
T2JzZXJ2aW5nQ29va2llQ2hhbmdlcyhjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mKTsKIAog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3Rh
dGVOb3RpZmllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtT
dGF0ZU5vdGlmaWVyLmNwcAppbmRleCA1NTc0YTM1ODM0Y2M2MDFmNTg2ZWVkNzk1MmM1YWE0ODEx
NmY4OWVmLi5hZDE1ZTVjZjNjM2ZkMTUyNmY3YTY0NDg1MDQwYjVkOTk4MmM5MzBkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdGF0ZU5vdGlmaWVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdGF0ZU5v
dGlmaWVyLmNwcApAQCAtNDgsNyArNDgsNyBAQCBOZXR3b3JrU3RhdGVOb3RpZmllciYgbmV0d29y
a1N0YXRlTm90aWZpZXIoKQogICAgIHJldHVybiBuZXR3b3JrU3RhdGVOb3RpZmllcjsKIH0KIAot
dm9pZCBOZXR3b3JrU3RhdGVOb3RpZmllcjo6YWRkTmV0d29ya1N0YXRlQ2hhbmdlTGlzdGVuZXIo
c3RkOjpmdW5jdGlvbjx2b2lkIChib29sKT4gbGlzdGVuZXIpCit2b2lkIE5ldHdvcmtTdGF0ZU5v
dGlmaWVyOjphZGROZXR3b3JrU3RhdGVDaGFuZ2VMaXN0ZW5lcihXVEY6OkZ1bmN0aW9uPHZvaWQg
KGJvb2wpPiYmIGxpc3RlbmVyKQogewogICAgIEFTU0VSVChsaXN0ZW5lcik7CiAjaWYgUExBVEZP
Uk0oSU9TKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3
b3JrU3RhdGVOb3RpZmllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3
b3JrU3RhdGVOb3RpZmllci5oCmluZGV4IDUyODJlYzA2NmFiYmEyMzcxNzY4YTg0YWQ5YTJhNTIw
NjBiZDM0MmYuLmMzYTQyOTAzY2QwYjg5Y2E2MmExYjE4NTI2MTNlZWQwYWU4NmExODEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0YXRlTm90aWZp
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdGF0ZU5v
dGlmaWVyLmgKQEAgLTI2LDggKzI2LDggQEAKICNpZm5kZWYgTmV0d29ya1N0YXRlTm90aWZpZXJf
aAogI2RlZmluZSBOZXR3b3JrU3RhdGVOb3RpZmllcl9oCiAKLSNpbmNsdWRlIDxmdW5jdGlvbmFs
PgogI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CisjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+
CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgog
CkBAIC01OSw3ICs1OSw3IEBAIHB1YmxpYzoKICNpZiBQTEFURk9STShJT1MpCiAgICAgfk5ldHdv
cmtTdGF0ZU5vdGlmaWVyKCk7CiAjZW5kaWYKLSAgICB2b2lkIGFkZE5ldHdvcmtTdGF0ZUNoYW5n
ZUxpc3RlbmVyKHN0ZDo6ZnVuY3Rpb248dm9pZCAoYm9vbCBpc09uTGluZSk+KTsKKyAgICB2b2lk
IGFkZE5ldHdvcmtTdGF0ZUNoYW5nZUxpc3RlbmVyKFdURjo6RnVuY3Rpb248dm9pZCAoYm9vbCBp
c09uTGluZSk+JiYpOwogCiAgICAgYm9vbCBvbkxpbmUoKSBjb25zdDsKIApAQCAtNjcsNyArNjcs
NyBAQCBwcml2YXRlOgogI2lmICFQTEFURk9STShJT1MpCiAgICAgYm9vbCBtX2lzT25MaW5lOwog
I2VuZGlmCi0gICAgVmVjdG9yPHN0ZDo6ZnVuY3Rpb248dm9pZCAoYm9vbCk+PiBtX2xpc3RlbmVy
czsKKyAgICBWZWN0b3I8V1RGOjpGdW5jdGlvbjx2b2lkIChib29sKT4+IG1fbGlzdGVuZXJzOwog
CiAgICAgdm9pZCBub3RpZnlOZXR3b3JrU3RhdGVDaGFuZ2UoKSBjb25zdDsKICAgICB2b2lkIHVw
ZGF0ZVN0YXRlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5jcHAKaW5kZXggNTViZTljY2Y0MmE2ZmMxMWQxNTY3
YmMwN2M0ZjkxNDRhY2Y2M2JmMy4uOThkYTA4MmFlZTYzNDc4OTcwYmNlMDkzOTU2ZjMzYzE5OGE1
NjUxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3Jr
U3RvcmFnZVNlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
TmV0d29ya1N0b3JhZ2VTZXNzaW9uLmNwcApAQCAtNTAsNyArNTAsNyBAQCB2b2lkIE5ldHdvcmtT
dG9yYWdlU2Vzc2lvbjo6ZGVzdHJveVNlc3Npb24oU2Vzc2lvbklEIHNlc3Npb25JRCkKICAgICBn
bG9iYWxTZXNzaW9uTWFwKCkucmVtb3ZlKHNlc3Npb25JRCk7CiB9CiAKLXZvaWQgTmV0d29ya1N0
b3JhZ2VTZXNzaW9uOjpmb3JFYWNoKHN0ZDo6ZnVuY3Rpb248dm9pZChjb25zdCBXZWJDb3JlOjpO
ZXR3b3JrU3RvcmFnZVNlc3Npb24mKT4gZnVuY3RvcikKK3ZvaWQgTmV0d29ya1N0b3JhZ2VTZXNz
aW9uOjpmb3JFYWNoKGNvbnN0IFdURjo6RnVuY3Rpb248dm9pZChjb25zdCBXZWJDb3JlOjpOZXR3
b3JrU3RvcmFnZVNlc3Npb24mKT4mIGZ1bmN0b3IpCiB7CiAgICAgZnVuY3RvcihkZWZhdWx0U3Rv
cmFnZVNlc3Npb24oKSk7CiAgICAgZm9yIChhdXRvJiBzdG9yYWdlU2Vzc2lvbiA6IGdsb2JhbFNl
c3Npb25NYXAoKS52YWx1ZXMoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oCmluZGV4IGIwOTc2ZDk3NTIwNjI4OGU3
MTRkYmMwZmNjYjU2NDZiMzM3NTg5MTUuLjI4NTVjYjc5ZDIxNmE2Y2U0ZmQ4OGVkYTUzOTQzMjNi
Yzg3NDU3ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0
d29ya1N0b3JhZ2VTZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaApAQCAtMjcsNyArMjcsNyBAQAogCiAjaW5jbHVkZSAi
Q3JlZGVudGlhbFN0b3JhZ2UuaCIKICNpbmNsdWRlICJTZXNzaW9uSUQuaCIKLSNpbmNsdWRlIDxm
dW5jdGlvbmFsPgorI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgogI2luY2x1ZGUgPHd0Zi9IYXNo
U2V0Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKQEAgLTYyLDcgKzYyLDcg
QEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIGVuc3VyZVByaXZhdGVC
cm93c2luZ1Nlc3Npb24oU2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIGlkZW50aWZpZXJCYXNlID0g
U3RyaW5nKCkpOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIGVuc3VyZVNlc3Npb24o
U2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIGlkZW50aWZpZXJCYXNlID0gU3RyaW5nKCkpOwogICAg
IFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIGRlc3Ryb3lTZXNzaW9uKFNlc3Npb25JRCk7Ci0g
ICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQgZm9yRWFjaChzdGQ6OmZ1bmN0aW9uPHZvaWQo
Y29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJik+KTsKKyAgICBXRUJDT1JFX0VY
UE9SVCBzdGF0aWMgdm9pZCBmb3JFYWNoKGNvbnN0IFdURjo6RnVuY3Rpb248dm9pZChjb25zdCBX
ZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mKT4mKTsKIAogICAgIFdFQkNPUkVfRVhQT1JU
IHN0YXRpYyB2b2lkIHN3aXRjaFRvTmV3VGVzdGluZ1Nlc3Npb24oKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Db29raWVTdG9yYWdlQ0ZOZXQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Db29raWVTdG9yYWdlQ0ZOZXQu
Y3BwCmluZGV4IDYxOWIwNzg5MDlkMzFiZDQ0YzEzY2NmYzkzMmEzY2RkZGJjOGNhNTMuLmYzY2Uy
MzhmNWVlOTU0MmIyMmI5ZmQ5MWM3ZTdkYzk0ZTVjZDI4MGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvQ29va2llU3RvcmFnZUNGTmV0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0Nvb2tpZVN0b3JhZ2VDRk5ldC5jcHAK
QEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJDb29raWVTdG9yYWdlLmgiCiAKICNpbmNsdWRl
ICJOZXR3b3JrU3RvcmFnZVNlc3Npb24uaCIKKyNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KICNp
bmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5j
bHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CkBAIC00Myw5ICs0NCw5IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogI2lmIFBMQVRGT1JNKFdJTikKIAotc3RhdGljIEhhc2hNYXA8Q0ZIVFRQQ29v
a2llU3RvcmFnZVJlZiwgc3RkOjpmdW5jdGlvbjx2b2lkICgpPj4mIGNvb2tpZUNoYW5nZUNhbGxi
YWNrTWFwKCkKK3N0YXRpYyBIYXNoTWFwPENGSFRUUENvb2tpZVN0b3JhZ2VSZWYsIFdURjo6RnVu
Y3Rpb248dm9pZCAoKT4+JiBjb29raWVDaGFuZ2VDYWxsYmFja01hcCgpCiB7Ci0gICAgc3RhdGlj
IE5ldmVyRGVzdHJveWVkPEhhc2hNYXA8Q0ZIVFRQQ29va2llU3RvcmFnZVJlZiwgc3RkOjpmdW5j
dGlvbjx2b2lkICgpPj4+IG1hcDsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaE1hcDxD
RkhUVFBDb29raWVTdG9yYWdlUmVmLCBXVEY6OkZ1bmN0aW9uPHZvaWQgKCk+Pj4gbWFwOwogICAg
IHJldHVybiBtYXA7CiB9CiAKQEAgLTY4LDcgKzY5LDcgQEAgc3RhdGljIGlubGluZSBDRlJ1bkxv
b3BSZWYgY29va2llU3RvcmFnZU9ic2VydmVyUnVuTG9vcCgpCiAgICAgcmV0dXJuIGxvYWRlclJ1
bkxvb3AoKTsKIH0KIAotdm9pZCBzdGFydE9ic2VydmluZ0Nvb2tpZUNoYW5nZXMoY29uc3QgTmV0
d29ya1N0b3JhZ2VTZXNzaW9uJiBzdG9yYWdlU2Vzc2lvbiwgc3RkOjpmdW5jdGlvbjx2b2lkICgp
PiYmIGNhbGxiYWNrKQordm9pZCBzdGFydE9ic2VydmluZ0Nvb2tpZUNoYW5nZXMoY29uc3QgTmV0
d29ya1N0b3JhZ2VTZXNzaW9uJiBzdG9yYWdlU2Vzc2lvbiwgV1RGOjpGdW5jdGlvbjx2b2lkICgp
PiYmIGNhbGxiYWNrKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvU29ja2V0U3RyZWFtSGFuZGxl
SW1wbENGTmV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvU29ja2V0
U3RyZWFtSGFuZGxlSW1wbENGTmV0LmNwcAppbmRleCBlZDQxMDlhZTZkNzY5ODAxMWUzNGUyNTJk
MjY0ZjY4MTkxMTljOWZhLi40MTc2ODAwOGQ4MzE1Y2NlOWNhZDZjNDYyYTQwZDRkMzIxY2NmZTRk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1NvY2tldFN0
cmVhbUhhbmRsZUltcGxDRk5ldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jZi9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsQ0ZOZXQuY3BwCkBAIC0xNDQsNyArMTQ0LDcg
QEAgQ0ZTdHJpbmdSZWYgU29ja2V0U3RyZWFtSGFuZGxlSW1wbDo6Y29weVBBQ0V4ZWN1dGlvbkRl
c2NyaXB0aW9uKHZvaWQqKQogICAgIHJldHVybiBDRlNUUigiV2ViU29ja2V0IHByb3h5IFBBQyBm
aWxlIGV4ZWN1dGlvbiIpOwogfQogCi1zdGF0aWMgdm9pZCBjYWxsT25NYWluVGhyZWFkQW5kV2Fp
dChzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4gZnVuY3Rpb24pCitzdGF0aWMgdm9pZCBjYWxsT25NYWlu
VGhyZWFkQW5kV2FpdChXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJiBmdW5jdGlvbikKIHsKICAgICBp
ZiAoaXNNYWluVGhyZWFkKCkpIHsKICAgICAgICAgZnVuY3Rpb24oKTsKQEAgLTE1Niw3ICsxNTYs
NyBAQCBzdGF0aWMgdm9pZCBjYWxsT25NYWluVGhyZWFkQW5kV2FpdChzdGQ6OmZ1bmN0aW9uPHZv
aWQoKT4gZnVuY3Rpb24pCiAKICAgICBib29sIGlzRmluaXNoZWQgPSBmYWxzZTsKIAotICAgIGNh
bGxPbk1haW5UaHJlYWQoWyZdIHsKKyAgICBjYWxsT25NYWluVGhyZWFkKFsmLCBmdW5jdGlvbiA9
IFdURk1vdmUoZnVuY3Rpb24pXSB7CiAgICAgICAgIGZ1bmN0aW9uKCk7CiAKICAgICAgICAgc3Rk
Ojpsb2NrX2d1YXJkPExvY2s+IGxvY2sobXV0ZXgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9tYWMvQ29va2llU3RvcmFnZU1hYy5tbSBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0Nvb2tpZVN0b3JhZ2VNYWMubW0KaW5kZXggZTc4MmIw
NjZlNGVhOTY4NWE0OGFkYjc5ZTgxZTAzODUwOWRjNDZjYi4uZTE0ZTNkMTQwZmIxZDU3MjVhMmU3
NmZjNTRlOTlkYmNkOTE2MzRiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9tYWMvQ29va2llU3RvcmFnZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL21hYy9Db29raWVTdG9yYWdlTWFjLm1tCkBAIC0yMywxOSArMjMsMjAgQEAK
ICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuIAogICovCiAKLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJD
b29raWVTdG9yYWdlLmgiCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIkNvb2tpZVN0b3Jh
Z2UuaCIKIAogI2ltcG9ydCAiV2ViQ29yZVN5c3RlbUludGVyZmFjZS5oIgorI2ltcG9ydCA8d3Rm
L0Z1bmN0aW9uLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBAaW50ZXJmYWNlIFdl
YkNvb2tpZVN0b3JhZ2VPYmpDQWRhcHRlciA6IE5TT2JqZWN0IHsKLSAgICBzdGQ6OmZ1bmN0aW9u
PHZvaWQgKCk+IG1fY29va2llQ2hhbmdlQ2FsbGJhY2s7CisgICAgV1RGOjpGdW5jdGlvbjx2b2lk
ICgpPiBtX2Nvb2tpZUNoYW5nZUNhbGxiYWNrOwogfQogLSh2b2lkKW5vdGlmeUNvb2tpZXNDaGFu
Z2VkT25NYWluVGhyZWFkOwogLSh2b2lkKWNvb2tpZXNDaGFuZ2VkTm90aWZpY2F0aW9uSGFuZGxl
cjooTlNOb3RpZmljYXRpb24gKilub3RpZmljYXRpb247Ci0tKHZvaWQpc3RhcnRMaXN0ZW5pbmdG
b3JDb29raWVDaGFuZ2VOb3RpZmljYXRpb25zV2l0aENhbGxiYWNrOihzdGQ6OmZ1bmN0aW9uPHZv
aWQgKCk+JiYpY2FsbGJhY2s7CistKHZvaWQpc3RhcnRMaXN0ZW5pbmdGb3JDb29raWVDaGFuZ2VO
b3RpZmljYXRpb25zV2l0aENhbGxiYWNrOihXVEY6OkZ1bmN0aW9uPHZvaWQgKCk+JiYpY2FsbGJh
Y2s7CiAtKHZvaWQpc3RvcExpc3RlbmluZ0ZvckNvb2tpZUNoYW5nZU5vdGlmaWNhdGlvbnM7CiBA
ZW5kCiAKQEAgLTUzLDcgKzU0LDcgQEAgLSh2b2lkKWNvb2tpZXNDaGFuZ2VkTm90aWZpY2F0aW9u
SGFuZGxlcjooTlNOb3RpZmljYXRpb24gKilub3RpZmljYXRpb24KICAgICBbc2VsZiBwZXJmb3Jt
U2VsZWN0b3JPbk1haW5UaHJlYWQ6QHNlbGVjdG9yKG5vdGlmeUNvb2tpZXNDaGFuZ2VkT25NYWlu
VGhyZWFkKSB3aXRoT2JqZWN0Om5pbCB3YWl0VW50aWxEb25lOkZBTFNFXTsKIH0KIAotLSh2b2lk
KXN0YXJ0TGlzdGVuaW5nRm9yQ29va2llQ2hhbmdlTm90aWZpY2F0aW9uc1dpdGhDYWxsYmFjazoo
c3RkOjpmdW5jdGlvbjx2b2lkICgpPiYmKWNhbGxiYWNrCistKHZvaWQpc3RhcnRMaXN0ZW5pbmdG
b3JDb29raWVDaGFuZ2VOb3RpZmljYXRpb25zV2l0aENhbGxiYWNrOihXVEY6OkZ1bmN0aW9uPHZv
aWQgKCk+JiYpY2FsbGJhY2sKIHsKICAgICBBU1NFUlQoIW1fY29va2llQ2hhbmdlQ2FsbGJhY2sp
OwogICAgIG1fY29va2llQ2hhbmdlQ2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKTsKQEAgLTcy
LDcgKzczLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0aWMgV2ViQ29va2llU3RvcmFn
ZU9iakNBZGFwdGVyICpjb29raWVTdG9yYWdlQWRhcHRlcjsKIAotdm9pZCBzdGFydE9ic2Vydmlu
Z0Nvb2tpZUNoYW5nZXMoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgc3RkOjpmdW5jdGlv
bjx2b2lkICgpPiYmIGNhbGxiYWNrKQordm9pZCBzdGFydE9ic2VydmluZ0Nvb2tpZUNoYW5nZXMo
Y29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgV1RGOjpGdW5jdGlvbjx2b2lkICgpPiYmIGNh
bGxiYWNrKQogewogICAgIGlmICghY29va2llU3RvcmFnZUFkYXB0ZXIpCiAgICAgICAgIGNvb2tp
ZVN0b3JhZ2VBZGFwdGVyID0gW1tXZWJDb29raWVTdG9yYWdlT2JqQ0FkYXB0ZXIgYWxsb2NdIGlu
aXRdOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0Nv
b2tpZVN0b3JhZ2VTb3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291
cC9Db29raWVTdG9yYWdlU291cC5jcHAKaW5kZXggZWE2YTZiMjkyNzgwOTM1YjE4M2RhYzZmMTQx
ZDk2OWYzZDUzMWEwZC4uNDVkN2E5MTMwOTNhM2Q1ZmQ5NjkwMjc2NzcxZmE0MDRhY2Y0MDNlNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0Nvb2tpZVN0
b3JhZ2VTb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAv
Q29va2llU3RvcmFnZVNvdXAuY3BwCkBAIC0yMyw3ICsyMyw3IEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotdm9pZCBzdGFydE9ic2VydmluZ0Nvb2tpZUNoYW5nZXMoY29uc3QgTmV0d29ya1N0
b3JhZ2VTZXNzaW9uJiwgc3RkOjpmdW5jdGlvbjx2b2lkICgpPiYmKQordm9pZCBzdGFydE9ic2Vy
dmluZ0Nvb2tpZUNoYW5nZXMoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgV1RGOjpGdW5j
dGlvbjx2b2lkICgpPiYmKQogewogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvdXBOZXR3b3JrU2Vz
c2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU291cE5ldHdv
cmtTZXNzaW9uLmNwcAppbmRleCA3YzE3ZTYwNGU3OGJiOTViNGRmYTQwMDdmMDEyNmRlMTI5YmFm
MzRhLi5hM2Q4NDgwODQ4ZTM5MWFmODIwMjEwNGYzNmNhZTljNGRiNWI5MTNmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU291cE5ldHdvcmtTZXNzaW9u
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU291cE5ldHdv
cmtTZXNzaW9uLmNwcApAQCAtMjkzLDcgKzI5Myw3IEBAIHZvaWQgU291cE5ldHdvcmtTZXNzaW9u
OjpzZXRTaG91bGRJZ25vcmVUTFNFcnJvcnMoYm9vbCBpZ25vcmVUTFNFcnJvcnMpCiAgICAgZ0ln
bm9yZVRMU0Vycm9ycyA9IGlnbm9yZVRMU0Vycm9yczsKIH0KIAotdm9pZCBTb3VwTmV0d29ya1Nl
c3Npb246OmNoZWNrVExTRXJyb3JzKFNvdXBSZXF1ZXN0KiBzb3VwUmVxdWVzdCwgU291cE1lc3Nh
Z2UqIG1lc3NhZ2UsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoY29uc3QgUmVzb3VyY2VFcnJvciYpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBTb3VwTmV0d29ya1Nlc3Npb246OmNoZWNrVExTRXJy
b3JzKFNvdXBSZXF1ZXN0KiBzb3VwUmVxdWVzdCwgU291cE1lc3NhZ2UqIG1lc3NhZ2UsIFdURjo6
RnVuY3Rpb248dm9pZCAoY29uc3QgUmVzb3VyY2VFcnJvciYpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQogewogICAgIGlmIChnSWdub3JlVExTRXJyb3JzKSB7CiAgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKHsgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3Nv
dXAvU291cE5ldHdvcmtTZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L3NvdXAvU291cE5ldHdvcmtTZXNzaW9uLmgKaW5kZXggOTA4YjZjYjZkNWU1NDZlODIxZjZlNzQ4
OThiZThlYmYxYWQ5NmI0MC4uY2Q4MTBmMTIxNTc2OTFjN2NlZWIyNmQzNzdmMTE2OGFkMmRmM2Nk
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvdXBO
ZXR3b3JrU2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291
cC9Tb3VwTmV0d29ya1Nlc3Npb24uaApAQCAtMjYsOCArMjYsOCBAQAogI2lmbmRlZiBTb3VwTmV0
d29ya1Nlc3Npb25faAogI2RlZmluZSBTb3VwTmV0d29ya1Nlc3Npb25faAogCi0jaW5jbHVkZSA8
ZnVuY3Rpb25hbD4KICNpbmNsdWRlIDxnbGliLW9iamVjdC5oPgorI2luY2x1ZGUgPHd0Zi9GdW5j
dGlvbi5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0
b3IuaD4KICNpbmNsdWRlIDx3dGYvZ2xpYi9HUmVmUHRyLmg+CkBAIC02NSw3ICs2NSw3IEBAIHB1
YmxpYzoKICAgICB2b2lkIHNldEFjY2VwdExhbmd1YWdlcyhjb25zdCBDU3RyaW5nJik7CiAKICAg
ICBzdGF0aWMgdm9pZCBzZXRTaG91bGRJZ25vcmVUTFNFcnJvcnMoYm9vbCk7Ci0gICAgc3RhdGlj
IHZvaWQgY2hlY2tUTFNFcnJvcnMoU291cFJlcXVlc3QqLCBTb3VwTWVzc2FnZSosIHN0ZDo6ZnVu
Y3Rpb248dm9pZCAoY29uc3QgUmVzb3VyY2VFcnJvciYpPiYmKTsKKyAgICBzdGF0aWMgdm9pZCBj
aGVja1RMU0Vycm9ycyhTb3VwUmVxdWVzdCosIFNvdXBNZXNzYWdlKiwgV1RGOjpGdW5jdGlvbjx2
b2lkIChjb25zdCBSZXNvdXJjZUVycm9yJik+JiYpOwogICAgIHN0YXRpYyB2b2lkIGFsbG93U3Bl
Y2lmaWNIVFRQU0NlcnRpZmljYXRlRm9ySG9zdChjb25zdCBDZXJ0aWZpY2F0ZUluZm8mLCBjb25z
dCBTdHJpbmcmIGhvc3QpOwogCiAgICAgc3RhdGljIHZvaWQgc2V0Q3VzdG9tUHJvdG9jb2xSZXF1
ZXN0VHlwZShHVHlwZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwv
U1FMaXRlRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURh
dGFiYXNlLmNwcAppbmRleCA4NmM0ZDdhODI5NGY5YmI5OTI4Nzc5NDI2NWI2Y2NhYjYyNDNkNWU5
Li43NTVkZTc5ZjUxMTY5OTg2ODc0MzQwN2ZiYWZmZjJkZjFkYjg0ODgyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZS5jcHAKQEAgLTUxNiwxOSArNTE2
LDE5IEBAIGJvb2wgU1FMaXRlRGF0YWJhc2U6OnR1cm5PbkluY3JlbWVudGFsQXV0b1ZhY3V1bSgp
CiAKIHN0YXRpYyB2b2lkIGRlc3Ryb3lDb2xsYXRpb25GdW5jdGlvbih2b2lkKiBhcmcpCiB7Ci0g
ICAgYXV0byBmID0gc3RhdGljX2Nhc3Q8c3RkOjpmdW5jdGlvbjxpbnQoaW50LCBjb25zdCB2b2lk
KiwgaW50LCBjb25zdCB2b2lkKik+Kj4oYXJnKTsKKyAgICBhdXRvIGYgPSBzdGF0aWNfY2FzdDxX
VEY6OkZ1bmN0aW9uPGludChpbnQsIGNvbnN0IHZvaWQqLCBpbnQsIGNvbnN0IHZvaWQqKT4qPihh
cmcpOwogICAgIGRlbGV0ZSBmOwogfQogCiBzdGF0aWMgaW50IGNhbGxDb2xsYXRpb25GdW5jdGlv
bih2b2lkKiBhcmcsIGludCBhTGVuZ3RoLCBjb25zdCB2b2lkKiBhLCBpbnQgYkxlbmd0aCwgY29u
c3Qgdm9pZCogYikKIHsKLSAgICBhdXRvIGYgPSBzdGF0aWNfY2FzdDxzdGQ6OmZ1bmN0aW9uPGlu
dChpbnQsIGNvbnN0IHZvaWQqLCBpbnQsIGNvbnN0IHZvaWQqKT4qPihhcmcpOworICAgIGF1dG8g
ZiA9IHN0YXRpY19jYXN0PFdURjo6RnVuY3Rpb248aW50KGludCwgY29uc3Qgdm9pZCosIGludCwg
Y29uc3Qgdm9pZCopPio+KGFyZyk7CiAgICAgcmV0dXJuICgqZikoYUxlbmd0aCwgYSwgYkxlbmd0
aCwgYik7CiB9CiAKLXZvaWQgU1FMaXRlRGF0YWJhc2U6OnNldENvbGxhdGlvbkZ1bmN0aW9uKGNv
bnN0IFN0cmluZyYgY29sbGF0aW9uTmFtZSwgc3RkOjpmdW5jdGlvbjxpbnQoaW50LCBjb25zdCB2
b2lkKiwgaW50LCBjb25zdCB2b2lkKik+IGNvbGxhdGlvbkZ1bmN0aW9uKQordm9pZCBTUUxpdGVE
YXRhYmFzZTo6c2V0Q29sbGF0aW9uRnVuY3Rpb24oY29uc3QgU3RyaW5nJiBjb2xsYXRpb25OYW1l
LCBXVEY6OkZ1bmN0aW9uPGludChpbnQsIGNvbnN0IHZvaWQqLCBpbnQsIGNvbnN0IHZvaWQqKT4m
JiBjb2xsYXRpb25GdW5jdGlvbikKIHsKLSAgICBhdXRvIGZ1bmN0aW9uT2JqZWN0ID0gbmV3IHN0
ZDo6ZnVuY3Rpb248aW50KGludCwgY29uc3Qgdm9pZCosIGludCwgY29uc3Qgdm9pZCopPihjb2xs
YXRpb25GdW5jdGlvbik7CisgICAgYXV0byBmdW5jdGlvbk9iamVjdCA9IG5ldyBXVEY6OkZ1bmN0
aW9uPGludChpbnQsIGNvbnN0IHZvaWQqLCBpbnQsIGNvbnN0IHZvaWQqKT4oV1RGTW92ZShjb2xs
YXRpb25GdW5jdGlvbikpOwogICAgIHNxbGl0ZTNfY3JlYXRlX2NvbGxhdGlvbl92MihtX2RiLCBj
b2xsYXRpb25OYW1lLnV0ZjgoKS5kYXRhKCksIFNRTElURV9VVEY4LCBmdW5jdGlvbk9iamVjdCwg
Y2FsbENvbGxhdGlvbkZ1bmN0aW9uLCBkZXN0cm95Q29sbGF0aW9uRnVuY3Rpb24pOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2UuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZS5oCmluZGV4IGVlOWJh
MmJlMWUyNTA0NWY5YzNhNjE1ZTY2ZTc3YmZmNzUzYzQyODguLjM0ZGI2OTRjYzMzY2YyZTA2MTVm
OGM2NmUxNWIxYzE5Y2M5MWI5OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3NxbC9TUUxpdGVEYXRhYmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9T
UUxpdGVEYXRhYmFzZS5oCkBAIC0xMjUsNyArMTI1LDcgQEAgcHVibGljOgogICAgIGVudW0gQXV0
b1ZhY3V1bVByYWdtYSB7IEF1dG9WYWN1dW1Ob25lID0gMCwgQXV0b1ZhY3V1bUZ1bGwgPSAxLCBB
dXRvVmFjdXVtSW5jcmVtZW50YWwgPSAyIH07CiAgICAgYm9vbCB0dXJuT25JbmNyZW1lbnRhbEF1
dG9WYWN1dW0oKTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0Q29sbGF0aW9uRnVuY3Rp
b24oY29uc3QgU3RyaW5nJiBjb2xsYXRpb25OYW1lLCBzdGQ6OmZ1bmN0aW9uPGludChpbnQsIGNv
bnN0IHZvaWQqLCBpbnQsIGNvbnN0IHZvaWQqKT4pOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
c2V0Q29sbGF0aW9uRnVuY3Rpb24oY29uc3QgU3RyaW5nJiBjb2xsYXRpb25OYW1lLCBXVEY6OkZ1
bmN0aW9uPGludChpbnQsIGNvbnN0IHZvaWQqLCBpbnQsIGNvbnN0IHZvaWQqKT4mJik7CiAgICAg
dm9pZCByZW1vdmVDb2xsYXRpb25GdW5jdGlvbihjb25zdCBTdHJpbmcmIGNvbGxhdGlvbk5hbWUp
OwogCiAgICAgLy8gU2V0IHRoaXMgZmxhZyB0byBhbGxvdyBhY2Nlc3MgZnJvbSBtdWx0aXBsZSB0
aHJlYWRzLiAgTm90IGFsbCBtdWx0aS10aHJlYWRlZCBhY2Nlc3NlcyBhcmUgc2FmZSEKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAKaW5kZXggNDZi
YWVkMTAzNGIyNGU2M2I1OGUzOTc2NGQ5NzM3MWE3YTRmOTI5My4uMjk4YmUwMmQ4ZDFlYmY3M2Q3
NDI5YWExN2VjOGVhMGM2MGFkZjIzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckxheWVyQmFja2luZy5jcHAKQEAgLTIwODksNyArMjA4OSw3IEBAIGJvb2wgUmVuZGVy
TGF5ZXJCYWNraW5nOjppc1NpbXBsZUNvbnRhaW5lckNvbXBvc2l0aW5nTGF5ZXIoUGFpbnRlZENv
bnRlbnRzSW5mbyYKIC8vIFJldHVybmluZyB0cnVlIHN0b3BzIHRoZSB0cmF2ZXJzYWwuCiBlbnVt
IGNsYXNzIExheWVyVHJhdmVyc2FsIHsgQ29udGludWUsIFN0b3AgfTsKIAotc3RhdGljIExheWVy
VHJhdmVyc2FsIHRyYXZlcnNlVmlzaWJsZU5vbkNvbXBvc2l0ZWREZXNjZW5kYW50TGF5ZXJzKFJl
bmRlckxheWVyJiBwYXJlbnQsIHN0ZDo6ZnVuY3Rpb248TGF5ZXJUcmF2ZXJzYWwgKGNvbnN0IFJl
bmRlckxheWVyJik+IGxheWVyRnVuYykKK3N0YXRpYyBMYXllclRyYXZlcnNhbCB0cmF2ZXJzZVZp
c2libGVOb25Db21wb3NpdGVkRGVzY2VuZGFudExheWVycyhSZW5kZXJMYXllciYgcGFyZW50LCBj
b25zdCBXVEY6OkZ1bmN0aW9uPExheWVyVHJhdmVyc2FsIChjb25zdCBSZW5kZXJMYXllciYpPiYg
bGF5ZXJGdW5jKQogewogICAgIC8vIEZJWE1FOiBXZSBzaG91bGRuJ3QgYmUgY2FsbGVkIHdpdGgg
YSBzdGFsZSB6LW9yZGVyIGxpc3RzLiBTZWUgYnVnIDg1NTEyLgogICAgIHBhcmVudC51cGRhdGVM
YXllckxpc3RzSWZOZWVkZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMaXN0Qm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0
Qm94LmNwcAppbmRleCBjY2E0NzQ4NjQyMThmMGI3ODM0OTlhOTdlMzQ0ZWQ5NGFjOWNjOGU1Li4z
NWE4ZDY0YWJhODNjMWZmMmI4MmI4ZjdiZTMyMTNhMWE0YTc3ZDljIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guY3BwCkBAIC0yODYsNyArMjg2LDcgQEAgTGF5b3V0
UmVjdCBSZW5kZXJMaXN0Qm94OjppdGVtQm91bmRpbmdCb3hSZWN0KGNvbnN0IExheW91dFBvaW50
JiBhZGRpdGlvbmFsT2Zmc2UKICAgICByZXR1cm4gTGF5b3V0UmVjdCh4LCB5LCBjb250ZW50V2lk
dGgoKSwgaXRlbUhlaWdodCgpKTsKIH0KIAotdm9pZCBSZW5kZXJMaXN0Qm94OjpwYWludEl0ZW0o
UGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCwgUGFp
bnRGdW5jdGlvbiBwYWludEZ1bmN0aW9uKQordm9pZCBSZW5kZXJMaXN0Qm94OjpwYWludEl0ZW0o
UGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCwgY29u
c3QgUGFpbnRGdW5jdGlvbiYgcGFpbnRGdW5jdGlvbikKIHsKICAgICBpbnQgbGlzdEl0ZW1zU2l6
ZSA9IG51bUl0ZW1zKCk7CiAgICAgaW50IGZpcnN0VmlzaWJsZUl0ZW0gPSBtX2luZGV4T2ZGaXJz
dFZpc2libGVJdGVtSW5zaWRlUGFkZGluZ1RvcEFyZWEudmFsdWVfb3IobV9pbmRleE9mZnNldCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5oIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guaAppbmRleCBiMTY1NGRmYjYz
M2M4MmVhOTEyNGQzMTNjNGJlYmRlOGUwNzQ3YmEyLi4yNDg5OGNkZGI0NzY0NjgyOTIxYjhhZGZk
NmUwZDYyZmM5Y2UxMzRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTGlzdEJveC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94
LmgKQEAgLTE0Myw4ICsxNDMsOCBAQCBwcml2YXRlOgogICAgIC8vIE5PVEU6IFRoaXMgc2hvdWxk
IG9ubHkgYmUgY2FsbGVkIGJ5IHRoZSBvdmVycmlkZW4gc2V0U2Nyb2xsT2Zmc2V0IGZyb20gU2Ny
b2xsYWJsZUFyZWEuCiAgICAgdm9pZCBzY3JvbGxUbyhpbnQgbmV3T2Zmc2V0KTsKIAotICAgIHVz
aW5nIFBhaW50RnVuY3Rpb24gPSBzdGQ6OmZ1bmN0aW9uPHZvaWQoUGFpbnRJbmZvJiwgY29uc3Qg
TGF5b3V0UG9pbnQmLCBpbnQgbGlzdEl0ZW1JbmRleCk+OwotICAgIHZvaWQgcGFpbnRJdGVtKFBh
aW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50JiwgUGFpbnRGdW5jdGlvbik7CisgICAgdXNpbmcg
UGFpbnRGdW5jdGlvbiA9IFdURjo6RnVuY3Rpb248dm9pZChQYWludEluZm8mLCBjb25zdCBMYXlv
dXRQb2ludCYsIGludCBsaXN0SXRlbUluZGV4KT47CisgICAgdm9pZCBwYWludEl0ZW0oUGFpbnRJ
bmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmLCBjb25zdCBQYWludEZ1bmN0aW9uJik7CiAKICAgICB2
b2lkIHNldEhhc1ZlcnRpY2FsU2Nyb2xsYmFyKGJvb2wgaGFzU2Nyb2xsYmFyKTsKICAgICBSZWY8
U2Nyb2xsYmFyPiBjcmVhdGVTY3JvbGxiYXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9saW5lL0JyZWFraW5nQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL2xpbmUvQnJlYWtpbmdDb250ZXh0LmgKaW5kZXggMTI2ZmQzZDRlY2Y5OWQwNDM0YmE3MTMy
YTU3OWJmNDUxOGZkYjhhMS4uMmQ4M2YwNzdhMWJjYjYxNmM2OTJjMDU1Yzc3Yjg3ZjRmMWM3NWYw
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2xpbmUvQnJlYWtpbmdDb250
ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2xpbmUvQnJlYWtpbmdDb250ZXh0
LmgKQEAgLTM4LDYgKzM4LDcgQEAKICNpbmNsdWRlICJSZW5kZXJSdWJ5UnVuLmgiCiAjaW5jbHVk
ZSAiUmVuZGVyU1ZHSW5saW5lVGV4dC5oIgogI2luY2x1ZGUgIlRyYWlsaW5nT2JqZWN0cy5oIgor
I2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgogI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ1ZpZXcuaD4KICNpbmNsdWRlIDx3dGYvdW5pY29kZS9DaGFy
YWN0ZXJOYW1lcy5oPgpAQCAtMTkxLDcgKzE5Miw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICB0
aGlzLT5hcHBlbmQoaW5pdGlhbCk7CiAgICAgICAgIH0KIAotICAgICAgICB2b2lkIHB1c2goc3Rk
OjpmdW5jdGlvbjx2b2lkKElubGluZUl0ZXJhdG9yJiBtb2RpZnlNZSk+IHVwZGF0ZXIpCisgICAg
ICAgIHZvaWQgcHVzaChjb25zdCBXVEY6OkZ1bmN0aW9uPHZvaWQoSW5saW5lSXRlcmF0b3ImIG1v
ZGlmeU1lKT4mIHVwZGF0ZXIpCiAgICAgICAgIHsKICAgICAgICAgICAgIEFTU0VSVCghdGhpcy0+
aXNFbXB0eSgpKTsKICAgICAgICAgICAgIGlmIChtX2NhcGFjaXR5ICE9IDEpCkBAIC0yMDEsNyAr
MjAyLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICB0aGlzLT5yZXNpemUobV9jYXBhY2l0
eSk7CiAgICAgICAgIH0KIAotICAgICAgICB2b2lkIHVwZGF0ZShzdGQ6OmZ1bmN0aW9uPHZvaWQo
SW5saW5lSXRlcmF0b3ImIG1vZGlmeU1lKT4gdXBkYXRlcikKKyAgICAgICAgdm9pZCB1cGRhdGUo
Y29uc3QgV1RGOjpGdW5jdGlvbjx2b2lkKElubGluZUl0ZXJhdG9yJiBtb2RpZnlNZSk+JiB1cGRh
dGVyKQogICAgICAgICB7CiAgICAgICAgICAgICBBU1NFUlQoIXRoaXMtPmlzRW1wdHkoKSk7CiAg
ICAgICAgICAgICB1cGRhdGVyKHRoaXMtPmF0KDApKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvV29ya2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyLmNw
cAppbmRleCA5Yzk4NzVmMGY1Nzc4NmFmMmJkZjNmZjgzZjViNzRmMjhhMWJhMjEzLi42NmU4ZGFm
YTk4Nzg3NzExNjg2MzUxMzI0NzZlNGE3MDQ1YmQxMzNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL1dvcmtlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3Jr
ZXIuY3BwCkBAIC01OSw3ICs1OSw3IEBAIGlubGluZSBXb3JrZXI6OldvcmtlcihTY3JpcHRFeGVj
dXRpb25Db250ZXh0JiBjb250ZXh0LCBKU0M6OlJ1bnRpbWVGbGFncyBydW50aW1lCiB7CiAgICAg
aWYgKCFhbGxXb3JrZXJzKSB7CiAgICAgICAgIGFsbFdvcmtlcnMgPSBuZXcgSGFzaFNldDxXb3Jr
ZXIqPjsKLSAgICAgICAgbmV0d29ya1N0YXRlTm90aWZpZXIoKS5hZGROZXR3b3JrU3RhdGVDaGFu
Z2VMaXN0ZW5lcihuZXR3b3JrU3RhdGVDaGFuZ2VkKTsKKyAgICAgICAgbmV0d29ya1N0YXRlTm90
aWZpZXIoKS5hZGROZXR3b3JrU3RhdGVDaGFuZ2VMaXN0ZW5lcihbXSAoYm9vbCBpc09uTGluZSkg
eyBuZXR3b3JrU3RhdGVDaGFuZ2VkKGlzT25MaW5lKTsgfSk7CiAgICAgfQogCiAgICAgYXV0byBh
ZGRSZXN1bHQgPSBhbGxXb3JrZXJzLT5hZGQodGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL1dvcmtlclJ1bkxvb3AuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9X
b3JrZXJSdW5Mb29wLmNwcAppbmRleCA2NGMyZWY0NWM0ZmQ1OTBmNTgxZDMwZjM4MDE5ZWM2ZTYw
NjM2ZTFjLi4yMzYxYmY3NDVhYWI1NGY1OTEzNjA3MzkyNzY5YjYyYWRiM2UwYmNlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclJ1bkxvb3AuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyUnVuTG9vcC5jcHAKQEAgLTUwLDcgKzUwLDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgV29ya2VyU2hhcmVkVGltZXIgZmluYWwgOiBwdWJsaWMg
U2hhcmVkVGltZXIgewogcHVibGljOgogICAgIC8vIFNoYXJlZFRpbWVyIGludGVyZmFjZS4KLSAg
ICB2b2lkIHNldEZpcmVkRnVuY3Rpb24oc3RkOjpmdW5jdGlvbjx2b2lkKCk+JiYgZnVuY3Rpb24p
IG92ZXJyaWRlIHsgbV9zaGFyZWRUaW1lckZ1bmN0aW9uID0gV1RGTW92ZShmdW5jdGlvbik7IH0K
KyAgICB2b2lkIHNldEZpcmVkRnVuY3Rpb24oV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYgZnVuY3Rp
b24pIG92ZXJyaWRlIHsgbV9zaGFyZWRUaW1lckZ1bmN0aW9uID0gV1RGTW92ZShmdW5jdGlvbik7
IH0KICAgICB2b2lkIHNldEZpcmVJbnRlcnZhbChTZWNvbmRzIGludGVydmFsKSBvdmVycmlkZSB7
IG1fbmV4dEZpcmVUaW1lID0gaW50ZXJ2YWwgKyBXYWxsVGltZTo6bm93KCk7IH0KICAgICB2b2lk
IHN0b3AoKSBvdmVycmlkZSB7IG1fbmV4dEZpcmVUaW1lID0gV2FsbFRpbWUoKTsgfQogCkBAIC01
OSw3ICs1OSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGZpcmUoKSB7IG1fc2hhcmVkVGltZXJGdW5j
dGlvbigpOyB9CiAKIHByaXZhdGU6Ci0gICAgc3RkOjpmdW5jdGlvbjx2b2lkKCk+IG1fc2hhcmVk
VGltZXJGdW5jdGlvbjsKKyAgICBXVEY6OkZ1bmN0aW9uPHZvaWQoKT4gbV9zaGFyZWRUaW1lckZ1
bmN0aW9uOwogICAgIFdhbGxUaW1lIG1fbmV4dEZpcmVUaW1lOwogfTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>313402</attachid>
            <date>2017-06-20 09:11:12 -0700</date>
            <delta_ts>2017-06-20 09:31:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-173583-20170620091110.patch</filename>
            <type>text/plain</type>
            <size>81474</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE4NTI4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWRjMjgyZDE0ODRkZjk3
MzQ0NTA1MmZiNTI0ZTM3MDljZmQxZDcwNy4uMThlYjAzMzJjOGE2NjQ5ZjdlNDJhOGI0NDUxYjAz
MmE1MDAyODU0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzMCBAQAorMjAxNy0wNi0xOSAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFVzZSBXVEY6OkZ1bmN0aW9u
IGluc3RlYWQgb2Ygc3RkOjpmdW5jdGlvbiBpbiBtb3JlIHBsYWNlcyBpbiBXZWJDb3JlLworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTczNTgzCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXNlIFdURjo6RnVu
Y3Rpb24gaW5zdGVhZCBvZiBzdGQ6OmZ1bmN0aW9uIGluIG1vcmUgcGxhY2VzIGluIFdlYkNvcmUv
IHRvCisgICAgICAgIHJlZHVjZSBjb3B5aW5nLgorCisgICAgICAgICogcGFnZS9QYWdlLmNwcDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9IeXN0ZXJlc2lzQWN0aXZpdHkuaDoKKyAgICAgICAgKFdlYkNv
cmU6Okh5c3RlcmVzaXNBY3Rpdml0eTo6SHlzdGVyZXNpc0FjdGl2aXR5KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9Mb2dnaW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnJlZ2lzdGVyTm90aWZ5Q2Fs
bGJhY2spOgorICAgICAgICAqIHBsYXRmb3JtL0xvZ2dpbmcuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9NYWluVGhyZWFkU2hhcmVkVGltZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWFpblRocmVh
ZFNoYXJlZFRpbWVyOjpzZXRGaXJlZEZ1bmN0aW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9NYWlu
VGhyZWFkU2hhcmVkVGltZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9QbGF0Zm9ybVBhc3RlYm9h
cmQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9TY29wZUd1YXJkLmg6CisgICAgICAgIChXZWJDb3Jl
OjpTY29wZUd1YXJkOjpTY29wZUd1YXJkKToKKyAgICAgICAgKFdlYkNvcmU6OlNjb3BlR3VhcmQ6
OmVuYWJsZSk6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uU21vb3RoLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdGlvblNtb290aDo6U2Nyb2xsQW5pbWF0aW9u
U21vb3RoKToKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxBbmltYXRpb25TbW9vdGguaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9TaGFyZWRUaW1lci5oOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlv
L1BsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbGF0
Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6OmN1cnJlbnRTZXNzaW9uc01hdGNoaW5nKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXIuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9jZi9NYWluVGhyZWFkU2hhcmVkVGltZXJDRi5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpzZXR1cFBvd2VyT2JzZXJ2ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2NmL1J1bkxv
b3BPYnNlcnZlci5oOgorICAgICAgICAoV2ViQ29yZTo6UnVuTG9vcE9ic2VydmVyOjpSdW5Mb29w
T2JzZXJ2ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5o
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6dHJhdmVyc2UpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9N
ZWRpYVBsYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjphZGRNZWRpYUVuZ2luZSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9QYXRoLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb246OnNlZWtDb21wbGV0ZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uOjpzY2hlZHVsZU1haW5U
aHJlYWROb3RpZmljYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uOjpkaXNwYXRjaE5vdGlmaWNhdGlvbik6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5oOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uOjpOb3RpZmlj
YXRpb246Ok5vdGlmaWNhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb246Ok5vdGlmaWNhdGlvbjo6ZnVuY3Rpb24pOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbk9iakMubW06CisgICAgICAgICgtW1dlYkNvcmVBVkZNb3ZpZU9ic2VydmVyIG9ic2VydmVW
YWx1ZUZvcktleVBhdGg6b2ZPYmplY3Q6Y2hhbmdlOmNvbnRleHQ6XSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFT
dHJlYW1BVkZPYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6cnVuV2l0aG91dEFuaW1hdGlvbnMp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0lPU3VyZmFjZS5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0lPU3VyZmFjZS5tbToKKyAgICAgICAgKFdlYkNv
cmU6OklPU3VyZmFjZTo6Y29udmVydFRvRm9ybWF0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvTWFpblRocmVhZE5vdGlmaWVyLmg6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUmVxdWVzdEluc3RhbGxNaXNzaW5nUGx1Z2lu
c0NhbGxiYWNrLmg6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclJlcXVlc3RJbnN0YWxs
TWlzc2luZ1BsdWdpbnNDYWxsYmFjazo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
UGxheWVyUmVxdWVzdEluc3RhbGxNaXNzaW5nUGx1Z2luc0NhbGxiYWNrOjpNZWRpYVBsYXllclJl
cXVlc3RJbnN0YWxsTWlzc2luZ1BsdWdpbnNDYWxsYmFjayk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dERpcmVjdDJELmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd1dpdGhvdXRTaGFkb3cpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3V2l0aFNoYWRvdyk6CisgICAgICAgICogcGxhdGZvcm0v
Z3RrL1Bhc3RlYm9hcmRIZWxwZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkU2V0
RGF0YTo6Q2xpcGJvYXJkU2V0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkSGVs
cGVyOjp3cml0ZUNsaXBib2FyZENvbnRlbnRzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvUGFz
dGVib2FyZEhlbHBlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9QbGF0Zm9ybVBhc3RlYm9h
cmRHdGsuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1QYXN0ZWJvYXJkOjp3cml0ZVRv
Q2xpcGJvYXJkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuSW50
ZXJmYWNlQVZLaXQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVu
SW50ZXJmYWNlQVZLaXQubW06CisgICAgICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VB
VktpdDo6cHJlcGFyZWRUb1JldHVyblRvSW5saW5lKToKKyAgICAgICAgKFdlYlZpZGVvRnVsbHNj
cmVlbkludGVyZmFjZUFWS2l0OjpmdWxsc2NyZWVuTWF5UmV0dXJuVG9JbmxpbmUpOgorICAgICAg
ICAqIHBsYXRmb3JtL21hYy9Qb3dlck9ic2VydmVyTWFjLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlBvd2VyT2JzZXJ2ZXI6OlBvd2VyT2JzZXJ2ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9Q
b3dlck9ic2VydmVyTWFjLmg6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1dlYkNvcmVOU1VSTEV4
dHJhcy5tbToKKyAgICAgICAgKFdlYkNvcmU6OmlzU2Vjb25kTGV2ZWxEb21haW5OYW1lQWxsb3dl
ZEJ5VExEUnVsZXMpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL0NhcHR1cmVEZXZp
Y2VNYW5hZ2VyLmNwcDoKKyAgICAgICAgKENhcHR1cmVEZXZpY2VNYW5hZ2VyOjphZGRDYXB0dXJl
RGV2aWNlQ2hhbmdlZE9ic2VydmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9D
YXB0dXJlRGV2aWNlTWFuYWdlci5oOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL1Jl
YWx0aW1lTWVkaWFTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNv
dXJjZTo6c2NoZWR1bGVEZWZlcnJlZFRhc2spOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3Ry
ZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVh
bS9pb3MvQVZBdWRpb1Nlc3Npb25DYXB0dXJlRGV2aWNlTWFuYWdlci5tbToKKyAgICAgICAgKC1b
V2ViQVZBdWRpb1Nlc3Npb25BdmFpbGFibGVJbnB1dHNMaXN0ZW5lciBpbml0V2l0aENhbGxiYWNr
Ol0pOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Db3JlQXVkaW9DYXB0dXJl
U291cmNlLmg6CisgICAgICAgICogcGxhdGZvcm0vbW9jay9TY3JvbGxBbmltYXRvck1vY2suY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3JNb2NrOjpTY3JvbGxBbmltYXRvck1v
Y2spOgorICAgICAgICAqIHBsYXRmb3JtL21vY2svU2Nyb2xsQW5pbWF0b3JNb2NrLmg6CisgICAg
ICAgICogcGxhdGZvcm0vbmV0d29yay9Db29raWVTdG9yYWdlLmg6CisgICAgICAgICogcGxhdGZv
cm0vbmV0d29yay9OZXR3b3JrU3RhdGVOb3RpZmllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpO
ZXR3b3JrU3RhdGVOb3RpZmllcjo6YWRkTmV0d29ya1N0YXRlQ2hhbmdlTGlzdGVuZXIpOgorICAg
ICAgICAqIHBsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0YXRlTm90aWZpZXIuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246OmZvckVhY2gpOgorICAgICAgICAqIHBsYXRm
b3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmg6CisgICAgICAgICogcGxhdGZvcm0v
bmV0d29yay9jZi9Db29raWVTdG9yYWdlQ0ZOZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29v
a2llQ2hhbmdlQ2FsbGJhY2tNYXApOgorICAgICAgICAoV2ViQ29yZTo6c3RhcnRPYnNlcnZpbmdD
b29raWVDaGFuZ2VzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL1NvY2tldFN0cmVh
bUhhbmRsZUltcGxDRk5ldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjYWxsT25NYWluVGhyZWFk
QW5kV2FpdCk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9tYWMvQ29va2llU3RvcmFnZU1h
Yy5tbToKKyAgICAgICAgKC1bV2ViQ29va2llU3RvcmFnZU9iakNBZGFwdGVyIHN0YXJ0TGlzdGVu
aW5nRm9yQ29va2llQ2hhbmdlTm90aWZpY2F0aW9uc1dpdGhDYWxsYmFjazpdKToKKyAgICAgICAg
KFdlYkNvcmU6OnN0YXJ0T2JzZXJ2aW5nQ29va2llQ2hhbmdlcyk6CisgICAgICAgICogcGxhdGZv
cm0vbmV0d29yay9zb3VwL0Nvb2tpZVN0b3JhZ2VTb3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OnN0YXJ0T2JzZXJ2aW5nQ29va2llQ2hhbmdlcyk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29y
ay9zb3VwL1NvdXBOZXR3b3JrU2Vzc2lvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTb3VwTmV0
d29ya1Nlc3Npb246OmNoZWNrVExTRXJyb3JzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3Jr
L3NvdXAvU291cE5ldHdvcmtTZXNzaW9uLmg6CisgICAgICAgICogcGxhdGZvcm0vc3FsL1NRTGl0
ZURhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmRlc3Ryb3lDb2xsYXRpb25GdW5jdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpjYWxsQ29sbGF0aW9uRnVuY3Rpb24pOgorICAgICAgICAo
V2ViQ29yZTo6U1FMaXRlRGF0YWJhc2U6OnNldENvbGxhdGlvbkZ1bmN0aW9uKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2UuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyTGF5ZXJCYWNraW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRyYXZlcnNlVmlzaWJsZU5v
bkNvbXBvc2l0ZWREZXNjZW5kYW50TGF5ZXJzKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
TGlzdEJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMaXN0Qm94OjpwYWludEl0ZW0p
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMaXN0Qm94Lmg6CisgICAgICAgICogcmVuZGVy
aW5nL2xpbmUvQnJlYWtpbmdDb250ZXh0Lmg6CisgICAgICAgIChXZWJDb3JlOjpCcmVha2luZ0Nv
bnRleHQ6OklubGluZUl0ZXJhdG9ySGlzdG9yeTo6cHVzaCk6CisgICAgICAgIChXZWJDb3JlOjpC
cmVha2luZ0NvbnRleHQ6OklubGluZUl0ZXJhdG9ySGlzdG9yeTo6dXBkYXRlKToKKyAgICAgICAg
KiB3b3JrZXJzL1dvcmtlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXI6Oldvcmtlcik6
CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJSdW5Mb29wLmNwcDoKKwogMjAxNy0wNi0xOSAgTXls
ZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgogCiAgICAgICAgIFtDb2NvYV0g
VGhlIHN5c3RlbSBKYXBhbmVzZSBmb250IGNhbm5vdCBiZSBpdGFsaWNpemVkCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdl
LmNwcAppbmRleCAwMWZhZDM0NTg5ZmUxNDU4MzFkNWY0ZDJiNzRiOWE3NDllN2I5MzAwLi43NGEx
OWU4N2JlMmQ0YWJmOWZhMzA0ZWUyOTU0NzI4ODljYTU1N2I3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAK
QEAgLTI4MSw3ICsyODEsNyBAQCBQYWdlOjpQYWdlKFBhZ2VDb25maWd1cmF0aW9uJiYgcGFnZUNv
bmZpZ3VyYXRpb24pCiAgICAgaWYgKCFhbGxQYWdlcykgewogICAgICAgICBhbGxQYWdlcyA9IG5l
dyBIYXNoU2V0PFBhZ2UqPjsKICAgICAgICAgCi0gICAgICAgIG5ldHdvcmtTdGF0ZU5vdGlmaWVy
KCkuYWRkTmV0d29ya1N0YXRlQ2hhbmdlTGlzdGVuZXIobmV0d29ya1N0YXRlQ2hhbmdlZCk7Cisg
ICAgICAgIG5ldHdvcmtTdGF0ZU5vdGlmaWVyKCkuYWRkTmV0d29ya1N0YXRlQ2hhbmdlTGlzdGVu
ZXIoW10gKGJvb2wgaXNPbkxpbmUpIHsgbmV0d29ya1N0YXRlQ2hhbmdlZChpc09uTGluZSk7IH0p
OwogICAgIH0KIAogICAgIEFTU0VSVCghYWxsUGFnZXMtPmNvbnRhaW5zKHRoaXMpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL1BhZ2VNYWMubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL21hYy9QYWdlTWFjLm1tCmluZGV4IGNmZGQ2ZjVmOTliNTEwNThjNTVmMThhMjMzZDI0
MDUwN2UyNGU4M2MuLjZhMzlkNDY5OWRlMWRjMGM2NjI5ODFlYTM2MDViZWE1M2MyODFkZjUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL1BhZ2VNYWMubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9tYWMvUGFnZU1hYy5tbQpAQCAtNjEsOCArNjEsOCBAQCB2b2lkIFBhZ2U6
OnBsYXRmb3JtSW5pdGlhbGl6ZSgpCiAjaWYgRU5BQkxFKFRSRUVfREVCVUdHSU5HKQogICAgIHN0
YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlRmxhZzsKICAgICBzdGQ6OmNhbGxfb25jZShvbmNlRmxh
ZywgW10gewotICAgICAgICByZWdpc3Rlck5vdGlmeUNhbGxiYWNrKCJjb20uYXBwbGUuV2ViS2l0
LnNob3dSZW5kZXJUcmVlIiwgcHJpbnRSZW5kZXJUcmVlRm9yTGl2ZURvY3VtZW50cyk7Ci0gICAg
ICAgIHJlZ2lzdGVyTm90aWZ5Q2FsbGJhY2soImNvbS5hcHBsZS5XZWJLaXQuc2hvd0xheWVyVHJl
ZSIsIHByaW50TGF5ZXJUcmVlRm9yTGl2ZURvY3VtZW50cyk7CisgICAgICAgIHJlZ2lzdGVyTm90
aWZ5Q2FsbGJhY2soImNvbS5hcHBsZS5XZWJLaXQuc2hvd1JlbmRlclRyZWUiLCBbXSB7IHByaW50
UmVuZGVyVHJlZUZvckxpdmVEb2N1bWVudHMoKTsgfSk7CisgICAgICAgIHJlZ2lzdGVyTm90aWZ5
Q2FsbGJhY2soImNvbS5hcHBsZS5XZWJLaXQuc2hvd0xheWVyVHJlZSIsIFtdIHsgcHJpbnRMYXll
clRyZWVGb3JMaXZlRG9jdW1lbnRzKCk7IH0pOwogICAgIH0pOwogI2VuZGlmCiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9IeXN0ZXJlc2lzQWN0aXZpdHkuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL0h5c3RlcmVzaXNBY3Rpdml0eS5oCmluZGV4IDU5OWUxNzFlYzFh
Y2FkMjBlZDhmMTVkMWI0NWM5ZWFhOWYxY2UwYTAuLjkxMThlYTRlOWZkMDU4Y2UzMTA3NDI5NjEx
M2YzYzNjY2MzMDFlNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0h5c3Rl
cmVzaXNBY3Rpdml0eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0h5c3RlcmVzaXNB
Y3Rpdml0eS5oCkBAIC0zOSw4ICszOSw4IEBAIGVudW0gY2xhc3MgSHlzdGVyZXNpc1N0YXRlIHsK
IAogY2xhc3MgSHlzdGVyZXNpc0FjdGl2aXR5IHsKIHB1YmxpYzoKLSAgICBleHBsaWNpdCBIeXN0
ZXJlc2lzQWN0aXZpdHkoc3RkOjpmdW5jdGlvbjx2b2lkKEh5c3RlcmVzaXNTdGF0ZSk+IGNhbGxi
YWNrID0gW10oSHlzdGVyZXNpc1N0YXRlKSB7IH0sIGRvdWJsZSBoeXN0ZXJlc2lzU2Vjb25kcyA9
IERlZmF1bHRIeXN0ZXJlc2lzU2Vjb25kcykKLSAgICAgICAgOiBtX2NhbGxiYWNrKGNhbGxiYWNr
KQorICAgIGV4cGxpY2l0IEh5c3RlcmVzaXNBY3Rpdml0eShXVEY6OkZ1bmN0aW9uPHZvaWQoSHlz
dGVyZXNpc1N0YXRlKT4mJiBjYWxsYmFjayA9IFtdKEh5c3RlcmVzaXNTdGF0ZSkgeyB9LCBkb3Vi
bGUgaHlzdGVyZXNpc1NlY29uZHMgPSBEZWZhdWx0SHlzdGVyZXNpc1NlY29uZHMpCisgICAgICAg
IDogbV9jYWxsYmFjayhXVEZNb3ZlKGNhbGxiYWNrKSkKICAgICAgICAgLCBtX2h5c3RlcmVzaXNT
ZWNvbmRzKGh5c3RlcmVzaXNTZWNvbmRzKQogICAgICAgICAsIG1fYWN0aXZlKGZhbHNlKQogICAg
ICAgICAsIG1fdGltZXIoKnRoaXMsICZIeXN0ZXJlc2lzQWN0aXZpdHk6Omh5c3RlcmVzaXNUaW1l
ckZpcmVkKQpAQCAtODgsNyArODgsNyBAQCBwcml2YXRlOgogICAgICAgICBtX2NhbGxiYWNrKEh5
c3RlcmVzaXNTdGF0ZTo6U3RvcHBlZCk7CiAgICAgfQogCi0gICAgc3RkOjpmdW5jdGlvbjx2b2lk
KEh5c3RlcmVzaXNTdGF0ZSk+IG1fY2FsbGJhY2s7CisgICAgV1RGOjpGdW5jdGlvbjx2b2lkKEh5
c3RlcmVzaXNTdGF0ZSk+IG1fY2FsbGJhY2s7CiAgICAgZG91YmxlIG1faHlzdGVyZXNpc1NlY29u
ZHM7IC8vIEZJWE1FOiBTaG91bGQgdXNlIFNlY29uZHMuCiAgICAgYm9vbCBtX2FjdGl2ZTsKICAg
ICBUaW1lciBtX3RpbWVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTG9n
Z2luZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2dnaW5nLmNwcAppbmRleCAwZmI1
YmY4MTI5Yzk2NDU0YzRlNGY4MGMwMGRiZmYxN2FhMjM3Yjk0Li44ODg0Mzk5NWM1MzY2OGEzNGU2
YmRjNWViZjQxN2QzMWEzNTJkZTIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9Mb2dnaW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2dnaW5nLmNwcApA
QCAtMzMsNiArMzMsNyBAQAogCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAjaW5jbHVkZSA8bm90aWZ5
Lmg+CisjaW5jbHVkZSA8d3RmL0Jsb2NrUHRyLmg+CiAjZW5kaWYKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewpAQCAtNzksMTMgKzgwLDEzIEBAIHZvaWQgaW5pdGlhbGl6ZUxvZ0NoYW5uZWxzSWZOZWNl
c3NhcnkoKQogfQogCiAjaWZuZGVmIE5ERUJVRwotdm9pZCByZWdpc3Rlck5vdGlmeUNhbGxiYWNr
KGNvbnN0IFN0cmluZyYgbm90aWZ5SUQsIHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiBjYWxsYmFjaykK
K3ZvaWQgcmVnaXN0ZXJOb3RpZnlDYWxsYmFjayhjb25zdCBTdHJpbmcmIG5vdGlmeUlELCBXVEY6
OkZ1bmN0aW9uPHZvaWQoKT4mJiBjYWxsYmFjaykKIHsKICNpZiBQTEFURk9STShDT0NPQSkKICAg
ICBpbnQgdG9rZW47Ci0gICAgbm90aWZ5X3JlZ2lzdGVyX2Rpc3BhdGNoKG5vdGlmeUlELnV0Zjgo
KS5kYXRhKCksICZ0b2tlbiwgZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgXihpbnQpIHsKKyAg
ICBub3RpZnlfcmVnaXN0ZXJfZGlzcGF0Y2gobm90aWZ5SUQudXRmOCgpLmRhdGEoKSwgJnRva2Vu
LCBkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBCbG9ja1B0cjx2b2lkIChpbnQpPjo6ZnJvbUNh
bGxhYmxlKFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSAoaW50KSB7CiAgICAgICAgIGNh
bGxiYWNrKCk7Ci0gICAgfSk7CisgICAgfSkuZ2V0KCkpOwogI2Vsc2UKICAgICBVTlVTRURfUEFS
QU0obm90aWZ5SUQpOwogICAgIFVOVVNFRF9QQVJBTShjYWxsYmFjayk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2dnaW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9Mb2dnaW5nLmgKaW5kZXggODgzYTlmMjIwOTdlZWMxNmRlY2NhNDYzMjI4ODUwNjZiNDY3Yjc0
ZS4uNWFiMDE2MmExNTg0ZDE4NWExYmUzZDUwNmVlOGZhMjhlYWQ3MDM2NyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTG9nZ2luZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0xvZ2dpbmcuaApAQCAtMTAzLDcgKzEwMyw3IEBAIFN0cmluZyBsb2dMZXZlbFN0cmlu
ZygpOwogYm9vbCBpc0xvZ0NoYW5uZWxFbmFibGVkKGNvbnN0IFN0cmluZyYgbmFtZSk7CiBXRUJD
T1JFX0VYUE9SVCB2b2lkIHNldExvZ0NoYW5uZWxUb0FjY3VtdWxhdGUoY29uc3QgU3RyaW5nJiBu
YW1lKTsKICNpZm5kZWYgTkRFQlVHCi12b2lkIHJlZ2lzdGVyTm90aWZ5Q2FsbGJhY2soY29uc3Qg
U3RyaW5nJiBub3RpZnlJRCwgc3RkOjpmdW5jdGlvbjx2b2lkKCk+IGNhbGxiYWNrKTsKK3ZvaWQg
cmVnaXN0ZXJOb3RpZnlDYWxsYmFjayhjb25zdCBTdHJpbmcmIG5vdGlmeUlELCBXVEY6OkZ1bmN0
aW9uPHZvaWQoKT4mJiBjYWxsYmFjayk7CiAjZW5kaWYKIAogI2VuZGlmIC8vICFMT0dfRElTQUJM
RUQgfHwgIVJFTEVBU0VfTE9HX0RJU0FCTEVECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9NYWluVGhyZWFkU2hhcmVkVGltZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vTWFpblRocmVhZFNoYXJlZFRpbWVyLmNwcAppbmRleCBkZGE2ODJlYjg0MTFiYjg2MzIyYjMy
YTFmYTUxYjBiZDJhNTE3Yjg0Li42OGZmMDQzODk3YmJjYTkzMzliZjIzZGM0ZGQxM2M1MjA0Y2Uz
MGUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NYWluVGhyZWFkU2hhcmVk
VGltZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01haW5UaHJlYWRTaGFyZWRU
aW1lci5jcHAKQEAgLTQwLDcgKzQwLDcgQEAgTWFpblRocmVhZFNoYXJlZFRpbWVyOjpNYWluVGhy
ZWFkU2hhcmVkVGltZXIoKQogfQogI2VuZGlmCiAKLXZvaWQgTWFpblRocmVhZFNoYXJlZFRpbWVy
OjpzZXRGaXJlZEZ1bmN0aW9uKHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiYmIGZpcmVkRnVuY3Rpb24p
Cit2b2lkIE1haW5UaHJlYWRTaGFyZWRUaW1lcjo6c2V0RmlyZWRGdW5jdGlvbihXVEY6OkZ1bmN0
aW9uPHZvaWQoKT4mJiBmaXJlZEZ1bmN0aW9uKQogewogICAgIFJFTEVBU0VfQVNTRVJUKCFtX2Zp
cmVkRnVuY3Rpb24gfHwgIWZpcmVkRnVuY3Rpb24pOwogICAgIG1fZmlyZWRGdW5jdGlvbiA9IFdU
Rk1vdmUoZmlyZWRGdW5jdGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9NYWluVGhyZWFkU2hhcmVkVGltZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01haW5U
aHJlYWRTaGFyZWRUaW1lci5oCmluZGV4IDQ5MDczMGYxNDMyZDkzNjBiYjJiZDU4YzBhYWNiNzQy
NDk4NTRlNGIuLjk0YTE5MGQzNzc5OWYyOTQ2Y2Q1NmU5N2Q5MDNmN2M4NWQ1NjRmZjEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01haW5UaHJlYWRTaGFyZWRUaW1lci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01haW5UaHJlYWRTaGFyZWRUaW1lci5oCkBAIC00
MSw3ICs0MSw3IEBAIGNsYXNzIE1haW5UaHJlYWRTaGFyZWRUaW1lciBmaW5hbCA6IHB1YmxpYyBT
aGFyZWRUaW1lciB7CiBwdWJsaWM6CiAgICAgc3RhdGljIE1haW5UaHJlYWRTaGFyZWRUaW1lciYg
c2luZ2xldG9uKCk7CiAKLSAgICB2b2lkIHNldEZpcmVkRnVuY3Rpb24oc3RkOjpmdW5jdGlvbjx2
b2lkKCk+JiYpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0RmlyZWRGdW5jdGlvbihXVEY6OkZ1bmN0
aW9uPHZvaWQoKT4mJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRGaXJlSW50ZXJ2YWwoU2Vjb25k
cykgb3ZlcnJpZGU7CiAgICAgdm9pZCBzdG9wKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBpbnZhbGlk
YXRlKCkgb3ZlcnJpZGU7CkBAIC01Myw3ICs1Myw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAg
TWFpblRocmVhZFNoYXJlZFRpbWVyKCk7CiAKLSAgICBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4gbV9m
aXJlZEZ1bmN0aW9uOworICAgIFdURjo6RnVuY3Rpb248dm9pZCgpPiBtX2ZpcmVkRnVuY3Rpb247
CiAjaWYgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShXUEUpCiAgICAgUnVuTG9vcDo6VGltZXI8
TWFpblRocmVhZFNoYXJlZFRpbWVyPiBtX3RpbWVyOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVBhc3RlYm9hcmQuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1BsYXRmb3JtUGFzdGVib2FyZC5oCmluZGV4IGFmZGExNTVlZjEzNDQzYTkxMWU4
MzA3MGRkYzc3NzFiNWI1MjNkODguLjEzZTU5ODkwODAxOWY2MjRkNWQ1ZGM3NDMzMjU1MGQzZTA2
NjY2YzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtUGFzdGVi
b2FyZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtUGFzdGVib2FyZC5o
CkBAIC0yNiw4ICsyNiw4IEBACiAjaWZuZGVmIFBsYXRmb3JtUGFzdGVib2FyZF9oCiAjZGVmaW5l
IFBsYXRmb3JtUGFzdGVib2FyZF9oCiAKLSNpbmNsdWRlIDxmdW5jdGlvbmFsPgogI2luY2x1ZGUg
PHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+CiAjaW5jbHVkZSA8d3Rm
L1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAjaW5jbHVkZSA8d3Rm
L1ZlY3Rvci5oPgpAQCAtOTMsNyArOTMsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQg
aW50IG51bWJlck9mRmlsZXMoKTsKIAogI2lmIFBMQVRGT1JNKEdUSykKLSAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIHdyaXRlVG9DbGlwYm9hcmQoY29uc3QgU2VsZWN0aW9uRGF0YSYsIHN0ZDo6ZnVu
Y3Rpb248dm9pZCgpPiYmIHByaW1hcnlTZWxlY3Rpb25DbGVhcmVkKTsKKyAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIHdyaXRlVG9DbGlwYm9hcmQoY29uc3QgU2VsZWN0aW9uRGF0YSYsIFdURjo6RnVu
Y3Rpb248dm9pZCgpPiYmIHByaW1hcnlTZWxlY3Rpb25DbGVhcmVkKTsKICAgICBXRUJDT1JFX0VY
UE9SVCBSZWY8U2VsZWN0aW9uRGF0YT4gcmVhZEZyb21DbGlwYm9hcmQoKTsKICNlbmRpZgogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY29wZUd1YXJkLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9TY29wZUd1YXJkLmgKaW5kZXggMjRhYjdmZjU5ZTA0YTk0YTAwNjM5
MTJhYTlmYTlmNTEzNjkwNTg1MS4uZDRjYjNiOWY4ZWIyNDRlMWMxMzhhMDdmNzYyNzgxZGQ2ZDFh
Mjc1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2NvcGVHdWFyZC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njb3BlR3VhcmQuaApAQCAtMjUsNyArMjUsNyBA
QAogI2lmbmRlZiBTY29wZUd1YXJkX2gKICNkZWZpbmUgU2NvcGVHdWFyZF9oCiAKLSNpbmNsdWRl
IDxmdW5jdGlvbmFsPgorI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKQEAgLTM1LDcgKzM1LDcgQEAgcHVibGljOgogICAgIHsKICAgICB9CiAKLSAgICBT
Y29wZUd1YXJkKHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiBmdW5jdGlvbikKKyAgICBTY29wZUd1YXJk
KFdURjo6RnVuY3Rpb248dm9pZCgpPiYmIGZ1bmN0aW9uKQogICAgICAgICA6IG1fZnVuY3Rpb24o
V1RGTW92ZShmdW5jdGlvbikpCiAgICAgewogICAgIH0KQEAgLTQ2LDcgKzQ2LDcgQEAgcHVibGlj
OgogICAgICAgICAgICAgbV9mdW5jdGlvbigpOwogICAgIH0KIAotICAgIHZvaWQgZW5hYmxlKHN0
ZDo6ZnVuY3Rpb248dm9pZCgpPiBmdW5jdGlvbikKKyAgICB2b2lkIGVuYWJsZShXVEY6OkZ1bmN0
aW9uPHZvaWQoKT4mJiBmdW5jdGlvbikKICAgICB7CiAgICAgICAgIG1fZnVuY3Rpb24gPSBXVEZN
b3ZlKGZ1bmN0aW9uKTsKICAgICB9CkBAIC01Nyw3ICs1Nyw3IEBAIHB1YmxpYzoKICAgICB9CiAK
IHByaXZhdGU6Ci0gICAgc3RkOjpmdW5jdGlvbjx2b2lkKCk+IG1fZnVuY3Rpb24geyBudWxscHRy
IH07CisgICAgV1RGOjpGdW5jdGlvbjx2b2lkKCk+IG1fZnVuY3Rpb247CiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3Jv
bGxBbmltYXRpb25TbW9vdGguY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5p
bWF0aW9uU21vb3RoLmNwcAppbmRleCA0YzZiODE0ZjkwZGFlZjBmMTQ5YWM1NDY2ZThjOWM3OGI1
YWE5OTcwLi5lMGZiMTJjNDkxN2E5MDFjZTBjMjQ4Y2QzNDhjYmYwZjVmOWYzMjYwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRpb25TbW9vdGguY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdGlvblNtb290aC5jcHAKQEAg
LTQwLDcgKzQwLDcgQEAgc3RhdGljIGNvbnN0IGRvdWJsZSBmcmFtZVJhdGUgPSA2MDsKIHN0YXRp
YyBjb25zdCBTZWNvbmRzIHRpY2tUaW1lID0gMV9zIC8gZnJhbWVSYXRlOwogc3RhdGljIGNvbnN0
IFNlY29uZHMgbWluaW11bVRpbWVySW50ZXJ2YWwgeyAxX21zIH07CiAKLVNjcm9sbEFuaW1hdGlv
blNtb290aDo6U2Nyb2xsQW5pbWF0aW9uU21vb3RoKFNjcm9sbGFibGVBcmVhJiBzY3JvbGxhYmxl
QXJlYSwgY29uc3QgRmxvYXRQb2ludCYgcG9zaXRpb24sIHN0ZDo6ZnVuY3Rpb248dm9pZCAoRmxv
YXRQb2ludCYmKT4mJiBub3RpZnlQb3NpdGlvbkNoYW5nZWRGdW5jdGlvbikKK1Njcm9sbEFuaW1h
dGlvblNtb290aDo6U2Nyb2xsQW5pbWF0aW9uU21vb3RoKFNjcm9sbGFibGVBcmVhJiBzY3JvbGxh
YmxlQXJlYSwgY29uc3QgRmxvYXRQb2ludCYgcG9zaXRpb24sIFdURjo6RnVuY3Rpb248dm9pZCAo
RmxvYXRQb2ludCYmKT4mJiBub3RpZnlQb3NpdGlvbkNoYW5nZWRGdW5jdGlvbikKICAgICA6IFNj
cm9sbEFuaW1hdGlvbihzY3JvbGxhYmxlQXJlYSkKICAgICAsIG1fbm90aWZ5UG9zaXRpb25DaGFu
Z2VkRnVuY3Rpb24oV1RGTW92ZShub3RpZnlQb3NpdGlvbkNoYW5nZWRGdW5jdGlvbikpCiAgICAg
LCBtX2hvcml6b250YWxEYXRhKHBvc2l0aW9uLngoKSwgc2Nyb2xsYWJsZUFyZWEudmlzaWJsZVdp
ZHRoKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRp
b25TbW9vdGguaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdGlvblNtb290
aC5oCmluZGV4IDI0Mzk2NDhmMTg0ZGM3ZDIyODQ5Y2FlMzk1MWMwYTZkODY3MmRjOTMuLjAyY2M0
ZWUyYmQ3NDNkMDYyOWVhZDA0OGJmNzZjNDgxNjdiZmU4ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdGlvblNtb290aC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdGlvblNtb290aC5oCkBAIC0zOCw3ICszOCw3IEBAIGNs
YXNzIFNjcm9sbGFibGVBcmVhOwogCiBjbGFzcyBTY3JvbGxBbmltYXRpb25TbW9vdGggZmluYWw6
IHB1YmxpYyBTY3JvbGxBbmltYXRpb24gewogcHVibGljOgotICAgIFNjcm9sbEFuaW1hdGlvblNt
b290aChTY3JvbGxhYmxlQXJlYSYsIGNvbnN0IEZsb2F0UG9pbnQmLCBzdGQ6OmZ1bmN0aW9uPHZv
aWQgKEZsb2F0UG9pbnQmJik+JiYgbm90aWZ5UG9zaXRpb25DaGFuZ2VkRnVuY3Rpb24pOworICAg
IFNjcm9sbEFuaW1hdGlvblNtb290aChTY3JvbGxhYmxlQXJlYSYsIGNvbnN0IEZsb2F0UG9pbnQm
LCBXVEY6OkZ1bmN0aW9uPHZvaWQgKEZsb2F0UG9pbnQmJik+JiYgbm90aWZ5UG9zaXRpb25DaGFu
Z2VkRnVuY3Rpb24pOwogICAgIHZpcnR1YWwgflNjcm9sbEFuaW1hdGlvblNtb290aCgpOwogCiAg
ICAgZW51bSBjbGFzcyBDdXJ2ZSB7CkBAIC05Nyw3ICs5Nyw3IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCBhbmltYXRpb25UaW1lckZpcmVkKCk7CiAgICAgYm9vbCBhbmltYXRpb25UaW1lckFjdGl2ZSgp
IGNvbnN0OwogCi0gICAgc3RkOjpmdW5jdGlvbjx2b2lkIChGbG9hdFBvaW50JiYpPiBtX25vdGlm
eVBvc2l0aW9uQ2hhbmdlZEZ1bmN0aW9uOworICAgIFdURjo6RnVuY3Rpb248dm9pZCAoRmxvYXRQ
b2ludCYmKT4gbV9ub3RpZnlQb3NpdGlvbkNoYW5nZWRGdW5jdGlvbjsKIAogICAgIFBlckF4aXNE
YXRhIG1faG9yaXpvbnRhbERhdGE7CiAgICAgUGVyQXhpc0RhdGEgbV92ZXJ0aWNhbERhdGE7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRUaW1lci5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkVGltZXIuaAppbmRleCA3Nzc3ZjY3YzlhYWY3M2UwY2Jm
YTcwODg4NzYxM2I2ZjIzMzI5MjYyLi40NDQ1ZTNiNzJlNzZhOTIxYzBiZThmM2U4Nzc5ZTU1NTM2
MmU3MDQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRUaW1lci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZFRpbWVyLmgKQEAgLTI2LDggKzI2
LDggQEAKICNpZm5kZWYgU2hhcmVkVGltZXJfaAogI2RlZmluZSBTaGFyZWRUaW1lcl9oCiAKLSNp
bmNsdWRlIDxmdW5jdGlvbmFsPgogI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CisjaW5jbHVk
ZSA8d3RmL0Z1bmN0aW9uLmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAjaW5jbHVk
ZSA8d3RmL1NlY29uZHMuaD4KIApAQCAtNDEsNyArNDEsNyBAQCBjbGFzcyBTaGFyZWRUaW1lciB7
CiBwdWJsaWM6CiAgICAgU2hhcmVkVGltZXIoKSA9IGRlZmF1bHQ7CiAgICAgdmlydHVhbCB+U2hh
cmVkVGltZXIoKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgc2V0RmlyZWRGdW5jdGlvbihzdGQ6OmZ1
bmN0aW9uPHZvaWQoKT4mJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRGaXJlZEZ1bmN0aW9u
KFdURjo6RnVuY3Rpb248dm9pZCgpPiYmKSA9IDA7CiAKICAgICAvLyBUaGUgZmlyZSBpbnRlcnZh
bCBpcyBpbiBzZWNvbmRzIHJlbGF0aXZlIHRvIHRoZSBjdXJyZW50IG1vbm90b25pYyBjbG9jayB0
aW1lLgogICAgIHZpcnR1YWwgdm9pZCBzZXRGaXJlSW50ZXJ2YWwoU2Vjb25kcykgPSAwOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Np
b25NYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVk
aWFTZXNzaW9uTWFuYWdlci5jcHAKaW5kZXggYWRkYmM0M2Y4MDVkZDUwMmIzY2Q3OWVlNDY3NTM2
NTZlNTRiNzZhYS4uMDNkNzYxZWJjMTg5NDYyODU3ODkzOGU3ZDFjYWMwYmFjNjAwYjdkOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Np
b25NYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9QbGF0Zm9y
bU1lZGlhU2Vzc2lvbk1hbmFnZXIuY3BwCkBAIC0yNzcsNyArMjc3LDcgQEAgUGxhdGZvcm1NZWRp
YVNlc3Npb24qIFBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6Y3VycmVudFNlc3Npb24oKSBj
b25zdAogICAgIHJldHVybiBtX3Nlc3Npb25zWzBdOwogfQogCi1WZWN0b3I8UGxhdGZvcm1NZWRp
YVNlc3Npb24qPiBQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6OmN1cnJlbnRTZXNzaW9uc01h
dGNoaW5nKHN0ZDo6ZnVuY3Rpb248Ym9vbChjb25zdCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbiAmKT4g
ZmlsdGVyKQorVmVjdG9yPFBsYXRmb3JtTWVkaWFTZXNzaW9uKj4gUGxhdGZvcm1NZWRpYVNlc3Np
b25NYW5hZ2VyOjpjdXJyZW50U2Vzc2lvbnNNYXRjaGluZyhjb25zdCBXVEY6OkZ1bmN0aW9uPGJv
b2woY29uc3QgUGxhdGZvcm1NZWRpYVNlc3Npb24mKT4mIGZpbHRlcikKIHsKICAgICBWZWN0b3I8
UGxhdGZvcm1NZWRpYVNlc3Npb24qPiBtYXRjaGluZ1Nlc3Npb25zOwogICAgIGZvckVhY2hTZXNz
aW9uKFsmXSAoUGxhdGZvcm1NZWRpYVNlc3Npb24mIHNlc3Npb24sIHNpemVfdCkgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Npb25N
YW5hZ2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vz
c2lvbk1hbmFnZXIuaAppbmRleCBmMmUwZjk4NzM3NGJjNTk0NTMyODkxMTgzNWY5MGUxNWMwMDBm
NjgyLi44NDI3NDhmZmI2NDk1ZWMxMzY3NDAzMzI1YTEzNmZmMDZkOWYxYzFlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFn
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vz
c2lvbk1hbmFnZXIuaApAQCAtMTA1LDcgKzEwNSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEN1
cnJlbnRTZXNzaW9uKFBsYXRmb3JtTWVkaWFTZXNzaW9uJik7CiAgICAgUGxhdGZvcm1NZWRpYVNl
c3Npb24qIGN1cnJlbnRTZXNzaW9uKCkgY29uc3Q7CiAKLSAgICBWZWN0b3I8UGxhdGZvcm1NZWRp
YVNlc3Npb24qPiBjdXJyZW50U2Vzc2lvbnNNYXRjaGluZyhzdGQ6OmZ1bmN0aW9uPGJvb2woY29u
c3QgUGxhdGZvcm1NZWRpYVNlc3Npb24mKT4pOworICAgIFZlY3RvcjxQbGF0Zm9ybU1lZGlhU2Vz
c2lvbio+IGN1cnJlbnRTZXNzaW9uc01hdGNoaW5nKGNvbnN0IFdURjo6RnVuY3Rpb248Ym9vbChj
b25zdCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbiYpPiYpOwogCiAgICAgdm9pZCBzZXNzaW9uSXNQbGF5
aW5nVG9XaXJlbGVzc1BsYXliYWNrVGFyZ2V0Q2hhbmdlZChQbGF0Zm9ybU1lZGlhU2Vzc2lvbiYp
OwogICAgIHZvaWQgc2Vzc2lvbkNhblByb2R1Y2VBdWRpb0NoYW5nZWQoUGxhdGZvcm1NZWRpYVNl
c3Npb24mKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL01haW5UaHJl
YWRTaGFyZWRUaW1lckNGLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL01haW5UaHJl
YWRTaGFyZWRUaW1lckNGLmNwcAppbmRleCBmOWU0YmY4MDAwMjRkZWFmZDZlMzAzMjQwNWZhZGM4
NWQwZGM3MDVhLi5mMDE4M2IxNGRiZmMyYzQ4Y2QyMTk2M2JmODQ3Mzk5NmIyMGIxNGZlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9NYWluVGhyZWFkU2hhcmVkVGltZXJD
Ri5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvTWFpblRocmVhZFNoYXJlZFRp
bWVyQ0YuY3BwCkBAIC01Nyw3ICs1Nyw3IEBAIHN0YXRpYyB2b2lkIHNldHVwUG93ZXJPYnNlcnZl
cigpCiAjaWYgUExBVEZPUk0oTUFDKQogICAgIHN0YXRpYyBQb3dlck9ic2VydmVyKiBwb3dlck9i
c2VydmVyOwogICAgIGlmICghcG93ZXJPYnNlcnZlcikKLSAgICAgICAgcG93ZXJPYnNlcnZlciA9
IHN0ZDo6bWFrZV91bmlxdWU8UG93ZXJPYnNlcnZlcj4ocmVzdGFydFNoYXJlZFRpbWVyKS5yZWxl
YXNlKCk7CisgICAgICAgIHBvd2VyT2JzZXJ2ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFBvd2VyT2Jz
ZXJ2ZXI+KFtdIHsgcmVzdGFydFNoYXJlZFRpbWVyKCk7IH0pLnJlbGVhc2UoKTsKICNlbGlmIFBM
QVRGT1JNKElPUykKICAgICBzdGF0aWMgYm9vbCByZWdpc3RlcmVkRm9yQXBwbGljYXRpb25Ob3Rp
ZmljYXRpb24gPSBmYWxzZTsKICAgICBpZiAoIXJlZ2lzdGVyZWRGb3JBcHBsaWNhdGlvbk5vdGlm
aWNhdGlvbikgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvUnVuTG9v
cE9ic2VydmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9SdW5Mb29wT2JzZXJ2ZXIu
aAppbmRleCBjMWI2YTBkOWRjOWI4MjcyNWYwNGI1NWM4MzE4ZTYxYWQxNTY5MDgwLi45NjlhMDM3
ODZiYmIxZjExYzk3NDZmZTBiMDZlMmViZWFhZmVkM2UwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jZi9SdW5Mb29wT2JzZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jZi9SdW5Mb29wT2JzZXJ2ZXIuaApAQCAtMjcsNyArMjcsNyBAQAogI2RlZmluZSBS
dW5Mb29wT2JzZXJ2ZXJfaAogCiAjaW5jbHVkZSA8Q29yZUZvdW5kYXRpb24vQ29yZUZvdW5kYXRp
b24uaD4KLSNpbmNsdWRlIDxmdW5jdGlvbmFsPgorI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgog
I2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4K
IApAQCAtMzYsMTEgKzM2LDExIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFJ1bkxvb3BP
YnNlcnZlciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUnVuTG9vcE9ic2VydmVyKTsgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgdHlwZWRlZiBzdGQ6OmZ1bmN0aW9u
PHZvaWQgKCk+IFJ1bkxvb3BPYnNlcnZlckNhbGxiYWNrOworICAgIHR5cGVkZWYgV1RGOjpGdW5j
dGlvbjx2b2lkICgpPiBSdW5Mb29wT2JzZXJ2ZXJDYWxsYmFjazsKIAotICAgIFJ1bkxvb3BPYnNl
cnZlcihDRkluZGV4IG9yZGVyLCBSdW5Mb29wT2JzZXJ2ZXJDYWxsYmFjayBjYWxsYmFjaykKKyAg
ICBSdW5Mb29wT2JzZXJ2ZXIoQ0ZJbmRleCBvcmRlciwgUnVuTG9vcE9ic2VydmVyQ2FsbGJhY2sm
JiBjYWxsYmFjaykKICAgICAgICAgOiBtX29yZGVyKG9yZGVyKQotICAgICAgICAsIG1fY2FsbGJh
Y2soY2FsbGJhY2spCisgICAgICAgICwgbV9jYWxsYmFjayhXVEZNb3ZlKGNhbGxiYWNrKSkKICAg
ICB7IH0KIAogICAgIFdFQkNPUkVfRVhQT1JUIH5SdW5Mb29wT2JzZXJ2ZXIoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKaW5kZXgg
YzQ3MDc0NjQ4ZGU3ZjRiMDc4Y2EyZjFhNmFmYWVhODQ5ZWU3OTQ5ZS4uNTJmN2RlMjc1M2NjZGI2
Y2M2ZGU1MzlmNmFjMDAyMGUwNjhhY2FmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNs
dWRlICJJbWFnZS5oIgogI2luY2x1ZGUgIkltYWdlT3JpZW50YXRpb24uaCIKICNpbmNsdWRlICJQ
YXR0ZXJuLmgiCisjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+CiAjaW5jbHVkZSA8d3RmL05vbmNv
cHlhYmxlLmg+CiAKICNpZiBVU0UoQ0cpCkBAIC01OTksOCArNjAwLDggQEAgcHJpdmF0ZToKIAog
I2lmIFVTRShESVJFQ1QyRCkKICAgICB2b2lkIHBsYXRmb3JtSW5pdChIREMsIElEMkQxUmVuZGVy
VGFyZ2V0KiosIFJFQ1QsIGJvb2wgaGFzQWxwaGEgPSBmYWxzZSk7Ci0gICAgdm9pZCBkcmF3V2l0
aG91dFNoYWRvdyhjb25zdCBGbG9hdFJlY3QmIGJvdW5kaW5nUmVjdCwgY29uc3Qgc3RkOjpmdW5j
dGlvbjx2b2lkKElEMkQxUmVuZGVyVGFyZ2V0Kik+Jik7Ci0gICAgdm9pZCBkcmF3V2l0aFNoYWRv
dyhjb25zdCBGbG9hdFJlY3QmIGJvdW5kaW5nUmVjdCwgY29uc3Qgc3RkOjpmdW5jdGlvbjx2b2lk
KElEMkQxUmVuZGVyVGFyZ2V0Kik+Jik7CisgICAgdm9pZCBkcmF3V2l0aG91dFNoYWRvdyhjb25z
dCBGbG9hdFJlY3QmIGJvdW5kaW5nUmVjdCwgY29uc3QgV1RGOjpGdW5jdGlvbjx2b2lkKElEMkQx
UmVuZGVyVGFyZ2V0Kik+Jik7CisgICAgdm9pZCBkcmF3V2l0aFNoYWRvdyhjb25zdCBGbG9hdFJl
Y3QmIGJvdW5kaW5nUmVjdCwgY29uc3QgV1RGOjpGdW5jdGlvbjx2b2lkKElEMkQxUmVuZGVyVGFy
Z2V0Kik+Jik7CiAjZW5kaWYKIAogICAgIHZvaWQgc2F2ZVBsYXRmb3JtU3RhdGUoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5jcHAKaW5k
ZXggZjc5ZjQ0ZWUwYjkwYTUyNzIxZDlhMmEwYWQ4OTkwMTAwNWVkMTg1NC4uMTZjNjdmNDllOWZi
YTk0NDI1ZGIxZjI4NmEzODZjMjgyY2JhN2UzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5jcHAKQEAgLTY3Miw3ICs2NzIsNyBAQCB2
b2lkIEdyYXBoaWNzTGF5ZXI6OmFkZFJlcGFpbnRSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVwYWlu
dFJlY3QpCiAgICAgfQogfQogCi12b2lkIEdyYXBoaWNzTGF5ZXI6OnRyYXZlcnNlKEdyYXBoaWNz
TGF5ZXImIGxheWVyLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKEdyYXBoaWNzTGF5ZXImKT4gdHJhdmVy
c2FsRnVuYykKK3ZvaWQgR3JhcGhpY3NMYXllcjo6dHJhdmVyc2UoR3JhcGhpY3NMYXllciYgbGF5
ZXIsIGNvbnN0IFdURjo6RnVuY3Rpb248dm9pZCAoR3JhcGhpY3NMYXllciYpPiYgdHJhdmVyc2Fs
RnVuYykKIHsKICAgICB0cmF2ZXJzYWxGdW5jKGxheWVyKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5oCmluZGV4IGVjZmUzOWM2Njc1NDY0
NzQxOGRiMDM5MjNkYjI1MjM3ODhlM2FjYzUuLjZjMWI3OTZkMjgzMjM2YWQ2OTliMmI5NTExNDYz
ZDlmMTUwZjYxYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzTGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9H
cmFwaGljc0xheWVyLmgKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlICJQbGF0Zm9ybUxheWVy
LmgiCiAjaW5jbHVkZSAiVHJhbnNmb3JtT3BlcmF0aW9ucy5oIgogI2luY2x1ZGUgIldpbmRSdWxl
LmgiCisjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+CiAjaW5jbHVkZSA8d3RmL1R5cGVDYXN0cy5o
PgogCiAjaWYgRU5BQkxFKENTU19DT01QT1NJVElORykKQEAgLTU3MCw3ICs1NzEsNyBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCBib29sIGlzR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIoKSBjb25z
dCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc0Nvb3JkaW5hdGVkR3JhcGhp
Y3NMYXllcigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKLSAgICBzdGF0aWMgdm9pZCB0cmF2
ZXJzZShHcmFwaGljc0xheWVyJiwgc3RkOjpmdW5jdGlvbjx2b2lkIChHcmFwaGljc0xheWVyJik+
KTsKKyAgICBzdGF0aWMgdm9pZCB0cmF2ZXJzZShHcmFwaGljc0xheWVyJiwgY29uc3QgV1RGOjpG
dW5jdGlvbjx2b2lkIChHcmFwaGljc0xheWVyJik+Jik7CiAKIHByb3RlY3RlZDoKICAgICBXRUJD
T1JFX0VYUE9SVCBleHBsaWNpdCBHcmFwaGljc0xheWVyKFR5cGUsIEdyYXBoaWNzTGF5ZXJDbGll
bnQmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlh
UGxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVy
LmNwcAppbmRleCA2ZDJlNWFhM2EwMzcyZGVhMjlkYmMwMzllOWY2MzZiYmRkMzUxMDk2Li5iMGZi
M2RkNzdjNDY0M2ZiOGQyYzJmZDcwZmJiODU5ZTRkNWNjNDdjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCkBAIC0xODgsNyArMTg4LDcg
QEAgc3RydWN0IE1lZGlhUGxheWVyRmFjdG9yeSB7CiAgICAgTWVkaWFFbmdpbmVTdXBwb3J0c0tl
eVN5c3RlbSBzdXBwb3J0c0tleVN5c3RlbTsKIH07CiAKLXN0YXRpYyB2b2lkIGFkZE1lZGlhRW5n
aW5lKENyZWF0ZU1lZGlhRW5naW5lUGxheWVyLCBNZWRpYUVuZ2luZVN1cHBvcnRlZFR5cGVzLCBN
ZWRpYUVuZ2luZVN1cHBvcnRzVHlwZSwgTWVkaWFFbmdpbmVPcmlnaW5zSW5NZWRpYUNhY2hlLCBN
ZWRpYUVuZ2luZUNsZWFyTWVkaWFDYWNoZSwgTWVkaWFFbmdpbmVDbGVhck1lZGlhQ2FjaGVGb3JP
cmlnaW5zLCBNZWRpYUVuZ2luZVN1cHBvcnRzS2V5U3lzdGVtKTsKK3N0YXRpYyB2b2lkIGFkZE1l
ZGlhRW5naW5lKENyZWF0ZU1lZGlhRW5naW5lUGxheWVyJiYsIE1lZGlhRW5naW5lU3VwcG9ydGVk
VHlwZXMsIE1lZGlhRW5naW5lU3VwcG9ydHNUeXBlLCBNZWRpYUVuZ2luZU9yaWdpbnNJbk1lZGlh
Q2FjaGUsIE1lZGlhRW5naW5lQ2xlYXJNZWRpYUNhY2hlLCBNZWRpYUVuZ2luZUNsZWFyTWVkaWFD
YWNoZUZvck9yaWdpbnMsIE1lZGlhRW5naW5lU3VwcG9ydHNLZXlTeXN0ZW0pOwogCiBzdGF0aWMg
TG9jayYgbWVkaWFFbmdpbmVWZWN0b3JMb2NrKCkKIHsKQEAgLTI2OSwxNCArMjY5LDE0IEBAIHN0
YXRpYyBjb25zdCBWZWN0b3I8TWVkaWFQbGF5ZXJGYWN0b3J5PiYgaW5zdGFsbGVkTWVkaWFFbmdp
bmVzKCkKICAgICByZXR1cm4gbXV0YWJsZUluc3RhbGxlZE1lZGlhRW5naW5lc1ZlY3RvcigpOwog
fQogCi1zdGF0aWMgdm9pZCBhZGRNZWRpYUVuZ2luZShDcmVhdGVNZWRpYUVuZ2luZVBsYXllciBj
b25zdHJ1Y3RvciwgTWVkaWFFbmdpbmVTdXBwb3J0ZWRUeXBlcyBnZXRTdXBwb3J0ZWRUeXBlcywg
TWVkaWFFbmdpbmVTdXBwb3J0c1R5cGUgc3VwcG9ydHNUeXBlLAorc3RhdGljIHZvaWQgYWRkTWVk
aWFFbmdpbmUoQ3JlYXRlTWVkaWFFbmdpbmVQbGF5ZXImJiBjb25zdHJ1Y3RvciwgTWVkaWFFbmdp
bmVTdXBwb3J0ZWRUeXBlcyBnZXRTdXBwb3J0ZWRUeXBlcywgTWVkaWFFbmdpbmVTdXBwb3J0c1R5
cGUgc3VwcG9ydHNUeXBlLAogICAgIE1lZGlhRW5naW5lT3JpZ2luc0luTWVkaWFDYWNoZSBvcmln
aW5zSW5NZWRpYUNhY2hlLCBNZWRpYUVuZ2luZUNsZWFyTWVkaWFDYWNoZSBjbGVhck1lZGlhQ2Fj
aGUsIE1lZGlhRW5naW5lQ2xlYXJNZWRpYUNhY2hlRm9yT3JpZ2lucyBjbGVhck1lZGlhQ2FjaGVG
b3JPcmlnaW5zLCBNZWRpYUVuZ2luZVN1cHBvcnRzS2V5U3lzdGVtIHN1cHBvcnRzS2V5U3lzdGVt
KQogewogICAgIEFTU0VSVChjb25zdHJ1Y3Rvcik7CiAgICAgQVNTRVJUKGdldFN1cHBvcnRlZFR5
cGVzKTsKICAgICBBU1NFUlQoc3VwcG9ydHNUeXBlKTsKIAotICAgIG11dGFibGVJbnN0YWxsZWRN
ZWRpYUVuZ2luZXNWZWN0b3IoKS5hcHBlbmQoTWVkaWFQbGF5ZXJGYWN0b3J5IHsgY29uc3RydWN0
b3IsIGdldFN1cHBvcnRlZFR5cGVzLCBzdXBwb3J0c1R5cGUsIG9yaWdpbnNJbk1lZGlhQ2FjaGUs
IGNsZWFyTWVkaWFDYWNoZSwgY2xlYXJNZWRpYUNhY2hlRm9yT3JpZ2lucywgc3VwcG9ydHNLZXlT
eXN0ZW0gfSk7CisgICAgbXV0YWJsZUluc3RhbGxlZE1lZGlhRW5naW5lc1ZlY3RvcigpLmFwcGVu
ZChNZWRpYVBsYXllckZhY3RvcnkgeyBXVEZNb3ZlKGNvbnN0cnVjdG9yKSwgZ2V0U3VwcG9ydGVk
VHlwZXMsIHN1cHBvcnRzVHlwZSwgb3JpZ2luc0luTWVkaWFDYWNoZSwgY2xlYXJNZWRpYUNhY2hl
LCBjbGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5zLCBzdXBwb3J0c0tleVN5c3RlbSB9KTsKIH0KIAog
c3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgYXBwbGljYXRpb25PY3RldFN0cmVhbSgpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaAppbmRleCAxY2Iz
NTA0YjEyMDk5OTA5YmQ0MjNlZjlhYmY3OTVlNmNmNTg1Njg4Li45MmYyNDg1NjhkZWM5YTFiMzI5
OWU2YTA3M2Q4NGVlNGFlNWYzNmRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9NZWRpYVBsYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL01lZGlhUGxheWVyLmgKQEAgLTYyOCw3ICs2MjgsNyBAQCBwcml2YXRlOgogI2VuZGlm
CiB9OwogCi10eXBlZGVmIHN0ZDo6ZnVuY3Rpb248c3RkOjp1bmlxdWVfcHRyPE1lZGlhUGxheWVy
UHJpdmF0ZUludGVyZmFjZT4gKE1lZGlhUGxheWVyKik+IENyZWF0ZU1lZGlhRW5naW5lUGxheWVy
OwordXNpbmcgQ3JlYXRlTWVkaWFFbmdpbmVQbGF5ZXIgPSBXVEY6OkZ1bmN0aW9uPHN0ZDo6dW5p
cXVlX3B0cjxNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2U+IChNZWRpYVBsYXllciopPjsKIHR5
cGVkZWYgdm9pZCAoKk1lZGlhRW5naW5lU3VwcG9ydGVkVHlwZXMpKEhhc2hTZXQ8U3RyaW5nLCBB
U0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+JiB0eXBlcyk7CiB0eXBlZGVmIE1lZGlhUGxheWVyOjpT
dXBwb3J0c1R5cGUgKCpNZWRpYUVuZ2luZVN1cHBvcnRzVHlwZSkoY29uc3QgTWVkaWFFbmdpbmVT
dXBwb3J0UGFyYW1ldGVycyYgcGFyYW1ldGVycyk7CiB0eXBlZGVmIEhhc2hTZXQ8UmVmUHRyPFNl
Y3VyaXR5T3JpZ2luPj4gKCpNZWRpYUVuZ2luZU9yaWdpbnNJbk1lZGlhQ2FjaGUpKGNvbnN0IFN0
cmluZyYgcGF0aCk7CkBAIC02MzYsNyArNjM2LDcgQEAgdHlwZWRlZiB2b2lkICgqTWVkaWFFbmdp
bmVDbGVhck1lZGlhQ2FjaGUpKGNvbnN0IFN0cmluZyYgcGF0aCwgc3RkOjpjaHJvbm86OnN5c3QK
IHR5cGVkZWYgdm9pZCAoKk1lZGlhRW5naW5lQ2xlYXJNZWRpYUNhY2hlRm9yT3JpZ2lucykoY29u
c3QgU3RyaW5nJiBwYXRoLCBjb25zdCBIYXNoU2V0PFJlZlB0cjxTZWN1cml0eU9yaWdpbj4+Jik7
CiB0eXBlZGVmIGJvb2wgKCpNZWRpYUVuZ2luZVN1cHBvcnRzS2V5U3lzdGVtKShjb25zdCBTdHJp
bmcmIGtleVN5c3RlbSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSk7CiAKLXR5cGVkZWYgdm9pZCAo
Kk1lZGlhRW5naW5lUmVnaXN0cmFyKShDcmVhdGVNZWRpYUVuZ2luZVBsYXllciwgTWVkaWFFbmdp
bmVTdXBwb3J0ZWRUeXBlcywgTWVkaWFFbmdpbmVTdXBwb3J0c1R5cGUsCit0eXBlZGVmIHZvaWQg
KCpNZWRpYUVuZ2luZVJlZ2lzdHJhcikoQ3JlYXRlTWVkaWFFbmdpbmVQbGF5ZXImJiwgTWVkaWFF
bmdpbmVTdXBwb3J0ZWRUeXBlcywgTWVkaWFFbmdpbmVTdXBwb3J0c1R5cGUsCiAgICAgTWVkaWFF
bmdpbmVPcmlnaW5zSW5NZWRpYUNhY2hlLCBNZWRpYUVuZ2luZUNsZWFyTWVkaWFDYWNoZSwgTWVk
aWFFbmdpbmVDbGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5zLCBNZWRpYUVuZ2luZVN1cHBvcnRzS2V5
U3lzdGVtKTsKIHR5cGVkZWYgdm9pZCAoKk1lZGlhRW5naW5lUmVnaXN0ZXIpKE1lZGlhRW5naW5l
UmVnaXN0cmFyKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvUGF0aC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0aC5oCmluZGV4
IDI4MzFjZmUzM2U3YzA2YTg4ZDNjNmI4M2M5MTI2Yjg1MDJhMzRlZmMuLjdjYWJhNGNiNmU3ODkz
ODMzZGQ4YjZhYzE0Y2ZlYzlmMWMyOTk3MWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL1BhdGguaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9QYXRoLmgKQEAgLTMwLDggKzMwLDggQEAKIAogI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgog
I2luY2x1ZGUgIldpbmRSdWxlLmgiCi0jaW5jbHVkZSA8ZnVuY3Rpb25hbD4KICNpbmNsdWRlIDx3
dGYvRmFzdE1hbGxvYy5oPgorI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgogI2luY2x1ZGUgPHd0
Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCkBAIC0xMDEsNyArMTAxLDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBGbG9hdFBvaW50KiBwb2ludHM7CiAgICAg
fTsKIAotICAgIHR5cGVkZWYgc3RkOjpmdW5jdGlvbjx2b2lkIChjb25zdCBQYXRoRWxlbWVudCYp
PiBQYXRoQXBwbGllckZ1bmN0aW9uOworICAgIHVzaW5nIFBhdGhBcHBsaWVyRnVuY3Rpb24gPSBX
VEY6OkZ1bmN0aW9uPHZvaWQgKGNvbnN0IFBhdGhFbGVtZW50Jik+OwogCiAgICAgY2xhc3MgUGF0
aCB7CiAgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmNwcAppbmRleCBiMGMyNmFm
NTMzZjQyMzdjNDc2NDk2MTViNGVkNjQxYjQyYzBkZThkLi41ZGI4NzczZjVhNWY5M2YzMTE5M2I5
NTMwZGI0Y2UzZGJhM2NiNDlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmNwcApAQCAtNjU5LDcgKzY1OSw3IEBAIHZvaWQgTWVk
aWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uOjpzZWVrQ29tcGxldGVkKGJvb2wgZmluaXNoZWQp
CiAKICAgICBtX3NlZWtpbmcgPSBmYWxzZTsKIAotICAgIHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiBw
ZW5kaW5nU2VlazsKKyAgICBXVEY6OkZ1bmN0aW9uPHZvaWQoKT4gcGVuZGluZ1NlZWs7CiAgICAg
c3RkOjpzd2FwKHBlbmRpbmdTZWVrLCBtX3BlbmRpbmdTZWVrKTsKIAogICAgIGlmIChwZW5kaW5n
U2VlaykgewpAQCAtNzkwLDE2ICs3OTAsMTcgQEAgc3RhdGljIGNvbnN0IGNoYXIqIG5vdGlmaWNh
dGlvbk5hbWUoTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uOjpOb3RpZmljYXRpb24KICNl
bmRpZiAvLyAhTE9HX0RJU0FCTEVECiAgICAgCiAKLXZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uOjpzY2hlZHVsZU1haW5UaHJlYWROb3RpZmljYXRpb24oTm90aWZpY2F0aW9uIG5v
dGlmaWNhdGlvbikKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uOjpzY2hlZHVs
ZU1haW5UaHJlYWROb3RpZmljYXRpb24oTm90aWZpY2F0aW9uJiYgbm90aWZpY2F0aW9uKQogewot
ICAgIGlmIChub3RpZmljYXRpb24udHlwZSgpICE9IE5vdGlmaWNhdGlvbjo6RnVuY3Rpb25UeXBl
KQorICAgIGF1dG8gbm90aWZpY2F0aW9uVHlwZSA9IG5vdGlmaWNhdGlvbi50eXBlKCk7CisgICAg
aWYgKG5vdGlmaWNhdGlvblR5cGUgIT0gTm90aWZpY2F0aW9uOjpGdW5jdGlvblR5cGUpCiAgICAg
ICAgIExPRyhNZWRpYSwgIk1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbjo6c2NoZWR1bGVN
YWluVGhyZWFkTm90aWZpY2F0aW9uKCVwKSAtIG5vdGlmaWNhdGlvbiAlcyIsIHRoaXMsIG5vdGlm
aWNhdGlvbk5hbWUobm90aWZpY2F0aW9uKSk7CiAKICAgICBtX3F1ZXVlTXV0ZXgubG9jaygpOwog
CiAgICAgLy8gSXQgaXMgaW1wb3J0YW50IHRvIGFsd2F5cyBwcm9jZXNzIHRoZSBwcm9wZXJ0aWVz
IGluIHRoZSBvcmRlciB0aGF0IHdlIGFyZSBub3RpZmllZCwKICAgICAvLyBzbyBhbHdheXMgZ28g
dGhyb3VnaCB0aGUgcXVldWUgYmVjYXVzZSBub3RpZmljYXRpb25zIGhhcHBlbiBvbiBkaWZmZXJl
bnQgdGhyZWFkcy4KLSAgICBtX3F1ZXVlZE5vdGlmaWNhdGlvbnMuYXBwZW5kKG5vdGlmaWNhdGlv
bik7CisgICAgbV9xdWV1ZWROb3RpZmljYXRpb25zLmFwcGVuZChXVEZNb3ZlKG5vdGlmaWNhdGlv
bikpOwogCiAjaWYgT1MoV0lORE9XUykKICAgICBib29sIGRlbGF5RGlzcGF0Y2ggPSB0cnVlOwpA
QCAtODIwLDcgKzgyMSw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uOjpz
Y2hlZHVsZU1haW5UaHJlYWROb3RpZmljYXRpb24oTm90aWZpY2F0aW9uCiAgICAgbV9xdWV1ZU11
dGV4LnVubG9jaygpOwogCiAgICAgaWYgKGRlbGF5RGlzcGF0Y2gpIHsKLSAgICAgICAgaWYgKG5v
dGlmaWNhdGlvbi50eXBlKCkgIT0gTm90aWZpY2F0aW9uOjpGdW5jdGlvblR5cGUpCisgICAgICAg
IGlmIChub3RpZmljYXRpb25UeXBlICE9IE5vdGlmaWNhdGlvbjo6RnVuY3Rpb25UeXBlKQogICAg
ICAgICAgICAgTE9HKE1lZGlhLCAiTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uOjpzY2hl
ZHVsZU1haW5UaHJlYWROb3RpZmljYXRpb24oJXApIC0gZWFybHkgcmV0dXJuIiwgdGhpcyk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CkBAIC04MzIsNyArODMzLDcgQEAgdm9pZCBNZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb246OmRpc3BhdGNoTm90aWZpY2F0aW9uKCkKIHsKICAgICBBU1NF
UlQoaXNNYWluVGhyZWFkKCkpOwogCi0gICAgTm90aWZpY2F0aW9uIG5vdGlmaWNhdGlvbiA9IE5v
dGlmaWNhdGlvbigpOworICAgIE5vdGlmaWNhdGlvbiBub3RpZmljYXRpb247CiAgICAgewogICAg
ICAgICBMb2NrSG9sZGVyIGxvY2sobV9xdWV1ZU11dGV4KTsKICAgICAgICAgCkBAIC04NDEsOCAr
ODQyLDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb246OmRpc3BhdGNoTm90
aWZpY2F0aW9uKCkKICAgICAgICAgCiAgICAgICAgIGlmICghbV9kZWxheUNhbGxiYWNrcykgewog
ICAgICAgICAgICAgLy8gT25seSBkaXNwYXRjaCBvbmUgbm90aWZpY2F0aW9uIGNhbGxiYWNrIHBl
ciBpbnZvY2F0aW9uIGJlY2F1c2UgdGhleSBjYW4gY2F1c2UgcmVjdXJzaW9uLgotICAgICAgICAg
ICAgbm90aWZpY2F0aW9uID0gbV9xdWV1ZWROb3RpZmljYXRpb25zLmZpcnN0KCk7Ci0gICAgICAg
ICAgICBtX3F1ZXVlZE5vdGlmaWNhdGlvbnMucmVtb3ZlKDApOworICAgICAgICAgICAgbm90aWZp
Y2F0aW9uID0gbV9xdWV1ZWROb3RpZmljYXRpb25zLnRha2VGaXJzdCgpOwogICAgICAgICB9CiAg
ICAgICAgIAogICAgICAgICBpZiAoIW1fcXVldWVkTm90aWZpY2F0aW9ucy5pc0VtcHR5KCkgJiYg
IW1fbWFpblRocmVhZENhbGxQZW5kaW5nKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVk
aWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmgKaW5kZXggMGFkMjk4YjA1ZmMwYTMwNzA1YjFl
YjgwMzE2MDhlYjQ5ZjhmMmYzMS4uMDg4YmE0NzA1NzhhN2NkMzlmMWQ5MDE3Y2Y1OTg0MjA1N2Zm
ODY0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb24uaApAQCAtMzIsNyArMzIsOCBAQAogI2luY2x1ZGUgIkluYmFuZFRleHRUcmFja1By
aXZhdGVBVkYuaCIKICNpbmNsdWRlICJNZWRpYVBsYXllclByaXZhdGUuaCIKICNpbmNsdWRlICJU
aW1lci5oIgotI2luY2x1ZGUgPGZ1bmN0aW9uYWw+CisjaW5jbHVkZSA8d3RmL0RlcXVlLmg+Cisj
aW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNs
dWRlIDx3dGYvTG9jay5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KQEAgLTExMywxMCAr
MTE0LDEwIEBAIHB1YmxpYzoKICAgICAgICAgewogICAgICAgICB9CiAKLSAgICAgICAgTm90aWZp
Y2F0aW9uKHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4gZnVuY3Rpb24pCisgICAgICAgIE5vdGlmaWNh
dGlvbihXVEY6OkZ1bmN0aW9uPHZvaWQgKCk+JiYgZnVuY3Rpb24pCiAgICAgICAgICAgICA6IG1f
dHlwZShGdW5jdGlvblR5cGUpCiAgICAgICAgICAgICAsIG1fZmluaXNoZWQoZmFsc2UpCi0gICAg
ICAgICAgICAsIG1fZnVuY3Rpb24oZnVuY3Rpb24pCisgICAgICAgICAgICAsIG1fZnVuY3Rpb24o
V1RGTW92ZShmdW5jdGlvbikpCiAgICAgICAgIHsKICAgICAgICAgfQogICAgICAgICAKQEAgLTEy
NCwxNiArMTI1LDE2IEBAIHB1YmxpYzoKICAgICAgICAgYm9vbCBpc1ZhbGlkKCkgeyByZXR1cm4g
bV90eXBlICE9IE5vbmU7IH0KICAgICAgICAgTWVkaWFUaW1lIHRpbWUoKSB7IHJldHVybiBtX3Rp
bWU7IH0KICAgICAgICAgYm9vbCBmaW5pc2hlZCgpIHsgcmV0dXJuIG1fZmluaXNoZWQ7IH0KLSAg
ICAgICAgc3RkOjpmdW5jdGlvbjx2b2lkICgpPiYgZnVuY3Rpb24oKSB7IHJldHVybiBtX2Z1bmN0
aW9uOyB9CisgICAgICAgIFdURjo6RnVuY3Rpb248dm9pZCAoKT4mIGZ1bmN0aW9uKCkgeyByZXR1
cm4gbV9mdW5jdGlvbjsgfQogICAgICAgICAKICAgICBwcml2YXRlOgogICAgICAgICBUeXBlIG1f
dHlwZTsKICAgICAgICAgTWVkaWFUaW1lIG1fdGltZTsKICAgICAgICAgYm9vbCBtX2ZpbmlzaGVk
OwotICAgICAgICBzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+IG1fZnVuY3Rpb247CisgICAgICAgIFdU
Rjo6RnVuY3Rpb248dm9pZCAoKT4gbV9mdW5jdGlvbjsKICAgICB9OwogCi0gICAgdm9pZCBzY2hl
ZHVsZU1haW5UaHJlYWROb3RpZmljYXRpb24oTm90aWZpY2F0aW9uKTsKKyAgICB2b2lkIHNjaGVk
dWxlTWFpblRocmVhZE5vdGlmaWNhdGlvbihOb3RpZmljYXRpb24mJik7CiAgICAgdm9pZCBzY2hl
ZHVsZU1haW5UaHJlYWROb3RpZmljYXRpb24oTm90aWZpY2F0aW9uOjpUeXBlLCBjb25zdCBNZWRp
YVRpbWUmID0gTWVkaWFUaW1lOjp6ZXJvVGltZSgpKTsKICAgICB2b2lkIHNjaGVkdWxlTWFpblRo
cmVhZE5vdGlmaWNhdGlvbihOb3RpZmljYXRpb246OlR5cGUsIGJvb2wgY29tcGxldGVkKTsKICAg
ICB2b2lkIGRpc3BhdGNoTm90aWZpY2F0aW9uKCk7CkBAIC0zMTcsOSArMzE4LDkgQEAgcHJpdmF0
ZToKIAogICAgIFdlYWtQdHJGYWN0b3J5PE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbj4g
bV93ZWFrUHRyRmFjdG9yeTsKIAotICAgIHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiBtX3BlbmRpbmdT
ZWVrOworICAgIFdURjo6RnVuY3Rpb248dm9pZCgpPiBtX3BlbmRpbmdTZWVrOwogCi0gICAgVmVj
dG9yPE5vdGlmaWNhdGlvbj4gbV9xdWV1ZWROb3RpZmljYXRpb25zOworICAgIERlcXVlPE5vdGlm
aWNhdGlvbj4gbV9xdWV1ZWROb3RpZmljYXRpb25zOwogICAgIG11dGFibGUgTG9jayBtX3F1ZXVl
TXV0ZXg7CiAKICAgICBtdXRhYmxlIHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybVRpbWVSYW5nZXM+
IG1fY2FjaGVkTG9hZGVkVGltZVJhbmdlczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCmluZGV4IDRm
ZmRhNWU5ZjMyZmE1MGExZWZhYjMyY2Y1MmJjY2NkZjE3N2EzMzMuLjZmZGY2MWRmNDk0MDg2ZWY1
MGU1ODU1NGU3ZDlkZGUzYjAxMzIwZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQpAQCAtMzM3
NSw3ICszMzc1LDcgQEAgLSAodm9pZClvYnNlcnZlVmFsdWVGb3JLZXlQYXRoOmtleVBhdGggb2ZP
YmplY3Q6KGlkKW9iamVjdCBjaGFuZ2U6KE5TRGljdGlvbmFyeQogICAgIH0KICNlbmRpZgogCi0g
ICAgc3RkOjpmdW5jdGlvbjx2b2lkICgpPiBmdW5jdGlvbjsKKyAgICBXVEY6OkZ1bmN0aW9uPHZv
aWQgKCk+IGZ1bmN0aW9uOwogCiAgICAgaWYgKGNvbnRleHQgPT0gTWVkaWFQbGF5ZXJBVkZvdW5k
YXRpb25PYnNlcnZhdGlvbkNvbnRleHRBVlBsYXllckxheWVyKSB7CiAgICAgICAgIGlmIChba2V5
UGF0aCBpc0VxdWFsVG9TdHJpbmc6QCJyZWFkeUZvckRpc3BsYXkiXSkKQEAgLTM0NTAsNyArMzQ1
MCw3IEBAIC0gKHZvaWQpb2JzZXJ2ZVZhbHVlRm9yS2V5UGF0aDprZXlQYXRoIG9mT2JqZWN0Oihp
ZClvYmplY3QgY2hhbmdlOihOU0RpY3Rpb25hcnkKICAgICAgICAgcmV0dXJuOwogCiAgICAgYXV0
byB3ZWFrVGhpcyA9IG1fY2FsbGJhY2stPmNyZWF0ZVdlYWtQdHIoKTsKLSAgICBtX2NhbGxiYWNr
LT5zY2hlZHVsZU1haW5UaHJlYWROb3RpZmljYXRpb24oTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uOjpOb3RpZmljYXRpb24oW3dlYWtUaGlzLCBmdW5jdGlvbl17CisgICAgbV9jYWxsYmFj
ay0+c2NoZWR1bGVNYWluVGhyZWFkTm90aWZpY2F0aW9uKE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbjo6Tm90aWZpY2F0aW9uKFt3ZWFrVGhpcywgZnVuY3Rpb24gPSBXVEZNb3ZlKGZ1bmN0
aW9uKV17CiAgICAgICAgIC8vIHdlYWtUaGlzIGFuZCBmdW5jdGlvbiBib3RoIHJlZmVyIHRvIHRo
ZSBzYW1lIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMgaW5zdGFuY2UuIElmIHRo
ZSBXZWFrUHRyIGhhcwogICAgICAgICAvLyBiZWVuIGNsZWFyZWQsIHRoZSB1bmRlcmx5aW5nIG9i
amVjdCBoYXMgYmVlbiBkZXN0cm95ZWQsIGFuZCBpdCBpcyB1bnNhZmUgdG8gY2FsbCBmdW5jdGlv
bigpLgogICAgICAgICBpZiAoIXdlYWtUaGlzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVk
aWFTdHJlYW1BVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tCmlu
ZGV4IDM4Y2FkZTk0OWE4ZTU1N2MzNDgzNzc5YWQ1NWZiNGUwZDNmMTA3MjYuLjk1YWI0NWNjZWQy
MDE2Yjg5YjAxYzRmODg2ZmRmNmVhOTg2YmJmYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1l
ZGlhU3RyZWFtQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMu
bW0KQEAgLTQxLDYgKzQxLDcgQEAKICNpbXBvcnQgPFF1YXJ0ekNvcmUvQ0FMYXllci5oPgogI2lt
cG9ydCA8UXVhcnR6Q29yZS9DQVRyYW5zYWN0aW9uLmg+CiAjaW1wb3J0IDxvYmpjX3J1bnRpbWUu
aD4KKyNpbXBvcnQgPHd0Zi9GdW5jdGlvbi5oPgogI2ltcG9ydCA8d3RmL01haW5UaHJlYWQuaD4K
ICNpbXBvcnQgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCkBAIC0zMjUsNyArMzI2LDcgQEAgQ0dB
ZmZpbmVUcmFuc2Zvcm0gTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjp2aWRl
b1RyYW5zZm9ybWF0aW9uTWF0cmkKICAgICByZXR1cm4gbV92aWRlb1RyYW5zZm9ybTsKIH0KIAot
c3RhdGljIHZvaWQgcnVuV2l0aG91dEFuaW1hdGlvbnMoc3RkOjpmdW5jdGlvbjx2b2lkKCk+IGZ1
bmN0aW9uKQorc3RhdGljIHZvaWQgcnVuV2l0aG91dEFuaW1hdGlvbnMoY29uc3QgV1RGOjpGdW5j
dGlvbjx2b2lkKCk+JiBmdW5jdGlvbikKIHsKICAgICBbQ0FUcmFuc2FjdGlvbiBiZWdpbl07CiAg
ICAgW0NBVHJhbnNhY3Rpb24gc2V0QW5pbWF0aW9uRHVyYXRpb246MF07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9JT1N1cmZhY2UuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0lPU3VyZmFjZS5oCmluZGV4IDIxNjk5
ZjM2ZmRjMDA1MTlkMGE5Mzk0ZjUzZDJkNWUwN2M2Y2YxZTUuLjAwYWQyY2IzNDM5ZmJiOWIyNmIx
MWFiMWI2ZmQzN2UzZjMyNjAwMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL0lPU3VyZmFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL0lPU3VyZmFjZS5oCkBAIC05Niw3ICs5Niw3IEBAIHB1YmxpYzoKIAog
I2lmIFBMQVRGT1JNKElPUykKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgYm9vbCBhbGxvd0Nv
bnZlcnNpb25Gcm9tRm9ybWF0VG9Gb3JtYXQoRm9ybWF0LCBGb3JtYXQpOwotICAgIFdFQkNPUkVf
RVhQT1JUIHN0YXRpYyB2b2lkIGNvbnZlcnRUb0Zvcm1hdChzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29y
ZTo6SU9TdXJmYWNlPiYmIGluU3VyZmFjZSwgRm9ybWF0LCBzdGQ6OmZ1bmN0aW9uPHZvaWQoc3Rk
Ojp1bmlxdWVfcHRyPFdlYkNvcmU6OklPU3VyZmFjZT4pPik7CisgICAgV0VCQ09SRV9FWFBPUlQg
c3RhdGljIHZvaWQgY29udmVydFRvRm9ybWF0KHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpJT1N1
cmZhY2U+JiYgaW5TdXJmYWNlLCBGb3JtYXQsIFdURjo6RnVuY3Rpb248dm9pZChzdGQ6OnVuaXF1
ZV9wdHI8V2ViQ29yZTo6SU9TdXJmYWNlPik+JiYpOwogI2VuZGlmCiAKIHByaXZhdGU6CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9JT1N1cmZhY2Uu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9JT1N1cmZhY2UubW0K
aW5kZXggNzhjNzgwMjM4ODE2M2M1ZGZkNzUyYzY5OTJiMzNkYTg3ZTE4M2NjNi4uNDlkMDQ2ZTlj
ZDI1YWM2NDQzOTU0ZDM2ZmViZDIzOTA4YzZkMzc4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSU9TdXJmYWNlLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0lPU3VyZmFjZS5tbQpAQCAtMzgwLDcgKzM4MCw3
IEBAIGJvb2wgV2ViQ29yZTo6SU9TdXJmYWNlOjphbGxvd0NvbnZlcnNpb25Gcm9tRm9ybWF0VG9G
b3JtYXQoRm9ybWF0IHNvdXJjZUZvcm1hdCwKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBX
ZWJDb3JlOjpJT1N1cmZhY2U6OmNvbnZlcnRUb0Zvcm1hdChzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29y
ZTo6SU9TdXJmYWNlPiYmIGluU3VyZmFjZSwgRm9ybWF0IGZvcm1hdCwgc3RkOjpmdW5jdGlvbjx2
b2lkKHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpJT1N1cmZhY2U+KT4gY2FsbGJhY2spCit2b2lk
IFdlYkNvcmU6OklPU3VyZmFjZTo6Y29udmVydFRvRm9ybWF0KHN0ZDo6dW5pcXVlX3B0cjxXZWJD
b3JlOjpJT1N1cmZhY2U+JiYgaW5TdXJmYWNlLCBGb3JtYXQgZm9ybWF0LCBXVEY6OkZ1bmN0aW9u
PHZvaWQoc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OklPU3VyZmFjZT4pPiYmIGNhbGxiYWNrKQog
ewogICAgIHN0YXRpYyBJT1N1cmZhY2VBY2NlbGVyYXRvclJlZiBhY2NlbGVyYXRvcjsKICAgICBp
ZiAoIWFjY2VsZXJhdG9yKSB7CkBAIC00MDMsMTAgKzQwMywxMCBAQCB2b2lkIFdlYkNvcmU6OklP
U3VyZmFjZTo6Y29udmVydFRvRm9ybWF0KHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpJT1N1cmZh
Y2U+JiYgaQogCiAgICAgSU9TdXJmYWNlUmVmIGRlc3RpbmF0aW9uSU9TdXJmYWNlUmVmID0gZGVz
dGluYXRpb25TdXJmYWNlLT5zdXJmYWNlKCk7CiAgICAgSU9TdXJmYWNlQWNjZWxlcmF0b3JDb21w
bGV0aW9uIGNvbXBsZXRpb247Ci0gICAgY29tcGxldGlvbi5jb21wbGV0aW9uUmVmQ29uID0gbmV3
IHN0ZDo6ZnVuY3Rpb248dm9pZChzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6SU9TdXJmYWNlPik+
IChXVEZNb3ZlKGNhbGxiYWNrKSk7CisgICAgY29tcGxldGlvbi5jb21wbGV0aW9uUmVmQ29uID0g
bmV3IFdURjo6RnVuY3Rpb248dm9pZChzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6SU9TdXJmYWNl
Pik+IChXVEZNb3ZlKGNhbGxiYWNrKSk7CiAgICAgY29tcGxldGlvbi5jb21wbGV0aW9uUmVmQ29u
MiA9IGRlc3RpbmF0aW9uU3VyZmFjZS5yZWxlYXNlKCk7CiAgICAgY29tcGxldGlvbi5jb21wbGV0
aW9uQ2FsbGJhY2sgPSBbXSh2b2lkICpjb21wbGV0aW9uUmVmQ29uLCBJT1JldHVybiwgdm9pZCAq
IGNvbXBsZXRpb25SZWZDb24yKSB7Ci0gICAgICAgIGF1dG8qIGNhbGxiYWNrID0gc3RhdGljX2Nh
c3Q8c3RkOjpmdW5jdGlvbjx2b2lkKHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpJT1N1cmZhY2U+
KT4qPihjb21wbGV0aW9uUmVmQ29uKTsKKyAgICAgICAgYXV0byogY2FsbGJhY2sgPSBzdGF0aWNf
Y2FzdDxXVEY6OkZ1bmN0aW9uPHZvaWQoc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OklPU3VyZmFj
ZT4pPio+KGNvbXBsZXRpb25SZWZDb24pOwogICAgICAgICBhdXRvIGRlc3RpbmF0aW9uU3VyZmFj
ZSA9IHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpJT1N1cmZhY2U+KHN0YXRpY19jYXN0PFdlYkNv
cmU6OklPU3VyZmFjZSo+KGNvbXBsZXRpb25SZWZDb24yKSk7CiAgICAgICAgIAogICAgICAgICAo
KmNhbGxiYWNrKShXVEZNb3ZlKGRlc3RpbmF0aW9uU3VyZmFjZSkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01haW5UaHJlYWROb3RpZmll
ci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01haW5UaHJl
YWROb3RpZmllci5oCmluZGV4IGYxNDA1MGRkMmVmNDQ2OWMwMTgwOTJhNWQ3ZDg3MmUwNmMxZTgx
MDAuLjM3NTJkYzI3NWU3MTk1NzhlYmYxOTU5NmY0ZmE2YmYyZmM4OGY5YjUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NYWluVGhyZWFkTm90
aWZpZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
TWFpblRocmVhZE5vdGlmaWVyLmgKQEAgLTM2LDcgKzM2LDcgQEAgcHVibGljOgogICAgIH0KIAog
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIEY+Ci0gICAgdm9pZCBub3RpZnkoVCBub3RpZmljYXRpb25U
eXBlLCBjb25zdCBGJiBjYWxsYmFja0Z1bmN0b3IpCisgICAgdm9pZCBub3RpZnkoVCBub3RpZmlj
YXRpb25UeXBlLCBGJiYgY2FsbGJhY2tGdW5jdG9yKQogICAgIHsKICAgICAgICAgQVNTRVJUKG1f
aXNWYWxpZC5sb2FkKCkpOwogICAgICAgICBpZiAoaXNNYWluVGhyZWFkKCkpIHsKQEAgLTQ4LDcg
KzQ4LDcgQEAgcHVibGljOgogICAgICAgICBpZiAoIWFkZFBlbmRpbmdOb3RpZmljYXRpb24obm90
aWZpY2F0aW9uVHlwZSkpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgUnVuTG9vcDo6
bWFpbigpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIG5v
dGlmaWNhdGlvblR5cGUsIGNhbGxiYWNrID0gc3RkOjpmdW5jdGlvbjx2b2lkKCk+KGNhbGxiYWNr
RnVuY3RvcildIHsKKyAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFt0aGlzLCBwcm90
ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIG5vdGlmaWNhdGlvblR5cGUsIGNhbGxiYWNrID0g
V1RGOjpGdW5jdGlvbjx2b2lkKCk+KFdURk1vdmUoY2FsbGJhY2tGdW5jdG9yKSldIHsKICAgICAg
ICAgICAgIGlmICghbV9pc1ZhbGlkLmxvYWQoKSkKICAgICAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgICAgICBpZiAocmVtb3ZlUGVuZGluZ05vdGlmaWNhdGlvbihub3RpZmljYXRpb25UeXBl
KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9NZWRpYVBsYXllclJlcXVlc3RJbnN0YWxsTWlzc2luZ1BsdWdpbnNDYWxsYmFjay5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUmVxdWVz
dEluc3RhbGxNaXNzaW5nUGx1Z2luc0NhbGxiYWNrLmgKaW5kZXggOTVlZDJkYTYzM2YxMmNhZDQ4
ZTNmZTAwMjRjMTFjMTY3ZDY3NDUzZS4uMDU4N2QwZGY5MmIwNjgyYWYyNmMwOGQ4ZWVjZDZmZDQ4
ZjJkNjk1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL01lZGlhUGxheWVyUmVxdWVzdEluc3RhbGxNaXNzaW5nUGx1Z2luc0NhbGxiYWNrLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxh
eWVyUmVxdWVzdEluc3RhbGxNaXNzaW5nUGx1Z2luc0NhbGxiYWNrLmgKQEAgLTIxLDYgKzIxLDcg
QEAKICNkZWZpbmUgTWVkaWFQbGF5ZXJSZXF1ZXN0SW5zdGFsbE1pc3NpbmdQbHVnaW5zQ2FsbGJh
Y2tfaAogCiAjaWYgRU5BQkxFKFZJREVPKSAmJiBVU0UoR1NUUkVBTUVSKQorI2luY2x1ZGUgPHd0
Zi9GdW5jdGlvbi5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKQEAgLTI4LDcgKzI5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgTWVk
aWFQbGF5ZXJSZXF1ZXN0SW5zdGFsbE1pc3NpbmdQbHVnaW5zQ2FsbGJhY2sgOiBwdWJsaWMgUmVm
Q291bnRlZDxNZWRpYVBsYXllclJlcXVlc3RJbnN0YWxsTWlzc2luZ1BsdWdpbnNDYWxsYmFjaz4g
ewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEKCk7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJl
ZjxNZWRpYVBsYXllclJlcXVlc3RJbnN0YWxsTWlzc2luZ1BsdWdpbnNDYWxsYmFjaz4gY3JlYXRl
KHN0ZDo6ZnVuY3Rpb248dm9pZCAodWludDMyX3QpPiYmIGZ1bmN0aW9uKQorICAgIHN0YXRpYyBS
ZWY8TWVkaWFQbGF5ZXJSZXF1ZXN0SW5zdGFsbE1pc3NpbmdQbHVnaW5zQ2FsbGJhY2s+IGNyZWF0
ZShXVEY6OkZ1bmN0aW9uPHZvaWQgKHVpbnQzMl90KT4mJiBmdW5jdGlvbikKICAgICB7CiAgICAg
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE1lZGlhUGxheWVyUmVxdWVzdEluc3RhbGxNaXNzaW5n
UGx1Z2luc0NhbGxiYWNrKFdURk1vdmUoZnVuY3Rpb24pKSk7CiAgICAgfQpAQCAtNDcsMTIgKzQ4
LDEyIEBAIHB1YmxpYzoKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgTWVkaWFQbGF5ZXJSZXF1ZXN0
SW5zdGFsbE1pc3NpbmdQbHVnaW5zQ2FsbGJhY2soc3RkOjpmdW5jdGlvbjx2b2lkICh1aW50MzJf
dCk+JiYgZnVuY3Rpb24pCisgICAgTWVkaWFQbGF5ZXJSZXF1ZXN0SW5zdGFsbE1pc3NpbmdQbHVn
aW5zQ2FsbGJhY2soV1RGOjpGdW5jdGlvbjx2b2lkICh1aW50MzJfdCk+JiYgZnVuY3Rpb24pCiAg
ICAgICAgIDogbV9mdW5jdGlvbihXVEZNb3ZlKGZ1bmN0aW9uKSkKICAgICB7CiAgICAgfQogCi0g
ICAgc3RkOjpmdW5jdGlvbjx2b2lkICh1aW50MzJfdCk+IG1fZnVuY3Rpb247CisgICAgV1RGOjpG
dW5jdGlvbjx2b2lkICh1aW50MzJfdCk+IG1fZnVuY3Rpb247CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93
aW4vR3JhcGhpY3NDb250ZXh0RGlyZWN0MkQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dERpcmVjdDJELmNwcAppbmRleCA2NDA1OTcwZjI3
NWViYTUyYjcxZTJkYWI0YWQ3NjBlZDlhMzJlMmYyLi5kMDY2N2MzZDAwY2YyOGUyMzFiMjFhZTk2
Mjk0ZDJjZjY5OGIzYjQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy93aW4vR3JhcGhpY3NDb250ZXh0RGlyZWN0MkQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHREaXJlY3QyRC5jcHAKQEAgLTkz
NSw3ICs5MzUsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd1BhdGgoY29uc3QgUGF0aCYg
cGF0aCkKICAgICBmbHVzaCgpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd1dpdGhv
dXRTaGFkb3coY29uc3QgRmxvYXRSZWN0JiAvKmJvdW5kaW5nUmVjdCovLCBjb25zdCBzdGQ6OmZ1
bmN0aW9uPHZvaWQoSUQyRDFSZW5kZXJUYXJnZXQqKT4mIGRyYXdDb21tYW5kcykKK3ZvaWQgR3Jh
cGhpY3NDb250ZXh0OjpkcmF3V2l0aG91dFNoYWRvdyhjb25zdCBGbG9hdFJlY3QmIC8qYm91bmRp
bmdSZWN0Ki8sIGNvbnN0IFdURjo6RnVuY3Rpb248dm9pZChJRDJEMVJlbmRlclRhcmdldCopPiYg
ZHJhd0NvbW1hbmRzKQogewogICAgIGRyYXdDb21tYW5kcyhwbGF0Zm9ybUNvbnRleHQoKSk7CiB9
CkBAIC05ODEsNyArOTgxLDcgQEAgc3RhdGljIHZvaWQgZHJhd1dpdGhTaGFkb3dIZWxwZXIoSUQy
RDFSZW5kZXJUYXJnZXQqIGNvbnRleHQsIElEMkQxQml0bWFwKiBiaXRtYXAKICAgICBkZXZpY2VD
b250ZXh0LT5EcmF3SW1hZ2UoY29tcG9zaXRvci5nZXQoKSwgRDJEMV9JTlRFUlBPTEFUSU9OX01P
REVfTElORUFSKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdXaXRoU2hhZG93KGNv
bnN0IEZsb2F0UmVjdCYgYm91bmRpbmdSZWN0LCBjb25zdCBzdGQ6OmZ1bmN0aW9uPHZvaWQoSUQy
RDFSZW5kZXJUYXJnZXQqKT4mIGRyYXdDb21tYW5kcykKK3ZvaWQgR3JhcGhpY3NDb250ZXh0Ojpk
cmF3V2l0aFNoYWRvdyhjb25zdCBGbG9hdFJlY3QmIGJvdW5kaW5nUmVjdCwgY29uc3QgV1RGOjpG
dW5jdGlvbjx2b2lkKElEMkQxUmVuZGVyVGFyZ2V0Kik+JiBkcmF3Q29tbWFuZHMpCiB7CiAgICAg
YXV0byBjb250ZXh0ID0gcGxhdGZvcm1Db250ZXh0KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkSGVscGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkSGVscGVyLmNwcAppbmRleCAwODJmYjdjZGEzMWI2YTRi
ZjE2NWNmYmNmMTQ5OGM1MDljZDk2ODhmLi42N2I3YzdjNmFhODdhMmRjZjNkYjA4YzViYmZkYWI5
MWQ5NGNjOWQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGFzdGVi
b2FyZEhlbHBlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Bhc3RlYm9h
cmRIZWxwZXIuY3BwCkBAIC0yNjUsNyArMjY1LDcgQEAgVmVjdG9yPEdka0F0b20+IFBhc3RlYm9h
cmRIZWxwZXI6OmRyb3BBdG9tc0ZvckNvbnRleHQoR3RrV2lkZ2V0KiB3aWRnZXQsIEdka0RyYWcK
IHN0YXRpYyBTZWxlY3Rpb25EYXRhKiBzZXR0aW5nQ2xpcGJvYXJkU2VsZWN0aW9uOwogCiBzdHJ1
Y3QgQ2xpcGJvYXJkU2V0RGF0YSB7Ci0gICAgQ2xpcGJvYXJkU2V0RGF0YShTZWxlY3Rpb25EYXRh
JiBzZWxlY3Rpb24sIHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiYmIHNlbGVjdGlvbkNsZWFyZWRDYWxs
YmFjaykKKyAgICBDbGlwYm9hcmRTZXREYXRhKFNlbGVjdGlvbkRhdGEmIHNlbGVjdGlvbiwgV1RG
OjpGdW5jdGlvbjx2b2lkKCk+JiYgc2VsZWN0aW9uQ2xlYXJlZENhbGxiYWNrKQogICAgICAgICA6
IHNlbGVjdGlvbkRhdGEoc2VsZWN0aW9uKQogICAgICAgICAsIHNlbGVjdGlvbkNsZWFyZWRDYWxs
YmFjayhXVEZNb3ZlKHNlbGVjdGlvbkNsZWFyZWRDYWxsYmFjaykpCiAgICAgewpAQCAtMjc2LDcg
KzI3Niw3IEBAIHN0cnVjdCBDbGlwYm9hcmRTZXREYXRhIHsKICAgICB9CiAKICAgICBSZWY8U2Vs
ZWN0aW9uRGF0YT4gc2VsZWN0aW9uRGF0YTsKLSAgICBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4gc2Vs
ZWN0aW9uQ2xlYXJlZENhbGxiYWNrOworICAgIFdURjo6RnVuY3Rpb248dm9pZCgpPiBzZWxlY3Rp
b25DbGVhcmVkQ2FsbGJhY2s7CiB9OwogCiBzdGF0aWMgdm9pZCBnZXRDbGlwYm9hcmRDb250ZW50
c0NhbGxiYWNrKEd0a0NsaXBib2FyZCosIEd0a1NlbGVjdGlvbkRhdGEgKnNlbGVjdGlvbkRhdGEs
IGd1aW50IGluZm8sIGdwb2ludGVyIHVzZXJEYXRhKQpAQCAtMjkyLDcgKzI5Miw3IEBAIHN0YXRp
YyB2b2lkIGNsZWFyQ2xpcGJvYXJkQ29udGVudHNDYWxsYmFjayhHdGtDbGlwYm9hcmQqLCBncG9p
bnRlciB1c2VyRGF0YSkKICAgICAgICAgZGF0YS0+c2VsZWN0aW9uQ2xlYXJlZENhbGxiYWNrKCk7
CiB9CiAKLXZvaWQgUGFzdGVib2FyZEhlbHBlcjo6d3JpdGVDbGlwYm9hcmRDb250ZW50cyhHdGtD
bGlwYm9hcmQqIGNsaXBib2FyZCwgY29uc3QgU2VsZWN0aW9uRGF0YSYgc2VsZWN0aW9uLCBzdGQ6
OmZ1bmN0aW9uPHZvaWQoKT4mJiBwcmltYXJ5U2VsZWN0aW9uQ2xlYXJlZCkKK3ZvaWQgUGFzdGVi
b2FyZEhlbHBlcjo6d3JpdGVDbGlwYm9hcmRDb250ZW50cyhHdGtDbGlwYm9hcmQqIGNsaXBib2Fy
ZCwgY29uc3QgU2VsZWN0aW9uRGF0YSYgc2VsZWN0aW9uLCBXVEY6OkZ1bmN0aW9uPHZvaWQoKT4m
JiBwcmltYXJ5U2VsZWN0aW9uQ2xlYXJlZCkKIHsKICAgICBHUmVmUHRyPEd0a1RhcmdldExpc3Q+
IGxpc3QgPSB0YXJnZXRMaXN0Rm9yU2VsZWN0aW9uRGF0YShzZWxlY3Rpb24pOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGFzdGVib2FyZEhlbHBlci5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRIZWxwZXIuaAppbmRleCA0YTRkZTk5
NTZlZGU4ZjVlNWY3NmUyNWJmYTY0Zjg1NjNhNjNiNjg4Li4wOTVlZTRhZGQyMjg3OTlkYjc4ZjFh
ZGQxN2QxYzQ4MDcwZDA2MDY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
dGsvUGFzdGVib2FyZEhlbHBlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9Q
YXN0ZWJvYXJkSGVscGVyLmgKQEAgLTI2LDcgKzI2LDcgQEAKICNkZWZpbmUgUGFzdGVib2FyZEhl
bHBlcl9oCiAKICNpbmNsdWRlICJHUmVmUHRyR3RrLmgiCi0jaW5jbHVkZSA8ZnVuY3Rpb25hbD4K
KyNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4K
ICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL2dsaWIvR1JlZlB0ci5oPgpA
QCAtNDcsNyArNDcsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBmaWxsU2VsZWN0aW9uRGF0YShjb25z
dCBTZWxlY3Rpb25EYXRhJiwgdW5zaWduZWQsIEd0a1NlbGVjdGlvbkRhdGEqKTsKICAgICB2b2lk
IGZpbGxTZWxlY3Rpb25EYXRhKEd0a1NlbGVjdGlvbkRhdGEqLCB1bnNpZ25lZCwgU2VsZWN0aW9u
RGF0YSYpOwogICAgIFZlY3RvcjxHZGtBdG9tPiBkcm9wQXRvbXNGb3JDb250ZXh0KEd0a1dpZGdl
dCosIEdka0RyYWdDb250ZXh0Kik7Ci0gICAgdm9pZCB3cml0ZUNsaXBib2FyZENvbnRlbnRzKEd0
a0NsaXBib2FyZCosIGNvbnN0IFNlbGVjdGlvbkRhdGEmLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4m
JiBwcmltYXJ5U2VsZWN0aW9uQ2xlYXJlZCA9IG51bGxwdHIpOworICAgIHZvaWQgd3JpdGVDbGlw
Ym9hcmRDb250ZW50cyhHdGtDbGlwYm9hcmQqLCBjb25zdCBTZWxlY3Rpb25EYXRhJiwgV1RGOjpG
dW5jdGlvbjx2b2lkKCk+JiYgcHJpbWFyeVNlbGVjdGlvbkNsZWFyZWQgPSBudWxscHRyKTsKICAg
ICB2b2lkIGdldENsaXBib2FyZENvbnRlbnRzKEd0a0NsaXBib2FyZCosIFNlbGVjdGlvbkRhdGEm
KTsKIAogICAgIGVudW0gUGFzdGVib2FyZFRhcmdldFR5cGUgeyBUYXJnZXRUeXBlTWFya3VwLCBU
YXJnZXRUeXBlVGV4dCwgVGFyZ2V0VHlwZUltYWdlLCBUYXJnZXRUeXBlVVJJTGlzdCwgVGFyZ2V0
VHlwZU5ldHNjYXBlVVJMLCBUYXJnZXRUeXBlU21hcnRQYXN0ZSwgVGFyZ2V0VHlwZVVua25vd24g
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QbGF0Zm9ybVBhc3Rl
Ym9hcmRHdGsuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1BsYXRmb3JtUGFzdGVi
b2FyZEd0ay5jcHAKaW5kZXggODQ4MWNiODQyN2U1OTAxNDk4MTU5ZTYwYWI4OGJiZmNlMGQwNzcw
ZS4uZWJhM2UwMzc2MjE4OThmODc1MzU2MGZmZmNmZGRkYzZiZGU2MjMzYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1BsYXRmb3JtUGFzdGVib2FyZEd0ay5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1BsYXRmb3JtUGFzdGVib2FyZEd0ay5jcHAK
QEAgLTM0LDcgKzM0LDcgQEAgUGxhdGZvcm1QYXN0ZWJvYXJkOjpQbGF0Zm9ybVBhc3RlYm9hcmQo
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKICAgICBBU1NFUlQobV9jbGlwYm9hcmQpOwog
fQogCi12b2lkIFBsYXRmb3JtUGFzdGVib2FyZDo6d3JpdGVUb0NsaXBib2FyZChjb25zdCBTZWxl
Y3Rpb25EYXRhJiBzZWxlY3Rpb24sIHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiYmIHByaW1hcnlTZWxl
Y3Rpb25DbGVhcmVkKQordm9pZCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OndyaXRlVG9DbGlwYm9hcmQo
Y29uc3QgU2VsZWN0aW9uRGF0YSYgc2VsZWN0aW9uLCBXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJiBw
cmltYXJ5U2VsZWN0aW9uQ2xlYXJlZCkKIHsKICAgICBQYXN0ZWJvYXJkSGVscGVyOjpzaW5nbGV0
b24oKS53cml0ZUNsaXBib2FyZENvbnRlbnRzKG1fY2xpcGJvYXJkLCBzZWxlY3Rpb24sIGd0a19j
bGlwYm9hcmRfZ2V0KEdES19TRUxFQ1RJT05fUFJJTUFSWSkgPT0gbV9jbGlwYm9hcmQgPyBXVEZN
b3ZlKHByaW1hcnlTZWxlY3Rpb25DbGVhcmVkKSA6IG51bGxwdHIpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFW
S2l0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuSW50
ZXJmYWNlQVZLaXQuaAppbmRleCA4ZDNjNDczYzA2ZmE3ZDg0YTQ0Njk5YjA2MDIwMDIzZjdjYjgz
MGUwLi45OGI0ZGJkY2M4YjBkZWJhOWM4MDI4MDIzNDQ1Yzg3NGRhMTFmNzQ0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNl
QVZLaXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2Ny
ZWVuSW50ZXJmYWNlQVZLaXQuaApAQCAtMzQsOCArMzQsOCBAQAogI2luY2x1ZGUgIlBsYXRmb3Jt
TGF5ZXIuaCIKICNpbmNsdWRlICJXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdC5oIgog
I2luY2x1ZGUgIldlYlZpZGVvRnVsbHNjcmVlbk1vZGVsLmgiCi0jaW5jbHVkZSA8ZnVuY3Rpb25h
bD4KICNpbmNsdWRlIDxvYmpjL29iamMuaD4KKyNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KICNp
bmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNs
dWRlIDx3dGYvUmV0YWluUHRyLmg+CkBAIC0xMDEsNyArMTAxLDcgQEAgcHVibGljOgogICAgIEhU
TUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZSBtb2RlKCkgY29uc3QgeyBy
ZXR1cm4gbV9tb2RlOyB9CiAgICAgYm9vbCBhbGxvd3NQaWN0dXJlSW5QaWN0dXJlUGxheWJhY2so
KSBjb25zdCB7IHJldHVybiBtX2FsbG93c1BpY3R1cmVJblBpY3R1cmVQbGF5YmFjazsgfQogICAg
IFdFQkNPUkVfRVhQT1JUIGJvb2wgbWF5QXV0b21hdGljYWxseVNob3dWaWRlb1BpY3R1cmVJblBp
Y3R1cmUoKSBjb25zdDsKLSAgICB2b2lkIGZ1bGxzY3JlZW5NYXlSZXR1cm5Ub0lubGluZShzdGQ6
OmZ1bmN0aW9uPHZvaWQoYm9vbCk+IGNhbGxiYWNrKTsKKyAgICB2b2lkIGZ1bGxzY3JlZW5NYXlS
ZXR1cm5Ub0lubGluZShXVEY6OkZ1bmN0aW9uPHZvaWQoYm9vbCk+JiYgY2FsbGJhY2spOwogICAg
IGJvb2wgd2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQoKSBjb25zdDsKICAgICB2b2lkIGFw
cGxpY2F0aW9uRGlkQmVjb21lQWN0aXZlKCk7CiAKQEAgLTEzOCw3ICsxMzgsNyBAQCBwcm90ZWN0
ZWQ6CiAgICAgUmV0YWluUHRyPFVJV2luZG93PiBtX3BhcmVudFdpbmRvdzsKICAgICBSZXRhaW5Q
dHI8V2ViQVZQbGF5ZXJMYXllclZpZXc+IG1fcGxheWVyTGF5ZXJWaWV3OwogICAgIEhUTUxNZWRp
YUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZSBtX21vZGUgeyBIVE1MTWVkaWFFbGVt
ZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGVOb25lIH07Ci0gICAgc3RkOjpmdW5jdGlvbjx2
b2lkKGJvb2wpPiBtX3ByZXBhcmVUb0lubGluZUNhbGxiYWNrOworICAgIFdURjo6RnVuY3Rpb248
dm9pZChib29sKT4gbV9wcmVwYXJlVG9JbmxpbmVDYWxsYmFjazsKICAgICBSdW5Mb29wOjpUaW1l
cjxXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdD4gbV93YXRjaGRvZ1RpbWVyOwogICAg
IGJvb2wgbV9hbGxvd3NQaWN0dXJlSW5QaWN0dXJlUGxheWJhY2sgeyBmYWxzZSB9OwogICAgIGJv
b2wgbV9leGl0UmVxdWVzdGVkIHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5t
bQppbmRleCA2YmFiYzFlZDUyMGJiMjQ5MzViNWY5NmRiZGVhOTQ2MWY1MmVmZjU3Li43NmZmZmMy
MDA0OGRiZTQzYmRiNTQ4MTc4NjhiMmNhMzcyNzdjNjNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFj
ZUFWS2l0Lm1tCkBAIC04NDQsNyArODQ0LDcgQEAgdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRl
cmZhY2VBVktpdDo6cHJlcGFyZWRUb1JldHVyblRvSW5saW5lKGJvb2wgdmlzaWJsZSwgY28KICAg
ICAgICAgCiAgICAgICAgIFttX3BsYXllclZpZXdDb250cm9sbGVyIHZpZXddLmZyYW1lID0gW21f
cGFyZW50VmlldyBjb252ZXJ0UmVjdDppbmxpbmVSZWN0IHRvVmlldzpbbV9wbGF5ZXJWaWV3Q29u
dHJvbGxlciB2aWV3XS5zdXBlcnZpZXddOwogCi0gICAgICAgIHN0ZDo6ZnVuY3Rpb248dm9pZChi
b29sKT4gY2FsbGJhY2sgPSBXVEZNb3ZlKG1fcHJlcGFyZVRvSW5saW5lQ2FsbGJhY2spOworICAg
ICAgICBXVEY6OkZ1bmN0aW9uPHZvaWQoYm9vbCk+IGNhbGxiYWNrID0gV1RGTW92ZShtX3ByZXBh
cmVUb0lubGluZUNhbGxiYWNrKTsKICAgICAgICAgY2FsbGJhY2sodmlzaWJsZSk7CiAgICAgfQog
fQpAQCAtODU0LDkgKzg1NCw5IEBAIGJvb2wgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZL
aXQ6Om1heUF1dG9tYXRpY2FsbHlTaG93VmlkZW9QaWN0dXJlSW5QaWN0dXJlCiAgICAgcmV0dXJu
IFtwbGF5ZXJDb250cm9sbGVyKCkgaXNQbGF5aW5nXSAmJiBtX21vZGUgPT0gSFRNTE1lZGlhRWxl
bWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlU3RhbmRhcmQgJiYgc3VwcG9ydHNQaWN0dXJl
SW5QaWN0dXJlKCk7CiB9CiAKLXZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6
OmZ1bGxzY3JlZW5NYXlSZXR1cm5Ub0lubGluZShzdGQ6OmZ1bmN0aW9uPHZvaWQoYm9vbCk+IGNh
bGxiYWNrKQordm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6ZnVsbHNjcmVl
bk1heVJldHVyblRvSW5saW5lKFdURjo6RnVuY3Rpb248dm9pZChib29sKT4mJiBjYWxsYmFjaykK
IHsKLSAgICBtX3ByZXBhcmVUb0lubGluZUNhbGxiYWNrID0gY2FsbGJhY2s7CisgICAgbV9wcmVw
YXJlVG9JbmxpbmVDYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spOwogICAgIGlmIChtX2Z1bGxz
Y3JlZW5DaGFuZ2VPYnNlcnZlcikKICAgICAgICAgbV9mdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXIt
PmZ1bGxzY3JlZW5NYXlSZXR1cm5Ub0lubGluZSgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWFjL1Bvd2VyT2JzZXJ2ZXJNYWMuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWFjL1Bvd2VyT2JzZXJ2ZXJNYWMuY3BwCmluZGV4IDMyOTAyZmRhMDY4YWIxNmZm
M2U1ZTQwNzIzYjhmMjNiMTc1MWQ3NzYuLjhmMzdkZDcxZjA3NzRlMzg1YjY2OTYyOWNiZDJlMGQ1
ODRjNDY2YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9Qb3dlck9i
c2VydmVyTWFjLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUG93ZXJPYnNl
cnZlck1hYy5jcHAKQEAgLTMwLDggKzMwLDggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1Q
b3dlck9ic2VydmVyOjpQb3dlck9ic2VydmVyKGNvbnN0IHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiYg
cG93ZXJPbkhhbmRlcikKLSAgICA6IG1fcG93ZXJPbkhhbmRlcihwb3dlck9uSGFuZGVyKQorUG93
ZXJPYnNlcnZlcjo6UG93ZXJPYnNlcnZlcihXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJiBwb3dlck9u
SGFuZGVyKQorICAgIDogbV9wb3dlck9uSGFuZGVyKFdURk1vdmUocG93ZXJPbkhhbmRlcikpCiAg
ICAgLCBtX3Bvd2VyQ29ubmVjdGlvbigwKQogICAgICwgbV9ub3RpZmljYXRpb25Qb3J0KG51bGxw
dHIpCiAgICAgLCBtX25vdGlmaWVyUmVmZXJlbmNlKDApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tYWMvUG93ZXJPYnNlcnZlck1hYy5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWFjL1Bvd2VyT2JzZXJ2ZXJNYWMuaAppbmRleCA3NWZhOGI0MDEyOTBmZDM1YmZjNjVm
OTUyZWU1ODcxZWQxZDY2ZjlhLi5jYjk3YjVkZTVmNjVmYzc2ZGVjZGFmM2QwMTYzY2M1NDYxYTJk
MDljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUG93ZXJPYnNlcnZl
ck1hYy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9Qb3dlck9ic2VydmVyTWFj
LmgKQEAgLTI4LDcgKzI4LDcgQEAKIAogI2ltcG9ydCA8SU9LaXQvSU9NZXNzYWdlLmg+CiAjaW1w
b3J0IDxJT0tpdC9wd3JfbWd0L0lPUE1MaWIuaD4KLSNpbXBvcnQgPGZ1bmN0aW9uYWw+CisjaW1w
b3J0IDx3dGYvRnVuY3Rpb24uaD4KICNpbXBvcnQgPHd0Zi9Ob25jb3B5YWJsZS5oPgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CkBAIC0zNywxMyArMzcsMTMgQEAgY2xhc3MgUG93ZXJPYnNlcnZlciB7
CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUG93ZXJPYnNlcnZlcik7IFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogCiBwdWJsaWM6Ci0gICAgUG93ZXJPYnNlcnZlcihjb25zdCBzdGQ6OmZ1bmN0
aW9uPHZvaWQoKT4mIHBvd2VyT25IYW5kZXIpOworICAgIFBvd2VyT2JzZXJ2ZXIoV1RGOjpGdW5j
dGlvbjx2b2lkKCk+JiYgcG93ZXJPbkhhbmRlcik7CiAgICAgflBvd2VyT2JzZXJ2ZXIoKTsKIAog
cHJpdmF0ZToKICAgICB2b2lkIGRpZFJlY2VpdmVTeXN0ZW1Qb3dlck5vdGlmaWNhdGlvbihpb19z
ZXJ2aWNlX3QsIHVpbnQzMl90IG1lc3NhZ2VUeXBlLCB2b2lkKiBtZXNzYWdlQXJndW1lbnQpOwog
Ci0gICAgc3RkOjpmdW5jdGlvbjx2b2lkKCk+IG1fcG93ZXJPbkhhbmRlcjsKKyAgICBXVEY6OkZ1
bmN0aW9uPHZvaWQoKT4gbV9wb3dlck9uSGFuZGVyOwogICAgIGlvX2Nvbm5lY3RfdCBtX3Bvd2Vy
Q29ubmVjdGlvbjsKICAgICBJT05vdGlmaWNhdGlvblBvcnRSZWYgbV9ub3RpZmljYXRpb25Qb3J0
OwogICAgIGlvX29iamVjdF90IG1fbm90aWZpZXJSZWZlcmVuY2U7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29yZU5TVVJMRXh0cmFzLm1tIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVOU1VSTEV4dHJhcy5tbQppbmRleCA2ZmI2MDA1ZDNj
OWVmNzdlNjk3Yzk1MTU2OGY3NmZmODI3M2E1N2Y0Li5hZWQ2MDU3Y2E1Mjc2ZDNhNDNhMDIyYTYy
MTBiYTQ1MTEwMzlhZTgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMv
V2ViQ29yZU5TVVJMRXh0cmFzLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9X
ZWJDb3JlTlNVUkxFeHRyYXMubW0KQEAgLTMyLDcgKzMyLDcgQEAKICNpbXBvcnQgIldlYkNvcmVO
U1N0cmluZ0V4dHJhcy5oIgogI2ltcG9ydCAiV2ViQ29yZU5TVVJMRXh0cmFzLmgiCiAjaW1wb3J0
ICJXZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmgiCi0jaW1wb3J0IDxmdW5jdGlvbmFsPgorI2ltcG9y
dCA8d3RmL0Z1bmN0aW9uLmg+CiAjaW1wb3J0IDx3dGYvSGV4TnVtYmVyLmg+CiAjaW1wb3J0IDx3
dGYvT2JqY1J1bnRpbWVFeHRyYXMuaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KQEAgLTI3
MSw3ICsyNzEsNyBAQCBzdGF0aWMgQk9PTCBhbGxDaGFyYWN0ZXJzSW5JRE5TY3JpcHRXaGl0ZUxp
c3QoY29uc3QgVUNoYXIgKmJ1ZmZlciwgaW50MzJfdCBsZW5ndAogICAgIHJldHVybiBZRVM7CiB9
CiAKLXN0YXRpYyBib29sIGlzU2Vjb25kTGV2ZWxEb21haW5OYW1lQWxsb3dlZEJ5VExEUnVsZXMo
Y29uc3QgVUNoYXIqIGJ1ZmZlciwgaW50MzJfdCBsZW5ndGgsIGNvbnN0IHN0ZDo6ZnVuY3Rpb248
Ym9vbChVQ2hhcik+JiBjaGFyYWN0ZXJJc0FsbG93ZWQpCitzdGF0aWMgYm9vbCBpc1NlY29uZExl
dmVsRG9tYWluTmFtZUFsbG93ZWRCeVRMRFJ1bGVzKGNvbnN0IFVDaGFyKiBidWZmZXIsIGludDMy
X3QgbGVuZ3RoLCBjb25zdCBXVEY6OkZ1bmN0aW9uPGJvb2woVUNoYXIpPiYgY2hhcmFjdGVySXNB
bGxvd2VkKQogewogICAgIEFTU0VSVChsZW5ndGggPiAwKTsKIApAQCAtMjk0LDcgKzI5NCw3IEBA
IHN0YXRpYyBib29sIGlzU2Vjb25kTGV2ZWxEb21haW5OYW1lQWxsb3dlZEJ5VExEUnVsZXMoY29u
c3QgVUNoYXIqIGJ1ZmZlciwgaW50MzJfCiAgICAgeyBcCiAgICAgICAgIHN0YXRpYyBjb25zdCBp
bnQzMl90IHN1ZmZpeExlbmd0aCA9IHNpemVvZihzdWZmaXgpIC8gc2l6ZW9mKHN1ZmZpeFswXSk7
IFwKICAgICAgICAgaWYgKGxlbmd0aCA+IHN1ZmZpeExlbmd0aCAmJiAwID09IG1lbWNtcChidWZm
ZXIgKyBsZW5ndGggLSBzdWZmaXhMZW5ndGgsIHN1ZmZpeCwgc2l6ZW9mKHN1ZmZpeCkpKSBcCi0g
ICAgICAgICAgICByZXR1cm4gaXNTZWNvbmRMZXZlbERvbWFpbk5hbWVBbGxvd2VkQnlUTERSdWxl
cyhidWZmZXIsIGxlbmd0aCAtIHN1ZmZpeExlbmd0aCwgZnVuY3Rpb24pOyBcCisgICAgICAgICAg
ICByZXR1cm4gaXNTZWNvbmRMZXZlbERvbWFpbk5hbWVBbGxvd2VkQnlUTERSdWxlcyhidWZmZXIs
IGxlbmd0aCAtIHN1ZmZpeExlbmd0aCwgW10oVUNoYXIgYykgeyByZXR1cm4gZnVuY3Rpb24oYyk7
IH0pOyBcCiAgICAgfQogCiBzdGF0aWMgYm9vbCBpc1J1c3NpYW5Eb21haW5OYW1lQ2hhcmFjdGVy
KFVDaGFyIGNoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vQ2FwdHVyZURldmljZU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vQ2FwdHVyZURldmljZU1hbmFnZXIuY3BwCmluZGV4IDc1MDA1OTE3ODljODEzYmZk
Y2JlMjVmZWVjZWExZmYxZGQ5MDZiMGQuLjZlMDkxNjYxOGYyOTU1NDM2MGYxZDhlYmUxODdhYjhi
ZWRkMjUzZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L0NhcHR1cmVEZXZpY2VNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9DYXB0dXJlRGV2aWNlTWFuYWdlci5jcHAKQEAgLTExMyw3ICsxMTMsNyBAQCBz
dGF0aWMgQ2FwdHVyZURldmljZU1hbmFnZXI6Ok9ic2VydmVyVG9rZW4gbmV4dE9ic2VydmVyVG9r
ZW4oKQogICAgIHJldHVybiArK25leHRUb2tlbjsKIH0KIAotQ2FwdHVyZURldmljZU1hbmFnZXI6
Ok9ic2VydmVyVG9rZW4gQ2FwdHVyZURldmljZU1hbmFnZXI6OmFkZENhcHR1cmVEZXZpY2VDaGFu
Z2VkT2JzZXJ2ZXIoQ2FwdHVyZURldmljZUNoYW5nZWRDYWxsYmFjayBvYnNlcnZlcikKK0NhcHR1
cmVEZXZpY2VNYW5hZ2VyOjpPYnNlcnZlclRva2VuIENhcHR1cmVEZXZpY2VNYW5hZ2VyOjphZGRD
YXB0dXJlRGV2aWNlQ2hhbmdlZE9ic2VydmVyKENhcHR1cmVEZXZpY2VDaGFuZ2VkQ2FsbGJhY2sm
JiBvYnNlcnZlcikKIHsKICAgICBhdXRvIHRva2VuID0gbmV4dE9ic2VydmVyVG9rZW4oKTsKICAg
ICBtX29ic2VydmVycy5zZXQodG9rZW4sIFdURk1vdmUob2JzZXJ2ZXIpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL0NhcHR1cmVEZXZpY2VNYW5hZ2Vy
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9DYXB0dXJlRGV2aWNlTWFu
YWdlci5oCmluZGV4IGRmZjAwMjM1OTJlNGQxNTZhYjgxY2IzMWJlOGQxNWFkODhlY2E2NGQuLmRm
YzYwZDFjMjRlZDY5OWFiNjgwNTdmYTY1ODdlNjUxZjE1MDY5YzYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL0NhcHR1cmVEZXZpY2VNYW5hZ2VyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vQ2FwdHVyZURldmljZU1hbmFn
ZXIuaApAQCAtMzQsOSArMzQsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENhcHR1
cmVEZXZpY2VNYW5hZ2VyIHsKIHB1YmxpYzoKLSAgICB1c2luZyBDYXB0dXJlRGV2aWNlQ2hhbmdl
ZENhbGxiYWNrID0gc3RkOjpmdW5jdGlvbjx2b2lkKCk+OworICAgIHVzaW5nIENhcHR1cmVEZXZp
Y2VDaGFuZ2VkQ2FsbGJhY2sgPSBXVEY6OkZ1bmN0aW9uPHZvaWQoKT47CiAgICAgdXNpbmcgT2Jz
ZXJ2ZXJUb2tlbiA9IHVpbnQzMl90OwotICAgIHZpcnR1YWwgT2JzZXJ2ZXJUb2tlbiBhZGRDYXB0
dXJlRGV2aWNlQ2hhbmdlZE9ic2VydmVyKENhcHR1cmVEZXZpY2VDaGFuZ2VkQ2FsbGJhY2spOwor
ICAgIHZpcnR1YWwgT2JzZXJ2ZXJUb2tlbiBhZGRDYXB0dXJlRGV2aWNlQ2hhbmdlZE9ic2VydmVy
KENhcHR1cmVEZXZpY2VDaGFuZ2VkQ2FsbGJhY2smJik7CiAgICAgdmlydHVhbCB2b2lkIHJlbW92
ZUNhcHR1cmVEZXZpY2VDaGFuZ2VkT2JzZXJ2ZXIoT2JzZXJ2ZXJUb2tlbik7CiAKICAgICB2aXJ0
dWFsIFZlY3RvcjxDYXB0dXJlRGV2aWNlPiYgY2FwdHVyZURldmljZXMoKSA9IDA7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291
cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVk
aWFTb3VyY2UuY3BwCmluZGV4IDMzMjQ2YTAxY2RlODRhMzYyZTFjODY5MTU0MzZlYjIwYmM0MWU1
ZTcuLmIzODY2MjZhYjkzYWI0NGFjNGY4OGQzYzIyZTVlN2U3NTE1YjJkZmIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVk
aWFTb3VyY2UuY3BwCkBAIC04ODIsNyArODgyLDcgQEAgdm9pZCBSZWFsdGltZU1lZGlhU291cmNl
OjpzZXRFY2hvQ2FuY2VsbGF0aW9uKGJvb2wgZWNob0NhbmNlbGxhdGlvbikKICAgICBzZXR0aW5n
c0RpZENoYW5nZSgpOwogfQogCi12b2lkIFJlYWx0aW1lTWVkaWFTb3VyY2U6OnNjaGVkdWxlRGVm
ZXJyZWRUYXNrKHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiYmIGZ1bmN0aW9uKQordm9pZCBSZWFsdGlt
ZU1lZGlhU291cmNlOjpzY2hlZHVsZURlZmVycmVkVGFzayhXVEY6OkZ1bmN0aW9uPHZvaWQoKT4m
JiBmdW5jdGlvbikKIHsKICAgICBBU1NFUlQoZnVuY3Rpb24pOwogICAgIGNhbGxPbk1haW5UaHJl
YWQoW3dlYWtUaGlzID0gY3JlYXRlV2Vha1B0cigpLCBmdW5jdGlvbiA9IFdURk1vdmUoZnVuY3Rp
b24pXSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9S
ZWFsdGltZU1lZGlhU291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9SZWFsdGltZU1lZGlhU291cmNlLmgKaW5kZXggMDQxMGVlNWM3MjdmM2NmMmRlMGM5MjQwMjlj
Zjk1ZWEyNTIxZWRmOC4uNDAzOWM5NTNkYzk1ZWMzOWM3ZjkwNzA5YjFhZDBiZDdjYmU2MGRiZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVN
ZWRpYVNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1Jl
YWx0aW1lTWVkaWFTb3VyY2UuaApAQCAtMTkwLDggKzE5MCw4IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIGNvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXMmIGNhcGFiaWxpdGllcygp
IGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIGNvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5n
cyYgc2V0dGluZ3MoKSBjb25zdCA9IDA7CiAKLSAgICB1c2luZyBTdWNjZXNzSGFuZGxlciA9IHN0
ZDo6ZnVuY3Rpb248dm9pZCgpPjsKLSAgICB1c2luZyBGYWlsdXJlSGFuZGxlciA9IHN0ZDo6ZnVu
Y3Rpb248dm9pZChjb25zdCBTdHJpbmcmIGJhZENvbnN0cmFpbnQsIGNvbnN0IFN0cmluZyYgZXJy
b3JTdHJpbmcpPjsKKyAgICB1c2luZyBTdWNjZXNzSGFuZGxlciA9IFdURjo6RnVuY3Rpb248dm9p
ZCgpPjsKKyAgICB1c2luZyBGYWlsdXJlSGFuZGxlciA9IFdURjo6RnVuY3Rpb248dm9pZChjb25z
dCBTdHJpbmcmIGJhZENvbnN0cmFpbnQsIGNvbnN0IFN0cmluZyYgZXJyb3JTdHJpbmcpPjsKICAg
ICB2aXJ0dWFsIHZvaWQgYXBwbHlDb25zdHJhaW50cyhjb25zdCBNZWRpYUNvbnN0cmFpbnRzJiwg
U3VjY2Vzc0hhbmRsZXImJiwgRmFpbHVyZUhhbmRsZXImJik7CiAgICAgc3RkOjpvcHRpb25hbDxz
dGQ6OnBhaXI8U3RyaW5nLCBTdHJpbmc+PiBhcHBseUNvbnN0cmFpbnRzKGNvbnN0IE1lZGlhQ29u
c3RyYWludHMmKTsKIApAQCAtMjEyLDcgKzIxMiw3IEBAIHB1YmxpYzoKIHByb3RlY3RlZDoKICAg
ICBSZWFsdGltZU1lZGlhU291cmNlKGNvbnN0IFN0cmluZyYgaWQsIFR5cGUsIGNvbnN0IFN0cmlu
ZyYgbmFtZSk7CiAKLSAgICB2b2lkIHNjaGVkdWxlRGVmZXJyZWRUYXNrKHN0ZDo6ZnVuY3Rpb248
dm9pZCgpPiYmKTsKKyAgICB2b2lkIHNjaGVkdWxlRGVmZXJyZWRUYXNrKFdURjo6RnVuY3Rpb248
dm9pZCgpPiYmKTsKIAogICAgIHZpcnR1YWwgdm9pZCBiZWdpbkNvbmZpZ3VyYXRpb24oKSB7IH0K
ICAgICB2aXJ0dWFsIHZvaWQgY29tbWl0Q29uZmlndXJhdGlvbigpIHsgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vaW9zL0FWQXVkaW9TZXNzaW9uQ2Fw
dHVyZURldmljZU1hbmFnZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9pb3MvQVZBdWRpb1Nlc3Npb25DYXB0dXJlRGV2aWNlTWFuYWdlci5tbQppbmRleCBjYjAwOGNi
YmI5MWFiYjY5NWEwZTVlNzQ0NGZhNjA4Zjk0NzQ4MTJlLi4wZmRhMTNmMTFlMjdmNGViYTQ0YWIw
OWUwZWQ0OWU3ZWU4NDAxMzgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9pb3MvQVZBdWRpb1Nlc3Npb25DYXB0dXJlRGV2aWNlTWFuYWdlci5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9pb3MvQVZBdWRpb1Nlc3Npb25D
YXB0dXJlRGV2aWNlTWFuYWdlci5tbQpAQCAtNDAsMTggKzQwLDE4IEBAIFNPRlRfTElOS19DTEFT
UyhBVkZvdW5kYXRpb24sIEFWQXVkaW9TZXNzaW9uKQogdm9pZCogQXZhaWxhYmxlSW5wdXRzQ29u
dGV4dCA9ICZBdmFpbGFibGVJbnB1dHNDb250ZXh0OwogCiBAaW50ZXJmYWNlIFdlYkFWQXVkaW9T
ZXNzaW9uQXZhaWxhYmxlSW5wdXRzTGlzdGVuZXIgOiBOU09iamVjdCB7Ci0gICAgc3RkOjpmdW5j
dGlvbjx2b2lkKCk+IF9jYWxsYmFjazsKKyAgICBXVEY6OkZ1bmN0aW9uPHZvaWQoKT4gX2NhbGxi
YWNrOwogfQogQGVuZAogCiBAaW1wbGVtZW50YXRpb24gV2ViQVZBdWRpb1Nlc3Npb25BdmFpbGFi
bGVJbnB1dHNMaXN0ZW5lcgotLSAoaWQpaW5pdFdpdGhDYWxsYmFjazooc3RkOjpmdW5jdGlvbjx2
b2lkKCk+KWNhbGxiYWNrCistIChpZClpbml0V2l0aENhbGxiYWNrOihXVEY6OkZ1bmN0aW9uPHZv
aWQoKT4mJiljYWxsYmFjawogewogICAgIHNlbGYgPSBbc3VwZXIgaW5pdF07CiAgICAgaWYgKCFz
ZWxmKQogICAgICAgICByZXR1cm4gbmlsOwogCi0gICAgX2NhbGxiYWNrID0gY2FsbGJhY2s7Cisg
ICAgX2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayk7CiAgICAgcmV0dXJuIHNlbGY7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Db3Jl
QXVkaW9DYXB0dXJlU291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9tYWMvQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZS5oCmluZGV4IGNlMGJkZWUxNjgyNDcxMGU3MzRl
MDExZjkyNDRkYzlkNmVhZTc0MTUuLjhlODk3NDMyMzBhMDNiMGI3ZWExNWExNTZlYTZiZjJhNTM4
MjI3NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21h
Yy9Db3JlQXVkaW9DYXB0dXJlU291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vbWFjL0NvcmVBdWRpb0NhcHR1cmVTb3VyY2UuaApAQCAtNjEsNyArNjEsNyBA
QCBwdWJsaWM6CiAgICAgdm9pZCBhZGRFY2hvQ2FuY2VsbGF0aW9uU291cmNlKEF1ZGlvU2FtcGxl
RGF0YVNvdXJjZSYpOwogICAgIHZvaWQgcmVtb3ZlRWNob0NhbmNlbGxhdGlvblNvdXJjZShBdWRp
b1NhbXBsZURhdGFTb3VyY2UmKTsKIAotICAgIHVzaW5nIE1pY3JvcGhvbmVEYXRhQ2FsbGJhY2sg
PSBzdGQ6OmZ1bmN0aW9uPHZvaWQoY29uc3QgTWVkaWFUaW1lJiBzYW1wbGVUaW1lLCBjb25zdCBQ
bGF0Zm9ybUF1ZGlvRGF0YSYgYXVkaW9EYXRhLCBjb25zdCBBdWRpb1N0cmVhbURlc2NyaXB0aW9u
JiBkZXNjcmlwdGlvbiwgc2l6ZV90IHNhbXBsZUNvdW50KT47CisgICAgdXNpbmcgTWljcm9waG9u
ZURhdGFDYWxsYmFjayA9IFdURjo6RnVuY3Rpb248dm9pZChjb25zdCBNZWRpYVRpbWUmIHNhbXBs
ZVRpbWUsIGNvbnN0IFBsYXRmb3JtQXVkaW9EYXRhJiBhdWRpb0RhdGEsIGNvbnN0IEF1ZGlvU3Ry
ZWFtRGVzY3JpcHRpb24mIGRlc2NyaXB0aW9uLCBzaXplX3Qgc2FtcGxlQ291bnQpPjsKIAogICAg
IHVpbnQ2NF90IGFkZE1pY3JvcGhvbmVEYXRhQ29uc3VtZXIoTWljcm9waG9uZURhdGFDYWxsYmFj
ayYmKTsKICAgICB2b2lkIHJlbW92ZU1pY3JvcGhvbmVEYXRhQ29uc3VtZXIodWludDY0X3QpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9TY3JvbGxBbmltYXRvck1v
Y2suY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9TY3JvbGxBbmltYXRvck1vY2su
Y3BwCmluZGV4IGMwODAzODEwZWRkOGQ1Y2ZkZGFlNGI3NjQ5MWEzODc3NmIyNzZiZmIuLjUyMmFl
YjJhY2RiNTI4OTNhYWRjNjYyNDExNzlkMjU0ZWI0OWY4ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21vY2svU2Nyb2xsQW5pbWF0b3JNb2NrLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1Njcm9sbEFuaW1hdG9yTW9jay5jcHAKQEAgLTM2LDcgKzM2
LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1TY3JvbGxBbmltYXRvck1vY2s6OlNjcm9s
bEFuaW1hdG9yTW9jayhTY3JvbGxhYmxlQXJlYSYgc2Nyb2xsYWJsZUFyZWEsIHN0ZDo6ZnVuY3Rp
b248dm9pZChjb25zdCBTdHJpbmcmKT4mJiBsb2dnZXIpCitTY3JvbGxBbmltYXRvck1vY2s6OlNj
cm9sbEFuaW1hdG9yTW9jayhTY3JvbGxhYmxlQXJlYSYgc2Nyb2xsYWJsZUFyZWEsIFdURjo6RnVu
Y3Rpb248dm9pZChjb25zdCBTdHJpbmcmKT4mJiBsb2dnZXIpCiAgICAgOiBTY3JvbGxBbmltYXRv
cihzY3JvbGxhYmxlQXJlYSkKICAgICAsIG1fbG9nZ2VyKFdURk1vdmUobG9nZ2VyKSkKIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svU2Nyb2xsQW5pbWF0b3JNb2Nr
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1Njcm9sbEFuaW1hdG9yTW9jay5oCmlu
ZGV4IDg1ZGM0ZjZlZGMzZTViM2NjZTQ1Mzc4M2U2ZTBkM2Q5NTExMjRmN2QuLjIzMGI5YWYzMWQw
N2ZiMjgzYjY2YjFkOWYyNjZiODAxYWNmYzMyMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21vY2svU2Nyb2xsQW5pbWF0b3JNb2NrLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbW9jay9TY3JvbGxBbmltYXRvck1vY2suaApAQCAtNDAsNyArNDAsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAvLyB0aGUgaW50ZXJuYWwgc2V0dGluZyBlbmFibGVNb2NrU2Nyb2xs
QW5pbWF0b3IuCiBjbGFzcyBTY3JvbGxBbmltYXRvck1vY2sgZmluYWwgOiBwdWJsaWMgU2Nyb2xs
QW5pbWF0b3IgewogcHVibGljOgotICAgIFNjcm9sbEFuaW1hdG9yTW9jayhTY3JvbGxhYmxlQXJl
YSYsIHN0ZDo6ZnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcmKT4mJik7CisgICAgU2Nyb2xsQW5p
bWF0b3JNb2NrKFNjcm9sbGFibGVBcmVhJiwgV1RGOjpGdW5jdGlvbjx2b2lkKGNvbnN0IFN0cmlu
ZyYpPiYmKTsKICAgICB2aXJ0dWFsIH5TY3JvbGxBbmltYXRvck1vY2soKTsKIAogI2lmIEVOQUJM
RShSVUJCRVJfQkFORElORykKQEAgLTY4LDcgKzY4LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIG1v
dXNlRXhpdGVkU2Nyb2xsYmFyKFNjcm9sbGJhciopIGNvbnN0IG92ZXJyaWRlOwogICAgIHZvaWQg
bW91c2VJc0Rvd25JblNjcm9sbGJhcihTY3JvbGxiYXIqLCBib29sKSBjb25zdCBvdmVycmlkZTsK
IAotICAgIHN0ZDo6ZnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcmKT4gbV9sb2dnZXI7CisgICAg
V1RGOjpGdW5jdGlvbjx2b2lkKGNvbnN0IFN0cmluZyYpPiBtX2xvZ2dlcjsKICAgICBTY3JvbGxi
YXIqIG1fdmVydGljYWxTY3JvbGxiYXIgeyBudWxscHRyIH07CiAgICAgU2Nyb2xsYmFyKiBtX2hv
cml6b250YWxTY3JvbGxiYXIgeyBudWxscHRyIH07CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9Db29raWVTdG9yYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL0Nvb2tpZVN0b3JhZ2UuaAppbmRleCBjNTA1M2NjOTA1ZGI2ZTgxYmY2
ZjRlNWQ2OGY5ZjU4ODU2MDAyMzJjLi44MWVmY2JmMDA1ZTg0ZDUzYTUyNGM2M2RiNTMzNmJiYjcy
ZmM4NTlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Nvb2tp
ZVN0b3JhZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Nvb2tpZVN0
b3JhZ2UuaApAQCAtMjUsMTMgKzI1LDEzIEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSA8
ZnVuY3Rpb25hbD4KKyNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBjbGFzcyBOZXR3b3JrU3RvcmFnZVNlc3Npb247CiAKLVdFQkNPUkVfRVhQT1JUIHZv
aWQgc3RhcnRPYnNlcnZpbmdDb29raWVDaGFuZ2VzKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lv
biYsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4mJik7CitXRUJDT1JFX0VYUE9SVCB2b2lkIHN0YXJ0
T2JzZXJ2aW5nQ29va2llQ2hhbmdlcyhjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBXVEY6
OkZ1bmN0aW9uPHZvaWQgKCk+JiYpOwogV0VCQ09SRV9FWFBPUlQgdm9pZCBzdG9wT2JzZXJ2aW5n
Q29va2llQ2hhbmdlcyhjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mKTsKIAogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RhdGVOb3RpZmll
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdGF0ZU5vdGlm
aWVyLmNwcAppbmRleCA1NTc0YTM1ODM0Y2M2MDFmNTg2ZWVkNzk1MmM1YWE0ODExNmY4OWVmLi5h
ZDE1ZTVjZjNjM2ZkMTUyNmY3YTY0NDg1MDQwYjVkOTk4MmM5MzBkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdGF0ZU5vdGlmaWVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdGF0ZU5vdGlmaWVyLmNw
cApAQCAtNDgsNyArNDgsNyBAQCBOZXR3b3JrU3RhdGVOb3RpZmllciYgbmV0d29ya1N0YXRlTm90
aWZpZXIoKQogICAgIHJldHVybiBuZXR3b3JrU3RhdGVOb3RpZmllcjsKIH0KIAotdm9pZCBOZXR3
b3JrU3RhdGVOb3RpZmllcjo6YWRkTmV0d29ya1N0YXRlQ2hhbmdlTGlzdGVuZXIoc3RkOjpmdW5j
dGlvbjx2b2lkIChib29sKT4gbGlzdGVuZXIpCit2b2lkIE5ldHdvcmtTdGF0ZU5vdGlmaWVyOjph
ZGROZXR3b3JrU3RhdGVDaGFuZ2VMaXN0ZW5lcihXVEY6OkZ1bmN0aW9uPHZvaWQgKGJvb2wpPiYm
IGxpc3RlbmVyKQogewogICAgIEFTU0VSVChsaXN0ZW5lcik7CiAjaWYgUExBVEZPUk0oSU9TKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RhdGVO
b3RpZmllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RhdGVO
b3RpZmllci5oCmluZGV4IDUyODJlYzA2NmFiYmEyMzcxNzY4YTg0YWQ5YTJhNTIwNjBiZDM0MmYu
LmMzYTQyOTAzY2QwYjg5Y2E2MmExYjE4NTI2MTNlZWQwYWU4NmExODEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0YXRlTm90aWZpZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdGF0ZU5vdGlmaWVyLmgK
QEAgLTI2LDggKzI2LDggQEAKICNpZm5kZWYgTmV0d29ya1N0YXRlTm90aWZpZXJfaAogI2RlZmlu
ZSBOZXR3b3JrU3RhdGVOb3RpZmllcl9oCiAKLSNpbmNsdWRlIDxmdW5jdGlvbmFsPgogI2luY2x1
ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CisjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+CiAjaW5jbHVk
ZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCkBAIC01OSw3
ICs1OSw3IEBAIHB1YmxpYzoKICNpZiBQTEFURk9STShJT1MpCiAgICAgfk5ldHdvcmtTdGF0ZU5v
dGlmaWVyKCk7CiAjZW5kaWYKLSAgICB2b2lkIGFkZE5ldHdvcmtTdGF0ZUNoYW5nZUxpc3RlbmVy
KHN0ZDo6ZnVuY3Rpb248dm9pZCAoYm9vbCBpc09uTGluZSk+KTsKKyAgICB2b2lkIGFkZE5ldHdv
cmtTdGF0ZUNoYW5nZUxpc3RlbmVyKFdURjo6RnVuY3Rpb248dm9pZCAoYm9vbCBpc09uTGluZSk+
JiYpOwogCiAgICAgYm9vbCBvbkxpbmUoKSBjb25zdDsKIApAQCAtNjcsNyArNjcsNyBAQCBwcml2
YXRlOgogI2lmICFQTEFURk9STShJT1MpCiAgICAgYm9vbCBtX2lzT25MaW5lOwogI2VuZGlmCi0g
ICAgVmVjdG9yPHN0ZDo6ZnVuY3Rpb248dm9pZCAoYm9vbCk+PiBtX2xpc3RlbmVyczsKKyAgICBW
ZWN0b3I8V1RGOjpGdW5jdGlvbjx2b2lkIChib29sKT4+IG1fbGlzdGVuZXJzOwogCiAgICAgdm9p
ZCBub3RpZnlOZXR3b3JrU3RhdGVDaGFuZ2UoKSBjb25zdDsKICAgICB2b2lkIHVwZGF0ZVN0YXRl
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtT
dG9yYWdlU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdv
cmtTdG9yYWdlU2Vzc2lvbi5jcHAKaW5kZXggNTViZTljY2Y0MmE2ZmMxMWQxNTY3YmMwN2M0Zjkx
NDRhY2Y2M2JmMy4uOThkYTA4MmFlZTYzNDc4OTcwYmNlMDkzOTU2ZjMzYzE5OGE1NjUxMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNl
c3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0
b3JhZ2VTZXNzaW9uLmNwcApAQCAtNTAsNyArNTAsNyBAQCB2b2lkIE5ldHdvcmtTdG9yYWdlU2Vz
c2lvbjo6ZGVzdHJveVNlc3Npb24oU2Vzc2lvbklEIHNlc3Npb25JRCkKICAgICBnbG9iYWxTZXNz
aW9uTWFwKCkucmVtb3ZlKHNlc3Npb25JRCk7CiB9CiAKLXZvaWQgTmV0d29ya1N0b3JhZ2VTZXNz
aW9uOjpmb3JFYWNoKHN0ZDo6ZnVuY3Rpb248dm9pZChjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3Rv
cmFnZVNlc3Npb24mKT4gZnVuY3RvcikKK3ZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpmb3JF
YWNoKGNvbnN0IFdURjo6RnVuY3Rpb248dm9pZChjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFn
ZVNlc3Npb24mKT4mIGZ1bmN0b3IpCiB7CiAgICAgZnVuY3RvcihkZWZhdWx0U3RvcmFnZVNlc3Np
b24oKSk7CiAgICAgZm9yIChhdXRvJiBzdG9yYWdlU2Vzc2lvbiA6IGdsb2JhbFNlc3Npb25NYXAo
KS52YWx1ZXMoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
TmV0d29ya1N0b3JhZ2VTZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oCmluZGV4IGIwOTc2ZDk3NTIwNjI4OGU3MTRkYmMwZmNj
YjU2NDZiMzM3NTg5MTUuLjI4NTVjYjc5ZDIxNmE2Y2U0ZmQ4OGVkYTUzOTQzMjNiYzg3NDU3ZDEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3Jr
U3RvcmFnZVNlc3Npb24uaApAQCAtMjcsNyArMjcsNyBAQAogCiAjaW5jbHVkZSAiQ3JlZGVudGlh
bFN0b3JhZ2UuaCIKICNpbmNsdWRlICJTZXNzaW9uSUQuaCIKLSNpbmNsdWRlIDxmdW5jdGlvbmFs
PgorI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAj
aW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKQEAgLTYyLDcgKzYyLDcgQEAgcHVibGlj
OgogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIGVuc3VyZVByaXZhdGVCcm93c2luZ1Nl
c3Npb24oU2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIGlkZW50aWZpZXJCYXNlID0gU3RyaW5nKCkp
OwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIGVuc3VyZVNlc3Npb24oU2Vzc2lvbklE
LCBjb25zdCBTdHJpbmcmIGlkZW50aWZpZXJCYXNlID0gU3RyaW5nKCkpOwogICAgIFdFQkNPUkVf
RVhQT1JUIHN0YXRpYyB2b2lkIGRlc3Ryb3lTZXNzaW9uKFNlc3Npb25JRCk7Ci0gICAgV0VCQ09S
RV9FWFBPUlQgc3RhdGljIHZvaWQgZm9yRWFjaChzdGQ6OmZ1bmN0aW9uPHZvaWQoY29uc3QgV2Vi
Q29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJik+KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0
aWMgdm9pZCBmb3JFYWNoKGNvbnN0IFdURjo6RnVuY3Rpb248dm9pZChjb25zdCBXZWJDb3JlOjpO
ZXR3b3JrU3RvcmFnZVNlc3Npb24mKT4mKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2
b2lkIHN3aXRjaFRvTmV3VGVzdGluZ1Nlc3Npb24oKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Db29raWVTdG9yYWdlQ0ZOZXQuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Db29raWVTdG9yYWdlQ0ZOZXQuY3BwCmluZGV4
IDYxOWIwNzg5MDlkMzFiZDQ0YzEzY2NmYzkzMmEzY2RkZGJjOGNhNTMuLmNlNmM5MmEyYmI3ZmMy
YTFkMGVkNjA2MGU1MTE0YjU4NDRkMjYxNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY2YvQ29va2llU3RvcmFnZUNGTmV0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0Nvb2tpZVN0b3JhZ2VDRk5ldC5jcHAKQEAgLTI3LDYg
KzI3LDcgQEAKICNpbmNsdWRlICJDb29raWVTdG9yYWdlLmgiCiAKICNpbmNsdWRlICJOZXR3b3Jr
U3RvcmFnZVNlc3Npb24uaCIKKyNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KICNpbmNsdWRlIDx3
dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5jbHVkZSA8d3Rm
L05ldmVyRGVzdHJveWVkLmg+CkBAIC00MywxNyArNDQsMTggQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiAjaWYgUExBVEZPUk0oV0lOKQogCi1zdGF0aWMgSGFzaE1hcDxDRkhUVFBDb29raWVTdG9y
YWdlUmVmLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+PiYgY29va2llQ2hhbmdlQ2FsbGJhY2tNYXAo
KQorc3RhdGljIEhhc2hNYXA8Q0ZIVFRQQ29va2llU3RvcmFnZVJlZiwgV1RGOjpGdW5jdGlvbjx2
b2lkICgpPj4mIGNvb2tpZUNoYW5nZUNhbGxiYWNrTWFwKCkKIHsKLSAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8SGFzaE1hcDxDRkhUVFBDb29raWVTdG9yYWdlUmVmLCBzdGQ6OmZ1bmN0aW9uPHZv
aWQgKCk+Pj4gbWFwOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoTWFwPENGSFRUUENv
b2tpZVN0b3JhZ2VSZWYsIFdURjo6RnVuY3Rpb248dm9pZCAoKT4+PiBtYXA7CiAgICAgcmV0dXJu
IG1hcDsKIH0KIAogc3RhdGljIHZvaWQgbm90aWZ5Q29va2llc0NoYW5nZWQoQ0ZIVFRQQ29va2ll
U3RvcmFnZVJlZiBjb29raWVTdG9yYWdlLCB2b2lkICopCiB7CiAgICAgY2FsbE9uTWFpblRocmVh
ZChbY29va2llU3RvcmFnZV0gewotICAgICAgICBpZiAoYXV0byBjYWxsYmFjayA9IGNvb2tpZUNo
YW5nZUNhbGxiYWNrTWFwKCkuZ2V0KGNvb2tpZVN0b3JhZ2UpKQotICAgICAgICAgICAgY2FsbGJh
Y2soKTsKKyAgICAgICAgYXV0byBpdCA9IGNvb2tpZUNoYW5nZUNhbGxiYWNrTWFwKCkuZmluZChj
b29raWVTdG9yYWdlKTsKKyAgICAgICAgaWYgKGl0ICE9IGNvb2tpZUNoYW5nZUNhbGxiYWNrTWFw
KCkuZW5kKCkpCisgICAgICAgICAgICAoKml0LnZhbHVlKSgpOwogICAgIH0pOwogfQogCkBAIC02
OCw3ICs3MCw3IEBAIHN0YXRpYyBpbmxpbmUgQ0ZSdW5Mb29wUmVmIGNvb2tpZVN0b3JhZ2VPYnNl
cnZlclJ1bkxvb3AoKQogICAgIHJldHVybiBsb2FkZXJSdW5Mb29wKCk7CiB9CiAKLXZvaWQgc3Rh
cnRPYnNlcnZpbmdDb29raWVDaGFuZ2VzKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc3Rv
cmFnZVNlc3Npb24sIHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4mJiBjYWxsYmFjaykKK3ZvaWQgc3Rh
cnRPYnNlcnZpbmdDb29raWVDaGFuZ2VzKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc3Rv
cmFnZVNlc3Npb24sIFdURjo6RnVuY3Rpb248dm9pZCAoKT4mJiBjYWxsYmFjaykKIHsKICAgICBB
U1NFUlQoaXNNYWluVGhyZWFkKCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2NmL1NvY2tldFN0cmVhbUhhbmRsZUltcGxDRk5ldC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1NvY2tldFN0cmVhbUhhbmRsZUltcGxDRk5ldC5j
cHAKaW5kZXggZWQ0MTA5YWU2ZDc2OTgwMTFlMzRlMjUyZDI2NGY2ODE5MTE5YzlmYS4uNDE3Njgw
MDhkODMxNWNjZTljYWQ2YzQ2MmE0MGQ0ZDMyMWNjZmU0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsQ0ZOZXQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvU29ja2V0U3RyZWFtSGFu
ZGxlSW1wbENGTmV0LmNwcApAQCAtMTQ0LDcgKzE0NCw3IEBAIENGU3RyaW5nUmVmIFNvY2tldFN0
cmVhbUhhbmRsZUltcGw6OmNvcHlQQUNFeGVjdXRpb25EZXNjcmlwdGlvbih2b2lkKikKICAgICBy
ZXR1cm4gQ0ZTVFIoIldlYlNvY2tldCBwcm94eSBQQUMgZmlsZSBleGVjdXRpb24iKTsKIH0KIAot
c3RhdGljIHZvaWQgY2FsbE9uTWFpblRocmVhZEFuZFdhaXQoc3RkOjpmdW5jdGlvbjx2b2lkKCk+
IGZ1bmN0aW9uKQorc3RhdGljIHZvaWQgY2FsbE9uTWFpblRocmVhZEFuZFdhaXQoV1RGOjpGdW5j
dGlvbjx2b2lkKCk+JiYgZnVuY3Rpb24pCiB7CiAgICAgaWYgKGlzTWFpblRocmVhZCgpKSB7CiAg
ICAgICAgIGZ1bmN0aW9uKCk7CkBAIC0xNTYsNyArMTU2LDcgQEAgc3RhdGljIHZvaWQgY2FsbE9u
TWFpblRocmVhZEFuZFdhaXQoc3RkOjpmdW5jdGlvbjx2b2lkKCk+IGZ1bmN0aW9uKQogCiAgICAg
Ym9vbCBpc0ZpbmlzaGVkID0gZmFsc2U7CiAKLSAgICBjYWxsT25NYWluVGhyZWFkKFsmXSB7Cisg
ICAgY2FsbE9uTWFpblRocmVhZChbJiwgZnVuY3Rpb24gPSBXVEZNb3ZlKGZ1bmN0aW9uKV0gewog
ICAgICAgICBmdW5jdGlvbigpOwogCiAgICAgICAgIHN0ZDo6bG9ja19ndWFyZDxMb2NrPiBsb2Nr
KG11dGV4KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFj
L0Nvb2tpZVN0b3JhZ2VNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21h
Yy9Db29raWVTdG9yYWdlTWFjLm1tCmluZGV4IGU3ODJiMDY2ZTRlYTk2ODVhNDhhZGI3OWU4MWUw
Mzg1MDlkYzQ2Y2IuLmUxNGUzZDE0MGZiMWQ1NzI1YTJlNzZmYzU0ZTk5ZGJjZDkxNjM0YjUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0Nvb2tpZVN0b3Jh
Z2VNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvQ29va2ll
U3RvcmFnZU1hYy5tbQpAQCAtMjMsMTkgKzIzLDIwIEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKICAqLwog
Ci0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiQ29va2llU3RvcmFnZS5oIgorI2ltcG9y
dCAiY29uZmlnLmgiCisjaW1wb3J0ICJDb29raWVTdG9yYWdlLmgiCiAKICNpbXBvcnQgIldlYkNv
cmVTeXN0ZW1JbnRlcmZhY2UuaCIKKyNpbXBvcnQgPHd0Zi9GdW5jdGlvbi5oPgogCiB1c2luZyBu
YW1lc3BhY2UgV2ViQ29yZTsKIAogQGludGVyZmFjZSBXZWJDb29raWVTdG9yYWdlT2JqQ0FkYXB0
ZXIgOiBOU09iamVjdCB7Ci0gICAgc3RkOjpmdW5jdGlvbjx2b2lkICgpPiBtX2Nvb2tpZUNoYW5n
ZUNhbGxiYWNrOworICAgIFdURjo6RnVuY3Rpb248dm9pZCAoKT4gbV9jb29raWVDaGFuZ2VDYWxs
YmFjazsKIH0KIC0odm9pZClub3RpZnlDb29raWVzQ2hhbmdlZE9uTWFpblRocmVhZDsKIC0odm9p
ZCljb29raWVzQ2hhbmdlZE5vdGlmaWNhdGlvbkhhbmRsZXI6KE5TTm90aWZpY2F0aW9uICopbm90
aWZpY2F0aW9uOwotLSh2b2lkKXN0YXJ0TGlzdGVuaW5nRm9yQ29va2llQ2hhbmdlTm90aWZpY2F0
aW9uc1dpdGhDYWxsYmFjazooc3RkOjpmdW5jdGlvbjx2b2lkICgpPiYmKWNhbGxiYWNrOworLSh2
b2lkKXN0YXJ0TGlzdGVuaW5nRm9yQ29va2llQ2hhbmdlTm90aWZpY2F0aW9uc1dpdGhDYWxsYmFj
azooV1RGOjpGdW5jdGlvbjx2b2lkICgpPiYmKWNhbGxiYWNrOwogLSh2b2lkKXN0b3BMaXN0ZW5p
bmdGb3JDb29raWVDaGFuZ2VOb3RpZmljYXRpb25zOwogQGVuZAogCkBAIC01Myw3ICs1NCw3IEBA
IC0odm9pZCljb29raWVzQ2hhbmdlZE5vdGlmaWNhdGlvbkhhbmRsZXI6KE5TTm90aWZpY2F0aW9u
ICopbm90aWZpY2F0aW9uCiAgICAgW3NlbGYgcGVyZm9ybVNlbGVjdG9yT25NYWluVGhyZWFkOkBz
ZWxlY3Rvcihub3RpZnlDb29raWVzQ2hhbmdlZE9uTWFpblRocmVhZCkgd2l0aE9iamVjdDpuaWwg
d2FpdFVudGlsRG9uZTpGQUxTRV07CiB9CiAKLS0odm9pZClzdGFydExpc3RlbmluZ0ZvckNvb2tp
ZUNoYW5nZU5vdGlmaWNhdGlvbnNXaXRoQ2FsbGJhY2s6KHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4m
JiljYWxsYmFjaworLSh2b2lkKXN0YXJ0TGlzdGVuaW5nRm9yQ29va2llQ2hhbmdlTm90aWZpY2F0
aW9uc1dpdGhDYWxsYmFjazooV1RGOjpGdW5jdGlvbjx2b2lkICgpPiYmKWNhbGxiYWNrCiB7CiAg
ICAgQVNTRVJUKCFtX2Nvb2tpZUNoYW5nZUNhbGxiYWNrKTsKICAgICBtX2Nvb2tpZUNoYW5nZUNh
bGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayk7CkBAIC03Miw3ICs3Myw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogc3RhdGljIFdlYkNvb2tpZVN0b3JhZ2VPYmpDQWRhcHRlciAqY29va2llU3Rv
cmFnZUFkYXB0ZXI7CiAKLXZvaWQgc3RhcnRPYnNlcnZpbmdDb29raWVDaGFuZ2VzKGNvbnN0IE5l
dHdvcmtTdG9yYWdlU2Vzc2lvbiYsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4mJiBjYWxsYmFjaykK
K3ZvaWQgc3RhcnRPYnNlcnZpbmdDb29raWVDaGFuZ2VzKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vz
c2lvbiYsIFdURjo6RnVuY3Rpb248dm9pZCAoKT4mJiBjYWxsYmFjaykKIHsKICAgICBpZiAoIWNv
b2tpZVN0b3JhZ2VBZGFwdGVyKQogICAgICAgICBjb29raWVTdG9yYWdlQWRhcHRlciA9IFtbV2Vi
Q29va2llU3RvcmFnZU9iakNBZGFwdGVyIGFsbG9jXSBpbml0XTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Db29raWVTdG9yYWdlU291cC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvQ29va2llU3RvcmFnZVNvdXAuY3Bw
CmluZGV4IGVhNmE2YjI5Mjc4MDkzNWIxODNkYWM2ZjE0MWQ5NjlmM2Q1MzFhMGQuLjQ1ZDdhOTEz
MDkzYTNkNWZkOTY5MDI3Njc3MWZhNDA0YWNmNDAzZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Db29raWVTdG9yYWdlU291cC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0Nvb2tpZVN0b3JhZ2VTb3VwLmNwcApA
QCAtMjMsNyArMjMsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXZvaWQgc3RhcnRPYnNl
cnZpbmdDb29raWVDaGFuZ2VzKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIHN0ZDo6ZnVu
Y3Rpb248dm9pZCAoKT4mJikKK3ZvaWQgc3RhcnRPYnNlcnZpbmdDb29raWVDaGFuZ2VzKGNvbnN0
IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIFdURjo6RnVuY3Rpb248dm9pZCAoKT4mJikKIHsKICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvc291cC9Tb3VwTmV0d29ya1Nlc3Npb24uY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvdXBOZXR3b3JrU2Vzc2lvbi5jcHAKaW5kZXggN2Mx
N2U2MDRlNzhiYjk1YjRkZmE0MDA3ZjAxMjZkZTEyOWJhZjM0YS4uYTNkODQ4MDg0OGUzOTFhZjgy
MDIxMDRmMzZjYWU5YzRkYjViOTEzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9zb3VwL1NvdXBOZXR3b3JrU2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvdXBOZXR3b3JrU2Vzc2lvbi5jcHAKQEAgLTI5Myw3
ICsyOTMsNyBAQCB2b2lkIFNvdXBOZXR3b3JrU2Vzc2lvbjo6c2V0U2hvdWxkSWdub3JlVExTRXJy
b3JzKGJvb2wgaWdub3JlVExTRXJyb3JzKQogICAgIGdJZ25vcmVUTFNFcnJvcnMgPSBpZ25vcmVU
TFNFcnJvcnM7CiB9CiAKLXZvaWQgU291cE5ldHdvcmtTZXNzaW9uOjpjaGVja1RMU0Vycm9ycyhT
b3VwUmVxdWVzdCogc291cFJlcXVlc3QsIFNvdXBNZXNzYWdlKiBtZXNzYWdlLCBzdGQ6OmZ1bmN0
aW9uPHZvaWQgKGNvbnN0IFJlc291cmNlRXJyb3ImKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3Zv
aWQgU291cE5ldHdvcmtTZXNzaW9uOjpjaGVja1RMU0Vycm9ycyhTb3VwUmVxdWVzdCogc291cFJl
cXVlc3QsIFNvdXBNZXNzYWdlKiBtZXNzYWdlLCBXVEY6OkZ1bmN0aW9uPHZvaWQgKGNvbnN0IFJl
c291cmNlRXJyb3ImKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAoZ0lnbm9yZVRM
U0Vycm9ycykgewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7IH0pOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvdXBOZXR3b3JrU2Vzc2lvbi5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvdXBOZXR3b3JrU2Vzc2lv
bi5oCmluZGV4IDkwOGI2Y2I2ZDVlNTQ2ZTgyMWY2ZTc0ODk4YmU4ZWJmMWFkOTZiNDAuLmNkODEw
ZjEyMTU3NjkxYzdjZWViMjZkMzc3ZjExNjhhZDJkZjNjZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb3VwTmV0d29ya1Nlc3Npb24uaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU291cE5ldHdvcmtTZXNzaW9uLmgK
QEAgLTI2LDggKzI2LDggQEAKICNpZm5kZWYgU291cE5ldHdvcmtTZXNzaW9uX2gKICNkZWZpbmUg
U291cE5ldHdvcmtTZXNzaW9uX2gKIAotI2luY2x1ZGUgPGZ1bmN0aW9uYWw+CiAjaW5jbHVkZSA8
Z2xpYi1vYmplY3QuaD4KKyNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KICNpbmNsdWRlIDx3dGYv
Tm9uY29weWFibGUuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL2ds
aWIvR1JlZlB0ci5oPgpAQCAtNjUsNyArNjUsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRBY2Nl
cHRMYW5ndWFnZXMoY29uc3QgQ1N0cmluZyYpOwogCiAgICAgc3RhdGljIHZvaWQgc2V0U2hvdWxk
SWdub3JlVExTRXJyb3JzKGJvb2wpOwotICAgIHN0YXRpYyB2b2lkIGNoZWNrVExTRXJyb3JzKFNv
dXBSZXF1ZXN0KiwgU291cE1lc3NhZ2UqLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKGNvbnN0IFJlc291
cmNlRXJyb3ImKT4mJik7CisgICAgc3RhdGljIHZvaWQgY2hlY2tUTFNFcnJvcnMoU291cFJlcXVl
c3QqLCBTb3VwTWVzc2FnZSosIFdURjo6RnVuY3Rpb248dm9pZCAoY29uc3QgUmVzb3VyY2VFcnJv
ciYpPiYmKTsKICAgICBzdGF0aWMgdm9pZCBhbGxvd1NwZWNpZmljSFRUUFNDZXJ0aWZpY2F0ZUZv
ckhvc3QoY29uc3QgQ2VydGlmaWNhdGVJbmZvJiwgY29uc3QgU3RyaW5nJiBob3N0KTsKIAogICAg
IHN0YXRpYyB2b2lkIHNldEN1c3RvbVByb3RvY29sUmVxdWVzdFR5cGUoR1R5cGUpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZS5jcHAKaW5kZXggODZjNGQ3
YTgyOTRmOWJiOTkyODc3OTQyNjViNmNjYWI2MjQzZDVlOS4uNzU1ZGU3OWY1MTE2OTk4Njg3NDM0
MDdmYmFmZmYyZGYxZGI4NDg4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
c3FsL1NRTGl0ZURhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwv
U1FMaXRlRGF0YWJhc2UuY3BwCkBAIC01MTYsMTkgKzUxNiwxOSBAQCBib29sIFNRTGl0ZURhdGFi
YXNlOjp0dXJuT25JbmNyZW1lbnRhbEF1dG9WYWN1dW0oKQogCiBzdGF0aWMgdm9pZCBkZXN0cm95
Q29sbGF0aW9uRnVuY3Rpb24odm9pZCogYXJnKQogewotICAgIGF1dG8gZiA9IHN0YXRpY19jYXN0
PHN0ZDo6ZnVuY3Rpb248aW50KGludCwgY29uc3Qgdm9pZCosIGludCwgY29uc3Qgdm9pZCopPio+
KGFyZyk7CisgICAgYXV0byBmID0gc3RhdGljX2Nhc3Q8V1RGOjpGdW5jdGlvbjxpbnQoaW50LCBj
b25zdCB2b2lkKiwgaW50LCBjb25zdCB2b2lkKik+Kj4oYXJnKTsKICAgICBkZWxldGUgZjsKIH0K
IAogc3RhdGljIGludCBjYWxsQ29sbGF0aW9uRnVuY3Rpb24odm9pZCogYXJnLCBpbnQgYUxlbmd0
aCwgY29uc3Qgdm9pZCogYSwgaW50IGJMZW5ndGgsIGNvbnN0IHZvaWQqIGIpCiB7Ci0gICAgYXV0
byBmID0gc3RhdGljX2Nhc3Q8c3RkOjpmdW5jdGlvbjxpbnQoaW50LCBjb25zdCB2b2lkKiwgaW50
LCBjb25zdCB2b2lkKik+Kj4oYXJnKTsKKyAgICBhdXRvIGYgPSBzdGF0aWNfY2FzdDxXVEY6OkZ1
bmN0aW9uPGludChpbnQsIGNvbnN0IHZvaWQqLCBpbnQsIGNvbnN0IHZvaWQqKT4qPihhcmcpOwog
ICAgIHJldHVybiAoKmYpKGFMZW5ndGgsIGEsIGJMZW5ndGgsIGIpOwogfQogCi12b2lkIFNRTGl0
ZURhdGFiYXNlOjpzZXRDb2xsYXRpb25GdW5jdGlvbihjb25zdCBTdHJpbmcmIGNvbGxhdGlvbk5h
bWUsIHN0ZDo6ZnVuY3Rpb248aW50KGludCwgY29uc3Qgdm9pZCosIGludCwgY29uc3Qgdm9pZCop
PiBjb2xsYXRpb25GdW5jdGlvbikKK3ZvaWQgU1FMaXRlRGF0YWJhc2U6OnNldENvbGxhdGlvbkZ1
bmN0aW9uKGNvbnN0IFN0cmluZyYgY29sbGF0aW9uTmFtZSwgV1RGOjpGdW5jdGlvbjxpbnQoaW50
LCBjb25zdCB2b2lkKiwgaW50LCBjb25zdCB2b2lkKik+JiYgY29sbGF0aW9uRnVuY3Rpb24pCiB7
Ci0gICAgYXV0byBmdW5jdGlvbk9iamVjdCA9IG5ldyBzdGQ6OmZ1bmN0aW9uPGludChpbnQsIGNv
bnN0IHZvaWQqLCBpbnQsIGNvbnN0IHZvaWQqKT4oY29sbGF0aW9uRnVuY3Rpb24pOworICAgIGF1
dG8gZnVuY3Rpb25PYmplY3QgPSBuZXcgV1RGOjpGdW5jdGlvbjxpbnQoaW50LCBjb25zdCB2b2lk
KiwgaW50LCBjb25zdCB2b2lkKik+KFdURk1vdmUoY29sbGF0aW9uRnVuY3Rpb24pKTsKICAgICBz
cWxpdGUzX2NyZWF0ZV9jb2xsYXRpb25fdjIobV9kYiwgY29sbGF0aW9uTmFtZS51dGY4KCkuZGF0
YSgpLCBTUUxJVEVfVVRGOCwgZnVuY3Rpb25PYmplY3QsIGNhbGxDb2xsYXRpb25GdW5jdGlvbiwg
ZGVzdHJveUNvbGxhdGlvbkZ1bmN0aW9uKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9zcWwvU1FMaXRlRGF0YWJhc2UuaAppbmRleCBlZTliYTJiZTFlMjUwNDVmOWMzYTYxNWU2NmU3
N2JmZjc1M2M0Mjg4Li4zNGRiNjk0Y2MzM2NmMmUwNjE1ZjhjNjZlMTViMWMxOWNjOTFiOTk5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2UuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2UuaApAQCAtMTI1
LDcgKzEyNSw3IEBAIHB1YmxpYzoKICAgICBlbnVtIEF1dG9WYWN1dW1QcmFnbWEgeyBBdXRvVmFj
dXVtTm9uZSA9IDAsIEF1dG9WYWN1dW1GdWxsID0gMSwgQXV0b1ZhY3V1bUluY3JlbWVudGFsID0g
MiB9OwogICAgIGJvb2wgdHVybk9uSW5jcmVtZW50YWxBdXRvVmFjdXVtKCk7CiAKLSAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIHNldENvbGxhdGlvbkZ1bmN0aW9uKGNvbnN0IFN0cmluZyYgY29sbGF0
aW9uTmFtZSwgc3RkOjpmdW5jdGlvbjxpbnQoaW50LCBjb25zdCB2b2lkKiwgaW50LCBjb25zdCB2
b2lkKik+KTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldENvbGxhdGlvbkZ1bmN0aW9uKGNv
bnN0IFN0cmluZyYgY29sbGF0aW9uTmFtZSwgV1RGOjpGdW5jdGlvbjxpbnQoaW50LCBjb25zdCB2
b2lkKiwgaW50LCBjb25zdCB2b2lkKik+JiYpOwogICAgIHZvaWQgcmVtb3ZlQ29sbGF0aW9uRnVu
Y3Rpb24oY29uc3QgU3RyaW5nJiBjb2xsYXRpb25OYW1lKTsKIAogICAgIC8vIFNldCB0aGlzIGZs
YWcgdG8gYWxsb3cgYWNjZXNzIGZyb20gbXVsdGlwbGUgdGhyZWFkcy4gIE5vdCBhbGwgbXVsdGkt
dGhyZWFkZWQgYWNjZXNzZXMgYXJlIHNhZmUhCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCmluZGV4IDQ2YmFlZDEwMzRiMjRlNjNiNThlMzk3NjRk
OTczNzFhN2E0ZjkyOTMuLjI5OGJlMDJkOGQxZWJmNzNkNzQyOWFhMTdlYzhlYTBjNjBhZGYyM2Mg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3Bw
CkBAIC0yMDg5LDcgKzIwODksNyBAQCBib29sIFJlbmRlckxheWVyQmFja2luZzo6aXNTaW1wbGVD
b250YWluZXJDb21wb3NpdGluZ0xheWVyKFBhaW50ZWRDb250ZW50c0luZm8mCiAvLyBSZXR1cm5p
bmcgdHJ1ZSBzdG9wcyB0aGUgdHJhdmVyc2FsLgogZW51bSBjbGFzcyBMYXllclRyYXZlcnNhbCB7
IENvbnRpbnVlLCBTdG9wIH07CiAKLXN0YXRpYyBMYXllclRyYXZlcnNhbCB0cmF2ZXJzZVZpc2li
bGVOb25Db21wb3NpdGVkRGVzY2VuZGFudExheWVycyhSZW5kZXJMYXllciYgcGFyZW50LCBzdGQ6
OmZ1bmN0aW9uPExheWVyVHJhdmVyc2FsIChjb25zdCBSZW5kZXJMYXllciYpPiBsYXllckZ1bmMp
CitzdGF0aWMgTGF5ZXJUcmF2ZXJzYWwgdHJhdmVyc2VWaXNpYmxlTm9uQ29tcG9zaXRlZERlc2Nl
bmRhbnRMYXllcnMoUmVuZGVyTGF5ZXImIHBhcmVudCwgY29uc3QgV1RGOjpGdW5jdGlvbjxMYXll
clRyYXZlcnNhbCAoY29uc3QgUmVuZGVyTGF5ZXImKT4mIGxheWVyRnVuYykKIHsKICAgICAvLyBG
SVhNRTogV2Ugc2hvdWxkbid0IGJlIGNhbGxlZCB3aXRoIGEgc3RhbGUgei1vcmRlciBsaXN0cy4g
U2VlIGJ1ZyA4NTUxMi4KICAgICBwYXJlbnQudXBkYXRlTGF5ZXJMaXN0c0lmTmVlZGVkKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHAKaW5kZXggY2NhNDc0ODY0
MjE4ZjBiNzgzNDk5YTk3ZTM0NGVkOTRhYzljYzhlNS4uMzVhOGQ2NGFiYTgzYzFmZjJiODJiOGY3
YmUzMjEzYTFhNGE3N2Q5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxpc3RCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0
Qm94LmNwcApAQCAtMjg2LDcgKzI4Niw3IEBAIExheW91dFJlY3QgUmVuZGVyTGlzdEJveDo6aXRl
bUJvdW5kaW5nQm94UmVjdChjb25zdCBMYXlvdXRQb2ludCYgYWRkaXRpb25hbE9mZnNlCiAgICAg
cmV0dXJuIExheW91dFJlY3QoeCwgeSwgY29udGVudFdpZHRoKCksIGl0ZW1IZWlnaHQoKSk7CiB9
CiAKLXZvaWQgUmVuZGVyTGlzdEJveDo6cGFpbnRJdGVtKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBj
b25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQsIFBhaW50RnVuY3Rpb24gcGFpbnRGdW5jdGlv
bikKK3ZvaWQgUmVuZGVyTGlzdEJveDo6cGFpbnRJdGVtKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBj
b25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQsIGNvbnN0IFBhaW50RnVuY3Rpb24mIHBhaW50
RnVuY3Rpb24pCiB7CiAgICAgaW50IGxpc3RJdGVtc1NpemUgPSBudW1JdGVtcygpOwogICAgIGlu
dCBmaXJzdFZpc2libGVJdGVtID0gbV9pbmRleE9mRmlyc3RWaXNpYmxlSXRlbUluc2lkZVBhZGRp
bmdUb3BBcmVhLnZhbHVlX29yKG1faW5kZXhPZmZzZXQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMaXN0Qm94LmgKaW5kZXggYjE2NTRkZmI2MzNjODJlYTkxMjRkMzEzYzRiZWJkZThl
MDc0N2JhMi4uMjQ4OThjZGRiNDc2NDY4MjkyMWI4YWRmZDZlMGQ2MmZjOWNlMTM0ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5oCkBAIC0xNDMsOCArMTQzLDggQEAg
cHJpdmF0ZToKICAgICAvLyBOT1RFOiBUaGlzIHNob3VsZCBvbmx5IGJlIGNhbGxlZCBieSB0aGUg
b3ZlcnJpZGVuIHNldFNjcm9sbE9mZnNldCBmcm9tIFNjcm9sbGFibGVBcmVhLgogICAgIHZvaWQg
c2Nyb2xsVG8oaW50IG5ld09mZnNldCk7CiAKLSAgICB1c2luZyBQYWludEZ1bmN0aW9uID0gc3Rk
OjpmdW5jdGlvbjx2b2lkKFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50JiwgaW50IGxpc3RJ
dGVtSW5kZXgpPjsKLSAgICB2b2lkIHBhaW50SXRlbShQYWludEluZm8mLCBjb25zdCBMYXlvdXRQ
b2ludCYsIFBhaW50RnVuY3Rpb24pOworICAgIHVzaW5nIFBhaW50RnVuY3Rpb24gPSBXVEY6OkZ1
bmN0aW9uPHZvaWQoUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmLCBpbnQgbGlzdEl0ZW1J
bmRleCk+OworICAgIHZvaWQgcGFpbnRJdGVtKFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50
JiwgY29uc3QgUGFpbnRGdW5jdGlvbiYpOwogCiAgICAgdm9pZCBzZXRIYXNWZXJ0aWNhbFNjcm9s
bGJhcihib29sIGhhc1Njcm9sbGJhcik7CiAgICAgUmVmPFNjcm9sbGJhcj4gY3JlYXRlU2Nyb2xs
YmFyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbGluZS9CcmVha2lu
Z0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9saW5lL0JyZWFraW5nQ29udGV4
dC5oCmluZGV4IDEyNmZkM2Q0ZWNmOTlkMDQzNGJhNzEzMmE1NzliZjQ1MThmZGI4YTEuLjJkODNm
MDc3YTFiY2I2MTZjNjkyYzA1NWM3N2I4N2Y0ZjFjNzVmMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9saW5lL0JyZWFraW5nQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9saW5lL0JyZWFraW5nQ29udGV4dC5oCkBAIC0zOCw2ICszOCw3IEBACiAj
aW5jbHVkZSAiUmVuZGVyUnVieVJ1bi5oIgogI2luY2x1ZGUgIlJlbmRlclNWR0lubGluZVRleHQu
aCIKICNpbmNsdWRlICJUcmFpbGluZ09iamVjdHMuaCIKKyNpbmNsdWRlIDx3dGYvRnVuY3Rpb24u
aD4KICNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdW
aWV3Lmg+CiAjaW5jbHVkZSA8d3RmL3VuaWNvZGUvQ2hhcmFjdGVyTmFtZXMuaD4KQEAgLTE5MSw3
ICsxOTIsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgdGhpcy0+YXBwZW5kKGluaXRpYWwpOwog
ICAgICAgICB9CiAKLSAgICAgICAgdm9pZCBwdXNoKHN0ZDo6ZnVuY3Rpb248dm9pZChJbmxpbmVJ
dGVyYXRvciYgbW9kaWZ5TWUpPiB1cGRhdGVyKQorICAgICAgICB2b2lkIHB1c2goY29uc3QgV1RG
OjpGdW5jdGlvbjx2b2lkKElubGluZUl0ZXJhdG9yJiBtb2RpZnlNZSk+JiB1cGRhdGVyKQogICAg
ICAgICB7CiAgICAgICAgICAgICBBU1NFUlQoIXRoaXMtPmlzRW1wdHkoKSk7CiAgICAgICAgICAg
ICBpZiAobV9jYXBhY2l0eSAhPSAxKQpAQCAtMjAxLDcgKzIwMiw3IEBAIHByaXZhdGU6CiAgICAg
ICAgICAgICAgICAgdGhpcy0+cmVzaXplKG1fY2FwYWNpdHkpOwogICAgICAgICB9CiAKLSAgICAg
ICAgdm9pZCB1cGRhdGUoc3RkOjpmdW5jdGlvbjx2b2lkKElubGluZUl0ZXJhdG9yJiBtb2RpZnlN
ZSk+IHVwZGF0ZXIpCisgICAgICAgIHZvaWQgdXBkYXRlKGNvbnN0IFdURjo6RnVuY3Rpb248dm9p
ZChJbmxpbmVJdGVyYXRvciYgbW9kaWZ5TWUpPiYgdXBkYXRlcikKICAgICAgICAgewogICAgICAg
ICAgICAgQVNTRVJUKCF0aGlzLT5pc0VtcHR5KCkpOwogICAgICAgICAgICAgdXBkYXRlcih0aGlz
LT5hdCgwKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlci5jcHAKaW5kZXggOWM5ODc1ZjBmNTc3ODZh
ZjJiZGYzZmY4M2Y1Yjc0ZjI4YTFiYTIxMy4uNjZlOGRhZmE5ODc4NzcxMTY4NjM1MTMyNDc2ZTRh
NzA0NWJkMTMzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyLmNwcApAQCAtNTksNyArNTksNyBA
QCBpbmxpbmUgV29ya2VyOjpXb3JrZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwg
SlNDOjpSdW50aW1lRmxhZ3MgcnVudGltZQogewogICAgIGlmICghYWxsV29ya2VycykgewogICAg
ICAgICBhbGxXb3JrZXJzID0gbmV3IEhhc2hTZXQ8V29ya2VyKj47Ci0gICAgICAgIG5ldHdvcmtT
dGF0ZU5vdGlmaWVyKCkuYWRkTmV0d29ya1N0YXRlQ2hhbmdlTGlzdGVuZXIobmV0d29ya1N0YXRl
Q2hhbmdlZCk7CisgICAgICAgIG5ldHdvcmtTdGF0ZU5vdGlmaWVyKCkuYWRkTmV0d29ya1N0YXRl
Q2hhbmdlTGlzdGVuZXIoW10gKGJvb2wgaXNPbkxpbmUpIHsgbmV0d29ya1N0YXRlQ2hhbmdlZChp
c09uTGluZSk7IH0pOwogICAgIH0KIAogICAgIGF1dG8gYWRkUmVzdWx0ID0gYWxsV29ya2Vycy0+
YWRkKHRoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJSdW5M
b29wLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyUnVuTG9vcC5jcHAKaW5kZXgg
NjRjMmVmNDVjNGZkNTkwZjU4MWQzMGYzODAxOWVjNmU2MDYzNmUxYy4uMjM2MWJmNzQ1YWFiNTRm
NTkxMzYwNzM5Mjc2OWI2MmFkYjNlMGJjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9Xb3JrZXJSdW5Mb29wLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtl
clJ1bkxvb3AuY3BwCkBAIC01MCw3ICs1MCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNz
IFdvcmtlclNoYXJlZFRpbWVyIGZpbmFsIDogcHVibGljIFNoYXJlZFRpbWVyIHsKIHB1YmxpYzoK
ICAgICAvLyBTaGFyZWRUaW1lciBpbnRlcmZhY2UuCi0gICAgdm9pZCBzZXRGaXJlZEZ1bmN0aW9u
KHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiYmIGZ1bmN0aW9uKSBvdmVycmlkZSB7IG1fc2hhcmVkVGlt
ZXJGdW5jdGlvbiA9IFdURk1vdmUoZnVuY3Rpb24pOyB9CisgICAgdm9pZCBzZXRGaXJlZEZ1bmN0
aW9uKFdURjo6RnVuY3Rpb248dm9pZCgpPiYmIGZ1bmN0aW9uKSBvdmVycmlkZSB7IG1fc2hhcmVk
VGltZXJGdW5jdGlvbiA9IFdURk1vdmUoZnVuY3Rpb24pOyB9CiAgICAgdm9pZCBzZXRGaXJlSW50
ZXJ2YWwoU2Vjb25kcyBpbnRlcnZhbCkgb3ZlcnJpZGUgeyBtX25leHRGaXJlVGltZSA9IGludGVy
dmFsICsgV2FsbFRpbWU6Om5vdygpOyB9CiAgICAgdm9pZCBzdG9wKCkgb3ZlcnJpZGUgeyBtX25l
eHRGaXJlVGltZSA9IFdhbGxUaW1lKCk7IH0KIApAQCAtNTksNyArNTksNyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBmaXJlKCkgeyBtX3NoYXJlZFRpbWVyRnVuY3Rpb24oKTsgfQogCiBwcml2YXRlOgot
ICAgIHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiBtX3NoYXJlZFRpbWVyRnVuY3Rpb247CisgICAgV1RG
OjpGdW5jdGlvbjx2b2lkKCk+IG1fc2hhcmVkVGltZXJGdW5jdGlvbjsKICAgICBXYWxsVGltZSBt
X25leHRGaXJlVGltZTsKIH07CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>313405</attachid>
            <date>2017-06-20 09:31:10 -0700</date>
            <delta_ts>2017-06-20 11:02:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-173583-20170620093109.patch</filename>
            <type>text/plain</type>
            <size>82710</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE4NTI4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWRjMjgyZDE0ODRkZjk3
MzQ0NTA1MmZiNTI0ZTM3MDljZmQxZDcwNy4uMThlYjAzMzJjOGE2NjQ5ZjdlNDJhOGI0NDUxYjAz
MmE1MDAyODU0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzMCBAQAorMjAxNy0wNi0xOSAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFVzZSBXVEY6OkZ1bmN0aW9u
IGluc3RlYWQgb2Ygc3RkOjpmdW5jdGlvbiBpbiBtb3JlIHBsYWNlcyBpbiBXZWJDb3JlLworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTczNTgzCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXNlIFdURjo6RnVu
Y3Rpb24gaW5zdGVhZCBvZiBzdGQ6OmZ1bmN0aW9uIGluIG1vcmUgcGxhY2VzIGluIFdlYkNvcmUv
IHRvCisgICAgICAgIHJlZHVjZSBjb3B5aW5nLgorCisgICAgICAgICogcGFnZS9QYWdlLmNwcDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9IeXN0ZXJlc2lzQWN0aXZpdHkuaDoKKyAgICAgICAgKFdlYkNv
cmU6Okh5c3RlcmVzaXNBY3Rpdml0eTo6SHlzdGVyZXNpc0FjdGl2aXR5KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9Mb2dnaW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnJlZ2lzdGVyTm90aWZ5Q2Fs
bGJhY2spOgorICAgICAgICAqIHBsYXRmb3JtL0xvZ2dpbmcuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9NYWluVGhyZWFkU2hhcmVkVGltZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWFpblRocmVh
ZFNoYXJlZFRpbWVyOjpzZXRGaXJlZEZ1bmN0aW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9NYWlu
VGhyZWFkU2hhcmVkVGltZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9QbGF0Zm9ybVBhc3RlYm9h
cmQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9TY29wZUd1YXJkLmg6CisgICAgICAgIChXZWJDb3Jl
OjpTY29wZUd1YXJkOjpTY29wZUd1YXJkKToKKyAgICAgICAgKFdlYkNvcmU6OlNjb3BlR3VhcmQ6
OmVuYWJsZSk6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uU21vb3RoLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdGlvblNtb290aDo6U2Nyb2xsQW5pbWF0aW9u
U21vb3RoKToKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxBbmltYXRpb25TbW9vdGguaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9TaGFyZWRUaW1lci5oOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlv
L1BsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbGF0
Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6OmN1cnJlbnRTZXNzaW9uc01hdGNoaW5nKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXIuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9jZi9NYWluVGhyZWFkU2hhcmVkVGltZXJDRi5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpzZXR1cFBvd2VyT2JzZXJ2ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2NmL1J1bkxv
b3BPYnNlcnZlci5oOgorICAgICAgICAoV2ViQ29yZTo6UnVuTG9vcE9ic2VydmVyOjpSdW5Mb29w
T2JzZXJ2ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5o
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6dHJhdmVyc2UpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9N
ZWRpYVBsYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjphZGRNZWRpYUVuZ2luZSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9QYXRoLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb246OnNlZWtDb21wbGV0ZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uOjpzY2hlZHVsZU1haW5U
aHJlYWROb3RpZmljYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uOjpkaXNwYXRjaE5vdGlmaWNhdGlvbik6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5oOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uOjpOb3RpZmlj
YXRpb246Ok5vdGlmaWNhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb246Ok5vdGlmaWNhdGlvbjo6ZnVuY3Rpb24pOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbk9iakMubW06CisgICAgICAgICgtW1dlYkNvcmVBVkZNb3ZpZU9ic2VydmVyIG9ic2VydmVW
YWx1ZUZvcktleVBhdGg6b2ZPYmplY3Q6Y2hhbmdlOmNvbnRleHQ6XSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFT
dHJlYW1BVkZPYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6cnVuV2l0aG91dEFuaW1hdGlvbnMp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0lPU3VyZmFjZS5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0lPU3VyZmFjZS5tbToKKyAgICAgICAgKFdlYkNv
cmU6OklPU3VyZmFjZTo6Y29udmVydFRvRm9ybWF0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvTWFpblRocmVhZE5vdGlmaWVyLmg6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUmVxdWVzdEluc3RhbGxNaXNzaW5nUGx1Z2lu
c0NhbGxiYWNrLmg6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclJlcXVlc3RJbnN0YWxs
TWlzc2luZ1BsdWdpbnNDYWxsYmFjazo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
UGxheWVyUmVxdWVzdEluc3RhbGxNaXNzaW5nUGx1Z2luc0NhbGxiYWNrOjpNZWRpYVBsYXllclJl
cXVlc3RJbnN0YWxsTWlzc2luZ1BsdWdpbnNDYWxsYmFjayk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dERpcmVjdDJELmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd1dpdGhvdXRTaGFkb3cpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3V2l0aFNoYWRvdyk6CisgICAgICAgICogcGxhdGZvcm0v
Z3RrL1Bhc3RlYm9hcmRIZWxwZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkU2V0
RGF0YTo6Q2xpcGJvYXJkU2V0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkSGVs
cGVyOjp3cml0ZUNsaXBib2FyZENvbnRlbnRzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvUGFz
dGVib2FyZEhlbHBlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9QbGF0Zm9ybVBhc3RlYm9h
cmRHdGsuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1QYXN0ZWJvYXJkOjp3cml0ZVRv
Q2xpcGJvYXJkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuSW50
ZXJmYWNlQVZLaXQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVu
SW50ZXJmYWNlQVZLaXQubW06CisgICAgICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VB
VktpdDo6cHJlcGFyZWRUb1JldHVyblRvSW5saW5lKToKKyAgICAgICAgKFdlYlZpZGVvRnVsbHNj
cmVlbkludGVyZmFjZUFWS2l0OjpmdWxsc2NyZWVuTWF5UmV0dXJuVG9JbmxpbmUpOgorICAgICAg
ICAqIHBsYXRmb3JtL21hYy9Qb3dlck9ic2VydmVyTWFjLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlBvd2VyT2JzZXJ2ZXI6OlBvd2VyT2JzZXJ2ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9Q
b3dlck9ic2VydmVyTWFjLmg6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1dlYkNvcmVOU1VSTEV4
dHJhcy5tbToKKyAgICAgICAgKFdlYkNvcmU6OmlzU2Vjb25kTGV2ZWxEb21haW5OYW1lQWxsb3dl
ZEJ5VExEUnVsZXMpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL0NhcHR1cmVEZXZp
Y2VNYW5hZ2VyLmNwcDoKKyAgICAgICAgKENhcHR1cmVEZXZpY2VNYW5hZ2VyOjphZGRDYXB0dXJl
RGV2aWNlQ2hhbmdlZE9ic2VydmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9D
YXB0dXJlRGV2aWNlTWFuYWdlci5oOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL1Jl
YWx0aW1lTWVkaWFTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNv
dXJjZTo6c2NoZWR1bGVEZWZlcnJlZFRhc2spOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3Ry
ZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVh
bS9pb3MvQVZBdWRpb1Nlc3Npb25DYXB0dXJlRGV2aWNlTWFuYWdlci5tbToKKyAgICAgICAgKC1b
V2ViQVZBdWRpb1Nlc3Npb25BdmFpbGFibGVJbnB1dHNMaXN0ZW5lciBpbml0V2l0aENhbGxiYWNr
Ol0pOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Db3JlQXVkaW9DYXB0dXJl
U291cmNlLmg6CisgICAgICAgICogcGxhdGZvcm0vbW9jay9TY3JvbGxBbmltYXRvck1vY2suY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3JNb2NrOjpTY3JvbGxBbmltYXRvck1v
Y2spOgorICAgICAgICAqIHBsYXRmb3JtL21vY2svU2Nyb2xsQW5pbWF0b3JNb2NrLmg6CisgICAg
ICAgICogcGxhdGZvcm0vbmV0d29yay9Db29raWVTdG9yYWdlLmg6CisgICAgICAgICogcGxhdGZv
cm0vbmV0d29yay9OZXR3b3JrU3RhdGVOb3RpZmllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpO
ZXR3b3JrU3RhdGVOb3RpZmllcjo6YWRkTmV0d29ya1N0YXRlQ2hhbmdlTGlzdGVuZXIpOgorICAg
ICAgICAqIHBsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0YXRlTm90aWZpZXIuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246OmZvckVhY2gpOgorICAgICAgICAqIHBsYXRm
b3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmg6CisgICAgICAgICogcGxhdGZvcm0v
bmV0d29yay9jZi9Db29raWVTdG9yYWdlQ0ZOZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29v
a2llQ2hhbmdlQ2FsbGJhY2tNYXApOgorICAgICAgICAoV2ViQ29yZTo6c3RhcnRPYnNlcnZpbmdD
b29raWVDaGFuZ2VzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL1NvY2tldFN0cmVh
bUhhbmRsZUltcGxDRk5ldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjYWxsT25NYWluVGhyZWFk
QW5kV2FpdCk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9tYWMvQ29va2llU3RvcmFnZU1h
Yy5tbToKKyAgICAgICAgKC1bV2ViQ29va2llU3RvcmFnZU9iakNBZGFwdGVyIHN0YXJ0TGlzdGVu
aW5nRm9yQ29va2llQ2hhbmdlTm90aWZpY2F0aW9uc1dpdGhDYWxsYmFjazpdKToKKyAgICAgICAg
KFdlYkNvcmU6OnN0YXJ0T2JzZXJ2aW5nQ29va2llQ2hhbmdlcyk6CisgICAgICAgICogcGxhdGZv
cm0vbmV0d29yay9zb3VwL0Nvb2tpZVN0b3JhZ2VTb3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OnN0YXJ0T2JzZXJ2aW5nQ29va2llQ2hhbmdlcyk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29y
ay9zb3VwL1NvdXBOZXR3b3JrU2Vzc2lvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTb3VwTmV0
d29ya1Nlc3Npb246OmNoZWNrVExTRXJyb3JzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3Jr
L3NvdXAvU291cE5ldHdvcmtTZXNzaW9uLmg6CisgICAgICAgICogcGxhdGZvcm0vc3FsL1NRTGl0
ZURhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmRlc3Ryb3lDb2xsYXRpb25GdW5jdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpjYWxsQ29sbGF0aW9uRnVuY3Rpb24pOgorICAgICAgICAo
V2ViQ29yZTo6U1FMaXRlRGF0YWJhc2U6OnNldENvbGxhdGlvbkZ1bmN0aW9uKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2UuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyTGF5ZXJCYWNraW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRyYXZlcnNlVmlzaWJsZU5v
bkNvbXBvc2l0ZWREZXNjZW5kYW50TGF5ZXJzKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
TGlzdEJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMaXN0Qm94OjpwYWludEl0ZW0p
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMaXN0Qm94Lmg6CisgICAgICAgICogcmVuZGVy
aW5nL2xpbmUvQnJlYWtpbmdDb250ZXh0Lmg6CisgICAgICAgIChXZWJDb3JlOjpCcmVha2luZ0Nv
bnRleHQ6OklubGluZUl0ZXJhdG9ySGlzdG9yeTo6cHVzaCk6CisgICAgICAgIChXZWJDb3JlOjpC
cmVha2luZ0NvbnRleHQ6OklubGluZUl0ZXJhdG9ySGlzdG9yeTo6dXBkYXRlKToKKyAgICAgICAg
KiB3b3JrZXJzL1dvcmtlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXI6Oldvcmtlcik6
CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJSdW5Mb29wLmNwcDoKKwogMjAxNy0wNi0xOSAgTXls
ZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgogCiAgICAgICAgIFtDb2NvYV0g
VGhlIHN5c3RlbSBKYXBhbmVzZSBmb250IGNhbm5vdCBiZSBpdGFsaWNpemVkCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdl
LmNwcAppbmRleCAwMWZhZDM0NTg5ZmUxNDU4MzFkNWY0ZDJiNzRiOWE3NDllN2I5MzAwLi43NGEx
OWU4N2JlMmQ0YWJmOWZhMzA0ZWUyOTU0NzI4ODljYTU1N2I3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAK
QEAgLTI4MSw3ICsyODEsNyBAQCBQYWdlOjpQYWdlKFBhZ2VDb25maWd1cmF0aW9uJiYgcGFnZUNv
bmZpZ3VyYXRpb24pCiAgICAgaWYgKCFhbGxQYWdlcykgewogICAgICAgICBhbGxQYWdlcyA9IG5l
dyBIYXNoU2V0PFBhZ2UqPjsKICAgICAgICAgCi0gICAgICAgIG5ldHdvcmtTdGF0ZU5vdGlmaWVy
KCkuYWRkTmV0d29ya1N0YXRlQ2hhbmdlTGlzdGVuZXIobmV0d29ya1N0YXRlQ2hhbmdlZCk7Cisg
ICAgICAgIG5ldHdvcmtTdGF0ZU5vdGlmaWVyKCkuYWRkTmV0d29ya1N0YXRlQ2hhbmdlTGlzdGVu
ZXIoW10gKGJvb2wgaXNPbkxpbmUpIHsgbmV0d29ya1N0YXRlQ2hhbmdlZChpc09uTGluZSk7IH0p
OwogICAgIH0KIAogICAgIEFTU0VSVCghYWxsUGFnZXMtPmNvbnRhaW5zKHRoaXMpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL1BhZ2VNYWMubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL21hYy9QYWdlTWFjLm1tCmluZGV4IGNmZGQ2ZjVmOTliNTEwNThjNTVmMThhMjMzZDI0
MDUwN2UyNGU4M2MuLjZhMzlkNDY5OWRlMWRjMGM2NjI5ODFlYTM2MDViZWE1M2MyODFkZjUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL1BhZ2VNYWMubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9tYWMvUGFnZU1hYy5tbQpAQCAtNjEsOCArNjEsOCBAQCB2b2lkIFBhZ2U6
OnBsYXRmb3JtSW5pdGlhbGl6ZSgpCiAjaWYgRU5BQkxFKFRSRUVfREVCVUdHSU5HKQogICAgIHN0
YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlRmxhZzsKICAgICBzdGQ6OmNhbGxfb25jZShvbmNlRmxh
ZywgW10gewotICAgICAgICByZWdpc3Rlck5vdGlmeUNhbGxiYWNrKCJjb20uYXBwbGUuV2ViS2l0
LnNob3dSZW5kZXJUcmVlIiwgcHJpbnRSZW5kZXJUcmVlRm9yTGl2ZURvY3VtZW50cyk7Ci0gICAg
ICAgIHJlZ2lzdGVyTm90aWZ5Q2FsbGJhY2soImNvbS5hcHBsZS5XZWJLaXQuc2hvd0xheWVyVHJl
ZSIsIHByaW50TGF5ZXJUcmVlRm9yTGl2ZURvY3VtZW50cyk7CisgICAgICAgIHJlZ2lzdGVyTm90
aWZ5Q2FsbGJhY2soImNvbS5hcHBsZS5XZWJLaXQuc2hvd1JlbmRlclRyZWUiLCBbXSB7IHByaW50
UmVuZGVyVHJlZUZvckxpdmVEb2N1bWVudHMoKTsgfSk7CisgICAgICAgIHJlZ2lzdGVyTm90aWZ5
Q2FsbGJhY2soImNvbS5hcHBsZS5XZWJLaXQuc2hvd0xheWVyVHJlZSIsIFtdIHsgcHJpbnRMYXll
clRyZWVGb3JMaXZlRG9jdW1lbnRzKCk7IH0pOwogICAgIH0pOwogI2VuZGlmCiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9IeXN0ZXJlc2lzQWN0aXZpdHkuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL0h5c3RlcmVzaXNBY3Rpdml0eS5oCmluZGV4IDU5OWUxNzFlYzFh
Y2FkMjBlZDhmMTVkMWI0NWM5ZWFhOWYxY2UwYTAuLjkxMThlYTRlOWZkMDU4Y2UzMTA3NDI5NjEx
M2YzYzNjY2MzMDFlNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0h5c3Rl
cmVzaXNBY3Rpdml0eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0h5c3RlcmVzaXNB
Y3Rpdml0eS5oCkBAIC0zOSw4ICszOSw4IEBAIGVudW0gY2xhc3MgSHlzdGVyZXNpc1N0YXRlIHsK
IAogY2xhc3MgSHlzdGVyZXNpc0FjdGl2aXR5IHsKIHB1YmxpYzoKLSAgICBleHBsaWNpdCBIeXN0
ZXJlc2lzQWN0aXZpdHkoc3RkOjpmdW5jdGlvbjx2b2lkKEh5c3RlcmVzaXNTdGF0ZSk+IGNhbGxi
YWNrID0gW10oSHlzdGVyZXNpc1N0YXRlKSB7IH0sIGRvdWJsZSBoeXN0ZXJlc2lzU2Vjb25kcyA9
IERlZmF1bHRIeXN0ZXJlc2lzU2Vjb25kcykKLSAgICAgICAgOiBtX2NhbGxiYWNrKGNhbGxiYWNr
KQorICAgIGV4cGxpY2l0IEh5c3RlcmVzaXNBY3Rpdml0eShXVEY6OkZ1bmN0aW9uPHZvaWQoSHlz
dGVyZXNpc1N0YXRlKT4mJiBjYWxsYmFjayA9IFtdKEh5c3RlcmVzaXNTdGF0ZSkgeyB9LCBkb3Vi
bGUgaHlzdGVyZXNpc1NlY29uZHMgPSBEZWZhdWx0SHlzdGVyZXNpc1NlY29uZHMpCisgICAgICAg
IDogbV9jYWxsYmFjayhXVEZNb3ZlKGNhbGxiYWNrKSkKICAgICAgICAgLCBtX2h5c3RlcmVzaXNT
ZWNvbmRzKGh5c3RlcmVzaXNTZWNvbmRzKQogICAgICAgICAsIG1fYWN0aXZlKGZhbHNlKQogICAg
ICAgICAsIG1fdGltZXIoKnRoaXMsICZIeXN0ZXJlc2lzQWN0aXZpdHk6Omh5c3RlcmVzaXNUaW1l
ckZpcmVkKQpAQCAtODgsNyArODgsNyBAQCBwcml2YXRlOgogICAgICAgICBtX2NhbGxiYWNrKEh5
c3RlcmVzaXNTdGF0ZTo6U3RvcHBlZCk7CiAgICAgfQogCi0gICAgc3RkOjpmdW5jdGlvbjx2b2lk
KEh5c3RlcmVzaXNTdGF0ZSk+IG1fY2FsbGJhY2s7CisgICAgV1RGOjpGdW5jdGlvbjx2b2lkKEh5
c3RlcmVzaXNTdGF0ZSk+IG1fY2FsbGJhY2s7CiAgICAgZG91YmxlIG1faHlzdGVyZXNpc1NlY29u
ZHM7IC8vIEZJWE1FOiBTaG91bGQgdXNlIFNlY29uZHMuCiAgICAgYm9vbCBtX2FjdGl2ZTsKICAg
ICBUaW1lciBtX3RpbWVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTG9n
Z2luZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2dnaW5nLmNwcAppbmRleCAwZmI1
YmY4MTI5Yzk2NDU0YzRlNGY4MGMwMGRiZmYxN2FhMjM3Yjk0Li44ODg0Mzk5NWM1MzY2OGEzNGU2
YmRjNWViZjQxN2QzMWEzNTJkZTIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9Mb2dnaW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2dnaW5nLmNwcApA
QCAtMzMsNiArMzMsNyBAQAogCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAjaW5jbHVkZSA8bm90aWZ5
Lmg+CisjaW5jbHVkZSA8d3RmL0Jsb2NrUHRyLmg+CiAjZW5kaWYKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewpAQCAtNzksMTMgKzgwLDEzIEBAIHZvaWQgaW5pdGlhbGl6ZUxvZ0NoYW5uZWxzSWZOZWNl
c3NhcnkoKQogfQogCiAjaWZuZGVmIE5ERUJVRwotdm9pZCByZWdpc3Rlck5vdGlmeUNhbGxiYWNr
KGNvbnN0IFN0cmluZyYgbm90aWZ5SUQsIHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiBjYWxsYmFjaykK
K3ZvaWQgcmVnaXN0ZXJOb3RpZnlDYWxsYmFjayhjb25zdCBTdHJpbmcmIG5vdGlmeUlELCBXVEY6
OkZ1bmN0aW9uPHZvaWQoKT4mJiBjYWxsYmFjaykKIHsKICNpZiBQTEFURk9STShDT0NPQSkKICAg
ICBpbnQgdG9rZW47Ci0gICAgbm90aWZ5X3JlZ2lzdGVyX2Rpc3BhdGNoKG5vdGlmeUlELnV0Zjgo
KS5kYXRhKCksICZ0b2tlbiwgZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgXihpbnQpIHsKKyAg
ICBub3RpZnlfcmVnaXN0ZXJfZGlzcGF0Y2gobm90aWZ5SUQudXRmOCgpLmRhdGEoKSwgJnRva2Vu
LCBkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBCbG9ja1B0cjx2b2lkIChpbnQpPjo6ZnJvbUNh
bGxhYmxlKFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSAoaW50KSB7CiAgICAgICAgIGNh
bGxiYWNrKCk7Ci0gICAgfSk7CisgICAgfSkuZ2V0KCkpOwogI2Vsc2UKICAgICBVTlVTRURfUEFS
QU0obm90aWZ5SUQpOwogICAgIFVOVVNFRF9QQVJBTShjYWxsYmFjayk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2dnaW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9Mb2dnaW5nLmgKaW5kZXggODgzYTlmMjIwOTdlZWMxNmRlY2NhNDYzMjI4ODUwNjZiNDY3Yjc0
ZS4uNWFiMDE2MmExNTg0ZDE4NWExYmUzZDUwNmVlOGZhMjhlYWQ3MDM2NyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTG9nZ2luZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0xvZ2dpbmcuaApAQCAtMTAzLDcgKzEwMyw3IEBAIFN0cmluZyBsb2dMZXZlbFN0cmlu
ZygpOwogYm9vbCBpc0xvZ0NoYW5uZWxFbmFibGVkKGNvbnN0IFN0cmluZyYgbmFtZSk7CiBXRUJD
T1JFX0VYUE9SVCB2b2lkIHNldExvZ0NoYW5uZWxUb0FjY3VtdWxhdGUoY29uc3QgU3RyaW5nJiBu
YW1lKTsKICNpZm5kZWYgTkRFQlVHCi12b2lkIHJlZ2lzdGVyTm90aWZ5Q2FsbGJhY2soY29uc3Qg
U3RyaW5nJiBub3RpZnlJRCwgc3RkOjpmdW5jdGlvbjx2b2lkKCk+IGNhbGxiYWNrKTsKK3ZvaWQg
cmVnaXN0ZXJOb3RpZnlDYWxsYmFjayhjb25zdCBTdHJpbmcmIG5vdGlmeUlELCBXVEY6OkZ1bmN0
aW9uPHZvaWQoKT4mJiBjYWxsYmFjayk7CiAjZW5kaWYKIAogI2VuZGlmIC8vICFMT0dfRElTQUJM
RUQgfHwgIVJFTEVBU0VfTE9HX0RJU0FCTEVECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9NYWluVGhyZWFkU2hhcmVkVGltZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vTWFpblRocmVhZFNoYXJlZFRpbWVyLmNwcAppbmRleCBkZGE2ODJlYjg0MTFiYjg2MzIyYjMy
YTFmYTUxYjBiZDJhNTE3Yjg0Li42OGZmMDQzODk3YmJjYTkzMzliZjIzZGM0ZGQxM2M1MjA0Y2Uz
MGUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NYWluVGhyZWFkU2hhcmVk
VGltZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01haW5UaHJlYWRTaGFyZWRU
aW1lci5jcHAKQEAgLTQwLDcgKzQwLDcgQEAgTWFpblRocmVhZFNoYXJlZFRpbWVyOjpNYWluVGhy
ZWFkU2hhcmVkVGltZXIoKQogfQogI2VuZGlmCiAKLXZvaWQgTWFpblRocmVhZFNoYXJlZFRpbWVy
OjpzZXRGaXJlZEZ1bmN0aW9uKHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiYmIGZpcmVkRnVuY3Rpb24p
Cit2b2lkIE1haW5UaHJlYWRTaGFyZWRUaW1lcjo6c2V0RmlyZWRGdW5jdGlvbihXVEY6OkZ1bmN0
aW9uPHZvaWQoKT4mJiBmaXJlZEZ1bmN0aW9uKQogewogICAgIFJFTEVBU0VfQVNTRVJUKCFtX2Zp
cmVkRnVuY3Rpb24gfHwgIWZpcmVkRnVuY3Rpb24pOwogICAgIG1fZmlyZWRGdW5jdGlvbiA9IFdU
Rk1vdmUoZmlyZWRGdW5jdGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9NYWluVGhyZWFkU2hhcmVkVGltZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01haW5U
aHJlYWRTaGFyZWRUaW1lci5oCmluZGV4IDQ5MDczMGYxNDMyZDkzNjBiYjJiZDU4YzBhYWNiNzQy
NDk4NTRlNGIuLjk0YTE5MGQzNzc5OWYyOTQ2Y2Q1NmU5N2Q5MDNmN2M4NWQ1NjRmZjEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01haW5UaHJlYWRTaGFyZWRUaW1lci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01haW5UaHJlYWRTaGFyZWRUaW1lci5oCkBAIC00
MSw3ICs0MSw3IEBAIGNsYXNzIE1haW5UaHJlYWRTaGFyZWRUaW1lciBmaW5hbCA6IHB1YmxpYyBT
aGFyZWRUaW1lciB7CiBwdWJsaWM6CiAgICAgc3RhdGljIE1haW5UaHJlYWRTaGFyZWRUaW1lciYg
c2luZ2xldG9uKCk7CiAKLSAgICB2b2lkIHNldEZpcmVkRnVuY3Rpb24oc3RkOjpmdW5jdGlvbjx2
b2lkKCk+JiYpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0RmlyZWRGdW5jdGlvbihXVEY6OkZ1bmN0
aW9uPHZvaWQoKT4mJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRGaXJlSW50ZXJ2YWwoU2Vjb25k
cykgb3ZlcnJpZGU7CiAgICAgdm9pZCBzdG9wKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBpbnZhbGlk
YXRlKCkgb3ZlcnJpZGU7CkBAIC01Myw3ICs1Myw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAg
TWFpblRocmVhZFNoYXJlZFRpbWVyKCk7CiAKLSAgICBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4gbV9m
aXJlZEZ1bmN0aW9uOworICAgIFdURjo6RnVuY3Rpb248dm9pZCgpPiBtX2ZpcmVkRnVuY3Rpb247
CiAjaWYgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShXUEUpCiAgICAgUnVuTG9vcDo6VGltZXI8
TWFpblRocmVhZFNoYXJlZFRpbWVyPiBtX3RpbWVyOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVBhc3RlYm9hcmQuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1BsYXRmb3JtUGFzdGVib2FyZC5oCmluZGV4IGFmZGExNTVlZjEzNDQzYTkxMWU4
MzA3MGRkYzc3NzFiNWI1MjNkODguLjEzZTU5ODkwODAxOWY2MjRkNWQ1ZGM3NDMzMjU1MGQzZTA2
NjY2YzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtUGFzdGVi
b2FyZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtUGFzdGVib2FyZC5o
CkBAIC0yNiw4ICsyNiw4IEBACiAjaWZuZGVmIFBsYXRmb3JtUGFzdGVib2FyZF9oCiAjZGVmaW5l
IFBsYXRmb3JtUGFzdGVib2FyZF9oCiAKLSNpbmNsdWRlIDxmdW5jdGlvbmFsPgogI2luY2x1ZGUg
PHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+CiAjaW5jbHVkZSA8d3Rm
L1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAjaW5jbHVkZSA8d3Rm
L1ZlY3Rvci5oPgpAQCAtOTMsNyArOTMsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQg
aW50IG51bWJlck9mRmlsZXMoKTsKIAogI2lmIFBMQVRGT1JNKEdUSykKLSAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIHdyaXRlVG9DbGlwYm9hcmQoY29uc3QgU2VsZWN0aW9uRGF0YSYsIHN0ZDo6ZnVu
Y3Rpb248dm9pZCgpPiYmIHByaW1hcnlTZWxlY3Rpb25DbGVhcmVkKTsKKyAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIHdyaXRlVG9DbGlwYm9hcmQoY29uc3QgU2VsZWN0aW9uRGF0YSYsIFdURjo6RnVu
Y3Rpb248dm9pZCgpPiYmIHByaW1hcnlTZWxlY3Rpb25DbGVhcmVkKTsKICAgICBXRUJDT1JFX0VY
UE9SVCBSZWY8U2VsZWN0aW9uRGF0YT4gcmVhZEZyb21DbGlwYm9hcmQoKTsKICNlbmRpZgogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY29wZUd1YXJkLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9TY29wZUd1YXJkLmgKaW5kZXggMjRhYjdmZjU5ZTA0YTk0YTAwNjM5
MTJhYTlmYTlmNTEzNjkwNTg1MS4uZDRjYjNiOWY4ZWIyNDRlMWMxMzhhMDdmNzYyNzgxZGQ2ZDFh
Mjc1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2NvcGVHdWFyZC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njb3BlR3VhcmQuaApAQCAtMjUsNyArMjUsNyBA
QAogI2lmbmRlZiBTY29wZUd1YXJkX2gKICNkZWZpbmUgU2NvcGVHdWFyZF9oCiAKLSNpbmNsdWRl
IDxmdW5jdGlvbmFsPgorI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKQEAgLTM1LDcgKzM1LDcgQEAgcHVibGljOgogICAgIHsKICAgICB9CiAKLSAgICBT
Y29wZUd1YXJkKHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiBmdW5jdGlvbikKKyAgICBTY29wZUd1YXJk
KFdURjo6RnVuY3Rpb248dm9pZCgpPiYmIGZ1bmN0aW9uKQogICAgICAgICA6IG1fZnVuY3Rpb24o
V1RGTW92ZShmdW5jdGlvbikpCiAgICAgewogICAgIH0KQEAgLTQ2LDcgKzQ2LDcgQEAgcHVibGlj
OgogICAgICAgICAgICAgbV9mdW5jdGlvbigpOwogICAgIH0KIAotICAgIHZvaWQgZW5hYmxlKHN0
ZDo6ZnVuY3Rpb248dm9pZCgpPiBmdW5jdGlvbikKKyAgICB2b2lkIGVuYWJsZShXVEY6OkZ1bmN0
aW9uPHZvaWQoKT4mJiBmdW5jdGlvbikKICAgICB7CiAgICAgICAgIG1fZnVuY3Rpb24gPSBXVEZN
b3ZlKGZ1bmN0aW9uKTsKICAgICB9CkBAIC01Nyw3ICs1Nyw3IEBAIHB1YmxpYzoKICAgICB9CiAK
IHByaXZhdGU6Ci0gICAgc3RkOjpmdW5jdGlvbjx2b2lkKCk+IG1fZnVuY3Rpb24geyBudWxscHRy
IH07CisgICAgV1RGOjpGdW5jdGlvbjx2b2lkKCk+IG1fZnVuY3Rpb247CiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3Jv
bGxBbmltYXRpb25TbW9vdGguY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5p
bWF0aW9uU21vb3RoLmNwcAppbmRleCA0YzZiODE0ZjkwZGFlZjBmMTQ5YWM1NDY2ZThjOWM3OGI1
YWE5OTcwLi5lMGZiMTJjNDkxN2E5MDFjZTBjMjQ4Y2QzNDhjYmYwZjVmOWYzMjYwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRpb25TbW9vdGguY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdGlvblNtb290aC5jcHAKQEAg
LTQwLDcgKzQwLDcgQEAgc3RhdGljIGNvbnN0IGRvdWJsZSBmcmFtZVJhdGUgPSA2MDsKIHN0YXRp
YyBjb25zdCBTZWNvbmRzIHRpY2tUaW1lID0gMV9zIC8gZnJhbWVSYXRlOwogc3RhdGljIGNvbnN0
IFNlY29uZHMgbWluaW11bVRpbWVySW50ZXJ2YWwgeyAxX21zIH07CiAKLVNjcm9sbEFuaW1hdGlv
blNtb290aDo6U2Nyb2xsQW5pbWF0aW9uU21vb3RoKFNjcm9sbGFibGVBcmVhJiBzY3JvbGxhYmxl
QXJlYSwgY29uc3QgRmxvYXRQb2ludCYgcG9zaXRpb24sIHN0ZDo6ZnVuY3Rpb248dm9pZCAoRmxv
YXRQb2ludCYmKT4mJiBub3RpZnlQb3NpdGlvbkNoYW5nZWRGdW5jdGlvbikKK1Njcm9sbEFuaW1h
dGlvblNtb290aDo6U2Nyb2xsQW5pbWF0aW9uU21vb3RoKFNjcm9sbGFibGVBcmVhJiBzY3JvbGxh
YmxlQXJlYSwgY29uc3QgRmxvYXRQb2ludCYgcG9zaXRpb24sIFdURjo6RnVuY3Rpb248dm9pZCAo
RmxvYXRQb2ludCYmKT4mJiBub3RpZnlQb3NpdGlvbkNoYW5nZWRGdW5jdGlvbikKICAgICA6IFNj
cm9sbEFuaW1hdGlvbihzY3JvbGxhYmxlQXJlYSkKICAgICAsIG1fbm90aWZ5UG9zaXRpb25DaGFu
Z2VkRnVuY3Rpb24oV1RGTW92ZShub3RpZnlQb3NpdGlvbkNoYW5nZWRGdW5jdGlvbikpCiAgICAg
LCBtX2hvcml6b250YWxEYXRhKHBvc2l0aW9uLngoKSwgc2Nyb2xsYWJsZUFyZWEudmlzaWJsZVdp
ZHRoKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRp
b25TbW9vdGguaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdGlvblNtb290
aC5oCmluZGV4IDI0Mzk2NDhmMTg0ZGM3ZDIyODQ5Y2FlMzk1MWMwYTZkODY3MmRjOTMuLjAyY2M0
ZWUyYmQ3NDNkMDYyOWVhZDA0OGJmNzZjNDgxNjdiZmU4ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdGlvblNtb290aC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdGlvblNtb290aC5oCkBAIC0zOCw3ICszOCw3IEBAIGNs
YXNzIFNjcm9sbGFibGVBcmVhOwogCiBjbGFzcyBTY3JvbGxBbmltYXRpb25TbW9vdGggZmluYWw6
IHB1YmxpYyBTY3JvbGxBbmltYXRpb24gewogcHVibGljOgotICAgIFNjcm9sbEFuaW1hdGlvblNt
b290aChTY3JvbGxhYmxlQXJlYSYsIGNvbnN0IEZsb2F0UG9pbnQmLCBzdGQ6OmZ1bmN0aW9uPHZv
aWQgKEZsb2F0UG9pbnQmJik+JiYgbm90aWZ5UG9zaXRpb25DaGFuZ2VkRnVuY3Rpb24pOworICAg
IFNjcm9sbEFuaW1hdGlvblNtb290aChTY3JvbGxhYmxlQXJlYSYsIGNvbnN0IEZsb2F0UG9pbnQm
LCBXVEY6OkZ1bmN0aW9uPHZvaWQgKEZsb2F0UG9pbnQmJik+JiYgbm90aWZ5UG9zaXRpb25DaGFu
Z2VkRnVuY3Rpb24pOwogICAgIHZpcnR1YWwgflNjcm9sbEFuaW1hdGlvblNtb290aCgpOwogCiAg
ICAgZW51bSBjbGFzcyBDdXJ2ZSB7CkBAIC05Nyw3ICs5Nyw3IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCBhbmltYXRpb25UaW1lckZpcmVkKCk7CiAgICAgYm9vbCBhbmltYXRpb25UaW1lckFjdGl2ZSgp
IGNvbnN0OwogCi0gICAgc3RkOjpmdW5jdGlvbjx2b2lkIChGbG9hdFBvaW50JiYpPiBtX25vdGlm
eVBvc2l0aW9uQ2hhbmdlZEZ1bmN0aW9uOworICAgIFdURjo6RnVuY3Rpb248dm9pZCAoRmxvYXRQ
b2ludCYmKT4gbV9ub3RpZnlQb3NpdGlvbkNoYW5nZWRGdW5jdGlvbjsKIAogICAgIFBlckF4aXNE
YXRhIG1faG9yaXpvbnRhbERhdGE7CiAgICAgUGVyQXhpc0RhdGEgbV92ZXJ0aWNhbERhdGE7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRUaW1lci5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkVGltZXIuaAppbmRleCA3Nzc3ZjY3YzlhYWY3M2UwY2Jm
YTcwODg4NzYxM2I2ZjIzMzI5MjYyLi40NDQ1ZTNiNzJlNzZhOTIxYzBiZThmM2U4Nzc5ZTU1NTM2
MmU3MDQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRUaW1lci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZFRpbWVyLmgKQEAgLTI2LDggKzI2
LDggQEAKICNpZm5kZWYgU2hhcmVkVGltZXJfaAogI2RlZmluZSBTaGFyZWRUaW1lcl9oCiAKLSNp
bmNsdWRlIDxmdW5jdGlvbmFsPgogI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CisjaW5jbHVk
ZSA8d3RmL0Z1bmN0aW9uLmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAjaW5jbHVk
ZSA8d3RmL1NlY29uZHMuaD4KIApAQCAtNDEsNyArNDEsNyBAQCBjbGFzcyBTaGFyZWRUaW1lciB7
CiBwdWJsaWM6CiAgICAgU2hhcmVkVGltZXIoKSA9IGRlZmF1bHQ7CiAgICAgdmlydHVhbCB+U2hh
cmVkVGltZXIoKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgc2V0RmlyZWRGdW5jdGlvbihzdGQ6OmZ1
bmN0aW9uPHZvaWQoKT4mJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRGaXJlZEZ1bmN0aW9u
KFdURjo6RnVuY3Rpb248dm9pZCgpPiYmKSA9IDA7CiAKICAgICAvLyBUaGUgZmlyZSBpbnRlcnZh
bCBpcyBpbiBzZWNvbmRzIHJlbGF0aXZlIHRvIHRoZSBjdXJyZW50IG1vbm90b25pYyBjbG9jayB0
aW1lLgogICAgIHZpcnR1YWwgdm9pZCBzZXRGaXJlSW50ZXJ2YWwoU2Vjb25kcykgPSAwOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Np
b25NYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVk
aWFTZXNzaW9uTWFuYWdlci5jcHAKaW5kZXggYWRkYmM0M2Y4MDVkZDUwMmIzY2Q3OWVlNDY3NTM2
NTZlNTRiNzZhYS4uMDNkNzYxZWJjMTg5NDYyODU3ODkzOGU3ZDFjYWMwYmFjNjAwYjdkOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Np
b25NYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9QbGF0Zm9y
bU1lZGlhU2Vzc2lvbk1hbmFnZXIuY3BwCkBAIC0yNzcsNyArMjc3LDcgQEAgUGxhdGZvcm1NZWRp
YVNlc3Npb24qIFBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6Y3VycmVudFNlc3Npb24oKSBj
b25zdAogICAgIHJldHVybiBtX3Nlc3Npb25zWzBdOwogfQogCi1WZWN0b3I8UGxhdGZvcm1NZWRp
YVNlc3Npb24qPiBQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6OmN1cnJlbnRTZXNzaW9uc01h
dGNoaW5nKHN0ZDo6ZnVuY3Rpb248Ym9vbChjb25zdCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbiAmKT4g
ZmlsdGVyKQorVmVjdG9yPFBsYXRmb3JtTWVkaWFTZXNzaW9uKj4gUGxhdGZvcm1NZWRpYVNlc3Np
b25NYW5hZ2VyOjpjdXJyZW50U2Vzc2lvbnNNYXRjaGluZyhjb25zdCBXVEY6OkZ1bmN0aW9uPGJv
b2woY29uc3QgUGxhdGZvcm1NZWRpYVNlc3Npb24mKT4mIGZpbHRlcikKIHsKICAgICBWZWN0b3I8
UGxhdGZvcm1NZWRpYVNlc3Npb24qPiBtYXRjaGluZ1Nlc3Npb25zOwogICAgIGZvckVhY2hTZXNz
aW9uKFsmXSAoUGxhdGZvcm1NZWRpYVNlc3Npb24mIHNlc3Npb24sIHNpemVfdCkgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Npb25N
YW5hZ2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vz
c2lvbk1hbmFnZXIuaAppbmRleCBmMmUwZjk4NzM3NGJjNTk0NTMyODkxMTgzNWY5MGUxNWMwMDBm
NjgyLi44NDI3NDhmZmI2NDk1ZWMxMzY3NDAzMzI1YTEzNmZmMDZkOWYxYzFlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFn
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vz
c2lvbk1hbmFnZXIuaApAQCAtMTA1LDcgKzEwNSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEN1
cnJlbnRTZXNzaW9uKFBsYXRmb3JtTWVkaWFTZXNzaW9uJik7CiAgICAgUGxhdGZvcm1NZWRpYVNl
c3Npb24qIGN1cnJlbnRTZXNzaW9uKCkgY29uc3Q7CiAKLSAgICBWZWN0b3I8UGxhdGZvcm1NZWRp
YVNlc3Npb24qPiBjdXJyZW50U2Vzc2lvbnNNYXRjaGluZyhzdGQ6OmZ1bmN0aW9uPGJvb2woY29u
c3QgUGxhdGZvcm1NZWRpYVNlc3Npb24mKT4pOworICAgIFZlY3RvcjxQbGF0Zm9ybU1lZGlhU2Vz
c2lvbio+IGN1cnJlbnRTZXNzaW9uc01hdGNoaW5nKGNvbnN0IFdURjo6RnVuY3Rpb248Ym9vbChj
b25zdCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbiYpPiYpOwogCiAgICAgdm9pZCBzZXNzaW9uSXNQbGF5
aW5nVG9XaXJlbGVzc1BsYXliYWNrVGFyZ2V0Q2hhbmdlZChQbGF0Zm9ybU1lZGlhU2Vzc2lvbiYp
OwogICAgIHZvaWQgc2Vzc2lvbkNhblByb2R1Y2VBdWRpb0NoYW5nZWQoUGxhdGZvcm1NZWRpYVNl
c3Npb24mKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL01haW5UaHJl
YWRTaGFyZWRUaW1lckNGLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL01haW5UaHJl
YWRTaGFyZWRUaW1lckNGLmNwcAppbmRleCBmOWU0YmY4MDAwMjRkZWFmZDZlMzAzMjQwNWZhZGM4
NWQwZGM3MDVhLi5mMDE4M2IxNGRiZmMyYzQ4Y2QyMTk2M2JmODQ3Mzk5NmIyMGIxNGZlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9NYWluVGhyZWFkU2hhcmVkVGltZXJD
Ri5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvTWFpblRocmVhZFNoYXJlZFRp
bWVyQ0YuY3BwCkBAIC01Nyw3ICs1Nyw3IEBAIHN0YXRpYyB2b2lkIHNldHVwUG93ZXJPYnNlcnZl
cigpCiAjaWYgUExBVEZPUk0oTUFDKQogICAgIHN0YXRpYyBQb3dlck9ic2VydmVyKiBwb3dlck9i
c2VydmVyOwogICAgIGlmICghcG93ZXJPYnNlcnZlcikKLSAgICAgICAgcG93ZXJPYnNlcnZlciA9
IHN0ZDo6bWFrZV91bmlxdWU8UG93ZXJPYnNlcnZlcj4ocmVzdGFydFNoYXJlZFRpbWVyKS5yZWxl
YXNlKCk7CisgICAgICAgIHBvd2VyT2JzZXJ2ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFBvd2VyT2Jz
ZXJ2ZXI+KFtdIHsgcmVzdGFydFNoYXJlZFRpbWVyKCk7IH0pLnJlbGVhc2UoKTsKICNlbGlmIFBM
QVRGT1JNKElPUykKICAgICBzdGF0aWMgYm9vbCByZWdpc3RlcmVkRm9yQXBwbGljYXRpb25Ob3Rp
ZmljYXRpb24gPSBmYWxzZTsKICAgICBpZiAoIXJlZ2lzdGVyZWRGb3JBcHBsaWNhdGlvbk5vdGlm
aWNhdGlvbikgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvUnVuTG9v
cE9ic2VydmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9SdW5Mb29wT2JzZXJ2ZXIu
aAppbmRleCBjMWI2YTBkOWRjOWI4MjcyNWYwNGI1NWM4MzE4ZTYxYWQxNTY5MDgwLi45NjlhMDM3
ODZiYmIxZjExYzk3NDZmZTBiMDZlMmViZWFhZmVkM2UwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jZi9SdW5Mb29wT2JzZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jZi9SdW5Mb29wT2JzZXJ2ZXIuaApAQCAtMjcsNyArMjcsNyBAQAogI2RlZmluZSBS
dW5Mb29wT2JzZXJ2ZXJfaAogCiAjaW5jbHVkZSA8Q29yZUZvdW5kYXRpb24vQ29yZUZvdW5kYXRp
b24uaD4KLSNpbmNsdWRlIDxmdW5jdGlvbmFsPgorI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgog
I2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4K
IApAQCAtMzYsMTEgKzM2LDExIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFJ1bkxvb3BP
YnNlcnZlciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUnVuTG9vcE9ic2VydmVyKTsgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgdHlwZWRlZiBzdGQ6OmZ1bmN0aW9u
PHZvaWQgKCk+IFJ1bkxvb3BPYnNlcnZlckNhbGxiYWNrOworICAgIHR5cGVkZWYgV1RGOjpGdW5j
dGlvbjx2b2lkICgpPiBSdW5Mb29wT2JzZXJ2ZXJDYWxsYmFjazsKIAotICAgIFJ1bkxvb3BPYnNl
cnZlcihDRkluZGV4IG9yZGVyLCBSdW5Mb29wT2JzZXJ2ZXJDYWxsYmFjayBjYWxsYmFjaykKKyAg
ICBSdW5Mb29wT2JzZXJ2ZXIoQ0ZJbmRleCBvcmRlciwgUnVuTG9vcE9ic2VydmVyQ2FsbGJhY2sm
JiBjYWxsYmFjaykKICAgICAgICAgOiBtX29yZGVyKG9yZGVyKQotICAgICAgICAsIG1fY2FsbGJh
Y2soY2FsbGJhY2spCisgICAgICAgICwgbV9jYWxsYmFjayhXVEZNb3ZlKGNhbGxiYWNrKSkKICAg
ICB7IH0KIAogICAgIFdFQkNPUkVfRVhQT1JUIH5SdW5Mb29wT2JzZXJ2ZXIoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKaW5kZXgg
YzQ3MDc0NjQ4ZGU3ZjRiMDc4Y2EyZjFhNmFmYWVhODQ5ZWU3OTQ5ZS4uNTJmN2RlMjc1M2NjZGI2
Y2M2ZGU1MzlmNmFjMDAyMGUwNjhhY2FmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNs
dWRlICJJbWFnZS5oIgogI2luY2x1ZGUgIkltYWdlT3JpZW50YXRpb24uaCIKICNpbmNsdWRlICJQ
YXR0ZXJuLmgiCisjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+CiAjaW5jbHVkZSA8d3RmL05vbmNv
cHlhYmxlLmg+CiAKICNpZiBVU0UoQ0cpCkBAIC01OTksOCArNjAwLDggQEAgcHJpdmF0ZToKIAog
I2lmIFVTRShESVJFQ1QyRCkKICAgICB2b2lkIHBsYXRmb3JtSW5pdChIREMsIElEMkQxUmVuZGVy
VGFyZ2V0KiosIFJFQ1QsIGJvb2wgaGFzQWxwaGEgPSBmYWxzZSk7Ci0gICAgdm9pZCBkcmF3V2l0
aG91dFNoYWRvdyhjb25zdCBGbG9hdFJlY3QmIGJvdW5kaW5nUmVjdCwgY29uc3Qgc3RkOjpmdW5j
dGlvbjx2b2lkKElEMkQxUmVuZGVyVGFyZ2V0Kik+Jik7Ci0gICAgdm9pZCBkcmF3V2l0aFNoYWRv
dyhjb25zdCBGbG9hdFJlY3QmIGJvdW5kaW5nUmVjdCwgY29uc3Qgc3RkOjpmdW5jdGlvbjx2b2lk
KElEMkQxUmVuZGVyVGFyZ2V0Kik+Jik7CisgICAgdm9pZCBkcmF3V2l0aG91dFNoYWRvdyhjb25z
dCBGbG9hdFJlY3QmIGJvdW5kaW5nUmVjdCwgY29uc3QgV1RGOjpGdW5jdGlvbjx2b2lkKElEMkQx
UmVuZGVyVGFyZ2V0Kik+Jik7CisgICAgdm9pZCBkcmF3V2l0aFNoYWRvdyhjb25zdCBGbG9hdFJl
Y3QmIGJvdW5kaW5nUmVjdCwgY29uc3QgV1RGOjpGdW5jdGlvbjx2b2lkKElEMkQxUmVuZGVyVGFy
Z2V0Kik+Jik7CiAjZW5kaWYKIAogICAgIHZvaWQgc2F2ZVBsYXRmb3JtU3RhdGUoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5jcHAKaW5k
ZXggZjc5ZjQ0ZWUwYjkwYTUyNzIxZDlhMmEwYWQ4OTkwMTAwNWVkMTg1NC4uMTZjNjdmNDllOWZi
YTk0NDI1ZGIxZjI4NmEzODZjMjgyY2JhN2UzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5jcHAKQEAgLTY3Miw3ICs2NzIsNyBAQCB2
b2lkIEdyYXBoaWNzTGF5ZXI6OmFkZFJlcGFpbnRSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVwYWlu
dFJlY3QpCiAgICAgfQogfQogCi12b2lkIEdyYXBoaWNzTGF5ZXI6OnRyYXZlcnNlKEdyYXBoaWNz
TGF5ZXImIGxheWVyLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKEdyYXBoaWNzTGF5ZXImKT4gdHJhdmVy
c2FsRnVuYykKK3ZvaWQgR3JhcGhpY3NMYXllcjo6dHJhdmVyc2UoR3JhcGhpY3NMYXllciYgbGF5
ZXIsIGNvbnN0IFdURjo6RnVuY3Rpb248dm9pZCAoR3JhcGhpY3NMYXllciYpPiYgdHJhdmVyc2Fs
RnVuYykKIHsKICAgICB0cmF2ZXJzYWxGdW5jKGxheWVyKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5oCmluZGV4IGVjZmUzOWM2Njc1NDY0
NzQxOGRiMDM5MjNkYjI1MjM3ODhlM2FjYzUuLjZjMWI3OTZkMjgzMjM2YWQ2OTliMmI5NTExNDYz
ZDlmMTUwZjYxYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzTGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9H
cmFwaGljc0xheWVyLmgKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlICJQbGF0Zm9ybUxheWVy
LmgiCiAjaW5jbHVkZSAiVHJhbnNmb3JtT3BlcmF0aW9ucy5oIgogI2luY2x1ZGUgIldpbmRSdWxl
LmgiCisjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+CiAjaW5jbHVkZSA8d3RmL1R5cGVDYXN0cy5o
PgogCiAjaWYgRU5BQkxFKENTU19DT01QT1NJVElORykKQEAgLTU3MCw3ICs1NzEsNyBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCBib29sIGlzR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIoKSBjb25z
dCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc0Nvb3JkaW5hdGVkR3JhcGhp
Y3NMYXllcigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKLSAgICBzdGF0aWMgdm9pZCB0cmF2
ZXJzZShHcmFwaGljc0xheWVyJiwgc3RkOjpmdW5jdGlvbjx2b2lkIChHcmFwaGljc0xheWVyJik+
KTsKKyAgICBzdGF0aWMgdm9pZCB0cmF2ZXJzZShHcmFwaGljc0xheWVyJiwgY29uc3QgV1RGOjpG
dW5jdGlvbjx2b2lkIChHcmFwaGljc0xheWVyJik+Jik7CiAKIHByb3RlY3RlZDoKICAgICBXRUJD
T1JFX0VYUE9SVCBleHBsaWNpdCBHcmFwaGljc0xheWVyKFR5cGUsIEdyYXBoaWNzTGF5ZXJDbGll
bnQmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlh
UGxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVy
LmNwcAppbmRleCA2ZDJlNWFhM2EwMzcyZGVhMjlkYmMwMzllOWY2MzZiYmRkMzUxMDk2Li5iMGZi
M2RkNzdjNDY0M2ZiOGQyYzJmZDcwZmJiODU5ZTRkNWNjNDdjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCkBAIC0xODgsNyArMTg4LDcg
QEAgc3RydWN0IE1lZGlhUGxheWVyRmFjdG9yeSB7CiAgICAgTWVkaWFFbmdpbmVTdXBwb3J0c0tl
eVN5c3RlbSBzdXBwb3J0c0tleVN5c3RlbTsKIH07CiAKLXN0YXRpYyB2b2lkIGFkZE1lZGlhRW5n
aW5lKENyZWF0ZU1lZGlhRW5naW5lUGxheWVyLCBNZWRpYUVuZ2luZVN1cHBvcnRlZFR5cGVzLCBN
ZWRpYUVuZ2luZVN1cHBvcnRzVHlwZSwgTWVkaWFFbmdpbmVPcmlnaW5zSW5NZWRpYUNhY2hlLCBN
ZWRpYUVuZ2luZUNsZWFyTWVkaWFDYWNoZSwgTWVkaWFFbmdpbmVDbGVhck1lZGlhQ2FjaGVGb3JP
cmlnaW5zLCBNZWRpYUVuZ2luZVN1cHBvcnRzS2V5U3lzdGVtKTsKK3N0YXRpYyB2b2lkIGFkZE1l
ZGlhRW5naW5lKENyZWF0ZU1lZGlhRW5naW5lUGxheWVyJiYsIE1lZGlhRW5naW5lU3VwcG9ydGVk
VHlwZXMsIE1lZGlhRW5naW5lU3VwcG9ydHNUeXBlLCBNZWRpYUVuZ2luZU9yaWdpbnNJbk1lZGlh
Q2FjaGUsIE1lZGlhRW5naW5lQ2xlYXJNZWRpYUNhY2hlLCBNZWRpYUVuZ2luZUNsZWFyTWVkaWFD
YWNoZUZvck9yaWdpbnMsIE1lZGlhRW5naW5lU3VwcG9ydHNLZXlTeXN0ZW0pOwogCiBzdGF0aWMg
TG9jayYgbWVkaWFFbmdpbmVWZWN0b3JMb2NrKCkKIHsKQEAgLTI2OSwxNCArMjY5LDE0IEBAIHN0
YXRpYyBjb25zdCBWZWN0b3I8TWVkaWFQbGF5ZXJGYWN0b3J5PiYgaW5zdGFsbGVkTWVkaWFFbmdp
bmVzKCkKICAgICByZXR1cm4gbXV0YWJsZUluc3RhbGxlZE1lZGlhRW5naW5lc1ZlY3RvcigpOwog
fQogCi1zdGF0aWMgdm9pZCBhZGRNZWRpYUVuZ2luZShDcmVhdGVNZWRpYUVuZ2luZVBsYXllciBj
b25zdHJ1Y3RvciwgTWVkaWFFbmdpbmVTdXBwb3J0ZWRUeXBlcyBnZXRTdXBwb3J0ZWRUeXBlcywg
TWVkaWFFbmdpbmVTdXBwb3J0c1R5cGUgc3VwcG9ydHNUeXBlLAorc3RhdGljIHZvaWQgYWRkTWVk
aWFFbmdpbmUoQ3JlYXRlTWVkaWFFbmdpbmVQbGF5ZXImJiBjb25zdHJ1Y3RvciwgTWVkaWFFbmdp
bmVTdXBwb3J0ZWRUeXBlcyBnZXRTdXBwb3J0ZWRUeXBlcywgTWVkaWFFbmdpbmVTdXBwb3J0c1R5
cGUgc3VwcG9ydHNUeXBlLAogICAgIE1lZGlhRW5naW5lT3JpZ2luc0luTWVkaWFDYWNoZSBvcmln
aW5zSW5NZWRpYUNhY2hlLCBNZWRpYUVuZ2luZUNsZWFyTWVkaWFDYWNoZSBjbGVhck1lZGlhQ2Fj
aGUsIE1lZGlhRW5naW5lQ2xlYXJNZWRpYUNhY2hlRm9yT3JpZ2lucyBjbGVhck1lZGlhQ2FjaGVG
b3JPcmlnaW5zLCBNZWRpYUVuZ2luZVN1cHBvcnRzS2V5U3lzdGVtIHN1cHBvcnRzS2V5U3lzdGVt
KQogewogICAgIEFTU0VSVChjb25zdHJ1Y3Rvcik7CiAgICAgQVNTRVJUKGdldFN1cHBvcnRlZFR5
cGVzKTsKICAgICBBU1NFUlQoc3VwcG9ydHNUeXBlKTsKIAotICAgIG11dGFibGVJbnN0YWxsZWRN
ZWRpYUVuZ2luZXNWZWN0b3IoKS5hcHBlbmQoTWVkaWFQbGF5ZXJGYWN0b3J5IHsgY29uc3RydWN0
b3IsIGdldFN1cHBvcnRlZFR5cGVzLCBzdXBwb3J0c1R5cGUsIG9yaWdpbnNJbk1lZGlhQ2FjaGUs
IGNsZWFyTWVkaWFDYWNoZSwgY2xlYXJNZWRpYUNhY2hlRm9yT3JpZ2lucywgc3VwcG9ydHNLZXlT
eXN0ZW0gfSk7CisgICAgbXV0YWJsZUluc3RhbGxlZE1lZGlhRW5naW5lc1ZlY3RvcigpLmFwcGVu
ZChNZWRpYVBsYXllckZhY3RvcnkgeyBXVEZNb3ZlKGNvbnN0cnVjdG9yKSwgZ2V0U3VwcG9ydGVk
VHlwZXMsIHN1cHBvcnRzVHlwZSwgb3JpZ2luc0luTWVkaWFDYWNoZSwgY2xlYXJNZWRpYUNhY2hl
LCBjbGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5zLCBzdXBwb3J0c0tleVN5c3RlbSB9KTsKIH0KIAog
c3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgYXBwbGljYXRpb25PY3RldFN0cmVhbSgpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaAppbmRleCAxY2Iz
NTA0YjEyMDk5OTA5YmQ0MjNlZjlhYmY3OTVlNmNmNTg1Njg4Li45MmYyNDg1NjhkZWM5YTFiMzI5
OWU2YTA3M2Q4NGVlNGFlNWYzNmRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9NZWRpYVBsYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL01lZGlhUGxheWVyLmgKQEAgLTYyOCw3ICs2MjgsNyBAQCBwcml2YXRlOgogI2VuZGlm
CiB9OwogCi10eXBlZGVmIHN0ZDo6ZnVuY3Rpb248c3RkOjp1bmlxdWVfcHRyPE1lZGlhUGxheWVy
UHJpdmF0ZUludGVyZmFjZT4gKE1lZGlhUGxheWVyKik+IENyZWF0ZU1lZGlhRW5naW5lUGxheWVy
OwordXNpbmcgQ3JlYXRlTWVkaWFFbmdpbmVQbGF5ZXIgPSBXVEY6OkZ1bmN0aW9uPHN0ZDo6dW5p
cXVlX3B0cjxNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2U+IChNZWRpYVBsYXllciopPjsKIHR5
cGVkZWYgdm9pZCAoKk1lZGlhRW5naW5lU3VwcG9ydGVkVHlwZXMpKEhhc2hTZXQ8U3RyaW5nLCBB
U0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+JiB0eXBlcyk7CiB0eXBlZGVmIE1lZGlhUGxheWVyOjpT
dXBwb3J0c1R5cGUgKCpNZWRpYUVuZ2luZVN1cHBvcnRzVHlwZSkoY29uc3QgTWVkaWFFbmdpbmVT
dXBwb3J0UGFyYW1ldGVycyYgcGFyYW1ldGVycyk7CiB0eXBlZGVmIEhhc2hTZXQ8UmVmUHRyPFNl
Y3VyaXR5T3JpZ2luPj4gKCpNZWRpYUVuZ2luZU9yaWdpbnNJbk1lZGlhQ2FjaGUpKGNvbnN0IFN0
cmluZyYgcGF0aCk7CkBAIC02MzYsNyArNjM2LDcgQEAgdHlwZWRlZiB2b2lkICgqTWVkaWFFbmdp
bmVDbGVhck1lZGlhQ2FjaGUpKGNvbnN0IFN0cmluZyYgcGF0aCwgc3RkOjpjaHJvbm86OnN5c3QK
IHR5cGVkZWYgdm9pZCAoKk1lZGlhRW5naW5lQ2xlYXJNZWRpYUNhY2hlRm9yT3JpZ2lucykoY29u
c3QgU3RyaW5nJiBwYXRoLCBjb25zdCBIYXNoU2V0PFJlZlB0cjxTZWN1cml0eU9yaWdpbj4+Jik7
CiB0eXBlZGVmIGJvb2wgKCpNZWRpYUVuZ2luZVN1cHBvcnRzS2V5U3lzdGVtKShjb25zdCBTdHJp
bmcmIGtleVN5c3RlbSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSk7CiAKLXR5cGVkZWYgdm9pZCAo
Kk1lZGlhRW5naW5lUmVnaXN0cmFyKShDcmVhdGVNZWRpYUVuZ2luZVBsYXllciwgTWVkaWFFbmdp
bmVTdXBwb3J0ZWRUeXBlcywgTWVkaWFFbmdpbmVTdXBwb3J0c1R5cGUsCit0eXBlZGVmIHZvaWQg
KCpNZWRpYUVuZ2luZVJlZ2lzdHJhcikoQ3JlYXRlTWVkaWFFbmdpbmVQbGF5ZXImJiwgTWVkaWFF
bmdpbmVTdXBwb3J0ZWRUeXBlcywgTWVkaWFFbmdpbmVTdXBwb3J0c1R5cGUsCiAgICAgTWVkaWFF
bmdpbmVPcmlnaW5zSW5NZWRpYUNhY2hlLCBNZWRpYUVuZ2luZUNsZWFyTWVkaWFDYWNoZSwgTWVk
aWFFbmdpbmVDbGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5zLCBNZWRpYUVuZ2luZVN1cHBvcnRzS2V5
U3lzdGVtKTsKIHR5cGVkZWYgdm9pZCAoKk1lZGlhRW5naW5lUmVnaXN0ZXIpKE1lZGlhRW5naW5l
UmVnaXN0cmFyKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvUGF0aC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0aC5oCmluZGV4
IDI4MzFjZmUzM2U3YzA2YTg4ZDNjNmI4M2M5MTI2Yjg1MDJhMzRlZmMuLjdjYWJhNGNiNmU3ODkz
ODMzZGQ4YjZhYzE0Y2ZlYzlmMWMyOTk3MWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL1BhdGguaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9QYXRoLmgKQEAgLTMwLDggKzMwLDggQEAKIAogI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgog
I2luY2x1ZGUgIldpbmRSdWxlLmgiCi0jaW5jbHVkZSA8ZnVuY3Rpb25hbD4KICNpbmNsdWRlIDx3
dGYvRmFzdE1hbGxvYy5oPgorI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgogI2luY2x1ZGUgPHd0
Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCkBAIC0xMDEsNyArMTAxLDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBGbG9hdFBvaW50KiBwb2ludHM7CiAgICAg
fTsKIAotICAgIHR5cGVkZWYgc3RkOjpmdW5jdGlvbjx2b2lkIChjb25zdCBQYXRoRWxlbWVudCYp
PiBQYXRoQXBwbGllckZ1bmN0aW9uOworICAgIHVzaW5nIFBhdGhBcHBsaWVyRnVuY3Rpb24gPSBX
VEY6OkZ1bmN0aW9uPHZvaWQgKGNvbnN0IFBhdGhFbGVtZW50Jik+OwogCiAgICAgY2xhc3MgUGF0
aCB7CiAgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmNwcAppbmRleCBiMGMyNmFm
NTMzZjQyMzdjNDc2NDk2MTViNGVkNjQxYjQyYzBkZThkLi41ZGI4NzczZjVhNWY5M2YzMTE5M2I5
NTMwZGI0Y2UzZGJhM2NiNDlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmNwcApAQCAtNjU5LDcgKzY1OSw3IEBAIHZvaWQgTWVk
aWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uOjpzZWVrQ29tcGxldGVkKGJvb2wgZmluaXNoZWQp
CiAKICAgICBtX3NlZWtpbmcgPSBmYWxzZTsKIAotICAgIHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiBw
ZW5kaW5nU2VlazsKKyAgICBXVEY6OkZ1bmN0aW9uPHZvaWQoKT4gcGVuZGluZ1NlZWs7CiAgICAg
c3RkOjpzd2FwKHBlbmRpbmdTZWVrLCBtX3BlbmRpbmdTZWVrKTsKIAogICAgIGlmIChwZW5kaW5n
U2VlaykgewpAQCAtNzkwLDE2ICs3OTAsMTcgQEAgc3RhdGljIGNvbnN0IGNoYXIqIG5vdGlmaWNh
dGlvbk5hbWUoTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uOjpOb3RpZmljYXRpb24KICNl
bmRpZiAvLyAhTE9HX0RJU0FCTEVECiAgICAgCiAKLXZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uOjpzY2hlZHVsZU1haW5UaHJlYWROb3RpZmljYXRpb24oTm90aWZpY2F0aW9uIG5v
dGlmaWNhdGlvbikKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uOjpzY2hlZHVs
ZU1haW5UaHJlYWROb3RpZmljYXRpb24oTm90aWZpY2F0aW9uJiYgbm90aWZpY2F0aW9uKQogewot
ICAgIGlmIChub3RpZmljYXRpb24udHlwZSgpICE9IE5vdGlmaWNhdGlvbjo6RnVuY3Rpb25UeXBl
KQorICAgIGF1dG8gbm90aWZpY2F0aW9uVHlwZSA9IG5vdGlmaWNhdGlvbi50eXBlKCk7CisgICAg
aWYgKG5vdGlmaWNhdGlvblR5cGUgIT0gTm90aWZpY2F0aW9uOjpGdW5jdGlvblR5cGUpCiAgICAg
ICAgIExPRyhNZWRpYSwgIk1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbjo6c2NoZWR1bGVN
YWluVGhyZWFkTm90aWZpY2F0aW9uKCVwKSAtIG5vdGlmaWNhdGlvbiAlcyIsIHRoaXMsIG5vdGlm
aWNhdGlvbk5hbWUobm90aWZpY2F0aW9uKSk7CiAKICAgICBtX3F1ZXVlTXV0ZXgubG9jaygpOwog
CiAgICAgLy8gSXQgaXMgaW1wb3J0YW50IHRvIGFsd2F5cyBwcm9jZXNzIHRoZSBwcm9wZXJ0aWVz
IGluIHRoZSBvcmRlciB0aGF0IHdlIGFyZSBub3RpZmllZCwKICAgICAvLyBzbyBhbHdheXMgZ28g
dGhyb3VnaCB0aGUgcXVldWUgYmVjYXVzZSBub3RpZmljYXRpb25zIGhhcHBlbiBvbiBkaWZmZXJl
bnQgdGhyZWFkcy4KLSAgICBtX3F1ZXVlZE5vdGlmaWNhdGlvbnMuYXBwZW5kKG5vdGlmaWNhdGlv
bik7CisgICAgbV9xdWV1ZWROb3RpZmljYXRpb25zLmFwcGVuZChXVEZNb3ZlKG5vdGlmaWNhdGlv
bikpOwogCiAjaWYgT1MoV0lORE9XUykKICAgICBib29sIGRlbGF5RGlzcGF0Y2ggPSB0cnVlOwpA
QCAtODIwLDcgKzgyMSw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uOjpz
Y2hlZHVsZU1haW5UaHJlYWROb3RpZmljYXRpb24oTm90aWZpY2F0aW9uCiAgICAgbV9xdWV1ZU11
dGV4LnVubG9jaygpOwogCiAgICAgaWYgKGRlbGF5RGlzcGF0Y2gpIHsKLSAgICAgICAgaWYgKG5v
dGlmaWNhdGlvbi50eXBlKCkgIT0gTm90aWZpY2F0aW9uOjpGdW5jdGlvblR5cGUpCisgICAgICAg
IGlmIChub3RpZmljYXRpb25UeXBlICE9IE5vdGlmaWNhdGlvbjo6RnVuY3Rpb25UeXBlKQogICAg
ICAgICAgICAgTE9HKE1lZGlhLCAiTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uOjpzY2hl
ZHVsZU1haW5UaHJlYWROb3RpZmljYXRpb24oJXApIC0gZWFybHkgcmV0dXJuIiwgdGhpcyk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CkBAIC04MzIsNyArODMzLDcgQEAgdm9pZCBNZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb246OmRpc3BhdGNoTm90aWZpY2F0aW9uKCkKIHsKICAgICBBU1NF
UlQoaXNNYWluVGhyZWFkKCkpOwogCi0gICAgTm90aWZpY2F0aW9uIG5vdGlmaWNhdGlvbiA9IE5v
dGlmaWNhdGlvbigpOworICAgIE5vdGlmaWNhdGlvbiBub3RpZmljYXRpb247CiAgICAgewogICAg
ICAgICBMb2NrSG9sZGVyIGxvY2sobV9xdWV1ZU11dGV4KTsKICAgICAgICAgCkBAIC04NDEsOCAr
ODQyLDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb246OmRpc3BhdGNoTm90
aWZpY2F0aW9uKCkKICAgICAgICAgCiAgICAgICAgIGlmICghbV9kZWxheUNhbGxiYWNrcykgewog
ICAgICAgICAgICAgLy8gT25seSBkaXNwYXRjaCBvbmUgbm90aWZpY2F0aW9uIGNhbGxiYWNrIHBl
ciBpbnZvY2F0aW9uIGJlY2F1c2UgdGhleSBjYW4gY2F1c2UgcmVjdXJzaW9uLgotICAgICAgICAg
ICAgbm90aWZpY2F0aW9uID0gbV9xdWV1ZWROb3RpZmljYXRpb25zLmZpcnN0KCk7Ci0gICAgICAg
ICAgICBtX3F1ZXVlZE5vdGlmaWNhdGlvbnMucmVtb3ZlKDApOworICAgICAgICAgICAgbm90aWZp
Y2F0aW9uID0gbV9xdWV1ZWROb3RpZmljYXRpb25zLnRha2VGaXJzdCgpOwogICAgICAgICB9CiAg
ICAgICAgIAogICAgICAgICBpZiAoIW1fcXVldWVkTm90aWZpY2F0aW9ucy5pc0VtcHR5KCkgJiYg
IW1fbWFpblRocmVhZENhbGxQZW5kaW5nKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVk
aWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmgKaW5kZXggMGFkMjk4YjA1ZmMwYTMwNzA1YjFl
YjgwMzE2MDhlYjQ5ZjhmMmYzMS4uMDg4YmE0NzA1NzhhN2NkMzlmMWQ5MDE3Y2Y1OTg0MjA1N2Zm
ODY0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb24uaApAQCAtMzIsNyArMzIsOCBAQAogI2luY2x1ZGUgIkluYmFuZFRleHRUcmFja1By
aXZhdGVBVkYuaCIKICNpbmNsdWRlICJNZWRpYVBsYXllclByaXZhdGUuaCIKICNpbmNsdWRlICJU
aW1lci5oIgotI2luY2x1ZGUgPGZ1bmN0aW9uYWw+CisjaW5jbHVkZSA8d3RmL0RlcXVlLmg+Cisj
aW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNs
dWRlIDx3dGYvTG9jay5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KQEAgLTExMywxMCAr
MTE0LDEwIEBAIHB1YmxpYzoKICAgICAgICAgewogICAgICAgICB9CiAKLSAgICAgICAgTm90aWZp
Y2F0aW9uKHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4gZnVuY3Rpb24pCisgICAgICAgIE5vdGlmaWNh
dGlvbihXVEY6OkZ1bmN0aW9uPHZvaWQgKCk+JiYgZnVuY3Rpb24pCiAgICAgICAgICAgICA6IG1f
dHlwZShGdW5jdGlvblR5cGUpCiAgICAgICAgICAgICAsIG1fZmluaXNoZWQoZmFsc2UpCi0gICAg
ICAgICAgICAsIG1fZnVuY3Rpb24oZnVuY3Rpb24pCisgICAgICAgICAgICAsIG1fZnVuY3Rpb24o
V1RGTW92ZShmdW5jdGlvbikpCiAgICAgICAgIHsKICAgICAgICAgfQogICAgICAgICAKQEAgLTEy
NCwxNiArMTI1LDE2IEBAIHB1YmxpYzoKICAgICAgICAgYm9vbCBpc1ZhbGlkKCkgeyByZXR1cm4g
bV90eXBlICE9IE5vbmU7IH0KICAgICAgICAgTWVkaWFUaW1lIHRpbWUoKSB7IHJldHVybiBtX3Rp
bWU7IH0KICAgICAgICAgYm9vbCBmaW5pc2hlZCgpIHsgcmV0dXJuIG1fZmluaXNoZWQ7IH0KLSAg
ICAgICAgc3RkOjpmdW5jdGlvbjx2b2lkICgpPiYgZnVuY3Rpb24oKSB7IHJldHVybiBtX2Z1bmN0
aW9uOyB9CisgICAgICAgIFdURjo6RnVuY3Rpb248dm9pZCAoKT4mIGZ1bmN0aW9uKCkgeyByZXR1
cm4gbV9mdW5jdGlvbjsgfQogICAgICAgICAKICAgICBwcml2YXRlOgogICAgICAgICBUeXBlIG1f
dHlwZTsKICAgICAgICAgTWVkaWFUaW1lIG1fdGltZTsKICAgICAgICAgYm9vbCBtX2ZpbmlzaGVk
OwotICAgICAgICBzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+IG1fZnVuY3Rpb247CisgICAgICAgIFdU
Rjo6RnVuY3Rpb248dm9pZCAoKT4gbV9mdW5jdGlvbjsKICAgICB9OwogCi0gICAgdm9pZCBzY2hl
ZHVsZU1haW5UaHJlYWROb3RpZmljYXRpb24oTm90aWZpY2F0aW9uKTsKKyAgICB2b2lkIHNjaGVk
dWxlTWFpblRocmVhZE5vdGlmaWNhdGlvbihOb3RpZmljYXRpb24mJik7CiAgICAgdm9pZCBzY2hl
ZHVsZU1haW5UaHJlYWROb3RpZmljYXRpb24oTm90aWZpY2F0aW9uOjpUeXBlLCBjb25zdCBNZWRp
YVRpbWUmID0gTWVkaWFUaW1lOjp6ZXJvVGltZSgpKTsKICAgICB2b2lkIHNjaGVkdWxlTWFpblRo
cmVhZE5vdGlmaWNhdGlvbihOb3RpZmljYXRpb246OlR5cGUsIGJvb2wgY29tcGxldGVkKTsKICAg
ICB2b2lkIGRpc3BhdGNoTm90aWZpY2F0aW9uKCk7CkBAIC0zMTcsOSArMzE4LDkgQEAgcHJpdmF0
ZToKIAogICAgIFdlYWtQdHJGYWN0b3J5PE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbj4g
bV93ZWFrUHRyRmFjdG9yeTsKIAotICAgIHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiBtX3BlbmRpbmdT
ZWVrOworICAgIFdURjo6RnVuY3Rpb248dm9pZCgpPiBtX3BlbmRpbmdTZWVrOwogCi0gICAgVmVj
dG9yPE5vdGlmaWNhdGlvbj4gbV9xdWV1ZWROb3RpZmljYXRpb25zOworICAgIERlcXVlPE5vdGlm
aWNhdGlvbj4gbV9xdWV1ZWROb3RpZmljYXRpb25zOwogICAgIG11dGFibGUgTG9jayBtX3F1ZXVl
TXV0ZXg7CiAKICAgICBtdXRhYmxlIHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybVRpbWVSYW5nZXM+
IG1fY2FjaGVkTG9hZGVkVGltZVJhbmdlczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCmluZGV4IDRm
ZmRhNWU5ZjMyZmE1MGExZWZhYjMyY2Y1MmJjY2NkZjE3N2EzMzMuLjZmZGY2MWRmNDk0MDg2ZWY1
MGU1ODU1NGU3ZDlkZGUzYjAxMzIwZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQpAQCAtMzM3
NSw3ICszMzc1LDcgQEAgLSAodm9pZClvYnNlcnZlVmFsdWVGb3JLZXlQYXRoOmtleVBhdGggb2ZP
YmplY3Q6KGlkKW9iamVjdCBjaGFuZ2U6KE5TRGljdGlvbmFyeQogICAgIH0KICNlbmRpZgogCi0g
ICAgc3RkOjpmdW5jdGlvbjx2b2lkICgpPiBmdW5jdGlvbjsKKyAgICBXVEY6OkZ1bmN0aW9uPHZv
aWQgKCk+IGZ1bmN0aW9uOwogCiAgICAgaWYgKGNvbnRleHQgPT0gTWVkaWFQbGF5ZXJBVkZvdW5k
YXRpb25PYnNlcnZhdGlvbkNvbnRleHRBVlBsYXllckxheWVyKSB7CiAgICAgICAgIGlmIChba2V5
UGF0aCBpc0VxdWFsVG9TdHJpbmc6QCJyZWFkeUZvckRpc3BsYXkiXSkKQEAgLTM0NTAsNyArMzQ1
MCw3IEBAIC0gKHZvaWQpb2JzZXJ2ZVZhbHVlRm9yS2V5UGF0aDprZXlQYXRoIG9mT2JqZWN0Oihp
ZClvYmplY3QgY2hhbmdlOihOU0RpY3Rpb25hcnkKICAgICAgICAgcmV0dXJuOwogCiAgICAgYXV0
byB3ZWFrVGhpcyA9IG1fY2FsbGJhY2stPmNyZWF0ZVdlYWtQdHIoKTsKLSAgICBtX2NhbGxiYWNr
LT5zY2hlZHVsZU1haW5UaHJlYWROb3RpZmljYXRpb24oTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uOjpOb3RpZmljYXRpb24oW3dlYWtUaGlzLCBmdW5jdGlvbl17CisgICAgbV9jYWxsYmFj
ay0+c2NoZWR1bGVNYWluVGhyZWFkTm90aWZpY2F0aW9uKE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbjo6Tm90aWZpY2F0aW9uKFt3ZWFrVGhpcywgZnVuY3Rpb24gPSBXVEZNb3ZlKGZ1bmN0
aW9uKV17CiAgICAgICAgIC8vIHdlYWtUaGlzIGFuZCBmdW5jdGlvbiBib3RoIHJlZmVyIHRvIHRo
ZSBzYW1lIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMgaW5zdGFuY2UuIElmIHRo
ZSBXZWFrUHRyIGhhcwogICAgICAgICAvLyBiZWVuIGNsZWFyZWQsIHRoZSB1bmRlcmx5aW5nIG9i
amVjdCBoYXMgYmVlbiBkZXN0cm95ZWQsIGFuZCBpdCBpcyB1bnNhZmUgdG8gY2FsbCBmdW5jdGlv
bigpLgogICAgICAgICBpZiAoIXdlYWtUaGlzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVk
aWFTdHJlYW1BVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tCmlu
ZGV4IDM4Y2FkZTk0OWE4ZTU1N2MzNDgzNzc5YWQ1NWZiNGUwZDNmMTA3MjYuLjk1YWI0NWNjZWQy
MDE2Yjg5YjAxYzRmODg2ZmRmNmVhOTg2YmJmYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1l
ZGlhU3RyZWFtQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMu
bW0KQEAgLTQxLDYgKzQxLDcgQEAKICNpbXBvcnQgPFF1YXJ0ekNvcmUvQ0FMYXllci5oPgogI2lt
cG9ydCA8UXVhcnR6Q29yZS9DQVRyYW5zYWN0aW9uLmg+CiAjaW1wb3J0IDxvYmpjX3J1bnRpbWUu
aD4KKyNpbXBvcnQgPHd0Zi9GdW5jdGlvbi5oPgogI2ltcG9ydCA8d3RmL01haW5UaHJlYWQuaD4K
ICNpbXBvcnQgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCkBAIC0zMjUsNyArMzI2LDcgQEAgQ0dB
ZmZpbmVUcmFuc2Zvcm0gTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjp2aWRl
b1RyYW5zZm9ybWF0aW9uTWF0cmkKICAgICByZXR1cm4gbV92aWRlb1RyYW5zZm9ybTsKIH0KIAot
c3RhdGljIHZvaWQgcnVuV2l0aG91dEFuaW1hdGlvbnMoc3RkOjpmdW5jdGlvbjx2b2lkKCk+IGZ1
bmN0aW9uKQorc3RhdGljIHZvaWQgcnVuV2l0aG91dEFuaW1hdGlvbnMoY29uc3QgV1RGOjpGdW5j
dGlvbjx2b2lkKCk+JiBmdW5jdGlvbikKIHsKICAgICBbQ0FUcmFuc2FjdGlvbiBiZWdpbl07CiAg
ICAgW0NBVHJhbnNhY3Rpb24gc2V0QW5pbWF0aW9uRHVyYXRpb246MF07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9JT1N1cmZhY2UuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0lPU3VyZmFjZS5oCmluZGV4IDIxNjk5
ZjM2ZmRjMDA1MTlkMGE5Mzk0ZjUzZDJkNWUwN2M2Y2YxZTUuLjAwYWQyY2IzNDM5ZmJiOWIyNmIx
MWFiMWI2ZmQzN2UzZjMyNjAwMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL0lPU3VyZmFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL0lPU3VyZmFjZS5oCkBAIC05Niw3ICs5Niw3IEBAIHB1YmxpYzoKIAog
I2lmIFBMQVRGT1JNKElPUykKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgYm9vbCBhbGxvd0Nv
bnZlcnNpb25Gcm9tRm9ybWF0VG9Gb3JtYXQoRm9ybWF0LCBGb3JtYXQpOwotICAgIFdFQkNPUkVf
RVhQT1JUIHN0YXRpYyB2b2lkIGNvbnZlcnRUb0Zvcm1hdChzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29y
ZTo6SU9TdXJmYWNlPiYmIGluU3VyZmFjZSwgRm9ybWF0LCBzdGQ6OmZ1bmN0aW9uPHZvaWQoc3Rk
Ojp1bmlxdWVfcHRyPFdlYkNvcmU6OklPU3VyZmFjZT4pPik7CisgICAgV0VCQ09SRV9FWFBPUlQg
c3RhdGljIHZvaWQgY29udmVydFRvRm9ybWF0KHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpJT1N1
cmZhY2U+JiYgaW5TdXJmYWNlLCBGb3JtYXQsIFdURjo6RnVuY3Rpb248dm9pZChzdGQ6OnVuaXF1
ZV9wdHI8V2ViQ29yZTo6SU9TdXJmYWNlPik+JiYpOwogI2VuZGlmCiAKIHByaXZhdGU6CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9JT1N1cmZhY2Uu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9JT1N1cmZhY2UubW0K
aW5kZXggNzhjNzgwMjM4ODE2M2M1ZGZkNzUyYzY5OTJiMzNkYTg3ZTE4M2NjNi4uNDlkMDQ2ZTlj
ZDI1YWM2NDQzOTU0ZDM2ZmViZDIzOTA4YzZkMzc4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSU9TdXJmYWNlLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0lPU3VyZmFjZS5tbQpAQCAtMzgwLDcgKzM4MCw3
IEBAIGJvb2wgV2ViQ29yZTo6SU9TdXJmYWNlOjphbGxvd0NvbnZlcnNpb25Gcm9tRm9ybWF0VG9G
b3JtYXQoRm9ybWF0IHNvdXJjZUZvcm1hdCwKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBX
ZWJDb3JlOjpJT1N1cmZhY2U6OmNvbnZlcnRUb0Zvcm1hdChzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29y
ZTo6SU9TdXJmYWNlPiYmIGluU3VyZmFjZSwgRm9ybWF0IGZvcm1hdCwgc3RkOjpmdW5jdGlvbjx2
b2lkKHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpJT1N1cmZhY2U+KT4gY2FsbGJhY2spCit2b2lk
IFdlYkNvcmU6OklPU3VyZmFjZTo6Y29udmVydFRvRm9ybWF0KHN0ZDo6dW5pcXVlX3B0cjxXZWJD
b3JlOjpJT1N1cmZhY2U+JiYgaW5TdXJmYWNlLCBGb3JtYXQgZm9ybWF0LCBXVEY6OkZ1bmN0aW9u
PHZvaWQoc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OklPU3VyZmFjZT4pPiYmIGNhbGxiYWNrKQog
ewogICAgIHN0YXRpYyBJT1N1cmZhY2VBY2NlbGVyYXRvclJlZiBhY2NlbGVyYXRvcjsKICAgICBp
ZiAoIWFjY2VsZXJhdG9yKSB7CkBAIC00MDMsMTAgKzQwMywxMCBAQCB2b2lkIFdlYkNvcmU6OklP
U3VyZmFjZTo6Y29udmVydFRvRm9ybWF0KHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpJT1N1cmZh
Y2U+JiYgaQogCiAgICAgSU9TdXJmYWNlUmVmIGRlc3RpbmF0aW9uSU9TdXJmYWNlUmVmID0gZGVz
dGluYXRpb25TdXJmYWNlLT5zdXJmYWNlKCk7CiAgICAgSU9TdXJmYWNlQWNjZWxlcmF0b3JDb21w
bGV0aW9uIGNvbXBsZXRpb247Ci0gICAgY29tcGxldGlvbi5jb21wbGV0aW9uUmVmQ29uID0gbmV3
IHN0ZDo6ZnVuY3Rpb248dm9pZChzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6SU9TdXJmYWNlPik+
IChXVEZNb3ZlKGNhbGxiYWNrKSk7CisgICAgY29tcGxldGlvbi5jb21wbGV0aW9uUmVmQ29uID0g
bmV3IFdURjo6RnVuY3Rpb248dm9pZChzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6SU9TdXJmYWNl
Pik+IChXVEZNb3ZlKGNhbGxiYWNrKSk7CiAgICAgY29tcGxldGlvbi5jb21wbGV0aW9uUmVmQ29u
MiA9IGRlc3RpbmF0aW9uU3VyZmFjZS5yZWxlYXNlKCk7CiAgICAgY29tcGxldGlvbi5jb21wbGV0
aW9uQ2FsbGJhY2sgPSBbXSh2b2lkICpjb21wbGV0aW9uUmVmQ29uLCBJT1JldHVybiwgdm9pZCAq
IGNvbXBsZXRpb25SZWZDb24yKSB7Ci0gICAgICAgIGF1dG8qIGNhbGxiYWNrID0gc3RhdGljX2Nh
c3Q8c3RkOjpmdW5jdGlvbjx2b2lkKHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpJT1N1cmZhY2U+
KT4qPihjb21wbGV0aW9uUmVmQ29uKTsKKyAgICAgICAgYXV0byogY2FsbGJhY2sgPSBzdGF0aWNf
Y2FzdDxXVEY6OkZ1bmN0aW9uPHZvaWQoc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OklPU3VyZmFj
ZT4pPio+KGNvbXBsZXRpb25SZWZDb24pOwogICAgICAgICBhdXRvIGRlc3RpbmF0aW9uU3VyZmFj
ZSA9IHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpJT1N1cmZhY2U+KHN0YXRpY19jYXN0PFdlYkNv
cmU6OklPU3VyZmFjZSo+KGNvbXBsZXRpb25SZWZDb24yKSk7CiAgICAgICAgIAogICAgICAgICAo
KmNhbGxiYWNrKShXVEZNb3ZlKGRlc3RpbmF0aW9uU3VyZmFjZSkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01haW5UaHJlYWROb3RpZmll
ci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01haW5UaHJl
YWROb3RpZmllci5oCmluZGV4IGYxNDA1MGRkMmVmNDQ2OWMwMTgwOTJhNWQ3ZDg3MmUwNmMxZTgx
MDAuLjM3NTJkYzI3NWU3MTk1NzhlYmYxOTU5NmY0ZmE2YmYyZmM4OGY5YjUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NYWluVGhyZWFkTm90
aWZpZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
TWFpblRocmVhZE5vdGlmaWVyLmgKQEAgLTM2LDcgKzM2LDcgQEAgcHVibGljOgogICAgIH0KIAog
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIEY+Ci0gICAgdm9pZCBub3RpZnkoVCBub3RpZmljYXRpb25U
eXBlLCBjb25zdCBGJiBjYWxsYmFja0Z1bmN0b3IpCisgICAgdm9pZCBub3RpZnkoVCBub3RpZmlj
YXRpb25UeXBlLCBGJiYgY2FsbGJhY2tGdW5jdG9yKQogICAgIHsKICAgICAgICAgQVNTRVJUKG1f
aXNWYWxpZC5sb2FkKCkpOwogICAgICAgICBpZiAoaXNNYWluVGhyZWFkKCkpIHsKQEAgLTQ4LDcg
KzQ4LDcgQEAgcHVibGljOgogICAgICAgICBpZiAoIWFkZFBlbmRpbmdOb3RpZmljYXRpb24obm90
aWZpY2F0aW9uVHlwZSkpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgUnVuTG9vcDo6
bWFpbigpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIG5v
dGlmaWNhdGlvblR5cGUsIGNhbGxiYWNrID0gc3RkOjpmdW5jdGlvbjx2b2lkKCk+KGNhbGxiYWNr
RnVuY3RvcildIHsKKyAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFt0aGlzLCBwcm90
ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIG5vdGlmaWNhdGlvblR5cGUsIGNhbGxiYWNrID0g
V1RGOjpGdW5jdGlvbjx2b2lkKCk+KFdURk1vdmUoY2FsbGJhY2tGdW5jdG9yKSldIHsKICAgICAg
ICAgICAgIGlmICghbV9pc1ZhbGlkLmxvYWQoKSkKICAgICAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgICAgICBpZiAocmVtb3ZlUGVuZGluZ05vdGlmaWNhdGlvbihub3RpZmljYXRpb25UeXBl
KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9NZWRpYVBsYXllclJlcXVlc3RJbnN0YWxsTWlzc2luZ1BsdWdpbnNDYWxsYmFjay5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUmVxdWVz
dEluc3RhbGxNaXNzaW5nUGx1Z2luc0NhbGxiYWNrLmgKaW5kZXggOTVlZDJkYTYzM2YxMmNhZDQ4
ZTNmZTAwMjRjMTFjMTY3ZDY3NDUzZS4uMDU4N2QwZGY5MmIwNjgyYWYyNmMwOGQ4ZWVjZDZmZDQ4
ZjJkNjk1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL01lZGlhUGxheWVyUmVxdWVzdEluc3RhbGxNaXNzaW5nUGx1Z2luc0NhbGxiYWNrLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxh
eWVyUmVxdWVzdEluc3RhbGxNaXNzaW5nUGx1Z2luc0NhbGxiYWNrLmgKQEAgLTIxLDYgKzIxLDcg
QEAKICNkZWZpbmUgTWVkaWFQbGF5ZXJSZXF1ZXN0SW5zdGFsbE1pc3NpbmdQbHVnaW5zQ2FsbGJh
Y2tfaAogCiAjaWYgRU5BQkxFKFZJREVPKSAmJiBVU0UoR1NUUkVBTUVSKQorI2luY2x1ZGUgPHd0
Zi9GdW5jdGlvbi5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKQEAgLTI4LDcgKzI5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgTWVk
aWFQbGF5ZXJSZXF1ZXN0SW5zdGFsbE1pc3NpbmdQbHVnaW5zQ2FsbGJhY2sgOiBwdWJsaWMgUmVm
Q291bnRlZDxNZWRpYVBsYXllclJlcXVlc3RJbnN0YWxsTWlzc2luZ1BsdWdpbnNDYWxsYmFjaz4g
ewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEKCk7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJl
ZjxNZWRpYVBsYXllclJlcXVlc3RJbnN0YWxsTWlzc2luZ1BsdWdpbnNDYWxsYmFjaz4gY3JlYXRl
KHN0ZDo6ZnVuY3Rpb248dm9pZCAodWludDMyX3QpPiYmIGZ1bmN0aW9uKQorICAgIHN0YXRpYyBS
ZWY8TWVkaWFQbGF5ZXJSZXF1ZXN0SW5zdGFsbE1pc3NpbmdQbHVnaW5zQ2FsbGJhY2s+IGNyZWF0
ZShXVEY6OkZ1bmN0aW9uPHZvaWQgKHVpbnQzMl90KT4mJiBmdW5jdGlvbikKICAgICB7CiAgICAg
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE1lZGlhUGxheWVyUmVxdWVzdEluc3RhbGxNaXNzaW5n
UGx1Z2luc0NhbGxiYWNrKFdURk1vdmUoZnVuY3Rpb24pKSk7CiAgICAgfQpAQCAtNDcsMTIgKzQ4
LDEyIEBAIHB1YmxpYzoKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgTWVkaWFQbGF5ZXJSZXF1ZXN0
SW5zdGFsbE1pc3NpbmdQbHVnaW5zQ2FsbGJhY2soc3RkOjpmdW5jdGlvbjx2b2lkICh1aW50MzJf
dCk+JiYgZnVuY3Rpb24pCisgICAgTWVkaWFQbGF5ZXJSZXF1ZXN0SW5zdGFsbE1pc3NpbmdQbHVn
aW5zQ2FsbGJhY2soV1RGOjpGdW5jdGlvbjx2b2lkICh1aW50MzJfdCk+JiYgZnVuY3Rpb24pCiAg
ICAgICAgIDogbV9mdW5jdGlvbihXVEZNb3ZlKGZ1bmN0aW9uKSkKICAgICB7CiAgICAgfQogCi0g
ICAgc3RkOjpmdW5jdGlvbjx2b2lkICh1aW50MzJfdCk+IG1fZnVuY3Rpb247CisgICAgV1RGOjpG
dW5jdGlvbjx2b2lkICh1aW50MzJfdCk+IG1fZnVuY3Rpb247CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93
aW4vR3JhcGhpY3NDb250ZXh0RGlyZWN0MkQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dERpcmVjdDJELmNwcAppbmRleCA2NDA1OTcwZjI3
NWViYTUyYjcxZTJkYWI0YWQ3NjBlZDlhMzJlMmYyLi5kMDY2N2MzZDAwY2YyOGUyMzFiMjFhZTk2
Mjk0ZDJjZjY5OGIzYjQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy93aW4vR3JhcGhpY3NDb250ZXh0RGlyZWN0MkQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHREaXJlY3QyRC5jcHAKQEAgLTkz
NSw3ICs5MzUsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd1BhdGgoY29uc3QgUGF0aCYg
cGF0aCkKICAgICBmbHVzaCgpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd1dpdGhv
dXRTaGFkb3coY29uc3QgRmxvYXRSZWN0JiAvKmJvdW5kaW5nUmVjdCovLCBjb25zdCBzdGQ6OmZ1
bmN0aW9uPHZvaWQoSUQyRDFSZW5kZXJUYXJnZXQqKT4mIGRyYXdDb21tYW5kcykKK3ZvaWQgR3Jh
cGhpY3NDb250ZXh0OjpkcmF3V2l0aG91dFNoYWRvdyhjb25zdCBGbG9hdFJlY3QmIC8qYm91bmRp
bmdSZWN0Ki8sIGNvbnN0IFdURjo6RnVuY3Rpb248dm9pZChJRDJEMVJlbmRlclRhcmdldCopPiYg
ZHJhd0NvbW1hbmRzKQogewogICAgIGRyYXdDb21tYW5kcyhwbGF0Zm9ybUNvbnRleHQoKSk7CiB9
CkBAIC05ODEsNyArOTgxLDcgQEAgc3RhdGljIHZvaWQgZHJhd1dpdGhTaGFkb3dIZWxwZXIoSUQy
RDFSZW5kZXJUYXJnZXQqIGNvbnRleHQsIElEMkQxQml0bWFwKiBiaXRtYXAKICAgICBkZXZpY2VD
b250ZXh0LT5EcmF3SW1hZ2UoY29tcG9zaXRvci5nZXQoKSwgRDJEMV9JTlRFUlBPTEFUSU9OX01P
REVfTElORUFSKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdXaXRoU2hhZG93KGNv
bnN0IEZsb2F0UmVjdCYgYm91bmRpbmdSZWN0LCBjb25zdCBzdGQ6OmZ1bmN0aW9uPHZvaWQoSUQy
RDFSZW5kZXJUYXJnZXQqKT4mIGRyYXdDb21tYW5kcykKK3ZvaWQgR3JhcGhpY3NDb250ZXh0Ojpk
cmF3V2l0aFNoYWRvdyhjb25zdCBGbG9hdFJlY3QmIGJvdW5kaW5nUmVjdCwgY29uc3QgV1RGOjpG
dW5jdGlvbjx2b2lkKElEMkQxUmVuZGVyVGFyZ2V0Kik+JiBkcmF3Q29tbWFuZHMpCiB7CiAgICAg
YXV0byBjb250ZXh0ID0gcGxhdGZvcm1Db250ZXh0KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkSGVscGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkSGVscGVyLmNwcAppbmRleCAwODJmYjdjZGEzMWI2YTRi
ZjE2NWNmYmNmMTQ5OGM1MDljZDk2ODhmLi42N2I3YzdjNmFhODdhMmRjZjNkYjA4YzViYmZkYWI5
MWQ5NGNjOWQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGFzdGVi
b2FyZEhlbHBlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Bhc3RlYm9h
cmRIZWxwZXIuY3BwCkBAIC0yNjUsNyArMjY1LDcgQEAgVmVjdG9yPEdka0F0b20+IFBhc3RlYm9h
cmRIZWxwZXI6OmRyb3BBdG9tc0ZvckNvbnRleHQoR3RrV2lkZ2V0KiB3aWRnZXQsIEdka0RyYWcK
IHN0YXRpYyBTZWxlY3Rpb25EYXRhKiBzZXR0aW5nQ2xpcGJvYXJkU2VsZWN0aW9uOwogCiBzdHJ1
Y3QgQ2xpcGJvYXJkU2V0RGF0YSB7Ci0gICAgQ2xpcGJvYXJkU2V0RGF0YShTZWxlY3Rpb25EYXRh
JiBzZWxlY3Rpb24sIHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiYmIHNlbGVjdGlvbkNsZWFyZWRDYWxs
YmFjaykKKyAgICBDbGlwYm9hcmRTZXREYXRhKFNlbGVjdGlvbkRhdGEmIHNlbGVjdGlvbiwgV1RG
OjpGdW5jdGlvbjx2b2lkKCk+JiYgc2VsZWN0aW9uQ2xlYXJlZENhbGxiYWNrKQogICAgICAgICA6
IHNlbGVjdGlvbkRhdGEoc2VsZWN0aW9uKQogICAgICAgICAsIHNlbGVjdGlvbkNsZWFyZWRDYWxs
YmFjayhXVEZNb3ZlKHNlbGVjdGlvbkNsZWFyZWRDYWxsYmFjaykpCiAgICAgewpAQCAtMjc2LDcg
KzI3Niw3IEBAIHN0cnVjdCBDbGlwYm9hcmRTZXREYXRhIHsKICAgICB9CiAKICAgICBSZWY8U2Vs
ZWN0aW9uRGF0YT4gc2VsZWN0aW9uRGF0YTsKLSAgICBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4gc2Vs
ZWN0aW9uQ2xlYXJlZENhbGxiYWNrOworICAgIFdURjo6RnVuY3Rpb248dm9pZCgpPiBzZWxlY3Rp
b25DbGVhcmVkQ2FsbGJhY2s7CiB9OwogCiBzdGF0aWMgdm9pZCBnZXRDbGlwYm9hcmRDb250ZW50
c0NhbGxiYWNrKEd0a0NsaXBib2FyZCosIEd0a1NlbGVjdGlvbkRhdGEgKnNlbGVjdGlvbkRhdGEs
IGd1aW50IGluZm8sIGdwb2ludGVyIHVzZXJEYXRhKQpAQCAtMjkyLDcgKzI5Miw3IEBAIHN0YXRp
YyB2b2lkIGNsZWFyQ2xpcGJvYXJkQ29udGVudHNDYWxsYmFjayhHdGtDbGlwYm9hcmQqLCBncG9p
bnRlciB1c2VyRGF0YSkKICAgICAgICAgZGF0YS0+c2VsZWN0aW9uQ2xlYXJlZENhbGxiYWNrKCk7
CiB9CiAKLXZvaWQgUGFzdGVib2FyZEhlbHBlcjo6d3JpdGVDbGlwYm9hcmRDb250ZW50cyhHdGtD
bGlwYm9hcmQqIGNsaXBib2FyZCwgY29uc3QgU2VsZWN0aW9uRGF0YSYgc2VsZWN0aW9uLCBzdGQ6
OmZ1bmN0aW9uPHZvaWQoKT4mJiBwcmltYXJ5U2VsZWN0aW9uQ2xlYXJlZCkKK3ZvaWQgUGFzdGVi
b2FyZEhlbHBlcjo6d3JpdGVDbGlwYm9hcmRDb250ZW50cyhHdGtDbGlwYm9hcmQqIGNsaXBib2Fy
ZCwgY29uc3QgU2VsZWN0aW9uRGF0YSYgc2VsZWN0aW9uLCBXVEY6OkZ1bmN0aW9uPHZvaWQoKT4m
JiBwcmltYXJ5U2VsZWN0aW9uQ2xlYXJlZCkKIHsKICAgICBHUmVmUHRyPEd0a1RhcmdldExpc3Q+
IGxpc3QgPSB0YXJnZXRMaXN0Rm9yU2VsZWN0aW9uRGF0YShzZWxlY3Rpb24pOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGFzdGVib2FyZEhlbHBlci5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRIZWxwZXIuaAppbmRleCA0YTRkZTk5
NTZlZGU4ZjVlNWY3NmUyNWJmYTY0Zjg1NjNhNjNiNjg4Li4wOTVlZTRhZGQyMjg3OTlkYjc4ZjFh
ZGQxN2QxYzQ4MDcwZDA2MDY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
dGsvUGFzdGVib2FyZEhlbHBlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9Q
YXN0ZWJvYXJkSGVscGVyLmgKQEAgLTI2LDcgKzI2LDcgQEAKICNkZWZpbmUgUGFzdGVib2FyZEhl
bHBlcl9oCiAKICNpbmNsdWRlICJHUmVmUHRyR3RrLmgiCi0jaW5jbHVkZSA8ZnVuY3Rpb25hbD4K
KyNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4K
ICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL2dsaWIvR1JlZlB0ci5oPgpA
QCAtNDcsNyArNDcsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBmaWxsU2VsZWN0aW9uRGF0YShjb25z
dCBTZWxlY3Rpb25EYXRhJiwgdW5zaWduZWQsIEd0a1NlbGVjdGlvbkRhdGEqKTsKICAgICB2b2lk
IGZpbGxTZWxlY3Rpb25EYXRhKEd0a1NlbGVjdGlvbkRhdGEqLCB1bnNpZ25lZCwgU2VsZWN0aW9u
RGF0YSYpOwogICAgIFZlY3RvcjxHZGtBdG9tPiBkcm9wQXRvbXNGb3JDb250ZXh0KEd0a1dpZGdl
dCosIEdka0RyYWdDb250ZXh0Kik7Ci0gICAgdm9pZCB3cml0ZUNsaXBib2FyZENvbnRlbnRzKEd0
a0NsaXBib2FyZCosIGNvbnN0IFNlbGVjdGlvbkRhdGEmLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4m
JiBwcmltYXJ5U2VsZWN0aW9uQ2xlYXJlZCA9IG51bGxwdHIpOworICAgIHZvaWQgd3JpdGVDbGlw
Ym9hcmRDb250ZW50cyhHdGtDbGlwYm9hcmQqLCBjb25zdCBTZWxlY3Rpb25EYXRhJiwgV1RGOjpG
dW5jdGlvbjx2b2lkKCk+JiYgcHJpbWFyeVNlbGVjdGlvbkNsZWFyZWQgPSBudWxscHRyKTsKICAg
ICB2b2lkIGdldENsaXBib2FyZENvbnRlbnRzKEd0a0NsaXBib2FyZCosIFNlbGVjdGlvbkRhdGEm
KTsKIAogICAgIGVudW0gUGFzdGVib2FyZFRhcmdldFR5cGUgeyBUYXJnZXRUeXBlTWFya3VwLCBU
YXJnZXRUeXBlVGV4dCwgVGFyZ2V0VHlwZUltYWdlLCBUYXJnZXRUeXBlVVJJTGlzdCwgVGFyZ2V0
VHlwZU5ldHNjYXBlVVJMLCBUYXJnZXRUeXBlU21hcnRQYXN0ZSwgVGFyZ2V0VHlwZVVua25vd24g
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QbGF0Zm9ybVBhc3Rl
Ym9hcmRHdGsuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1BsYXRmb3JtUGFzdGVi
b2FyZEd0ay5jcHAKaW5kZXggODQ4MWNiODQyN2U1OTAxNDk4MTU5ZTYwYWI4OGJiZmNlMGQwNzcw
ZS4uZWJhM2UwMzc2MjE4OThmODc1MzU2MGZmZmNmZGRkYzZiZGU2MjMzYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1BsYXRmb3JtUGFzdGVib2FyZEd0ay5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1BsYXRmb3JtUGFzdGVib2FyZEd0ay5jcHAK
QEAgLTM0LDcgKzM0LDcgQEAgUGxhdGZvcm1QYXN0ZWJvYXJkOjpQbGF0Zm9ybVBhc3RlYm9hcmQo
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKICAgICBBU1NFUlQobV9jbGlwYm9hcmQpOwog
fQogCi12b2lkIFBsYXRmb3JtUGFzdGVib2FyZDo6d3JpdGVUb0NsaXBib2FyZChjb25zdCBTZWxl
Y3Rpb25EYXRhJiBzZWxlY3Rpb24sIHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiYmIHByaW1hcnlTZWxl
Y3Rpb25DbGVhcmVkKQordm9pZCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OndyaXRlVG9DbGlwYm9hcmQo
Y29uc3QgU2VsZWN0aW9uRGF0YSYgc2VsZWN0aW9uLCBXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJiBw
cmltYXJ5U2VsZWN0aW9uQ2xlYXJlZCkKIHsKICAgICBQYXN0ZWJvYXJkSGVscGVyOjpzaW5nbGV0
b24oKS53cml0ZUNsaXBib2FyZENvbnRlbnRzKG1fY2xpcGJvYXJkLCBzZWxlY3Rpb24sIGd0a19j
bGlwYm9hcmRfZ2V0KEdES19TRUxFQ1RJT05fUFJJTUFSWSkgPT0gbV9jbGlwYm9hcmQgPyBXVEZN
b3ZlKHByaW1hcnlTZWxlY3Rpb25DbGVhcmVkKSA6IG51bGxwdHIpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFW
S2l0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuSW50
ZXJmYWNlQVZLaXQuaAppbmRleCA4ZDNjNDczYzA2ZmE3ZDg0YTQ0Njk5YjA2MDIwMDIzZjdjYjgz
MGUwLi45OGI0ZGJkY2M4YjBkZWJhOWM4MDI4MDIzNDQ1Yzg3NGRhMTFmNzQ0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNl
QVZLaXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2Ny
ZWVuSW50ZXJmYWNlQVZLaXQuaApAQCAtMzQsOCArMzQsOCBAQAogI2luY2x1ZGUgIlBsYXRmb3Jt
TGF5ZXIuaCIKICNpbmNsdWRlICJXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdC5oIgog
I2luY2x1ZGUgIldlYlZpZGVvRnVsbHNjcmVlbk1vZGVsLmgiCi0jaW5jbHVkZSA8ZnVuY3Rpb25h
bD4KICNpbmNsdWRlIDxvYmpjL29iamMuaD4KKyNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KICNp
bmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNs
dWRlIDx3dGYvUmV0YWluUHRyLmg+CkBAIC0xMDEsNyArMTAxLDcgQEAgcHVibGljOgogICAgIEhU
TUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZSBtb2RlKCkgY29uc3QgeyBy
ZXR1cm4gbV9tb2RlOyB9CiAgICAgYm9vbCBhbGxvd3NQaWN0dXJlSW5QaWN0dXJlUGxheWJhY2so
KSBjb25zdCB7IHJldHVybiBtX2FsbG93c1BpY3R1cmVJblBpY3R1cmVQbGF5YmFjazsgfQogICAg
IFdFQkNPUkVfRVhQT1JUIGJvb2wgbWF5QXV0b21hdGljYWxseVNob3dWaWRlb1BpY3R1cmVJblBp
Y3R1cmUoKSBjb25zdDsKLSAgICB2b2lkIGZ1bGxzY3JlZW5NYXlSZXR1cm5Ub0lubGluZShzdGQ6
OmZ1bmN0aW9uPHZvaWQoYm9vbCk+IGNhbGxiYWNrKTsKKyAgICB2b2lkIGZ1bGxzY3JlZW5NYXlS
ZXR1cm5Ub0lubGluZShXVEY6OkZ1bmN0aW9uPHZvaWQoYm9vbCk+JiYgY2FsbGJhY2spOwogICAg
IGJvb2wgd2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQoKSBjb25zdDsKICAgICB2b2lkIGFw
cGxpY2F0aW9uRGlkQmVjb21lQWN0aXZlKCk7CiAKQEAgLTEzOCw3ICsxMzgsNyBAQCBwcm90ZWN0
ZWQ6CiAgICAgUmV0YWluUHRyPFVJV2luZG93PiBtX3BhcmVudFdpbmRvdzsKICAgICBSZXRhaW5Q
dHI8V2ViQVZQbGF5ZXJMYXllclZpZXc+IG1fcGxheWVyTGF5ZXJWaWV3OwogICAgIEhUTUxNZWRp
YUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZSBtX21vZGUgeyBIVE1MTWVkaWFFbGVt
ZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGVOb25lIH07Ci0gICAgc3RkOjpmdW5jdGlvbjx2
b2lkKGJvb2wpPiBtX3ByZXBhcmVUb0lubGluZUNhbGxiYWNrOworICAgIFdURjo6RnVuY3Rpb248
dm9pZChib29sKT4gbV9wcmVwYXJlVG9JbmxpbmVDYWxsYmFjazsKICAgICBSdW5Mb29wOjpUaW1l
cjxXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdD4gbV93YXRjaGRvZ1RpbWVyOwogICAg
IGJvb2wgbV9hbGxvd3NQaWN0dXJlSW5QaWN0dXJlUGxheWJhY2sgeyBmYWxzZSB9OwogICAgIGJv
b2wgbV9leGl0UmVxdWVzdGVkIHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5t
bQppbmRleCA2YmFiYzFlZDUyMGJiMjQ5MzViNWY5NmRiZGVhOTQ2MWY1MmVmZjU3Li43NmZmZmMy
MDA0OGRiZTQzYmRiNTQ4MTc4NjhiMmNhMzcyNzdjNjNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFj
ZUFWS2l0Lm1tCkBAIC04NDQsNyArODQ0LDcgQEAgdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRl
cmZhY2VBVktpdDo6cHJlcGFyZWRUb1JldHVyblRvSW5saW5lKGJvb2wgdmlzaWJsZSwgY28KICAg
ICAgICAgCiAgICAgICAgIFttX3BsYXllclZpZXdDb250cm9sbGVyIHZpZXddLmZyYW1lID0gW21f
cGFyZW50VmlldyBjb252ZXJ0UmVjdDppbmxpbmVSZWN0IHRvVmlldzpbbV9wbGF5ZXJWaWV3Q29u
dHJvbGxlciB2aWV3XS5zdXBlcnZpZXddOwogCi0gICAgICAgIHN0ZDo6ZnVuY3Rpb248dm9pZChi
b29sKT4gY2FsbGJhY2sgPSBXVEZNb3ZlKG1fcHJlcGFyZVRvSW5saW5lQ2FsbGJhY2spOworICAg
ICAgICBXVEY6OkZ1bmN0aW9uPHZvaWQoYm9vbCk+IGNhbGxiYWNrID0gV1RGTW92ZShtX3ByZXBh
cmVUb0lubGluZUNhbGxiYWNrKTsKICAgICAgICAgY2FsbGJhY2sodmlzaWJsZSk7CiAgICAgfQog
fQpAQCAtODU0LDkgKzg1NCw5IEBAIGJvb2wgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZL
aXQ6Om1heUF1dG9tYXRpY2FsbHlTaG93VmlkZW9QaWN0dXJlSW5QaWN0dXJlCiAgICAgcmV0dXJu
IFtwbGF5ZXJDb250cm9sbGVyKCkgaXNQbGF5aW5nXSAmJiBtX21vZGUgPT0gSFRNTE1lZGlhRWxl
bWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlU3RhbmRhcmQgJiYgc3VwcG9ydHNQaWN0dXJl
SW5QaWN0dXJlKCk7CiB9CiAKLXZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6
OmZ1bGxzY3JlZW5NYXlSZXR1cm5Ub0lubGluZShzdGQ6OmZ1bmN0aW9uPHZvaWQoYm9vbCk+IGNh
bGxiYWNrKQordm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6ZnVsbHNjcmVl
bk1heVJldHVyblRvSW5saW5lKFdURjo6RnVuY3Rpb248dm9pZChib29sKT4mJiBjYWxsYmFjaykK
IHsKLSAgICBtX3ByZXBhcmVUb0lubGluZUNhbGxiYWNrID0gY2FsbGJhY2s7CisgICAgbV9wcmVw
YXJlVG9JbmxpbmVDYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spOwogICAgIGlmIChtX2Z1bGxz
Y3JlZW5DaGFuZ2VPYnNlcnZlcikKICAgICAgICAgbV9mdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXIt
PmZ1bGxzY3JlZW5NYXlSZXR1cm5Ub0lubGluZSgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWFjL1Bvd2VyT2JzZXJ2ZXJNYWMuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWFjL1Bvd2VyT2JzZXJ2ZXJNYWMuY3BwCmluZGV4IDMyOTAyZmRhMDY4YWIxNmZm
M2U1ZTQwNzIzYjhmMjNiMTc1MWQ3NzYuLjhmMzdkZDcxZjA3NzRlMzg1YjY2OTYyOWNiZDJlMGQ1
ODRjNDY2YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9Qb3dlck9i
c2VydmVyTWFjLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUG93ZXJPYnNl
cnZlck1hYy5jcHAKQEAgLTMwLDggKzMwLDggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1Q
b3dlck9ic2VydmVyOjpQb3dlck9ic2VydmVyKGNvbnN0IHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiYg
cG93ZXJPbkhhbmRlcikKLSAgICA6IG1fcG93ZXJPbkhhbmRlcihwb3dlck9uSGFuZGVyKQorUG93
ZXJPYnNlcnZlcjo6UG93ZXJPYnNlcnZlcihXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJiBwb3dlck9u
SGFuZGVyKQorICAgIDogbV9wb3dlck9uSGFuZGVyKFdURk1vdmUocG93ZXJPbkhhbmRlcikpCiAg
ICAgLCBtX3Bvd2VyQ29ubmVjdGlvbigwKQogICAgICwgbV9ub3RpZmljYXRpb25Qb3J0KG51bGxw
dHIpCiAgICAgLCBtX25vdGlmaWVyUmVmZXJlbmNlKDApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tYWMvUG93ZXJPYnNlcnZlck1hYy5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWFjL1Bvd2VyT2JzZXJ2ZXJNYWMuaAppbmRleCA3NWZhOGI0MDEyOTBmZDM1YmZjNjVm
OTUyZWU1ODcxZWQxZDY2ZjlhLi5jYjk3YjVkZTVmNjVmYzc2ZGVjZGFmM2QwMTYzY2M1NDYxYTJk
MDljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUG93ZXJPYnNlcnZl
ck1hYy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9Qb3dlck9ic2VydmVyTWFj
LmgKQEAgLTI4LDcgKzI4LDcgQEAKIAogI2ltcG9ydCA8SU9LaXQvSU9NZXNzYWdlLmg+CiAjaW1w
b3J0IDxJT0tpdC9wd3JfbWd0L0lPUE1MaWIuaD4KLSNpbXBvcnQgPGZ1bmN0aW9uYWw+CisjaW1w
b3J0IDx3dGYvRnVuY3Rpb24uaD4KICNpbXBvcnQgPHd0Zi9Ob25jb3B5YWJsZS5oPgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CkBAIC0zNywxMyArMzcsMTMgQEAgY2xhc3MgUG93ZXJPYnNlcnZlciB7
CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUG93ZXJPYnNlcnZlcik7IFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogCiBwdWJsaWM6Ci0gICAgUG93ZXJPYnNlcnZlcihjb25zdCBzdGQ6OmZ1bmN0
aW9uPHZvaWQoKT4mIHBvd2VyT25IYW5kZXIpOworICAgIFBvd2VyT2JzZXJ2ZXIoV1RGOjpGdW5j
dGlvbjx2b2lkKCk+JiYgcG93ZXJPbkhhbmRlcik7CiAgICAgflBvd2VyT2JzZXJ2ZXIoKTsKIAog
cHJpdmF0ZToKICAgICB2b2lkIGRpZFJlY2VpdmVTeXN0ZW1Qb3dlck5vdGlmaWNhdGlvbihpb19z
ZXJ2aWNlX3QsIHVpbnQzMl90IG1lc3NhZ2VUeXBlLCB2b2lkKiBtZXNzYWdlQXJndW1lbnQpOwog
Ci0gICAgc3RkOjpmdW5jdGlvbjx2b2lkKCk+IG1fcG93ZXJPbkhhbmRlcjsKKyAgICBXVEY6OkZ1
bmN0aW9uPHZvaWQoKT4gbV9wb3dlck9uSGFuZGVyOwogICAgIGlvX2Nvbm5lY3RfdCBtX3Bvd2Vy
Q29ubmVjdGlvbjsKICAgICBJT05vdGlmaWNhdGlvblBvcnRSZWYgbV9ub3RpZmljYXRpb25Qb3J0
OwogICAgIGlvX29iamVjdF90IG1fbm90aWZpZXJSZWZlcmVuY2U7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29yZU5TVVJMRXh0cmFzLm1tIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVOU1VSTEV4dHJhcy5tbQppbmRleCA2ZmI2MDA1ZDNj
OWVmNzdlNjk3Yzk1MTU2OGY3NmZmODI3M2E1N2Y0Li5hZWQ2MDU3Y2E1Mjc2ZDNhNDNhMDIyYTYy
MTBiYTQ1MTEwMzlhZTgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMv
V2ViQ29yZU5TVVJMRXh0cmFzLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9X
ZWJDb3JlTlNVUkxFeHRyYXMubW0KQEAgLTMyLDcgKzMyLDcgQEAKICNpbXBvcnQgIldlYkNvcmVO
U1N0cmluZ0V4dHJhcy5oIgogI2ltcG9ydCAiV2ViQ29yZU5TVVJMRXh0cmFzLmgiCiAjaW1wb3J0
ICJXZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmgiCi0jaW1wb3J0IDxmdW5jdGlvbmFsPgorI2ltcG9y
dCA8d3RmL0Z1bmN0aW9uLmg+CiAjaW1wb3J0IDx3dGYvSGV4TnVtYmVyLmg+CiAjaW1wb3J0IDx3
dGYvT2JqY1J1bnRpbWVFeHRyYXMuaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KQEAgLTI3
MSw3ICsyNzEsNyBAQCBzdGF0aWMgQk9PTCBhbGxDaGFyYWN0ZXJzSW5JRE5TY3JpcHRXaGl0ZUxp
c3QoY29uc3QgVUNoYXIgKmJ1ZmZlciwgaW50MzJfdCBsZW5ndAogICAgIHJldHVybiBZRVM7CiB9
CiAKLXN0YXRpYyBib29sIGlzU2Vjb25kTGV2ZWxEb21haW5OYW1lQWxsb3dlZEJ5VExEUnVsZXMo
Y29uc3QgVUNoYXIqIGJ1ZmZlciwgaW50MzJfdCBsZW5ndGgsIGNvbnN0IHN0ZDo6ZnVuY3Rpb248
Ym9vbChVQ2hhcik+JiBjaGFyYWN0ZXJJc0FsbG93ZWQpCitzdGF0aWMgYm9vbCBpc1NlY29uZExl
dmVsRG9tYWluTmFtZUFsbG93ZWRCeVRMRFJ1bGVzKGNvbnN0IFVDaGFyKiBidWZmZXIsIGludDMy
X3QgbGVuZ3RoLCBjb25zdCBXVEY6OkZ1bmN0aW9uPGJvb2woVUNoYXIpPiYgY2hhcmFjdGVySXNB
bGxvd2VkKQogewogICAgIEFTU0VSVChsZW5ndGggPiAwKTsKIApAQCAtMjk0LDcgKzI5NCw3IEBA
IHN0YXRpYyBib29sIGlzU2Vjb25kTGV2ZWxEb21haW5OYW1lQWxsb3dlZEJ5VExEUnVsZXMoY29u
c3QgVUNoYXIqIGJ1ZmZlciwgaW50MzJfCiAgICAgeyBcCiAgICAgICAgIHN0YXRpYyBjb25zdCBp
bnQzMl90IHN1ZmZpeExlbmd0aCA9IHNpemVvZihzdWZmaXgpIC8gc2l6ZW9mKHN1ZmZpeFswXSk7
IFwKICAgICAgICAgaWYgKGxlbmd0aCA+IHN1ZmZpeExlbmd0aCAmJiAwID09IG1lbWNtcChidWZm
ZXIgKyBsZW5ndGggLSBzdWZmaXhMZW5ndGgsIHN1ZmZpeCwgc2l6ZW9mKHN1ZmZpeCkpKSBcCi0g
ICAgICAgICAgICByZXR1cm4gaXNTZWNvbmRMZXZlbERvbWFpbk5hbWVBbGxvd2VkQnlUTERSdWxl
cyhidWZmZXIsIGxlbmd0aCAtIHN1ZmZpeExlbmd0aCwgZnVuY3Rpb24pOyBcCisgICAgICAgICAg
ICByZXR1cm4gaXNTZWNvbmRMZXZlbERvbWFpbk5hbWVBbGxvd2VkQnlUTERSdWxlcyhidWZmZXIs
IGxlbmd0aCAtIHN1ZmZpeExlbmd0aCwgW10oVUNoYXIgYykgeyByZXR1cm4gZnVuY3Rpb24oYyk7
IH0pOyBcCiAgICAgfQogCiBzdGF0aWMgYm9vbCBpc1J1c3NpYW5Eb21haW5OYW1lQ2hhcmFjdGVy
KFVDaGFyIGNoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vQ2FwdHVyZURldmljZU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vQ2FwdHVyZURldmljZU1hbmFnZXIuY3BwCmluZGV4IDc1MDA1OTE3ODljODEzYmZk
Y2JlMjVmZWVjZWExZmYxZGQ5MDZiMGQuLjZlMDkxNjYxOGYyOTU1NDM2MGYxZDhlYmUxODdhYjhi
ZWRkMjUzZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L0NhcHR1cmVEZXZpY2VNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9DYXB0dXJlRGV2aWNlTWFuYWdlci5jcHAKQEAgLTExMyw3ICsxMTMsNyBAQCBz
dGF0aWMgQ2FwdHVyZURldmljZU1hbmFnZXI6Ok9ic2VydmVyVG9rZW4gbmV4dE9ic2VydmVyVG9r
ZW4oKQogICAgIHJldHVybiArK25leHRUb2tlbjsKIH0KIAotQ2FwdHVyZURldmljZU1hbmFnZXI6
Ok9ic2VydmVyVG9rZW4gQ2FwdHVyZURldmljZU1hbmFnZXI6OmFkZENhcHR1cmVEZXZpY2VDaGFu
Z2VkT2JzZXJ2ZXIoQ2FwdHVyZURldmljZUNoYW5nZWRDYWxsYmFjayBvYnNlcnZlcikKK0NhcHR1
cmVEZXZpY2VNYW5hZ2VyOjpPYnNlcnZlclRva2VuIENhcHR1cmVEZXZpY2VNYW5hZ2VyOjphZGRD
YXB0dXJlRGV2aWNlQ2hhbmdlZE9ic2VydmVyKENhcHR1cmVEZXZpY2VDaGFuZ2VkQ2FsbGJhY2sm
JiBvYnNlcnZlcikKIHsKICAgICBhdXRvIHRva2VuID0gbmV4dE9ic2VydmVyVG9rZW4oKTsKICAg
ICBtX29ic2VydmVycy5zZXQodG9rZW4sIFdURk1vdmUob2JzZXJ2ZXIpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL0NhcHR1cmVEZXZpY2VNYW5hZ2Vy
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9DYXB0dXJlRGV2aWNlTWFu
YWdlci5oCmluZGV4IGRmZjAwMjM1OTJlNGQxNTZhYjgxY2IzMWJlOGQxNWFkODhlY2E2NGQuLmRm
YzYwZDFjMjRlZDY5OWFiNjgwNTdmYTY1ODdlNjUxZjE1MDY5YzYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL0NhcHR1cmVEZXZpY2VNYW5hZ2VyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vQ2FwdHVyZURldmljZU1hbmFn
ZXIuaApAQCAtMzQsOSArMzQsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENhcHR1
cmVEZXZpY2VNYW5hZ2VyIHsKIHB1YmxpYzoKLSAgICB1c2luZyBDYXB0dXJlRGV2aWNlQ2hhbmdl
ZENhbGxiYWNrID0gc3RkOjpmdW5jdGlvbjx2b2lkKCk+OworICAgIHVzaW5nIENhcHR1cmVEZXZp
Y2VDaGFuZ2VkQ2FsbGJhY2sgPSBXVEY6OkZ1bmN0aW9uPHZvaWQoKT47CiAgICAgdXNpbmcgT2Jz
ZXJ2ZXJUb2tlbiA9IHVpbnQzMl90OwotICAgIHZpcnR1YWwgT2JzZXJ2ZXJUb2tlbiBhZGRDYXB0
dXJlRGV2aWNlQ2hhbmdlZE9ic2VydmVyKENhcHR1cmVEZXZpY2VDaGFuZ2VkQ2FsbGJhY2spOwor
ICAgIHZpcnR1YWwgT2JzZXJ2ZXJUb2tlbiBhZGRDYXB0dXJlRGV2aWNlQ2hhbmdlZE9ic2VydmVy
KENhcHR1cmVEZXZpY2VDaGFuZ2VkQ2FsbGJhY2smJik7CiAgICAgdmlydHVhbCB2b2lkIHJlbW92
ZUNhcHR1cmVEZXZpY2VDaGFuZ2VkT2JzZXJ2ZXIoT2JzZXJ2ZXJUb2tlbik7CiAKICAgICB2aXJ0
dWFsIFZlY3RvcjxDYXB0dXJlRGV2aWNlPiYgY2FwdHVyZURldmljZXMoKSA9IDA7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291
cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVk
aWFTb3VyY2UuY3BwCmluZGV4IDMzMjQ2YTAxY2RlODRhMzYyZTFjODY5MTU0MzZlYjIwYmM0MWU1
ZTcuLmIzODY2MjZhYjkzYWI0NGFjNGY4OGQzYzIyZTVlN2U3NTE1YjJkZmIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVk
aWFTb3VyY2UuY3BwCkBAIC04ODIsNyArODgyLDcgQEAgdm9pZCBSZWFsdGltZU1lZGlhU291cmNl
OjpzZXRFY2hvQ2FuY2VsbGF0aW9uKGJvb2wgZWNob0NhbmNlbGxhdGlvbikKICAgICBzZXR0aW5n
c0RpZENoYW5nZSgpOwogfQogCi12b2lkIFJlYWx0aW1lTWVkaWFTb3VyY2U6OnNjaGVkdWxlRGVm
ZXJyZWRUYXNrKHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiYmIGZ1bmN0aW9uKQordm9pZCBSZWFsdGlt
ZU1lZGlhU291cmNlOjpzY2hlZHVsZURlZmVycmVkVGFzayhXVEY6OkZ1bmN0aW9uPHZvaWQoKT4m
JiBmdW5jdGlvbikKIHsKICAgICBBU1NFUlQoZnVuY3Rpb24pOwogICAgIGNhbGxPbk1haW5UaHJl
YWQoW3dlYWtUaGlzID0gY3JlYXRlV2Vha1B0cigpLCBmdW5jdGlvbiA9IFdURk1vdmUoZnVuY3Rp
b24pXSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9S
ZWFsdGltZU1lZGlhU291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9SZWFsdGltZU1lZGlhU291cmNlLmgKaW5kZXggMDQxMGVlNWM3MjdmM2NmMmRlMGM5MjQwMjlj
Zjk1ZWEyNTIxZWRmOC4uNDAzOWM5NTNkYzk1ZWMzOWM3ZjkwNzA5YjFhZDBiZDdjYmU2MGRiZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVN
ZWRpYVNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1Jl
YWx0aW1lTWVkaWFTb3VyY2UuaApAQCAtMTkwLDggKzE5MCw4IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIGNvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXMmIGNhcGFiaWxpdGllcygp
IGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIGNvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5n
cyYgc2V0dGluZ3MoKSBjb25zdCA9IDA7CiAKLSAgICB1c2luZyBTdWNjZXNzSGFuZGxlciA9IHN0
ZDo6ZnVuY3Rpb248dm9pZCgpPjsKLSAgICB1c2luZyBGYWlsdXJlSGFuZGxlciA9IHN0ZDo6ZnVu
Y3Rpb248dm9pZChjb25zdCBTdHJpbmcmIGJhZENvbnN0cmFpbnQsIGNvbnN0IFN0cmluZyYgZXJy
b3JTdHJpbmcpPjsKKyAgICB1c2luZyBTdWNjZXNzSGFuZGxlciA9IFdURjo6RnVuY3Rpb248dm9p
ZCgpPjsKKyAgICB1c2luZyBGYWlsdXJlSGFuZGxlciA9IFdURjo6RnVuY3Rpb248dm9pZChjb25z
dCBTdHJpbmcmIGJhZENvbnN0cmFpbnQsIGNvbnN0IFN0cmluZyYgZXJyb3JTdHJpbmcpPjsKICAg
ICB2aXJ0dWFsIHZvaWQgYXBwbHlDb25zdHJhaW50cyhjb25zdCBNZWRpYUNvbnN0cmFpbnRzJiwg
U3VjY2Vzc0hhbmRsZXImJiwgRmFpbHVyZUhhbmRsZXImJik7CiAgICAgc3RkOjpvcHRpb25hbDxz
dGQ6OnBhaXI8U3RyaW5nLCBTdHJpbmc+PiBhcHBseUNvbnN0cmFpbnRzKGNvbnN0IE1lZGlhQ29u
c3RyYWludHMmKTsKIApAQCAtMjEyLDcgKzIxMiw3IEBAIHB1YmxpYzoKIHByb3RlY3RlZDoKICAg
ICBSZWFsdGltZU1lZGlhU291cmNlKGNvbnN0IFN0cmluZyYgaWQsIFR5cGUsIGNvbnN0IFN0cmlu
ZyYgbmFtZSk7CiAKLSAgICB2b2lkIHNjaGVkdWxlRGVmZXJyZWRUYXNrKHN0ZDo6ZnVuY3Rpb248
dm9pZCgpPiYmKTsKKyAgICB2b2lkIHNjaGVkdWxlRGVmZXJyZWRUYXNrKFdURjo6RnVuY3Rpb248
dm9pZCgpPiYmKTsKIAogICAgIHZpcnR1YWwgdm9pZCBiZWdpbkNvbmZpZ3VyYXRpb24oKSB7IH0K
ICAgICB2aXJ0dWFsIHZvaWQgY29tbWl0Q29uZmlndXJhdGlvbigpIHsgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vaW9zL0FWQXVkaW9TZXNzaW9uQ2Fw
dHVyZURldmljZU1hbmFnZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9pb3MvQVZBdWRpb1Nlc3Npb25DYXB0dXJlRGV2aWNlTWFuYWdlci5tbQppbmRleCBjYjAwOGNi
YmI5MWFiYjY5NWEwZTVlNzQ0NGZhNjA4Zjk0NzQ4MTJlLi4wZmRhMTNmMTFlMjdmNGViYTQ0YWIw
OWUwZWQ0OWU3ZWU4NDAxMzgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9pb3MvQVZBdWRpb1Nlc3Npb25DYXB0dXJlRGV2aWNlTWFuYWdlci5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9pb3MvQVZBdWRpb1Nlc3Npb25D
YXB0dXJlRGV2aWNlTWFuYWdlci5tbQpAQCAtNDAsMTggKzQwLDE4IEBAIFNPRlRfTElOS19DTEFT
UyhBVkZvdW5kYXRpb24sIEFWQXVkaW9TZXNzaW9uKQogdm9pZCogQXZhaWxhYmxlSW5wdXRzQ29u
dGV4dCA9ICZBdmFpbGFibGVJbnB1dHNDb250ZXh0OwogCiBAaW50ZXJmYWNlIFdlYkFWQXVkaW9T
ZXNzaW9uQXZhaWxhYmxlSW5wdXRzTGlzdGVuZXIgOiBOU09iamVjdCB7Ci0gICAgc3RkOjpmdW5j
dGlvbjx2b2lkKCk+IF9jYWxsYmFjazsKKyAgICBXVEY6OkZ1bmN0aW9uPHZvaWQoKT4gX2NhbGxi
YWNrOwogfQogQGVuZAogCiBAaW1wbGVtZW50YXRpb24gV2ViQVZBdWRpb1Nlc3Npb25BdmFpbGFi
bGVJbnB1dHNMaXN0ZW5lcgotLSAoaWQpaW5pdFdpdGhDYWxsYmFjazooc3RkOjpmdW5jdGlvbjx2
b2lkKCk+KWNhbGxiYWNrCistIChpZClpbml0V2l0aENhbGxiYWNrOihXVEY6OkZ1bmN0aW9uPHZv
aWQoKT4mJiljYWxsYmFjawogewogICAgIHNlbGYgPSBbc3VwZXIgaW5pdF07CiAgICAgaWYgKCFz
ZWxmKQogICAgICAgICByZXR1cm4gbmlsOwogCi0gICAgX2NhbGxiYWNrID0gY2FsbGJhY2s7Cisg
ICAgX2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayk7CiAgICAgcmV0dXJuIHNlbGY7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Db3Jl
QXVkaW9DYXB0dXJlU291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9tYWMvQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZS5oCmluZGV4IGNlMGJkZWUxNjgyNDcxMGU3MzRl
MDExZjkyNDRkYzlkNmVhZTc0MTUuLjhlODk3NDMyMzBhMDNiMGI3ZWExNWExNTZlYTZiZjJhNTM4
MjI3NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21h
Yy9Db3JlQXVkaW9DYXB0dXJlU291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vbWFjL0NvcmVBdWRpb0NhcHR1cmVTb3VyY2UuaApAQCAtNjEsNyArNjEsNyBA
QCBwdWJsaWM6CiAgICAgdm9pZCBhZGRFY2hvQ2FuY2VsbGF0aW9uU291cmNlKEF1ZGlvU2FtcGxl
RGF0YVNvdXJjZSYpOwogICAgIHZvaWQgcmVtb3ZlRWNob0NhbmNlbGxhdGlvblNvdXJjZShBdWRp
b1NhbXBsZURhdGFTb3VyY2UmKTsKIAotICAgIHVzaW5nIE1pY3JvcGhvbmVEYXRhQ2FsbGJhY2sg
PSBzdGQ6OmZ1bmN0aW9uPHZvaWQoY29uc3QgTWVkaWFUaW1lJiBzYW1wbGVUaW1lLCBjb25zdCBQ
bGF0Zm9ybUF1ZGlvRGF0YSYgYXVkaW9EYXRhLCBjb25zdCBBdWRpb1N0cmVhbURlc2NyaXB0aW9u
JiBkZXNjcmlwdGlvbiwgc2l6ZV90IHNhbXBsZUNvdW50KT47CisgICAgdXNpbmcgTWljcm9waG9u
ZURhdGFDYWxsYmFjayA9IFdURjo6RnVuY3Rpb248dm9pZChjb25zdCBNZWRpYVRpbWUmIHNhbXBs
ZVRpbWUsIGNvbnN0IFBsYXRmb3JtQXVkaW9EYXRhJiBhdWRpb0RhdGEsIGNvbnN0IEF1ZGlvU3Ry
ZWFtRGVzY3JpcHRpb24mIGRlc2NyaXB0aW9uLCBzaXplX3Qgc2FtcGxlQ291bnQpPjsKIAogICAg
IHVpbnQ2NF90IGFkZE1pY3JvcGhvbmVEYXRhQ29uc3VtZXIoTWljcm9waG9uZURhdGFDYWxsYmFj
ayYmKTsKICAgICB2b2lkIHJlbW92ZU1pY3JvcGhvbmVEYXRhQ29uc3VtZXIodWludDY0X3QpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9TY3JvbGxBbmltYXRvck1v
Y2suY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9TY3JvbGxBbmltYXRvck1vY2su
Y3BwCmluZGV4IGMwODAzODEwZWRkOGQ1Y2ZkZGFlNGI3NjQ5MWEzODc3NmIyNzZiZmIuLjUyMmFl
YjJhY2RiNTI4OTNhYWRjNjYyNDExNzlkMjU0ZWI0OWY4ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21vY2svU2Nyb2xsQW5pbWF0b3JNb2NrLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1Njcm9sbEFuaW1hdG9yTW9jay5jcHAKQEAgLTM2LDcgKzM2
LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1TY3JvbGxBbmltYXRvck1vY2s6OlNjcm9s
bEFuaW1hdG9yTW9jayhTY3JvbGxhYmxlQXJlYSYgc2Nyb2xsYWJsZUFyZWEsIHN0ZDo6ZnVuY3Rp
b248dm9pZChjb25zdCBTdHJpbmcmKT4mJiBsb2dnZXIpCitTY3JvbGxBbmltYXRvck1vY2s6OlNj
cm9sbEFuaW1hdG9yTW9jayhTY3JvbGxhYmxlQXJlYSYgc2Nyb2xsYWJsZUFyZWEsIFdURjo6RnVu
Y3Rpb248dm9pZChjb25zdCBTdHJpbmcmKT4mJiBsb2dnZXIpCiAgICAgOiBTY3JvbGxBbmltYXRv
cihzY3JvbGxhYmxlQXJlYSkKICAgICAsIG1fbG9nZ2VyKFdURk1vdmUobG9nZ2VyKSkKIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svU2Nyb2xsQW5pbWF0b3JNb2Nr
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1Njcm9sbEFuaW1hdG9yTW9jay5oCmlu
ZGV4IDg1ZGM0ZjZlZGMzZTViM2NjZTQ1Mzc4M2U2ZTBkM2Q5NTExMjRmN2QuLjIzMGI5YWYzMWQw
N2ZiMjgzYjY2YjFkOWYyNjZiODAxYWNmYzMyMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21vY2svU2Nyb2xsQW5pbWF0b3JNb2NrLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbW9jay9TY3JvbGxBbmltYXRvck1vY2suaApAQCAtNDAsNyArNDAsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAvLyB0aGUgaW50ZXJuYWwgc2V0dGluZyBlbmFibGVNb2NrU2Nyb2xs
QW5pbWF0b3IuCiBjbGFzcyBTY3JvbGxBbmltYXRvck1vY2sgZmluYWwgOiBwdWJsaWMgU2Nyb2xs
QW5pbWF0b3IgewogcHVibGljOgotICAgIFNjcm9sbEFuaW1hdG9yTW9jayhTY3JvbGxhYmxlQXJl
YSYsIHN0ZDo6ZnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcmKT4mJik7CisgICAgU2Nyb2xsQW5p
bWF0b3JNb2NrKFNjcm9sbGFibGVBcmVhJiwgV1RGOjpGdW5jdGlvbjx2b2lkKGNvbnN0IFN0cmlu
ZyYpPiYmKTsKICAgICB2aXJ0dWFsIH5TY3JvbGxBbmltYXRvck1vY2soKTsKIAogI2lmIEVOQUJM
RShSVUJCRVJfQkFORElORykKQEAgLTY4LDcgKzY4LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIG1v
dXNlRXhpdGVkU2Nyb2xsYmFyKFNjcm9sbGJhciopIGNvbnN0IG92ZXJyaWRlOwogICAgIHZvaWQg
bW91c2VJc0Rvd25JblNjcm9sbGJhcihTY3JvbGxiYXIqLCBib29sKSBjb25zdCBvdmVycmlkZTsK
IAotICAgIHN0ZDo6ZnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcmKT4gbV9sb2dnZXI7CisgICAg
V1RGOjpGdW5jdGlvbjx2b2lkKGNvbnN0IFN0cmluZyYpPiBtX2xvZ2dlcjsKICAgICBTY3JvbGxi
YXIqIG1fdmVydGljYWxTY3JvbGxiYXIgeyBudWxscHRyIH07CiAgICAgU2Nyb2xsYmFyKiBtX2hv
cml6b250YWxTY3JvbGxiYXIgeyBudWxscHRyIH07CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9Db29raWVTdG9yYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL0Nvb2tpZVN0b3JhZ2UuaAppbmRleCBjNTA1M2NjOTA1ZGI2ZTgxYmY2
ZjRlNWQ2OGY5ZjU4ODU2MDAyMzJjLi44MWVmY2JmMDA1ZTg0ZDUzYTUyNGM2M2RiNTMzNmJiYjcy
ZmM4NTlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Nvb2tp
ZVN0b3JhZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Nvb2tpZVN0
b3JhZ2UuaApAQCAtMjUsMTMgKzI1LDEzIEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSA8
ZnVuY3Rpb25hbD4KKyNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBjbGFzcyBOZXR3b3JrU3RvcmFnZVNlc3Npb247CiAKLVdFQkNPUkVfRVhQT1JUIHZv
aWQgc3RhcnRPYnNlcnZpbmdDb29raWVDaGFuZ2VzKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lv
biYsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4mJik7CitXRUJDT1JFX0VYUE9SVCB2b2lkIHN0YXJ0
T2JzZXJ2aW5nQ29va2llQ2hhbmdlcyhjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBXVEY6
OkZ1bmN0aW9uPHZvaWQgKCk+JiYpOwogV0VCQ09SRV9FWFBPUlQgdm9pZCBzdG9wT2JzZXJ2aW5n
Q29va2llQ2hhbmdlcyhjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mKTsKIAogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RhdGVOb3RpZmll
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdGF0ZU5vdGlm
aWVyLmNwcAppbmRleCA1NTc0YTM1ODM0Y2M2MDFmNTg2ZWVkNzk1MmM1YWE0ODExNmY4OWVmLi5h
ZDE1ZTVjZjNjM2ZkMTUyNmY3YTY0NDg1MDQwYjVkOTk4MmM5MzBkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdGF0ZU5vdGlmaWVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdGF0ZU5vdGlmaWVyLmNw
cApAQCAtNDgsNyArNDgsNyBAQCBOZXR3b3JrU3RhdGVOb3RpZmllciYgbmV0d29ya1N0YXRlTm90
aWZpZXIoKQogICAgIHJldHVybiBuZXR3b3JrU3RhdGVOb3RpZmllcjsKIH0KIAotdm9pZCBOZXR3
b3JrU3RhdGVOb3RpZmllcjo6YWRkTmV0d29ya1N0YXRlQ2hhbmdlTGlzdGVuZXIoc3RkOjpmdW5j
dGlvbjx2b2lkIChib29sKT4gbGlzdGVuZXIpCit2b2lkIE5ldHdvcmtTdGF0ZU5vdGlmaWVyOjph
ZGROZXR3b3JrU3RhdGVDaGFuZ2VMaXN0ZW5lcihXVEY6OkZ1bmN0aW9uPHZvaWQgKGJvb2wpPiYm
IGxpc3RlbmVyKQogewogICAgIEFTU0VSVChsaXN0ZW5lcik7CiAjaWYgUExBVEZPUk0oSU9TKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RhdGVO
b3RpZmllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RhdGVO
b3RpZmllci5oCmluZGV4IDUyODJlYzA2NmFiYmEyMzcxNzY4YTg0YWQ5YTJhNTIwNjBiZDM0MmYu
LmMzYTQyOTAzY2QwYjg5Y2E2MmExYjE4NTI2MTNlZWQwYWU4NmExODEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0YXRlTm90aWZpZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdGF0ZU5vdGlmaWVyLmgK
QEAgLTI2LDggKzI2LDggQEAKICNpZm5kZWYgTmV0d29ya1N0YXRlTm90aWZpZXJfaAogI2RlZmlu
ZSBOZXR3b3JrU3RhdGVOb3RpZmllcl9oCiAKLSNpbmNsdWRlIDxmdW5jdGlvbmFsPgogI2luY2x1
ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CisjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+CiAjaW5jbHVk
ZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCkBAIC01OSw3
ICs1OSw3IEBAIHB1YmxpYzoKICNpZiBQTEFURk9STShJT1MpCiAgICAgfk5ldHdvcmtTdGF0ZU5v
dGlmaWVyKCk7CiAjZW5kaWYKLSAgICB2b2lkIGFkZE5ldHdvcmtTdGF0ZUNoYW5nZUxpc3RlbmVy
KHN0ZDo6ZnVuY3Rpb248dm9pZCAoYm9vbCBpc09uTGluZSk+KTsKKyAgICB2b2lkIGFkZE5ldHdv
cmtTdGF0ZUNoYW5nZUxpc3RlbmVyKFdURjo6RnVuY3Rpb248dm9pZCAoYm9vbCBpc09uTGluZSk+
JiYpOwogCiAgICAgYm9vbCBvbkxpbmUoKSBjb25zdDsKIApAQCAtNjcsNyArNjcsNyBAQCBwcml2
YXRlOgogI2lmICFQTEFURk9STShJT1MpCiAgICAgYm9vbCBtX2lzT25MaW5lOwogI2VuZGlmCi0g
ICAgVmVjdG9yPHN0ZDo6ZnVuY3Rpb248dm9pZCAoYm9vbCk+PiBtX2xpc3RlbmVyczsKKyAgICBW
ZWN0b3I8V1RGOjpGdW5jdGlvbjx2b2lkIChib29sKT4+IG1fbGlzdGVuZXJzOwogCiAgICAgdm9p
ZCBub3RpZnlOZXR3b3JrU3RhdGVDaGFuZ2UoKSBjb25zdDsKICAgICB2b2lkIHVwZGF0ZVN0YXRl
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtT
dG9yYWdlU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdv
cmtTdG9yYWdlU2Vzc2lvbi5jcHAKaW5kZXggNTViZTljY2Y0MmE2ZmMxMWQxNTY3YmMwN2M0Zjkx
NDRhY2Y2M2JmMy4uOThkYTA4MmFlZTYzNDc4OTcwYmNlMDkzOTU2ZjMzYzE5OGE1NjUxMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNl
c3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0
b3JhZ2VTZXNzaW9uLmNwcApAQCAtNTAsNyArNTAsNyBAQCB2b2lkIE5ldHdvcmtTdG9yYWdlU2Vz
c2lvbjo6ZGVzdHJveVNlc3Npb24oU2Vzc2lvbklEIHNlc3Npb25JRCkKICAgICBnbG9iYWxTZXNz
aW9uTWFwKCkucmVtb3ZlKHNlc3Npb25JRCk7CiB9CiAKLXZvaWQgTmV0d29ya1N0b3JhZ2VTZXNz
aW9uOjpmb3JFYWNoKHN0ZDo6ZnVuY3Rpb248dm9pZChjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3Rv
cmFnZVNlc3Npb24mKT4gZnVuY3RvcikKK3ZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpmb3JF
YWNoKGNvbnN0IFdURjo6RnVuY3Rpb248dm9pZChjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFn
ZVNlc3Npb24mKT4mIGZ1bmN0b3IpCiB7CiAgICAgZnVuY3RvcihkZWZhdWx0U3RvcmFnZVNlc3Np
b24oKSk7CiAgICAgZm9yIChhdXRvJiBzdG9yYWdlU2Vzc2lvbiA6IGdsb2JhbFNlc3Npb25NYXAo
KS52YWx1ZXMoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
TmV0d29ya1N0b3JhZ2VTZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oCmluZGV4IGIwOTc2ZDk3NTIwNjI4OGU3MTRkYmMwZmNj
YjU2NDZiMzM3NTg5MTUuLjI4NTVjYjc5ZDIxNmE2Y2U0ZmQ4OGVkYTUzOTQzMjNiYzg3NDU3ZDEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3Jr
U3RvcmFnZVNlc3Npb24uaApAQCAtMjcsNyArMjcsNyBAQAogCiAjaW5jbHVkZSAiQ3JlZGVudGlh
bFN0b3JhZ2UuaCIKICNpbmNsdWRlICJTZXNzaW9uSUQuaCIKLSNpbmNsdWRlIDxmdW5jdGlvbmFs
PgorI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAj
aW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKQEAgLTYyLDcgKzYyLDcgQEAgcHVibGlj
OgogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIGVuc3VyZVByaXZhdGVCcm93c2luZ1Nl
c3Npb24oU2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIGlkZW50aWZpZXJCYXNlID0gU3RyaW5nKCkp
OwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIGVuc3VyZVNlc3Npb24oU2Vzc2lvbklE
LCBjb25zdCBTdHJpbmcmIGlkZW50aWZpZXJCYXNlID0gU3RyaW5nKCkpOwogICAgIFdFQkNPUkVf
RVhQT1JUIHN0YXRpYyB2b2lkIGRlc3Ryb3lTZXNzaW9uKFNlc3Npb25JRCk7Ci0gICAgV0VCQ09S
RV9FWFBPUlQgc3RhdGljIHZvaWQgZm9yRWFjaChzdGQ6OmZ1bmN0aW9uPHZvaWQoY29uc3QgV2Vi
Q29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJik+KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0
aWMgdm9pZCBmb3JFYWNoKGNvbnN0IFdURjo6RnVuY3Rpb248dm9pZChjb25zdCBXZWJDb3JlOjpO
ZXR3b3JrU3RvcmFnZVNlc3Npb24mKT4mKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2
b2lkIHN3aXRjaFRvTmV3VGVzdGluZ1Nlc3Npb24oKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Db29raWVTdG9yYWdlQ0ZOZXQuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Db29raWVTdG9yYWdlQ0ZOZXQuY3BwCmluZGV4
IDYxOWIwNzg5MDlkMzFiZDQ0YzEzY2NmYzkzMmEzY2RkZGJjOGNhNTMuLmNlNmM5MmEyYmI3ZmMy
YTFkMGVkNjA2MGU1MTE0YjU4NDRkMjYxNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY2YvQ29va2llU3RvcmFnZUNGTmV0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0Nvb2tpZVN0b3JhZ2VDRk5ldC5jcHAKQEAgLTI3LDYg
KzI3LDcgQEAKICNpbmNsdWRlICJDb29raWVTdG9yYWdlLmgiCiAKICNpbmNsdWRlICJOZXR3b3Jr
U3RvcmFnZVNlc3Npb24uaCIKKyNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KICNpbmNsdWRlIDx3
dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5jbHVkZSA8d3Rm
L05ldmVyRGVzdHJveWVkLmg+CkBAIC00MywxNyArNDQsMTggQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiAjaWYgUExBVEZPUk0oV0lOKQogCi1zdGF0aWMgSGFzaE1hcDxDRkhUVFBDb29raWVTdG9y
YWdlUmVmLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+PiYgY29va2llQ2hhbmdlQ2FsbGJhY2tNYXAo
KQorc3RhdGljIEhhc2hNYXA8Q0ZIVFRQQ29va2llU3RvcmFnZVJlZiwgV1RGOjpGdW5jdGlvbjx2
b2lkICgpPj4mIGNvb2tpZUNoYW5nZUNhbGxiYWNrTWFwKCkKIHsKLSAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8SGFzaE1hcDxDRkhUVFBDb29raWVTdG9yYWdlUmVmLCBzdGQ6OmZ1bmN0aW9uPHZv
aWQgKCk+Pj4gbWFwOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoTWFwPENGSFRUUENv
b2tpZVN0b3JhZ2VSZWYsIFdURjo6RnVuY3Rpb248dm9pZCAoKT4+PiBtYXA7CiAgICAgcmV0dXJu
IG1hcDsKIH0KIAogc3RhdGljIHZvaWQgbm90aWZ5Q29va2llc0NoYW5nZWQoQ0ZIVFRQQ29va2ll
U3RvcmFnZVJlZiBjb29raWVTdG9yYWdlLCB2b2lkICopCiB7CiAgICAgY2FsbE9uTWFpblRocmVh
ZChbY29va2llU3RvcmFnZV0gewotICAgICAgICBpZiAoYXV0byBjYWxsYmFjayA9IGNvb2tpZUNo
YW5nZUNhbGxiYWNrTWFwKCkuZ2V0KGNvb2tpZVN0b3JhZ2UpKQotICAgICAgICAgICAgY2FsbGJh
Y2soKTsKKyAgICAgICAgYXV0byBpdCA9IGNvb2tpZUNoYW5nZUNhbGxiYWNrTWFwKCkuZmluZChj
b29raWVTdG9yYWdlKTsKKyAgICAgICAgaWYgKGl0ICE9IGNvb2tpZUNoYW5nZUNhbGxiYWNrTWFw
KCkuZW5kKCkpCisgICAgICAgICAgICAoKml0LnZhbHVlKSgpOwogICAgIH0pOwogfQogCkBAIC02
OCw3ICs3MCw3IEBAIHN0YXRpYyBpbmxpbmUgQ0ZSdW5Mb29wUmVmIGNvb2tpZVN0b3JhZ2VPYnNl
cnZlclJ1bkxvb3AoKQogICAgIHJldHVybiBsb2FkZXJSdW5Mb29wKCk7CiB9CiAKLXZvaWQgc3Rh
cnRPYnNlcnZpbmdDb29raWVDaGFuZ2VzKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc3Rv
cmFnZVNlc3Npb24sIHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4mJiBjYWxsYmFjaykKK3ZvaWQgc3Rh
cnRPYnNlcnZpbmdDb29raWVDaGFuZ2VzKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc3Rv
cmFnZVNlc3Npb24sIFdURjo6RnVuY3Rpb248dm9pZCAoKT4mJiBjYWxsYmFjaykKIHsKICAgICBB
U1NFUlQoaXNNYWluVGhyZWFkKCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2NmL1NvY2tldFN0cmVhbUhhbmRsZUltcGxDRk5ldC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1NvY2tldFN0cmVhbUhhbmRsZUltcGxDRk5ldC5j
cHAKaW5kZXggZWQ0MTA5YWU2ZDc2OTgwMTFlMzRlMjUyZDI2NGY2ODE5MTE5YzlmYS4uNDE3Njgw
MDhkODMxNWNjZTljYWQ2YzQ2MmE0MGQ0ZDMyMWNjZmU0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsQ0ZOZXQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvU29ja2V0U3RyZWFtSGFu
ZGxlSW1wbENGTmV0LmNwcApAQCAtMTQ0LDcgKzE0NCw3IEBAIENGU3RyaW5nUmVmIFNvY2tldFN0
cmVhbUhhbmRsZUltcGw6OmNvcHlQQUNFeGVjdXRpb25EZXNjcmlwdGlvbih2b2lkKikKICAgICBy
ZXR1cm4gQ0ZTVFIoIldlYlNvY2tldCBwcm94eSBQQUMgZmlsZSBleGVjdXRpb24iKTsKIH0KIAot
c3RhdGljIHZvaWQgY2FsbE9uTWFpblRocmVhZEFuZFdhaXQoc3RkOjpmdW5jdGlvbjx2b2lkKCk+
IGZ1bmN0aW9uKQorc3RhdGljIHZvaWQgY2FsbE9uTWFpblRocmVhZEFuZFdhaXQoV1RGOjpGdW5j
dGlvbjx2b2lkKCk+JiYgZnVuY3Rpb24pCiB7CiAgICAgaWYgKGlzTWFpblRocmVhZCgpKSB7CiAg
ICAgICAgIGZ1bmN0aW9uKCk7CkBAIC0xNTYsNyArMTU2LDcgQEAgc3RhdGljIHZvaWQgY2FsbE9u
TWFpblRocmVhZEFuZFdhaXQoc3RkOjpmdW5jdGlvbjx2b2lkKCk+IGZ1bmN0aW9uKQogCiAgICAg
Ym9vbCBpc0ZpbmlzaGVkID0gZmFsc2U7CiAKLSAgICBjYWxsT25NYWluVGhyZWFkKFsmXSB7Cisg
ICAgY2FsbE9uTWFpblRocmVhZChbJiwgZnVuY3Rpb24gPSBXVEZNb3ZlKGZ1bmN0aW9uKV0gewog
ICAgICAgICBmdW5jdGlvbigpOwogCiAgICAgICAgIHN0ZDo6bG9ja19ndWFyZDxMb2NrPiBsb2Nr
KG11dGV4KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFj
L0Nvb2tpZVN0b3JhZ2VNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21h
Yy9Db29raWVTdG9yYWdlTWFjLm1tCmluZGV4IGU3ODJiMDY2ZTRlYTk2ODVhNDhhZGI3OWU4MWUw
Mzg1MDlkYzQ2Y2IuLmUxNGUzZDE0MGZiMWQ1NzI1YTJlNzZmYzU0ZTk5ZGJjZDkxNjM0YjUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0Nvb2tpZVN0b3Jh
Z2VNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvQ29va2ll
U3RvcmFnZU1hYy5tbQpAQCAtMjMsMTkgKzIzLDIwIEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKICAqLwog
Ci0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiQ29va2llU3RvcmFnZS5oIgorI2ltcG9y
dCAiY29uZmlnLmgiCisjaW1wb3J0ICJDb29raWVTdG9yYWdlLmgiCiAKICNpbXBvcnQgIldlYkNv
cmVTeXN0ZW1JbnRlcmZhY2UuaCIKKyNpbXBvcnQgPHd0Zi9GdW5jdGlvbi5oPgogCiB1c2luZyBu
YW1lc3BhY2UgV2ViQ29yZTsKIAogQGludGVyZmFjZSBXZWJDb29raWVTdG9yYWdlT2JqQ0FkYXB0
ZXIgOiBOU09iamVjdCB7Ci0gICAgc3RkOjpmdW5jdGlvbjx2b2lkICgpPiBtX2Nvb2tpZUNoYW5n
ZUNhbGxiYWNrOworICAgIFdURjo6RnVuY3Rpb248dm9pZCAoKT4gbV9jb29raWVDaGFuZ2VDYWxs
YmFjazsKIH0KIC0odm9pZClub3RpZnlDb29raWVzQ2hhbmdlZE9uTWFpblRocmVhZDsKIC0odm9p
ZCljb29raWVzQ2hhbmdlZE5vdGlmaWNhdGlvbkhhbmRsZXI6KE5TTm90aWZpY2F0aW9uICopbm90
aWZpY2F0aW9uOwotLSh2b2lkKXN0YXJ0TGlzdGVuaW5nRm9yQ29va2llQ2hhbmdlTm90aWZpY2F0
aW9uc1dpdGhDYWxsYmFjazooc3RkOjpmdW5jdGlvbjx2b2lkICgpPiYmKWNhbGxiYWNrOworLSh2
b2lkKXN0YXJ0TGlzdGVuaW5nRm9yQ29va2llQ2hhbmdlTm90aWZpY2F0aW9uc1dpdGhDYWxsYmFj
azooV1RGOjpGdW5jdGlvbjx2b2lkICgpPiYmKWNhbGxiYWNrOwogLSh2b2lkKXN0b3BMaXN0ZW5p
bmdGb3JDb29raWVDaGFuZ2VOb3RpZmljYXRpb25zOwogQGVuZAogCkBAIC01Myw3ICs1NCw3IEBA
IC0odm9pZCljb29raWVzQ2hhbmdlZE5vdGlmaWNhdGlvbkhhbmRsZXI6KE5TTm90aWZpY2F0aW9u
ICopbm90aWZpY2F0aW9uCiAgICAgW3NlbGYgcGVyZm9ybVNlbGVjdG9yT25NYWluVGhyZWFkOkBz
ZWxlY3Rvcihub3RpZnlDb29raWVzQ2hhbmdlZE9uTWFpblRocmVhZCkgd2l0aE9iamVjdDpuaWwg
d2FpdFVudGlsRG9uZTpGQUxTRV07CiB9CiAKLS0odm9pZClzdGFydExpc3RlbmluZ0ZvckNvb2tp
ZUNoYW5nZU5vdGlmaWNhdGlvbnNXaXRoQ2FsbGJhY2s6KHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4m
JiljYWxsYmFjaworLSh2b2lkKXN0YXJ0TGlzdGVuaW5nRm9yQ29va2llQ2hhbmdlTm90aWZpY2F0
aW9uc1dpdGhDYWxsYmFjazooV1RGOjpGdW5jdGlvbjx2b2lkICgpPiYmKWNhbGxiYWNrCiB7CiAg
ICAgQVNTRVJUKCFtX2Nvb2tpZUNoYW5nZUNhbGxiYWNrKTsKICAgICBtX2Nvb2tpZUNoYW5nZUNh
bGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayk7CkBAIC03Miw3ICs3Myw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogc3RhdGljIFdlYkNvb2tpZVN0b3JhZ2VPYmpDQWRhcHRlciAqY29va2llU3Rv
cmFnZUFkYXB0ZXI7CiAKLXZvaWQgc3RhcnRPYnNlcnZpbmdDb29raWVDaGFuZ2VzKGNvbnN0IE5l
dHdvcmtTdG9yYWdlU2Vzc2lvbiYsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4mJiBjYWxsYmFjaykK
K3ZvaWQgc3RhcnRPYnNlcnZpbmdDb29raWVDaGFuZ2VzKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vz
c2lvbiYsIFdURjo6RnVuY3Rpb248dm9pZCAoKT4mJiBjYWxsYmFjaykKIHsKICAgICBpZiAoIWNv
b2tpZVN0b3JhZ2VBZGFwdGVyKQogICAgICAgICBjb29raWVTdG9yYWdlQWRhcHRlciA9IFtbV2Vi
Q29va2llU3RvcmFnZU9iakNBZGFwdGVyIGFsbG9jXSBpbml0XTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Db29raWVTdG9yYWdlU291cC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvQ29va2llU3RvcmFnZVNvdXAuY3Bw
CmluZGV4IGVhNmE2YjI5Mjc4MDkzNWIxODNkYWM2ZjE0MWQ5NjlmM2Q1MzFhMGQuLjQ1ZDdhOTEz
MDkzYTNkNWZkOTY5MDI3Njc3MWZhNDA0YWNmNDAzZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Db29raWVTdG9yYWdlU291cC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0Nvb2tpZVN0b3JhZ2VTb3VwLmNwcApA
QCAtMjMsNyArMjMsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXZvaWQgc3RhcnRPYnNl
cnZpbmdDb29raWVDaGFuZ2VzKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIHN0ZDo6ZnVu
Y3Rpb248dm9pZCAoKT4mJikKK3ZvaWQgc3RhcnRPYnNlcnZpbmdDb29raWVDaGFuZ2VzKGNvbnN0
IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIFdURjo6RnVuY3Rpb248dm9pZCAoKT4mJikKIHsKICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvc291cC9Tb3VwTmV0d29ya1Nlc3Npb24uY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvdXBOZXR3b3JrU2Vzc2lvbi5jcHAKaW5kZXggN2Mx
N2U2MDRlNzhiYjk1YjRkZmE0MDA3ZjAxMjZkZTEyOWJhZjM0YS4uYTNkODQ4MDg0OGUzOTFhZjgy
MDIxMDRmMzZjYWU5YzRkYjViOTEzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9zb3VwL1NvdXBOZXR3b3JrU2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvdXBOZXR3b3JrU2Vzc2lvbi5jcHAKQEAgLTI5Myw3
ICsyOTMsNyBAQCB2b2lkIFNvdXBOZXR3b3JrU2Vzc2lvbjo6c2V0U2hvdWxkSWdub3JlVExTRXJy
b3JzKGJvb2wgaWdub3JlVExTRXJyb3JzKQogICAgIGdJZ25vcmVUTFNFcnJvcnMgPSBpZ25vcmVU
TFNFcnJvcnM7CiB9CiAKLXZvaWQgU291cE5ldHdvcmtTZXNzaW9uOjpjaGVja1RMU0Vycm9ycyhT
b3VwUmVxdWVzdCogc291cFJlcXVlc3QsIFNvdXBNZXNzYWdlKiBtZXNzYWdlLCBzdGQ6OmZ1bmN0
aW9uPHZvaWQgKGNvbnN0IFJlc291cmNlRXJyb3ImKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3Zv
aWQgU291cE5ldHdvcmtTZXNzaW9uOjpjaGVja1RMU0Vycm9ycyhTb3VwUmVxdWVzdCogc291cFJl
cXVlc3QsIFNvdXBNZXNzYWdlKiBtZXNzYWdlLCBXVEY6OkZ1bmN0aW9uPHZvaWQgKGNvbnN0IFJl
c291cmNlRXJyb3ImKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAoZ0lnbm9yZVRM
U0Vycm9ycykgewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7IH0pOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvdXBOZXR3b3JrU2Vzc2lvbi5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvdXBOZXR3b3JrU2Vzc2lv
bi5oCmluZGV4IDkwOGI2Y2I2ZDVlNTQ2ZTgyMWY2ZTc0ODk4YmU4ZWJmMWFkOTZiNDAuLmNkODEw
ZjEyMTU3NjkxYzdjZWViMjZkMzc3ZjExNjhhZDJkZjNjZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb3VwTmV0d29ya1Nlc3Npb24uaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU291cE5ldHdvcmtTZXNzaW9uLmgK
QEAgLTI2LDggKzI2LDggQEAKICNpZm5kZWYgU291cE5ldHdvcmtTZXNzaW9uX2gKICNkZWZpbmUg
U291cE5ldHdvcmtTZXNzaW9uX2gKIAotI2luY2x1ZGUgPGZ1bmN0aW9uYWw+CiAjaW5jbHVkZSA8
Z2xpYi1vYmplY3QuaD4KKyNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KICNpbmNsdWRlIDx3dGYv
Tm9uY29weWFibGUuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL2ds
aWIvR1JlZlB0ci5oPgpAQCAtNjUsNyArNjUsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRBY2Nl
cHRMYW5ndWFnZXMoY29uc3QgQ1N0cmluZyYpOwogCiAgICAgc3RhdGljIHZvaWQgc2V0U2hvdWxk
SWdub3JlVExTRXJyb3JzKGJvb2wpOwotICAgIHN0YXRpYyB2b2lkIGNoZWNrVExTRXJyb3JzKFNv
dXBSZXF1ZXN0KiwgU291cE1lc3NhZ2UqLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKGNvbnN0IFJlc291
cmNlRXJyb3ImKT4mJik7CisgICAgc3RhdGljIHZvaWQgY2hlY2tUTFNFcnJvcnMoU291cFJlcXVl
c3QqLCBTb3VwTWVzc2FnZSosIFdURjo6RnVuY3Rpb248dm9pZCAoY29uc3QgUmVzb3VyY2VFcnJv
ciYpPiYmKTsKICAgICBzdGF0aWMgdm9pZCBhbGxvd1NwZWNpZmljSFRUUFNDZXJ0aWZpY2F0ZUZv
ckhvc3QoY29uc3QgQ2VydGlmaWNhdGVJbmZvJiwgY29uc3QgU3RyaW5nJiBob3N0KTsKIAogICAg
IHN0YXRpYyB2b2lkIHNldEN1c3RvbVByb3RvY29sUmVxdWVzdFR5cGUoR1R5cGUpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZS5jcHAKaW5kZXggODZjNGQ3
YTgyOTRmOWJiOTkyODc3OTQyNjViNmNjYWI2MjQzZDVlOS4uNzU1ZGU3OWY1MTE2OTk4Njg3NDM0
MDdmYmFmZmYyZGYxZGI4NDg4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
c3FsL1NRTGl0ZURhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwv
U1FMaXRlRGF0YWJhc2UuY3BwCkBAIC01MTYsMTkgKzUxNiwxOSBAQCBib29sIFNRTGl0ZURhdGFi
YXNlOjp0dXJuT25JbmNyZW1lbnRhbEF1dG9WYWN1dW0oKQogCiBzdGF0aWMgdm9pZCBkZXN0cm95
Q29sbGF0aW9uRnVuY3Rpb24odm9pZCogYXJnKQogewotICAgIGF1dG8gZiA9IHN0YXRpY19jYXN0
PHN0ZDo6ZnVuY3Rpb248aW50KGludCwgY29uc3Qgdm9pZCosIGludCwgY29uc3Qgdm9pZCopPio+
KGFyZyk7CisgICAgYXV0byBmID0gc3RhdGljX2Nhc3Q8V1RGOjpGdW5jdGlvbjxpbnQoaW50LCBj
b25zdCB2b2lkKiwgaW50LCBjb25zdCB2b2lkKik+Kj4oYXJnKTsKICAgICBkZWxldGUgZjsKIH0K
IAogc3RhdGljIGludCBjYWxsQ29sbGF0aW9uRnVuY3Rpb24odm9pZCogYXJnLCBpbnQgYUxlbmd0
aCwgY29uc3Qgdm9pZCogYSwgaW50IGJMZW5ndGgsIGNvbnN0IHZvaWQqIGIpCiB7Ci0gICAgYXV0
byBmID0gc3RhdGljX2Nhc3Q8c3RkOjpmdW5jdGlvbjxpbnQoaW50LCBjb25zdCB2b2lkKiwgaW50
LCBjb25zdCB2b2lkKik+Kj4oYXJnKTsKKyAgICBhdXRvIGYgPSBzdGF0aWNfY2FzdDxXVEY6OkZ1
bmN0aW9uPGludChpbnQsIGNvbnN0IHZvaWQqLCBpbnQsIGNvbnN0IHZvaWQqKT4qPihhcmcpOwog
ICAgIHJldHVybiAoKmYpKGFMZW5ndGgsIGEsIGJMZW5ndGgsIGIpOwogfQogCi12b2lkIFNRTGl0
ZURhdGFiYXNlOjpzZXRDb2xsYXRpb25GdW5jdGlvbihjb25zdCBTdHJpbmcmIGNvbGxhdGlvbk5h
bWUsIHN0ZDo6ZnVuY3Rpb248aW50KGludCwgY29uc3Qgdm9pZCosIGludCwgY29uc3Qgdm9pZCop
PiBjb2xsYXRpb25GdW5jdGlvbikKK3ZvaWQgU1FMaXRlRGF0YWJhc2U6OnNldENvbGxhdGlvbkZ1
bmN0aW9uKGNvbnN0IFN0cmluZyYgY29sbGF0aW9uTmFtZSwgV1RGOjpGdW5jdGlvbjxpbnQoaW50
LCBjb25zdCB2b2lkKiwgaW50LCBjb25zdCB2b2lkKik+JiYgY29sbGF0aW9uRnVuY3Rpb24pCiB7
Ci0gICAgYXV0byBmdW5jdGlvbk9iamVjdCA9IG5ldyBzdGQ6OmZ1bmN0aW9uPGludChpbnQsIGNv
bnN0IHZvaWQqLCBpbnQsIGNvbnN0IHZvaWQqKT4oY29sbGF0aW9uRnVuY3Rpb24pOworICAgIGF1
dG8gZnVuY3Rpb25PYmplY3QgPSBuZXcgV1RGOjpGdW5jdGlvbjxpbnQoaW50LCBjb25zdCB2b2lk
KiwgaW50LCBjb25zdCB2b2lkKik+KFdURk1vdmUoY29sbGF0aW9uRnVuY3Rpb24pKTsKICAgICBz
cWxpdGUzX2NyZWF0ZV9jb2xsYXRpb25fdjIobV9kYiwgY29sbGF0aW9uTmFtZS51dGY4KCkuZGF0
YSgpLCBTUUxJVEVfVVRGOCwgZnVuY3Rpb25PYmplY3QsIGNhbGxDb2xsYXRpb25GdW5jdGlvbiwg
ZGVzdHJveUNvbGxhdGlvbkZ1bmN0aW9uKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9zcWwvU1FMaXRlRGF0YWJhc2UuaAppbmRleCBlZTliYTJiZTFlMjUwNDVmOWMzYTYxNWU2NmU3
N2JmZjc1M2M0Mjg4Li4zNGRiNjk0Y2MzM2NmMmUwNjE1ZjhjNjZlMTViMWMxOWNjOTFiOTk5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2UuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2UuaApAQCAtMTI1
LDcgKzEyNSw3IEBAIHB1YmxpYzoKICAgICBlbnVtIEF1dG9WYWN1dW1QcmFnbWEgeyBBdXRvVmFj
dXVtTm9uZSA9IDAsIEF1dG9WYWN1dW1GdWxsID0gMSwgQXV0b1ZhY3V1bUluY3JlbWVudGFsID0g
MiB9OwogICAgIGJvb2wgdHVybk9uSW5jcmVtZW50YWxBdXRvVmFjdXVtKCk7CiAKLSAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIHNldENvbGxhdGlvbkZ1bmN0aW9uKGNvbnN0IFN0cmluZyYgY29sbGF0
aW9uTmFtZSwgc3RkOjpmdW5jdGlvbjxpbnQoaW50LCBjb25zdCB2b2lkKiwgaW50LCBjb25zdCB2
b2lkKik+KTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldENvbGxhdGlvbkZ1bmN0aW9uKGNv
bnN0IFN0cmluZyYgY29sbGF0aW9uTmFtZSwgV1RGOjpGdW5jdGlvbjxpbnQoaW50LCBjb25zdCB2
b2lkKiwgaW50LCBjb25zdCB2b2lkKik+JiYpOwogICAgIHZvaWQgcmVtb3ZlQ29sbGF0aW9uRnVu
Y3Rpb24oY29uc3QgU3RyaW5nJiBjb2xsYXRpb25OYW1lKTsKIAogICAgIC8vIFNldCB0aGlzIGZs
YWcgdG8gYWxsb3cgYWNjZXNzIGZyb20gbXVsdGlwbGUgdGhyZWFkcy4gIE5vdCBhbGwgbXVsdGkt
dGhyZWFkZWQgYWNjZXNzZXMgYXJlIHNhZmUhCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCmluZGV4IDQ2YmFlZDEwMzRiMjRlNjNiNThlMzk3NjRk
OTczNzFhN2E0ZjkyOTMuLjI5OGJlMDJkOGQxZWJmNzNkNzQyOWFhMTdlYzhlYTBjNjBhZGYyM2Mg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3Bw
CkBAIC0yMDg5LDcgKzIwODksNyBAQCBib29sIFJlbmRlckxheWVyQmFja2luZzo6aXNTaW1wbGVD
b250YWluZXJDb21wb3NpdGluZ0xheWVyKFBhaW50ZWRDb250ZW50c0luZm8mCiAvLyBSZXR1cm5p
bmcgdHJ1ZSBzdG9wcyB0aGUgdHJhdmVyc2FsLgogZW51bSBjbGFzcyBMYXllclRyYXZlcnNhbCB7
IENvbnRpbnVlLCBTdG9wIH07CiAKLXN0YXRpYyBMYXllclRyYXZlcnNhbCB0cmF2ZXJzZVZpc2li
bGVOb25Db21wb3NpdGVkRGVzY2VuZGFudExheWVycyhSZW5kZXJMYXllciYgcGFyZW50LCBzdGQ6
OmZ1bmN0aW9uPExheWVyVHJhdmVyc2FsIChjb25zdCBSZW5kZXJMYXllciYpPiBsYXllckZ1bmMp
CitzdGF0aWMgTGF5ZXJUcmF2ZXJzYWwgdHJhdmVyc2VWaXNpYmxlTm9uQ29tcG9zaXRlZERlc2Nl
bmRhbnRMYXllcnMoUmVuZGVyTGF5ZXImIHBhcmVudCwgY29uc3QgV1RGOjpGdW5jdGlvbjxMYXll
clRyYXZlcnNhbCAoY29uc3QgUmVuZGVyTGF5ZXImKT4mIGxheWVyRnVuYykKIHsKICAgICAvLyBG
SVhNRTogV2Ugc2hvdWxkbid0IGJlIGNhbGxlZCB3aXRoIGEgc3RhbGUgei1vcmRlciBsaXN0cy4g
U2VlIGJ1ZyA4NTUxMi4KICAgICBwYXJlbnQudXBkYXRlTGF5ZXJMaXN0c0lmTmVlZGVkKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHAKaW5kZXggY2NhNDc0ODY0
MjE4ZjBiNzgzNDk5YTk3ZTM0NGVkOTRhYzljYzhlNS4uMzVhOGQ2NGFiYTgzYzFmZjJiODJiOGY3
YmUzMjEzYTFhNGE3N2Q5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxpc3RCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0
Qm94LmNwcApAQCAtMjg2LDcgKzI4Niw3IEBAIExheW91dFJlY3QgUmVuZGVyTGlzdEJveDo6aXRl
bUJvdW5kaW5nQm94UmVjdChjb25zdCBMYXlvdXRQb2ludCYgYWRkaXRpb25hbE9mZnNlCiAgICAg
cmV0dXJuIExheW91dFJlY3QoeCwgeSwgY29udGVudFdpZHRoKCksIGl0ZW1IZWlnaHQoKSk7CiB9
CiAKLXZvaWQgUmVuZGVyTGlzdEJveDo6cGFpbnRJdGVtKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBj
b25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQsIFBhaW50RnVuY3Rpb24gcGFpbnRGdW5jdGlv
bikKK3ZvaWQgUmVuZGVyTGlzdEJveDo6cGFpbnRJdGVtKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBj
b25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQsIGNvbnN0IFBhaW50RnVuY3Rpb24mIHBhaW50
RnVuY3Rpb24pCiB7CiAgICAgaW50IGxpc3RJdGVtc1NpemUgPSBudW1JdGVtcygpOwogICAgIGlu
dCBmaXJzdFZpc2libGVJdGVtID0gbV9pbmRleE9mRmlyc3RWaXNpYmxlSXRlbUluc2lkZVBhZGRp
bmdUb3BBcmVhLnZhbHVlX29yKG1faW5kZXhPZmZzZXQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMaXN0Qm94LmgKaW5kZXggYjE2NTRkZmI2MzNjODJlYTkxMjRkMzEzYzRiZWJkZThl
MDc0N2JhMi4uMjQ4OThjZGRiNDc2NDY4MjkyMWI4YWRmZDZlMGQ2MmZjOWNlMTM0ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5oCkBAIC0xNDMsOCArMTQzLDggQEAg
cHJpdmF0ZToKICAgICAvLyBOT1RFOiBUaGlzIHNob3VsZCBvbmx5IGJlIGNhbGxlZCBieSB0aGUg
b3ZlcnJpZGVuIHNldFNjcm9sbE9mZnNldCBmcm9tIFNjcm9sbGFibGVBcmVhLgogICAgIHZvaWQg
c2Nyb2xsVG8oaW50IG5ld09mZnNldCk7CiAKLSAgICB1c2luZyBQYWludEZ1bmN0aW9uID0gc3Rk
OjpmdW5jdGlvbjx2b2lkKFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50JiwgaW50IGxpc3RJ
dGVtSW5kZXgpPjsKLSAgICB2b2lkIHBhaW50SXRlbShQYWludEluZm8mLCBjb25zdCBMYXlvdXRQ
b2ludCYsIFBhaW50RnVuY3Rpb24pOworICAgIHVzaW5nIFBhaW50RnVuY3Rpb24gPSBXVEY6OkZ1
bmN0aW9uPHZvaWQoUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmLCBpbnQgbGlzdEl0ZW1J
bmRleCk+OworICAgIHZvaWQgcGFpbnRJdGVtKFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50
JiwgY29uc3QgUGFpbnRGdW5jdGlvbiYpOwogCiAgICAgdm9pZCBzZXRIYXNWZXJ0aWNhbFNjcm9s
bGJhcihib29sIGhhc1Njcm9sbGJhcik7CiAgICAgUmVmPFNjcm9sbGJhcj4gY3JlYXRlU2Nyb2xs
YmFyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxh
eW91dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dC5jcHAK
aW5kZXggMjNiMjYyYWI4YWEyYTI3Y2RiNzBlYThjOTgwYTEwMzAzNGFhYTIwNy4uNDQzYTFhZmQ2
M2EzM2EyMzk5Y2QxMGI3NWU1ZmIxNDQzMTA4MmI5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0LmNwcApAQCAtMjU0LDkgKzI1NCw5IEBAIEF2b2lkYW5j
ZVJlYXNvbkZsYWdzIGNhblVzZUZvcldpdGhSZWFzb24oY29uc3QgUmVuZGVyQmxvY2tGbG93JiBm
bG93LCBJbmNsdWRlUmVhCiAjaWZuZGVmIE5ERUJVRwogICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxh
ZyBvbmNlRmxhZzsKICAgICBzdGQ6OmNhbGxfb25jZShvbmNlRmxhZywgW10gewotICAgICAgICBy
ZWdpc3Rlck5vdGlmeUNhbGxiYWNrKCJjb20uYXBwbGUuV2ViS2l0LnNob3dTaW1wbGVMaW5lTGF5
b3V0Q292ZXJhZ2UiLCBwcmludFNpbXBsZUxpbmVMYXlvdXRDb3ZlcmFnZSk7Ci0gICAgICAgIHJl
Z2lzdGVyTm90aWZ5Q2FsbGJhY2soImNvbS5hcHBsZS5XZWJLaXQuc2hvd1NpbXBsZUxpbmVMYXlv
dXRSZWFzb25zIiwgcHJpbnRTaW1wbGVMaW5lTGF5b3V0QmxvY2tMaXN0KTsKLSAgICAgICAgcmVn
aXN0ZXJOb3RpZnlDYWxsYmFjaygiY29tLmFwcGxlLldlYktpdC50b2dnbGVTaW1wbGVMaW5lTGF5
b3V0IiwgdG9nZ2xlU2ltcGxlTGluZUxheW91dCk7CisgICAgICAgIHJlZ2lzdGVyTm90aWZ5Q2Fs
bGJhY2soImNvbS5hcHBsZS5XZWJLaXQuc2hvd1NpbXBsZUxpbmVMYXlvdXRDb3ZlcmFnZSIsIFtd
IHsgcHJpbnRTaW1wbGVMaW5lTGF5b3V0Q292ZXJhZ2UoKTsgfSk7CisgICAgICAgIHJlZ2lzdGVy
Tm90aWZ5Q2FsbGJhY2soImNvbS5hcHBsZS5XZWJLaXQuc2hvd1NpbXBsZUxpbmVMYXlvdXRSZWFz
b25zIiwgW10geyBwcmludFNpbXBsZUxpbmVMYXlvdXRCbG9ja0xpc3QoKTsgfSk7CisgICAgICAg
IHJlZ2lzdGVyTm90aWZ5Q2FsbGJhY2soImNvbS5hcHBsZS5XZWJLaXQudG9nZ2xlU2ltcGxlTGlu
ZUxheW91dCIsIFtdIHsgdG9nZ2xlU2ltcGxlTGluZUxheW91dCgpOyB9KTsKICAgICB9KTsKICNl
bmRpZgogICAgIEF2b2lkYW5jZVJlYXNvbkZsYWdzIHJlYXNvbnMgPSB7IH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbGluZS9CcmVha2luZ0NvbnRleHQuaCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9saW5lL0JyZWFraW5nQ29udGV4dC5oCmluZGV4IDEyNmZkM2Q0
ZWNmOTlkMDQzNGJhNzEzMmE1NzliZjQ1MThmZGI4YTEuLjJkODNmMDc3YTFiY2I2MTZjNjkyYzA1
NWM3N2I4N2Y0ZjFjNzVmMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9s
aW5lL0JyZWFraW5nQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9saW5l
L0JyZWFraW5nQ29udGV4dC5oCkBAIC0zOCw2ICszOCw3IEBACiAjaW5jbHVkZSAiUmVuZGVyUnVi
eVJ1bi5oIgogI2luY2x1ZGUgIlJlbmRlclNWR0lubGluZVRleHQuaCIKICNpbmNsdWRlICJUcmFp
bGluZ09iamVjdHMuaCIKKyNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KICNpbmNsdWRlIDx3dGYv
T3B0aW9uYWwuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdWaWV3Lmg+CiAjaW5jbHVkZSA8
d3RmL3VuaWNvZGUvQ2hhcmFjdGVyTmFtZXMuaD4KQEAgLTE5MSw3ICsxOTIsNyBAQCBwcml2YXRl
OgogICAgICAgICAgICAgdGhpcy0+YXBwZW5kKGluaXRpYWwpOwogICAgICAgICB9CiAKLSAgICAg
ICAgdm9pZCBwdXNoKHN0ZDo6ZnVuY3Rpb248dm9pZChJbmxpbmVJdGVyYXRvciYgbW9kaWZ5TWUp
PiB1cGRhdGVyKQorICAgICAgICB2b2lkIHB1c2goY29uc3QgV1RGOjpGdW5jdGlvbjx2b2lkKElu
bGluZUl0ZXJhdG9yJiBtb2RpZnlNZSk+JiB1cGRhdGVyKQogICAgICAgICB7CiAgICAgICAgICAg
ICBBU1NFUlQoIXRoaXMtPmlzRW1wdHkoKSk7CiAgICAgICAgICAgICBpZiAobV9jYXBhY2l0eSAh
PSAxKQpAQCAtMjAxLDcgKzIwMiw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgdGhpcy0+
cmVzaXplKG1fY2FwYWNpdHkpOwogICAgICAgICB9CiAKLSAgICAgICAgdm9pZCB1cGRhdGUoc3Rk
OjpmdW5jdGlvbjx2b2lkKElubGluZUl0ZXJhdG9yJiBtb2RpZnlNZSk+IHVwZGF0ZXIpCisgICAg
ICAgIHZvaWQgdXBkYXRlKGNvbnN0IFdURjo6RnVuY3Rpb248dm9pZChJbmxpbmVJdGVyYXRvciYg
bW9kaWZ5TWUpPiYgdXBkYXRlcikKICAgICAgICAgewogICAgICAgICAgICAgQVNTRVJUKCF0aGlz
LT5pc0VtcHR5KCkpOwogICAgICAgICAgICAgdXBkYXRlcih0aGlzLT5hdCgwKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL1dvcmtlci5jcHAKaW5kZXggOWM5ODc1ZjBmNTc3ODZhZjJiZGYzZmY4M2Y1Yjc0ZjI4
YTFiYTIxMy4uNjZlOGRhZmE5ODc4NzcxMTY4NjM1MTMyNDc2ZTRhNzA0NWJkMTMzZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvV29ya2VyLmNwcApAQCAtNTksNyArNTksNyBAQCBpbmxpbmUgV29ya2VyOjpX
b3JrZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgSlNDOjpSdW50aW1lRmxhZ3Mg
cnVudGltZQogewogICAgIGlmICghYWxsV29ya2VycykgewogICAgICAgICBhbGxXb3JrZXJzID0g
bmV3IEhhc2hTZXQ8V29ya2VyKj47Ci0gICAgICAgIG5ldHdvcmtTdGF0ZU5vdGlmaWVyKCkuYWRk
TmV0d29ya1N0YXRlQ2hhbmdlTGlzdGVuZXIobmV0d29ya1N0YXRlQ2hhbmdlZCk7CisgICAgICAg
IG5ldHdvcmtTdGF0ZU5vdGlmaWVyKCkuYWRkTmV0d29ya1N0YXRlQ2hhbmdlTGlzdGVuZXIoW10g
KGJvb2wgaXNPbkxpbmUpIHsgbmV0d29ya1N0YXRlQ2hhbmdlZChpc09uTGluZSk7IH0pOwogICAg
IH0KIAogICAgIGF1dG8gYWRkUmVzdWx0ID0gYWxsV29ya2Vycy0+YWRkKHRoaXMpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJSdW5Mb29wLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvV29ya2VyUnVuTG9vcC5jcHAKaW5kZXggNjRjMmVmNDVjNGZkNTkwZjU4
MWQzMGYzODAxOWVjNmU2MDYzNmUxYy4uMjM2MWJmNzQ1YWFiNTRmNTkxMzYwNzM5Mjc2OWI2MmFk
YjNlMGJjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJSdW5Mb29w
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclJ1bkxvb3AuY3BwCkBAIC01
MCw3ICs1MCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFdvcmtlclNoYXJlZFRpbWVy
IGZpbmFsIDogcHVibGljIFNoYXJlZFRpbWVyIHsKIHB1YmxpYzoKICAgICAvLyBTaGFyZWRUaW1l
ciBpbnRlcmZhY2UuCi0gICAgdm9pZCBzZXRGaXJlZEZ1bmN0aW9uKHN0ZDo6ZnVuY3Rpb248dm9p
ZCgpPiYmIGZ1bmN0aW9uKSBvdmVycmlkZSB7IG1fc2hhcmVkVGltZXJGdW5jdGlvbiA9IFdURk1v
dmUoZnVuY3Rpb24pOyB9CisgICAgdm9pZCBzZXRGaXJlZEZ1bmN0aW9uKFdURjo6RnVuY3Rpb248
dm9pZCgpPiYmIGZ1bmN0aW9uKSBvdmVycmlkZSB7IG1fc2hhcmVkVGltZXJGdW5jdGlvbiA9IFdU
Rk1vdmUoZnVuY3Rpb24pOyB9CiAgICAgdm9pZCBzZXRGaXJlSW50ZXJ2YWwoU2Vjb25kcyBpbnRl
cnZhbCkgb3ZlcnJpZGUgeyBtX25leHRGaXJlVGltZSA9IGludGVydmFsICsgV2FsbFRpbWU6Om5v
dygpOyB9CiAgICAgdm9pZCBzdG9wKCkgb3ZlcnJpZGUgeyBtX25leHRGaXJlVGltZSA9IFdhbGxU
aW1lKCk7IH0KIApAQCAtNTksNyArNTksNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBmaXJlKCkgeyBt
X3NoYXJlZFRpbWVyRnVuY3Rpb24oKTsgfQogCiBwcml2YXRlOgotICAgIHN0ZDo6ZnVuY3Rpb248
dm9pZCgpPiBtX3NoYXJlZFRpbWVyRnVuY3Rpb247CisgICAgV1RGOjpGdW5jdGlvbjx2b2lkKCk+
IG1fc2hhcmVkVGltZXJGdW5jdGlvbjsKICAgICBXYWxsVGltZSBtX25leHRGaXJlVGltZTsKIH07
CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>313414</attachid>
            <date>2017-06-20 11:02:25 -0700</date>
            <delta_ts>2017-06-20 13:09:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-173583-20170620110224.patch</filename>
            <type>text/plain</type>
            <size>82704</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE4NTI4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWRjMjgyZDE0ODRkZjk3
MzQ0NTA1MmZiNTI0ZTM3MDljZmQxZDcwNy4uMThlYjAzMzJjOGE2NjQ5ZjdlNDJhOGI0NDUxYjAz
MmE1MDAyODU0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzMCBAQAorMjAxNy0wNi0xOSAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFVzZSBXVEY6OkZ1bmN0aW9u
IGluc3RlYWQgb2Ygc3RkOjpmdW5jdGlvbiBpbiBtb3JlIHBsYWNlcyBpbiBXZWJDb3JlLworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTczNTgzCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXNlIFdURjo6RnVu
Y3Rpb24gaW5zdGVhZCBvZiBzdGQ6OmZ1bmN0aW9uIGluIG1vcmUgcGxhY2VzIGluIFdlYkNvcmUv
IHRvCisgICAgICAgIHJlZHVjZSBjb3B5aW5nLgorCisgICAgICAgICogcGFnZS9QYWdlLmNwcDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9IeXN0ZXJlc2lzQWN0aXZpdHkuaDoKKyAgICAgICAgKFdlYkNv
cmU6Okh5c3RlcmVzaXNBY3Rpdml0eTo6SHlzdGVyZXNpc0FjdGl2aXR5KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9Mb2dnaW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnJlZ2lzdGVyTm90aWZ5Q2Fs
bGJhY2spOgorICAgICAgICAqIHBsYXRmb3JtL0xvZ2dpbmcuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9NYWluVGhyZWFkU2hhcmVkVGltZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWFpblRocmVh
ZFNoYXJlZFRpbWVyOjpzZXRGaXJlZEZ1bmN0aW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9NYWlu
VGhyZWFkU2hhcmVkVGltZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9QbGF0Zm9ybVBhc3RlYm9h
cmQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9TY29wZUd1YXJkLmg6CisgICAgICAgIChXZWJDb3Jl
OjpTY29wZUd1YXJkOjpTY29wZUd1YXJkKToKKyAgICAgICAgKFdlYkNvcmU6OlNjb3BlR3VhcmQ6
OmVuYWJsZSk6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uU21vb3RoLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdGlvblNtb290aDo6U2Nyb2xsQW5pbWF0aW9u
U21vb3RoKToKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxBbmltYXRpb25TbW9vdGguaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9TaGFyZWRUaW1lci5oOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlv
L1BsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbGF0
Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6OmN1cnJlbnRTZXNzaW9uc01hdGNoaW5nKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXIuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9jZi9NYWluVGhyZWFkU2hhcmVkVGltZXJDRi5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpzZXR1cFBvd2VyT2JzZXJ2ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2NmL1J1bkxv
b3BPYnNlcnZlci5oOgorICAgICAgICAoV2ViQ29yZTo6UnVuTG9vcE9ic2VydmVyOjpSdW5Mb29w
T2JzZXJ2ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5o
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6dHJhdmVyc2UpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9N
ZWRpYVBsYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjphZGRNZWRpYUVuZ2luZSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9QYXRoLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb246OnNlZWtDb21wbGV0ZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uOjpzY2hlZHVsZU1haW5U
aHJlYWROb3RpZmljYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uOjpkaXNwYXRjaE5vdGlmaWNhdGlvbik6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5oOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uOjpOb3RpZmlj
YXRpb246Ok5vdGlmaWNhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb246Ok5vdGlmaWNhdGlvbjo6ZnVuY3Rpb24pOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbk9iakMubW06CisgICAgICAgICgtW1dlYkNvcmVBVkZNb3ZpZU9ic2VydmVyIG9ic2VydmVW
YWx1ZUZvcktleVBhdGg6b2ZPYmplY3Q6Y2hhbmdlOmNvbnRleHQ6XSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFT
dHJlYW1BVkZPYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6cnVuV2l0aG91dEFuaW1hdGlvbnMp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0lPU3VyZmFjZS5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0lPU3VyZmFjZS5tbToKKyAgICAgICAgKFdlYkNv
cmU6OklPU3VyZmFjZTo6Y29udmVydFRvRm9ybWF0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvTWFpblRocmVhZE5vdGlmaWVyLmg6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUmVxdWVzdEluc3RhbGxNaXNzaW5nUGx1Z2lu
c0NhbGxiYWNrLmg6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclJlcXVlc3RJbnN0YWxs
TWlzc2luZ1BsdWdpbnNDYWxsYmFjazo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
UGxheWVyUmVxdWVzdEluc3RhbGxNaXNzaW5nUGx1Z2luc0NhbGxiYWNrOjpNZWRpYVBsYXllclJl
cXVlc3RJbnN0YWxsTWlzc2luZ1BsdWdpbnNDYWxsYmFjayk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dERpcmVjdDJELmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd1dpdGhvdXRTaGFkb3cpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3V2l0aFNoYWRvdyk6CisgICAgICAgICogcGxhdGZvcm0v
Z3RrL1Bhc3RlYm9hcmRIZWxwZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkU2V0
RGF0YTo6Q2xpcGJvYXJkU2V0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkSGVs
cGVyOjp3cml0ZUNsaXBib2FyZENvbnRlbnRzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvUGFz
dGVib2FyZEhlbHBlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9QbGF0Zm9ybVBhc3RlYm9h
cmRHdGsuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1QYXN0ZWJvYXJkOjp3cml0ZVRv
Q2xpcGJvYXJkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuSW50
ZXJmYWNlQVZLaXQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVu
SW50ZXJmYWNlQVZLaXQubW06CisgICAgICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VB
VktpdDo6cHJlcGFyZWRUb1JldHVyblRvSW5saW5lKToKKyAgICAgICAgKFdlYlZpZGVvRnVsbHNj
cmVlbkludGVyZmFjZUFWS2l0OjpmdWxsc2NyZWVuTWF5UmV0dXJuVG9JbmxpbmUpOgorICAgICAg
ICAqIHBsYXRmb3JtL21hYy9Qb3dlck9ic2VydmVyTWFjLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlBvd2VyT2JzZXJ2ZXI6OlBvd2VyT2JzZXJ2ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9Q
b3dlck9ic2VydmVyTWFjLmg6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1dlYkNvcmVOU1VSTEV4
dHJhcy5tbToKKyAgICAgICAgKFdlYkNvcmU6OmlzU2Vjb25kTGV2ZWxEb21haW5OYW1lQWxsb3dl
ZEJ5VExEUnVsZXMpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL0NhcHR1cmVEZXZp
Y2VNYW5hZ2VyLmNwcDoKKyAgICAgICAgKENhcHR1cmVEZXZpY2VNYW5hZ2VyOjphZGRDYXB0dXJl
RGV2aWNlQ2hhbmdlZE9ic2VydmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9D
YXB0dXJlRGV2aWNlTWFuYWdlci5oOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL1Jl
YWx0aW1lTWVkaWFTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNv
dXJjZTo6c2NoZWR1bGVEZWZlcnJlZFRhc2spOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3Ry
ZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVh
bS9pb3MvQVZBdWRpb1Nlc3Npb25DYXB0dXJlRGV2aWNlTWFuYWdlci5tbToKKyAgICAgICAgKC1b
V2ViQVZBdWRpb1Nlc3Npb25BdmFpbGFibGVJbnB1dHNMaXN0ZW5lciBpbml0V2l0aENhbGxiYWNr
Ol0pOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Db3JlQXVkaW9DYXB0dXJl
U291cmNlLmg6CisgICAgICAgICogcGxhdGZvcm0vbW9jay9TY3JvbGxBbmltYXRvck1vY2suY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3JNb2NrOjpTY3JvbGxBbmltYXRvck1v
Y2spOgorICAgICAgICAqIHBsYXRmb3JtL21vY2svU2Nyb2xsQW5pbWF0b3JNb2NrLmg6CisgICAg
ICAgICogcGxhdGZvcm0vbmV0d29yay9Db29raWVTdG9yYWdlLmg6CisgICAgICAgICogcGxhdGZv
cm0vbmV0d29yay9OZXR3b3JrU3RhdGVOb3RpZmllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpO
ZXR3b3JrU3RhdGVOb3RpZmllcjo6YWRkTmV0d29ya1N0YXRlQ2hhbmdlTGlzdGVuZXIpOgorICAg
ICAgICAqIHBsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0YXRlTm90aWZpZXIuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246OmZvckVhY2gpOgorICAgICAgICAqIHBsYXRm
b3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmg6CisgICAgICAgICogcGxhdGZvcm0v
bmV0d29yay9jZi9Db29raWVTdG9yYWdlQ0ZOZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29v
a2llQ2hhbmdlQ2FsbGJhY2tNYXApOgorICAgICAgICAoV2ViQ29yZTo6c3RhcnRPYnNlcnZpbmdD
b29raWVDaGFuZ2VzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL1NvY2tldFN0cmVh
bUhhbmRsZUltcGxDRk5ldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjYWxsT25NYWluVGhyZWFk
QW5kV2FpdCk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9tYWMvQ29va2llU3RvcmFnZU1h
Yy5tbToKKyAgICAgICAgKC1bV2ViQ29va2llU3RvcmFnZU9iakNBZGFwdGVyIHN0YXJ0TGlzdGVu
aW5nRm9yQ29va2llQ2hhbmdlTm90aWZpY2F0aW9uc1dpdGhDYWxsYmFjazpdKToKKyAgICAgICAg
KFdlYkNvcmU6OnN0YXJ0T2JzZXJ2aW5nQ29va2llQ2hhbmdlcyk6CisgICAgICAgICogcGxhdGZv
cm0vbmV0d29yay9zb3VwL0Nvb2tpZVN0b3JhZ2VTb3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OnN0YXJ0T2JzZXJ2aW5nQ29va2llQ2hhbmdlcyk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29y
ay9zb3VwL1NvdXBOZXR3b3JrU2Vzc2lvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTb3VwTmV0
d29ya1Nlc3Npb246OmNoZWNrVExTRXJyb3JzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3Jr
L3NvdXAvU291cE5ldHdvcmtTZXNzaW9uLmg6CisgICAgICAgICogcGxhdGZvcm0vc3FsL1NRTGl0
ZURhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmRlc3Ryb3lDb2xsYXRpb25GdW5jdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpjYWxsQ29sbGF0aW9uRnVuY3Rpb24pOgorICAgICAgICAo
V2ViQ29yZTo6U1FMaXRlRGF0YWJhc2U6OnNldENvbGxhdGlvbkZ1bmN0aW9uKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2UuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyTGF5ZXJCYWNraW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRyYXZlcnNlVmlzaWJsZU5v
bkNvbXBvc2l0ZWREZXNjZW5kYW50TGF5ZXJzKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
TGlzdEJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMaXN0Qm94OjpwYWludEl0ZW0p
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMaXN0Qm94Lmg6CisgICAgICAgICogcmVuZGVy
aW5nL2xpbmUvQnJlYWtpbmdDb250ZXh0Lmg6CisgICAgICAgIChXZWJDb3JlOjpCcmVha2luZ0Nv
bnRleHQ6OklubGluZUl0ZXJhdG9ySGlzdG9yeTo6cHVzaCk6CisgICAgICAgIChXZWJDb3JlOjpC
cmVha2luZ0NvbnRleHQ6OklubGluZUl0ZXJhdG9ySGlzdG9yeTo6dXBkYXRlKToKKyAgICAgICAg
KiB3b3JrZXJzL1dvcmtlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXI6Oldvcmtlcik6
CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJSdW5Mb29wLmNwcDoKKwogMjAxNy0wNi0xOSAgTXls
ZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgogCiAgICAgICAgIFtDb2NvYV0g
VGhlIHN5c3RlbSBKYXBhbmVzZSBmb250IGNhbm5vdCBiZSBpdGFsaWNpemVkCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdl
LmNwcAppbmRleCAwMWZhZDM0NTg5ZmUxNDU4MzFkNWY0ZDJiNzRiOWE3NDllN2I5MzAwLi43NGEx
OWU4N2JlMmQ0YWJmOWZhMzA0ZWUyOTU0NzI4ODljYTU1N2I3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAK
QEAgLTI4MSw3ICsyODEsNyBAQCBQYWdlOjpQYWdlKFBhZ2VDb25maWd1cmF0aW9uJiYgcGFnZUNv
bmZpZ3VyYXRpb24pCiAgICAgaWYgKCFhbGxQYWdlcykgewogICAgICAgICBhbGxQYWdlcyA9IG5l
dyBIYXNoU2V0PFBhZ2UqPjsKICAgICAgICAgCi0gICAgICAgIG5ldHdvcmtTdGF0ZU5vdGlmaWVy
KCkuYWRkTmV0d29ya1N0YXRlQ2hhbmdlTGlzdGVuZXIobmV0d29ya1N0YXRlQ2hhbmdlZCk7Cisg
ICAgICAgIG5ldHdvcmtTdGF0ZU5vdGlmaWVyKCkuYWRkTmV0d29ya1N0YXRlQ2hhbmdlTGlzdGVu
ZXIoW10gKGJvb2wgaXNPbkxpbmUpIHsgbmV0d29ya1N0YXRlQ2hhbmdlZChpc09uTGluZSk7IH0p
OwogICAgIH0KIAogICAgIEFTU0VSVCghYWxsUGFnZXMtPmNvbnRhaW5zKHRoaXMpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL1BhZ2VNYWMubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL21hYy9QYWdlTWFjLm1tCmluZGV4IGNmZGQ2ZjVmOTliNTEwNThjNTVmMThhMjMzZDI0
MDUwN2UyNGU4M2MuLjZhMzlkNDY5OWRlMWRjMGM2NjI5ODFlYTM2MDViZWE1M2MyODFkZjUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL1BhZ2VNYWMubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9tYWMvUGFnZU1hYy5tbQpAQCAtNjEsOCArNjEsOCBAQCB2b2lkIFBhZ2U6
OnBsYXRmb3JtSW5pdGlhbGl6ZSgpCiAjaWYgRU5BQkxFKFRSRUVfREVCVUdHSU5HKQogICAgIHN0
YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlRmxhZzsKICAgICBzdGQ6OmNhbGxfb25jZShvbmNlRmxh
ZywgW10gewotICAgICAgICByZWdpc3Rlck5vdGlmeUNhbGxiYWNrKCJjb20uYXBwbGUuV2ViS2l0
LnNob3dSZW5kZXJUcmVlIiwgcHJpbnRSZW5kZXJUcmVlRm9yTGl2ZURvY3VtZW50cyk7Ci0gICAg
ICAgIHJlZ2lzdGVyTm90aWZ5Q2FsbGJhY2soImNvbS5hcHBsZS5XZWJLaXQuc2hvd0xheWVyVHJl
ZSIsIHByaW50TGF5ZXJUcmVlRm9yTGl2ZURvY3VtZW50cyk7CisgICAgICAgIHJlZ2lzdGVyTm90
aWZ5Q2FsbGJhY2soImNvbS5hcHBsZS5XZWJLaXQuc2hvd1JlbmRlclRyZWUiLCBbXSB7IHByaW50
UmVuZGVyVHJlZUZvckxpdmVEb2N1bWVudHMoKTsgfSk7CisgICAgICAgIHJlZ2lzdGVyTm90aWZ5
Q2FsbGJhY2soImNvbS5hcHBsZS5XZWJLaXQuc2hvd0xheWVyVHJlZSIsIFtdIHsgcHJpbnRMYXll
clRyZWVGb3JMaXZlRG9jdW1lbnRzKCk7IH0pOwogICAgIH0pOwogI2VuZGlmCiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9IeXN0ZXJlc2lzQWN0aXZpdHkuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL0h5c3RlcmVzaXNBY3Rpdml0eS5oCmluZGV4IDU5OWUxNzFlYzFh
Y2FkMjBlZDhmMTVkMWI0NWM5ZWFhOWYxY2UwYTAuLjkxMThlYTRlOWZkMDU4Y2UzMTA3NDI5NjEx
M2YzYzNjY2MzMDFlNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0h5c3Rl
cmVzaXNBY3Rpdml0eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0h5c3RlcmVzaXNB
Y3Rpdml0eS5oCkBAIC0zOSw4ICszOSw4IEBAIGVudW0gY2xhc3MgSHlzdGVyZXNpc1N0YXRlIHsK
IAogY2xhc3MgSHlzdGVyZXNpc0FjdGl2aXR5IHsKIHB1YmxpYzoKLSAgICBleHBsaWNpdCBIeXN0
ZXJlc2lzQWN0aXZpdHkoc3RkOjpmdW5jdGlvbjx2b2lkKEh5c3RlcmVzaXNTdGF0ZSk+IGNhbGxi
YWNrID0gW10oSHlzdGVyZXNpc1N0YXRlKSB7IH0sIGRvdWJsZSBoeXN0ZXJlc2lzU2Vjb25kcyA9
IERlZmF1bHRIeXN0ZXJlc2lzU2Vjb25kcykKLSAgICAgICAgOiBtX2NhbGxiYWNrKGNhbGxiYWNr
KQorICAgIGV4cGxpY2l0IEh5c3RlcmVzaXNBY3Rpdml0eShXVEY6OkZ1bmN0aW9uPHZvaWQoSHlz
dGVyZXNpc1N0YXRlKT4mJiBjYWxsYmFjayA9IFtdKEh5c3RlcmVzaXNTdGF0ZSkgeyB9LCBkb3Vi
bGUgaHlzdGVyZXNpc1NlY29uZHMgPSBEZWZhdWx0SHlzdGVyZXNpc1NlY29uZHMpCisgICAgICAg
IDogbV9jYWxsYmFjayhXVEZNb3ZlKGNhbGxiYWNrKSkKICAgICAgICAgLCBtX2h5c3RlcmVzaXNT
ZWNvbmRzKGh5c3RlcmVzaXNTZWNvbmRzKQogICAgICAgICAsIG1fYWN0aXZlKGZhbHNlKQogICAg
ICAgICAsIG1fdGltZXIoKnRoaXMsICZIeXN0ZXJlc2lzQWN0aXZpdHk6Omh5c3RlcmVzaXNUaW1l
ckZpcmVkKQpAQCAtODgsNyArODgsNyBAQCBwcml2YXRlOgogICAgICAgICBtX2NhbGxiYWNrKEh5
c3RlcmVzaXNTdGF0ZTo6U3RvcHBlZCk7CiAgICAgfQogCi0gICAgc3RkOjpmdW5jdGlvbjx2b2lk
KEh5c3RlcmVzaXNTdGF0ZSk+IG1fY2FsbGJhY2s7CisgICAgV1RGOjpGdW5jdGlvbjx2b2lkKEh5
c3RlcmVzaXNTdGF0ZSk+IG1fY2FsbGJhY2s7CiAgICAgZG91YmxlIG1faHlzdGVyZXNpc1NlY29u
ZHM7IC8vIEZJWE1FOiBTaG91bGQgdXNlIFNlY29uZHMuCiAgICAgYm9vbCBtX2FjdGl2ZTsKICAg
ICBUaW1lciBtX3RpbWVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTG9n
Z2luZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2dnaW5nLmNwcAppbmRleCAwZmI1
YmY4MTI5Yzk2NDU0YzRlNGY4MGMwMGRiZmYxN2FhMjM3Yjk0Li44ODg0Mzk5NWM1MzY2OGEzNGU2
YmRjNWViZjQxN2QzMWEzNTJkZTIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9Mb2dnaW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2dnaW5nLmNwcApA
QCAtMzMsNiArMzMsNyBAQAogCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAjaW5jbHVkZSA8bm90aWZ5
Lmg+CisjaW5jbHVkZSA8d3RmL0Jsb2NrUHRyLmg+CiAjZW5kaWYKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewpAQCAtNzksMTMgKzgwLDEzIEBAIHZvaWQgaW5pdGlhbGl6ZUxvZ0NoYW5uZWxzSWZOZWNl
c3NhcnkoKQogfQogCiAjaWZuZGVmIE5ERUJVRwotdm9pZCByZWdpc3Rlck5vdGlmeUNhbGxiYWNr
KGNvbnN0IFN0cmluZyYgbm90aWZ5SUQsIHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiBjYWxsYmFjaykK
K3ZvaWQgcmVnaXN0ZXJOb3RpZnlDYWxsYmFjayhjb25zdCBTdHJpbmcmIG5vdGlmeUlELCBXVEY6
OkZ1bmN0aW9uPHZvaWQoKT4mJiBjYWxsYmFjaykKIHsKICNpZiBQTEFURk9STShDT0NPQSkKICAg
ICBpbnQgdG9rZW47Ci0gICAgbm90aWZ5X3JlZ2lzdGVyX2Rpc3BhdGNoKG5vdGlmeUlELnV0Zjgo
KS5kYXRhKCksICZ0b2tlbiwgZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgXihpbnQpIHsKKyAg
ICBub3RpZnlfcmVnaXN0ZXJfZGlzcGF0Y2gobm90aWZ5SUQudXRmOCgpLmRhdGEoKSwgJnRva2Vu
LCBkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBCbG9ja1B0cjx2b2lkIChpbnQpPjo6ZnJvbUNh
bGxhYmxlKFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSAoaW50KSB7CiAgICAgICAgIGNh
bGxiYWNrKCk7Ci0gICAgfSk7CisgICAgfSkuZ2V0KCkpOwogI2Vsc2UKICAgICBVTlVTRURfUEFS
QU0obm90aWZ5SUQpOwogICAgIFVOVVNFRF9QQVJBTShjYWxsYmFjayk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2dnaW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9Mb2dnaW5nLmgKaW5kZXggODgzYTlmMjIwOTdlZWMxNmRlY2NhNDYzMjI4ODUwNjZiNDY3Yjc0
ZS4uNWFiMDE2MmExNTg0ZDE4NWExYmUzZDUwNmVlOGZhMjhlYWQ3MDM2NyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTG9nZ2luZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0xvZ2dpbmcuaApAQCAtMTAzLDcgKzEwMyw3IEBAIFN0cmluZyBsb2dMZXZlbFN0cmlu
ZygpOwogYm9vbCBpc0xvZ0NoYW5uZWxFbmFibGVkKGNvbnN0IFN0cmluZyYgbmFtZSk7CiBXRUJD
T1JFX0VYUE9SVCB2b2lkIHNldExvZ0NoYW5uZWxUb0FjY3VtdWxhdGUoY29uc3QgU3RyaW5nJiBu
YW1lKTsKICNpZm5kZWYgTkRFQlVHCi12b2lkIHJlZ2lzdGVyTm90aWZ5Q2FsbGJhY2soY29uc3Qg
U3RyaW5nJiBub3RpZnlJRCwgc3RkOjpmdW5jdGlvbjx2b2lkKCk+IGNhbGxiYWNrKTsKK3ZvaWQg
cmVnaXN0ZXJOb3RpZnlDYWxsYmFjayhjb25zdCBTdHJpbmcmIG5vdGlmeUlELCBXVEY6OkZ1bmN0
aW9uPHZvaWQoKT4mJiBjYWxsYmFjayk7CiAjZW5kaWYKIAogI2VuZGlmIC8vICFMT0dfRElTQUJM
RUQgfHwgIVJFTEVBU0VfTE9HX0RJU0FCTEVECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9NYWluVGhyZWFkU2hhcmVkVGltZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vTWFpblRocmVhZFNoYXJlZFRpbWVyLmNwcAppbmRleCBkZGE2ODJlYjg0MTFiYjg2MzIyYjMy
YTFmYTUxYjBiZDJhNTE3Yjg0Li42OGZmMDQzODk3YmJjYTkzMzliZjIzZGM0ZGQxM2M1MjA0Y2Uz
MGUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NYWluVGhyZWFkU2hhcmVk
VGltZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01haW5UaHJlYWRTaGFyZWRU
aW1lci5jcHAKQEAgLTQwLDcgKzQwLDcgQEAgTWFpblRocmVhZFNoYXJlZFRpbWVyOjpNYWluVGhy
ZWFkU2hhcmVkVGltZXIoKQogfQogI2VuZGlmCiAKLXZvaWQgTWFpblRocmVhZFNoYXJlZFRpbWVy
OjpzZXRGaXJlZEZ1bmN0aW9uKHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiYmIGZpcmVkRnVuY3Rpb24p
Cit2b2lkIE1haW5UaHJlYWRTaGFyZWRUaW1lcjo6c2V0RmlyZWRGdW5jdGlvbihXVEY6OkZ1bmN0
aW9uPHZvaWQoKT4mJiBmaXJlZEZ1bmN0aW9uKQogewogICAgIFJFTEVBU0VfQVNTRVJUKCFtX2Zp
cmVkRnVuY3Rpb24gfHwgIWZpcmVkRnVuY3Rpb24pOwogICAgIG1fZmlyZWRGdW5jdGlvbiA9IFdU
Rk1vdmUoZmlyZWRGdW5jdGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9NYWluVGhyZWFkU2hhcmVkVGltZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01haW5U
aHJlYWRTaGFyZWRUaW1lci5oCmluZGV4IDQ5MDczMGYxNDMyZDkzNjBiYjJiZDU4YzBhYWNiNzQy
NDk4NTRlNGIuLjk0YTE5MGQzNzc5OWYyOTQ2Y2Q1NmU5N2Q5MDNmN2M4NWQ1NjRmZjEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01haW5UaHJlYWRTaGFyZWRUaW1lci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01haW5UaHJlYWRTaGFyZWRUaW1lci5oCkBAIC00
MSw3ICs0MSw3IEBAIGNsYXNzIE1haW5UaHJlYWRTaGFyZWRUaW1lciBmaW5hbCA6IHB1YmxpYyBT
aGFyZWRUaW1lciB7CiBwdWJsaWM6CiAgICAgc3RhdGljIE1haW5UaHJlYWRTaGFyZWRUaW1lciYg
c2luZ2xldG9uKCk7CiAKLSAgICB2b2lkIHNldEZpcmVkRnVuY3Rpb24oc3RkOjpmdW5jdGlvbjx2
b2lkKCk+JiYpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0RmlyZWRGdW5jdGlvbihXVEY6OkZ1bmN0
aW9uPHZvaWQoKT4mJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRGaXJlSW50ZXJ2YWwoU2Vjb25k
cykgb3ZlcnJpZGU7CiAgICAgdm9pZCBzdG9wKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBpbnZhbGlk
YXRlKCkgb3ZlcnJpZGU7CkBAIC01Myw3ICs1Myw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAg
TWFpblRocmVhZFNoYXJlZFRpbWVyKCk7CiAKLSAgICBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4gbV9m
aXJlZEZ1bmN0aW9uOworICAgIFdURjo6RnVuY3Rpb248dm9pZCgpPiBtX2ZpcmVkRnVuY3Rpb247
CiAjaWYgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShXUEUpCiAgICAgUnVuTG9vcDo6VGltZXI8
TWFpblRocmVhZFNoYXJlZFRpbWVyPiBtX3RpbWVyOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVBhc3RlYm9hcmQuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1BsYXRmb3JtUGFzdGVib2FyZC5oCmluZGV4IGFmZGExNTVlZjEzNDQzYTkxMWU4
MzA3MGRkYzc3NzFiNWI1MjNkODguLjEzZTU5ODkwODAxOWY2MjRkNWQ1ZGM3NDMzMjU1MGQzZTA2
NjY2YzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtUGFzdGVi
b2FyZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtUGFzdGVib2FyZC5o
CkBAIC0yNiw4ICsyNiw4IEBACiAjaWZuZGVmIFBsYXRmb3JtUGFzdGVib2FyZF9oCiAjZGVmaW5l
IFBsYXRmb3JtUGFzdGVib2FyZF9oCiAKLSNpbmNsdWRlIDxmdW5jdGlvbmFsPgogI2luY2x1ZGUg
PHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+CiAjaW5jbHVkZSA8d3Rm
L1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAjaW5jbHVkZSA8d3Rm
L1ZlY3Rvci5oPgpAQCAtOTMsNyArOTMsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQg
aW50IG51bWJlck9mRmlsZXMoKTsKIAogI2lmIFBMQVRGT1JNKEdUSykKLSAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIHdyaXRlVG9DbGlwYm9hcmQoY29uc3QgU2VsZWN0aW9uRGF0YSYsIHN0ZDo6ZnVu
Y3Rpb248dm9pZCgpPiYmIHByaW1hcnlTZWxlY3Rpb25DbGVhcmVkKTsKKyAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIHdyaXRlVG9DbGlwYm9hcmQoY29uc3QgU2VsZWN0aW9uRGF0YSYsIFdURjo6RnVu
Y3Rpb248dm9pZCgpPiYmIHByaW1hcnlTZWxlY3Rpb25DbGVhcmVkKTsKICAgICBXRUJDT1JFX0VY
UE9SVCBSZWY8U2VsZWN0aW9uRGF0YT4gcmVhZEZyb21DbGlwYm9hcmQoKTsKICNlbmRpZgogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY29wZUd1YXJkLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9TY29wZUd1YXJkLmgKaW5kZXggMjRhYjdmZjU5ZTA0YTk0YTAwNjM5
MTJhYTlmYTlmNTEzNjkwNTg1MS4uZDRjYjNiOWY4ZWIyNDRlMWMxMzhhMDdmNzYyNzgxZGQ2ZDFh
Mjc1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2NvcGVHdWFyZC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njb3BlR3VhcmQuaApAQCAtMjUsNyArMjUsNyBA
QAogI2lmbmRlZiBTY29wZUd1YXJkX2gKICNkZWZpbmUgU2NvcGVHdWFyZF9oCiAKLSNpbmNsdWRl
IDxmdW5jdGlvbmFsPgorI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKQEAgLTM1LDcgKzM1LDcgQEAgcHVibGljOgogICAgIHsKICAgICB9CiAKLSAgICBT
Y29wZUd1YXJkKHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiBmdW5jdGlvbikKKyAgICBTY29wZUd1YXJk
KFdURjo6RnVuY3Rpb248dm9pZCgpPiYmIGZ1bmN0aW9uKQogICAgICAgICA6IG1fZnVuY3Rpb24o
V1RGTW92ZShmdW5jdGlvbikpCiAgICAgewogICAgIH0KQEAgLTQ2LDcgKzQ2LDcgQEAgcHVibGlj
OgogICAgICAgICAgICAgbV9mdW5jdGlvbigpOwogICAgIH0KIAotICAgIHZvaWQgZW5hYmxlKHN0
ZDo6ZnVuY3Rpb248dm9pZCgpPiBmdW5jdGlvbikKKyAgICB2b2lkIGVuYWJsZShXVEY6OkZ1bmN0
aW9uPHZvaWQoKT4mJiBmdW5jdGlvbikKICAgICB7CiAgICAgICAgIG1fZnVuY3Rpb24gPSBXVEZN
b3ZlKGZ1bmN0aW9uKTsKICAgICB9CkBAIC01Nyw3ICs1Nyw3IEBAIHB1YmxpYzoKICAgICB9CiAK
IHByaXZhdGU6Ci0gICAgc3RkOjpmdW5jdGlvbjx2b2lkKCk+IG1fZnVuY3Rpb24geyBudWxscHRy
IH07CisgICAgV1RGOjpGdW5jdGlvbjx2b2lkKCk+IG1fZnVuY3Rpb247CiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3Jv
bGxBbmltYXRpb25TbW9vdGguY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5p
bWF0aW9uU21vb3RoLmNwcAppbmRleCA0YzZiODE0ZjkwZGFlZjBmMTQ5YWM1NDY2ZThjOWM3OGI1
YWE5OTcwLi5lMGZiMTJjNDkxN2E5MDFjZTBjMjQ4Y2QzNDhjYmYwZjVmOWYzMjYwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRpb25TbW9vdGguY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdGlvblNtb290aC5jcHAKQEAg
LTQwLDcgKzQwLDcgQEAgc3RhdGljIGNvbnN0IGRvdWJsZSBmcmFtZVJhdGUgPSA2MDsKIHN0YXRp
YyBjb25zdCBTZWNvbmRzIHRpY2tUaW1lID0gMV9zIC8gZnJhbWVSYXRlOwogc3RhdGljIGNvbnN0
IFNlY29uZHMgbWluaW11bVRpbWVySW50ZXJ2YWwgeyAxX21zIH07CiAKLVNjcm9sbEFuaW1hdGlv
blNtb290aDo6U2Nyb2xsQW5pbWF0aW9uU21vb3RoKFNjcm9sbGFibGVBcmVhJiBzY3JvbGxhYmxl
QXJlYSwgY29uc3QgRmxvYXRQb2ludCYgcG9zaXRpb24sIHN0ZDo6ZnVuY3Rpb248dm9pZCAoRmxv
YXRQb2ludCYmKT4mJiBub3RpZnlQb3NpdGlvbkNoYW5nZWRGdW5jdGlvbikKK1Njcm9sbEFuaW1h
dGlvblNtb290aDo6U2Nyb2xsQW5pbWF0aW9uU21vb3RoKFNjcm9sbGFibGVBcmVhJiBzY3JvbGxh
YmxlQXJlYSwgY29uc3QgRmxvYXRQb2ludCYgcG9zaXRpb24sIFdURjo6RnVuY3Rpb248dm9pZCAo
RmxvYXRQb2ludCYmKT4mJiBub3RpZnlQb3NpdGlvbkNoYW5nZWRGdW5jdGlvbikKICAgICA6IFNj
cm9sbEFuaW1hdGlvbihzY3JvbGxhYmxlQXJlYSkKICAgICAsIG1fbm90aWZ5UG9zaXRpb25DaGFu
Z2VkRnVuY3Rpb24oV1RGTW92ZShub3RpZnlQb3NpdGlvbkNoYW5nZWRGdW5jdGlvbikpCiAgICAg
LCBtX2hvcml6b250YWxEYXRhKHBvc2l0aW9uLngoKSwgc2Nyb2xsYWJsZUFyZWEudmlzaWJsZVdp
ZHRoKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRp
b25TbW9vdGguaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdGlvblNtb290
aC5oCmluZGV4IDI0Mzk2NDhmMTg0ZGM3ZDIyODQ5Y2FlMzk1MWMwYTZkODY3MmRjOTMuLjAyY2M0
ZWUyYmQ3NDNkMDYyOWVhZDA0OGJmNzZjNDgxNjdiZmU4ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdGlvblNtb290aC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdGlvblNtb290aC5oCkBAIC0zOCw3ICszOCw3IEBAIGNs
YXNzIFNjcm9sbGFibGVBcmVhOwogCiBjbGFzcyBTY3JvbGxBbmltYXRpb25TbW9vdGggZmluYWw6
IHB1YmxpYyBTY3JvbGxBbmltYXRpb24gewogcHVibGljOgotICAgIFNjcm9sbEFuaW1hdGlvblNt
b290aChTY3JvbGxhYmxlQXJlYSYsIGNvbnN0IEZsb2F0UG9pbnQmLCBzdGQ6OmZ1bmN0aW9uPHZv
aWQgKEZsb2F0UG9pbnQmJik+JiYgbm90aWZ5UG9zaXRpb25DaGFuZ2VkRnVuY3Rpb24pOworICAg
IFNjcm9sbEFuaW1hdGlvblNtb290aChTY3JvbGxhYmxlQXJlYSYsIGNvbnN0IEZsb2F0UG9pbnQm
LCBXVEY6OkZ1bmN0aW9uPHZvaWQgKEZsb2F0UG9pbnQmJik+JiYgbm90aWZ5UG9zaXRpb25DaGFu
Z2VkRnVuY3Rpb24pOwogICAgIHZpcnR1YWwgflNjcm9sbEFuaW1hdGlvblNtb290aCgpOwogCiAg
ICAgZW51bSBjbGFzcyBDdXJ2ZSB7CkBAIC05Nyw3ICs5Nyw3IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCBhbmltYXRpb25UaW1lckZpcmVkKCk7CiAgICAgYm9vbCBhbmltYXRpb25UaW1lckFjdGl2ZSgp
IGNvbnN0OwogCi0gICAgc3RkOjpmdW5jdGlvbjx2b2lkIChGbG9hdFBvaW50JiYpPiBtX25vdGlm
eVBvc2l0aW9uQ2hhbmdlZEZ1bmN0aW9uOworICAgIFdURjo6RnVuY3Rpb248dm9pZCAoRmxvYXRQ
b2ludCYmKT4gbV9ub3RpZnlQb3NpdGlvbkNoYW5nZWRGdW5jdGlvbjsKIAogICAgIFBlckF4aXNE
YXRhIG1faG9yaXpvbnRhbERhdGE7CiAgICAgUGVyQXhpc0RhdGEgbV92ZXJ0aWNhbERhdGE7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRUaW1lci5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkVGltZXIuaAppbmRleCA3Nzc3ZjY3YzlhYWY3M2UwY2Jm
YTcwODg4NzYxM2I2ZjIzMzI5MjYyLi40NDQ1ZTNiNzJlNzZhOTIxYzBiZThmM2U4Nzc5ZTU1NTM2
MmU3MDQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRUaW1lci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZFRpbWVyLmgKQEAgLTI2LDggKzI2
LDggQEAKICNpZm5kZWYgU2hhcmVkVGltZXJfaAogI2RlZmluZSBTaGFyZWRUaW1lcl9oCiAKLSNp
bmNsdWRlIDxmdW5jdGlvbmFsPgogI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CisjaW5jbHVk
ZSA8d3RmL0Z1bmN0aW9uLmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAjaW5jbHVk
ZSA8d3RmL1NlY29uZHMuaD4KIApAQCAtNDEsNyArNDEsNyBAQCBjbGFzcyBTaGFyZWRUaW1lciB7
CiBwdWJsaWM6CiAgICAgU2hhcmVkVGltZXIoKSA9IGRlZmF1bHQ7CiAgICAgdmlydHVhbCB+U2hh
cmVkVGltZXIoKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgc2V0RmlyZWRGdW5jdGlvbihzdGQ6OmZ1
bmN0aW9uPHZvaWQoKT4mJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRGaXJlZEZ1bmN0aW9u
KFdURjo6RnVuY3Rpb248dm9pZCgpPiYmKSA9IDA7CiAKICAgICAvLyBUaGUgZmlyZSBpbnRlcnZh
bCBpcyBpbiBzZWNvbmRzIHJlbGF0aXZlIHRvIHRoZSBjdXJyZW50IG1vbm90b25pYyBjbG9jayB0
aW1lLgogICAgIHZpcnR1YWwgdm9pZCBzZXRGaXJlSW50ZXJ2YWwoU2Vjb25kcykgPSAwOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Np
b25NYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVk
aWFTZXNzaW9uTWFuYWdlci5jcHAKaW5kZXggYWRkYmM0M2Y4MDVkZDUwMmIzY2Q3OWVlNDY3NTM2
NTZlNTRiNzZhYS4uMDNkNzYxZWJjMTg5NDYyODU3ODkzOGU3ZDFjYWMwYmFjNjAwYjdkOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Np
b25NYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9QbGF0Zm9y
bU1lZGlhU2Vzc2lvbk1hbmFnZXIuY3BwCkBAIC0yNzcsNyArMjc3LDcgQEAgUGxhdGZvcm1NZWRp
YVNlc3Npb24qIFBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6Y3VycmVudFNlc3Npb24oKSBj
b25zdAogICAgIHJldHVybiBtX3Nlc3Npb25zWzBdOwogfQogCi1WZWN0b3I8UGxhdGZvcm1NZWRp
YVNlc3Npb24qPiBQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6OmN1cnJlbnRTZXNzaW9uc01h
dGNoaW5nKHN0ZDo6ZnVuY3Rpb248Ym9vbChjb25zdCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbiAmKT4g
ZmlsdGVyKQorVmVjdG9yPFBsYXRmb3JtTWVkaWFTZXNzaW9uKj4gUGxhdGZvcm1NZWRpYVNlc3Np
b25NYW5hZ2VyOjpjdXJyZW50U2Vzc2lvbnNNYXRjaGluZyhjb25zdCBXVEY6OkZ1bmN0aW9uPGJv
b2woY29uc3QgUGxhdGZvcm1NZWRpYVNlc3Npb24mKT4mIGZpbHRlcikKIHsKICAgICBWZWN0b3I8
UGxhdGZvcm1NZWRpYVNlc3Npb24qPiBtYXRjaGluZ1Nlc3Npb25zOwogICAgIGZvckVhY2hTZXNz
aW9uKFsmXSAoUGxhdGZvcm1NZWRpYVNlc3Npb24mIHNlc3Npb24sIHNpemVfdCkgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Npb25N
YW5hZ2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vz
c2lvbk1hbmFnZXIuaAppbmRleCBmMmUwZjk4NzM3NGJjNTk0NTMyODkxMTgzNWY5MGUxNWMwMDBm
NjgyLi44NDI3NDhmZmI2NDk1ZWMxMzY3NDAzMzI1YTEzNmZmMDZkOWYxYzFlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFn
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vz
c2lvbk1hbmFnZXIuaApAQCAtMTA1LDcgKzEwNSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEN1
cnJlbnRTZXNzaW9uKFBsYXRmb3JtTWVkaWFTZXNzaW9uJik7CiAgICAgUGxhdGZvcm1NZWRpYVNl
c3Npb24qIGN1cnJlbnRTZXNzaW9uKCkgY29uc3Q7CiAKLSAgICBWZWN0b3I8UGxhdGZvcm1NZWRp
YVNlc3Npb24qPiBjdXJyZW50U2Vzc2lvbnNNYXRjaGluZyhzdGQ6OmZ1bmN0aW9uPGJvb2woY29u
c3QgUGxhdGZvcm1NZWRpYVNlc3Npb24mKT4pOworICAgIFZlY3RvcjxQbGF0Zm9ybU1lZGlhU2Vz
c2lvbio+IGN1cnJlbnRTZXNzaW9uc01hdGNoaW5nKGNvbnN0IFdURjo6RnVuY3Rpb248Ym9vbChj
b25zdCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbiYpPiYpOwogCiAgICAgdm9pZCBzZXNzaW9uSXNQbGF5
aW5nVG9XaXJlbGVzc1BsYXliYWNrVGFyZ2V0Q2hhbmdlZChQbGF0Zm9ybU1lZGlhU2Vzc2lvbiYp
OwogICAgIHZvaWQgc2Vzc2lvbkNhblByb2R1Y2VBdWRpb0NoYW5nZWQoUGxhdGZvcm1NZWRpYVNl
c3Npb24mKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL01haW5UaHJl
YWRTaGFyZWRUaW1lckNGLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL01haW5UaHJl
YWRTaGFyZWRUaW1lckNGLmNwcAppbmRleCBmOWU0YmY4MDAwMjRkZWFmZDZlMzAzMjQwNWZhZGM4
NWQwZGM3MDVhLi5mMDE4M2IxNGRiZmMyYzQ4Y2QyMTk2M2JmODQ3Mzk5NmIyMGIxNGZlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9NYWluVGhyZWFkU2hhcmVkVGltZXJD
Ri5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvTWFpblRocmVhZFNoYXJlZFRp
bWVyQ0YuY3BwCkBAIC01Nyw3ICs1Nyw3IEBAIHN0YXRpYyB2b2lkIHNldHVwUG93ZXJPYnNlcnZl
cigpCiAjaWYgUExBVEZPUk0oTUFDKQogICAgIHN0YXRpYyBQb3dlck9ic2VydmVyKiBwb3dlck9i
c2VydmVyOwogICAgIGlmICghcG93ZXJPYnNlcnZlcikKLSAgICAgICAgcG93ZXJPYnNlcnZlciA9
IHN0ZDo6bWFrZV91bmlxdWU8UG93ZXJPYnNlcnZlcj4ocmVzdGFydFNoYXJlZFRpbWVyKS5yZWxl
YXNlKCk7CisgICAgICAgIHBvd2VyT2JzZXJ2ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFBvd2VyT2Jz
ZXJ2ZXI+KFtdIHsgcmVzdGFydFNoYXJlZFRpbWVyKCk7IH0pLnJlbGVhc2UoKTsKICNlbGlmIFBM
QVRGT1JNKElPUykKICAgICBzdGF0aWMgYm9vbCByZWdpc3RlcmVkRm9yQXBwbGljYXRpb25Ob3Rp
ZmljYXRpb24gPSBmYWxzZTsKICAgICBpZiAoIXJlZ2lzdGVyZWRGb3JBcHBsaWNhdGlvbk5vdGlm
aWNhdGlvbikgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvUnVuTG9v
cE9ic2VydmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9SdW5Mb29wT2JzZXJ2ZXIu
aAppbmRleCBjMWI2YTBkOWRjOWI4MjcyNWYwNGI1NWM4MzE4ZTYxYWQxNTY5MDgwLi45NjlhMDM3
ODZiYmIxZjExYzk3NDZmZTBiMDZlMmViZWFhZmVkM2UwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jZi9SdW5Mb29wT2JzZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jZi9SdW5Mb29wT2JzZXJ2ZXIuaApAQCAtMjcsNyArMjcsNyBAQAogI2RlZmluZSBS
dW5Mb29wT2JzZXJ2ZXJfaAogCiAjaW5jbHVkZSA8Q29yZUZvdW5kYXRpb24vQ29yZUZvdW5kYXRp
b24uaD4KLSNpbmNsdWRlIDxmdW5jdGlvbmFsPgorI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgog
I2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4K
IApAQCAtMzYsMTEgKzM2LDExIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFJ1bkxvb3BP
YnNlcnZlciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUnVuTG9vcE9ic2VydmVyKTsgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgdHlwZWRlZiBzdGQ6OmZ1bmN0aW9u
PHZvaWQgKCk+IFJ1bkxvb3BPYnNlcnZlckNhbGxiYWNrOworICAgIHR5cGVkZWYgV1RGOjpGdW5j
dGlvbjx2b2lkICgpPiBSdW5Mb29wT2JzZXJ2ZXJDYWxsYmFjazsKIAotICAgIFJ1bkxvb3BPYnNl
cnZlcihDRkluZGV4IG9yZGVyLCBSdW5Mb29wT2JzZXJ2ZXJDYWxsYmFjayBjYWxsYmFjaykKKyAg
ICBSdW5Mb29wT2JzZXJ2ZXIoQ0ZJbmRleCBvcmRlciwgUnVuTG9vcE9ic2VydmVyQ2FsbGJhY2sm
JiBjYWxsYmFjaykKICAgICAgICAgOiBtX29yZGVyKG9yZGVyKQotICAgICAgICAsIG1fY2FsbGJh
Y2soY2FsbGJhY2spCisgICAgICAgICwgbV9jYWxsYmFjayhXVEZNb3ZlKGNhbGxiYWNrKSkKICAg
ICB7IH0KIAogICAgIFdFQkNPUkVfRVhQT1JUIH5SdW5Mb29wT2JzZXJ2ZXIoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKaW5kZXgg
YzQ3MDc0NjQ4ZGU3ZjRiMDc4Y2EyZjFhNmFmYWVhODQ5ZWU3OTQ5ZS4uNTJmN2RlMjc1M2NjZGI2
Y2M2ZGU1MzlmNmFjMDAyMGUwNjhhY2FmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNs
dWRlICJJbWFnZS5oIgogI2luY2x1ZGUgIkltYWdlT3JpZW50YXRpb24uaCIKICNpbmNsdWRlICJQ
YXR0ZXJuLmgiCisjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+CiAjaW5jbHVkZSA8d3RmL05vbmNv
cHlhYmxlLmg+CiAKICNpZiBVU0UoQ0cpCkBAIC01OTksOCArNjAwLDggQEAgcHJpdmF0ZToKIAog
I2lmIFVTRShESVJFQ1QyRCkKICAgICB2b2lkIHBsYXRmb3JtSW5pdChIREMsIElEMkQxUmVuZGVy
VGFyZ2V0KiosIFJFQ1QsIGJvb2wgaGFzQWxwaGEgPSBmYWxzZSk7Ci0gICAgdm9pZCBkcmF3V2l0
aG91dFNoYWRvdyhjb25zdCBGbG9hdFJlY3QmIGJvdW5kaW5nUmVjdCwgY29uc3Qgc3RkOjpmdW5j
dGlvbjx2b2lkKElEMkQxUmVuZGVyVGFyZ2V0Kik+Jik7Ci0gICAgdm9pZCBkcmF3V2l0aFNoYWRv
dyhjb25zdCBGbG9hdFJlY3QmIGJvdW5kaW5nUmVjdCwgY29uc3Qgc3RkOjpmdW5jdGlvbjx2b2lk
KElEMkQxUmVuZGVyVGFyZ2V0Kik+Jik7CisgICAgdm9pZCBkcmF3V2l0aG91dFNoYWRvdyhjb25z
dCBGbG9hdFJlY3QmIGJvdW5kaW5nUmVjdCwgY29uc3QgV1RGOjpGdW5jdGlvbjx2b2lkKElEMkQx
UmVuZGVyVGFyZ2V0Kik+Jik7CisgICAgdm9pZCBkcmF3V2l0aFNoYWRvdyhjb25zdCBGbG9hdFJl
Y3QmIGJvdW5kaW5nUmVjdCwgY29uc3QgV1RGOjpGdW5jdGlvbjx2b2lkKElEMkQxUmVuZGVyVGFy
Z2V0Kik+Jik7CiAjZW5kaWYKIAogICAgIHZvaWQgc2F2ZVBsYXRmb3JtU3RhdGUoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5jcHAKaW5k
ZXggZjc5ZjQ0ZWUwYjkwYTUyNzIxZDlhMmEwYWQ4OTkwMTAwNWVkMTg1NC4uMTZjNjdmNDllOWZi
YTk0NDI1ZGIxZjI4NmEzODZjMjgyY2JhN2UzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5jcHAKQEAgLTY3Miw3ICs2NzIsNyBAQCB2
b2lkIEdyYXBoaWNzTGF5ZXI6OmFkZFJlcGFpbnRSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVwYWlu
dFJlY3QpCiAgICAgfQogfQogCi12b2lkIEdyYXBoaWNzTGF5ZXI6OnRyYXZlcnNlKEdyYXBoaWNz
TGF5ZXImIGxheWVyLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKEdyYXBoaWNzTGF5ZXImKT4gdHJhdmVy
c2FsRnVuYykKK3ZvaWQgR3JhcGhpY3NMYXllcjo6dHJhdmVyc2UoR3JhcGhpY3NMYXllciYgbGF5
ZXIsIGNvbnN0IFdURjo6RnVuY3Rpb248dm9pZCAoR3JhcGhpY3NMYXllciYpPiYgdHJhdmVyc2Fs
RnVuYykKIHsKICAgICB0cmF2ZXJzYWxGdW5jKGxheWVyKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5oCmluZGV4IGVjZmUzOWM2Njc1NDY0
NzQxOGRiMDM5MjNkYjI1MjM3ODhlM2FjYzUuLjZjMWI3OTZkMjgzMjM2YWQ2OTliMmI5NTExNDYz
ZDlmMTUwZjYxYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzTGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9H
cmFwaGljc0xheWVyLmgKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlICJQbGF0Zm9ybUxheWVy
LmgiCiAjaW5jbHVkZSAiVHJhbnNmb3JtT3BlcmF0aW9ucy5oIgogI2luY2x1ZGUgIldpbmRSdWxl
LmgiCisjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+CiAjaW5jbHVkZSA8d3RmL1R5cGVDYXN0cy5o
PgogCiAjaWYgRU5BQkxFKENTU19DT01QT1NJVElORykKQEAgLTU3MCw3ICs1NzEsNyBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCBib29sIGlzR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIoKSBjb25z
dCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc0Nvb3JkaW5hdGVkR3JhcGhp
Y3NMYXllcigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKLSAgICBzdGF0aWMgdm9pZCB0cmF2
ZXJzZShHcmFwaGljc0xheWVyJiwgc3RkOjpmdW5jdGlvbjx2b2lkIChHcmFwaGljc0xheWVyJik+
KTsKKyAgICBzdGF0aWMgdm9pZCB0cmF2ZXJzZShHcmFwaGljc0xheWVyJiwgY29uc3QgV1RGOjpG
dW5jdGlvbjx2b2lkIChHcmFwaGljc0xheWVyJik+Jik7CiAKIHByb3RlY3RlZDoKICAgICBXRUJD
T1JFX0VYUE9SVCBleHBsaWNpdCBHcmFwaGljc0xheWVyKFR5cGUsIEdyYXBoaWNzTGF5ZXJDbGll
bnQmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlh
UGxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVy
LmNwcAppbmRleCA2ZDJlNWFhM2EwMzcyZGVhMjlkYmMwMzllOWY2MzZiYmRkMzUxMDk2Li5iMGZi
M2RkNzdjNDY0M2ZiOGQyYzJmZDcwZmJiODU5ZTRkNWNjNDdjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCkBAIC0xODgsNyArMTg4LDcg
QEAgc3RydWN0IE1lZGlhUGxheWVyRmFjdG9yeSB7CiAgICAgTWVkaWFFbmdpbmVTdXBwb3J0c0tl
eVN5c3RlbSBzdXBwb3J0c0tleVN5c3RlbTsKIH07CiAKLXN0YXRpYyB2b2lkIGFkZE1lZGlhRW5n
aW5lKENyZWF0ZU1lZGlhRW5naW5lUGxheWVyLCBNZWRpYUVuZ2luZVN1cHBvcnRlZFR5cGVzLCBN
ZWRpYUVuZ2luZVN1cHBvcnRzVHlwZSwgTWVkaWFFbmdpbmVPcmlnaW5zSW5NZWRpYUNhY2hlLCBN
ZWRpYUVuZ2luZUNsZWFyTWVkaWFDYWNoZSwgTWVkaWFFbmdpbmVDbGVhck1lZGlhQ2FjaGVGb3JP
cmlnaW5zLCBNZWRpYUVuZ2luZVN1cHBvcnRzS2V5U3lzdGVtKTsKK3N0YXRpYyB2b2lkIGFkZE1l
ZGlhRW5naW5lKENyZWF0ZU1lZGlhRW5naW5lUGxheWVyJiYsIE1lZGlhRW5naW5lU3VwcG9ydGVk
VHlwZXMsIE1lZGlhRW5naW5lU3VwcG9ydHNUeXBlLCBNZWRpYUVuZ2luZU9yaWdpbnNJbk1lZGlh
Q2FjaGUsIE1lZGlhRW5naW5lQ2xlYXJNZWRpYUNhY2hlLCBNZWRpYUVuZ2luZUNsZWFyTWVkaWFD
YWNoZUZvck9yaWdpbnMsIE1lZGlhRW5naW5lU3VwcG9ydHNLZXlTeXN0ZW0pOwogCiBzdGF0aWMg
TG9jayYgbWVkaWFFbmdpbmVWZWN0b3JMb2NrKCkKIHsKQEAgLTI2OSwxNCArMjY5LDE0IEBAIHN0
YXRpYyBjb25zdCBWZWN0b3I8TWVkaWFQbGF5ZXJGYWN0b3J5PiYgaW5zdGFsbGVkTWVkaWFFbmdp
bmVzKCkKICAgICByZXR1cm4gbXV0YWJsZUluc3RhbGxlZE1lZGlhRW5naW5lc1ZlY3RvcigpOwog
fQogCi1zdGF0aWMgdm9pZCBhZGRNZWRpYUVuZ2luZShDcmVhdGVNZWRpYUVuZ2luZVBsYXllciBj
b25zdHJ1Y3RvciwgTWVkaWFFbmdpbmVTdXBwb3J0ZWRUeXBlcyBnZXRTdXBwb3J0ZWRUeXBlcywg
TWVkaWFFbmdpbmVTdXBwb3J0c1R5cGUgc3VwcG9ydHNUeXBlLAorc3RhdGljIHZvaWQgYWRkTWVk
aWFFbmdpbmUoQ3JlYXRlTWVkaWFFbmdpbmVQbGF5ZXImJiBjb25zdHJ1Y3RvciwgTWVkaWFFbmdp
bmVTdXBwb3J0ZWRUeXBlcyBnZXRTdXBwb3J0ZWRUeXBlcywgTWVkaWFFbmdpbmVTdXBwb3J0c1R5
cGUgc3VwcG9ydHNUeXBlLAogICAgIE1lZGlhRW5naW5lT3JpZ2luc0luTWVkaWFDYWNoZSBvcmln
aW5zSW5NZWRpYUNhY2hlLCBNZWRpYUVuZ2luZUNsZWFyTWVkaWFDYWNoZSBjbGVhck1lZGlhQ2Fj
aGUsIE1lZGlhRW5naW5lQ2xlYXJNZWRpYUNhY2hlRm9yT3JpZ2lucyBjbGVhck1lZGlhQ2FjaGVG
b3JPcmlnaW5zLCBNZWRpYUVuZ2luZVN1cHBvcnRzS2V5U3lzdGVtIHN1cHBvcnRzS2V5U3lzdGVt
KQogewogICAgIEFTU0VSVChjb25zdHJ1Y3Rvcik7CiAgICAgQVNTRVJUKGdldFN1cHBvcnRlZFR5
cGVzKTsKICAgICBBU1NFUlQoc3VwcG9ydHNUeXBlKTsKIAotICAgIG11dGFibGVJbnN0YWxsZWRN
ZWRpYUVuZ2luZXNWZWN0b3IoKS5hcHBlbmQoTWVkaWFQbGF5ZXJGYWN0b3J5IHsgY29uc3RydWN0
b3IsIGdldFN1cHBvcnRlZFR5cGVzLCBzdXBwb3J0c1R5cGUsIG9yaWdpbnNJbk1lZGlhQ2FjaGUs
IGNsZWFyTWVkaWFDYWNoZSwgY2xlYXJNZWRpYUNhY2hlRm9yT3JpZ2lucywgc3VwcG9ydHNLZXlT
eXN0ZW0gfSk7CisgICAgbXV0YWJsZUluc3RhbGxlZE1lZGlhRW5naW5lc1ZlY3RvcigpLmFwcGVu
ZChNZWRpYVBsYXllckZhY3RvcnkgeyBXVEZNb3ZlKGNvbnN0cnVjdG9yKSwgZ2V0U3VwcG9ydGVk
VHlwZXMsIHN1cHBvcnRzVHlwZSwgb3JpZ2luc0luTWVkaWFDYWNoZSwgY2xlYXJNZWRpYUNhY2hl
LCBjbGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5zLCBzdXBwb3J0c0tleVN5c3RlbSB9KTsKIH0KIAog
c3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgYXBwbGljYXRpb25PY3RldFN0cmVhbSgpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaAppbmRleCAxY2Iz
NTA0YjEyMDk5OTA5YmQ0MjNlZjlhYmY3OTVlNmNmNTg1Njg4Li45MmYyNDg1NjhkZWM5YTFiMzI5
OWU2YTA3M2Q4NGVlNGFlNWYzNmRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9NZWRpYVBsYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL01lZGlhUGxheWVyLmgKQEAgLTYyOCw3ICs2MjgsNyBAQCBwcml2YXRlOgogI2VuZGlm
CiB9OwogCi10eXBlZGVmIHN0ZDo6ZnVuY3Rpb248c3RkOjp1bmlxdWVfcHRyPE1lZGlhUGxheWVy
UHJpdmF0ZUludGVyZmFjZT4gKE1lZGlhUGxheWVyKik+IENyZWF0ZU1lZGlhRW5naW5lUGxheWVy
OwordXNpbmcgQ3JlYXRlTWVkaWFFbmdpbmVQbGF5ZXIgPSBXVEY6OkZ1bmN0aW9uPHN0ZDo6dW5p
cXVlX3B0cjxNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2U+IChNZWRpYVBsYXllciopPjsKIHR5
cGVkZWYgdm9pZCAoKk1lZGlhRW5naW5lU3VwcG9ydGVkVHlwZXMpKEhhc2hTZXQ8U3RyaW5nLCBB
U0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+JiB0eXBlcyk7CiB0eXBlZGVmIE1lZGlhUGxheWVyOjpT
dXBwb3J0c1R5cGUgKCpNZWRpYUVuZ2luZVN1cHBvcnRzVHlwZSkoY29uc3QgTWVkaWFFbmdpbmVT
dXBwb3J0UGFyYW1ldGVycyYgcGFyYW1ldGVycyk7CiB0eXBlZGVmIEhhc2hTZXQ8UmVmUHRyPFNl
Y3VyaXR5T3JpZ2luPj4gKCpNZWRpYUVuZ2luZU9yaWdpbnNJbk1lZGlhQ2FjaGUpKGNvbnN0IFN0
cmluZyYgcGF0aCk7CkBAIC02MzYsNyArNjM2LDcgQEAgdHlwZWRlZiB2b2lkICgqTWVkaWFFbmdp
bmVDbGVhck1lZGlhQ2FjaGUpKGNvbnN0IFN0cmluZyYgcGF0aCwgc3RkOjpjaHJvbm86OnN5c3QK
IHR5cGVkZWYgdm9pZCAoKk1lZGlhRW5naW5lQ2xlYXJNZWRpYUNhY2hlRm9yT3JpZ2lucykoY29u
c3QgU3RyaW5nJiBwYXRoLCBjb25zdCBIYXNoU2V0PFJlZlB0cjxTZWN1cml0eU9yaWdpbj4+Jik7
CiB0eXBlZGVmIGJvb2wgKCpNZWRpYUVuZ2luZVN1cHBvcnRzS2V5U3lzdGVtKShjb25zdCBTdHJp
bmcmIGtleVN5c3RlbSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSk7CiAKLXR5cGVkZWYgdm9pZCAo
Kk1lZGlhRW5naW5lUmVnaXN0cmFyKShDcmVhdGVNZWRpYUVuZ2luZVBsYXllciwgTWVkaWFFbmdp
bmVTdXBwb3J0ZWRUeXBlcywgTWVkaWFFbmdpbmVTdXBwb3J0c1R5cGUsCit0eXBlZGVmIHZvaWQg
KCpNZWRpYUVuZ2luZVJlZ2lzdHJhcikoQ3JlYXRlTWVkaWFFbmdpbmVQbGF5ZXImJiwgTWVkaWFF
bmdpbmVTdXBwb3J0ZWRUeXBlcywgTWVkaWFFbmdpbmVTdXBwb3J0c1R5cGUsCiAgICAgTWVkaWFF
bmdpbmVPcmlnaW5zSW5NZWRpYUNhY2hlLCBNZWRpYUVuZ2luZUNsZWFyTWVkaWFDYWNoZSwgTWVk
aWFFbmdpbmVDbGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5zLCBNZWRpYUVuZ2luZVN1cHBvcnRzS2V5
U3lzdGVtKTsKIHR5cGVkZWYgdm9pZCAoKk1lZGlhRW5naW5lUmVnaXN0ZXIpKE1lZGlhRW5naW5l
UmVnaXN0cmFyKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvUGF0aC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0aC5oCmluZGV4
IDI4MzFjZmUzM2U3YzA2YTg4ZDNjNmI4M2M5MTI2Yjg1MDJhMzRlZmMuLjdjYWJhNGNiNmU3ODkz
ODMzZGQ4YjZhYzE0Y2ZlYzlmMWMyOTk3MWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL1BhdGguaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9QYXRoLmgKQEAgLTMwLDggKzMwLDggQEAKIAogI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgog
I2luY2x1ZGUgIldpbmRSdWxlLmgiCi0jaW5jbHVkZSA8ZnVuY3Rpb25hbD4KICNpbmNsdWRlIDx3
dGYvRmFzdE1hbGxvYy5oPgorI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgogI2luY2x1ZGUgPHd0
Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCkBAIC0xMDEsNyArMTAxLDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBGbG9hdFBvaW50KiBwb2ludHM7CiAgICAg
fTsKIAotICAgIHR5cGVkZWYgc3RkOjpmdW5jdGlvbjx2b2lkIChjb25zdCBQYXRoRWxlbWVudCYp
PiBQYXRoQXBwbGllckZ1bmN0aW9uOworICAgIHVzaW5nIFBhdGhBcHBsaWVyRnVuY3Rpb24gPSBX
VEY6OkZ1bmN0aW9uPHZvaWQgKGNvbnN0IFBhdGhFbGVtZW50Jik+OwogCiAgICAgY2xhc3MgUGF0
aCB7CiAgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmNwcAppbmRleCBiMGMyNmFm
NTMzZjQyMzdjNDc2NDk2MTViNGVkNjQxYjQyYzBkZThkLi41ZGI4NzczZjVhNWY5M2YzMTE5M2I5
NTMwZGI0Y2UzZGJhM2NiNDlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmNwcApAQCAtNjU5LDcgKzY1OSw3IEBAIHZvaWQgTWVk
aWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uOjpzZWVrQ29tcGxldGVkKGJvb2wgZmluaXNoZWQp
CiAKICAgICBtX3NlZWtpbmcgPSBmYWxzZTsKIAotICAgIHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiBw
ZW5kaW5nU2VlazsKKyAgICBXVEY6OkZ1bmN0aW9uPHZvaWQoKT4gcGVuZGluZ1NlZWs7CiAgICAg
c3RkOjpzd2FwKHBlbmRpbmdTZWVrLCBtX3BlbmRpbmdTZWVrKTsKIAogICAgIGlmIChwZW5kaW5n
U2VlaykgewpAQCAtNzkwLDE2ICs3OTAsMTcgQEAgc3RhdGljIGNvbnN0IGNoYXIqIG5vdGlmaWNh
dGlvbk5hbWUoTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uOjpOb3RpZmljYXRpb24KICNl
bmRpZiAvLyAhTE9HX0RJU0FCTEVECiAgICAgCiAKLXZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uOjpzY2hlZHVsZU1haW5UaHJlYWROb3RpZmljYXRpb24oTm90aWZpY2F0aW9uIG5v
dGlmaWNhdGlvbikKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uOjpzY2hlZHVs
ZU1haW5UaHJlYWROb3RpZmljYXRpb24oTm90aWZpY2F0aW9uJiYgbm90aWZpY2F0aW9uKQogewot
ICAgIGlmIChub3RpZmljYXRpb24udHlwZSgpICE9IE5vdGlmaWNhdGlvbjo6RnVuY3Rpb25UeXBl
KQorICAgIGF1dG8gbm90aWZpY2F0aW9uVHlwZSA9IG5vdGlmaWNhdGlvbi50eXBlKCk7CisgICAg
aWYgKG5vdGlmaWNhdGlvblR5cGUgIT0gTm90aWZpY2F0aW9uOjpGdW5jdGlvblR5cGUpCiAgICAg
ICAgIExPRyhNZWRpYSwgIk1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbjo6c2NoZWR1bGVN
YWluVGhyZWFkTm90aWZpY2F0aW9uKCVwKSAtIG5vdGlmaWNhdGlvbiAlcyIsIHRoaXMsIG5vdGlm
aWNhdGlvbk5hbWUobm90aWZpY2F0aW9uKSk7CiAKICAgICBtX3F1ZXVlTXV0ZXgubG9jaygpOwog
CiAgICAgLy8gSXQgaXMgaW1wb3J0YW50IHRvIGFsd2F5cyBwcm9jZXNzIHRoZSBwcm9wZXJ0aWVz
IGluIHRoZSBvcmRlciB0aGF0IHdlIGFyZSBub3RpZmllZCwKICAgICAvLyBzbyBhbHdheXMgZ28g
dGhyb3VnaCB0aGUgcXVldWUgYmVjYXVzZSBub3RpZmljYXRpb25zIGhhcHBlbiBvbiBkaWZmZXJl
bnQgdGhyZWFkcy4KLSAgICBtX3F1ZXVlZE5vdGlmaWNhdGlvbnMuYXBwZW5kKG5vdGlmaWNhdGlv
bik7CisgICAgbV9xdWV1ZWROb3RpZmljYXRpb25zLmFwcGVuZChXVEZNb3ZlKG5vdGlmaWNhdGlv
bikpOwogCiAjaWYgT1MoV0lORE9XUykKICAgICBib29sIGRlbGF5RGlzcGF0Y2ggPSB0cnVlOwpA
QCAtODIwLDcgKzgyMSw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uOjpz
Y2hlZHVsZU1haW5UaHJlYWROb3RpZmljYXRpb24oTm90aWZpY2F0aW9uCiAgICAgbV9xdWV1ZU11
dGV4LnVubG9jaygpOwogCiAgICAgaWYgKGRlbGF5RGlzcGF0Y2gpIHsKLSAgICAgICAgaWYgKG5v
dGlmaWNhdGlvbi50eXBlKCkgIT0gTm90aWZpY2F0aW9uOjpGdW5jdGlvblR5cGUpCisgICAgICAg
IGlmIChub3RpZmljYXRpb25UeXBlICE9IE5vdGlmaWNhdGlvbjo6RnVuY3Rpb25UeXBlKQogICAg
ICAgICAgICAgTE9HKE1lZGlhLCAiTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uOjpzY2hl
ZHVsZU1haW5UaHJlYWROb3RpZmljYXRpb24oJXApIC0gZWFybHkgcmV0dXJuIiwgdGhpcyk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CkBAIC04MzIsNyArODMzLDcgQEAgdm9pZCBNZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb246OmRpc3BhdGNoTm90aWZpY2F0aW9uKCkKIHsKICAgICBBU1NF
UlQoaXNNYWluVGhyZWFkKCkpOwogCi0gICAgTm90aWZpY2F0aW9uIG5vdGlmaWNhdGlvbiA9IE5v
dGlmaWNhdGlvbigpOworICAgIE5vdGlmaWNhdGlvbiBub3RpZmljYXRpb247CiAgICAgewogICAg
ICAgICBMb2NrSG9sZGVyIGxvY2sobV9xdWV1ZU11dGV4KTsKICAgICAgICAgCkBAIC04NDEsOCAr
ODQyLDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb246OmRpc3BhdGNoTm90
aWZpY2F0aW9uKCkKICAgICAgICAgCiAgICAgICAgIGlmICghbV9kZWxheUNhbGxiYWNrcykgewog
ICAgICAgICAgICAgLy8gT25seSBkaXNwYXRjaCBvbmUgbm90aWZpY2F0aW9uIGNhbGxiYWNrIHBl
ciBpbnZvY2F0aW9uIGJlY2F1c2UgdGhleSBjYW4gY2F1c2UgcmVjdXJzaW9uLgotICAgICAgICAg
ICAgbm90aWZpY2F0aW9uID0gbV9xdWV1ZWROb3RpZmljYXRpb25zLmZpcnN0KCk7Ci0gICAgICAg
ICAgICBtX3F1ZXVlZE5vdGlmaWNhdGlvbnMucmVtb3ZlKDApOworICAgICAgICAgICAgbm90aWZp
Y2F0aW9uID0gbV9xdWV1ZWROb3RpZmljYXRpb25zLnRha2VGaXJzdCgpOwogICAgICAgICB9CiAg
ICAgICAgIAogICAgICAgICBpZiAoIW1fcXVldWVkTm90aWZpY2F0aW9ucy5pc0VtcHR5KCkgJiYg
IW1fbWFpblRocmVhZENhbGxQZW5kaW5nKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVk
aWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmgKaW5kZXggMGFkMjk4YjA1ZmMwYTMwNzA1YjFl
YjgwMzE2MDhlYjQ5ZjhmMmYzMS4uMDg4YmE0NzA1NzhhN2NkMzlmMWQ5MDE3Y2Y1OTg0MjA1N2Zm
ODY0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb24uaApAQCAtMzIsNyArMzIsOCBAQAogI2luY2x1ZGUgIkluYmFuZFRleHRUcmFja1By
aXZhdGVBVkYuaCIKICNpbmNsdWRlICJNZWRpYVBsYXllclByaXZhdGUuaCIKICNpbmNsdWRlICJU
aW1lci5oIgotI2luY2x1ZGUgPGZ1bmN0aW9uYWw+CisjaW5jbHVkZSA8d3RmL0RlcXVlLmg+Cisj
aW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNs
dWRlIDx3dGYvTG9jay5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KQEAgLTExMywxMCAr
MTE0LDEwIEBAIHB1YmxpYzoKICAgICAgICAgewogICAgICAgICB9CiAKLSAgICAgICAgTm90aWZp
Y2F0aW9uKHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4gZnVuY3Rpb24pCisgICAgICAgIE5vdGlmaWNh
dGlvbihXVEY6OkZ1bmN0aW9uPHZvaWQgKCk+JiYgZnVuY3Rpb24pCiAgICAgICAgICAgICA6IG1f
dHlwZShGdW5jdGlvblR5cGUpCiAgICAgICAgICAgICAsIG1fZmluaXNoZWQoZmFsc2UpCi0gICAg
ICAgICAgICAsIG1fZnVuY3Rpb24oZnVuY3Rpb24pCisgICAgICAgICAgICAsIG1fZnVuY3Rpb24o
V1RGTW92ZShmdW5jdGlvbikpCiAgICAgICAgIHsKICAgICAgICAgfQogICAgICAgICAKQEAgLTEy
NCwxNiArMTI1LDE2IEBAIHB1YmxpYzoKICAgICAgICAgYm9vbCBpc1ZhbGlkKCkgeyByZXR1cm4g
bV90eXBlICE9IE5vbmU7IH0KICAgICAgICAgTWVkaWFUaW1lIHRpbWUoKSB7IHJldHVybiBtX3Rp
bWU7IH0KICAgICAgICAgYm9vbCBmaW5pc2hlZCgpIHsgcmV0dXJuIG1fZmluaXNoZWQ7IH0KLSAg
ICAgICAgc3RkOjpmdW5jdGlvbjx2b2lkICgpPiYgZnVuY3Rpb24oKSB7IHJldHVybiBtX2Z1bmN0
aW9uOyB9CisgICAgICAgIFdURjo6RnVuY3Rpb248dm9pZCAoKT4mIGZ1bmN0aW9uKCkgeyByZXR1
cm4gbV9mdW5jdGlvbjsgfQogICAgICAgICAKICAgICBwcml2YXRlOgogICAgICAgICBUeXBlIG1f
dHlwZTsKICAgICAgICAgTWVkaWFUaW1lIG1fdGltZTsKICAgICAgICAgYm9vbCBtX2ZpbmlzaGVk
OwotICAgICAgICBzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+IG1fZnVuY3Rpb247CisgICAgICAgIFdU
Rjo6RnVuY3Rpb248dm9pZCAoKT4gbV9mdW5jdGlvbjsKICAgICB9OwogCi0gICAgdm9pZCBzY2hl
ZHVsZU1haW5UaHJlYWROb3RpZmljYXRpb24oTm90aWZpY2F0aW9uKTsKKyAgICB2b2lkIHNjaGVk
dWxlTWFpblRocmVhZE5vdGlmaWNhdGlvbihOb3RpZmljYXRpb24mJik7CiAgICAgdm9pZCBzY2hl
ZHVsZU1haW5UaHJlYWROb3RpZmljYXRpb24oTm90aWZpY2F0aW9uOjpUeXBlLCBjb25zdCBNZWRp
YVRpbWUmID0gTWVkaWFUaW1lOjp6ZXJvVGltZSgpKTsKICAgICB2b2lkIHNjaGVkdWxlTWFpblRo
cmVhZE5vdGlmaWNhdGlvbihOb3RpZmljYXRpb246OlR5cGUsIGJvb2wgY29tcGxldGVkKTsKICAg
ICB2b2lkIGRpc3BhdGNoTm90aWZpY2F0aW9uKCk7CkBAIC0zMTcsOSArMzE4LDkgQEAgcHJpdmF0
ZToKIAogICAgIFdlYWtQdHJGYWN0b3J5PE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbj4g
bV93ZWFrUHRyRmFjdG9yeTsKIAotICAgIHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiBtX3BlbmRpbmdT
ZWVrOworICAgIFdURjo6RnVuY3Rpb248dm9pZCgpPiBtX3BlbmRpbmdTZWVrOwogCi0gICAgVmVj
dG9yPE5vdGlmaWNhdGlvbj4gbV9xdWV1ZWROb3RpZmljYXRpb25zOworICAgIERlcXVlPE5vdGlm
aWNhdGlvbj4gbV9xdWV1ZWROb3RpZmljYXRpb25zOwogICAgIG11dGFibGUgTG9jayBtX3F1ZXVl
TXV0ZXg7CiAKICAgICBtdXRhYmxlIHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybVRpbWVSYW5nZXM+
IG1fY2FjaGVkTG9hZGVkVGltZVJhbmdlczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCmluZGV4IDRm
ZmRhNWU5ZjMyZmE1MGExZWZhYjMyY2Y1MmJjY2NkZjE3N2EzMzMuLjZmZGY2MWRmNDk0MDg2ZWY1
MGU1ODU1NGU3ZDlkZGUzYjAxMzIwZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQpAQCAtMzM3
NSw3ICszMzc1LDcgQEAgLSAodm9pZClvYnNlcnZlVmFsdWVGb3JLZXlQYXRoOmtleVBhdGggb2ZP
YmplY3Q6KGlkKW9iamVjdCBjaGFuZ2U6KE5TRGljdGlvbmFyeQogICAgIH0KICNlbmRpZgogCi0g
ICAgc3RkOjpmdW5jdGlvbjx2b2lkICgpPiBmdW5jdGlvbjsKKyAgICBXVEY6OkZ1bmN0aW9uPHZv
aWQgKCk+IGZ1bmN0aW9uOwogCiAgICAgaWYgKGNvbnRleHQgPT0gTWVkaWFQbGF5ZXJBVkZvdW5k
YXRpb25PYnNlcnZhdGlvbkNvbnRleHRBVlBsYXllckxheWVyKSB7CiAgICAgICAgIGlmIChba2V5
UGF0aCBpc0VxdWFsVG9TdHJpbmc6QCJyZWFkeUZvckRpc3BsYXkiXSkKQEAgLTM0NTAsNyArMzQ1
MCw3IEBAIC0gKHZvaWQpb2JzZXJ2ZVZhbHVlRm9yS2V5UGF0aDprZXlQYXRoIG9mT2JqZWN0Oihp
ZClvYmplY3QgY2hhbmdlOihOU0RpY3Rpb25hcnkKICAgICAgICAgcmV0dXJuOwogCiAgICAgYXV0
byB3ZWFrVGhpcyA9IG1fY2FsbGJhY2stPmNyZWF0ZVdlYWtQdHIoKTsKLSAgICBtX2NhbGxiYWNr
LT5zY2hlZHVsZU1haW5UaHJlYWROb3RpZmljYXRpb24oTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uOjpOb3RpZmljYXRpb24oW3dlYWtUaGlzLCBmdW5jdGlvbl17CisgICAgbV9jYWxsYmFj
ay0+c2NoZWR1bGVNYWluVGhyZWFkTm90aWZpY2F0aW9uKE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbjo6Tm90aWZpY2F0aW9uKFt3ZWFrVGhpcywgZnVuY3Rpb24gPSBXVEZNb3ZlKGZ1bmN0
aW9uKV17CiAgICAgICAgIC8vIHdlYWtUaGlzIGFuZCBmdW5jdGlvbiBib3RoIHJlZmVyIHRvIHRo
ZSBzYW1lIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMgaW5zdGFuY2UuIElmIHRo
ZSBXZWFrUHRyIGhhcwogICAgICAgICAvLyBiZWVuIGNsZWFyZWQsIHRoZSB1bmRlcmx5aW5nIG9i
amVjdCBoYXMgYmVlbiBkZXN0cm95ZWQsIGFuZCBpdCBpcyB1bnNhZmUgdG8gY2FsbCBmdW5jdGlv
bigpLgogICAgICAgICBpZiAoIXdlYWtUaGlzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVk
aWFTdHJlYW1BVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tCmlu
ZGV4IDM4Y2FkZTk0OWE4ZTU1N2MzNDgzNzc5YWQ1NWZiNGUwZDNmMTA3MjYuLjk1YWI0NWNjZWQy
MDE2Yjg5YjAxYzRmODg2ZmRmNmVhOTg2YmJmYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1l
ZGlhU3RyZWFtQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMu
bW0KQEAgLTQxLDYgKzQxLDcgQEAKICNpbXBvcnQgPFF1YXJ0ekNvcmUvQ0FMYXllci5oPgogI2lt
cG9ydCA8UXVhcnR6Q29yZS9DQVRyYW5zYWN0aW9uLmg+CiAjaW1wb3J0IDxvYmpjX3J1bnRpbWUu
aD4KKyNpbXBvcnQgPHd0Zi9GdW5jdGlvbi5oPgogI2ltcG9ydCA8d3RmL01haW5UaHJlYWQuaD4K
ICNpbXBvcnQgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCkBAIC0zMjUsNyArMzI2LDcgQEAgQ0dB
ZmZpbmVUcmFuc2Zvcm0gTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjp2aWRl
b1RyYW5zZm9ybWF0aW9uTWF0cmkKICAgICByZXR1cm4gbV92aWRlb1RyYW5zZm9ybTsKIH0KIAot
c3RhdGljIHZvaWQgcnVuV2l0aG91dEFuaW1hdGlvbnMoc3RkOjpmdW5jdGlvbjx2b2lkKCk+IGZ1
bmN0aW9uKQorc3RhdGljIHZvaWQgcnVuV2l0aG91dEFuaW1hdGlvbnMoY29uc3QgV1RGOjpGdW5j
dGlvbjx2b2lkKCk+JiBmdW5jdGlvbikKIHsKICAgICBbQ0FUcmFuc2FjdGlvbiBiZWdpbl07CiAg
ICAgW0NBVHJhbnNhY3Rpb24gc2V0QW5pbWF0aW9uRHVyYXRpb246MF07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9JT1N1cmZhY2UuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0lPU3VyZmFjZS5oCmluZGV4IDIxNjk5
ZjM2ZmRjMDA1MTlkMGE5Mzk0ZjUzZDJkNWUwN2M2Y2YxZTUuLjAwYWQyY2IzNDM5ZmJiOWIyNmIx
MWFiMWI2ZmQzN2UzZjMyNjAwMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL0lPU3VyZmFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL0lPU3VyZmFjZS5oCkBAIC05Niw3ICs5Niw3IEBAIHB1YmxpYzoKIAog
I2lmIFBMQVRGT1JNKElPUykKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgYm9vbCBhbGxvd0Nv
bnZlcnNpb25Gcm9tRm9ybWF0VG9Gb3JtYXQoRm9ybWF0LCBGb3JtYXQpOwotICAgIFdFQkNPUkVf
RVhQT1JUIHN0YXRpYyB2b2lkIGNvbnZlcnRUb0Zvcm1hdChzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29y
ZTo6SU9TdXJmYWNlPiYmIGluU3VyZmFjZSwgRm9ybWF0LCBzdGQ6OmZ1bmN0aW9uPHZvaWQoc3Rk
Ojp1bmlxdWVfcHRyPFdlYkNvcmU6OklPU3VyZmFjZT4pPik7CisgICAgV0VCQ09SRV9FWFBPUlQg
c3RhdGljIHZvaWQgY29udmVydFRvRm9ybWF0KHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpJT1N1
cmZhY2U+JiYgaW5TdXJmYWNlLCBGb3JtYXQsIFdURjo6RnVuY3Rpb248dm9pZChzdGQ6OnVuaXF1
ZV9wdHI8V2ViQ29yZTo6SU9TdXJmYWNlPik+JiYpOwogI2VuZGlmCiAKIHByaXZhdGU6CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9JT1N1cmZhY2Uu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9JT1N1cmZhY2UubW0K
aW5kZXggNzhjNzgwMjM4ODE2M2M1ZGZkNzUyYzY5OTJiMzNkYTg3ZTE4M2NjNi4uNDlkMDQ2ZTlj
ZDI1YWM2NDQzOTU0ZDM2ZmViZDIzOTA4YzZkMzc4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSU9TdXJmYWNlLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0lPU3VyZmFjZS5tbQpAQCAtMzgwLDcgKzM4MCw3
IEBAIGJvb2wgV2ViQ29yZTo6SU9TdXJmYWNlOjphbGxvd0NvbnZlcnNpb25Gcm9tRm9ybWF0VG9G
b3JtYXQoRm9ybWF0IHNvdXJjZUZvcm1hdCwKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBX
ZWJDb3JlOjpJT1N1cmZhY2U6OmNvbnZlcnRUb0Zvcm1hdChzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29y
ZTo6SU9TdXJmYWNlPiYmIGluU3VyZmFjZSwgRm9ybWF0IGZvcm1hdCwgc3RkOjpmdW5jdGlvbjx2
b2lkKHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpJT1N1cmZhY2U+KT4gY2FsbGJhY2spCit2b2lk
IFdlYkNvcmU6OklPU3VyZmFjZTo6Y29udmVydFRvRm9ybWF0KHN0ZDo6dW5pcXVlX3B0cjxXZWJD
b3JlOjpJT1N1cmZhY2U+JiYgaW5TdXJmYWNlLCBGb3JtYXQgZm9ybWF0LCBXVEY6OkZ1bmN0aW9u
PHZvaWQoc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OklPU3VyZmFjZT4pPiYmIGNhbGxiYWNrKQog
ewogICAgIHN0YXRpYyBJT1N1cmZhY2VBY2NlbGVyYXRvclJlZiBhY2NlbGVyYXRvcjsKICAgICBp
ZiAoIWFjY2VsZXJhdG9yKSB7CkBAIC00MDMsMTAgKzQwMywxMCBAQCB2b2lkIFdlYkNvcmU6OklP
U3VyZmFjZTo6Y29udmVydFRvRm9ybWF0KHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpJT1N1cmZh
Y2U+JiYgaQogCiAgICAgSU9TdXJmYWNlUmVmIGRlc3RpbmF0aW9uSU9TdXJmYWNlUmVmID0gZGVz
dGluYXRpb25TdXJmYWNlLT5zdXJmYWNlKCk7CiAgICAgSU9TdXJmYWNlQWNjZWxlcmF0b3JDb21w
bGV0aW9uIGNvbXBsZXRpb247Ci0gICAgY29tcGxldGlvbi5jb21wbGV0aW9uUmVmQ29uID0gbmV3
IHN0ZDo6ZnVuY3Rpb248dm9pZChzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6SU9TdXJmYWNlPik+
IChXVEZNb3ZlKGNhbGxiYWNrKSk7CisgICAgY29tcGxldGlvbi5jb21wbGV0aW9uUmVmQ29uID0g
bmV3IFdURjo6RnVuY3Rpb248dm9pZChzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6SU9TdXJmYWNl
Pik+IChXVEZNb3ZlKGNhbGxiYWNrKSk7CiAgICAgY29tcGxldGlvbi5jb21wbGV0aW9uUmVmQ29u
MiA9IGRlc3RpbmF0aW9uU3VyZmFjZS5yZWxlYXNlKCk7CiAgICAgY29tcGxldGlvbi5jb21wbGV0
aW9uQ2FsbGJhY2sgPSBbXSh2b2lkICpjb21wbGV0aW9uUmVmQ29uLCBJT1JldHVybiwgdm9pZCAq
IGNvbXBsZXRpb25SZWZDb24yKSB7Ci0gICAgICAgIGF1dG8qIGNhbGxiYWNrID0gc3RhdGljX2Nh
c3Q8c3RkOjpmdW5jdGlvbjx2b2lkKHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpJT1N1cmZhY2U+
KT4qPihjb21wbGV0aW9uUmVmQ29uKTsKKyAgICAgICAgYXV0byogY2FsbGJhY2sgPSBzdGF0aWNf
Y2FzdDxXVEY6OkZ1bmN0aW9uPHZvaWQoc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OklPU3VyZmFj
ZT4pPio+KGNvbXBsZXRpb25SZWZDb24pOwogICAgICAgICBhdXRvIGRlc3RpbmF0aW9uU3VyZmFj
ZSA9IHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpJT1N1cmZhY2U+KHN0YXRpY19jYXN0PFdlYkNv
cmU6OklPU3VyZmFjZSo+KGNvbXBsZXRpb25SZWZDb24yKSk7CiAgICAgICAgIAogICAgICAgICAo
KmNhbGxiYWNrKShXVEZNb3ZlKGRlc3RpbmF0aW9uU3VyZmFjZSkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01haW5UaHJlYWROb3RpZmll
ci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01haW5UaHJl
YWROb3RpZmllci5oCmluZGV4IGYxNDA1MGRkMmVmNDQ2OWMwMTgwOTJhNWQ3ZDg3MmUwNmMxZTgx
MDAuLjM3NTJkYzI3NWU3MTk1NzhlYmYxOTU5NmY0ZmE2YmYyZmM4OGY5YjUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NYWluVGhyZWFkTm90
aWZpZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
TWFpblRocmVhZE5vdGlmaWVyLmgKQEAgLTM2LDcgKzM2LDcgQEAgcHVibGljOgogICAgIH0KIAog
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIEY+Ci0gICAgdm9pZCBub3RpZnkoVCBub3RpZmljYXRpb25U
eXBlLCBjb25zdCBGJiBjYWxsYmFja0Z1bmN0b3IpCisgICAgdm9pZCBub3RpZnkoVCBub3RpZmlj
YXRpb25UeXBlLCBGJiYgY2FsbGJhY2tGdW5jdG9yKQogICAgIHsKICAgICAgICAgQVNTRVJUKG1f
aXNWYWxpZC5sb2FkKCkpOwogICAgICAgICBpZiAoaXNNYWluVGhyZWFkKCkpIHsKQEAgLTQ4LDcg
KzQ4LDcgQEAgcHVibGljOgogICAgICAgICBpZiAoIWFkZFBlbmRpbmdOb3RpZmljYXRpb24obm90
aWZpY2F0aW9uVHlwZSkpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgUnVuTG9vcDo6
bWFpbigpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIG5v
dGlmaWNhdGlvblR5cGUsIGNhbGxiYWNrID0gc3RkOjpmdW5jdGlvbjx2b2lkKCk+KGNhbGxiYWNr
RnVuY3RvcildIHsKKyAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFt0aGlzLCBwcm90
ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIG5vdGlmaWNhdGlvblR5cGUsIGNhbGxiYWNrID0g
V1RGOjpGdW5jdGlvbjx2b2lkKCk+KFdURk1vdmUoY2FsbGJhY2tGdW5jdG9yKSldIHsKICAgICAg
ICAgICAgIGlmICghbV9pc1ZhbGlkLmxvYWQoKSkKICAgICAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgICAgICBpZiAocmVtb3ZlUGVuZGluZ05vdGlmaWNhdGlvbihub3RpZmljYXRpb25UeXBl
KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9NZWRpYVBsYXllclJlcXVlc3RJbnN0YWxsTWlzc2luZ1BsdWdpbnNDYWxsYmFjay5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUmVxdWVz
dEluc3RhbGxNaXNzaW5nUGx1Z2luc0NhbGxiYWNrLmgKaW5kZXggOTVlZDJkYTYzM2YxMmNhZDQ4
ZTNmZTAwMjRjMTFjMTY3ZDY3NDUzZS4uMDU4N2QwZGY5MmIwNjgyYWYyNmMwOGQ4ZWVjZDZmZDQ4
ZjJkNjk1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL01lZGlhUGxheWVyUmVxdWVzdEluc3RhbGxNaXNzaW5nUGx1Z2luc0NhbGxiYWNrLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxh
eWVyUmVxdWVzdEluc3RhbGxNaXNzaW5nUGx1Z2luc0NhbGxiYWNrLmgKQEAgLTIxLDYgKzIxLDcg
QEAKICNkZWZpbmUgTWVkaWFQbGF5ZXJSZXF1ZXN0SW5zdGFsbE1pc3NpbmdQbHVnaW5zQ2FsbGJh
Y2tfaAogCiAjaWYgRU5BQkxFKFZJREVPKSAmJiBVU0UoR1NUUkVBTUVSKQorI2luY2x1ZGUgPHd0
Zi9GdW5jdGlvbi5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKQEAgLTI4LDcgKzI5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgTWVk
aWFQbGF5ZXJSZXF1ZXN0SW5zdGFsbE1pc3NpbmdQbHVnaW5zQ2FsbGJhY2sgOiBwdWJsaWMgUmVm
Q291bnRlZDxNZWRpYVBsYXllclJlcXVlc3RJbnN0YWxsTWlzc2luZ1BsdWdpbnNDYWxsYmFjaz4g
ewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEKCk7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJl
ZjxNZWRpYVBsYXllclJlcXVlc3RJbnN0YWxsTWlzc2luZ1BsdWdpbnNDYWxsYmFjaz4gY3JlYXRl
KHN0ZDo6ZnVuY3Rpb248dm9pZCAodWludDMyX3QpPiYmIGZ1bmN0aW9uKQorICAgIHN0YXRpYyBS
ZWY8TWVkaWFQbGF5ZXJSZXF1ZXN0SW5zdGFsbE1pc3NpbmdQbHVnaW5zQ2FsbGJhY2s+IGNyZWF0
ZShXVEY6OkZ1bmN0aW9uPHZvaWQgKHVpbnQzMl90KT4mJiBmdW5jdGlvbikKICAgICB7CiAgICAg
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE1lZGlhUGxheWVyUmVxdWVzdEluc3RhbGxNaXNzaW5n
UGx1Z2luc0NhbGxiYWNrKFdURk1vdmUoZnVuY3Rpb24pKSk7CiAgICAgfQpAQCAtNDcsMTIgKzQ4
LDEyIEBAIHB1YmxpYzoKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgTWVkaWFQbGF5ZXJSZXF1ZXN0
SW5zdGFsbE1pc3NpbmdQbHVnaW5zQ2FsbGJhY2soc3RkOjpmdW5jdGlvbjx2b2lkICh1aW50MzJf
dCk+JiYgZnVuY3Rpb24pCisgICAgTWVkaWFQbGF5ZXJSZXF1ZXN0SW5zdGFsbE1pc3NpbmdQbHVn
aW5zQ2FsbGJhY2soV1RGOjpGdW5jdGlvbjx2b2lkICh1aW50MzJfdCk+JiYgZnVuY3Rpb24pCiAg
ICAgICAgIDogbV9mdW5jdGlvbihXVEZNb3ZlKGZ1bmN0aW9uKSkKICAgICB7CiAgICAgfQogCi0g
ICAgc3RkOjpmdW5jdGlvbjx2b2lkICh1aW50MzJfdCk+IG1fZnVuY3Rpb247CisgICAgV1RGOjpG
dW5jdGlvbjx2b2lkICh1aW50MzJfdCk+IG1fZnVuY3Rpb247CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93
aW4vR3JhcGhpY3NDb250ZXh0RGlyZWN0MkQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dERpcmVjdDJELmNwcAppbmRleCA2NDA1OTcwZjI3
NWViYTUyYjcxZTJkYWI0YWQ3NjBlZDlhMzJlMmYyLi5kMDY2N2MzZDAwY2YyOGUyMzFiMjFhZTk2
Mjk0ZDJjZjY5OGIzYjQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy93aW4vR3JhcGhpY3NDb250ZXh0RGlyZWN0MkQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHREaXJlY3QyRC5jcHAKQEAgLTkz
NSw3ICs5MzUsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd1BhdGgoY29uc3QgUGF0aCYg
cGF0aCkKICAgICBmbHVzaCgpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd1dpdGhv
dXRTaGFkb3coY29uc3QgRmxvYXRSZWN0JiAvKmJvdW5kaW5nUmVjdCovLCBjb25zdCBzdGQ6OmZ1
bmN0aW9uPHZvaWQoSUQyRDFSZW5kZXJUYXJnZXQqKT4mIGRyYXdDb21tYW5kcykKK3ZvaWQgR3Jh
cGhpY3NDb250ZXh0OjpkcmF3V2l0aG91dFNoYWRvdyhjb25zdCBGbG9hdFJlY3QmIC8qYm91bmRp
bmdSZWN0Ki8sIGNvbnN0IFdURjo6RnVuY3Rpb248dm9pZChJRDJEMVJlbmRlclRhcmdldCopPiYg
ZHJhd0NvbW1hbmRzKQogewogICAgIGRyYXdDb21tYW5kcyhwbGF0Zm9ybUNvbnRleHQoKSk7CiB9
CkBAIC05ODEsNyArOTgxLDcgQEAgc3RhdGljIHZvaWQgZHJhd1dpdGhTaGFkb3dIZWxwZXIoSUQy
RDFSZW5kZXJUYXJnZXQqIGNvbnRleHQsIElEMkQxQml0bWFwKiBiaXRtYXAKICAgICBkZXZpY2VD
b250ZXh0LT5EcmF3SW1hZ2UoY29tcG9zaXRvci5nZXQoKSwgRDJEMV9JTlRFUlBPTEFUSU9OX01P
REVfTElORUFSKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdXaXRoU2hhZG93KGNv
bnN0IEZsb2F0UmVjdCYgYm91bmRpbmdSZWN0LCBjb25zdCBzdGQ6OmZ1bmN0aW9uPHZvaWQoSUQy
RDFSZW5kZXJUYXJnZXQqKT4mIGRyYXdDb21tYW5kcykKK3ZvaWQgR3JhcGhpY3NDb250ZXh0Ojpk
cmF3V2l0aFNoYWRvdyhjb25zdCBGbG9hdFJlY3QmIGJvdW5kaW5nUmVjdCwgY29uc3QgV1RGOjpG
dW5jdGlvbjx2b2lkKElEMkQxUmVuZGVyVGFyZ2V0Kik+JiBkcmF3Q29tbWFuZHMpCiB7CiAgICAg
YXV0byBjb250ZXh0ID0gcGxhdGZvcm1Db250ZXh0KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkSGVscGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkSGVscGVyLmNwcAppbmRleCAwODJmYjdjZGEzMWI2YTRi
ZjE2NWNmYmNmMTQ5OGM1MDljZDk2ODhmLi42N2I3YzdjNmFhODdhMmRjZjNkYjA4YzViYmZkYWI5
MWQ5NGNjOWQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGFzdGVi
b2FyZEhlbHBlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Bhc3RlYm9h
cmRIZWxwZXIuY3BwCkBAIC0yNjUsNyArMjY1LDcgQEAgVmVjdG9yPEdka0F0b20+IFBhc3RlYm9h
cmRIZWxwZXI6OmRyb3BBdG9tc0ZvckNvbnRleHQoR3RrV2lkZ2V0KiB3aWRnZXQsIEdka0RyYWcK
IHN0YXRpYyBTZWxlY3Rpb25EYXRhKiBzZXR0aW5nQ2xpcGJvYXJkU2VsZWN0aW9uOwogCiBzdHJ1
Y3QgQ2xpcGJvYXJkU2V0RGF0YSB7Ci0gICAgQ2xpcGJvYXJkU2V0RGF0YShTZWxlY3Rpb25EYXRh
JiBzZWxlY3Rpb24sIHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiYmIHNlbGVjdGlvbkNsZWFyZWRDYWxs
YmFjaykKKyAgICBDbGlwYm9hcmRTZXREYXRhKFNlbGVjdGlvbkRhdGEmIHNlbGVjdGlvbiwgV1RG
OjpGdW5jdGlvbjx2b2lkKCk+JiYgc2VsZWN0aW9uQ2xlYXJlZENhbGxiYWNrKQogICAgICAgICA6
IHNlbGVjdGlvbkRhdGEoc2VsZWN0aW9uKQogICAgICAgICAsIHNlbGVjdGlvbkNsZWFyZWRDYWxs
YmFjayhXVEZNb3ZlKHNlbGVjdGlvbkNsZWFyZWRDYWxsYmFjaykpCiAgICAgewpAQCAtMjc2LDcg
KzI3Niw3IEBAIHN0cnVjdCBDbGlwYm9hcmRTZXREYXRhIHsKICAgICB9CiAKICAgICBSZWY8U2Vs
ZWN0aW9uRGF0YT4gc2VsZWN0aW9uRGF0YTsKLSAgICBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4gc2Vs
ZWN0aW9uQ2xlYXJlZENhbGxiYWNrOworICAgIFdURjo6RnVuY3Rpb248dm9pZCgpPiBzZWxlY3Rp
b25DbGVhcmVkQ2FsbGJhY2s7CiB9OwogCiBzdGF0aWMgdm9pZCBnZXRDbGlwYm9hcmRDb250ZW50
c0NhbGxiYWNrKEd0a0NsaXBib2FyZCosIEd0a1NlbGVjdGlvbkRhdGEgKnNlbGVjdGlvbkRhdGEs
IGd1aW50IGluZm8sIGdwb2ludGVyIHVzZXJEYXRhKQpAQCAtMjkyLDcgKzI5Miw3IEBAIHN0YXRp
YyB2b2lkIGNsZWFyQ2xpcGJvYXJkQ29udGVudHNDYWxsYmFjayhHdGtDbGlwYm9hcmQqLCBncG9p
bnRlciB1c2VyRGF0YSkKICAgICAgICAgZGF0YS0+c2VsZWN0aW9uQ2xlYXJlZENhbGxiYWNrKCk7
CiB9CiAKLXZvaWQgUGFzdGVib2FyZEhlbHBlcjo6d3JpdGVDbGlwYm9hcmRDb250ZW50cyhHdGtD
bGlwYm9hcmQqIGNsaXBib2FyZCwgY29uc3QgU2VsZWN0aW9uRGF0YSYgc2VsZWN0aW9uLCBzdGQ6
OmZ1bmN0aW9uPHZvaWQoKT4mJiBwcmltYXJ5U2VsZWN0aW9uQ2xlYXJlZCkKK3ZvaWQgUGFzdGVi
b2FyZEhlbHBlcjo6d3JpdGVDbGlwYm9hcmRDb250ZW50cyhHdGtDbGlwYm9hcmQqIGNsaXBib2Fy
ZCwgY29uc3QgU2VsZWN0aW9uRGF0YSYgc2VsZWN0aW9uLCBXVEY6OkZ1bmN0aW9uPHZvaWQoKT4m
JiBwcmltYXJ5U2VsZWN0aW9uQ2xlYXJlZCkKIHsKICAgICBHUmVmUHRyPEd0a1RhcmdldExpc3Q+
IGxpc3QgPSB0YXJnZXRMaXN0Rm9yU2VsZWN0aW9uRGF0YShzZWxlY3Rpb24pOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGFzdGVib2FyZEhlbHBlci5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRIZWxwZXIuaAppbmRleCA0YTRkZTk5
NTZlZGU4ZjVlNWY3NmUyNWJmYTY0Zjg1NjNhNjNiNjg4Li4wOTVlZTRhZGQyMjg3OTlkYjc4ZjFh
ZGQxN2QxYzQ4MDcwZDA2MDY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
dGsvUGFzdGVib2FyZEhlbHBlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9Q
YXN0ZWJvYXJkSGVscGVyLmgKQEAgLTI2LDcgKzI2LDcgQEAKICNkZWZpbmUgUGFzdGVib2FyZEhl
bHBlcl9oCiAKICNpbmNsdWRlICJHUmVmUHRyR3RrLmgiCi0jaW5jbHVkZSA8ZnVuY3Rpb25hbD4K
KyNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4K
ICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL2dsaWIvR1JlZlB0ci5oPgpA
QCAtNDcsNyArNDcsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBmaWxsU2VsZWN0aW9uRGF0YShjb25z
dCBTZWxlY3Rpb25EYXRhJiwgdW5zaWduZWQsIEd0a1NlbGVjdGlvbkRhdGEqKTsKICAgICB2b2lk
IGZpbGxTZWxlY3Rpb25EYXRhKEd0a1NlbGVjdGlvbkRhdGEqLCB1bnNpZ25lZCwgU2VsZWN0aW9u
RGF0YSYpOwogICAgIFZlY3RvcjxHZGtBdG9tPiBkcm9wQXRvbXNGb3JDb250ZXh0KEd0a1dpZGdl
dCosIEdka0RyYWdDb250ZXh0Kik7Ci0gICAgdm9pZCB3cml0ZUNsaXBib2FyZENvbnRlbnRzKEd0
a0NsaXBib2FyZCosIGNvbnN0IFNlbGVjdGlvbkRhdGEmLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4m
JiBwcmltYXJ5U2VsZWN0aW9uQ2xlYXJlZCA9IG51bGxwdHIpOworICAgIHZvaWQgd3JpdGVDbGlw
Ym9hcmRDb250ZW50cyhHdGtDbGlwYm9hcmQqLCBjb25zdCBTZWxlY3Rpb25EYXRhJiwgV1RGOjpG
dW5jdGlvbjx2b2lkKCk+JiYgcHJpbWFyeVNlbGVjdGlvbkNsZWFyZWQgPSBudWxscHRyKTsKICAg
ICB2b2lkIGdldENsaXBib2FyZENvbnRlbnRzKEd0a0NsaXBib2FyZCosIFNlbGVjdGlvbkRhdGEm
KTsKIAogICAgIGVudW0gUGFzdGVib2FyZFRhcmdldFR5cGUgeyBUYXJnZXRUeXBlTWFya3VwLCBU
YXJnZXRUeXBlVGV4dCwgVGFyZ2V0VHlwZUltYWdlLCBUYXJnZXRUeXBlVVJJTGlzdCwgVGFyZ2V0
VHlwZU5ldHNjYXBlVVJMLCBUYXJnZXRUeXBlU21hcnRQYXN0ZSwgVGFyZ2V0VHlwZVVua25vd24g
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QbGF0Zm9ybVBhc3Rl
Ym9hcmRHdGsuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1BsYXRmb3JtUGFzdGVi
b2FyZEd0ay5jcHAKaW5kZXggODQ4MWNiODQyN2U1OTAxNDk4MTU5ZTYwYWI4OGJiZmNlMGQwNzcw
ZS4uZWJhM2UwMzc2MjE4OThmODc1MzU2MGZmZmNmZGRkYzZiZGU2MjMzYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1BsYXRmb3JtUGFzdGVib2FyZEd0ay5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1BsYXRmb3JtUGFzdGVib2FyZEd0ay5jcHAK
QEAgLTM0LDcgKzM0LDcgQEAgUGxhdGZvcm1QYXN0ZWJvYXJkOjpQbGF0Zm9ybVBhc3RlYm9hcmQo
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKICAgICBBU1NFUlQobV9jbGlwYm9hcmQpOwog
fQogCi12b2lkIFBsYXRmb3JtUGFzdGVib2FyZDo6d3JpdGVUb0NsaXBib2FyZChjb25zdCBTZWxl
Y3Rpb25EYXRhJiBzZWxlY3Rpb24sIHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiYmIHByaW1hcnlTZWxl
Y3Rpb25DbGVhcmVkKQordm9pZCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OndyaXRlVG9DbGlwYm9hcmQo
Y29uc3QgU2VsZWN0aW9uRGF0YSYgc2VsZWN0aW9uLCBXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJiBw
cmltYXJ5U2VsZWN0aW9uQ2xlYXJlZCkKIHsKICAgICBQYXN0ZWJvYXJkSGVscGVyOjpzaW5nbGV0
b24oKS53cml0ZUNsaXBib2FyZENvbnRlbnRzKG1fY2xpcGJvYXJkLCBzZWxlY3Rpb24sIGd0a19j
bGlwYm9hcmRfZ2V0KEdES19TRUxFQ1RJT05fUFJJTUFSWSkgPT0gbV9jbGlwYm9hcmQgPyBXVEZN
b3ZlKHByaW1hcnlTZWxlY3Rpb25DbGVhcmVkKSA6IG51bGxwdHIpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFW
S2l0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuSW50
ZXJmYWNlQVZLaXQuaAppbmRleCA4ZDNjNDczYzA2ZmE3ZDg0YTQ0Njk5YjA2MDIwMDIzZjdjYjgz
MGUwLi45OGI0ZGJkY2M4YjBkZWJhOWM4MDI4MDIzNDQ1Yzg3NGRhMTFmNzQ0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNl
QVZLaXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2Ny
ZWVuSW50ZXJmYWNlQVZLaXQuaApAQCAtMzQsOCArMzQsOCBAQAogI2luY2x1ZGUgIlBsYXRmb3Jt
TGF5ZXIuaCIKICNpbmNsdWRlICJXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdC5oIgog
I2luY2x1ZGUgIldlYlZpZGVvRnVsbHNjcmVlbk1vZGVsLmgiCi0jaW5jbHVkZSA8ZnVuY3Rpb25h
bD4KICNpbmNsdWRlIDxvYmpjL29iamMuaD4KKyNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KICNp
bmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNs
dWRlIDx3dGYvUmV0YWluUHRyLmg+CkBAIC0xMDEsNyArMTAxLDcgQEAgcHVibGljOgogICAgIEhU
TUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZSBtb2RlKCkgY29uc3QgeyBy
ZXR1cm4gbV9tb2RlOyB9CiAgICAgYm9vbCBhbGxvd3NQaWN0dXJlSW5QaWN0dXJlUGxheWJhY2so
KSBjb25zdCB7IHJldHVybiBtX2FsbG93c1BpY3R1cmVJblBpY3R1cmVQbGF5YmFjazsgfQogICAg
IFdFQkNPUkVfRVhQT1JUIGJvb2wgbWF5QXV0b21hdGljYWxseVNob3dWaWRlb1BpY3R1cmVJblBp
Y3R1cmUoKSBjb25zdDsKLSAgICB2b2lkIGZ1bGxzY3JlZW5NYXlSZXR1cm5Ub0lubGluZShzdGQ6
OmZ1bmN0aW9uPHZvaWQoYm9vbCk+IGNhbGxiYWNrKTsKKyAgICB2b2lkIGZ1bGxzY3JlZW5NYXlS
ZXR1cm5Ub0lubGluZShXVEY6OkZ1bmN0aW9uPHZvaWQoYm9vbCk+JiYgY2FsbGJhY2spOwogICAg
IGJvb2wgd2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQoKSBjb25zdDsKICAgICB2b2lkIGFw
cGxpY2F0aW9uRGlkQmVjb21lQWN0aXZlKCk7CiAKQEAgLTEzOCw3ICsxMzgsNyBAQCBwcm90ZWN0
ZWQ6CiAgICAgUmV0YWluUHRyPFVJV2luZG93PiBtX3BhcmVudFdpbmRvdzsKICAgICBSZXRhaW5Q
dHI8V2ViQVZQbGF5ZXJMYXllclZpZXc+IG1fcGxheWVyTGF5ZXJWaWV3OwogICAgIEhUTUxNZWRp
YUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZSBtX21vZGUgeyBIVE1MTWVkaWFFbGVt
ZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGVOb25lIH07Ci0gICAgc3RkOjpmdW5jdGlvbjx2
b2lkKGJvb2wpPiBtX3ByZXBhcmVUb0lubGluZUNhbGxiYWNrOworICAgIFdURjo6RnVuY3Rpb248
dm9pZChib29sKT4gbV9wcmVwYXJlVG9JbmxpbmVDYWxsYmFjazsKICAgICBSdW5Mb29wOjpUaW1l
cjxXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdD4gbV93YXRjaGRvZ1RpbWVyOwogICAg
IGJvb2wgbV9hbGxvd3NQaWN0dXJlSW5QaWN0dXJlUGxheWJhY2sgeyBmYWxzZSB9OwogICAgIGJv
b2wgbV9leGl0UmVxdWVzdGVkIHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5t
bQppbmRleCA2YmFiYzFlZDUyMGJiMjQ5MzViNWY5NmRiZGVhOTQ2MWY1MmVmZjU3Li43NmZmZmMy
MDA0OGRiZTQzYmRiNTQ4MTc4NjhiMmNhMzcyNzdjNjNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFj
ZUFWS2l0Lm1tCkBAIC04NDQsNyArODQ0LDcgQEAgdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRl
cmZhY2VBVktpdDo6cHJlcGFyZWRUb1JldHVyblRvSW5saW5lKGJvb2wgdmlzaWJsZSwgY28KICAg
ICAgICAgCiAgICAgICAgIFttX3BsYXllclZpZXdDb250cm9sbGVyIHZpZXddLmZyYW1lID0gW21f
cGFyZW50VmlldyBjb252ZXJ0UmVjdDppbmxpbmVSZWN0IHRvVmlldzpbbV9wbGF5ZXJWaWV3Q29u
dHJvbGxlciB2aWV3XS5zdXBlcnZpZXddOwogCi0gICAgICAgIHN0ZDo6ZnVuY3Rpb248dm9pZChi
b29sKT4gY2FsbGJhY2sgPSBXVEZNb3ZlKG1fcHJlcGFyZVRvSW5saW5lQ2FsbGJhY2spOworICAg
ICAgICBXVEY6OkZ1bmN0aW9uPHZvaWQoYm9vbCk+IGNhbGxiYWNrID0gV1RGTW92ZShtX3ByZXBh
cmVUb0lubGluZUNhbGxiYWNrKTsKICAgICAgICAgY2FsbGJhY2sodmlzaWJsZSk7CiAgICAgfQog
fQpAQCAtODU0LDkgKzg1NCw5IEBAIGJvb2wgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZL
aXQ6Om1heUF1dG9tYXRpY2FsbHlTaG93VmlkZW9QaWN0dXJlSW5QaWN0dXJlCiAgICAgcmV0dXJu
IFtwbGF5ZXJDb250cm9sbGVyKCkgaXNQbGF5aW5nXSAmJiBtX21vZGUgPT0gSFRNTE1lZGlhRWxl
bWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlU3RhbmRhcmQgJiYgc3VwcG9ydHNQaWN0dXJl
SW5QaWN0dXJlKCk7CiB9CiAKLXZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6
OmZ1bGxzY3JlZW5NYXlSZXR1cm5Ub0lubGluZShzdGQ6OmZ1bmN0aW9uPHZvaWQoYm9vbCk+IGNh
bGxiYWNrKQordm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6ZnVsbHNjcmVl
bk1heVJldHVyblRvSW5saW5lKFdURjo6RnVuY3Rpb248dm9pZChib29sKT4mJiBjYWxsYmFjaykK
IHsKLSAgICBtX3ByZXBhcmVUb0lubGluZUNhbGxiYWNrID0gY2FsbGJhY2s7CisgICAgbV9wcmVw
YXJlVG9JbmxpbmVDYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spOwogICAgIGlmIChtX2Z1bGxz
Y3JlZW5DaGFuZ2VPYnNlcnZlcikKICAgICAgICAgbV9mdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXIt
PmZ1bGxzY3JlZW5NYXlSZXR1cm5Ub0lubGluZSgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWFjL1Bvd2VyT2JzZXJ2ZXJNYWMuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWFjL1Bvd2VyT2JzZXJ2ZXJNYWMuY3BwCmluZGV4IDMyOTAyZmRhMDY4YWIxNmZm
M2U1ZTQwNzIzYjhmMjNiMTc1MWQ3NzYuLjhmMzdkZDcxZjA3NzRlMzg1YjY2OTYyOWNiZDJlMGQ1
ODRjNDY2YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9Qb3dlck9i
c2VydmVyTWFjLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUG93ZXJPYnNl
cnZlck1hYy5jcHAKQEAgLTMwLDggKzMwLDggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1Q
b3dlck9ic2VydmVyOjpQb3dlck9ic2VydmVyKGNvbnN0IHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiYg
cG93ZXJPbkhhbmRlcikKLSAgICA6IG1fcG93ZXJPbkhhbmRlcihwb3dlck9uSGFuZGVyKQorUG93
ZXJPYnNlcnZlcjo6UG93ZXJPYnNlcnZlcihXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJiBwb3dlck9u
SGFuZGVyKQorICAgIDogbV9wb3dlck9uSGFuZGVyKFdURk1vdmUocG93ZXJPbkhhbmRlcikpCiAg
ICAgLCBtX3Bvd2VyQ29ubmVjdGlvbigwKQogICAgICwgbV9ub3RpZmljYXRpb25Qb3J0KG51bGxw
dHIpCiAgICAgLCBtX25vdGlmaWVyUmVmZXJlbmNlKDApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tYWMvUG93ZXJPYnNlcnZlck1hYy5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWFjL1Bvd2VyT2JzZXJ2ZXJNYWMuaAppbmRleCA3NWZhOGI0MDEyOTBmZDM1YmZjNjVm
OTUyZWU1ODcxZWQxZDY2ZjlhLi5jYjk3YjVkZTVmNjVmYzc2ZGVjZGFmM2QwMTYzY2M1NDYxYTJk
MDljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUG93ZXJPYnNlcnZl
ck1hYy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9Qb3dlck9ic2VydmVyTWFj
LmgKQEAgLTI4LDcgKzI4LDcgQEAKIAogI2ltcG9ydCA8SU9LaXQvSU9NZXNzYWdlLmg+CiAjaW1w
b3J0IDxJT0tpdC9wd3JfbWd0L0lPUE1MaWIuaD4KLSNpbXBvcnQgPGZ1bmN0aW9uYWw+CisjaW1w
b3J0IDx3dGYvRnVuY3Rpb24uaD4KICNpbXBvcnQgPHd0Zi9Ob25jb3B5YWJsZS5oPgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CkBAIC0zNywxMyArMzcsMTMgQEAgY2xhc3MgUG93ZXJPYnNlcnZlciB7
CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUG93ZXJPYnNlcnZlcik7IFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogCiBwdWJsaWM6Ci0gICAgUG93ZXJPYnNlcnZlcihjb25zdCBzdGQ6OmZ1bmN0
aW9uPHZvaWQoKT4mIHBvd2VyT25IYW5kZXIpOworICAgIFBvd2VyT2JzZXJ2ZXIoV1RGOjpGdW5j
dGlvbjx2b2lkKCk+JiYgcG93ZXJPbkhhbmRlcik7CiAgICAgflBvd2VyT2JzZXJ2ZXIoKTsKIAog
cHJpdmF0ZToKICAgICB2b2lkIGRpZFJlY2VpdmVTeXN0ZW1Qb3dlck5vdGlmaWNhdGlvbihpb19z
ZXJ2aWNlX3QsIHVpbnQzMl90IG1lc3NhZ2VUeXBlLCB2b2lkKiBtZXNzYWdlQXJndW1lbnQpOwog
Ci0gICAgc3RkOjpmdW5jdGlvbjx2b2lkKCk+IG1fcG93ZXJPbkhhbmRlcjsKKyAgICBXVEY6OkZ1
bmN0aW9uPHZvaWQoKT4gbV9wb3dlck9uSGFuZGVyOwogICAgIGlvX2Nvbm5lY3RfdCBtX3Bvd2Vy
Q29ubmVjdGlvbjsKICAgICBJT05vdGlmaWNhdGlvblBvcnRSZWYgbV9ub3RpZmljYXRpb25Qb3J0
OwogICAgIGlvX29iamVjdF90IG1fbm90aWZpZXJSZWZlcmVuY2U7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29yZU5TVVJMRXh0cmFzLm1tIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVOU1VSTEV4dHJhcy5tbQppbmRleCA2ZmI2MDA1ZDNj
OWVmNzdlNjk3Yzk1MTU2OGY3NmZmODI3M2E1N2Y0Li5hZWQ2MDU3Y2E1Mjc2ZDNhNDNhMDIyYTYy
MTBiYTQ1MTEwMzlhZTgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMv
V2ViQ29yZU5TVVJMRXh0cmFzLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9X
ZWJDb3JlTlNVUkxFeHRyYXMubW0KQEAgLTMyLDcgKzMyLDcgQEAKICNpbXBvcnQgIldlYkNvcmVO
U1N0cmluZ0V4dHJhcy5oIgogI2ltcG9ydCAiV2ViQ29yZU5TVVJMRXh0cmFzLmgiCiAjaW1wb3J0
ICJXZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmgiCi0jaW1wb3J0IDxmdW5jdGlvbmFsPgorI2ltcG9y
dCA8d3RmL0Z1bmN0aW9uLmg+CiAjaW1wb3J0IDx3dGYvSGV4TnVtYmVyLmg+CiAjaW1wb3J0IDx3
dGYvT2JqY1J1bnRpbWVFeHRyYXMuaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KQEAgLTI3
MSw3ICsyNzEsNyBAQCBzdGF0aWMgQk9PTCBhbGxDaGFyYWN0ZXJzSW5JRE5TY3JpcHRXaGl0ZUxp
c3QoY29uc3QgVUNoYXIgKmJ1ZmZlciwgaW50MzJfdCBsZW5ndAogICAgIHJldHVybiBZRVM7CiB9
CiAKLXN0YXRpYyBib29sIGlzU2Vjb25kTGV2ZWxEb21haW5OYW1lQWxsb3dlZEJ5VExEUnVsZXMo
Y29uc3QgVUNoYXIqIGJ1ZmZlciwgaW50MzJfdCBsZW5ndGgsIGNvbnN0IHN0ZDo6ZnVuY3Rpb248
Ym9vbChVQ2hhcik+JiBjaGFyYWN0ZXJJc0FsbG93ZWQpCitzdGF0aWMgYm9vbCBpc1NlY29uZExl
dmVsRG9tYWluTmFtZUFsbG93ZWRCeVRMRFJ1bGVzKGNvbnN0IFVDaGFyKiBidWZmZXIsIGludDMy
X3QgbGVuZ3RoLCBjb25zdCBXVEY6OkZ1bmN0aW9uPGJvb2woVUNoYXIpPiYgY2hhcmFjdGVySXNB
bGxvd2VkKQogewogICAgIEFTU0VSVChsZW5ndGggPiAwKTsKIApAQCAtMjk0LDcgKzI5NCw3IEBA
IHN0YXRpYyBib29sIGlzU2Vjb25kTGV2ZWxEb21haW5OYW1lQWxsb3dlZEJ5VExEUnVsZXMoY29u
c3QgVUNoYXIqIGJ1ZmZlciwgaW50MzJfCiAgICAgeyBcCiAgICAgICAgIHN0YXRpYyBjb25zdCBp
bnQzMl90IHN1ZmZpeExlbmd0aCA9IHNpemVvZihzdWZmaXgpIC8gc2l6ZW9mKHN1ZmZpeFswXSk7
IFwKICAgICAgICAgaWYgKGxlbmd0aCA+IHN1ZmZpeExlbmd0aCAmJiAwID09IG1lbWNtcChidWZm
ZXIgKyBsZW5ndGggLSBzdWZmaXhMZW5ndGgsIHN1ZmZpeCwgc2l6ZW9mKHN1ZmZpeCkpKSBcCi0g
ICAgICAgICAgICByZXR1cm4gaXNTZWNvbmRMZXZlbERvbWFpbk5hbWVBbGxvd2VkQnlUTERSdWxl
cyhidWZmZXIsIGxlbmd0aCAtIHN1ZmZpeExlbmd0aCwgZnVuY3Rpb24pOyBcCisgICAgICAgICAg
ICByZXR1cm4gaXNTZWNvbmRMZXZlbERvbWFpbk5hbWVBbGxvd2VkQnlUTERSdWxlcyhidWZmZXIs
IGxlbmd0aCAtIHN1ZmZpeExlbmd0aCwgW10oVUNoYXIgYykgeyByZXR1cm4gZnVuY3Rpb24oYyk7
IH0pOyBcCiAgICAgfQogCiBzdGF0aWMgYm9vbCBpc1J1c3NpYW5Eb21haW5OYW1lQ2hhcmFjdGVy
KFVDaGFyIGNoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vQ2FwdHVyZURldmljZU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vQ2FwdHVyZURldmljZU1hbmFnZXIuY3BwCmluZGV4IDc1MDA1OTE3ODljODEzYmZk
Y2JlMjVmZWVjZWExZmYxZGQ5MDZiMGQuLjZlMDkxNjYxOGYyOTU1NDM2MGYxZDhlYmUxODdhYjhi
ZWRkMjUzZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L0NhcHR1cmVEZXZpY2VNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9DYXB0dXJlRGV2aWNlTWFuYWdlci5jcHAKQEAgLTExMyw3ICsxMTMsNyBAQCBz
dGF0aWMgQ2FwdHVyZURldmljZU1hbmFnZXI6Ok9ic2VydmVyVG9rZW4gbmV4dE9ic2VydmVyVG9r
ZW4oKQogICAgIHJldHVybiArK25leHRUb2tlbjsKIH0KIAotQ2FwdHVyZURldmljZU1hbmFnZXI6
Ok9ic2VydmVyVG9rZW4gQ2FwdHVyZURldmljZU1hbmFnZXI6OmFkZENhcHR1cmVEZXZpY2VDaGFu
Z2VkT2JzZXJ2ZXIoQ2FwdHVyZURldmljZUNoYW5nZWRDYWxsYmFjayBvYnNlcnZlcikKK0NhcHR1
cmVEZXZpY2VNYW5hZ2VyOjpPYnNlcnZlclRva2VuIENhcHR1cmVEZXZpY2VNYW5hZ2VyOjphZGRD
YXB0dXJlRGV2aWNlQ2hhbmdlZE9ic2VydmVyKENhcHR1cmVEZXZpY2VDaGFuZ2VkQ2FsbGJhY2sm
JiBvYnNlcnZlcikKIHsKICAgICBhdXRvIHRva2VuID0gbmV4dE9ic2VydmVyVG9rZW4oKTsKICAg
ICBtX29ic2VydmVycy5zZXQodG9rZW4sIFdURk1vdmUob2JzZXJ2ZXIpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL0NhcHR1cmVEZXZpY2VNYW5hZ2Vy
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9DYXB0dXJlRGV2aWNlTWFu
YWdlci5oCmluZGV4IGRmZjAwMjM1OTJlNGQxNTZhYjgxY2IzMWJlOGQxNWFkODhlY2E2NGQuLmRm
YzYwZDFjMjRlZDY5OWFiNjgwNTdmYTY1ODdlNjUxZjE1MDY5YzYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL0NhcHR1cmVEZXZpY2VNYW5hZ2VyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vQ2FwdHVyZURldmljZU1hbmFn
ZXIuaApAQCAtMzQsOSArMzQsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENhcHR1
cmVEZXZpY2VNYW5hZ2VyIHsKIHB1YmxpYzoKLSAgICB1c2luZyBDYXB0dXJlRGV2aWNlQ2hhbmdl
ZENhbGxiYWNrID0gc3RkOjpmdW5jdGlvbjx2b2lkKCk+OworICAgIHVzaW5nIENhcHR1cmVEZXZp
Y2VDaGFuZ2VkQ2FsbGJhY2sgPSBXVEY6OkZ1bmN0aW9uPHZvaWQoKT47CiAgICAgdXNpbmcgT2Jz
ZXJ2ZXJUb2tlbiA9IHVpbnQzMl90OwotICAgIHZpcnR1YWwgT2JzZXJ2ZXJUb2tlbiBhZGRDYXB0
dXJlRGV2aWNlQ2hhbmdlZE9ic2VydmVyKENhcHR1cmVEZXZpY2VDaGFuZ2VkQ2FsbGJhY2spOwor
ICAgIHZpcnR1YWwgT2JzZXJ2ZXJUb2tlbiBhZGRDYXB0dXJlRGV2aWNlQ2hhbmdlZE9ic2VydmVy
KENhcHR1cmVEZXZpY2VDaGFuZ2VkQ2FsbGJhY2smJik7CiAgICAgdmlydHVhbCB2b2lkIHJlbW92
ZUNhcHR1cmVEZXZpY2VDaGFuZ2VkT2JzZXJ2ZXIoT2JzZXJ2ZXJUb2tlbik7CiAKICAgICB2aXJ0
dWFsIFZlY3RvcjxDYXB0dXJlRGV2aWNlPiYgY2FwdHVyZURldmljZXMoKSA9IDA7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291
cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVk
aWFTb3VyY2UuY3BwCmluZGV4IDMzMjQ2YTAxY2RlODRhMzYyZTFjODY5MTU0MzZlYjIwYmM0MWU1
ZTcuLmIzODY2MjZhYjkzYWI0NGFjNGY4OGQzYzIyZTVlN2U3NTE1YjJkZmIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVk
aWFTb3VyY2UuY3BwCkBAIC04ODIsNyArODgyLDcgQEAgdm9pZCBSZWFsdGltZU1lZGlhU291cmNl
OjpzZXRFY2hvQ2FuY2VsbGF0aW9uKGJvb2wgZWNob0NhbmNlbGxhdGlvbikKICAgICBzZXR0aW5n
c0RpZENoYW5nZSgpOwogfQogCi12b2lkIFJlYWx0aW1lTWVkaWFTb3VyY2U6OnNjaGVkdWxlRGVm
ZXJyZWRUYXNrKHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiYmIGZ1bmN0aW9uKQordm9pZCBSZWFsdGlt
ZU1lZGlhU291cmNlOjpzY2hlZHVsZURlZmVycmVkVGFzayhXVEY6OkZ1bmN0aW9uPHZvaWQoKT4m
JiBmdW5jdGlvbikKIHsKICAgICBBU1NFUlQoZnVuY3Rpb24pOwogICAgIGNhbGxPbk1haW5UaHJl
YWQoW3dlYWtUaGlzID0gY3JlYXRlV2Vha1B0cigpLCBmdW5jdGlvbiA9IFdURk1vdmUoZnVuY3Rp
b24pXSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9S
ZWFsdGltZU1lZGlhU291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9SZWFsdGltZU1lZGlhU291cmNlLmgKaW5kZXggMDQxMGVlNWM3MjdmM2NmMmRlMGM5MjQwMjlj
Zjk1ZWEyNTIxZWRmOC4uNDAzOWM5NTNkYzk1ZWMzOWM3ZjkwNzA5YjFhZDBiZDdjYmU2MGRiZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVN
ZWRpYVNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1Jl
YWx0aW1lTWVkaWFTb3VyY2UuaApAQCAtMTkwLDggKzE5MCw4IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIGNvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXMmIGNhcGFiaWxpdGllcygp
IGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIGNvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5n
cyYgc2V0dGluZ3MoKSBjb25zdCA9IDA7CiAKLSAgICB1c2luZyBTdWNjZXNzSGFuZGxlciA9IHN0
ZDo6ZnVuY3Rpb248dm9pZCgpPjsKLSAgICB1c2luZyBGYWlsdXJlSGFuZGxlciA9IHN0ZDo6ZnVu
Y3Rpb248dm9pZChjb25zdCBTdHJpbmcmIGJhZENvbnN0cmFpbnQsIGNvbnN0IFN0cmluZyYgZXJy
b3JTdHJpbmcpPjsKKyAgICB1c2luZyBTdWNjZXNzSGFuZGxlciA9IFdURjo6RnVuY3Rpb248dm9p
ZCgpPjsKKyAgICB1c2luZyBGYWlsdXJlSGFuZGxlciA9IFdURjo6RnVuY3Rpb248dm9pZChjb25z
dCBTdHJpbmcmIGJhZENvbnN0cmFpbnQsIGNvbnN0IFN0cmluZyYgZXJyb3JTdHJpbmcpPjsKICAg
ICB2aXJ0dWFsIHZvaWQgYXBwbHlDb25zdHJhaW50cyhjb25zdCBNZWRpYUNvbnN0cmFpbnRzJiwg
U3VjY2Vzc0hhbmRsZXImJiwgRmFpbHVyZUhhbmRsZXImJik7CiAgICAgc3RkOjpvcHRpb25hbDxz
dGQ6OnBhaXI8U3RyaW5nLCBTdHJpbmc+PiBhcHBseUNvbnN0cmFpbnRzKGNvbnN0IE1lZGlhQ29u
c3RyYWludHMmKTsKIApAQCAtMjEyLDcgKzIxMiw3IEBAIHB1YmxpYzoKIHByb3RlY3RlZDoKICAg
ICBSZWFsdGltZU1lZGlhU291cmNlKGNvbnN0IFN0cmluZyYgaWQsIFR5cGUsIGNvbnN0IFN0cmlu
ZyYgbmFtZSk7CiAKLSAgICB2b2lkIHNjaGVkdWxlRGVmZXJyZWRUYXNrKHN0ZDo6ZnVuY3Rpb248
dm9pZCgpPiYmKTsKKyAgICB2b2lkIHNjaGVkdWxlRGVmZXJyZWRUYXNrKFdURjo6RnVuY3Rpb248
dm9pZCgpPiYmKTsKIAogICAgIHZpcnR1YWwgdm9pZCBiZWdpbkNvbmZpZ3VyYXRpb24oKSB7IH0K
ICAgICB2aXJ0dWFsIHZvaWQgY29tbWl0Q29uZmlndXJhdGlvbigpIHsgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vaW9zL0FWQXVkaW9TZXNzaW9uQ2Fw
dHVyZURldmljZU1hbmFnZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9pb3MvQVZBdWRpb1Nlc3Npb25DYXB0dXJlRGV2aWNlTWFuYWdlci5tbQppbmRleCBjYjAwOGNi
YmI5MWFiYjY5NWEwZTVlNzQ0NGZhNjA4Zjk0NzQ4MTJlLi4wZmRhMTNmMTFlMjdmNGViYTQ0YWIw
OWUwZWQ0OWU3ZWU4NDAxMzgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9pb3MvQVZBdWRpb1Nlc3Npb25DYXB0dXJlRGV2aWNlTWFuYWdlci5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9pb3MvQVZBdWRpb1Nlc3Npb25D
YXB0dXJlRGV2aWNlTWFuYWdlci5tbQpAQCAtNDAsMTggKzQwLDE4IEBAIFNPRlRfTElOS19DTEFT
UyhBVkZvdW5kYXRpb24sIEFWQXVkaW9TZXNzaW9uKQogdm9pZCogQXZhaWxhYmxlSW5wdXRzQ29u
dGV4dCA9ICZBdmFpbGFibGVJbnB1dHNDb250ZXh0OwogCiBAaW50ZXJmYWNlIFdlYkFWQXVkaW9T
ZXNzaW9uQXZhaWxhYmxlSW5wdXRzTGlzdGVuZXIgOiBOU09iamVjdCB7Ci0gICAgc3RkOjpmdW5j
dGlvbjx2b2lkKCk+IF9jYWxsYmFjazsKKyAgICBXVEY6OkZ1bmN0aW9uPHZvaWQoKT4gX2NhbGxi
YWNrOwogfQogQGVuZAogCiBAaW1wbGVtZW50YXRpb24gV2ViQVZBdWRpb1Nlc3Npb25BdmFpbGFi
bGVJbnB1dHNMaXN0ZW5lcgotLSAoaWQpaW5pdFdpdGhDYWxsYmFjazooc3RkOjpmdW5jdGlvbjx2
b2lkKCk+KWNhbGxiYWNrCistIChpZClpbml0V2l0aENhbGxiYWNrOihXVEY6OkZ1bmN0aW9uPHZv
aWQoKT4mJiljYWxsYmFjawogewogICAgIHNlbGYgPSBbc3VwZXIgaW5pdF07CiAgICAgaWYgKCFz
ZWxmKQogICAgICAgICByZXR1cm4gbmlsOwogCi0gICAgX2NhbGxiYWNrID0gY2FsbGJhY2s7Cisg
ICAgX2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayk7CiAgICAgcmV0dXJuIHNlbGY7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Db3Jl
QXVkaW9DYXB0dXJlU291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9tYWMvQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZS5oCmluZGV4IGNlMGJkZWUxNjgyNDcxMGU3MzRl
MDExZjkyNDRkYzlkNmVhZTc0MTUuLjhlODk3NDMyMzBhMDNiMGI3ZWExNWExNTZlYTZiZjJhNTM4
MjI3NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21h
Yy9Db3JlQXVkaW9DYXB0dXJlU291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vbWFjL0NvcmVBdWRpb0NhcHR1cmVTb3VyY2UuaApAQCAtNjEsNyArNjEsNyBA
QCBwdWJsaWM6CiAgICAgdm9pZCBhZGRFY2hvQ2FuY2VsbGF0aW9uU291cmNlKEF1ZGlvU2FtcGxl
RGF0YVNvdXJjZSYpOwogICAgIHZvaWQgcmVtb3ZlRWNob0NhbmNlbGxhdGlvblNvdXJjZShBdWRp
b1NhbXBsZURhdGFTb3VyY2UmKTsKIAotICAgIHVzaW5nIE1pY3JvcGhvbmVEYXRhQ2FsbGJhY2sg
PSBzdGQ6OmZ1bmN0aW9uPHZvaWQoY29uc3QgTWVkaWFUaW1lJiBzYW1wbGVUaW1lLCBjb25zdCBQ
bGF0Zm9ybUF1ZGlvRGF0YSYgYXVkaW9EYXRhLCBjb25zdCBBdWRpb1N0cmVhbURlc2NyaXB0aW9u
JiBkZXNjcmlwdGlvbiwgc2l6ZV90IHNhbXBsZUNvdW50KT47CisgICAgdXNpbmcgTWljcm9waG9u
ZURhdGFDYWxsYmFjayA9IFdURjo6RnVuY3Rpb248dm9pZChjb25zdCBNZWRpYVRpbWUmIHNhbXBs
ZVRpbWUsIGNvbnN0IFBsYXRmb3JtQXVkaW9EYXRhJiBhdWRpb0RhdGEsIGNvbnN0IEF1ZGlvU3Ry
ZWFtRGVzY3JpcHRpb24mIGRlc2NyaXB0aW9uLCBzaXplX3Qgc2FtcGxlQ291bnQpPjsKIAogICAg
IHVpbnQ2NF90IGFkZE1pY3JvcGhvbmVEYXRhQ29uc3VtZXIoTWljcm9waG9uZURhdGFDYWxsYmFj
ayYmKTsKICAgICB2b2lkIHJlbW92ZU1pY3JvcGhvbmVEYXRhQ29uc3VtZXIodWludDY0X3QpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9TY3JvbGxBbmltYXRvck1v
Y2suY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9TY3JvbGxBbmltYXRvck1vY2su
Y3BwCmluZGV4IGMwODAzODEwZWRkOGQ1Y2ZkZGFlNGI3NjQ5MWEzODc3NmIyNzZiZmIuLjUyMmFl
YjJhY2RiNTI4OTNhYWRjNjYyNDExNzlkMjU0ZWI0OWY4ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21vY2svU2Nyb2xsQW5pbWF0b3JNb2NrLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1Njcm9sbEFuaW1hdG9yTW9jay5jcHAKQEAgLTM2LDcgKzM2
LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1TY3JvbGxBbmltYXRvck1vY2s6OlNjcm9s
bEFuaW1hdG9yTW9jayhTY3JvbGxhYmxlQXJlYSYgc2Nyb2xsYWJsZUFyZWEsIHN0ZDo6ZnVuY3Rp
b248dm9pZChjb25zdCBTdHJpbmcmKT4mJiBsb2dnZXIpCitTY3JvbGxBbmltYXRvck1vY2s6OlNj
cm9sbEFuaW1hdG9yTW9jayhTY3JvbGxhYmxlQXJlYSYgc2Nyb2xsYWJsZUFyZWEsIFdURjo6RnVu
Y3Rpb248dm9pZChjb25zdCBTdHJpbmcmKT4mJiBsb2dnZXIpCiAgICAgOiBTY3JvbGxBbmltYXRv
cihzY3JvbGxhYmxlQXJlYSkKICAgICAsIG1fbG9nZ2VyKFdURk1vdmUobG9nZ2VyKSkKIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svU2Nyb2xsQW5pbWF0b3JNb2Nr
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1Njcm9sbEFuaW1hdG9yTW9jay5oCmlu
ZGV4IDg1ZGM0ZjZlZGMzZTViM2NjZTQ1Mzc4M2U2ZTBkM2Q5NTExMjRmN2QuLjIzMGI5YWYzMWQw
N2ZiMjgzYjY2YjFkOWYyNjZiODAxYWNmYzMyMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21vY2svU2Nyb2xsQW5pbWF0b3JNb2NrLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbW9jay9TY3JvbGxBbmltYXRvck1vY2suaApAQCAtNDAsNyArNDAsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAvLyB0aGUgaW50ZXJuYWwgc2V0dGluZyBlbmFibGVNb2NrU2Nyb2xs
QW5pbWF0b3IuCiBjbGFzcyBTY3JvbGxBbmltYXRvck1vY2sgZmluYWwgOiBwdWJsaWMgU2Nyb2xs
QW5pbWF0b3IgewogcHVibGljOgotICAgIFNjcm9sbEFuaW1hdG9yTW9jayhTY3JvbGxhYmxlQXJl
YSYsIHN0ZDo6ZnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcmKT4mJik7CisgICAgU2Nyb2xsQW5p
bWF0b3JNb2NrKFNjcm9sbGFibGVBcmVhJiwgV1RGOjpGdW5jdGlvbjx2b2lkKGNvbnN0IFN0cmlu
ZyYpPiYmKTsKICAgICB2aXJ0dWFsIH5TY3JvbGxBbmltYXRvck1vY2soKTsKIAogI2lmIEVOQUJM
RShSVUJCRVJfQkFORElORykKQEAgLTY4LDcgKzY4LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIG1v
dXNlRXhpdGVkU2Nyb2xsYmFyKFNjcm9sbGJhciopIGNvbnN0IG92ZXJyaWRlOwogICAgIHZvaWQg
bW91c2VJc0Rvd25JblNjcm9sbGJhcihTY3JvbGxiYXIqLCBib29sKSBjb25zdCBvdmVycmlkZTsK
IAotICAgIHN0ZDo6ZnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcmKT4gbV9sb2dnZXI7CisgICAg
V1RGOjpGdW5jdGlvbjx2b2lkKGNvbnN0IFN0cmluZyYpPiBtX2xvZ2dlcjsKICAgICBTY3JvbGxi
YXIqIG1fdmVydGljYWxTY3JvbGxiYXIgeyBudWxscHRyIH07CiAgICAgU2Nyb2xsYmFyKiBtX2hv
cml6b250YWxTY3JvbGxiYXIgeyBudWxscHRyIH07CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9Db29raWVTdG9yYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL0Nvb2tpZVN0b3JhZ2UuaAppbmRleCBjNTA1M2NjOTA1ZGI2ZTgxYmY2
ZjRlNWQ2OGY5ZjU4ODU2MDAyMzJjLi44MWVmY2JmMDA1ZTg0ZDUzYTUyNGM2M2RiNTMzNmJiYjcy
ZmM4NTlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Nvb2tp
ZVN0b3JhZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Nvb2tpZVN0
b3JhZ2UuaApAQCAtMjUsMTMgKzI1LDEzIEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSA8
ZnVuY3Rpb25hbD4KKyNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBjbGFzcyBOZXR3b3JrU3RvcmFnZVNlc3Npb247CiAKLVdFQkNPUkVfRVhQT1JUIHZv
aWQgc3RhcnRPYnNlcnZpbmdDb29raWVDaGFuZ2VzKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lv
biYsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4mJik7CitXRUJDT1JFX0VYUE9SVCB2b2lkIHN0YXJ0
T2JzZXJ2aW5nQ29va2llQ2hhbmdlcyhjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBXVEY6
OkZ1bmN0aW9uPHZvaWQgKCk+JiYpOwogV0VCQ09SRV9FWFBPUlQgdm9pZCBzdG9wT2JzZXJ2aW5n
Q29va2llQ2hhbmdlcyhjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mKTsKIAogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RhdGVOb3RpZmll
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdGF0ZU5vdGlm
aWVyLmNwcAppbmRleCA1NTc0YTM1ODM0Y2M2MDFmNTg2ZWVkNzk1MmM1YWE0ODExNmY4OWVmLi5h
ZDE1ZTVjZjNjM2ZkMTUyNmY3YTY0NDg1MDQwYjVkOTk4MmM5MzBkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdGF0ZU5vdGlmaWVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdGF0ZU5vdGlmaWVyLmNw
cApAQCAtNDgsNyArNDgsNyBAQCBOZXR3b3JrU3RhdGVOb3RpZmllciYgbmV0d29ya1N0YXRlTm90
aWZpZXIoKQogICAgIHJldHVybiBuZXR3b3JrU3RhdGVOb3RpZmllcjsKIH0KIAotdm9pZCBOZXR3
b3JrU3RhdGVOb3RpZmllcjo6YWRkTmV0d29ya1N0YXRlQ2hhbmdlTGlzdGVuZXIoc3RkOjpmdW5j
dGlvbjx2b2lkIChib29sKT4gbGlzdGVuZXIpCit2b2lkIE5ldHdvcmtTdGF0ZU5vdGlmaWVyOjph
ZGROZXR3b3JrU3RhdGVDaGFuZ2VMaXN0ZW5lcihXVEY6OkZ1bmN0aW9uPHZvaWQgKGJvb2wpPiYm
IGxpc3RlbmVyKQogewogICAgIEFTU0VSVChsaXN0ZW5lcik7CiAjaWYgUExBVEZPUk0oSU9TKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RhdGVO
b3RpZmllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RhdGVO
b3RpZmllci5oCmluZGV4IDUyODJlYzA2NmFiYmEyMzcxNzY4YTg0YWQ5YTJhNTIwNjBiZDM0MmYu
LmMzYTQyOTAzY2QwYjg5Y2E2MmExYjE4NTI2MTNlZWQwYWU4NmExODEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0YXRlTm90aWZpZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdGF0ZU5vdGlmaWVyLmgK
QEAgLTI2LDggKzI2LDggQEAKICNpZm5kZWYgTmV0d29ya1N0YXRlTm90aWZpZXJfaAogI2RlZmlu
ZSBOZXR3b3JrU3RhdGVOb3RpZmllcl9oCiAKLSNpbmNsdWRlIDxmdW5jdGlvbmFsPgogI2luY2x1
ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CisjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+CiAjaW5jbHVk
ZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCkBAIC01OSw3
ICs1OSw3IEBAIHB1YmxpYzoKICNpZiBQTEFURk9STShJT1MpCiAgICAgfk5ldHdvcmtTdGF0ZU5v
dGlmaWVyKCk7CiAjZW5kaWYKLSAgICB2b2lkIGFkZE5ldHdvcmtTdGF0ZUNoYW5nZUxpc3RlbmVy
KHN0ZDo6ZnVuY3Rpb248dm9pZCAoYm9vbCBpc09uTGluZSk+KTsKKyAgICB2b2lkIGFkZE5ldHdv
cmtTdGF0ZUNoYW5nZUxpc3RlbmVyKFdURjo6RnVuY3Rpb248dm9pZCAoYm9vbCBpc09uTGluZSk+
JiYpOwogCiAgICAgYm9vbCBvbkxpbmUoKSBjb25zdDsKIApAQCAtNjcsNyArNjcsNyBAQCBwcml2
YXRlOgogI2lmICFQTEFURk9STShJT1MpCiAgICAgYm9vbCBtX2lzT25MaW5lOwogI2VuZGlmCi0g
ICAgVmVjdG9yPHN0ZDo6ZnVuY3Rpb248dm9pZCAoYm9vbCk+PiBtX2xpc3RlbmVyczsKKyAgICBW
ZWN0b3I8V1RGOjpGdW5jdGlvbjx2b2lkIChib29sKT4+IG1fbGlzdGVuZXJzOwogCiAgICAgdm9p
ZCBub3RpZnlOZXR3b3JrU3RhdGVDaGFuZ2UoKSBjb25zdDsKICAgICB2b2lkIHVwZGF0ZVN0YXRl
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtT
dG9yYWdlU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdv
cmtTdG9yYWdlU2Vzc2lvbi5jcHAKaW5kZXggNTViZTljY2Y0MmE2ZmMxMWQxNTY3YmMwN2M0Zjkx
NDRhY2Y2M2JmMy4uOThkYTA4MmFlZTYzNDc4OTcwYmNlMDkzOTU2ZjMzYzE5OGE1NjUxMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNl
c3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0
b3JhZ2VTZXNzaW9uLmNwcApAQCAtNTAsNyArNTAsNyBAQCB2b2lkIE5ldHdvcmtTdG9yYWdlU2Vz
c2lvbjo6ZGVzdHJveVNlc3Npb24oU2Vzc2lvbklEIHNlc3Npb25JRCkKICAgICBnbG9iYWxTZXNz
aW9uTWFwKCkucmVtb3ZlKHNlc3Npb25JRCk7CiB9CiAKLXZvaWQgTmV0d29ya1N0b3JhZ2VTZXNz
aW9uOjpmb3JFYWNoKHN0ZDo6ZnVuY3Rpb248dm9pZChjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3Rv
cmFnZVNlc3Npb24mKT4gZnVuY3RvcikKK3ZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpmb3JF
YWNoKGNvbnN0IFdURjo6RnVuY3Rpb248dm9pZChjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFn
ZVNlc3Npb24mKT4mIGZ1bmN0b3IpCiB7CiAgICAgZnVuY3RvcihkZWZhdWx0U3RvcmFnZVNlc3Np
b24oKSk7CiAgICAgZm9yIChhdXRvJiBzdG9yYWdlU2Vzc2lvbiA6IGdsb2JhbFNlc3Npb25NYXAo
KS52YWx1ZXMoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
TmV0d29ya1N0b3JhZ2VTZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oCmluZGV4IGIwOTc2ZDk3NTIwNjI4OGU3MTRkYmMwZmNj
YjU2NDZiMzM3NTg5MTUuLjI4NTVjYjc5ZDIxNmE2Y2U0ZmQ4OGVkYTUzOTQzMjNiYzg3NDU3ZDEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3Jr
U3RvcmFnZVNlc3Npb24uaApAQCAtMjcsNyArMjcsNyBAQAogCiAjaW5jbHVkZSAiQ3JlZGVudGlh
bFN0b3JhZ2UuaCIKICNpbmNsdWRlICJTZXNzaW9uSUQuaCIKLSNpbmNsdWRlIDxmdW5jdGlvbmFs
PgorI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAj
aW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKQEAgLTYyLDcgKzYyLDcgQEAgcHVibGlj
OgogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIGVuc3VyZVByaXZhdGVCcm93c2luZ1Nl
c3Npb24oU2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIGlkZW50aWZpZXJCYXNlID0gU3RyaW5nKCkp
OwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIGVuc3VyZVNlc3Npb24oU2Vzc2lvbklE
LCBjb25zdCBTdHJpbmcmIGlkZW50aWZpZXJCYXNlID0gU3RyaW5nKCkpOwogICAgIFdFQkNPUkVf
RVhQT1JUIHN0YXRpYyB2b2lkIGRlc3Ryb3lTZXNzaW9uKFNlc3Npb25JRCk7Ci0gICAgV0VCQ09S
RV9FWFBPUlQgc3RhdGljIHZvaWQgZm9yRWFjaChzdGQ6OmZ1bmN0aW9uPHZvaWQoY29uc3QgV2Vi
Q29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJik+KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0
aWMgdm9pZCBmb3JFYWNoKGNvbnN0IFdURjo6RnVuY3Rpb248dm9pZChjb25zdCBXZWJDb3JlOjpO
ZXR3b3JrU3RvcmFnZVNlc3Npb24mKT4mKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2
b2lkIHN3aXRjaFRvTmV3VGVzdGluZ1Nlc3Npb24oKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Db29raWVTdG9yYWdlQ0ZOZXQuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Db29raWVTdG9yYWdlQ0ZOZXQuY3BwCmluZGV4
IDYxOWIwNzg5MDlkMzFiZDQ0YzEzY2NmYzkzMmEzY2RkZGJjOGNhNTMuLmU4MGRlM2YxMjVkMTNl
MGRmYzg0OThmMGMyNDdiNzAxMDA4YTAwZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY2YvQ29va2llU3RvcmFnZUNGTmV0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0Nvb2tpZVN0b3JhZ2VDRk5ldC5jcHAKQEAgLTI3LDYg
KzI3LDcgQEAKICNpbmNsdWRlICJDb29raWVTdG9yYWdlLmgiCiAKICNpbmNsdWRlICJOZXR3b3Jr
U3RvcmFnZVNlc3Npb24uaCIKKyNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KICNpbmNsdWRlIDx3
dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5jbHVkZSA8d3Rm
L05ldmVyRGVzdHJveWVkLmg+CkBAIC00MywxNyArNDQsMTggQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiAjaWYgUExBVEZPUk0oV0lOKQogCi1zdGF0aWMgSGFzaE1hcDxDRkhUVFBDb29raWVTdG9y
YWdlUmVmLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+PiYgY29va2llQ2hhbmdlQ2FsbGJhY2tNYXAo
KQorc3RhdGljIEhhc2hNYXA8Q0ZIVFRQQ29va2llU3RvcmFnZVJlZiwgV1RGOjpGdW5jdGlvbjx2
b2lkICgpPj4mIGNvb2tpZUNoYW5nZUNhbGxiYWNrTWFwKCkKIHsKLSAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8SGFzaE1hcDxDRkhUVFBDb29raWVTdG9yYWdlUmVmLCBzdGQ6OmZ1bmN0aW9uPHZv
aWQgKCk+Pj4gbWFwOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoTWFwPENGSFRUUENv
b2tpZVN0b3JhZ2VSZWYsIFdURjo6RnVuY3Rpb248dm9pZCAoKT4+PiBtYXA7CiAgICAgcmV0dXJu
IG1hcDsKIH0KIAogc3RhdGljIHZvaWQgbm90aWZ5Q29va2llc0NoYW5nZWQoQ0ZIVFRQQ29va2ll
U3RvcmFnZVJlZiBjb29raWVTdG9yYWdlLCB2b2lkICopCiB7CiAgICAgY2FsbE9uTWFpblRocmVh
ZChbY29va2llU3RvcmFnZV0gewotICAgICAgICBpZiAoYXV0byBjYWxsYmFjayA9IGNvb2tpZUNo
YW5nZUNhbGxiYWNrTWFwKCkuZ2V0KGNvb2tpZVN0b3JhZ2UpKQotICAgICAgICAgICAgY2FsbGJh
Y2soKTsKKyAgICAgICAgYXV0byBpdCA9IGNvb2tpZUNoYW5nZUNhbGxiYWNrTWFwKCkuZmluZChj
b29raWVTdG9yYWdlKTsKKyAgICAgICAgaWYgKGl0ICE9IGNvb2tpZUNoYW5nZUNhbGxiYWNrTWFw
KCkuZW5kKCkpCisgICAgICAgICAgICAoKml0KSgpOwogICAgIH0pOwogfQogCkBAIC02OCw3ICs3
MCw3IEBAIHN0YXRpYyBpbmxpbmUgQ0ZSdW5Mb29wUmVmIGNvb2tpZVN0b3JhZ2VPYnNlcnZlclJ1
bkxvb3AoKQogICAgIHJldHVybiBsb2FkZXJSdW5Mb29wKCk7CiB9CiAKLXZvaWQgc3RhcnRPYnNl
cnZpbmdDb29raWVDaGFuZ2VzKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc3RvcmFnZVNl
c3Npb24sIHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4mJiBjYWxsYmFjaykKK3ZvaWQgc3RhcnRPYnNl
cnZpbmdDb29raWVDaGFuZ2VzKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc3RvcmFnZVNl
c3Npb24sIFdURjo6RnVuY3Rpb248dm9pZCAoKT4mJiBjYWxsYmFjaykKIHsKICAgICBBU1NFUlQo
aXNNYWluVGhyZWFkKCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2NmL1NvY2tldFN0cmVhbUhhbmRsZUltcGxDRk5ldC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1NvY2tldFN0cmVhbUhhbmRsZUltcGxDRk5ldC5jcHAKaW5k
ZXggZWQ0MTA5YWU2ZDc2OTgwMTFlMzRlMjUyZDI2NGY2ODE5MTE5YzlmYS4uNDE3NjgwMDhkODMx
NWNjZTljYWQ2YzQ2MmE0MGQ0ZDMyMWNjZmU0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jZi9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsQ0ZOZXQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvU29ja2V0U3RyZWFtSGFuZGxlSW1w
bENGTmV0LmNwcApAQCAtMTQ0LDcgKzE0NCw3IEBAIENGU3RyaW5nUmVmIFNvY2tldFN0cmVhbUhh
bmRsZUltcGw6OmNvcHlQQUNFeGVjdXRpb25EZXNjcmlwdGlvbih2b2lkKikKICAgICByZXR1cm4g
Q0ZTVFIoIldlYlNvY2tldCBwcm94eSBQQUMgZmlsZSBleGVjdXRpb24iKTsKIH0KIAotc3RhdGlj
IHZvaWQgY2FsbE9uTWFpblRocmVhZEFuZFdhaXQoc3RkOjpmdW5jdGlvbjx2b2lkKCk+IGZ1bmN0
aW9uKQorc3RhdGljIHZvaWQgY2FsbE9uTWFpblRocmVhZEFuZFdhaXQoV1RGOjpGdW5jdGlvbjx2
b2lkKCk+JiYgZnVuY3Rpb24pCiB7CiAgICAgaWYgKGlzTWFpblRocmVhZCgpKSB7CiAgICAgICAg
IGZ1bmN0aW9uKCk7CkBAIC0xNTYsNyArMTU2LDcgQEAgc3RhdGljIHZvaWQgY2FsbE9uTWFpblRo
cmVhZEFuZFdhaXQoc3RkOjpmdW5jdGlvbjx2b2lkKCk+IGZ1bmN0aW9uKQogCiAgICAgYm9vbCBp
c0ZpbmlzaGVkID0gZmFsc2U7CiAKLSAgICBjYWxsT25NYWluVGhyZWFkKFsmXSB7CisgICAgY2Fs
bE9uTWFpblRocmVhZChbJiwgZnVuY3Rpb24gPSBXVEZNb3ZlKGZ1bmN0aW9uKV0gewogICAgICAg
ICBmdW5jdGlvbigpOwogCiAgICAgICAgIHN0ZDo6bG9ja19ndWFyZDxMb2NrPiBsb2NrKG11dGV4
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0Nvb2tp
ZVN0b3JhZ2VNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9Db29r
aWVTdG9yYWdlTWFjLm1tCmluZGV4IGU3ODJiMDY2ZTRlYTk2ODVhNDhhZGI3OWU4MWUwMzg1MDlk
YzQ2Y2IuLmUxNGUzZDE0MGZiMWQ1NzI1YTJlNzZmYzU0ZTk5ZGJjZDkxNjM0YjUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0Nvb2tpZVN0b3JhZ2VNYWMu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvQ29va2llU3RvcmFn
ZU1hYy5tbQpAQCAtMjMsMTkgKzIzLDIwIEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKICAqLwogCi0jaW5j
bHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiQ29va2llU3RvcmFnZS5oIgorI2ltcG9ydCAiY29u
ZmlnLmgiCisjaW1wb3J0ICJDb29raWVTdG9yYWdlLmgiCiAKICNpbXBvcnQgIldlYkNvcmVTeXN0
ZW1JbnRlcmZhY2UuaCIKKyNpbXBvcnQgPHd0Zi9GdW5jdGlvbi5oPgogCiB1c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZTsKIAogQGludGVyZmFjZSBXZWJDb29raWVTdG9yYWdlT2JqQ0FkYXB0ZXIgOiBO
U09iamVjdCB7Ci0gICAgc3RkOjpmdW5jdGlvbjx2b2lkICgpPiBtX2Nvb2tpZUNoYW5nZUNhbGxi
YWNrOworICAgIFdURjo6RnVuY3Rpb248dm9pZCAoKT4gbV9jb29raWVDaGFuZ2VDYWxsYmFjazsK
IH0KIC0odm9pZClub3RpZnlDb29raWVzQ2hhbmdlZE9uTWFpblRocmVhZDsKIC0odm9pZCljb29r
aWVzQ2hhbmdlZE5vdGlmaWNhdGlvbkhhbmRsZXI6KE5TTm90aWZpY2F0aW9uICopbm90aWZpY2F0
aW9uOwotLSh2b2lkKXN0YXJ0TGlzdGVuaW5nRm9yQ29va2llQ2hhbmdlTm90aWZpY2F0aW9uc1dp
dGhDYWxsYmFjazooc3RkOjpmdW5jdGlvbjx2b2lkICgpPiYmKWNhbGxiYWNrOworLSh2b2lkKXN0
YXJ0TGlzdGVuaW5nRm9yQ29va2llQ2hhbmdlTm90aWZpY2F0aW9uc1dpdGhDYWxsYmFjazooV1RG
OjpGdW5jdGlvbjx2b2lkICgpPiYmKWNhbGxiYWNrOwogLSh2b2lkKXN0b3BMaXN0ZW5pbmdGb3JD
b29raWVDaGFuZ2VOb3RpZmljYXRpb25zOwogQGVuZAogCkBAIC01Myw3ICs1NCw3IEBAIC0odm9p
ZCljb29raWVzQ2hhbmdlZE5vdGlmaWNhdGlvbkhhbmRsZXI6KE5TTm90aWZpY2F0aW9uICopbm90
aWZpY2F0aW9uCiAgICAgW3NlbGYgcGVyZm9ybVNlbGVjdG9yT25NYWluVGhyZWFkOkBzZWxlY3Rv
cihub3RpZnlDb29raWVzQ2hhbmdlZE9uTWFpblRocmVhZCkgd2l0aE9iamVjdDpuaWwgd2FpdFVu
dGlsRG9uZTpGQUxTRV07CiB9CiAKLS0odm9pZClzdGFydExpc3RlbmluZ0ZvckNvb2tpZUNoYW5n
ZU5vdGlmaWNhdGlvbnNXaXRoQ2FsbGJhY2s6KHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4mJiljYWxs
YmFjaworLSh2b2lkKXN0YXJ0TGlzdGVuaW5nRm9yQ29va2llQ2hhbmdlTm90aWZpY2F0aW9uc1dp
dGhDYWxsYmFjazooV1RGOjpGdW5jdGlvbjx2b2lkICgpPiYmKWNhbGxiYWNrCiB7CiAgICAgQVNT
RVJUKCFtX2Nvb2tpZUNoYW5nZUNhbGxiYWNrKTsKICAgICBtX2Nvb2tpZUNoYW5nZUNhbGxiYWNr
ID0gV1RGTW92ZShjYWxsYmFjayk7CkBAIC03Miw3ICs3Myw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogc3RhdGljIFdlYkNvb2tpZVN0b3JhZ2VPYmpDQWRhcHRlciAqY29va2llU3RvcmFnZUFk
YXB0ZXI7CiAKLXZvaWQgc3RhcnRPYnNlcnZpbmdDb29raWVDaGFuZ2VzKGNvbnN0IE5ldHdvcmtT
dG9yYWdlU2Vzc2lvbiYsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4mJiBjYWxsYmFjaykKK3ZvaWQg
c3RhcnRPYnNlcnZpbmdDb29raWVDaGFuZ2VzKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYs
IFdURjo6RnVuY3Rpb248dm9pZCAoKT4mJiBjYWxsYmFjaykKIHsKICAgICBpZiAoIWNvb2tpZVN0
b3JhZ2VBZGFwdGVyKQogICAgICAgICBjb29raWVTdG9yYWdlQWRhcHRlciA9IFtbV2ViQ29va2ll
U3RvcmFnZU9iakNBZGFwdGVyIGFsbG9jXSBpbml0XTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Db29raWVTdG9yYWdlU291cC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvQ29va2llU3RvcmFnZVNvdXAuY3BwCmluZGV4
IGVhNmE2YjI5Mjc4MDkzNWIxODNkYWM2ZjE0MWQ5NjlmM2Q1MzFhMGQuLjQ1ZDdhOTEzMDkzYTNk
NWZkOTY5MDI3Njc3MWZhNDA0YWNmNDAzZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvc291cC9Db29raWVTdG9yYWdlU291cC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0Nvb2tpZVN0b3JhZ2VTb3VwLmNwcApAQCAtMjMs
NyArMjMsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXZvaWQgc3RhcnRPYnNlcnZpbmdD
b29raWVDaGFuZ2VzKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIHN0ZDo6ZnVuY3Rpb248
dm9pZCAoKT4mJikKK3ZvaWQgc3RhcnRPYnNlcnZpbmdDb29raWVDaGFuZ2VzKGNvbnN0IE5ldHdv
cmtTdG9yYWdlU2Vzc2lvbiYsIFdURjo6RnVuY3Rpb248dm9pZCAoKT4mJikKIHsKICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvc291cC9Tb3VwTmV0d29ya1Nlc3Npb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9zb3VwL1NvdXBOZXR3b3JrU2Vzc2lvbi5jcHAKaW5kZXggN2MxN2U2MDRl
NzhiYjk1YjRkZmE0MDA3ZjAxMjZkZTEyOWJhZjM0YS4uYTNkODQ4MDg0OGUzOTFhZjgyMDIxMDRm
MzZjYWU5YzRkYjViOTEzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9zb3VwL1NvdXBOZXR3b3JrU2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9zb3VwL1NvdXBOZXR3b3JrU2Vzc2lvbi5jcHAKQEAgLTI5Myw3ICsyOTMs
NyBAQCB2b2lkIFNvdXBOZXR3b3JrU2Vzc2lvbjo6c2V0U2hvdWxkSWdub3JlVExTRXJyb3JzKGJv
b2wgaWdub3JlVExTRXJyb3JzKQogICAgIGdJZ25vcmVUTFNFcnJvcnMgPSBpZ25vcmVUTFNFcnJv
cnM7CiB9CiAKLXZvaWQgU291cE5ldHdvcmtTZXNzaW9uOjpjaGVja1RMU0Vycm9ycyhTb3VwUmVx
dWVzdCogc291cFJlcXVlc3QsIFNvdXBNZXNzYWdlKiBtZXNzYWdlLCBzdGQ6OmZ1bmN0aW9uPHZv
aWQgKGNvbnN0IFJlc291cmNlRXJyb3ImKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgU291
cE5ldHdvcmtTZXNzaW9uOjpjaGVja1RMU0Vycm9ycyhTb3VwUmVxdWVzdCogc291cFJlcXVlc3Qs
IFNvdXBNZXNzYWdlKiBtZXNzYWdlLCBXVEY6OkZ1bmN0aW9uPHZvaWQgKGNvbnN0IFJlc291cmNl
RXJyb3ImKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAoZ0lnbm9yZVRMU0Vycm9y
cykgewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7IH0pOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvdXBOZXR3b3JrU2Vzc2lvbi5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvdXBOZXR3b3JrU2Vzc2lvbi5oCmlu
ZGV4IDkwOGI2Y2I2ZDVlNTQ2ZTgyMWY2ZTc0ODk4YmU4ZWJmMWFkOTZiNDAuLmNkODEwZjEyMTU3
NjkxYzdjZWViMjZkMzc3ZjExNjhhZDJkZjNjZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb3VwTmV0d29ya1Nlc3Npb24uaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU291cE5ldHdvcmtTZXNzaW9uLmgKQEAgLTI2
LDggKzI2LDggQEAKICNpZm5kZWYgU291cE5ldHdvcmtTZXNzaW9uX2gKICNkZWZpbmUgU291cE5l
dHdvcmtTZXNzaW9uX2gKIAotI2luY2x1ZGUgPGZ1bmN0aW9uYWw+CiAjaW5jbHVkZSA8Z2xpYi1v
YmplY3QuaD4KKyNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KICNpbmNsdWRlIDx3dGYvTm9uY29w
eWFibGUuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL2dsaWIvR1Jl
ZlB0ci5oPgpAQCAtNjUsNyArNjUsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRBY2NlcHRMYW5n
dWFnZXMoY29uc3QgQ1N0cmluZyYpOwogCiAgICAgc3RhdGljIHZvaWQgc2V0U2hvdWxkSWdub3Jl
VExTRXJyb3JzKGJvb2wpOwotICAgIHN0YXRpYyB2b2lkIGNoZWNrVExTRXJyb3JzKFNvdXBSZXF1
ZXN0KiwgU291cE1lc3NhZ2UqLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKGNvbnN0IFJlc291cmNlRXJy
b3ImKT4mJik7CisgICAgc3RhdGljIHZvaWQgY2hlY2tUTFNFcnJvcnMoU291cFJlcXVlc3QqLCBT
b3VwTWVzc2FnZSosIFdURjo6RnVuY3Rpb248dm9pZCAoY29uc3QgUmVzb3VyY2VFcnJvciYpPiYm
KTsKICAgICBzdGF0aWMgdm9pZCBhbGxvd1NwZWNpZmljSFRUUFNDZXJ0aWZpY2F0ZUZvckhvc3Qo
Y29uc3QgQ2VydGlmaWNhdGVJbmZvJiwgY29uc3QgU3RyaW5nJiBob3N0KTsKIAogICAgIHN0YXRp
YyB2b2lkIHNldEN1c3RvbVByb3RvY29sUmVxdWVzdFR5cGUoR1R5cGUpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZS5jcHAKaW5kZXggODZjNGQ3YTgyOTRm
OWJiOTkyODc3OTQyNjViNmNjYWI2MjQzZDVlOS4uNzU1ZGU3OWY1MTE2OTk4Njg3NDM0MDdmYmFm
ZmYyZGYxZGI4NDg4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NR
TGl0ZURhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRl
RGF0YWJhc2UuY3BwCkBAIC01MTYsMTkgKzUxNiwxOSBAQCBib29sIFNRTGl0ZURhdGFiYXNlOjp0
dXJuT25JbmNyZW1lbnRhbEF1dG9WYWN1dW0oKQogCiBzdGF0aWMgdm9pZCBkZXN0cm95Q29sbGF0
aW9uRnVuY3Rpb24odm9pZCogYXJnKQogewotICAgIGF1dG8gZiA9IHN0YXRpY19jYXN0PHN0ZDo6
ZnVuY3Rpb248aW50KGludCwgY29uc3Qgdm9pZCosIGludCwgY29uc3Qgdm9pZCopPio+KGFyZyk7
CisgICAgYXV0byBmID0gc3RhdGljX2Nhc3Q8V1RGOjpGdW5jdGlvbjxpbnQoaW50LCBjb25zdCB2
b2lkKiwgaW50LCBjb25zdCB2b2lkKik+Kj4oYXJnKTsKICAgICBkZWxldGUgZjsKIH0KIAogc3Rh
dGljIGludCBjYWxsQ29sbGF0aW9uRnVuY3Rpb24odm9pZCogYXJnLCBpbnQgYUxlbmd0aCwgY29u
c3Qgdm9pZCogYSwgaW50IGJMZW5ndGgsIGNvbnN0IHZvaWQqIGIpCiB7Ci0gICAgYXV0byBmID0g
c3RhdGljX2Nhc3Q8c3RkOjpmdW5jdGlvbjxpbnQoaW50LCBjb25zdCB2b2lkKiwgaW50LCBjb25z
dCB2b2lkKik+Kj4oYXJnKTsKKyAgICBhdXRvIGYgPSBzdGF0aWNfY2FzdDxXVEY6OkZ1bmN0aW9u
PGludChpbnQsIGNvbnN0IHZvaWQqLCBpbnQsIGNvbnN0IHZvaWQqKT4qPihhcmcpOwogICAgIHJl
dHVybiAoKmYpKGFMZW5ndGgsIGEsIGJMZW5ndGgsIGIpOwogfQogCi12b2lkIFNRTGl0ZURhdGFi
YXNlOjpzZXRDb2xsYXRpb25GdW5jdGlvbihjb25zdCBTdHJpbmcmIGNvbGxhdGlvbk5hbWUsIHN0
ZDo6ZnVuY3Rpb248aW50KGludCwgY29uc3Qgdm9pZCosIGludCwgY29uc3Qgdm9pZCopPiBjb2xs
YXRpb25GdW5jdGlvbikKK3ZvaWQgU1FMaXRlRGF0YWJhc2U6OnNldENvbGxhdGlvbkZ1bmN0aW9u
KGNvbnN0IFN0cmluZyYgY29sbGF0aW9uTmFtZSwgV1RGOjpGdW5jdGlvbjxpbnQoaW50LCBjb25z
dCB2b2lkKiwgaW50LCBjb25zdCB2b2lkKik+JiYgY29sbGF0aW9uRnVuY3Rpb24pCiB7Ci0gICAg
YXV0byBmdW5jdGlvbk9iamVjdCA9IG5ldyBzdGQ6OmZ1bmN0aW9uPGludChpbnQsIGNvbnN0IHZv
aWQqLCBpbnQsIGNvbnN0IHZvaWQqKT4oY29sbGF0aW9uRnVuY3Rpb24pOworICAgIGF1dG8gZnVu
Y3Rpb25PYmplY3QgPSBuZXcgV1RGOjpGdW5jdGlvbjxpbnQoaW50LCBjb25zdCB2b2lkKiwgaW50
LCBjb25zdCB2b2lkKik+KFdURk1vdmUoY29sbGF0aW9uRnVuY3Rpb24pKTsKICAgICBzcWxpdGUz
X2NyZWF0ZV9jb2xsYXRpb25fdjIobV9kYiwgY29sbGF0aW9uTmFtZS51dGY4KCkuZGF0YSgpLCBT
UUxJVEVfVVRGOCwgZnVuY3Rpb25PYmplY3QsIGNhbGxDb2xsYXRpb25GdW5jdGlvbiwgZGVzdHJv
eUNvbGxhdGlvbkZ1bmN0aW9uKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwv
U1FMaXRlRGF0YWJhc2UuaAppbmRleCBlZTliYTJiZTFlMjUwNDVmOWMzYTYxNWU2NmU3N2JmZjc1
M2M0Mjg4Li4zNGRiNjk0Y2MzM2NmMmUwNjE1ZjhjNjZlMTViMWMxOWNjOTFiOTk5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2UuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2UuaApAQCAtMTI1LDcgKzEy
NSw3IEBAIHB1YmxpYzoKICAgICBlbnVtIEF1dG9WYWN1dW1QcmFnbWEgeyBBdXRvVmFjdXVtTm9u
ZSA9IDAsIEF1dG9WYWN1dW1GdWxsID0gMSwgQXV0b1ZhY3V1bUluY3JlbWVudGFsID0gMiB9Owog
ICAgIGJvb2wgdHVybk9uSW5jcmVtZW50YWxBdXRvVmFjdXVtKCk7CiAKLSAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIHNldENvbGxhdGlvbkZ1bmN0aW9uKGNvbnN0IFN0cmluZyYgY29sbGF0aW9uTmFt
ZSwgc3RkOjpmdW5jdGlvbjxpbnQoaW50LCBjb25zdCB2b2lkKiwgaW50LCBjb25zdCB2b2lkKik+
KTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldENvbGxhdGlvbkZ1bmN0aW9uKGNvbnN0IFN0
cmluZyYgY29sbGF0aW9uTmFtZSwgV1RGOjpGdW5jdGlvbjxpbnQoaW50LCBjb25zdCB2b2lkKiwg
aW50LCBjb25zdCB2b2lkKik+JiYpOwogICAgIHZvaWQgcmVtb3ZlQ29sbGF0aW9uRnVuY3Rpb24o
Y29uc3QgU3RyaW5nJiBjb2xsYXRpb25OYW1lKTsKIAogICAgIC8vIFNldCB0aGlzIGZsYWcgdG8g
YWxsb3cgYWNjZXNzIGZyb20gbXVsdGlwbGUgdGhyZWFkcy4gIE5vdCBhbGwgbXVsdGktdGhyZWFk
ZWQgYWNjZXNzZXMgYXJlIHNhZmUhCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMYXllckJhY2tpbmcuY3BwCmluZGV4IDQ2YmFlZDEwMzRiMjRlNjNiNThlMzk3NjRkOTczNzFh
N2E0ZjkyOTMuLjI5OGJlMDJkOGQxZWJmNzNkNzQyOWFhMTdlYzhlYTBjNjBhZGYyM2MgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCkBAIC0y
MDg5LDcgKzIwODksNyBAQCBib29sIFJlbmRlckxheWVyQmFja2luZzo6aXNTaW1wbGVDb250YWlu
ZXJDb21wb3NpdGluZ0xheWVyKFBhaW50ZWRDb250ZW50c0luZm8mCiAvLyBSZXR1cm5pbmcgdHJ1
ZSBzdG9wcyB0aGUgdHJhdmVyc2FsLgogZW51bSBjbGFzcyBMYXllclRyYXZlcnNhbCB7IENvbnRp
bnVlLCBTdG9wIH07CiAKLXN0YXRpYyBMYXllclRyYXZlcnNhbCB0cmF2ZXJzZVZpc2libGVOb25D
b21wb3NpdGVkRGVzY2VuZGFudExheWVycyhSZW5kZXJMYXllciYgcGFyZW50LCBzdGQ6OmZ1bmN0
aW9uPExheWVyVHJhdmVyc2FsIChjb25zdCBSZW5kZXJMYXllciYpPiBsYXllckZ1bmMpCitzdGF0
aWMgTGF5ZXJUcmF2ZXJzYWwgdHJhdmVyc2VWaXNpYmxlTm9uQ29tcG9zaXRlZERlc2NlbmRhbnRM
YXllcnMoUmVuZGVyTGF5ZXImIHBhcmVudCwgY29uc3QgV1RGOjpGdW5jdGlvbjxMYXllclRyYXZl
cnNhbCAoY29uc3QgUmVuZGVyTGF5ZXImKT4mIGxheWVyRnVuYykKIHsKICAgICAvLyBGSVhNRTog
V2Ugc2hvdWxkbid0IGJlIGNhbGxlZCB3aXRoIGEgc3RhbGUgei1vcmRlciBsaXN0cy4gU2VlIGJ1
ZyA4NTUxMi4KICAgICBwYXJlbnQudXBkYXRlTGF5ZXJMaXN0c0lmTmVlZGVkKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHAKaW5kZXggY2NhNDc0ODY0MjE4ZjBi
NzgzNDk5YTk3ZTM0NGVkOTRhYzljYzhlNS4uMzVhOGQ2NGFiYTgzYzFmZjJiODJiOGY3YmUzMjEz
YTFhNGE3N2Q5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxp
c3RCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNw
cApAQCAtMjg2LDcgKzI4Niw3IEBAIExheW91dFJlY3QgUmVuZGVyTGlzdEJveDo6aXRlbUJvdW5k
aW5nQm94UmVjdChjb25zdCBMYXlvdXRQb2ludCYgYWRkaXRpb25hbE9mZnNlCiAgICAgcmV0dXJu
IExheW91dFJlY3QoeCwgeSwgY29udGVudFdpZHRoKCksIGl0ZW1IZWlnaHQoKSk7CiB9CiAKLXZv
aWQgUmVuZGVyTGlzdEJveDo6cGFpbnRJdGVtKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBM
YXlvdXRQb2ludCYgcGFpbnRPZmZzZXQsIFBhaW50RnVuY3Rpb24gcGFpbnRGdW5jdGlvbikKK3Zv
aWQgUmVuZGVyTGlzdEJveDo6cGFpbnRJdGVtKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBM
YXlvdXRQb2ludCYgcGFpbnRPZmZzZXQsIGNvbnN0IFBhaW50RnVuY3Rpb24mIHBhaW50RnVuY3Rp
b24pCiB7CiAgICAgaW50IGxpc3RJdGVtc1NpemUgPSBudW1JdGVtcygpOwogICAgIGludCBmaXJz
dFZpc2libGVJdGVtID0gbV9pbmRleE9mRmlyc3RWaXNpYmxlSXRlbUluc2lkZVBhZGRpbmdUb3BB
cmVhLnZhbHVlX29yKG1faW5kZXhPZmZzZXQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxpc3RCb3guaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMaXN0Qm94LmgKaW5kZXggYjE2NTRkZmI2MzNjODJlYTkxMjRkMzEzYzRiZWJkZThlMDc0N2Jh
Mi4uMjQ4OThjZGRiNDc2NDY4MjkyMWI4YWRmZDZlMGQ2MmZjOWNlMTM0ZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5oCkBAIC0xNDMsOCArMTQzLDggQEAgcHJpdmF0
ZToKICAgICAvLyBOT1RFOiBUaGlzIHNob3VsZCBvbmx5IGJlIGNhbGxlZCBieSB0aGUgb3ZlcnJp
ZGVuIHNldFNjcm9sbE9mZnNldCBmcm9tIFNjcm9sbGFibGVBcmVhLgogICAgIHZvaWQgc2Nyb2xs
VG8oaW50IG5ld09mZnNldCk7CiAKLSAgICB1c2luZyBQYWludEZ1bmN0aW9uID0gc3RkOjpmdW5j
dGlvbjx2b2lkKFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50JiwgaW50IGxpc3RJdGVtSW5k
ZXgpPjsKLSAgICB2b2lkIHBhaW50SXRlbShQYWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYs
IFBhaW50RnVuY3Rpb24pOworICAgIHVzaW5nIFBhaW50RnVuY3Rpb24gPSBXVEY6OkZ1bmN0aW9u
PHZvaWQoUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmLCBpbnQgbGlzdEl0ZW1JbmRleCk+
OworICAgIHZvaWQgcGFpbnRJdGVtKFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50JiwgY29u
c3QgUGFpbnRGdW5jdGlvbiYpOwogCiAgICAgdm9pZCBzZXRIYXNWZXJ0aWNhbFNjcm9sbGJhcihi
b29sIGhhc1Njcm9sbGJhcik7CiAgICAgUmVmPFNjcm9sbGJhcj4gY3JlYXRlU2Nyb2xsYmFyKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dC5jcHAKaW5kZXgg
MjNiMjYyYWI4YWEyYTI3Y2RiNzBlYThjOTgwYTEwMzAzNGFhYTIwNy4uNDQzYTFhZmQ2M2EzM2Ey
Mzk5Y2QxMGI3NWU1ZmIxNDQzMTA4MmI5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9TaW1wbGVMaW5lTGF5b3V0LmNwcApAQCAtMjU0LDkgKzI1NCw5IEBAIEF2b2lkYW5jZVJlYXNv
bkZsYWdzIGNhblVzZUZvcldpdGhSZWFzb24oY29uc3QgUmVuZGVyQmxvY2tGbG93JiBmbG93LCBJ
bmNsdWRlUmVhCiAjaWZuZGVmIE5ERUJVRwogICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNl
RmxhZzsKICAgICBzdGQ6OmNhbGxfb25jZShvbmNlRmxhZywgW10gewotICAgICAgICByZWdpc3Rl
ck5vdGlmeUNhbGxiYWNrKCJjb20uYXBwbGUuV2ViS2l0LnNob3dTaW1wbGVMaW5lTGF5b3V0Q292
ZXJhZ2UiLCBwcmludFNpbXBsZUxpbmVMYXlvdXRDb3ZlcmFnZSk7Ci0gICAgICAgIHJlZ2lzdGVy
Tm90aWZ5Q2FsbGJhY2soImNvbS5hcHBsZS5XZWJLaXQuc2hvd1NpbXBsZUxpbmVMYXlvdXRSZWFz
b25zIiwgcHJpbnRTaW1wbGVMaW5lTGF5b3V0QmxvY2tMaXN0KTsKLSAgICAgICAgcmVnaXN0ZXJO
b3RpZnlDYWxsYmFjaygiY29tLmFwcGxlLldlYktpdC50b2dnbGVTaW1wbGVMaW5lTGF5b3V0Iiwg
dG9nZ2xlU2ltcGxlTGluZUxheW91dCk7CisgICAgICAgIHJlZ2lzdGVyTm90aWZ5Q2FsbGJhY2so
ImNvbS5hcHBsZS5XZWJLaXQuc2hvd1NpbXBsZUxpbmVMYXlvdXRDb3ZlcmFnZSIsIFtdIHsgcHJp
bnRTaW1wbGVMaW5lTGF5b3V0Q292ZXJhZ2UoKTsgfSk7CisgICAgICAgIHJlZ2lzdGVyTm90aWZ5
Q2FsbGJhY2soImNvbS5hcHBsZS5XZWJLaXQuc2hvd1NpbXBsZUxpbmVMYXlvdXRSZWFzb25zIiwg
W10geyBwcmludFNpbXBsZUxpbmVMYXlvdXRCbG9ja0xpc3QoKTsgfSk7CisgICAgICAgIHJlZ2lz
dGVyTm90aWZ5Q2FsbGJhY2soImNvbS5hcHBsZS5XZWJLaXQudG9nZ2xlU2ltcGxlTGluZUxheW91
dCIsIFtdIHsgdG9nZ2xlU2ltcGxlTGluZUxheW91dCgpOyB9KTsKICAgICB9KTsKICNlbmRpZgog
ICAgIEF2b2lkYW5jZVJlYXNvbkZsYWdzIHJlYXNvbnMgPSB7IH07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvbGluZS9CcmVha2luZ0NvbnRleHQuaCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9saW5lL0JyZWFraW5nQ29udGV4dC5oCmluZGV4IDEyNmZkM2Q0ZWNmOTlk
MDQzNGJhNzEzMmE1NzliZjQ1MThmZGI4YTEuLjJkODNmMDc3YTFiY2I2MTZjNjkyYzA1NWM3N2I4
N2Y0ZjFjNzVmMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9saW5lL0Jy
ZWFraW5nQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9saW5lL0JyZWFr
aW5nQ29udGV4dC5oCkBAIC0zOCw2ICszOCw3IEBACiAjaW5jbHVkZSAiUmVuZGVyUnVieVJ1bi5o
IgogI2luY2x1ZGUgIlJlbmRlclNWR0lubGluZVRleHQuaCIKICNpbmNsdWRlICJUcmFpbGluZ09i
amVjdHMuaCIKKyNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KICNpbmNsdWRlIDx3dGYvT3B0aW9u
YWwuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdWaWV3Lmg+CiAjaW5jbHVkZSA8d3RmL3Vu
aWNvZGUvQ2hhcmFjdGVyTmFtZXMuaD4KQEAgLTE5MSw3ICsxOTIsNyBAQCBwcml2YXRlOgogICAg
ICAgICAgICAgdGhpcy0+YXBwZW5kKGluaXRpYWwpOwogICAgICAgICB9CiAKLSAgICAgICAgdm9p
ZCBwdXNoKHN0ZDo6ZnVuY3Rpb248dm9pZChJbmxpbmVJdGVyYXRvciYgbW9kaWZ5TWUpPiB1cGRh
dGVyKQorICAgICAgICB2b2lkIHB1c2goY29uc3QgV1RGOjpGdW5jdGlvbjx2b2lkKElubGluZUl0
ZXJhdG9yJiBtb2RpZnlNZSk+JiB1cGRhdGVyKQogICAgICAgICB7CiAgICAgICAgICAgICBBU1NF
UlQoIXRoaXMtPmlzRW1wdHkoKSk7CiAgICAgICAgICAgICBpZiAobV9jYXBhY2l0eSAhPSAxKQpA
QCAtMjAxLDcgKzIwMiw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgdGhpcy0+cmVzaXpl
KG1fY2FwYWNpdHkpOwogICAgICAgICB9CiAKLSAgICAgICAgdm9pZCB1cGRhdGUoc3RkOjpmdW5j
dGlvbjx2b2lkKElubGluZUl0ZXJhdG9yJiBtb2RpZnlNZSk+IHVwZGF0ZXIpCisgICAgICAgIHZv
aWQgdXBkYXRlKGNvbnN0IFdURjo6RnVuY3Rpb248dm9pZChJbmxpbmVJdGVyYXRvciYgbW9kaWZ5
TWUpPiYgdXBkYXRlcikKICAgICAgICAgewogICAgICAgICAgICAgQVNTRVJUKCF0aGlzLT5pc0Vt
cHR5KCkpOwogICAgICAgICAgICAgdXBkYXRlcih0aGlzLT5hdCgwKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L1dvcmtlci5jcHAKaW5kZXggOWM5ODc1ZjBmNTc3ODZhZjJiZGYzZmY4M2Y1Yjc0ZjI4YTFiYTIx
My4uNjZlOGRhZmE5ODc4NzcxMTY4NjM1MTMyNDc2ZTRhNzA0NWJkMTMzZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvV29ya2VyLmNwcApAQCAtNTksNyArNTksNyBAQCBpbmxpbmUgV29ya2VyOjpXb3JrZXIo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgSlNDOjpSdW50aW1lRmxhZ3MgcnVudGlt
ZQogewogICAgIGlmICghYWxsV29ya2VycykgewogICAgICAgICBhbGxXb3JrZXJzID0gbmV3IEhh
c2hTZXQ8V29ya2VyKj47Ci0gICAgICAgIG5ldHdvcmtTdGF0ZU5vdGlmaWVyKCkuYWRkTmV0d29y
a1N0YXRlQ2hhbmdlTGlzdGVuZXIobmV0d29ya1N0YXRlQ2hhbmdlZCk7CisgICAgICAgIG5ldHdv
cmtTdGF0ZU5vdGlmaWVyKCkuYWRkTmV0d29ya1N0YXRlQ2hhbmdlTGlzdGVuZXIoW10gKGJvb2wg
aXNPbkxpbmUpIHsgbmV0d29ya1N0YXRlQ2hhbmdlZChpc09uTGluZSk7IH0pOwogICAgIH0KIAog
ICAgIGF1dG8gYWRkUmVzdWx0ID0gYWxsV29ya2Vycy0+YWRkKHRoaXMpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJSdW5Mb29wLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvV29ya2VyUnVuTG9vcC5jcHAKaW5kZXggNjRjMmVmNDVjNGZkNTkwZjU4MWQzMGYz
ODAxOWVjNmU2MDYzNmUxYy4uMjM2MWJmNzQ1YWFiNTRmNTkxMzYwNzM5Mjc2OWI2MmFkYjNlMGJj
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJSdW5Mb29wLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclJ1bkxvb3AuY3BwCkBAIC01MCw3ICs1
MCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFdvcmtlclNoYXJlZFRpbWVyIGZpbmFs
IDogcHVibGljIFNoYXJlZFRpbWVyIHsKIHB1YmxpYzoKICAgICAvLyBTaGFyZWRUaW1lciBpbnRl
cmZhY2UuCi0gICAgdm9pZCBzZXRGaXJlZEZ1bmN0aW9uKHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiYm
IGZ1bmN0aW9uKSBvdmVycmlkZSB7IG1fc2hhcmVkVGltZXJGdW5jdGlvbiA9IFdURk1vdmUoZnVu
Y3Rpb24pOyB9CisgICAgdm9pZCBzZXRGaXJlZEZ1bmN0aW9uKFdURjo6RnVuY3Rpb248dm9pZCgp
PiYmIGZ1bmN0aW9uKSBvdmVycmlkZSB7IG1fc2hhcmVkVGltZXJGdW5jdGlvbiA9IFdURk1vdmUo
ZnVuY3Rpb24pOyB9CiAgICAgdm9pZCBzZXRGaXJlSW50ZXJ2YWwoU2Vjb25kcyBpbnRlcnZhbCkg
b3ZlcnJpZGUgeyBtX25leHRGaXJlVGltZSA9IGludGVydmFsICsgV2FsbFRpbWU6Om5vdygpOyB9
CiAgICAgdm9pZCBzdG9wKCkgb3ZlcnJpZGUgeyBtX25leHRGaXJlVGltZSA9IFdhbGxUaW1lKCk7
IH0KIApAQCAtNTksNyArNTksNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBmaXJlKCkgeyBtX3NoYXJl
ZFRpbWVyRnVuY3Rpb24oKTsgfQogCiBwcml2YXRlOgotICAgIHN0ZDo6ZnVuY3Rpb248dm9pZCgp
PiBtX3NoYXJlZFRpbWVyRnVuY3Rpb247CisgICAgV1RGOjpGdW5jdGlvbjx2b2lkKCk+IG1fc2hh
cmVkVGltZXJGdW5jdGlvbjsKICAgICBXYWxsVGltZSBtX25leHRGaXJlVGltZTsKIH07CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>313429</attachid>
            <date>2017-06-20 13:09:53 -0700</date>
            <delta_ts>2017-06-20 16:42:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-173583-20170620130953.patch</filename>
            <type>text/plain</type>
            <size>82708</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE4NTI4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWRjMjgyZDE0ODRkZjk3
MzQ0NTA1MmZiNTI0ZTM3MDljZmQxZDcwNy4uMThlYjAzMzJjOGE2NjQ5ZjdlNDJhOGI0NDUxYjAz
MmE1MDAyODU0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzMCBAQAorMjAxNy0wNi0xOSAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFVzZSBXVEY6OkZ1bmN0aW9u
IGluc3RlYWQgb2Ygc3RkOjpmdW5jdGlvbiBpbiBtb3JlIHBsYWNlcyBpbiBXZWJDb3JlLworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTczNTgzCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXNlIFdURjo6RnVu
Y3Rpb24gaW5zdGVhZCBvZiBzdGQ6OmZ1bmN0aW9uIGluIG1vcmUgcGxhY2VzIGluIFdlYkNvcmUv
IHRvCisgICAgICAgIHJlZHVjZSBjb3B5aW5nLgorCisgICAgICAgICogcGFnZS9QYWdlLmNwcDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9IeXN0ZXJlc2lzQWN0aXZpdHkuaDoKKyAgICAgICAgKFdlYkNv
cmU6Okh5c3RlcmVzaXNBY3Rpdml0eTo6SHlzdGVyZXNpc0FjdGl2aXR5KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9Mb2dnaW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnJlZ2lzdGVyTm90aWZ5Q2Fs
bGJhY2spOgorICAgICAgICAqIHBsYXRmb3JtL0xvZ2dpbmcuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9NYWluVGhyZWFkU2hhcmVkVGltZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWFpblRocmVh
ZFNoYXJlZFRpbWVyOjpzZXRGaXJlZEZ1bmN0aW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9NYWlu
VGhyZWFkU2hhcmVkVGltZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9QbGF0Zm9ybVBhc3RlYm9h
cmQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9TY29wZUd1YXJkLmg6CisgICAgICAgIChXZWJDb3Jl
OjpTY29wZUd1YXJkOjpTY29wZUd1YXJkKToKKyAgICAgICAgKFdlYkNvcmU6OlNjb3BlR3VhcmQ6
OmVuYWJsZSk6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uU21vb3RoLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdGlvblNtb290aDo6U2Nyb2xsQW5pbWF0aW9u
U21vb3RoKToKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxBbmltYXRpb25TbW9vdGguaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9TaGFyZWRUaW1lci5oOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlv
L1BsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbGF0
Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6OmN1cnJlbnRTZXNzaW9uc01hdGNoaW5nKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXIuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9jZi9NYWluVGhyZWFkU2hhcmVkVGltZXJDRi5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpzZXR1cFBvd2VyT2JzZXJ2ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2NmL1J1bkxv
b3BPYnNlcnZlci5oOgorICAgICAgICAoV2ViQ29yZTo6UnVuTG9vcE9ic2VydmVyOjpSdW5Mb29w
T2JzZXJ2ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5o
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6dHJhdmVyc2UpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9N
ZWRpYVBsYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjphZGRNZWRpYUVuZ2luZSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9QYXRoLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb246OnNlZWtDb21wbGV0ZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uOjpzY2hlZHVsZU1haW5U
aHJlYWROb3RpZmljYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uOjpkaXNwYXRjaE5vdGlmaWNhdGlvbik6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5oOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uOjpOb3RpZmlj
YXRpb246Ok5vdGlmaWNhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb246Ok5vdGlmaWNhdGlvbjo6ZnVuY3Rpb24pOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbk9iakMubW06CisgICAgICAgICgtW1dlYkNvcmVBVkZNb3ZpZU9ic2VydmVyIG9ic2VydmVW
YWx1ZUZvcktleVBhdGg6b2ZPYmplY3Q6Y2hhbmdlOmNvbnRleHQ6XSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFT
dHJlYW1BVkZPYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6cnVuV2l0aG91dEFuaW1hdGlvbnMp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0lPU3VyZmFjZS5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0lPU3VyZmFjZS5tbToKKyAgICAgICAgKFdlYkNv
cmU6OklPU3VyZmFjZTo6Y29udmVydFRvRm9ybWF0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvTWFpblRocmVhZE5vdGlmaWVyLmg6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUmVxdWVzdEluc3RhbGxNaXNzaW5nUGx1Z2lu
c0NhbGxiYWNrLmg6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclJlcXVlc3RJbnN0YWxs
TWlzc2luZ1BsdWdpbnNDYWxsYmFjazo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
UGxheWVyUmVxdWVzdEluc3RhbGxNaXNzaW5nUGx1Z2luc0NhbGxiYWNrOjpNZWRpYVBsYXllclJl
cXVlc3RJbnN0YWxsTWlzc2luZ1BsdWdpbnNDYWxsYmFjayk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dERpcmVjdDJELmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd1dpdGhvdXRTaGFkb3cpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3V2l0aFNoYWRvdyk6CisgICAgICAgICogcGxhdGZvcm0v
Z3RrL1Bhc3RlYm9hcmRIZWxwZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkU2V0
RGF0YTo6Q2xpcGJvYXJkU2V0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkSGVs
cGVyOjp3cml0ZUNsaXBib2FyZENvbnRlbnRzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvUGFz
dGVib2FyZEhlbHBlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9QbGF0Zm9ybVBhc3RlYm9h
cmRHdGsuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1QYXN0ZWJvYXJkOjp3cml0ZVRv
Q2xpcGJvYXJkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuSW50
ZXJmYWNlQVZLaXQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVu
SW50ZXJmYWNlQVZLaXQubW06CisgICAgICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VB
VktpdDo6cHJlcGFyZWRUb1JldHVyblRvSW5saW5lKToKKyAgICAgICAgKFdlYlZpZGVvRnVsbHNj
cmVlbkludGVyZmFjZUFWS2l0OjpmdWxsc2NyZWVuTWF5UmV0dXJuVG9JbmxpbmUpOgorICAgICAg
ICAqIHBsYXRmb3JtL21hYy9Qb3dlck9ic2VydmVyTWFjLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlBvd2VyT2JzZXJ2ZXI6OlBvd2VyT2JzZXJ2ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9Q
b3dlck9ic2VydmVyTWFjLmg6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1dlYkNvcmVOU1VSTEV4
dHJhcy5tbToKKyAgICAgICAgKFdlYkNvcmU6OmlzU2Vjb25kTGV2ZWxEb21haW5OYW1lQWxsb3dl
ZEJ5VExEUnVsZXMpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL0NhcHR1cmVEZXZp
Y2VNYW5hZ2VyLmNwcDoKKyAgICAgICAgKENhcHR1cmVEZXZpY2VNYW5hZ2VyOjphZGRDYXB0dXJl
RGV2aWNlQ2hhbmdlZE9ic2VydmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9D
YXB0dXJlRGV2aWNlTWFuYWdlci5oOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL1Jl
YWx0aW1lTWVkaWFTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNv
dXJjZTo6c2NoZWR1bGVEZWZlcnJlZFRhc2spOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3Ry
ZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVh
bS9pb3MvQVZBdWRpb1Nlc3Npb25DYXB0dXJlRGV2aWNlTWFuYWdlci5tbToKKyAgICAgICAgKC1b
V2ViQVZBdWRpb1Nlc3Npb25BdmFpbGFibGVJbnB1dHNMaXN0ZW5lciBpbml0V2l0aENhbGxiYWNr
Ol0pOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Db3JlQXVkaW9DYXB0dXJl
U291cmNlLmg6CisgICAgICAgICogcGxhdGZvcm0vbW9jay9TY3JvbGxBbmltYXRvck1vY2suY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3JNb2NrOjpTY3JvbGxBbmltYXRvck1v
Y2spOgorICAgICAgICAqIHBsYXRmb3JtL21vY2svU2Nyb2xsQW5pbWF0b3JNb2NrLmg6CisgICAg
ICAgICogcGxhdGZvcm0vbmV0d29yay9Db29raWVTdG9yYWdlLmg6CisgICAgICAgICogcGxhdGZv
cm0vbmV0d29yay9OZXR3b3JrU3RhdGVOb3RpZmllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpO
ZXR3b3JrU3RhdGVOb3RpZmllcjo6YWRkTmV0d29ya1N0YXRlQ2hhbmdlTGlzdGVuZXIpOgorICAg
ICAgICAqIHBsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0YXRlTm90aWZpZXIuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246OmZvckVhY2gpOgorICAgICAgICAqIHBsYXRm
b3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmg6CisgICAgICAgICogcGxhdGZvcm0v
bmV0d29yay9jZi9Db29raWVTdG9yYWdlQ0ZOZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29v
a2llQ2hhbmdlQ2FsbGJhY2tNYXApOgorICAgICAgICAoV2ViQ29yZTo6c3RhcnRPYnNlcnZpbmdD
b29raWVDaGFuZ2VzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL1NvY2tldFN0cmVh
bUhhbmRsZUltcGxDRk5ldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjYWxsT25NYWluVGhyZWFk
QW5kV2FpdCk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9tYWMvQ29va2llU3RvcmFnZU1h
Yy5tbToKKyAgICAgICAgKC1bV2ViQ29va2llU3RvcmFnZU9iakNBZGFwdGVyIHN0YXJ0TGlzdGVu
aW5nRm9yQ29va2llQ2hhbmdlTm90aWZpY2F0aW9uc1dpdGhDYWxsYmFjazpdKToKKyAgICAgICAg
KFdlYkNvcmU6OnN0YXJ0T2JzZXJ2aW5nQ29va2llQ2hhbmdlcyk6CisgICAgICAgICogcGxhdGZv
cm0vbmV0d29yay9zb3VwL0Nvb2tpZVN0b3JhZ2VTb3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OnN0YXJ0T2JzZXJ2aW5nQ29va2llQ2hhbmdlcyk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29y
ay9zb3VwL1NvdXBOZXR3b3JrU2Vzc2lvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTb3VwTmV0
d29ya1Nlc3Npb246OmNoZWNrVExTRXJyb3JzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3Jr
L3NvdXAvU291cE5ldHdvcmtTZXNzaW9uLmg6CisgICAgICAgICogcGxhdGZvcm0vc3FsL1NRTGl0
ZURhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmRlc3Ryb3lDb2xsYXRpb25GdW5jdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpjYWxsQ29sbGF0aW9uRnVuY3Rpb24pOgorICAgICAgICAo
V2ViQ29yZTo6U1FMaXRlRGF0YWJhc2U6OnNldENvbGxhdGlvbkZ1bmN0aW9uKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2UuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyTGF5ZXJCYWNraW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRyYXZlcnNlVmlzaWJsZU5v
bkNvbXBvc2l0ZWREZXNjZW5kYW50TGF5ZXJzKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
TGlzdEJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMaXN0Qm94OjpwYWludEl0ZW0p
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMaXN0Qm94Lmg6CisgICAgICAgICogcmVuZGVy
aW5nL2xpbmUvQnJlYWtpbmdDb250ZXh0Lmg6CisgICAgICAgIChXZWJDb3JlOjpCcmVha2luZ0Nv
bnRleHQ6OklubGluZUl0ZXJhdG9ySGlzdG9yeTo6cHVzaCk6CisgICAgICAgIChXZWJDb3JlOjpC
cmVha2luZ0NvbnRleHQ6OklubGluZUl0ZXJhdG9ySGlzdG9yeTo6dXBkYXRlKToKKyAgICAgICAg
KiB3b3JrZXJzL1dvcmtlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXI6Oldvcmtlcik6
CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJSdW5Mb29wLmNwcDoKKwogMjAxNy0wNi0xOSAgTXls
ZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgogCiAgICAgICAgIFtDb2NvYV0g
VGhlIHN5c3RlbSBKYXBhbmVzZSBmb250IGNhbm5vdCBiZSBpdGFsaWNpemVkCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdl
LmNwcAppbmRleCAwMWZhZDM0NTg5ZmUxNDU4MzFkNWY0ZDJiNzRiOWE3NDllN2I5MzAwLi43NGEx
OWU4N2JlMmQ0YWJmOWZhMzA0ZWUyOTU0NzI4ODljYTU1N2I3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAK
QEAgLTI4MSw3ICsyODEsNyBAQCBQYWdlOjpQYWdlKFBhZ2VDb25maWd1cmF0aW9uJiYgcGFnZUNv
bmZpZ3VyYXRpb24pCiAgICAgaWYgKCFhbGxQYWdlcykgewogICAgICAgICBhbGxQYWdlcyA9IG5l
dyBIYXNoU2V0PFBhZ2UqPjsKICAgICAgICAgCi0gICAgICAgIG5ldHdvcmtTdGF0ZU5vdGlmaWVy
KCkuYWRkTmV0d29ya1N0YXRlQ2hhbmdlTGlzdGVuZXIobmV0d29ya1N0YXRlQ2hhbmdlZCk7Cisg
ICAgICAgIG5ldHdvcmtTdGF0ZU5vdGlmaWVyKCkuYWRkTmV0d29ya1N0YXRlQ2hhbmdlTGlzdGVu
ZXIoW10gKGJvb2wgaXNPbkxpbmUpIHsgbmV0d29ya1N0YXRlQ2hhbmdlZChpc09uTGluZSk7IH0p
OwogICAgIH0KIAogICAgIEFTU0VSVCghYWxsUGFnZXMtPmNvbnRhaW5zKHRoaXMpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL1BhZ2VNYWMubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL21hYy9QYWdlTWFjLm1tCmluZGV4IGNmZGQ2ZjVmOTliNTEwNThjNTVmMThhMjMzZDI0
MDUwN2UyNGU4M2MuLjZhMzlkNDY5OWRlMWRjMGM2NjI5ODFlYTM2MDViZWE1M2MyODFkZjUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL1BhZ2VNYWMubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9tYWMvUGFnZU1hYy5tbQpAQCAtNjEsOCArNjEsOCBAQCB2b2lkIFBhZ2U6
OnBsYXRmb3JtSW5pdGlhbGl6ZSgpCiAjaWYgRU5BQkxFKFRSRUVfREVCVUdHSU5HKQogICAgIHN0
YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlRmxhZzsKICAgICBzdGQ6OmNhbGxfb25jZShvbmNlRmxh
ZywgW10gewotICAgICAgICByZWdpc3Rlck5vdGlmeUNhbGxiYWNrKCJjb20uYXBwbGUuV2ViS2l0
LnNob3dSZW5kZXJUcmVlIiwgcHJpbnRSZW5kZXJUcmVlRm9yTGl2ZURvY3VtZW50cyk7Ci0gICAg
ICAgIHJlZ2lzdGVyTm90aWZ5Q2FsbGJhY2soImNvbS5hcHBsZS5XZWJLaXQuc2hvd0xheWVyVHJl
ZSIsIHByaW50TGF5ZXJUcmVlRm9yTGl2ZURvY3VtZW50cyk7CisgICAgICAgIHJlZ2lzdGVyTm90
aWZ5Q2FsbGJhY2soImNvbS5hcHBsZS5XZWJLaXQuc2hvd1JlbmRlclRyZWUiLCBbXSB7IHByaW50
UmVuZGVyVHJlZUZvckxpdmVEb2N1bWVudHMoKTsgfSk7CisgICAgICAgIHJlZ2lzdGVyTm90aWZ5
Q2FsbGJhY2soImNvbS5hcHBsZS5XZWJLaXQuc2hvd0xheWVyVHJlZSIsIFtdIHsgcHJpbnRMYXll
clRyZWVGb3JMaXZlRG9jdW1lbnRzKCk7IH0pOwogICAgIH0pOwogI2VuZGlmCiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9IeXN0ZXJlc2lzQWN0aXZpdHkuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL0h5c3RlcmVzaXNBY3Rpdml0eS5oCmluZGV4IDU5OWUxNzFlYzFh
Y2FkMjBlZDhmMTVkMWI0NWM5ZWFhOWYxY2UwYTAuLjkxMThlYTRlOWZkMDU4Y2UzMTA3NDI5NjEx
M2YzYzNjY2MzMDFlNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0h5c3Rl
cmVzaXNBY3Rpdml0eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0h5c3RlcmVzaXNB
Y3Rpdml0eS5oCkBAIC0zOSw4ICszOSw4IEBAIGVudW0gY2xhc3MgSHlzdGVyZXNpc1N0YXRlIHsK
IAogY2xhc3MgSHlzdGVyZXNpc0FjdGl2aXR5IHsKIHB1YmxpYzoKLSAgICBleHBsaWNpdCBIeXN0
ZXJlc2lzQWN0aXZpdHkoc3RkOjpmdW5jdGlvbjx2b2lkKEh5c3RlcmVzaXNTdGF0ZSk+IGNhbGxi
YWNrID0gW10oSHlzdGVyZXNpc1N0YXRlKSB7IH0sIGRvdWJsZSBoeXN0ZXJlc2lzU2Vjb25kcyA9
IERlZmF1bHRIeXN0ZXJlc2lzU2Vjb25kcykKLSAgICAgICAgOiBtX2NhbGxiYWNrKGNhbGxiYWNr
KQorICAgIGV4cGxpY2l0IEh5c3RlcmVzaXNBY3Rpdml0eShXVEY6OkZ1bmN0aW9uPHZvaWQoSHlz
dGVyZXNpc1N0YXRlKT4mJiBjYWxsYmFjayA9IFtdKEh5c3RlcmVzaXNTdGF0ZSkgeyB9LCBkb3Vi
bGUgaHlzdGVyZXNpc1NlY29uZHMgPSBEZWZhdWx0SHlzdGVyZXNpc1NlY29uZHMpCisgICAgICAg
IDogbV9jYWxsYmFjayhXVEZNb3ZlKGNhbGxiYWNrKSkKICAgICAgICAgLCBtX2h5c3RlcmVzaXNT
ZWNvbmRzKGh5c3RlcmVzaXNTZWNvbmRzKQogICAgICAgICAsIG1fYWN0aXZlKGZhbHNlKQogICAg
ICAgICAsIG1fdGltZXIoKnRoaXMsICZIeXN0ZXJlc2lzQWN0aXZpdHk6Omh5c3RlcmVzaXNUaW1l
ckZpcmVkKQpAQCAtODgsNyArODgsNyBAQCBwcml2YXRlOgogICAgICAgICBtX2NhbGxiYWNrKEh5
c3RlcmVzaXNTdGF0ZTo6U3RvcHBlZCk7CiAgICAgfQogCi0gICAgc3RkOjpmdW5jdGlvbjx2b2lk
KEh5c3RlcmVzaXNTdGF0ZSk+IG1fY2FsbGJhY2s7CisgICAgV1RGOjpGdW5jdGlvbjx2b2lkKEh5
c3RlcmVzaXNTdGF0ZSk+IG1fY2FsbGJhY2s7CiAgICAgZG91YmxlIG1faHlzdGVyZXNpc1NlY29u
ZHM7IC8vIEZJWE1FOiBTaG91bGQgdXNlIFNlY29uZHMuCiAgICAgYm9vbCBtX2FjdGl2ZTsKICAg
ICBUaW1lciBtX3RpbWVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTG9n
Z2luZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2dnaW5nLmNwcAppbmRleCAwZmI1
YmY4MTI5Yzk2NDU0YzRlNGY4MGMwMGRiZmYxN2FhMjM3Yjk0Li44ODg0Mzk5NWM1MzY2OGEzNGU2
YmRjNWViZjQxN2QzMWEzNTJkZTIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9Mb2dnaW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2dnaW5nLmNwcApA
QCAtMzMsNiArMzMsNyBAQAogCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAjaW5jbHVkZSA8bm90aWZ5
Lmg+CisjaW5jbHVkZSA8d3RmL0Jsb2NrUHRyLmg+CiAjZW5kaWYKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewpAQCAtNzksMTMgKzgwLDEzIEBAIHZvaWQgaW5pdGlhbGl6ZUxvZ0NoYW5uZWxzSWZOZWNl
c3NhcnkoKQogfQogCiAjaWZuZGVmIE5ERUJVRwotdm9pZCByZWdpc3Rlck5vdGlmeUNhbGxiYWNr
KGNvbnN0IFN0cmluZyYgbm90aWZ5SUQsIHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiBjYWxsYmFjaykK
K3ZvaWQgcmVnaXN0ZXJOb3RpZnlDYWxsYmFjayhjb25zdCBTdHJpbmcmIG5vdGlmeUlELCBXVEY6
OkZ1bmN0aW9uPHZvaWQoKT4mJiBjYWxsYmFjaykKIHsKICNpZiBQTEFURk9STShDT0NPQSkKICAg
ICBpbnQgdG9rZW47Ci0gICAgbm90aWZ5X3JlZ2lzdGVyX2Rpc3BhdGNoKG5vdGlmeUlELnV0Zjgo
KS5kYXRhKCksICZ0b2tlbiwgZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgXihpbnQpIHsKKyAg
ICBub3RpZnlfcmVnaXN0ZXJfZGlzcGF0Y2gobm90aWZ5SUQudXRmOCgpLmRhdGEoKSwgJnRva2Vu
LCBkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBCbG9ja1B0cjx2b2lkIChpbnQpPjo6ZnJvbUNh
bGxhYmxlKFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSAoaW50KSB7CiAgICAgICAgIGNh
bGxiYWNrKCk7Ci0gICAgfSk7CisgICAgfSkuZ2V0KCkpOwogI2Vsc2UKICAgICBVTlVTRURfUEFS
QU0obm90aWZ5SUQpOwogICAgIFVOVVNFRF9QQVJBTShjYWxsYmFjayk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2dnaW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9Mb2dnaW5nLmgKaW5kZXggODgzYTlmMjIwOTdlZWMxNmRlY2NhNDYzMjI4ODUwNjZiNDY3Yjc0
ZS4uNWFiMDE2MmExNTg0ZDE4NWExYmUzZDUwNmVlOGZhMjhlYWQ3MDM2NyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTG9nZ2luZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0xvZ2dpbmcuaApAQCAtMTAzLDcgKzEwMyw3IEBAIFN0cmluZyBsb2dMZXZlbFN0cmlu
ZygpOwogYm9vbCBpc0xvZ0NoYW5uZWxFbmFibGVkKGNvbnN0IFN0cmluZyYgbmFtZSk7CiBXRUJD
T1JFX0VYUE9SVCB2b2lkIHNldExvZ0NoYW5uZWxUb0FjY3VtdWxhdGUoY29uc3QgU3RyaW5nJiBu
YW1lKTsKICNpZm5kZWYgTkRFQlVHCi12b2lkIHJlZ2lzdGVyTm90aWZ5Q2FsbGJhY2soY29uc3Qg
U3RyaW5nJiBub3RpZnlJRCwgc3RkOjpmdW5jdGlvbjx2b2lkKCk+IGNhbGxiYWNrKTsKK3ZvaWQg
cmVnaXN0ZXJOb3RpZnlDYWxsYmFjayhjb25zdCBTdHJpbmcmIG5vdGlmeUlELCBXVEY6OkZ1bmN0
aW9uPHZvaWQoKT4mJiBjYWxsYmFjayk7CiAjZW5kaWYKIAogI2VuZGlmIC8vICFMT0dfRElTQUJM
RUQgfHwgIVJFTEVBU0VfTE9HX0RJU0FCTEVECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9NYWluVGhyZWFkU2hhcmVkVGltZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vTWFpblRocmVhZFNoYXJlZFRpbWVyLmNwcAppbmRleCBkZGE2ODJlYjg0MTFiYjg2MzIyYjMy
YTFmYTUxYjBiZDJhNTE3Yjg0Li42OGZmMDQzODk3YmJjYTkzMzliZjIzZGM0ZGQxM2M1MjA0Y2Uz
MGUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NYWluVGhyZWFkU2hhcmVk
VGltZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01haW5UaHJlYWRTaGFyZWRU
aW1lci5jcHAKQEAgLTQwLDcgKzQwLDcgQEAgTWFpblRocmVhZFNoYXJlZFRpbWVyOjpNYWluVGhy
ZWFkU2hhcmVkVGltZXIoKQogfQogI2VuZGlmCiAKLXZvaWQgTWFpblRocmVhZFNoYXJlZFRpbWVy
OjpzZXRGaXJlZEZ1bmN0aW9uKHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiYmIGZpcmVkRnVuY3Rpb24p
Cit2b2lkIE1haW5UaHJlYWRTaGFyZWRUaW1lcjo6c2V0RmlyZWRGdW5jdGlvbihXVEY6OkZ1bmN0
aW9uPHZvaWQoKT4mJiBmaXJlZEZ1bmN0aW9uKQogewogICAgIFJFTEVBU0VfQVNTRVJUKCFtX2Zp
cmVkRnVuY3Rpb24gfHwgIWZpcmVkRnVuY3Rpb24pOwogICAgIG1fZmlyZWRGdW5jdGlvbiA9IFdU
Rk1vdmUoZmlyZWRGdW5jdGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9NYWluVGhyZWFkU2hhcmVkVGltZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01haW5U
aHJlYWRTaGFyZWRUaW1lci5oCmluZGV4IDQ5MDczMGYxNDMyZDkzNjBiYjJiZDU4YzBhYWNiNzQy
NDk4NTRlNGIuLjk0YTE5MGQzNzc5OWYyOTQ2Y2Q1NmU5N2Q5MDNmN2M4NWQ1NjRmZjEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01haW5UaHJlYWRTaGFyZWRUaW1lci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01haW5UaHJlYWRTaGFyZWRUaW1lci5oCkBAIC00
MSw3ICs0MSw3IEBAIGNsYXNzIE1haW5UaHJlYWRTaGFyZWRUaW1lciBmaW5hbCA6IHB1YmxpYyBT
aGFyZWRUaW1lciB7CiBwdWJsaWM6CiAgICAgc3RhdGljIE1haW5UaHJlYWRTaGFyZWRUaW1lciYg
c2luZ2xldG9uKCk7CiAKLSAgICB2b2lkIHNldEZpcmVkRnVuY3Rpb24oc3RkOjpmdW5jdGlvbjx2
b2lkKCk+JiYpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0RmlyZWRGdW5jdGlvbihXVEY6OkZ1bmN0
aW9uPHZvaWQoKT4mJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRGaXJlSW50ZXJ2YWwoU2Vjb25k
cykgb3ZlcnJpZGU7CiAgICAgdm9pZCBzdG9wKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBpbnZhbGlk
YXRlKCkgb3ZlcnJpZGU7CkBAIC01Myw3ICs1Myw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAg
TWFpblRocmVhZFNoYXJlZFRpbWVyKCk7CiAKLSAgICBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4gbV9m
aXJlZEZ1bmN0aW9uOworICAgIFdURjo6RnVuY3Rpb248dm9pZCgpPiBtX2ZpcmVkRnVuY3Rpb247
CiAjaWYgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShXUEUpCiAgICAgUnVuTG9vcDo6VGltZXI8
TWFpblRocmVhZFNoYXJlZFRpbWVyPiBtX3RpbWVyOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVBhc3RlYm9hcmQuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1BsYXRmb3JtUGFzdGVib2FyZC5oCmluZGV4IGFmZGExNTVlZjEzNDQzYTkxMWU4
MzA3MGRkYzc3NzFiNWI1MjNkODguLjEzZTU5ODkwODAxOWY2MjRkNWQ1ZGM3NDMzMjU1MGQzZTA2
NjY2YzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtUGFzdGVi
b2FyZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtUGFzdGVib2FyZC5o
CkBAIC0yNiw4ICsyNiw4IEBACiAjaWZuZGVmIFBsYXRmb3JtUGFzdGVib2FyZF9oCiAjZGVmaW5l
IFBsYXRmb3JtUGFzdGVib2FyZF9oCiAKLSNpbmNsdWRlIDxmdW5jdGlvbmFsPgogI2luY2x1ZGUg
PHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+CiAjaW5jbHVkZSA8d3Rm
L1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAjaW5jbHVkZSA8d3Rm
L1ZlY3Rvci5oPgpAQCAtOTMsNyArOTMsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQg
aW50IG51bWJlck9mRmlsZXMoKTsKIAogI2lmIFBMQVRGT1JNKEdUSykKLSAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIHdyaXRlVG9DbGlwYm9hcmQoY29uc3QgU2VsZWN0aW9uRGF0YSYsIHN0ZDo6ZnVu
Y3Rpb248dm9pZCgpPiYmIHByaW1hcnlTZWxlY3Rpb25DbGVhcmVkKTsKKyAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIHdyaXRlVG9DbGlwYm9hcmQoY29uc3QgU2VsZWN0aW9uRGF0YSYsIFdURjo6RnVu
Y3Rpb248dm9pZCgpPiYmIHByaW1hcnlTZWxlY3Rpb25DbGVhcmVkKTsKICAgICBXRUJDT1JFX0VY
UE9SVCBSZWY8U2VsZWN0aW9uRGF0YT4gcmVhZEZyb21DbGlwYm9hcmQoKTsKICNlbmRpZgogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY29wZUd1YXJkLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9TY29wZUd1YXJkLmgKaW5kZXggMjRhYjdmZjU5ZTA0YTk0YTAwNjM5
MTJhYTlmYTlmNTEzNjkwNTg1MS4uZDRjYjNiOWY4ZWIyNDRlMWMxMzhhMDdmNzYyNzgxZGQ2ZDFh
Mjc1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2NvcGVHdWFyZC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njb3BlR3VhcmQuaApAQCAtMjUsNyArMjUsNyBA
QAogI2lmbmRlZiBTY29wZUd1YXJkX2gKICNkZWZpbmUgU2NvcGVHdWFyZF9oCiAKLSNpbmNsdWRl
IDxmdW5jdGlvbmFsPgorI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKQEAgLTM1LDcgKzM1LDcgQEAgcHVibGljOgogICAgIHsKICAgICB9CiAKLSAgICBT
Y29wZUd1YXJkKHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiBmdW5jdGlvbikKKyAgICBTY29wZUd1YXJk
KFdURjo6RnVuY3Rpb248dm9pZCgpPiYmIGZ1bmN0aW9uKQogICAgICAgICA6IG1fZnVuY3Rpb24o
V1RGTW92ZShmdW5jdGlvbikpCiAgICAgewogICAgIH0KQEAgLTQ2LDcgKzQ2LDcgQEAgcHVibGlj
OgogICAgICAgICAgICAgbV9mdW5jdGlvbigpOwogICAgIH0KIAotICAgIHZvaWQgZW5hYmxlKHN0
ZDo6ZnVuY3Rpb248dm9pZCgpPiBmdW5jdGlvbikKKyAgICB2b2lkIGVuYWJsZShXVEY6OkZ1bmN0
aW9uPHZvaWQoKT4mJiBmdW5jdGlvbikKICAgICB7CiAgICAgICAgIG1fZnVuY3Rpb24gPSBXVEZN
b3ZlKGZ1bmN0aW9uKTsKICAgICB9CkBAIC01Nyw3ICs1Nyw3IEBAIHB1YmxpYzoKICAgICB9CiAK
IHByaXZhdGU6Ci0gICAgc3RkOjpmdW5jdGlvbjx2b2lkKCk+IG1fZnVuY3Rpb24geyBudWxscHRy
IH07CisgICAgV1RGOjpGdW5jdGlvbjx2b2lkKCk+IG1fZnVuY3Rpb247CiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3Jv
bGxBbmltYXRpb25TbW9vdGguY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5p
bWF0aW9uU21vb3RoLmNwcAppbmRleCA0YzZiODE0ZjkwZGFlZjBmMTQ5YWM1NDY2ZThjOWM3OGI1
YWE5OTcwLi5lMGZiMTJjNDkxN2E5MDFjZTBjMjQ4Y2QzNDhjYmYwZjVmOWYzMjYwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRpb25TbW9vdGguY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdGlvblNtb290aC5jcHAKQEAg
LTQwLDcgKzQwLDcgQEAgc3RhdGljIGNvbnN0IGRvdWJsZSBmcmFtZVJhdGUgPSA2MDsKIHN0YXRp
YyBjb25zdCBTZWNvbmRzIHRpY2tUaW1lID0gMV9zIC8gZnJhbWVSYXRlOwogc3RhdGljIGNvbnN0
IFNlY29uZHMgbWluaW11bVRpbWVySW50ZXJ2YWwgeyAxX21zIH07CiAKLVNjcm9sbEFuaW1hdGlv
blNtb290aDo6U2Nyb2xsQW5pbWF0aW9uU21vb3RoKFNjcm9sbGFibGVBcmVhJiBzY3JvbGxhYmxl
QXJlYSwgY29uc3QgRmxvYXRQb2ludCYgcG9zaXRpb24sIHN0ZDo6ZnVuY3Rpb248dm9pZCAoRmxv
YXRQb2ludCYmKT4mJiBub3RpZnlQb3NpdGlvbkNoYW5nZWRGdW5jdGlvbikKK1Njcm9sbEFuaW1h
dGlvblNtb290aDo6U2Nyb2xsQW5pbWF0aW9uU21vb3RoKFNjcm9sbGFibGVBcmVhJiBzY3JvbGxh
YmxlQXJlYSwgY29uc3QgRmxvYXRQb2ludCYgcG9zaXRpb24sIFdURjo6RnVuY3Rpb248dm9pZCAo
RmxvYXRQb2ludCYmKT4mJiBub3RpZnlQb3NpdGlvbkNoYW5nZWRGdW5jdGlvbikKICAgICA6IFNj
cm9sbEFuaW1hdGlvbihzY3JvbGxhYmxlQXJlYSkKICAgICAsIG1fbm90aWZ5UG9zaXRpb25DaGFu
Z2VkRnVuY3Rpb24oV1RGTW92ZShub3RpZnlQb3NpdGlvbkNoYW5nZWRGdW5jdGlvbikpCiAgICAg
LCBtX2hvcml6b250YWxEYXRhKHBvc2l0aW9uLngoKSwgc2Nyb2xsYWJsZUFyZWEudmlzaWJsZVdp
ZHRoKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRp
b25TbW9vdGguaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdGlvblNtb290
aC5oCmluZGV4IDI0Mzk2NDhmMTg0ZGM3ZDIyODQ5Y2FlMzk1MWMwYTZkODY3MmRjOTMuLjAyY2M0
ZWUyYmQ3NDNkMDYyOWVhZDA0OGJmNzZjNDgxNjdiZmU4ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdGlvblNtb290aC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdGlvblNtb290aC5oCkBAIC0zOCw3ICszOCw3IEBAIGNs
YXNzIFNjcm9sbGFibGVBcmVhOwogCiBjbGFzcyBTY3JvbGxBbmltYXRpb25TbW9vdGggZmluYWw6
IHB1YmxpYyBTY3JvbGxBbmltYXRpb24gewogcHVibGljOgotICAgIFNjcm9sbEFuaW1hdGlvblNt
b290aChTY3JvbGxhYmxlQXJlYSYsIGNvbnN0IEZsb2F0UG9pbnQmLCBzdGQ6OmZ1bmN0aW9uPHZv
aWQgKEZsb2F0UG9pbnQmJik+JiYgbm90aWZ5UG9zaXRpb25DaGFuZ2VkRnVuY3Rpb24pOworICAg
IFNjcm9sbEFuaW1hdGlvblNtb290aChTY3JvbGxhYmxlQXJlYSYsIGNvbnN0IEZsb2F0UG9pbnQm
LCBXVEY6OkZ1bmN0aW9uPHZvaWQgKEZsb2F0UG9pbnQmJik+JiYgbm90aWZ5UG9zaXRpb25DaGFu
Z2VkRnVuY3Rpb24pOwogICAgIHZpcnR1YWwgflNjcm9sbEFuaW1hdGlvblNtb290aCgpOwogCiAg
ICAgZW51bSBjbGFzcyBDdXJ2ZSB7CkBAIC05Nyw3ICs5Nyw3IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCBhbmltYXRpb25UaW1lckZpcmVkKCk7CiAgICAgYm9vbCBhbmltYXRpb25UaW1lckFjdGl2ZSgp
IGNvbnN0OwogCi0gICAgc3RkOjpmdW5jdGlvbjx2b2lkIChGbG9hdFBvaW50JiYpPiBtX25vdGlm
eVBvc2l0aW9uQ2hhbmdlZEZ1bmN0aW9uOworICAgIFdURjo6RnVuY3Rpb248dm9pZCAoRmxvYXRQ
b2ludCYmKT4gbV9ub3RpZnlQb3NpdGlvbkNoYW5nZWRGdW5jdGlvbjsKIAogICAgIFBlckF4aXNE
YXRhIG1faG9yaXpvbnRhbERhdGE7CiAgICAgUGVyQXhpc0RhdGEgbV92ZXJ0aWNhbERhdGE7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRUaW1lci5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkVGltZXIuaAppbmRleCA3Nzc3ZjY3YzlhYWY3M2UwY2Jm
YTcwODg4NzYxM2I2ZjIzMzI5MjYyLi40NDQ1ZTNiNzJlNzZhOTIxYzBiZThmM2U4Nzc5ZTU1NTM2
MmU3MDQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRUaW1lci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZFRpbWVyLmgKQEAgLTI2LDggKzI2
LDggQEAKICNpZm5kZWYgU2hhcmVkVGltZXJfaAogI2RlZmluZSBTaGFyZWRUaW1lcl9oCiAKLSNp
bmNsdWRlIDxmdW5jdGlvbmFsPgogI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CisjaW5jbHVk
ZSA8d3RmL0Z1bmN0aW9uLmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAjaW5jbHVk
ZSA8d3RmL1NlY29uZHMuaD4KIApAQCAtNDEsNyArNDEsNyBAQCBjbGFzcyBTaGFyZWRUaW1lciB7
CiBwdWJsaWM6CiAgICAgU2hhcmVkVGltZXIoKSA9IGRlZmF1bHQ7CiAgICAgdmlydHVhbCB+U2hh
cmVkVGltZXIoKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgc2V0RmlyZWRGdW5jdGlvbihzdGQ6OmZ1
bmN0aW9uPHZvaWQoKT4mJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRGaXJlZEZ1bmN0aW9u
KFdURjo6RnVuY3Rpb248dm9pZCgpPiYmKSA9IDA7CiAKICAgICAvLyBUaGUgZmlyZSBpbnRlcnZh
bCBpcyBpbiBzZWNvbmRzIHJlbGF0aXZlIHRvIHRoZSBjdXJyZW50IG1vbm90b25pYyBjbG9jayB0
aW1lLgogICAgIHZpcnR1YWwgdm9pZCBzZXRGaXJlSW50ZXJ2YWwoU2Vjb25kcykgPSAwOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Np
b25NYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVk
aWFTZXNzaW9uTWFuYWdlci5jcHAKaW5kZXggYWRkYmM0M2Y4MDVkZDUwMmIzY2Q3OWVlNDY3NTM2
NTZlNTRiNzZhYS4uMDNkNzYxZWJjMTg5NDYyODU3ODkzOGU3ZDFjYWMwYmFjNjAwYjdkOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Np
b25NYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9QbGF0Zm9y
bU1lZGlhU2Vzc2lvbk1hbmFnZXIuY3BwCkBAIC0yNzcsNyArMjc3LDcgQEAgUGxhdGZvcm1NZWRp
YVNlc3Npb24qIFBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6Y3VycmVudFNlc3Npb24oKSBj
b25zdAogICAgIHJldHVybiBtX3Nlc3Npb25zWzBdOwogfQogCi1WZWN0b3I8UGxhdGZvcm1NZWRp
YVNlc3Npb24qPiBQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6OmN1cnJlbnRTZXNzaW9uc01h
dGNoaW5nKHN0ZDo6ZnVuY3Rpb248Ym9vbChjb25zdCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbiAmKT4g
ZmlsdGVyKQorVmVjdG9yPFBsYXRmb3JtTWVkaWFTZXNzaW9uKj4gUGxhdGZvcm1NZWRpYVNlc3Np
b25NYW5hZ2VyOjpjdXJyZW50U2Vzc2lvbnNNYXRjaGluZyhjb25zdCBXVEY6OkZ1bmN0aW9uPGJv
b2woY29uc3QgUGxhdGZvcm1NZWRpYVNlc3Npb24mKT4mIGZpbHRlcikKIHsKICAgICBWZWN0b3I8
UGxhdGZvcm1NZWRpYVNlc3Npb24qPiBtYXRjaGluZ1Nlc3Npb25zOwogICAgIGZvckVhY2hTZXNz
aW9uKFsmXSAoUGxhdGZvcm1NZWRpYVNlc3Npb24mIHNlc3Npb24sIHNpemVfdCkgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Npb25N
YW5hZ2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vz
c2lvbk1hbmFnZXIuaAppbmRleCBmMmUwZjk4NzM3NGJjNTk0NTMyODkxMTgzNWY5MGUxNWMwMDBm
NjgyLi44NDI3NDhmZmI2NDk1ZWMxMzY3NDAzMzI1YTEzNmZmMDZkOWYxYzFlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFn
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vz
c2lvbk1hbmFnZXIuaApAQCAtMTA1LDcgKzEwNSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEN1
cnJlbnRTZXNzaW9uKFBsYXRmb3JtTWVkaWFTZXNzaW9uJik7CiAgICAgUGxhdGZvcm1NZWRpYVNl
c3Npb24qIGN1cnJlbnRTZXNzaW9uKCkgY29uc3Q7CiAKLSAgICBWZWN0b3I8UGxhdGZvcm1NZWRp
YVNlc3Npb24qPiBjdXJyZW50U2Vzc2lvbnNNYXRjaGluZyhzdGQ6OmZ1bmN0aW9uPGJvb2woY29u
c3QgUGxhdGZvcm1NZWRpYVNlc3Npb24mKT4pOworICAgIFZlY3RvcjxQbGF0Zm9ybU1lZGlhU2Vz
c2lvbio+IGN1cnJlbnRTZXNzaW9uc01hdGNoaW5nKGNvbnN0IFdURjo6RnVuY3Rpb248Ym9vbChj
b25zdCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbiYpPiYpOwogCiAgICAgdm9pZCBzZXNzaW9uSXNQbGF5
aW5nVG9XaXJlbGVzc1BsYXliYWNrVGFyZ2V0Q2hhbmdlZChQbGF0Zm9ybU1lZGlhU2Vzc2lvbiYp
OwogICAgIHZvaWQgc2Vzc2lvbkNhblByb2R1Y2VBdWRpb0NoYW5nZWQoUGxhdGZvcm1NZWRpYVNl
c3Npb24mKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL01haW5UaHJl
YWRTaGFyZWRUaW1lckNGLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL01haW5UaHJl
YWRTaGFyZWRUaW1lckNGLmNwcAppbmRleCBmOWU0YmY4MDAwMjRkZWFmZDZlMzAzMjQwNWZhZGM4
NWQwZGM3MDVhLi5mMDE4M2IxNGRiZmMyYzQ4Y2QyMTk2M2JmODQ3Mzk5NmIyMGIxNGZlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9NYWluVGhyZWFkU2hhcmVkVGltZXJD
Ri5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvTWFpblRocmVhZFNoYXJlZFRp
bWVyQ0YuY3BwCkBAIC01Nyw3ICs1Nyw3IEBAIHN0YXRpYyB2b2lkIHNldHVwUG93ZXJPYnNlcnZl
cigpCiAjaWYgUExBVEZPUk0oTUFDKQogICAgIHN0YXRpYyBQb3dlck9ic2VydmVyKiBwb3dlck9i
c2VydmVyOwogICAgIGlmICghcG93ZXJPYnNlcnZlcikKLSAgICAgICAgcG93ZXJPYnNlcnZlciA9
IHN0ZDo6bWFrZV91bmlxdWU8UG93ZXJPYnNlcnZlcj4ocmVzdGFydFNoYXJlZFRpbWVyKS5yZWxl
YXNlKCk7CisgICAgICAgIHBvd2VyT2JzZXJ2ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFBvd2VyT2Jz
ZXJ2ZXI+KFtdIHsgcmVzdGFydFNoYXJlZFRpbWVyKCk7IH0pLnJlbGVhc2UoKTsKICNlbGlmIFBM
QVRGT1JNKElPUykKICAgICBzdGF0aWMgYm9vbCByZWdpc3RlcmVkRm9yQXBwbGljYXRpb25Ob3Rp
ZmljYXRpb24gPSBmYWxzZTsKICAgICBpZiAoIXJlZ2lzdGVyZWRGb3JBcHBsaWNhdGlvbk5vdGlm
aWNhdGlvbikgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvUnVuTG9v
cE9ic2VydmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9SdW5Mb29wT2JzZXJ2ZXIu
aAppbmRleCBjMWI2YTBkOWRjOWI4MjcyNWYwNGI1NWM4MzE4ZTYxYWQxNTY5MDgwLi45NjlhMDM3
ODZiYmIxZjExYzk3NDZmZTBiMDZlMmViZWFhZmVkM2UwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jZi9SdW5Mb29wT2JzZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jZi9SdW5Mb29wT2JzZXJ2ZXIuaApAQCAtMjcsNyArMjcsNyBAQAogI2RlZmluZSBS
dW5Mb29wT2JzZXJ2ZXJfaAogCiAjaW5jbHVkZSA8Q29yZUZvdW5kYXRpb24vQ29yZUZvdW5kYXRp
b24uaD4KLSNpbmNsdWRlIDxmdW5jdGlvbmFsPgorI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgog
I2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4K
IApAQCAtMzYsMTEgKzM2LDExIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFJ1bkxvb3BP
YnNlcnZlciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUnVuTG9vcE9ic2VydmVyKTsgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgdHlwZWRlZiBzdGQ6OmZ1bmN0aW9u
PHZvaWQgKCk+IFJ1bkxvb3BPYnNlcnZlckNhbGxiYWNrOworICAgIHR5cGVkZWYgV1RGOjpGdW5j
dGlvbjx2b2lkICgpPiBSdW5Mb29wT2JzZXJ2ZXJDYWxsYmFjazsKIAotICAgIFJ1bkxvb3BPYnNl
cnZlcihDRkluZGV4IG9yZGVyLCBSdW5Mb29wT2JzZXJ2ZXJDYWxsYmFjayBjYWxsYmFjaykKKyAg
ICBSdW5Mb29wT2JzZXJ2ZXIoQ0ZJbmRleCBvcmRlciwgUnVuTG9vcE9ic2VydmVyQ2FsbGJhY2sm
JiBjYWxsYmFjaykKICAgICAgICAgOiBtX29yZGVyKG9yZGVyKQotICAgICAgICAsIG1fY2FsbGJh
Y2soY2FsbGJhY2spCisgICAgICAgICwgbV9jYWxsYmFjayhXVEZNb3ZlKGNhbGxiYWNrKSkKICAg
ICB7IH0KIAogICAgIFdFQkNPUkVfRVhQT1JUIH5SdW5Mb29wT2JzZXJ2ZXIoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKaW5kZXgg
YzQ3MDc0NjQ4ZGU3ZjRiMDc4Y2EyZjFhNmFmYWVhODQ5ZWU3OTQ5ZS4uNTJmN2RlMjc1M2NjZGI2
Y2M2ZGU1MzlmNmFjMDAyMGUwNjhhY2FmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNs
dWRlICJJbWFnZS5oIgogI2luY2x1ZGUgIkltYWdlT3JpZW50YXRpb24uaCIKICNpbmNsdWRlICJQ
YXR0ZXJuLmgiCisjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+CiAjaW5jbHVkZSA8d3RmL05vbmNv
cHlhYmxlLmg+CiAKICNpZiBVU0UoQ0cpCkBAIC01OTksOCArNjAwLDggQEAgcHJpdmF0ZToKIAog
I2lmIFVTRShESVJFQ1QyRCkKICAgICB2b2lkIHBsYXRmb3JtSW5pdChIREMsIElEMkQxUmVuZGVy
VGFyZ2V0KiosIFJFQ1QsIGJvb2wgaGFzQWxwaGEgPSBmYWxzZSk7Ci0gICAgdm9pZCBkcmF3V2l0
aG91dFNoYWRvdyhjb25zdCBGbG9hdFJlY3QmIGJvdW5kaW5nUmVjdCwgY29uc3Qgc3RkOjpmdW5j
dGlvbjx2b2lkKElEMkQxUmVuZGVyVGFyZ2V0Kik+Jik7Ci0gICAgdm9pZCBkcmF3V2l0aFNoYWRv
dyhjb25zdCBGbG9hdFJlY3QmIGJvdW5kaW5nUmVjdCwgY29uc3Qgc3RkOjpmdW5jdGlvbjx2b2lk
KElEMkQxUmVuZGVyVGFyZ2V0Kik+Jik7CisgICAgdm9pZCBkcmF3V2l0aG91dFNoYWRvdyhjb25z
dCBGbG9hdFJlY3QmIGJvdW5kaW5nUmVjdCwgY29uc3QgV1RGOjpGdW5jdGlvbjx2b2lkKElEMkQx
UmVuZGVyVGFyZ2V0Kik+Jik7CisgICAgdm9pZCBkcmF3V2l0aFNoYWRvdyhjb25zdCBGbG9hdFJl
Y3QmIGJvdW5kaW5nUmVjdCwgY29uc3QgV1RGOjpGdW5jdGlvbjx2b2lkKElEMkQxUmVuZGVyVGFy
Z2V0Kik+Jik7CiAjZW5kaWYKIAogICAgIHZvaWQgc2F2ZVBsYXRmb3JtU3RhdGUoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5jcHAKaW5k
ZXggZjc5ZjQ0ZWUwYjkwYTUyNzIxZDlhMmEwYWQ4OTkwMTAwNWVkMTg1NC4uMTZjNjdmNDllOWZi
YTk0NDI1ZGIxZjI4NmEzODZjMjgyY2JhN2UzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5jcHAKQEAgLTY3Miw3ICs2NzIsNyBAQCB2
b2lkIEdyYXBoaWNzTGF5ZXI6OmFkZFJlcGFpbnRSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVwYWlu
dFJlY3QpCiAgICAgfQogfQogCi12b2lkIEdyYXBoaWNzTGF5ZXI6OnRyYXZlcnNlKEdyYXBoaWNz
TGF5ZXImIGxheWVyLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKEdyYXBoaWNzTGF5ZXImKT4gdHJhdmVy
c2FsRnVuYykKK3ZvaWQgR3JhcGhpY3NMYXllcjo6dHJhdmVyc2UoR3JhcGhpY3NMYXllciYgbGF5
ZXIsIGNvbnN0IFdURjo6RnVuY3Rpb248dm9pZCAoR3JhcGhpY3NMYXllciYpPiYgdHJhdmVyc2Fs
RnVuYykKIHsKICAgICB0cmF2ZXJzYWxGdW5jKGxheWVyKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5oCmluZGV4IGVjZmUzOWM2Njc1NDY0
NzQxOGRiMDM5MjNkYjI1MjM3ODhlM2FjYzUuLjZjMWI3OTZkMjgzMjM2YWQ2OTliMmI5NTExNDYz
ZDlmMTUwZjYxYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzTGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9H
cmFwaGljc0xheWVyLmgKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlICJQbGF0Zm9ybUxheWVy
LmgiCiAjaW5jbHVkZSAiVHJhbnNmb3JtT3BlcmF0aW9ucy5oIgogI2luY2x1ZGUgIldpbmRSdWxl
LmgiCisjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+CiAjaW5jbHVkZSA8d3RmL1R5cGVDYXN0cy5o
PgogCiAjaWYgRU5BQkxFKENTU19DT01QT1NJVElORykKQEAgLTU3MCw3ICs1NzEsNyBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCBib29sIGlzR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIoKSBjb25z
dCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc0Nvb3JkaW5hdGVkR3JhcGhp
Y3NMYXllcigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKLSAgICBzdGF0aWMgdm9pZCB0cmF2
ZXJzZShHcmFwaGljc0xheWVyJiwgc3RkOjpmdW5jdGlvbjx2b2lkIChHcmFwaGljc0xheWVyJik+
KTsKKyAgICBzdGF0aWMgdm9pZCB0cmF2ZXJzZShHcmFwaGljc0xheWVyJiwgY29uc3QgV1RGOjpG
dW5jdGlvbjx2b2lkIChHcmFwaGljc0xheWVyJik+Jik7CiAKIHByb3RlY3RlZDoKICAgICBXRUJD
T1JFX0VYUE9SVCBleHBsaWNpdCBHcmFwaGljc0xheWVyKFR5cGUsIEdyYXBoaWNzTGF5ZXJDbGll
bnQmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlh
UGxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVy
LmNwcAppbmRleCA2ZDJlNWFhM2EwMzcyZGVhMjlkYmMwMzllOWY2MzZiYmRkMzUxMDk2Li5iMGZi
M2RkNzdjNDY0M2ZiOGQyYzJmZDcwZmJiODU5ZTRkNWNjNDdjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCkBAIC0xODgsNyArMTg4LDcg
QEAgc3RydWN0IE1lZGlhUGxheWVyRmFjdG9yeSB7CiAgICAgTWVkaWFFbmdpbmVTdXBwb3J0c0tl
eVN5c3RlbSBzdXBwb3J0c0tleVN5c3RlbTsKIH07CiAKLXN0YXRpYyB2b2lkIGFkZE1lZGlhRW5n
aW5lKENyZWF0ZU1lZGlhRW5naW5lUGxheWVyLCBNZWRpYUVuZ2luZVN1cHBvcnRlZFR5cGVzLCBN
ZWRpYUVuZ2luZVN1cHBvcnRzVHlwZSwgTWVkaWFFbmdpbmVPcmlnaW5zSW5NZWRpYUNhY2hlLCBN
ZWRpYUVuZ2luZUNsZWFyTWVkaWFDYWNoZSwgTWVkaWFFbmdpbmVDbGVhck1lZGlhQ2FjaGVGb3JP
cmlnaW5zLCBNZWRpYUVuZ2luZVN1cHBvcnRzS2V5U3lzdGVtKTsKK3N0YXRpYyB2b2lkIGFkZE1l
ZGlhRW5naW5lKENyZWF0ZU1lZGlhRW5naW5lUGxheWVyJiYsIE1lZGlhRW5naW5lU3VwcG9ydGVk
VHlwZXMsIE1lZGlhRW5naW5lU3VwcG9ydHNUeXBlLCBNZWRpYUVuZ2luZU9yaWdpbnNJbk1lZGlh
Q2FjaGUsIE1lZGlhRW5naW5lQ2xlYXJNZWRpYUNhY2hlLCBNZWRpYUVuZ2luZUNsZWFyTWVkaWFD
YWNoZUZvck9yaWdpbnMsIE1lZGlhRW5naW5lU3VwcG9ydHNLZXlTeXN0ZW0pOwogCiBzdGF0aWMg
TG9jayYgbWVkaWFFbmdpbmVWZWN0b3JMb2NrKCkKIHsKQEAgLTI2OSwxNCArMjY5LDE0IEBAIHN0
YXRpYyBjb25zdCBWZWN0b3I8TWVkaWFQbGF5ZXJGYWN0b3J5PiYgaW5zdGFsbGVkTWVkaWFFbmdp
bmVzKCkKICAgICByZXR1cm4gbXV0YWJsZUluc3RhbGxlZE1lZGlhRW5naW5lc1ZlY3RvcigpOwog
fQogCi1zdGF0aWMgdm9pZCBhZGRNZWRpYUVuZ2luZShDcmVhdGVNZWRpYUVuZ2luZVBsYXllciBj
b25zdHJ1Y3RvciwgTWVkaWFFbmdpbmVTdXBwb3J0ZWRUeXBlcyBnZXRTdXBwb3J0ZWRUeXBlcywg
TWVkaWFFbmdpbmVTdXBwb3J0c1R5cGUgc3VwcG9ydHNUeXBlLAorc3RhdGljIHZvaWQgYWRkTWVk
aWFFbmdpbmUoQ3JlYXRlTWVkaWFFbmdpbmVQbGF5ZXImJiBjb25zdHJ1Y3RvciwgTWVkaWFFbmdp
bmVTdXBwb3J0ZWRUeXBlcyBnZXRTdXBwb3J0ZWRUeXBlcywgTWVkaWFFbmdpbmVTdXBwb3J0c1R5
cGUgc3VwcG9ydHNUeXBlLAogICAgIE1lZGlhRW5naW5lT3JpZ2luc0luTWVkaWFDYWNoZSBvcmln
aW5zSW5NZWRpYUNhY2hlLCBNZWRpYUVuZ2luZUNsZWFyTWVkaWFDYWNoZSBjbGVhck1lZGlhQ2Fj
aGUsIE1lZGlhRW5naW5lQ2xlYXJNZWRpYUNhY2hlRm9yT3JpZ2lucyBjbGVhck1lZGlhQ2FjaGVG
b3JPcmlnaW5zLCBNZWRpYUVuZ2luZVN1cHBvcnRzS2V5U3lzdGVtIHN1cHBvcnRzS2V5U3lzdGVt
KQogewogICAgIEFTU0VSVChjb25zdHJ1Y3Rvcik7CiAgICAgQVNTRVJUKGdldFN1cHBvcnRlZFR5
cGVzKTsKICAgICBBU1NFUlQoc3VwcG9ydHNUeXBlKTsKIAotICAgIG11dGFibGVJbnN0YWxsZWRN
ZWRpYUVuZ2luZXNWZWN0b3IoKS5hcHBlbmQoTWVkaWFQbGF5ZXJGYWN0b3J5IHsgY29uc3RydWN0
b3IsIGdldFN1cHBvcnRlZFR5cGVzLCBzdXBwb3J0c1R5cGUsIG9yaWdpbnNJbk1lZGlhQ2FjaGUs
IGNsZWFyTWVkaWFDYWNoZSwgY2xlYXJNZWRpYUNhY2hlRm9yT3JpZ2lucywgc3VwcG9ydHNLZXlT
eXN0ZW0gfSk7CisgICAgbXV0YWJsZUluc3RhbGxlZE1lZGlhRW5naW5lc1ZlY3RvcigpLmFwcGVu
ZChNZWRpYVBsYXllckZhY3RvcnkgeyBXVEZNb3ZlKGNvbnN0cnVjdG9yKSwgZ2V0U3VwcG9ydGVk
VHlwZXMsIHN1cHBvcnRzVHlwZSwgb3JpZ2luc0luTWVkaWFDYWNoZSwgY2xlYXJNZWRpYUNhY2hl
LCBjbGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5zLCBzdXBwb3J0c0tleVN5c3RlbSB9KTsKIH0KIAog
c3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgYXBwbGljYXRpb25PY3RldFN0cmVhbSgpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaAppbmRleCAxY2Iz
NTA0YjEyMDk5OTA5YmQ0MjNlZjlhYmY3OTVlNmNmNTg1Njg4Li45MmYyNDg1NjhkZWM5YTFiMzI5
OWU2YTA3M2Q4NGVlNGFlNWYzNmRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9NZWRpYVBsYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL01lZGlhUGxheWVyLmgKQEAgLTYyOCw3ICs2MjgsNyBAQCBwcml2YXRlOgogI2VuZGlm
CiB9OwogCi10eXBlZGVmIHN0ZDo6ZnVuY3Rpb248c3RkOjp1bmlxdWVfcHRyPE1lZGlhUGxheWVy
UHJpdmF0ZUludGVyZmFjZT4gKE1lZGlhUGxheWVyKik+IENyZWF0ZU1lZGlhRW5naW5lUGxheWVy
OwordXNpbmcgQ3JlYXRlTWVkaWFFbmdpbmVQbGF5ZXIgPSBXVEY6OkZ1bmN0aW9uPHN0ZDo6dW5p
cXVlX3B0cjxNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2U+IChNZWRpYVBsYXllciopPjsKIHR5
cGVkZWYgdm9pZCAoKk1lZGlhRW5naW5lU3VwcG9ydGVkVHlwZXMpKEhhc2hTZXQ8U3RyaW5nLCBB
U0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+JiB0eXBlcyk7CiB0eXBlZGVmIE1lZGlhUGxheWVyOjpT
dXBwb3J0c1R5cGUgKCpNZWRpYUVuZ2luZVN1cHBvcnRzVHlwZSkoY29uc3QgTWVkaWFFbmdpbmVT
dXBwb3J0UGFyYW1ldGVycyYgcGFyYW1ldGVycyk7CiB0eXBlZGVmIEhhc2hTZXQ8UmVmUHRyPFNl
Y3VyaXR5T3JpZ2luPj4gKCpNZWRpYUVuZ2luZU9yaWdpbnNJbk1lZGlhQ2FjaGUpKGNvbnN0IFN0
cmluZyYgcGF0aCk7CkBAIC02MzYsNyArNjM2LDcgQEAgdHlwZWRlZiB2b2lkICgqTWVkaWFFbmdp
bmVDbGVhck1lZGlhQ2FjaGUpKGNvbnN0IFN0cmluZyYgcGF0aCwgc3RkOjpjaHJvbm86OnN5c3QK
IHR5cGVkZWYgdm9pZCAoKk1lZGlhRW5naW5lQ2xlYXJNZWRpYUNhY2hlRm9yT3JpZ2lucykoY29u
c3QgU3RyaW5nJiBwYXRoLCBjb25zdCBIYXNoU2V0PFJlZlB0cjxTZWN1cml0eU9yaWdpbj4+Jik7
CiB0eXBlZGVmIGJvb2wgKCpNZWRpYUVuZ2luZVN1cHBvcnRzS2V5U3lzdGVtKShjb25zdCBTdHJp
bmcmIGtleVN5c3RlbSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSk7CiAKLXR5cGVkZWYgdm9pZCAo
Kk1lZGlhRW5naW5lUmVnaXN0cmFyKShDcmVhdGVNZWRpYUVuZ2luZVBsYXllciwgTWVkaWFFbmdp
bmVTdXBwb3J0ZWRUeXBlcywgTWVkaWFFbmdpbmVTdXBwb3J0c1R5cGUsCit0eXBlZGVmIHZvaWQg
KCpNZWRpYUVuZ2luZVJlZ2lzdHJhcikoQ3JlYXRlTWVkaWFFbmdpbmVQbGF5ZXImJiwgTWVkaWFF
bmdpbmVTdXBwb3J0ZWRUeXBlcywgTWVkaWFFbmdpbmVTdXBwb3J0c1R5cGUsCiAgICAgTWVkaWFF
bmdpbmVPcmlnaW5zSW5NZWRpYUNhY2hlLCBNZWRpYUVuZ2luZUNsZWFyTWVkaWFDYWNoZSwgTWVk
aWFFbmdpbmVDbGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5zLCBNZWRpYUVuZ2luZVN1cHBvcnRzS2V5
U3lzdGVtKTsKIHR5cGVkZWYgdm9pZCAoKk1lZGlhRW5naW5lUmVnaXN0ZXIpKE1lZGlhRW5naW5l
UmVnaXN0cmFyKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvUGF0aC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0aC5oCmluZGV4
IDI4MzFjZmUzM2U3YzA2YTg4ZDNjNmI4M2M5MTI2Yjg1MDJhMzRlZmMuLjdjYWJhNGNiNmU3ODkz
ODMzZGQ4YjZhYzE0Y2ZlYzlmMWMyOTk3MWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL1BhdGguaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9QYXRoLmgKQEAgLTMwLDggKzMwLDggQEAKIAogI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgog
I2luY2x1ZGUgIldpbmRSdWxlLmgiCi0jaW5jbHVkZSA8ZnVuY3Rpb25hbD4KICNpbmNsdWRlIDx3
dGYvRmFzdE1hbGxvYy5oPgorI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgogI2luY2x1ZGUgPHd0
Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCkBAIC0xMDEsNyArMTAxLDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBGbG9hdFBvaW50KiBwb2ludHM7CiAgICAg
fTsKIAotICAgIHR5cGVkZWYgc3RkOjpmdW5jdGlvbjx2b2lkIChjb25zdCBQYXRoRWxlbWVudCYp
PiBQYXRoQXBwbGllckZ1bmN0aW9uOworICAgIHVzaW5nIFBhdGhBcHBsaWVyRnVuY3Rpb24gPSBX
VEY6OkZ1bmN0aW9uPHZvaWQgKGNvbnN0IFBhdGhFbGVtZW50Jik+OwogCiAgICAgY2xhc3MgUGF0
aCB7CiAgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmNwcAppbmRleCBiMGMyNmFm
NTMzZjQyMzdjNDc2NDk2MTViNGVkNjQxYjQyYzBkZThkLi41ZGI4NzczZjVhNWY5M2YzMTE5M2I5
NTMwZGI0Y2UzZGJhM2NiNDlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmNwcApAQCAtNjU5LDcgKzY1OSw3IEBAIHZvaWQgTWVk
aWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uOjpzZWVrQ29tcGxldGVkKGJvb2wgZmluaXNoZWQp
CiAKICAgICBtX3NlZWtpbmcgPSBmYWxzZTsKIAotICAgIHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiBw
ZW5kaW5nU2VlazsKKyAgICBXVEY6OkZ1bmN0aW9uPHZvaWQoKT4gcGVuZGluZ1NlZWs7CiAgICAg
c3RkOjpzd2FwKHBlbmRpbmdTZWVrLCBtX3BlbmRpbmdTZWVrKTsKIAogICAgIGlmIChwZW5kaW5n
U2VlaykgewpAQCAtNzkwLDE2ICs3OTAsMTcgQEAgc3RhdGljIGNvbnN0IGNoYXIqIG5vdGlmaWNh
dGlvbk5hbWUoTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uOjpOb3RpZmljYXRpb24KICNl
bmRpZiAvLyAhTE9HX0RJU0FCTEVECiAgICAgCiAKLXZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uOjpzY2hlZHVsZU1haW5UaHJlYWROb3RpZmljYXRpb24oTm90aWZpY2F0aW9uIG5v
dGlmaWNhdGlvbikKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uOjpzY2hlZHVs
ZU1haW5UaHJlYWROb3RpZmljYXRpb24oTm90aWZpY2F0aW9uJiYgbm90aWZpY2F0aW9uKQogewot
ICAgIGlmIChub3RpZmljYXRpb24udHlwZSgpICE9IE5vdGlmaWNhdGlvbjo6RnVuY3Rpb25UeXBl
KQorICAgIGF1dG8gbm90aWZpY2F0aW9uVHlwZSA9IG5vdGlmaWNhdGlvbi50eXBlKCk7CisgICAg
aWYgKG5vdGlmaWNhdGlvblR5cGUgIT0gTm90aWZpY2F0aW9uOjpGdW5jdGlvblR5cGUpCiAgICAg
ICAgIExPRyhNZWRpYSwgIk1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbjo6c2NoZWR1bGVN
YWluVGhyZWFkTm90aWZpY2F0aW9uKCVwKSAtIG5vdGlmaWNhdGlvbiAlcyIsIHRoaXMsIG5vdGlm
aWNhdGlvbk5hbWUobm90aWZpY2F0aW9uKSk7CiAKICAgICBtX3F1ZXVlTXV0ZXgubG9jaygpOwog
CiAgICAgLy8gSXQgaXMgaW1wb3J0YW50IHRvIGFsd2F5cyBwcm9jZXNzIHRoZSBwcm9wZXJ0aWVz
IGluIHRoZSBvcmRlciB0aGF0IHdlIGFyZSBub3RpZmllZCwKICAgICAvLyBzbyBhbHdheXMgZ28g
dGhyb3VnaCB0aGUgcXVldWUgYmVjYXVzZSBub3RpZmljYXRpb25zIGhhcHBlbiBvbiBkaWZmZXJl
bnQgdGhyZWFkcy4KLSAgICBtX3F1ZXVlZE5vdGlmaWNhdGlvbnMuYXBwZW5kKG5vdGlmaWNhdGlv
bik7CisgICAgbV9xdWV1ZWROb3RpZmljYXRpb25zLmFwcGVuZChXVEZNb3ZlKG5vdGlmaWNhdGlv
bikpOwogCiAjaWYgT1MoV0lORE9XUykKICAgICBib29sIGRlbGF5RGlzcGF0Y2ggPSB0cnVlOwpA
QCAtODIwLDcgKzgyMSw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uOjpz
Y2hlZHVsZU1haW5UaHJlYWROb3RpZmljYXRpb24oTm90aWZpY2F0aW9uCiAgICAgbV9xdWV1ZU11
dGV4LnVubG9jaygpOwogCiAgICAgaWYgKGRlbGF5RGlzcGF0Y2gpIHsKLSAgICAgICAgaWYgKG5v
dGlmaWNhdGlvbi50eXBlKCkgIT0gTm90aWZpY2F0aW9uOjpGdW5jdGlvblR5cGUpCisgICAgICAg
IGlmIChub3RpZmljYXRpb25UeXBlICE9IE5vdGlmaWNhdGlvbjo6RnVuY3Rpb25UeXBlKQogICAg
ICAgICAgICAgTE9HKE1lZGlhLCAiTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uOjpzY2hl
ZHVsZU1haW5UaHJlYWROb3RpZmljYXRpb24oJXApIC0gZWFybHkgcmV0dXJuIiwgdGhpcyk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CkBAIC04MzIsNyArODMzLDcgQEAgdm9pZCBNZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb246OmRpc3BhdGNoTm90aWZpY2F0aW9uKCkKIHsKICAgICBBU1NF
UlQoaXNNYWluVGhyZWFkKCkpOwogCi0gICAgTm90aWZpY2F0aW9uIG5vdGlmaWNhdGlvbiA9IE5v
dGlmaWNhdGlvbigpOworICAgIE5vdGlmaWNhdGlvbiBub3RpZmljYXRpb247CiAgICAgewogICAg
ICAgICBMb2NrSG9sZGVyIGxvY2sobV9xdWV1ZU11dGV4KTsKICAgICAgICAgCkBAIC04NDEsOCAr
ODQyLDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb246OmRpc3BhdGNoTm90
aWZpY2F0aW9uKCkKICAgICAgICAgCiAgICAgICAgIGlmICghbV9kZWxheUNhbGxiYWNrcykgewog
ICAgICAgICAgICAgLy8gT25seSBkaXNwYXRjaCBvbmUgbm90aWZpY2F0aW9uIGNhbGxiYWNrIHBl
ciBpbnZvY2F0aW9uIGJlY2F1c2UgdGhleSBjYW4gY2F1c2UgcmVjdXJzaW9uLgotICAgICAgICAg
ICAgbm90aWZpY2F0aW9uID0gbV9xdWV1ZWROb3RpZmljYXRpb25zLmZpcnN0KCk7Ci0gICAgICAg
ICAgICBtX3F1ZXVlZE5vdGlmaWNhdGlvbnMucmVtb3ZlKDApOworICAgICAgICAgICAgbm90aWZp
Y2F0aW9uID0gbV9xdWV1ZWROb3RpZmljYXRpb25zLnRha2VGaXJzdCgpOwogICAgICAgICB9CiAg
ICAgICAgIAogICAgICAgICBpZiAoIW1fcXVldWVkTm90aWZpY2F0aW9ucy5pc0VtcHR5KCkgJiYg
IW1fbWFpblRocmVhZENhbGxQZW5kaW5nKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVk
aWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmgKaW5kZXggMGFkMjk4YjA1ZmMwYTMwNzA1YjFl
YjgwMzE2MDhlYjQ5ZjhmMmYzMS4uMDg4YmE0NzA1NzhhN2NkMzlmMWQ5MDE3Y2Y1OTg0MjA1N2Zm
ODY0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb24uaApAQCAtMzIsNyArMzIsOCBAQAogI2luY2x1ZGUgIkluYmFuZFRleHRUcmFja1By
aXZhdGVBVkYuaCIKICNpbmNsdWRlICJNZWRpYVBsYXllclByaXZhdGUuaCIKICNpbmNsdWRlICJU
aW1lci5oIgotI2luY2x1ZGUgPGZ1bmN0aW9uYWw+CisjaW5jbHVkZSA8d3RmL0RlcXVlLmg+Cisj
aW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNs
dWRlIDx3dGYvTG9jay5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KQEAgLTExMywxMCAr
MTE0LDEwIEBAIHB1YmxpYzoKICAgICAgICAgewogICAgICAgICB9CiAKLSAgICAgICAgTm90aWZp
Y2F0aW9uKHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4gZnVuY3Rpb24pCisgICAgICAgIE5vdGlmaWNh
dGlvbihXVEY6OkZ1bmN0aW9uPHZvaWQgKCk+JiYgZnVuY3Rpb24pCiAgICAgICAgICAgICA6IG1f
dHlwZShGdW5jdGlvblR5cGUpCiAgICAgICAgICAgICAsIG1fZmluaXNoZWQoZmFsc2UpCi0gICAg
ICAgICAgICAsIG1fZnVuY3Rpb24oZnVuY3Rpb24pCisgICAgICAgICAgICAsIG1fZnVuY3Rpb24o
V1RGTW92ZShmdW5jdGlvbikpCiAgICAgICAgIHsKICAgICAgICAgfQogICAgICAgICAKQEAgLTEy
NCwxNiArMTI1LDE2IEBAIHB1YmxpYzoKICAgICAgICAgYm9vbCBpc1ZhbGlkKCkgeyByZXR1cm4g
bV90eXBlICE9IE5vbmU7IH0KICAgICAgICAgTWVkaWFUaW1lIHRpbWUoKSB7IHJldHVybiBtX3Rp
bWU7IH0KICAgICAgICAgYm9vbCBmaW5pc2hlZCgpIHsgcmV0dXJuIG1fZmluaXNoZWQ7IH0KLSAg
ICAgICAgc3RkOjpmdW5jdGlvbjx2b2lkICgpPiYgZnVuY3Rpb24oKSB7IHJldHVybiBtX2Z1bmN0
aW9uOyB9CisgICAgICAgIFdURjo6RnVuY3Rpb248dm9pZCAoKT4mIGZ1bmN0aW9uKCkgeyByZXR1
cm4gbV9mdW5jdGlvbjsgfQogICAgICAgICAKICAgICBwcml2YXRlOgogICAgICAgICBUeXBlIG1f
dHlwZTsKICAgICAgICAgTWVkaWFUaW1lIG1fdGltZTsKICAgICAgICAgYm9vbCBtX2ZpbmlzaGVk
OwotICAgICAgICBzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+IG1fZnVuY3Rpb247CisgICAgICAgIFdU
Rjo6RnVuY3Rpb248dm9pZCAoKT4gbV9mdW5jdGlvbjsKICAgICB9OwogCi0gICAgdm9pZCBzY2hl
ZHVsZU1haW5UaHJlYWROb3RpZmljYXRpb24oTm90aWZpY2F0aW9uKTsKKyAgICB2b2lkIHNjaGVk
dWxlTWFpblRocmVhZE5vdGlmaWNhdGlvbihOb3RpZmljYXRpb24mJik7CiAgICAgdm9pZCBzY2hl
ZHVsZU1haW5UaHJlYWROb3RpZmljYXRpb24oTm90aWZpY2F0aW9uOjpUeXBlLCBjb25zdCBNZWRp
YVRpbWUmID0gTWVkaWFUaW1lOjp6ZXJvVGltZSgpKTsKICAgICB2b2lkIHNjaGVkdWxlTWFpblRo
cmVhZE5vdGlmaWNhdGlvbihOb3RpZmljYXRpb246OlR5cGUsIGJvb2wgY29tcGxldGVkKTsKICAg
ICB2b2lkIGRpc3BhdGNoTm90aWZpY2F0aW9uKCk7CkBAIC0zMTcsOSArMzE4LDkgQEAgcHJpdmF0
ZToKIAogICAgIFdlYWtQdHJGYWN0b3J5PE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbj4g
bV93ZWFrUHRyRmFjdG9yeTsKIAotICAgIHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiBtX3BlbmRpbmdT
ZWVrOworICAgIFdURjo6RnVuY3Rpb248dm9pZCgpPiBtX3BlbmRpbmdTZWVrOwogCi0gICAgVmVj
dG9yPE5vdGlmaWNhdGlvbj4gbV9xdWV1ZWROb3RpZmljYXRpb25zOworICAgIERlcXVlPE5vdGlm
aWNhdGlvbj4gbV9xdWV1ZWROb3RpZmljYXRpb25zOwogICAgIG11dGFibGUgTG9jayBtX3F1ZXVl
TXV0ZXg7CiAKICAgICBtdXRhYmxlIHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybVRpbWVSYW5nZXM+
IG1fY2FjaGVkTG9hZGVkVGltZVJhbmdlczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCmluZGV4IDRm
ZmRhNWU5ZjMyZmE1MGExZWZhYjMyY2Y1MmJjY2NkZjE3N2EzMzMuLjZmZGY2MWRmNDk0MDg2ZWY1
MGU1ODU1NGU3ZDlkZGUzYjAxMzIwZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQpAQCAtMzM3
NSw3ICszMzc1LDcgQEAgLSAodm9pZClvYnNlcnZlVmFsdWVGb3JLZXlQYXRoOmtleVBhdGggb2ZP
YmplY3Q6KGlkKW9iamVjdCBjaGFuZ2U6KE5TRGljdGlvbmFyeQogICAgIH0KICNlbmRpZgogCi0g
ICAgc3RkOjpmdW5jdGlvbjx2b2lkICgpPiBmdW5jdGlvbjsKKyAgICBXVEY6OkZ1bmN0aW9uPHZv
aWQgKCk+IGZ1bmN0aW9uOwogCiAgICAgaWYgKGNvbnRleHQgPT0gTWVkaWFQbGF5ZXJBVkZvdW5k
YXRpb25PYnNlcnZhdGlvbkNvbnRleHRBVlBsYXllckxheWVyKSB7CiAgICAgICAgIGlmIChba2V5
UGF0aCBpc0VxdWFsVG9TdHJpbmc6QCJyZWFkeUZvckRpc3BsYXkiXSkKQEAgLTM0NTAsNyArMzQ1
MCw3IEBAIC0gKHZvaWQpb2JzZXJ2ZVZhbHVlRm9yS2V5UGF0aDprZXlQYXRoIG9mT2JqZWN0Oihp
ZClvYmplY3QgY2hhbmdlOihOU0RpY3Rpb25hcnkKICAgICAgICAgcmV0dXJuOwogCiAgICAgYXV0
byB3ZWFrVGhpcyA9IG1fY2FsbGJhY2stPmNyZWF0ZVdlYWtQdHIoKTsKLSAgICBtX2NhbGxiYWNr
LT5zY2hlZHVsZU1haW5UaHJlYWROb3RpZmljYXRpb24oTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uOjpOb3RpZmljYXRpb24oW3dlYWtUaGlzLCBmdW5jdGlvbl17CisgICAgbV9jYWxsYmFj
ay0+c2NoZWR1bGVNYWluVGhyZWFkTm90aWZpY2F0aW9uKE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbjo6Tm90aWZpY2F0aW9uKFt3ZWFrVGhpcywgZnVuY3Rpb24gPSBXVEZNb3ZlKGZ1bmN0
aW9uKV17CiAgICAgICAgIC8vIHdlYWtUaGlzIGFuZCBmdW5jdGlvbiBib3RoIHJlZmVyIHRvIHRo
ZSBzYW1lIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMgaW5zdGFuY2UuIElmIHRo
ZSBXZWFrUHRyIGhhcwogICAgICAgICAvLyBiZWVuIGNsZWFyZWQsIHRoZSB1bmRlcmx5aW5nIG9i
amVjdCBoYXMgYmVlbiBkZXN0cm95ZWQsIGFuZCBpdCBpcyB1bnNhZmUgdG8gY2FsbCBmdW5jdGlv
bigpLgogICAgICAgICBpZiAoIXdlYWtUaGlzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVk
aWFTdHJlYW1BVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tCmlu
ZGV4IDM4Y2FkZTk0OWE4ZTU1N2MzNDgzNzc5YWQ1NWZiNGUwZDNmMTA3MjYuLjk1YWI0NWNjZWQy
MDE2Yjg5YjAxYzRmODg2ZmRmNmVhOTg2YmJmYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1l
ZGlhU3RyZWFtQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMu
bW0KQEAgLTQxLDYgKzQxLDcgQEAKICNpbXBvcnQgPFF1YXJ0ekNvcmUvQ0FMYXllci5oPgogI2lt
cG9ydCA8UXVhcnR6Q29yZS9DQVRyYW5zYWN0aW9uLmg+CiAjaW1wb3J0IDxvYmpjX3J1bnRpbWUu
aD4KKyNpbXBvcnQgPHd0Zi9GdW5jdGlvbi5oPgogI2ltcG9ydCA8d3RmL01haW5UaHJlYWQuaD4K
ICNpbXBvcnQgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCkBAIC0zMjUsNyArMzI2LDcgQEAgQ0dB
ZmZpbmVUcmFuc2Zvcm0gTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjp2aWRl
b1RyYW5zZm9ybWF0aW9uTWF0cmkKICAgICByZXR1cm4gbV92aWRlb1RyYW5zZm9ybTsKIH0KIAot
c3RhdGljIHZvaWQgcnVuV2l0aG91dEFuaW1hdGlvbnMoc3RkOjpmdW5jdGlvbjx2b2lkKCk+IGZ1
bmN0aW9uKQorc3RhdGljIHZvaWQgcnVuV2l0aG91dEFuaW1hdGlvbnMoY29uc3QgV1RGOjpGdW5j
dGlvbjx2b2lkKCk+JiBmdW5jdGlvbikKIHsKICAgICBbQ0FUcmFuc2FjdGlvbiBiZWdpbl07CiAg
ICAgW0NBVHJhbnNhY3Rpb24gc2V0QW5pbWF0aW9uRHVyYXRpb246MF07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9JT1N1cmZhY2UuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0lPU3VyZmFjZS5oCmluZGV4IDIxNjk5
ZjM2ZmRjMDA1MTlkMGE5Mzk0ZjUzZDJkNWUwN2M2Y2YxZTUuLjAwYWQyY2IzNDM5ZmJiOWIyNmIx
MWFiMWI2ZmQzN2UzZjMyNjAwMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL0lPU3VyZmFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL0lPU3VyZmFjZS5oCkBAIC05Niw3ICs5Niw3IEBAIHB1YmxpYzoKIAog
I2lmIFBMQVRGT1JNKElPUykKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgYm9vbCBhbGxvd0Nv
bnZlcnNpb25Gcm9tRm9ybWF0VG9Gb3JtYXQoRm9ybWF0LCBGb3JtYXQpOwotICAgIFdFQkNPUkVf
RVhQT1JUIHN0YXRpYyB2b2lkIGNvbnZlcnRUb0Zvcm1hdChzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29y
ZTo6SU9TdXJmYWNlPiYmIGluU3VyZmFjZSwgRm9ybWF0LCBzdGQ6OmZ1bmN0aW9uPHZvaWQoc3Rk
Ojp1bmlxdWVfcHRyPFdlYkNvcmU6OklPU3VyZmFjZT4pPik7CisgICAgV0VCQ09SRV9FWFBPUlQg
c3RhdGljIHZvaWQgY29udmVydFRvRm9ybWF0KHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpJT1N1
cmZhY2U+JiYgaW5TdXJmYWNlLCBGb3JtYXQsIFdURjo6RnVuY3Rpb248dm9pZChzdGQ6OnVuaXF1
ZV9wdHI8V2ViQ29yZTo6SU9TdXJmYWNlPik+JiYpOwogI2VuZGlmCiAKIHByaXZhdGU6CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9JT1N1cmZhY2Uu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9JT1N1cmZhY2UubW0K
aW5kZXggNzhjNzgwMjM4ODE2M2M1ZGZkNzUyYzY5OTJiMzNkYTg3ZTE4M2NjNi4uNDlkMDQ2ZTlj
ZDI1YWM2NDQzOTU0ZDM2ZmViZDIzOTA4YzZkMzc4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSU9TdXJmYWNlLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0lPU3VyZmFjZS5tbQpAQCAtMzgwLDcgKzM4MCw3
IEBAIGJvb2wgV2ViQ29yZTo6SU9TdXJmYWNlOjphbGxvd0NvbnZlcnNpb25Gcm9tRm9ybWF0VG9G
b3JtYXQoRm9ybWF0IHNvdXJjZUZvcm1hdCwKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBX
ZWJDb3JlOjpJT1N1cmZhY2U6OmNvbnZlcnRUb0Zvcm1hdChzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29y
ZTo6SU9TdXJmYWNlPiYmIGluU3VyZmFjZSwgRm9ybWF0IGZvcm1hdCwgc3RkOjpmdW5jdGlvbjx2
b2lkKHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpJT1N1cmZhY2U+KT4gY2FsbGJhY2spCit2b2lk
IFdlYkNvcmU6OklPU3VyZmFjZTo6Y29udmVydFRvRm9ybWF0KHN0ZDo6dW5pcXVlX3B0cjxXZWJD
b3JlOjpJT1N1cmZhY2U+JiYgaW5TdXJmYWNlLCBGb3JtYXQgZm9ybWF0LCBXVEY6OkZ1bmN0aW9u
PHZvaWQoc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OklPU3VyZmFjZT4pPiYmIGNhbGxiYWNrKQog
ewogICAgIHN0YXRpYyBJT1N1cmZhY2VBY2NlbGVyYXRvclJlZiBhY2NlbGVyYXRvcjsKICAgICBp
ZiAoIWFjY2VsZXJhdG9yKSB7CkBAIC00MDMsMTAgKzQwMywxMCBAQCB2b2lkIFdlYkNvcmU6OklP
U3VyZmFjZTo6Y29udmVydFRvRm9ybWF0KHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpJT1N1cmZh
Y2U+JiYgaQogCiAgICAgSU9TdXJmYWNlUmVmIGRlc3RpbmF0aW9uSU9TdXJmYWNlUmVmID0gZGVz
dGluYXRpb25TdXJmYWNlLT5zdXJmYWNlKCk7CiAgICAgSU9TdXJmYWNlQWNjZWxlcmF0b3JDb21w
bGV0aW9uIGNvbXBsZXRpb247Ci0gICAgY29tcGxldGlvbi5jb21wbGV0aW9uUmVmQ29uID0gbmV3
IHN0ZDo6ZnVuY3Rpb248dm9pZChzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6SU9TdXJmYWNlPik+
IChXVEZNb3ZlKGNhbGxiYWNrKSk7CisgICAgY29tcGxldGlvbi5jb21wbGV0aW9uUmVmQ29uID0g
bmV3IFdURjo6RnVuY3Rpb248dm9pZChzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6SU9TdXJmYWNl
Pik+IChXVEZNb3ZlKGNhbGxiYWNrKSk7CiAgICAgY29tcGxldGlvbi5jb21wbGV0aW9uUmVmQ29u
MiA9IGRlc3RpbmF0aW9uU3VyZmFjZS5yZWxlYXNlKCk7CiAgICAgY29tcGxldGlvbi5jb21wbGV0
aW9uQ2FsbGJhY2sgPSBbXSh2b2lkICpjb21wbGV0aW9uUmVmQ29uLCBJT1JldHVybiwgdm9pZCAq
IGNvbXBsZXRpb25SZWZDb24yKSB7Ci0gICAgICAgIGF1dG8qIGNhbGxiYWNrID0gc3RhdGljX2Nh
c3Q8c3RkOjpmdW5jdGlvbjx2b2lkKHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpJT1N1cmZhY2U+
KT4qPihjb21wbGV0aW9uUmVmQ29uKTsKKyAgICAgICAgYXV0byogY2FsbGJhY2sgPSBzdGF0aWNf
Y2FzdDxXVEY6OkZ1bmN0aW9uPHZvaWQoc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OklPU3VyZmFj
ZT4pPio+KGNvbXBsZXRpb25SZWZDb24pOwogICAgICAgICBhdXRvIGRlc3RpbmF0aW9uU3VyZmFj
ZSA9IHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpJT1N1cmZhY2U+KHN0YXRpY19jYXN0PFdlYkNv
cmU6OklPU3VyZmFjZSo+KGNvbXBsZXRpb25SZWZDb24yKSk7CiAgICAgICAgIAogICAgICAgICAo
KmNhbGxiYWNrKShXVEZNb3ZlKGRlc3RpbmF0aW9uU3VyZmFjZSkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01haW5UaHJlYWROb3RpZmll
ci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01haW5UaHJl
YWROb3RpZmllci5oCmluZGV4IGYxNDA1MGRkMmVmNDQ2OWMwMTgwOTJhNWQ3ZDg3MmUwNmMxZTgx
MDAuLjM3NTJkYzI3NWU3MTk1NzhlYmYxOTU5NmY0ZmE2YmYyZmM4OGY5YjUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NYWluVGhyZWFkTm90
aWZpZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
TWFpblRocmVhZE5vdGlmaWVyLmgKQEAgLTM2LDcgKzM2LDcgQEAgcHVibGljOgogICAgIH0KIAog
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIEY+Ci0gICAgdm9pZCBub3RpZnkoVCBub3RpZmljYXRpb25U
eXBlLCBjb25zdCBGJiBjYWxsYmFja0Z1bmN0b3IpCisgICAgdm9pZCBub3RpZnkoVCBub3RpZmlj
YXRpb25UeXBlLCBGJiYgY2FsbGJhY2tGdW5jdG9yKQogICAgIHsKICAgICAgICAgQVNTRVJUKG1f
aXNWYWxpZC5sb2FkKCkpOwogICAgICAgICBpZiAoaXNNYWluVGhyZWFkKCkpIHsKQEAgLTQ4LDcg
KzQ4LDcgQEAgcHVibGljOgogICAgICAgICBpZiAoIWFkZFBlbmRpbmdOb3RpZmljYXRpb24obm90
aWZpY2F0aW9uVHlwZSkpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgUnVuTG9vcDo6
bWFpbigpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIG5v
dGlmaWNhdGlvblR5cGUsIGNhbGxiYWNrID0gc3RkOjpmdW5jdGlvbjx2b2lkKCk+KGNhbGxiYWNr
RnVuY3RvcildIHsKKyAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFt0aGlzLCBwcm90
ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIG5vdGlmaWNhdGlvblR5cGUsIGNhbGxiYWNrID0g
V1RGOjpGdW5jdGlvbjx2b2lkKCk+KFdURk1vdmUoY2FsbGJhY2tGdW5jdG9yKSldIHsKICAgICAg
ICAgICAgIGlmICghbV9pc1ZhbGlkLmxvYWQoKSkKICAgICAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgICAgICBpZiAocmVtb3ZlUGVuZGluZ05vdGlmaWNhdGlvbihub3RpZmljYXRpb25UeXBl
KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9NZWRpYVBsYXllclJlcXVlc3RJbnN0YWxsTWlzc2luZ1BsdWdpbnNDYWxsYmFjay5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUmVxdWVz
dEluc3RhbGxNaXNzaW5nUGx1Z2luc0NhbGxiYWNrLmgKaW5kZXggOTVlZDJkYTYzM2YxMmNhZDQ4
ZTNmZTAwMjRjMTFjMTY3ZDY3NDUzZS4uMDU4N2QwZGY5MmIwNjgyYWYyNmMwOGQ4ZWVjZDZmZDQ4
ZjJkNjk1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL01lZGlhUGxheWVyUmVxdWVzdEluc3RhbGxNaXNzaW5nUGx1Z2luc0NhbGxiYWNrLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxh
eWVyUmVxdWVzdEluc3RhbGxNaXNzaW5nUGx1Z2luc0NhbGxiYWNrLmgKQEAgLTIxLDYgKzIxLDcg
QEAKICNkZWZpbmUgTWVkaWFQbGF5ZXJSZXF1ZXN0SW5zdGFsbE1pc3NpbmdQbHVnaW5zQ2FsbGJh
Y2tfaAogCiAjaWYgRU5BQkxFKFZJREVPKSAmJiBVU0UoR1NUUkVBTUVSKQorI2luY2x1ZGUgPHd0
Zi9GdW5jdGlvbi5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKQEAgLTI4LDcgKzI5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgTWVk
aWFQbGF5ZXJSZXF1ZXN0SW5zdGFsbE1pc3NpbmdQbHVnaW5zQ2FsbGJhY2sgOiBwdWJsaWMgUmVm
Q291bnRlZDxNZWRpYVBsYXllclJlcXVlc3RJbnN0YWxsTWlzc2luZ1BsdWdpbnNDYWxsYmFjaz4g
ewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEKCk7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJl
ZjxNZWRpYVBsYXllclJlcXVlc3RJbnN0YWxsTWlzc2luZ1BsdWdpbnNDYWxsYmFjaz4gY3JlYXRl
KHN0ZDo6ZnVuY3Rpb248dm9pZCAodWludDMyX3QpPiYmIGZ1bmN0aW9uKQorICAgIHN0YXRpYyBS
ZWY8TWVkaWFQbGF5ZXJSZXF1ZXN0SW5zdGFsbE1pc3NpbmdQbHVnaW5zQ2FsbGJhY2s+IGNyZWF0
ZShXVEY6OkZ1bmN0aW9uPHZvaWQgKHVpbnQzMl90KT4mJiBmdW5jdGlvbikKICAgICB7CiAgICAg
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE1lZGlhUGxheWVyUmVxdWVzdEluc3RhbGxNaXNzaW5n
UGx1Z2luc0NhbGxiYWNrKFdURk1vdmUoZnVuY3Rpb24pKSk7CiAgICAgfQpAQCAtNDcsMTIgKzQ4
LDEyIEBAIHB1YmxpYzoKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgTWVkaWFQbGF5ZXJSZXF1ZXN0
SW5zdGFsbE1pc3NpbmdQbHVnaW5zQ2FsbGJhY2soc3RkOjpmdW5jdGlvbjx2b2lkICh1aW50MzJf
dCk+JiYgZnVuY3Rpb24pCisgICAgTWVkaWFQbGF5ZXJSZXF1ZXN0SW5zdGFsbE1pc3NpbmdQbHVn
aW5zQ2FsbGJhY2soV1RGOjpGdW5jdGlvbjx2b2lkICh1aW50MzJfdCk+JiYgZnVuY3Rpb24pCiAg
ICAgICAgIDogbV9mdW5jdGlvbihXVEZNb3ZlKGZ1bmN0aW9uKSkKICAgICB7CiAgICAgfQogCi0g
ICAgc3RkOjpmdW5jdGlvbjx2b2lkICh1aW50MzJfdCk+IG1fZnVuY3Rpb247CisgICAgV1RGOjpG
dW5jdGlvbjx2b2lkICh1aW50MzJfdCk+IG1fZnVuY3Rpb247CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93
aW4vR3JhcGhpY3NDb250ZXh0RGlyZWN0MkQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dERpcmVjdDJELmNwcAppbmRleCA2NDA1OTcwZjI3
NWViYTUyYjcxZTJkYWI0YWQ3NjBlZDlhMzJlMmYyLi5kMDY2N2MzZDAwY2YyOGUyMzFiMjFhZTk2
Mjk0ZDJjZjY5OGIzYjQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy93aW4vR3JhcGhpY3NDb250ZXh0RGlyZWN0MkQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHREaXJlY3QyRC5jcHAKQEAgLTkz
NSw3ICs5MzUsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd1BhdGgoY29uc3QgUGF0aCYg
cGF0aCkKICAgICBmbHVzaCgpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd1dpdGhv
dXRTaGFkb3coY29uc3QgRmxvYXRSZWN0JiAvKmJvdW5kaW5nUmVjdCovLCBjb25zdCBzdGQ6OmZ1
bmN0aW9uPHZvaWQoSUQyRDFSZW5kZXJUYXJnZXQqKT4mIGRyYXdDb21tYW5kcykKK3ZvaWQgR3Jh
cGhpY3NDb250ZXh0OjpkcmF3V2l0aG91dFNoYWRvdyhjb25zdCBGbG9hdFJlY3QmIC8qYm91bmRp
bmdSZWN0Ki8sIGNvbnN0IFdURjo6RnVuY3Rpb248dm9pZChJRDJEMVJlbmRlclRhcmdldCopPiYg
ZHJhd0NvbW1hbmRzKQogewogICAgIGRyYXdDb21tYW5kcyhwbGF0Zm9ybUNvbnRleHQoKSk7CiB9
CkBAIC05ODEsNyArOTgxLDcgQEAgc3RhdGljIHZvaWQgZHJhd1dpdGhTaGFkb3dIZWxwZXIoSUQy
RDFSZW5kZXJUYXJnZXQqIGNvbnRleHQsIElEMkQxQml0bWFwKiBiaXRtYXAKICAgICBkZXZpY2VD
b250ZXh0LT5EcmF3SW1hZ2UoY29tcG9zaXRvci5nZXQoKSwgRDJEMV9JTlRFUlBPTEFUSU9OX01P
REVfTElORUFSKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdXaXRoU2hhZG93KGNv
bnN0IEZsb2F0UmVjdCYgYm91bmRpbmdSZWN0LCBjb25zdCBzdGQ6OmZ1bmN0aW9uPHZvaWQoSUQy
RDFSZW5kZXJUYXJnZXQqKT4mIGRyYXdDb21tYW5kcykKK3ZvaWQgR3JhcGhpY3NDb250ZXh0Ojpk
cmF3V2l0aFNoYWRvdyhjb25zdCBGbG9hdFJlY3QmIGJvdW5kaW5nUmVjdCwgY29uc3QgV1RGOjpG
dW5jdGlvbjx2b2lkKElEMkQxUmVuZGVyVGFyZ2V0Kik+JiBkcmF3Q29tbWFuZHMpCiB7CiAgICAg
YXV0byBjb250ZXh0ID0gcGxhdGZvcm1Db250ZXh0KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkSGVscGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkSGVscGVyLmNwcAppbmRleCAwODJmYjdjZGEzMWI2YTRi
ZjE2NWNmYmNmMTQ5OGM1MDljZDk2ODhmLi42N2I3YzdjNmFhODdhMmRjZjNkYjA4YzViYmZkYWI5
MWQ5NGNjOWQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGFzdGVi
b2FyZEhlbHBlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Bhc3RlYm9h
cmRIZWxwZXIuY3BwCkBAIC0yNjUsNyArMjY1LDcgQEAgVmVjdG9yPEdka0F0b20+IFBhc3RlYm9h
cmRIZWxwZXI6OmRyb3BBdG9tc0ZvckNvbnRleHQoR3RrV2lkZ2V0KiB3aWRnZXQsIEdka0RyYWcK
IHN0YXRpYyBTZWxlY3Rpb25EYXRhKiBzZXR0aW5nQ2xpcGJvYXJkU2VsZWN0aW9uOwogCiBzdHJ1
Y3QgQ2xpcGJvYXJkU2V0RGF0YSB7Ci0gICAgQ2xpcGJvYXJkU2V0RGF0YShTZWxlY3Rpb25EYXRh
JiBzZWxlY3Rpb24sIHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiYmIHNlbGVjdGlvbkNsZWFyZWRDYWxs
YmFjaykKKyAgICBDbGlwYm9hcmRTZXREYXRhKFNlbGVjdGlvbkRhdGEmIHNlbGVjdGlvbiwgV1RG
OjpGdW5jdGlvbjx2b2lkKCk+JiYgc2VsZWN0aW9uQ2xlYXJlZENhbGxiYWNrKQogICAgICAgICA6
IHNlbGVjdGlvbkRhdGEoc2VsZWN0aW9uKQogICAgICAgICAsIHNlbGVjdGlvbkNsZWFyZWRDYWxs
YmFjayhXVEZNb3ZlKHNlbGVjdGlvbkNsZWFyZWRDYWxsYmFjaykpCiAgICAgewpAQCAtMjc2LDcg
KzI3Niw3IEBAIHN0cnVjdCBDbGlwYm9hcmRTZXREYXRhIHsKICAgICB9CiAKICAgICBSZWY8U2Vs
ZWN0aW9uRGF0YT4gc2VsZWN0aW9uRGF0YTsKLSAgICBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4gc2Vs
ZWN0aW9uQ2xlYXJlZENhbGxiYWNrOworICAgIFdURjo6RnVuY3Rpb248dm9pZCgpPiBzZWxlY3Rp
b25DbGVhcmVkQ2FsbGJhY2s7CiB9OwogCiBzdGF0aWMgdm9pZCBnZXRDbGlwYm9hcmRDb250ZW50
c0NhbGxiYWNrKEd0a0NsaXBib2FyZCosIEd0a1NlbGVjdGlvbkRhdGEgKnNlbGVjdGlvbkRhdGEs
IGd1aW50IGluZm8sIGdwb2ludGVyIHVzZXJEYXRhKQpAQCAtMjkyLDcgKzI5Miw3IEBAIHN0YXRp
YyB2b2lkIGNsZWFyQ2xpcGJvYXJkQ29udGVudHNDYWxsYmFjayhHdGtDbGlwYm9hcmQqLCBncG9p
bnRlciB1c2VyRGF0YSkKICAgICAgICAgZGF0YS0+c2VsZWN0aW9uQ2xlYXJlZENhbGxiYWNrKCk7
CiB9CiAKLXZvaWQgUGFzdGVib2FyZEhlbHBlcjo6d3JpdGVDbGlwYm9hcmRDb250ZW50cyhHdGtD
bGlwYm9hcmQqIGNsaXBib2FyZCwgY29uc3QgU2VsZWN0aW9uRGF0YSYgc2VsZWN0aW9uLCBzdGQ6
OmZ1bmN0aW9uPHZvaWQoKT4mJiBwcmltYXJ5U2VsZWN0aW9uQ2xlYXJlZCkKK3ZvaWQgUGFzdGVi
b2FyZEhlbHBlcjo6d3JpdGVDbGlwYm9hcmRDb250ZW50cyhHdGtDbGlwYm9hcmQqIGNsaXBib2Fy
ZCwgY29uc3QgU2VsZWN0aW9uRGF0YSYgc2VsZWN0aW9uLCBXVEY6OkZ1bmN0aW9uPHZvaWQoKT4m
JiBwcmltYXJ5U2VsZWN0aW9uQ2xlYXJlZCkKIHsKICAgICBHUmVmUHRyPEd0a1RhcmdldExpc3Q+
IGxpc3QgPSB0YXJnZXRMaXN0Rm9yU2VsZWN0aW9uRGF0YShzZWxlY3Rpb24pOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGFzdGVib2FyZEhlbHBlci5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRIZWxwZXIuaAppbmRleCA0YTRkZTk5
NTZlZGU4ZjVlNWY3NmUyNWJmYTY0Zjg1NjNhNjNiNjg4Li4wOTVlZTRhZGQyMjg3OTlkYjc4ZjFh
ZGQxN2QxYzQ4MDcwZDA2MDY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
dGsvUGFzdGVib2FyZEhlbHBlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9Q
YXN0ZWJvYXJkSGVscGVyLmgKQEAgLTI2LDcgKzI2LDcgQEAKICNkZWZpbmUgUGFzdGVib2FyZEhl
bHBlcl9oCiAKICNpbmNsdWRlICJHUmVmUHRyR3RrLmgiCi0jaW5jbHVkZSA8ZnVuY3Rpb25hbD4K
KyNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4K
ICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL2dsaWIvR1JlZlB0ci5oPgpA
QCAtNDcsNyArNDcsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBmaWxsU2VsZWN0aW9uRGF0YShjb25z
dCBTZWxlY3Rpb25EYXRhJiwgdW5zaWduZWQsIEd0a1NlbGVjdGlvbkRhdGEqKTsKICAgICB2b2lk
IGZpbGxTZWxlY3Rpb25EYXRhKEd0a1NlbGVjdGlvbkRhdGEqLCB1bnNpZ25lZCwgU2VsZWN0aW9u
RGF0YSYpOwogICAgIFZlY3RvcjxHZGtBdG9tPiBkcm9wQXRvbXNGb3JDb250ZXh0KEd0a1dpZGdl
dCosIEdka0RyYWdDb250ZXh0Kik7Ci0gICAgdm9pZCB3cml0ZUNsaXBib2FyZENvbnRlbnRzKEd0
a0NsaXBib2FyZCosIGNvbnN0IFNlbGVjdGlvbkRhdGEmLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4m
JiBwcmltYXJ5U2VsZWN0aW9uQ2xlYXJlZCA9IG51bGxwdHIpOworICAgIHZvaWQgd3JpdGVDbGlw
Ym9hcmRDb250ZW50cyhHdGtDbGlwYm9hcmQqLCBjb25zdCBTZWxlY3Rpb25EYXRhJiwgV1RGOjpG
dW5jdGlvbjx2b2lkKCk+JiYgcHJpbWFyeVNlbGVjdGlvbkNsZWFyZWQgPSBudWxscHRyKTsKICAg
ICB2b2lkIGdldENsaXBib2FyZENvbnRlbnRzKEd0a0NsaXBib2FyZCosIFNlbGVjdGlvbkRhdGEm
KTsKIAogICAgIGVudW0gUGFzdGVib2FyZFRhcmdldFR5cGUgeyBUYXJnZXRUeXBlTWFya3VwLCBU
YXJnZXRUeXBlVGV4dCwgVGFyZ2V0VHlwZUltYWdlLCBUYXJnZXRUeXBlVVJJTGlzdCwgVGFyZ2V0
VHlwZU5ldHNjYXBlVVJMLCBUYXJnZXRUeXBlU21hcnRQYXN0ZSwgVGFyZ2V0VHlwZVVua25vd24g
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QbGF0Zm9ybVBhc3Rl
Ym9hcmRHdGsuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1BsYXRmb3JtUGFzdGVi
b2FyZEd0ay5jcHAKaW5kZXggODQ4MWNiODQyN2U1OTAxNDk4MTU5ZTYwYWI4OGJiZmNlMGQwNzcw
ZS4uZWJhM2UwMzc2MjE4OThmODc1MzU2MGZmZmNmZGRkYzZiZGU2MjMzYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1BsYXRmb3JtUGFzdGVib2FyZEd0ay5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1BsYXRmb3JtUGFzdGVib2FyZEd0ay5jcHAK
QEAgLTM0LDcgKzM0LDcgQEAgUGxhdGZvcm1QYXN0ZWJvYXJkOjpQbGF0Zm9ybVBhc3RlYm9hcmQo
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKICAgICBBU1NFUlQobV9jbGlwYm9hcmQpOwog
fQogCi12b2lkIFBsYXRmb3JtUGFzdGVib2FyZDo6d3JpdGVUb0NsaXBib2FyZChjb25zdCBTZWxl
Y3Rpb25EYXRhJiBzZWxlY3Rpb24sIHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiYmIHByaW1hcnlTZWxl
Y3Rpb25DbGVhcmVkKQordm9pZCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OndyaXRlVG9DbGlwYm9hcmQo
Y29uc3QgU2VsZWN0aW9uRGF0YSYgc2VsZWN0aW9uLCBXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJiBw
cmltYXJ5U2VsZWN0aW9uQ2xlYXJlZCkKIHsKICAgICBQYXN0ZWJvYXJkSGVscGVyOjpzaW5nbGV0
b24oKS53cml0ZUNsaXBib2FyZENvbnRlbnRzKG1fY2xpcGJvYXJkLCBzZWxlY3Rpb24sIGd0a19j
bGlwYm9hcmRfZ2V0KEdES19TRUxFQ1RJT05fUFJJTUFSWSkgPT0gbV9jbGlwYm9hcmQgPyBXVEZN
b3ZlKHByaW1hcnlTZWxlY3Rpb25DbGVhcmVkKSA6IG51bGxwdHIpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFW
S2l0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuSW50
ZXJmYWNlQVZLaXQuaAppbmRleCA4ZDNjNDczYzA2ZmE3ZDg0YTQ0Njk5YjA2MDIwMDIzZjdjYjgz
MGUwLi45OGI0ZGJkY2M4YjBkZWJhOWM4MDI4MDIzNDQ1Yzg3NGRhMTFmNzQ0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNl
QVZLaXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2Ny
ZWVuSW50ZXJmYWNlQVZLaXQuaApAQCAtMzQsOCArMzQsOCBAQAogI2luY2x1ZGUgIlBsYXRmb3Jt
TGF5ZXIuaCIKICNpbmNsdWRlICJXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdC5oIgog
I2luY2x1ZGUgIldlYlZpZGVvRnVsbHNjcmVlbk1vZGVsLmgiCi0jaW5jbHVkZSA8ZnVuY3Rpb25h
bD4KICNpbmNsdWRlIDxvYmpjL29iamMuaD4KKyNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KICNp
bmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNs
dWRlIDx3dGYvUmV0YWluUHRyLmg+CkBAIC0xMDEsNyArMTAxLDcgQEAgcHVibGljOgogICAgIEhU
TUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZSBtb2RlKCkgY29uc3QgeyBy
ZXR1cm4gbV9tb2RlOyB9CiAgICAgYm9vbCBhbGxvd3NQaWN0dXJlSW5QaWN0dXJlUGxheWJhY2so
KSBjb25zdCB7IHJldHVybiBtX2FsbG93c1BpY3R1cmVJblBpY3R1cmVQbGF5YmFjazsgfQogICAg
IFdFQkNPUkVfRVhQT1JUIGJvb2wgbWF5QXV0b21hdGljYWxseVNob3dWaWRlb1BpY3R1cmVJblBp
Y3R1cmUoKSBjb25zdDsKLSAgICB2b2lkIGZ1bGxzY3JlZW5NYXlSZXR1cm5Ub0lubGluZShzdGQ6
OmZ1bmN0aW9uPHZvaWQoYm9vbCk+IGNhbGxiYWNrKTsKKyAgICB2b2lkIGZ1bGxzY3JlZW5NYXlS
ZXR1cm5Ub0lubGluZShXVEY6OkZ1bmN0aW9uPHZvaWQoYm9vbCk+JiYgY2FsbGJhY2spOwogICAg
IGJvb2wgd2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQoKSBjb25zdDsKICAgICB2b2lkIGFw
cGxpY2F0aW9uRGlkQmVjb21lQWN0aXZlKCk7CiAKQEAgLTEzOCw3ICsxMzgsNyBAQCBwcm90ZWN0
ZWQ6CiAgICAgUmV0YWluUHRyPFVJV2luZG93PiBtX3BhcmVudFdpbmRvdzsKICAgICBSZXRhaW5Q
dHI8V2ViQVZQbGF5ZXJMYXllclZpZXc+IG1fcGxheWVyTGF5ZXJWaWV3OwogICAgIEhUTUxNZWRp
YUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZSBtX21vZGUgeyBIVE1MTWVkaWFFbGVt
ZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGVOb25lIH07Ci0gICAgc3RkOjpmdW5jdGlvbjx2
b2lkKGJvb2wpPiBtX3ByZXBhcmVUb0lubGluZUNhbGxiYWNrOworICAgIFdURjo6RnVuY3Rpb248
dm9pZChib29sKT4gbV9wcmVwYXJlVG9JbmxpbmVDYWxsYmFjazsKICAgICBSdW5Mb29wOjpUaW1l
cjxXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdD4gbV93YXRjaGRvZ1RpbWVyOwogICAg
IGJvb2wgbV9hbGxvd3NQaWN0dXJlSW5QaWN0dXJlUGxheWJhY2sgeyBmYWxzZSB9OwogICAgIGJv
b2wgbV9leGl0UmVxdWVzdGVkIHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5t
bQppbmRleCA2YmFiYzFlZDUyMGJiMjQ5MzViNWY5NmRiZGVhOTQ2MWY1MmVmZjU3Li43NmZmZmMy
MDA0OGRiZTQzYmRiNTQ4MTc4NjhiMmNhMzcyNzdjNjNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFj
ZUFWS2l0Lm1tCkBAIC04NDQsNyArODQ0LDcgQEAgdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRl
cmZhY2VBVktpdDo6cHJlcGFyZWRUb1JldHVyblRvSW5saW5lKGJvb2wgdmlzaWJsZSwgY28KICAg
ICAgICAgCiAgICAgICAgIFttX3BsYXllclZpZXdDb250cm9sbGVyIHZpZXddLmZyYW1lID0gW21f
cGFyZW50VmlldyBjb252ZXJ0UmVjdDppbmxpbmVSZWN0IHRvVmlldzpbbV9wbGF5ZXJWaWV3Q29u
dHJvbGxlciB2aWV3XS5zdXBlcnZpZXddOwogCi0gICAgICAgIHN0ZDo6ZnVuY3Rpb248dm9pZChi
b29sKT4gY2FsbGJhY2sgPSBXVEZNb3ZlKG1fcHJlcGFyZVRvSW5saW5lQ2FsbGJhY2spOworICAg
ICAgICBXVEY6OkZ1bmN0aW9uPHZvaWQoYm9vbCk+IGNhbGxiYWNrID0gV1RGTW92ZShtX3ByZXBh
cmVUb0lubGluZUNhbGxiYWNrKTsKICAgICAgICAgY2FsbGJhY2sodmlzaWJsZSk7CiAgICAgfQog
fQpAQCAtODU0LDkgKzg1NCw5IEBAIGJvb2wgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZL
aXQ6Om1heUF1dG9tYXRpY2FsbHlTaG93VmlkZW9QaWN0dXJlSW5QaWN0dXJlCiAgICAgcmV0dXJu
IFtwbGF5ZXJDb250cm9sbGVyKCkgaXNQbGF5aW5nXSAmJiBtX21vZGUgPT0gSFRNTE1lZGlhRWxl
bWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlU3RhbmRhcmQgJiYgc3VwcG9ydHNQaWN0dXJl
SW5QaWN0dXJlKCk7CiB9CiAKLXZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6
OmZ1bGxzY3JlZW5NYXlSZXR1cm5Ub0lubGluZShzdGQ6OmZ1bmN0aW9uPHZvaWQoYm9vbCk+IGNh
bGxiYWNrKQordm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6ZnVsbHNjcmVl
bk1heVJldHVyblRvSW5saW5lKFdURjo6RnVuY3Rpb248dm9pZChib29sKT4mJiBjYWxsYmFjaykK
IHsKLSAgICBtX3ByZXBhcmVUb0lubGluZUNhbGxiYWNrID0gY2FsbGJhY2s7CisgICAgbV9wcmVw
YXJlVG9JbmxpbmVDYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spOwogICAgIGlmIChtX2Z1bGxz
Y3JlZW5DaGFuZ2VPYnNlcnZlcikKICAgICAgICAgbV9mdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXIt
PmZ1bGxzY3JlZW5NYXlSZXR1cm5Ub0lubGluZSgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWFjL1Bvd2VyT2JzZXJ2ZXJNYWMuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWFjL1Bvd2VyT2JzZXJ2ZXJNYWMuY3BwCmluZGV4IDMyOTAyZmRhMDY4YWIxNmZm
M2U1ZTQwNzIzYjhmMjNiMTc1MWQ3NzYuLjhmMzdkZDcxZjA3NzRlMzg1YjY2OTYyOWNiZDJlMGQ1
ODRjNDY2YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9Qb3dlck9i
c2VydmVyTWFjLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUG93ZXJPYnNl
cnZlck1hYy5jcHAKQEAgLTMwLDggKzMwLDggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1Q
b3dlck9ic2VydmVyOjpQb3dlck9ic2VydmVyKGNvbnN0IHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiYg
cG93ZXJPbkhhbmRlcikKLSAgICA6IG1fcG93ZXJPbkhhbmRlcihwb3dlck9uSGFuZGVyKQorUG93
ZXJPYnNlcnZlcjo6UG93ZXJPYnNlcnZlcihXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJiBwb3dlck9u
SGFuZGVyKQorICAgIDogbV9wb3dlck9uSGFuZGVyKFdURk1vdmUocG93ZXJPbkhhbmRlcikpCiAg
ICAgLCBtX3Bvd2VyQ29ubmVjdGlvbigwKQogICAgICwgbV9ub3RpZmljYXRpb25Qb3J0KG51bGxw
dHIpCiAgICAgLCBtX25vdGlmaWVyUmVmZXJlbmNlKDApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tYWMvUG93ZXJPYnNlcnZlck1hYy5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWFjL1Bvd2VyT2JzZXJ2ZXJNYWMuaAppbmRleCA3NWZhOGI0MDEyOTBmZDM1YmZjNjVm
OTUyZWU1ODcxZWQxZDY2ZjlhLi5jYjk3YjVkZTVmNjVmYzc2ZGVjZGFmM2QwMTYzY2M1NDYxYTJk
MDljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUG93ZXJPYnNlcnZl
ck1hYy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9Qb3dlck9ic2VydmVyTWFj
LmgKQEAgLTI4LDcgKzI4LDcgQEAKIAogI2ltcG9ydCA8SU9LaXQvSU9NZXNzYWdlLmg+CiAjaW1w
b3J0IDxJT0tpdC9wd3JfbWd0L0lPUE1MaWIuaD4KLSNpbXBvcnQgPGZ1bmN0aW9uYWw+CisjaW1w
b3J0IDx3dGYvRnVuY3Rpb24uaD4KICNpbXBvcnQgPHd0Zi9Ob25jb3B5YWJsZS5oPgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CkBAIC0zNywxMyArMzcsMTMgQEAgY2xhc3MgUG93ZXJPYnNlcnZlciB7
CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUG93ZXJPYnNlcnZlcik7IFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogCiBwdWJsaWM6Ci0gICAgUG93ZXJPYnNlcnZlcihjb25zdCBzdGQ6OmZ1bmN0
aW9uPHZvaWQoKT4mIHBvd2VyT25IYW5kZXIpOworICAgIFBvd2VyT2JzZXJ2ZXIoV1RGOjpGdW5j
dGlvbjx2b2lkKCk+JiYgcG93ZXJPbkhhbmRlcik7CiAgICAgflBvd2VyT2JzZXJ2ZXIoKTsKIAog
cHJpdmF0ZToKICAgICB2b2lkIGRpZFJlY2VpdmVTeXN0ZW1Qb3dlck5vdGlmaWNhdGlvbihpb19z
ZXJ2aWNlX3QsIHVpbnQzMl90IG1lc3NhZ2VUeXBlLCB2b2lkKiBtZXNzYWdlQXJndW1lbnQpOwog
Ci0gICAgc3RkOjpmdW5jdGlvbjx2b2lkKCk+IG1fcG93ZXJPbkhhbmRlcjsKKyAgICBXVEY6OkZ1
bmN0aW9uPHZvaWQoKT4gbV9wb3dlck9uSGFuZGVyOwogICAgIGlvX2Nvbm5lY3RfdCBtX3Bvd2Vy
Q29ubmVjdGlvbjsKICAgICBJT05vdGlmaWNhdGlvblBvcnRSZWYgbV9ub3RpZmljYXRpb25Qb3J0
OwogICAgIGlvX29iamVjdF90IG1fbm90aWZpZXJSZWZlcmVuY2U7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29yZU5TVVJMRXh0cmFzLm1tIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVOU1VSTEV4dHJhcy5tbQppbmRleCA2ZmI2MDA1ZDNj
OWVmNzdlNjk3Yzk1MTU2OGY3NmZmODI3M2E1N2Y0Li5hZWQ2MDU3Y2E1Mjc2ZDNhNDNhMDIyYTYy
MTBiYTQ1MTEwMzlhZTgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMv
V2ViQ29yZU5TVVJMRXh0cmFzLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9X
ZWJDb3JlTlNVUkxFeHRyYXMubW0KQEAgLTMyLDcgKzMyLDcgQEAKICNpbXBvcnQgIldlYkNvcmVO
U1N0cmluZ0V4dHJhcy5oIgogI2ltcG9ydCAiV2ViQ29yZU5TVVJMRXh0cmFzLmgiCiAjaW1wb3J0
ICJXZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmgiCi0jaW1wb3J0IDxmdW5jdGlvbmFsPgorI2ltcG9y
dCA8d3RmL0Z1bmN0aW9uLmg+CiAjaW1wb3J0IDx3dGYvSGV4TnVtYmVyLmg+CiAjaW1wb3J0IDx3
dGYvT2JqY1J1bnRpbWVFeHRyYXMuaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KQEAgLTI3
MSw3ICsyNzEsNyBAQCBzdGF0aWMgQk9PTCBhbGxDaGFyYWN0ZXJzSW5JRE5TY3JpcHRXaGl0ZUxp
c3QoY29uc3QgVUNoYXIgKmJ1ZmZlciwgaW50MzJfdCBsZW5ndAogICAgIHJldHVybiBZRVM7CiB9
CiAKLXN0YXRpYyBib29sIGlzU2Vjb25kTGV2ZWxEb21haW5OYW1lQWxsb3dlZEJ5VExEUnVsZXMo
Y29uc3QgVUNoYXIqIGJ1ZmZlciwgaW50MzJfdCBsZW5ndGgsIGNvbnN0IHN0ZDo6ZnVuY3Rpb248
Ym9vbChVQ2hhcik+JiBjaGFyYWN0ZXJJc0FsbG93ZWQpCitzdGF0aWMgYm9vbCBpc1NlY29uZExl
dmVsRG9tYWluTmFtZUFsbG93ZWRCeVRMRFJ1bGVzKGNvbnN0IFVDaGFyKiBidWZmZXIsIGludDMy
X3QgbGVuZ3RoLCBjb25zdCBXVEY6OkZ1bmN0aW9uPGJvb2woVUNoYXIpPiYgY2hhcmFjdGVySXNB
bGxvd2VkKQogewogICAgIEFTU0VSVChsZW5ndGggPiAwKTsKIApAQCAtMjk0LDcgKzI5NCw3IEBA
IHN0YXRpYyBib29sIGlzU2Vjb25kTGV2ZWxEb21haW5OYW1lQWxsb3dlZEJ5VExEUnVsZXMoY29u
c3QgVUNoYXIqIGJ1ZmZlciwgaW50MzJfCiAgICAgeyBcCiAgICAgICAgIHN0YXRpYyBjb25zdCBp
bnQzMl90IHN1ZmZpeExlbmd0aCA9IHNpemVvZihzdWZmaXgpIC8gc2l6ZW9mKHN1ZmZpeFswXSk7
IFwKICAgICAgICAgaWYgKGxlbmd0aCA+IHN1ZmZpeExlbmd0aCAmJiAwID09IG1lbWNtcChidWZm
ZXIgKyBsZW5ndGggLSBzdWZmaXhMZW5ndGgsIHN1ZmZpeCwgc2l6ZW9mKHN1ZmZpeCkpKSBcCi0g
ICAgICAgICAgICByZXR1cm4gaXNTZWNvbmRMZXZlbERvbWFpbk5hbWVBbGxvd2VkQnlUTERSdWxl
cyhidWZmZXIsIGxlbmd0aCAtIHN1ZmZpeExlbmd0aCwgZnVuY3Rpb24pOyBcCisgICAgICAgICAg
ICByZXR1cm4gaXNTZWNvbmRMZXZlbERvbWFpbk5hbWVBbGxvd2VkQnlUTERSdWxlcyhidWZmZXIs
IGxlbmd0aCAtIHN1ZmZpeExlbmd0aCwgW10oVUNoYXIgYykgeyByZXR1cm4gZnVuY3Rpb24oYyk7
IH0pOyBcCiAgICAgfQogCiBzdGF0aWMgYm9vbCBpc1J1c3NpYW5Eb21haW5OYW1lQ2hhcmFjdGVy
KFVDaGFyIGNoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vQ2FwdHVyZURldmljZU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vQ2FwdHVyZURldmljZU1hbmFnZXIuY3BwCmluZGV4IDc1MDA1OTE3ODljODEzYmZk
Y2JlMjVmZWVjZWExZmYxZGQ5MDZiMGQuLjZlMDkxNjYxOGYyOTU1NDM2MGYxZDhlYmUxODdhYjhi
ZWRkMjUzZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L0NhcHR1cmVEZXZpY2VNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9DYXB0dXJlRGV2aWNlTWFuYWdlci5jcHAKQEAgLTExMyw3ICsxMTMsNyBAQCBz
dGF0aWMgQ2FwdHVyZURldmljZU1hbmFnZXI6Ok9ic2VydmVyVG9rZW4gbmV4dE9ic2VydmVyVG9r
ZW4oKQogICAgIHJldHVybiArK25leHRUb2tlbjsKIH0KIAotQ2FwdHVyZURldmljZU1hbmFnZXI6
Ok9ic2VydmVyVG9rZW4gQ2FwdHVyZURldmljZU1hbmFnZXI6OmFkZENhcHR1cmVEZXZpY2VDaGFu
Z2VkT2JzZXJ2ZXIoQ2FwdHVyZURldmljZUNoYW5nZWRDYWxsYmFjayBvYnNlcnZlcikKK0NhcHR1
cmVEZXZpY2VNYW5hZ2VyOjpPYnNlcnZlclRva2VuIENhcHR1cmVEZXZpY2VNYW5hZ2VyOjphZGRD
YXB0dXJlRGV2aWNlQ2hhbmdlZE9ic2VydmVyKENhcHR1cmVEZXZpY2VDaGFuZ2VkQ2FsbGJhY2sm
JiBvYnNlcnZlcikKIHsKICAgICBhdXRvIHRva2VuID0gbmV4dE9ic2VydmVyVG9rZW4oKTsKICAg
ICBtX29ic2VydmVycy5zZXQodG9rZW4sIFdURk1vdmUob2JzZXJ2ZXIpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL0NhcHR1cmVEZXZpY2VNYW5hZ2Vy
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9DYXB0dXJlRGV2aWNlTWFu
YWdlci5oCmluZGV4IGRmZjAwMjM1OTJlNGQxNTZhYjgxY2IzMWJlOGQxNWFkODhlY2E2NGQuLmRm
YzYwZDFjMjRlZDY5OWFiNjgwNTdmYTY1ODdlNjUxZjE1MDY5YzYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL0NhcHR1cmVEZXZpY2VNYW5hZ2VyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vQ2FwdHVyZURldmljZU1hbmFn
ZXIuaApAQCAtMzQsOSArMzQsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENhcHR1
cmVEZXZpY2VNYW5hZ2VyIHsKIHB1YmxpYzoKLSAgICB1c2luZyBDYXB0dXJlRGV2aWNlQ2hhbmdl
ZENhbGxiYWNrID0gc3RkOjpmdW5jdGlvbjx2b2lkKCk+OworICAgIHVzaW5nIENhcHR1cmVEZXZp
Y2VDaGFuZ2VkQ2FsbGJhY2sgPSBXVEY6OkZ1bmN0aW9uPHZvaWQoKT47CiAgICAgdXNpbmcgT2Jz
ZXJ2ZXJUb2tlbiA9IHVpbnQzMl90OwotICAgIHZpcnR1YWwgT2JzZXJ2ZXJUb2tlbiBhZGRDYXB0
dXJlRGV2aWNlQ2hhbmdlZE9ic2VydmVyKENhcHR1cmVEZXZpY2VDaGFuZ2VkQ2FsbGJhY2spOwor
ICAgIHZpcnR1YWwgT2JzZXJ2ZXJUb2tlbiBhZGRDYXB0dXJlRGV2aWNlQ2hhbmdlZE9ic2VydmVy
KENhcHR1cmVEZXZpY2VDaGFuZ2VkQ2FsbGJhY2smJik7CiAgICAgdmlydHVhbCB2b2lkIHJlbW92
ZUNhcHR1cmVEZXZpY2VDaGFuZ2VkT2JzZXJ2ZXIoT2JzZXJ2ZXJUb2tlbik7CiAKICAgICB2aXJ0
dWFsIFZlY3RvcjxDYXB0dXJlRGV2aWNlPiYgY2FwdHVyZURldmljZXMoKSA9IDA7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291
cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVk
aWFTb3VyY2UuY3BwCmluZGV4IDMzMjQ2YTAxY2RlODRhMzYyZTFjODY5MTU0MzZlYjIwYmM0MWU1
ZTcuLmIzODY2MjZhYjkzYWI0NGFjNGY4OGQzYzIyZTVlN2U3NTE1YjJkZmIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVk
aWFTb3VyY2UuY3BwCkBAIC04ODIsNyArODgyLDcgQEAgdm9pZCBSZWFsdGltZU1lZGlhU291cmNl
OjpzZXRFY2hvQ2FuY2VsbGF0aW9uKGJvb2wgZWNob0NhbmNlbGxhdGlvbikKICAgICBzZXR0aW5n
c0RpZENoYW5nZSgpOwogfQogCi12b2lkIFJlYWx0aW1lTWVkaWFTb3VyY2U6OnNjaGVkdWxlRGVm
ZXJyZWRUYXNrKHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiYmIGZ1bmN0aW9uKQordm9pZCBSZWFsdGlt
ZU1lZGlhU291cmNlOjpzY2hlZHVsZURlZmVycmVkVGFzayhXVEY6OkZ1bmN0aW9uPHZvaWQoKT4m
JiBmdW5jdGlvbikKIHsKICAgICBBU1NFUlQoZnVuY3Rpb24pOwogICAgIGNhbGxPbk1haW5UaHJl
YWQoW3dlYWtUaGlzID0gY3JlYXRlV2Vha1B0cigpLCBmdW5jdGlvbiA9IFdURk1vdmUoZnVuY3Rp
b24pXSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9S
ZWFsdGltZU1lZGlhU291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9SZWFsdGltZU1lZGlhU291cmNlLmgKaW5kZXggMDQxMGVlNWM3MjdmM2NmMmRlMGM5MjQwMjlj
Zjk1ZWEyNTIxZWRmOC4uNDAzOWM5NTNkYzk1ZWMzOWM3ZjkwNzA5YjFhZDBiZDdjYmU2MGRiZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVN
ZWRpYVNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1Jl
YWx0aW1lTWVkaWFTb3VyY2UuaApAQCAtMTkwLDggKzE5MCw4IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIGNvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXMmIGNhcGFiaWxpdGllcygp
IGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIGNvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5n
cyYgc2V0dGluZ3MoKSBjb25zdCA9IDA7CiAKLSAgICB1c2luZyBTdWNjZXNzSGFuZGxlciA9IHN0
ZDo6ZnVuY3Rpb248dm9pZCgpPjsKLSAgICB1c2luZyBGYWlsdXJlSGFuZGxlciA9IHN0ZDo6ZnVu
Y3Rpb248dm9pZChjb25zdCBTdHJpbmcmIGJhZENvbnN0cmFpbnQsIGNvbnN0IFN0cmluZyYgZXJy
b3JTdHJpbmcpPjsKKyAgICB1c2luZyBTdWNjZXNzSGFuZGxlciA9IFdURjo6RnVuY3Rpb248dm9p
ZCgpPjsKKyAgICB1c2luZyBGYWlsdXJlSGFuZGxlciA9IFdURjo6RnVuY3Rpb248dm9pZChjb25z
dCBTdHJpbmcmIGJhZENvbnN0cmFpbnQsIGNvbnN0IFN0cmluZyYgZXJyb3JTdHJpbmcpPjsKICAg
ICB2aXJ0dWFsIHZvaWQgYXBwbHlDb25zdHJhaW50cyhjb25zdCBNZWRpYUNvbnN0cmFpbnRzJiwg
U3VjY2Vzc0hhbmRsZXImJiwgRmFpbHVyZUhhbmRsZXImJik7CiAgICAgc3RkOjpvcHRpb25hbDxz
dGQ6OnBhaXI8U3RyaW5nLCBTdHJpbmc+PiBhcHBseUNvbnN0cmFpbnRzKGNvbnN0IE1lZGlhQ29u
c3RyYWludHMmKTsKIApAQCAtMjEyLDcgKzIxMiw3IEBAIHB1YmxpYzoKIHByb3RlY3RlZDoKICAg
ICBSZWFsdGltZU1lZGlhU291cmNlKGNvbnN0IFN0cmluZyYgaWQsIFR5cGUsIGNvbnN0IFN0cmlu
ZyYgbmFtZSk7CiAKLSAgICB2b2lkIHNjaGVkdWxlRGVmZXJyZWRUYXNrKHN0ZDo6ZnVuY3Rpb248
dm9pZCgpPiYmKTsKKyAgICB2b2lkIHNjaGVkdWxlRGVmZXJyZWRUYXNrKFdURjo6RnVuY3Rpb248
dm9pZCgpPiYmKTsKIAogICAgIHZpcnR1YWwgdm9pZCBiZWdpbkNvbmZpZ3VyYXRpb24oKSB7IH0K
ICAgICB2aXJ0dWFsIHZvaWQgY29tbWl0Q29uZmlndXJhdGlvbigpIHsgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vaW9zL0FWQXVkaW9TZXNzaW9uQ2Fw
dHVyZURldmljZU1hbmFnZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9pb3MvQVZBdWRpb1Nlc3Npb25DYXB0dXJlRGV2aWNlTWFuYWdlci5tbQppbmRleCBjYjAwOGNi
YmI5MWFiYjY5NWEwZTVlNzQ0NGZhNjA4Zjk0NzQ4MTJlLi4wZmRhMTNmMTFlMjdmNGViYTQ0YWIw
OWUwZWQ0OWU3ZWU4NDAxMzgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9pb3MvQVZBdWRpb1Nlc3Npb25DYXB0dXJlRGV2aWNlTWFuYWdlci5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9pb3MvQVZBdWRpb1Nlc3Npb25D
YXB0dXJlRGV2aWNlTWFuYWdlci5tbQpAQCAtNDAsMTggKzQwLDE4IEBAIFNPRlRfTElOS19DTEFT
UyhBVkZvdW5kYXRpb24sIEFWQXVkaW9TZXNzaW9uKQogdm9pZCogQXZhaWxhYmxlSW5wdXRzQ29u
dGV4dCA9ICZBdmFpbGFibGVJbnB1dHNDb250ZXh0OwogCiBAaW50ZXJmYWNlIFdlYkFWQXVkaW9T
ZXNzaW9uQXZhaWxhYmxlSW5wdXRzTGlzdGVuZXIgOiBOU09iamVjdCB7Ci0gICAgc3RkOjpmdW5j
dGlvbjx2b2lkKCk+IF9jYWxsYmFjazsKKyAgICBXVEY6OkZ1bmN0aW9uPHZvaWQoKT4gX2NhbGxi
YWNrOwogfQogQGVuZAogCiBAaW1wbGVtZW50YXRpb24gV2ViQVZBdWRpb1Nlc3Npb25BdmFpbGFi
bGVJbnB1dHNMaXN0ZW5lcgotLSAoaWQpaW5pdFdpdGhDYWxsYmFjazooc3RkOjpmdW5jdGlvbjx2
b2lkKCk+KWNhbGxiYWNrCistIChpZClpbml0V2l0aENhbGxiYWNrOihXVEY6OkZ1bmN0aW9uPHZv
aWQoKT4mJiljYWxsYmFjawogewogICAgIHNlbGYgPSBbc3VwZXIgaW5pdF07CiAgICAgaWYgKCFz
ZWxmKQogICAgICAgICByZXR1cm4gbmlsOwogCi0gICAgX2NhbGxiYWNrID0gY2FsbGJhY2s7Cisg
ICAgX2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayk7CiAgICAgcmV0dXJuIHNlbGY7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Db3Jl
QXVkaW9DYXB0dXJlU291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9tYWMvQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZS5oCmluZGV4IGNlMGJkZWUxNjgyNDcxMGU3MzRl
MDExZjkyNDRkYzlkNmVhZTc0MTUuLjhlODk3NDMyMzBhMDNiMGI3ZWExNWExNTZlYTZiZjJhNTM4
MjI3NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21h
Yy9Db3JlQXVkaW9DYXB0dXJlU291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vbWFjL0NvcmVBdWRpb0NhcHR1cmVTb3VyY2UuaApAQCAtNjEsNyArNjEsNyBA
QCBwdWJsaWM6CiAgICAgdm9pZCBhZGRFY2hvQ2FuY2VsbGF0aW9uU291cmNlKEF1ZGlvU2FtcGxl
RGF0YVNvdXJjZSYpOwogICAgIHZvaWQgcmVtb3ZlRWNob0NhbmNlbGxhdGlvblNvdXJjZShBdWRp
b1NhbXBsZURhdGFTb3VyY2UmKTsKIAotICAgIHVzaW5nIE1pY3JvcGhvbmVEYXRhQ2FsbGJhY2sg
PSBzdGQ6OmZ1bmN0aW9uPHZvaWQoY29uc3QgTWVkaWFUaW1lJiBzYW1wbGVUaW1lLCBjb25zdCBQ
bGF0Zm9ybUF1ZGlvRGF0YSYgYXVkaW9EYXRhLCBjb25zdCBBdWRpb1N0cmVhbURlc2NyaXB0aW9u
JiBkZXNjcmlwdGlvbiwgc2l6ZV90IHNhbXBsZUNvdW50KT47CisgICAgdXNpbmcgTWljcm9waG9u
ZURhdGFDYWxsYmFjayA9IFdURjo6RnVuY3Rpb248dm9pZChjb25zdCBNZWRpYVRpbWUmIHNhbXBs
ZVRpbWUsIGNvbnN0IFBsYXRmb3JtQXVkaW9EYXRhJiBhdWRpb0RhdGEsIGNvbnN0IEF1ZGlvU3Ry
ZWFtRGVzY3JpcHRpb24mIGRlc2NyaXB0aW9uLCBzaXplX3Qgc2FtcGxlQ291bnQpPjsKIAogICAg
IHVpbnQ2NF90IGFkZE1pY3JvcGhvbmVEYXRhQ29uc3VtZXIoTWljcm9waG9uZURhdGFDYWxsYmFj
ayYmKTsKICAgICB2b2lkIHJlbW92ZU1pY3JvcGhvbmVEYXRhQ29uc3VtZXIodWludDY0X3QpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9TY3JvbGxBbmltYXRvck1v
Y2suY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9TY3JvbGxBbmltYXRvck1vY2su
Y3BwCmluZGV4IGMwODAzODEwZWRkOGQ1Y2ZkZGFlNGI3NjQ5MWEzODc3NmIyNzZiZmIuLjUyMmFl
YjJhY2RiNTI4OTNhYWRjNjYyNDExNzlkMjU0ZWI0OWY4ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21vY2svU2Nyb2xsQW5pbWF0b3JNb2NrLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1Njcm9sbEFuaW1hdG9yTW9jay5jcHAKQEAgLTM2LDcgKzM2
LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1TY3JvbGxBbmltYXRvck1vY2s6OlNjcm9s
bEFuaW1hdG9yTW9jayhTY3JvbGxhYmxlQXJlYSYgc2Nyb2xsYWJsZUFyZWEsIHN0ZDo6ZnVuY3Rp
b248dm9pZChjb25zdCBTdHJpbmcmKT4mJiBsb2dnZXIpCitTY3JvbGxBbmltYXRvck1vY2s6OlNj
cm9sbEFuaW1hdG9yTW9jayhTY3JvbGxhYmxlQXJlYSYgc2Nyb2xsYWJsZUFyZWEsIFdURjo6RnVu
Y3Rpb248dm9pZChjb25zdCBTdHJpbmcmKT4mJiBsb2dnZXIpCiAgICAgOiBTY3JvbGxBbmltYXRv
cihzY3JvbGxhYmxlQXJlYSkKICAgICAsIG1fbG9nZ2VyKFdURk1vdmUobG9nZ2VyKSkKIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svU2Nyb2xsQW5pbWF0b3JNb2Nr
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1Njcm9sbEFuaW1hdG9yTW9jay5oCmlu
ZGV4IDg1ZGM0ZjZlZGMzZTViM2NjZTQ1Mzc4M2U2ZTBkM2Q5NTExMjRmN2QuLjIzMGI5YWYzMWQw
N2ZiMjgzYjY2YjFkOWYyNjZiODAxYWNmYzMyMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21vY2svU2Nyb2xsQW5pbWF0b3JNb2NrLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbW9jay9TY3JvbGxBbmltYXRvck1vY2suaApAQCAtNDAsNyArNDAsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAvLyB0aGUgaW50ZXJuYWwgc2V0dGluZyBlbmFibGVNb2NrU2Nyb2xs
QW5pbWF0b3IuCiBjbGFzcyBTY3JvbGxBbmltYXRvck1vY2sgZmluYWwgOiBwdWJsaWMgU2Nyb2xs
QW5pbWF0b3IgewogcHVibGljOgotICAgIFNjcm9sbEFuaW1hdG9yTW9jayhTY3JvbGxhYmxlQXJl
YSYsIHN0ZDo6ZnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcmKT4mJik7CisgICAgU2Nyb2xsQW5p
bWF0b3JNb2NrKFNjcm9sbGFibGVBcmVhJiwgV1RGOjpGdW5jdGlvbjx2b2lkKGNvbnN0IFN0cmlu
ZyYpPiYmKTsKICAgICB2aXJ0dWFsIH5TY3JvbGxBbmltYXRvck1vY2soKTsKIAogI2lmIEVOQUJM
RShSVUJCRVJfQkFORElORykKQEAgLTY4LDcgKzY4LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIG1v
dXNlRXhpdGVkU2Nyb2xsYmFyKFNjcm9sbGJhciopIGNvbnN0IG92ZXJyaWRlOwogICAgIHZvaWQg
bW91c2VJc0Rvd25JblNjcm9sbGJhcihTY3JvbGxiYXIqLCBib29sKSBjb25zdCBvdmVycmlkZTsK
IAotICAgIHN0ZDo6ZnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcmKT4gbV9sb2dnZXI7CisgICAg
V1RGOjpGdW5jdGlvbjx2b2lkKGNvbnN0IFN0cmluZyYpPiBtX2xvZ2dlcjsKICAgICBTY3JvbGxi
YXIqIG1fdmVydGljYWxTY3JvbGxiYXIgeyBudWxscHRyIH07CiAgICAgU2Nyb2xsYmFyKiBtX2hv
cml6b250YWxTY3JvbGxiYXIgeyBudWxscHRyIH07CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9Db29raWVTdG9yYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL0Nvb2tpZVN0b3JhZ2UuaAppbmRleCBjNTA1M2NjOTA1ZGI2ZTgxYmY2
ZjRlNWQ2OGY5ZjU4ODU2MDAyMzJjLi44MWVmY2JmMDA1ZTg0ZDUzYTUyNGM2M2RiNTMzNmJiYjcy
ZmM4NTlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Nvb2tp
ZVN0b3JhZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Nvb2tpZVN0
b3JhZ2UuaApAQCAtMjUsMTMgKzI1LDEzIEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSA8
ZnVuY3Rpb25hbD4KKyNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBjbGFzcyBOZXR3b3JrU3RvcmFnZVNlc3Npb247CiAKLVdFQkNPUkVfRVhQT1JUIHZv
aWQgc3RhcnRPYnNlcnZpbmdDb29raWVDaGFuZ2VzKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lv
biYsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4mJik7CitXRUJDT1JFX0VYUE9SVCB2b2lkIHN0YXJ0
T2JzZXJ2aW5nQ29va2llQ2hhbmdlcyhjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBXVEY6
OkZ1bmN0aW9uPHZvaWQgKCk+JiYpOwogV0VCQ09SRV9FWFBPUlQgdm9pZCBzdG9wT2JzZXJ2aW5n
Q29va2llQ2hhbmdlcyhjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mKTsKIAogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RhdGVOb3RpZmll
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdGF0ZU5vdGlm
aWVyLmNwcAppbmRleCA1NTc0YTM1ODM0Y2M2MDFmNTg2ZWVkNzk1MmM1YWE0ODExNmY4OWVmLi5h
ZDE1ZTVjZjNjM2ZkMTUyNmY3YTY0NDg1MDQwYjVkOTk4MmM5MzBkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdGF0ZU5vdGlmaWVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdGF0ZU5vdGlmaWVyLmNw
cApAQCAtNDgsNyArNDgsNyBAQCBOZXR3b3JrU3RhdGVOb3RpZmllciYgbmV0d29ya1N0YXRlTm90
aWZpZXIoKQogICAgIHJldHVybiBuZXR3b3JrU3RhdGVOb3RpZmllcjsKIH0KIAotdm9pZCBOZXR3
b3JrU3RhdGVOb3RpZmllcjo6YWRkTmV0d29ya1N0YXRlQ2hhbmdlTGlzdGVuZXIoc3RkOjpmdW5j
dGlvbjx2b2lkIChib29sKT4gbGlzdGVuZXIpCit2b2lkIE5ldHdvcmtTdGF0ZU5vdGlmaWVyOjph
ZGROZXR3b3JrU3RhdGVDaGFuZ2VMaXN0ZW5lcihXVEY6OkZ1bmN0aW9uPHZvaWQgKGJvb2wpPiYm
IGxpc3RlbmVyKQogewogICAgIEFTU0VSVChsaXN0ZW5lcik7CiAjaWYgUExBVEZPUk0oSU9TKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RhdGVO
b3RpZmllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RhdGVO
b3RpZmllci5oCmluZGV4IDUyODJlYzA2NmFiYmEyMzcxNzY4YTg0YWQ5YTJhNTIwNjBiZDM0MmYu
LmMzYTQyOTAzY2QwYjg5Y2E2MmExYjE4NTI2MTNlZWQwYWU4NmExODEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0YXRlTm90aWZpZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdGF0ZU5vdGlmaWVyLmgK
QEAgLTI2LDggKzI2LDggQEAKICNpZm5kZWYgTmV0d29ya1N0YXRlTm90aWZpZXJfaAogI2RlZmlu
ZSBOZXR3b3JrU3RhdGVOb3RpZmllcl9oCiAKLSNpbmNsdWRlIDxmdW5jdGlvbmFsPgogI2luY2x1
ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CisjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+CiAjaW5jbHVk
ZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCkBAIC01OSw3
ICs1OSw3IEBAIHB1YmxpYzoKICNpZiBQTEFURk9STShJT1MpCiAgICAgfk5ldHdvcmtTdGF0ZU5v
dGlmaWVyKCk7CiAjZW5kaWYKLSAgICB2b2lkIGFkZE5ldHdvcmtTdGF0ZUNoYW5nZUxpc3RlbmVy
KHN0ZDo6ZnVuY3Rpb248dm9pZCAoYm9vbCBpc09uTGluZSk+KTsKKyAgICB2b2lkIGFkZE5ldHdv
cmtTdGF0ZUNoYW5nZUxpc3RlbmVyKFdURjo6RnVuY3Rpb248dm9pZCAoYm9vbCBpc09uTGluZSk+
JiYpOwogCiAgICAgYm9vbCBvbkxpbmUoKSBjb25zdDsKIApAQCAtNjcsNyArNjcsNyBAQCBwcml2
YXRlOgogI2lmICFQTEFURk9STShJT1MpCiAgICAgYm9vbCBtX2lzT25MaW5lOwogI2VuZGlmCi0g
ICAgVmVjdG9yPHN0ZDo6ZnVuY3Rpb248dm9pZCAoYm9vbCk+PiBtX2xpc3RlbmVyczsKKyAgICBW
ZWN0b3I8V1RGOjpGdW5jdGlvbjx2b2lkIChib29sKT4+IG1fbGlzdGVuZXJzOwogCiAgICAgdm9p
ZCBub3RpZnlOZXR3b3JrU3RhdGVDaGFuZ2UoKSBjb25zdDsKICAgICB2b2lkIHVwZGF0ZVN0YXRl
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtT
dG9yYWdlU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdv
cmtTdG9yYWdlU2Vzc2lvbi5jcHAKaW5kZXggNTViZTljY2Y0MmE2ZmMxMWQxNTY3YmMwN2M0Zjkx
NDRhY2Y2M2JmMy4uOThkYTA4MmFlZTYzNDc4OTcwYmNlMDkzOTU2ZjMzYzE5OGE1NjUxMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNl
c3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0
b3JhZ2VTZXNzaW9uLmNwcApAQCAtNTAsNyArNTAsNyBAQCB2b2lkIE5ldHdvcmtTdG9yYWdlU2Vz
c2lvbjo6ZGVzdHJveVNlc3Npb24oU2Vzc2lvbklEIHNlc3Npb25JRCkKICAgICBnbG9iYWxTZXNz
aW9uTWFwKCkucmVtb3ZlKHNlc3Npb25JRCk7CiB9CiAKLXZvaWQgTmV0d29ya1N0b3JhZ2VTZXNz
aW9uOjpmb3JFYWNoKHN0ZDo6ZnVuY3Rpb248dm9pZChjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3Rv
cmFnZVNlc3Npb24mKT4gZnVuY3RvcikKK3ZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpmb3JF
YWNoKGNvbnN0IFdURjo6RnVuY3Rpb248dm9pZChjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFn
ZVNlc3Npb24mKT4mIGZ1bmN0b3IpCiB7CiAgICAgZnVuY3RvcihkZWZhdWx0U3RvcmFnZVNlc3Np
b24oKSk7CiAgICAgZm9yIChhdXRvJiBzdG9yYWdlU2Vzc2lvbiA6IGdsb2JhbFNlc3Npb25NYXAo
KS52YWx1ZXMoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
TmV0d29ya1N0b3JhZ2VTZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oCmluZGV4IGIwOTc2ZDk3NTIwNjI4OGU3MTRkYmMwZmNj
YjU2NDZiMzM3NTg5MTUuLjI4NTVjYjc5ZDIxNmE2Y2U0ZmQ4OGVkYTUzOTQzMjNiYzg3NDU3ZDEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3Jr
U3RvcmFnZVNlc3Npb24uaApAQCAtMjcsNyArMjcsNyBAQAogCiAjaW5jbHVkZSAiQ3JlZGVudGlh
bFN0b3JhZ2UuaCIKICNpbmNsdWRlICJTZXNzaW9uSUQuaCIKLSNpbmNsdWRlIDxmdW5jdGlvbmFs
PgorI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAj
aW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKQEAgLTYyLDcgKzYyLDcgQEAgcHVibGlj
OgogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIGVuc3VyZVByaXZhdGVCcm93c2luZ1Nl
c3Npb24oU2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIGlkZW50aWZpZXJCYXNlID0gU3RyaW5nKCkp
OwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIGVuc3VyZVNlc3Npb24oU2Vzc2lvbklE
LCBjb25zdCBTdHJpbmcmIGlkZW50aWZpZXJCYXNlID0gU3RyaW5nKCkpOwogICAgIFdFQkNPUkVf
RVhQT1JUIHN0YXRpYyB2b2lkIGRlc3Ryb3lTZXNzaW9uKFNlc3Npb25JRCk7Ci0gICAgV0VCQ09S
RV9FWFBPUlQgc3RhdGljIHZvaWQgZm9yRWFjaChzdGQ6OmZ1bmN0aW9uPHZvaWQoY29uc3QgV2Vi
Q29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJik+KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0
aWMgdm9pZCBmb3JFYWNoKGNvbnN0IFdURjo6RnVuY3Rpb248dm9pZChjb25zdCBXZWJDb3JlOjpO
ZXR3b3JrU3RvcmFnZVNlc3Npb24mKT4mKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2
b2lkIHN3aXRjaFRvTmV3VGVzdGluZ1Nlc3Npb24oKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Db29raWVTdG9yYWdlQ0ZOZXQuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Db29raWVTdG9yYWdlQ0ZOZXQuY3BwCmluZGV4
IDYxOWIwNzg5MDlkMzFiZDQ0YzEzY2NmYzkzMmEzY2RkZGJjOGNhNTMuLjZmNWY5MmViNzI5Yjkw
NzA5NjFkODNhY2ZiMmEzODFhN2ZkMGFmZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY2YvQ29va2llU3RvcmFnZUNGTmV0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0Nvb2tpZVN0b3JhZ2VDRk5ldC5jcHAKQEAgLTI3LDYg
KzI3LDcgQEAKICNpbmNsdWRlICJDb29raWVTdG9yYWdlLmgiCiAKICNpbmNsdWRlICJOZXR3b3Jr
U3RvcmFnZVNlc3Npb24uaCIKKyNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KICNpbmNsdWRlIDx3
dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5jbHVkZSA8d3Rm
L05ldmVyRGVzdHJveWVkLmg+CkBAIC00MywxNyArNDQsMTggQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiAjaWYgUExBVEZPUk0oV0lOKQogCi1zdGF0aWMgSGFzaE1hcDxDRkhUVFBDb29raWVTdG9y
YWdlUmVmLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+PiYgY29va2llQ2hhbmdlQ2FsbGJhY2tNYXAo
KQorc3RhdGljIEhhc2hNYXA8Q0ZIVFRQQ29va2llU3RvcmFnZVJlZiwgV1RGOjpGdW5jdGlvbjx2
b2lkICgpPj4mIGNvb2tpZUNoYW5nZUNhbGxiYWNrTWFwKCkKIHsKLSAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8SGFzaE1hcDxDRkhUVFBDb29raWVTdG9yYWdlUmVmLCBzdGQ6OmZ1bmN0aW9uPHZv
aWQgKCk+Pj4gbWFwOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoTWFwPENGSFRUUENv
b2tpZVN0b3JhZ2VSZWYsIFdURjo6RnVuY3Rpb248dm9pZCAoKT4+PiBtYXA7CiAgICAgcmV0dXJu
IG1hcDsKIH0KIAogc3RhdGljIHZvaWQgbm90aWZ5Q29va2llc0NoYW5nZWQoQ0ZIVFRQQ29va2ll
U3RvcmFnZVJlZiBjb29raWVTdG9yYWdlLCB2b2lkICopCiB7CiAgICAgY2FsbE9uTWFpblRocmVh
ZChbY29va2llU3RvcmFnZV0gewotICAgICAgICBpZiAoYXV0byBjYWxsYmFjayA9IGNvb2tpZUNo
YW5nZUNhbGxiYWNrTWFwKCkuZ2V0KGNvb2tpZVN0b3JhZ2UpKQotICAgICAgICAgICAgY2FsbGJh
Y2soKTsKKyAgICAgICAgYXV0byBpdCA9IGNvb2tpZUNoYW5nZUNhbGxiYWNrTWFwKCkuZmluZChj
b29raWVTdG9yYWdlKTsKKyAgICAgICAgaWYgKGl0ICE9IGNvb2tpZUNoYW5nZUNhbGxiYWNrTWFw
KCkuZW5kKCkpCisgICAgICAgICAgICBpdC0+dmFsdWUoKTsKICAgICB9KTsKIH0KIApAQCAtNjgs
NyArNzAsNyBAQCBzdGF0aWMgaW5saW5lIENGUnVuTG9vcFJlZiBjb29raWVTdG9yYWdlT2JzZXJ2
ZXJSdW5Mb29wKCkKICAgICByZXR1cm4gbG9hZGVyUnVuTG9vcCgpOwogfQogCi12b2lkIHN0YXJ0
T2JzZXJ2aW5nQ29va2llQ2hhbmdlcyhjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHN0b3Jh
Z2VTZXNzaW9uLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+JiYgY2FsbGJhY2spCit2b2lkIHN0YXJ0
T2JzZXJ2aW5nQ29va2llQ2hhbmdlcyhjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHN0b3Jh
Z2VTZXNzaW9uLCBXVEY6OkZ1bmN0aW9uPHZvaWQgKCk+JiYgY2FsbGJhY2spCiB7CiAgICAgQVNT
RVJUKGlzTWFpblRocmVhZCgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jZi9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsQ0ZOZXQuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsQ0ZOZXQuY3Bw
CmluZGV4IGVkNDEwOWFlNmQ3Njk4MDExZTM0ZTI1MmQyNjRmNjgxOTExOWM5ZmEuLjQxNzY4MDA4
ZDgzMTVjY2U5Y2FkNmM0NjJhNDBkNGQzMjFjY2ZlNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvU29ja2V0U3RyZWFtSGFuZGxlSW1wbENGTmV0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1NvY2tldFN0cmVhbUhhbmRs
ZUltcGxDRk5ldC5jcHAKQEAgLTE0NCw3ICsxNDQsNyBAQCBDRlN0cmluZ1JlZiBTb2NrZXRTdHJl
YW1IYW5kbGVJbXBsOjpjb3B5UEFDRXhlY3V0aW9uRGVzY3JpcHRpb24odm9pZCopCiAgICAgcmV0
dXJuIENGU1RSKCJXZWJTb2NrZXQgcHJveHkgUEFDIGZpbGUgZXhlY3V0aW9uIik7CiB9CiAKLXN0
YXRpYyB2b2lkIGNhbGxPbk1haW5UaHJlYWRBbmRXYWl0KHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiBm
dW5jdGlvbikKK3N0YXRpYyB2b2lkIGNhbGxPbk1haW5UaHJlYWRBbmRXYWl0KFdURjo6RnVuY3Rp
b248dm9pZCgpPiYmIGZ1bmN0aW9uKQogewogICAgIGlmIChpc01haW5UaHJlYWQoKSkgewogICAg
ICAgICBmdW5jdGlvbigpOwpAQCAtMTU2LDcgKzE1Niw3IEBAIHN0YXRpYyB2b2lkIGNhbGxPbk1h
aW5UaHJlYWRBbmRXYWl0KHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiBmdW5jdGlvbikKIAogICAgIGJv
b2wgaXNGaW5pc2hlZCA9IGZhbHNlOwogCi0gICAgY2FsbE9uTWFpblRocmVhZChbJl0geworICAg
IGNhbGxPbk1haW5UaHJlYWQoWyYsIGZ1bmN0aW9uID0gV1RGTW92ZShmdW5jdGlvbildIHsKICAg
ICAgICAgZnVuY3Rpb24oKTsKIAogICAgICAgICBzdGQ6OmxvY2tfZ3VhcmQ8TG9jaz4gbG9jayht
dXRleCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9D
b29raWVTdG9yYWdlTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMv
Q29va2llU3RvcmFnZU1hYy5tbQppbmRleCBlNzgyYjA2NmU0ZWE5Njg1YTQ4YWRiNzllODFlMDM4
NTA5ZGM0NmNiLi5lMTRlM2QxNDBmYjFkNTcyNWEyZTc2ZmM1NGU5OWRiY2Q5MTYzNGI1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9Db29raWVTdG9yYWdl
TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0Nvb2tpZVN0
b3JhZ2VNYWMubW0KQEAgLTIzLDE5ICsyMywyMCBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCiAgKi8KIAot
I2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkNvb2tpZVN0b3JhZ2UuaCIKKyNpbXBvcnQg
ImNvbmZpZy5oIgorI2ltcG9ydCAiQ29va2llU3RvcmFnZS5oIgogCiAjaW1wb3J0ICJXZWJDb3Jl
U3lzdGVtSW50ZXJmYWNlLmgiCisjaW1wb3J0IDx3dGYvRnVuY3Rpb24uaD4KIAogdXNpbmcgbmFt
ZXNwYWNlIFdlYkNvcmU7CiAKIEBpbnRlcmZhY2UgV2ViQ29va2llU3RvcmFnZU9iakNBZGFwdGVy
IDogTlNPYmplY3QgewotICAgIHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4gbV9jb29raWVDaGFuZ2VD
YWxsYmFjazsKKyAgICBXVEY6OkZ1bmN0aW9uPHZvaWQgKCk+IG1fY29va2llQ2hhbmdlQ2FsbGJh
Y2s7CiB9CiAtKHZvaWQpbm90aWZ5Q29va2llc0NoYW5nZWRPbk1haW5UaHJlYWQ7CiAtKHZvaWQp
Y29va2llc0NoYW5nZWROb3RpZmljYXRpb25IYW5kbGVyOihOU05vdGlmaWNhdGlvbiAqKW5vdGlm
aWNhdGlvbjsKLS0odm9pZClzdGFydExpc3RlbmluZ0ZvckNvb2tpZUNoYW5nZU5vdGlmaWNhdGlv
bnNXaXRoQ2FsbGJhY2s6KHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4mJiljYWxsYmFjazsKKy0odm9p
ZClzdGFydExpc3RlbmluZ0ZvckNvb2tpZUNoYW5nZU5vdGlmaWNhdGlvbnNXaXRoQ2FsbGJhY2s6
KFdURjo6RnVuY3Rpb248dm9pZCAoKT4mJiljYWxsYmFjazsKIC0odm9pZClzdG9wTGlzdGVuaW5n
Rm9yQ29va2llQ2hhbmdlTm90aWZpY2F0aW9uczsKIEBlbmQKIApAQCAtNTMsNyArNTQsNyBAQCAt
KHZvaWQpY29va2llc0NoYW5nZWROb3RpZmljYXRpb25IYW5kbGVyOihOU05vdGlmaWNhdGlvbiAq
KW5vdGlmaWNhdGlvbgogICAgIFtzZWxmIHBlcmZvcm1TZWxlY3Rvck9uTWFpblRocmVhZDpAc2Vs
ZWN0b3Iobm90aWZ5Q29va2llc0NoYW5nZWRPbk1haW5UaHJlYWQpIHdpdGhPYmplY3Q6bmlsIHdh
aXRVbnRpbERvbmU6RkFMU0VdOwogfQogCi0tKHZvaWQpc3RhcnRMaXN0ZW5pbmdGb3JDb29raWVD
aGFuZ2VOb3RpZmljYXRpb25zV2l0aENhbGxiYWNrOihzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+JiYp
Y2FsbGJhY2sKKy0odm9pZClzdGFydExpc3RlbmluZ0ZvckNvb2tpZUNoYW5nZU5vdGlmaWNhdGlv
bnNXaXRoQ2FsbGJhY2s6KFdURjo6RnVuY3Rpb248dm9pZCAoKT4mJiljYWxsYmFjawogewogICAg
IEFTU0VSVCghbV9jb29raWVDaGFuZ2VDYWxsYmFjayk7CiAgICAgbV9jb29raWVDaGFuZ2VDYWxs
YmFjayA9IFdURk1vdmUoY2FsbGJhY2spOwpAQCAtNzIsNyArNzMsNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIHN0YXRpYyBXZWJDb29raWVTdG9yYWdlT2JqQ0FkYXB0ZXIgKmNvb2tpZVN0b3Jh
Z2VBZGFwdGVyOwogCi12b2lkIHN0YXJ0T2JzZXJ2aW5nQ29va2llQ2hhbmdlcyhjb25zdCBOZXR3
b3JrU3RvcmFnZVNlc3Npb24mLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+JiYgY2FsbGJhY2spCit2
b2lkIHN0YXJ0T2JzZXJ2aW5nQ29va2llQ2hhbmdlcyhjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Np
b24mLCBXVEY6OkZ1bmN0aW9uPHZvaWQgKCk+JiYgY2FsbGJhY2spCiB7CiAgICAgaWYgKCFjb29r
aWVTdG9yYWdlQWRhcHRlcikKICAgICAgICAgY29va2llU3RvcmFnZUFkYXB0ZXIgPSBbW1dlYkNv
b2tpZVN0b3JhZ2VPYmpDQWRhcHRlciBhbGxvY10gaW5pdF07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvQ29va2llU3RvcmFnZVNvdXAuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0Nvb2tpZVN0b3JhZ2VTb3VwLmNwcApp
bmRleCBlYTZhNmIyOTI3ODA5MzViMTgzZGFjNmYxNDFkOTY5ZjNkNTMxYTBkLi40NWQ3YTkxMzA5
M2EzZDVmZDk2OTAyNzY3NzFmYTQwNGFjZjQwM2U0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvQ29va2llU3RvcmFnZVNvdXAuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Db29raWVTdG9yYWdlU291cC5jcHAKQEAg
LTIzLDcgKzIzLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi12b2lkIHN0YXJ0T2JzZXJ2
aW5nQ29va2llQ2hhbmdlcyhjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBzdGQ6OmZ1bmN0
aW9uPHZvaWQgKCk+JiYpCit2b2lkIHN0YXJ0T2JzZXJ2aW5nQ29va2llQ2hhbmdlcyhjb25zdCBO
ZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBXVEY6OkZ1bmN0aW9uPHZvaWQgKCk+JiYpCiB7CiAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL3NvdXAvU291cE5ldHdvcmtTZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb3VwTmV0d29ya1Nlc3Npb24uY3BwCmluZGV4IDdjMTdl
NjA0ZTc4YmI5NWI0ZGZhNDAwN2YwMTI2ZGUxMjliYWYzNGEuLmEzZDg0ODA4NDhlMzkxYWY4MjAy
MTA0ZjM2Y2FlOWM0ZGI1YjkxM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvc291cC9Tb3VwTmV0d29ya1Nlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb3VwTmV0d29ya1Nlc3Npb24uY3BwCkBAIC0yOTMsNyAr
MjkzLDcgQEAgdm9pZCBTb3VwTmV0d29ya1Nlc3Npb246OnNldFNob3VsZElnbm9yZVRMU0Vycm9y
cyhib29sIGlnbm9yZVRMU0Vycm9ycykKICAgICBnSWdub3JlVExTRXJyb3JzID0gaWdub3JlVExT
RXJyb3JzOwogfQogCi12b2lkIFNvdXBOZXR3b3JrU2Vzc2lvbjo6Y2hlY2tUTFNFcnJvcnMoU291
cFJlcXVlc3QqIHNvdXBSZXF1ZXN0LCBTb3VwTWVzc2FnZSogbWVzc2FnZSwgc3RkOjpmdW5jdGlv
bjx2b2lkIChjb25zdCBSZXNvdXJjZUVycm9yJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lk
IFNvdXBOZXR3b3JrU2Vzc2lvbjo6Y2hlY2tUTFNFcnJvcnMoU291cFJlcXVlc3QqIHNvdXBSZXF1
ZXN0LCBTb3VwTWVzc2FnZSogbWVzc2FnZSwgV1RGOjpGdW5jdGlvbjx2b2lkIChjb25zdCBSZXNv
dXJjZUVycm9yJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKGdJZ25vcmVUTFNF
cnJvcnMpIHsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9KTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb3VwTmV0d29ya1Nlc3Npb24uaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb3VwTmV0d29ya1Nlc3Npb24u
aAppbmRleCA5MDhiNmNiNmQ1ZTU0NmU4MjFmNmU3NDg5OGJlOGViZjFhZDk2YjQwLi5jZDgxMGYx
MjE1NzY5MWM3Y2VlYjI2ZDM3N2YxMTY4YWQyZGYzY2Q5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU291cE5ldHdvcmtTZXNzaW9uLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvdXBOZXR3b3JrU2Vzc2lvbi5oCkBA
IC0yNiw4ICsyNiw4IEBACiAjaWZuZGVmIFNvdXBOZXR3b3JrU2Vzc2lvbl9oCiAjZGVmaW5lIFNv
dXBOZXR3b3JrU2Vzc2lvbl9oCiAKLSNpbmNsdWRlIDxmdW5jdGlvbmFsPgogI2luY2x1ZGUgPGds
aWItb2JqZWN0Lmg+CisjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+CiAjaW5jbHVkZSA8d3RmL05v
bmNvcHlhYmxlLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi9nbGli
L0dSZWZQdHIuaD4KQEAgLTY1LDcgKzY1LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0QWNjZXB0
TGFuZ3VhZ2VzKGNvbnN0IENTdHJpbmcmKTsKIAogICAgIHN0YXRpYyB2b2lkIHNldFNob3VsZEln
bm9yZVRMU0Vycm9ycyhib29sKTsKLSAgICBzdGF0aWMgdm9pZCBjaGVja1RMU0Vycm9ycyhTb3Vw
UmVxdWVzdCosIFNvdXBNZXNzYWdlKiwgc3RkOjpmdW5jdGlvbjx2b2lkIChjb25zdCBSZXNvdXJj
ZUVycm9yJik+JiYpOworICAgIHN0YXRpYyB2b2lkIGNoZWNrVExTRXJyb3JzKFNvdXBSZXF1ZXN0
KiwgU291cE1lc3NhZ2UqLCBXVEY6OkZ1bmN0aW9uPHZvaWQgKGNvbnN0IFJlc291cmNlRXJyb3Im
KT4mJik7CiAgICAgc3RhdGljIHZvaWQgYWxsb3dTcGVjaWZpY0hUVFBTQ2VydGlmaWNhdGVGb3JI
b3N0KGNvbnN0IENlcnRpZmljYXRlSW5mbyYsIGNvbnN0IFN0cmluZyYgaG9zdCk7CiAKICAgICBz
dGF0aWMgdm9pZCBzZXRDdXN0b21Qcm90b2NvbFJlcXVlc3RUeXBlKEdUeXBlKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2UuY3BwCmluZGV4IDg2YzRkN2E4
Mjk0ZjliYjk5Mjg3Nzk0MjY1YjZjY2FiNjI0M2Q1ZTkuLjc1NWRlNzlmNTExNjk5ODY4NzQzNDA3
ZmJhZmZmMmRmMWRiODQ4ODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Nx
bC9TUUxpdGVEYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NR
TGl0ZURhdGFiYXNlLmNwcApAQCAtNTE2LDE5ICs1MTYsMTkgQEAgYm9vbCBTUUxpdGVEYXRhYmFz
ZTo6dHVybk9uSW5jcmVtZW50YWxBdXRvVmFjdXVtKCkKIAogc3RhdGljIHZvaWQgZGVzdHJveUNv
bGxhdGlvbkZ1bmN0aW9uKHZvaWQqIGFyZykKIHsKLSAgICBhdXRvIGYgPSBzdGF0aWNfY2FzdDxz
dGQ6OmZ1bmN0aW9uPGludChpbnQsIGNvbnN0IHZvaWQqLCBpbnQsIGNvbnN0IHZvaWQqKT4qPihh
cmcpOworICAgIGF1dG8gZiA9IHN0YXRpY19jYXN0PFdURjo6RnVuY3Rpb248aW50KGludCwgY29u
c3Qgdm9pZCosIGludCwgY29uc3Qgdm9pZCopPio+KGFyZyk7CiAgICAgZGVsZXRlIGY7CiB9CiAK
IHN0YXRpYyBpbnQgY2FsbENvbGxhdGlvbkZ1bmN0aW9uKHZvaWQqIGFyZywgaW50IGFMZW5ndGgs
IGNvbnN0IHZvaWQqIGEsIGludCBiTGVuZ3RoLCBjb25zdCB2b2lkKiBiKQogewotICAgIGF1dG8g
ZiA9IHN0YXRpY19jYXN0PHN0ZDo6ZnVuY3Rpb248aW50KGludCwgY29uc3Qgdm9pZCosIGludCwg
Y29uc3Qgdm9pZCopPio+KGFyZyk7CisgICAgYXV0byBmID0gc3RhdGljX2Nhc3Q8V1RGOjpGdW5j
dGlvbjxpbnQoaW50LCBjb25zdCB2b2lkKiwgaW50LCBjb25zdCB2b2lkKik+Kj4oYXJnKTsKICAg
ICByZXR1cm4gKCpmKShhTGVuZ3RoLCBhLCBiTGVuZ3RoLCBiKTsKIH0KIAotdm9pZCBTUUxpdGVE
YXRhYmFzZTo6c2V0Q29sbGF0aW9uRnVuY3Rpb24oY29uc3QgU3RyaW5nJiBjb2xsYXRpb25OYW1l
LCBzdGQ6OmZ1bmN0aW9uPGludChpbnQsIGNvbnN0IHZvaWQqLCBpbnQsIGNvbnN0IHZvaWQqKT4g
Y29sbGF0aW9uRnVuY3Rpb24pCit2b2lkIFNRTGl0ZURhdGFiYXNlOjpzZXRDb2xsYXRpb25GdW5j
dGlvbihjb25zdCBTdHJpbmcmIGNvbGxhdGlvbk5hbWUsIFdURjo6RnVuY3Rpb248aW50KGludCwg
Y29uc3Qgdm9pZCosIGludCwgY29uc3Qgdm9pZCopPiYmIGNvbGxhdGlvbkZ1bmN0aW9uKQogewot
ICAgIGF1dG8gZnVuY3Rpb25PYmplY3QgPSBuZXcgc3RkOjpmdW5jdGlvbjxpbnQoaW50LCBjb25z
dCB2b2lkKiwgaW50LCBjb25zdCB2b2lkKik+KGNvbGxhdGlvbkZ1bmN0aW9uKTsKKyAgICBhdXRv
IGZ1bmN0aW9uT2JqZWN0ID0gbmV3IFdURjo6RnVuY3Rpb248aW50KGludCwgY29uc3Qgdm9pZCos
IGludCwgY29uc3Qgdm9pZCopPihXVEZNb3ZlKGNvbGxhdGlvbkZ1bmN0aW9uKSk7CiAgICAgc3Fs
aXRlM19jcmVhdGVfY29sbGF0aW9uX3YyKG1fZGIsIGNvbGxhdGlvbk5hbWUudXRmOCgpLmRhdGEo
KSwgU1FMSVRFX1VURjgsIGZ1bmN0aW9uT2JqZWN0LCBjYWxsQ29sbGF0aW9uRnVuY3Rpb24sIGRl
c3Ryb3lDb2xsYXRpb25GdW5jdGlvbik7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
c3FsL1NRTGl0ZURhdGFiYXNlLmgKaW5kZXggZWU5YmEyYmUxZTI1MDQ1ZjljM2E2MTVlNjZlNzdi
ZmY3NTNjNDI4OC4uMzRkYjY5NGNjMzNjZjJlMDYxNWY4YzY2ZTE1YjFjMTljYzkxYjk5OSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlLmgKQEAgLTEyNSw3
ICsxMjUsNyBAQCBwdWJsaWM6CiAgICAgZW51bSBBdXRvVmFjdXVtUHJhZ21hIHsgQXV0b1ZhY3V1
bU5vbmUgPSAwLCBBdXRvVmFjdXVtRnVsbCA9IDEsIEF1dG9WYWN1dW1JbmNyZW1lbnRhbCA9IDIg
fTsKICAgICBib29sIHR1cm5PbkluY3JlbWVudGFsQXV0b1ZhY3V1bSgpOwogCi0gICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBzZXRDb2xsYXRpb25GdW5jdGlvbihjb25zdCBTdHJpbmcmIGNvbGxhdGlv
bk5hbWUsIHN0ZDo6ZnVuY3Rpb248aW50KGludCwgY29uc3Qgdm9pZCosIGludCwgY29uc3Qgdm9p
ZCopPik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRDb2xsYXRpb25GdW5jdGlvbihjb25z
dCBTdHJpbmcmIGNvbGxhdGlvbk5hbWUsIFdURjo6RnVuY3Rpb248aW50KGludCwgY29uc3Qgdm9p
ZCosIGludCwgY29uc3Qgdm9pZCopPiYmKTsKICAgICB2b2lkIHJlbW92ZUNvbGxhdGlvbkZ1bmN0
aW9uKGNvbnN0IFN0cmluZyYgY29sbGF0aW9uTmFtZSk7CiAKICAgICAvLyBTZXQgdGhpcyBmbGFn
IHRvIGFsbG93IGFjY2VzcyBmcm9tIG11bHRpcGxlIHRocmVhZHMuICBOb3QgYWxsIG11bHRpLXRo
cmVhZGVkIGFjY2Vzc2VzIGFyZSBzYWZlIQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTGF5ZXJCYWNraW5nLmNwcAppbmRleCA0NmJhZWQxMDM0YjI0ZTYzYjU4ZTM5NzY0ZDk3
MzcxYTdhNGY5MjkzLi4yOThiZTAyZDhkMWViZjczZDc0MjlhYTE3ZWM4ZWEwYzYwYWRmMjNjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcApA
QCAtMjA4OSw3ICsyMDg5LDcgQEAgYm9vbCBSZW5kZXJMYXllckJhY2tpbmc6OmlzU2ltcGxlQ29u
dGFpbmVyQ29tcG9zaXRpbmdMYXllcihQYWludGVkQ29udGVudHNJbmZvJgogLy8gUmV0dXJuaW5n
IHRydWUgc3RvcHMgdGhlIHRyYXZlcnNhbC4KIGVudW0gY2xhc3MgTGF5ZXJUcmF2ZXJzYWwgeyBD
b250aW51ZSwgU3RvcCB9OwogCi1zdGF0aWMgTGF5ZXJUcmF2ZXJzYWwgdHJhdmVyc2VWaXNpYmxl
Tm9uQ29tcG9zaXRlZERlc2NlbmRhbnRMYXllcnMoUmVuZGVyTGF5ZXImIHBhcmVudCwgc3RkOjpm
dW5jdGlvbjxMYXllclRyYXZlcnNhbCAoY29uc3QgUmVuZGVyTGF5ZXImKT4gbGF5ZXJGdW5jKQor
c3RhdGljIExheWVyVHJhdmVyc2FsIHRyYXZlcnNlVmlzaWJsZU5vbkNvbXBvc2l0ZWREZXNjZW5k
YW50TGF5ZXJzKFJlbmRlckxheWVyJiBwYXJlbnQsIGNvbnN0IFdURjo6RnVuY3Rpb248TGF5ZXJU
cmF2ZXJzYWwgKGNvbnN0IFJlbmRlckxheWVyJik+JiBsYXllckZ1bmMpCiB7CiAgICAgLy8gRklY
TUU6IFdlIHNob3VsZG4ndCBiZSBjYWxsZWQgd2l0aCBhIHN0YWxlIHotb3JkZXIgbGlzdHMuIFNl
ZSBidWcgODU1MTIuCiAgICAgcGFyZW50LnVwZGF0ZUxheWVyTGlzdHNJZk5lZWRlZCgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guY3BwCmluZGV4IGNjYTQ3NDg2NDIx
OGYwYjc4MzQ5OWE5N2UzNDRlZDk0YWM5Y2M4ZTUuLjM1YThkNjRhYmE4M2MxZmYyYjgyYjhmN2Jl
MzIxM2ExYTRhNzdkOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMaXN0Qm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJv
eC5jcHAKQEAgLTI4Niw3ICsyODYsNyBAQCBMYXlvdXRSZWN0IFJlbmRlckxpc3RCb3g6Oml0ZW1C
b3VuZGluZ0JveFJlY3QoY29uc3QgTGF5b3V0UG9pbnQmIGFkZGl0aW9uYWxPZmZzZQogICAgIHJl
dHVybiBMYXlvdXRSZWN0KHgsIHksIGNvbnRlbnRXaWR0aCgpLCBpdGVtSGVpZ2h0KCkpOwogfQog
Ci12b2lkIFJlbmRlckxpc3RCb3g6OnBhaW50SXRlbShQYWludEluZm8mIHBhaW50SW5mbywgY29u
c3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0LCBQYWludEZ1bmN0aW9uIHBhaW50RnVuY3Rpb24p
Cit2b2lkIFJlbmRlckxpc3RCb3g6OnBhaW50SXRlbShQYWludEluZm8mIHBhaW50SW5mbywgY29u
c3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0LCBjb25zdCBQYWludEZ1bmN0aW9uJiBwYWludEZ1
bmN0aW9uKQogewogICAgIGludCBsaXN0SXRlbXNTaXplID0gbnVtSXRlbXMoKTsKICAgICBpbnQg
Zmlyc3RWaXNpYmxlSXRlbSA9IG1faW5kZXhPZkZpcnN0VmlzaWJsZUl0ZW1JbnNpZGVQYWRkaW5n
VG9wQXJlYS52YWx1ZV9vcihtX2luZGV4T2Zmc2V0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTGlzdEJveC5oCmluZGV4IGIxNjU0ZGZiNjMzYzgyZWE5MTI0ZDMxM2M0YmViZGU4ZTA3
NDdiYTIuLjI0ODk4Y2RkYjQ3NjQ2ODI5MjFiOGFkZmQ2ZTBkNjJmYzljZTEzNGYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guaApAQCAtMTQzLDggKzE0Myw4IEBAIHBy
aXZhdGU6CiAgICAgLy8gTk9URTogVGhpcyBzaG91bGQgb25seSBiZSBjYWxsZWQgYnkgdGhlIG92
ZXJyaWRlbiBzZXRTY3JvbGxPZmZzZXQgZnJvbSBTY3JvbGxhYmxlQXJlYS4KICAgICB2b2lkIHNj
cm9sbFRvKGludCBuZXdPZmZzZXQpOwogCi0gICAgdXNpbmcgUGFpbnRGdW5jdGlvbiA9IHN0ZDo6
ZnVuY3Rpb248dm9pZChQYWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYsIGludCBsaXN0SXRl
bUluZGV4KT47Ci0gICAgdm9pZCBwYWludEl0ZW0oUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9p
bnQmLCBQYWludEZ1bmN0aW9uKTsKKyAgICB1c2luZyBQYWludEZ1bmN0aW9uID0gV1RGOjpGdW5j
dGlvbjx2b2lkKFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50JiwgaW50IGxpc3RJdGVtSW5k
ZXgpPjsKKyAgICB2b2lkIHBhaW50SXRlbShQYWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYs
IGNvbnN0IFBhaW50RnVuY3Rpb24mKTsKIAogICAgIHZvaWQgc2V0SGFzVmVydGljYWxTY3JvbGxi
YXIoYm9vbCBoYXNTY3JvbGxiYXIpOwogICAgIFJlZjxTY3JvbGxiYXI+IGNyZWF0ZVNjcm9sbGJh
cigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlv
dXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXQuY3BwCmlu
ZGV4IDIzYjI2MmFiOGFhMmEyN2NkYjcwZWE4Yzk4MGExMDMwMzRhYWEyMDcuLjQ0M2ExYWZkNjNh
MzNhMjM5OWNkMTBiNzVlNWZiMTQ0MzEwODJiOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvU2ltcGxlTGluZUxheW91dC5jcHAKQEAgLTI1NCw5ICsyNTQsOSBAQCBBdm9pZGFuY2VS
ZWFzb25GbGFncyBjYW5Vc2VGb3JXaXRoUmVhc29uKGNvbnN0IFJlbmRlckJsb2NrRmxvdyYgZmxv
dywgSW5jbHVkZVJlYQogI2lmbmRlZiBOREVCVUcKICAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcg
b25jZUZsYWc7CiAgICAgc3RkOjpjYWxsX29uY2Uob25jZUZsYWcsIFtdIHsKLSAgICAgICAgcmVn
aXN0ZXJOb3RpZnlDYWxsYmFjaygiY29tLmFwcGxlLldlYktpdC5zaG93U2ltcGxlTGluZUxheW91
dENvdmVyYWdlIiwgcHJpbnRTaW1wbGVMaW5lTGF5b3V0Q292ZXJhZ2UpOwotICAgICAgICByZWdp
c3Rlck5vdGlmeUNhbGxiYWNrKCJjb20uYXBwbGUuV2ViS2l0LnNob3dTaW1wbGVMaW5lTGF5b3V0
UmVhc29ucyIsIHByaW50U2ltcGxlTGluZUxheW91dEJsb2NrTGlzdCk7Ci0gICAgICAgIHJlZ2lz
dGVyTm90aWZ5Q2FsbGJhY2soImNvbS5hcHBsZS5XZWJLaXQudG9nZ2xlU2ltcGxlTGluZUxheW91
dCIsIHRvZ2dsZVNpbXBsZUxpbmVMYXlvdXQpOworICAgICAgICByZWdpc3Rlck5vdGlmeUNhbGxi
YWNrKCJjb20uYXBwbGUuV2ViS2l0LnNob3dTaW1wbGVMaW5lTGF5b3V0Q292ZXJhZ2UiLCBbXSB7
IHByaW50U2ltcGxlTGluZUxheW91dENvdmVyYWdlKCk7IH0pOworICAgICAgICByZWdpc3Rlck5v
dGlmeUNhbGxiYWNrKCJjb20uYXBwbGUuV2ViS2l0LnNob3dTaW1wbGVMaW5lTGF5b3V0UmVhc29u
cyIsIFtdIHsgcHJpbnRTaW1wbGVMaW5lTGF5b3V0QmxvY2tMaXN0KCk7IH0pOworICAgICAgICBy
ZWdpc3Rlck5vdGlmeUNhbGxiYWNrKCJjb20uYXBwbGUuV2ViS2l0LnRvZ2dsZVNpbXBsZUxpbmVM
YXlvdXQiLCBbXSB7IHRvZ2dsZVNpbXBsZUxpbmVMYXlvdXQoKTsgfSk7CiAgICAgfSk7CiAjZW5k
aWYKICAgICBBdm9pZGFuY2VSZWFzb25GbGFncyByZWFzb25zID0geyB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2xpbmUvQnJlYWtpbmdDb250ZXh0LmggYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvbGluZS9CcmVha2luZ0NvbnRleHQuaAppbmRleCAxMjZmZDNkNGVj
Zjk5ZDA0MzRiYTcxMzJhNTc5YmY0NTE4ZmRiOGExLi4yZDgzZjA3N2ExYmNiNjE2YzY5MmMwNTVj
NzdiODdmNGYxYzc1ZjBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbGlu
ZS9CcmVha2luZ0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbGluZS9C
cmVha2luZ0NvbnRleHQuaApAQCAtMzgsNiArMzgsNyBAQAogI2luY2x1ZGUgIlJlbmRlclJ1YnlS
dW4uaCIKICNpbmNsdWRlICJSZW5kZXJTVkdJbmxpbmVUZXh0LmgiCiAjaW5jbHVkZSAiVHJhaWxp
bmdPYmplY3RzLmgiCisjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+CiAjaW5jbHVkZSA8d3RmL09w
dGlvbmFsLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nVmlldy5oPgogI2luY2x1ZGUgPHd0
Zi91bmljb2RlL0NoYXJhY3Rlck5hbWVzLmg+CkBAIC0xOTEsNyArMTkyLDcgQEAgcHJpdmF0ZToK
ICAgICAgICAgICAgIHRoaXMtPmFwcGVuZChpbml0aWFsKTsKICAgICAgICAgfQogCi0gICAgICAg
IHZvaWQgcHVzaChzdGQ6OmZ1bmN0aW9uPHZvaWQoSW5saW5lSXRlcmF0b3ImIG1vZGlmeU1lKT4g
dXBkYXRlcikKKyAgICAgICAgdm9pZCBwdXNoKGNvbnN0IFdURjo6RnVuY3Rpb248dm9pZChJbmxp
bmVJdGVyYXRvciYgbW9kaWZ5TWUpPiYgdXBkYXRlcikKICAgICAgICAgewogICAgICAgICAgICAg
QVNTRVJUKCF0aGlzLT5pc0VtcHR5KCkpOwogICAgICAgICAgICAgaWYgKG1fY2FwYWNpdHkgIT0g
MSkKQEAgLTIwMSw3ICsyMDIsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIHRoaXMtPnJl
c2l6ZShtX2NhcGFjaXR5KTsKICAgICAgICAgfQogCi0gICAgICAgIHZvaWQgdXBkYXRlKHN0ZDo6
ZnVuY3Rpb248dm9pZChJbmxpbmVJdGVyYXRvciYgbW9kaWZ5TWUpPiB1cGRhdGVyKQorICAgICAg
ICB2b2lkIHVwZGF0ZShjb25zdCBXVEY6OkZ1bmN0aW9uPHZvaWQoSW5saW5lSXRlcmF0b3ImIG1v
ZGlmeU1lKT4mIHVwZGF0ZXIpCiAgICAgICAgIHsKICAgICAgICAgICAgIEFTU0VSVCghdGhpcy0+
aXNFbXB0eSgpKTsKICAgICAgICAgICAgIHVwZGF0ZXIodGhpcy0+YXQoMCkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9Xb3JrZXIuY3BwCmluZGV4IDljOTg3NWYwZjU3Nzg2YWYyYmRmM2ZmODNmNWI3NGYyOGEx
YmEyMTMuLjY2ZThkYWZhOTg3ODc3MTE2ODYzNTEzMjQ3NmU0YTcwNDViZDEzM2QgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL1dvcmtlci5jcHAKQEAgLTU5LDcgKzU5LDcgQEAgaW5saW5lIFdvcmtlcjo6V29y
a2VyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIEpTQzo6UnVudGltZUZsYWdzIHJ1
bnRpbWUKIHsKICAgICBpZiAoIWFsbFdvcmtlcnMpIHsKICAgICAgICAgYWxsV29ya2VycyA9IG5l
dyBIYXNoU2V0PFdvcmtlcio+OwotICAgICAgICBuZXR3b3JrU3RhdGVOb3RpZmllcigpLmFkZE5l
dHdvcmtTdGF0ZUNoYW5nZUxpc3RlbmVyKG5ldHdvcmtTdGF0ZUNoYW5nZWQpOworICAgICAgICBu
ZXR3b3JrU3RhdGVOb3RpZmllcigpLmFkZE5ldHdvcmtTdGF0ZUNoYW5nZUxpc3RlbmVyKFtdIChi
b29sIGlzT25MaW5lKSB7IG5ldHdvcmtTdGF0ZUNoYW5nZWQoaXNPbkxpbmUpOyB9KTsKICAgICB9
CiAKICAgICBhdXRvIGFkZFJlc3VsdCA9IGFsbFdvcmtlcnMtPmFkZCh0aGlzKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyUnVuTG9vcC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL1dvcmtlclJ1bkxvb3AuY3BwCmluZGV4IDY0YzJlZjQ1YzRmZDU5MGY1ODFk
MzBmMzgwMTllYzZlNjA2MzZlMWMuLjIzNjFiZjc0NWFhYjU0ZjU5MTM2MDczOTI3NjliNjJhZGIz
ZTBiY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyUnVuTG9vcC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJSdW5Mb29wLmNwcApAQCAtNTAs
NyArNTAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBXb3JrZXJTaGFyZWRUaW1lciBm
aW5hbCA6IHB1YmxpYyBTaGFyZWRUaW1lciB7CiBwdWJsaWM6CiAgICAgLy8gU2hhcmVkVGltZXIg
aW50ZXJmYWNlLgotICAgIHZvaWQgc2V0RmlyZWRGdW5jdGlvbihzdGQ6OmZ1bmN0aW9uPHZvaWQo
KT4mJiBmdW5jdGlvbikgb3ZlcnJpZGUgeyBtX3NoYXJlZFRpbWVyRnVuY3Rpb24gPSBXVEZNb3Zl
KGZ1bmN0aW9uKTsgfQorICAgIHZvaWQgc2V0RmlyZWRGdW5jdGlvbihXVEY6OkZ1bmN0aW9uPHZv
aWQoKT4mJiBmdW5jdGlvbikgb3ZlcnJpZGUgeyBtX3NoYXJlZFRpbWVyRnVuY3Rpb24gPSBXVEZN
b3ZlKGZ1bmN0aW9uKTsgfQogICAgIHZvaWQgc2V0RmlyZUludGVydmFsKFNlY29uZHMgaW50ZXJ2
YWwpIG92ZXJyaWRlIHsgbV9uZXh0RmlyZVRpbWUgPSBpbnRlcnZhbCArIFdhbGxUaW1lOjpub3co
KTsgfQogICAgIHZvaWQgc3RvcCgpIG92ZXJyaWRlIHsgbV9uZXh0RmlyZVRpbWUgPSBXYWxsVGlt
ZSgpOyB9CiAKQEAgLTU5LDcgKzU5LDcgQEAgcHVibGljOgogICAgIHZvaWQgZmlyZSgpIHsgbV9z
aGFyZWRUaW1lckZ1bmN0aW9uKCk7IH0KIAogcHJpdmF0ZToKLSAgICBzdGQ6OmZ1bmN0aW9uPHZv
aWQoKT4gbV9zaGFyZWRUaW1lckZ1bmN0aW9uOworICAgIFdURjo6RnVuY3Rpb248dm9pZCgpPiBt
X3NoYXJlZFRpbWVyRnVuY3Rpb247CiAgICAgV2FsbFRpbWUgbV9uZXh0RmlyZVRpbWU7CiB9Owog
Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>