<?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>139719</bug_id>
          
          <creation_ts>2014-12-16 18:50:18 -0800</creation_ts>
          <short_desc>Fix lambda and std::function formatting</short_desc>
          <delta_ts>2014-12-16 23:22:39 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>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="Anders Carlsson">andersca</reporter>
          <assigned_to name="Anders Carlsson">andersca</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>darin</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1056230</commentid>
    <comment_count>0</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2014-12-16 18:50:18 -0800</bug_when>
    <thetext>Fix lambda and std::function formatting</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1056231</commentid>
    <comment_count>1</comment_count>
      <attachid>243421</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2014-12-16 18:50:35 -0800</bug_when>
    <thetext>Created attachment 243421
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1056232</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-12-16 18:52:03 -0800</bug_when>
    <thetext>Attachment 243421 did not pass style-queue:


ERROR: Source/WebKit2/DatabaseProcess/IndexedDB/UniqueIDBDatabase.cpp:190:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/DatabaseProcess/IndexedDB/UniqueIDBDatabase.cpp:214:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/DatabaseProcess/IndexedDB/UniqueIDBDatabase.cpp:285:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/DatabaseProcess/IndexedDB/UniqueIDBDatabase.cpp:290:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/DatabaseProcess/IndexedDB/UniqueIDBDatabase.cpp:295:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/DatabaseProcess/IndexedDB/UniqueIDBDatabase.cpp:300:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/DatabaseProcess/IndexedDB/UniqueIDBDatabase.cpp:305:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/DatabaseProcess/IndexedDB/UniqueIDBDatabase.cpp:310:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/DatabaseProcess/IndexedDB/UniqueIDBDatabase.cpp:349:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/DatabaseProcess/IndexedDB/UniqueIDBDatabase.cpp:414:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/DatabaseProcess/IndexedDB/UniqueIDBDatabase.cpp:442:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/DatabaseProcess/IndexedDB/UniqueIDBDatabase.cpp:469:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/DatabaseProcess/IndexedDB/UniqueIDBDatabase.cpp:492:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/DatabaseProcess/IndexedDB/UniqueIDBDatabase.cpp:526:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/DatabaseProcess/IndexedDB/UniqueIDBDatabase.cpp:560:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/DatabaseProcess/IndexedDB/UniqueIDBDatabase.cpp:583:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/DatabaseProcess/IndexedDB/UniqueIDBDatabase.cpp:606:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/DatabaseProcess/IndexedDB/UniqueIDBDatabase.cpp:629:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/DatabaseProcess/IndexedDB/UniqueIDBDatabase.cpp:650:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/DatabaseProcess/IndexedDB/UniqueIDBDatabase.cpp:671:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/DatabaseProcess/IndexedDB/UniqueIDBDatabase.cpp:692:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/WebProcess/Databases/IndexedDB/WebIDBServerConnection.h:64:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/WebProcess/Databases/IndexedDB/WebIDBServerConnection.h:66:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/WebProcess/Databases/IndexedDB/WebIDBServerConnection.h:68:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/WebProcess/Databases/IndexedDB/WebIDBServerConnection.h:71:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/WebProcess/Databases/IndexedDB/WebIDBServerConnection.h:73:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/WebProcess/Databases/IndexedDB/WebIDBServerConnection.h:74:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/WebProcess/Databases/IndexedDB/WebIDBServerConnection.h:75:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/WebProcess/Databases/IndexedDB/WebIDBServerConnection.h:76:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/WebProcess/Databases/IndexedDB/WebIDBServerConnection.h:77:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/WebProcess/Databases/IndexedDB/WebIDBServerConnection.h:78:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/WebProcess/Databases/IndexedDB/WebIDBServerConnection.h:79:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/WebProcess/Databases/IndexedDB/WebIDBServerConnection.h:80:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/WebProcess/Databases/IndexedDB/WebIDBServerConnection.h:81:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/WebProcess/Databases/IndexedDB/WebIDBServerConnection.h:82:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/WebProcess/Databases/IndexedDB/WebIDBServerConnection.h:83:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/WebProcess/Databases/IndexedDB/WebIDBServerConnection.h:86:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/WebProcess/Databases/IndexedDB/WebIDBServerConnection.h:87:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/Shared/WebContextMenuItemData.h:49:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/Shared/WebContextMenuItemData.h:79:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/WebProcess/OriginData/WebOriginDataManagerSupplement.h:40:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/WebProcess/OriginData/WebOriginDataManagerSupplement.h:41:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/WebProcess/OriginData/WebOriginDataManagerSupplement.h:42:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/WebProcess/OriginData/WebOriginDataManagerSupplement.h:43:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/mac/WebContextMenuProxyMac.mm:77:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/mac/WebContextMenuProxyMac.mm:79:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/mac/WebContextMenuProxyMac.mm:84:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/mac/WebContextMenuProxyMac.mm:311:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/WebProcess/WebProcess.h:290:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/WebProcess/WebProcess.h:291:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/WebProcess/WebProcess.h:292:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/WebProcess/WebProcess.h:293:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/Shared/WebContextMenuItemData.cpp:70:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/WebProcess/WebProcess.cpp:1260:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/WebProcess/WebProcess.cpp:1276:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/WebProcess/WebProcess.cpp:1293:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/WebProcess/WebProcess.cpp:1310:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/DatabaseProcess/DatabaseProcess.h:96:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/DatabaseProcess/DatabaseProcess.h:97:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/DatabaseProcess/DatabaseProcess.h:98:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/DatabaseProcess/DatabaseProcess.h:99:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/DatabaseProcess/DatabaseProcess.cpp:283:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/DatabaseProcess/DatabaseProcess.cpp:295:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/DatabaseProcess/DatabaseProcess.cpp:308:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/DatabaseProcess/DatabaseProcess.cpp:321:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/Shared/AsyncTask.h:37:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/Shared/AsyncTask.h:51:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/DatabaseProcess/IndexedDB/UniqueIDBDatabase.h:79:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/DatabaseProcess/IndexedDB/UniqueIDBDatabase.h:81:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/DatabaseProcess/IndexedDB/UniqueIDBDatabase.h:83:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/DatabaseProcess/IndexedDB/UniqueIDBDatabase.h:84:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/DatabaseProcess/IndexedDB/UniqueIDBDatabase.h:85:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/DatabaseProcess/IndexedDB/UniqueIDBDatabase.h:86:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/DatabaseProcess/IndexedDB/UniqueIDBDatabase.h:87:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/DatabaseProcess/IndexedDB/UniqueIDBDatabase.h:89:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/DatabaseProcess/IndexedDB/UniqueIDBDatabase.h:90:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/DatabaseProcess/IndexedDB/UniqueIDBDatabase.h:91:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/DatabaseProcess/IndexedDB/UniqueIDBDatabase.h:92:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/DatabaseProcess/IndexedDB/UniqueIDBDatabase.h:93:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/DatabaseProcess/IndexedDB/UniqueIDBDatabase.h:94:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/DatabaseProcess/IndexedDB/UniqueIDBDatabase.h:96:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/DatabaseProcess/IndexedDB/UniqueIDBDatabase.h:97:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/DatabaseProcess/IndexedDB/UniqueIDBDatabase.h:99:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/DatabaseProcess/IndexedDB/UniqueIDBDatabase.h:100:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/DatabaseProcess/IndexedDB/UniqueIDBDatabase.h:101:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/DatabaseProcess/IndexedDB/UniqueIDBDatabase.h:103:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/DatabaseProcess/IndexedDB/UniqueIDBDatabase.h:104:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/DatabaseProcess/IndexedDB/UniqueIDBDatabase.h:136:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/WebProcess/Databases/IndexedDB/WebIDBServerConnection.cpp:190:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/WebProcess/Databases/IndexedDB/WebIDBServerConnection.cpp:244:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/WebProcess/Databases/IndexedDB/WebIDBServerConnection.cpp:276:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/WebProcess/Databases/IndexedDB/WebIDBServerConnection.cpp:308:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/WebProcess/Databases/IndexedDB/WebIDBServerConnection.cpp:312:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/WebProcess/Databases/IndexedDB/WebIDBServerConnection.cpp:342:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/WebProcess/Databases/IndexedDB/WebIDBServerConnection.cpp:371:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/WebProcess/Databases/IndexedDB/WebIDBServerConnection.cpp:400:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/WebProcess/Databases/IndexedDB/WebIDBServerConnection.cpp:419:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/WebProcess/Databases/IndexedDB/WebIDBServerConnection.cpp:510:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/WebProcess/Databases/IndexedDB/WebIDBServerConnection.cpp:539:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/WebProcess/Databases/IndexedDB/WebIDBServerConnection.cpp:568:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/WebProcess/Databases/IndexedDB/WebIDBServerConnection.cpp:597:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/WebProcess/Databases/IndexedDB/WebIDBServerConnection.cpp:626:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/WebProcess/Databases/IndexedDB/WebIDBServerConnection.cpp:655:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/WebProcess/Databases/IndexedDB/WebIDBServerConnection.cpp:672:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/WebProcess/Databases/IndexedDB/WebIDBServerConnection.cpp:689:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebOriginDataManagerProxy.cpp:89:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebOriginDataManagerProxy.cpp:119:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebOriginDataManagerProxy.cpp:128:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebContext.cpp:198:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Total errors found: 109 in 21 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>1056234</commentid>
    <comment_count>3</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2014-12-16 18:54:18 -0800</bug_when>
    <thetext>Committed r177426: &lt;http://trac.webkit.org/changeset/177426&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1056280</commentid>
    <comment_count>4</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2014-12-16 23:22:39 -0800</bug_when>
    <thetext>I don’t know the suggested format. I would like to see it somewhere, maybe in coding style guideline document.

I hate that check-webkit-style is complaining about all of this!</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>243421</attachid>
            <date>2014-12-16 18:50:35 -0800</date>
            <delta_ts>2014-12-16 18:52:47 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-139719-20141216185125.patch</filename>
            <type>text/plain</type>
            <size>82050</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc3NDI1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggZDdjMDFhMWExNTY2NGJm
YWNkYzNiNWJlMGJmMmUzYjg2NzJhZjA2MC4uNGYxODkyNWZiZmIwZmI3OTQyMGUwNWNlYTYwMjFi
MmIyMDNhMjI2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDk3IEBACiAyMDE0LTEyLTE2ICBBbmRl
cnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKKyAgICAgICAgRml4IGxhbWJkYSBh
bmQgc3RkOjpmdW5jdGlvbiBmb3JtYXR0aW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMzk3MTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIERhdGFiYXNlUHJvY2Vzcy9EYXRhYmFzZVByb2Nlc3MuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpEYXRhYmFzZVByb2Nlc3M6OmdldE9yaWdpbnMpOgorICAgICAg
ICAoV2ViS2l0OjpEYXRhYmFzZVByb2Nlc3M6OmRlbGV0ZUVudHJpZXNGb3JPcmlnaW4pOgorICAg
ICAgICAoV2ViS2l0OjpEYXRhYmFzZVByb2Nlc3M6OmRlbGV0ZUVudHJpZXNNb2RpZmllZEJldHdl
ZW5EYXRlcyk6CisgICAgICAgIChXZWJLaXQ6OkRhdGFiYXNlUHJvY2Vzczo6ZGVsZXRlQWxsRW50
cmllcyk6CisgICAgICAgICogRGF0YWJhc2VQcm9jZXNzL0RhdGFiYXNlUHJvY2Vzcy5oOgorICAg
ICAgICAqIERhdGFiYXNlUHJvY2Vzcy9JbmRleGVkREIvVW5pcXVlSURCRGF0YWJhc2UuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpVbmlxdWVJREJEYXRhYmFzZTo6ZGVsZXRlRGF0YWJhc2UpOgorICAg
ICAgICAoV2ViS2l0OjpVbmlxdWVJREJEYXRhYmFzZTo6Z2V0T3JFc3RhYmxpc2hJREJEYXRhYmFz
ZU1ldGFkYXRhKToKKyAgICAgICAgKFdlYktpdDo6VW5pcXVlSURCRGF0YWJhc2U6Om9wZW5UcmFu
c2FjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OlVuaXF1ZUlEQkRhdGFiYXNlOjpiZWdpblRyYW5z
YWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6VW5pcXVlSURCRGF0YWJhc2U6OmNvbW1pdFRyYW5z
YWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6VW5pcXVlSURCRGF0YWJhc2U6OnJlc2V0VHJhbnNh
Y3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpVbmlxdWVJREJEYXRhYmFzZTo6cm9sbGJhY2tUcmFu
c2FjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OlVuaXF1ZUlEQkRhdGFiYXNlOjpwb3N0VHJhbnNh
Y3Rpb25PcGVyYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpVbmlxdWVJREJEYXRhYmFzZTo6Y2hh
bmdlRGF0YWJhc2VWZXJzaW9uKToKKyAgICAgICAgKFdlYktpdDo6VW5pcXVlSURCRGF0YWJhc2U6
OmNyZWF0ZU9iamVjdFN0b3JlKToKKyAgICAgICAgKFdlYktpdDo6VW5pcXVlSURCRGF0YWJhc2U6
OmRlbGV0ZU9iamVjdFN0b3JlKToKKyAgICAgICAgKFdlYktpdDo6VW5pcXVlSURCRGF0YWJhc2U6
OmNsZWFyT2JqZWN0U3RvcmUpOgorICAgICAgICAoV2ViS2l0OjpVbmlxdWVJREJEYXRhYmFzZTo6
Y3JlYXRlSW5kZXgpOgorICAgICAgICAoV2ViS2l0OjpVbmlxdWVJREJEYXRhYmFzZTo6ZGVsZXRl
SW5kZXgpOgorICAgICAgICAoV2ViS2l0OjpVbmlxdWVJREJEYXRhYmFzZTo6cHV0UmVjb3JkKToK
KyAgICAgICAgKFdlYktpdDo6VW5pcXVlSURCRGF0YWJhc2U6OmdldFJlY29yZCk6CisgICAgICAg
IChXZWJLaXQ6OlVuaXF1ZUlEQkRhdGFiYXNlOjpvcGVuQ3Vyc29yKToKKyAgICAgICAgKFdlYktp
dDo6VW5pcXVlSURCRGF0YWJhc2U6OmN1cnNvckFkdmFuY2UpOgorICAgICAgICAoV2ViS2l0OjpV
bmlxdWVJREJEYXRhYmFzZTo6Y3Vyc29ySXRlcmF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlVuaXF1
ZUlEQkRhdGFiYXNlOjpjb3VudCk6CisgICAgICAgIChXZWJLaXQ6OlVuaXF1ZUlEQkRhdGFiYXNl
OjpkZWxldGVSYW5nZSk6CisgICAgICAgICogRGF0YWJhc2VQcm9jZXNzL0luZGV4ZWREQi9Vbmlx
dWVJREJEYXRhYmFzZS5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtD
YWNoZVN0b3JhZ2VDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlU3RvcmFn
ZTo6c3RvcmUpOgorICAgICAgICAqIFNoYXJlZC9Bc3luY1Rhc2suaDoKKyAgICAgICAgKFdlYktp
dDo6QXN5bmNUYXNrOjpBc3luY1Rhc2spOgorICAgICAgICAqIFNoYXJlZC9DaGlsZFByb2Nlc3Mu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpkaWRDbG9zZU9uQ29ubmVjdGlvbldvcmtRdWV1ZSk6Cisg
ICAgICAgICogU2hhcmVkL1dlYkNvbnRleHRNZW51SXRlbURhdGEuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJDb250ZXh0TWVudUl0ZW1EYXRhOjpXZWJDb250ZXh0TWVudUl0ZW1EYXRhKToKKyAg
ICAgICAgKiBTaGFyZWQvV2ViQ29udGV4dE1lbnVJdGVtRGF0YS5oOgorICAgICAgICAoV2ViS2l0
OjpXZWJDb250ZXh0TWVudUl0ZW1EYXRhOjpzZWxlY3Rpb25IYW5kbGVyKToKKyAgICAgICAgKiBT
aGFyZWQvbWFjL1NlY0l0ZW1TaGltLmNwcDoKKyAgICAgICAgKFdlYktpdDo6cmVzcG9uc2VNYXAp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NNYW5hZ2VyLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJvY2Vzc01hbmFnZXI6OlBsdWdpblByb2Nlc3NNYW5h
Z2VyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYkNvbnRleHQ6OldlYkNvbnRleHQpOgorICAgICAgICAoV2ViS2l0OjptX3Byb2Nlc3NT
dXBwcmVzc2lvbkRpc2FibGVkRm9yUGFnZUNvdW50ZXIpOgorICAgICAgICAqIFVJUHJvY2Vzcy9X
ZWJPcmlnaW5EYXRhTWFuYWdlclByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q2FsbGJhY2tT
eW5jaHJvbml6ZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OkNhbGxiYWNrU3luY2hyb25p
emVyOjpDYWxsYmFja1N5bmNocm9uaXplcik6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6V2ViUGFnZVByb3h5KToK
KyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1dlYkNvbnRleHRNZW51UHJveHlNYWMubW06CisgICAg
ICAgICgtW1dLU2VsZWN0aW9uSGFuZGxlcldyYXBwZXIgaW5pdFdpdGhTZWxlY3Rpb25IYW5kbGVy
Ol0pOgorICAgICAgICAoV2ViS2l0Ojpuc01lbnVJdGVtVmVjdG9yKToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL0RhdGFiYXNlcy9JbmRleGVkREIvV2ViSURCU2VydmVyQ29ubmVjdGlvbi5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYklEQlNlcnZlckNvbm5lY3Rpb246OmRlbGV0ZURhdGFiYXNlKToK
KyAgICAgICAgKFdlYktpdDo6V2ViSURCU2VydmVyQ29ubmVjdGlvbjo6Z2V0T3JFc3RhYmxpc2hJ
REJEYXRhYmFzZU1ldGFkYXRhKToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCU2VydmVyQ29ubmVj
dGlvbjo6b3BlblRyYW5zYWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCU2VydmVyQ29u
bmVjdGlvbjo6YmVnaW5UcmFuc2FjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYklEQlNlcnZl
ckNvbm5lY3Rpb246OmNvbW1pdFRyYW5zYWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViSURC
U2VydmVyQ29ubmVjdGlvbjo6cmVzZXRUcmFuc2FjdGlvbik6CisgICAgICAgIChXZWJLaXQ6Oldl
YklEQlNlcnZlckNvbm5lY3Rpb246OnJvbGxiYWNrVHJhbnNhY3Rpb24pOgorICAgICAgICAoV2Vi
S2l0OjpXZWJJREJTZXJ2ZXJDb25uZWN0aW9uOjpzZXRJbmRleEtleXMpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJJREJTZXJ2ZXJDb25uZWN0aW9uOjpjcmVhdGVPYmplY3RTdG9yZSk6CisgICAgICAg
IChXZWJLaXQ6OldlYklEQlNlcnZlckNvbm5lY3Rpb246OmNyZWF0ZUluZGV4KToKKyAgICAgICAg
KFdlYktpdDo6V2ViSURCU2VydmVyQ29ubmVjdGlvbjo6ZGVsZXRlSW5kZXgpOgorICAgICAgICAo
V2ViS2l0OjpXZWJJREJTZXJ2ZXJDb25uZWN0aW9uOjpnZXQpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJJREJTZXJ2ZXJDb25uZWN0aW9uOjpwdXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJTZXJ2
ZXJDb25uZWN0aW9uOjpjb3VudCk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQlNlcnZlckNvbm5l
Y3Rpb246OmRlbGV0ZVJhbmdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCU2VydmVyQ29ubmVj
dGlvbjo6Y2xlYXJPYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQlNlcnZlckNv
bm5lY3Rpb246OmRlbGV0ZU9iamVjdFN0b3JlKToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCU2Vy
dmVyQ29ubmVjdGlvbjo6Y2hhbmdlRGF0YWJhc2VWZXJzaW9uKToKKyAgICAgICAgKFdlYktpdDo6
V2ViSURCU2VydmVyQ29ubmVjdGlvbjo6b3BlbkN1cnNvcik6CisgICAgICAgIChXZWJLaXQ6Oldl
YklEQlNlcnZlckNvbm5lY3Rpb246OmN1cnNvckFkdmFuY2UpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJJREJTZXJ2ZXJDb25uZWN0aW9uOjpjdXJzb3JJdGVyYXRlKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL0RhdGFiYXNlcy9JbmRleGVkREIvV2ViSURCU2VydmVyQ29ubmVjdGlvbi5oOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvT3JpZ2luRGF0YS9XZWJPcmlnaW5EYXRhTWFuYWdlclN1cHBsZW1lbnQu
aDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJQcm9jZXNzOjpnZXRPcmlnaW5zKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6
ZGVsZXRlRW50cmllc0Zvck9yaWdpbik6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OmRl
bGV0ZUVudHJpZXNNb2RpZmllZEJldHdlZW5EYXRlcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBy
b2Nlc3M6OmRlbGV0ZUFsbEVudHJpZXMpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vz
cy5oOgorCisyMDE0LTEyLTE2ICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+
CisKICAgICAgICAgR2V0IHJpZCBvZiBhIGNvdXBsZSBvZiBiaW5kcyBpbiBXZWJLaXQyCiAgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzk3MTcKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0RhdGFiYXNlUHJvY2Vzcy5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvRGF0YWJhc2VQcm9jZXNzLmNwcApp
bmRleCA0ZmY0OTlkNTc2MGNjNzM2MzUyODg0OTEwZGZkODU4YWRmMTMxZWRhLi4wNWE5NGYxN2My
MTI3YmFkNGM3YjcyMGZiZWIxMmEwZWM1NDMyNDFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9EYXRhYmFzZVByb2Nlc3MvRGF0YWJhc2VQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9EYXRhYmFzZVByb2Nlc3MvRGF0YWJhc2VQcm9jZXNzLmNwcApAQCAtMjgwLDcgKzI4MCw3IEBA
IHZvaWQgRGF0YWJhc2VQcm9jZXNzOjpkZWxldGVBbGxJbmRleGVkRGF0YWJhc2VFbnRyaWVzKCkK
ICAgICAgICAgcmVtb3ZlQWxsRGF0YWJhc2VzRm9yT3JpZ2luUGF0aChvcmlnaW5QYXRoLCBzdGQ6
Om51bWVyaWNfbGltaXRzPGRvdWJsZT46Omxvd2VzdCgpLCBzdGQ6Om51bWVyaWNfbGltaXRzPGRv
dWJsZT46Om1heCgpKTsKIH0KIAotdm9pZCBEYXRhYmFzZVByb2Nlc3M6OmdldE9yaWdpbnMoV0tP
cmlnaW5EYXRhVHlwZXMgdHlwZXMsIHN0ZDo6ZnVuY3Rpb248dm9pZChjb25zdCBWZWN0b3I8U2Vj
dXJpdHlPcmlnaW5EYXRhPiYpPiBjb21wbGV0aW9uKQordm9pZCBEYXRhYmFzZVByb2Nlc3M6Omdl
dE9yaWdpbnMoV0tPcmlnaW5EYXRhVHlwZXMgdHlwZXMsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoY29u
c3QgVmVjdG9yPFNlY3VyaXR5T3JpZ2luRGF0YT4mKT4gY29tcGxldGlvbikKIHsKICAgICBpZiAo
ISh0eXBlcyAmIGtXS1dlYlNRTERhdGFiYXNlT3JpZ2luRGF0YSkpIHsKICAgICAgICAgY29tcGxl
dGlvbihWZWN0b3I8U2VjdXJpdHlPcmlnaW5EYXRhPigpKTsKQEAgLTI5Miw3ICsyOTIsNyBAQCB2
b2lkIERhdGFiYXNlUHJvY2Vzczo6Z2V0T3JpZ2lucyhXS09yaWdpbkRhdGFUeXBlcyB0eXBlcywg
c3RkOjpmdW5jdGlvbjx2b2lkKGNvbgogICAgIH0pKTsKIH0KIAotdm9pZCBEYXRhYmFzZVByb2Nl
c3M6OmRlbGV0ZUVudHJpZXNGb3JPcmlnaW4oV0tPcmlnaW5EYXRhVHlwZXMgdHlwZXMsIGNvbnN0
IFNlY3VyaXR5T3JpZ2luRGF0YSYgb3JpZ2luLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4gY29tcGxl
dGlvbikKK3ZvaWQgRGF0YWJhc2VQcm9jZXNzOjpkZWxldGVFbnRyaWVzRm9yT3JpZ2luKFdLT3Jp
Z2luRGF0YVR5cGVzIHR5cGVzLCBjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIG9yaWdpbiwgc3Rk
OjpmdW5jdGlvbjx2b2lkICgpPiBjb21wbGV0aW9uKQogewogICAgIGlmICghKHR5cGVzICYga1dL
V2ViU1FMRGF0YWJhc2VPcmlnaW5EYXRhKSkgewogICAgICAgICBjb21wbGV0aW9uKCk7CkBAIC0z
MDUsNyArMzA1LDcgQEAgdm9pZCBEYXRhYmFzZVByb2Nlc3M6OmRlbGV0ZUVudHJpZXNGb3JPcmln
aW4oV0tPcmlnaW5EYXRhVHlwZXMgdHlwZXMsIGNvbnN0IFNlY3UKICAgICB9KSk7CiB9CiAKLXZv
aWQgRGF0YWJhc2VQcm9jZXNzOjpkZWxldGVFbnRyaWVzTW9kaWZpZWRCZXR3ZWVuRGF0ZXMoV0tP
cmlnaW5EYXRhVHlwZXMgdHlwZXMsIGRvdWJsZSBzdGFydERhdGUsIGRvdWJsZSBlbmREYXRlLCBz
dGQ6OmZ1bmN0aW9uPHZvaWQoKT4gY29tcGxldGlvbikKK3ZvaWQgRGF0YWJhc2VQcm9jZXNzOjpk
ZWxldGVFbnRyaWVzTW9kaWZpZWRCZXR3ZWVuRGF0ZXMoV0tPcmlnaW5EYXRhVHlwZXMgdHlwZXMs
IGRvdWJsZSBzdGFydERhdGUsIGRvdWJsZSBlbmREYXRlLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+
IGNvbXBsZXRpb24pCiB7CiAgICAgaWYgKCEodHlwZXMgJiBrV0tXZWJTUUxEYXRhYmFzZU9yaWdp
bkRhdGEpKSB7CiAgICAgICAgIGNvbXBsZXRpb24oKTsKQEAgLTMxOCw3ICszMTgsNyBAQCB2b2lk
IERhdGFiYXNlUHJvY2Vzczo6ZGVsZXRlRW50cmllc01vZGlmaWVkQmV0d2VlbkRhdGVzKFdLT3Jp
Z2luRGF0YVR5cGVzIHR5cGVzLAogICAgIH0pKTsKIH0KIAotdm9pZCBEYXRhYmFzZVByb2Nlc3M6
OmRlbGV0ZUFsbEVudHJpZXMoV0tPcmlnaW5EYXRhVHlwZXMgdHlwZXMsIHN0ZDo6ZnVuY3Rpb248
dm9pZCgpPiBjb21wbGV0aW9uKQordm9pZCBEYXRhYmFzZVByb2Nlc3M6OmRlbGV0ZUFsbEVudHJp
ZXMoV0tPcmlnaW5EYXRhVHlwZXMgdHlwZXMsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4gY29tcGxl
dGlvbikKIHsKICAgICBpZiAoISh0eXBlcyAmIGtXS1dlYlNRTERhdGFiYXNlT3JpZ2luRGF0YSkp
IHsKICAgICAgICAgY29tcGxldGlvbigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvRGF0
YWJhc2VQcm9jZXNzL0RhdGFiYXNlUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdDIvRGF0YWJhc2VQ
cm9jZXNzL0RhdGFiYXNlUHJvY2Vzcy5oCmluZGV4IDA4YWFmNDFmMmZlZGFjMmJhYTkxOTA2MDY0
MWQ1OTQ4MGMwMWI1NTIuLjBmYmRmOGMzNzM4Y2M0N2ZjMGVjNTUxOTBiMzdjY2JkZTk2MWU0NzEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9EYXRhYmFzZVByb2Nl
c3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvRGF0YWJhc2VQcm9jZXNz
LmgKQEAgLTkzLDEwICs5MywxMCBAQCBwcml2YXRlOgogICAgIHZvaWQgZW5zdXJlUGF0aEV4aXN0
cyhjb25zdCBTdHJpbmcmKTsKIAogICAgIC8vIFdlYk9yaWdpbkRhdGFNYW5hZ2VyU3VwcGxlbWVu
dAotICAgIHZpcnR1YWwgdm9pZCBnZXRPcmlnaW5zKFdLT3JpZ2luRGF0YVR5cGVzLCBzdGQ6OmZ1
bmN0aW9uPHZvaWQoY29uc3QgVmVjdG9yPFNlY3VyaXR5T3JpZ2luRGF0YT4mKT4gY29tcGxldGlv
bikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGRlbGV0ZUVudHJpZXNGb3JPcmlnaW4oV0tP
cmlnaW5EYXRhVHlwZXMsIGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYsIHN0ZDo6ZnVuY3Rpb248
dm9pZCgpPiBjb21wbGV0aW9uKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlRW50
cmllc01vZGlmaWVkQmV0d2VlbkRhdGVzKFdLT3JpZ2luRGF0YVR5cGVzLCBkb3VibGUgc3RhcnRE
YXRlLCBkb3VibGUgZW5kRGF0ZSwgc3RkOjpmdW5jdGlvbjx2b2lkKCk+IGNvbXBsZXRpb24pIG92
ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBkZWxldGVBbGxFbnRyaWVzKFdLT3JpZ2luRGF0YVR5
cGVzLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4gY29tcGxldGlvbikgb3ZlcnJpZGU7CisgICAgdmly
dHVhbCB2b2lkIGdldE9yaWdpbnMoV0tPcmlnaW5EYXRhVHlwZXMsIHN0ZDo6ZnVuY3Rpb248dm9p
ZCAoY29uc3QgVmVjdG9yPFNlY3VyaXR5T3JpZ2luRGF0YT4mKT4gY29tcGxldGlvbikgb3ZlcnJp
ZGU7CisgICAgdmlydHVhbCB2b2lkIGRlbGV0ZUVudHJpZXNGb3JPcmlnaW4oV0tPcmlnaW5EYXRh
VHlwZXMsIGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4g
Y29tcGxldGlvbikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGRlbGV0ZUVudHJpZXNNb2Rp
ZmllZEJldHdlZW5EYXRlcyhXS09yaWdpbkRhdGFUeXBlcywgZG91YmxlIHN0YXJ0RGF0ZSwgZG91
YmxlIGVuZERhdGUsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4gY29tcGxldGlvbikgb3ZlcnJpZGU7
CisgICAgdmlydHVhbCB2b2lkIGRlbGV0ZUFsbEVudHJpZXMoV0tPcmlnaW5EYXRhVHlwZXMsIHN0
ZDo6ZnVuY3Rpb248dm9pZCAoKT4gY29tcGxldGlvbikgb3ZlcnJpZGU7CiAKICAgICBWZWN0b3I8
UmVmUHRyPERhdGFiYXNlVG9XZWJQcm9jZXNzQ29ubmVjdGlvbj4+IG1fZGF0YWJhc2VUb1dlYlBy
b2Nlc3NDb25uZWN0aW9uczsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvRGF0YWJhc2VQ
cm9jZXNzL0luZGV4ZWREQi9VbmlxdWVJREJEYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9E
YXRhYmFzZVByb2Nlc3MvSW5kZXhlZERCL1VuaXF1ZUlEQkRhdGFiYXNlLmNwcAppbmRleCAxZTM2
MTk3MzczMWUwMDlkYTZmOGQwNzk4MjA5NzA1ZjZmZWU2MDg2Li5hMTQ3MzU5YTA1YWUzZTE0MzQz
N2U1NGFmNTk1MzNhZDU2MDNlM2QyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFz
ZVByb2Nlc3MvSW5kZXhlZERCL1VuaXF1ZUlEQkRhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9EYXRhYmFzZVByb2Nlc3MvSW5kZXhlZERCL1VuaXF1ZUlEQkRhdGFiYXNlLmNwcApAQCAt
MTg3LDEzICsxODcsMTMgQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6ZGlkU2h1dGRvd25CYWNr
aW5nU3RvcmUoVW5pcXVlSURCRGF0YWJhc2VTaHV0ZG93blR5cGUgdHkKICAgICBtX3BlbmRpbmdT
aHV0ZG93blRhc2sgPSBudWxscHRyOwogfQogCi12b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpkZWxl
dGVEYXRhYmFzZShzdGQ6OmZ1bmN0aW9uPHZvaWQoYm9vbCk+IHN1Y2Nlc3NDYWxsYmFjaykKK3Zv
aWQgVW5pcXVlSURCRGF0YWJhc2U6OmRlbGV0ZURhdGFiYXNlKHN0ZDo6ZnVuY3Rpb248dm9pZCAo
Ym9vbCk+IHN1Y2Nlc3NDYWxsYmFjaykKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkp
OwogCiAgICAgaWYgKCFtX2FjY2VwdGluZ05ld1JlcXVlc3RzKSB7CiAgICAgICAgIC8vIFNvbWVv
bmUgZWxzZSBoYXMgYWxyZWFkeSBzaHV0ZG93biB0aGlzIGRhdGFiYXNlLCBzbyB3ZSBjYW4ndCBy
ZXF1ZXN0IGEgZGVsZXRlLgotICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtzdWNjZXNzQ2FsbGJh
Y2tdKCkgeworICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtzdWNjZXNzQ2FsbGJhY2tdIHsKICAg
ICAgICAgICAgIHN1Y2Nlc3NDYWxsYmFjayhmYWxzZSk7CiAgICAgICAgIH0pOwogICAgICAgICBy
ZXR1cm47CkBAIC0yMDQsMTQgKzIwNCwxNCBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpkZWxl
dGVEYXRhYmFzZShzdGQ6OmZ1bmN0aW9uPHZvaWQoYm9vbCk+IHN1Y2Nlc3NDYWxsYmFjawogICAg
ICAgICAvLyBJZiB0aGUgc2h1dGRvd24ganVzdCBjb21wbGV0ZWQgd2FzIGEgRGVsZXRlIHNodXRk
b3duIHRoZW4gd2Ugc3VjY2VlZGVkLgogICAgICAgICAvLyBJZiBub3QgcmVwb3J0IGZhaWx1cmUg
aW5zdGVhZCBvZiB0cnlpbmcgYWdhaW4uCiAgICAgICAgIHN1Y2Nlc3NDYWxsYmFjayh0eXBlID09
IFVuaXF1ZUlEQkRhdGFiYXNlU2h1dGRvd25UeXBlOjpEZWxldGVTaHV0ZG93bik7Ci0gICAgfSwg
W3RoaXMsIHByb3RlY3Rvciwgc3VjY2Vzc0NhbGxiYWNrXSgpIHsKKyAgICB9LCBbdGhpcywgcHJv
dGVjdG9yLCBzdWNjZXNzQ2FsbGJhY2tdIHsKICAgICAgICAgc3VjY2Vzc0NhbGxiYWNrKGZhbHNl
KTsKICAgICB9KTsKIAogICAgIHNodXRkb3duKFVuaXF1ZUlEQkRhdGFiYXNlU2h1dGRvd25UeXBl
OjpEZWxldGVTaHV0ZG93bik7CiB9CiAKLXZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmdldE9yRXN0
YWJsaXNoSURCRGF0YWJhc2VNZXRhZGF0YShzdGQ6OmZ1bmN0aW9uPHZvaWQoYm9vbCwgY29uc3Qg
SURCRGF0YWJhc2VNZXRhZGF0YSYpPiBjb21wbGV0aW9uQ2FsbGJhY2spCit2b2lkIFVuaXF1ZUlE
QkRhdGFiYXNlOjpnZXRPckVzdGFibGlzaElEQkRhdGFiYXNlTWV0YWRhdGEoc3RkOjpmdW5jdGlv
bjx2b2lkIChib29sLCBjb25zdCBJREJEYXRhYmFzZU1ldGFkYXRhJik+IGNvbXBsZXRpb25DYWxs
YmFjaykKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogCkBAIC0yMzUsOSArMjM1
LDkgQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6Z2V0T3JFc3RhYmxpc2hJREJEYXRhYmFzZU1l
dGFkYXRhKHN0ZDo6ZnVuY3Rpb248dm9pZChib28KICAgICBib29sIHNob3VsZE9wZW5CYWNraW5n
U3RvcmUgPSBtX3BlbmRpbmdNZXRhZGF0YVJlcXVlc3RzLmlzRW1wdHkoKTsKIAogICAgIC8vIFRo
ZW4gcmVtZW1iZXIgdGhpcyBtZXRhZGF0YSByZXF1ZXN0IHRvIGJlIGFuc3dlcmVkIGxhdGVyLgot
ICAgIFJlZlB0cjxBc3luY1JlcXVlc3Q+IHJlcXVlc3QgPSBBc3luY1JlcXVlc3RJbXBsPD46OmNy
ZWF0ZShbY29tcGxldGlvbkNhbGxiYWNrLCB0aGlzXSgpIHsKKyAgICBSZWZQdHI8QXN5bmNSZXF1
ZXN0PiByZXF1ZXN0ID0gQXN5bmNSZXF1ZXN0SW1wbDw+OjpjcmVhdGUoW2NvbXBsZXRpb25DYWxs
YmFjaywgdGhpc10gewogICAgICAgICBjb21wbGV0aW9uQ2FsbGJhY2soISFtX21ldGFkYXRhLCBt
X21ldGFkYXRhID8gKm1fbWV0YWRhdGEgOiBJREJEYXRhYmFzZU1ldGFkYXRhKCkpOwotICAgIH0s
IFtjb21wbGV0aW9uQ2FsbGJhY2tdKCkgeworICAgIH0sIFtjb21wbGV0aW9uQ2FsbGJhY2tdIHsK
ICAgICAgICAgLy8gVGhlIGJvb2xlYW4gZmxhZyB0byB0aGUgY29tcGxldGlvbiBjYWxsYmFjayBy
ZXByZXNlbnRzIHdoZXRoZXIgdGhlCiAgICAgICAgIC8vIGF0dGVtcHQgdG8gZ2V0L2VzdGFibGlz
aCBtZXRhZGF0YSBzdWNjZWVkZWQgb3IgZmFpbGVkLgogICAgICAgICAvLyBTaW5jZSB3ZSdyZSBh
Ym9ydGluZyB0aGUgYXR0ZW1wdCwgaXQgZmFpbGVkLCBzbyB3ZSBhbHdheXMgcGFzcyBpbiBmYWxz
ZS4KQEAgLTI4MiwzMiArMjgyLDMyIEBAIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmRpZE9wZW5C
YWNraW5nU3RvcmVBbmRSZWFkTWV0YWRhdGEoY29uc3QgSURCRGF0YWJhc2VNZXRhCiAgICAgfQog
fQogCi12b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpvcGVuVHJhbnNhY3Rpb24oY29uc3QgSURCSWRl
bnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBjb25zdCBWZWN0b3I8aW50NjRfdD4mIG9i
amVjdFN0b3JlSURzLCBJbmRleGVkREI6OlRyYW5zYWN0aW9uTW9kZSBtb2RlLCBzdGQ6OmZ1bmN0
aW9uPHZvaWQoYm9vbCk+IHN1Y2Nlc3NDYWxsYmFjaykKK3ZvaWQgVW5pcXVlSURCRGF0YWJhc2U6
Om9wZW5UcmFuc2FjdGlvbihjb25zdCBJREJJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZp
ZXIsIGNvbnN0IFZlY3RvcjxpbnQ2NF90PiYgb2JqZWN0U3RvcmVJRHMsIEluZGV4ZWREQjo6VHJh
bnNhY3Rpb25Nb2RlIG1vZGUsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoYm9vbCk+IHN1Y2Nlc3NDYWxs
YmFjaykKIHsKICAgICBwb3N0VHJhbnNhY3Rpb25PcGVyYXRpb24odHJhbnNhY3Rpb25JZGVudGlm
aWVyLCBjcmVhdGVBc3luY1Rhc2soKnRoaXMsICZVbmlxdWVJREJEYXRhYmFzZTo6b3BlbkJhY2tp
bmdTdG9yZVRyYW5zYWN0aW9uLCB0cmFuc2FjdGlvbklkZW50aWZpZXIsIG9iamVjdFN0b3JlSURz
LCBtb2RlKSwgc3VjY2Vzc0NhbGxiYWNrKTsKIH0KIAotdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6
YmVnaW5UcmFuc2FjdGlvbihjb25zdCBJREJJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZp
ZXIsIHN0ZDo6ZnVuY3Rpb248dm9pZChib29sKT4gc3VjY2Vzc0NhbGxiYWNrKQordm9pZCBVbmlx
dWVJREJEYXRhYmFzZTo6YmVnaW5UcmFuc2FjdGlvbihjb25zdCBJREJJZGVudGlmaWVyJiB0cmFu
c2FjdGlvbklkZW50aWZpZXIsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoYm9vbCk+IHN1Y2Nlc3NDYWxs
YmFjaykKIHsKICAgICBwb3N0VHJhbnNhY3Rpb25PcGVyYXRpb24odHJhbnNhY3Rpb25JZGVudGlm
aWVyLCBjcmVhdGVBc3luY1Rhc2soKnRoaXMsICZVbmlxdWVJREJEYXRhYmFzZTo6YmVnaW5CYWNr
aW5nU3RvcmVUcmFuc2FjdGlvbiwgdHJhbnNhY3Rpb25JZGVudGlmaWVyKSwgc3VjY2Vzc0NhbGxi
YWNrKTsKIH0KIAotdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6Y29tbWl0VHJhbnNhY3Rpb24oY29u
c3QgSURCSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBzdGQ6OmZ1bmN0aW9uPHZv
aWQoYm9vbCk+IHN1Y2Nlc3NDYWxsYmFjaykKK3ZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmNvbW1p
dFRyYW5zYWN0aW9uKGNvbnN0IElEQklkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwg
c3RkOjpmdW5jdGlvbjx2b2lkIChib29sKT4gc3VjY2Vzc0NhbGxiYWNrKQogewogICAgIHBvc3RU
cmFuc2FjdGlvbk9wZXJhdGlvbih0cmFuc2FjdGlvbklkZW50aWZpZXIsIGNyZWF0ZUFzeW5jVGFz
aygqdGhpcywgJlVuaXF1ZUlEQkRhdGFiYXNlOjpjb21taXRCYWNraW5nU3RvcmVUcmFuc2FjdGlv
biwgdHJhbnNhY3Rpb25JZGVudGlmaWVyKSwgc3VjY2Vzc0NhbGxiYWNrKTsKIH0KIAotdm9pZCBV
bmlxdWVJREJEYXRhYmFzZTo6cmVzZXRUcmFuc2FjdGlvbihjb25zdCBJREJJZGVudGlmaWVyJiB0
cmFuc2FjdGlvbklkZW50aWZpZXIsIHN0ZDo6ZnVuY3Rpb248dm9pZChib29sKT4gc3VjY2Vzc0Nh
bGxiYWNrKQordm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6cmVzZXRUcmFuc2FjdGlvbihjb25zdCBJ
REJJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIHN0ZDo6ZnVuY3Rpb248dm9pZCAo
Ym9vbCk+IHN1Y2Nlc3NDYWxsYmFjaykKIHsKICAgICBwb3N0VHJhbnNhY3Rpb25PcGVyYXRpb24o
dHJhbnNhY3Rpb25JZGVudGlmaWVyLCBjcmVhdGVBc3luY1Rhc2soKnRoaXMsICZVbmlxdWVJREJE
YXRhYmFzZTo6cmVzZXRCYWNraW5nU3RvcmVUcmFuc2FjdGlvbiwgdHJhbnNhY3Rpb25JZGVudGlm
aWVyKSwgc3VjY2Vzc0NhbGxiYWNrKTsKIH0KIAotdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6cm9s
bGJhY2tUcmFuc2FjdGlvbihjb25zdCBJREJJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZp
ZXIsIHN0ZDo6ZnVuY3Rpb248dm9pZChib29sKT4gc3VjY2Vzc0NhbGxiYWNrKQordm9pZCBVbmlx
dWVJREJEYXRhYmFzZTo6cm9sbGJhY2tUcmFuc2FjdGlvbihjb25zdCBJREJJZGVudGlmaWVyJiB0
cmFuc2FjdGlvbklkZW50aWZpZXIsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoYm9vbCk+IHN1Y2Nlc3ND
YWxsYmFjaykKIHsKICAgICBwb3N0VHJhbnNhY3Rpb25PcGVyYXRpb24odHJhbnNhY3Rpb25JZGVu
dGlmaWVyLCBjcmVhdGVBc3luY1Rhc2soKnRoaXMsICZVbmlxdWVJREJEYXRhYmFzZTo6cm9sbGJh
Y2tCYWNraW5nU3RvcmVUcmFuc2FjdGlvbiwgdHJhbnNhY3Rpb25JZGVudGlmaWVyKSwgc3VjY2Vz
c0NhbGxiYWNrKTsKIH0KIAotdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6cG9zdFRyYW5zYWN0aW9u
T3BlcmF0aW9uKGNvbnN0IElEQklkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgc3Rk
Ojp1bmlxdWVfcHRyPEFzeW5jVGFzaz4gdGFzaywgc3RkOjpmdW5jdGlvbjx2b2lkKGJvb2wpPiBz
dWNjZXNzQ2FsbGJhY2spCit2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpwb3N0VHJhbnNhY3Rpb25P
cGVyYXRpb24oY29uc3QgSURCSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBzdGQ6
OnVuaXF1ZV9wdHI8QXN5bmNUYXNrPiB0YXNrLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKGJvb2wpPiBz
dWNjZXNzQ2FsbGJhY2spCiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKIApAQCAt
MzI2LDcgKzMyNiw3IEBAIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OnBvc3RUcmFuc2FjdGlvbk9w
ZXJhdGlvbihjb25zdCBJREJJZGVudGlmaWVyJiB0cmFuc2FjdGlvCiAKICAgICBSZWZQdHI8QXN5
bmNSZXF1ZXN0PiByZXF1ZXN0ID0gQXN5bmNSZXF1ZXN0SW1wbDxib29sPjo6Y3JlYXRlKFtzdWNj
ZXNzQ2FsbGJhY2tdKGJvb2wgc3VjY2VzcykgewogICAgICAgICBzdWNjZXNzQ2FsbGJhY2soc3Vj
Y2Vzcyk7Ci0gICAgfSwgW3N1Y2Nlc3NDYWxsYmFja10oKSB7CisgICAgfSwgW3N1Y2Nlc3NDYWxs
YmFja10gewogICAgICAgICBzdWNjZXNzQ2FsbGJhY2soZmFsc2UpOwogICAgIH0pOwogCkBAIC0z
NDYsNyArMzQ2LDcgQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6ZGlkQ29tcGxldGVUcmFuc2Fj
dGlvbk9wZXJhdGlvbihjb25zdCBJREJJZGVudGlmaWVyJiB0cmEKICAgICAgICAgZmluYWxpemVS
b2xsYmFjayh0cmFuc2FjdGlvbklkZW50aWZpZXIpOwogfQogCi12b2lkIFVuaXF1ZUlEQkRhdGFi
YXNlOjpjaGFuZ2VEYXRhYmFzZVZlcnNpb24oY29uc3QgSURCSWRlbnRpZmllciYgdHJhbnNhY3Rp
b25JZGVudGlmaWVyLCB1aW50NjRfdCBuZXdWZXJzaW9uLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoYm9v
bCk+IHN1Y2Nlc3NDYWxsYmFjaykKK3ZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmNoYW5nZURhdGFi
YXNlVmVyc2lvbihjb25zdCBJREJJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIHVp
bnQ2NF90IG5ld1ZlcnNpb24sIHN0ZDo6ZnVuY3Rpb248dm9pZCAoYm9vbCk+IHN1Y2Nlc3NDYWxs
YmFjaykKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogCkBAIC0zNjIsNyArMzYy
LDcgQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6Y2hhbmdlRGF0YWJhc2VWZXJzaW9uKGNvbnN0
IElEQklkZW50aWZpZXImIHRyYW5zYWN0aW9uSWQKICAgICAgICAgaWYgKCFzdWNjZXNzKQogICAg
ICAgICAgICAgbV9tZXRhZGF0YS0+dmVyc2lvbiA9IG9sZFZlcnNpb247CiAgICAgICAgIHN1Y2Nl
c3NDYWxsYmFjayhzdWNjZXNzKTsKLSAgICB9LCBbdGhpcywgb2xkVmVyc2lvbiwgc3VjY2Vzc0Nh
bGxiYWNrXSgpIHsKKyAgICB9LCBbdGhpcywgb2xkVmVyc2lvbiwgc3VjY2Vzc0NhbGxiYWNrXSB7
CiAgICAgICAgIG1fbWV0YWRhdGEtPnZlcnNpb24gPSBvbGRWZXJzaW9uOwogICAgICAgICBzdWNj
ZXNzQ2FsbGJhY2soZmFsc2UpOwogICAgIH0pOwpAQCAtNDExLDcgKzQxMSw3IEBAIHZvaWQgVW5p
cXVlSURCRGF0YWJhc2U6OmRpZENvbXBsZXRlQm9vbFJlcXVlc3QodWludDY0X3QgcmVxdWVzdElE
LCBib29sIHN1Y2Nlc3MpCiAgICAgcmVxdWVzdC0+Y29tcGxldGVSZXF1ZXN0KHN1Y2Nlc3MpOwog
fQogCi12b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpjcmVhdGVPYmplY3RTdG9yZShjb25zdCBJREJJ
ZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIGNvbnN0IElEQk9iamVjdFN0b3JlTWV0
YWRhdGEmIG1ldGFkYXRhLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoYm9vbCk+IHN1Y2Nlc3NDYWxsYmFj
aykKK3ZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmNyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IElEQklk
ZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgY29uc3QgSURCT2JqZWN0U3RvcmVNZXRh
ZGF0YSYgbWV0YWRhdGEsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoYm9vbCk+IHN1Y2Nlc3NDYWxsYmFj
aykKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogCkBAIC00MjgsNyArNDI4LDcg
QEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6Y3JlYXRlT2JqZWN0U3RvcmUoY29uc3QgSURCSWRl
bnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGkKICAgICAgICAgaWYgKCFzdWNjZXNzKQogICAgICAg
ICAgICAgbV9tZXRhZGF0YS0+b2JqZWN0U3RvcmVzLnJlbW92ZShhZGRlZE9iamVjdFN0b3JlSUQp
OwogICAgICAgICBzdWNjZXNzQ2FsbGJhY2soc3VjY2Vzcyk7Ci0gICAgfSwgW3RoaXMsIGFkZGVk
T2JqZWN0U3RvcmVJRCwgc3VjY2Vzc0NhbGxiYWNrXSgpIHsKKyAgICB9LCBbdGhpcywgYWRkZWRP
YmplY3RTdG9yZUlELCBzdWNjZXNzQ2FsbGJhY2tdIHsKICAgICAgICAgbV9tZXRhZGF0YS0+b2Jq
ZWN0U3RvcmVzLnJlbW92ZShhZGRlZE9iamVjdFN0b3JlSUQpOwogICAgICAgICBzdWNjZXNzQ2Fs
bGJhY2soZmFsc2UpOwogICAgIH0pOwpAQCAtNDM5LDcgKzQzOSw3IEBAIHZvaWQgVW5pcXVlSURC
RGF0YWJhc2U6OmNyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IElEQklkZW50aWZpZXImIHRyYW5zYWN0
aW9uSWRlbnRpCiAgICAgcG9zdERhdGFiYXNlVGFzayhjcmVhdGVBc3luY1Rhc2soKnRoaXMsICZV
bmlxdWVJREJEYXRhYmFzZTo6Y3JlYXRlT2JqZWN0U3RvcmVJbkJhY2tpbmdTdG9yZSwgcmVxdWVz
dElELCB0cmFuc2FjdGlvbklkZW50aWZpZXIsIG1ldGFkYXRhKSk7CiB9CiAKLXZvaWQgVW5pcXVl
SURCRGF0YWJhc2U6OmRlbGV0ZU9iamVjdFN0b3JlKGNvbnN0IElEQklkZW50aWZpZXImIHRyYW5z
YWN0aW9uSWRlbnRpZmllciwgaW50NjRfdCBvYmplY3RTdG9yZUlELCBzdGQ6OmZ1bmN0aW9uPHZv
aWQoYm9vbCk+IHN1Y2Nlc3NDYWxsYmFjaykKK3ZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmRlbGV0
ZU9iamVjdFN0b3JlKGNvbnN0IElEQklkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwg
aW50NjRfdCBvYmplY3RTdG9yZUlELCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKGJvb2wpPiBzdWNjZXNz
Q2FsbGJhY2spCiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKIApAQCAtNDU1LDcg
KzQ1NSw3IEBAIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmRlbGV0ZU9iamVjdFN0b3JlKGNvbnN0
IElEQklkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpCiAgICAgICAgIGlmICghc3VjY2VzcykK
ICAgICAgICAgICAgIG1fbWV0YWRhdGEtPm9iamVjdFN0b3Jlcy5zZXQobWV0YWRhdGEuaWQsIG1l
dGFkYXRhKTsKICAgICAgICAgc3VjY2Vzc0NhbGxiYWNrKHN1Y2Nlc3MpOwotICAgIH0sIFt0aGlz
LCBtZXRhZGF0YSwgc3VjY2Vzc0NhbGxiYWNrXSgpIHsKKyAgICB9LCBbdGhpcywgbWV0YWRhdGEs
IHN1Y2Nlc3NDYWxsYmFja10gewogICAgICAgICBtX21ldGFkYXRhLT5vYmplY3RTdG9yZXMuc2V0
KG1ldGFkYXRhLmlkLCBtZXRhZGF0YSk7CiAgICAgICAgIHN1Y2Nlc3NDYWxsYmFjayhmYWxzZSk7
CiAgICAgfSk7CkBAIC00NjYsNyArNDY2LDcgQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6ZGVs
ZXRlT2JqZWN0U3RvcmUoY29uc3QgSURCSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGkKICAg
ICBwb3N0RGF0YWJhc2VUYXNrKGNyZWF0ZUFzeW5jVGFzaygqdGhpcywgJlVuaXF1ZUlEQkRhdGFi
YXNlOjpkZWxldGVPYmplY3RTdG9yZUluQmFja2luZ1N0b3JlLCByZXF1ZXN0SUQsIHRyYW5zYWN0
aW9uSWRlbnRpZmllciwgb2JqZWN0U3RvcmVJRCkpOwogfQogCi12b2lkIFVuaXF1ZUlEQkRhdGFi
YXNlOjpjbGVhck9iamVjdFN0b3JlKGNvbnN0IElEQklkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRl
bnRpZmllciwgaW50NjRfdCBvYmplY3RTdG9yZUlELCBzdGQ6OmZ1bmN0aW9uPHZvaWQoYm9vbCk+
IHN1Y2Nlc3NDYWxsYmFjaykKK3ZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmNsZWFyT2JqZWN0U3Rv
cmUoY29uc3QgSURCSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBpbnQ2NF90IG9i
amVjdFN0b3JlSUQsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoYm9vbCk+IHN1Y2Nlc3NDYWxsYmFjaykK
IHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogCkBAIC00NzksNyArNDc5LDcgQEAg
dm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6Y2xlYXJPYmplY3RTdG9yZShjb25zdCBJREJJZGVudGlm
aWVyJiB0cmFuc2FjdGlvbklkZW50aWYKIAogICAgIFJlZlB0cjxBc3luY1JlcXVlc3Q+IHJlcXVl
c3QgPSBBc3luY1JlcXVlc3RJbXBsPGJvb2w+OjpjcmVhdGUoW3RoaXMsIHN1Y2Nlc3NDYWxsYmFj
a10oYm9vbCBzdWNjZXNzKSB7CiAgICAgICAgIHN1Y2Nlc3NDYWxsYmFjayhzdWNjZXNzKTsKLSAg
ICB9LCBbdGhpcywgc3VjY2Vzc0NhbGxiYWNrXSgpIHsKKyAgICB9LCBbdGhpcywgc3VjY2Vzc0Nh
bGxiYWNrXSB7CiAgICAgICAgIHN1Y2Nlc3NDYWxsYmFjayhmYWxzZSk7CiAgICAgfSk7CiAKQEAg
LTQ4OSw3ICs0ODksNyBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpjbGVhck9iamVjdFN0b3Jl
KGNvbnN0IElEQklkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZgogICAgIHBvc3REYXRhYmFz
ZVRhc2soY3JlYXRlQXN5bmNUYXNrKCp0aGlzLCAmVW5pcXVlSURCRGF0YWJhc2U6OmNsZWFyT2Jq
ZWN0U3RvcmVJbkJhY2tpbmdTdG9yZSwgcmVxdWVzdElELCB0cmFuc2FjdGlvbklkZW50aWZpZXIs
IG9iamVjdFN0b3JlSUQpKTsKIH0KIAotdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6Y3JlYXRlSW5k
ZXgoY29uc3QgSURCSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBpbnQ2NF90IG9i
amVjdFN0b3JlSUQsIGNvbnN0IElEQkluZGV4TWV0YWRhdGEmIG1ldGFkYXRhLCBzdGQ6OmZ1bmN0
aW9uPHZvaWQoYm9vbCk+IHN1Y2Nlc3NDYWxsYmFjaykKK3ZvaWQgVW5pcXVlSURCRGF0YWJhc2U6
OmNyZWF0ZUluZGV4KGNvbnN0IElEQklkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwg
aW50NjRfdCBvYmplY3RTdG9yZUlELCBjb25zdCBJREJJbmRleE1ldGFkYXRhJiBtZXRhZGF0YSwg
c3RkOjpmdW5jdGlvbjx2b2lkIChib29sKT4gc3VjY2Vzc0NhbGxiYWNrKQogewogICAgIEFTU0VS
VChSdW5Mb29wOjppc01haW4oKSk7CiAKQEAgLTUxMCw3ICs1MTAsNyBAQCB2b2lkIFVuaXF1ZUlE
QkRhdGFiYXNlOjpjcmVhdGVJbmRleChjb25zdCBJREJJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklk
ZW50aWZpZXIsCiAgICAgICAgICAgICAgICAgb2JqZWN0U3RvcmVGaW5kLT52YWx1ZS5pbmRleGVz
LnJlbW92ZShhZGRlZEluZGV4SUQpOwogICAgICAgICB9CiAgICAgICAgIHN1Y2Nlc3NDYWxsYmFj
ayhzdWNjZXNzKTsKLSAgICB9LCBbdGhpcywgb2JqZWN0U3RvcmVJRCwgYWRkZWRJbmRleElELCBz
dWNjZXNzQ2FsbGJhY2tdKCkgeworICAgIH0sIFt0aGlzLCBvYmplY3RTdG9yZUlELCBhZGRlZElu
ZGV4SUQsIHN1Y2Nlc3NDYWxsYmFja10gewogICAgICAgICBhdXRvIG9iamVjdFN0b3JlRmluZCA9
IG1fbWV0YWRhdGEtPm9iamVjdFN0b3Jlcy5maW5kKG9iamVjdFN0b3JlSUQpOwogICAgICAgICBp
ZiAob2JqZWN0U3RvcmVGaW5kICE9IG1fbWV0YWRhdGEtPm9iamVjdFN0b3Jlcy5lbmQoKSkKICAg
ICAgICAgICAgIG9iamVjdFN0b3JlRmluZC0+dmFsdWUuaW5kZXhlcy5yZW1vdmUoYWRkZWRJbmRl
eElEKTsKQEAgLTUyMyw3ICs1MjMsNyBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpjcmVhdGVJ
bmRleChjb25zdCBJREJJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsCiAgICAgcG9z
dERhdGFiYXNlVGFzayhjcmVhdGVBc3luY1Rhc2soKnRoaXMsICZVbmlxdWVJREJEYXRhYmFzZTo6
Y3JlYXRlSW5kZXhJbkJhY2tpbmdTdG9yZSwgcmVxdWVzdElELCB0cmFuc2FjdGlvbklkZW50aWZp
ZXIsIG9iamVjdFN0b3JlSUQsIG1ldGFkYXRhKSk7CiB9CiAKLXZvaWQgVW5pcXVlSURCRGF0YWJh
c2U6OmRlbGV0ZUluZGV4KGNvbnN0IElEQklkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmll
ciwgaW50NjRfdCBvYmplY3RTdG9yZUlELCBpbnQ2NF90IGluZGV4SUQsIHN0ZDo6ZnVuY3Rpb248
dm9pZChib29sKT4gc3VjY2Vzc0NhbGxiYWNrKQordm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6ZGVs
ZXRlSW5kZXgoY29uc3QgSURCSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBpbnQ2
NF90IG9iamVjdFN0b3JlSUQsIGludDY0X3QgaW5kZXhJRCwgc3RkOjpmdW5jdGlvbjx2b2lkIChi
b29sKT4gc3VjY2Vzc0NhbGxiYWNrKQogewogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7
CiAKQEAgLTU0NCw3ICs1NDQsNyBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpkZWxldGVJbmRl
eChjb25zdCBJREJJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsCiAgICAgICAgICAg
ICAgICAgb2JqZWN0U3RvcmVGaW5kLT52YWx1ZS5pbmRleGVzLnNldChtZXRhZGF0YS5pZCwgbWV0
YWRhdGEpOwogICAgICAgICB9CiAgICAgICAgIHN1Y2Nlc3NDYWxsYmFjayhzdWNjZXNzKTsKLSAg
ICB9LCBbdGhpcywgb2JqZWN0U3RvcmVJRCwgbWV0YWRhdGEsIHN1Y2Nlc3NDYWxsYmFja10oKSB7
CisgICAgfSwgW3RoaXMsIG9iamVjdFN0b3JlSUQsIG1ldGFkYXRhLCBzdWNjZXNzQ2FsbGJhY2td
IHsKICAgICAgICAgYXV0byBvYmplY3RTdG9yZUZpbmQgPSBtX21ldGFkYXRhLT5vYmplY3RTdG9y
ZXMuZmluZChvYmplY3RTdG9yZUlEKTsKICAgICAgICAgaWYgKG9iamVjdFN0b3JlRmluZCAhPSBt
X21ldGFkYXRhLT5vYmplY3RTdG9yZXMuZW5kKCkpCiAgICAgICAgICAgICBvYmplY3RTdG9yZUZp
bmQtPnZhbHVlLmluZGV4ZXMuc2V0KG1ldGFkYXRhLmlkLCBtZXRhZGF0YSk7CkBAIC01NTcsNyAr
NTU3LDcgQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6ZGVsZXRlSW5kZXgoY29uc3QgSURCSWRl
bnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLAogICAgIHBvc3REYXRhYmFzZVRhc2soY3Jl
YXRlQXN5bmNUYXNrKCp0aGlzLCAmVW5pcXVlSURCRGF0YWJhc2U6OmRlbGV0ZUluZGV4SW5CYWNr
aW5nU3RvcmUsIHJlcXVlc3RJRCwgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBvYmplY3RTdG9yZUlE
LCBpbmRleElEKSk7CiB9CiAKLXZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OnB1dFJlY29yZChjb25z
dCBJREJJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIGludDY0X3Qgb2JqZWN0U3Rv
cmVJRCwgY29uc3QgSURCS2V5RGF0YSYga2V5RGF0YSwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNl
JiB2YWx1ZSwgaW50NjRfdCBwdXRNb2RlLCBjb25zdCBWZWN0b3I8aW50NjRfdD4mIGluZGV4SURz
LCBjb25zdCBWZWN0b3I8VmVjdG9yPElEQktleURhdGE+PiYgaW5kZXhLZXlzLCBzdGQ6OmZ1bmN0
aW9uPHZvaWQoY29uc3QgSURCS2V5RGF0YSYsIHVpbnQzMl90LCBjb25zdCBTdHJpbmcmKT4gY2Fs
bGJhY2spCit2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpwdXRSZWNvcmQoY29uc3QgSURCSWRlbnRp
ZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBpbnQ2NF90IG9iamVjdFN0b3JlSUQsIGNvbnN0
IElEQktleURhdGEmIGtleURhdGEsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgdmFsdWUsIGlu
dDY0X3QgcHV0TW9kZSwgY29uc3QgVmVjdG9yPGludDY0X3Q+JiBpbmRleElEcywgY29uc3QgVmVj
dG9yPFZlY3RvcjxJREJLZXlEYXRhPj4mIGluZGV4S2V5cywgc3RkOjpmdW5jdGlvbjx2b2lkIChj
b25zdCBJREJLZXlEYXRhJiwgdWludDMyX3QsIGNvbnN0IFN0cmluZyYpPiBjYWxsYmFjaykKIHsK
ICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogCkBAIC01NzAsNyArNTcwLDcgQEAgdm9p
ZCBVbmlxdWVJREJEYXRhYmFzZTo6cHV0UmVjb3JkKGNvbnN0IElEQklkZW50aWZpZXImIHRyYW5z
YWN0aW9uSWRlbnRpZmllciwgaW4KIAogICAgIFJlZlB0cjxBc3luY1JlcXVlc3Q+IHJlcXVlc3Qg
PSBBc3luY1JlcXVlc3RJbXBsPGNvbnN0IElEQktleURhdGEmLCB1aW50MzJfdCwgY29uc3QgU3Ry
aW5nJj46OmNyZWF0ZShbdGhpcywgY2FsbGJhY2tdKGNvbnN0IElEQktleURhdGEmIGtleURhdGEs
IHVpbnQzMl90IGVycm9yQ29kZSwgY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpIHsKICAgICAg
ICAgY2FsbGJhY2soa2V5RGF0YSwgZXJyb3JDb2RlLCBlcnJvck1lc3NhZ2UpOwotICAgIH0sIFt0
aGlzLCBjYWxsYmFja10oKSB7CisgICAgfSwgW3RoaXMsIGNhbGxiYWNrXSB7CiAgICAgICAgIGNh
bGxiYWNrKElEQktleURhdGEoKSwgSU5WQUxJRF9TVEFURV9FUlIsICJVbmFibGUgdG8gcHV0IHJl
Y29yZCBpbnRvIGRhdGFiYXNlIik7CiAgICAgfSk7CiAKQEAgLTU4MCw3ICs1ODAsNyBAQCB2b2lk
IFVuaXF1ZUlEQkRhdGFiYXNlOjpwdXRSZWNvcmQoY29uc3QgSURCSWRlbnRpZmllciYgdHJhbnNh
Y3Rpb25JZGVudGlmaWVyLCBpbgogICAgIHBvc3REYXRhYmFzZVRhc2soY3JlYXRlQXN5bmNUYXNr
KCp0aGlzLCAmVW5pcXVlSURCRGF0YWJhc2U6OnB1dFJlY29yZEluQmFja2luZ1N0b3JlLCByZXF1
ZXN0SUQsIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgbV9tZXRhZGF0YS0+b2JqZWN0U3RvcmVzLmdl
dChvYmplY3RTdG9yZUlEKSwga2V5RGF0YSwgdmFsdWUudmVjdG9yKCksIHB1dE1vZGUsIGluZGV4
SURzLCBpbmRleEtleXMpKTsKIH0KIAotdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6Z2V0UmVjb3Jk
KGNvbnN0IElEQklkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgaW50NjRfdCBvYmpl
Y3RTdG9yZUlELCBpbnQ2NF90IGluZGV4SUQsIGNvbnN0IElEQktleVJhbmdlRGF0YSYga2V5UmFu
Z2VEYXRhLCBJbmRleGVkREI6OkN1cnNvclR5cGUgY3Vyc29yVHlwZSwgc3RkOjpmdW5jdGlvbjx2
b2lkKGNvbnN0IElEQkdldFJlc3VsdCYsIHVpbnQzMl90LCBjb25zdCBTdHJpbmcmKT4gY2FsbGJh
Y2spCit2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpnZXRSZWNvcmQoY29uc3QgSURCSWRlbnRpZmll
ciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBpbnQ2NF90IG9iamVjdFN0b3JlSUQsIGludDY0X3Qg
aW5kZXhJRCwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJiBrZXlSYW5nZURhdGEsIEluZGV4ZWREQjo6
Q3Vyc29yVHlwZSBjdXJzb3JUeXBlLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKGNvbnN0IElEQkdldFJl
c3VsdCYsIHVpbnQzMl90LCBjb25zdCBTdHJpbmcmKT4gY2FsbGJhY2spCiB7CiAgICAgQVNTRVJU
KFJ1bkxvb3A6OmlzTWFpbigpKTsKIApAQCAtNTkzLDcgKzU5Myw3IEBAIHZvaWQgVW5pcXVlSURC
RGF0YWJhc2U6OmdldFJlY29yZChjb25zdCBJREJJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50
aWZpZXIsIGluCiAKICAgICBSZWZQdHI8QXN5bmNSZXF1ZXN0PiByZXF1ZXN0ID0gQXN5bmNSZXF1
ZXN0SW1wbDxjb25zdCBJREJHZXRSZXN1bHQmLCB1aW50MzJfdCwgY29uc3QgU3RyaW5nJj46OmNy
ZWF0ZShbdGhpcywgY2FsbGJhY2tdKGNvbnN0IElEQkdldFJlc3VsdCYgcmVzdWx0LCB1aW50MzJf
dCBlcnJvckNvZGUsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKSB7CiAgICAgICAgIGNhbGxi
YWNrKHJlc3VsdCwgZXJyb3JDb2RlLCBlcnJvck1lc3NhZ2UpOwotICAgIH0sIFt0aGlzLCBjYWxs
YmFja10oKSB7CisgICAgfSwgW3RoaXMsIGNhbGxiYWNrXSB7CiAgICAgICAgIGNhbGxiYWNrKElE
QkdldFJlc3VsdCgpLCBJTlZBTElEX1NUQVRFX0VSUiwgIlVuYWJsZSB0byBnZXQgcmVjb3JkIGZy
b20gZGF0YWJhc2UiKTsKICAgICB9KTsKIApAQCAtNjAzLDcgKzYwMyw3IEBAIHZvaWQgVW5pcXVl
SURCRGF0YWJhc2U6OmdldFJlY29yZChjb25zdCBJREJJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklk
ZW50aWZpZXIsIGluCiAgICAgcG9zdERhdGFiYXNlVGFzayhjcmVhdGVBc3luY1Rhc2soKnRoaXMs
ICZVbmlxdWVJREJEYXRhYmFzZTo6Z2V0UmVjb3JkRnJvbUJhY2tpbmdTdG9yZSwgcmVxdWVzdElE
LCB0cmFuc2FjdGlvbklkZW50aWZpZXIsIG1fbWV0YWRhdGEtPm9iamVjdFN0b3Jlcy5nZXQob2Jq
ZWN0U3RvcmVJRCksIGluZGV4SUQsIGtleVJhbmdlRGF0YSwgY3Vyc29yVHlwZSkpOwogfQogCi12
b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpvcGVuQ3Vyc29yKGNvbnN0IElEQklkZW50aWZpZXImIHRy
YW5zYWN0aW9uSWRlbnRpZmllciwgaW50NjRfdCBvYmplY3RTdG9yZUlELCBpbnQ2NF90IGluZGV4
SUQsIEluZGV4ZWREQjo6Q3Vyc29yRGlyZWN0aW9uIGN1cnNvckRpcmVjdGlvbiwgSW5kZXhlZERC
OjpDdXJzb3JUeXBlIGN1cnNvclR5cGUsIElEQkRhdGFiYXNlQmFja2VuZDo6VGFza1R5cGUgdGFz
a1R5cGUsIGNvbnN0IElEQktleVJhbmdlRGF0YSYga2V5UmFuZ2VEYXRhLCBzdGQ6OmZ1bmN0aW9u
PHZvaWQoaW50NjRfdCwgY29uc3QgSURCS2V5RGF0YSYsIGNvbnN0IElEQktleURhdGEmLCBQYXNz
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4sIHVpbnQzMl90LCBjb25zdCBTdHJpbmcmKT4gY2FsbGJhY2sp
Cit2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpvcGVuQ3Vyc29yKGNvbnN0IElEQklkZW50aWZpZXIm
IHRyYW5zYWN0aW9uSWRlbnRpZmllciwgaW50NjRfdCBvYmplY3RTdG9yZUlELCBpbnQ2NF90IGlu
ZGV4SUQsIEluZGV4ZWREQjo6Q3Vyc29yRGlyZWN0aW9uIGN1cnNvckRpcmVjdGlvbiwgSW5kZXhl
ZERCOjpDdXJzb3JUeXBlIGN1cnNvclR5cGUsIElEQkRhdGFiYXNlQmFja2VuZDo6VGFza1R5cGUg
dGFza1R5cGUsIGNvbnN0IElEQktleVJhbmdlRGF0YSYga2V5UmFuZ2VEYXRhLCBzdGQ6OmZ1bmN0
aW9uPHZvaWQgKGludDY0X3QsIGNvbnN0IElEQktleURhdGEmLCBjb25zdCBJREJLZXlEYXRhJiwg
UGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+LCB1aW50MzJfdCwgY29uc3QgU3RyaW5nJik+IGNhbGxi
YWNrKQogewogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAKQEAgLTYxNiw3ICs2MTYs
NyBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpvcGVuQ3Vyc29yKGNvbnN0IElEQklkZW50aWZp
ZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgaQogCiAgICAgUmVmUHRyPEFzeW5jUmVxdWVzdD4g
cmVxdWVzdCA9IEFzeW5jUmVxdWVzdEltcGw8aW50NjRfdCwgY29uc3QgSURCS2V5RGF0YSYsIGNv
bnN0IElEQktleURhdGEmLCBQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4sIHVpbnQzMl90LCBjb25z
dCBTdHJpbmcmPjo6Y3JlYXRlKFt0aGlzLCBjYWxsYmFja10oaW50NjRfdCBjdXJzb3JJRCwgY29u
c3QgSURCS2V5RGF0YSYga2V5LCBjb25zdCBJREJLZXlEYXRhJiBwcmltYXJ5S2V5LCBQYXNzUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gdmFsdWUsIHVpbnQzMl90IGVycm9yQ29kZSwgY29uc3QgU3RyaW5n
JiBlcnJvck1lc3NhZ2UpIHsKICAgICAgICAgY2FsbGJhY2soY3Vyc29ySUQsIGtleSwgcHJpbWFy
eUtleSwgdmFsdWUsIGVycm9yQ29kZSwgZXJyb3JNZXNzYWdlKTsKLSAgICB9LCBbdGhpcywgY2Fs
bGJhY2tdKCkgeworICAgIH0sIFt0aGlzLCBjYWxsYmFja10gewogICAgICAgICBjYWxsYmFjaygw
LCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBJTlZBTElEX1NUQVRFX0VSUiwgIlVuYWJsZSB0
byBnZXQgcmVjb3JkIGZyb20gZGF0YWJhc2UiKTsKICAgICB9KTsKIApAQCAtNjI2LDcgKzYyNiw3
IEBAIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6Om9wZW5DdXJzb3IoY29uc3QgSURCSWRlbnRpZmll
ciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBpCiAgICAgcG9zdERhdGFiYXNlVGFzayhjcmVhdGVB
c3luY1Rhc2soKnRoaXMsICZVbmlxdWVJREJEYXRhYmFzZTo6b3BlbkN1cnNvckluQmFja2luZ1N0
b3JlLCByZXF1ZXN0SUQsIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgb2JqZWN0U3RvcmVJRCwgaW5k
ZXhJRCwgY3Vyc29yRGlyZWN0aW9uLCBjdXJzb3JUeXBlLCB0YXNrVHlwZSwga2V5UmFuZ2VEYXRh
KSk7CiB9CiAKLXZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmN1cnNvckFkdmFuY2UoY29uc3QgSURC
SWRlbnRpZmllciYgY3Vyc29ySWRlbnRpZmllciwgdWludDY0X3QgY291bnQsIHN0ZDo6ZnVuY3Rp
b248dm9pZChjb25zdCBJREJLZXlEYXRhJiwgY29uc3QgSURCS2V5RGF0YSYsIFBhc3NSZWZQdHI8
U2hhcmVkQnVmZmVyPiwgdWludDMyX3QsIGNvbnN0IFN0cmluZyYpPiBjYWxsYmFjaykKK3ZvaWQg
VW5pcXVlSURCRGF0YWJhc2U6OmN1cnNvckFkdmFuY2UoY29uc3QgSURCSWRlbnRpZmllciYgY3Vy
c29ySWRlbnRpZmllciwgdWludDY0X3QgY291bnQsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoY29uc3Qg
SURCS2V5RGF0YSYsIGNvbnN0IElEQktleURhdGEmLCBQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4s
IHVpbnQzMl90LCBjb25zdCBTdHJpbmcmKT4gY2FsbGJhY2spCiB7CiAgICAgQVNTRVJUKFJ1bkxv
b3A6OmlzTWFpbigpKTsKIApAQCAtNjM3LDcgKzYzNyw3IEBAIHZvaWQgVW5pcXVlSURCRGF0YWJh
c2U6OmN1cnNvckFkdmFuY2UoY29uc3QgSURCSWRlbnRpZmllciYgY3Vyc29ySWRlbnRpZmllciwg
dWluCiAKICAgICBSZWZQdHI8QXN5bmNSZXF1ZXN0PiByZXF1ZXN0ID0gQXN5bmNSZXF1ZXN0SW1w
bDxjb25zdCBJREJLZXlEYXRhJiwgY29uc3QgSURCS2V5RGF0YSYsIFBhc3NSZWZQdHI8U2hhcmVk
QnVmZmVyPiwgdWludDMyX3QsIGNvbnN0IFN0cmluZyY+OjpjcmVhdGUoW3RoaXMsIGNhbGxiYWNr
XShjb25zdCBJREJLZXlEYXRhJiBrZXksIGNvbnN0IElEQktleURhdGEmIHByaW1hcnlLZXksIFBh
c3NSZWZQdHI8U2hhcmVkQnVmZmVyPiB2YWx1ZSwgdWludDMyX3QgZXJyb3JDb2RlLCBjb25zdCBT
dHJpbmcmIGVycm9yTWVzc2FnZSkgewogICAgICAgICBjYWxsYmFjayhrZXksIHByaW1hcnlLZXks
IHZhbHVlLCBlcnJvckNvZGUsIGVycm9yTWVzc2FnZSk7Ci0gICAgfSwgW3RoaXMsIGNhbGxiYWNr
XSgpIHsKKyAgICB9LCBbdGhpcywgY2FsbGJhY2tdIHsKICAgICAgICAgY2FsbGJhY2sobnVsbHB0
ciwgbnVsbHB0ciwgbnVsbHB0ciwgSU5WQUxJRF9TVEFURV9FUlIsICJVbmFibGUgdG8gYWR2YW5j
ZSBjdXJzb3IgaW4gZGF0YWJhc2UiKTsKICAgICB9KTsKIApAQCAtNjQ3LDcgKzY0Nyw3IEBAIHZv
aWQgVW5pcXVlSURCRGF0YWJhc2U6OmN1cnNvckFkdmFuY2UoY29uc3QgSURCSWRlbnRpZmllciYg
Y3Vyc29ySWRlbnRpZmllciwgdWluCiAgICAgcG9zdERhdGFiYXNlVGFzayhjcmVhdGVBc3luY1Rh
c2soKnRoaXMsICZVbmlxdWVJREJEYXRhYmFzZTo6YWR2YW5jZUN1cnNvckluQmFja2luZ1N0b3Jl
LCByZXF1ZXN0SUQsIGN1cnNvcklkZW50aWZpZXIsIGNvdW50KSk7CiB9CiAKLXZvaWQgVW5pcXVl
SURCRGF0YWJhc2U6OmN1cnNvckl0ZXJhdGUoY29uc3QgSURCSWRlbnRpZmllciYgY3Vyc29ySWRl
bnRpZmllciwgY29uc3QgSURCS2V5RGF0YSYga2V5LCBzdGQ6OmZ1bmN0aW9uPHZvaWQoY29uc3Qg
SURCS2V5RGF0YSYsIGNvbnN0IElEQktleURhdGEmLCBQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4s
IHVpbnQzMl90LCBjb25zdCBTdHJpbmcmKT4gY2FsbGJhY2spCit2b2lkIFVuaXF1ZUlEQkRhdGFi
YXNlOjpjdXJzb3JJdGVyYXRlKGNvbnN0IElEQklkZW50aWZpZXImIGN1cnNvcklkZW50aWZpZXIs
IGNvbnN0IElEQktleURhdGEmIGtleSwgc3RkOjpmdW5jdGlvbjx2b2lkIChjb25zdCBJREJLZXlE
YXRhJiwgY29uc3QgSURCS2V5RGF0YSYsIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiwgdWludDMy
X3QsIGNvbnN0IFN0cmluZyYpPiBjYWxsYmFjaykKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNN
YWluKCkpOwogCkBAIC02NTgsNyArNjU4LDcgQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6Y3Vy
c29ySXRlcmF0ZShjb25zdCBJREJJZGVudGlmaWVyJiBjdXJzb3JJZGVudGlmaWVyLCBjb24KIAog
ICAgIFJlZlB0cjxBc3luY1JlcXVlc3Q+IHJlcXVlc3QgPSBBc3luY1JlcXVlc3RJbXBsPGNvbnN0
IElEQktleURhdGEmLCBjb25zdCBJREJLZXlEYXRhJiwgUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+
LCB1aW50MzJfdCwgY29uc3QgU3RyaW5nJj46OmNyZWF0ZShbdGhpcywgY2FsbGJhY2tdKGNvbnN0
IElEQktleURhdGEmIGtleSwgY29uc3QgSURCS2V5RGF0YSYgcHJpbWFyeUtleSwgUGFzc1JlZlB0
cjxTaGFyZWRCdWZmZXI+IHZhbHVlLCB1aW50MzJfdCBlcnJvckNvZGUsIGNvbnN0IFN0cmluZyYg
ZXJyb3JNZXNzYWdlKSB7CiAgICAgICAgIGNhbGxiYWNrKGtleSwgcHJpbWFyeUtleSwgdmFsdWUs
IGVycm9yQ29kZSwgZXJyb3JNZXNzYWdlKTsKLSAgICB9LCBbdGhpcywgY2FsbGJhY2tdKCkgewor
ICAgIH0sIFt0aGlzLCBjYWxsYmFja10gewogICAgICAgICBjYWxsYmFjayhudWxscHRyLCBudWxs
cHRyLCBudWxscHRyLCBJTlZBTElEX1NUQVRFX0VSUiwgIlVuYWJsZSB0byBpdGVyYXRlIGN1cnNv
ciBpbiBkYXRhYmFzZSIpOwogICAgIH0pOwogCkBAIC02NjgsNyArNjY4LDcgQEAgdm9pZCBVbmlx
dWVJREJEYXRhYmFzZTo6Y3Vyc29ySXRlcmF0ZShjb25zdCBJREJJZGVudGlmaWVyJiBjdXJzb3JJ
ZGVudGlmaWVyLCBjb24KICAgICBwb3N0RGF0YWJhc2VUYXNrKGNyZWF0ZUFzeW5jVGFzaygqdGhp
cywgJlVuaXF1ZUlEQkRhdGFiYXNlOjppdGVyYXRlQ3Vyc29ySW5CYWNraW5nU3RvcmUsIHJlcXVl
c3RJRCwgY3Vyc29ySWRlbnRpZmllciwga2V5KSk7CiB9CiAKLXZvaWQgVW5pcXVlSURCRGF0YWJh
c2U6OmNvdW50KGNvbnN0IElEQklkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgaW50
NjRfdCBvYmplY3RTdG9yZUlELCBpbnQ2NF90IGluZGV4SUQsIGNvbnN0IElEQktleVJhbmdlRGF0
YSYga2V5UmFuZ2VEYXRhLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoaW50NjRfdCwgdWludDMyX3QsIGNv
bnN0IFN0cmluZyYpPiBjYWxsYmFjaykKK3ZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmNvdW50KGNv
bnN0IElEQklkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgaW50NjRfdCBvYmplY3RT
dG9yZUlELCBpbnQ2NF90IGluZGV4SUQsIGNvbnN0IElEQktleVJhbmdlRGF0YSYga2V5UmFuZ2VE
YXRhLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKGludDY0X3QsIHVpbnQzMl90LCBjb25zdCBTdHJpbmcm
KT4gY2FsbGJhY2spCiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKIApAQCAtNjc5
LDcgKzY3OSw3IEBAIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmNvdW50KGNvbnN0IElEQklkZW50
aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgaW50NjRfCiAKICAgICBSZWZQdHI8QXN5bmNS
ZXF1ZXN0PiByZXF1ZXN0ID0gQXN5bmNSZXF1ZXN0SW1wbDxpbnQ2NF90LCB1aW50MzJfdCwgY29u
c3QgU3RyaW5nJj46OmNyZWF0ZShbdGhpcywgY2FsbGJhY2tdKGludDY0X3QgY291bnQsIHVpbnQz
Ml90IGVycm9yQ29kZSwgY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpIHsKICAgICAgICAgY2Fs
bGJhY2soY291bnQsIGVycm9yQ29kZSwgZXJyb3JNZXNzYWdlKTsKLSAgICB9LCBbdGhpcywgY2Fs
bGJhY2tdKCkgeworICAgIH0sIFt0aGlzLCBjYWxsYmFja10gewogICAgICAgICBjYWxsYmFjaygw
LCBJTlZBTElEX1NUQVRFX0VSUiwgIlVuYWJsZSB0byBnZXQgY291bnQgZnJvbSBkYXRhYmFzZSIp
OwogICAgIH0pOwogCkBAIC02ODksNyArNjg5LDcgQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6
Y291bnQoY29uc3QgSURCSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBpbnQ2NF8K
ICAgICBwb3N0RGF0YWJhc2VUYXNrKGNyZWF0ZUFzeW5jVGFzaygqdGhpcywgJlVuaXF1ZUlEQkRh
dGFiYXNlOjpjb3VudEluQmFja2luZ1N0b3JlLCByZXF1ZXN0SUQsIHRyYW5zYWN0aW9uSWRlbnRp
Zmllciwgb2JqZWN0U3RvcmVJRCwgaW5kZXhJRCwga2V5UmFuZ2VEYXRhKSk7CiB9CiAKLXZvaWQg
VW5pcXVlSURCRGF0YWJhc2U6OmRlbGV0ZVJhbmdlKGNvbnN0IElEQklkZW50aWZpZXImIHRyYW5z
YWN0aW9uSWRlbnRpZmllciwgaW50NjRfdCBvYmplY3RTdG9yZUlELCBjb25zdCBJREJLZXlSYW5n
ZURhdGEmIGtleVJhbmdlRGF0YSwgc3RkOjpmdW5jdGlvbjx2b2lkKHVpbnQzMl90LCBjb25zdCBT
dHJpbmcmKT4gY2FsbGJhY2spCit2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpkZWxldGVSYW5nZShj
b25zdCBJREJJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIGludDY0X3Qgb2JqZWN0
U3RvcmVJRCwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJiBrZXlSYW5nZURhdGEsIHN0ZDo6ZnVuY3Rp
b248dm9pZCAodWludDMyX3QsIGNvbnN0IFN0cmluZyYpPiBjYWxsYmFjaykKIHsKICAgICBBU1NF
UlQoUnVuTG9vcDo6aXNNYWluKCkpOwogCkBAIC03MDAsNyArNzAwLDcgQEAgdm9pZCBVbmlxdWVJ
REJEYXRhYmFzZTo6ZGVsZXRlUmFuZ2UoY29uc3QgSURCSWRlbnRpZmllciYgdHJhbnNhY3Rpb25J
ZGVudGlmaWVyLAogCiAgICAgUmVmUHRyPEFzeW5jUmVxdWVzdD4gcmVxdWVzdCA9IEFzeW5jUmVx
dWVzdEltcGw8dWludDMyX3QsIGNvbnN0IFN0cmluZyY+OjpjcmVhdGUoW2NhbGxiYWNrXSh1aW50
MzJfdCBlcnJvckNvZGUsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKSB7CiAgICAgICAgIGNh
bGxiYWNrKGVycm9yQ29kZSwgZXJyb3JNZXNzYWdlKTsKLSAgICB9LCBbY2FsbGJhY2tdKCkgewor
ICAgIH0sIFtjYWxsYmFja10gewogICAgICAgICBjYWxsYmFjayhJTlZBTElEX1NUQVRFX0VSUiwg
IlVuYWJsZSB0byBkZWxldGVSYW5nZSBmcm9tIGRhdGFiYXNlIik7CiAgICAgfSk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9JbmRleGVkREIvVW5pcXVlSURC
RGF0YWJhc2UuaCBiL1NvdXJjZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9JbmRleGVkREIvVW5p
cXVlSURCRGF0YWJhc2UuaAppbmRleCBlMWI5NTU1ZDg4YWQxODM5NTFlNTNmNGMwYmI2ZTUyYmVi
OGM0OWQ0Li4wMjlhYThjMjk2ZTUzNDA3Nzc4YTgwNDBkMzM2OTJhYzg5YjYwYzU5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvSW5kZXhlZERCL1VuaXF1ZUlEQkRh
dGFiYXNlLmgKKysrIGIvU291cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0luZGV4ZWREQi9V
bmlxdWVJREJEYXRhYmFzZS5oCkBAIC03NiwzMiArNzYsMzIgQEAgcHVibGljOgogICAgIHZvaWQg
cmVnaXN0ZXJDb25uZWN0aW9uKERhdGFiYXNlUHJvY2Vzc0lEQkNvbm5lY3Rpb24mKTsKICAgICB2
b2lkIHVucmVnaXN0ZXJDb25uZWN0aW9uKERhdGFiYXNlUHJvY2Vzc0lEQkNvbm5lY3Rpb24mKTsK
IAotICAgIHZvaWQgZGVsZXRlRGF0YWJhc2Uoc3RkOjpmdW5jdGlvbjx2b2lkKGJvb2wpPiBzdWNj
ZXNzQ2FsbGJhY2spOworICAgIHZvaWQgZGVsZXRlRGF0YWJhc2Uoc3RkOjpmdW5jdGlvbjx2b2lk
IChib29sKT4gc3VjY2Vzc0NhbGxiYWNrKTsKIAotICAgIHZvaWQgZ2V0T3JFc3RhYmxpc2hJREJE
YXRhYmFzZU1ldGFkYXRhKHN0ZDo6ZnVuY3Rpb248dm9pZChib29sLCBjb25zdCBXZWJDb3JlOjpJ
REJEYXRhYmFzZU1ldGFkYXRhJik+IGNvbXBsZXRpb25DYWxsYmFjayk7CisgICAgdm9pZCBnZXRP
ckVzdGFibGlzaElEQkRhdGFiYXNlTWV0YWRhdGEoc3RkOjpmdW5jdGlvbjx2b2lkIChib29sLCBj
b25zdCBXZWJDb3JlOjpJREJEYXRhYmFzZU1ldGFkYXRhJik+IGNvbXBsZXRpb25DYWxsYmFjayk7
CiAKLSAgICB2b2lkIG9wZW5UcmFuc2FjdGlvbihjb25zdCBJREJJZGVudGlmaWVyJiB0cmFuc2Fj
dGlvbklkZW50aWZpZXIsIGNvbnN0IFZlY3RvcjxpbnQ2NF90PiYgb2JqZWN0U3RvcmVJRHMsIFdl
YkNvcmU6OkluZGV4ZWREQjo6VHJhbnNhY3Rpb25Nb2RlLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoYm9v
bCk+IHN1Y2Nlc3NDYWxsYmFjayk7Ci0gICAgdm9pZCBiZWdpblRyYW5zYWN0aW9uKGNvbnN0IElE
QklkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgc3RkOjpmdW5jdGlvbjx2b2lkKGJv
b2wpPiBzdWNjZXNzQ2FsbGJhY2spOwotICAgIHZvaWQgY29tbWl0VHJhbnNhY3Rpb24oY29uc3Qg
SURCSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBzdGQ6OmZ1bmN0aW9uPHZvaWQo
Ym9vbCk+IHN1Y2Nlc3NDYWxsYmFjayk7Ci0gICAgdm9pZCByZXNldFRyYW5zYWN0aW9uKGNvbnN0
IElEQklkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgc3RkOjpmdW5jdGlvbjx2b2lk
KGJvb2wpPiBzdWNjZXNzQ2FsbGJhY2spOwotICAgIHZvaWQgcm9sbGJhY2tUcmFuc2FjdGlvbihj
b25zdCBJREJJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIHN0ZDo6ZnVuY3Rpb248
dm9pZChib29sKT4gc3VjY2Vzc0NhbGxiYWNrKTsKKyAgICB2b2lkIG9wZW5UcmFuc2FjdGlvbihj
b25zdCBJREJJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIGNvbnN0IFZlY3Rvcjxp
bnQ2NF90PiYgb2JqZWN0U3RvcmVJRHMsIFdlYkNvcmU6OkluZGV4ZWREQjo6VHJhbnNhY3Rpb25N
b2RlLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKGJvb2wpPiBzdWNjZXNzQ2FsbGJhY2spOworICAgIHZv
aWQgYmVnaW5UcmFuc2FjdGlvbihjb25zdCBJREJJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50
aWZpZXIsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoYm9vbCk+IHN1Y2Nlc3NDYWxsYmFjayk7CisgICAg
dm9pZCBjb21taXRUcmFuc2FjdGlvbihjb25zdCBJREJJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklk
ZW50aWZpZXIsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoYm9vbCk+IHN1Y2Nlc3NDYWxsYmFjayk7Cisg
ICAgdm9pZCByZXNldFRyYW5zYWN0aW9uKGNvbnN0IElEQklkZW50aWZpZXImIHRyYW5zYWN0aW9u
SWRlbnRpZmllciwgc3RkOjpmdW5jdGlvbjx2b2lkIChib29sKT4gc3VjY2Vzc0NhbGxiYWNrKTsK
KyAgICB2b2lkIHJvbGxiYWNrVHJhbnNhY3Rpb24oY29uc3QgSURCSWRlbnRpZmllciYgdHJhbnNh
Y3Rpb25JZGVudGlmaWVyLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKGJvb2wpPiBzdWNjZXNzQ2FsbGJh
Y2spOwogCi0gICAgdm9pZCBjaGFuZ2VEYXRhYmFzZVZlcnNpb24oY29uc3QgSURCSWRlbnRpZmll
ciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCB1aW50NjRfdCBuZXdWZXJzaW9uLCBzdGQ6OmZ1bmN0
aW9uPHZvaWQoYm9vbCk+IHN1Y2Nlc3NDYWxsYmFjayk7Ci0gICAgdm9pZCBjcmVhdGVPYmplY3RT
dG9yZShjb25zdCBJREJJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIGNvbnN0IFdl
YkNvcmU6OklEQk9iamVjdFN0b3JlTWV0YWRhdGEmLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoYm9vbCk+
IHN1Y2Nlc3NDYWxsYmFjayk7Ci0gICAgdm9pZCBkZWxldGVPYmplY3RTdG9yZShjb25zdCBJREJJ
ZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIGludDY0X3Qgb2JqZWN0U3RvcmVJRCwg
c3RkOjpmdW5jdGlvbjx2b2lkKGJvb2wpPiBzdWNjZXNzQ2FsbGJhY2spOwotICAgIHZvaWQgY2xl
YXJPYmplY3RTdG9yZShjb25zdCBJREJJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIs
IGludDY0X3Qgb2JqZWN0U3RvcmVJRCwgc3RkOjpmdW5jdGlvbjx2b2lkKGJvb2wpPiBzdWNjZXNz
Q2FsbGJhY2spOwotICAgIHZvaWQgY3JlYXRlSW5kZXgoY29uc3QgSURCSWRlbnRpZmllciYgdHJh
bnNhY3Rpb25JZGVudGlmaWVyLCBpbnQ2NF90IG9iamVjdFN0b3JlSUQsIGNvbnN0IFdlYkNvcmU6
OklEQkluZGV4TWV0YWRhdGEmLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoYm9vbCk+IHN1Y2Nlc3NDYWxs
YmFjayk7Ci0gICAgdm9pZCBkZWxldGVJbmRleChjb25zdCBJREJJZGVudGlmaWVyJiB0cmFuc2Fj
dGlvbklkZW50aWZpZXIsIGludDY0X3Qgb2JqZWN0U3RvcmVJRCwgaW50NjRfdCBpbmRleElELCBz
dGQ6OmZ1bmN0aW9uPHZvaWQoYm9vbCk+IHN1Y2Nlc3NDYWxsYmFjayk7CisgICAgdm9pZCBjaGFu
Z2VEYXRhYmFzZVZlcnNpb24oY29uc3QgSURCSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlm
aWVyLCB1aW50NjRfdCBuZXdWZXJzaW9uLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKGJvb2wpPiBzdWNj
ZXNzQ2FsbGJhY2spOworICAgIHZvaWQgY3JlYXRlT2JqZWN0U3RvcmUoY29uc3QgSURCSWRlbnRp
ZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpJREJPYmplY3RTdG9y
ZU1ldGFkYXRhJiwgc3RkOjpmdW5jdGlvbjx2b2lkIChib29sKT4gc3VjY2Vzc0NhbGxiYWNrKTsK
KyAgICB2b2lkIGRlbGV0ZU9iamVjdFN0b3JlKGNvbnN0IElEQklkZW50aWZpZXImIHRyYW5zYWN0
aW9uSWRlbnRpZmllciwgaW50NjRfdCBvYmplY3RTdG9yZUlELCBzdGQ6OmZ1bmN0aW9uPHZvaWQg
KGJvb2wpPiBzdWNjZXNzQ2FsbGJhY2spOworICAgIHZvaWQgY2xlYXJPYmplY3RTdG9yZShjb25z
dCBJREJJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIGludDY0X3Qgb2JqZWN0U3Rv
cmVJRCwgc3RkOjpmdW5jdGlvbjx2b2lkIChib29sKT4gc3VjY2Vzc0NhbGxiYWNrKTsKKyAgICB2
b2lkIGNyZWF0ZUluZGV4KGNvbnN0IElEQklkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmll
ciwgaW50NjRfdCBvYmplY3RTdG9yZUlELCBjb25zdCBXZWJDb3JlOjpJREJJbmRleE1ldGFkYXRh
Jiwgc3RkOjpmdW5jdGlvbjx2b2lkIChib29sKT4gc3VjY2Vzc0NhbGxiYWNrKTsKKyAgICB2b2lk
IGRlbGV0ZUluZGV4KGNvbnN0IElEQklkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwg
aW50NjRfdCBvYmplY3RTdG9yZUlELCBpbnQ2NF90IGluZGV4SUQsIHN0ZDo6ZnVuY3Rpb248dm9p
ZCAoYm9vbCk+IHN1Y2Nlc3NDYWxsYmFjayk7CiAKLSAgICB2b2lkIHB1dFJlY29yZChjb25zdCBJ
REJJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIGludDY0X3Qgb2JqZWN0U3RvcmVJ
RCwgY29uc3QgV2ViQ29yZTo6SURCS2V5RGF0YSYsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYg
dmFsdWUsIGludDY0X3QgcHV0TW9kZSwgY29uc3QgVmVjdG9yPGludDY0X3Q+JiBpbmRleElEcywg
Y29uc3QgVmVjdG9yPFZlY3RvcjxXZWJDb3JlOjpJREJLZXlEYXRhPj4mIGluZGV4S2V5cywgc3Rk
OjpmdW5jdGlvbjx2b2lkKGNvbnN0IFdlYkNvcmU6OklEQktleURhdGEmLCB1aW50MzJfdCwgY29u
c3QgU3RyaW5nJik+IGNhbGxiYWNrKTsKLSAgICB2b2lkIGdldFJlY29yZChjb25zdCBJREJJZGVu
dGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIGludDY0X3Qgb2JqZWN0U3RvcmVJRCwgaW50
NjRfdCBpbmRleElELCBjb25zdCBXZWJDb3JlOjpJREJLZXlSYW5nZURhdGEmLCBXZWJDb3JlOjpJ
bmRleGVkREI6OkN1cnNvclR5cGUsIHN0ZDo6ZnVuY3Rpb248dm9pZChjb25zdCBXZWJDb3JlOjpJ
REJHZXRSZXN1bHQmLCB1aW50MzJfdCwgY29uc3QgU3RyaW5nJik+IGNhbGxiYWNrKTsKKyAgICB2
b2lkIHB1dFJlY29yZChjb25zdCBJREJJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIs
IGludDY0X3Qgb2JqZWN0U3RvcmVJRCwgY29uc3QgV2ViQ29yZTo6SURCS2V5RGF0YSYsIGNvbnN0
IElQQzo6RGF0YVJlZmVyZW5jZSYgdmFsdWUsIGludDY0X3QgcHV0TW9kZSwgY29uc3QgVmVjdG9y
PGludDY0X3Q+JiBpbmRleElEcywgY29uc3QgVmVjdG9yPFZlY3RvcjxXZWJDb3JlOjpJREJLZXlE
YXRhPj4mIGluZGV4S2V5cywgc3RkOjpmdW5jdGlvbjx2b2lkIChjb25zdCBXZWJDb3JlOjpJREJL
ZXlEYXRhJiwgdWludDMyX3QsIGNvbnN0IFN0cmluZyYpPiBjYWxsYmFjayk7CisgICAgdm9pZCBn
ZXRSZWNvcmQoY29uc3QgSURCSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBpbnQ2
NF90IG9iamVjdFN0b3JlSUQsIGludDY0X3QgaW5kZXhJRCwgY29uc3QgV2ViQ29yZTo6SURCS2V5
UmFuZ2VEYXRhJiwgV2ViQ29yZTo6SW5kZXhlZERCOjpDdXJzb3JUeXBlLCBzdGQ6OmZ1bmN0aW9u
PHZvaWQgKGNvbnN0IFdlYkNvcmU6OklEQkdldFJlc3VsdCYsIHVpbnQzMl90LCBjb25zdCBTdHJp
bmcmKT4gY2FsbGJhY2spOwogCi0gICAgdm9pZCBvcGVuQ3Vyc29yKGNvbnN0IElEQklkZW50aWZp
ZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgaW50NjRfdCBvYmplY3RTdG9yZUlELCBpbnQ2NF90
IGluZGV4SUQsIFdlYkNvcmU6OkluZGV4ZWREQjo6Q3Vyc29yRGlyZWN0aW9uLCBXZWJDb3JlOjpJ
bmRleGVkREI6OkN1cnNvclR5cGUsIFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZDo6VGFza1R5
cGUsIGNvbnN0IFdlYkNvcmU6OklEQktleVJhbmdlRGF0YSYsIHN0ZDo6ZnVuY3Rpb248dm9pZChp
bnQ2NF90LCBjb25zdCBXZWJDb3JlOjpJREJLZXlEYXRhJiwgY29uc3QgV2ViQ29yZTo6SURCS2V5
RGF0YSYsIFBhc3NSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiwgdWludDMyX3QsIGNvbnN0
IFN0cmluZyYpPiBjYWxsYmFjayk7Ci0gICAgdm9pZCBjdXJzb3JBZHZhbmNlKGNvbnN0IElEQklk
ZW50aWZpZXImIGN1cnNvcklkZW50aWZpZXIsIHVpbnQ2NF90IGNvdW50LCBzdGQ6OmZ1bmN0aW9u
PHZvaWQoY29uc3QgV2ViQ29yZTo6SURCS2V5RGF0YSYsIGNvbnN0IFdlYkNvcmU6OklEQktleURh
dGEmLCBQYXNzUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4sIHVpbnQzMl90LCBjb25zdCBT
dHJpbmcmKT4gY2FsbGJhY2spOwotICAgIHZvaWQgY3Vyc29ySXRlcmF0ZShjb25zdCBJREJJZGVu
dGlmaWVyJiBjdXJzb3JJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpJREJLZXlEYXRhJiwgc3Rk
OjpmdW5jdGlvbjx2b2lkKGNvbnN0IFdlYkNvcmU6OklEQktleURhdGEmLCBjb25zdCBXZWJDb3Jl
OjpJREJLZXlEYXRhJiwgUGFzc1JlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+LCB1aW50MzJf
dCwgY29uc3QgU3RyaW5nJik+IGNhbGxiYWNrKTsKKyAgICB2b2lkIG9wZW5DdXJzb3IoY29uc3Qg
SURCSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBpbnQ2NF90IG9iamVjdFN0b3Jl
SUQsIGludDY0X3QgaW5kZXhJRCwgV2ViQ29yZTo6SW5kZXhlZERCOjpDdXJzb3JEaXJlY3Rpb24s
IFdlYkNvcmU6OkluZGV4ZWREQjo6Q3Vyc29yVHlwZSwgV2ViQ29yZTo6SURCRGF0YWJhc2VCYWNr
ZW5kOjpUYXNrVHlwZSwgY29uc3QgV2ViQ29yZTo6SURCS2V5UmFuZ2VEYXRhJiwgc3RkOjpmdW5j
dGlvbjx2b2lkIChpbnQ2NF90LCBjb25zdCBXZWJDb3JlOjpJREJLZXlEYXRhJiwgY29uc3QgV2Vi
Q29yZTo6SURCS2V5RGF0YSYsIFBhc3NSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiwgdWlu
dDMyX3QsIGNvbnN0IFN0cmluZyYpPiBjYWxsYmFjayk7CisgICAgdm9pZCBjdXJzb3JBZHZhbmNl
KGNvbnN0IElEQklkZW50aWZpZXImIGN1cnNvcklkZW50aWZpZXIsIHVpbnQ2NF90IGNvdW50LCBz
dGQ6OmZ1bmN0aW9uPHZvaWQgKGNvbnN0IFdlYkNvcmU6OklEQktleURhdGEmLCBjb25zdCBXZWJD
b3JlOjpJREJLZXlEYXRhJiwgUGFzc1JlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+LCB1aW50
MzJfdCwgY29uc3QgU3RyaW5nJik+IGNhbGxiYWNrKTsKKyAgICB2b2lkIGN1cnNvckl0ZXJhdGUo
Y29uc3QgSURCSWRlbnRpZmllciYgY3Vyc29ySWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6SURC
S2V5RGF0YSYsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoY29uc3QgV2ViQ29yZTo6SURCS2V5RGF0YSYs
IGNvbnN0IFdlYkNvcmU6OklEQktleURhdGEmLCBQYXNzUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcj4sIHVpbnQzMl90LCBjb25zdCBTdHJpbmcmKT4gY2FsbGJhY2spOwogCi0gICAgdm9pZCBj
b3VudChjb25zdCBJREJJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIGludDY0X3Qg
b2JqZWN0U3RvcmVJRCwgaW50NjRfdCBpbmRleElELCBjb25zdCBXZWJDb3JlOjpJREJLZXlSYW5n
ZURhdGEmLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoaW50NjRfdCwgdWludDMyX3QsIGNvbnN0IFN0cmlu
ZyYpPiBjYWxsYmFjayk7Ci0gICAgdm9pZCBkZWxldGVSYW5nZShjb25zdCBJREJJZGVudGlmaWVy
JiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIGludDY0X3Qgb2JqZWN0U3RvcmVJRCwgY29uc3QgV2Vi
Q29yZTo6SURCS2V5UmFuZ2VEYXRhJiwgc3RkOjpmdW5jdGlvbjx2b2lkKHVpbnQzMl90LCBjb25z
dCBTdHJpbmcmKT4gY2FsbGJhY2spOworICAgIHZvaWQgY291bnQoY29uc3QgSURCSWRlbnRpZmll
ciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBpbnQ2NF90IG9iamVjdFN0b3JlSUQsIGludDY0X3Qg
aW5kZXhJRCwgY29uc3QgV2ViQ29yZTo6SURCS2V5UmFuZ2VEYXRhJiwgc3RkOjpmdW5jdGlvbjx2
b2lkIChpbnQ2NF90LCB1aW50MzJfdCwgY29uc3QgU3RyaW5nJik+IGNhbGxiYWNrKTsKKyAgICB2
b2lkIGRlbGV0ZVJhbmdlKGNvbnN0IElEQklkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmll
ciwgaW50NjRfdCBvYmplY3RTdG9yZUlELCBjb25zdCBXZWJDb3JlOjpJREJLZXlSYW5nZURhdGEm
LCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKHVpbnQzMl90LCBjb25zdCBTdHJpbmcmKT4gY2FsbGJhY2sp
OwogCiBwcml2YXRlOgogICAgIFVuaXF1ZUlEQkRhdGFiYXNlKGNvbnN0IFVuaXF1ZUlEQkRhdGFi
YXNlSWRlbnRpZmllciYpOwpAQCAtMTMzLDcgKzEzMyw3IEBAIHByaXZhdGU6CiAgICAgLy8gUmV0
dXJucyB0cnVlIGlmIHRoaXMgb3JpZ2luIGNhbiB1c2UgdGhlIHNhbWUgZGF0YWJhc2VzIGFzIHRo
ZSBnaXZlbiBvcmlnaW4uCiAgICAgYm9vbCBjYW5TaGFyZURhdGFiYXNlcyhjb25zdCBTZWN1cml0
eU9yaWdpbkRhdGEmLCBjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmKSBjb25zdDsKIAotICAgIHZv
aWQgcG9zdFRyYW5zYWN0aW9uT3BlcmF0aW9uKGNvbnN0IElEQklkZW50aWZpZXImIHRyYW5zYWN0
aW9uSWRlbnRpZmllciwgc3RkOjp1bmlxdWVfcHRyPEFzeW5jVGFzaz4sIHN0ZDo6ZnVuY3Rpb248
dm9pZChib29sKT4gc3VjY2Vzc0NhbGxiYWNrKTsKKyAgICB2b2lkIHBvc3RUcmFuc2FjdGlvbk9w
ZXJhdGlvbihjb25zdCBJREJJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIHN0ZDo6
dW5pcXVlX3B0cjxBc3luY1Rhc2s+LCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKGJvb2wpPiBzdWNjZXNz
Q2FsbGJhY2spOwogICAgIAogICAgIC8vIFRvIGJlIGNhbGxlZCBmcm9tIHRoZSBkYXRhYmFzZSB3
b3JrcXVldWUgdGhyZWFkIG9ubHkKICAgICB2b2lkIHBlcmZvcm1OZXh0RGF0YWJhc2VUYXNrKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3Jr
Q2FjaGVTdG9yYWdlQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9OZXR3b3JrQ2FjaGVTdG9yYWdlQ29jb2EubW0KaW5kZXggN2FmZTU3YTg0YWZkNDFjYTAxZDFl
YzJhOWZhNWE5NzIzNWE4MjQ2ZC4uMDcwZGQ4MDY3NmI5NjY0MGUzNmYxYTk4YzYxNTQwODdkYmVm
NTZjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0
d29ya0NhY2hlU3RvcmFnZUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9j
ZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0b3JhZ2VDb2NvYS5tbQpAQCAtNDE1LDcgKzQxNSw3IEBA
IHZvaWQgTmV0d29ya0NhY2hlU3RvcmFnZTo6c3RvcmUoY29uc3QgTmV0d29ya0NhY2hlS2V5JiBr
ZXksIGNvbnN0IEVudHJ5JiBlbnRyeSwKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwog
CiAgICAgU3RyaW5nQ2FwdHVyZSBjYWNoZVBhdGhDYXB0dXJlKG1fZGlyZWN0b3J5UGF0aCk7Ci0g
ICAgZGlzcGF0Y2hfYXN5bmMobV9iYWNrZ3JvdW5kSU9RdWV1ZS5nZXQoKSwgW3RoaXMsIGtleSwg
ZW50cnksIGNhY2hlUGF0aENhcHR1cmUsIGNvbXBsZXRpb25IYW5kbGVyXSgpIHsKKyAgICBkaXNw
YXRjaF9hc3luYyhtX2JhY2tncm91bmRJT1F1ZXVlLmdldCgpLCBbdGhpcywga2V5LCBlbnRyeSwg
Y2FjaGVQYXRoQ2FwdHVyZSwgY29tcGxldGlvbkhhbmRsZXJdIHsKICAgICAgICAgYXV0byBkYXRh
ID0gZW5jb2RlRW50cnkoa2V5LCBlbnRyeSk7CiAgICAgICAgIGludCBmZDsKICAgICAgICAgYXV0
byBjaGFubmVsID0gY3JlYXRlSU9DaGFubmVsRm9yS2V5KGtleSwgSU9DaGFubmVsVHlwZTo6V3Jp
dGUsIGNhY2hlUGF0aENhcHR1cmUuc3RyaW5nKCksIGZkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9Bc3luY1Rhc2suaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Bc3luY1Rh
c2suaAppbmRleCA2M2M3ODRmOGQxNTBiYTU5NTJkMmU4OTgyYjQ2MzNkYThhODlhNWIzLi4zNmQ4
NTNjNWI5ZTA5MjBlOWMwNTUyYTNkYzZiMzYxNzhmNjAxNmM1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvQXN5bmNUYXNrLmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0Fz
eW5jVGFzay5oCkBAIC0zNCw3ICszNCw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgQXN5
bmNUYXNrIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShBc3luY1Rhc2spOwogcHVibGljOgot
ICAgIEFzeW5jVGFzayhjb25zdCBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4gdGFza0Z1bmN0aW9uKQor
ICAgIEFzeW5jVGFzayhjb25zdCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+IHRhc2tGdW5jdGlvbikK
ICAgICAgICAgOiBtX3Rhc2tGdW5jdGlvbih0YXNrRnVuY3Rpb24pCiAgICAgewogICAgICAgICBB
U1NFUlQodGFza0Z1bmN0aW9uKTsKQEAgLTQ4LDcgKzQ4LDcgQEAgcHVibGljOgogcHJvdGVjdGVk
OgogICAgIEFzeW5jVGFzaygpIHsgfQogCi0gICAgc3RkOjpmdW5jdGlvbjx2b2lkKCk+IG1fdGFz
a0Z1bmN0aW9uOworICAgIHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4gbV90YXNrRnVuY3Rpb247CiB9
OwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUuLi4gQXJndW1lbnRzPgpAQCAtNTYs
NyArNTYsNyBAQCBjbGFzcyBBc3luY1Rhc2tJbXBsIGZpbmFsIDogcHVibGljIEFzeW5jVGFzayB7
CiBwdWJsaWM6CiAgICAgQXN5bmNUYXNrSW1wbChUKiBjYWxsZWUsIHZvaWQgKFQ6OiptZXRob2Qp
KEFyZ3VtZW50cy4uLiksIEFyZ3VtZW50cyYmLi4uIGFyZ3VtZW50cykKICAgICB7Ci0gICAgICAg
IG1fdGFza0Z1bmN0aW9uID0gW2NhbGxlZSwgbWV0aG9kLCBhcmd1bWVudHMuLi5dKCkgeworICAg
ICAgICBtX3Rhc2tGdW5jdGlvbiA9IFtjYWxsZWUsIG1ldGhvZCwgYXJndW1lbnRzLi4uXSB7CiAg
ICAgICAgICAgICAoY2FsbGVlLT4qbWV0aG9kKShhcmd1bWVudHMuLi4pOwogICAgICAgICB9Owog
ICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9DaGlsZFByb2Nlc3MuY3Bw
IGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0NoaWxkUHJvY2Vzcy5jcHAKaW5kZXggZDU2OTNlOTFk
ZDQ3ODJjOTk4M2Y2MDc1MzgxODY4Y2Q2MzQ4YjAwMS4uZmRkN2JjZTIwM2Y3ZGU3ZGI5NTFkMWI5
YTAxYjBmNTFlMDcxYTExYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0NoaWxk
UHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0NoaWxkUHJvY2Vzcy5jcHAK
QEAgLTQ5LDcgKzQ5LDcgQEAgc3RhdGljIHZvaWQgZGlkQ2xvc2VPbkNvbm5lY3Rpb25Xb3JrUXVl
dWUoSVBDOjpDb25uZWN0aW9uKikKICAgICAvLyB0aGUgcHJvY2VzcyB3aWxsIGV4aXQgZm9yY2li
bHkuCiAgICAgYXV0byB3YXRjaGRvZ0RlbGF5ID0gc3RkOjpjaHJvbm86OnNlY29uZHMoMTApOwog
Ci0gICAgV29ya1F1ZXVlOjpjcmVhdGUoImNvbS5hcHBsZS5XZWJLaXQuQ2hpbGRQcm9jZXNzLldh
dGNoRG9nUXVldWUiKS0+ZGlzcGF0Y2hBZnRlcih3YXRjaGRvZ0RlbGF5LCBbXXsKKyAgICBXb3Jr
UXVldWU6OmNyZWF0ZSgiY29tLmFwcGxlLldlYktpdC5DaGlsZFByb2Nlc3MuV2F0Y2hEb2dRdWV1
ZSIpLT5kaXNwYXRjaEFmdGVyKHdhdGNoZG9nRGVsYXksIFtdIHsKICAgICAgICAgLy8gV2UgdXNl
IF9leGl0IGhlcmUgc2luY2UgdGhlIHdhdGNoZG9nIGNhbGxiYWNrIGlzIGNhbGxlZCBmcm9tIGFu
b3RoZXIgdGhyZWFkIGFuZCB3ZSBkb24ndCB3YW50CiAgICAgICAgIC8vIGdsb2JhbCBkZXN0cnVj
dG9ycyBvciBhdGV4aXQgaGFuZGxlcnMgdG8gYmUgY2FsbGVkIGZyb20gdGhpcyB0aHJlYWQgd2hp
bGUgdGhlIG1haW4gdGhyZWFkIGlzIGJ1c3kKICAgICAgICAgLy8gZG9pbmcgaXRzIHRoaW5nLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvbnRleHRNZW51SXRlbURhdGEu
Y3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvbnRleHRNZW51SXRlbURhdGEuY3BwCmlu
ZGV4IGViMzNiYTM0OWRkNzQ2YmUzMGNmMTA0NGY3NjcwNGYxNDA4YThiNDguLmJhMWU3MGMxZjky
MTM2MzFlYWIwMjIyNDQ4YzFmNGFhNTkzZTkxNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9XZWJDb250ZXh0TWVudUl0ZW1EYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvV2ViQ29udGV4dE1lbnVJdGVtRGF0YS5jcHAKQEAgLTY3LDcgKzY3LDcgQEAgV2ViQ29u
dGV4dE1lbnVJdGVtRGF0YTo6V2ViQ29udGV4dE1lbnVJdGVtRGF0YShXZWJDb3JlOjpDb250ZXh0
TWVudUFjdGlvbiBhY3Rpb24KIHsKIH0KIAotV2ViQ29udGV4dE1lbnVJdGVtRGF0YTo6V2ViQ29u
dGV4dE1lbnVJdGVtRGF0YShjb25zdCBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW0mIGl0ZW0sIHN0
ZDo6ZnVuY3Rpb248dm9pZCgpPiBzZWxlY3Rpb25IYW5kbGVyKQorV2ViQ29udGV4dE1lbnVJdGVt
RGF0YTo6V2ViQ29udGV4dE1lbnVJdGVtRGF0YShjb25zdCBXZWJDb3JlOjpDb250ZXh0TWVudUl0
ZW0mIGl0ZW0sIHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4gc2VsZWN0aW9uSGFuZGxlcikKICAgICA6
IG1fdHlwZShpdGVtLnR5cGUoKSkKICAgICAsIG1fYWN0aW9uKGl0ZW0uYWN0aW9uKCkpCiAgICAg
LCBtX3RpdGxlKGl0ZW0udGl0bGUoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9XZWJDb250ZXh0TWVudUl0ZW1EYXRhLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29u
dGV4dE1lbnVJdGVtRGF0YS5oCmluZGV4IGY4ZTBiNWVmMGU4MWJkZWI0Yjg5N2FmNGY5MDVhMTE2
ODhkNWJiNmMuLjkzOWY2OTEzOTYzMDA5ZmVhZjBiYTQ4MGY3MTMwMWY0OTBjODBjYWMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb250ZXh0TWVudUl0ZW1EYXRhLmgKKysr
IGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvbnRleHRNZW51SXRlbURhdGEuaApAQCAtNDYs
NyArNDYsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIFdlYkNvbnRleHRNZW51SXRlbURh
dGEgewogcHVibGljOgogICAgIFdlYkNvbnRleHRNZW51SXRlbURhdGEoKTsKLSAgICBXZWJDb250
ZXh0TWVudUl0ZW1EYXRhKGNvbnN0IFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbSYsIHN0ZDo6ZnVu
Y3Rpb248dm9pZCgpPiBzZWxlY3Rpb25IYW5kbGVyID0gbnVsbHB0cik7CisgICAgV2ViQ29udGV4
dE1lbnVJdGVtRGF0YShjb25zdCBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW0mLCBzdGQ6OmZ1bmN0
aW9uPHZvaWQgKCk+IHNlbGVjdGlvbkhhbmRsZXIgPSBudWxscHRyKTsKICAgICBXZWJDb250ZXh0
TWVudUl0ZW1EYXRhKFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVR5cGUsIFdlYkNvcmU6OkNvbnRl
eHRNZW51QWN0aW9uLCBjb25zdCBTdHJpbmcmIHRpdGxlLCBib29sIGVuYWJsZWQsIGJvb2wgY2hl
Y2tlZCk7CiAgICAgV2ViQ29udGV4dE1lbnVJdGVtRGF0YShXZWJDb3JlOjpDb250ZXh0TWVudUFj
dGlvbiwgY29uc3QgU3RyaW5nJiB0aXRsZSwgYm9vbCBlbmFibGVkLCBjb25zdCBWZWN0b3I8V2Vi
Q29udGV4dE1lbnVJdGVtRGF0YT4mIHN1Ym1lbnUpOwogCkBAIC02NSw3ICs2NSw3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIGVuY29kZShJUEM6OkFyZ3VtZW50RW5jb2RlciYpIGNvbnN0OwogICAgIHN0
YXRpYyBib29sIGRlY29kZShJUEM6OkFyZ3VtZW50RGVjb2RlciYsIFdlYkNvbnRleHRNZW51SXRl
bURhdGEmKTsKIAotICAgIHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiBzZWxlY3Rpb25IYW5kbGVyKCkg
Y29uc3QgeyByZXR1cm4gbV9zZWxlY3Rpb25IYW5kbGVyOyB9CisgICAgc3RkOjpmdW5jdGlvbjx2
b2lkICgpPiBzZWxlY3Rpb25IYW5kbGVyKCkgY29uc3QgeyByZXR1cm4gbV9zZWxlY3Rpb25IYW5k
bGVyOyB9CiAKIHByaXZhdGU6CiAgICAgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVHlwZSBtX3R5
cGU7CkBAIC03Niw3ICs3Niw3IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPFdlYkNvbnRleHRNZW51
SXRlbURhdGE+IG1fc3VibWVudTsKICAgICBSZWZQdHI8QVBJOjpPYmplY3Q+IG1fdXNlckRhdGE7
CiAKLSAgICBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4gbV9zZWxlY3Rpb25IYW5kbGVyOworICAgIHN0
ZDo6ZnVuY3Rpb248dm9pZCAoKT4gbV9zZWxlY3Rpb25IYW5kbGVyOwogfTsKIAogVmVjdG9yPFdl
YkNvbnRleHRNZW51SXRlbURhdGE+IGtpdEl0ZW1zKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpDb250
ZXh0TWVudUl0ZW0+Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL1Nl
Y0l0ZW1TaGltLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvU2VjSXRlbVNoaW0uY3Bw
CmluZGV4IDBlYmQyY2MyZjRmOGU0ZTU3MDNiOGE2ODJkMzY4ZDc3MTNhYzZhMjAuLjZjNjYxYjEz
YTQ0YzA1YTJlMDUwNjRiMGI4NDZiM2Y3MzgxNjJjOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9tYWMvU2VjSXRlbVNoaW0uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9tYWMvU2VjSXRlbVNoaW0uY3BwCkBAIC02Myw3ICs2Myw3IEBAIHN0YXRpYyBCbG9ja2luZ1Jl
c3BvbnNlTWFwPFNlY0l0ZW1SZXNwb25zZURhdGE+JiByZXNwb25zZU1hcCgpCiAgICAgc3RhdGlj
IHN0ZDo6b25jZV9mbGFnIG9uY2VGbGFnOwogICAgIHN0YXRpYyBMYXp5TmV2ZXJEZXN0cm95ZWQ8
QmxvY2tpbmdSZXNwb25zZU1hcDxTZWNJdGVtUmVzcG9uc2VEYXRhPj4gcmVzcG9uc2VNYXA7CiAK
LSAgICBzdGQ6OmNhbGxfb25jZShvbmNlRmxhZywgW117CisgICAgc3RkOjpjYWxsX29uY2Uob25j
ZUZsYWcsIFtdIHsKICAgICAgICAgcmVzcG9uc2VNYXAuY29uc3RydWN0KCk7CiAgICAgfSk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nl
c3NNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblBy
b2Nlc3NNYW5hZ2VyLmNwcAppbmRleCA0MmFjY2EyOWFlNWFlN2Y0MjY0MTI1NmRkMjEyMDZjNDFi
OTI2OWY3Li5kMWRkOTM5NWM5MmQ3MTc0YTdlYWM1YTUwMjEwNzVlMDg5YzNhMDkzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzTWFuYWdl
ci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vz
c01hbmFnZXIuY3BwCkBAIC00NCw3ICs0NCw3IEBAIFBsdWdpblByb2Nlc3NNYW5hZ2VyJiBQbHVn
aW5Qcm9jZXNzTWFuYWdlcjo6c2hhcmVkKCkKIAogUGx1Z2luUHJvY2Vzc01hbmFnZXI6OlBsdWdp
blByb2Nlc3NNYW5hZ2VyKCkKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICA6IG1fcHJvY2Vzc1N1
cHByZXNzaW9uRGlzYWJsZWRGb3JQYWdlQ291bnRlcihbdGhpc10oKSB7IHVwZGF0ZVByb2Nlc3NT
dXBwcmVzc2lvblN0YXRlKCk7IH0pCisgICAgOiBtX3Byb2Nlc3NTdXBwcmVzc2lvbkRpc2FibGVk
Rm9yUGFnZUNvdW50ZXIoW3RoaXNdIHsgdXBkYXRlUHJvY2Vzc1N1cHByZXNzaW9uU3RhdGUoKTsg
fSkKICNlbmRpZgogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YkNvbnRleHQuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuY3BwCmlu
ZGV4IDA1NTAxYTk4ZDQ3NmM5ZjY2YjRhZjdlYmFjZDAxMGRmNzJhMDBmODUuLmE1MmIxZWFkOTdh
MmYwYjFmNDNhYjY0MzVmMGMxZWNlMGVjZDA5ODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViQ29udGV4dC5jcHAKQEAgLTE5NCw4ICsxOTQsOCBAQCBXZWJDb250ZXh0OjpXZWJDb250ZXh0
KFdlYkNvbnRleHRDb25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb24pCiAgICAgLCBtX2lnbm9yZVRM
U0Vycm9ycyh0cnVlKQogI2VuZGlmCiAgICAgLCBtX21lbW9yeUNhY2hlRGlzYWJsZWQoZmFsc2Up
Ci0gICAgLCBtX3VzZXJPYnNlcnZhYmxlUGFnZUNvdW50ZXIoW3RoaXNdKCkgeyB1cGRhdGVQcm9j
ZXNzU3VwcHJlc3Npb25TdGF0ZSgpOyB9KQotICAgICwgbV9wcm9jZXNzU3VwcHJlc3Npb25EaXNh
YmxlZEZvclBhZ2VDb3VudGVyKFt0aGlzXSgpIHsgdXBkYXRlUHJvY2Vzc1N1cHByZXNzaW9uU3Rh
dGUoKTsgfSkKKyAgICAsIG1fdXNlck9ic2VydmFibGVQYWdlQ291bnRlcihbdGhpc10geyB1cGRh
dGVQcm9jZXNzU3VwcHJlc3Npb25TdGF0ZSgpOyB9KQorICAgICwgbV9wcm9jZXNzU3VwcHJlc3Np
b25EaXNhYmxlZEZvclBhZ2VDb3VudGVyKFt0aGlzXSB7IHVwZGF0ZVByb2Nlc3NTdXBwcmVzc2lv
blN0YXRlKCk7IH0pCiB7CiAgICAgcGxhdGZvcm1Jbml0aWFsaXplKCk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJPcmlnaW5EYXRhTWFuYWdlclByb3h5LmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJPcmlnaW5EYXRhTWFuYWdlclByb3h5LmNwcApp
bmRleCBjMzg2OGJkN2M5NWU2YjMwZGNlZDk1MjBmMGRiNjZmY2NkYzlhYTU1Li42Y2I0OGM3ZjZl
MjIwZDk2OTA1YzhiNTBhNjVhZWEyNTA2NTdlYjUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViT3JpZ2luRGF0YU1hbmFnZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYk9yaWdpbkRhdGFNYW5hZ2VyUHJveHkuY3BwCkBAIC04Niw3ICs4
Niw3IEBAIHZvaWQgV2ViT3JpZ2luRGF0YU1hbmFnZXJQcm94eTo6ZGVyZWZXZWJDb250ZXh0U3Vw
cGxlbWVudCgpCiAKIGNsYXNzIENhbGxiYWNrU3luY2hyb25pemVyIDogcHVibGljIFJlZkNvdW50
ZWQ8Q2FsbGJhY2tTeW5jaHJvbml6ZXI+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0
cjxDYWxsYmFja1N5bmNocm9uaXplcj4gY3JlYXRlKGNvbnN0IHN0ZDo6ZnVuY3Rpb248dm9pZChj
b25zdCBDYWxsYmFja0Jhc2U6OkVycm9yJik+JiBjYWxsYmFjaykKKyAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxDYWxsYmFja1N5bmNocm9uaXplcj4gY3JlYXRlKGNvbnN0IHN0ZDo6ZnVuY3Rpb248dm9p
ZCAoY29uc3QgQ2FsbGJhY2tCYXNlOjpFcnJvciYpPiYgY2FsbGJhY2spCiAgICAgewogICAgICAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IENhbGxiYWNrU3luY2hyb25pemVyKGNhbGxiYWNrKSk7CiAg
ICAgfQpAQCAtMTE2LDcgKzExNiw3IEBAIHB1YmxpYzoKICAgICB9CiAKIHByb3RlY3RlZDoKLSAg
ICBDYWxsYmFja1N5bmNocm9uaXplcihjb25zdCBzdGQ6OmZ1bmN0aW9uPHZvaWQoY29uc3QgQ2Fs
bGJhY2tCYXNlOjpFcnJvciYpPiYgY2FsbGJhY2spCisgICAgQ2FsbGJhY2tTeW5jaHJvbml6ZXIo
Y29uc3Qgc3RkOjpmdW5jdGlvbjx2b2lkIChjb25zdCBDYWxsYmFja0Jhc2U6OkVycm9yJik+JiBj
YWxsYmFjaykKICAgICAgICAgOiBtX2NvdW50KDApCiAgICAgICAgICwgbV9jYWxsYmFjayhjYWxs
YmFjaykKICAgICAgICAgLCBtX2Vycm9yKENhbGxiYWNrQmFzZTo6RXJyb3I6Ok5vbmUpCkBAIC0x
MjUsNyArMTI1LDcgQEAgcHJvdGVjdGVkOgogICAgIH0KIAogICAgIHVuc2lnbmVkIG1fY291bnQ7
Ci0gICAgc3RkOjpmdW5jdGlvbjx2b2lkKGNvbnN0IENhbGxiYWNrQmFzZTo6RXJyb3ImKT4gbV9j
YWxsYmFjazsKKyAgICBzdGQ6OmZ1bmN0aW9uPHZvaWQgKGNvbnN0IENhbGxiYWNrQmFzZTo6RXJy
b3ImKT4gbV9jYWxsYmFjazsKICAgICBDYWxsYmFja0Jhc2U6OkVycm9yIG1fZXJyb3I7CiB9Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IDcyZTMzYTg3
ZjNmOTg3OTBjZmMyNDgwMDJiZDk4YzI2ZmFlYzI0NWQuLjcxYmQwNTgyNmY0ZDIzYzY3Mjk4ZmE4
OWIxZjU4Y2M0ZmIyZDY5ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuY3BwCkBAIC00MjcsNyArNDI3LDcgQEAgV2ViUGFnZVByb3h5OjpXZWJQYWdlUHJveHkoUGFn
ZUNsaWVudCYgcGFnZUNsaWVudCwgV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzLCB1aW4KIAogI2lm
IFBMQVRGT1JNKENPQ09BKQogICAgIGNvbnN0IENGSW5kZXggdmlld1N0YXRlQ2hhbmdlUnVuTG9v
cE9yZGVyID0gKENGSW5kZXgpUnVuTG9vcE9ic2VydmVyOjpXZWxsS25vd25SdW5Mb29wT3JkZXJz
OjpDb3JlQW5pbWF0aW9uQ29tbWl0IC0gMTsKLSAgICBtX3ZpZXdTdGF0ZUNoYW5nZURpc3BhdGNo
ZXIgPSBSdW5Mb29wT2JzZXJ2ZXI6OmNyZWF0ZSh2aWV3U3RhdGVDaGFuZ2VSdW5Mb29wT3JkZXIs
IFt0aGlzXSgpIHsKKyAgICBtX3ZpZXdTdGF0ZUNoYW5nZURpc3BhdGNoZXIgPSBSdW5Mb29wT2Jz
ZXJ2ZXI6OmNyZWF0ZSh2aWV3U3RhdGVDaGFuZ2VSdW5Mb29wT3JkZXIsIFt0aGlzXSB7CiAgICAg
ICAgIHRoaXMtPmRpc3BhdGNoVmlld1N0YXRlQ2hhbmdlKCk7CiAgICAgfSk7CiAjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViQ29udGV4dE1lbnVQcm94
eU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViQ29udGV4dE1lbnVQcm94
eU1hYy5tbQppbmRleCAwYThlMjY3OGY3YjVkNjU5YTQ2ODM1YTkzYTlhYzdkMWRjYmVkNWI4Li45
M2JkYThlZGVjZDhkZDQyNTE3NzI4Njc1NDk1YmIzODNmNmQ2OTg2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYkNvbnRleHRNZW51UHJveHlNYWMubW0KKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJDb250ZXh0TWVudVByb3h5TWFjLm1tCkBA
IC03NCwxNCArNzQsMTQgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiBAZW5kCiAKIEBpbnRl
cmZhY2UgV0tTZWxlY3Rpb25IYW5kbGVyV3JhcHBlciA6IE5TT2JqZWN0IHsKLSAgICBzdGQ6OmZ1
bmN0aW9uPHZvaWQoKT4gX3NlbGVjdGlvbkhhbmRsZXI7CisgICAgc3RkOjpmdW5jdGlvbjx2b2lk
ICgpPiBfc2VsZWN0aW9uSGFuZGxlcjsKIH0KLS0gKGlkKWluaXRXaXRoU2VsZWN0aW9uSGFuZGxl
cjooc3RkOjpmdW5jdGlvbjx2b2lkKCk+KXNlbGVjdGlvbkhhbmRsZXI7CistIChpZClpbml0V2l0
aFNlbGVjdGlvbkhhbmRsZXI6KHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4pc2VsZWN0aW9uSGFuZGxl
cjsKIC0gKHZvaWQpZXhlY3V0ZVNlbGVjdGlvbkhhbmRsZXI7CiBAZW5kCiAKIEBpbXBsZW1lbnRh
dGlvbiBXS1NlbGVjdGlvbkhhbmRsZXJXcmFwcGVyCi0tIChpZClpbml0V2l0aFNlbGVjdGlvbkhh
bmRsZXI6KHN0ZDo6ZnVuY3Rpb248dm9pZCgpPilzZWxlY3Rpb25IYW5kbGVyCistIChpZClpbml0
V2l0aFNlbGVjdGlvbkhhbmRsZXI6KHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4pc2VsZWN0aW9uSGFu
ZGxlcgogewogICAgIHNlbGYgPSBbc3VwZXIgaW5pdF07CiAgICAgaWYgKCFzZWxmKQpAQCAtMzA4
LDcgKzMwOCw3IEBAIHN0YXRpYyBWZWN0b3I8UmV0YWluUHRyPE5TTWVudUl0ZW0+PiBuc01lbnVJ
dGVtVmVjdG9yKGNvbnN0IFZlY3RvcjxXZWJDb250ZXh0TWVuCiAgICAgICAgICAgICBbbWVudUl0
ZW0gc2V0RW5hYmxlZDppdGVtc1tpXS5lbmFibGVkKCldOwogICAgICAgICAgICAgW21lbnVJdGVt
IHNldFN0YXRlOml0ZW1zW2ldLmNoZWNrZWQoKSA/IE5TT25TdGF0ZSA6IE5TT2ZmU3RhdGVdOwog
Ci0gICAgICAgICAgICBpZiAoc3RkOjpmdW5jdGlvbjx2b2lkKCk+IHNlbGVjdGlvbkhhbmRsZXIg
PSBpdGVtc1tpXS5zZWxlY3Rpb25IYW5kbGVyKCkpIHsKKyAgICAgICAgICAgIGlmIChzdGQ6OmZ1
bmN0aW9uPHZvaWQgKCk+IHNlbGVjdGlvbkhhbmRsZXIgPSBpdGVtc1tpXS5zZWxlY3Rpb25IYW5k
bGVyKCkpIHsKICAgICAgICAgICAgICAgICBXS1NlbGVjdGlvbkhhbmRsZXJXcmFwcGVyICp3cmFw
cGVyID0gW1tXS1NlbGVjdGlvbkhhbmRsZXJXcmFwcGVyIGFsbG9jXSBpbml0V2l0aFNlbGVjdGlv
bkhhbmRsZXI6c2VsZWN0aW9uSGFuZGxlcl07CiAgICAgICAgICAgICAgICAgW21lbnVJdGVtIHNl
dFJlcHJlc2VudGVkT2JqZWN0OndyYXBwZXJdOwogICAgICAgICAgICAgICAgIFt3cmFwcGVyIHJl
bGVhc2VdOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9EYXRhYmFzZXMv
SW5kZXhlZERCL1dlYklEQlNlcnZlckNvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9EYXRhYmFzZXMvSW5kZXhlZERCL1dlYklEQlNlcnZlckNvbm5lY3Rpb24uY3BwCmlu
ZGV4IDhhZDcwZjkyZjdjZmVmMTEwYmMwNTUwZTExYmRhMGQ5YmJhM2FhZDIuLmQwYTU3ZDlkYzVm
MGFkZTQ4MzY2MjUxNTFhNmEwYTM4OTE4ZDQ3M2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvRGF0YWJhc2VzL0luZGV4ZWREQi9XZWJJREJTZXJ2ZXJDb25uZWN0aW9uLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0RhdGFiYXNlcy9JbmRleGVkREIvV2Vi
SURCU2VydmVyQ29ubmVjdGlvbi5jcHAKQEAgLTg3LDcgKzg3LDcgQEAgdm9pZCBXZWJJREJTZXJ2
ZXJDb25uZWN0aW9uOjpkZWxldGVEYXRhYmFzZShjb25zdCBTdHJpbmcmIG5hbWUsIEJvb2xDYWxs
YmFja0Z1bmMKIHsKICAgICBSZWZQdHI8QXN5bmNSZXF1ZXN0PiBzZXJ2ZXJSZXF1ZXN0ID0gQXN5
bmNSZXF1ZXN0SW1wbDxib29sPjo6Y3JlYXRlKHN1Y2Nlc3NDYWxsYmFjayk7CiAKLSAgICBzZXJ2
ZXJSZXF1ZXN0LT5zZXRBYm9ydEhhbmRsZXIoW3N1Y2Nlc3NDYWxsYmFja10oKSB7CisgICAgc2Vy
dmVyUmVxdWVzdC0+c2V0QWJvcnRIYW5kbGVyKFtzdWNjZXNzQ2FsbGJhY2tdIHsKICAgICAgICAg
c3VjY2Vzc0NhbGxiYWNrKGZhbHNlKTsKICAgICB9KTsKIApAQCAtMTE2LDcgKzExNiw3IEBAIHZv
aWQgV2ViSURCU2VydmVyQ29ubmVjdGlvbjo6Z2V0T3JFc3RhYmxpc2hJREJEYXRhYmFzZU1ldGFk
YXRhKEdldElEQkRhdGFiYXNlTWV0CiB7CiAgICAgUmVmUHRyPEFzeW5jUmVxdWVzdD4gc2VydmVy
UmVxdWVzdCA9IEFzeW5jUmVxdWVzdEltcGw8Y29uc3QgSURCRGF0YWJhc2VNZXRhZGF0YSYsIGJv
b2w+OjpjcmVhdGUoY29tcGxldGlvbkNhbGxiYWNrKTsKIAotICAgIHNlcnZlclJlcXVlc3QtPnNl
dEFib3J0SGFuZGxlcihbY29tcGxldGlvbkNhbGxiYWNrXSgpIHsKKyAgICBzZXJ2ZXJSZXF1ZXN0
LT5zZXRBYm9ydEhhbmRsZXIoW2NvbXBsZXRpb25DYWxsYmFja10gewogICAgICAgICBJREJEYXRh
YmFzZU1ldGFkYXRhIG1ldGFkYXRhOwogICAgICAgICBjb21wbGV0aW9uQ2FsbGJhY2sobWV0YWRh
dGEsIGZhbHNlKTsKICAgICB9KTsKQEAgLTE2MCw3ICsxNjAsNyBAQCB2b2lkIFdlYklEQlNlcnZl
ckNvbm5lY3Rpb246Om9wZW5UcmFuc2FjdGlvbihpbnQ2NF90IHRyYW5zYWN0aW9uSUQsIGNvbnN0
IEhhc2hTZQogewogICAgIFJlZlB0cjxBc3luY1JlcXVlc3Q+IHNlcnZlclJlcXVlc3QgPSBBc3lu
Y1JlcXVlc3RJbXBsPGJvb2w+OjpjcmVhdGUoc3VjY2Vzc0NhbGxiYWNrKTsKIAotICAgIHNlcnZl
clJlcXVlc3QtPnNldEFib3J0SGFuZGxlcihbc3VjY2Vzc0NhbGxiYWNrXSgpIHsKKyAgICBzZXJ2
ZXJSZXF1ZXN0LT5zZXRBYm9ydEhhbmRsZXIoW3N1Y2Nlc3NDYWxsYmFja10gewogICAgICAgICBz
dWNjZXNzQ2FsbGJhY2soZmFsc2UpOwogICAgIH0pOwogCkBAIC0xODcsNyArMTg3LDcgQEAgdm9p
ZCBXZWJJREJTZXJ2ZXJDb25uZWN0aW9uOjpkaWRPcGVuVHJhbnNhY3Rpb24odWludDY0X3QgcmVx
dWVzdElELCBib29sIHN1Y2Nlc3MKICAgICBzZXJ2ZXJSZXF1ZXN0LT5jb21wbGV0ZVJlcXVlc3Qo
c3VjY2Vzcyk7CiB9CiAKLXZvaWQgV2ViSURCU2VydmVyQ29ubmVjdGlvbjo6YmVnaW5UcmFuc2Fj
dGlvbihpbnQ2NF90IHRyYW5zYWN0aW9uSUQsIHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiBjb21wbGV0
aW9uQ2FsbGJhY2spCit2b2lkIFdlYklEQlNlcnZlckNvbm5lY3Rpb246OmJlZ2luVHJhbnNhY3Rp
b24oaW50NjRfdCB0cmFuc2FjdGlvbklELCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+IGNvbXBsZXRp
b25DYWxsYmFjaykKIHsKICAgICBSZWZQdHI8QXN5bmNSZXF1ZXN0PiBzZXJ2ZXJSZXF1ZXN0ID0g
QXN5bmNSZXF1ZXN0SW1wbDw+OjpjcmVhdGUoY29tcGxldGlvbkNhbGxiYWNrLCBjb21wbGV0aW9u
Q2FsbGJhY2spOwogCkBAIC0yMTYsNyArMjE2LDcgQEAgdm9pZCBXZWJJREJTZXJ2ZXJDb25uZWN0
aW9uOjpjb21taXRUcmFuc2FjdGlvbihpbnQ2NF90IHRyYW5zYWN0aW9uSUQsIEJvb2xDYWxsYmEK
IHsKICAgICBSZWZQdHI8QXN5bmNSZXF1ZXN0PiBzZXJ2ZXJSZXF1ZXN0ID0gQXN5bmNSZXF1ZXN0
SW1wbDxib29sPjo6Y3JlYXRlKHN1Y2Nlc3NDYWxsYmFjayk7CiAKLSAgICBzZXJ2ZXJSZXF1ZXN0
LT5zZXRBYm9ydEhhbmRsZXIoW3N1Y2Nlc3NDYWxsYmFja10oKSB7CisgICAgc2VydmVyUmVxdWVz
dC0+c2V0QWJvcnRIYW5kbGVyKFtzdWNjZXNzQ2FsbGJhY2tdIHsKICAgICAgICAgc3VjY2Vzc0Nh
bGxiYWNrKGZhbHNlKTsKICAgICB9KTsKIApAQCAtMjQxLDcgKzI0MSw3IEBAIHZvaWQgV2ViSURC
U2VydmVyQ29ubmVjdGlvbjo6ZGlkQ29tbWl0VHJhbnNhY3Rpb24odWludDY0X3QgcmVxdWVzdElE
LCBib29sIHN1Y2NlCiAgICAgc2VydmVyUmVxdWVzdC0+Y29tcGxldGVSZXF1ZXN0KHN1Y2Nlc3Mp
OwogfQogCi12b2lkIFdlYklEQlNlcnZlckNvbm5lY3Rpb246OnJlc2V0VHJhbnNhY3Rpb24oaW50
NjRfdCB0cmFuc2FjdGlvbklELCBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4gY29tcGxldGlvbkNhbGxi
YWNrKQordm9pZCBXZWJJREJTZXJ2ZXJDb25uZWN0aW9uOjpyZXNldFRyYW5zYWN0aW9uKGludDY0
X3QgdHJhbnNhY3Rpb25JRCwgc3RkOjpmdW5jdGlvbjx2b2lkICgpPiBjb21wbGV0aW9uQ2FsbGJh
Y2spCiB7CiAgICAgUmVmUHRyPEFzeW5jUmVxdWVzdD4gc2VydmVyUmVxdWVzdCA9IEFzeW5jUmVx
dWVzdEltcGw8Pjo6Y3JlYXRlKGNvbXBsZXRpb25DYWxsYmFjaywgY29tcGxldGlvbkNhbGxiYWNr
KTsKIApAQCAtMjczLDcgKzI3Myw3IEBAIGJvb2wgV2ViSURCU2VydmVyQ29ubmVjdGlvbjo6cmVz
ZXRUcmFuc2FjdGlvblN5bmMoaW50NjRfdCB0cmFuc2FjdGlvbklEKQogICAgIHJldHVybiBzdWNj
ZXNzOwogfQogCi12b2lkIFdlYklEQlNlcnZlckNvbm5lY3Rpb246OnJvbGxiYWNrVHJhbnNhY3Rp
b24oaW50NjRfdCB0cmFuc2FjdGlvbklELCBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4gY29tcGxldGlv
bkNhbGxiYWNrKQordm9pZCBXZWJJREJTZXJ2ZXJDb25uZWN0aW9uOjpyb2xsYmFja1RyYW5zYWN0
aW9uKGludDY0X3QgdHJhbnNhY3Rpb25JRCwgc3RkOjpmdW5jdGlvbjx2b2lkICgpPiBjb21wbGV0
aW9uQ2FsbGJhY2spCiB7CiAgICAgUmVmUHRyPEFzeW5jUmVxdWVzdD4gc2VydmVyUmVxdWVzdCA9
IEFzeW5jUmVxdWVzdEltcGw8Pjo6Y3JlYXRlKGNvbXBsZXRpb25DYWxsYmFjaywgY29tcGxldGlv
bkNhbGxiYWNrKTsKIApAQCAtMzA1LDE2ICszMDUsMTYgQEAgYm9vbCBXZWJJREJTZXJ2ZXJDb25u
ZWN0aW9uOjpyb2xsYmFja1RyYW5zYWN0aW9uU3luYyhpbnQ2NF90IHRyYW5zYWN0aW9uSUQpCiAg
ICAgcmV0dXJuIHN1Y2Nlc3M7CiB9CiAKLXZvaWQgV2ViSURCU2VydmVyQ29ubmVjdGlvbjo6c2V0
SW5kZXhLZXlzKGludDY0X3QgdHJhbnNhY3Rpb25JRCwgaW50NjRfdCBkYXRhYmFzZUlELCBpbnQ2
NF90IG9iamVjdFN0b3JlSUQsIGNvbnN0IElEQk9iamVjdFN0b3JlTWV0YWRhdGEmLCBJREJLZXkm
IHByaW1hcnlLZXksIGNvbnN0IFZlY3RvcjxpbnQ2NF90PiYgaW5kZXhJRHMsIGNvbnN0IFZlY3Rv
cjxWZWN0b3I8UmVmUHRyPElEQktleT4+PiYgaW5kZXhLZXlzLCBzdGQ6OmZ1bmN0aW9uPHZvaWQo
UGFzc1JlZlB0cjxJREJEYXRhYmFzZUVycm9yPik+IGNvbXBsZXRpb25DYWxsYmFjaykKK3ZvaWQg
V2ViSURCU2VydmVyQ29ubmVjdGlvbjo6c2V0SW5kZXhLZXlzKGludDY0X3QgdHJhbnNhY3Rpb25J
RCwgaW50NjRfdCBkYXRhYmFzZUlELCBpbnQ2NF90IG9iamVjdFN0b3JlSUQsIGNvbnN0IElEQk9i
amVjdFN0b3JlTWV0YWRhdGEmLCBJREJLZXkmIHByaW1hcnlLZXksIGNvbnN0IFZlY3RvcjxpbnQ2
NF90PiYgaW5kZXhJRHMsIGNvbnN0IFZlY3RvcjxWZWN0b3I8UmVmUHRyPElEQktleT4+PiYgaW5k
ZXhLZXlzLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKFBhc3NSZWZQdHI8SURCRGF0YWJhc2VFcnJvcj4p
PiBjb21wbGV0aW9uQ2FsbGJhY2spCiB7CiB9CiAKLXZvaWQgV2ViSURCU2VydmVyQ29ubmVjdGlv
bjo6Y3JlYXRlT2JqZWN0U3RvcmUoSURCVHJhbnNhY3Rpb25CYWNrZW5kJiB0cmFuc2FjdGlvbiwg
Y29uc3QgQ3JlYXRlT2JqZWN0U3RvcmVPcGVyYXRpb24mIG9wZXJhdGlvbiwgc3RkOjpmdW5jdGlv
bjx2b2lkKFBhc3NSZWZQdHI8SURCRGF0YWJhc2VFcnJvcj4pPiBjb21wbGV0aW9uQ2FsbGJhY2sp
Cit2b2lkIFdlYklEQlNlcnZlckNvbm5lY3Rpb246OmNyZWF0ZU9iamVjdFN0b3JlKElEQlRyYW5z
YWN0aW9uQmFja2VuZCYgdHJhbnNhY3Rpb24sIGNvbnN0IENyZWF0ZU9iamVjdFN0b3JlT3BlcmF0
aW9uJiBvcGVyYXRpb24sIHN0ZDo6ZnVuY3Rpb248dm9pZCAoUGFzc1JlZlB0cjxJREJEYXRhYmFz
ZUVycm9yPik+IGNvbXBsZXRpb25DYWxsYmFjaykKIHsKICAgICBSZWZQdHI8QXN5bmNSZXF1ZXN0
PiBzZXJ2ZXJSZXF1ZXN0ID0gQXN5bmNSZXF1ZXN0SW1wbDxQYXNzUmVmUHRyPElEQkRhdGFiYXNl
RXJyb3I+Pjo6Y3JlYXRlKGNvbXBsZXRpb25DYWxsYmFjayk7CiAKICAgICBTdHJpbmcgb2JqZWN0
U3RvcmVOYW1lID0gb3BlcmF0aW9uLm9iamVjdFN0b3JlTWV0YWRhdGEoKS5uYW1lOwotICAgIHNl
cnZlclJlcXVlc3QtPnNldEFib3J0SGFuZGxlcihbb2JqZWN0U3RvcmVOYW1lLCBjb21wbGV0aW9u
Q2FsbGJhY2tdKCkgeworICAgIHNlcnZlclJlcXVlc3QtPnNldEFib3J0SGFuZGxlcihbb2JqZWN0
U3RvcmVOYW1lLCBjb21wbGV0aW9uQ2FsbGJhY2tdIHsKICAgICAgICAgY29tcGxldGlvbkNhbGxi
YWNrKElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VW5rbm93
bkVycm9yLCBTdHJpbmc6OmZvcm1hdCgiVW5rbm93biBlcnJvciBvY2N1cmVkIGNyZWF0aW5nIG9i
amVjdCBzdG9yZSAnJXMnIiwgb2JqZWN0U3RvcmVOYW1lLnV0ZjgoKS5kYXRhKCkpKSk7CiAgICAg
fSk7CiAKQEAgLTMzOSwxMSArMzM5LDExIEBAIHZvaWQgV2ViSURCU2VydmVyQ29ubmVjdGlvbjo6
ZGlkQ3JlYXRlT2JqZWN0U3RvcmUodWludDY0X3QgcmVxdWVzdElELCBib29sIHN1Y2NlCiAgICAg
c2VydmVyUmVxdWVzdC0+Y29tcGxldGVSZXF1ZXN0KHN1Y2Nlc3MgPyBudWxscHRyIDogSURCRGF0
YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpVbmtub3duRXJyb3IsICJV
bmtub3duIGVycm9yIG9jY3VyZWQgY3JlYXRpbmcgb2JqZWN0IHN0b3JlIikpOwogfQogCi12b2lk
IFdlYklEQlNlcnZlckNvbm5lY3Rpb246OmNyZWF0ZUluZGV4KElEQlRyYW5zYWN0aW9uQmFja2Vu
ZCZ0cmFuc2FjdGlvbiwgY29uc3QgQ3JlYXRlSW5kZXhPcGVyYXRpb24mIG9wZXJhdGlvbiwgc3Rk
OjpmdW5jdGlvbjx2b2lkKFBhc3NSZWZQdHI8SURCRGF0YWJhc2VFcnJvcj4pPiBjb21wbGV0aW9u
Q2FsbGJhY2spCit2b2lkIFdlYklEQlNlcnZlckNvbm5lY3Rpb246OmNyZWF0ZUluZGV4KElEQlRy
YW5zYWN0aW9uQmFja2VuZCZ0cmFuc2FjdGlvbiwgY29uc3QgQ3JlYXRlSW5kZXhPcGVyYXRpb24m
IG9wZXJhdGlvbiwgc3RkOjpmdW5jdGlvbjx2b2lkIChQYXNzUmVmUHRyPElEQkRhdGFiYXNlRXJy
b3I+KT4gY29tcGxldGlvbkNhbGxiYWNrKQogewogICAgIFJlZlB0cjxBc3luY1JlcXVlc3Q+IHNl
cnZlclJlcXVlc3QgPSBBc3luY1JlcXVlc3RJbXBsPFBhc3NSZWZQdHI8SURCRGF0YWJhc2VFcnJv
cj4+OjpjcmVhdGUoY29tcGxldGlvbkNhbGxiYWNrKTsKIAotICAgIHNlcnZlclJlcXVlc3QtPnNl
dEFib3J0SGFuZGxlcihbY29tcGxldGlvbkNhbGxiYWNrXSgpIHsKKyAgICBzZXJ2ZXJSZXF1ZXN0
LT5zZXRBYm9ydEhhbmRsZXIoW2NvbXBsZXRpb25DYWxsYmFja10gewogICAgICAgICBjb21wbGV0
aW9uQ2FsbGJhY2soSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9u
OjpVbmtub3duRXJyb3IsICJVbmtub3duIGVycm9yIG9jY3VyZWQgY3JlYXRpbmcgaW5kZXgiKSk7
CiAgICAgfSk7CiAKQEAgLTM2OCwxMSArMzY4LDExIEBAIHZvaWQgV2ViSURCU2VydmVyQ29ubmVj
dGlvbjo6ZGlkQ3JlYXRlSW5kZXgodWludDY0X3QgcmVxdWVzdElELCBib29sIHN1Y2Nlc3MpCiAg
ICAgc2VydmVyUmVxdWVzdC0+Y29tcGxldGVSZXF1ZXN0KHN1Y2Nlc3MgPyBudWxscHRyIDogSURC
RGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpVbmtub3duRXJyb3Is
ICJVbmtub3duIGVycm9yIG9jY3VyZWQgY3JlYXRpbmcgaW5kZXgiKSk7CiB9CiAKLXZvaWQgV2Vi
SURCU2VydmVyQ29ubmVjdGlvbjo6ZGVsZXRlSW5kZXgoSURCVHJhbnNhY3Rpb25CYWNrZW5kJnRy
YW5zYWN0aW9uLCBjb25zdCBEZWxldGVJbmRleE9wZXJhdGlvbiYgb3BlcmF0aW9uLCBzdGQ6OmZ1
bmN0aW9uPHZvaWQoUGFzc1JlZlB0cjxJREJEYXRhYmFzZUVycm9yPik+IGNvbXBsZXRpb25DYWxs
YmFjaykKK3ZvaWQgV2ViSURCU2VydmVyQ29ubmVjdGlvbjo6ZGVsZXRlSW5kZXgoSURCVHJhbnNh
Y3Rpb25CYWNrZW5kJnRyYW5zYWN0aW9uLCBjb25zdCBEZWxldGVJbmRleE9wZXJhdGlvbiYgb3Bl
cmF0aW9uLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKFBhc3NSZWZQdHI8SURCRGF0YWJhc2VFcnJvcj4p
PiBjb21wbGV0aW9uQ2FsbGJhY2spCiB7CiAgICAgUmVmUHRyPEFzeW5jUmVxdWVzdD4gc2VydmVy
UmVxdWVzdCA9IEFzeW5jUmVxdWVzdEltcGw8UGFzc1JlZlB0cjxJREJEYXRhYmFzZUVycm9yPj46
OmNyZWF0ZShjb21wbGV0aW9uQ2FsbGJhY2spOwogCi0gICAgc2VydmVyUmVxdWVzdC0+c2V0QWJv
cnRIYW5kbGVyKFtjb21wbGV0aW9uQ2FsbGJhY2tdKCkgeworICAgIHNlcnZlclJlcXVlc3QtPnNl
dEFib3J0SGFuZGxlcihbY29tcGxldGlvbkNhbGxiYWNrXSB7CiAgICAgICAgIGNvbXBsZXRpb25D
YWxsYmFjayhJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246OlVu
a25vd25FcnJvciwgIlVua25vd24gZXJyb3Igb2NjdXJlZCBkZWxldGluZyBpbmRleCIpKTsKICAg
ICB9KTsKIApAQCAtMzk3LDExICszOTcsMTEgQEAgdm9pZCBXZWJJREJTZXJ2ZXJDb25uZWN0aW9u
OjpkaWREZWxldGVJbmRleCh1aW50NjRfdCByZXF1ZXN0SUQsIGJvb2wgc3VjY2VzcykKICAgICBz
ZXJ2ZXJSZXF1ZXN0LT5jb21wbGV0ZVJlcXVlc3Qoc3VjY2VzcyA/IG51bGxwdHIgOiBJREJEYXRh
YmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246OlVua25vd25FcnJvciwgIlVu
a25vd24gZXJyb3Igb2NjdXJlZCBkZWxldGluZyBpbmRleCIpKTsKIH0KIAotdm9pZCBXZWJJREJT
ZXJ2ZXJDb25uZWN0aW9uOjpnZXQoSURCVHJhbnNhY3Rpb25CYWNrZW5kJiB0cmFuc2FjdGlvbiwg
Y29uc3QgR2V0T3BlcmF0aW9uJiBvcGVyYXRpb24sIHN0ZDo6ZnVuY3Rpb248dm9pZChjb25zdCBJ
REJHZXRSZXN1bHQmLCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlRXJyb3I+KT4gY29tcGxldGlvbkNh
bGxiYWNrKQordm9pZCBXZWJJREJTZXJ2ZXJDb25uZWN0aW9uOjpnZXQoSURCVHJhbnNhY3Rpb25C
YWNrZW5kJiB0cmFuc2FjdGlvbiwgY29uc3QgR2V0T3BlcmF0aW9uJiBvcGVyYXRpb24sIHN0ZDo6
ZnVuY3Rpb248dm9pZCAoY29uc3QgSURCR2V0UmVzdWx0JiwgUGFzc1JlZlB0cjxJREJEYXRhYmFz
ZUVycm9yPik+IGNvbXBsZXRpb25DYWxsYmFjaykKIHsKICAgICBSZWZQdHI8QXN5bmNSZXF1ZXN0
PiBzZXJ2ZXJSZXF1ZXN0ID0gQXN5bmNSZXF1ZXN0SW1wbDxjb25zdCBJREJHZXRSZXN1bHQmLCBQ
YXNzUmVmUHRyPElEQkRhdGFiYXNlRXJyb3I+Pjo6Y3JlYXRlKGNvbXBsZXRpb25DYWxsYmFjayk7
CiAKLSAgICBzZXJ2ZXJSZXF1ZXN0LT5zZXRBYm9ydEhhbmRsZXIoW2NvbXBsZXRpb25DYWxsYmFj
a10oKSB7CisgICAgc2VydmVyUmVxdWVzdC0+c2V0QWJvcnRIYW5kbGVyKFtjb21wbGV0aW9uQ2Fs
bGJhY2tdIHsKICAgICAgICAgY29tcGxldGlvbkNhbGxiYWNrKElEQkdldFJlc3VsdCgpLCBJREJE
YXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246OlVua25vd25FcnJvciwg
IlVua25vd24gZXJyb3Igb2NjdXJlZCBnZXR0aW5nIHJlY29yZCIpKTsKICAgICB9KTsKIApAQCAt
NDE2LDExICs0MTYsMTEgQEAgdm9pZCBXZWJJREJTZXJ2ZXJDb25uZWN0aW9uOjpnZXQoSURCVHJh
bnNhY3Rpb25CYWNrZW5kJiB0cmFuc2FjdGlvbiwgY29uc3QgR2V0T3AKICAgICBzZW5kKE1lc3Nh
Z2VzOjpEYXRhYmFzZVByb2Nlc3NJREJDb25uZWN0aW9uOjpHZXRSZWNvcmQocmVxdWVzdElELCB0
cmFuc2FjdGlvbi5pZCgpLCBvcGVyYXRpb24ub2JqZWN0U3RvcmVJRCgpLCBvcGVyYXRpb24uaW5k
ZXhJRCgpLCBvcGVyYXRpb24ua2V5UmFuZ2UoKSwgc3RhdGljX2Nhc3Q8aW50NjRfdD4ob3BlcmF0
aW9uLmN1cnNvclR5cGUoKSkpKTsKIH0KIAotdm9pZCBXZWJJREJTZXJ2ZXJDb25uZWN0aW9uOjpw
dXQoSURCVHJhbnNhY3Rpb25CYWNrZW5kJiB0cmFuc2FjdGlvbiwgY29uc3QgUHV0T3BlcmF0aW9u
JiBvcGVyYXRpb24sIHN0ZDo6ZnVuY3Rpb248dm9pZChQYXNzUmVmUHRyPElEQktleT4sIFBhc3NS
ZWZQdHI8SURCRGF0YWJhc2VFcnJvcj4pPiBjb21wbGV0aW9uQ2FsbGJhY2spCit2b2lkIFdlYklE
QlNlcnZlckNvbm5lY3Rpb246OnB1dChJREJUcmFuc2FjdGlvbkJhY2tlbmQmIHRyYW5zYWN0aW9u
LCBjb25zdCBQdXRPcGVyYXRpb24mIG9wZXJhdGlvbiwgc3RkOjpmdW5jdGlvbjx2b2lkIChQYXNz
UmVmUHRyPElEQktleT4sIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VFcnJvcj4pPiBjb21wbGV0aW9u
Q2FsbGJhY2spCiB7CiAgICAgUmVmUHRyPEFzeW5jUmVxdWVzdD4gc2VydmVyUmVxdWVzdCA9IEFz
eW5jUmVxdWVzdEltcGw8UGFzc1JlZlB0cjxJREJLZXk+LCBQYXNzUmVmUHRyPElEQkRhdGFiYXNl
RXJyb3I+Pjo6Y3JlYXRlKGNvbXBsZXRpb25DYWxsYmFjayk7CiAKLSAgICBzZXJ2ZXJSZXF1ZXN0
LT5zZXRBYm9ydEhhbmRsZXIoW2NvbXBsZXRpb25DYWxsYmFja10oKSB7CisgICAgc2VydmVyUmVx
dWVzdC0+c2V0QWJvcnRIYW5kbGVyKFtjb21wbGV0aW9uQ2FsbGJhY2tdIHsKICAgICAgICAgY29t
cGxldGlvbkNhbGxiYWNrKG51bGxwdHIsIElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRh
YmFzZUV4Y2VwdGlvbjo6VW5rbm93bkVycm9yLCAiVW5rbm93biBlcnJvciBvY2N1cmVkIHB1dHRp
bmcgcmVjb3JkIikpOwogICAgIH0pOwogCkBAIC01MDcsMTEgKzUwNywxMSBAQCB2b2lkIFdlYklE
QlNlcnZlckNvbm5lY3Rpb246OmRpZEl0ZXJhdGVDdXJzb3IodWludDY0X3QgcmVxdWVzdElELCBj
b25zdCBJREJLZXlEYQogICAgIHNlcnZlclJlcXVlc3QtPmNvbXBsZXRlUmVxdWVzdChrZXkubWF5
YmVDcmVhdGVJREJLZXkoKSwgcHJpbWFyeUtleS5tYXliZUNyZWF0ZUlEQktleSgpLCB2YWx1ZS5y
ZWxlYXNlKCksIGVycm9yQ29kZSA/IElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShlcnJvckNvZGUs
IGVycm9yTWVzc2FnZSkgOiBudWxscHRyKTsKIH0KIAotdm9pZCBXZWJJREJTZXJ2ZXJDb25uZWN0
aW9uOjpjb3VudChJREJUcmFuc2FjdGlvbkJhY2tlbmQmIHRyYW5zYWN0aW9uLCBjb25zdCBDb3Vu
dE9wZXJhdGlvbiYgb3BlcmF0aW9uLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoaW50NjRfdCwgUGFzc1Jl
ZlB0cjxJREJEYXRhYmFzZUVycm9yPik+IGNvbXBsZXRpb25DYWxsYmFjaykKK3ZvaWQgV2ViSURC
U2VydmVyQ29ubmVjdGlvbjo6Y291bnQoSURCVHJhbnNhY3Rpb25CYWNrZW5kJiB0cmFuc2FjdGlv
biwgY29uc3QgQ291bnRPcGVyYXRpb24mIG9wZXJhdGlvbiwgc3RkOjpmdW5jdGlvbjx2b2lkIChp
bnQ2NF90LCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlRXJyb3I+KT4gY29tcGxldGlvbkNhbGxiYWNr
KQogewogICAgIFJlZlB0cjxBc3luY1JlcXVlc3Q+IHNlcnZlclJlcXVlc3QgPSBBc3luY1JlcXVl
c3RJbXBsPGludDY0X3QsIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VFcnJvcj4+OjpjcmVhdGUoY29t
cGxldGlvbkNhbGxiYWNrKTsKIAotICAgIHNlcnZlclJlcXVlc3QtPnNldEFib3J0SGFuZGxlcihb
Y29tcGxldGlvbkNhbGxiYWNrXSgpIHsKKyAgICBzZXJ2ZXJSZXF1ZXN0LT5zZXRBYm9ydEhhbmRs
ZXIoW2NvbXBsZXRpb25DYWxsYmFja10gewogICAgICAgICBjb21wbGV0aW9uQ2FsbGJhY2soMCwg
SURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpVbmtub3duRXJy
b3IsICJVbmtub3duIGVycm9yIG9jY3VyZWQgZ2V0dGluZyBjb3VudCIpKTsKICAgICB9KTsKIApA
QCAtNTM2LDExICs1MzYsMTEgQEAgdm9pZCBXZWJJREJTZXJ2ZXJDb25uZWN0aW9uOjpkaWRDb3Vu
dCh1aW50NjRfdCByZXF1ZXN0SUQsIGludDY0X3QgY291bnQsIHVpbnQzMl8KICAgICBzZXJ2ZXJS
ZXF1ZXN0LT5jb21wbGV0ZVJlcXVlc3QoY291bnQsIGVycm9yQ29kZSA/IElEQkRhdGFiYXNlRXJy
b3I6OmNyZWF0ZShlcnJvckNvZGUsIGVycm9yTWVzc2FnZSkgOiBudWxscHRyKTsKIH0KIAotdm9p
ZCBXZWJJREJTZXJ2ZXJDb25uZWN0aW9uOjpkZWxldGVSYW5nZShJREJUcmFuc2FjdGlvbkJhY2tl
bmQmIHRyYW5zYWN0aW9uLCBjb25zdCBEZWxldGVSYW5nZU9wZXJhdGlvbiYgb3BlcmF0aW9uLCBz
dGQ6OmZ1bmN0aW9uPHZvaWQoUGFzc1JlZlB0cjxJREJEYXRhYmFzZUVycm9yPik+IGNvbXBsZXRp
b25DYWxsYmFjaykKK3ZvaWQgV2ViSURCU2VydmVyQ29ubmVjdGlvbjo6ZGVsZXRlUmFuZ2UoSURC
VHJhbnNhY3Rpb25CYWNrZW5kJiB0cmFuc2FjdGlvbiwgY29uc3QgRGVsZXRlUmFuZ2VPcGVyYXRp
b24mIG9wZXJhdGlvbiwgc3RkOjpmdW5jdGlvbjx2b2lkIChQYXNzUmVmUHRyPElEQkRhdGFiYXNl
RXJyb3I+KT4gY29tcGxldGlvbkNhbGxiYWNrKQogewogICAgIFJlZlB0cjxBc3luY1JlcXVlc3Q+
IHNlcnZlclJlcXVlc3QgPSBBc3luY1JlcXVlc3RJbXBsPFBhc3NSZWZQdHI8SURCRGF0YWJhc2VF
cnJvcj4+OjpjcmVhdGUoY29tcGxldGlvbkNhbGxiYWNrKTsKIAotICAgIHNlcnZlclJlcXVlc3Qt
PnNldEFib3J0SGFuZGxlcihbY29tcGxldGlvbkNhbGxiYWNrXSgpIHsKKyAgICBzZXJ2ZXJSZXF1
ZXN0LT5zZXRBYm9ydEhhbmRsZXIoW2NvbXBsZXRpb25DYWxsYmFja10gewogICAgICAgICBjb21w
bGV0aW9uQ2FsbGJhY2soSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0
aW9uOjpVbmtub3duRXJyb3IsICJVbmtub3duIGVycm9yIG9jY3VyZWQgZ2V0dGluZyBjb3VudCIp
KTsKICAgICB9KTsKIApAQCAtNTY1LDExICs1NjUsMTEgQEAgdm9pZCBXZWJJREJTZXJ2ZXJDb25u
ZWN0aW9uOjpkaWREZWxldGVSYW5nZSh1aW50NjRfdCByZXF1ZXN0SUQsIHVpbnQzMl90IGVycm9y
Q28KICAgICBzZXJ2ZXJSZXF1ZXN0LT5jb21wbGV0ZVJlcXVlc3QoZXJyb3JDb2RlID8gSURCRGF0
YWJhc2VFcnJvcjo6Y3JlYXRlKGVycm9yQ29kZSwgZXJyb3JNZXNzYWdlKSA6IG51bGxwdHIpOwog
fQogCi12b2lkIFdlYklEQlNlcnZlckNvbm5lY3Rpb246OmNsZWFyT2JqZWN0U3RvcmUoSURCVHJh
bnNhY3Rpb25CYWNrZW5kJiwgY29uc3QgQ2xlYXJPYmplY3RTdG9yZU9wZXJhdGlvbiYgb3BlcmF0
aW9uLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoUGFzc1JlZlB0cjxJREJEYXRhYmFzZUVycm9yPik+IGNv
bXBsZXRpb25DYWxsYmFjaykKK3ZvaWQgV2ViSURCU2VydmVyQ29ubmVjdGlvbjo6Y2xlYXJPYmpl
Y3RTdG9yZShJREJUcmFuc2FjdGlvbkJhY2tlbmQmLCBjb25zdCBDbGVhck9iamVjdFN0b3JlT3Bl
cmF0aW9uJiBvcGVyYXRpb24sIHN0ZDo6ZnVuY3Rpb248dm9pZCAoUGFzc1JlZlB0cjxJREJEYXRh
YmFzZUVycm9yPik+IGNvbXBsZXRpb25DYWxsYmFjaykKIHsKICAgICBSZWZQdHI8QXN5bmNSZXF1
ZXN0PiBzZXJ2ZXJSZXF1ZXN0ID0gQXN5bmNSZXF1ZXN0SW1wbDxQYXNzUmVmUHRyPElEQkRhdGFi
YXNlRXJyb3I+Pjo6Y3JlYXRlKGNvbXBsZXRpb25DYWxsYmFjayk7CiAKLSAgICBzZXJ2ZXJSZXF1
ZXN0LT5zZXRBYm9ydEhhbmRsZXIoW2NvbXBsZXRpb25DYWxsYmFja10oKSB7CisgICAgc2VydmVy
UmVxdWVzdC0+c2V0QWJvcnRIYW5kbGVyKFtjb21wbGV0aW9uQ2FsbGJhY2tdIHsKICAgICAgICAg
Y29tcGxldGlvbkNhbGxiYWNrKElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4
Y2VwdGlvbjo6VW5rbm93bkVycm9yLCAiVW5rbm93biBlcnJvciBvY2N1cmVkIGNsZWFyaW5nIG9i
amVjdCBzdG9yZSIpKTsKICAgICB9KTsKIApAQCAtNTk0LDExICs1OTQsMTEgQEAgdm9pZCBXZWJJ
REJTZXJ2ZXJDb25uZWN0aW9uOjpkaWRDbGVhck9iamVjdFN0b3JlKHVpbnQ2NF90IHJlcXVlc3RJ
RCwgYm9vbCBzdWNjZXMKICAgICBzZXJ2ZXJSZXF1ZXN0LT5jb21wbGV0ZVJlcXVlc3Qoc3VjY2Vz
cyA/IG51bGxwdHIgOiBJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRp
b246OlVua25vd25FcnJvciwgIlVua25vd24gZXJyb3Igb2NjdXJlZCBjbGVhcmluZyBvYmplY3Qg
c3RvcmUiKSk7CiB9CiAKLXZvaWQgV2ViSURCU2VydmVyQ29ubmVjdGlvbjo6ZGVsZXRlT2JqZWN0
U3RvcmUoSURCVHJhbnNhY3Rpb25CYWNrZW5kJiwgY29uc3QgRGVsZXRlT2JqZWN0U3RvcmVPcGVy
YXRpb24mIG9wZXJhdGlvbiwgc3RkOjpmdW5jdGlvbjx2b2lkKFBhc3NSZWZQdHI8SURCRGF0YWJh
c2VFcnJvcj4pPiBjb21wbGV0aW9uQ2FsbGJhY2spCit2b2lkIFdlYklEQlNlcnZlckNvbm5lY3Rp
b246OmRlbGV0ZU9iamVjdFN0b3JlKElEQlRyYW5zYWN0aW9uQmFja2VuZCYsIGNvbnN0IERlbGV0
ZU9iamVjdFN0b3JlT3BlcmF0aW9uJiBvcGVyYXRpb24sIHN0ZDo6ZnVuY3Rpb248dm9pZCAoUGFz
c1JlZlB0cjxJREJEYXRhYmFzZUVycm9yPik+IGNvbXBsZXRpb25DYWxsYmFjaykKIHsKICAgICBS
ZWZQdHI8QXN5bmNSZXF1ZXN0PiBzZXJ2ZXJSZXF1ZXN0ID0gQXN5bmNSZXF1ZXN0SW1wbDxQYXNz
UmVmUHRyPElEQkRhdGFiYXNlRXJyb3I+Pjo6Y3JlYXRlKGNvbXBsZXRpb25DYWxsYmFjayk7CiAK
LSAgICBzZXJ2ZXJSZXF1ZXN0LT5zZXRBYm9ydEhhbmRsZXIoW2NvbXBsZXRpb25DYWxsYmFja10o
KSB7CisgICAgc2VydmVyUmVxdWVzdC0+c2V0QWJvcnRIYW5kbGVyKFtjb21wbGV0aW9uQ2FsbGJh
Y2tdIHsKICAgICAgICAgY29tcGxldGlvbkNhbGxiYWNrKElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0
ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VW5rbm93bkVycm9yLCAiVW5rbm93biBlcnJvciBvY2N1
cmVkIGRlbGV0aW5nIG9iamVjdCBzdG9yZSIpKTsKICAgICB9KTsKIApAQCAtNjIzLDExICs2MjMs
MTEgQEAgdm9pZCBXZWJJREJTZXJ2ZXJDb25uZWN0aW9uOjpkaWREZWxldGVPYmplY3RTdG9yZSh1
aW50NjRfdCByZXF1ZXN0SUQsIGJvb2wgc3VjY2UKICAgICBzZXJ2ZXJSZXF1ZXN0LT5jb21wbGV0
ZVJlcXVlc3Qoc3VjY2VzcyA/IG51bGxwdHIgOiBJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUoSURC
RGF0YWJhc2VFeGNlcHRpb246OlVua25vd25FcnJvciwgIlVua25vd24gZXJyb3Igb2NjdXJlZCBk
ZWxldGluZyBvYmplY3Qgc3RvcmUiKSk7CiB9CiAKLXZvaWQgV2ViSURCU2VydmVyQ29ubmVjdGlv
bjo6Y2hhbmdlRGF0YWJhc2VWZXJzaW9uKElEQlRyYW5zYWN0aW9uQmFja2VuZCYsIGNvbnN0IElE
QkRhdGFiYXNlQmFja2VuZDo6VmVyc2lvbkNoYW5nZU9wZXJhdGlvbiYgb3BlcmF0aW9uLCBzdGQ6
OmZ1bmN0aW9uPHZvaWQoUGFzc1JlZlB0cjxJREJEYXRhYmFzZUVycm9yPik+IGNvbXBsZXRpb25D
YWxsYmFjaykKK3ZvaWQgV2ViSURCU2VydmVyQ29ubmVjdGlvbjo6Y2hhbmdlRGF0YWJhc2VWZXJz
aW9uKElEQlRyYW5zYWN0aW9uQmFja2VuZCYsIGNvbnN0IElEQkRhdGFiYXNlQmFja2VuZDo6VmVy
c2lvbkNoYW5nZU9wZXJhdGlvbiYgb3BlcmF0aW9uLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKFBhc3NS
ZWZQdHI8SURCRGF0YWJhc2VFcnJvcj4pPiBjb21wbGV0aW9uQ2FsbGJhY2spCiB7CiAgICAgUmVm
UHRyPEFzeW5jUmVxdWVzdD4gc2VydmVyUmVxdWVzdCA9IEFzeW5jUmVxdWVzdEltcGw8UGFzc1Jl
ZlB0cjxJREJEYXRhYmFzZUVycm9yPj46OmNyZWF0ZShjb21wbGV0aW9uQ2FsbGJhY2spOwogCi0g
ICAgc2VydmVyUmVxdWVzdC0+c2V0QWJvcnRIYW5kbGVyKFtjb21wbGV0aW9uQ2FsbGJhY2tdKCkg
eworICAgIHNlcnZlclJlcXVlc3QtPnNldEFib3J0SGFuZGxlcihbY29tcGxldGlvbkNhbGxiYWNr
XSB7CiAgICAgICAgIGNvbXBsZXRpb25DYWxsYmFjayhJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUo
SURCRGF0YWJhc2VFeGNlcHRpb246OlVua25vd25FcnJvciwgIlVua25vd24gZXJyb3Igb2NjdXJl
ZCBjaGFuZ2luZyBkYXRhYmFzZSB2ZXJzaW9uIikpOwogICAgIH0pOwogCkBAIC02NTIsMTEgKzY1
MiwxMSBAQCB2b2lkIFdlYklEQlNlcnZlckNvbm5lY3Rpb246OmRpZENoYW5nZURhdGFiYXNlVmVy
c2lvbih1aW50NjRfdCByZXF1ZXN0SUQsIGJvb2wgcwogICAgIHNlcnZlclJlcXVlc3QtPmNvbXBs
ZXRlUmVxdWVzdChzdWNjZXNzID8gbnVsbHB0ciA6IElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJ
REJEYXRhYmFzZUV4Y2VwdGlvbjo6VW5rbm93bkVycm9yLCAiVW5rbm93biBlcnJvciBvY2N1cmVk
IGNoYW5naW5nIGRhdGFiYXNlIHZlcnNpb24iKSk7CiB9CiAKLXZvaWQgV2ViSURCU2VydmVyQ29u
bmVjdGlvbjo6b3BlbkN1cnNvcihJREJUcmFuc2FjdGlvbkJhY2tlbmQmLCBjb25zdCBPcGVuQ3Vy
c29yT3BlcmF0aW9uJiBvcGVyYXRpb24sIHN0ZDo6ZnVuY3Rpb248dm9pZChpbnQ2NF90LCBQYXNz
UmVmUHRyPElEQktleT4sIFBhc3NSZWZQdHI8SURCS2V5PiwgUGFzc1JlZlB0cjxTaGFyZWRCdWZm
ZXI+LCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlRXJyb3I+KT4gY29tcGxldGlvbkNhbGxiYWNrKQor
dm9pZCBXZWJJREJTZXJ2ZXJDb25uZWN0aW9uOjpvcGVuQ3Vyc29yKElEQlRyYW5zYWN0aW9uQmFj
a2VuZCYsIGNvbnN0IE9wZW5DdXJzb3JPcGVyYXRpb24mIG9wZXJhdGlvbiwgc3RkOjpmdW5jdGlv
bjx2b2lkIChpbnQ2NF90LCBQYXNzUmVmUHRyPElEQktleT4sIFBhc3NSZWZQdHI8SURCS2V5Piwg
UGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+LCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlRXJyb3I+KT4g
Y29tcGxldGlvbkNhbGxiYWNrKQogewogICAgIFJlZlB0cjxBc3luY1JlcXVlc3Q+IHNlcnZlclJl
cXVlc3QgPSBBc3luY1JlcXVlc3RJbXBsPGludDY0X3QsIFBhc3NSZWZQdHI8SURCS2V5PiwgUGFz
c1JlZlB0cjxJREJLZXk+LCBQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4sIFBhc3NSZWZQdHI8SURC
RGF0YWJhc2VFcnJvcj4+OjpjcmVhdGUoY29tcGxldGlvbkNhbGxiYWNrKTsKIAotICAgIHNlcnZl
clJlcXVlc3QtPnNldEFib3J0SGFuZGxlcihbY29tcGxldGlvbkNhbGxiYWNrXSgpIHsKKyAgICBz
ZXJ2ZXJSZXF1ZXN0LT5zZXRBYm9ydEhhbmRsZXIoW2NvbXBsZXRpb25DYWxsYmFja10gewogICAg
ICAgICBjb21wbGV0aW9uQ2FsbGJhY2soMCwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgSURC
RGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpVbmtub3duRXJyb3Is
ICJVbmtub3duIGVycm9yIG9jY3VyZWQgb3BlbmluZyBkYXRhYmFzZSBjdXJzb3IiKSk7CiAgICAg
fSk7CiAKQEAgLTY2OSwxMSArNjY5LDExIEBAIHZvaWQgV2ViSURCU2VydmVyQ29ubmVjdGlvbjo6
b3BlbkN1cnNvcihJREJUcmFuc2FjdGlvbkJhY2tlbmQmLCBjb25zdCBPcGVuQ3Vyc29yCiAgICAg
c2VuZChNZXNzYWdlczo6RGF0YWJhc2VQcm9jZXNzSURCQ29ubmVjdGlvbjo6T3BlbkN1cnNvcihy
ZXF1ZXN0SUQsIG9wZXJhdGlvbi50cmFuc2FjdGlvbklEKCksIG9wZXJhdGlvbi5vYmplY3RTdG9y
ZUlEKCksIG9wZXJhdGlvbi5pbmRleElEKCksIHN0YXRpY19jYXN0PGludDY0X3Q+KG9wZXJhdGlv
bi5kaXJlY3Rpb24oKSksIHN0YXRpY19jYXN0PGludDY0X3Q+KG9wZXJhdGlvbi5jdXJzb3JUeXBl
KCkpLCBzdGF0aWNfY2FzdDxpbnQ2NF90PihvcGVyYXRpb24udGFza1R5cGUoKSksIG9wZXJhdGlv
bi5rZXlSYW5nZSgpKSk7CiB9CiAKLXZvaWQgV2ViSURCU2VydmVyQ29ubmVjdGlvbjo6Y3Vyc29y
QWR2YW5jZShJREJDdXJzb3JCYWNrZW5kJiwgY29uc3QgQ3Vyc29yQWR2YW5jZU9wZXJhdGlvbiYg
b3BlcmF0aW9uLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoUGFzc1JlZlB0cjxJREJLZXk+LCBQYXNzUmVm
UHRyPElEQktleT4sIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiwgUGFzc1JlZlB0cjxJREJEYXRh
YmFzZUVycm9yPik+IGNvbXBsZXRpb25DYWxsYmFjaykKK3ZvaWQgV2ViSURCU2VydmVyQ29ubmVj
dGlvbjo6Y3Vyc29yQWR2YW5jZShJREJDdXJzb3JCYWNrZW5kJiwgY29uc3QgQ3Vyc29yQWR2YW5j
ZU9wZXJhdGlvbiYgb3BlcmF0aW9uLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKFBhc3NSZWZQdHI8SURC
S2V5PiwgUGFzc1JlZlB0cjxJREJLZXk+LCBQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4sIFBhc3NS
ZWZQdHI8SURCRGF0YWJhc2VFcnJvcj4pPiBjb21wbGV0aW9uQ2FsbGJhY2spCiB7CiAgICAgUmVm
UHRyPEFzeW5jUmVxdWVzdD4gc2VydmVyUmVxdWVzdCA9IEFzeW5jUmVxdWVzdEltcGw8UGFzc1Jl
ZlB0cjxJREJLZXk+LCBQYXNzUmVmUHRyPElEQktleT4sIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVy
PiwgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUVycm9yPj46OmNyZWF0ZShjb21wbGV0aW9uQ2FsbGJh
Y2spOwogCi0gICAgc2VydmVyUmVxdWVzdC0+c2V0QWJvcnRIYW5kbGVyKFtjb21wbGV0aW9uQ2Fs
bGJhY2tdKCkgeworICAgIHNlcnZlclJlcXVlc3QtPnNldEFib3J0SGFuZGxlcihbY29tcGxldGlv
bkNhbGxiYWNrXSB7CiAgICAgICAgIGNvbXBsZXRpb25DYWxsYmFjayhudWxscHRyLCBudWxscHRy
LCBudWxscHRyLCBJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246
OlVua25vd25FcnJvciwgIlVua25vd24gZXJyb3Igb2NjdXJlZCBhZHZhbmNpbmcgZGF0YWJhc2Ug
Y3Vyc29yIikpOwogICAgIH0pOwogCkBAIC02ODYsMTEgKzY4NiwxMSBAQCB2b2lkIFdlYklEQlNl
cnZlckNvbm5lY3Rpb246OmN1cnNvckFkdmFuY2UoSURCQ3Vyc29yQmFja2VuZCYsIGNvbnN0IEN1
cnNvckFkdmFuYwogICAgIHNlbmQoTWVzc2FnZXM6OkRhdGFiYXNlUHJvY2Vzc0lEQkNvbm5lY3Rp
b246OkN1cnNvckFkdmFuY2UocmVxdWVzdElELCBvcGVyYXRpb24uY3Vyc29ySUQoKSwgb3BlcmF0
aW9uLmNvdW50KCkpKTsKIH0KIAotdm9pZCBXZWJJREJTZXJ2ZXJDb25uZWN0aW9uOjpjdXJzb3JJ
dGVyYXRlKElEQkN1cnNvckJhY2tlbmQmLCBjb25zdCBDdXJzb3JJdGVyYXRpb25PcGVyYXRpb24m
IG9wZXJhdGlvbiwgc3RkOjpmdW5jdGlvbjx2b2lkKFBhc3NSZWZQdHI8SURCS2V5PiwgUGFzc1Jl
ZlB0cjxJREJLZXk+LCBQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4sIFBhc3NSZWZQdHI8SURCRGF0
YWJhc2VFcnJvcj4pPiBjb21wbGV0aW9uQ2FsbGJhY2spCit2b2lkIFdlYklEQlNlcnZlckNvbm5l
Y3Rpb246OmN1cnNvckl0ZXJhdGUoSURCQ3Vyc29yQmFja2VuZCYsIGNvbnN0IEN1cnNvckl0ZXJh
dGlvbk9wZXJhdGlvbiYgb3BlcmF0aW9uLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKFBhc3NSZWZQdHI8
SURCS2V5PiwgUGFzc1JlZlB0cjxJREJLZXk+LCBQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4sIFBh
c3NSZWZQdHI8SURCRGF0YWJhc2VFcnJvcj4pPiBjb21wbGV0aW9uQ2FsbGJhY2spCiB7CiAgICAg
UmVmUHRyPEFzeW5jUmVxdWVzdD4gc2VydmVyUmVxdWVzdCA9IEFzeW5jUmVxdWVzdEltcGw8UGFz
c1JlZlB0cjxJREJLZXk+LCBQYXNzUmVmUHRyPElEQktleT4sIFBhc3NSZWZQdHI8U2hhcmVkQnVm
ZmVyPiwgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUVycm9yPj46OmNyZWF0ZShjb21wbGV0aW9uQ2Fs
bGJhY2spOwogCi0gICAgc2VydmVyUmVxdWVzdC0+c2V0QWJvcnRIYW5kbGVyKFtjb21wbGV0aW9u
Q2FsbGJhY2tdKCkgeworICAgIHNlcnZlclJlcXVlc3QtPnNldEFib3J0SGFuZGxlcihbY29tcGxl
dGlvbkNhbGxiYWNrXSB7CiAgICAgICAgIGNvbXBsZXRpb25DYWxsYmFjayhudWxscHRyLCBudWxs
cHRyLCBudWxscHRyLCBJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRp
b246OlVua25vd25FcnJvciwgIlVua25vd24gZXJyb3Igb2NjdXJlZCBpdGVyYXRpbmcgZGF0YWJh
c2UgY3Vyc29yIikpOwogICAgIH0pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL0RhdGFiYXNlcy9JbmRleGVkREIvV2ViSURCU2VydmVyQ29ubmVjdGlvbi5oIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9EYXRhYmFzZXMvSW5kZXhlZERCL1dlYklEQlNlcnZlckNv
bm5lY3Rpb24uaAppbmRleCA0MGM1NmE1MjlmZmJjNGUzZjQ1MGZkOGQ5OWEwOTI3NzdkYmM1ODVh
Li5jYWJlMDZhNDYxZTk4YmI3Mjk1Mzc0MTIwZjE3MGQ5NjQwMmU2NWQ2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0RhdGFiYXNlcy9JbmRleGVkREIvV2ViSURCU2VydmVy
Q29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRGF0YWJhc2VzL0lu
ZGV4ZWREQi9XZWJJREJTZXJ2ZXJDb25uZWN0aW9uLmgKQEAgLTYxLDMwICs2MSwzMCBAQCBwdWJs
aWM6CiAKICAgICAvLyBUcmFuc2FjdGlvbi1sZXZlbCBvcGVyYXRpb25zCiAgICAgdmlydHVhbCB2
b2lkIG9wZW5UcmFuc2FjdGlvbihpbnQ2NF90IHRyYW5zYWN0aW9uSUQsIGNvbnN0IEhhc2hTZXQ8
aW50NjRfdD4mIG9iamVjdFN0b3JlSWRzLCBXZWJDb3JlOjpJbmRleGVkREI6OlRyYW5zYWN0aW9u
TW9kZSwgQm9vbENhbGxiYWNrRnVuY3Rpb24gc3VjY2Vzc0NhbGxiYWNrKSBvdmVycmlkZTsKLSAg
ICB2aXJ0dWFsIHZvaWQgYmVnaW5UcmFuc2FjdGlvbihpbnQ2NF90IHRyYW5zYWN0aW9uSUQsIHN0
ZDo6ZnVuY3Rpb248dm9pZCgpPiBjb21wbGV0aW9uQ2FsbGJhY2spIG92ZXJyaWRlOworICAgIHZp
cnR1YWwgdm9pZCBiZWdpblRyYW5zYWN0aW9uKGludDY0X3QgdHJhbnNhY3Rpb25JRCwgc3RkOjpm
dW5jdGlvbjx2b2lkICgpPiBjb21wbGV0aW9uQ2FsbGJhY2spIG92ZXJyaWRlOwogICAgIHZpcnR1
YWwgdm9pZCBjb21taXRUcmFuc2FjdGlvbihpbnQ2NF90IHRyYW5zYWN0aW9uSUQsIEJvb2xDYWxs
YmFja0Z1bmN0aW9uIHN1Y2Nlc3NDYWxsYmFjaykgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lk
IHJlc2V0VHJhbnNhY3Rpb24oaW50NjRfdCB0cmFuc2FjdGlvbklELCBzdGQ6OmZ1bmN0aW9uPHZv
aWQoKT4gY29tcGxldGlvbkNhbGxiYWNrKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVz
ZXRUcmFuc2FjdGlvbihpbnQ2NF90IHRyYW5zYWN0aW9uSUQsIHN0ZDo6ZnVuY3Rpb248dm9pZCAo
KT4gY29tcGxldGlvbkNhbGxiYWNrKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIGJvb2wgcmVzZXRU
cmFuc2FjdGlvblN5bmMoaW50NjRfdCB0cmFuc2FjdGlvbklEKSBvdmVycmlkZTsKLSAgICB2aXJ0
dWFsIHZvaWQgcm9sbGJhY2tUcmFuc2FjdGlvbihpbnQ2NF90IHRyYW5zYWN0aW9uSUQsIHN0ZDo6
ZnVuY3Rpb248dm9pZCgpPiBjb21wbGV0aW9uQ2FsbGJhY2spIG92ZXJyaWRlOworICAgIHZpcnR1
YWwgdm9pZCByb2xsYmFja1RyYW5zYWN0aW9uKGludDY0X3QgdHJhbnNhY3Rpb25JRCwgc3RkOjpm
dW5jdGlvbjx2b2lkICgpPiBjb21wbGV0aW9uQ2FsbGJhY2spIG92ZXJyaWRlOwogICAgIHZpcnR1
YWwgYm9vbCByb2xsYmFja1RyYW5zYWN0aW9uU3luYyhpbnQ2NF90IHRyYW5zYWN0aW9uSUQpIG92
ZXJyaWRlOwogCi0gICAgdmlydHVhbCB2b2lkIHNldEluZGV4S2V5cyhpbnQ2NF90IHRyYW5zYWN0
aW9uSUQsIGludDY0X3QgZGF0YWJhc2VJRCwgaW50NjRfdCBvYmplY3RTdG9yZUlELCBjb25zdCBX
ZWJDb3JlOjpJREJPYmplY3RTdG9yZU1ldGFkYXRhJiwgV2ViQ29yZTo6SURCS2V5JiBwcmltYXJ5
S2V5LCBjb25zdCBWZWN0b3I8aW50NjRfdD4mIGluZGV4SURzLCBjb25zdCBWZWN0b3I8VmVjdG9y
PFJlZlB0cjxXZWJDb3JlOjpJREJLZXk+Pj4mIGluZGV4S2V5cywgc3RkOjpmdW5jdGlvbjx2b2lk
KFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCRGF0YWJhc2VFcnJvcj4pPiBjb21wbGV0aW9uQ2FsbGJh
Y2spIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBzZXRJbmRleEtleXMoaW50NjRfdCB0cmFu
c2FjdGlvbklELCBpbnQ2NF90IGRhdGFiYXNlSUQsIGludDY0X3Qgb2JqZWN0U3RvcmVJRCwgY29u
c3QgV2ViQ29yZTo6SURCT2JqZWN0U3RvcmVNZXRhZGF0YSYsIFdlYkNvcmU6OklEQktleSYgcHJp
bWFyeUtleSwgY29uc3QgVmVjdG9yPGludDY0X3Q+JiBpbmRleElEcywgY29uc3QgVmVjdG9yPFZl
Y3RvcjxSZWZQdHI8V2ViQ29yZTo6SURCS2V5Pj4+JiBpbmRleEtleXMsIHN0ZDo6ZnVuY3Rpb248
dm9pZCAoUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJEYXRhYmFzZUVycm9yPik+IGNvbXBsZXRpb25D
YWxsYmFjaykgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlT2JqZWN0U3RvcmUo
V2ViQ29yZTo6SURCVHJhbnNhY3Rpb25CYWNrZW5kJiwgY29uc3QgV2ViQ29yZTo6Q3JlYXRlT2Jq
ZWN0U3RvcmVPcGVyYXRpb24mLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoUGFzc1JlZlB0cjxXZWJDb3Jl
OjpJREJEYXRhYmFzZUVycm9yPik+IGNvbXBsZXRpb25DYWxsYmFjaykgb3ZlcnJpZGU7Ci0gICAg
dmlydHVhbCB2b2lkIGNyZWF0ZUluZGV4KFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uQmFja2VuZCYs
IGNvbnN0IFdlYkNvcmU6OkNyZWF0ZUluZGV4T3BlcmF0aW9uJiwgc3RkOjpmdW5jdGlvbjx2b2lk
KFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCRGF0YWJhc2VFcnJvcj4pPiBjb21wbGV0aW9uQ2FsbGJh
Y2spIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBkZWxldGVJbmRleChXZWJDb3JlOjpJREJU
cmFuc2FjdGlvbkJhY2tlbmQmLCBjb25zdCBXZWJDb3JlOjpEZWxldGVJbmRleE9wZXJhdGlvbiYs
IHN0ZDo6ZnVuY3Rpb248dm9pZChQYXNzUmVmUHRyPFdlYkNvcmU6OklEQkRhdGFiYXNlRXJyb3I+
KT4gY29tcGxldGlvbkNhbGxiYWNrKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0KFdl
YkNvcmU6OklEQlRyYW5zYWN0aW9uQmFja2VuZCYsIGNvbnN0IFdlYkNvcmU6OkdldE9wZXJhdGlv
biYsIHN0ZDo6ZnVuY3Rpb248dm9pZChjb25zdCBXZWJDb3JlOjpJREJHZXRSZXN1bHQmLCBQYXNz
UmVmUHRyPFdlYkNvcmU6OklEQkRhdGFiYXNlRXJyb3I+KT4gY29tcGxldGlvbkNhbGxiYWNrKSBv
dmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgcHV0KFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uQmFj
a2VuZCYsIGNvbnN0IFdlYkNvcmU6OlB1dE9wZXJhdGlvbiYsIHN0ZDo6ZnVuY3Rpb248dm9pZChQ
YXNzUmVmUHRyPFdlYkNvcmU6OklEQktleT4sIFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCRGF0YWJh
c2VFcnJvcj4pPiBjb21wbGV0aW9uQ2FsbGJhY2spIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9p
ZCBvcGVuQ3Vyc29yKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uQmFja2VuZCYsIGNvbnN0IFdlYkNv
cmU6Ok9wZW5DdXJzb3JPcGVyYXRpb24mLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoaW50NjRfdCwgUGFz
c1JlZlB0cjxXZWJDb3JlOjpJREJLZXk+LCBQYXNzUmVmUHRyPFdlYkNvcmU6OklEQktleT4sIFBh
c3NSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiwgUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJE
YXRhYmFzZUVycm9yPik+IGNvbXBsZXRpb25DYWxsYmFjaykgb3ZlcnJpZGU7Ci0gICAgdmlydHVh
bCB2b2lkIGNvdW50KFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uQmFja2VuZCYsIGNvbnN0IFdlYkNv
cmU6OkNvdW50T3BlcmF0aW9uJiwgc3RkOjpmdW5jdGlvbjx2b2lkKGludDY0X3QsIFBhc3NSZWZQ
dHI8V2ViQ29yZTo6SURCRGF0YWJhc2VFcnJvcj4pPiBjb21wbGV0aW9uQ2FsbGJhY2spIG92ZXJy
aWRlOwotICAgIHZpcnR1YWwgdm9pZCBkZWxldGVSYW5nZShXZWJDb3JlOjpJREJUcmFuc2FjdGlv
bkJhY2tlbmQmLCBjb25zdCBXZWJDb3JlOjpEZWxldGVSYW5nZU9wZXJhdGlvbiYsIHN0ZDo6ZnVu
Y3Rpb248dm9pZChQYXNzUmVmUHRyPFdlYkNvcmU6OklEQkRhdGFiYXNlRXJyb3I+KT4gY29tcGxl
dGlvbkNhbGxiYWNrKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgY2xlYXJPYmplY3RTdG9y
ZShXZWJDb3JlOjpJREJUcmFuc2FjdGlvbkJhY2tlbmQmLCBjb25zdCBXZWJDb3JlOjpDbGVhck9i
amVjdFN0b3JlT3BlcmF0aW9uJiwgc3RkOjpmdW5jdGlvbjx2b2lkKFBhc3NSZWZQdHI8V2ViQ29y
ZTo6SURCRGF0YWJhc2VFcnJvcj4pPiBjb21wbGV0aW9uQ2FsbGJhY2spIG92ZXJyaWRlOwotICAg
IHZpcnR1YWwgdm9pZCBkZWxldGVPYmplY3RTdG9yZShXZWJDb3JlOjpJREJUcmFuc2FjdGlvbkJh
Y2tlbmQmLCBjb25zdCBXZWJDb3JlOjpEZWxldGVPYmplY3RTdG9yZU9wZXJhdGlvbiYsIHN0ZDo6
ZnVuY3Rpb248dm9pZChQYXNzUmVmUHRyPFdlYkNvcmU6OklEQkRhdGFiYXNlRXJyb3I+KT4gY29t
cGxldGlvbkNhbGxiYWNrKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgY2hhbmdlRGF0YWJh
c2VWZXJzaW9uKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uQmFja2VuZCYsIGNvbnN0IFdlYkNvcmU6
OklEQkRhdGFiYXNlQmFja2VuZDo6VmVyc2lvbkNoYW5nZU9wZXJhdGlvbiYsIHN0ZDo6ZnVuY3Rp
b248dm9pZChQYXNzUmVmUHRyPFdlYkNvcmU6OklEQkRhdGFiYXNlRXJyb3I+KT4gY29tcGxldGlv
bkNhbGxiYWNrKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlT2JqZWN0U3RvcmUo
V2ViQ29yZTo6SURCVHJhbnNhY3Rpb25CYWNrZW5kJiwgY29uc3QgV2ViQ29yZTo6Q3JlYXRlT2Jq
ZWN0U3RvcmVPcGVyYXRpb24mLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKFBhc3NSZWZQdHI8V2ViQ29y
ZTo6SURCRGF0YWJhc2VFcnJvcj4pPiBjb21wbGV0aW9uQ2FsbGJhY2spIG92ZXJyaWRlOworICAg
IHZpcnR1YWwgdm9pZCBjcmVhdGVJbmRleChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbkJhY2tlbmQm
LCBjb25zdCBXZWJDb3JlOjpDcmVhdGVJbmRleE9wZXJhdGlvbiYsIHN0ZDo6ZnVuY3Rpb248dm9p
ZCAoUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJEYXRhYmFzZUVycm9yPik+IGNvbXBsZXRpb25DYWxs
YmFjaykgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGRlbGV0ZUluZGV4KFdlYkNvcmU6OklE
QlRyYW5zYWN0aW9uQmFja2VuZCYsIGNvbnN0IFdlYkNvcmU6OkRlbGV0ZUluZGV4T3BlcmF0aW9u
Jiwgc3RkOjpmdW5jdGlvbjx2b2lkIChQYXNzUmVmUHRyPFdlYkNvcmU6OklEQkRhdGFiYXNlRXJy
b3I+KT4gY29tcGxldGlvbkNhbGxiYWNrKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0
KFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uQmFja2VuZCYsIGNvbnN0IFdlYkNvcmU6OkdldE9wZXJh
dGlvbiYsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoY29uc3QgV2ViQ29yZTo6SURCR2V0UmVzdWx0Jiwg
UGFzc1JlZlB0cjxXZWJDb3JlOjpJREJEYXRhYmFzZUVycm9yPik+IGNvbXBsZXRpb25DYWxsYmFj
aykgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHB1dChXZWJDb3JlOjpJREJUcmFuc2FjdGlv
bkJhY2tlbmQmLCBjb25zdCBXZWJDb3JlOjpQdXRPcGVyYXRpb24mLCBzdGQ6OmZ1bmN0aW9uPHZv
aWQgKFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCS2V5PiwgUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJE
YXRhYmFzZUVycm9yPik+IGNvbXBsZXRpb25DYWxsYmFjaykgb3ZlcnJpZGU7CisgICAgdmlydHVh
bCB2b2lkIG9wZW5DdXJzb3IoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb25CYWNrZW5kJiwgY29uc3Qg
V2ViQ29yZTo6T3BlbkN1cnNvck9wZXJhdGlvbiYsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoaW50NjRf
dCwgUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJLZXk+LCBQYXNzUmVmUHRyPFdlYkNvcmU6OklEQktl
eT4sIFBhc3NSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiwgUGFzc1JlZlB0cjxXZWJDb3Jl
OjpJREJEYXRhYmFzZUVycm9yPik+IGNvbXBsZXRpb25DYWxsYmFjaykgb3ZlcnJpZGU7CisgICAg
dmlydHVhbCB2b2lkIGNvdW50KFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uQmFja2VuZCYsIGNvbnN0
IFdlYkNvcmU6OkNvdW50T3BlcmF0aW9uJiwgc3RkOjpmdW5jdGlvbjx2b2lkIChpbnQ2NF90LCBQ
YXNzUmVmUHRyPFdlYkNvcmU6OklEQkRhdGFiYXNlRXJyb3I+KT4gY29tcGxldGlvbkNhbGxiYWNr
KSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlUmFuZ2UoV2ViQ29yZTo6SURCVHJh
bnNhY3Rpb25CYWNrZW5kJiwgY29uc3QgV2ViQ29yZTo6RGVsZXRlUmFuZ2VPcGVyYXRpb24mLCBz
dGQ6OmZ1bmN0aW9uPHZvaWQgKFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCRGF0YWJhc2VFcnJvcj4p
PiBjb21wbGV0aW9uQ2FsbGJhY2spIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBjbGVhck9i
amVjdFN0b3JlKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uQmFja2VuZCYsIGNvbnN0IFdlYkNvcmU6
OkNsZWFyT2JqZWN0U3RvcmVPcGVyYXRpb24mLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKFBhc3NSZWZQ
dHI8V2ViQ29yZTo6SURCRGF0YWJhc2VFcnJvcj4pPiBjb21wbGV0aW9uQ2FsbGJhY2spIG92ZXJy
aWRlOworICAgIHZpcnR1YWwgdm9pZCBkZWxldGVPYmplY3RTdG9yZShXZWJDb3JlOjpJREJUcmFu
c2FjdGlvbkJhY2tlbmQmLCBjb25zdCBXZWJDb3JlOjpEZWxldGVPYmplY3RTdG9yZU9wZXJhdGlv
biYsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJEYXRhYmFzZUVy
cm9yPik+IGNvbXBsZXRpb25DYWxsYmFjaykgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGNo
YW5nZURhdGFiYXNlVmVyc2lvbihXZWJDb3JlOjpJREJUcmFuc2FjdGlvbkJhY2tlbmQmLCBjb25z
dCBXZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmQ6OlZlcnNpb25DaGFuZ2VPcGVyYXRpb24mLCBz
dGQ6OmZ1bmN0aW9uPHZvaWQgKFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCRGF0YWJhc2VFcnJvcj4p
PiBjb21wbGV0aW9uQ2FsbGJhY2spIG92ZXJyaWRlOwogCiAgICAgLy8gQ3Vyc29yLWxldmVsIG9w
ZXJhdGlvbnMKLSAgICB2aXJ0dWFsIHZvaWQgY3Vyc29yQWR2YW5jZShXZWJDb3JlOjpJREJDdXJz
b3JCYWNrZW5kJiwgY29uc3QgV2ViQ29yZTo6Q3Vyc29yQWR2YW5jZU9wZXJhdGlvbiYsIHN0ZDo6
ZnVuY3Rpb248dm9pZChQYXNzUmVmUHRyPFdlYkNvcmU6OklEQktleT4sIFBhc3NSZWZQdHI8V2Vi
Q29yZTo6SURCS2V5PiwgUGFzc1JlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+LCBQYXNzUmVm
UHRyPFdlYkNvcmU6OklEQkRhdGFiYXNlRXJyb3I+KT4gY29tcGxldGlvbkNhbGxiYWNrKSBvdmVy
cmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgY3Vyc29ySXRlcmF0ZShXZWJDb3JlOjpJREJDdXJzb3JC
YWNrZW5kJiwgY29uc3QgV2ViQ29yZTo6Q3Vyc29ySXRlcmF0aW9uT3BlcmF0aW9uJiwgc3RkOjpm
dW5jdGlvbjx2b2lkKFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCS2V5PiwgUGFzc1JlZlB0cjxXZWJD
b3JlOjpJREJLZXk+LCBQYXNzUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4sIFBhc3NSZWZQ
dHI8V2ViQ29yZTo6SURCRGF0YWJhc2VFcnJvcj4pPiBjb21wbGV0aW9uQ2FsbGJhY2spIG92ZXJy
aWRlOworICAgIHZpcnR1YWwgdm9pZCBjdXJzb3JBZHZhbmNlKFdlYkNvcmU6OklEQkN1cnNvckJh
Y2tlbmQmLCBjb25zdCBXZWJDb3JlOjpDdXJzb3JBZHZhbmNlT3BlcmF0aW9uJiwgc3RkOjpmdW5j
dGlvbjx2b2lkIChQYXNzUmVmUHRyPFdlYkNvcmU6OklEQktleT4sIFBhc3NSZWZQdHI8V2ViQ29y
ZTo6SURCS2V5PiwgUGFzc1JlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+LCBQYXNzUmVmUHRy
PFdlYkNvcmU6OklEQkRhdGFiYXNlRXJyb3I+KT4gY29tcGxldGlvbkNhbGxiYWNrKSBvdmVycmlk
ZTsKKyAgICB2aXJ0dWFsIHZvaWQgY3Vyc29ySXRlcmF0ZShXZWJDb3JlOjpJREJDdXJzb3JCYWNr
ZW5kJiwgY29uc3QgV2ViQ29yZTo6Q3Vyc29ySXRlcmF0aW9uT3BlcmF0aW9uJiwgc3RkOjpmdW5j
dGlvbjx2b2lkIChQYXNzUmVmUHRyPFdlYkNvcmU6OklEQktleT4sIFBhc3NSZWZQdHI8V2ViQ29y
ZTo6SURCS2V5PiwgUGFzc1JlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+LCBQYXNzUmVmUHRy
PFdlYkNvcmU6OklEQkRhdGFiYXNlRXJyb3I+KT4gY29tcGxldGlvbkNhbGxiYWNrKSBvdmVycmlk
ZTsKIAogICAgIC8vIE1lc3NhZ2UgaGFuZGxlcnMuCiAgICAgdm9pZCBkaWRSZWNlaXZlV2ViSURC
U2VydmVyQ29ubmVjdGlvbk1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uKiwgSVBDOjpNZXNzYWdlRGVj
b2RlciYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9PcmlnaW5EYXRh
L1dlYk9yaWdpbkRhdGFNYW5hZ2VyU3VwcGxlbWVudC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9PcmlnaW5EYXRhL1dlYk9yaWdpbkRhdGFNYW5hZ2VyU3VwcGxlbWVudC5oCmluZGV4IGJh
ODY0OTNlOGE4Mjg1ODI2MzgzNWFjMzQ4NmEwZTNiODFmNmM3OWMuLjdjNDllOTM5MGNhNGU0MjY3
OTcxMzRkMzMxODM2ODdiNDllZDMzY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvT3JpZ2luRGF0YS9XZWJPcmlnaW5EYXRhTWFuYWdlclN1cHBsZW1lbnQuaAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL09yaWdpbkRhdGEvV2ViT3JpZ2luRGF0YU1hbmFnZXJT
dXBwbGVtZW50LmgKQEAgLTM3LDEwICszNywxMCBAQCBwdWJsaWM6CiAgICAgV2ViT3JpZ2luRGF0
YU1hbmFnZXJTdXBwbGVtZW50KCkgeyB9CiAgICAgdmlydHVhbCB+V2ViT3JpZ2luRGF0YU1hbmFn
ZXJTdXBwbGVtZW50KCkgeyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0T3JpZ2lucyhXS09yaWdp
bkRhdGFUeXBlcywgc3RkOjpmdW5jdGlvbjx2b2lkKGNvbnN0IFZlY3RvcjxTZWN1cml0eU9yaWdp
bkRhdGE+Jik+IGNvbXBsZXRpb24pID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlRW50cmll
c0Zvck9yaWdpbihXS09yaWdpbkRhdGFUeXBlcywgY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiwg
c3RkOjpmdW5jdGlvbjx2b2lkKCk+IGNvbXBsZXRpb24pID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQg
ZGVsZXRlRW50cmllc01vZGlmaWVkQmV0d2VlbkRhdGVzKFdLT3JpZ2luRGF0YVR5cGVzLCBkb3Vi
bGUgc3RhcnREYXRlLCBkb3VibGUgZW5kRGF0ZSwgc3RkOjpmdW5jdGlvbjx2b2lkKCk+IGNvbXBs
ZXRpb24pID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlQWxsRW50cmllcyhXS09yaWdpbkRh
dGFUeXBlcywgc3RkOjpmdW5jdGlvbjx2b2lkKCk+IGNvbXBsZXRpb24pID0gMDsKKyAgICB2aXJ0
dWFsIHZvaWQgZ2V0T3JpZ2lucyhXS09yaWdpbkRhdGFUeXBlcywgc3RkOjpmdW5jdGlvbjx2b2lk
IChjb25zdCBWZWN0b3I8U2VjdXJpdHlPcmlnaW5EYXRhPiYpPiBjb21wbGV0aW9uKSA9IDA7Cisg
ICAgdmlydHVhbCB2b2lkIGRlbGV0ZUVudHJpZXNGb3JPcmlnaW4oV0tPcmlnaW5EYXRhVHlwZXMs
IGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4gY29tcGxl
dGlvbikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkZWxldGVFbnRyaWVzTW9kaWZpZWRCZXR3ZWVu
RGF0ZXMoV0tPcmlnaW5EYXRhVHlwZXMsIGRvdWJsZSBzdGFydERhdGUsIGRvdWJsZSBlbmREYXRl
LCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+IGNvbXBsZXRpb24pID0gMDsKKyAgICB2aXJ0dWFsIHZv
aWQgZGVsZXRlQWxsRW50cmllcyhXS09yaWdpbkRhdGFUeXBlcywgc3RkOjpmdW5jdGlvbjx2b2lk
ICgpPiBjb21wbGV0aW9uKSA9IDA7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQcm9jZXNzLmNwcAppbmRleCA0YTI4ZTU2YzY2ZTAzNTY0NjY2NzU4ZTk3N2JkM2FiZmVlOTdi
ZGU0Li44ZTgyYWExMWRmOTRkOGYyNzkyMTBiYTc0MmU5YzAwNDJiMjMwMjg0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKQEAgLTEyNTcsNyArMTI1Nyw3IEBAIHZv
aWQgV2ViUHJvY2Vzczo6c2V0RW5hYmxlZFNlcnZpY2VzKGJvb2wgaGFzSW1hZ2VTZXJ2aWNlcywg
Ym9vbCBoYXNTZWxlY3Rpb25TZXJ2CiB9CiAjZW5kaWYKIAotdm9pZCBXZWJQcm9jZXNzOjpnZXRP
cmlnaW5zKFdLT3JpZ2luRGF0YVR5cGVzIHR5cGVzLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoY29uc3Qg
VmVjdG9yPFNlY3VyaXR5T3JpZ2luRGF0YT4mKT4gY29tcGxldGlvbikKK3ZvaWQgV2ViUHJvY2Vz
czo6Z2V0T3JpZ2lucyhXS09yaWdpbkRhdGFUeXBlcyB0eXBlcywgc3RkOjpmdW5jdGlvbjx2b2lk
IChjb25zdCBWZWN0b3I8U2VjdXJpdHlPcmlnaW5EYXRhPiYpPiBjb21wbGV0aW9uKQogewogICAg
IGlmICghKHR5cGVzICYga1dLTWVkaWFLZXlTdG9yYWdlT3JpZ2luRGF0YSkpIHsKICAgICAgICAg
Y29tcGxldGlvbihWZWN0b3I8U2VjdXJpdHlPcmlnaW5EYXRhPigpKTsKQEAgLTEyNzMsNyArMTI3
Myw3IEBAIHZvaWQgV2ViUHJvY2Vzczo6Z2V0T3JpZ2lucyhXS09yaWdpbkRhdGFUeXBlcyB0eXBl
cywgc3RkOjpmdW5jdGlvbjx2b2lkKGNvbnN0IFZlCiAgICAgY29tcGxldGlvbihtYW5hZ2VyLT5n
ZXRNZWRpYUtleU9yaWdpbnMoKSk7CiB9CiAKLXZvaWQgV2ViUHJvY2Vzczo6ZGVsZXRlRW50cmll
c0Zvck9yaWdpbihXS09yaWdpbkRhdGFUeXBlcyB0eXBlcywgY29uc3QgU2VjdXJpdHlPcmlnaW5E
YXRhJiBvcmlnaW4sIHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiBjb21wbGV0aW9uKQordm9pZCBXZWJQ
cm9jZXNzOjpkZWxldGVFbnRyaWVzRm9yT3JpZ2luKFdLT3JpZ2luRGF0YVR5cGVzIHR5cGVzLCBj
b25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIG9yaWdpbiwgc3RkOjpmdW5jdGlvbjx2b2lkICgpPiBj
b21wbGV0aW9uKQogewogICAgIGlmICghKHR5cGVzICYga1dLTWVkaWFLZXlTdG9yYWdlT3JpZ2lu
RGF0YSkpIHsKICAgICAgICAgY29tcGxldGlvbigpOwpAQCAtMTI5MCw3ICsxMjkwLDcgQEAgdm9p
ZCBXZWJQcm9jZXNzOjpkZWxldGVFbnRyaWVzRm9yT3JpZ2luKFdLT3JpZ2luRGF0YVR5cGVzIHR5
cGVzLCBjb25zdCBTZWN1cml0eU8KICAgICBjb21wbGV0aW9uKCk7CiB9CiAKLXZvaWQgV2ViUHJv
Y2Vzczo6ZGVsZXRlRW50cmllc01vZGlmaWVkQmV0d2VlbkRhdGVzKFdLT3JpZ2luRGF0YVR5cGVz
IHR5cGVzLCBkb3VibGUgc3RhcnREYXRlLCBkb3VibGUgZW5kRGF0ZSwgc3RkOjpmdW5jdGlvbjx2
b2lkKCk+IGNvbXBsZXRpb24pCit2b2lkIFdlYlByb2Nlc3M6OmRlbGV0ZUVudHJpZXNNb2RpZmll
ZEJldHdlZW5EYXRlcyhXS09yaWdpbkRhdGFUeXBlcyB0eXBlcywgZG91YmxlIHN0YXJ0RGF0ZSwg
ZG91YmxlIGVuZERhdGUsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4gY29tcGxldGlvbikKIHsKICAg
ICBpZiAoISh0eXBlcyAmIGtXS01lZGlhS2V5U3RvcmFnZU9yaWdpbkRhdGEpKSB7CiAgICAgICAg
IGNvbXBsZXRpb24oKTsKQEAgLTEzMDcsNyArMTMwNyw3IEBAIHZvaWQgV2ViUHJvY2Vzczo6ZGVs
ZXRlRW50cmllc01vZGlmaWVkQmV0d2VlbkRhdGVzKFdLT3JpZ2luRGF0YVR5cGVzIHR5cGVzLCBk
b3ViCiAgICAgY29tcGxldGlvbigpOwogfQogCi12b2lkIFdlYlByb2Nlc3M6OmRlbGV0ZUFsbEVu
dHJpZXMoV0tPcmlnaW5EYXRhVHlwZXMgdHlwZXMsIHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiBjb21w
bGV0aW9uKQordm9pZCBXZWJQcm9jZXNzOjpkZWxldGVBbGxFbnRyaWVzKFdLT3JpZ2luRGF0YVR5
cGVzIHR5cGVzLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+IGNvbXBsZXRpb24pCiB7CiAgICAgaWYg
KCEodHlwZXMgJiBrV0tNZWRpYUtleVN0b3JhZ2VPcmlnaW5EYXRhKSkgewogICAgICAgICBjb21w
bGV0aW9uKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nl
c3MuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCmluZGV4IGJmMGIx
YTIzMjhkYWFkNjAxOTIyNTk4MjQyYmM0NmI3NmM5MWNiMzEuLjY3YmEwMmNmZDM1YmU0N2Y0NmIw
NGZhNDliZjY4NzZjZjZmYTAyZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vz
cy5oCkBAIC0yODcsMTAgKzI4NywxMCBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkUmVjZWl2ZVdl
YlByb2Nlc3NNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiosIElQQzo6TWVzc2FnZURlY29kZXImKTsK
IAogICAgIC8vIFdlYk9yaWdpbkRhdGFNYW5hZ2VyU3VwcGxlbWVudAotICAgIHZpcnR1YWwgdm9p
ZCBnZXRPcmlnaW5zKFdLT3JpZ2luRGF0YVR5cGVzLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoY29uc3Qg
VmVjdG9yPFNlY3VyaXR5T3JpZ2luRGF0YT4mKT4gY29tcGxldGlvbikgb3ZlcnJpZGU7Ci0gICAg
dmlydHVhbCB2b2lkIGRlbGV0ZUVudHJpZXNGb3JPcmlnaW4oV0tPcmlnaW5EYXRhVHlwZXMsIGNv
bnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYsIHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiBjb21wbGV0aW9u
KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlRW50cmllc01vZGlmaWVkQmV0d2Vl
bkRhdGVzKFdLT3JpZ2luRGF0YVR5cGVzLCBkb3VibGUgc3RhcnREYXRlLCBkb3VibGUgZW5kRGF0
ZSwgc3RkOjpmdW5jdGlvbjx2b2lkKCk+IGNvbXBsZXRpb24pIG92ZXJyaWRlOwotICAgIHZpcnR1
YWwgdm9pZCBkZWxldGVBbGxFbnRyaWVzKFdLT3JpZ2luRGF0YVR5cGVzLCBzdGQ6OmZ1bmN0aW9u
PHZvaWQoKT4gY29tcGxldGlvbikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGdldE9yaWdp
bnMoV0tPcmlnaW5EYXRhVHlwZXMsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoY29uc3QgVmVjdG9yPFNl
Y3VyaXR5T3JpZ2luRGF0YT4mKT4gY29tcGxldGlvbikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2
b2lkIGRlbGV0ZUVudHJpZXNGb3JPcmlnaW4oV0tPcmlnaW5EYXRhVHlwZXMsIGNvbnN0IFNlY3Vy
aXR5T3JpZ2luRGF0YSYsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4gY29tcGxldGlvbikgb3ZlcnJp
ZGU7CisgICAgdmlydHVhbCB2b2lkIGRlbGV0ZUVudHJpZXNNb2RpZmllZEJldHdlZW5EYXRlcyhX
S09yaWdpbkRhdGFUeXBlcywgZG91YmxlIHN0YXJ0RGF0ZSwgZG91YmxlIGVuZERhdGUsIHN0ZDo6
ZnVuY3Rpb248dm9pZCAoKT4gY29tcGxldGlvbikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lk
IGRlbGV0ZUFsbEVudHJpZXMoV0tPcmlnaW5EYXRhVHlwZXMsIHN0ZDo6ZnVuY3Rpb248dm9pZCAo
KT4gY29tcGxldGlvbikgb3ZlcnJpZGU7CiAKICAgICBSZWZQdHI8V2ViQ29ubmVjdGlvblRvVUlQ
cm9jZXNzPiBtX3dlYkNvbm5lY3Rpb247CiAK
</data>
<flag name="review"
          id="268298"
          type_id="1"
          status="+"
          setter="sam"
    />
          </attachment>
      

    </bug>

</bugzilla>