<?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>206451</bug_id>
          
          <creation_ts>2020-01-17 15:31:42 -0800</creation_ts>
          <short_desc>Remove std::lock_guard</short_desc>
          <delta_ts>2020-02-29 21:02:17 -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>bmalloc</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=206443</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Basuke Suzuki">basuke</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>andersca</cc>
    
    <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cgarcia</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fred.wang</cc>
    
    <cc>ggaren</cc>
    
    <cc>glenn</cc>
    
    <cc>hi</cc>
    
    <cc>hta</cc>
    
    <cc>jamesr</cc>
    
    <cc>jbedard</cc>
    
    <cc>jer.noble</cc>
    
    <cc>jiewen_tan</cc>
    
    <cc>joepeck</cc>
    
    <cc>keith_miller</cc>
    
    <cc>luiz</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mmaxfield</cc>
    
    <cc>msaboff</cc>
    
    <cc>philipj</cc>
    
    <cc>saam</cc>
    
    <cc>sergio</cc>
    
    <cc>tommyw</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1608236</commentid>
    <comment_count>0</comment_count>
    <who name="Basuke Suzuki">basuke</who>
    <bug_when>2020-01-17 15:31:42 -0800</bug_when>
    <thetext>We are on C++ 17. https://en.cppreference.com/w/cpp/thread/scoped_lock</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1608253</commentid>
    <comment_count>1</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-01-17 15:47:32 -0800</bug_when>
    <thetext>https://trac.webkit.org/wiki/WebKitGTK/GCCRequirement
Our requirement is GCC7. So, we can use it.
https://www.gnu.org/software/gcc/gcc-7/changes.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1608295</commentid>
    <comment_count>2</comment_count>
    <who name="Basuke Suzuki">basuke</who>
    <bug_when>2020-01-17 16:39:14 -0800</bug_when>
    <thetext>It generates exactly same code. We can safely replace this. https://godbolt.org/z/p-KTwc</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1624259</commentid>
    <comment_count>3</comment_count>
      <attachid>392054</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-02-29 02:00:17 -0800</bug_when>
    <thetext>Created attachment 392054
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1624260</commentid>
    <comment_count>4</comment_count>
      <attachid>392055</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-02-29 02:13:41 -0800</bug_when>
    <thetext>Created attachment 392055
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1624264</commentid>
    <comment_count>5</comment_count>
      <attachid>392057</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-02-29 02:41:48 -0800</bug_when>
    <thetext>Created attachment 392057
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1624270</commentid>
    <comment_count>6</comment_count>
      <attachid>392057</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2020-02-29 07:02:41 -0800</bug_when>
    <thetext>Comment on attachment 392057
Patch

OK.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1624363</commentid>
    <comment_count>7</comment_count>
      <attachid>392057</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-02-29 20:13:35 -0800</bug_when>
    <thetext>Comment on attachment 392057
Patch

Thanks</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1624364</commentid>
    <comment_count>8</comment_count>
      <attachid>392057</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-02-29 21:01:37 -0800</bug_when>
    <thetext>Comment on attachment 392057
Patch

Clearing flags on attachment: 392057

Committed r257688: &lt;https://trac.webkit.org/changeset/257688&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1624365</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-02-29 21:01:40 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1624366</commentid>
    <comment_count>10</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-02-29 21:02:17 -0800</bug_when>
    <thetext>&lt;rdar://problem/59925404&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>392054</attachid>
            <date>2020-02-29 02:00:17 -0800</date>
            <delta_ts>2020-02-29 02:13:39 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-206451-20200229020016.patch</filename>
            <type>text/plain</type>
            <size>78136</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU3NjgxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAy
YzBmNThlZTJiOTllZTQwMDBlMDI3NDkwZWNhYTgzN2U3Mzg2MDE0Li40NzUwYjI0MmJlNzc4OGJj
NmVjZmFlNTZkNjRiOTliODQ4OTBhMTdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyOCBAQAorMjAyMC0wMi0yOSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFJlbW92ZSBzdGQ6OmxvY2tfZ3VhcmQKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNjQ1MQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogQVBJL0pTVmlydHVhbE1hY2hpbmUubW06Cisg
ICAgICAgICgrW0pTVk1XcmFwcGVyQ2FjaGUgYWRkV3JhcHBlcjpmb3JKU0NvbnRleHRHcm91cFJl
ZjpdKToKKyAgICAgICAgKCtbSlNWTVdyYXBwZXJDYWNoZSB3cmFwcGVyRm9ySlNDb250ZXh0R3Jv
dXBSZWY6XSk6CisgICAgICAgICogQVBJL2dsaWIvSlNDVmlydHVhbE1hY2hpbmUuY3BwOgorICAg
ICAgICAoYWRkV3JhcHBlcik6CisgICAgICAgIChyZW1vdmVXcmFwcGVyKToKKyAgICAgICAgKiBo
ZWFwL0hlYXBTbmFwc2hvdEJ1aWxkZXIuY3BwOgorICAgICAgICAoSlNDOjpIZWFwU25hcHNob3RC
dWlsZGVyOjphbmFseXplTm9kZSk6CisgICAgICAgIChKU0M6OkhlYXBTbmFwc2hvdEJ1aWxkZXI6
OmFuYWx5emVFZGdlKToKKyAgICAgICAgKEpTQzo6SGVhcFNuYXBzaG90QnVpbGRlcjo6YW5hbHl6
ZVByb3BlcnR5TmFtZUVkZ2UpOgorICAgICAgICAoSlNDOjpIZWFwU25hcHNob3RCdWlsZGVyOjph
bmFseXplVmFyaWFibGVOYW1lRWRnZSk6CisgICAgICAgIChKU0M6OkhlYXBTbmFwc2hvdEJ1aWxk
ZXI6OmFuYWx5emVJbmRleEVkZ2UpOgorICAgICAgICAoSlNDOjpIZWFwU25hcHNob3RCdWlsZGVy
OjpzZXRPcGFxdWVSb290UmVhY2hhYmlsaXR5UmVhc29uRm9yQ2VsbCk6CisgICAgICAgICogaGVh
cC9NYWNoaW5lU3RhY2tNYXJrZXIuY3BwOgorICAgICAgICAoSlNDOjpNYWNoaW5lVGhyZWFkczo6
dHJ5Q29weU90aGVyVGhyZWFkU3RhY2tzKToKKyAgICAgICAgKiBydW50aW1lL0pTUnVuTG9vcFRp
bWVyLmNwcDoKKyAgICAgICAgKEpTQzo6SlNSdW5Mb29wVGltZXI6OnRpbWVyRGlkRmlyZSk6CisK
IDIwMjAtMDItMjggIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KIAogICAgICAg
ICBbSlNDXSBCdWlsdGluTmFtZXMnIEhhc2hNYXAgc2hvdWxkIGJlIHNtYWxsCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDlmMmM5
MTQ3YmUwNGZiOWM0NzAzZWU1MGZjZGVhOTQ5NjcwODRmNjEuLjYzMzE2NDgyZDlkOWQ4Y2UxZjJk
NmI5MGQ3NjM1NzcwNDJhZDYyZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTEgQEAKKzIwMjAtMDItMjkgIFl1
c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgc3RkOjps
b2NrX2d1YXJkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMDY0NTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBSZW1vdmUgdXNlIG9mIHN0ZDo6bG9ja19ndWFyZC4gVGhpcyBpcyBkZXByZWNhdGVkIGluIEMr
KzE3LgorCisgICAgICAgIDEuIEZvciBwYXJ0aWN1bGFybHkgbG93LWxldmVsIHVzYWdlIChsaWtl
LCBibWFsbG9jLCBzdGQ6Om11dGV4KSwgdXNlIHN0ZDo6c2NvcGVkX2xvY2suCisgICAgICAgIDIu
IEZvciB0aGUgb3RoZXIgcHVycG9zZSwgdXNlIGhvbGRMb2NrLgorCisgICAgICAgICogYmVuY2ht
YXJrcy9Db25kaXRpb25TcGVlZFRlc3QuY3BwOgorICAgICAgICAqIHd0Zi9DcnlwdG9ncmFwaGlj
YWxseVJhbmRvbU51bWJlci5jcHA6CisgICAgICAgICogd3RmL0hhc2hUYWJsZS5jcHA6CisgICAg
ICAgIChXVEY6Okhhc2hUYWJsZVN0YXRzOjpyZWNvcmRDb2xsaXNpb25BdENvdW50KToKKyAgICAg
ICAgKFdURjo6SGFzaFRhYmxlU3RhdHM6OmR1bXBTdGF0cyk6CisgICAgICAgICogd3RmL0hhc2hU
YWJsZS5oOgorICAgICAgICAoV1RGOjpLZXlUcmFpdHM+OjppbnZhbGlkYXRlSXRlcmF0b3JzKToK
KyAgICAgICAgKFdURjo6YWRkSXRlcmF0b3IpOgorICAgICAgICAoV1RGOjpyZW1vdmVJdGVyYXRv
cik6CisgICAgICAgICogd3RmL0xhbmd1YWdlLmNwcDoKKyAgICAgICAgKFdURjo6dXNlclByZWZl
cnJlZExhbmd1YWdlcyk6CisgICAgICAgICogd3RmL01haW5UaHJlYWQuY3BwOgorICAgICAgICAo
V1RGOjpkaXNwYXRjaEZ1bmN0aW9uc0Zyb21NYWluVGhyZWFkKToKKyAgICAgICAgKFdURjo6Y2Fs
bE9uTWFpblRocmVhZCk6CisgICAgICAgIChXVEY6OmNhbGxPbk1haW5BbmRXYWl0KToKKyAgICAg
ICAgKiB3dGYvU3RhY2tTdGF0cy5jcHA6CisgICAgICAgIChXVEY6OlN0YWNrU3RhdHM6OkNoZWNr
UG9pbnQ6OkNoZWNrUG9pbnQpOgorICAgICAgICAoV1RGOjpTdGFja1N0YXRzOjpDaGVja1BvaW50
Ojp+Q2hlY2tQb2ludCk6CisgICAgICAgIChXVEY6OlN0YWNrU3RhdHM6OnByb2JlKToKKyAgICAg
ICAgKFdURjo6U3RhY2tTdGF0czo6TGF5b3V0Q2hlY2tQb2ludDo6TGF5b3V0Q2hlY2tQb2ludCk6
CisgICAgICAgIChXVEY6OlN0YWNrU3RhdHM6OkxheW91dENoZWNrUG9pbnQ6On5MYXlvdXRDaGVj
a1BvaW50KToKKyAgICAgICAgKiB3dGYvV29yZExvY2suY3BwOgorICAgICAgICAoV1RGOjpXb3Jk
TG9jazo6dW5sb2NrU2xvdyk6CisgICAgICAgICogd3RmL2NmL0xhbmd1YWdlQ0YuY3BwOgorICAg
ICAgICAoV1RGOjpsYW5ndWFnZVByZWZlcmVuY2VzRGlkQ2hhbmdlKToKKyAgICAgICAgKFdURjo6
cGxhdGZvcm1Vc2VyUHJlZmVycmVkTGFuZ3VhZ2VzKToKKyAgICAgICAgKiB3dGYvdGV4dC9TdHJp
bmdWaWV3LmNwcDoKKyAgICAgICAgKFdURjo6U3RyaW5nVmlldzo6aW52YWxpZGF0ZSk6CisgICAg
ICAgIChXVEY6OlN0cmluZ1ZpZXc6OmFkb3B0VW5kZXJseWluZ1N0cmluZyk6CisgICAgICAgIChX
VEY6OlN0cmluZ1ZpZXc6OnNldFVuZGVybHlpbmdTdHJpbmcpOgorICAgICAgICAqIHd0Zi91bmlj
b2RlL2ljdS9Db2xsYXRvcklDVS5jcHA6CisgICAgICAgIChXVEY6OkNvbGxhdG9yOjpDb2xsYXRv
cik6CisgICAgICAgIChXVEY6OkNvbGxhdG9yOjp+Q29sbGF0b3IpOgorICAgICAgICAqIHd0Zi93
aW4vTGFuZ3VhZ2VXaW4uY3BwOgorICAgICAgICAoV1RGOjpwbGF0Zm9ybUxhbmd1YWdlKToKKwog
MjAyMC0wMi0yOCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgogCiAgICAgICAg
IFtKU0NdIEJ1aWx0aW5OYW1lcycgSGFzaE1hcCBzaG91bGQgYmUgc21hbGwKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRl
eCA1YWMyZWMzMWM4YTk0MWY3NjVmMzNjYjYyNTgyZDliM2Q3Yzk3MjRmLi5hMzBlZjRhYzA2Yjlk
MjYwNDJhZjNkYTY0ODYxNjUzMjZjYjFhNTNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsODcgQEAK
KzIwMjAtMDItMjkgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KKworICAgICAg
ICBSZW1vdmUgc3RkOjpsb2NrX2d1YXJkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMDY0NTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VOb2Rl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQnVmZmVyU291cmNlTm9kZTo6c2V0QnVmZmVy
KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvUGFyYW1UaW1lbGluZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpBdWRpb1BhcmFtVGltZWxpbmU6Omluc2VydEV2ZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OkF1ZGlvUGFyYW1UaW1lbGluZTo6Y2FuY2VsU2NoZWR1bGVkVmFsdWVzKToK
KyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0NvbnZvbHZlck5vZGUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q29udm9sdmVyTm9kZTo6cmVzZXQpOgorICAgICAgICAoV2ViQ29yZTo6Q29udm9s
dmVyTm9kZTo6c2V0QnVmZmVyKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL01lZGlhRWxl
bWVudEF1ZGlvU291cmNlTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUVsZW1lbnRB
dWRpb1NvdXJjZU5vZGU6OnNldEZvcm1hdCk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9N
ZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0
cmVhbUF1ZGlvU291cmNlTm9kZTo6c2V0Rm9ybWF0KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1
ZGlvL09zY2lsbGF0b3JOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok9zY2lsbGF0b3JOb2Rl
OjpzZXRQZXJpb2RpY1dhdmUpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vUGFubmVyTm9k
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYW5uZXJOb2RlOjpzZXRQYW5uaW5nTW9kZWwpOgor
ICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vV2F2ZVNoYXBlclByb2Nlc3Nvci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpXYXZlU2hhcGVyUHJvY2Vzc29yOjpzZXRDdXJ2ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpXYXZlU2hhcGVyUHJvY2Vzc29yOjpzZXRPdmVyc2FtcGxlKToKKyAgICAgICAgKiBN
b2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFi
YXNlOjpEYXRhYmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZTo6cGVyZm9ybU9wZW5B
bmRWZXJpZnkpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2U6OmNsb3NlRGF0YWJhc2UpOgor
ICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2U6OmdldENhY2hlZFZlcnNpb24gY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6RGF0YWJhc2U6OnNldENhY2hlZFZlcnNpb24pOgorICAgICAgICAqIE1v
ZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkRhdGFiYXNlTWFuYWdlcjo6YWRkUHJvcG9zZWREYXRhYmFzZSk6CisgICAgICAgIChXZWJDb3Jl
OjpEYXRhYmFzZU1hbmFnZXI6OnJlbW92ZVByb3Bvc2VkRGF0YWJhc2UpOgorICAgICAgICAoV2Vi
Q29yZTo6RGF0YWJhc2VNYW5hZ2VyOjpmdWxsUGF0aEZvckRhdGFiYXNlKToKKyAgICAgICAgKFdl
YkNvcmU6OkRhdGFiYXNlTWFuYWdlcjo6ZGV0YWlsc0Zvck5hbWVBbmRPcmlnaW4pOgorICAgICAg
ICAqIGNyeXB0by9DcnlwdG9BbGdvcml0aG1SZWdpc3RyeS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDcnlwdG9BbGdvcml0aG1SZWdpc3RyeTo6aWRlbnRpZmllcik6CisgICAgICAgIChXZWJDb3Jl
OjpDcnlwdG9BbGdvcml0aG1SZWdpc3RyeTo6bmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpDcnlw
dG9BbGdvcml0aG1SZWdpc3RyeTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0Fs
Z29yaXRobVJlZ2lzdHJ5OjpyZWdpc3RlckFsZ29yaXRobSk6CisgICAgICAgICogaW5zcGVjdG9y
L2FnZW50cy9XZWJIZWFwQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VuZEdhcmJhZ2VD
b2xsZWN0aW9uRXZlbnRzVGFzazo6YWRkR2FyYmFnZUNvbGxlY3Rpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6U2VuZEdhcmJhZ2VDb2xsZWN0aW9uRXZlbnRzVGFzazo6cmVzZXQpOgorICAgICAgICAo
V2ViQ29yZTo6U2VuZEdhcmJhZ2VDb2xsZWN0aW9uRXZlbnRzVGFzazo6dGltZXJGaXJlZCk6Cisg
ICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVGhyZWFkLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNjcm9sbGluZ1RocmVhZDo6ZGlzcGF0Y2gpOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
b2xsaW5nVGhyZWFkOjpkaXNwYXRjaEZ1bmN0aW9uc0Zyb21TY3JvbGxpbmdUaHJlYWQpOgorICAg
ICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL2dlbmVyaWMvU2Nyb2xsaW5nVGhyZWFkR2VuZXJpYy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUaHJlYWQ6OmluaXRpYWxpemVSdW5Mb29wKToK
KyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVGhyZWFkTWFjLm1tOgorICAg
ICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVGhyZWFkOjppbml0aWFsaXplUnVuTG9vcCk6CisgICAg
ICAgICogcGxhdGZvcm0vYXVkaW8vUmV2ZXJiQ29udm9sdmVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJldmVyYkNvbnZvbHZlcjo6flJldmVyYkNvbnZvbHZlcik6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0F1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6QXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakM6On5BdWRpb1NvdXJj
ZVByb3ZpZGVyQVZGT2JqQyk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1NvdXJjZVByb3ZpZGVy
QVZGT2JqQzo6ZmluYWxpemVDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1NvdXJj
ZVByb3ZpZGVyQVZGT2JqQzo6cHJlcGFyZUNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkF1
ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDOjp1bnByZXBhcmVDYWxsYmFjayk6CisgICAgICAgIChX
ZWJDb3JlOjpBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQzo6cHJvY2Vzc0NhbGxiYWNrKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250Q2FjaGVDb3JlVGV4dC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpGb250RGF0YWJhc2U6OmNvbGxlY3Rpb25Gb3JGYW1pbHkpOgorICAg
ICAgICAoV2ViQ29yZTo6Rm9udERhdGFiYXNlOjpjbGVhcik6CisgICAgICAgICogcGxhdGZvcm0v
aW9zL3dhay9XZWJDb3JlVGhyZWFkUnVuLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0
cmVhbS9tYWMvV2ViQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakMubW06CisgICAgICAgIChXZWJD
b3JlOjpXZWJBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQzo6fldlYkF1ZGlvU291cmNlUHJvdmlk
ZXJBVkZPYmpDKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkF1ZGlvU291cmNlUHJvdmlkZXJBVkZP
YmpDOjpwcmVwYXJlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkF1ZGlvU291cmNlUHJvdmlkZXJB
VkZPYmpDOjp1bnByZXBhcmUpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvTG9hZGVy
UnVuTG9vcENGLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmxvYWRlclJ1bkxvb3ApOgorICAgICAg
ICAqIHBsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
UUxpdGVEYXRhYmFzZTo6c2V0SXNEYXRhYmFzZU9wZW5pbmdGb3JiaWRkZW4pOgorICAgICAgICAo
V2ViQ29yZTo6U1FMaXRlRGF0YWJhc2U6Om9wZW4pOgorICAgICAgICAqIHBsYXRmb3JtL3NxbC9T
UUxpdGVEYXRhYmFzZVRyYWNrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJh
c2VUcmFja2VyOjpzZXRDbGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2VU
cmFja2VyOjppbmNyZW1lbnRUcmFuc2FjdGlvbkluUHJvZ3Jlc3NDb3VudCk6CisgICAgICAgIChX
ZWJDb3JlOjpTUUxpdGVEYXRhYmFzZVRyYWNrZXI6OmRlY3JlbWVudFRyYW5zYWN0aW9uSW5Qcm9n
cmVzc0NvdW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlVHJhY2tlcjo6aGFz
VHJhbnNhY3Rpb25JblByb2dyZXNzKToKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L1RleHRFbmNv
ZGluZ1JlZ2lzdHJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmJ1aWxkQmFzZVRleHRDb2RlY01h
cHMpOgorICAgICAgICAoV2ViQ29yZTo6bmV3VGV4dENvZGVjKToKKyAgICAgICAgKFdlYkNvcmU6
OmF0b21DYW5vbmljYWxUZXh0RW5jb2RpbmdOYW1lKToKKwogMjAyMC0wMi0yOCAgUGVuZyBMaXUg
IDxwZW5nLmxpdTZAYXBwbGUuY29tPgogCiAgICAgICAgIFtNZWRpYSBpbiBHUFUgcHJvY2Vzc10g
SW1wbGVtZW50IHRoZSB2aWRlbyBmdWxsc2NyZWVuIGFuZCBQaWN0dXJlLWluLVBpY3R1cmUgc3Vw
cG9ydApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZwppbmRleCAzNzRjNGMyNzdhNmI5NDg4ZTJhNTA0ZTYzNjMxMzZiYjUzOTE2NTE3
Li5kMGJmOWM3ZWVhZTVlN2VhMjZkYzA5MmNlMDQ2YTEwZmNmNjUwZmJjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAt
MSwzICsxLDM5IEBACisyMDIwLTAyLTI5ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5j
b20+CisKKyAgICAgICAgUmVtb3ZlIHN0ZDo6bG9ja19ndWFyZAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA2NDUxCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3
b3JrQ2FjaGVTdG9yYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpTdG9y
YWdlOjp0cmF2ZXJzZSk6CisgICAgICAgICogUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uY3BwOgor
ICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjpTeW5jTWVzc2FnZVN0YXRlOjpwcm9jZXNzSW5jb21p
bmdNZXNzYWdlKToKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6U3luY01lc3NhZ2VTdGF0ZTo6
ZGlzcGF0Y2hNZXNzYWdlcyk6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246OlN5bmNNZXNzYWdl
U3RhdGU6OmRpc3BhdGNoTWVzc2FnZXNBbmRSZXNldERpZFNjaGVkdWxlRGlzcGF0Y2hNZXNzYWdl
c0ZvckNvbm5lY3Rpb24pOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjphZGRXb3JrUXVldWVN
ZXNzYWdlUmVjZWl2ZXIpOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjpyZW1vdmVXb3JrUXVl
dWVNZXNzYWdlUmVjZWl2ZXIpOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjphZGRUaHJlYWRN
ZXNzYWdlUmVjZWl2ZXIpOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjpyZW1vdmVUaHJlYWRN
ZXNzYWdlUmVjZWl2ZXIpOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjpzZW5kTWVzc2FnZSk6
CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246OndhaXRGb3JNZXNzYWdlKToKKyAgICAgICAgKElQ
Qzo6Q29ubmVjdGlvbjo6cHJvY2Vzc0luY29taW5nTWVzc2FnZSk6CisgICAgICAgIChJUEM6OkNv
bm5lY3Rpb246Omluc3RhbGxJbmNvbWluZ1N5bmNNZXNzYWdlQ2FsbGJhY2spOgorICAgICAgICAo
SVBDOjpDb25uZWN0aW9uOjp1bmluc3RhbGxJbmNvbWluZ1N5bmNNZXNzYWdlQ2FsbGJhY2spOgor
ICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjpoYXNJbmNvbWluZ1N5bmNNZXNzYWdlKToKKyAgICAg
ICAgKElQQzo6Q29ubmVjdGlvbjo6Y29ubmVjdGlvbkRpZENsb3NlKToKKyAgICAgICAgKElQQzo6
Q29ubmVjdGlvbjo6c2VuZE91dGdvaW5nTWVzc2FnZXMpOgorICAgICAgICAoSVBDOjpDb25uZWN0
aW9uOjplbnF1ZXVlSW5jb21pbmdNZXNzYWdlKToKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6
ZGlzcGF0Y2hNZXNzYWdlVG9Xb3JrUXVldWVSZWNlaXZlcik6CisgICAgICAgIChJUEM6OkNvbm5l
Y3Rpb246OmRpc3BhdGNoTWVzc2FnZVRvVGhyZWFkUmVjZWl2ZXIpOgorICAgICAgICAoSVBDOjpD
b25uZWN0aW9uOjpkaXNwYXRjaE9uZUluY29taW5nTWVzc2FnZSk6CisgICAgICAgIChJUEM6OkNv
bm5lY3Rpb246OmRpc3BhdGNoSW5jb21pbmdNZXNzYWdlcyk6CisgICAgICAgICogU2hhcmVkL0Js
b2NraW5nUmVzcG9uc2VNYXAuaDoKKyAgICAgICAgKEJsb2NraW5nUmVzcG9uc2VNYXA6OmRpZFJl
Y2VpdmVSZXNwb25zZSk6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9XS1ByaW50aW5nVmlldy5t
bToKKyAgICAgICAgKC1bV0tQcmludGluZ1ZpZXcgX3ByZXBhcmVQREZEYXRhRm9yUHJpbnRpbmdP
blNlY29uZGFyeVRocmVhZF0pOgorICAgICAgICAocHJlcGFyZURhdGFGb3JQcmludGluZ09uU2Vj
b25kYXJ5VGhyZWFkKToKKwogMjAyMC0wMi0yOCAgUGVuZyBMaXUgIDxwZW5nLmxpdTZAYXBwbGUu
Y29tPgogCiAgICAgICAgIFtNZWRpYSBpbiBHUFUgcHJvY2Vzc10gSW1wbGVtZW50IHRoZSB2aWRl
byBmdWxsc2NyZWVuIGFuZCBQaWN0dXJlLWluLVBpY3R1cmUgc3VwcG9ydApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvQ2hhbmdlTG9nCmluZGV4IDE5NTllZGQyM2RiYjBlZGVmMDk4ODhhNGE3ZDkwYTczMWIwZWMy
MGMuLjg2MDc2MmQ3ZTUxMWFjZGQ2MzM1YjEwYWNjNWRjNTEyYjY5YzYxYTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAyMC0wMi0yOSAgWXVzdWtlIFN1
enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgorCisgICAgICAgIFJlbW92ZSBzdGQ6OmxvY2tfZ3Vh
cmQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNjQ1
MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogRE9N
L0RPTUludGVybmFsLm1tOgorICAgICAgICAoZ2V0RE9NV3JhcHBlcik6CisgICAgICAgIChhZGRE
T01XcmFwcGVyKToKKyAgICAgICAgKHJlbW92ZURPTVdyYXBwZXIpOgorCiAyMDIwLTAyLTI4ICBK
ZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgogCiAgICAgICAgIFtHUFVQXSBJbXBsZW1l
bnQgTW9kZXJuIEVNRSBBUEkgaW4gdGhlIEdQVSBQcm9jZXNzCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
Ym1hbGxvYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvYm1hbGxvYy9DaGFuZ2VMb2cKaW5kZXggOTMwYTI0
NjkwNTBmYmVjOTIyNjBjOWViYmNkYmY0YWY5NTk5ZjAwNS4uYjQ4NjQ3MGIxOTliMGU4MDg0MDE5
ODU5NDRlY2U4ODg1NTFhNDQxMSAxMDA2NDQKLS0tIGEvU291cmNlL2JtYWxsb2MvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9ibWFsbG9jL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDIwLTAy
LTI5ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3Zl
IHN0ZDo6bG9ja19ndWFyZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjA2NDUxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBibWFsbG9jL011dGV4Lmg6CisKIDIwMjAtMDItMjggIFNhYW0gQmFyYXRpICA8
c2JhcmF0aUBhcHBsZS5jb20+CiAKICAgICAgICAgQ2xlYW4gdXAgY29kZSB3aXRoIGhvdyB3ZSBj
aG9vc2UgR2lnYWNhZ2Ugc2l6ZXMgYW5kIHdoZXRoZXIgb3Igbm90IHRvIHVzZSBXYXNtIGZhc3Qg
bWVtb3J5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVmlydHVhbE1h
Y2hpbmUubW0gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVmlydHVhbE1hY2hpbmUubW0K
aW5kZXggMGQwMDgyOTA5NmUxZjlhMzUzNDZkMDY1NDA4NGRjMjRmOWQ5OTU3NC4uYzQ3MzZhZjgx
YzNhYmU4MGQ0NzFhYjY1ZjI4ZTc1ZjIyNmIxOGE3OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0FQSS9KU1ZpcnR1YWxNYWNoaW5lLm1tCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvSlNWaXJ0dWFsTWFjaGluZS5tbQpAQCAtNzAsMTMgKzcwLDEzIEBAIEBpbXBsZW1l
bnRhdGlvbiBKU1ZNV3JhcHBlckNhY2hlCiAKICsgKHZvaWQpYWRkV3JhcHBlcjooSlNWaXJ0dWFs
TWFjaGluZSAqKXdyYXBwZXIgZm9ySlNDb250ZXh0R3JvdXBSZWY6KEpTQ29udGV4dEdyb3VwUmVm
KWdyb3VwCiB7Ci0gICAgc3RkOjpsb2NrX2d1YXJkPExvY2s+IGxvY2sod3JhcHBlckNhY2hlTXV0
ZXgpOworICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sod3JhcHBlckNhY2hlTXV0ZXgpOwogICAg
IE5TTWFwSW5zZXJ0KHdyYXBwZXJDYWNoZSgpLCBncm91cCwgKF9fYnJpZGdlIHZvaWQqKXdyYXBw
ZXIpOwogfQogCiArIChKU1ZpcnR1YWxNYWNoaW5lICopd3JhcHBlckZvckpTQ29udGV4dEdyb3Vw
UmVmOihKU0NvbnRleHRHcm91cFJlZilncm91cAogewotICAgIHN0ZDo6bG9ja19ndWFyZDxMb2Nr
PiBsb2NrKHdyYXBwZXJDYWNoZU11dGV4KTsKKyAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKHdy
YXBwZXJDYWNoZU11dGV4KTsKICAgICByZXR1cm4gKF9fYnJpZGdlIEpTVmlydHVhbE1hY2hpbmUg
KilOU01hcEdldCh3cmFwcGVyQ2FjaGUoKSwgZ3JvdXApOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQVBJL2dsaWIvSlNDVmlydHVhbE1hY2hpbmUuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS9nbGliL0pTQ1ZpcnR1YWxNYWNoaW5lLmNwcAppbmRleCBjMDYx
YWZlZjE4OGE4MzM5MGVhZDRjMTFjMDZmYTM4MTExYzU4MmYyLi5iMjNiNzA3MTZkYmQxODAxZTg3
MzJkNGJlYWMzZjdhNjc4YTVkMjBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
QVBJL2dsaWIvSlNDVmlydHVhbE1hY2hpbmUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9BUEkvZ2xpYi9KU0NWaXJ0dWFsTWFjaGluZS5jcHAKQEAgLTU3LDE0ICs1NywxNCBAQCBzdGF0
aWMgSGFzaE1hcDxKU0NvbnRleHRHcm91cFJlZiwgSlNDVmlydHVhbE1hY2hpbmUqPiYgd3JhcHBl
ck1hcCgpCiAKIHN0YXRpYyB2b2lkIGFkZFdyYXBwZXIoSlNDb250ZXh0R3JvdXBSZWYgZ3JvdXAs
IEpTQ1ZpcnR1YWxNYWNoaW5lKiB2bSkKIHsKLSAgICBzdGQ6OmxvY2tfZ3VhcmQ8TG9jaz4gbG9j
ayh3cmFwcGVyQ2FjaGVNdXRleCk7CisgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayh3cmFwcGVy
Q2FjaGVNdXRleCk7CiAgICAgQVNTRVJUKCF3cmFwcGVyTWFwKCkuY29udGFpbnMoZ3JvdXApKTsK
ICAgICB3cmFwcGVyTWFwKCkuc2V0KGdyb3VwLCB2bSk7CiB9CiAKIHN0YXRpYyB2b2lkIHJlbW92
ZVdyYXBwZXIoSlNDb250ZXh0R3JvdXBSZWYgZ3JvdXApCiB7Ci0gICAgc3RkOjpsb2NrX2d1YXJk
PExvY2s+IGxvY2sod3JhcHBlckNhY2hlTXV0ZXgpOworICAgIGF1dG8gbG9ja2VyID0gaG9sZExv
Y2sod3JhcHBlckNhY2hlTXV0ZXgpOwogICAgIEFTU0VSVCh3cmFwcGVyTWFwKCkuY29udGFpbnMo
Z3JvdXApKTsKICAgICB3cmFwcGVyTWFwKCkucmVtb3ZlKGdyb3VwKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBTbmFwc2hvdEJ1aWxkZXIuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcFNuYXBzaG90QnVpbGRlci5jcHAKaW5kZXggY2Uw
MzliYTc3ZTlmYTJiY2VlNDdmMTVlYTYzZTZhNDhhNTFjY2QxMC4uZDViOWFkMjJmOTU1Mjg0MDE3
MzUyM2YxYTRiMTM4OTdjZTMwOWZmNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvSGVhcFNuYXBzaG90QnVpbGRlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvSGVhcFNuYXBzaG90QnVpbGRlci5jcHAKQEAgLTg4LDcgKzg4LDcgQEAgdm9pZCBIZWFw
U25hcHNob3RCdWlsZGVyOjphbmFseXplTm9kZShKU0NlbGwqIGNlbGwpCiAgICAgaWYgKHByZXZp
b3VzU25hcHNob3RIYXNOb2RlRm9yQ2VsbChjZWxsLCBpZGVudGlmaWVyKSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgc3RkOjpsb2NrX2d1YXJkPExvY2s+IGxvY2sobV9idWlsZGluZ05vZGVNdXRl
eCk7CisgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX2J1aWxkaW5nTm9kZU11dGV4KTsKICAg
ICBtX3NuYXBzaG90LT5hcHBlbmROb2RlKEhlYXBTbmFwc2hvdE5vZGUoY2VsbCwgZ2V0TmV4dE9i
amVjdElkZW50aWZpZXIoKSkpOwogfQogCkBAIC0xMDEsNyArMTAxLDcgQEAgdm9pZCBIZWFwU25h
cHNob3RCdWlsZGVyOjphbmFseXplRWRnZShKU0NlbGwqIGZyb20sIEpTQ2VsbCogdG8sIFNsb3RW
aXNpdG9yOjpSb28KICAgICBpZiAoZnJvbSA9PSB0bykKICAgICAgICAgcmV0dXJuOwogCi0gICAg
c3RkOjpsb2NrX2d1YXJkPExvY2s+IGxvY2sobV9idWlsZGluZ0VkZ2VNdXRleCk7CisgICAgYXV0
byBsb2NrZXIgPSBob2xkTG9jayhtX2J1aWxkaW5nRWRnZU11dGV4KTsKIAogICAgIGlmIChtX3Nu
YXBzaG90VHlwZSA9PSBTbmFwc2hvdFR5cGU6OkdDRGVidWdnaW5nU25hcHNob3QgJiYgIWZyb20p
IHsKICAgICAgICAgaWYgKHJvb3RNYXJrUmVhc29uID09IFNsb3RWaXNpdG9yOjpSb290TWFya1Jl
YXNvbjo6Tm9uZSAmJiBtX3NuYXBzaG90VHlwZSA9PSBTbmFwc2hvdFR5cGU6OkdDRGVidWdnaW5n
U25hcHNob3QpCkBAIC0xMjAsNyArMTIwLDcgQEAgdm9pZCBIZWFwU25hcHNob3RCdWlsZGVyOjph
bmFseXplUHJvcGVydHlOYW1lRWRnZShKU0NlbGwqIGZyb20sIEpTQ2VsbCogdG8sIFVuaXEKICAg
ICBBU1NFUlQobV9wcm9maWxlci5hY3RpdmVIZWFwQW5hbHl6ZXIoKSA9PSB0aGlzKTsKICAgICBB
U1NFUlQodG8pOwogCi0gICAgc3RkOjpsb2NrX2d1YXJkPExvY2s+IGxvY2sobV9idWlsZGluZ0Vk
Z2VNdXRleCk7CisgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX2J1aWxkaW5nRWRnZU11dGV4
KTsKIAogICAgIG1fZWRnZXMuYXBwZW5kKEhlYXBTbmFwc2hvdEVkZ2UoZnJvbSwgdG8sIEVkZ2VU
eXBlOjpQcm9wZXJ0eSwgcHJvcGVydHlOYW1lKSk7CiB9CkBAIC0xMzAsNyArMTMwLDcgQEAgdm9p
ZCBIZWFwU25hcHNob3RCdWlsZGVyOjphbmFseXplVmFyaWFibGVOYW1lRWRnZShKU0NlbGwqIGZy
b20sIEpTQ2VsbCogdG8sIFVuaXEKICAgICBBU1NFUlQobV9wcm9maWxlci5hY3RpdmVIZWFwQW5h
bHl6ZXIoKSA9PSB0aGlzKTsKICAgICBBU1NFUlQodG8pOwogCi0gICAgc3RkOjpsb2NrX2d1YXJk
PExvY2s+IGxvY2sobV9idWlsZGluZ0VkZ2VNdXRleCk7CisgICAgYXV0byBsb2NrZXIgPSBob2xk
TG9jayhtX2J1aWxkaW5nRWRnZU11dGV4KTsKIAogICAgIG1fZWRnZXMuYXBwZW5kKEhlYXBTbmFw
c2hvdEVkZ2UoZnJvbSwgdG8sIEVkZ2VUeXBlOjpWYXJpYWJsZSwgdmFyaWFibGVOYW1lKSk7CiB9
CkBAIC0xNDAsNyArMTQwLDcgQEAgdm9pZCBIZWFwU25hcHNob3RCdWlsZGVyOjphbmFseXplSW5k
ZXhFZGdlKEpTQ2VsbCogZnJvbSwgSlNDZWxsKiB0bywgdWludDMyX3QgaW4KICAgICBBU1NFUlQo
bV9wcm9maWxlci5hY3RpdmVIZWFwQW5hbHl6ZXIoKSA9PSB0aGlzKTsKICAgICBBU1NFUlQodG8p
OwogCi0gICAgc3RkOjpsb2NrX2d1YXJkPExvY2s+IGxvY2sobV9idWlsZGluZ0VkZ2VNdXRleCk7
CisgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX2J1aWxkaW5nRWRnZU11dGV4KTsKIAogICAg
IG1fZWRnZXMuYXBwZW5kKEhlYXBTbmFwc2hvdEVkZ2UoZnJvbSwgdG8sIGluZGV4KSk7CiB9CkBA
IC0xNTAsNyArMTUwLDcgQEAgdm9pZCBIZWFwU25hcHNob3RCdWlsZGVyOjpzZXRPcGFxdWVSb290
UmVhY2hhYmlsaXR5UmVhc29uRm9yQ2VsbChKU0NlbGwqIGNlbGwsIGMKICAgICBpZiAoIXJlYXNv
biB8fCAhKnJlYXNvbiB8fCBtX3NuYXBzaG90VHlwZSAhPSBTbmFwc2hvdFR5cGU6OkdDRGVidWdn
aW5nU25hcHNob3QpCiAgICAgICAgIHJldHVybjsKIAotICAgIHN0ZDo6bG9ja19ndWFyZDxMb2Nr
PiBsb2NrKG1fYnVpbGRpbmdFZGdlTXV0ZXgpOworICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2so
bV9idWlsZGluZ0VkZ2VNdXRleCk7CiAKICAgICBtX3Jvb3REYXRhLmVuc3VyZShjZWxsLCBbXSAo
KSAtPiBSb290RGF0YSB7CiAgICAgICAgIHJldHVybiB7IH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9NYWNoaW5lU3RhY2tNYXJrZXIuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvTWFjaGluZVN0YWNrTWFya2VyLmNwcAppbmRleCBhYjE5YzBlOTg5OTM3
MTAzY2E0MWYzOWU4N2UzMGZjYTYzNWZlZTcxLi4zODVjZWM0MjVlNWM3YWNiZDI2ZTJlNjQ2ZmIw
OWFjNzQ4NzYzMGFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYWNo
aW5lU3RhY2tNYXJrZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hY2hp
bmVTdGFja01hcmtlci5jcHAKQEAgLTEzNyw4ICsxMzcsOCBAQCBib29sIE1hY2hpbmVUaHJlYWRz
Ojp0cnlDb3B5T3RoZXJUaHJlYWRTdGFja3MoY29uc3QgQWJzdHJhY3RMb2NrZXImIGxvY2tlciwg
dm9pZAogewogICAgIC8vIFByZXZlbnQgdHdvIFZNcyBmcm9tIHN1c3BlbmRpbmcgZWFjaCBvdGhl
cidzIHRocmVhZHMgYXQgdGhlIHNhbWUgdGltZSwKICAgICAvLyB3aGljaCBjYW4gY2F1c2UgZGVh
ZGxvY2s6IDxyZGFyOi8vcHJvYmxlbS8yMDMwMDg0Mj4uCi0gICAgc3RhdGljIExvY2sgbXV0ZXg7
Ci0gICAgc3RkOjpsb2NrX2d1YXJkPExvY2s+IGxvY2sobXV0ZXgpOworICAgIHN0YXRpYyBMb2Nr
IHN1c3BlbmRMb2NrOworICAgIGF1dG8gc3VzcGVuZExvY2tlciA9IGhvbGRMb2NrKHN1c3BlbmRM
b2NrKTsKIAogICAgICpzaXplID0gMDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNSdW5Mb29wVGltZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNSdW5Mb29wVGltZXIuY3BwCmluZGV4IDA3YjBkNDkzZGZjMDFhODgzNmViMjk0NDQy
ZTFiMDc2NWI2ZDcwZGUuLjEzNTU0NjA4MmIxMGM4NGMyNzFkNDllZWE2YWE1MjZlOTA2ZGU2MzQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUnVuTG9vcFRpbWVy
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1J1bkxvb3BUaW1lci5j
cHAKQEAgLTI5NSw3ICsyOTUsNyBAQCB2b2lkIEpTUnVuTG9vcFRpbWVyOjp0aW1lckRpZEZpcmUo
KQogICAgICAgICB9CiAgICAgfQogCi0gICAgc3RkOjpsb2NrX2d1YXJkPEpTTG9jaz4gbG9jayht
X2FwaUxvY2suZ2V0KCkpOworICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9hcGlMb2NrLmdl
dCgpKTsKICAgICBSZWZQdHI8Vk0+IHZtID0gbV9hcGlMb2NrLT52bSgpOwogICAgIGlmICghdm0p
IHsKICAgICAgICAgLy8gVGhlIFZNIGhhcyBiZWVuIGRlc3Ryb3llZCwgc28gd2Ugc2hvdWxkIGp1
c3QgZ2l2ZSB1cC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvYmVuY2htYXJrcy9Db25kaXRpb25T
cGVlZFRlc3QuY3BwIGIvU291cmNlL1dURi9iZW5jaG1hcmtzL0NvbmRpdGlvblNwZWVkVGVzdC5j
cHAKaW5kZXggZjU5YjA4ZDc3YTkzMjc1NTYxY2Q2YjE0Mzc1M2RjODFmNGRiMjUwZC4uMWMwZDVk
MzAyZmNkZDdhYjk3YTFmMDdmMDAyYmFiYTEwNWFjN2QyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri9iZW5jaG1hcmtzL0NvbmRpdGlvblNwZWVkVGVzdC5jcHAKKysrIGIvU291cmNlL1dURi9iZW5j
aG1hcmtzL0NvbmRpdGlvblNwZWVkVGVzdC5jcHAKQEAgLTExOCw3ICsxMTgsNyBAQCB2b2lkIHJ1
blRlc3QoCiAgICAgICAgICAgICAgICAgICAgIG5vdGlmeShmdWxsQ29uZGl0aW9uLCBtdXN0Tm90
aWZ5KTsKIAogICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBz
dGQ6OmxvY2tfZ3VhcmQ8TG9ja1R5cGU+IGxvY2tlcihyZWNlaXZlZExvY2spOworICAgICAgICAg
ICAgICAgICAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhyZWNlaXZlZExvY2spOwogICAg
ICAgICAgICAgICAgICAgICAgICAgcmVjZWl2ZWQuYXBwZW5kKHJlc3VsdCk7CiAgICAgICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9CkBAIC0xNTIsNyArMTUyLDcgQEAgdm9pZCBy
dW5UZXN0KAogICAgICAgICB0aHJlYWQtPndhaXRGb3JDb21wbGV0aW9uKCk7CiAKICAgICB7Ci0g
ICAgICAgIHN0ZDo6bG9ja19ndWFyZDxMb2NrVHlwZT4gbG9ja2VyKGxvY2spOworICAgICAgICBh
dXRvIGxvY2tlciA9IGhvbGRMb2NrKGxvY2spOwogICAgICAgICBzaG91bGRDb250aW51ZSA9IGZh
bHNlOwogICAgIH0KICAgICBub3RpZnlBbGwoZW1wdHlDb25kaXRpb24pOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi93dGYvQ3J5cHRvZ3JhcGhpY2FsbHlSYW5kb21OdW1iZXIuY3BwIGIvU291cmNl
L1dURi93dGYvQ3J5cHRvZ3JhcGhpY2FsbHlSYW5kb21OdW1iZXIuY3BwCmluZGV4IDdhYzRlMTg3
ZDY0ZDI1MDFmMmEyZDQ3NTg1YmI3NDg2NGQxZWFlOGIuLmFmYmNlODkwZjRkOWI3Y2JiOGU0YzM3
NjAzNTNlNGVlOTVhMDg3NzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0NyeXB0b2dyYXBo
aWNhbGx5UmFuZG9tTnVtYmVyLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9DcnlwdG9ncmFwaGlj
YWxseVJhbmRvbU51bWJlci5jcHAKQEAgLTEzOCw3ICsxMzgsNyBAQCB1aW50MzJfdCBBUkM0UmFu
ZG9tTnVtYmVyR2VuZXJhdG9yOjpnZXRXb3JkKCkKIAogdWludDMyX3QgQVJDNFJhbmRvbU51bWJl
ckdlbmVyYXRvcjo6cmFuZG9tTnVtYmVyKCkKIHsKLSAgICBzdGQ6OmxvY2tfZ3VhcmQ8TG9jaz4g
bG9jayhtX211dGV4KTsKKyAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fbXV0ZXgpOwogCiAg
ICAgbV9jb3VudCAtPSA0OwogICAgIHN0aXJJZk5lZWRlZCgpOwpAQCAtMTQ3LDcgKzE0Nyw3IEBA
IHVpbnQzMl90IEFSQzRSYW5kb21OdW1iZXJHZW5lcmF0b3I6OnJhbmRvbU51bWJlcigpCiAKIHZv
aWQgQVJDNFJhbmRvbU51bWJlckdlbmVyYXRvcjo6cmFuZG9tVmFsdWVzKHZvaWQqIGJ1ZmZlciwg
c2l6ZV90IGxlbmd0aCkKIHsKLSAgICBzdGQ6OmxvY2tfZ3VhcmQ8TG9jaz4gbG9jayhtX211dGV4
KTsKKyAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fbXV0ZXgpOwogCiAgICAgdW5zaWduZWQg
Y2hhciogcmVzdWx0ID0gcmVpbnRlcnByZXRfY2FzdDx1bnNpZ25lZCBjaGFyKj4oYnVmZmVyKTsK
ICAgICBzdGlySWZOZWVkZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0hhc2hUYWJs
ZS5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9IYXNoVGFibGUuY3BwCmluZGV4IDUzYjRjZGJhZTI4YWFm
OTg2YjVlYjZlNTJlMDY0MjRkNjJkMDFjMDUuLjAyN2M1YzQ2MjA5ODI0Y2RlZDVjYjYyOTA4MTVj
ZTVkNjMwZmIyYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0hhc2hUYWJsZS5jcHAKKysr
IGIvU291cmNlL1dURi93dGYvSGFzaFRhYmxlLmNwcApAQCAtNDMsNyArNDMsNyBAQCBzdGF0aWMg
TG9jayBoYXNoVGFibGVTdGF0c011dGV4OwogCiB2b2lkIEhhc2hUYWJsZVN0YXRzOjpyZWNvcmRD
b2xsaXNpb25BdENvdW50KHVuc2lnbmVkIGNvdW50KQogewotICAgIHN0ZDo6bG9ja19ndWFyZDxM
b2NrPiBsb2NrKGhhc2hUYWJsZVN0YXRzTXV0ZXgpOworICAgIGF1dG8gbG9ja2VyID0gaG9sZExv
Y2soaGFzaFRhYmxlU3RhdHNNdXRleCk7CiAKICAgICBpZiAoY291bnQgPiBtYXhDb2xsaXNpb25z
KQogICAgICAgICBtYXhDb2xsaXNpb25zID0gY291bnQ7CkBAIC01Myw3ICs1Myw3IEBAIHZvaWQg
SGFzaFRhYmxlU3RhdHM6OnJlY29yZENvbGxpc2lvbkF0Q291bnQodW5zaWduZWQgY291bnQpCiAK
IHZvaWQgSGFzaFRhYmxlU3RhdHM6OmR1bXBTdGF0cygpCiB7Ci0gICAgc3RkOjpsb2NrX2d1YXJk
PExvY2s+IGxvY2soaGFzaFRhYmxlU3RhdHNNdXRleCk7CisgICAgYXV0byBsb2NrZXIgPSBob2xk
TG9jayhoYXNoVGFibGVTdGF0c011dGV4KTsKIAogICAgIGRhdGFMb2dGKCJcbldURjo6SGFzaFRh
YmxlIHN0YXRpc3RpY3NcblxuIik7CiAgICAgZGF0YUxvZ0YoIiV1IGFjY2Vzc2VzXG4iLCBudW1B
Y2Nlc3Nlcy5sb2FkKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvSGFzaFRhYmxlLmgg
Yi9Tb3VyY2UvV1RGL3d0Zi9IYXNoVGFibGUuaAppbmRleCA5MDc0NzgyMjk1OGE4YWY5NTgyMzEy
MmMxNWI4NjM1N2U0YzgzMjIyLi5jZWIxNjJkZmJiZmVlZWU1N2Q2MjUxMGE4YTczZGQ4MGI1NGJi
YTQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9IYXNoVGFibGUuaAorKysgYi9Tb3VyY2Uv
V1RGL3d0Zi9IYXNoVGFibGUuaApAQCAtMTQ5NSw3ICsxNDk1LDcgQEAgREVDTEFSRV9BTExPQ0FU
T1JfV0lUSF9IRUFQX0lERU5USUZJRVIoSGFzaFRhYmxlKTsKICAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hG
dW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzPgogICAgIHZvaWQg
SGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBL
ZXlUcmFpdHM+OjppbnZhbGlkYXRlSXRlcmF0b3JzKCkKICAgICB7Ci0gICAgICAgIHN0ZDo6bG9j
a19ndWFyZDxMb2NrPiBsb2NrKCptX211dGV4KTsKKyAgICAgICAgYXV0byBsb2NrZXIgPSBob2xk
TG9jaygqbV9tdXRleCk7CiAgICAgICAgIGNvbnN0X2l0ZXJhdG9yKiBuZXh0OwogICAgICAgICBm
b3IgKGNvbnN0X2l0ZXJhdG9yKiBwID0gbV9pdGVyYXRvcnM7IHA7IHAgPSBuZXh0KSB7CiAgICAg
ICAgICAgICBuZXh0ID0gcC0+bV9uZXh0OwpAQCAtMTUxNyw3ICsxNTE3LDcgQEAgREVDTEFSRV9B
TExPQ0FUT1JfV0lUSF9IRUFQX0lERU5USUZJRVIoSGFzaFRhYmxlKTsKICAgICAgICAgaWYgKCF0
YWJsZSkgewogICAgICAgICAgICAgaXQtPm1fbmV4dCA9IDA7CiAgICAgICAgIH0gZWxzZSB7Ci0g
ICAgICAgICAgICBzdGQ6OmxvY2tfZ3VhcmQ8TG9jaz4gbG9jaygqdGFibGUtPm1fbXV0ZXgpOwor
ICAgICAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jaygqdGFibGUtPm1fbXV0ZXgpOwogICAg
ICAgICAgICAgQVNTRVJUKHRhYmxlLT5tX2l0ZXJhdG9ycyAhPSBpdCk7CiAgICAgICAgICAgICBp
dC0+bV9uZXh0ID0gdGFibGUtPm1faXRlcmF0b3JzOwogICAgICAgICAgICAgdGFibGUtPm1faXRl
cmF0b3JzID0gaXQ7CkBAIC0xNTM2LDcgKzE1MzYsNyBAQCBERUNMQVJFX0FMTE9DQVRPUl9XSVRI
X0hFQVBfSURFTlRJRklFUihIYXNoVGFibGUpOwogICAgICAgICAgICAgQVNTRVJUKCFpdC0+bV9u
ZXh0KTsKICAgICAgICAgICAgIEFTU0VSVCghaXQtPm1fcHJldmlvdXMpOwogICAgICAgICB9IGVs
c2UgewotICAgICAgICAgICAgc3RkOjpsb2NrX2d1YXJkPExvY2s+IGxvY2soKml0LT5tX3RhYmxl
LT5tX211dGV4KTsKKyAgICAgICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2soKml0LT5tX3Rh
YmxlLT5tX211dGV4KTsKICAgICAgICAgICAgIGlmIChpdC0+bV9uZXh0KSB7CiAgICAgICAgICAg
ICAgICAgQVNTRVJUKGl0LT5tX25leHQtPm1fcHJldmlvdXMgPT0gaXQpOwogICAgICAgICAgICAg
ICAgIGl0LT5tX25leHQtPm1fcHJldmlvdXMgPSBpdC0+bV9wcmV2aW91czsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XVEYvd3RmL0xhbmd1YWdlLmNwcCBiL1NvdXJjZS9XVEYvd3RmL0xhbmd1YWdlLmNw
cAppbmRleCAwOWQwZWFkZmNjY2E0YjNlMGI3ZTlhMzE4YzE4OGRmY2U4OGJlZjMyLi5mNGNmMDY0
YjY1ZjdiMzdhM2M5NzllNjQyZjcxNmIxY2Y1ZTIxMzFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RG
L3d0Zi9MYW5ndWFnZS5jcHAKKysrIGIvU291cmNlL1dURi93dGYvTGFuZ3VhZ2UuY3BwCkBAIC0x
MDMsNyArMTAzLDcgQEAgc3RhdGljIFZlY3RvcjxTdHJpbmc+IGlzb2xhdGVkQ29weShjb25zdCBW
ZWN0b3I8U3RyaW5nPiYgc3RyaW5ncykKIFZlY3RvcjxTdHJpbmc+IHVzZXJQcmVmZXJyZWRMYW5n
dWFnZXMoKQogewogICAgIHsKLSAgICAgICAgc3RkOjpsb2NrX2d1YXJkPExvY2s+IGxvY2sodXNl
clByZWZlcnJlZExhbmd1YWdlc011dGV4KTsKKyAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9j
ayh1c2VyUHJlZmVycmVkTGFuZ3VhZ2VzTXV0ZXgpOwogICAgICAgICBWZWN0b3I8U3RyaW5nPiYg
b3ZlcnJpZGUgPSBwcmVmZXJyZWRMYW5ndWFnZXNPdmVycmlkZSgpOwogICAgICAgICBpZiAoIW92
ZXJyaWRlLmlzRW1wdHkoKSkKICAgICAgICAgICAgIHJldHVybiBpc29sYXRlZENvcHkob3ZlcnJp
ZGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvTWFpblRocmVhZC5jcHAgYi9Tb3VyY2Uv
V1RGL3d0Zi9NYWluVGhyZWFkLmNwcAppbmRleCA0OTk0NTc1Njc2NDEzNGNhYjQ2YzFmZjMxMmU0
N2MyODJjNjFkZjJmLi42MGU4MGQ0Mzc1M2M3MmQ4ODkwNDU3YWExOTg2MDYwZDhiOGNkYjMzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9NYWluVGhyZWFkLmNwcAorKysgYi9Tb3VyY2UvV1RG
L3d0Zi9NYWluVGhyZWFkLmNwcApAQCAtODQsNyArODQsNyBAQCB2b2lkIGRpc3BhdGNoRnVuY3Rp
b25zRnJvbU1haW5UaHJlYWQoKQogCiAgICAgd2hpbGUgKHRydWUpIHsKICAgICAgICAgewotICAg
ICAgICAgICAgc3RkOjpsb2NrX2d1YXJkPExvY2s+IGxvY2sobWFpblRocmVhZEZ1bmN0aW9uUXVl
dWVNdXRleCk7CisgICAgICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1haW5UaHJlYWRG
dW5jdGlvblF1ZXVlTXV0ZXgpOwogICAgICAgICAgICAgaWYgKCFmdW5jdGlvblF1ZXVlKCkuc2l6
ZSgpKQogICAgICAgICAgICAgICAgIGJyZWFrOwogCkBAIC0xMjQsNyArMTI0LDcgQEAgdm9pZCBj
YWxsT25NYWluVGhyZWFkKEZ1bmN0aW9uPHZvaWQoKT4mJiBmdW5jdGlvbikKICAgICBib29sIG5l
ZWRUb1NjaGVkdWxlID0gZmFsc2U7CiAKICAgICB7Ci0gICAgICAgIHN0ZDo6bG9ja19ndWFyZDxM
b2NrPiBsb2NrKG1haW5UaHJlYWRGdW5jdGlvblF1ZXVlTXV0ZXgpOworICAgICAgICBhdXRvIGxv
Y2tlciA9IGhvbGRMb2NrKG1haW5UaHJlYWRGdW5jdGlvblF1ZXVlTXV0ZXgpOwogICAgICAgICBu
ZWVkVG9TY2hlZHVsZSA9IGZ1bmN0aW9uUXVldWUoKS5zaXplKCkgPT0gMDsKICAgICAgICAgZnVu
Y3Rpb25RdWV1ZSgpLmFwcGVuZChXVEZNb3ZlKGZ1bmN0aW9uKSk7CiAgICAgfQpAQCAtMTc1LDcg
KzE3NSw3IEBAIHN0YXRpYyB2b2lkIGNhbGxPbk1haW5BbmRXYWl0KFdURjo6RnVuY3Rpb248dm9p
ZCgpPiYmIGZ1bmN0aW9uLCBNYWluU3R5bGUgbWFpblN0CiAgICAgYXV0byBmdW5jdGlvbkltcGwg
PSBbJiwgZnVuY3Rpb24gPSBXVEZNb3ZlKGZ1bmN0aW9uKV0gewogICAgICAgICBmdW5jdGlvbigp
OwogCi0gICAgICAgIHN0ZDo6bG9ja19ndWFyZDxMb2NrPiBsb2NrKG11dGV4KTsKKyAgICAgICAg
YXV0byBsb2NrZXIgPSBob2xkTG9jayhtdXRleCk7CiAgICAgICAgIGlzRmluaXNoZWQgPSB0cnVl
OwogICAgICAgICBjb25kaXRpb25WYXJpYWJsZS5ub3RpZnlPbmUoKTsKICAgICB9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dURi93dGYvU3RhY2tTdGF0cy5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9TdGFj
a1N0YXRzLmNwcAppbmRleCBjMWM0MzVmNTc4ZGRlZGM0NDk4YzkzZjhhMmU2ZGVmMmFmMDc1M2Zk
Li4zZjFhYjUyYzhkNmZhODU5N2VjYzlhNmFlZmIxNGUwMWY0ZjEzZDliIDEwMDY0NAotLS0gYS9T
b3VyY2UvV1RGL3d0Zi9TdGFja1N0YXRzLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9TdGFja1N0
YXRzLmNwcApAQCAtNjgsNyArNjgsNyBAQCBTdGFja1N0YXRzOjpQZXJUaHJlYWRTdGF0czo6UGVy
VGhyZWFkU3RhdHMoKQogCiBTdGFja1N0YXRzOjpDaGVja1BvaW50OjpDaGVja1BvaW50KCkKIHsK
LSAgICBzdGQ6OmxvY2tfZ3VhcmQ8TG9jaz4gbG9jayhTdGFja1N0YXRzOjpzX3NoYXJlZE11dGV4
KTsKKyAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKFN0YWNrU3RhdHM6OnNfc2hhcmVkTXV0ZXgp
OwogICAgIFRocmVhZCYgdGhyZWFkID0gVGhyZWFkOjpjdXJyZW50KCk7CiAgICAgU3RhY2tTdGF0
czo6UGVyVGhyZWFkU3RhdHMmIHQgPSB0aHJlYWQuc3RhY2tTdGF0cygpOwogICAgIGNvbnN0IFN0
YWNrQm91bmRzJiBzdGFjayA9IHRocmVhZC5zdGFjaygpOwpAQCAtMTIxLDcgKzEyMSw3IEBAIFN0
YWNrU3RhdHM6OkNoZWNrUG9pbnQ6OkNoZWNrUG9pbnQoKQogCiBTdGFja1N0YXRzOjpDaGVja1Bv
aW50Ojp+Q2hlY2tQb2ludCgpCiB7Ci0gICAgc3RkOjpsb2NrX2d1YXJkPExvY2s+IGxvY2soU3Rh
Y2tTdGF0czo6c19zaGFyZWRNdXRleCk7CisgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhTdGFj
a1N0YXRzOjpzX3NoYXJlZE11dGV4KTsKICAgICBUaHJlYWQmIHRocmVhZCA9IFRocmVhZDo6Y3Vy
cmVudCgpOwogICAgIFN0YWNrU3RhdHM6OlBlclRocmVhZFN0YXRzJiB0ID0gdGhyZWFkLnN0YWNr
U3RhdHMoKTsKIApAQCAtMTQ4LDcgKzE0OCw3IEBAIFN0YWNrU3RhdHM6OkNoZWNrUG9pbnQ6On5D
aGVja1BvaW50KCkKIAogdm9pZCBTdGFja1N0YXRzOjpwcm9iZSgpCiB7Ci0gICAgc3RkOjpsb2Nr
X2d1YXJkPExvY2s+IGxvY2soU3RhY2tTdGF0czo6c19zaGFyZWRNdXRleCk7CisgICAgYXV0byBs
b2NrZXIgPSBob2xkTG9jayhTdGFja1N0YXRzOjpzX3NoYXJlZE11dGV4KTsKICAgICBUaHJlYWQm
IHRocmVhZCA9IFRocmVhZDo6Y3VycmVudCgpOwogICAgIFN0YWNrU3RhdHM6OlBlclRocmVhZFN0
YXRzJiB0ID0gdGhyZWFkLnN0YWNrU3RhdHMoKTsKICAgICBjb25zdCBTdGFja0JvdW5kcyYgc3Rh
Y2sgPSB0aHJlYWQuc3RhY2soKTsKQEAgLTIwMyw3ICsyMDMsNyBAQCBTdGFja1N0YXRzOjpMYXlv
dXRDaGVja1BvaW50OjpMYXlvdXRDaGVja1BvaW50KCkKICAgICAvLyBwcm9iZSBmaXJzdCwgd2Ug
Y2FuIGF2b2lkIHJlLWVudGVyaW5nIHRoZSBsb2NrLgogICAgIFN0YWNrU3RhdHM6OnByb2JlKCk7
CiAKLSAgICBzdGQ6OmxvY2tfZ3VhcmQ8TG9jaz4gbG9jayhTdGFja1N0YXRzOjpzX3NoYXJlZE11
dGV4KTsKKyAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKFN0YWNrU3RhdHM6OnNfc2hhcmVkTXV0
ZXgpOwogICAgIFRocmVhZCYgdGhyZWFkID0gVGhyZWFkOjpjdXJyZW50KCk7CiAgICAgU3RhY2tT
dGF0czo6UGVyVGhyZWFkU3RhdHMmIHQgPSB0aHJlYWQuc3RhY2tTdGF0cygpOwogICAgIGNvbnN0
IFN0YWNrQm91bmRzJiBzdGFjayA9IHRocmVhZC5zdGFjaygpOwpAQCAtMjY0LDcgKzI2NCw3IEBA
IFN0YWNrU3RhdHM6OkxheW91dENoZWNrUG9pbnQ6OkxheW91dENoZWNrUG9pbnQoKQogCiBTdGFj
a1N0YXRzOjpMYXlvdXRDaGVja1BvaW50Ojp+TGF5b3V0Q2hlY2tQb2ludCgpCiB7Ci0gICAgc3Rk
Ojpsb2NrX2d1YXJkPExvY2s+IGxvY2soU3RhY2tTdGF0czo6c19zaGFyZWRNdXRleCk7CisgICAg
YXV0byBsb2NrZXIgPSBob2xkTG9jayhTdGFja1N0YXRzOjpzX3NoYXJlZE11dGV4KTsKIAogICAg
IC8vIFBvcCB0byB0aGUgcHJldmlvdXMgbGF5b3V0IGNoZWNrcG9pbnQ6CiAgICAgU3RhY2tTdGF0
czo6c190b3BMYXlvdXRDaGVja1BvaW50ID0gbV9wcmV2OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvV29yZExvY2suY3BwIGIvU291cmNlL1dURi93dGYvV29yZExvY2suY3BwCmluZGV4IGZi
MmM3OGUzZjMxNGJkMDQ2ZmYzYTg5Nzk0MmM0ZWE4MjgwYWZkMzUuLjQ1NTA2ZjkxMDRjMzU1ODg0
NTNhYzM0MzYzNGM5ZmM2ZDY4MjI5NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1dvcmRM
b2NrLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9Xb3JkTG9jay5jcHAKQEAgLTIzNiw3ICsyMzYs
NyBAQCBORVZFUl9JTkxJTkUgdm9pZCBXb3JkTG9jazo6dW5sb2NrU2xvdygpCiAgICAgewogICAg
ICAgICAvLyBCZSBzdXJlIHRvIGhvbGQgdGhlIGxvY2sgYWNyb3NzIG91ciBjYWxsIHRvIG5vdGlm
eV9vbmUoKSBiZWNhdXNlIGEgc3B1cmlvdXMgd2FrZXVwIGNvdWxkCiAgICAgICAgIC8vIGNhdXNl
IHRoZSB0aHJlYWQgYXQgdGhlIGhlYWQgb2YgdGhlIHF1ZXVlIHRvIGV4aXQgYW5kIGRlbGV0ZSBx
dWV1ZUhlYWQuCi0gICAgICAgIHN0ZDo6bG9ja19ndWFyZDxzdGQ6Om11dGV4PiBsb2NrZXIocXVl
dWVIZWFkLT5wYXJraW5nTG9jayk7CisgICAgICAgIHN0ZDo6c2NvcGVkX2xvY2s8c3RkOjptdXRl
eD4gbG9ja2VyKHF1ZXVlSGVhZC0+cGFya2luZ0xvY2spOwogICAgICAgICBxdWV1ZUhlYWQtPnNo
b3VsZFBhcmsgPSBmYWxzZTsKIAogICAgICAgICAvLyBEb2Vzbid0IG1hdHRlciBpZiB3ZSBub3Rp
ZnlfYWxsKCkgb3Igbm90aWZ5X29uZSgpIGhlcmUgc2luY2UgdGhlIG9ubHkgdGhyZWFkIHRoYXQg
Y291bGQgYmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL2NmL0xhbmd1YWdlQ0YuY3BwIGIv
U291cmNlL1dURi93dGYvY2YvTGFuZ3VhZ2VDRi5jcHAKaW5kZXggNzRjMWFmNDg3M2ZkMDkyYWUx
YjJkZmEyZDQ1NGQ5YWY0YWU0ZDdkZi4uMTIzOTZkYWQ0NmZlNDM4ODUxNGE1ODczOTNhNjhmNjU3
MTRhNjBiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvY2YvTGFuZ3VhZ2VDRi5jcHAKKysr
IGIvU291cmNlL1dURi93dGYvY2YvTGFuZ3VhZ2VDRi5jcHAKQEAgLTgzLDcgKzgzLDcgQEAgc3Rh
dGljIFN0cmluZyBodHRwU3R5bGVMYW5ndWFnZUNvZGUoQ0ZTdHJpbmdSZWYgbGFuZ3VhZ2UpCiBz
dGF0aWMgdm9pZCBsYW5ndWFnZVByZWZlcmVuY2VzRGlkQ2hhbmdlKENGTm90aWZpY2F0aW9uQ2Vu
dGVyUmVmLCB2b2lkKiwgQ0ZTdHJpbmdSZWYsIGNvbnN0IHZvaWQqLCBDRkRpY3Rpb25hcnlSZWYp
CiB7CiAgICAgewotICAgICAgICBzdGQ6OmxvY2tfZ3VhcmQ8TG9jaz4gbG9jayhwcmVmZXJyZWRM
YW5ndWFnZXNNdXRleCk7CisgICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2socHJlZmVycmVk
TGFuZ3VhZ2VzTXV0ZXgpOwogICAgICAgICBwcmVmZXJyZWRMYW5ndWFnZXMoKS5jbGVhcigpOwog
ICAgIH0KICAgICAKQEAgLTEwMCw3ICsxMDAsNyBAQCBWZWN0b3I8U3RyaW5nPiBwbGF0Zm9ybVVz
ZXJQcmVmZXJyZWRMYW5ndWFnZXMoKQogICAgIH0pOwogI2VuZGlmCiAKLSAgICBzdGQ6OmxvY2tf
Z3VhcmQ8TG9jaz4gbG9jayhwcmVmZXJyZWRMYW5ndWFnZXNNdXRleCk7CisgICAgYXV0byBsb2Nr
ZXIgPSBob2xkTG9jayhwcmVmZXJyZWRMYW5ndWFnZXNNdXRleCk7CiAgICAgVmVjdG9yPFN0cmlu
Zz4mIHVzZXJQcmVmZXJyZWRMYW5ndWFnZXMgPSBwcmVmZXJyZWRMYW5ndWFnZXMoKTsKIAogICAg
IGlmICh1c2VyUHJlZmVycmVkTGFuZ3VhZ2VzLmlzRW1wdHkoKSkgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvdGV4dC9TdHJpbmdWaWV3LmNwcCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3Ry
aW5nVmlldy5jcHAKaW5kZXggYzc5ODU1NWUzYTEwMDA4ODJkNmE2ZTIxZmRjNzFmYzkxOGQ2MmFh
OC4uOGQ0Nzk4YTFmMWJlZTYwMTA2NmRiZTgzM2RmZDBkMDc0MTUxMWM5NyAxMDA2NDQKLS0tIGEv
U291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdWaWV3LmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90
ZXh0L1N0cmluZ1ZpZXcuY3BwCkBAIC0zMDgsNyArMzA4LDcgQEAgdm9pZCBTdHJpbmdWaWV3Ojpp
bnZhbGlkYXRlKGNvbnN0IFN0cmluZ0ltcGwmIHN0cmluZ1RvQmVEZXN0cm95ZWQpCiB7CiAgICAg
VW5kZXJseWluZ1N0cmluZyogdW5kZXJseWluZ1N0cmluZzsKICAgICB7Ci0gICAgICAgIHN0ZDo6
bG9ja19ndWFyZDxMb2NrPiBsb2NrKHVuZGVybHlpbmdTdHJpbmdzTXV0ZXgpOworICAgICAgICBh
dXRvIGxvY2tlciA9IGhvbGRMb2NrKHVuZGVybHlpbmdTdHJpbmdzTXV0ZXgpOwogICAgICAgICB1
bmRlcmx5aW5nU3RyaW5nID0gdW5kZXJseWluZ1N0cmluZ3MoKS50YWtlKCZzdHJpbmdUb0JlRGVz
dHJveWVkKTsKICAgICAgICAgaWYgKCF1bmRlcmx5aW5nU3RyaW5nKQogICAgICAgICAgICAgcmV0
dXJuOwpAQCAtMzI1LDcgKzMyNSw3IEBAIGJvb2wgU3RyaW5nVmlldzo6dW5kZXJseWluZ1N0cmlu
Z0lzVmFsaWQoKSBjb25zdAogdm9pZCBTdHJpbmdWaWV3OjphZG9wdFVuZGVybHlpbmdTdHJpbmco
VW5kZXJseWluZ1N0cmluZyogdW5kZXJseWluZ1N0cmluZykKIHsKICAgICBpZiAobV91bmRlcmx5
aW5nU3RyaW5nKSB7Ci0gICAgICAgIHN0ZDo6bG9ja19ndWFyZDxMb2NrPiBsb2NrKHVuZGVybHlp
bmdTdHJpbmdzTXV0ZXgpOworICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKHVuZGVybHlp
bmdTdHJpbmdzTXV0ZXgpOwogICAgICAgICBpZiAoIS0tbV91bmRlcmx5aW5nU3RyaW5nLT5yZWZD
b3VudCkgewogICAgICAgICAgICAgaWYgKG1fdW5kZXJseWluZ1N0cmluZy0+aXNWYWxpZCkgewog
ICAgICAgICAgICAgICAgIHVuZGVybHlpbmdTdHJpbmdzKCkucmVtb3ZlKCZtX3VuZGVybHlpbmdT
dHJpbmctPnN0cmluZyk7CkBAIC0zNDIsNyArMzQyLDcgQEAgdm9pZCBTdHJpbmdWaWV3OjpzZXRV
bmRlcmx5aW5nU3RyaW5nKGNvbnN0IFN0cmluZ0ltcGwqIHN0cmluZykKICAgICBpZiAoIXN0cmlu
ZykKICAgICAgICAgdW5kZXJseWluZ1N0cmluZyA9IG51bGxwdHI7CiAgICAgZWxzZSB7Ci0gICAg
ICAgIHN0ZDo6bG9ja19ndWFyZDxMb2NrPiBsb2NrKHVuZGVybHlpbmdTdHJpbmdzTXV0ZXgpOwor
ICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKHVuZGVybHlpbmdTdHJpbmdzTXV0ZXgpOwog
ICAgICAgICBhdXRvIHJlc3VsdCA9IHVuZGVybHlpbmdTdHJpbmdzKCkuYWRkKHN0cmluZywgbnVs
bHB0cik7CiAgICAgICAgIGlmIChyZXN1bHQuaXNOZXdFbnRyeSkKICAgICAgICAgICAgIHJlc3Vs
dC5pdGVyYXRvci0+dmFsdWUgPSBuZXcgVW5kZXJseWluZ1N0cmluZygqc3RyaW5nKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XVEYvd3RmL3VuaWNvZGUvaWN1L0NvbGxhdG9ySUNVLmNwcCBiL1NvdXJj
ZS9XVEYvd3RmL3VuaWNvZGUvaWN1L0NvbGxhdG9ySUNVLmNwcAppbmRleCBkMGYyMGI5NDM3OGQx
MzkzOTViY2NlYjgyM2RlNzIzODkzZDAxYzA0Li42NzY2MDczYzlmNmI5Y2UwZmE1NjQxZmE1Y2Fi
MTVhOWIwMWZjYmFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi91bmljb2RlL2ljdS9Db2xs
YXRvcklDVS5jcHAKKysrIGIvU291cmNlL1dURi93dGYvdW5pY29kZS9pY3UvQ29sbGF0b3JJQ1Uu
Y3BwCkBAIC0xMDYsNyArMTA2LDcgQEAgQ29sbGF0b3I6OkNvbGxhdG9yKGNvbnN0IGNoYXIqIGxv
Y2FsZSwgYm9vbCBzaG91bGRTb3J0TG93ZXJjYXNlRmlyc3QpCiAgICAgVUVycm9yQ29kZSBzdGF0
dXMgPSBVX1pFUk9fRVJST1I7CiAKICAgICB7Ci0gICAgICAgIHN0ZDo6bG9ja19ndWFyZDxMb2Nr
PiBsb2NrKGNhY2hlZENvbGxhdG9yTXV0ZXgpOworICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRM
b2NrKGNhY2hlZENvbGxhdG9yTXV0ZXgpOwogICAgICAgICBpZiAoY2FjaGVkQ29sbGF0b3IgJiYg
bG9jYWxlc01hdGNoKGNhY2hlZENvbGxhdG9yTG9jYWxlLCBsb2NhbGUpICYmIGNhY2hlZENvbGxh
dG9yU2hvdWxkU29ydExvd2VyY2FzZUZpcnN0ID09IHNob3VsZFNvcnRMb3dlcmNhc2VGaXJzdCkg
ewogICAgICAgICAgICAgbV9jb2xsYXRvciA9IGNhY2hlZENvbGxhdG9yOwogICAgICAgICAgICAg
bV9sb2NhbGUgPSBjYWNoZWRDb2xsYXRvckxvY2FsZTsKQEAgLTEzNiw3ICsxMzYsNyBAQCBDb2xs
YXRvcjo6Q29sbGF0b3IoY29uc3QgY2hhciogbG9jYWxlLCBib29sIHNob3VsZFNvcnRMb3dlcmNh
c2VGaXJzdCkKIAogQ29sbGF0b3I6On5Db2xsYXRvcigpCiB7Ci0gICAgc3RkOjpsb2NrX2d1YXJk
PExvY2s+IGxvY2soY2FjaGVkQ29sbGF0b3JNdXRleCk7CisgICAgYXV0byBsb2NrZXIgPSBob2xk
TG9jayhjYWNoZWRDb2xsYXRvck11dGV4KTsKICAgICBpZiAoY2FjaGVkQ29sbGF0b3IpIHsKICAg
ICAgICAgdWNvbF9jbG9zZShjYWNoZWRDb2xsYXRvcik7CiAgICAgICAgIGZhc3RGcmVlKGNhY2hl
ZENvbGxhdG9yTG9jYWxlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3dpbi9MYW5ndWFn
ZVdpbi5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi93aW4vTGFuZ3VhZ2VXaW4uY3BwCmluZGV4IGZjMWZj
NTI3NmVkYzE5NjNhYjdmNDBhMTEwZWQzOGI1MGY0OGE2ZjEuLjMwODc1OTdkYjYzMGIxNjNiZDNm
ODQyZWZlY2YyNDljYzdhNzdmYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3dpbi9MYW5n
dWFnZVdpbi5jcHAKKysrIGIvU291cmNlL1dURi93dGYvd2luL0xhbmd1YWdlV2luLmNwcApAQCAt
NTcsNyArNTcsNyBAQCBzdGF0aWMgU3RyaW5nIGxvY2FsZUluZm8oTENUWVBFIGxvY2FsZVR5cGUs
IGNvbnN0IFN0cmluZyYgZmFsbGJhY2spCiAKIHN0YXRpYyBTdHJpbmcgcGxhdGZvcm1MYW5ndWFn
ZSgpCiB7Ci0gICAgc3RkOjpsb2NrX2d1YXJkPExvY2s+IGxvY2socGxhdGZvcm1MYW5ndWFnZU11
dGV4KTsKKyAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKHBsYXRmb3JtTGFuZ3VhZ2VNdXRleCk7
CiAKICAgICBzdGF0aWMgU3RyaW5nIGNvbXB1dGVkRGVmYXVsdExhbmd1YWdlOwogICAgIGlmICgh
Y29tcHV0ZWREZWZhdWx0TGFuZ3VhZ2UuaXNFbXB0eSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuY3BwCmluZGV4
IDMzMDZiOWMyMWQ2YzY1MzNiMzA2Y2MyYTc2ODAyZmJiMmZhYjlmMjguLmMzNjYxZGU1N2Q3Mzll
YzQ3MGQ2ZmFkOWY1NDFlNDk1ZWM5NzZkZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyU291cmNlTm9kZS5jcHAKQEAgLTQxNiw3
ICs0MTYsNyBAQCB2b2lkIEF1ZGlvQnVmZmVyU291cmNlTm9kZTo6c2V0QnVmZmVyKFJlZlB0cjxB
dWRpb0J1ZmZlcj4mJiBidWZmZXIpCiAgICAgQXVkaW9Db250ZXh0OjpBdXRvTG9ja2VyIGNvbnRl
eHRMb2NrZXIoY29udGV4dCgpKTsKICAgICAKICAgICAvLyBUaGlzIHN5bmNocm9uaXplcyB3aXRo
IHByb2Nlc3MoKS4KLSAgICBzdGQ6OmxvY2tfZ3VhcmQ8TG9jaz4gbG9jayhtX3Byb2Nlc3NNdXRl
eCk7CisgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX3Byb2Nlc3NNdXRleCk7CiAgICAgCiAg
ICAgaWYgKGJ1ZmZlcikgewogICAgICAgICAvLyBEbyBhbnkgbmVjZXNzc2FyeSByZS1jb25maWd1
cmF0aW9uIHRvIHRoZSBidWZmZXIncyBudW1iZXIgb2YgY2hhbm5lbHMuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvUGFyYW1UaW1lbGluZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvUGFyYW1UaW1lbGluZS5jcHAKaW5k
ZXggZmRjMWQzYzdjMWEwZWIzMzE1Yzg3MmIyZDBlZDI3NWFlOGQyN2U4YS4uMmI1OTU3MGJmNmU2
MWI1NDgzZWQxYjkwN2U2NzZmNjliZTliMzc0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9BdWRpb1BhcmFtVGltZWxpbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9QYXJhbVRpbWVsaW5lLmNwcApAQCAtODAsNyArODAs
NyBAQCB2b2lkIEF1ZGlvUGFyYW1UaW1lbGluZTo6aW5zZXJ0RXZlbnQoY29uc3QgUGFyYW1FdmVu
dCYgZXZlbnQpCiAgICAgaWYgKCFpc1ZhbGlkKQogICAgICAgICByZXR1cm47CiAgICAgICAgIAot
ICAgIHN0ZDo6bG9ja19ndWFyZDxMb2NrPiBsb2NrKG1fZXZlbnRzTXV0ZXgpOworICAgIGF1dG8g
bG9ja2VyID0gaG9sZExvY2sobV9ldmVudHNNdXRleCk7CiAgICAgCiAgICAgdW5zaWduZWQgaSA9
IDA7CiAgICAgZmxvYXQgaW5zZXJ0VGltZSA9IGV2ZW50LnRpbWUoKTsKQEAgLTEwMiw3ICsxMDIs
NyBAQCB2b2lkIEF1ZGlvUGFyYW1UaW1lbGluZTo6aW5zZXJ0RXZlbnQoY29uc3QgUGFyYW1FdmVu
dCYgZXZlbnQpCiAKIHZvaWQgQXVkaW9QYXJhbVRpbWVsaW5lOjpjYW5jZWxTY2hlZHVsZWRWYWx1
ZXMoZmxvYXQgc3RhcnRUaW1lKQogewotICAgIHN0ZDo6bG9ja19ndWFyZDxMb2NrPiBsb2NrKG1f
ZXZlbnRzTXV0ZXgpOworICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9ldmVudHNNdXRleCk7
CiAKICAgICAvLyBSZW1vdmUgYWxsIGV2ZW50cyBzdGFydGluZyBhdCBzdGFydFRpbWUuCiAgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fZXZlbnRzLnNpemUoKTsgKytpKSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0NvbnZvbHZlck5vZGUuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9Db252b2x2ZXJOb2RlLmNwcAppbmRleCBl
MzY2NzdjZmQ3NDVlOGJiZTAyZGEzZGM0ZGQ3YmExZjFhNTNkZDQ5Li5jYzk3MmYxMGRiZDdhYmZm
NzNmNzkzY2ZhY2M3YzQwMDhhNzIzNDQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL0NvbnZvbHZlck5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vQ29udm9sdmVyTm9kZS5jcHAKQEAgLTk0LDcgKzk0LDcgQEAgdm9pZCBDb252
b2x2ZXJOb2RlOjpwcm9jZXNzKHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpCiAKIHZvaWQgQ29udm9s
dmVyTm9kZTo6cmVzZXQoKQogewotICAgIHN0ZDo6bG9ja19ndWFyZDxMb2NrPiBsb2NrKG1fcHJv
Y2Vzc011dGV4KTsKKyAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fcHJvY2Vzc011dGV4KTsK
ICAgICBpZiAobV9yZXZlcmIpCiAgICAgICAgIG1fcmV2ZXJiLT5yZXNldCgpOwogfQpAQCAtMTUw
LDcgKzE1MCw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IENvbnZvbHZlck5vZGU6OnNldEJ1ZmZlcihB
dWRpb0J1ZmZlciogYnVmZmVyKQogCiAgICAgewogICAgICAgICAvLyBTeW5jaHJvbml6ZSB3aXRo
IHByb2Nlc3MoKS4KLSAgICAgICAgc3RkOjpsb2NrX2d1YXJkPExvY2s+IGxvY2sobV9wcm9jZXNz
TXV0ZXgpOworICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fcHJvY2Vzc011dGV4KTsK
ICAgICAgICAgbV9yZXZlcmIgPSBXVEZNb3ZlKHJldmVyYik7CiAgICAgICAgIG1fYnVmZmVyID0g
YnVmZmVyOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vTWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vTWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlLmNwcAppbmRleCA5MTJlNmVi
MjMyMTQ1NjQzZDZmZGFmYmMxMWU5Njc2NGMzZDJmNWQxLi4wZTU5ODFmYTY4NmRiOTIxMmZmYTBm
ODNlOWJkY2QwM2FmOWFhYWMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL01lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9NZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGUuY3BwCkBAIC04
NSw3ICs4NSw3IEBAIHZvaWQgTWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlOjpzZXRGb3JtYXQo
c2l6ZV90IG51bWJlck9mQ2hhbm5lbHMsIGZsb2F0IHNvdXJjCiAgICAgICAgIG1fc291cmNlU2Ft
cGxlUmF0ZSA9IHNvdXJjZVNhbXBsZVJhdGU7CiAKICAgICAgICAgLy8gU3luY2hyb25pemUgd2l0
aCBwcm9jZXNzKCkuCi0gICAgICAgIHN0ZDo6bG9ja19ndWFyZDxNZWRpYUVsZW1lbnRBdWRpb1Nv
dXJjZU5vZGU+IGxvY2soKnRoaXMpOworICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKCp0
aGlzKTsKIAogICAgICAgICBpZiAoc291cmNlU2FtcGxlUmF0ZSAhPSBzYW1wbGVSYXRlKCkpIHsK
ICAgICAgICAgICAgIGRvdWJsZSBzY2FsZUZhY3RvciA9IHNvdXJjZVNhbXBsZVJhdGUgLyBzYW1w
bGVSYXRlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL01l
ZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vTWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5vZGUuY3BwCmluZGV4IDdiYTU5YmY0OGE5MmE1
ODU1OGJjZjJiMmI4ZGQzMGI2NzBmYjUyZWEuLjFiNGZiNmQxOTIyYWQxYzRiMDQxY2I5MTI5YzU1
YzEzODcwN2Y3Y2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
TWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vTWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5vZGUuY3BwCkBAIC04NCw3ICs4NCw3
IEBAIHZvaWQgTWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5vZGU6OnNldEZvcm1hdChzaXplX3QgbnVt
YmVyT2ZDaGFubmVscywgZmxvYXQgc291cmNlCiAgICAgfQogCiAgICAgLy8gU3luY2hyb25pemUg
d2l0aCBwcm9jZXNzKCkuCi0gICAgc3RkOjpsb2NrX2d1YXJkPExvY2s+IGxvY2sobV9wcm9jZXNz
TXV0ZXgpOworICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9wcm9jZXNzTXV0ZXgpOwogCiAg
ICAgbV9zb3VyY2VOdW1iZXJPZkNoYW5uZWxzID0gbnVtYmVyT2ZDaGFubmVsczsKICAgICBtX3Nv
dXJjZVNhbXBsZVJhdGUgPSBzb3VyY2VTYW1wbGVSYXRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9Pc2NpbGxhdG9yTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL09zY2lsbGF0b3JOb2RlLmNwcAppbmRleCBhOTljZWFhZDZiNWMy
MWUwOWRkMjI1M2MyYWNmMzA0NTU0NzUzZTdiLi45NTYwMDUzYTQ4MDViOWQ0YmY1NTk5ZTczYTE5
YTgxZTI1YjBjOTZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L09zY2lsbGF0b3JOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L09zY2lsbGF0b3JOb2RlLmNwcApAQCAtMzA2LDcgKzMwNiw3IEBAIHZvaWQgT3NjaWxsYXRvck5v
ZGU6OnNldFBlcmlvZGljV2F2ZShQZXJpb2RpY1dhdmUqIHBlcmlvZGljV2F2ZSkKICAgICBBU1NF
UlQoaXNNYWluVGhyZWFkKCkpOwogICAgIAogICAgIC8vIFRoaXMgc3luY2hyb25pemVzIHdpdGgg
cHJvY2VzcygpLgotICAgIHN0ZDo6bG9ja19ndWFyZDxMb2NrPiBsb2NrKG1fcHJvY2Vzc011dGV4
KTsKKyAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fcHJvY2Vzc011dGV4KTsKICAgICBtX3Bl
cmlvZGljV2F2ZSA9IHBlcmlvZGljV2F2ZTsKICAgICBtX3R5cGUgPSBUeXBlOjpDdXN0b207CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1Bhbm5lck5vZGUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9QYW5uZXJOb2RlLmNwcAppbmRl
eCA5MjQyZjg4YTYzNmFkOTFlMWQ3YWVmYjhlOTFiMzAxZTE5NzA5YTBjLi41MDg3MzZiNjA1ZDc4
Yzc1Y2UxMzIyZGEwOTI0ZTIzNmRhNTMzNTM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL1Bhbm5lck5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vUGFubmVyTm9kZS5jcHAKQEAgLTE4Miw3ICsxODIsNyBAQCB2b2lkIFBhbm5l
ck5vZGU6OnNldFBhbm5pbmdNb2RlbChQYW5uaW5nTW9kZWxUeXBlIG1vZGVsKQogewogICAgIGlm
ICghbV9wYW5uZXIuZ2V0KCkgfHwgbW9kZWwgIT0gbV9wYW5uaW5nTW9kZWwpIHsKICAgICAgICAg
Ly8gVGhpcyBzeW5jaHJvbml6ZXMgd2l0aCBwcm9jZXNzKCkuCi0gICAgICAgIHN0ZDo6bG9ja19n
dWFyZDxMb2NrPiBsb2NrKG1fcGFubmVyTXV0ZXgpOworICAgICAgICBhdXRvIGxvY2tlciA9IGhv
bGRMb2NrKG1fcGFubmVyTXV0ZXgpOwogCiAgICAgICAgIG1fcGFubmVyID0gUGFubmVyOjpjcmVh
dGUobW9kZWwsIHNhbXBsZVJhdGUoKSwgbV9ocnRmRGF0YWJhc2VMb2FkZXIuZ2V0KCkpOwogICAg
ICAgICBtX3Bhbm5pbmdNb2RlbCA9IG1vZGVsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9XYXZlU2hhcGVyUHJvY2Vzc29yLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vV2F2ZVNoYXBlclByb2Nlc3Nvci5jcHAKaW5kZXggYmZlNWUwZTQ3
ZmI4NGEyOGM2M2M2ZTI4YjMyZTBmYzExZTVjNjdiMS4uNzc1NjQ5OWRlNDQ1NTYwYjhjYTdhMzc0
OTAxYTkwZmYxYzcwMzgwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9XYXZlU2hhcGVyUHJvY2Vzc29yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL1dhdmVTaGFwZXJQcm9jZXNzb3IuY3BwCkBAIC01Miw3ICs1Miw3IEBAIHN0ZDo6
dW5pcXVlX3B0cjxBdWRpb0RTUEtlcm5lbD4gV2F2ZVNoYXBlclByb2Nlc3Nvcjo6Y3JlYXRlS2Vy
bmVsKCkKIHZvaWQgV2F2ZVNoYXBlclByb2Nlc3Nvcjo6c2V0Q3VydmUoRmxvYXQzMkFycmF5KiBj
dXJ2ZSkKIHsKICAgICAvLyBUaGlzIHN5bmNocm9uaXplcyB3aXRoIHByb2Nlc3MoKS4KLSAgICBz
dGQ6OmxvY2tfZ3VhcmQ8TG9jaz4gbG9jayhtX3Byb2Nlc3NNdXRleCk7CisgICAgYXV0byBsb2Nr
ZXIgPSBob2xkTG9jayhtX3Byb2Nlc3NNdXRleCk7CiAKICAgICBtX2N1cnZlID0gY3VydmU7CiB9
CkBAIC02MCw3ICs2MCw3IEBAIHZvaWQgV2F2ZVNoYXBlclByb2Nlc3Nvcjo6c2V0Q3VydmUoRmxv
YXQzMkFycmF5KiBjdXJ2ZSkKIHZvaWQgV2F2ZVNoYXBlclByb2Nlc3Nvcjo6c2V0T3ZlcnNhbXBs
ZShPdmVyU2FtcGxlVHlwZSBvdmVyc2FtcGxlKQogewogICAgIC8vIFRoaXMgc3luY2hyb25pemVz
IHdpdGggcHJvY2VzcygpLgotICAgIHN0ZDo6bG9ja19ndWFyZDxMb2NrPiBsb2NrKG1fcHJvY2Vz
c011dGV4KTsKKyAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fcHJvY2Vzc011dGV4KTsKIAog
ICAgIG1fb3ZlcnNhbXBsZSA9IG92ZXJzYW1wbGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZS5jcHAKaW5kZXggMjE4YjBjNGM5MDA5MDZlN2I1NmQw
MGE4NzdlMWVjYTQzZTRmODNlMC4uYWQzOTUyYTA3MmNmNjVkZGQyNDhjMWJlODk2OTM0OTUxZTNl
NTZkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRh
YmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFz
ZS5jcHAKQEAgLTIwNiw3ICsyMDYsNyBAQCBEYXRhYmFzZTo6RGF0YWJhc2UoRGF0YWJhc2VDb250
ZXh0JiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgZQogICAgICwg
bV9kYXRhYmFzZUF1dGhvcml6ZXIoRGF0YWJhc2VBdXRob3JpemVyOjpjcmVhdGUodW5xdWFsaWZp
ZWRJbmZvVGFibGVOYW1lKSkKIHsKICAgICB7Ci0gICAgICAgIHN0ZDo6bG9ja19ndWFyZDxMb2Nr
PiBsb2NrZXIoZ3VpZE11dGV4KTsKKyAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhndWlk
TXV0ZXgpOwogCiAgICAgICAgIG1fZ3VpZCA9IGd1aWRGb3JPcmlnaW5BbmROYW1lKHNlY3VyaXR5
T3JpZ2luKCkuc2VjdXJpdHlPcmlnaW4oKS0+dG9TdHJpbmcoKSwgbmFtZSk7CiAgICAgICAgIGd1
aWRUb0RhdGFiYXNlTWFwKCkuZW5zdXJlKG1fZ3VpZCwgW10gewpAQCAtMzUzLDcgKzM1Myw3IEBA
IEV4Y2VwdGlvbk9yPHZvaWQ+IERhdGFiYXNlOjpwZXJmb3JtT3BlbkFuZFZlcmlmeShib29sIHNo
b3VsZFNldFZlcnNpb25Jbk5ld0RhdGFiCiAKICAgICBTdHJpbmcgY3VycmVudFZlcnNpb247CiAg
ICAgewotICAgICAgICBzdGQ6OmxvY2tfZ3VhcmQ8TG9jaz4gbG9ja2VyKGd1aWRNdXRleCk7Cisg
ICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2soZ3VpZE11dGV4KTsKIAogICAgICAgICBhdXRv
IGVudHJ5ID0gZ3VpZFRvVmVyc2lvbk1hcCgpLmZpbmQobV9ndWlkKTsKICAgICAgICAgaWYgKGVu
dHJ5ICE9IGd1aWRUb1ZlcnNpb25NYXAoKS5lbmQoKSkgewpAQCAtNDQyLDcgKzQ0Miw3IEBAIHZv
aWQgRGF0YWJhc2U6OmNsb3NlRGF0YWJhc2UoKQogICAgIERhdGFiYXNlVHJhY2tlcjo6c2luZ2xl
dG9uKCkucmVtb3ZlT3BlbkRhdGFiYXNlKCp0aGlzKTsKIAogICAgIHsKLSAgICAgICAgc3RkOjps
b2NrX2d1YXJkPExvY2s+IGxvY2tlcihndWlkTXV0ZXgpOworICAgICAgICBhdXRvIGxvY2tlciA9
IGhvbGRMb2NrKGd1aWRNdXRleCk7CiAKICAgICAgICAgYXV0byBpdCA9IGd1aWRUb0RhdGFiYXNl
TWFwKCkuZmluZChtX2d1aWQpOwogICAgICAgICBBU1NFUlQoaXQgIT0gZ3VpZFRvRGF0YWJhc2VN
YXAoKS5lbmQoKSk7CkBAIC01MDAsMTQgKzUwMCwxNCBAQCB2b2lkIERhdGFiYXNlOjpzZXRFeHBl
Y3RlZFZlcnNpb24oY29uc3QgU3RyaW5nJiB2ZXJzaW9uKQogCiBTdHJpbmcgRGF0YWJhc2U6Omdl
dENhY2hlZFZlcnNpb24oKSBjb25zdAogewotICAgIHN0ZDo6bG9ja19ndWFyZDxMb2NrPiBsb2Nr
ZXIoZ3VpZE11dGV4KTsKKyAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKGd1aWRNdXRleCk7CiAK
ICAgICByZXR1cm4gZ3VpZFRvVmVyc2lvbk1hcCgpLmdldChtX2d1aWQpLmlzb2xhdGVkQ29weSgp
OwogfQogCiB2b2lkIERhdGFiYXNlOjpzZXRDYWNoZWRWZXJzaW9uKGNvbnN0IFN0cmluZyYgYWN0
dWFsVmVyc2lvbikKIHsKLSAgICBzdGQ6OmxvY2tfZ3VhcmQ8TG9jaz4gbG9ja2VyKGd1aWRNdXRl
eCk7CisgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhndWlkTXV0ZXgpOwogCiAgICAgdXBkYXRl
R1VJRFZlcnNpb25NYXAobV9ndWlkLCBhY3R1YWxWZXJzaW9uKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VNYW5hZ2VyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VNYW5hZ2VyLmNwcAppbmRl
eCA3MTZmNTA3MzE3NTVjYmY4MDA0NjIzMDMwMTEzNTg2M2U0M2RiYmFmLi41ZWY2Njg3YzE3YjIz
NTVhOTFmMmU2NjhkNjliZWJiZGYzNzQxYWIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZU1hbmFnZXIuY3BwCkBAIC0xODEsMTMgKzE4
MSwxMyBAQCBFeGNlcHRpb25PcjxSZWY8RGF0YWJhc2U+PiBEYXRhYmFzZU1hbmFnZXI6OnRyeVRv
T3BlbkRhdGFiYXNlQmFja2VuZChEb2N1bWVudCYgZAogCiB2b2lkIERhdGFiYXNlTWFuYWdlcjo6
YWRkUHJvcG9zZWREYXRhYmFzZShQcm9wb3NlZERhdGFiYXNlJiBkYXRhYmFzZSkKIHsKLSAgICBz
dGQ6OmxvY2tfZ3VhcmQ8TG9jaz4gbG9jayB7IG1fcHJvcG9zZWREYXRhYmFzZXNNdXRleCB9Owor
ICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9wcm9wb3NlZERhdGFiYXNlc011dGV4KTsKICAg
ICBtX3Byb3Bvc2VkRGF0YWJhc2VzLmFkZCgmZGF0YWJhc2UpOwogfQogCiB2b2lkIERhdGFiYXNl
TWFuYWdlcjo6cmVtb3ZlUHJvcG9zZWREYXRhYmFzZShQcm9wb3NlZERhdGFiYXNlJiBkYXRhYmFz
ZSkKIHsKLSAgICBzdGQ6OmxvY2tfZ3VhcmQ8TG9jaz4gbG9jayB7IG1fcHJvcG9zZWREYXRhYmFz
ZXNNdXRleCB9OworICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9wcm9wb3NlZERhdGFiYXNl
c011dGV4KTsKICAgICBtX3Byb3Bvc2VkRGF0YWJhc2VzLnJlbW92ZSgmZGF0YWJhc2UpOwogfQog
CkBAIC0yMzcsNyArMjM3LDcgQEAgdm9pZCBEYXRhYmFzZU1hbmFnZXI6OnN0b3BEYXRhYmFzZXMo
RG9jdW1lbnQmIGRvY3VtZW50LCBEYXRhYmFzZVRhc2tTeW5jaHJvbml6ZXIKIFN0cmluZyBEYXRh
YmFzZU1hbmFnZXI6OmZ1bGxQYXRoRm9yRGF0YWJhc2UoU2VjdXJpdHlPcmlnaW4mIG9yaWdpbiwg
Y29uc3QgU3RyaW5nJiBuYW1lLCBib29sIGNyZWF0ZUlmRG9lc05vdEV4aXN0KQogewogICAgIHsK
LSAgICAgICAgc3RkOjpsb2NrX2d1YXJkPExvY2s+IGxvY2sgeyBtX3Byb3Bvc2VkRGF0YWJhc2Vz
TXV0ZXggfTsKKyAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX3Byb3Bvc2VkRGF0YWJh
c2VzTXV0ZXgpOwogICAgICAgICBmb3IgKGF1dG8qIHByb3Bvc2VkRGF0YWJhc2UgOiBtX3Byb3Bv
c2VkRGF0YWJhc2VzKSB7CiAgICAgICAgICAgICBpZiAocHJvcG9zZWREYXRhYmFzZS0+ZGV0YWls
cygpLm5hbWUoKSA9PSBuYW1lICYmIHByb3Bvc2VkRGF0YWJhc2UtPm9yaWdpbigpLmVxdWFsKCZv
cmlnaW4pKQogICAgICAgICAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKQEAgLTI0OSw3ICsyNDks
NyBAQCBTdHJpbmcgRGF0YWJhc2VNYW5hZ2VyOjpmdWxsUGF0aEZvckRhdGFiYXNlKFNlY3VyaXR5
T3JpZ2luJiBvcmlnaW4sIGNvbnN0IFN0cmluZwogRGF0YWJhc2VEZXRhaWxzIERhdGFiYXNlTWFu
YWdlcjo6ZGV0YWlsc0Zvck5hbWVBbmRPcmlnaW4oY29uc3QgU3RyaW5nJiBuYW1lLCBTZWN1cml0
eU9yaWdpbiYgb3JpZ2luKQogewogICAgIHsKLSAgICAgICAgc3RkOjpsb2NrX2d1YXJkPExvY2s+
IGxvY2sgeyBtX3Byb3Bvc2VkRGF0YWJhc2VzTXV0ZXggfTsKKyAgICAgICAgYXV0byBsb2NrZXIg
PSBob2xkTG9jayhtX3Byb3Bvc2VkRGF0YWJhc2VzTXV0ZXgpOwogICAgICAgICBmb3IgKGF1dG8q
IHByb3Bvc2VkRGF0YWJhc2UgOiBtX3Byb3Bvc2VkRGF0YWJhc2VzKSB7CiAgICAgICAgICAgICBp
ZiAocHJvcG9zZWREYXRhYmFzZS0+ZGV0YWlscygpLm5hbWUoKSA9PSBuYW1lICYmIHByb3Bvc2Vk
RGF0YWJhc2UtPm9yaWdpbigpLmVxdWFsKCZvcmlnaW4pKSB7CiAgICAgICAgICAgICAgICAgQVNT
RVJUKCZwcm9wb3NlZERhdGFiYXNlLT5kZXRhaWxzKCkudGhyZWFkKCkgPT0gJlRocmVhZDo6Y3Vy
cmVudCgpIHx8IGlzTWFpblRocmVhZCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Ny
eXB0by9DcnlwdG9BbGdvcml0aG1SZWdpc3RyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8v
Q3J5cHRvQWxnb3JpdGhtUmVnaXN0cnkuY3BwCmluZGV4IDdhNDgwMWFiMGE0NzUyYjBkMWNkNGQy
NzVhMDM2MzYwOWZjZTBhOGYuLjIyZjI3N2E4YWQ5NWViMGQ2NDVlNGI0ZDg0MDk0ODUwNTQ2ODQ4
MGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9DcnlwdG9BbGdvcml0aG1SZWdp
c3RyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL0NyeXB0b0FsZ29yaXRobVJlZ2lz
dHJ5LmNwcApAQCAtNTIsNyArNTIsNyBAQCBPcHRpb25hbDxDcnlwdG9BbGdvcml0aG1JZGVudGlm
aWVyPiBDcnlwdG9BbGdvcml0aG1SZWdpc3RyeTo6aWRlbnRpZmllcihjb25zdCBTdAogICAgIGlm
IChuYW1lLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIAotICAgIHN0
ZDo6bG9ja19ndWFyZDxMb2NrPiBsb2NrKHJlZ2lzdHJ5TXV0ZXgpOworICAgIGF1dG8gbG9ja2Vy
ID0gaG9sZExvY2socmVnaXN0cnlNdXRleCk7CiAKICAgICAvLyBGSVhNRTogSG93IGlzIGl0IGhl
bHBmdWwgdG8gY2FsbCBpc29sYXRlZENvcHkgb24gdGhlIGFyZ3VtZW50IHRvIGZpbmQ/CiAgICAg
YXV0byBpZGVudGlmaWVyID0gbV9pZGVudGlmaWVycy5maW5kKG5hbWUuaXNvbGF0ZWRDb3B5KCkp
OwpAQCAtNjQsNyArNjQsNyBAQCBPcHRpb25hbDxDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyPiBD
cnlwdG9BbGdvcml0aG1SZWdpc3RyeTo6aWRlbnRpZmllcihjb25zdCBTdAogCiBTdHJpbmcgQ3J5
cHRvQWxnb3JpdGhtUmVnaXN0cnk6Om5hbWUoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBpZGVu
dGlmaWVyKQogewotICAgIHN0ZDo6bG9ja19ndWFyZDxMb2NrPiBsb2NrKHJlZ2lzdHJ5TXV0ZXgp
OworICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2socmVnaXN0cnlNdXRleCk7CiAKICAgICBhdXRv
IGNvbnRydWN0b3IgPSBtX2NvbnN0cnVjdG9ycy5maW5kKHN0YXRpY19jYXN0PHVuc2lnbmVkPihp
ZGVudGlmaWVyKSk7CiAgICAgaWYgKGNvbnRydWN0b3IgPT0gbV9jb25zdHJ1Y3RvcnMuZW5kKCkp
CkBAIC03NSw3ICs3NSw3IEBAIFN0cmluZyBDcnlwdG9BbGdvcml0aG1SZWdpc3RyeTo6bmFtZShD
cnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGlkZW50aWZpZXIpCiAKIFJlZlB0cjxDcnlwdG9BbGdv
cml0aG0+IENyeXB0b0FsZ29yaXRobVJlZ2lzdHJ5OjpjcmVhdGUoQ3J5cHRvQWxnb3JpdGhtSWRl
bnRpZmllciBpZGVudGlmaWVyKQogewotICAgIHN0ZDo6bG9ja19ndWFyZDxMb2NrPiBsb2NrKHJl
Z2lzdHJ5TXV0ZXgpOworICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2socmVnaXN0cnlNdXRleCk7
CiAKICAgICBhdXRvIGNvbnRydWN0b3IgPSBtX2NvbnN0cnVjdG9ycy5maW5kKHN0YXRpY19jYXN0
PHVuc2lnbmVkPihpZGVudGlmaWVyKSk7CiAgICAgaWYgKGNvbnRydWN0b3IgPT0gbV9jb25zdHJ1
Y3RvcnMuZW5kKCkpCkBAIC04Niw3ICs4Niw3IEBAIFJlZlB0cjxDcnlwdG9BbGdvcml0aG0+IENy
eXB0b0FsZ29yaXRobVJlZ2lzdHJ5OjpjcmVhdGUoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllCiAK
IHZvaWQgQ3J5cHRvQWxnb3JpdGhtUmVnaXN0cnk6OnJlZ2lzdGVyQWxnb3JpdGhtKGNvbnN0IFN0
cmluZyYgbmFtZSwgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBpZGVudGlmaWVyLCBDcnlwdG9B
bGdvcml0aG1Db25zdHJ1Y3RvciBjb25zdHJ1Y3RvcikKIHsKLSAgICBzdGQ6OmxvY2tfZ3VhcmQ8
TG9jaz4gbG9jayhyZWdpc3RyeU11dGV4KTsKKyAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKHJl
Z2lzdHJ5TXV0ZXgpOwogCiAgICAgQVNTRVJUKCFtX2lkZW50aWZpZXJzLmNvbnRhaW5zKG5hbWUp
KTsKICAgICBBU1NFUlQoIW1fY29uc3RydWN0b3JzLmNvbnRhaW5zKHN0YXRpY19jYXN0PHVuc2ln
bmVkPihpZGVudGlmaWVyKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2FnZW50cy9XZWJIZWFwQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50
cy9XZWJIZWFwQWdlbnQuY3BwCmluZGV4IDNjYmZiODM3NWU2ZmZkNzZjMDc2NTlkNzFiOWExOWI0
YTFhYmFlM2QuLmFjZjNjOWYxNTk3ZWRlOWY3OTYwMGQyZDJhNWY4MTY4ZTM4MDIzMTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvV2ViSGVhcEFnZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL1dlYkhlYXBBZ2VudC5jcHAKQEAg
LTY0LDcgKzY0LDcgQEAgU2VuZEdhcmJhZ2VDb2xsZWN0aW9uRXZlbnRzVGFzazo6U2VuZEdhcmJh
Z2VDb2xsZWN0aW9uRXZlbnRzVGFzayhXZWJIZWFwQWdlbnQmIGEKIHZvaWQgU2VuZEdhcmJhZ2VD
b2xsZWN0aW9uRXZlbnRzVGFzazo6YWRkR2FyYmFnZUNvbGxlY3Rpb24oR2FyYmFnZUNvbGxlY3Rp
b25EYXRhJiYgY29sbGVjdGlvbikKIHsKICAgICB7Ci0gICAgICAgIHN0ZDo6bG9ja19ndWFyZDxM
b2NrPiBsb2NrKG1fbXV0ZXgpOworICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fbXV0
ZXgpOwogICAgICAgICBtX2NvbGxlY3Rpb25zLmFwcGVuZChXVEZNb3ZlKGNvbGxlY3Rpb24pKTsK
ICAgICB9CiAKQEAgLTc1LDcgKzc1LDcgQEAgdm9pZCBTZW5kR2FyYmFnZUNvbGxlY3Rpb25FdmVu
dHNUYXNrOjphZGRHYXJiYWdlQ29sbGVjdGlvbihHYXJiYWdlQ29sbGVjdGlvbkRhdGEKIHZvaWQg
U2VuZEdhcmJhZ2VDb2xsZWN0aW9uRXZlbnRzVGFzazo6cmVzZXQoKQogewogICAgIHsKLSAgICAg
ICAgc3RkOjpsb2NrX2d1YXJkPExvY2s+IGxvY2sobV9tdXRleCk7CisgICAgICAgIGF1dG8gbG9j
a2VyID0gaG9sZExvY2sobV9tdXRleCk7CiAgICAgICAgIG1fY29sbGVjdGlvbnMuY2xlYXIoKTsK
ICAgICB9CiAKQEAgLTg3LDcgKzg3LDcgQEAgdm9pZCBTZW5kR2FyYmFnZUNvbGxlY3Rpb25FdmVu
dHNUYXNrOjp0aW1lckZpcmVkKCkKICAgICBWZWN0b3I8R2FyYmFnZUNvbGxlY3Rpb25EYXRhPiBj
b2xsZWN0aW9uc1RvU2VuZDsKIAogICAgIHsKLSAgICAgICAgc3RkOjpsb2NrX2d1YXJkPExvY2s+
IGxvY2sobV9tdXRleCk7CisgICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9tdXRleCk7
CiAgICAgICAgIG1fY29sbGVjdGlvbnMuc3dhcChjb2xsZWN0aW9uc1RvU2VuZCk7CiAgICAgfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUaHJl
YWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVGhyZWFkLmNw
cAppbmRleCBiMTQ3ZWNmYzBkNDRjN2Q1NmY2NzJmYTEzYjQxMTJmYjkzYzMxNGJjLi45MmE2MDg2
MTNkZTAxMmViMThmZmYxMzJjZjQ1MWVkZmEzODJjYzY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUaHJlYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RocmVhZC5jcHAKQEAgLTQ5LDcgKzQ5LDcgQEAg
dm9pZCBTY3JvbGxpbmdUaHJlYWQ6OmRpc3BhdGNoKEZ1bmN0aW9uPHZvaWQgKCk+JiYgZnVuY3Rp
b24pCiAgICAgc2Nyb2xsaW5nVGhyZWFkLmNyZWF0ZVRocmVhZElmTmVlZGVkKCk7CiAKICAgICB7
Ci0gICAgICAgIHN0ZDo6bG9ja19ndWFyZDxMb2NrPiBsb2NrKHNjcm9sbGluZ1RocmVhZC5tX2Z1
bmN0aW9uc011dGV4KTsKKyAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhzY3JvbGxpbmdU
aHJlYWQubV9mdW5jdGlvbnNNdXRleCk7CiAgICAgICAgIHNjcm9sbGluZ1RocmVhZC5tX2Z1bmN0
aW9ucy5hcHBlbmQoV1RGTW92ZShmdW5jdGlvbikpOwogICAgIH0KIApAQCAtOTYsNyArOTYsNyBA
QCB2b2lkIFNjcm9sbGluZ1RocmVhZDo6ZGlzcGF0Y2hGdW5jdGlvbnNGcm9tU2Nyb2xsaW5nVGhy
ZWFkKCkKICAgICBWZWN0b3I8RnVuY3Rpb248dm9pZCAoKT4+IGZ1bmN0aW9uczsKICAgICAKICAg
ICB7Ci0gICAgICAgIHN0ZDo6bG9ja19ndWFyZDxMb2NrPiBsb2NrKG1fZnVuY3Rpb25zTXV0ZXgp
OworICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fZnVuY3Rpb25zTXV0ZXgpOwogICAg
ICAgICBmdW5jdGlvbnMgPSBXVEZNb3ZlKG1fZnVuY3Rpb25zKTsKICAgICB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2dlbmVyaWMvU2Nyb2xsaW5nVGhyZWFk
R2VuZXJpYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9nZW5lcmljL1Njcm9s
bGluZ1RocmVhZEdlbmVyaWMuY3BwCmluZGV4IGY2OTllMGUwODE4NzI4NzNkNjMzOGVmYmQxZjgw
NTcyM2UyNTVjNGIuLjhhNGU3MWI1NmYwNGZkODA4ZmNmMDc1ZTQ1NjM5MGQ4Njc1YjE3MjIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2dlbmVyaWMvU2Nyb2xsaW5n
VGhyZWFkR2VuZXJpYy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvZ2Vu
ZXJpYy9TY3JvbGxpbmdUaHJlYWRHZW5lcmljLmNwcApAQCAtMzUsNyArMzUsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiB2b2lkIFNjcm9sbGluZ1RocmVhZDo6aW5pdGlhbGl6ZVJ1bkxvb3AoKQog
ewogICAgIHsKLSAgICAgICAgc3RkOjpsb2NrX2d1YXJkPExvY2s+IGxvY2sobV9pbml0aWFsaXpl
UnVuTG9vcE11dGV4KTsKKyAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX2luaXRpYWxp
emVSdW5Mb29wTXV0ZXgpOwogICAgICAgICBtX3J1bkxvb3AgPSAmUnVuTG9vcDo6Y3VycmVudCgp
OwogICAgICAgICBtX2luaXRpYWxpemVSdW5Mb29wQ29uZGl0aW9uVmFyaWFibGUubm90aWZ5QWxs
KCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFj
L1Njcm9sbGluZ1RocmVhZE1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21h
Yy9TY3JvbGxpbmdUaHJlYWRNYWMubW0KaW5kZXggNmQyY2RhMDk0MTA1ZjU2NDRkOGM0OTUzMTRi
ZmM0NzE2NTViMWI0My4uZjI1OWQ2NjdjZGRlYjRmNWNiYjAwZGIwOTM2ZDY1ZDI1NGRlMTBhNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1Ro
cmVhZE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xs
aW5nVGhyZWFkTWFjLm1tCkBAIC0zNiw3ICszNiw3IEBAIHZvaWQgU2Nyb2xsaW5nVGhyZWFkOjpp
bml0aWFsaXplUnVuTG9vcCgpCiB7CiAgICAgLy8gSW5pdGlhbGl6ZSB0aGUgcnVuIGxvb3AuCiAg
ICAgewotICAgICAgICBzdGQ6OmxvY2tfZ3VhcmQ8TG9jaz4gbG9jayhtX2luaXRpYWxpemVSdW5M
b29wTXV0ZXgpOworICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1faW5pdGlhbGl6ZVJ1
bkxvb3BNdXRleCk7CiAKICAgICAgICAgbV90aHJlYWRSdW5Mb29wID0gQ0ZSdW5Mb29wR2V0Q3Vy
cmVudCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZl
cmJDb252b2x2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2ZXJiQ29u
dm9sdmVyLmNwcAppbmRleCBhMTJmMTY1NGUwNWU4ZTY2MTlkMjdkM2MxMWU1YTEyYmU0YzgzZDNl
Li45YzNmMTA1ZmY3ZGRiYjRiYWQ0MDUwNWZjOWU1YzRmZTMzNjZjNzVlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZlcmJDb252b2x2ZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYkNvbnZvbHZlci5jcHAKQEAgLTEzNSw3
ICsxMzUsNyBAQCBSZXZlcmJDb252b2x2ZXI6On5SZXZlcmJDb252b2x2ZXIoKQogCiAgICAgICAg
IC8vIFdha2UgdXAgdGhyZWFkIHNvIGl0IGNhbiByZXR1cm4KICAgICAgICAgewotICAgICAgICAg
ICAgc3RkOjpsb2NrX2d1YXJkPExvY2s+IGxvY2sobV9iYWNrZ3JvdW5kVGhyZWFkTXV0ZXgpOwor
ICAgICAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX2JhY2tncm91bmRUaHJlYWRNdXRl
eCk7CiAgICAgICAgICAgICBtX21vcmVJbnB1dEJ1ZmZlcmVkID0gdHJ1ZTsKICAgICAgICAgICAg
IG1fYmFja2dyb3VuZFRocmVhZENvbmRpdGlvblZhcmlhYmxlLm5vdGlmeU9uZSgpOwogICAgICAg
ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakMubW0K
aW5kZXggNmIzYzkyMmU2YWViZTU5MjBhZTY1ZTU3YWYwNWVkZTRhZDAzNzQzZS4uZWQ4MGM0NzIw
MDdhNmM1ZjY0ZjY1YzY5OGM0OGVmZjdlNmFlOTA3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0F1ZGlvU291cmNlUHJvdmlkZXJBVkZP
YmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9BdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQy5tbQpAQCAtODgsNyArODgsNyBAQCBBdWRpb1Nv
dXJjZVByb3ZpZGVyQVZGT2JqQzo6fkF1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDKCkKIHsKICAg
ICBzZXRDbGllbnQobnVsbHB0cik7CiAgICAgaWYgKG1fdGFwU3RvcmFnZSkgewotICAgICAgICBz
dGQ6OmxvY2tfZ3VhcmQ8TG9jaz4gbG9jayhtX3RhcFN0b3JhZ2UtPm11dGV4KTsKKyAgICAgICAg
YXV0byBsb2NrZXIgPSBob2xkTG9jayhtX3RhcFN0b3JhZ2UtPm11dGV4KTsKICAgICAgICAgbV90
YXBTdG9yYWdlLT5fdGhpcyA9IG51bGxwdHI7CiAgICAgfQogCkBAIC0yNTQsNyArMjU0LDcgQEAg
dm9pZCBBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQzo6ZmluYWxpemVDYWxsYmFjayhNVEF1ZGlv
UHJvY2Vzc2luZ1RhcFJlZiB0YXApCiAgICAgVGFwU3RvcmFnZSogdGFwU3RvcmFnZSA9IHN0YXRp
Y19jYXN0PFRhcFN0b3JhZ2UqPihNVEF1ZGlvUHJvY2Vzc2luZ1RhcEdldFN0b3JhZ2UodGFwKSk7
CiAKICAgICB7Ci0gICAgICAgIHN0ZDo6bG9ja19ndWFyZDxMb2NrPiBsb2NrKHRhcFN0b3JhZ2Ut
Pm11dGV4KTsKKyAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayh0YXBTdG9yYWdlLT5tdXRl
eCk7CiAgICAgICAgIGlmICh0YXBTdG9yYWdlLT5fdGhpcykKICAgICAgICAgICAgIHRhcFN0b3Jh
Z2UtPl90aGlzLT5maW5hbGl6ZSgpOwogICAgIH0KQEAgLTI2Niw3ICsyNjYsNyBAQCB2b2lkIEF1
ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDOjpwcmVwYXJlQ2FsbGJhY2soTVRBdWRpb1Byb2Nlc3Np
bmdUYXBSZWYgdGFwLCBDTQogICAgIEFTU0VSVCh0YXApOwogICAgIFRhcFN0b3JhZ2UqIHRhcFN0
b3JhZ2UgPSBzdGF0aWNfY2FzdDxUYXBTdG9yYWdlKj4oTVRBdWRpb1Byb2Nlc3NpbmdUYXBHZXRT
dG9yYWdlKHRhcCkpOwogCi0gICAgc3RkOjpsb2NrX2d1YXJkPExvY2s+IGxvY2sodGFwU3RvcmFn
ZS0+bXV0ZXgpOworICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sodGFwU3RvcmFnZS0+bXV0ZXgp
OwogCiAgICAgaWYgKHRhcFN0b3JhZ2UtPl90aGlzKQogICAgICAgICB0YXBTdG9yYWdlLT5fdGhp
cy0+cHJlcGFyZShtYXhGcmFtZXMsIHByb2Nlc3NpbmdGb3JtYXQpOwpAQCAtMjc3LDcgKzI3Nyw3
IEBAIHZvaWQgQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakM6OnVucHJlcGFyZUNhbGxiYWNrKE1U
QXVkaW9Qcm9jZXNzaW5nVGFwUmVmIHRhcCkKICAgICBBU1NFUlQodGFwKTsKICAgICBUYXBTdG9y
YWdlKiB0YXBTdG9yYWdlID0gc3RhdGljX2Nhc3Q8VGFwU3RvcmFnZSo+KE1UQXVkaW9Qcm9jZXNz
aW5nVGFwR2V0U3RvcmFnZSh0YXApKTsKIAotICAgIHN0ZDo6bG9ja19ndWFyZDxMb2NrPiBsb2Nr
KHRhcFN0b3JhZ2UtPm11dGV4KTsKKyAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKHRhcFN0b3Jh
Z2UtPm11dGV4KTsKIAogICAgIGlmICh0YXBTdG9yYWdlLT5fdGhpcykKICAgICAgICAgdGFwU3Rv
cmFnZS0+X3RoaXMtPnVucHJlcGFyZSgpOwpAQCAtMjg4LDcgKzI4OCw3IEBAIHZvaWQgQXVkaW9T
b3VyY2VQcm92aWRlckFWRk9iakM6OnByb2Nlc3NDYWxsYmFjayhNVEF1ZGlvUHJvY2Vzc2luZ1Rh
cFJlZiB0YXAsIENNCiAgICAgQVNTRVJUKHRhcCk7CiAgICAgVGFwU3RvcmFnZSogdGFwU3RvcmFn
ZSA9IHN0YXRpY19jYXN0PFRhcFN0b3JhZ2UqPihNVEF1ZGlvUHJvY2Vzc2luZ1RhcEdldFN0b3Jh
Z2UodGFwKSk7CiAKLSAgICBzdGQ6OmxvY2tfZ3VhcmQ8TG9jaz4gbG9jayh0YXBTdG9yYWdlLT5t
dXRleCk7CisgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayh0YXBTdG9yYWdlLT5tdXRleCk7CiAK
ICAgICBpZiAodGFwU3RvcmFnZS0+X3RoaXMpCiAgICAgICAgIHRhcFN0b3JhZ2UtPl90aGlzLT5w
cm9jZXNzKHRhcCwgbnVtYmVyRnJhbWVzLCBmbGFncywgYnVmZmVyTGlzdEluT3V0LCBudW1iZXJG
cmFtZXNPdXQsIGZsYWdzT3V0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL0ZvbnRDYWNoZUNvcmVUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRDYWNoZUNvcmVUZXh0LmNwcAppbmRleCAwYzkxZTMz
MmE0MzJjNjRlYjE5OWZjMjE5MzUyYzc1MDkzOTVhZDc0Li40OWIwYjcxMzFmM2E3NmUwZGMzNzVk
YzU0MmY5MWZiNzBiNzI1ODZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jb2NvYS9Gb250Q2FjaGVDb3JlVGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udENhY2hlQ29yZVRleHQuY3BwCkBAIC05MzQsNyAr
OTM0LDcgQEAgY2xhc3MgRm9udERhdGFiYXNlIHsKICAgICB7CiAgICAgICAgIGF1dG8gZm9sZGVk
ID0gRm9udENhc2NhZGVEZXNjcmlwdGlvbjo6Zm9sZGVkRmFtaWx5TmFtZShmYW1pbHlOYW1lKTsK
ICAgICAgICAgewotICAgICAgICAgICAgc3RkOjpsb2NrX2d1YXJkPExvY2s+IGxvY2tlcihtX2Zh
bWlseU5hbWVUb0ZvbnREZXNjcmlwdG9yc0xvY2spOworICAgICAgICAgICAgYXV0byBsb2NrZXIg
PSBob2xkTG9jayhtX2ZhbWlseU5hbWVUb0ZvbnREZXNjcmlwdG9yc0xvY2spOwogICAgICAgICAg
ICAgYXV0byBpdCA9IG1fZmFtaWx5TmFtZVRvRm9udERlc2NyaXB0b3JzLmZpbmQoZm9sZGVkKTsK
ICAgICAgICAgICAgIGlmIChpdCAhPSBtX2ZhbWlseU5hbWVUb0ZvbnREZXNjcmlwdG9ycy5lbmQo
KSkKICAgICAgICAgICAgICAgICByZXR1cm4gaXQtPnZhbHVlOwpAQCAtOTYwLDcgKzk2MCw3IEBA
IGNsYXNzIEZvbnREYXRhYmFzZSB7CiAgICAgICAgICAgICByZXR1cm4gSW5zdGFsbGVkRm9udEZh
bWlseSgpOwogICAgICAgICB9KCk7CiAKLSAgICAgICAgc3RkOjpsb2NrX2d1YXJkPExvY2s+IGxv
Y2tlcihtX2ZhbWlseU5hbWVUb0ZvbnREZXNjcmlwdG9yc0xvY2spOworICAgICAgICBhdXRvIGxv
Y2tlciA9IGhvbGRMb2NrKG1fZmFtaWx5TmFtZVRvRm9udERlc2NyaXB0b3JzTG9jayk7CiAgICAg
ICAgIHJldHVybiBtX2ZhbWlseU5hbWVUb0ZvbnREZXNjcmlwdG9ycy5hZGQoZm9sZGVkLmlzb2xh
dGVkQ29weSgpLCBXVEZNb3ZlKGluc3RhbGxlZEZvbnRGYW1pbHkpKS5pdGVyYXRvci0+dmFsdWU7
CiAgICAgfQogCkBAIC05ODQsNyArOTg0LDcgQEAgY2xhc3MgRm9udERhdGFiYXNlIHsKICAgICB2
b2lkIGNsZWFyKCkKICAgICB7CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0ZDo6bG9ja19ndWFy
ZDxMb2NrPiBsb2NrZXIobV9mYW1pbHlOYW1lVG9Gb250RGVzY3JpcHRvcnNMb2NrKTsKKyAgICAg
ICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9mYW1pbHlOYW1lVG9Gb250RGVzY3JpcHRv
cnNMb2NrKTsKICAgICAgICAgICAgIG1fZmFtaWx5TmFtZVRvRm9udERlc2NyaXB0b3JzLmNsZWFy
KCk7CiAgICAgICAgIH0KICAgICAgICAgbV9wb3N0U2NyaXB0TmFtZVRvRm9udERlc2NyaXB0b3Jz
LmNsZWFyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dl
YkNvcmVUaHJlYWRSdW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dhay9XZWJD
b3JlVGhyZWFkUnVuLmNwcAppbmRleCA4ZWYxNjU3MTg4NjFiNzBkNzVhNjUyNDVkMjE0ZmUxM2Uz
YzgyZjY0Li5lZmE4NDY0NWJhMzk4YTRiZTFiY2RlMmRlYzNkMDEwOGE0Mzk3NTUzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dlYkNvcmVUaHJlYWRSdW4uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsvV2ViQ29yZVRocmVhZFJ1bi5j
cHAKQEAgLTUyLDcgKzUyLDcgQEAgY2xhc3MgV2ViVGhyZWFkQmxvY2tTdGF0ZSB7CiAKICAgICB2
b2lkIHNldENvbXBsZXRlZCgpCiAgICAgewotICAgICAgICBzdGQ6OmxvY2tfZ3VhcmQ8TG9jaz4g
bG9jayhtX3N0YXRlTXV0ZXgpOworICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fc3Rh
dGVNdXRleCk7CiAKICAgICAgICAgQVNTRVJUKCFtX2NvbXBsZXRlZCk7CiAgICAgICAgIG1fY29t
cGxldGVkID0gdHJ1ZTsKQEAgLTEyNCw3ICsxMjQsNyBAQCBzdGF0aWMgdm9pZCBIYW5kbGVSdW5T
b3VyY2Uodm9pZCAqaW5mbykKIAogICAgIFdlYlRocmVhZFJ1blF1ZXVlIHF1ZXVlQ29weTsKICAg
ICB7Ci0gICAgICAgIHN0ZDo6bG9ja19ndWFyZDxMb2NrPiBsb2NrKHJ1blF1ZXVlTXV0ZXgpOwor
ICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKHJ1blF1ZXVlTXV0ZXgpOwogICAgICAgICBx
dWV1ZUNvcHkgPSAqcnVuUXVldWU7CiAgICAgICAgIHJ1blF1ZXVlLT5jbGVhcigpOwogICAgIH0K
QEAgLTE0OCw3ICsxNDgsNyBAQCBzdGF0aWMgdm9pZCBfV2ViVGhyZWFkUnVuKHZvaWQgKF5ibG9j
aykodm9pZCksIGJvb2wgc3luY2hyb25vdXMpCiAgICAgICAgIHN0YXRlID0gbmV3IFdlYlRocmVh
ZEJsb2NrU3RhdGU7CiAKICAgICB7Ci0gICAgICAgIHN0ZDo6bG9ja19ndWFyZDxMb2NrPiBsb2Nr
KHJ1blF1ZXVlTXV0ZXgpOworICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKHJ1blF1ZXVl
TXV0ZXgpOwogICAgICAgICBydW5RdWV1ZS0+YXBwZW5kKFdlYlRocmVhZEJsb2NrKGJsb2NrLCBz
dGF0ZSkpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vbWFjL1dlYkF1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDLm1tIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1dlYkF1ZGlvU291cmNlUHJvdmlkZXJBVkZP
YmpDLm1tCmluZGV4IGFkODYyZWJmMDFkNmEzNGY0OWE1NmVkYTc3YmQ3MWM1YWM2NjUzY2EuLmFl
OTAyZDFiZDNhZTJkZjkzY2YxMjQ4MTYxY2IzNzIwZTk4Njk0OTQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9XZWJBdWRpb1NvdXJjZVByb3ZpZGVy
QVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMv
V2ViQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakMubW0KQEAgLTU5LDcgKzU5LDcgQEAgV2ViQXVk
aW9Tb3VyY2VQcm92aWRlckFWRk9iakM6OldlYkF1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDKE1l
ZGlhU3RyZWFtVHJhY2tQcmkKIAogV2ViQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakM6On5XZWJB
dWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQygpCiB7Ci0gICAgc3RkOjpsb2NrX2d1YXJkPExvY2s+
IGxvY2sobV9tdXRleCk7CisgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX211dGV4KTsKIAog
ICAgIGlmIChtX2Nvbm5lY3RlZCAmJiBtX2NhcHR1cmVTb3VyY2UpCiAgICAgICAgIG1fY2FwdHVy
ZVNvdXJjZS0+cmVtb3ZlT2JzZXJ2ZXIoKnRoaXMpOwpAQCAtMTIyLDcgKzEyMiw3IEBAIHZvaWQg
V2ViQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakM6OnNldENsaWVudChBdWRpb1NvdXJjZVByb3Zp
ZGVyQ2xpZW50KiBjbGllbnQpCiAKIHZvaWQgV2ViQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakM6
OnByZXBhcmUoY29uc3QgQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uJiBmb3JtYXQpCiB7Ci0g
ICAgc3RkOjpsb2NrX2d1YXJkPExvY2s+IGxvY2sobV9tdXRleCk7CisgICAgYXV0byBsb2NrZXIg
PSBob2xkTG9jayhtX211dGV4KTsKIAogICAgIExPRyhNZWRpYSwgIldlYkF1ZGlvU291cmNlUHJv
dmlkZXJBVkZPYmpDOjpwcmVwYXJlKCVwKSIsIHRoaXMpOwogCkBAIC0xNTMsNyArMTUzLDcgQEAg
dm9pZCBXZWJBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQzo6cHJlcGFyZShjb25zdCBBdWRpb1N0
cmVhbUJhc2ljRGVzY3JpcHRpb24mIGYKIAogdm9pZCBXZWJBdWRpb1NvdXJjZVByb3ZpZGVyQVZG
T2JqQzo6dW5wcmVwYXJlKCkKIHsKLSAgICBzdGQ6OmxvY2tfZ3VhcmQ8TG9jaz4gbG9jayhtX211
dGV4KTsKKyAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fbXV0ZXgpOwogCiAgICAgbV9pbnB1
dERlc2NyaXB0aW9uID0gV1RGOjpudWxsb3B0OwogICAgIG1fb3V0cHV0RGVzY3JpcHRpb24gPSBX
VEY6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2NmL0xvYWRlclJ1bkxvb3BDRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2NmL0xvYWRlclJ1bkxvb3BDRi5jcHAKaW5kZXggZjYzM2ZlZDAxMDVjYTg0MjhmMzJmNDNhZTQ2
Nzc2YjZlNDYwYjI5YS4uNWVhNDQ4ZmNlNzczZTAzOTRkNzRmZDdiMWY5YzM3NjM2OWNkOWY4MyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Mb2FkZXJSdW5M
b29wQ0YuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvTG9hZGVy
UnVuTG9vcENGLmNwcApAQCAtNTcsNyArNTcsNyBAQCBDRlJ1bkxvb3BSZWYgbG9hZGVyUnVuTG9v
cCgpCiAgICAgaWYgKCFsb2FkZXJSdW5Mb29wT2JqZWN0KSB7CiAgICAgICAgIFRocmVhZDo6Y3Jl
YXRlKCJXZWJDb3JlOiBDRk5ldHdvcmsgTG9hZGVyIiwgW10gewogICAgICAgICAgICAgewotICAg
ICAgICAgICAgICAgIHN0ZDo6bG9ja19ndWFyZDxMb2NrPiBsb2NrKGxvYWRlclJ1bkxvb3BNdXRl
eCk7CisgICAgICAgICAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhsb2FkZXJSdW5Mb29w
TXV0ZXgpOwogCiAgICAgICAgICAgICAgICAgbG9hZGVyUnVuTG9vcE9iamVjdCA9IENGUnVuTG9v
cEdldEN1cnJlbnQoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3Fs
L1NRTGl0ZURhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVE
YXRhYmFzZS5jcHAKaW5kZXggYzQxYTIzOTRiODIyYjI0MThjZGE0YThlMzJhNWJiN2U3ODk0ZGQ4
MC4uNTBkNzVmY2Q2ZTYxYTU3ZTg0OTRkOGIzZjE0NWYzNjk1MTFhYmYxMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2UuY3BwCkBAIC03Niw3ICs3Niw3
IEBAIHN0YXRpYyBMb2NrIGlzRGF0YWJhc2VPcGVuaW5nRm9yYmlkZGVuTXV0ZXg7CiAKIHZvaWQg
U1FMaXRlRGF0YWJhc2U6OnNldElzRGF0YWJhc2VPcGVuaW5nRm9yYmlkZGVuKGJvb2wgaXNGb3Ji
aWRkZW4pCiB7Ci0gICAgc3RkOjpsb2NrX2d1YXJkPExvY2s+IGxvY2soaXNEYXRhYmFzZU9wZW5p
bmdGb3JiaWRkZW5NdXRleCk7CisgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhpc0RhdGFiYXNl
T3BlbmluZ0ZvcmJpZGRlbk11dGV4KTsKICAgICBpc0RhdGFiYXNlT3BlbmluZ0ZvcmJpZGRlbiA9
IGlzRm9yYmlkZGVuOwogfQogCkBAIC05NCw3ICs5NCw3IEBAIGJvb2wgU1FMaXRlRGF0YWJhc2U6
Om9wZW4oY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgT3Blbk1vZGUgb3Blbk1vZGUpCiAgICAgY2xv
c2UoKTsKIAogICAgIHsKLSAgICAgICAgc3RkOjpsb2NrX2d1YXJkPExvY2s+IGxvY2soaXNEYXRh
YmFzZU9wZW5pbmdGb3JiaWRkZW5NdXRleCk7CisgICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExv
Y2soaXNEYXRhYmFzZU9wZW5pbmdGb3JiaWRkZW5NdXRleCk7CiAgICAgICAgIGlmIChpc0RhdGFi
YXNlT3BlbmluZ0ZvcmJpZGRlbikgewogICAgICAgICAgICAgbV9vcGVuRXJyb3JNZXNzYWdlID0g
Im9wZW5pbmcgZGF0YWJhc2UgaXMgZm9yYmlkZGVuIjsKICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFz
ZVRyYWNrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNl
VHJhY2tlci5jcHAKaW5kZXggNGFmMjkwNzU5YjdlODI1ZDQyMzAwMjRmNmRiOWUwYTE2YzY0MTYx
Yi4uNmEyOGUxOWJlOTQ2OTMwMzVhNTZiNjQwOTRlNDE1N2VjOTVhN2Q3MCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlVHJhY2tlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlVHJhY2tlci5jcHAK
QEAgLTQwLDEzICs0MCwxMyBAQCBzdGF0aWMgTG9jayB0cmFuc2FjdGlvbkluUHJvZ3Jlc3NNdXRl
eDsKIAogdm9pZCBzZXRDbGllbnQoU1FMaXRlRGF0YWJhc2VUcmFja2VyQ2xpZW50KiBjbGllbnQp
CiB7Ci0gICAgc3RkOjpsb2NrX2d1YXJkPExvY2s+IGxvY2sodHJhbnNhY3Rpb25JblByb2dyZXNz
TXV0ZXgpOworICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sodHJhbnNhY3Rpb25JblByb2dyZXNz
TXV0ZXgpOwogICAgIHNfc3RhdGljU1FMaXRlRGF0YWJhc2VUcmFja2VyQ2xpZW50ID0gY2xpZW50
OwogfQogCiB2b2lkIGluY3JlbWVudFRyYW5zYWN0aW9uSW5Qcm9ncmVzc0NvdW50KCkKIHsKLSAg
ICBzdGQ6OmxvY2tfZ3VhcmQ8TG9jaz4gbG9jayh0cmFuc2FjdGlvbkluUHJvZ3Jlc3NNdXRleCk7
CisgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayh0cmFuc2FjdGlvbkluUHJvZ3Jlc3NNdXRleCk7
CiAgICAgaWYgKCFzX3N0YXRpY1NRTGl0ZURhdGFiYXNlVHJhY2tlckNsaWVudCkKICAgICAgICAg
cmV0dXJuOwogCkBAIC01Nyw3ICs1Nyw3IEBAIHZvaWQgaW5jcmVtZW50VHJhbnNhY3Rpb25JblBy
b2dyZXNzQ291bnQoKQogCiB2b2lkIGRlY3JlbWVudFRyYW5zYWN0aW9uSW5Qcm9ncmVzc0NvdW50
KCkKIHsKLSAgICBzdGQ6OmxvY2tfZ3VhcmQ8TG9jaz4gbG9jayh0cmFuc2FjdGlvbkluUHJvZ3Jl
c3NNdXRleCk7CisgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayh0cmFuc2FjdGlvbkluUHJvZ3Jl
c3NNdXRleCk7CiAgICAgaWYgKCFzX3N0YXRpY1NRTGl0ZURhdGFiYXNlVHJhY2tlckNsaWVudCkK
ICAgICAgICAgcmV0dXJuOwogCkBAIC03MCw3ICs3MCw3IEBAIHZvaWQgZGVjcmVtZW50VHJhbnNh
Y3Rpb25JblByb2dyZXNzQ291bnQoKQogCiBib29sIGhhc1RyYW5zYWN0aW9uSW5Qcm9ncmVzcygp
CiB7Ci0gICAgc3RkOjpsb2NrX2d1YXJkPExvY2s+IGxvY2sodHJhbnNhY3Rpb25JblByb2dyZXNz
TXV0ZXgpOworICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sodHJhbnNhY3Rpb25JblByb2dyZXNz
TXV0ZXgpOwogICAgIHJldHVybiAhc19zdGF0aWNTUUxpdGVEYXRhYmFzZVRyYWNrZXJDbGllbnQg
fHwgc190cmFuc2FjdGlvbkluUHJvZ3Jlc3NDb3VudGVyID4gMDsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0RW5jb2RpbmdSZWdpc3RyeS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRFbmNvZGluZ1JlZ2lzdHJ5LmNwcAppbmRl
eCBjOWUxNTBlZTZlM2Y2YWU0YTBjNTIxM2Y1MWVhYzBmN2M2OTE1MjliLi45NjY5MjU5YmNmOTUy
YTY2NGU1MjcxNGVkODA2MDViZGI3MzY4NTM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS90ZXh0L1RleHRFbmNvZGluZ1JlZ2lzdHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS90ZXh0L1RleHRFbmNvZGluZ1JlZ2lzdHJ5LmNwcApAQCAtMTU1LDcgKzE1NSw3
IEBAIHN0YXRpYyB2b2lkIHBydW5lQmxhY2tsaXN0ZWRDb2RlY3MoKQogICAgIH0KIH0KIAotc3Rh
dGljIHZvaWQgYnVpbGRCYXNlVGV4dENvZGVjTWFwcyhjb25zdCBzdGQ6OmxvY2tfZ3VhcmQ8TG9j
az4mKQorc3RhdGljIHZvaWQgYnVpbGRCYXNlVGV4dENvZGVjTWFwcyhjb25zdCBBYnN0cmFjdExv
Y2tlciYpCiB7CiAgICAgQVNTRVJUKCF0ZXh0Q29kZWNNYXApOwogICAgIEFTU0VSVCghdGV4dEVu
Y29kaW5nTmFtZU1hcCk7CkBAIC0yNDMsNyArMjQzLDcgQEAgc3RhdGljIHZvaWQgZXh0ZW5kVGV4
dENvZGVjTWFwcygpCiAKIHN0ZDo6dW5pcXVlX3B0cjxUZXh0Q29kZWM+IG5ld1RleHRDb2RlYyhj
b25zdCBUZXh0RW5jb2RpbmcmIGVuY29kaW5nKQogewotICAgIHN0ZDo6bG9ja19ndWFyZDxMb2Nr
PiBsb2NrKGVuY29kaW5nUmVnaXN0cnlNdXRleCk7CisgICAgYXV0byBsb2NrZXIgPSBob2xkTG9j
ayhlbmNvZGluZ1JlZ2lzdHJ5TXV0ZXgpOwogCiAgICAgQVNTRVJUKHRleHRDb2RlY01hcCk7CiAg
ICAgYXV0byByZXN1bHQgPSB0ZXh0Q29kZWNNYXAtPmZpbmQoZW5jb2RpbmcubmFtZSgpKTsKQEAg
LTI1Niw3ICsyNTYsNyBAQCBjb25zdCBjaGFyKiBhdG9tQ2Fub25pY2FsVGV4dEVuY29kaW5nTmFt
ZShjb25zdCBjaGFyKiBuYW1lKQogICAgIGlmICghbmFtZSB8fCAhbmFtZVswXSkKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAKLSAgICBzdGQ6OmxvY2tfZ3VhcmQ8TG9jaz4gbG9jayhlbmNvZGlu
Z1JlZ2lzdHJ5TXV0ZXgpOworICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2soZW5jb2RpbmdSZWdp
c3RyeU11dGV4KTsKIAogICAgIGlmICghdGV4dEVuY29kaW5nTmFtZU1hcCkKICAgICAgICAgYnVp
bGRCYXNlVGV4dENvZGVjTWFwcyhsb2NrKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0b3JhZ2UuY3BwCmluZGV4IGFiN2Ew
MzVhM2MxMjIyMWFjYzYzN2VlMjc2MmI0YzRiNmFlNzkwNDIuLmNiOTc3ZjgxNDIxNGFmM2YxMTNk
Y2VkMDJiMGU5ZWRjZmIyMTg1NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdG9yYWdlLmNwcApAQCAtOTYyLDcgKzk2
Miw3IEBAIHZvaWQgU3RvcmFnZTo6dHJhdmVyc2UoY29uc3QgU3RyaW5nJiB0eXBlLCBPcHRpb25T
ZXQ8VHJhdmVyc2VGbGFnPiBmbGFncywgVHJhdmVyCiAgICAgICAgICAgICAgICAgICAgIHRyYXZl
cnNlT3BlcmF0aW9uLmhhbmRsZXIoJnJlY29yZCwgaW5mbyk7CiAgICAgICAgICAgICAgICAgfQog
Ci0gICAgICAgICAgICAgICAgc3RkOjpsb2NrX2d1YXJkPExvY2s+IGxvY2sodHJhdmVyc2VPcGVy
YXRpb24uYWN0aXZlTXV0ZXgpOworICAgICAgICAgICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExv
Y2sodHJhdmVyc2VPcGVyYXRpb24uYWN0aXZlTXV0ZXgpOwogICAgICAgICAgICAgICAgIC0tdHJh
dmVyc2VPcGVyYXRpb24uYWN0aXZlQ291bnQ7CiAgICAgICAgICAgICAgICAgdHJhdmVyc2VPcGVy
YXRpb24uYWN0aXZlQ29uZGl0aW9uLm5vdGlmeU9uZSgpOwogICAgICAgICAgICAgfSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uY3BwCmluZGV4IDNmZjQxOGFjNjFkNzlk
NjkzMzY3OGY3NmZmOTA2ZWI2MzFmMGYxMDQuLmQwYjY0MGQyMGJkM2MyMDEwZjFiZGY0MjQ1OGYz
NDg0NDc2YzFlNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Nvbm5l
Y3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uY3Bw
CkBAIC0xNDksNyArMTQ5LDcgQEAgYm9vbCBDb25uZWN0aW9uOjpTeW5jTWVzc2FnZVN0YXRlOjpw
cm9jZXNzSW5jb21pbmdNZXNzYWdlKENvbm5lY3Rpb24mIGNvbm5lY3Rpb24KIAogICAgIGJvb2wg
c2hvdWxkRGlzcGF0Y2g7CiAgICAgewotICAgICAgICBzdGQ6OmxvY2tfZ3VhcmQ8TG9jaz4gbG9j
ayhtX211dGV4KTsKKyAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX211dGV4KTsKICAg
ICAgICAgc2hvdWxkRGlzcGF0Y2ggPSBtX2RpZFNjaGVkdWxlRGlzcGF0Y2hNZXNzYWdlc1dvcmtT
ZXQuYWRkKCZjb25uZWN0aW9uKS5pc05ld0VudHJ5OwogICAgICAgICBtX21lc3NhZ2VzVG9EaXNw
YXRjaFdoaWxlV2FpdGluZ0ZvclN5bmNSZXBseS5hcHBlbmQoQ29ubmVjdGlvbkFuZEluY29taW5n
TWVzc2FnZSB7IGNvbm5lY3Rpb24sIFdURk1vdmUobWVzc2FnZSkgfSk7CiAgICAgfQpAQCAtMTcx
LDcgKzE3MSw3IEBAIHZvaWQgQ29ubmVjdGlvbjo6U3luY01lc3NhZ2VTdGF0ZTo6ZGlzcGF0Y2hN
ZXNzYWdlcygpCiAKICAgICBWZWN0b3I8Q29ubmVjdGlvbkFuZEluY29taW5nTWVzc2FnZT4gbWVz
c2FnZXNUb0Rpc3BhdGNoV2hpbGVXYWl0aW5nRm9yU3luY1JlcGx5OwogICAgIHsKLSAgICAgICAg
c3RkOjpsb2NrX2d1YXJkPExvY2s+IGxvY2sobV9tdXRleCk7CisgICAgICAgIGF1dG8gbG9ja2Vy
ID0gaG9sZExvY2sobV9tdXRleCk7CiAgICAgICAgIG1fbWVzc2FnZXNUb0Rpc3BhdGNoV2hpbGVX
YWl0aW5nRm9yU3luY1JlcGx5LnN3YXAobWVzc2FnZXNUb0Rpc3BhdGNoV2hpbGVXYWl0aW5nRm9y
U3luY1JlcGx5KTsKICAgICB9CiAKQEAgLTE4NSw3ICsxODUsNyBAQCB2b2lkIENvbm5lY3Rpb246
OlN5bmNNZXNzYWdlU3RhdGU6OmRpc3BhdGNoTWVzc2FnZXNBbmRSZXNldERpZFNjaGVkdWxlRGlz
cGF0Y2hNZQogCiAgICAgVmVjdG9yPENvbm5lY3Rpb25BbmRJbmNvbWluZ01lc3NhZ2U+IG1lc3Nh
Z2VzVG9EaXNwYXRjaFdoaWxlV2FpdGluZ0ZvclN5bmNSZXBseTsKICAgICB7Ci0gICAgICAgIHN0
ZDo6bG9ja19ndWFyZDxMb2NrPiBsb2NrKG1fbXV0ZXgpOworICAgICAgICBhdXRvIGxvY2tlciA9
IGhvbGRMb2NrKG1fbXV0ZXgpOwogICAgICAgICBBU1NFUlQobV9kaWRTY2hlZHVsZURpc3BhdGNo
TWVzc2FnZXNXb3JrU2V0LmNvbnRhaW5zKCZjb25uZWN0aW9uKSk7CiAgICAgICAgIG1fZGlkU2No
ZWR1bGVEaXNwYXRjaE1lc3NhZ2VzV29ya1NldC5yZW1vdmUoJmNvbm5lY3Rpb24pOwogICAgICAg
ICBtX21lc3NhZ2VzVG9EaXNwYXRjaFdoaWxlV2FpdGluZ0ZvclN5bmNSZXBseS5zd2FwKG1lc3Nh
Z2VzVG9EaXNwYXRjaFdoaWxlV2FpdGluZ0ZvclN5bmNSZXBseSk7CkBAIC0yMDAsNyArMjAwLDcg
QEAgdm9pZCBDb25uZWN0aW9uOjpTeW5jTWVzc2FnZVN0YXRlOjpkaXNwYXRjaE1lc3NhZ2VzQW5k
UmVzZXREaWRTY2hlZHVsZURpc3BhdGNoTWUKICAgICB9CiAKICAgICBpZiAoIW1lc3NhZ2VzVG9Q
dXRCYWNrLmlzRW1wdHkoKSkgewotICAgICAgICBzdGQ6OmxvY2tfZ3VhcmQ8TG9jaz4gbG9jayht
X211dGV4KTsKKyAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX211dGV4KTsKICAgICAg
ICAgbWVzc2FnZXNUb1B1dEJhY2suYXBwZW5kVmVjdG9yKFdURk1vdmUobV9tZXNzYWdlc1RvRGlz
cGF0Y2hXaGlsZVdhaXRpbmdGb3JTeW5jUmVwbHkpKTsKICAgICAgICAgbV9tZXNzYWdlc1RvRGlz
cGF0Y2hXaGlsZVdhaXRpbmdGb3JTeW5jUmVwbHkgPSBXVEZNb3ZlKG1lc3NhZ2VzVG9QdXRCYWNr
KTsKICAgICB9CkBAIC0zMTksNyArMzE5LDcgQEAgdm9pZCBDb25uZWN0aW9uOjphZGRXb3JrUXVl
dWVNZXNzYWdlUmVjZWl2ZXIoU3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUKIHsK
ICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogCi0gICAgc3RkOjpsb2NrX2d1YXJkPExv
Y2s+IGxvY2sobV93b3JrUXVldWVNZXNzYWdlUmVjZWl2ZXJzTXV0ZXgpOworICAgIGF1dG8gbG9j
a2VyID0gaG9sZExvY2sobV93b3JrUXVldWVNZXNzYWdlUmVjZWl2ZXJzTXV0ZXgpOwogICAgIEFT
U0VSVCghbV93b3JrUXVldWVNZXNzYWdlUmVjZWl2ZXJzLmNvbnRhaW5zKG1lc3NhZ2VSZWNlaXZl
ck5hbWUpKTsKIAogICAgIG1fd29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVycy5hZGQobWVzc2FnZVJl
Y2VpdmVyTmFtZSwgc3RkOjptYWtlX3BhaXIoJndvcmtRdWV1ZSwgd29ya1F1ZXVlTWVzc2FnZVJl
Y2VpdmVyKSk7CkBAIC0zMjksNyArMzI5LDcgQEAgdm9pZCBDb25uZWN0aW9uOjpyZW1vdmVXb3Jr
UXVldWVNZXNzYWdlUmVjZWl2ZXIoU3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck4KIHsK
ICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogCi0gICAgc3RkOjpsb2NrX2d1YXJkPExv
Y2s+IGxvY2sobV93b3JrUXVldWVNZXNzYWdlUmVjZWl2ZXJzTXV0ZXgpOworICAgIGF1dG8gbG9j
a2VyID0gaG9sZExvY2sobV93b3JrUXVldWVNZXNzYWdlUmVjZWl2ZXJzTXV0ZXgpOwogICAgIEFT
U0VSVChtX3dvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlcnMuY29udGFpbnMobWVzc2FnZVJlY2VpdmVy
TmFtZSkpOwogICAgIG1fd29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVycy5yZW1vdmUobWVzc2FnZVJl
Y2VpdmVyTmFtZSk7CiB9CkBAIC0zNjUsNyArMzY1LDcgQEAgdm9pZCBDb25uZWN0aW9uOjphZGRU
aHJlYWRNZXNzYWdlUmVjZWl2ZXIoU3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUs
IFQKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogCi0gICAgc3RkOjpsb2NrX2d1
YXJkPExvY2s+IGxvY2sobV90aHJlYWRNZXNzYWdlUmVjZWl2ZXJzTG9jayk7CisgICAgYXV0byBs
b2NrZXIgPSBob2xkTG9jayhtX3RocmVhZE1lc3NhZ2VSZWNlaXZlcnNMb2NrKTsKICAgICBBU1NF
UlQoIW1fdGhyZWFkTWVzc2FnZVJlY2VpdmVycy5jb250YWlucyhtZXNzYWdlUmVjZWl2ZXJOYW1l
KSk7CiAKICAgICBtX3RocmVhZE1lc3NhZ2VSZWNlaXZlcnMuYWRkKG1lc3NhZ2VSZWNlaXZlck5h
bWUsIHRocmVhZE1lc3NhZ2VSZWNlaXZlcik7CkBAIC0zNzUsNyArMzc1LDcgQEAgdm9pZCBDb25u
ZWN0aW9uOjpyZW1vdmVUaHJlYWRNZXNzYWdlUmVjZWl2ZXIoU3RyaW5nUmVmZXJlbmNlIG1lc3Nh
Z2VSZWNlaXZlck5hbWUKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogCi0gICAg
c3RkOjpsb2NrX2d1YXJkPExvY2s+IGxvY2sobV90aHJlYWRNZXNzYWdlUmVjZWl2ZXJzTG9jayk7
CisgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX3RocmVhZE1lc3NhZ2VSZWNlaXZlcnNMb2Nr
KTsKICAgICBBU1NFUlQobV90aHJlYWRNZXNzYWdlUmVjZWl2ZXJzLmNvbnRhaW5zKG1lc3NhZ2VS
ZWNlaXZlck5hbWUpKTsKIAogICAgIG1fdGhyZWFkTWVzc2FnZVJlY2VpdmVycy5yZW1vdmUobWVz
c2FnZVJlY2VpdmVyTmFtZSk7CkBAIC00NjksNyArNDY5LDcgQEAgYm9vbCBDb25uZWN0aW9uOjpz
ZW5kTWVzc2FnZShzdGQ6OnVuaXF1ZV9wdHI8RW5jb2Rlcj4gZW5jb2RlciwgT3B0aW9uU2V0PFNl
bmRPcHQKICAgICAgICAgZW5jb2Rlci0+c2V0U2hvdWxkRGlzcGF0Y2hNZXNzYWdlV2hlbldhaXRp
bmdGb3JTeW5jUmVwbHkoU2hvdWxkRGlzcGF0Y2hXaGVuV2FpdGluZ0ZvclN5bmNSZXBseTo6WWVz
RHVyaW5nVW5ib3VuZGVkSVBDKTsKIAogICAgIHsKLSAgICAgICAgc3RkOjpsb2NrX2d1YXJkPExv
Y2s+IGxvY2sobV9vdXRnb2luZ01lc3NhZ2VzTXV0ZXgpOworICAgICAgICBhdXRvIGxvY2tlciA9
IGhvbGRMb2NrKG1fb3V0Z29pbmdNZXNzYWdlc011dGV4KTsKICAgICAgICAgbV9vdXRnb2luZ01l
c3NhZ2VzLmFwcGVuZChXVEZNb3ZlKGVuY29kZXIpKTsKICAgICB9CiAgICAgCkBAIC01MDEsNyAr
NTAxLDcgQEAgc3RkOjp1bmlxdWVfcHRyPERlY29kZXI+IENvbm5lY3Rpb246OndhaXRGb3JNZXNz
YWdlKFN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWkKIAogICAgIC8vIEZpcnN0LCBjaGVjayBp
ZiB0aGlzIG1lc3NhZ2UgaXMgYWxyZWFkeSBpbiB0aGUgaW5jb21pbmcgbWVzc2FnZXMgcXVldWUu
CiAgICAgewotICAgICAgICBzdGQ6OmxvY2tfZ3VhcmQ8TG9jaz4gbG9jayhtX2luY29taW5nTWVz
c2FnZXNNdXRleCk7CisgICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9pbmNvbWluZ01l
c3NhZ2VzTXV0ZXgpOwogCiAgICAgICAgIGZvciAoYXV0byBpdCA9IG1faW5jb21pbmdNZXNzYWdl
cy5iZWdpbigpLCBlbmQgPSBtX2luY29taW5nTWVzc2FnZXMuZW5kKCk7IGl0ICE9IGVuZDsgKytp
dCkgewogICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPERlY29kZXI+JiBtZXNzYWdlID0gKml0
OwpAQCAtNTIxLDcgKzUyMSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPiBDb25uZWN0aW9u
Ojp3YWl0Rm9yTWVzc2FnZShTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpCiAgICAgLy8gRG9u
J3QgZXZlbiBzdGFydCB3YWl0aW5nIGlmIHdlIGhhdmUgSW50ZXJydXB0V2FpdGluZ0lmU3luY01l
c3NhZ2VBcnJpdmVzIGFuZCB0aGVyZSdzIGEgc3luYyBtZXNzYWdlIGFscmVhZHkgaW4gdGhlIHF1
ZXVlLgogICAgIGlmIChoYXNJbmNvbWluZ1N5bmNocm9ub3VzTWVzc2FnZSAmJiB3YWl0Rm9yT3B0
aW9ucy5jb250YWlucyhXYWl0Rm9yT3B0aW9uOjpJbnRlcnJ1cHRXYWl0aW5nSWZTeW5jTWVzc2Fn
ZUFycml2ZXMpKSB7CiAjaWYgQVNTRVJUX0VOQUJMRUQKLSAgICAgICAgc3RkOjpsb2NrX2d1YXJk
PExvY2s+IGxvY2sobV93YWl0Rm9yTWVzc2FnZU11dGV4KTsKKyAgICAgICAgYXV0byBsb2NrZXIg
PSBob2xkTG9jayhtX3dhaXRGb3JNZXNzYWdlTXV0ZXgpOwogICAgICAgICAvLyBXZSBkb24ndCBz
dXBwb3J0IGhhdmluZyBtdWx0aXBsZSBjbGllbnRzIHdhaXRpbmcgZm9yIG1lc3NhZ2VzLgogICAg
ICAgICBBU1NFUlQoIW1fd2FpdGluZ0Zvck1lc3NhZ2UpOwogI2VuZGlmCkBAIC01MzEsNyArNTMx
LDcgQEAgc3RkOjp1bmlxdWVfcHRyPERlY29kZXI+IENvbm5lY3Rpb246OndhaXRGb3JNZXNzYWdl
KFN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWkKICAgICBXYWl0Rm9yTWVzc2FnZVN0YXRlIHdh
aXRpbmdGb3JNZXNzYWdlKG1lc3NhZ2VSZWNlaXZlck5hbWUsIG1lc3NhZ2VOYW1lLCBkZXN0aW5h
dGlvbklELCB3YWl0Rm9yT3B0aW9ucyk7CiAKICAgICB7Ci0gICAgICAgIHN0ZDo6bG9ja19ndWFy
ZDxMb2NrPiBsb2NrKG1fd2FpdEZvck1lc3NhZ2VNdXRleCk7CisgICAgICAgIGF1dG8gbG9ja2Vy
ID0gaG9sZExvY2sobV93YWl0Rm9yTWVzc2FnZU11dGV4KTsKIAogICAgICAgICAvLyBXZSBkb24n
dCBzdXBwb3J0IGhhdmluZyBtdWx0aXBsZSBjbGllbnRzIHdhaXRpbmcgZm9yIG1lc3NhZ2VzLgog
ICAgICAgICBBU1NFUlQoIW1fd2FpdGluZ0Zvck1lc3NhZ2UpOwpAQCAtNzQ2LDcgKzc0Niw3IEBA
IHZvaWQgQ29ubmVjdGlvbjo6cHJvY2Vzc0luY29taW5nTWVzc2FnZShzdGQ6OnVuaXF1ZV9wdHI8
RGVjb2Rlcj4gbWVzc2FnZSkKICNlbmRpZgogCiAgICAgaWYgKG1lc3NhZ2UtPmlzU3luY01lc3Nh
Z2UoKSkgewotICAgICAgICBzdGQ6OmxvY2tfZ3VhcmQ8TG9jaz4gbG9jayhtX2luY29taW5nU3lu
Y01lc3NhZ2VDYWxsYmFja011dGV4KTsKKyAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayht
X2luY29taW5nU3luY01lc3NhZ2VDYWxsYmFja011dGV4KTsKIAogICAgICAgICBmb3IgKGF1dG8m
IGNhbGxiYWNrIDogbV9pbmNvbWluZ1N5bmNNZXNzYWdlQ2FsbGJhY2tzLnZhbHVlcygpKQogICAg
ICAgICAgICAgbV9pbmNvbWluZ1N5bmNNZXNzYWdlQ2FsbGJhY2tRdWV1ZS0+ZGlzcGF0Y2goV1RG
TW92ZShjYWxsYmFjaykpOwpAQCAtNzU2LDcgKzc1Niw3IEBAIHZvaWQgQ29ubmVjdGlvbjo6cHJv
Y2Vzc0luY29taW5nTWVzc2FnZShzdGQ6OnVuaXF1ZV9wdHI8RGVjb2Rlcj4gbWVzc2FnZSkKIAog
ICAgIC8vIENoZWNrIGlmIHdlJ3JlIHdhaXRpbmcgZm9yIHRoaXMgbWVzc2FnZSwgb3IgaWYgd2Ug
bmVlZCB0byBpbnRlcnJ1cHQgd2FpdGluZyBkdWUgdG8gYW4gaW5jb21pbmcgc3luYyBtZXNzYWdl
LgogICAgIHsKLSAgICAgICAgc3RkOjpsb2NrX2d1YXJkPExvY2s+IGxvY2sobV93YWl0Rm9yTWVz
c2FnZU11dGV4KTsKKyAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX3dhaXRGb3JNZXNz
YWdlTXV0ZXgpOwogCiAgICAgICAgIGlmIChtX3dhaXRpbmdGb3JNZXNzYWdlICYmICFtX3dhaXRp
bmdGb3JNZXNzYWdlLT5kZWNvZGVyKSB7CiAgICAgICAgICAgICBpZiAobV93YWl0aW5nRm9yTWVz
c2FnZS0+bWVzc2FnZVJlY2VpdmVyTmFtZSA9PSBtZXNzYWdlLT5tZXNzYWdlUmVjZWl2ZXJOYW1l
KCkgJiYgbV93YWl0aW5nRm9yTWVzc2FnZS0+bWVzc2FnZU5hbWUgPT0gbWVzc2FnZS0+bWVzc2Fn
ZU5hbWUoKSAmJiBtX3dhaXRpbmdGb3JNZXNzYWdlLT5kZXN0aW5hdGlvbklEID09IG1lc3NhZ2Ut
PmRlc3RpbmF0aW9uSUQoKSkgewpAQCAtNzg2LDcgKzc4Niw3IEBAIHZvaWQgQ29ubmVjdGlvbjo6
cHJvY2Vzc0luY29taW5nTWVzc2FnZShzdGQ6OnVuaXF1ZV9wdHI8RGVjb2Rlcj4gbWVzc2FnZSkK
IAogdWludDY0X3QgQ29ubmVjdGlvbjo6aW5zdGFsbEluY29taW5nU3luY01lc3NhZ2VDYWxsYmFj
ayhXVEY6OkZ1bmN0aW9uPHZvaWQgKCk+JiYgY2FsbGJhY2spCiB7Ci0gICAgc3RkOjpsb2NrX2d1
YXJkPExvY2s+IGxvY2sobV9pbmNvbWluZ1N5bmNNZXNzYWdlQ2FsbGJhY2tNdXRleCk7CisgICAg
YXV0byBsb2NrZXIgPSBob2xkTG9jayhtX2luY29taW5nU3luY01lc3NhZ2VDYWxsYmFja011dGV4
KTsKIAogICAgIG1fbmV4dEluY29taW5nU3luY01lc3NhZ2VDYWxsYmFja0lEKys7CiAKQEAgLTgw
MCwxMyArODAwLDEzIEBAIHVpbnQ2NF90IENvbm5lY3Rpb246Omluc3RhbGxJbmNvbWluZ1N5bmNN
ZXNzYWdlQ2FsbGJhY2soV1RGOjpGdW5jdGlvbjx2b2lkICgpPiYmCiAKIHZvaWQgQ29ubmVjdGlv
bjo6dW5pbnN0YWxsSW5jb21pbmdTeW5jTWVzc2FnZUNhbGxiYWNrKHVpbnQ2NF90IGNhbGxiYWNr
SUQpCiB7Ci0gICAgc3RkOjpsb2NrX2d1YXJkPExvY2s+IGxvY2sobV9pbmNvbWluZ1N5bmNNZXNz
YWdlQ2FsbGJhY2tNdXRleCk7CisgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX2luY29taW5n
U3luY01lc3NhZ2VDYWxsYmFja011dGV4KTsKICAgICBtX2luY29taW5nU3luY01lc3NhZ2VDYWxs
YmFja3MucmVtb3ZlKGNhbGxiYWNrSUQpOwogfQogCiBib29sIENvbm5lY3Rpb246Omhhc0luY29t
aW5nU3luY01lc3NhZ2UoKQogewotICAgIHN0ZDo6bG9ja19ndWFyZDxMb2NrPiBsb2NrKG1faW5j
b21pbmdNZXNzYWdlc011dGV4KTsKKyAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1faW5jb21p
bmdNZXNzYWdlc011dGV4KTsKIAogICAgIGZvciAoYXV0byYgbWVzc2FnZSA6IG1faW5jb21pbmdN
ZXNzYWdlcykgewogICAgICAgICBpZiAobWVzc2FnZS0+aXNTeW5jTWVzc2FnZSgpKQpAQCAtODQ3
LDcgKzg0Nyw3IEBAIHZvaWQgQ29ubmVjdGlvbjo6Y29ubmVjdGlvbkRpZENsb3NlKCkKICAgICB9
CiAKICAgICB7Ci0gICAgICAgIHN0ZDo6bG9ja19ndWFyZDxMb2NrPiBsb2NrKG1fd2FpdEZvck1l
c3NhZ2VNdXRleCk7CisgICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV93YWl0Rm9yTWVz
c2FnZU11dGV4KTsKIAogICAgICAgICBBU1NFUlQobV9zaG91bGRXYWl0Rm9yTWVzc2FnZXMpOwog
ICAgICAgICBtX3Nob3VsZFdhaXRGb3JNZXNzYWdlcyA9IGZhbHNlOwpAQCAtODkwLDcgKzg5MCw3
IEBAIHZvaWQgQ29ubmVjdGlvbjo6c2VuZE91dGdvaW5nTWVzc2FnZXMoKQogICAgICAgICBzdGQ6
OnVuaXF1ZV9wdHI8RW5jb2Rlcj4gbWVzc2FnZTsKIAogICAgICAgICB7Ci0gICAgICAgICAgICBz
dGQ6OmxvY2tfZ3VhcmQ8TG9jaz4gbG9jayhtX291dGdvaW5nTWVzc2FnZXNNdXRleCk7CisgICAg
ICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fb3V0Z29pbmdNZXNzYWdlc011dGV4KTsK
ICAgICAgICAgICAgIGlmIChtX291dGdvaW5nTWVzc2FnZXMuaXNFbXB0eSgpKQogICAgICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICAgICAgbWVzc2FnZSA9IG1fb3V0Z29pbmdNZXNzYWdlcy50
YWtlRmlyc3QoKTsKQEAgLTk1Nyw3ICs5NTcsNyBAQCB2b2lkIENvbm5lY3Rpb246OmRpZEZhaWxU
b1NlbmRTeW5jTWVzc2FnZSgpCiB2b2lkIENvbm5lY3Rpb246OmVucXVldWVJbmNvbWluZ01lc3Nh
Z2Uoc3RkOjp1bmlxdWVfcHRyPERlY29kZXI+IGluY29taW5nTWVzc2FnZSkKIHsKICAgICB7Ci0g
ICAgICAgIHN0ZDo6bG9ja19ndWFyZDxMb2NrPiBsb2NrKG1faW5jb21pbmdNZXNzYWdlc011dGV4
KTsKKyAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX2luY29taW5nTWVzc2FnZXNNdXRl
eCk7CiAKICNpZiBQTEFURk9STShDT0NPQSkKICAgICAgICAgaWYgKG1fd2FzS2lsbGVkKQpAQCAt
MTAxMCw3ICsxMDEwLDcgQEAgdm9pZCBDb25uZWN0aW9uOjpkaXNwYXRjaE1lc3NhZ2UoRGVjb2Rl
ciYgZGVjb2RlcikKIAogYm9vbCBDb25uZWN0aW9uOjpkaXNwYXRjaE1lc3NhZ2VUb1dvcmtRdWV1
ZVJlY2VpdmVyKHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPiYgbWVzc2FnZSkKIHsKLSAgICBzdGQ6
OmxvY2tfZ3VhcmQ8TG9jaz4gbG9jayhtX3dvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlcnNNdXRleCk7
CisgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX3dvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlcnNN
dXRleCk7CiAgICAgYXV0byBpdCA9IG1fd29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVycy5maW5kKG1l
c3NhZ2UtPm1lc3NhZ2VSZWNlaXZlck5hbWUoKSk7CiAgICAgaWYgKGl0ICE9IG1fd29ya1F1ZXVl
TWVzc2FnZVJlY2VpdmVycy5lbmQoKSkgewogICAgICAgICBpdC0+dmFsdWUuZmlyc3QtPmRpc3Bh
dGNoKFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHdvcmtRdWV1ZU1lc3NhZ2VSZWNl
aXZlciA9IGl0LT52YWx1ZS5zZWNvbmQsIGRlY29kZXIgPSBXVEZNb3ZlKG1lc3NhZ2UpXSgpIG11
dGFibGUgewpAQCAtMTAyNSw3ICsxMDI1LDcgQEAgYm9vbCBDb25uZWN0aW9uOjpkaXNwYXRjaE1l
c3NhZ2VUb1RocmVhZFJlY2VpdmVyKHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPiYgbWVzc2EKIHsK
ICAgICBSZWZQdHI8VGhyZWFkTWVzc2FnZVJlY2VpdmVyPiBwcm90ZWN0ZWRUaHJlYWRNZXNzYWdl
UmVjZWl2ZXI7CiAgICAgewotICAgICAgICBzdGQ6OmxvY2tfZ3VhcmQ8TG9jaz4gbG9jayhtX3Ro
cmVhZE1lc3NhZ2VSZWNlaXZlcnNMb2NrKTsKKyAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9j
ayhtX3RocmVhZE1lc3NhZ2VSZWNlaXZlcnNMb2NrKTsKICAgICAgICAgcHJvdGVjdGVkVGhyZWFk
TWVzc2FnZVJlY2VpdmVyID0gbV90aHJlYWRNZXNzYWdlUmVjZWl2ZXJzLmdldChtZXNzYWdlLT5t
ZXNzYWdlUmVjZWl2ZXJOYW1lKCkpOwogICAgIH0KIApAQCAtMTEzNiw3ICsxMTM2LDcgQEAgdm9p
ZCBDb25uZWN0aW9uOjpkaXNwYXRjaE9uZUluY29taW5nTWVzc2FnZSgpCiB7CiAgICAgc3RkOjp1
bmlxdWVfcHRyPERlY29kZXI+IG1lc3NhZ2U7CiAgICAgewotICAgICAgICBzdGQ6OmxvY2tfZ3Vh
cmQ8TG9jaz4gbG9jayhtX2luY29taW5nTWVzc2FnZXNNdXRleCk7CisgICAgICAgIGF1dG8gbG9j
a2VyID0gaG9sZExvY2sobV9pbmNvbWluZ01lc3NhZ2VzTXV0ZXgpOwogICAgICAgICBpZiAobV9p
bmNvbWluZ01lc3NhZ2VzLmlzRW1wdHkoKSkKICAgICAgICAgICAgIHJldHVybjsKIApAQCAtMTE1
NCw3ICsxMTU0LDcgQEAgdm9pZCBDb25uZWN0aW9uOjpkaXNwYXRjaEluY29taW5nTWVzc2FnZXMo
KQogCiAgICAgc2l6ZV90IG1lc3NhZ2VzVG9Qcm9jZXNzID0gMDsKICAgICB7Ci0gICAgICAgIHN0
ZDo6bG9ja19ndWFyZDxMb2NrPiBsb2NrKG1faW5jb21pbmdNZXNzYWdlc011dGV4KTsKKyAgICAg
ICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX2luY29taW5nTWVzc2FnZXNNdXRleCk7CiAgICAg
ICAgIGlmIChtX2luY29taW5nTWVzc2FnZXMuaXNFbXB0eSgpKQogICAgICAgICAgICAgcmV0dXJu
OwogCkBAIC0xMTgyLDcgKzExODIsNyBAQCB2b2lkIENvbm5lY3Rpb246OmRpc3BhdGNoSW5jb21p
bmdNZXNzYWdlcygpCiAKICAgICBmb3IgKHNpemVfdCBpID0gMTsgaSA8IG1lc3NhZ2VzVG9Qcm9j
ZXNzOyArK2kpIHsKICAgICAgICAgewotICAgICAgICAgICAgc3RkOjpsb2NrX2d1YXJkPExvY2s+
IGxvY2sobV9pbmNvbWluZ01lc3NhZ2VzTXV0ZXgpOworICAgICAgICAgICAgYXV0byBsb2NrZXIg
PSBob2xkTG9jayhtX2luY29taW5nTWVzc2FnZXNNdXRleCk7CiAgICAgICAgICAgICBpZiAobV9p
bmNvbWluZ01lc3NhZ2VzLmlzRW1wdHkoKSkKICAgICAgICAgICAgICAgICByZXR1cm47CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Jsb2NraW5nUmVzcG9uc2VNYXAuaCBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL0Jsb2NraW5nUmVzcG9uc2VNYXAuaAppbmRleCA3MjhjODQ3N2Jm
OTQ4NDc5NzRlMzlmZTIxZDk5OWVlZTk2MzkwNzRjLi41MmY3OGZjMzYyMTY0NzRhOWY1ZDZkMzhh
N2ZiODcxZjc0MTUyOTY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9CbG9ja2lu
Z1Jlc3BvbnNlTWFwLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQmxvY2tpbmdSZXNwb25z
ZU1hcC5oCkBAIC01Nyw3ICs1Nyw3IEBAIFdURl9NQUtFX05PTkNPUFlBQkxFKEJsb2NraW5nUmVz
cG9uc2VNYXApOwogCiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UodWludDY0X3QgcmVxdWVz
dElELCBzdGQ6OnVuaXF1ZV9wdHI8VD4gcmVzcG9uc2UpCiAgICAgewotICAgICAgICBzdGQ6Omxv
Y2tfZ3VhcmQ8TG9jaz4gbG9jayhtX211dGV4KTsKKyAgICAgICAgYXV0byBsb2NrZXIgPSBob2xk
TG9jayhtX211dGV4KTsKICAgICAgICAgQVNTRVJUKCFtX3Jlc3BvbnNlcy5jb250YWlucyhyZXF1
ZXN0SUQpKTsKIAogICAgICAgICBtX3Jlc3BvbnNlcy5zZXQocmVxdWVzdElELCBXVEZNb3ZlKHJl
c3BvbnNlKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV0tQcmlu
dGluZ1ZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV0tQcmludGluZ1ZpZXcu
bW0KaW5kZXggZTM0MzZmMzFkNTBmMDkwYzJiM2I4YjcwOGNjODkyNmZkZDNjZWYxZC4uMDFlNDMy
MTYwZGYyOWMxM2IyNGUzMGFkYWZlMWQzZmY1YTQ5MWM2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvbWFjL1dLUHJpbnRpbmdWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL21hYy9XS1ByaW50aW5nVmlldy5tbQpAQCAtMjUwLDcgKzI1MCw3IEBAIC0gKHZv
aWQpX3ByZXBhcmVQREZEYXRhRm9yUHJpbnRpbmdPblNlY29uZGFyeVRocmVhZAogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCi0gICAgc3RkOjpsb2NrX2d1YXJkPExvY2s+IGxvY2soX3ByaW50aW5n
Q2FsbGJhY2tNdXRleCk7CisgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhfcHJpbnRpbmdDYWxs
YmFja011dGV4KTsKIAogICAgIEFTU0VSVChbc2VsZiBfaGFzUGFnZVJlY3RzXSk7CiAgICAgQVNT
RVJUKF9wcmludGVkUGFnZXNEYXRhLmlzRW1wdHkoKSk7CkBAIC0zNjYsNyArMzY2LDcgQEAgc3Rh
dGljIHZvaWQgcHJlcGFyZURhdGFGb3JQcmludGluZ09uU2Vjb25kYXJ5VGhyZWFkKFdLUHJpbnRp
bmdWaWV3ICp2aWV3KQogewogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAKLSAgICBz
dGQ6OmxvY2tfZ3VhcmQ8TG9jaz4gbG9jayh2aWV3LT5fcHJpbnRpbmdDYWxsYmFja011dGV4KTsK
KyAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKHZpZXctPl9wcmludGluZ0NhbGxiYWNrTXV0ZXgp
OwogCiAgICAgLy8gV2UgbWF5IGhhdmUgcmVjZWl2ZWQgcGFnZSByZWN0cyB3aGlsZSBhIG1lc3Nh
Z2UgdG8gY2FsbCB0aGlzIGZ1bmN0aW9uIHRyYXZlbGVkIGZyb20gc2Vjb25kYXJ5IHRocmVhZCB0
byBtYWluIG9uZS4KICAgICBpZiAoW3ZpZXcgX2hhc1BhZ2VSZWN0c10pIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01JbnRlcm5hbC5tbSBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL0RPTS9ET01JbnRlcm5hbC5tbQppbmRleCAwMWY1ZTkxYjVjNWM0ZWM0ZThj
NDkyYmUyMjg1ZGI3OGIzZGM5NWQ2Li4zYTcwNmM0YThkNDljMWZjNDdmODg5NGZhYzViNDI1ZmM3
NzQ4ZjU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSW50ZXJu
YWwubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUludGVybmFsLm1tCkBA
IC01Niw3ICs1Niw3IEBAIHN0YXRpYyBIYXNoTWFwPERPTU9iamVjdEludGVybmFsKiwgTlNPYmpl
Y3QgKj4mIHdyYXBwZXJDYWNoZSgpCiBOU09iamVjdCogZ2V0RE9NV3JhcHBlcihET01PYmplY3RJ
bnRlcm5hbCogaW1wbCkKIHsKICNpZmRlZiBORUVEU19XUkFQUEVSX0NBQ0hFX0xPQ0sKLSAgICBz
dGQ6OmxvY2tfZ3VhcmQ8TG9jaz4gbG9jayh3cmFwcGVyQ2FjaGVMb2NrKTsKKyAgICBhdXRvIGxv
Y2tlciA9IGhvbGRMb2NrKHdyYXBwZXJDYWNoZUxvY2spOwogI2VuZGlmCiAgICAgcmV0dXJuIHdy
YXBwZXJDYWNoZSgpLmdldChpbXBsKTsKIH0KQEAgLTY0LDcgKzY0LDcgQEAgTlNPYmplY3QqIGdl
dERPTVdyYXBwZXIoRE9NT2JqZWN0SW50ZXJuYWwqIGltcGwpCiB2b2lkIGFkZERPTVdyYXBwZXIo
TlNPYmplY3QqIHdyYXBwZXIsIERPTU9iamVjdEludGVybmFsKiBpbXBsKQogewogI2lmZGVmIE5F
RURTX1dSQVBQRVJfQ0FDSEVfTE9DSwotICAgIHN0ZDo6bG9ja19ndWFyZDxMb2NrPiBsb2NrKHdy
YXBwZXJDYWNoZUxvY2spOworICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sod3JhcHBlckNhY2hl
TG9jayk7CiAjZW5kaWYKICAgICB3cmFwcGVyQ2FjaGUoKS5zZXQoaW1wbCwgd3JhcHBlcik7CiB9
CkBAIC03Miw3ICs3Miw3IEBAIHZvaWQgYWRkRE9NV3JhcHBlcihOU09iamVjdCogd3JhcHBlciwg
RE9NT2JqZWN0SW50ZXJuYWwqIGltcGwpCiB2b2lkIHJlbW92ZURPTVdyYXBwZXIoRE9NT2JqZWN0
SW50ZXJuYWwqIGltcGwpCiB7CiAjaWZkZWYgTkVFRFNfV1JBUFBFUl9DQUNIRV9MT0NLCi0gICAg
c3RkOjpsb2NrX2d1YXJkPExvY2s+IGxvY2sod3JhcHBlckNhY2hlTG9jayk7CisgICAgYXV0byBs
b2NrZXIgPSBob2xkTG9jayh3cmFwcGVyQ2FjaGVMb2NrKTsKICNlbmRpZgogICAgIHdyYXBwZXJD
YWNoZSgpLnJlbW92ZShpbXBsKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9ibWFsbG9jL2JtYWxs
b2MvTXV0ZXguaCBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvTXV0ZXguaAppbmRleCAyNDBjODVl
ZmZlYTAwNzcxMzRhMDliNTk3M2UzMzIxYjliOWM3ODA1Li5mNGNjMmFhNDExYzkyODMyMjEyOTFj
YTg1ODAyMGQzMDE4YWEyM2FkIDEwMDY0NAotLS0gYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL011
dGV4LmgKKysrIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9NdXRleC5oCkBAIC0zOCw3ICszOCw3
IEBAIG5hbWVzcGFjZSBibWFsbG9jIHsKIGNsYXNzIE11dGV4OwogCiB1c2luZyBVbmlxdWVMb2Nr
SG9sZGVyID0gc3RkOjp1bmlxdWVfbG9jazxNdXRleD47Ci11c2luZyBMb2NrSG9sZGVyID0gc3Rk
Ojpsb2NrX2d1YXJkPE11dGV4PjsKK3VzaW5nIExvY2tIb2xkZXIgPSBzdGQ6OnNjb3BlZF9sb2Nr
PE11dGV4PjsKIAogY2xhc3MgTXV0ZXggewogcHVibGljOgpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hh
bmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGYyOTFmNGViNjBmMjc0YTRkY2U3M2JkMjcx
NDI5ZDhhMWVhMDgxOWIuLjg1OTE1NGNhOTM0ZTU4MzA2NmViYWJiOTY0OGU2NzQzY2RlYWNkMTAg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMSBAQAorMjAyMC0wMi0yOSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFJlbW92ZSBzdGQ6OmxvY2tfZ3VhcmQKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNjQ1MQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvQ29u
ZGl0aW9uLmNwcDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9QYXJraW5nTG90
LmNwcDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9ibWFsbG9jL0lzb0hlYXAu
Y3BwOgorICAgICAgICAoYXNzZXJ0SGFzT2JqZWN0cyk6CisgICAgICAgIChhc3NlcnRIYXNPbmx5
T2JqZWN0cyk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nl
c3NpYmlsaXR5Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXVFI6OkFYVGhyZWFkOjpkaXNwYXRj
aCk6CisgICAgICAgIChXVFI6OkFYVGhyZWFkOjpkaXNwYXRjaEZ1bmN0aW9uc0Zyb21BWFRocmVh
ZCk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9tYWMvQWNjZXNz
aWJpbGl0eUNvbnRyb2xsZXJNYWMubW06CisgICAgICAgIChXVFI6OkFYVGhyZWFkOjppbml0aWFs
aXplUnVuTG9vcCk6CisKIDIwMjAtMDItMjggIEZ1amlpIEhpcm9ub3JpICA8SGlyb25vcmkuRnVq
aWlAc29ueS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjI1NzU2NS4K
ZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0NvbmRpdGlvbi5jcHAg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9Db25kaXRpb24uY3BwCmluZGV4IDI2Yzhm
OTlmNDI5Y2QwM2RiMDA4Yjc1NzBlMzgxMWQyMjE4ODRjMGYuLjBlYzEwNWQ0ZTI1YWY5MmZhZjAz
ODY3OGJkNTFlZDJkMTU0ZWE1OGIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV1RGL0NvbmRpdGlvbi5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYv
Q29uZGl0aW9uLmNwcApAQCAtMTE4LDcgKzExOCw3IEBAIHZvaWQgcnVuVGVzdCgKICAgICAgICAg
ICAgICAgICAgICAgbm90aWZ5KG5vdGlmeVN0eWxlLCBmdWxsQ29uZGl0aW9uLCBzaG91bGROb3Rp
ZnkpOwogCiAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0
ZDo6bG9ja19ndWFyZDxMb2NrPiBsb2NrZXIocmVjZWl2ZWRMb2NrKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2socmVjZWl2ZWRMb2NrKTsKICAgICAgICAg
ICAgICAgICAgICAgICAgIHJlY2VpdmVkLmFwcGVuZChyZXN1bHQpOwogICAgICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAgICAgfQpAQCAtMTU1LDcgKzE1NSw3IEBAIHZvaWQgcnVuVGVz
dCgKICAgICAgICAgdGhyZWFkLT53YWl0Rm9yQ29tcGxldGlvbigpOwogCiAgICAgewotICAgICAg
ICBzdGQ6OmxvY2tfZ3VhcmQ8TG9jaz4gbG9ja2VyKGxvY2spOworICAgICAgICBhdXRvIGxvY2tl
ciA9IGhvbGRMb2NrKGxvY2spOwogICAgICAgICBzaG91bGRDb250aW51ZSA9IGZhbHNlOwogICAg
IH0KICAgICBlbXB0eUNvbmRpdGlvbi5ub3RpZnlBbGwoKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV1RGL1BhcmtpbmdMb3QuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XVEYvUGFya2luZ0xvdC5jcHAKaW5kZXggZTAwYTA5YjJhMTdhYTczNDg1NmU0MmMx
MTQ1Y2JlNjA4NjNmMGEwNS4uZmI4Mjc5MGY4OGU3MmNjYWQ5NmRiYmRmYWVkZjYwOTlkYmU5NzM5
YiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvUGFya2luZ0xvdC5j
cHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvUGFya2luZ0xvdC5jcHAKQEAg
LTUxLDcgKzUxLDcgQEAgc3RydWN0IFNpbmdsZUxhdGNoVGVzdCB7CiAgICAgICAgICAgICAgICAg
ICAgIFsmXSAoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBkb3duKCk7CiAKLSAgICAgICAg
ICAgICAgICAgICAgICAgIHN0ZDo6bG9ja19ndWFyZDxzdGQ6Om11dGV4PiBsb2NrZXIobG9jayk7
CisgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OnNjb3BlZF9sb2NrPHN0ZDo6bXV0ZXg+IGxv
Y2tlcihsb2NrKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGF3YWtlLmFkZChUaHJlYWQ6OmN1
cnJlbnQoKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBsYXN0QXdva2VuID0gJlRocmVhZDo6
Y3VycmVudCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgY29uZGl0aW9uLm5vdGlmeV9vbmUo
KTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL2JtYWxsb2MvSXNv
SGVhcC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9ibWFsbG9jL0lzb0hlYXAu
Y3BwCmluZGV4IDA4YjcyYWE2ZjIyOGQ0MTUzNzBiMWE1OTU0NWVlZTViYmYxZWZlZWEuLmNiZWU3
NzE1MzBjNmE4Zjg2N2M0MTU2N2VlOTQwZWQzMjU3NDUxZDUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV1RGL2JtYWxsb2MvSXNvSGVhcC5jcHAKKysrIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XVEYvYm1hbGxvYy9Jc29IZWFwLmNwcApAQCAtNzgsNyArNzgsNyBA
QCBzdGF0aWMgdm9pZCBhc3NlcnRIYXNPYmplY3RzKElzb0hlYXA8aGVhcFR5cGU+JiBoZWFwLCBz
dGQ6OnNldDx2b2lkKj4gcG9pbnRlcnMpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgYXV0
byYgaW1wbCA9IGhlYXAuaW1wbCgpOwotICAgIHN0ZDo6bG9ja19ndWFyZDxibWFsbG9jOjpNdXRl
eD4gbG9ja2VyKGltcGwubG9jayk7CisgICAgc3RkOjpzY29wZWRfbG9jazxibWFsbG9jOjpNdXRl
eD4gbG9ja2VyKGltcGwubG9jayk7CiAgICAgaW1wbC5mb3JFYWNoTGl2ZU9iamVjdCgKICAgICAg
ICAgbG9ja2VyLAogICAgICAgICBbJl0gKHZvaWQqIG9iamVjdCkgewpAQCAtOTUsNyArOTUsNyBA
QCBzdGF0aWMgdm9pZCBhc3NlcnRIYXNPbmx5T2JqZWN0cyhJc29IZWFwPGhlYXBUeXBlPiYgaGVh
cCwgc3RkOjpzZXQ8dm9pZCo+IHBvaW50ZQogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGF1
dG8mIGltcGwgPSBoZWFwLmltcGwoKTsKLSAgICBzdGQ6OmxvY2tfZ3VhcmQ8Ym1hbGxvYzo6TXV0
ZXg+IGxvY2tlcihpbXBsLmxvY2spOworICAgIHN0ZDo6c2NvcGVkX2xvY2s8Ym1hbGxvYzo6TXV0
ZXg+IGxvY2tlcihpbXBsLmxvY2spOwogICAgIGltcGwuZm9yRWFjaExpdmVPYmplY3QoCiAgICAg
ICAgIGxvY2tlciwKICAgICAgICAgWyZdICh2b2lkKiBvYmplY3QpIHsKZGlmZiAtLWdpdCBhL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eUNvbnRyb2xs
ZXIuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmls
aXR5Q29udHJvbGxlci5jcHAKaW5kZXggYzk2NjljMWZkYmI1MmQyMDZkYzQzMDcyM2FjODgzZGZl
OTAyNGJmMC4uMTI0MjIzOGJhNjIwNjNhOTJiZmFhMzE1MTAxZTAzZjk4MGVlYzIxYyAxMDA2NDQK
LS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5
Q29udHJvbGxlci5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5jcHAKQEAgLTEzNyw3ICsxMzcsNyBAQCB2b2lkIEFY
VGhyZWFkOjpkaXNwYXRjaChGdW5jdGlvbjx2b2lkKCk+JiYgZnVuY3Rpb24pCiAgICAgYXhUaHJl
YWQuY3JlYXRlVGhyZWFkSWZOZWVkZWQoKTsKIAogICAgIHsKLSAgICAgICAgc3RkOjpsb2NrX2d1
YXJkPExvY2s+IGxvY2soYXhUaHJlYWQubV9mdW5jdGlvbnNNdXRleCk7CisgICAgICAgIGF1dG8g
bG9ja2VyID0gaG9sZExvY2soYXhUaHJlYWQubV9mdW5jdGlvbnNNdXRleCk7CiAgICAgICAgIGF4
VGhyZWFkLm1fZnVuY3Rpb25zLmFwcGVuZChXVEZNb3ZlKGZ1bmN0aW9uKSk7CiAgICAgfQogCkBA
IC0xODUsNyArMTg1LDcgQEAgdm9pZCBBWFRocmVhZDo6ZGlzcGF0Y2hGdW5jdGlvbnNGcm9tQVhU
aHJlYWQoKQogICAgIFZlY3RvcjxGdW5jdGlvbjx2b2lkKCk+PiBmdW5jdGlvbnM7CiAKICAgICB7
Ci0gICAgICAgIHN0ZDo6bG9ja19ndWFyZDxMb2NrPiBsb2NrKG1fZnVuY3Rpb25zTXV0ZXgpOwor
ICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fZnVuY3Rpb25zTXV0ZXgpOwogICAgICAg
ICBmdW5jdGlvbnMgPSBXVEZNb3ZlKG1fZnVuY3Rpb25zKTsKICAgICB9CiAKZGlmZiAtLWdpdCBh
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvbWFjL0FjY2Vzc2liaWxpdHlD
b250cm9sbGVyTWFjLm1tIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9t
YWMvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXJNYWMubW0KaW5kZXggYTk0ZGUzODYwZDljYzQxZTZi
ZjhjZjBmZTM3ZDc5YjUzYmNiYmU2My4uZTgzYWQ2NzU3NjEwNzRjYjMzODUzNjU4MGM3MjFmOGU0
OWMyM2JhMiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9tYWMvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXJNYWMubW0KKysrIGIvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9tYWMvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXJNYWMubW0K
QEAgLTEyOSw3ICsxMjksNyBAQCB2b2lkIEFYVGhyZWFkOjppbml0aWFsaXplUnVuTG9vcCgpCiB7
CiAgICAgLy8gSW5pdGlhbGl6ZSB0aGUgcnVuIGxvb3AuCiAgICAgewotICAgICAgICBzdGQ6Omxv
Y2tfZ3VhcmQ8TG9jaz4gbG9jayhtX2luaXRpYWxpemVSdW5Mb29wTXV0ZXgpOworICAgICAgICBh
dXRvIGxvY2tlciA9IGhvbGRMb2NrKG1faW5pdGlhbGl6ZVJ1bkxvb3BNdXRleCk7CiAKICAgICAg
ICAgbV90aHJlYWRSdW5Mb29wID0gQ0ZSdW5Mb29wR2V0Q3VycmVudCgpOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>392055</attachid>
            <date>2020-02-29 02:13:41 -0800</date>
            <delta_ts>2020-02-29 02:41:46 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-206451-20200229021340.patch</filename>
            <type>text/plain</type>
            <size>82000</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU3NjgxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAy
YzBmNThlZTJiOTllZTQwMDBlMDI3NDkwZWNhYTgzN2U3Mzg2MDE0Li40NzUwYjI0MmJlNzc4OGJj
NmVjZmFlNTZkNjRiOTliODQ4OTBhMTdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyOCBAQAorMjAyMC0wMi0yOSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFJlbW92ZSBzdGQ6OmxvY2tfZ3VhcmQKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNjQ1MQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogQVBJL0pTVmlydHVhbE1hY2hpbmUubW06Cisg
ICAgICAgICgrW0pTVk1XcmFwcGVyQ2FjaGUgYWRkV3JhcHBlcjpmb3JKU0NvbnRleHRHcm91cFJl
ZjpdKToKKyAgICAgICAgKCtbSlNWTVdyYXBwZXJDYWNoZSB3cmFwcGVyRm9ySlNDb250ZXh0R3Jv
dXBSZWY6XSk6CisgICAgICAgICogQVBJL2dsaWIvSlNDVmlydHVhbE1hY2hpbmUuY3BwOgorICAg
ICAgICAoYWRkV3JhcHBlcik6CisgICAgICAgIChyZW1vdmVXcmFwcGVyKToKKyAgICAgICAgKiBo
ZWFwL0hlYXBTbmFwc2hvdEJ1aWxkZXIuY3BwOgorICAgICAgICAoSlNDOjpIZWFwU25hcHNob3RC
dWlsZGVyOjphbmFseXplTm9kZSk6CisgICAgICAgIChKU0M6OkhlYXBTbmFwc2hvdEJ1aWxkZXI6
OmFuYWx5emVFZGdlKToKKyAgICAgICAgKEpTQzo6SGVhcFNuYXBzaG90QnVpbGRlcjo6YW5hbHl6
ZVByb3BlcnR5TmFtZUVkZ2UpOgorICAgICAgICAoSlNDOjpIZWFwU25hcHNob3RCdWlsZGVyOjph
bmFseXplVmFyaWFibGVOYW1lRWRnZSk6CisgICAgICAgIChKU0M6OkhlYXBTbmFwc2hvdEJ1aWxk
ZXI6OmFuYWx5emVJbmRleEVkZ2UpOgorICAgICAgICAoSlNDOjpIZWFwU25hcHNob3RCdWlsZGVy
OjpzZXRPcGFxdWVSb290UmVhY2hhYmlsaXR5UmVhc29uRm9yQ2VsbCk6CisgICAgICAgICogaGVh
cC9NYWNoaW5lU3RhY2tNYXJrZXIuY3BwOgorICAgICAgICAoSlNDOjpNYWNoaW5lVGhyZWFkczo6
dHJ5Q29weU90aGVyVGhyZWFkU3RhY2tzKToKKyAgICAgICAgKiBydW50aW1lL0pTUnVuTG9vcFRp
bWVyLmNwcDoKKyAgICAgICAgKEpTQzo6SlNSdW5Mb29wVGltZXI6OnRpbWVyRGlkRmlyZSk6CisK
IDIwMjAtMDItMjggIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KIAogICAgICAg
ICBbSlNDXSBCdWlsdGluTmFtZXMnIEhhc2hNYXAgc2hvdWxkIGJlIHNtYWxsCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDlmMmM5
MTQ3YmUwNGZiOWM0NzAzZWU1MGZjZGVhOTQ5NjcwODRmNjEuLjYzMzE2NDgyZDlkOWQ4Y2UxZjJk
NmI5MGQ3NjM1NzcwNDJhZDYyZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTEgQEAKKzIwMjAtMDItMjkgIFl1
c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgc3RkOjps
b2NrX2d1YXJkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMDY0NTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBSZW1vdmUgdXNlIG9mIHN0ZDo6bG9ja19ndWFyZC4gVGhpcyBpcyBkZXByZWNhdGVkIGluIEMr
KzE3LgorCisgICAgICAgIDEuIEZvciBwYXJ0aWN1bGFybHkgbG93LWxldmVsIHVzYWdlIChsaWtl
LCBibWFsbG9jLCBzdGQ6Om11dGV4KSwgdXNlIHN0ZDo6c2NvcGVkX2xvY2suCisgICAgICAgIDIu
IEZvciB0aGUgb3RoZXIgcHVycG9zZSwgdXNlIGhvbGRMb2NrLgorCisgICAgICAgICogYmVuY2ht
YXJrcy9Db25kaXRpb25TcGVlZFRlc3QuY3BwOgorICAgICAgICAqIHd0Zi9DcnlwdG9ncmFwaGlj
YWxseVJhbmRvbU51bWJlci5jcHA6CisgICAgICAgICogd3RmL0hhc2hUYWJsZS5jcHA6CisgICAg
ICAgIChXVEY6Okhhc2hUYWJsZVN0YXRzOjpyZWNvcmRDb2xsaXNpb25BdENvdW50KToKKyAgICAg
ICAgKFdURjo6SGFzaFRhYmxlU3RhdHM6OmR1bXBTdGF0cyk6CisgICAgICAgICogd3RmL0hhc2hU
YWJsZS5oOgorICAgICAgICAoV1RGOjpLZXlUcmFpdHM+OjppbnZhbGlkYXRlSXRlcmF0b3JzKToK
KyAgICAgICAgKFdURjo6YWRkSXRlcmF0b3IpOgorICAgICAgICAoV1RGOjpyZW1vdmVJdGVyYXRv
cik6CisgICAgICAgICogd3RmL0xhbmd1YWdlLmNwcDoKKyAgICAgICAgKFdURjo6dXNlclByZWZl
cnJlZExhbmd1YWdlcyk6CisgICAgICAgICogd3RmL01haW5UaHJlYWQuY3BwOgorICAgICAgICAo
V1RGOjpkaXNwYXRjaEZ1bmN0aW9uc0Zyb21NYWluVGhyZWFkKToKKyAgICAgICAgKFdURjo6Y2Fs
bE9uTWFpblRocmVhZCk6CisgICAgICAgIChXVEY6OmNhbGxPbk1haW5BbmRXYWl0KToKKyAgICAg
ICAgKiB3dGYvU3RhY2tTdGF0cy5jcHA6CisgICAgICAgIChXVEY6OlN0YWNrU3RhdHM6OkNoZWNr
UG9pbnQ6OkNoZWNrUG9pbnQpOgorICAgICAgICAoV1RGOjpTdGFja1N0YXRzOjpDaGVja1BvaW50
Ojp+Q2hlY2tQb2ludCk6CisgICAgICAgIChXVEY6OlN0YWNrU3RhdHM6OnByb2JlKToKKyAgICAg
ICAgKFdURjo6U3RhY2tTdGF0czo6TGF5b3V0Q2hlY2tQb2ludDo6TGF5b3V0Q2hlY2tQb2ludCk6
CisgICAgICAgIChXVEY6OlN0YWNrU3RhdHM6OkxheW91dENoZWNrUG9pbnQ6On5MYXlvdXRDaGVj
a1BvaW50KToKKyAgICAgICAgKiB3dGYvV29yZExvY2suY3BwOgorICAgICAgICAoV1RGOjpXb3Jk
TG9jazo6dW5sb2NrU2xvdyk6CisgICAgICAgICogd3RmL2NmL0xhbmd1YWdlQ0YuY3BwOgorICAg
ICAgICAoV1RGOjpsYW5ndWFnZVByZWZlcmVuY2VzRGlkQ2hhbmdlKToKKyAgICAgICAgKFdURjo6
cGxhdGZvcm1Vc2VyUHJlZmVycmVkTGFuZ3VhZ2VzKToKKyAgICAgICAgKiB3dGYvdGV4dC9TdHJp
bmdWaWV3LmNwcDoKKyAgICAgICAgKFdURjo6U3RyaW5nVmlldzo6aW52YWxpZGF0ZSk6CisgICAg
ICAgIChXVEY6OlN0cmluZ1ZpZXc6OmFkb3B0VW5kZXJseWluZ1N0cmluZyk6CisgICAgICAgIChX
VEY6OlN0cmluZ1ZpZXc6OnNldFVuZGVybHlpbmdTdHJpbmcpOgorICAgICAgICAqIHd0Zi91bmlj
b2RlL2ljdS9Db2xsYXRvcklDVS5jcHA6CisgICAgICAgIChXVEY6OkNvbGxhdG9yOjpDb2xsYXRv
cik6CisgICAgICAgIChXVEY6OkNvbGxhdG9yOjp+Q29sbGF0b3IpOgorICAgICAgICAqIHd0Zi93
aW4vTGFuZ3VhZ2VXaW4uY3BwOgorICAgICAgICAoV1RGOjpwbGF0Zm9ybUxhbmd1YWdlKToKKwog
MjAyMC0wMi0yOCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgogCiAgICAgICAg
IFtKU0NdIEJ1aWx0aW5OYW1lcycgSGFzaE1hcCBzaG91bGQgYmUgc21hbGwKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRl
eCA1YWMyZWMzMWM4YTk0MWY3NjVmMzNjYjYyNTgyZDliM2Q3Yzk3MjRmLi5hMzBlZjRhYzA2Yjlk
MjYwNDJhZjNkYTY0ODYxNjUzMjZjYjFhNTNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsODcgQEAK
KzIwMjAtMDItMjkgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KKworICAgICAg
ICBSZW1vdmUgc3RkOjpsb2NrX2d1YXJkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMDY0NTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VOb2Rl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQnVmZmVyU291cmNlTm9kZTo6c2V0QnVmZmVy
KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvUGFyYW1UaW1lbGluZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpBdWRpb1BhcmFtVGltZWxpbmU6Omluc2VydEV2ZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OkF1ZGlvUGFyYW1UaW1lbGluZTo6Y2FuY2VsU2NoZWR1bGVkVmFsdWVzKToK
KyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0NvbnZvbHZlck5vZGUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q29udm9sdmVyTm9kZTo6cmVzZXQpOgorICAgICAgICAoV2ViQ29yZTo6Q29udm9s
dmVyTm9kZTo6c2V0QnVmZmVyKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL01lZGlhRWxl
bWVudEF1ZGlvU291cmNlTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUVsZW1lbnRB
dWRpb1NvdXJjZU5vZGU6OnNldEZvcm1hdCk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9N
ZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0
cmVhbUF1ZGlvU291cmNlTm9kZTo6c2V0Rm9ybWF0KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1
ZGlvL09zY2lsbGF0b3JOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok9zY2lsbGF0b3JOb2Rl
OjpzZXRQZXJpb2RpY1dhdmUpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vUGFubmVyTm9k
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYW5uZXJOb2RlOjpzZXRQYW5uaW5nTW9kZWwpOgor
ICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vV2F2ZVNoYXBlclByb2Nlc3Nvci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpXYXZlU2hhcGVyUHJvY2Vzc29yOjpzZXRDdXJ2ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpXYXZlU2hhcGVyUHJvY2Vzc29yOjpzZXRPdmVyc2FtcGxlKToKKyAgICAgICAgKiBN
b2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFi
YXNlOjpEYXRhYmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZTo6cGVyZm9ybU9wZW5B
bmRWZXJpZnkpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2U6OmNsb3NlRGF0YWJhc2UpOgor
ICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2U6OmdldENhY2hlZFZlcnNpb24gY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6RGF0YWJhc2U6OnNldENhY2hlZFZlcnNpb24pOgorICAgICAgICAqIE1v
ZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkRhdGFiYXNlTWFuYWdlcjo6YWRkUHJvcG9zZWREYXRhYmFzZSk6CisgICAgICAgIChXZWJDb3Jl
OjpEYXRhYmFzZU1hbmFnZXI6OnJlbW92ZVByb3Bvc2VkRGF0YWJhc2UpOgorICAgICAgICAoV2Vi
Q29yZTo6RGF0YWJhc2VNYW5hZ2VyOjpmdWxsUGF0aEZvckRhdGFiYXNlKToKKyAgICAgICAgKFdl
YkNvcmU6OkRhdGFiYXNlTWFuYWdlcjo6ZGV0YWlsc0Zvck5hbWVBbmRPcmlnaW4pOgorICAgICAg
ICAqIGNyeXB0by9DcnlwdG9BbGdvcml0aG1SZWdpc3RyeS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDcnlwdG9BbGdvcml0aG1SZWdpc3RyeTo6aWRlbnRpZmllcik6CisgICAgICAgIChXZWJDb3Jl
OjpDcnlwdG9BbGdvcml0aG1SZWdpc3RyeTo6bmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpDcnlw
dG9BbGdvcml0aG1SZWdpc3RyeTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0Fs
Z29yaXRobVJlZ2lzdHJ5OjpyZWdpc3RlckFsZ29yaXRobSk6CisgICAgICAgICogaW5zcGVjdG9y
L2FnZW50cy9XZWJIZWFwQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VuZEdhcmJhZ2VD
b2xsZWN0aW9uRXZlbnRzVGFzazo6YWRkR2FyYmFnZUNvbGxlY3Rpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6U2VuZEdhcmJhZ2VDb2xsZWN0aW9uRXZlbnRzVGFzazo6cmVzZXQpOgorICAgICAgICAo
V2ViQ29yZTo6U2VuZEdhcmJhZ2VDb2xsZWN0aW9uRXZlbnRzVGFzazo6dGltZXJGaXJlZCk6Cisg
ICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVGhyZWFkLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNjcm9sbGluZ1RocmVhZDo6ZGlzcGF0Y2gpOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
b2xsaW5nVGhyZWFkOjpkaXNwYXRjaEZ1bmN0aW9uc0Zyb21TY3JvbGxpbmdUaHJlYWQpOgorICAg
ICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL2dlbmVyaWMvU2Nyb2xsaW5nVGhyZWFkR2VuZXJpYy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUaHJlYWQ6OmluaXRpYWxpemVSdW5Mb29wKToK
KyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVGhyZWFkTWFjLm1tOgorICAg
ICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVGhyZWFkOjppbml0aWFsaXplUnVuTG9vcCk6CisgICAg
ICAgICogcGxhdGZvcm0vYXVkaW8vUmV2ZXJiQ29udm9sdmVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJldmVyYkNvbnZvbHZlcjo6flJldmVyYkNvbnZvbHZlcik6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0F1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6QXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakM6On5BdWRpb1NvdXJj
ZVByb3ZpZGVyQVZGT2JqQyk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1NvdXJjZVByb3ZpZGVy
QVZGT2JqQzo6ZmluYWxpemVDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1NvdXJj
ZVByb3ZpZGVyQVZGT2JqQzo6cHJlcGFyZUNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkF1
ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDOjp1bnByZXBhcmVDYWxsYmFjayk6CisgICAgICAgIChX
ZWJDb3JlOjpBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQzo6cHJvY2Vzc0NhbGxiYWNrKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250Q2FjaGVDb3JlVGV4dC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpGb250RGF0YWJhc2U6OmNvbGxlY3Rpb25Gb3JGYW1pbHkpOgorICAg
ICAgICAoV2ViQ29yZTo6Rm9udERhdGFiYXNlOjpjbGVhcik6CisgICAgICAgICogcGxhdGZvcm0v
aW9zL3dhay9XZWJDb3JlVGhyZWFkUnVuLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0
cmVhbS9tYWMvV2ViQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakMubW06CisgICAgICAgIChXZWJD
b3JlOjpXZWJBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQzo6fldlYkF1ZGlvU291cmNlUHJvdmlk
ZXJBVkZPYmpDKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkF1ZGlvU291cmNlUHJvdmlkZXJBVkZP
YmpDOjpwcmVwYXJlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkF1ZGlvU291cmNlUHJvdmlkZXJB
VkZPYmpDOjp1bnByZXBhcmUpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvTG9hZGVy
UnVuTG9vcENGLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmxvYWRlclJ1bkxvb3ApOgorICAgICAg
ICAqIHBsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
UUxpdGVEYXRhYmFzZTo6c2V0SXNEYXRhYmFzZU9wZW5pbmdGb3JiaWRkZW4pOgorICAgICAgICAo
V2ViQ29yZTo6U1FMaXRlRGF0YWJhc2U6Om9wZW4pOgorICAgICAgICAqIHBsYXRmb3JtL3NxbC9T
UUxpdGVEYXRhYmFzZVRyYWNrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJh
c2VUcmFja2VyOjpzZXRDbGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2VU
cmFja2VyOjppbmNyZW1lbnRUcmFuc2FjdGlvbkluUHJvZ3Jlc3NDb3VudCk6CisgICAgICAgIChX
ZWJDb3JlOjpTUUxpdGVEYXRhYmFzZVRyYWNrZXI6OmRlY3JlbWVudFRyYW5zYWN0aW9uSW5Qcm9n
cmVzc0NvdW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlVHJhY2tlcjo6aGFz
VHJhbnNhY3Rpb25JblByb2dyZXNzKToKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L1RleHRFbmNv
ZGluZ1JlZ2lzdHJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmJ1aWxkQmFzZVRleHRDb2RlY01h
cHMpOgorICAgICAgICAoV2ViQ29yZTo6bmV3VGV4dENvZGVjKToKKyAgICAgICAgKFdlYkNvcmU6
OmF0b21DYW5vbmljYWxUZXh0RW5jb2RpbmdOYW1lKToKKwogMjAyMC0wMi0yOCAgUGVuZyBMaXUg
IDxwZW5nLmxpdTZAYXBwbGUuY29tPgogCiAgICAgICAgIFtNZWRpYSBpbiBHUFUgcHJvY2Vzc10g
SW1wbGVtZW50IHRoZSB2aWRlbyBmdWxsc2NyZWVuIGFuZCBQaWN0dXJlLWluLVBpY3R1cmUgc3Vw
cG9ydApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZwppbmRleCAzNzRjNGMyNzdhNmI5NDg4ZTJhNTA0ZTYzNjMxMzZiYjUzOTE2NTE3
Li5kMGJmOWM3ZWVhZTVlN2VhMjZkYzA5MmNlMDQ2YTEwZmNmNjUwZmJjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAt
MSwzICsxLDM5IEBACisyMDIwLTAyLTI5ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5j
b20+CisKKyAgICAgICAgUmVtb3ZlIHN0ZDo6bG9ja19ndWFyZAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA2NDUxCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3
b3JrQ2FjaGVTdG9yYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpTdG9y
YWdlOjp0cmF2ZXJzZSk6CisgICAgICAgICogUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uY3BwOgor
ICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjpTeW5jTWVzc2FnZVN0YXRlOjpwcm9jZXNzSW5jb21p
bmdNZXNzYWdlKToKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6U3luY01lc3NhZ2VTdGF0ZTo6
ZGlzcGF0Y2hNZXNzYWdlcyk6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246OlN5bmNNZXNzYWdl
U3RhdGU6OmRpc3BhdGNoTWVzc2FnZXNBbmRSZXNldERpZFNjaGVkdWxlRGlzcGF0Y2hNZXNzYWdl
c0ZvckNvbm5lY3Rpb24pOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjphZGRXb3JrUXVldWVN
ZXNzYWdlUmVjZWl2ZXIpOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjpyZW1vdmVXb3JrUXVl
dWVNZXNzYWdlUmVjZWl2ZXIpOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjphZGRUaHJlYWRN
ZXNzYWdlUmVjZWl2ZXIpOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjpyZW1vdmVUaHJlYWRN
ZXNzYWdlUmVjZWl2ZXIpOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjpzZW5kTWVzc2FnZSk6
CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246OndhaXRGb3JNZXNzYWdlKToKKyAgICAgICAgKElQ
Qzo6Q29ubmVjdGlvbjo6cHJvY2Vzc0luY29taW5nTWVzc2FnZSk6CisgICAgICAgIChJUEM6OkNv
bm5lY3Rpb246Omluc3RhbGxJbmNvbWluZ1N5bmNNZXNzYWdlQ2FsbGJhY2spOgorICAgICAgICAo
SVBDOjpDb25uZWN0aW9uOjp1bmluc3RhbGxJbmNvbWluZ1N5bmNNZXNzYWdlQ2FsbGJhY2spOgor
ICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjpoYXNJbmNvbWluZ1N5bmNNZXNzYWdlKToKKyAgICAg
ICAgKElQQzo6Q29ubmVjdGlvbjo6Y29ubmVjdGlvbkRpZENsb3NlKToKKyAgICAgICAgKElQQzo6
Q29ubmVjdGlvbjo6c2VuZE91dGdvaW5nTWVzc2FnZXMpOgorICAgICAgICAoSVBDOjpDb25uZWN0
aW9uOjplbnF1ZXVlSW5jb21pbmdNZXNzYWdlKToKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6
ZGlzcGF0Y2hNZXNzYWdlVG9Xb3JrUXVldWVSZWNlaXZlcik6CisgICAgICAgIChJUEM6OkNvbm5l
Y3Rpb246OmRpc3BhdGNoTWVzc2FnZVRvVGhyZWFkUmVjZWl2ZXIpOgorICAgICAgICAoSVBDOjpD
b25uZWN0aW9uOjpkaXNwYXRjaE9uZUluY29taW5nTWVzc2FnZSk6CisgICAgICAgIChJUEM6OkNv
bm5lY3Rpb246OmRpc3BhdGNoSW5jb21pbmdNZXNzYWdlcyk6CisgICAgICAgICogU2hhcmVkL0Js
b2NraW5nUmVzcG9uc2VNYXAuaDoKKyAgICAgICAgKEJsb2NraW5nUmVzcG9uc2VNYXA6OmRpZFJl
Y2VpdmVSZXNwb25zZSk6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9XS1ByaW50aW5nVmlldy5t
bToKKyAgICAgICAgKC1bV0tQcmludGluZ1ZpZXcgX3ByZXBhcmVQREZEYXRhRm9yUHJpbnRpbmdP
blNlY29uZGFyeVRocmVhZF0pOgorICAgICAgICAocHJlcGFyZURhdGFGb3JQcmludGluZ09uU2Vj
b25kYXJ5VGhyZWFkKToKKwogMjAyMC0wMi0yOCAgUGVuZyBMaXUgIDxwZW5nLmxpdTZAYXBwbGUu
Y29tPgogCiAgICAgICAgIFtNZWRpYSBpbiBHUFUgcHJvY2Vzc10gSW1wbGVtZW50IHRoZSB2aWRl
byBmdWxsc2NyZWVuIGFuZCBQaWN0dXJlLWluLVBpY3R1cmUgc3VwcG9ydApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvQ2hhbmdlTG9nCmluZGV4IDE5NTllZGQyM2RiYjBlZGVmMDk4ODhhNGE3ZDkwYTczMWIwZWMy
MGMuLjg2MDc2MmQ3ZTUxMWFjZGQ2MzM1YjEwYWNjNWRjNTEyYjY5YzYxYTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAyMC0wMi0yOSAgWXVzdWtlIFN1
enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgorCisgICAgICAgIFJlbW92ZSBzdGQ6OmxvY2tfZ3Vh
cmQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNjQ1
MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogRE9N
L0RPTUludGVybmFsLm1tOgorICAgICAgICAoZ2V0RE9NV3JhcHBlcik6CisgICAgICAgIChhZGRE
T01XcmFwcGVyKToKKyAgICAgICAgKHJlbW92ZURPTVdyYXBwZXIpOgorCiAyMDIwLTAyLTI4ICBK
ZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgogCiAgICAgICAgIFtHUFVQXSBJbXBsZW1l
bnQgTW9kZXJuIEVNRSBBUEkgaW4gdGhlIEdQVSBQcm9jZXNzCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
Ym1hbGxvYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvYm1hbGxvYy9DaGFuZ2VMb2cKaW5kZXggOTMwYTI0
NjkwNTBmYmVjOTIyNjBjOWViYmNkYmY0YWY5NTk5ZjAwNS4uYjQ4NjQ3MGIxOTliMGU4MDg0MDE5
ODU5NDRlY2U4ODg1NTFhNDQxMSAxMDA2NDQKLS0tIGEvU291cmNlL2JtYWxsb2MvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9ibWFsbG9jL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDIwLTAy
LTI5ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3Zl
IHN0ZDo6bG9ja19ndWFyZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjA2NDUxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBibWFsbG9jL011dGV4Lmg6CisKIDIwMjAtMDItMjggIFNhYW0gQmFyYXRpICA8
c2JhcmF0aUBhcHBsZS5jb20+CiAKICAgICAgICAgQ2xlYW4gdXAgY29kZSB3aXRoIGhvdyB3ZSBj
aG9vc2UgR2lnYWNhZ2Ugc2l6ZXMgYW5kIHdoZXRoZXIgb3Igbm90IHRvIHVzZSBXYXNtIGZhc3Qg
bWVtb3J5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVmlydHVhbE1h
Y2hpbmUubW0gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVmlydHVhbE1hY2hpbmUubW0K
aW5kZXggMGQwMDgyOTA5NmUxZjlhMzUzNDZkMDY1NDA4NGRjMjRmOWQ5OTU3NC4uYzQ3MzZhZjgx
YzNhYmU4MGQ0NzFhYjY1ZjI4ZTc1ZjIyNmIxOGE3OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0FQSS9KU1ZpcnR1YWxNYWNoaW5lLm1tCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvSlNWaXJ0dWFsTWFjaGluZS5tbQpAQCAtNzAsMTMgKzcwLDEzIEBAIEBpbXBsZW1l
bnRhdGlvbiBKU1ZNV3JhcHBlckNhY2hlCiAKICsgKHZvaWQpYWRkV3JhcHBlcjooSlNWaXJ0dWFs
TWFjaGluZSAqKXdyYXBwZXIgZm9ySlNDb250ZXh0R3JvdXBSZWY6KEpTQ29udGV4dEdyb3VwUmVm
KWdyb3VwCiB7Ci0gICAgc3RkOjpsb2NrX2d1YXJkPExvY2s+IGxvY2sod3JhcHBlckNhY2hlTXV0
ZXgpOworICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sod3JhcHBlckNhY2hlTXV0ZXgpOwogICAg
IE5TTWFwSW5zZXJ0KHdyYXBwZXJDYWNoZSgpLCBncm91cCwgKF9fYnJpZGdlIHZvaWQqKXdyYXBw
ZXIpOwogfQogCiArIChKU1ZpcnR1YWxNYWNoaW5lICopd3JhcHBlckZvckpTQ29udGV4dEdyb3Vw
UmVmOihKU0NvbnRleHRHcm91cFJlZilncm91cAogewotICAgIHN0ZDo6bG9ja19ndWFyZDxMb2Nr
PiBsb2NrKHdyYXBwZXJDYWNoZU11dGV4KTsKKyAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKHdy
YXBwZXJDYWNoZU11dGV4KTsKICAgICByZXR1cm4gKF9fYnJpZGdlIEpTVmlydHVhbE1hY2hpbmUg
KilOU01hcEdldCh3cmFwcGVyQ2FjaGUoKSwgZ3JvdXApOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQVBJL2dsaWIvSlNDVmlydHVhbE1hY2hpbmUuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS9nbGliL0pTQ1ZpcnR1YWxNYWNoaW5lLmNwcAppbmRleCBjMDYx
YWZlZjE4OGE4MzM5MGVhZDRjMTFjMDZmYTM4MTExYzU4MmYyLi5iMjNiNzA3MTZkYmQxODAxZTg3
MzJkNGJlYWMzZjdhNjc4YTVkMjBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
QVBJL2dsaWIvSlNDVmlydHVhbE1hY2hpbmUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9BUEkvZ2xpYi9KU0NWaXJ0dWFsTWFjaGluZS5jcHAKQEAgLTU3LDE0ICs1NywxNCBAQCBzdGF0
aWMgSGFzaE1hcDxKU0NvbnRleHRHcm91cFJlZiwgSlNDVmlydHVhbE1hY2hpbmUqPiYgd3JhcHBl
ck1hcCgpCiAKIHN0YXRpYyB2b2lkIGFkZFdyYXBwZXIoSlNDb250ZXh0R3JvdXBSZWYgZ3JvdXAs
IEpTQ1ZpcnR1YWxNYWNoaW5lKiB2bSkKIHsKLSAgICBzdGQ6OmxvY2tfZ3VhcmQ8TG9jaz4gbG9j
ayh3cmFwcGVyQ2FjaGVNdXRleCk7CisgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayh3cmFwcGVy
Q2FjaGVNdXRleCk7CiAgICAgQVNTRVJUKCF3cmFwcGVyTWFwKCkuY29udGFpbnMoZ3JvdXApKTsK
ICAgICB3cmFwcGVyTWFwKCkuc2V0KGdyb3VwLCB2bSk7CiB9CiAKIHN0YXRpYyB2b2lkIHJlbW92
ZVdyYXBwZXIoSlNDb250ZXh0R3JvdXBSZWYgZ3JvdXApCiB7Ci0gICAgc3RkOjpsb2NrX2d1YXJk
PExvY2s+IGxvY2sod3JhcHBlckNhY2hlTXV0ZXgpOworICAgIGF1dG8gbG9ja2VyID0gaG9sZExv
Y2sod3JhcHBlckNhY2hlTXV0ZXgpOwogICAgIEFTU0VSVCh3cmFwcGVyTWFwKCkuY29udGFpbnMo
Z3JvdXApKTsKICAgICB3cmFwcGVyTWFwKCkucmVtb3ZlKGdyb3VwKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBTbmFwc2hvdEJ1aWxkZXIuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcFNuYXBzaG90QnVpbGRlci5jcHAKaW5kZXggY2Uw
MzliYTc3ZTlmYTJiY2VlNDdmMTVlYTYzZTZhNDhhNTFjY2QxMC4uZDViOWFkMjJmOTU1Mjg0MDE3
MzUyM2YxYTRiMTM4OTdjZTMwOWZmNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvSGVhcFNuYXBzaG90QnVpbGRlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvSGVhcFNuYXBzaG90QnVpbGRlci5jcHAKQEAgLTg4LDcgKzg4LDcgQEAgdm9pZCBIZWFw
U25hcHNob3RCdWlsZGVyOjphbmFseXplTm9kZShKU0NlbGwqIGNlbGwpCiAgICAgaWYgKHByZXZp
b3VzU25hcHNob3RIYXNOb2RlRm9yQ2VsbChjZWxsLCBpZGVudGlmaWVyKSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgc3RkOjpsb2NrX2d1YXJkPExvY2s+IGxvY2sobV9idWlsZGluZ05vZGVNdXRl
eCk7CisgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX2J1aWxkaW5nTm9kZU11dGV4KTsKICAg
ICBtX3NuYXBzaG90LT5hcHBlbmROb2RlKEhlYXBTbmFwc2hvdE5vZGUoY2VsbCwgZ2V0TmV4dE9i
amVjdElkZW50aWZpZXIoKSkpOwogfQogCkBAIC0xMDEsNyArMTAxLDcgQEAgdm9pZCBIZWFwU25h
cHNob3RCdWlsZGVyOjphbmFseXplRWRnZShKU0NlbGwqIGZyb20sIEpTQ2VsbCogdG8sIFNsb3RW
aXNpdG9yOjpSb28KICAgICBpZiAoZnJvbSA9PSB0bykKICAgICAgICAgcmV0dXJuOwogCi0gICAg
c3RkOjpsb2NrX2d1YXJkPExvY2s+IGxvY2sobV9idWlsZGluZ0VkZ2VNdXRleCk7CisgICAgYXV0
byBsb2NrZXIgPSBob2xkTG9jayhtX2J1aWxkaW5nRWRnZU11dGV4KTsKIAogICAgIGlmIChtX3Nu
YXBzaG90VHlwZSA9PSBTbmFwc2hvdFR5cGU6OkdDRGVidWdnaW5nU25hcHNob3QgJiYgIWZyb20p
IHsKICAgICAgICAgaWYgKHJvb3RNYXJrUmVhc29uID09IFNsb3RWaXNpdG9yOjpSb290TWFya1Jl
YXNvbjo6Tm9uZSAmJiBtX3NuYXBzaG90VHlwZSA9PSBTbmFwc2hvdFR5cGU6OkdDRGVidWdnaW5n
U25hcHNob3QpCkBAIC0xMjAsNyArMTIwLDcgQEAgdm9pZCBIZWFwU25hcHNob3RCdWlsZGVyOjph
bmFseXplUHJvcGVydHlOYW1lRWRnZShKU0NlbGwqIGZyb20sIEpTQ2VsbCogdG8sIFVuaXEKICAg
ICBBU1NFUlQobV9wcm9maWxlci5hY3RpdmVIZWFwQW5hbHl6ZXIoKSA9PSB0aGlzKTsKICAgICBB
U1NFUlQodG8pOwogCi0gICAgc3RkOjpsb2NrX2d1YXJkPExvY2s+IGxvY2sobV9idWlsZGluZ0Vk
Z2VNdXRleCk7CisgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX2J1aWxkaW5nRWRnZU11dGV4
KTsKIAogICAgIG1fZWRnZXMuYXBwZW5kKEhlYXBTbmFwc2hvdEVkZ2UoZnJvbSwgdG8sIEVkZ2VU
eXBlOjpQcm9wZXJ0eSwgcHJvcGVydHlOYW1lKSk7CiB9CkBAIC0xMzAsNyArMTMwLDcgQEAgdm9p
ZCBIZWFwU25hcHNob3RCdWlsZGVyOjphbmFseXplVmFyaWFibGVOYW1lRWRnZShKU0NlbGwqIGZy
b20sIEpTQ2VsbCogdG8sIFVuaXEKICAgICBBU1NFUlQobV9wcm9maWxlci5hY3RpdmVIZWFwQW5h
bHl6ZXIoKSA9PSB0aGlzKTsKICAgICBBU1NFUlQodG8pOwogCi0gICAgc3RkOjpsb2NrX2d1YXJk
PExvY2s+IGxvY2sobV9idWlsZGluZ0VkZ2VNdXRleCk7CisgICAgYXV0byBsb2NrZXIgPSBob2xk
TG9jayhtX2J1aWxkaW5nRWRnZU11dGV4KTsKIAogICAgIG1fZWRnZXMuYXBwZW5kKEhlYXBTbmFw
c2hvdEVkZ2UoZnJvbSwgdG8sIEVkZ2VUeXBlOjpWYXJpYWJsZSwgdmFyaWFibGVOYW1lKSk7CiB9
CkBAIC0xNDAsNyArMTQwLDcgQEAgdm9pZCBIZWFwU25hcHNob3RCdWlsZGVyOjphbmFseXplSW5k
ZXhFZGdlKEpTQ2VsbCogZnJvbSwgSlNDZWxsKiB0bywgdWludDMyX3QgaW4KICAgICBBU1NFUlQo
bV9wcm9maWxlci5hY3RpdmVIZWFwQW5hbHl6ZXIoKSA9PSB0aGlzKTsKICAgICBBU1NFUlQodG8p
OwogCi0gICAgc3RkOjpsb2NrX2d1YXJkPExvY2s+IGxvY2sobV9idWlsZGluZ0VkZ2VNdXRleCk7
CisgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX2J1aWxkaW5nRWRnZU11dGV4KTsKIAogICAg
IG1fZWRnZXMuYXBwZW5kKEhlYXBTbmFwc2hvdEVkZ2UoZnJvbSwgdG8sIGluZGV4KSk7CiB9CkBA
IC0xNTAsNyArMTUwLDcgQEAgdm9pZCBIZWFwU25hcHNob3RCdWlsZGVyOjpzZXRPcGFxdWVSb290
UmVhY2hhYmlsaXR5UmVhc29uRm9yQ2VsbChKU0NlbGwqIGNlbGwsIGMKICAgICBpZiAoIXJlYXNv
biB8fCAhKnJlYXNvbiB8fCBtX3NuYXBzaG90VHlwZSAhPSBTbmFwc2hvdFR5cGU6OkdDRGVidWdn
aW5nU25hcHNob3QpCiAgICAgICAgIHJldHVybjsKIAotICAgIHN0ZDo6bG9ja19ndWFyZDxMb2Nr
PiBsb2NrKG1fYnVpbGRpbmdFZGdlTXV0ZXgpOworICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2so
bV9idWlsZGluZ0VkZ2VNdXRleCk7CiAKICAgICBtX3Jvb3REYXRhLmVuc3VyZShjZWxsLCBbXSAo
KSAtPiBSb290RGF0YSB7CiAgICAgICAgIHJldHVybiB7IH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9NYWNoaW5lU3RhY2tNYXJrZXIuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvTWFjaGluZVN0YWNrTWFya2VyLmNwcAppbmRleCBhYjE5YzBlOTg5OTM3
MTAzY2E0MWYzOWU4N2UzMGZjYTYzNWZlZTcxLi4zODVjZWM0MjVlNWM3YWNiZDI2ZTJlNjQ2ZmIw
OWFjNzQ4NzYzMGFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYWNo
aW5lU3RhY2tNYXJrZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hY2hp
bmVTdGFja01hcmtlci5jcHAKQEAgLTEzNyw4ICsxMzcsOCBAQCBib29sIE1hY2hpbmVUaHJlYWRz
Ojp0cnlDb3B5T3RoZXJUaHJlYWRTdGFja3MoY29uc3QgQWJzdHJhY3RMb2NrZXImIGxvY2tlciwg
dm9pZAogewogICAgIC8vIFByZXZlbnQgdHdvIFZNcyBmcm9tIHN1c3BlbmRpbmcgZWFjaCBvdGhl
cidzIHRocmVhZHMgYXQgdGhlIHNhbWUgdGltZSwKICAgICAvLyB3aGljaCBjYW4gY2F1c2UgZGVh
ZGxvY2s6IDxyZGFyOi8vcHJvYmxlbS8yMDMwMDg0Mj4uCi0gICAgc3RhdGljIExvY2sgbXV0ZXg7
Ci0gICAgc3RkOjpsb2NrX2d1YXJkPExvY2s+IGxvY2sobXV0ZXgpOworICAgIHN0YXRpYyBMb2Nr
IHN1c3BlbmRMb2NrOworICAgIGF1dG8gc3VzcGVuZExvY2tlciA9IGhvbGRMb2NrKHN1c3BlbmRM
b2NrKTsKIAogICAgICpzaXplID0gMDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNSdW5Mb29wVGltZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNSdW5Mb29wVGltZXIuY3BwCmluZGV4IDA3YjBkNDkzZGZjMDFhODgzNmViMjk0NDQy
ZTFiMDc2NWI2ZDcwZGUuLjEzNTU0NjA4MmIxMGM4NGMyNzFkNDllZWE2YWE1MjZlOTA2ZGU2MzQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUnVuTG9vcFRpbWVy
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1J1bkxvb3BUaW1lci5j
cHAKQEAgLTI5NSw3ICsyOTUsNyBAQCB2b2lkIEpTUnVuTG9vcFRpbWVyOjp0aW1lckRpZEZpcmUo
KQogICAgICAgICB9CiAgICAgfQogCi0gICAgc3RkOjpsb2NrX2d1YXJkPEpTTG9jaz4gbG9jayht
X2FwaUxvY2suZ2V0KCkpOworICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9hcGlMb2NrLmdl
dCgpKTsKICAgICBSZWZQdHI8Vk0+IHZtID0gbV9hcGlMb2NrLT52bSgpOwogICAgIGlmICghdm0p
IHsKICAgICAgICAgLy8gVGhlIFZNIGhhcyBiZWVuIGRlc3Ryb3llZCwgc28gd2Ugc2hvdWxkIGp1
c3QgZ2l2ZSB1cC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvYmVuY2htYXJrcy9Db25kaXRpb25T
cGVlZFRlc3QuY3BwIGIvU291cmNlL1dURi9iZW5jaG1hcmtzL0NvbmRpdGlvblNwZWVkVGVzdC5j
cHAKaW5kZXggZjU5YjA4ZDc3YTkzMjc1NTYxY2Q2YjE0Mzc1M2RjODFmNGRiMjUwZC4uMWMwZDVk
MzAyZmNkZDdhYjk3YTFmMDdmMDAyYmFiYTEwNWFjN2QyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri9iZW5jaG1hcmtzL0NvbmRpdGlvblNwZWVkVGVzdC5jcHAKKysrIGIvU291cmNlL1dURi9iZW5j
aG1hcmtzL0NvbmRpdGlvblNwZWVkVGVzdC5jcHAKQEAgLTExOCw3ICsxMTgsNyBAQCB2b2lkIHJ1
blRlc3QoCiAgICAgICAgICAgICAgICAgICAgIG5vdGlmeShmdWxsQ29uZGl0aW9uLCBtdXN0Tm90
aWZ5KTsKIAogICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBz
dGQ6OmxvY2tfZ3VhcmQ8TG9ja1R5cGU+IGxvY2tlcihyZWNlaXZlZExvY2spOworICAgICAgICAg
ICAgICAgICAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhyZWNlaXZlZExvY2spOwogICAg
ICAgICAgICAgICAgICAgICAgICAgcmVjZWl2ZWQuYXBwZW5kKHJlc3VsdCk7CiAgICAgICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9CkBAIC0xNTIsNyArMTUyLDcgQEAgdm9pZCBy
dW5UZXN0KAogICAgICAgICB0aHJlYWQtPndhaXRGb3JDb21wbGV0aW9uKCk7CiAKICAgICB7Ci0g
ICAgICAgIHN0ZDo6bG9ja19ndWFyZDxMb2NrVHlwZT4gbG9ja2VyKGxvY2spOworICAgICAgICBh
dXRvIGxvY2tlciA9IGhvbGRMb2NrKGxvY2spOwogICAgICAgICBzaG91bGRDb250aW51ZSA9IGZh
bHNlOwogICAgIH0KICAgICBub3RpZnlBbGwoZW1wdHlDb25kaXRpb24pOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi93dGYvQ3J5cHRvZ3JhcGhpY2FsbHlSYW5kb21OdW1iZXIuY3BwIGIvU291cmNl
L1dURi93dGYvQ3J5cHRvZ3JhcGhpY2FsbHlSYW5kb21OdW1iZXIuY3BwCmluZGV4IDdhYzRlMTg3
ZDY0ZDI1MDFmMmEyZDQ3NTg1YmI3NDg2NGQxZWFlOGIuLmFmYmNlODkwZjRkOWI3Y2JiOGU0YzM3
NjAzNTNlNGVlOTVhMDg3NzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0NyeXB0b2dyYXBo
aWNhbGx5UmFuZG9tTnVtYmVyLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9DcnlwdG9ncmFwaGlj
YWxseVJhbmRvbU51bWJlci5jcHAKQEAgLTEzOCw3ICsxMzgsNyBAQCB1aW50MzJfdCBBUkM0UmFu
ZG9tTnVtYmVyR2VuZXJhdG9yOjpnZXRXb3JkKCkKIAogdWludDMyX3QgQVJDNFJhbmRvbU51bWJl
ckdlbmVyYXRvcjo6cmFuZG9tTnVtYmVyKCkKIHsKLSAgICBzdGQ6OmxvY2tfZ3VhcmQ8TG9jaz4g
bG9jayhtX211dGV4KTsKKyAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fbXV0ZXgpOwogCiAg
ICAgbV9jb3VudCAtPSA0OwogICAgIHN0aXJJZk5lZWRlZCgpOwpAQCAtMTQ3LDcgKzE0Nyw3IEBA
IHVpbnQzMl90IEFSQzRSYW5kb21OdW1iZXJHZW5lcmF0b3I6OnJhbmRvbU51bWJlcigpCiAKIHZv
aWQgQVJDNFJhbmRvbU51bWJlckdlbmVyYXRvcjo6cmFuZG9tVmFsdWVzKHZvaWQqIGJ1ZmZlciwg
c2l6ZV90IGxlbmd0aCkKIHsKLSAgICBzdGQ6OmxvY2tfZ3VhcmQ8TG9jaz4gbG9jayhtX211dGV4
KTsKKyAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fbXV0ZXgpOwogCiAgICAgdW5zaWduZWQg
Y2hhciogcmVzdWx0ID0gcmVpbnRlcnByZXRfY2FzdDx1bnNpZ25lZCBjaGFyKj4oYnVmZmVyKTsK
ICAgICBzdGlySWZOZWVkZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0hhc2hUYWJs
ZS5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9IYXNoVGFibGUuY3BwCmluZGV4IDUzYjRjZGJhZTI4YWFm
OTg2YjVlYjZlNTJlMDY0MjRkNjJkMDFjMDUuLjAyN2M1YzQ2MjA5ODI0Y2RlZDVjYjYyOTA4MTVj
ZTVkNjMwZmIyYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0hhc2hUYWJsZS5jcHAKKysr
IGIvU291cmNlL1dURi93dGYvSGFzaFRhYmxlLmNwcApAQCAtNDMsNyArNDMsNyBAQCBzdGF0aWMg
TG9jayBoYXNoVGFibGVTdGF0c011dGV4OwogCiB2b2lkIEhhc2hUYWJsZVN0YXRzOjpyZWNvcmRD
b2xsaXNpb25BdENvdW50KHVuc2lnbmVkIGNvdW50KQogewotICAgIHN0ZDo6bG9ja19ndWFyZDxM
b2NrPiBsb2NrKGhhc2hUYWJsZVN0YXRzTXV0ZXgpOworICAgIGF1dG8gbG9ja2VyID0gaG9sZExv
Y2soaGFzaFRhYmxlU3RhdHNNdXRleCk7CiAKICAgICBpZiAoY291bnQgPiBtYXhDb2xsaXNpb25z
KQogICAgICAgICBtYXhDb2xsaXNpb25zID0gY291bnQ7CkBAIC01Myw3ICs1Myw3IEBAIHZvaWQg
SGFzaFRhYmxlU3RhdHM6OnJlY29yZENvbGxpc2lvbkF0Q291bnQodW5zaWduZWQgY291bnQpCiAK
IHZvaWQgSGFzaFRhYmxlU3RhdHM6OmR1bXBTdGF0cygpCiB7Ci0gICAgc3RkOjpsb2NrX2d1YXJk
PExvY2s+IGxvY2soaGFzaFRhYmxlU3RhdHNNdXRleCk7CisgICAgYXV0byBsb2NrZXIgPSBob2xk
TG9jayhoYXNoVGFibGVTdGF0c011dGV4KTsKIAogICAgIGRhdGFMb2dGKCJcbldURjo6SGFzaFRh
YmxlIHN0YXRpc3RpY3NcblxuIik7CiAgICAgZGF0YUxvZ0YoIiV1IGFjY2Vzc2VzXG4iLCBudW1B
Y2Nlc3Nlcy5sb2FkKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvSGFzaFRhYmxlLmgg
Yi9Tb3VyY2UvV1RGL3d0Zi9IYXNoVGFibGUuaAppbmRleCA5MDc0NzgyMjk1OGE4YWY5NTgyMzEy
MmMxNWI4NjM1N2U0YzgzMjIyLi5jZWIxNjJkZmJiZmVlZWU1N2Q2MjUxMGE4YTczZGQ4MGI1NGJi
YTQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9IYXNoVGFibGUuaAorKysgYi9Tb3VyY2Uv
V1RGL3d0Zi9IYXNoVGFibGUuaApAQCAtMTQ5NSw3ICsxNDk1LDcgQEAgREVDTEFSRV9BTExPQ0FU
T1JfV0lUSF9IRUFQX0lERU5USUZJRVIoSGFzaFRhYmxlKTsKICAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hG
dW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzPgogICAgIHZvaWQg
SGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBL
ZXlUcmFpdHM+OjppbnZhbGlkYXRlSXRlcmF0b3JzKCkKICAgICB7Ci0gICAgICAgIHN0ZDo6bG9j
a19ndWFyZDxMb2NrPiBsb2NrKCptX211dGV4KTsKKyAgICAgICAgYXV0byBsb2NrZXIgPSBob2xk
TG9jaygqbV9tdXRleCk7CiAgICAgICAgIGNvbnN0X2l0ZXJhdG9yKiBuZXh0OwogICAgICAgICBm
b3IgKGNvbnN0X2l0ZXJhdG9yKiBwID0gbV9pdGVyYXRvcnM7IHA7IHAgPSBuZXh0KSB7CiAgICAg
ICAgICAgICBuZXh0ID0gcC0+bV9uZXh0OwpAQCAtMTUxNyw3ICsxNTE3LDcgQEAgREVDTEFSRV9B
TExPQ0FUT1JfV0lUSF9IRUFQX0lERU5USUZJRVIoSGFzaFRhYmxlKTsKICAgICAgICAgaWYgKCF0
YWJsZSkgewogICAgICAgICAgICAgaXQtPm1fbmV4dCA9IDA7CiAgICAgICAgIH0gZWxzZSB7Ci0g
ICAgICAgICAgICBzdGQ6OmxvY2tfZ3VhcmQ8TG9jaz4gbG9jaygqdGFibGUtPm1fbXV0ZXgpOwor
ICAgICAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jaygqdGFibGUtPm1fbXV0ZXgpOwogICAg
ICAgICAgICAgQVNTRVJUKHRhYmxlLT5tX2l0ZXJhdG9ycyAhPSBpdCk7CiAgICAgICAgICAgICBp
dC0+bV9uZXh0ID0gdGFibGUtPm1faXRlcmF0b3JzOwogICAgICAgICAgICAgdGFibGUtPm1faXRl
cmF0b3JzID0gaXQ7CkBAIC0xNTM2LDcgKzE1MzYsNyBAQCBERUNMQVJFX0FMTE9DQVRPUl9XSVRI
X0hFQVBfSURFTlRJRklFUihIYXNoVGFibGUpOwogICAgICAgICAgICAgQVNTRVJUKCFpdC0+bV9u
ZXh0KTsKICAgICAgICAgICAgIEFTU0VSVCghaXQtPm1fcHJldmlvdXMpOwogICAgICAgICB9IGVs
c2UgewotICAgICAgICAgICAgc3RkOjpsb2NrX2d1YXJkPExvY2s+IGxvY2soKml0LT5tX3RhYmxl
LT5tX211dGV4KTsKKyAgICAgICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2soKml0LT5tX3Rh
YmxlLT5tX211dGV4KTsKICAgICAgICAgICAgIGlmIChpdC0+bV9uZXh0KSB7CiAgICAgICAgICAg
ICAgICAgQVNTRVJUKGl0LT5tX25leHQtPm1fcHJldmlvdXMgPT0gaXQpOwogICAgICAgICAgICAg
ICAgIGl0LT5tX25leHQtPm1fcHJldmlvdXMgPSBpdC0+bV9wcmV2aW91czsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XVEYvd3RmL0xhbmd1YWdlLmNwcCBiL1NvdXJjZS9XVEYvd3RmL0xhbmd1YWdlLmNw
cAppbmRleCAwOWQwZWFkZmNjY2E0YjNlMGI3ZTlhMzE4YzE4OGRmY2U4OGJlZjMyLi5mNGNmMDY0
YjY1ZjdiMzdhM2M5NzllNjQyZjcxNmIxY2Y1ZTIxMzFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RG
L3d0Zi9MYW5ndWFnZS5jcHAKKysrIGIvU291cmNlL1dURi93dGYvTGFuZ3VhZ2UuY3BwCkBAIC0x
MDMsNyArMTAzLDcgQEAgc3RhdGljIFZlY3RvcjxTdHJpbmc+IGlzb2xhdGVkQ29weShjb25zdCBW
ZWN0b3I8U3RyaW5nPiYgc3RyaW5ncykKIFZlY3RvcjxTdHJpbmc+IHVzZXJQcmVmZXJyZWRMYW5n
dWFnZXMoKQogewogICAgIHsKLSAgICAgICAgc3RkOjpsb2NrX2d1YXJkPExvY2s+IGxvY2sodXNl
clByZWZlcnJlZExhbmd1YWdlc011dGV4KTsKKyAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9j
ayh1c2VyUHJlZmVycmVkTGFuZ3VhZ2VzTXV0ZXgpOwogICAgICAgICBWZWN0b3I8U3RyaW5nPiYg
b3ZlcnJpZGUgPSBwcmVmZXJyZWRMYW5ndWFnZXNPdmVycmlkZSgpOwogICAgICAgICBpZiAoIW92
ZXJyaWRlLmlzRW1wdHkoKSkKICAgICAgICAgICAgIHJldHVybiBpc29sYXRlZENvcHkob3ZlcnJp
ZGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvTWFpblRocmVhZC5jcHAgYi9Tb3VyY2Uv
V1RGL3d0Zi9NYWluVGhyZWFkLmNwcAppbmRleCA0OTk0NTc1Njc2NDEzNGNhYjQ2YzFmZjMxMmU0
N2MyODJjNjFkZjJmLi42MGU4MGQ0Mzc1M2M3MmQ4ODkwNDU3YWExOTg2MDYwZDhiOGNkYjMzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9NYWluVGhyZWFkLmNwcAorKysgYi9Tb3VyY2UvV1RG
L3d0Zi9NYWluVGhyZWFkLmNwcApAQCAtODQsNyArODQsNyBAQCB2b2lkIGRpc3BhdGNoRnVuY3Rp
b25zRnJvbU1haW5UaHJlYWQoKQogCiAgICAgd2hpbGUgKHRydWUpIHsKICAgICAgICAgewotICAg
ICAgICAgICAgc3RkOjpsb2NrX2d1YXJkPExvY2s+IGxvY2sobWFpblRocmVhZEZ1bmN0aW9uUXVl
dWVNdXRleCk7CisgICAgICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1haW5UaHJlYWRG
dW5jdGlvblF1ZXVlTXV0ZXgpOwogICAgICAgICAgICAgaWYgKCFmdW5jdGlvblF1ZXVlKCkuc2l6
ZSgpKQogICAgICAgICAgICAgICAgIGJyZWFrOwogCkBAIC0xMjQsNyArMTI0LDcgQEAgdm9pZCBj
YWxsT25NYWluVGhyZWFkKEZ1bmN0aW9uPHZvaWQoKT4mJiBmdW5jdGlvbikKICAgICBib29sIG5l
ZWRUb1NjaGVkdWxlID0gZmFsc2U7CiAKICAgICB7Ci0gICAgICAgIHN0ZDo6bG9ja19ndWFyZDxM
b2NrPiBsb2NrKG1haW5UaHJlYWRGdW5jdGlvblF1ZXVlTXV0ZXgpOworICAgICAgICBhdXRvIGxv
Y2tlciA9IGhvbGRMb2NrKG1haW5UaHJlYWRGdW5jdGlvblF1ZXVlTXV0ZXgpOwogICAgICAgICBu
ZWVkVG9TY2hlZHVsZSA9IGZ1bmN0aW9uUXVldWUoKS5zaXplKCkgPT0gMDsKICAgICAgICAgZnVu
Y3Rpb25RdWV1ZSgpLmFwcGVuZChXVEZNb3ZlKGZ1bmN0aW9uKSk7CiAgICAgfQpAQCAtMTc1LDcg
KzE3NSw3IEBAIHN0YXRpYyB2b2lkIGNhbGxPbk1haW5BbmRXYWl0KFdURjo6RnVuY3Rpb248dm9p
ZCgpPiYmIGZ1bmN0aW9uLCBNYWluU3R5bGUgbWFpblN0CiAgICAgYXV0byBmdW5jdGlvbkltcGwg
PSBbJiwgZnVuY3Rpb24gPSBXVEZNb3ZlKGZ1bmN0aW9uKV0gewogICAgICAgICBmdW5jdGlvbigp
OwogCi0gICAgICAgIHN0ZDo6bG9ja19ndWFyZDxMb2NrPiBsb2NrKG11dGV4KTsKKyAgICAgICAg
YXV0byBsb2NrZXIgPSBob2xkTG9jayhtdXRleCk7CiAgICAgICAgIGlzRmluaXNoZWQgPSB0cnVl
OwogICAgICAgICBjb25kaXRpb25WYXJpYWJsZS5ub3RpZnlPbmUoKTsKICAgICB9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dURi93dGYvU3RhY2tTdGF0cy5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9TdGFj
a1N0YXRzLmNwcAppbmRleCBjMWM0MzVmNTc4ZGRlZGM0NDk4YzkzZjhhMmU2ZGVmMmFmMDc1M2Zk
Li4zZjFhYjUyYzhkNmZhODU5N2VjYzlhNmFlZmIxNGUwMWY0ZjEzZDliIDEwMDY0NAotLS0gYS9T
b3VyY2UvV1RGL3d0Zi9TdGFja1N0YXRzLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9TdGFja1N0
YXRzLmNwcApAQCAtNjgsNyArNjgsNyBAQCBTdGFja1N0YXRzOjpQZXJUaHJlYWRTdGF0czo6UGVy
VGhyZWFkU3RhdHMoKQogCiBTdGFja1N0YXRzOjpDaGVja1BvaW50OjpDaGVja1BvaW50KCkKIHsK
LSAgICBzdGQ6OmxvY2tfZ3VhcmQ8TG9jaz4gbG9jayhTdGFja1N0YXRzOjpzX3NoYXJlZE11dGV4
KTsKKyAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKFN0YWNrU3RhdHM6OnNfc2hhcmVkTXV0ZXgp
OwogICAgIFRocmVhZCYgdGhyZWFkID0gVGhyZWFkOjpjdXJyZW50KCk7CiAgICAgU3RhY2tTdGF0
czo6UGVyVGhyZWFkU3RhdHMmIHQgPSB0aHJlYWQuc3RhY2tTdGF0cygpOwogICAgIGNvbnN0IFN0
YWNrQm91bmRzJiBzdGFjayA9IHRocmVhZC5zdGFjaygpOwpAQCAtMTIxLDcgKzEyMSw3IEBAIFN0
YWNrU3RhdHM6OkNoZWNrUG9pbnQ6OkNoZWNrUG9pbnQoKQogCiBTdGFja1N0YXRzOjpDaGVja1Bv
aW50Ojp+Q2hlY2tQb2ludCgpCiB7Ci0gICAgc3RkOjpsb2NrX2d1YXJkPExvY2s+IGxvY2soU3Rh
Y2tTdGF0czo6c19zaGFyZWRNdXRleCk7CisgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhTdGFj
a1N0YXRzOjpzX3NoYXJlZE11dGV4KTsKICAgICBUaHJlYWQmIHRocmVhZCA9IFRocmVhZDo6Y3Vy
cmVudCgpOwogICAgIFN0YWNrU3RhdHM6OlBlclRocmVhZFN0YXRzJiB0ID0gdGhyZWFkLnN0YWNr
U3RhdHMoKTsKIApAQCAtMTQ4LDcgKzE0OCw3IEBAIFN0YWNrU3RhdHM6OkNoZWNrUG9pbnQ6On5D
aGVja1BvaW50KCkKIAogdm9pZCBTdGFja1N0YXRzOjpwcm9iZSgpCiB7Ci0gICAgc3RkOjpsb2Nr
X2d1YXJkPExvY2s+IGxvY2soU3RhY2tTdGF0czo6c19zaGFyZWRNdXRleCk7CisgICAgYXV0byBs
b2NrZXIgPSBob2xkTG9jayhTdGFja1N0YXRzOjpzX3NoYXJlZE11dGV4KTsKICAgICBUaHJlYWQm
IHRocmVhZCA9IFRocmVhZDo6Y3VycmVudCgpOwogICAgIFN0YWNrU3RhdHM6OlBlclRocmVhZFN0
YXRzJiB0ID0gdGhyZWFkLnN0YWNrU3RhdHMoKTsKICAgICBjb25zdCBTdGFja0JvdW5kcyYgc3Rh
Y2sgPSB0aHJlYWQuc3RhY2soKTsKQEAgLTIwMyw3ICsyMDMsNyBAQCBTdGFja1N0YXRzOjpMYXlv
dXRDaGVja1BvaW50OjpMYXlvdXRDaGVja1BvaW50KCkKICAgICAvLyBwcm9iZSBmaXJzdCwgd2Ug
Y2FuIGF2b2lkIHJlLWVudGVyaW5nIHRoZSBsb2NrLgogICAgIFN0YWNrU3RhdHM6OnByb2JlKCk7
CiAKLSAgICBzdGQ6OmxvY2tfZ3VhcmQ8TG9jaz4gbG9jayhTdGFja1N0YXRzOjpzX3NoYXJlZE11
dGV4KTsKKyAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKFN0YWNrU3RhdHM6OnNfc2hhcmVkTXV0
ZXgpOwogICAgIFRocmVhZCYgdGhyZWFkID0gVGhyZWFkOjpjdXJyZW50KCk7CiAgICAgU3RhY2tT
dGF0czo6UGVyVGhyZWFkU3RhdHMmIHQgPSB0aHJlYWQuc3RhY2tTdGF0cygpOwogICAgIGNvbnN0
IFN0YWNrQm91bmRzJiBzdGFjayA9IHRocmVhZC5zdGFjaygpOwpAQCAtMjY0LDcgKzI2NCw3IEBA
IFN0YWNrU3RhdHM6OkxheW91dENoZWNrUG9pbnQ6OkxheW91dENoZWNrUG9pbnQoKQogCiBTdGFj
a1N0YXRzOjpMYXlvdXRDaGVja1BvaW50Ojp+TGF5b3V0Q2hlY2tQb2ludCgpCiB7Ci0gICAgc3Rk
Ojpsb2NrX2d1YXJkPExvY2s+IGxvY2soU3RhY2tTdGF0czo6c19zaGFyZWRNdXRleCk7CisgICAg
YXV0byBsb2NrZXIgPSBob2xkTG9jayhTdGFja1N0YXRzOjpzX3NoYXJlZE11dGV4KTsKIAogICAg
IC8vIFBvcCB0byB0aGUgcHJldmlvdXMgbGF5b3V0IGNoZWNrcG9pbnQ6CiAgICAgU3RhY2tTdGF0
czo6c190b3BMYXlvdXRDaGVja1BvaW50ID0gbV9wcmV2OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvV29yZExvY2suY3BwIGIvU291cmNlL1dURi93dGYvV29yZExvY2suY3BwCmluZGV4IGZi
MmM3OGUzZjMxNGJkMDQ2ZmYzYTg5Nzk0MmM0ZWE4MjgwYWZkMzUuLjQ1NTA2ZjkxMDRjMzU1ODg0
NTNhYzM0MzYzNGM5ZmM2ZDY4MjI5NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1dvcmRM
b2NrLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9Xb3JkTG9jay5jcHAKQEAgLTIzNiw3ICsyMzYs
NyBAQCBORVZFUl9JTkxJTkUgdm9pZCBXb3JkTG9jazo6dW5sb2NrU2xvdygpCiAgICAgewogICAg
ICAgICAvLyBCZSBzdXJlIHRvIGhvbGQgdGhlIGxvY2sgYWNyb3NzIG91ciBjYWxsIHRvIG5vdGlm
eV9vbmUoKSBiZWNhdXNlIGEgc3B1cmlvdXMgd2FrZXVwIGNvdWxkCiAgICAgICAgIC8vIGNhdXNl
IHRoZSB0aHJlYWQgYXQgdGhlIGhlYWQgb2YgdGhlIHF1ZXVlIHRvIGV4aXQgYW5kIGRlbGV0ZSBx
dWV1ZUhlYWQuCi0gICAgICAgIHN0ZDo6bG9ja19ndWFyZDxzdGQ6Om11dGV4PiBsb2NrZXIocXVl
dWVIZWFkLT5wYXJraW5nTG9jayk7CisgICAgICAgIHN0ZDo6c2NvcGVkX2xvY2s8c3RkOjptdXRl
eD4gbG9ja2VyKHF1ZXVlSGVhZC0+cGFya2luZ0xvY2spOwogICAgICAgICBxdWV1ZUhlYWQtPnNo
b3VsZFBhcmsgPSBmYWxzZTsKIAogICAgICAgICAvLyBEb2Vzbid0IG1hdHRlciBpZiB3ZSBub3Rp
ZnlfYWxsKCkgb3Igbm90aWZ5X29uZSgpIGhlcmUgc2luY2UgdGhlIG9ubHkgdGhyZWFkIHRoYXQg
Y291bGQgYmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL2NmL0xhbmd1YWdlQ0YuY3BwIGIv
U291cmNlL1dURi93dGYvY2YvTGFuZ3VhZ2VDRi5jcHAKaW5kZXggNzRjMWFmNDg3M2ZkMDkyYWUx
YjJkZmEyZDQ1NGQ5YWY0YWU0ZDdkZi4uMTIzOTZkYWQ0NmZlNDM4ODUxNGE1ODczOTNhNjhmNjU3
MTRhNjBiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvY2YvTGFuZ3VhZ2VDRi5jcHAKKysr
IGIvU291cmNlL1dURi93dGYvY2YvTGFuZ3VhZ2VDRi5jcHAKQEAgLTgzLDcgKzgzLDcgQEAgc3Rh
dGljIFN0cmluZyBodHRwU3R5bGVMYW5ndWFnZUNvZGUoQ0ZTdHJpbmdSZWYgbGFuZ3VhZ2UpCiBz
dGF0aWMgdm9pZCBsYW5ndWFnZVByZWZlcmVuY2VzRGlkQ2hhbmdlKENGTm90aWZpY2F0aW9uQ2Vu
dGVyUmVmLCB2b2lkKiwgQ0ZTdHJpbmdSZWYsIGNvbnN0IHZvaWQqLCBDRkRpY3Rpb25hcnlSZWYp
CiB7CiAgICAgewotICAgICAgICBzdGQ6OmxvY2tfZ3VhcmQ8TG9jaz4gbG9jayhwcmVmZXJyZWRM
YW5ndWFnZXNNdXRleCk7CisgICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2socHJlZmVycmVk
TGFuZ3VhZ2VzTXV0ZXgpOwogICAgICAgICBwcmVmZXJyZWRMYW5ndWFnZXMoKS5jbGVhcigpOwog
ICAgIH0KICAgICAKQEAgLTEwMCw3ICsxMDAsNyBAQCBWZWN0b3I8U3RyaW5nPiBwbGF0Zm9ybVVz
ZXJQcmVmZXJyZWRMYW5ndWFnZXMoKQogICAgIH0pOwogI2VuZGlmCiAKLSAgICBzdGQ6OmxvY2tf
Z3VhcmQ8TG9jaz4gbG9jayhwcmVmZXJyZWRMYW5ndWFnZXNNdXRleCk7CisgICAgYXV0byBsb2Nr
ZXIgPSBob2xkTG9jayhwcmVmZXJyZWRMYW5ndWFnZXNNdXRleCk7CiAgICAgVmVjdG9yPFN0cmlu
Zz4mIHVzZXJQcmVmZXJyZWRMYW5ndWFnZXMgPSBwcmVmZXJyZWRMYW5ndWFnZXMoKTsKIAogICAg
IGlmICh1c2VyUHJlZmVycmVkTGFuZ3VhZ2VzLmlzRW1wdHkoKSkgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvdGV4dC9TdHJpbmdWaWV3LmNwcCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3Ry
aW5nVmlldy5jcHAKaW5kZXggYzc5ODU1NWUzYTEwMDA4ODJkNmE2ZTIxZmRjNzFmYzkxOGQ2MmFh
OC4uOGQ0Nzk4YTFmMWJlZTYwMTA2NmRiZTgzM2RmZDBkMDc0MTUxMWM5NyAxMDA2NDQKLS0tIGEv
U291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdWaWV3LmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90
ZXh0L1N0cmluZ1ZpZXcuY3BwCkBAIC0zMDgsNyArMzA4LDcgQEAgdm9pZCBTdHJpbmdWaWV3Ojpp
bnZhbGlkYXRlKGNvbnN0IFN0cmluZ0ltcGwmIHN0cmluZ1RvQmVEZXN0cm95ZWQpCiB7CiAgICAg
VW5kZXJseWluZ1N0cmluZyogdW5kZXJseWluZ1N0cmluZzsKICAgICB7Ci0gICAgICAgIHN0ZDo6
bG9ja19ndWFyZDxMb2NrPiBsb2NrKHVuZGVybHlpbmdTdHJpbmdzTXV0ZXgpOworICAgICAgICBh
dXRvIGxvY2tlciA9IGhvbGRMb2NrKHVuZGVybHlpbmdTdHJpbmdzTXV0ZXgpOwogICAgICAgICB1
bmRlcmx5aW5nU3RyaW5nID0gdW5kZXJseWluZ1N0cmluZ3MoKS50YWtlKCZzdHJpbmdUb0JlRGVz
dHJveWVkKTsKICAgICAgICAgaWYgKCF1bmRlcmx5aW5nU3RyaW5nKQogICAgICAgICAgICAgcmV0
dXJuOwpAQCAtMzI1LDcgKzMyNSw3IEBAIGJvb2wgU3RyaW5nVmlldzo6dW5kZXJseWluZ1N0cmlu
Z0lzVmFsaWQoKSBjb25zdAogdm9pZCBTdHJpbmdWaWV3OjphZG9wdFVuZGVybHlpbmdTdHJpbmco
VW5kZXJseWluZ1N0cmluZyogdW5kZXJseWluZ1N0cmluZykKIHsKICAgICBpZiAobV91bmRlcmx5
aW5nU3RyaW5nKSB7Ci0gICAgICAgIHN0ZDo6bG9ja19ndWFyZDxMb2NrPiBsb2NrKHVuZGVybHlp
bmdTdHJpbmdzTXV0ZXgpOworICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKHVuZGVybHlp
bmdTdHJpbmdzTXV0ZXgpOwogICAgICAgICBpZiAoIS0tbV91bmRlcmx5aW5nU3RyaW5nLT5yZWZD
b3VudCkgewogICAgICAgICAgICAgaWYgKG1fdW5kZXJseWluZ1N0cmluZy0+aXNWYWxpZCkgewog
ICAgICAgICAgICAgICAgIHVuZGVybHlpbmdTdHJpbmdzKCkucmVtb3ZlKCZtX3VuZGVybHlpbmdT
dHJpbmctPnN0cmluZyk7CkBAIC0zNDIsNyArMzQyLDcgQEAgdm9pZCBTdHJpbmdWaWV3OjpzZXRV
bmRlcmx5aW5nU3RyaW5nKGNvbnN0IFN0cmluZ0ltcGwqIHN0cmluZykKICAgICBpZiAoIXN0cmlu
ZykKICAgICAgICAgdW5kZXJseWluZ1N0cmluZyA9IG51bGxwdHI7CiAgICAgZWxzZSB7Ci0gICAg
ICAgIHN0ZDo6bG9ja19ndWFyZDxMb2NrPiBsb2NrKHVuZGVybHlpbmdTdHJpbmdzTXV0ZXgpOwor
ICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKHVuZGVybHlpbmdTdHJpbmdzTXV0ZXgpOwog
ICAgICAgICBhdXRvIHJlc3VsdCA9IHVuZGVybHlpbmdTdHJpbmdzKCkuYWRkKHN0cmluZywgbnVs
bHB0cik7CiAgICAgICAgIGlmIChyZXN1bHQuaXNOZXdFbnRyeSkKICAgICAgICAgICAgIHJlc3Vs
dC5pdGVyYXRvci0+dmFsdWUgPSBuZXcgVW5kZXJseWluZ1N0cmluZygqc3RyaW5nKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XVEYvd3RmL3VuaWNvZGUvaWN1L0NvbGxhdG9ySUNVLmNwcCBiL1NvdXJj
ZS9XVEYvd3RmL3VuaWNvZGUvaWN1L0NvbGxhdG9ySUNVLmNwcAppbmRleCBkMGYyMGI5NDM3OGQx
MzkzOTViY2NlYjgyM2RlNzIzODkzZDAxYzA0Li42NzY2MDczYzlmNmI5Y2UwZmE1NjQxZmE1Y2Fi
MTVhOWIwMWZjYmFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi91bmljb2RlL2ljdS9Db2xs
YXRvcklDVS5jcHAKKysrIGIvU291cmNlL1dURi93dGYvdW5pY29kZS9pY3UvQ29sbGF0b3JJQ1Uu
Y3BwCkBAIC0xMDYsNyArMTA2LDcgQEAgQ29sbGF0b3I6OkNvbGxhdG9yKGNvbnN0IGNoYXIqIGxv
Y2FsZSwgYm9vbCBzaG91bGRTb3J0TG93ZXJjYXNlRmlyc3QpCiAgICAgVUVycm9yQ29kZSBzdGF0
dXMgPSBVX1pFUk9fRVJST1I7CiAKICAgICB7Ci0gICAgICAgIHN0ZDo6bG9ja19ndWFyZDxMb2Nr
PiBsb2NrKGNhY2hlZENvbGxhdG9yTXV0ZXgpOworICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRM
b2NrKGNhY2hlZENvbGxhdG9yTXV0ZXgpOwogICAgICAgICBpZiAoY2FjaGVkQ29sbGF0b3IgJiYg
bG9jYWxlc01hdGNoKGNhY2hlZENvbGxhdG9yTG9jYWxlLCBsb2NhbGUpICYmIGNhY2hlZENvbGxh
dG9yU2hvdWxkU29ydExvd2VyY2FzZUZpcnN0ID09IHNob3VsZFNvcnRMb3dlcmNhc2VGaXJzdCkg
ewogICAgICAgICAgICAgbV9jb2xsYXRvciA9IGNhY2hlZENvbGxhdG9yOwogICAgICAgICAgICAg
bV9sb2NhbGUgPSBjYWNoZWRDb2xsYXRvckxvY2FsZTsKQEAgLTEzNiw3ICsxMzYsNyBAQCBDb2xs
YXRvcjo6Q29sbGF0b3IoY29uc3QgY2hhciogbG9jYWxlLCBib29sIHNob3VsZFNvcnRMb3dlcmNh
c2VGaXJzdCkKIAogQ29sbGF0b3I6On5Db2xsYXRvcigpCiB7Ci0gICAgc3RkOjpsb2NrX2d1YXJk
PExvY2s+IGxvY2soY2FjaGVkQ29sbGF0b3JNdXRleCk7CisgICAgYXV0byBsb2NrZXIgPSBob2xk
TG9jayhjYWNoZWRDb2xsYXRvck11dGV4KTsKICAgICBpZiAoY2FjaGVkQ29sbGF0b3IpIHsKICAg
ICAgICAgdWNvbF9jbG9zZShjYWNoZWRDb2xsYXRvcik7CiAgICAgICAgIGZhc3RGcmVlKGNhY2hl
ZENvbGxhdG9yTG9jYWxlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3dpbi9MYW5ndWFn
ZVdpbi5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi93aW4vTGFuZ3VhZ2VXaW4uY3BwCmluZGV4IGZjMWZj
NTI3NmVkYzE5NjNhYjdmNDBhMTEwZWQzOGI1MGY0OGE2ZjEuLjMwODc1OTdkYjYzMGIxNjNiZDNm
ODQyZWZlY2YyNDljYzdhNzdmYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3dpbi9MYW5n
dWFnZVdpbi5jcHAKKysrIGIvU291cmNlL1dURi93dGYvd2luL0xhbmd1YWdlV2luLmNwcApAQCAt
NTcsNyArNTcsNyBAQCBzdGF0aWMgU3RyaW5nIGxvY2FsZUluZm8oTENUWVBFIGxvY2FsZVR5cGUs
IGNvbnN0IFN0cmluZyYgZmFsbGJhY2spCiAKIHN0YXRpYyBTdHJpbmcgcGxhdGZvcm1MYW5ndWFn
ZSgpCiB7Ci0gICAgc3RkOjpsb2NrX2d1YXJkPExvY2s+IGxvY2socGxhdGZvcm1MYW5ndWFnZU11
dGV4KTsKKyAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKHBsYXRmb3JtTGFuZ3VhZ2VNdXRleCk7
CiAKICAgICBzdGF0aWMgU3RyaW5nIGNvbXB1dGVkRGVmYXVsdExhbmd1YWdlOwogICAgIGlmICgh
Y29tcHV0ZWREZWZhdWx0TGFuZ3VhZ2UuaXNFbXB0eSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuY3BwCmluZGV4
IDMzMDZiOWMyMWQ2YzY1MzNiMzA2Y2MyYTc2ODAyZmJiMmZhYjlmMjguLmMzNjYxZGU1N2Q3Mzll
YzQ3MGQ2ZmFkOWY1NDFlNDk1ZWM5NzZkZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyU291cmNlTm9kZS5jcHAKQEAgLTQxNiw3
ICs0MTYsNyBAQCB2b2lkIEF1ZGlvQnVmZmVyU291cmNlTm9kZTo6c2V0QnVmZmVyKFJlZlB0cjxB
dWRpb0J1ZmZlcj4mJiBidWZmZXIpCiAgICAgQXVkaW9Db250ZXh0OjpBdXRvTG9ja2VyIGNvbnRl
eHRMb2NrZXIoY29udGV4dCgpKTsKICAgICAKICAgICAvLyBUaGlzIHN5bmNocm9uaXplcyB3aXRo
IHByb2Nlc3MoKS4KLSAgICBzdGQ6OmxvY2tfZ3VhcmQ8TG9jaz4gbG9jayhtX3Byb2Nlc3NNdXRl
eCk7CisgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX3Byb2Nlc3NNdXRleCk7CiAgICAgCiAg
ICAgaWYgKGJ1ZmZlcikgewogICAgICAgICAvLyBEbyBhbnkgbmVjZXNzc2FyeSByZS1jb25maWd1
cmF0aW9uIHRvIHRoZSBidWZmZXIncyBudW1iZXIgb2YgY2hhbm5lbHMuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvUGFyYW1UaW1lbGluZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvUGFyYW1UaW1lbGluZS5jcHAKaW5k
ZXggZmRjMWQzYzdjMWEwZWIzMzE1Yzg3MmIyZDBlZDI3NWFlOGQyN2U4YS4uMmI1OTU3MGJmNmU2
MWI1NDgzZWQxYjkwN2U2NzZmNjliZTliMzc0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9BdWRpb1BhcmFtVGltZWxpbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9QYXJhbVRpbWVsaW5lLmNwcApAQCAtODAsNyArODAs
NyBAQCB2b2lkIEF1ZGlvUGFyYW1UaW1lbGluZTo6aW5zZXJ0RXZlbnQoY29uc3QgUGFyYW1FdmVu
dCYgZXZlbnQpCiAgICAgaWYgKCFpc1ZhbGlkKQogICAgICAgICByZXR1cm47CiAgICAgICAgIAot
ICAgIHN0ZDo6bG9ja19ndWFyZDxMb2NrPiBsb2NrKG1fZXZlbnRzTXV0ZXgpOworICAgIGF1dG8g
bG9ja2VyID0gaG9sZExvY2sobV9ldmVudHNNdXRleCk7CiAgICAgCiAgICAgdW5zaWduZWQgaSA9
IDA7CiAgICAgZmxvYXQgaW5zZXJ0VGltZSA9IGV2ZW50LnRpbWUoKTsKQEAgLTEwMiw3ICsxMDIs
NyBAQCB2b2lkIEF1ZGlvUGFyYW1UaW1lbGluZTo6aW5zZXJ0RXZlbnQoY29uc3QgUGFyYW1FdmVu
dCYgZXZlbnQpCiAKIHZvaWQgQXVkaW9QYXJhbVRpbWVsaW5lOjpjYW5jZWxTY2hlZHVsZWRWYWx1
ZXMoZmxvYXQgc3RhcnRUaW1lKQogewotICAgIHN0ZDo6bG9ja19ndWFyZDxMb2NrPiBsb2NrKG1f
ZXZlbnRzTXV0ZXgpOworICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9ldmVudHNNdXRleCk7
CiAKICAgICAvLyBSZW1vdmUgYWxsIGV2ZW50cyBzdGFydGluZyBhdCBzdGFydFRpbWUuCiAgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fZXZlbnRzLnNpemUoKTsgKytpKSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0NvbnZvbHZlck5vZGUuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9Db252b2x2ZXJOb2RlLmNwcAppbmRleCBl
MzY2NzdjZmQ3NDVlOGJiZTAyZGEzZGM0ZGQ3YmExZjFhNTNkZDQ5Li5jYzk3MmYxMGRiZDdhYmZm
NzNmNzkzY2ZhY2M3YzQwMDhhNzIzNDQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL0NvbnZvbHZlck5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vQ29udm9sdmVyTm9kZS5jcHAKQEAgLTk0LDcgKzk0LDcgQEAgdm9pZCBDb252
b2x2ZXJOb2RlOjpwcm9jZXNzKHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpCiAKIHZvaWQgQ29udm9s
dmVyTm9kZTo6cmVzZXQoKQogewotICAgIHN0ZDo6bG9ja19ndWFyZDxMb2NrPiBsb2NrKG1fcHJv
Y2Vzc011dGV4KTsKKyAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fcHJvY2Vzc011dGV4KTsK
ICAgICBpZiAobV9yZXZlcmIpCiAgICAgICAgIG1fcmV2ZXJiLT5yZXNldCgpOwogfQpAQCAtMTUw
LDcgKzE1MCw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IENvbnZvbHZlck5vZGU6OnNldEJ1ZmZlcihB
dWRpb0J1ZmZlciogYnVmZmVyKQogCiAgICAgewogICAgICAgICAvLyBTeW5jaHJvbml6ZSB3aXRo
IHByb2Nlc3MoKS4KLSAgICAgICAgc3RkOjpsb2NrX2d1YXJkPExvY2s+IGxvY2sobV9wcm9jZXNz
TXV0ZXgpOworICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fcHJvY2Vzc011dGV4KTsK
ICAgICAgICAgbV9yZXZlcmIgPSBXVEZNb3ZlKHJldmVyYik7CiAgICAgICAgIG1fYnVmZmVyID0g
YnVmZmVyOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vTWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vTWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlLmNwcAppbmRleCA5MTJlNmVi
MjMyMTQ1NjQzZDZmZGFmYmMxMWU5Njc2NGMzZDJmNWQxLi4wZTU5ODFmYTY4NmRiOTIxMmZmYTBm
ODNlOWJkY2QwM2FmOWFhYWMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL01lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9NZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGUuY3BwCkBAIC04
NSw3ICs4NSw3IEBAIHZvaWQgTWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlOjpzZXRGb3JtYXQo
c2l6ZV90IG51bWJlck9mQ2hhbm5lbHMsIGZsb2F0IHNvdXJjCiAgICAgICAgIG1fc291cmNlU2Ft
cGxlUmF0ZSA9IHNvdXJjZVNhbXBsZVJhdGU7CiAKICAgICAgICAgLy8gU3luY2hyb25pemUgd2l0
aCBwcm9jZXNzKCkuCi0gICAgICAgIHN0ZDo6bG9ja19ndWFyZDxNZWRpYUVsZW1lbnRBdWRpb1Nv
dXJjZU5vZGU+IGxvY2soKnRoaXMpOworICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKCp0
aGlzKTsKIAogICAgICAgICBpZiAoc291cmNlU2FtcGxlUmF0ZSAhPSBzYW1wbGVSYXRlKCkpIHsK
ICAgICAgICAgICAgIGRvdWJsZSBzY2FsZUZhY3RvciA9IHNvdXJjZVNhbXBsZVJhdGUgLyBzYW1w
bGVSYXRlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL01l
ZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vTWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5vZGUuY3BwCmluZGV4IDdiYTU5YmY0OGE5MmE1
ODU1OGJjZjJiMmI4ZGQzMGI2NzBmYjUyZWEuLjFiNGZiNmQxOTIyYWQxYzRiMDQxY2I5MTI5YzU1
YzEzODcwN2Y3Y2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
TWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vTWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5vZGUuY3BwCkBAIC04NCw3ICs4NCw3
IEBAIHZvaWQgTWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5vZGU6OnNldEZvcm1hdChzaXplX3QgbnVt
YmVyT2ZDaGFubmVscywgZmxvYXQgc291cmNlCiAgICAgfQogCiAgICAgLy8gU3luY2hyb25pemUg
d2l0aCBwcm9jZXNzKCkuCi0gICAgc3RkOjpsb2NrX2d1YXJkPExvY2s+IGxvY2sobV9wcm9jZXNz
TXV0ZXgpOworICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9wcm9jZXNzTXV0ZXgpOwogCiAg
ICAgbV9zb3VyY2VOdW1iZXJPZkNoYW5uZWxzID0gbnVtYmVyT2ZDaGFubmVsczsKICAgICBtX3Nv
dXJjZVNhbXBsZVJhdGUgPSBzb3VyY2VTYW1wbGVSYXRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9Pc2NpbGxhdG9yTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL09zY2lsbGF0b3JOb2RlLmNwcAppbmRleCBhOTljZWFhZDZiNWMy
MWUwOWRkMjI1M2MyYWNmMzA0NTU0NzUzZTdiLi45NTYwMDUzYTQ4MDViOWQ0YmY1NTk5ZTczYTE5
YTgxZTI1YjBjOTZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L09zY2lsbGF0b3JOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L09zY2lsbGF0b3JOb2RlLmNwcApAQCAtMzA2LDcgKzMwNiw3IEBAIHZvaWQgT3NjaWxsYXRvck5v
ZGU6OnNldFBlcmlvZGljV2F2ZShQZXJpb2RpY1dhdmUqIHBlcmlvZGljV2F2ZSkKICAgICBBU1NF
UlQoaXNNYWluVGhyZWFkKCkpOwogICAgIAogICAgIC8vIFRoaXMgc3luY2hyb25pemVzIHdpdGgg
cHJvY2VzcygpLgotICAgIHN0ZDo6bG9ja19ndWFyZDxMb2NrPiBsb2NrKG1fcHJvY2Vzc011dGV4
KTsKKyAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fcHJvY2Vzc011dGV4KTsKICAgICBtX3Bl
cmlvZGljV2F2ZSA9IHBlcmlvZGljV2F2ZTsKICAgICBtX3R5cGUgPSBUeXBlOjpDdXN0b207CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1Bhbm5lck5vZGUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9QYW5uZXJOb2RlLmNwcAppbmRl
eCA5MjQyZjg4YTYzNmFkOTFlMWQ3YWVmYjhlOTFiMzAxZTE5NzA5YTBjLi41MDg3MzZiNjA1ZDc4
Yzc1Y2UxMzIyZGEwOTI0ZTIzNmRhNTMzNTM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL1Bhbm5lck5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vUGFubmVyTm9kZS5jcHAKQEAgLTE4Miw3ICsxODIsNyBAQCB2b2lkIFBhbm5l
ck5vZGU6OnNldFBhbm5pbmdNb2RlbChQYW5uaW5nTW9kZWxUeXBlIG1vZGVsKQogewogICAgIGlm
ICghbV9wYW5uZXIuZ2V0KCkgfHwgbW9kZWwgIT0gbV9wYW5uaW5nTW9kZWwpIHsKICAgICAgICAg
Ly8gVGhpcyBzeW5jaHJvbml6ZXMgd2l0aCBwcm9jZXNzKCkuCi0gICAgICAgIHN0ZDo6bG9ja19n
dWFyZDxMb2NrPiBsb2NrKG1fcGFubmVyTXV0ZXgpOworICAgICAgICBhdXRvIGxvY2tlciA9IGhv
bGRMb2NrKG1fcGFubmVyTXV0ZXgpOwogCiAgICAgICAgIG1fcGFubmVyID0gUGFubmVyOjpjcmVh
dGUobW9kZWwsIHNhbXBsZVJhdGUoKSwgbV9ocnRmRGF0YWJhc2VMb2FkZXIuZ2V0KCkpOwogICAg
ICAgICBtX3Bhbm5pbmdNb2RlbCA9IG1vZGVsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9XYXZlU2hhcGVyUHJvY2Vzc29yLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vV2F2ZVNoYXBlclByb2Nlc3Nvci5jcHAKaW5kZXggYmZlNWUwZTQ3
ZmI4NGEyOGM2M2M2ZTI4YjMyZTBmYzExZTVjNjdiMS4uNzc1NjQ5OWRlNDQ1NTYwYjhjYTdhMzc0
OTAxYTkwZmYxYzcwMzgwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9XYXZlU2hhcGVyUHJvY2Vzc29yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL1dhdmVTaGFwZXJQcm9jZXNzb3IuY3BwCkBAIC01Miw3ICs1Miw3IEBAIHN0ZDo6
dW5pcXVlX3B0cjxBdWRpb0RTUEtlcm5lbD4gV2F2ZVNoYXBlclByb2Nlc3Nvcjo6Y3JlYXRlS2Vy
bmVsKCkKIHZvaWQgV2F2ZVNoYXBlclByb2Nlc3Nvcjo6c2V0Q3VydmUoRmxvYXQzMkFycmF5KiBj
dXJ2ZSkKIHsKICAgICAvLyBUaGlzIHN5bmNocm9uaXplcyB3aXRoIHByb2Nlc3MoKS4KLSAgICBz
dGQ6OmxvY2tfZ3VhcmQ8TG9jaz4gbG9jayhtX3Byb2Nlc3NNdXRleCk7CisgICAgYXV0byBsb2Nr
ZXIgPSBob2xkTG9jayhtX3Byb2Nlc3NNdXRleCk7CiAKICAgICBtX2N1cnZlID0gY3VydmU7CiB9
CkBAIC02MCw3ICs2MCw3IEBAIHZvaWQgV2F2ZVNoYXBlclByb2Nlc3Nvcjo6c2V0Q3VydmUoRmxv
YXQzMkFycmF5KiBjdXJ2ZSkKIHZvaWQgV2F2ZVNoYXBlclByb2Nlc3Nvcjo6c2V0T3ZlcnNhbXBs
ZShPdmVyU2FtcGxlVHlwZSBvdmVyc2FtcGxlKQogewogICAgIC8vIFRoaXMgc3luY2hyb25pemVz
IHdpdGggcHJvY2VzcygpLgotICAgIHN0ZDo6bG9ja19ndWFyZDxMb2NrPiBsb2NrKG1fcHJvY2Vz
c011dGV4KTsKKyAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fcHJvY2Vzc011dGV4KTsKIAog
ICAgIG1fb3ZlcnNhbXBsZSA9IG92ZXJzYW1wbGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZS5jcHAKaW5kZXggMjE4YjBjNGM5MDA5MDZlN2I1NmQw
MGE4NzdlMWVjYTQzZTRmODNlMC4uYWQzOTUyYTA3MmNmNjVkZGQyNDhjMWJlODk2OTM0OTUxZTNl
NTZkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRh
YmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFz
ZS5jcHAKQEAgLTIwNiw3ICsyMDYsNyBAQCBEYXRhYmFzZTo6RGF0YWJhc2UoRGF0YWJhc2VDb250
ZXh0JiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgZQogICAgICwg
bV9kYXRhYmFzZUF1dGhvcml6ZXIoRGF0YWJhc2VBdXRob3JpemVyOjpjcmVhdGUodW5xdWFsaWZp
ZWRJbmZvVGFibGVOYW1lKSkKIHsKICAgICB7Ci0gICAgICAgIHN0ZDo6bG9ja19ndWFyZDxMb2Nr
PiBsb2NrZXIoZ3VpZE11dGV4KTsKKyAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhndWlk
TXV0ZXgpOwogCiAgICAgICAgIG1fZ3VpZCA9IGd1aWRGb3JPcmlnaW5BbmROYW1lKHNlY3VyaXR5
T3JpZ2luKCkuc2VjdXJpdHlPcmlnaW4oKS0+dG9TdHJpbmcoKSwgbmFtZSk7CiAgICAgICAgIGd1
aWRUb0RhdGFiYXNlTWFwKCkuZW5zdXJlKG1fZ3VpZCwgW10gewpAQCAtMzUzLDcgKzM1Myw3IEBA
IEV4Y2VwdGlvbk9yPHZvaWQ+IERhdGFiYXNlOjpwZXJmb3JtT3BlbkFuZFZlcmlmeShib29sIHNo
b3VsZFNldFZlcnNpb25Jbk5ld0RhdGFiCiAKICAgICBTdHJpbmcgY3VycmVudFZlcnNpb247CiAg
ICAgewotICAgICAgICBzdGQ6OmxvY2tfZ3VhcmQ8TG9jaz4gbG9ja2VyKGd1aWRNdXRleCk7Cisg
ICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2soZ3VpZE11dGV4KTsKIAogICAgICAgICBhdXRv
IGVudHJ5ID0gZ3VpZFRvVmVyc2lvbk1hcCgpLmZpbmQobV9ndWlkKTsKICAgICAgICAgaWYgKGVu
dHJ5ICE9IGd1aWRUb1ZlcnNpb25NYXAoKS5lbmQoKSkgewpAQCAtNDQyLDcgKzQ0Miw3IEBAIHZv
aWQgRGF0YWJhc2U6OmNsb3NlRGF0YWJhc2UoKQogICAgIERhdGFiYXNlVHJhY2tlcjo6c2luZ2xl
dG9uKCkucmVtb3ZlT3BlbkRhdGFiYXNlKCp0aGlzKTsKIAogICAgIHsKLSAgICAgICAgc3RkOjps
b2NrX2d1YXJkPExvY2s+IGxvY2tlcihndWlkTXV0ZXgpOworICAgICAgICBhdXRvIGxvY2tlciA9
IGhvbGRMb2NrKGd1aWRNdXRleCk7CiAKICAgICAgICAgYXV0byBpdCA9IGd1aWRUb0RhdGFiYXNl
TWFwKCkuZmluZChtX2d1aWQpOwogICAgICAgICBBU1NFUlQoaXQgIT0gZ3VpZFRvRGF0YWJhc2VN
YXAoKS5lbmQoKSk7CkBAIC01MDAsMTQgKzUwMCwxNCBAQCB2b2lkIERhdGFiYXNlOjpzZXRFeHBl
Y3RlZFZlcnNpb24oY29uc3QgU3RyaW5nJiB2ZXJzaW9uKQogCiBTdHJpbmcgRGF0YWJhc2U6Omdl
dENhY2hlZFZlcnNpb24oKSBjb25zdAogewotICAgIHN0ZDo6bG9ja19ndWFyZDxMb2NrPiBsb2Nr
ZXIoZ3VpZE11dGV4KTsKKyAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKGd1aWRNdXRleCk7CiAK
ICAgICByZXR1cm4gZ3VpZFRvVmVyc2lvbk1hcCgpLmdldChtX2d1aWQpLmlzb2xhdGVkQ29weSgp
OwogfQogCiB2b2lkIERhdGFiYXNlOjpzZXRDYWNoZWRWZXJzaW9uKGNvbnN0IFN0cmluZyYgYWN0
dWFsVmVyc2lvbikKIHsKLSAgICBzdGQ6OmxvY2tfZ3VhcmQ8TG9jaz4gbG9ja2VyKGd1aWRNdXRl
eCk7CisgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhndWlkTXV0ZXgpOwogCiAgICAgdXBkYXRl
R1VJRFZlcnNpb25NYXAobV9ndWlkLCBhY3R1YWxWZXJzaW9uKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VNYW5hZ2VyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VNYW5hZ2VyLmNwcAppbmRl
eCA3MTZmNTA3MzE3NTVjYmY4MDA0NjIzMDMwMTEzNTg2M2U0M2RiYmFmLi41ZWY2Njg3YzE3YjIz
NTVhOTFmMmU2NjhkNjliZWJiZGYzNzQxYWIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZU1hbmFnZXIuY3BwCkBAIC0xODEsMTMgKzE4
MSwxMyBAQCBFeGNlcHRpb25PcjxSZWY8RGF0YWJhc2U+PiBEYXRhYmFzZU1hbmFnZXI6OnRyeVRv
T3BlbkRhdGFiYXNlQmFja2VuZChEb2N1bWVudCYgZAogCiB2b2lkIERhdGFiYXNlTWFuYWdlcjo6
YWRkUHJvcG9zZWREYXRhYmFzZShQcm9wb3NlZERhdGFiYXNlJiBkYXRhYmFzZSkKIHsKLSAgICBz
dGQ6OmxvY2tfZ3VhcmQ8TG9jaz4gbG9jayB7IG1fcHJvcG9zZWREYXRhYmFzZXNNdXRleCB9Owor
ICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9wcm9wb3NlZERhdGFiYXNlc011dGV4KTsKICAg
ICBtX3Byb3Bvc2VkRGF0YWJhc2VzLmFkZCgmZGF0YWJhc2UpOwogfQogCiB2b2lkIERhdGFiYXNl
TWFuYWdlcjo6cmVtb3ZlUHJvcG9zZWREYXRhYmFzZShQcm9wb3NlZERhdGFiYXNlJiBkYXRhYmFz
ZSkKIHsKLSAgICBzdGQ6OmxvY2tfZ3VhcmQ8TG9jaz4gbG9jayB7IG1fcHJvcG9zZWREYXRhYmFz
ZXNNdXRleCB9OworICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9wcm9wb3NlZERhdGFiYXNl
c011dGV4KTsKICAgICBtX3Byb3Bvc2VkRGF0YWJhc2VzLnJlbW92ZSgmZGF0YWJhc2UpOwogfQog
CkBAIC0yMzcsNyArMjM3LDcgQEAgdm9pZCBEYXRhYmFzZU1hbmFnZXI6OnN0b3BEYXRhYmFzZXMo
RG9jdW1lbnQmIGRvY3VtZW50LCBEYXRhYmFzZVRhc2tTeW5jaHJvbml6ZXIKIFN0cmluZyBEYXRh
YmFzZU1hbmFnZXI6OmZ1bGxQYXRoRm9yRGF0YWJhc2UoU2VjdXJpdHlPcmlnaW4mIG9yaWdpbiwg
Y29uc3QgU3RyaW5nJiBuYW1lLCBib29sIGNyZWF0ZUlmRG9lc05vdEV4aXN0KQogewogICAgIHsK
LSAgICAgICAgc3RkOjpsb2NrX2d1YXJkPExvY2s+IGxvY2sgeyBtX3Byb3Bvc2VkRGF0YWJhc2Vz
TXV0ZXggfTsKKyAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX3Byb3Bvc2VkRGF0YWJh
c2VzTXV0ZXgpOwogICAgICAgICBmb3IgKGF1dG8qIHByb3Bvc2VkRGF0YWJhc2UgOiBtX3Byb3Bv
c2VkRGF0YWJhc2VzKSB7CiAgICAgICAgICAgICBpZiAocHJvcG9zZWREYXRhYmFzZS0+ZGV0YWls
cygpLm5hbWUoKSA9PSBuYW1lICYmIHByb3Bvc2VkRGF0YWJhc2UtPm9yaWdpbigpLmVxdWFsKCZv
cmlnaW4pKQogICAgICAgICAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKQEAgLTI0OSw3ICsyNDks
NyBAQCBTdHJpbmcgRGF0YWJhc2VNYW5hZ2VyOjpmdWxsUGF0aEZvckRhdGFiYXNlKFNlY3VyaXR5
T3JpZ2luJiBvcmlnaW4sIGNvbnN0IFN0cmluZwogRGF0YWJhc2VEZXRhaWxzIERhdGFiYXNlTWFu
YWdlcjo6ZGV0YWlsc0Zvck5hbWVBbmRPcmlnaW4oY29uc3QgU3RyaW5nJiBuYW1lLCBTZWN1cml0
eU9yaWdpbiYgb3JpZ2luKQogewogICAgIHsKLSAgICAgICAgc3RkOjpsb2NrX2d1YXJkPExvY2s+
IGxvY2sgeyBtX3Byb3Bvc2VkRGF0YWJhc2VzTXV0ZXggfTsKKyAgICAgICAgYXV0byBsb2NrZXIg
PSBob2xkTG9jayhtX3Byb3Bvc2VkRGF0YWJhc2VzTXV0ZXgpOwogICAgICAgICBmb3IgKGF1dG8q
IHByb3Bvc2VkRGF0YWJhc2UgOiBtX3Byb3Bvc2VkRGF0YWJhc2VzKSB7CiAgICAgICAgICAgICBp
ZiAocHJvcG9zZWREYXRhYmFzZS0+ZGV0YWlscygpLm5hbWUoKSA9PSBuYW1lICYmIHByb3Bvc2Vk
RGF0YWJhc2UtPm9yaWdpbigpLmVxdWFsKCZvcmlnaW4pKSB7CiAgICAgICAgICAgICAgICAgQVNT
RVJUKCZwcm9wb3NlZERhdGFiYXNlLT5kZXRhaWxzKCkudGhyZWFkKCkgPT0gJlRocmVhZDo6Y3Vy
cmVudCgpIHx8IGlzTWFpblRocmVhZCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Ny
eXB0by9DcnlwdG9BbGdvcml0aG1SZWdpc3RyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8v
Q3J5cHRvQWxnb3JpdGhtUmVnaXN0cnkuY3BwCmluZGV4IDdhNDgwMWFiMGE0NzUyYjBkMWNkNGQy
NzVhMDM2MzYwOWZjZTBhOGYuLjIyZjI3N2E4YWQ5NWViMGQ2NDVlNGI0ZDg0MDk0ODUwNTQ2ODQ4
MGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9DcnlwdG9BbGdvcml0aG1SZWdp
c3RyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL0NyeXB0b0FsZ29yaXRobVJlZ2lz
dHJ5LmNwcApAQCAtNTIsNyArNTIsNyBAQCBPcHRpb25hbDxDcnlwdG9BbGdvcml0aG1JZGVudGlm
aWVyPiBDcnlwdG9BbGdvcml0aG1SZWdpc3RyeTo6aWRlbnRpZmllcihjb25zdCBTdAogICAgIGlm
IChuYW1lLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIAotICAgIHN0
ZDo6bG9ja19ndWFyZDxMb2NrPiBsb2NrKHJlZ2lzdHJ5TXV0ZXgpOworICAgIGF1dG8gbG9ja2Vy
ID0gaG9sZExvY2socmVnaXN0cnlNdXRleCk7CiAKICAgICAvLyBGSVhNRTogSG93IGlzIGl0IGhl
bHBmdWwgdG8gY2FsbCBpc29sYXRlZENvcHkgb24gdGhlIGFyZ3VtZW50IHRvIGZpbmQ/CiAgICAg
YXV0byBpZGVudGlmaWVyID0gbV9pZGVudGlmaWVycy5maW5kKG5hbWUuaXNvbGF0ZWRDb3B5KCkp
OwpAQCAtNjQsNyArNjQsNyBAQCBPcHRpb25hbDxDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyPiBD
cnlwdG9BbGdvcml0aG1SZWdpc3RyeTo6aWRlbnRpZmllcihjb25zdCBTdAogCiBTdHJpbmcgQ3J5
cHRvQWxnb3JpdGhtUmVnaXN0cnk6Om5hbWUoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBpZGVu
dGlmaWVyKQogewotICAgIHN0ZDo6bG9ja19ndWFyZDxMb2NrPiBsb2NrKHJlZ2lzdHJ5TXV0ZXgp
OworICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2socmVnaXN0cnlNdXRleCk7CiAKICAgICBhdXRv
IGNvbnRydWN0b3IgPSBtX2NvbnN0cnVjdG9ycy5maW5kKHN0YXRpY19jYXN0PHVuc2lnbmVkPihp
ZGVudGlmaWVyKSk7CiAgICAgaWYgKGNvbnRydWN0b3IgPT0gbV9jb25zdHJ1Y3RvcnMuZW5kKCkp
CkBAIC03NSw3ICs3NSw3IEBAIFN0cmluZyBDcnlwdG9BbGdvcml0aG1SZWdpc3RyeTo6bmFtZShD
cnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGlkZW50aWZpZXIpCiAKIFJlZlB0cjxDcnlwdG9BbGdv
cml0aG0+IENyeXB0b0FsZ29yaXRobVJlZ2lzdHJ5OjpjcmVhdGUoQ3J5cHRvQWxnb3JpdGhtSWRl
bnRpZmllciBpZGVudGlmaWVyKQogewotICAgIHN0ZDo6bG9ja19ndWFyZDxMb2NrPiBsb2NrKHJl
Z2lzdHJ5TXV0ZXgpOworICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2socmVnaXN0cnlNdXRleCk7
CiAKICAgICBhdXRvIGNvbnRydWN0b3IgPSBtX2NvbnN0cnVjdG9ycy5maW5kKHN0YXRpY19jYXN0
PHVuc2lnbmVkPihpZGVudGlmaWVyKSk7CiAgICAgaWYgKGNvbnRydWN0b3IgPT0gbV9jb25zdHJ1
Y3RvcnMuZW5kKCkpCkBAIC04Niw3ICs4Niw3IEBAIFJlZlB0cjxDcnlwdG9BbGdvcml0aG0+IENy
eXB0b0FsZ29yaXRobVJlZ2lzdHJ5OjpjcmVhdGUoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllCiAK
IHZvaWQgQ3J5cHRvQWxnb3JpdGhtUmVnaXN0cnk6OnJlZ2lzdGVyQWxnb3JpdGhtKGNvbnN0IFN0
cmluZyYgbmFtZSwgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBpZGVudGlmaWVyLCBDcnlwdG9B
bGdvcml0aG1Db25zdHJ1Y3RvciBjb25zdHJ1Y3RvcikKIHsKLSAgICBzdGQ6OmxvY2tfZ3VhcmQ8
TG9jaz4gbG9jayhyZWdpc3RyeU11dGV4KTsKKyAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKHJl
Z2lzdHJ5TXV0ZXgpOwogCiAgICAgQVNTRVJUKCFtX2lkZW50aWZpZXJzLmNvbnRhaW5zKG5hbWUp
KTsKICAgICBBU1NFUlQoIW1fY29uc3RydWN0b3JzLmNvbnRhaW5zKHN0YXRpY19jYXN0PHVuc2ln
bmVkPihpZGVudGlmaWVyKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2FnZW50cy9XZWJIZWFwQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50
cy9XZWJIZWFwQWdlbnQuY3BwCmluZGV4IDNjYmZiODM3NWU2ZmZkNzZjMDc2NTlkNzFiOWExOWI0
YTFhYmFlM2QuLmFjZjNjOWYxNTk3ZWRlOWY3OTYwMGQyZDJhNWY4MTY4ZTM4MDIzMTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvV2ViSGVhcEFnZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL1dlYkhlYXBBZ2VudC5jcHAKQEAg
LTY0LDcgKzY0LDcgQEAgU2VuZEdhcmJhZ2VDb2xsZWN0aW9uRXZlbnRzVGFzazo6U2VuZEdhcmJh
Z2VDb2xsZWN0aW9uRXZlbnRzVGFzayhXZWJIZWFwQWdlbnQmIGEKIHZvaWQgU2VuZEdhcmJhZ2VD
b2xsZWN0aW9uRXZlbnRzVGFzazo6YWRkR2FyYmFnZUNvbGxlY3Rpb24oR2FyYmFnZUNvbGxlY3Rp
b25EYXRhJiYgY29sbGVjdGlvbikKIHsKICAgICB7Ci0gICAgICAgIHN0ZDo6bG9ja19ndWFyZDxM
b2NrPiBsb2NrKG1fbXV0ZXgpOworICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fbXV0
ZXgpOwogICAgICAgICBtX2NvbGxlY3Rpb25zLmFwcGVuZChXVEZNb3ZlKGNvbGxlY3Rpb24pKTsK
ICAgICB9CiAKQEAgLTc1LDcgKzc1LDcgQEAgdm9pZCBTZW5kR2FyYmFnZUNvbGxlY3Rpb25FdmVu
dHNUYXNrOjphZGRHYXJiYWdlQ29sbGVjdGlvbihHYXJiYWdlQ29sbGVjdGlvbkRhdGEKIHZvaWQg
U2VuZEdhcmJhZ2VDb2xsZWN0aW9uRXZlbnRzVGFzazo6cmVzZXQoKQogewogICAgIHsKLSAgICAg
ICAgc3RkOjpsb2NrX2d1YXJkPExvY2s+IGxvY2sobV9tdXRleCk7CisgICAgICAgIGF1dG8gbG9j
a2VyID0gaG9sZExvY2sobV9tdXRleCk7CiAgICAgICAgIG1fY29sbGVjdGlvbnMuY2xlYXIoKTsK
ICAgICB9CiAKQEAgLTg3LDcgKzg3LDcgQEAgdm9pZCBTZW5kR2FyYmFnZUNvbGxlY3Rpb25FdmVu
dHNUYXNrOjp0aW1lckZpcmVkKCkKICAgICBWZWN0b3I8R2FyYmFnZUNvbGxlY3Rpb25EYXRhPiBj
b2xsZWN0aW9uc1RvU2VuZDsKIAogICAgIHsKLSAgICAgICAgc3RkOjpsb2NrX2d1YXJkPExvY2s+
IGxvY2sobV9tdXRleCk7CisgICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9tdXRleCk7
CiAgICAgICAgIG1fY29sbGVjdGlvbnMuc3dhcChjb2xsZWN0aW9uc1RvU2VuZCk7CiAgICAgfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUaHJl
YWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVGhyZWFkLmNw
cAppbmRleCBiMTQ3ZWNmYzBkNDRjN2Q1NmY2NzJmYTEzYjQxMTJmYjkzYzMxNGJjLi45MmE2MDg2
MTNkZTAxMmViMThmZmYxMzJjZjQ1MWVkZmEzODJjYzY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUaHJlYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RocmVhZC5jcHAKQEAgLTQ5LDcgKzQ5LDcgQEAg
dm9pZCBTY3JvbGxpbmdUaHJlYWQ6OmRpc3BhdGNoKEZ1bmN0aW9uPHZvaWQgKCk+JiYgZnVuY3Rp
b24pCiAgICAgc2Nyb2xsaW5nVGhyZWFkLmNyZWF0ZVRocmVhZElmTmVlZGVkKCk7CiAKICAgICB7
Ci0gICAgICAgIHN0ZDo6bG9ja19ndWFyZDxMb2NrPiBsb2NrKHNjcm9sbGluZ1RocmVhZC5tX2Z1
bmN0aW9uc011dGV4KTsKKyAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhzY3JvbGxpbmdU
aHJlYWQubV9mdW5jdGlvbnNNdXRleCk7CiAgICAgICAgIHNjcm9sbGluZ1RocmVhZC5tX2Z1bmN0
aW9ucy5hcHBlbmQoV1RGTW92ZShmdW5jdGlvbikpOwogICAgIH0KIApAQCAtOTYsNyArOTYsNyBA
QCB2b2lkIFNjcm9sbGluZ1RocmVhZDo6ZGlzcGF0Y2hGdW5jdGlvbnNGcm9tU2Nyb2xsaW5nVGhy
ZWFkKCkKICAgICBWZWN0b3I8RnVuY3Rpb248dm9pZCAoKT4+IGZ1bmN0aW9uczsKICAgICAKICAg
ICB7Ci0gICAgICAgIHN0ZDo6bG9ja19ndWFyZDxMb2NrPiBsb2NrKG1fZnVuY3Rpb25zTXV0ZXgp
OworICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fZnVuY3Rpb25zTXV0ZXgpOwogICAg
ICAgICBmdW5jdGlvbnMgPSBXVEZNb3ZlKG1fZnVuY3Rpb25zKTsKICAgICB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2dlbmVyaWMvU2Nyb2xsaW5nVGhyZWFk
R2VuZXJpYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9nZW5lcmljL1Njcm9s
bGluZ1RocmVhZEdlbmVyaWMuY3BwCmluZGV4IGY2OTllMGUwODE4NzI4NzNkNjMzOGVmYmQxZjgw
NTcyM2UyNTVjNGIuLjhhNGU3MWI1NmYwNGZkODA4ZmNmMDc1ZTQ1NjM5MGQ4Njc1YjE3MjIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2dlbmVyaWMvU2Nyb2xsaW5n
VGhyZWFkR2VuZXJpYy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvZ2Vu
ZXJpYy9TY3JvbGxpbmdUaHJlYWRHZW5lcmljLmNwcApAQCAtMzUsNyArMzUsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiB2b2lkIFNjcm9sbGluZ1RocmVhZDo6aW5pdGlhbGl6ZVJ1bkxvb3AoKQog
ewogICAgIHsKLSAgICAgICAgc3RkOjpsb2NrX2d1YXJkPExvY2s+IGxvY2sobV9pbml0aWFsaXpl
UnVuTG9vcE11dGV4KTsKKyAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX2luaXRpYWxp
emVSdW5Mb29wTXV0ZXgpOwogICAgICAgICBtX3J1bkxvb3AgPSAmUnVuTG9vcDo6Y3VycmVudCgp
OwogICAgICAgICBtX2luaXRpYWxpemVSdW5Mb29wQ29uZGl0aW9uVmFyaWFibGUubm90aWZ5QWxs
KCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFj
L1Njcm9sbGluZ1RocmVhZE1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21h
Yy9TY3JvbGxpbmdUaHJlYWRNYWMubW0KaW5kZXggNmQyY2RhMDk0MTA1ZjU2NDRkOGM0OTUzMTRi
ZmM0NzE2NTViMWI0My4uZjI1OWQ2NjdjZGRlYjRmNWNiYjAwZGIwOTM2ZDY1ZDI1NGRlMTBhNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1Ro
cmVhZE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xs
aW5nVGhyZWFkTWFjLm1tCkBAIC0zNiw3ICszNiw3IEBAIHZvaWQgU2Nyb2xsaW5nVGhyZWFkOjpp
bml0aWFsaXplUnVuTG9vcCgpCiB7CiAgICAgLy8gSW5pdGlhbGl6ZSB0aGUgcnVuIGxvb3AuCiAg
ICAgewotICAgICAgICBzdGQ6OmxvY2tfZ3VhcmQ8TG9jaz4gbG9jayhtX2luaXRpYWxpemVSdW5M
b29wTXV0ZXgpOworICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1faW5pdGlhbGl6ZVJ1
bkxvb3BNdXRleCk7CiAKICAgICAgICAgbV90aHJlYWRSdW5Mb29wID0gQ0ZSdW5Mb29wR2V0Q3Vy
cmVudCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZl
cmJDb252b2x2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2ZXJiQ29u
dm9sdmVyLmNwcAppbmRleCBhMTJmMTY1NGUwNWU4ZTY2MTlkMjdkM2MxMWU1YTEyYmU0YzgzZDNl
Li45YzNmMTA1ZmY3ZGRiYjRiYWQ0MDUwNWZjOWU1YzRmZTMzNjZjNzVlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZlcmJDb252b2x2ZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYkNvbnZvbHZlci5jcHAKQEAgLTEzNSw3
ICsxMzUsNyBAQCBSZXZlcmJDb252b2x2ZXI6On5SZXZlcmJDb252b2x2ZXIoKQogCiAgICAgICAg
IC8vIFdha2UgdXAgdGhyZWFkIHNvIGl0IGNhbiByZXR1cm4KICAgICAgICAgewotICAgICAgICAg
ICAgc3RkOjpsb2NrX2d1YXJkPExvY2s+IGxvY2sobV9iYWNrZ3JvdW5kVGhyZWFkTXV0ZXgpOwor
ICAgICAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX2JhY2tncm91bmRUaHJlYWRNdXRl
eCk7CiAgICAgICAgICAgICBtX21vcmVJbnB1dEJ1ZmZlcmVkID0gdHJ1ZTsKICAgICAgICAgICAg
IG1fYmFja2dyb3VuZFRocmVhZENvbmRpdGlvblZhcmlhYmxlLm5vdGlmeU9uZSgpOwogICAgICAg
ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakMubW0K
aW5kZXggNmIzYzkyMmU2YWViZTU5MjBhZTY1ZTU3YWYwNWVkZTRhZDAzNzQzZS4uZWQ4MGM0NzIw
MDdhNmM1ZjY0ZjY1YzY5OGM0OGVmZjdlNmFlOTA3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0F1ZGlvU291cmNlUHJvdmlkZXJBVkZP
YmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9BdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQy5tbQpAQCAtODgsNyArODgsNyBAQCBBdWRpb1Nv
dXJjZVByb3ZpZGVyQVZGT2JqQzo6fkF1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDKCkKIHsKICAg
ICBzZXRDbGllbnQobnVsbHB0cik7CiAgICAgaWYgKG1fdGFwU3RvcmFnZSkgewotICAgICAgICBz
dGQ6OmxvY2tfZ3VhcmQ8TG9jaz4gbG9jayhtX3RhcFN0b3JhZ2UtPm11dGV4KTsKKyAgICAgICAg
YXV0byBsb2NrZXIgPSBob2xkTG9jayhtX3RhcFN0b3JhZ2UtPm11dGV4KTsKICAgICAgICAgbV90
YXBTdG9yYWdlLT5fdGhpcyA9IG51bGxwdHI7CiAgICAgfQogCkBAIC0yNTQsNyArMjU0LDcgQEAg
dm9pZCBBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQzo6ZmluYWxpemVDYWxsYmFjayhNVEF1ZGlv
UHJvY2Vzc2luZ1RhcFJlZiB0YXApCiAgICAgVGFwU3RvcmFnZSogdGFwU3RvcmFnZSA9IHN0YXRp
Y19jYXN0PFRhcFN0b3JhZ2UqPihNVEF1ZGlvUHJvY2Vzc2luZ1RhcEdldFN0b3JhZ2UodGFwKSk7
CiAKICAgICB7Ci0gICAgICAgIHN0ZDo6bG9ja19ndWFyZDxMb2NrPiBsb2NrKHRhcFN0b3JhZ2Ut
Pm11dGV4KTsKKyAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayh0YXBTdG9yYWdlLT5tdXRl
eCk7CiAgICAgICAgIGlmICh0YXBTdG9yYWdlLT5fdGhpcykKICAgICAgICAgICAgIHRhcFN0b3Jh
Z2UtPl90aGlzLT5maW5hbGl6ZSgpOwogICAgIH0KQEAgLTI2Niw3ICsyNjYsNyBAQCB2b2lkIEF1
ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDOjpwcmVwYXJlQ2FsbGJhY2soTVRBdWRpb1Byb2Nlc3Np
bmdUYXBSZWYgdGFwLCBDTQogICAgIEFTU0VSVCh0YXApOwogICAgIFRhcFN0b3JhZ2UqIHRhcFN0
b3JhZ2UgPSBzdGF0aWNfY2FzdDxUYXBTdG9yYWdlKj4oTVRBdWRpb1Byb2Nlc3NpbmdUYXBHZXRT
dG9yYWdlKHRhcCkpOwogCi0gICAgc3RkOjpsb2NrX2d1YXJkPExvY2s+IGxvY2sodGFwU3RvcmFn
ZS0+bXV0ZXgpOworICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sodGFwU3RvcmFnZS0+bXV0ZXgp
OwogCiAgICAgaWYgKHRhcFN0b3JhZ2UtPl90aGlzKQogICAgICAgICB0YXBTdG9yYWdlLT5fdGhp
cy0+cHJlcGFyZShtYXhGcmFtZXMsIHByb2Nlc3NpbmdGb3JtYXQpOwpAQCAtMjc3LDcgKzI3Nyw3
IEBAIHZvaWQgQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakM6OnVucHJlcGFyZUNhbGxiYWNrKE1U
QXVkaW9Qcm9jZXNzaW5nVGFwUmVmIHRhcCkKICAgICBBU1NFUlQodGFwKTsKICAgICBUYXBTdG9y
YWdlKiB0YXBTdG9yYWdlID0gc3RhdGljX2Nhc3Q8VGFwU3RvcmFnZSo+KE1UQXVkaW9Qcm9jZXNz
aW5nVGFwR2V0U3RvcmFnZSh0YXApKTsKIAotICAgIHN0ZDo6bG9ja19ndWFyZDxMb2NrPiBsb2Nr
KHRhcFN0b3JhZ2UtPm11dGV4KTsKKyAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKHRhcFN0b3Jh
Z2UtPm11dGV4KTsKIAogICAgIGlmICh0YXBTdG9yYWdlLT5fdGhpcykKICAgICAgICAgdGFwU3Rv
cmFnZS0+X3RoaXMtPnVucHJlcGFyZSgpOwpAQCAtMjg4LDcgKzI4OCw3IEBAIHZvaWQgQXVkaW9T
b3VyY2VQcm92aWRlckFWRk9iakM6OnByb2Nlc3NDYWxsYmFjayhNVEF1ZGlvUHJvY2Vzc2luZ1Rh
cFJlZiB0YXAsIENNCiAgICAgQVNTRVJUKHRhcCk7CiAgICAgVGFwU3RvcmFnZSogdGFwU3RvcmFn
ZSA9IHN0YXRpY19jYXN0PFRhcFN0b3JhZ2UqPihNVEF1ZGlvUHJvY2Vzc2luZ1RhcEdldFN0b3Jh
Z2UodGFwKSk7CiAKLSAgICBzdGQ6OmxvY2tfZ3VhcmQ8TG9jaz4gbG9jayh0YXBTdG9yYWdlLT5t
dXRleCk7CisgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayh0YXBTdG9yYWdlLT5tdXRleCk7CiAK
ICAgICBpZiAodGFwU3RvcmFnZS0+X3RoaXMpCiAgICAgICAgIHRhcFN0b3JhZ2UtPl90aGlzLT5w
cm9jZXNzKHRhcCwgbnVtYmVyRnJhbWVzLCBmbGFncywgYnVmZmVyTGlzdEluT3V0LCBudW1iZXJG
cmFtZXNPdXQsIGZsYWdzT3V0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL0ZvbnRDYWNoZUNvcmVUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRDYWNoZUNvcmVUZXh0LmNwcAppbmRleCAwYzkxZTMz
MmE0MzJjNjRlYjE5OWZjMjE5MzUyYzc1MDkzOTVhZDc0Li40OWIwYjcxMzFmM2E3NmUwZGMzNzVk
YzU0MmY5MWZiNzBiNzI1ODZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jb2NvYS9Gb250Q2FjaGVDb3JlVGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udENhY2hlQ29yZVRleHQuY3BwCkBAIC05MzQsNyAr
OTM0LDcgQEAgY2xhc3MgRm9udERhdGFiYXNlIHsKICAgICB7CiAgICAgICAgIGF1dG8gZm9sZGVk
ID0gRm9udENhc2NhZGVEZXNjcmlwdGlvbjo6Zm9sZGVkRmFtaWx5TmFtZShmYW1pbHlOYW1lKTsK
ICAgICAgICAgewotICAgICAgICAgICAgc3RkOjpsb2NrX2d1YXJkPExvY2s+IGxvY2tlcihtX2Zh
bWlseU5hbWVUb0ZvbnREZXNjcmlwdG9yc0xvY2spOworICAgICAgICAgICAgYXV0byBsb2NrZXIg
PSBob2xkTG9jayhtX2ZhbWlseU5hbWVUb0ZvbnREZXNjcmlwdG9yc0xvY2spOwogICAgICAgICAg
ICAgYXV0byBpdCA9IG1fZmFtaWx5TmFtZVRvRm9udERlc2NyaXB0b3JzLmZpbmQoZm9sZGVkKTsK
ICAgICAgICAgICAgIGlmIChpdCAhPSBtX2ZhbWlseU5hbWVUb0ZvbnREZXNjcmlwdG9ycy5lbmQo
KSkKICAgICAgICAgICAgICAgICByZXR1cm4gaXQtPnZhbHVlOwpAQCAtOTYwLDcgKzk2MCw3IEBA
IGNsYXNzIEZvbnREYXRhYmFzZSB7CiAgICAgICAgICAgICByZXR1cm4gSW5zdGFsbGVkRm9udEZh
bWlseSgpOwogICAgICAgICB9KCk7CiAKLSAgICAgICAgc3RkOjpsb2NrX2d1YXJkPExvY2s+IGxv
Y2tlcihtX2ZhbWlseU5hbWVUb0ZvbnREZXNjcmlwdG9yc0xvY2spOworICAgICAgICBhdXRvIGxv
Y2tlciA9IGhvbGRMb2NrKG1fZmFtaWx5TmFtZVRvRm9udERlc2NyaXB0b3JzTG9jayk7CiAgICAg
ICAgIHJldHVybiBtX2ZhbWlseU5hbWVUb0ZvbnREZXNjcmlwdG9ycy5hZGQoZm9sZGVkLmlzb2xh
dGVkQ29weSgpLCBXVEZNb3ZlKGluc3RhbGxlZEZvbnRGYW1pbHkpKS5pdGVyYXRvci0+dmFsdWU7
CiAgICAgfQogCkBAIC05ODQsNyArOTg0LDcgQEAgY2xhc3MgRm9udERhdGFiYXNlIHsKICAgICB2
b2lkIGNsZWFyKCkKICAgICB7CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0ZDo6bG9ja19ndWFy
ZDxMb2NrPiBsb2NrZXIobV9mYW1pbHlOYW1lVG9Gb250RGVzY3JpcHRvcnNMb2NrKTsKKyAgICAg
ICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9mYW1pbHlOYW1lVG9Gb250RGVzY3JpcHRv
cnNMb2NrKTsKICAgICAgICAgICAgIG1fZmFtaWx5TmFtZVRvRm9udERlc2NyaXB0b3JzLmNsZWFy
KCk7CiAgICAgICAgIH0KICAgICAgICAgbV9wb3N0U2NyaXB0TmFtZVRvRm9udERlc2NyaXB0b3Jz
LmNsZWFyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dl
YkNvcmVUaHJlYWRSdW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dhay9XZWJD
b3JlVGhyZWFkUnVuLmNwcAppbmRleCA4ZWYxNjU3MTg4NjFiNzBkNzVhNjUyNDVkMjE0ZmUxM2Uz
YzgyZjY0Li5lZmE4NDY0NWJhMzk4YTRiZTFiY2RlMmRlYzNkMDEwOGE0Mzk3NTUzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dlYkNvcmVUaHJlYWRSdW4uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsvV2ViQ29yZVRocmVhZFJ1bi5j
cHAKQEAgLTUyLDcgKzUyLDcgQEAgY2xhc3MgV2ViVGhyZWFkQmxvY2tTdGF0ZSB7CiAKICAgICB2
b2lkIHNldENvbXBsZXRlZCgpCiAgICAgewotICAgICAgICBzdGQ6OmxvY2tfZ3VhcmQ8TG9jaz4g
bG9jayhtX3N0YXRlTXV0ZXgpOworICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fc3Rh
dGVNdXRleCk7CiAKICAgICAgICAgQVNTRVJUKCFtX2NvbXBsZXRlZCk7CiAgICAgICAgIG1fY29t
cGxldGVkID0gdHJ1ZTsKQEAgLTEyNCw3ICsxMjQsNyBAQCBzdGF0aWMgdm9pZCBIYW5kbGVSdW5T
b3VyY2Uodm9pZCAqaW5mbykKIAogICAgIFdlYlRocmVhZFJ1blF1ZXVlIHF1ZXVlQ29weTsKICAg
ICB7Ci0gICAgICAgIHN0ZDo6bG9ja19ndWFyZDxMb2NrPiBsb2NrKHJ1blF1ZXVlTXV0ZXgpOwor
ICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKHJ1blF1ZXVlTXV0ZXgpOwogICAgICAgICBx
dWV1ZUNvcHkgPSAqcnVuUXVldWU7CiAgICAgICAgIHJ1blF1ZXVlLT5jbGVhcigpOwogICAgIH0K
QEAgLTE0OCw3ICsxNDgsNyBAQCBzdGF0aWMgdm9pZCBfV2ViVGhyZWFkUnVuKHZvaWQgKF5ibG9j
aykodm9pZCksIGJvb2wgc3luY2hyb25vdXMpCiAgICAgICAgIHN0YXRlID0gbmV3IFdlYlRocmVh
ZEJsb2NrU3RhdGU7CiAKICAgICB7Ci0gICAgICAgIHN0ZDo6bG9ja19ndWFyZDxMb2NrPiBsb2Nr
KHJ1blF1ZXVlTXV0ZXgpOworICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKHJ1blF1ZXVl
TXV0ZXgpOwogICAgICAgICBydW5RdWV1ZS0+YXBwZW5kKFdlYlRocmVhZEJsb2NrKGJsb2NrLCBz
dGF0ZSkpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vbWFjL1dlYkF1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDLm1tIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1dlYkF1ZGlvU291cmNlUHJvdmlkZXJBVkZP
YmpDLm1tCmluZGV4IGFkODYyZWJmMDFkNmEzNGY0OWE1NmVkYTc3YmQ3MWM1YWM2NjUzY2EuLmFl
OTAyZDFiZDNhZTJkZjkzY2YxMjQ4MTYxY2IzNzIwZTk4Njk0OTQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9XZWJBdWRpb1NvdXJjZVByb3ZpZGVy
QVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMv
V2ViQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakMubW0KQEAgLTU5LDcgKzU5LDcgQEAgV2ViQXVk
aW9Tb3VyY2VQcm92aWRlckFWRk9iakM6OldlYkF1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDKE1l
ZGlhU3RyZWFtVHJhY2tQcmkKIAogV2ViQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakM6On5XZWJB
dWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQygpCiB7Ci0gICAgc3RkOjpsb2NrX2d1YXJkPExvY2s+
IGxvY2sobV9tdXRleCk7CisgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX211dGV4KTsKIAog
ICAgIGlmIChtX2Nvbm5lY3RlZCAmJiBtX2NhcHR1cmVTb3VyY2UpCiAgICAgICAgIG1fY2FwdHVy
ZVNvdXJjZS0+cmVtb3ZlT2JzZXJ2ZXIoKnRoaXMpOwpAQCAtMTIyLDcgKzEyMiw3IEBAIHZvaWQg
V2ViQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakM6OnNldENsaWVudChBdWRpb1NvdXJjZVByb3Zp
ZGVyQ2xpZW50KiBjbGllbnQpCiAKIHZvaWQgV2ViQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakM6
OnByZXBhcmUoY29uc3QgQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uJiBmb3JtYXQpCiB7Ci0g
ICAgc3RkOjpsb2NrX2d1YXJkPExvY2s+IGxvY2sobV9tdXRleCk7CisgICAgYXV0byBsb2NrZXIg
PSBob2xkTG9jayhtX211dGV4KTsKIAogICAgIExPRyhNZWRpYSwgIldlYkF1ZGlvU291cmNlUHJv
dmlkZXJBVkZPYmpDOjpwcmVwYXJlKCVwKSIsIHRoaXMpOwogCkBAIC0xNTMsNyArMTUzLDcgQEAg
dm9pZCBXZWJBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQzo6cHJlcGFyZShjb25zdCBBdWRpb1N0
cmVhbUJhc2ljRGVzY3JpcHRpb24mIGYKIAogdm9pZCBXZWJBdWRpb1NvdXJjZVByb3ZpZGVyQVZG
T2JqQzo6dW5wcmVwYXJlKCkKIHsKLSAgICBzdGQ6OmxvY2tfZ3VhcmQ8TG9jaz4gbG9jayhtX211
dGV4KTsKKyAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fbXV0ZXgpOwogCiAgICAgbV9pbnB1
dERlc2NyaXB0aW9uID0gV1RGOjpudWxsb3B0OwogICAgIG1fb3V0cHV0RGVzY3JpcHRpb24gPSBX
VEY6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2NmL0xvYWRlclJ1bkxvb3BDRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2NmL0xvYWRlclJ1bkxvb3BDRi5jcHAKaW5kZXggZjYzM2ZlZDAxMDVjYTg0MjhmMzJmNDNhZTQ2
Nzc2YjZlNDYwYjI5YS4uNWVhNDQ4ZmNlNzczZTAzOTRkNzRmZDdiMWY5YzM3NjM2OWNkOWY4MyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Mb2FkZXJSdW5M
b29wQ0YuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvTG9hZGVy
UnVuTG9vcENGLmNwcApAQCAtNTcsNyArNTcsNyBAQCBDRlJ1bkxvb3BSZWYgbG9hZGVyUnVuTG9v
cCgpCiAgICAgaWYgKCFsb2FkZXJSdW5Mb29wT2JqZWN0KSB7CiAgICAgICAgIFRocmVhZDo6Y3Jl
YXRlKCJXZWJDb3JlOiBDRk5ldHdvcmsgTG9hZGVyIiwgW10gewogICAgICAgICAgICAgewotICAg
ICAgICAgICAgICAgIHN0ZDo6bG9ja19ndWFyZDxMb2NrPiBsb2NrKGxvYWRlclJ1bkxvb3BNdXRl
eCk7CisgICAgICAgICAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhsb2FkZXJSdW5Mb29w
TXV0ZXgpOwogCiAgICAgICAgICAgICAgICAgbG9hZGVyUnVuTG9vcE9iamVjdCA9IENGUnVuTG9v
cEdldEN1cnJlbnQoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3Fs
L1NRTGl0ZURhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVE
YXRhYmFzZS5jcHAKaW5kZXggYzQxYTIzOTRiODIyYjI0MThjZGE0YThlMzJhNWJiN2U3ODk0ZGQ4
MC4uNTBkNzVmY2Q2ZTYxYTU3ZTg0OTRkOGIzZjE0NWYzNjk1MTFhYmYxMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2UuY3BwCkBAIC03Niw3ICs3Niw3
IEBAIHN0YXRpYyBMb2NrIGlzRGF0YWJhc2VPcGVuaW5nRm9yYmlkZGVuTXV0ZXg7CiAKIHZvaWQg
U1FMaXRlRGF0YWJhc2U6OnNldElzRGF0YWJhc2VPcGVuaW5nRm9yYmlkZGVuKGJvb2wgaXNGb3Ji
aWRkZW4pCiB7Ci0gICAgc3RkOjpsb2NrX2d1YXJkPExvY2s+IGxvY2soaXNEYXRhYmFzZU9wZW5p
bmdGb3JiaWRkZW5NdXRleCk7CisgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhpc0RhdGFiYXNl
T3BlbmluZ0ZvcmJpZGRlbk11dGV4KTsKICAgICBpc0RhdGFiYXNlT3BlbmluZ0ZvcmJpZGRlbiA9
IGlzRm9yYmlkZGVuOwogfQogCkBAIC05NCw3ICs5NCw3IEBAIGJvb2wgU1FMaXRlRGF0YWJhc2U6
Om9wZW4oY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgT3Blbk1vZGUgb3Blbk1vZGUpCiAgICAgY2xv
c2UoKTsKIAogICAgIHsKLSAgICAgICAgc3RkOjpsb2NrX2d1YXJkPExvY2s+IGxvY2soaXNEYXRh
YmFzZU9wZW5pbmdGb3JiaWRkZW5NdXRleCk7CisgICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExv
Y2soaXNEYXRhYmFzZU9wZW5pbmdGb3JiaWRkZW5NdXRleCk7CiAgICAgICAgIGlmIChpc0RhdGFi
YXNlT3BlbmluZ0ZvcmJpZGRlbikgewogICAgICAgICAgICAgbV9vcGVuRXJyb3JNZXNzYWdlID0g
Im9wZW5pbmcgZGF0YWJhc2UgaXMgZm9yYmlkZGVuIjsKICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFz
ZVRyYWNrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNl
VHJhY2tlci5jcHAKaW5kZXggNGFmMjkwNzU5YjdlODI1ZDQyMzAwMjRmNmRiOWUwYTE2YzY0MTYx
Yi4uNmEyOGUxOWJlOTQ2OTMwMzVhNTZiNjQwOTRlNDE1N2VjOTVhN2Q3MCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlVHJhY2tlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlVHJhY2tlci5jcHAK
QEAgLTQwLDEzICs0MCwxMyBAQCBzdGF0aWMgTG9jayB0cmFuc2FjdGlvbkluUHJvZ3Jlc3NNdXRl
eDsKIAogdm9pZCBzZXRDbGllbnQoU1FMaXRlRGF0YWJhc2VUcmFja2VyQ2xpZW50KiBjbGllbnQp
CiB7Ci0gICAgc3RkOjpsb2NrX2d1YXJkPExvY2s+IGxvY2sodHJhbnNhY3Rpb25JblByb2dyZXNz
TXV0ZXgpOworICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sodHJhbnNhY3Rpb25JblByb2dyZXNz
TXV0ZXgpOwogICAgIHNfc3RhdGljU1FMaXRlRGF0YWJhc2VUcmFja2VyQ2xpZW50ID0gY2xpZW50
OwogfQogCiB2b2lkIGluY3JlbWVudFRyYW5zYWN0aW9uSW5Qcm9ncmVzc0NvdW50KCkKIHsKLSAg
ICBzdGQ6OmxvY2tfZ3VhcmQ8TG9jaz4gbG9jayh0cmFuc2FjdGlvbkluUHJvZ3Jlc3NNdXRleCk7
CisgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayh0cmFuc2FjdGlvbkluUHJvZ3Jlc3NNdXRleCk7
CiAgICAgaWYgKCFzX3N0YXRpY1NRTGl0ZURhdGFiYXNlVHJhY2tlckNsaWVudCkKICAgICAgICAg
cmV0dXJuOwogCkBAIC01Nyw3ICs1Nyw3IEBAIHZvaWQgaW5jcmVtZW50VHJhbnNhY3Rpb25JblBy
b2dyZXNzQ291bnQoKQogCiB2b2lkIGRlY3JlbWVudFRyYW5zYWN0aW9uSW5Qcm9ncmVzc0NvdW50
KCkKIHsKLSAgICBzdGQ6OmxvY2tfZ3VhcmQ8TG9jaz4gbG9jayh0cmFuc2FjdGlvbkluUHJvZ3Jl
c3NNdXRleCk7CisgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayh0cmFuc2FjdGlvbkluUHJvZ3Jl
c3NNdXRleCk7CiAgICAgaWYgKCFzX3N0YXRpY1NRTGl0ZURhdGFiYXNlVHJhY2tlckNsaWVudCkK
ICAgICAgICAgcmV0dXJuOwogCkBAIC03MCw3ICs3MCw3IEBAIHZvaWQgZGVjcmVtZW50VHJhbnNh
Y3Rpb25JblByb2dyZXNzQ291bnQoKQogCiBib29sIGhhc1RyYW5zYWN0aW9uSW5Qcm9ncmVzcygp
CiB7Ci0gICAgc3RkOjpsb2NrX2d1YXJkPExvY2s+IGxvY2sodHJhbnNhY3Rpb25JblByb2dyZXNz
TXV0ZXgpOworICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sodHJhbnNhY3Rpb25JblByb2dyZXNz
TXV0ZXgpOwogICAgIHJldHVybiAhc19zdGF0aWNTUUxpdGVEYXRhYmFzZVRyYWNrZXJDbGllbnQg
fHwgc190cmFuc2FjdGlvbkluUHJvZ3Jlc3NDb3VudGVyID4gMDsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0RW5jb2RpbmdSZWdpc3RyeS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRFbmNvZGluZ1JlZ2lzdHJ5LmNwcAppbmRl
eCBjOWUxNTBlZTZlM2Y2YWU0YTBjNTIxM2Y1MWVhYzBmN2M2OTE1MjliLi4yYTc4NTBmNTZlMzU5
NTQwNWIzMjUwOTBjZDgyYzYyZWY5N2M0YWRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS90ZXh0L1RleHRFbmNvZGluZ1JlZ2lzdHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS90ZXh0L1RleHRFbmNvZGluZ1JlZ2lzdHJ5LmNwcApAQCAtMTU1LDcgKzE1NSw3
IEBAIHN0YXRpYyB2b2lkIHBydW5lQmxhY2tsaXN0ZWRDb2RlY3MoKQogICAgIH0KIH0KIAotc3Rh
dGljIHZvaWQgYnVpbGRCYXNlVGV4dENvZGVjTWFwcyhjb25zdCBzdGQ6OmxvY2tfZ3VhcmQ8TG9j
az4mKQorc3RhdGljIHZvaWQgYnVpbGRCYXNlVGV4dENvZGVjTWFwcyhjb25zdCBBYnN0cmFjdExv
Y2tlciYpCiB7CiAgICAgQVNTRVJUKCF0ZXh0Q29kZWNNYXApOwogICAgIEFTU0VSVCghdGV4dEVu
Y29kaW5nTmFtZU1hcCk7CkBAIC0yNDMsNyArMjQzLDcgQEAgc3RhdGljIHZvaWQgZXh0ZW5kVGV4
dENvZGVjTWFwcygpCiAKIHN0ZDo6dW5pcXVlX3B0cjxUZXh0Q29kZWM+IG5ld1RleHRDb2RlYyhj
b25zdCBUZXh0RW5jb2RpbmcmIGVuY29kaW5nKQogewotICAgIHN0ZDo6bG9ja19ndWFyZDxMb2Nr
PiBsb2NrKGVuY29kaW5nUmVnaXN0cnlNdXRleCk7CisgICAgYXV0byBsb2NrZXIgPSBob2xkTG9j
ayhlbmNvZGluZ1JlZ2lzdHJ5TXV0ZXgpOwogCiAgICAgQVNTRVJUKHRleHRDb2RlY01hcCk7CiAg
ICAgYXV0byByZXN1bHQgPSB0ZXh0Q29kZWNNYXAtPmZpbmQoZW5jb2RpbmcubmFtZSgpKTsKQEAg
LTI1NiwxMCArMjU2LDEwIEBAIGNvbnN0IGNoYXIqIGF0b21DYW5vbmljYWxUZXh0RW5jb2RpbmdO
YW1lKGNvbnN0IGNoYXIqIG5hbWUpCiAgICAgaWYgKCFuYW1lIHx8ICFuYW1lWzBdKQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHN0ZDo6bG9ja19ndWFyZDxMb2NrPiBsb2NrKGVuY29k
aW5nUmVnaXN0cnlNdXRleCk7CisgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhlbmNvZGluZ1Jl
Z2lzdHJ5TXV0ZXgpOwogCiAgICAgaWYgKCF0ZXh0RW5jb2RpbmdOYW1lTWFwKQotICAgICAgICBi
dWlsZEJhc2VUZXh0Q29kZWNNYXBzKGxvY2spOworICAgICAgICBidWlsZEJhc2VUZXh0Q29kZWNN
YXBzKGxvY2tlcik7CiAKICAgICBpZiAoY29uc3QgY2hhciogYXRvbU5hbWUgPSB0ZXh0RW5jb2Rp
bmdOYW1lTWFwLT5nZXQobmFtZSkpCiAgICAgICAgIHJldHVybiBhdG9tTmFtZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RvcmFn
ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0
b3JhZ2UuY3BwCmluZGV4IGFiN2EwMzVhM2MxMjIyMWFjYzYzN2VlMjc2MmI0YzRiNmFlNzkwNDIu
LmNiOTc3ZjgxNDIxNGFmM2YxMTNkY2VkMDJiMGU5ZWRjZmIyMTg1NzQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdG9y
YWdlLmNwcApAQCAtOTYyLDcgKzk2Miw3IEBAIHZvaWQgU3RvcmFnZTo6dHJhdmVyc2UoY29uc3Qg
U3RyaW5nJiB0eXBlLCBPcHRpb25TZXQ8VHJhdmVyc2VGbGFnPiBmbGFncywgVHJhdmVyCiAgICAg
ICAgICAgICAgICAgICAgIHRyYXZlcnNlT3BlcmF0aW9uLmhhbmRsZXIoJnJlY29yZCwgaW5mbyk7
CiAgICAgICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAgICAgc3RkOjpsb2NrX2d1YXJkPExv
Y2s+IGxvY2sodHJhdmVyc2VPcGVyYXRpb24uYWN0aXZlTXV0ZXgpOworICAgICAgICAgICAgICAg
IGF1dG8gbG9ja2VyID0gaG9sZExvY2sodHJhdmVyc2VPcGVyYXRpb24uYWN0aXZlTXV0ZXgpOwog
ICAgICAgICAgICAgICAgIC0tdHJhdmVyc2VPcGVyYXRpb24uYWN0aXZlQ291bnQ7CiAgICAgICAg
ICAgICAgICAgdHJhdmVyc2VPcGVyYXRpb24uYWN0aXZlQ29uZGl0aW9uLm5vdGlmeU9uZSgpOwog
ICAgICAgICAgICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9D
b25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uY3Bw
CmluZGV4IDNmZjQxOGFjNjFkNzlkNjkzMzY3OGY3NmZmOTA2ZWI2MzFmMGYxMDQuLmQwYjY0MGQy
MGJkM2MyMDEwZjFiZGY0MjQ1OGYzNDg0NDc2YzFlNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZv
cm0vSVBDL0Nvbm5lY3Rpb24uY3BwCkBAIC0xNDksNyArMTQ5LDcgQEAgYm9vbCBDb25uZWN0aW9u
OjpTeW5jTWVzc2FnZVN0YXRlOjpwcm9jZXNzSW5jb21pbmdNZXNzYWdlKENvbm5lY3Rpb24mIGNv
bm5lY3Rpb24KIAogICAgIGJvb2wgc2hvdWxkRGlzcGF0Y2g7CiAgICAgewotICAgICAgICBzdGQ6
OmxvY2tfZ3VhcmQ8TG9jaz4gbG9jayhtX211dGV4KTsKKyAgICAgICAgYXV0byBsb2NrZXIgPSBo
b2xkTG9jayhtX211dGV4KTsKICAgICAgICAgc2hvdWxkRGlzcGF0Y2ggPSBtX2RpZFNjaGVkdWxl
RGlzcGF0Y2hNZXNzYWdlc1dvcmtTZXQuYWRkKCZjb25uZWN0aW9uKS5pc05ld0VudHJ5OwogICAg
ICAgICBtX21lc3NhZ2VzVG9EaXNwYXRjaFdoaWxlV2FpdGluZ0ZvclN5bmNSZXBseS5hcHBlbmQo
Q29ubmVjdGlvbkFuZEluY29taW5nTWVzc2FnZSB7IGNvbm5lY3Rpb24sIFdURk1vdmUobWVzc2Fn
ZSkgfSk7CiAgICAgfQpAQCAtMTcxLDcgKzE3MSw3IEBAIHZvaWQgQ29ubmVjdGlvbjo6U3luY01l
c3NhZ2VTdGF0ZTo6ZGlzcGF0Y2hNZXNzYWdlcygpCiAKICAgICBWZWN0b3I8Q29ubmVjdGlvbkFu
ZEluY29taW5nTWVzc2FnZT4gbWVzc2FnZXNUb0Rpc3BhdGNoV2hpbGVXYWl0aW5nRm9yU3luY1Jl
cGx5OwogICAgIHsKLSAgICAgICAgc3RkOjpsb2NrX2d1YXJkPExvY2s+IGxvY2sobV9tdXRleCk7
CisgICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9tdXRleCk7CiAgICAgICAgIG1fbWVz
c2FnZXNUb0Rpc3BhdGNoV2hpbGVXYWl0aW5nRm9yU3luY1JlcGx5LnN3YXAobWVzc2FnZXNUb0Rp
c3BhdGNoV2hpbGVXYWl0aW5nRm9yU3luY1JlcGx5KTsKICAgICB9CiAKQEAgLTE4NSw3ICsxODUs
NyBAQCB2b2lkIENvbm5lY3Rpb246OlN5bmNNZXNzYWdlU3RhdGU6OmRpc3BhdGNoTWVzc2FnZXNB
bmRSZXNldERpZFNjaGVkdWxlRGlzcGF0Y2hNZQogCiAgICAgVmVjdG9yPENvbm5lY3Rpb25BbmRJ
bmNvbWluZ01lc3NhZ2U+IG1lc3NhZ2VzVG9EaXNwYXRjaFdoaWxlV2FpdGluZ0ZvclN5bmNSZXBs
eTsKICAgICB7Ci0gICAgICAgIHN0ZDo6bG9ja19ndWFyZDxMb2NrPiBsb2NrKG1fbXV0ZXgpOwor
ICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fbXV0ZXgpOwogICAgICAgICBBU1NFUlQo
bV9kaWRTY2hlZHVsZURpc3BhdGNoTWVzc2FnZXNXb3JrU2V0LmNvbnRhaW5zKCZjb25uZWN0aW9u
KSk7CiAgICAgICAgIG1fZGlkU2NoZWR1bGVEaXNwYXRjaE1lc3NhZ2VzV29ya1NldC5yZW1vdmUo
JmNvbm5lY3Rpb24pOwogICAgICAgICBtX21lc3NhZ2VzVG9EaXNwYXRjaFdoaWxlV2FpdGluZ0Zv
clN5bmNSZXBseS5zd2FwKG1lc3NhZ2VzVG9EaXNwYXRjaFdoaWxlV2FpdGluZ0ZvclN5bmNSZXBs
eSk7CkBAIC0yMDAsNyArMjAwLDcgQEAgdm9pZCBDb25uZWN0aW9uOjpTeW5jTWVzc2FnZVN0YXRl
OjpkaXNwYXRjaE1lc3NhZ2VzQW5kUmVzZXREaWRTY2hlZHVsZURpc3BhdGNoTWUKICAgICB9CiAK
ICAgICBpZiAoIW1lc3NhZ2VzVG9QdXRCYWNrLmlzRW1wdHkoKSkgewotICAgICAgICBzdGQ6Omxv
Y2tfZ3VhcmQ8TG9jaz4gbG9jayhtX211dGV4KTsKKyAgICAgICAgYXV0byBsb2NrZXIgPSBob2xk
TG9jayhtX211dGV4KTsKICAgICAgICAgbWVzc2FnZXNUb1B1dEJhY2suYXBwZW5kVmVjdG9yKFdU
Rk1vdmUobV9tZXNzYWdlc1RvRGlzcGF0Y2hXaGlsZVdhaXRpbmdGb3JTeW5jUmVwbHkpKTsKICAg
ICAgICAgbV9tZXNzYWdlc1RvRGlzcGF0Y2hXaGlsZVdhaXRpbmdGb3JTeW5jUmVwbHkgPSBXVEZN
b3ZlKG1lc3NhZ2VzVG9QdXRCYWNrKTsKICAgICB9CkBAIC0zMTksNyArMzE5LDcgQEAgdm9pZCBD
b25uZWN0aW9uOjphZGRXb3JrUXVldWVNZXNzYWdlUmVjZWl2ZXIoU3RyaW5nUmVmZXJlbmNlIG1l
c3NhZ2VSZWNlaXZlck5hbWUKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogCi0g
ICAgc3RkOjpsb2NrX2d1YXJkPExvY2s+IGxvY2sobV93b3JrUXVldWVNZXNzYWdlUmVjZWl2ZXJz
TXV0ZXgpOworICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV93b3JrUXVldWVNZXNzYWdlUmVj
ZWl2ZXJzTXV0ZXgpOwogICAgIEFTU0VSVCghbV93b3JrUXVldWVNZXNzYWdlUmVjZWl2ZXJzLmNv
bnRhaW5zKG1lc3NhZ2VSZWNlaXZlck5hbWUpKTsKIAogICAgIG1fd29ya1F1ZXVlTWVzc2FnZVJl
Y2VpdmVycy5hZGQobWVzc2FnZVJlY2VpdmVyTmFtZSwgc3RkOjptYWtlX3BhaXIoJndvcmtRdWV1
ZSwgd29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyKSk7CkBAIC0zMjksNyArMzI5LDcgQEAgdm9pZCBD
b25uZWN0aW9uOjpyZW1vdmVXb3JrUXVldWVNZXNzYWdlUmVjZWl2ZXIoU3RyaW5nUmVmZXJlbmNl
IG1lc3NhZ2VSZWNlaXZlck4KIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogCi0g
ICAgc3RkOjpsb2NrX2d1YXJkPExvY2s+IGxvY2sobV93b3JrUXVldWVNZXNzYWdlUmVjZWl2ZXJz
TXV0ZXgpOworICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV93b3JrUXVldWVNZXNzYWdlUmVj
ZWl2ZXJzTXV0ZXgpOwogICAgIEFTU0VSVChtX3dvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlcnMuY29u
dGFpbnMobWVzc2FnZVJlY2VpdmVyTmFtZSkpOwogICAgIG1fd29ya1F1ZXVlTWVzc2FnZVJlY2Vp
dmVycy5yZW1vdmUobWVzc2FnZVJlY2VpdmVyTmFtZSk7CiB9CkBAIC0zNjUsNyArMzY1LDcgQEAg
dm9pZCBDb25uZWN0aW9uOjphZGRUaHJlYWRNZXNzYWdlUmVjZWl2ZXIoU3RyaW5nUmVmZXJlbmNl
IG1lc3NhZ2VSZWNlaXZlck5hbWUsIFQKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkp
OwogCi0gICAgc3RkOjpsb2NrX2d1YXJkPExvY2s+IGxvY2sobV90aHJlYWRNZXNzYWdlUmVjZWl2
ZXJzTG9jayk7CisgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX3RocmVhZE1lc3NhZ2VSZWNl
aXZlcnNMb2NrKTsKICAgICBBU1NFUlQoIW1fdGhyZWFkTWVzc2FnZVJlY2VpdmVycy5jb250YWlu
cyhtZXNzYWdlUmVjZWl2ZXJOYW1lKSk7CiAKICAgICBtX3RocmVhZE1lc3NhZ2VSZWNlaXZlcnMu
YWRkKG1lc3NhZ2VSZWNlaXZlck5hbWUsIHRocmVhZE1lc3NhZ2VSZWNlaXZlcik7CkBAIC0zNzUs
NyArMzc1LDcgQEAgdm9pZCBDb25uZWN0aW9uOjpyZW1vdmVUaHJlYWRNZXNzYWdlUmVjZWl2ZXIo
U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUKIHsKICAgICBBU1NFUlQoUnVuTG9v
cDo6aXNNYWluKCkpOwogCi0gICAgc3RkOjpsb2NrX2d1YXJkPExvY2s+IGxvY2sobV90aHJlYWRN
ZXNzYWdlUmVjZWl2ZXJzTG9jayk7CisgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX3RocmVh
ZE1lc3NhZ2VSZWNlaXZlcnNMb2NrKTsKICAgICBBU1NFUlQobV90aHJlYWRNZXNzYWdlUmVjZWl2
ZXJzLmNvbnRhaW5zKG1lc3NhZ2VSZWNlaXZlck5hbWUpKTsKIAogICAgIG1fdGhyZWFkTWVzc2Fn
ZVJlY2VpdmVycy5yZW1vdmUobWVzc2FnZVJlY2VpdmVyTmFtZSk7CkBAIC00NjksNyArNDY5LDcg
QEAgYm9vbCBDb25uZWN0aW9uOjpzZW5kTWVzc2FnZShzdGQ6OnVuaXF1ZV9wdHI8RW5jb2Rlcj4g
ZW5jb2RlciwgT3B0aW9uU2V0PFNlbmRPcHQKICAgICAgICAgZW5jb2Rlci0+c2V0U2hvdWxkRGlz
cGF0Y2hNZXNzYWdlV2hlbldhaXRpbmdGb3JTeW5jUmVwbHkoU2hvdWxkRGlzcGF0Y2hXaGVuV2Fp
dGluZ0ZvclN5bmNSZXBseTo6WWVzRHVyaW5nVW5ib3VuZGVkSVBDKTsKIAogICAgIHsKLSAgICAg
ICAgc3RkOjpsb2NrX2d1YXJkPExvY2s+IGxvY2sobV9vdXRnb2luZ01lc3NhZ2VzTXV0ZXgpOwor
ICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fb3V0Z29pbmdNZXNzYWdlc011dGV4KTsK
ICAgICAgICAgbV9vdXRnb2luZ01lc3NhZ2VzLmFwcGVuZChXVEZNb3ZlKGVuY29kZXIpKTsKICAg
ICB9CiAgICAgCkBAIC01MDEsNyArNTAxLDcgQEAgc3RkOjp1bmlxdWVfcHRyPERlY29kZXI+IENv
bm5lY3Rpb246OndhaXRGb3JNZXNzYWdlKFN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWkKIAog
ICAgIC8vIEZpcnN0LCBjaGVjayBpZiB0aGlzIG1lc3NhZ2UgaXMgYWxyZWFkeSBpbiB0aGUgaW5j
b21pbmcgbWVzc2FnZXMgcXVldWUuCiAgICAgewotICAgICAgICBzdGQ6OmxvY2tfZ3VhcmQ8TG9j
az4gbG9jayhtX2luY29taW5nTWVzc2FnZXNNdXRleCk7CisgICAgICAgIGF1dG8gbG9ja2VyID0g
aG9sZExvY2sobV9pbmNvbWluZ01lc3NhZ2VzTXV0ZXgpOwogCiAgICAgICAgIGZvciAoYXV0byBp
dCA9IG1faW5jb21pbmdNZXNzYWdlcy5iZWdpbigpLCBlbmQgPSBtX2luY29taW5nTWVzc2FnZXMu
ZW5kKCk7IGl0ICE9IGVuZDsgKytpdCkgewogICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPERl
Y29kZXI+JiBtZXNzYWdlID0gKml0OwpAQCAtNTIxLDcgKzUyMSw3IEBAIHN0ZDo6dW5pcXVlX3B0
cjxEZWNvZGVyPiBDb25uZWN0aW9uOjp3YWl0Rm9yTWVzc2FnZShTdHJpbmdSZWZlcmVuY2UgbWVz
c2FnZVJlY2VpCiAgICAgLy8gRG9uJ3QgZXZlbiBzdGFydCB3YWl0aW5nIGlmIHdlIGhhdmUgSW50
ZXJydXB0V2FpdGluZ0lmU3luY01lc3NhZ2VBcnJpdmVzIGFuZCB0aGVyZSdzIGEgc3luYyBtZXNz
YWdlIGFscmVhZHkgaW4gdGhlIHF1ZXVlLgogICAgIGlmIChoYXNJbmNvbWluZ1N5bmNocm9ub3Vz
TWVzc2FnZSAmJiB3YWl0Rm9yT3B0aW9ucy5jb250YWlucyhXYWl0Rm9yT3B0aW9uOjpJbnRlcnJ1
cHRXYWl0aW5nSWZTeW5jTWVzc2FnZUFycml2ZXMpKSB7CiAjaWYgQVNTRVJUX0VOQUJMRUQKLSAg
ICAgICAgc3RkOjpsb2NrX2d1YXJkPExvY2s+IGxvY2sobV93YWl0Rm9yTWVzc2FnZU11dGV4KTsK
KyAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX3dhaXRGb3JNZXNzYWdlTXV0ZXgpOwog
ICAgICAgICAvLyBXZSBkb24ndCBzdXBwb3J0IGhhdmluZyBtdWx0aXBsZSBjbGllbnRzIHdhaXRp
bmcgZm9yIG1lc3NhZ2VzLgogICAgICAgICBBU1NFUlQoIW1fd2FpdGluZ0Zvck1lc3NhZ2UpOwog
I2VuZGlmCkBAIC01MzEsNyArNTMxLDcgQEAgc3RkOjp1bmlxdWVfcHRyPERlY29kZXI+IENvbm5l
Y3Rpb246OndhaXRGb3JNZXNzYWdlKFN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWkKICAgICBX
YWl0Rm9yTWVzc2FnZVN0YXRlIHdhaXRpbmdGb3JNZXNzYWdlKG1lc3NhZ2VSZWNlaXZlck5hbWUs
IG1lc3NhZ2VOYW1lLCBkZXN0aW5hdGlvbklELCB3YWl0Rm9yT3B0aW9ucyk7CiAKICAgICB7Ci0g
ICAgICAgIHN0ZDo6bG9ja19ndWFyZDxMb2NrPiBsb2NrKG1fd2FpdEZvck1lc3NhZ2VNdXRleCk7
CisgICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV93YWl0Rm9yTWVzc2FnZU11dGV4KTsK
IAogICAgICAgICAvLyBXZSBkb24ndCBzdXBwb3J0IGhhdmluZyBtdWx0aXBsZSBjbGllbnRzIHdh
aXRpbmcgZm9yIG1lc3NhZ2VzLgogICAgICAgICBBU1NFUlQoIW1fd2FpdGluZ0Zvck1lc3NhZ2Up
OwpAQCAtNzQ2LDcgKzc0Niw3IEBAIHZvaWQgQ29ubmVjdGlvbjo6cHJvY2Vzc0luY29taW5nTWVz
c2FnZShzdGQ6OnVuaXF1ZV9wdHI8RGVjb2Rlcj4gbWVzc2FnZSkKICNlbmRpZgogCiAgICAgaWYg
KG1lc3NhZ2UtPmlzU3luY01lc3NhZ2UoKSkgewotICAgICAgICBzdGQ6OmxvY2tfZ3VhcmQ8TG9j
az4gbG9jayhtX2luY29taW5nU3luY01lc3NhZ2VDYWxsYmFja011dGV4KTsKKyAgICAgICAgYXV0
byBsb2NrZXIgPSBob2xkTG9jayhtX2luY29taW5nU3luY01lc3NhZ2VDYWxsYmFja011dGV4KTsK
IAogICAgICAgICBmb3IgKGF1dG8mIGNhbGxiYWNrIDogbV9pbmNvbWluZ1N5bmNNZXNzYWdlQ2Fs
bGJhY2tzLnZhbHVlcygpKQogICAgICAgICAgICAgbV9pbmNvbWluZ1N5bmNNZXNzYWdlQ2FsbGJh
Y2tRdWV1ZS0+ZGlzcGF0Y2goV1RGTW92ZShjYWxsYmFjaykpOwpAQCAtNzU2LDcgKzc1Niw3IEBA
IHZvaWQgQ29ubmVjdGlvbjo6cHJvY2Vzc0luY29taW5nTWVzc2FnZShzdGQ6OnVuaXF1ZV9wdHI8
RGVjb2Rlcj4gbWVzc2FnZSkKIAogICAgIC8vIENoZWNrIGlmIHdlJ3JlIHdhaXRpbmcgZm9yIHRo
aXMgbWVzc2FnZSwgb3IgaWYgd2UgbmVlZCB0byBpbnRlcnJ1cHQgd2FpdGluZyBkdWUgdG8gYW4g
aW5jb21pbmcgc3luYyBtZXNzYWdlLgogICAgIHsKLSAgICAgICAgc3RkOjpsb2NrX2d1YXJkPExv
Y2s+IGxvY2sobV93YWl0Rm9yTWVzc2FnZU11dGV4KTsKKyAgICAgICAgYXV0byBsb2NrZXIgPSBo
b2xkTG9jayhtX3dhaXRGb3JNZXNzYWdlTXV0ZXgpOwogCiAgICAgICAgIGlmIChtX3dhaXRpbmdG
b3JNZXNzYWdlICYmICFtX3dhaXRpbmdGb3JNZXNzYWdlLT5kZWNvZGVyKSB7CiAgICAgICAgICAg
ICBpZiAobV93YWl0aW5nRm9yTWVzc2FnZS0+bWVzc2FnZVJlY2VpdmVyTmFtZSA9PSBtZXNzYWdl
LT5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgJiYgbV93YWl0aW5nRm9yTWVzc2FnZS0+bWVzc2FnZU5h
bWUgPT0gbWVzc2FnZS0+bWVzc2FnZU5hbWUoKSAmJiBtX3dhaXRpbmdGb3JNZXNzYWdlLT5kZXN0
aW5hdGlvbklEID09IG1lc3NhZ2UtPmRlc3RpbmF0aW9uSUQoKSkgewpAQCAtNzg2LDcgKzc4Niw3
IEBAIHZvaWQgQ29ubmVjdGlvbjo6cHJvY2Vzc0luY29taW5nTWVzc2FnZShzdGQ6OnVuaXF1ZV9w
dHI8RGVjb2Rlcj4gbWVzc2FnZSkKIAogdWludDY0X3QgQ29ubmVjdGlvbjo6aW5zdGFsbEluY29t
aW5nU3luY01lc3NhZ2VDYWxsYmFjayhXVEY6OkZ1bmN0aW9uPHZvaWQgKCk+JiYgY2FsbGJhY2sp
CiB7Ci0gICAgc3RkOjpsb2NrX2d1YXJkPExvY2s+IGxvY2sobV9pbmNvbWluZ1N5bmNNZXNzYWdl
Q2FsbGJhY2tNdXRleCk7CisgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX2luY29taW5nU3lu
Y01lc3NhZ2VDYWxsYmFja011dGV4KTsKIAogICAgIG1fbmV4dEluY29taW5nU3luY01lc3NhZ2VD
YWxsYmFja0lEKys7CiAKQEAgLTgwMCwxMyArODAwLDEzIEBAIHVpbnQ2NF90IENvbm5lY3Rpb246
Omluc3RhbGxJbmNvbWluZ1N5bmNNZXNzYWdlQ2FsbGJhY2soV1RGOjpGdW5jdGlvbjx2b2lkICgp
PiYmCiAKIHZvaWQgQ29ubmVjdGlvbjo6dW5pbnN0YWxsSW5jb21pbmdTeW5jTWVzc2FnZUNhbGxi
YWNrKHVpbnQ2NF90IGNhbGxiYWNrSUQpCiB7Ci0gICAgc3RkOjpsb2NrX2d1YXJkPExvY2s+IGxv
Y2sobV9pbmNvbWluZ1N5bmNNZXNzYWdlQ2FsbGJhY2tNdXRleCk7CisgICAgYXV0byBsb2NrZXIg
PSBob2xkTG9jayhtX2luY29taW5nU3luY01lc3NhZ2VDYWxsYmFja011dGV4KTsKICAgICBtX2lu
Y29taW5nU3luY01lc3NhZ2VDYWxsYmFja3MucmVtb3ZlKGNhbGxiYWNrSUQpOwogfQogCiBib29s
IENvbm5lY3Rpb246Omhhc0luY29taW5nU3luY01lc3NhZ2UoKQogewotICAgIHN0ZDo6bG9ja19n
dWFyZDxMb2NrPiBsb2NrKG1faW5jb21pbmdNZXNzYWdlc011dGV4KTsKKyAgICBhdXRvIGxvY2tl
ciA9IGhvbGRMb2NrKG1faW5jb21pbmdNZXNzYWdlc011dGV4KTsKIAogICAgIGZvciAoYXV0byYg
bWVzc2FnZSA6IG1faW5jb21pbmdNZXNzYWdlcykgewogICAgICAgICBpZiAobWVzc2FnZS0+aXNT
eW5jTWVzc2FnZSgpKQpAQCAtODQ3LDcgKzg0Nyw3IEBAIHZvaWQgQ29ubmVjdGlvbjo6Y29ubmVj
dGlvbkRpZENsb3NlKCkKICAgICB9CiAKICAgICB7Ci0gICAgICAgIHN0ZDo6bG9ja19ndWFyZDxM
b2NrPiBsb2NrKG1fd2FpdEZvck1lc3NhZ2VNdXRleCk7CisgICAgICAgIGF1dG8gbG9ja2VyID0g
aG9sZExvY2sobV93YWl0Rm9yTWVzc2FnZU11dGV4KTsKIAogICAgICAgICBBU1NFUlQobV9zaG91
bGRXYWl0Rm9yTWVzc2FnZXMpOwogICAgICAgICBtX3Nob3VsZFdhaXRGb3JNZXNzYWdlcyA9IGZh
bHNlOwpAQCAtODkwLDcgKzg5MCw3IEBAIHZvaWQgQ29ubmVjdGlvbjo6c2VuZE91dGdvaW5nTWVz
c2FnZXMoKQogICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8RW5jb2Rlcj4gbWVzc2FnZTsKIAogICAg
ICAgICB7Ci0gICAgICAgICAgICBzdGQ6OmxvY2tfZ3VhcmQ8TG9jaz4gbG9jayhtX291dGdvaW5n
TWVzc2FnZXNNdXRleCk7CisgICAgICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fb3V0
Z29pbmdNZXNzYWdlc011dGV4KTsKICAgICAgICAgICAgIGlmIChtX291dGdvaW5nTWVzc2FnZXMu
aXNFbXB0eSgpKQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgbWVzc2FnZSA9
IG1fb3V0Z29pbmdNZXNzYWdlcy50YWtlRmlyc3QoKTsKQEAgLTk1Nyw3ICs5NTcsNyBAQCB2b2lk
IENvbm5lY3Rpb246OmRpZEZhaWxUb1NlbmRTeW5jTWVzc2FnZSgpCiB2b2lkIENvbm5lY3Rpb246
OmVucXVldWVJbmNvbWluZ01lc3NhZ2Uoc3RkOjp1bmlxdWVfcHRyPERlY29kZXI+IGluY29taW5n
TWVzc2FnZSkKIHsKICAgICB7Ci0gICAgICAgIHN0ZDo6bG9ja19ndWFyZDxMb2NrPiBsb2NrKG1f
aW5jb21pbmdNZXNzYWdlc011dGV4KTsKKyAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayht
X2luY29taW5nTWVzc2FnZXNNdXRleCk7CiAKICNpZiBQTEFURk9STShDT0NPQSkKICAgICAgICAg
aWYgKG1fd2FzS2lsbGVkKQpAQCAtMTAxMCw3ICsxMDEwLDcgQEAgdm9pZCBDb25uZWN0aW9uOjpk
aXNwYXRjaE1lc3NhZ2UoRGVjb2RlciYgZGVjb2RlcikKIAogYm9vbCBDb25uZWN0aW9uOjpkaXNw
YXRjaE1lc3NhZ2VUb1dvcmtRdWV1ZVJlY2VpdmVyKHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPiYg
bWVzc2FnZSkKIHsKLSAgICBzdGQ6OmxvY2tfZ3VhcmQ8TG9jaz4gbG9jayhtX3dvcmtRdWV1ZU1l
c3NhZ2VSZWNlaXZlcnNNdXRleCk7CisgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX3dvcmtR
dWV1ZU1lc3NhZ2VSZWNlaXZlcnNNdXRleCk7CiAgICAgYXV0byBpdCA9IG1fd29ya1F1ZXVlTWVz
c2FnZVJlY2VpdmVycy5maW5kKG1lc3NhZ2UtPm1lc3NhZ2VSZWNlaXZlck5hbWUoKSk7CiAgICAg
aWYgKGl0ICE9IG1fd29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVycy5lbmQoKSkgewogICAgICAgICBp
dC0+dmFsdWUuZmlyc3QtPmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyks
IHdvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlciA9IGl0LT52YWx1ZS5zZWNvbmQsIGRlY29kZXIgPSBX
VEZNb3ZlKG1lc3NhZ2UpXSgpIG11dGFibGUgewpAQCAtMTAyNSw3ICsxMDI1LDcgQEAgYm9vbCBD
b25uZWN0aW9uOjpkaXNwYXRjaE1lc3NhZ2VUb1RocmVhZFJlY2VpdmVyKHN0ZDo6dW5pcXVlX3B0
cjxEZWNvZGVyPiYgbWVzc2EKIHsKICAgICBSZWZQdHI8VGhyZWFkTWVzc2FnZVJlY2VpdmVyPiBw
cm90ZWN0ZWRUaHJlYWRNZXNzYWdlUmVjZWl2ZXI7CiAgICAgewotICAgICAgICBzdGQ6OmxvY2tf
Z3VhcmQ8TG9jaz4gbG9jayhtX3RocmVhZE1lc3NhZ2VSZWNlaXZlcnNMb2NrKTsKKyAgICAgICAg
YXV0byBsb2NrZXIgPSBob2xkTG9jayhtX3RocmVhZE1lc3NhZ2VSZWNlaXZlcnNMb2NrKTsKICAg
ICAgICAgcHJvdGVjdGVkVGhyZWFkTWVzc2FnZVJlY2VpdmVyID0gbV90aHJlYWRNZXNzYWdlUmVj
ZWl2ZXJzLmdldChtZXNzYWdlLT5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkpOwogICAgIH0KIApAQCAt
MTEzNiw3ICsxMTM2LDcgQEAgdm9pZCBDb25uZWN0aW9uOjpkaXNwYXRjaE9uZUluY29taW5nTWVz
c2FnZSgpCiB7CiAgICAgc3RkOjp1bmlxdWVfcHRyPERlY29kZXI+IG1lc3NhZ2U7CiAgICAgewot
ICAgICAgICBzdGQ6OmxvY2tfZ3VhcmQ8TG9jaz4gbG9jayhtX2luY29taW5nTWVzc2FnZXNNdXRl
eCk7CisgICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9pbmNvbWluZ01lc3NhZ2VzTXV0
ZXgpOwogICAgICAgICBpZiAobV9pbmNvbWluZ01lc3NhZ2VzLmlzRW1wdHkoKSkKICAgICAgICAg
ICAgIHJldHVybjsKIApAQCAtMTE1NCw3ICsxMTU0LDcgQEAgdm9pZCBDb25uZWN0aW9uOjpkaXNw
YXRjaEluY29taW5nTWVzc2FnZXMoKQogCiAgICAgc2l6ZV90IG1lc3NhZ2VzVG9Qcm9jZXNzID0g
MDsKICAgICB7Ci0gICAgICAgIHN0ZDo6bG9ja19ndWFyZDxMb2NrPiBsb2NrKG1faW5jb21pbmdN
ZXNzYWdlc011dGV4KTsKKyAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX2luY29taW5n
TWVzc2FnZXNNdXRleCk7CiAgICAgICAgIGlmIChtX2luY29taW5nTWVzc2FnZXMuaXNFbXB0eSgp
KQogICAgICAgICAgICAgcmV0dXJuOwogCkBAIC0xMTgyLDcgKzExODIsNyBAQCB2b2lkIENvbm5l
Y3Rpb246OmRpc3BhdGNoSW5jb21pbmdNZXNzYWdlcygpCiAKICAgICBmb3IgKHNpemVfdCBpID0g
MTsgaSA8IG1lc3NhZ2VzVG9Qcm9jZXNzOyArK2kpIHsKICAgICAgICAgewotICAgICAgICAgICAg
c3RkOjpsb2NrX2d1YXJkPExvY2s+IGxvY2sobV9pbmNvbWluZ01lc3NhZ2VzTXV0ZXgpOworICAg
ICAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX2luY29taW5nTWVzc2FnZXNNdXRleCk7
CiAgICAgICAgICAgICBpZiAobV9pbmNvbWluZ01lc3NhZ2VzLmlzRW1wdHkoKSkKICAgICAgICAg
ICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Jsb2Nr
aW5nUmVzcG9uc2VNYXAuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Jsb2NraW5nUmVzcG9uc2VN
YXAuaAppbmRleCA3MjhjODQ3N2JmOTQ4NDc5NzRlMzlmZTIxZDk5OWVlZTk2MzkwNzRjLi41MmY3
OGZjMzYyMTY0NzRhOWY1ZDZkMzhhN2ZiODcxZjc0MTUyOTY2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9CbG9ja2luZ1Jlc3BvbnNlTWFwLmgKKysrIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvQmxvY2tpbmdSZXNwb25zZU1hcC5oCkBAIC01Nyw3ICs1Nyw3IEBAIFdURl9NQUtFX05P
TkNPUFlBQkxFKEJsb2NraW5nUmVzcG9uc2VNYXApOwogCiAgICAgdm9pZCBkaWRSZWNlaXZlUmVz
cG9uc2UodWludDY0X3QgcmVxdWVzdElELCBzdGQ6OnVuaXF1ZV9wdHI8VD4gcmVzcG9uc2UpCiAg
ICAgewotICAgICAgICBzdGQ6OmxvY2tfZ3VhcmQ8TG9jaz4gbG9jayhtX211dGV4KTsKKyAgICAg
ICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX211dGV4KTsKICAgICAgICAgQVNTRVJUKCFtX3Jl
c3BvbnNlcy5jb250YWlucyhyZXF1ZXN0SUQpKTsKIAogICAgICAgICBtX3Jlc3BvbnNlcy5zZXQo
cmVxdWVzdElELCBXVEZNb3ZlKHJlc3BvbnNlKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9tYWMvV0tQcmludGluZ1ZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9tYWMvV0tQcmludGluZ1ZpZXcubW0KaW5kZXggZTM0MzZmMzFkNTBmMDkwYzJiM2I4YjcwOGNj
ODkyNmZkZDNjZWYxZC4uMDFlNDMyMTYwZGYyOWMxM2IyNGUzMGFkYWZlMWQzZmY1YTQ5MWM2MSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dLUHJpbnRpbmdWaWV3Lm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XS1ByaW50aW5nVmlldy5tbQpAQCAt
MjUwLDcgKzI1MCw3IEBAIC0gKHZvaWQpX3ByZXBhcmVQREZEYXRhRm9yUHJpbnRpbmdPblNlY29u
ZGFyeVRocmVhZAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgc3RkOjpsb2NrX2d1YXJk
PExvY2s+IGxvY2soX3ByaW50aW5nQ2FsbGJhY2tNdXRleCk7CisgICAgYXV0byBsb2NrZXIgPSBo
b2xkTG9jayhfcHJpbnRpbmdDYWxsYmFja011dGV4KTsKIAogICAgIEFTU0VSVChbc2VsZiBfaGFz
UGFnZVJlY3RzXSk7CiAgICAgQVNTRVJUKF9wcmludGVkUGFnZXNEYXRhLmlzRW1wdHkoKSk7CkBA
IC0zNjYsNyArMzY2LDcgQEAgc3RhdGljIHZvaWQgcHJlcGFyZURhdGFGb3JQcmludGluZ09uU2Vj
b25kYXJ5VGhyZWFkKFdLUHJpbnRpbmdWaWV3ICp2aWV3KQogewogICAgIEFTU0VSVChSdW5Mb29w
Ojppc01haW4oKSk7CiAKLSAgICBzdGQ6OmxvY2tfZ3VhcmQ8TG9jaz4gbG9jayh2aWV3LT5fcHJp
bnRpbmdDYWxsYmFja011dGV4KTsKKyAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKHZpZXctPl9w
cmludGluZ0NhbGxiYWNrTXV0ZXgpOwogCiAgICAgLy8gV2UgbWF5IGhhdmUgcmVjZWl2ZWQgcGFn
ZSByZWN0cyB3aGlsZSBhIG1lc3NhZ2UgdG8gY2FsbCB0aGlzIGZ1bmN0aW9uIHRyYXZlbGVkIGZy
b20gc2Vjb25kYXJ5IHRocmVhZCB0byBtYWluIG9uZS4KICAgICBpZiAoW3ZpZXcgX2hhc1BhZ2VS
ZWN0c10pIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01JbnRl
cm5hbC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01JbnRlcm5hbC5tbQppbmRl
eCAwMWY1ZTkxYjVjNWM0ZWM0ZThjNDkyYmUyMjg1ZGI3OGIzZGM5NWQ2Li4zYTcwNmM0YThkNDlj
MWZjNDdmODg5NGZhYzViNDI1ZmM3NzQ4ZjU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9ET00vRE9NSW50ZXJuYWwubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
RE9NL0RPTUludGVybmFsLm1tCkBAIC01Niw3ICs1Niw3IEBAIHN0YXRpYyBIYXNoTWFwPERPTU9i
amVjdEludGVybmFsKiwgTlNPYmplY3QgKj4mIHdyYXBwZXJDYWNoZSgpCiBOU09iamVjdCogZ2V0
RE9NV3JhcHBlcihET01PYmplY3RJbnRlcm5hbCogaW1wbCkKIHsKICNpZmRlZiBORUVEU19XUkFQ
UEVSX0NBQ0hFX0xPQ0sKLSAgICBzdGQ6OmxvY2tfZ3VhcmQ8TG9jaz4gbG9jayh3cmFwcGVyQ2Fj
aGVMb2NrKTsKKyAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKHdyYXBwZXJDYWNoZUxvY2spOwog
I2VuZGlmCiAgICAgcmV0dXJuIHdyYXBwZXJDYWNoZSgpLmdldChpbXBsKTsKIH0KQEAgLTY0LDcg
KzY0LDcgQEAgTlNPYmplY3QqIGdldERPTVdyYXBwZXIoRE9NT2JqZWN0SW50ZXJuYWwqIGltcGwp
CiB2b2lkIGFkZERPTVdyYXBwZXIoTlNPYmplY3QqIHdyYXBwZXIsIERPTU9iamVjdEludGVybmFs
KiBpbXBsKQogewogI2lmZGVmIE5FRURTX1dSQVBQRVJfQ0FDSEVfTE9DSwotICAgIHN0ZDo6bG9j
a19ndWFyZDxMb2NrPiBsb2NrKHdyYXBwZXJDYWNoZUxvY2spOworICAgIGF1dG8gbG9ja2VyID0g
aG9sZExvY2sod3JhcHBlckNhY2hlTG9jayk7CiAjZW5kaWYKICAgICB3cmFwcGVyQ2FjaGUoKS5z
ZXQoaW1wbCwgd3JhcHBlcik7CiB9CkBAIC03Miw3ICs3Miw3IEBAIHZvaWQgYWRkRE9NV3JhcHBl
cihOU09iamVjdCogd3JhcHBlciwgRE9NT2JqZWN0SW50ZXJuYWwqIGltcGwpCiB2b2lkIHJlbW92
ZURPTVdyYXBwZXIoRE9NT2JqZWN0SW50ZXJuYWwqIGltcGwpCiB7CiAjaWZkZWYgTkVFRFNfV1JB
UFBFUl9DQUNIRV9MT0NLCi0gICAgc3RkOjpsb2NrX2d1YXJkPExvY2s+IGxvY2sod3JhcHBlckNh
Y2hlTG9jayk7CisgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayh3cmFwcGVyQ2FjaGVMb2NrKTsK
ICNlbmRpZgogICAgIHdyYXBwZXJDYWNoZSgpLnJlbW92ZShpbXBsKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvTXV0ZXguaCBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2Mv
TXV0ZXguaAppbmRleCAyNDBjODVlZmZlYTAwNzcxMzRhMDliNTk3M2UzMzIxYjliOWM3ODA1Li5m
NGNjMmFhNDExYzkyODMyMjEyOTFjYTg1ODAyMGQzMDE4YWEyM2FkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvYm1hbGxvYy9ibWFsbG9jL011dGV4LmgKKysrIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9N
dXRleC5oCkBAIC0zOCw3ICszOCw3IEBAIG5hbWVzcGFjZSBibWFsbG9jIHsKIGNsYXNzIE11dGV4
OwogCiB1c2luZyBVbmlxdWVMb2NrSG9sZGVyID0gc3RkOjp1bmlxdWVfbG9jazxNdXRleD47Ci11
c2luZyBMb2NrSG9sZGVyID0gc3RkOjpsb2NrX2d1YXJkPE11dGV4PjsKK3VzaW5nIExvY2tIb2xk
ZXIgPSBzdGQ6OnNjb3BlZF9sb2NrPE11dGV4PjsKIAogY2xhc3MgTXV0ZXggewogcHVibGljOgpk
aWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGYyOTFm
NGViNjBmMjc0YTRkY2U3M2JkMjcxNDI5ZDhhMWVhMDgxOWIuLjA5NjU3OTQ4ZTJiMDI4M2EzMDM2
NjU5MDkzMjcyZjdkNjg2YWY1NDAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9U
b29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOCBAQAorMjAyMC0wMi0yOSAgWXVzdWtlIFN1enVr
aSAgPHlzdXp1a2lAYXBwbGUuY29tPgorCisgICAgICAgIFJlbW92ZSBzdGQ6OmxvY2tfZ3VhcmQK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNjQ1MQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBzdGQ6
OmxvY2tfZ3VhcmQgbGludCBydWxlIHRvIHByZXZlbnQgZnJvbSB1c2luZyBpdC4KKworICAgICAg
ICAqIFNjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvY3BwLnB5OgorICAgICAgICAoY2hl
Y2tfbG9ja19ndWFyZCk6CisgICAgICAgIChjaGVja19zdHlsZSk6CisgICAgICAgICogU2NyaXB0
cy93ZWJraXRweS9zdHlsZS9jaGVja2Vycy9jcHBfdW5pdHRlc3QucHk6CisgICAgICAgIChXZWJL
aXRTdHlsZVRlc3QudGVzdF9sb2NrX2d1YXJkKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rl
c3RzL1dURi9Db25kaXRpb24uY3BwOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RG
L1BhcmtpbmdMb3QuY3BwOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL2JtYWxs
b2MvSXNvSGVhcC5jcHA6CisgICAgICAgIChhc3NlcnRIYXNPYmplY3RzKToKKyAgICAgICAgKGFz
c2VydEhhc09ubHlPYmplY3RzKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL0FjY2Vzc2liaWxpdHlDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdUUjo6QVhUaHJl
YWQ6OmRpc3BhdGNoKToKKyAgICAgICAgKFdUUjo6QVhUaHJlYWQ6OmRpc3BhdGNoRnVuY3Rpb25z
RnJvbUFYVGhyZWFkKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L21hYy9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlck1hYy5tbToKKyAgICAgICAgKFdUUjo6QVhUaHJl
YWQ6OmluaXRpYWxpemVSdW5Mb29wKToKKwogMjAyMC0wMi0yOCAgRnVqaWkgSGlyb25vcmkgIDxI
aXJvbm9yaS5GdWppaUBzb255LmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91
dCByMjU3NTY1LgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVj
a2Vycy9jcHAucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL2NwcC5w
eQppbmRleCBlY2VjNjVjZDk2ZDU4NjdjMTNmZGZiYWQwN2UzZGViNTE2OWE5YjA0Li4zOTIzM2Uw
MGU2MGM4MTk4ZDM1MzFmYmE2NTVhMGVmNGFmNWZhNmJjIDEwMDY0NAotLS0gYS9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL2NwcC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L3N0eWxlL2NoZWNrZXJzL2NwcC5weQpAQCAtMjUwNSw2ICsyNTA1LDI4IEBAIGRlZiBj
aGVja193dGZfbWFrZV91bmlxdWUoY2xlYW5fbGluZXMsIGxpbmVfbnVtYmVyLCBmaWxlX3N0YXRl
LCBlcnJvcik6CiAgICAgICAgICAgICAgICJVc2UgJ1dURjo6bWFrZVVuaXF1ZTx7dHlwZW5hbWV9
PicgaW5zdGVhZCBvZiAnc3RkOjptYWtlX3VuaXF1ZTx7dHlwZW5hbWV9PicuIi5mb3JtYXQodHlw
ZW5hbWU9dHlwZW5hbWUpKQogCiAKK2RlZiBjaGVja19sb2NrX2d1YXJkKGNsZWFuX2xpbmVzLCBs
aW5lX251bWJlciwgZmlsZV9zdGF0ZSwgZXJyb3IpOgorICAgICIiIkxvb2tzIGZvciB1c2Ugb2Yg
J3N0ZDo6bG9ja19ndWFyZDw+JyB3aGljaCBzaG91bGQgYmUgcmVwbGFjZWQgd2l0aCAnV1RGOjpM
b2NrZXInLgorCisgICAgQXJnczoKKyAgICAgIGNsZWFuX2xpbmVzOiBBIENsZWFuc2VkTGluZXMg
aW5zdGFuY2UgY29udGFpbmluZyB0aGUgZmlsZS4KKyAgICAgIGxpbmVfbnVtYmVyOiBUaGUgbnVt
YmVyIG9mIHRoZSBsaW5lIHRvIGNoZWNrLgorICAgICAgZmlsZV9zdGF0ZTogQSBfRmlsZVN0YXRl
IGluc3RhbmNlIHdoaWNoIG1haW50YWlucyBpbmZvcm1hdGlvbiBhYm91dAorICAgICAgICAgICAg
ICAgICAgdGhlIHN0YXRlIG9mIHRoaW5ncyBpbiB0aGUgZmlsZS4KKyAgICAgIGVycm9yOiBUaGUg
ZnVuY3Rpb24gdG8gY2FsbCB3aXRoIGFueSBlcnJvcnMgZm91bmQuCisgICAgIiIiCisKKyAgICBs
aW5lID0gY2xlYW5fbGluZXMuZWxpZGVkW2xpbmVfbnVtYmVyXSAgIyBHZXQgcmlkIG9mIGNvbW1l
bnRzIGFuZCBzdHJpbmdzLgorCisgICAgdXNpbmdfc3RkX2xvY2tfZ3VhcmRfc2VhcmNoID0gc2Vh
cmNoKHInXGJzdGQ6OmxvY2tfZ3VhcmRccyo8KFteKF0rKScsIGxpbmUpCisgICAgaWYgbm90IHVz
aW5nX3N0ZF9sb2NrX2d1YXJkX3NlYXJjaDoKKyAgICAgICAgcmV0dXJuCisKKyAgICB0eXBlbmFt
ZSA9IHVzaW5nX3N0ZF9sb2NrX2d1YXJkX3NlYXJjaC5ncm91cCgxKS5zdHJpcCgpWzotMV0uc3Ry
aXAoKQorICAgIGVycm9yKGxpbmVfbnVtYmVyLCAncnVudGltZS93dGZfbG9ja19ndWFyZCcsIDQs
CisgICAgICAgICAgIlVzZSAnYXV0byBsb2NrZXIgPSBob2xkTG9jayhtdXRleCknIGluc3RlYWQg
b2YgJ3N0ZDo6bG9ja19ndWFyZDx7dHlwZW5hbWV9PicuIi5mb3JtYXQodHlwZW5hbWU9dHlwZW5h
bWUpKQorCisKIGRlZiBjaGVja19jdHlwZV9mdW5jdGlvbnMoY2xlYW5fbGluZXMsIGxpbmVfbnVt
YmVyLCBmaWxlX3N0YXRlLCBlcnJvcik6CiAgICAgIiIiTG9va3MgZm9yIHVzZSBvZiB0aGUgc3Rh
bmRhcmQgZnVuY3Rpb25zIGluIGN0eXBlLmggYW5kIHN1Z2dlc3QgdGhleSBiZSByZXBsYWNlZAog
ICAgICAgIGJ5IHVzZSBvZiBlcXVpdmlsZW50IG9uZXMgaW4gPHd0Zi9BU0NJSUNUeXBlLmg+Py4K
QEAgLTMwNjUsNiArMzA4Nyw3IEBAIGRlZiBjaGVja19zdHlsZShjbGVhbl9saW5lcywgbGluZV9u
dW1iZXIsIGZpbGVfZXh0ZW5zaW9uLCBjbGFzc19zdGF0ZSwgZmlsZV9zdGF0CiAgICAgY2hlY2tf
d3RmX21vdmUoY2xlYW5fbGluZXMsIGxpbmVfbnVtYmVyLCBmaWxlX3N0YXRlLCBlcnJvcikKICAg
ICBjaGVja193dGZfb3B0aW9uYWwoY2xlYW5fbGluZXMsIGxpbmVfbnVtYmVyLCBmaWxlX3N0YXRl
LCBlcnJvcikKICAgICBjaGVja193dGZfbWFrZV91bmlxdWUoY2xlYW5fbGluZXMsIGxpbmVfbnVt
YmVyLCBmaWxlX3N0YXRlLCBlcnJvcikKKyAgICBjaGVja19sb2NrX2d1YXJkKGNsZWFuX2xpbmVz
LCBsaW5lX251bWJlciwgZmlsZV9zdGF0ZSwgZXJyb3IpCiAgICAgY2hlY2tfY3R5cGVfZnVuY3Rp
b25zKGNsZWFuX2xpbmVzLCBsaW5lX251bWJlciwgZmlsZV9zdGF0ZSwgZXJyb3IpCiAgICAgY2hl
Y2tfc3dpdGNoX2luZGVudGF0aW9uKGNsZWFuX2xpbmVzLCBsaW5lX251bWJlciwgZXJyb3IpCiAg
ICAgY2hlY2tfYnJhY2VzKGNsZWFuX2xpbmVzLCBsaW5lX251bWJlciwgZmlsZV9zdGF0ZSwgZXJy
b3IpCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL2Nw
cF91bml0dGVzdC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvY3Bw
X3VuaXR0ZXN0LnB5CmluZGV4IGUwYmM0YTQyYTZkN2U5ZDc5MTRiMjQ4NmU5ZDBiMmEwMGYyNWY4
YWQuLjVkMzJlYzk1MmJkNzIyNDYxZDJiOTcxMjkyM2RiNmYyNmM1YTJmYTkgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvY3BwX3VuaXR0ZXN0LnB5Cisr
KyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvY3BwX3VuaXR0ZXN0LnB5
CkBAIC01MzczLDYgKzUzNzMsMjQgQEAgZGVmIHRlc3Rfd3RmX29wdGlvbmFsKHNlbGYpOgogICAg
ICAgICAgICAgIiAgW3J1bnRpbWUvd3RmX29wdGlvbmFsXSBbNF0iLAogICAgICAgICAgICAgJ2Zv
by5jcHAnKQogCisgICAgZGVmIHRlc3RfbG9ja19ndWFyZChzZWxmKToKKyAgICAgICAgc2VsZi5h
c3NlcnRfbGludCgKKyAgICAgICAgICAgICdhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG11dGV4KTsn
LAorICAgICAgICAgICAgJycsCisgICAgICAgICAgICAnZm9vLmNwcCcpCisKKyAgICAgICAgc2Vs
Zi5hc3NlcnRfbGludCgKKyAgICAgICAgICAgICdzdGQ6OmxvY2tfZ3VhcmQ8TG9jaz4gbG9ja2Vy
KG11dGV4KTsnLAorICAgICAgICAgICAgIlVzZSAnYXV0byBsb2NrZXIgPSBob2xkTG9jayhtdXRl
eCknIGluc3RlYWQgb2YgJ3N0ZDo6bG9ja19ndWFyZDxMb2NrPicuIgorICAgICAgICAgICAgIiAg
W3J1bnRpbWUvbG9ja19ndWFyZF0gWzRdIiwKKyAgICAgICAgICAgICdmb28uY3BwJykKKworICAg
ICAgICBzZWxmLmFzc2VydF9saW50KAorICAgICAgICAgICAgJ3N0ZDo6bG9ja19ndWFyZDxMb2Nr
PiBsb2NrZXIobXV0ZXgpOycsCisgICAgICAgICAgICAiVXNlICdhdXRvIGxvY2tlciA9IGhvbGRM
b2NrKG11dGV4KScgaW5zdGVhZCBvZiAnc3RkOjpsb2NrX2d1YXJkPExvY2s+Jy4iCisgICAgICAg
ICAgICAiICBbcnVudGltZS9sb2NrX2d1YXJkXSBbNF0iLAorICAgICAgICAgICAgJ2Zvby5tbScp
CisKICAgICBkZWYgdGVzdF9jdHlwZV9mdWNudGlvbihzZWxmKToKICAgICAgICAgc2VsZi5hc3Nl
cnRfbGludCgKICAgICAgICAgICAgICdpbnQgaSA9IGlzYXNjaWkoOCk7JywKZGlmZiAtLWdpdCBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0NvbmRpdGlvbi5jcHAgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dURi9Db25kaXRpb24uY3BwCmluZGV4IDI2YzhmOTlmNDI5Y2QwM2Ri
MDA4Yjc1NzBlMzgxMWQyMjE4ODRjMGYuLjBlYzEwNWQ0ZTI1YWY5MmZhZjAzODY3OGJkNTFlZDJk
MTU0ZWE1OGIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0NvbmRp
dGlvbi5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvQ29uZGl0aW9uLmNw
cApAQCAtMTE4LDcgKzExOCw3IEBAIHZvaWQgcnVuVGVzdCgKICAgICAgICAgICAgICAgICAgICAg
bm90aWZ5KG5vdGlmeVN0eWxlLCBmdWxsQ29uZGl0aW9uLCBzaG91bGROb3RpZnkpOwogCiAgICAg
ICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6bG9ja19ndWFy
ZDxMb2NrPiBsb2NrZXIocmVjZWl2ZWRMb2NrKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGF1
dG8gbG9ja2VyID0gaG9sZExvY2socmVjZWl2ZWRMb2NrKTsKICAgICAgICAgICAgICAgICAgICAg
ICAgIHJlY2VpdmVkLmFwcGVuZChyZXN1bHQpOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAgICAgfQpAQCAtMTU1LDcgKzE1NSw3IEBAIHZvaWQgcnVuVGVzdCgKICAgICAgICAg
dGhyZWFkLT53YWl0Rm9yQ29tcGxldGlvbigpOwogCiAgICAgewotICAgICAgICBzdGQ6OmxvY2tf
Z3VhcmQ8TG9jaz4gbG9ja2VyKGxvY2spOworICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2Nr
KGxvY2spOwogICAgICAgICBzaG91bGRDb250aW51ZSA9IGZhbHNlOwogICAgIH0KICAgICBlbXB0
eUNvbmRpdGlvbi5ub3RpZnlBbGwoKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV1RGL1BhcmtpbmdMb3QuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYv
UGFya2luZ0xvdC5jcHAKaW5kZXggZTAwYTA5YjJhMTdhYTczNDg1NmU0MmMxMTQ1Y2JlNjA4NjNm
MGEwNS4uZmI4Mjc5MGY4OGU3MmNjYWQ5NmRiYmRmYWVkZjYwOTlkYmU5NzM5YiAxMDA2NDQKLS0t
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvUGFya2luZ0xvdC5jcHAKKysrIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvUGFya2luZ0xvdC5jcHAKQEAgLTUxLDcgKzUxLDcg
QEAgc3RydWN0IFNpbmdsZUxhdGNoVGVzdCB7CiAgICAgICAgICAgICAgICAgICAgIFsmXSAoKSB7
CiAgICAgICAgICAgICAgICAgICAgICAgICBkb3duKCk7CiAKLSAgICAgICAgICAgICAgICAgICAg
ICAgIHN0ZDo6bG9ja19ndWFyZDxzdGQ6Om11dGV4PiBsb2NrZXIobG9jayk7CisgICAgICAgICAg
ICAgICAgICAgICAgICBzdGQ6OnNjb3BlZF9sb2NrPHN0ZDo6bXV0ZXg+IGxvY2tlcihsb2NrKTsK
ICAgICAgICAgICAgICAgICAgICAgICAgIGF3YWtlLmFkZChUaHJlYWQ6OmN1cnJlbnQoKSk7CiAg
ICAgICAgICAgICAgICAgICAgICAgICBsYXN0QXdva2VuID0gJlRocmVhZDo6Y3VycmVudCgpOwog
ICAgICAgICAgICAgICAgICAgICAgICAgY29uZGl0aW9uLm5vdGlmeV9vbmUoKTsKZGlmZiAtLWdp
dCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL2JtYWxsb2MvSXNvSGVhcC5jcHAgYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9ibWFsbG9jL0lzb0hlYXAuY3BwCmluZGV4IDA4
YjcyYWE2ZjIyOGQ0MTUzNzBiMWE1OTU0NWVlZTViYmYxZWZlZWEuLmNiZWU3NzE1MzBjNmE4Zjg2
N2M0MTU2N2VlOTQwZWQzMjU3NDUxZDUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV1RGL2JtYWxsb2MvSXNvSGVhcC5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XVEYvYm1hbGxvYy9Jc29IZWFwLmNwcApAQCAtNzgsNyArNzgsNyBAQCBzdGF0aWMgdm9p
ZCBhc3NlcnRIYXNPYmplY3RzKElzb0hlYXA8aGVhcFR5cGU+JiBoZWFwLCBzdGQ6OnNldDx2b2lk
Kj4gcG9pbnRlcnMpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGhl
YXAuaW1wbCgpOwotICAgIHN0ZDo6bG9ja19ndWFyZDxibWFsbG9jOjpNdXRleD4gbG9ja2VyKGlt
cGwubG9jayk7CisgICAgc3RkOjpzY29wZWRfbG9jazxibWFsbG9jOjpNdXRleD4gbG9ja2VyKGlt
cGwubG9jayk7CiAgICAgaW1wbC5mb3JFYWNoTGl2ZU9iamVjdCgKICAgICAgICAgbG9ja2VyLAog
ICAgICAgICBbJl0gKHZvaWQqIG9iamVjdCkgewpAQCAtOTUsNyArOTUsNyBAQCBzdGF0aWMgdm9p
ZCBhc3NlcnRIYXNPbmx5T2JqZWN0cyhJc29IZWFwPGhlYXBUeXBlPiYgaGVhcCwgc3RkOjpzZXQ8
dm9pZCo+IHBvaW50ZQogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBo
ZWFwLmltcGwoKTsKLSAgICBzdGQ6OmxvY2tfZ3VhcmQ8Ym1hbGxvYzo6TXV0ZXg+IGxvY2tlcihp
bXBsLmxvY2spOworICAgIHN0ZDo6c2NvcGVkX2xvY2s8Ym1hbGxvYzo6TXV0ZXg+IGxvY2tlcihp
bXBsLmxvY2spOwogICAgIGltcGwuZm9yRWFjaExpdmVPYmplY3QoCiAgICAgICAgIGxvY2tlciwK
ICAgICAgICAgWyZdICh2b2lkKiBvYmplY3QpIHsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuY3BwIGIvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5Q29udHJvbGxl
ci5jcHAKaW5kZXggYzk2NjljMWZkYmI1MmQyMDZkYzQzMDcyM2FjODgzZGZlOTAyNGJmMC4uMTI0
MjIzOGJhNjIwNjNhOTJiZmFhMzE1MTAxZTAzZjk4MGVlYzIxYyAxMDA2NDQKLS0tIGEvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5j
cHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmls
aXR5Q29udHJvbGxlci5jcHAKQEAgLTEzNyw3ICsxMzcsNyBAQCB2b2lkIEFYVGhyZWFkOjpkaXNw
YXRjaChGdW5jdGlvbjx2b2lkKCk+JiYgZnVuY3Rpb24pCiAgICAgYXhUaHJlYWQuY3JlYXRlVGhy
ZWFkSWZOZWVkZWQoKTsKIAogICAgIHsKLSAgICAgICAgc3RkOjpsb2NrX2d1YXJkPExvY2s+IGxv
Y2soYXhUaHJlYWQubV9mdW5jdGlvbnNNdXRleCk7CisgICAgICAgIGF1dG8gbG9ja2VyID0gaG9s
ZExvY2soYXhUaHJlYWQubV9mdW5jdGlvbnNNdXRleCk7CiAgICAgICAgIGF4VGhyZWFkLm1fZnVu
Y3Rpb25zLmFwcGVuZChXVEZNb3ZlKGZ1bmN0aW9uKSk7CiAgICAgfQogCkBAIC0xODUsNyArMTg1
LDcgQEAgdm9pZCBBWFRocmVhZDo6ZGlzcGF0Y2hGdW5jdGlvbnNGcm9tQVhUaHJlYWQoKQogICAg
IFZlY3RvcjxGdW5jdGlvbjx2b2lkKCk+PiBmdW5jdGlvbnM7CiAKICAgICB7Ci0gICAgICAgIHN0
ZDo6bG9ja19ndWFyZDxMb2NrPiBsb2NrKG1fZnVuY3Rpb25zTXV0ZXgpOworICAgICAgICBhdXRv
IGxvY2tlciA9IGhvbGRMb2NrKG1fZnVuY3Rpb25zTXV0ZXgpOwogICAgICAgICBmdW5jdGlvbnMg
PSBXVEZNb3ZlKG1fZnVuY3Rpb25zKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvbWFjL0FjY2Vzc2liaWxpdHlDb250cm9sbGVyTWFj
Lm1tIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9tYWMvQWNjZXNzaWJp
bGl0eUNvbnRyb2xsZXJNYWMubW0KaW5kZXggYTk0ZGUzODYwZDljYzQxZTZiZjhjZjBmZTM3ZDc5
YjUzYmNiYmU2My4uZTgzYWQ2NzU3NjEwNzRjYjMzODUzNjU4MGM3MjFmOGU0OWMyM2JhMiAxMDA2
NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9tYWMvQWNjZXNz
aWJpbGl0eUNvbnRyb2xsZXJNYWMubW0KKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9Jbmpl
Y3RlZEJ1bmRsZS9tYWMvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXJNYWMubW0KQEAgLTEyOSw3ICsx
MjksNyBAQCB2b2lkIEFYVGhyZWFkOjppbml0aWFsaXplUnVuTG9vcCgpCiB7CiAgICAgLy8gSW5p
dGlhbGl6ZSB0aGUgcnVuIGxvb3AuCiAgICAgewotICAgICAgICBzdGQ6OmxvY2tfZ3VhcmQ8TG9j
az4gbG9jayhtX2luaXRpYWxpemVSdW5Mb29wTXV0ZXgpOworICAgICAgICBhdXRvIGxvY2tlciA9
IGhvbGRMb2NrKG1faW5pdGlhbGl6ZVJ1bkxvb3BNdXRleCk7CiAKICAgICAgICAgbV90aHJlYWRS
dW5Mb29wID0gQ0ZSdW5Mb29wR2V0Q3VycmVudCgpOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>392057</attachid>
            <date>2020-02-29 02:41:48 -0800</date>
            <delta_ts>2020-02-29 21:01:37 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-206451-20200229024147.patch</filename>
            <type>text/plain</type>
            <size>82154</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU3NjgxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAy
YzBmNThlZTJiOTllZTQwMDBlMDI3NDkwZWNhYTgzN2U3Mzg2MDE0Li40NzUwYjI0MmJlNzc4OGJj
NmVjZmFlNTZkNjRiOTliODQ4OTBhMTdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyOCBAQAorMjAyMC0wMi0yOSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFJlbW92ZSBzdGQ6OmxvY2tfZ3VhcmQKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNjQ1MQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogQVBJL0pTVmlydHVhbE1hY2hpbmUubW06Cisg
ICAgICAgICgrW0pTVk1XcmFwcGVyQ2FjaGUgYWRkV3JhcHBlcjpmb3JKU0NvbnRleHRHcm91cFJl
ZjpdKToKKyAgICAgICAgKCtbSlNWTVdyYXBwZXJDYWNoZSB3cmFwcGVyRm9ySlNDb250ZXh0R3Jv
dXBSZWY6XSk6CisgICAgICAgICogQVBJL2dsaWIvSlNDVmlydHVhbE1hY2hpbmUuY3BwOgorICAg
ICAgICAoYWRkV3JhcHBlcik6CisgICAgICAgIChyZW1vdmVXcmFwcGVyKToKKyAgICAgICAgKiBo
ZWFwL0hlYXBTbmFwc2hvdEJ1aWxkZXIuY3BwOgorICAgICAgICAoSlNDOjpIZWFwU25hcHNob3RC
dWlsZGVyOjphbmFseXplTm9kZSk6CisgICAgICAgIChKU0M6OkhlYXBTbmFwc2hvdEJ1aWxkZXI6
OmFuYWx5emVFZGdlKToKKyAgICAgICAgKEpTQzo6SGVhcFNuYXBzaG90QnVpbGRlcjo6YW5hbHl6
ZVByb3BlcnR5TmFtZUVkZ2UpOgorICAgICAgICAoSlNDOjpIZWFwU25hcHNob3RCdWlsZGVyOjph
bmFseXplVmFyaWFibGVOYW1lRWRnZSk6CisgICAgICAgIChKU0M6OkhlYXBTbmFwc2hvdEJ1aWxk
ZXI6OmFuYWx5emVJbmRleEVkZ2UpOgorICAgICAgICAoSlNDOjpIZWFwU25hcHNob3RCdWlsZGVy
OjpzZXRPcGFxdWVSb290UmVhY2hhYmlsaXR5UmVhc29uRm9yQ2VsbCk6CisgICAgICAgICogaGVh
cC9NYWNoaW5lU3RhY2tNYXJrZXIuY3BwOgorICAgICAgICAoSlNDOjpNYWNoaW5lVGhyZWFkczo6
dHJ5Q29weU90aGVyVGhyZWFkU3RhY2tzKToKKyAgICAgICAgKiBydW50aW1lL0pTUnVuTG9vcFRp
bWVyLmNwcDoKKyAgICAgICAgKEpTQzo6SlNSdW5Mb29wVGltZXI6OnRpbWVyRGlkRmlyZSk6CisK
IDIwMjAtMDItMjggIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KIAogICAgICAg
ICBbSlNDXSBCdWlsdGluTmFtZXMnIEhhc2hNYXAgc2hvdWxkIGJlIHNtYWxsCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDlmMmM5
MTQ3YmUwNGZiOWM0NzAzZWU1MGZjZGVhOTQ5NjcwODRmNjEuLjYzMzE2NDgyZDlkOWQ4Y2UxZjJk
NmI5MGQ3NjM1NzcwNDJhZDYyZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTEgQEAKKzIwMjAtMDItMjkgIFl1
c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgc3RkOjps
b2NrX2d1YXJkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMDY0NTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBSZW1vdmUgdXNlIG9mIHN0ZDo6bG9ja19ndWFyZC4gVGhpcyBpcyBkZXByZWNhdGVkIGluIEMr
KzE3LgorCisgICAgICAgIDEuIEZvciBwYXJ0aWN1bGFybHkgbG93LWxldmVsIHVzYWdlIChsaWtl
LCBibWFsbG9jLCBzdGQ6Om11dGV4KSwgdXNlIHN0ZDo6c2NvcGVkX2xvY2suCisgICAgICAgIDIu
IEZvciB0aGUgb3RoZXIgcHVycG9zZSwgdXNlIGhvbGRMb2NrLgorCisgICAgICAgICogYmVuY2ht
YXJrcy9Db25kaXRpb25TcGVlZFRlc3QuY3BwOgorICAgICAgICAqIHd0Zi9DcnlwdG9ncmFwaGlj
YWxseVJhbmRvbU51bWJlci5jcHA6CisgICAgICAgICogd3RmL0hhc2hUYWJsZS5jcHA6CisgICAg
ICAgIChXVEY6Okhhc2hUYWJsZVN0YXRzOjpyZWNvcmRDb2xsaXNpb25BdENvdW50KToKKyAgICAg
ICAgKFdURjo6SGFzaFRhYmxlU3RhdHM6OmR1bXBTdGF0cyk6CisgICAgICAgICogd3RmL0hhc2hU
YWJsZS5oOgorICAgICAgICAoV1RGOjpLZXlUcmFpdHM+OjppbnZhbGlkYXRlSXRlcmF0b3JzKToK
KyAgICAgICAgKFdURjo6YWRkSXRlcmF0b3IpOgorICAgICAgICAoV1RGOjpyZW1vdmVJdGVyYXRv
cik6CisgICAgICAgICogd3RmL0xhbmd1YWdlLmNwcDoKKyAgICAgICAgKFdURjo6dXNlclByZWZl
cnJlZExhbmd1YWdlcyk6CisgICAgICAgICogd3RmL01haW5UaHJlYWQuY3BwOgorICAgICAgICAo
V1RGOjpkaXNwYXRjaEZ1bmN0aW9uc0Zyb21NYWluVGhyZWFkKToKKyAgICAgICAgKFdURjo6Y2Fs
bE9uTWFpblRocmVhZCk6CisgICAgICAgIChXVEY6OmNhbGxPbk1haW5BbmRXYWl0KToKKyAgICAg
ICAgKiB3dGYvU3RhY2tTdGF0cy5jcHA6CisgICAgICAgIChXVEY6OlN0YWNrU3RhdHM6OkNoZWNr
UG9pbnQ6OkNoZWNrUG9pbnQpOgorICAgICAgICAoV1RGOjpTdGFja1N0YXRzOjpDaGVja1BvaW50
Ojp+Q2hlY2tQb2ludCk6CisgICAgICAgIChXVEY6OlN0YWNrU3RhdHM6OnByb2JlKToKKyAgICAg
ICAgKFdURjo6U3RhY2tTdGF0czo6TGF5b3V0Q2hlY2tQb2ludDo6TGF5b3V0Q2hlY2tQb2ludCk6
CisgICAgICAgIChXVEY6OlN0YWNrU3RhdHM6OkxheW91dENoZWNrUG9pbnQ6On5MYXlvdXRDaGVj
a1BvaW50KToKKyAgICAgICAgKiB3dGYvV29yZExvY2suY3BwOgorICAgICAgICAoV1RGOjpXb3Jk
TG9jazo6dW5sb2NrU2xvdyk6CisgICAgICAgICogd3RmL2NmL0xhbmd1YWdlQ0YuY3BwOgorICAg
ICAgICAoV1RGOjpsYW5ndWFnZVByZWZlcmVuY2VzRGlkQ2hhbmdlKToKKyAgICAgICAgKFdURjo6
cGxhdGZvcm1Vc2VyUHJlZmVycmVkTGFuZ3VhZ2VzKToKKyAgICAgICAgKiB3dGYvdGV4dC9TdHJp
bmdWaWV3LmNwcDoKKyAgICAgICAgKFdURjo6U3RyaW5nVmlldzo6aW52YWxpZGF0ZSk6CisgICAg
ICAgIChXVEY6OlN0cmluZ1ZpZXc6OmFkb3B0VW5kZXJseWluZ1N0cmluZyk6CisgICAgICAgIChX
VEY6OlN0cmluZ1ZpZXc6OnNldFVuZGVybHlpbmdTdHJpbmcpOgorICAgICAgICAqIHd0Zi91bmlj
b2RlL2ljdS9Db2xsYXRvcklDVS5jcHA6CisgICAgICAgIChXVEY6OkNvbGxhdG9yOjpDb2xsYXRv
cik6CisgICAgICAgIChXVEY6OkNvbGxhdG9yOjp+Q29sbGF0b3IpOgorICAgICAgICAqIHd0Zi93
aW4vTGFuZ3VhZ2VXaW4uY3BwOgorICAgICAgICAoV1RGOjpwbGF0Zm9ybUxhbmd1YWdlKToKKwog
MjAyMC0wMi0yOCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgogCiAgICAgICAg
IFtKU0NdIEJ1aWx0aW5OYW1lcycgSGFzaE1hcCBzaG91bGQgYmUgc21hbGwKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRl
eCA1YWMyZWMzMWM4YTk0MWY3NjVmMzNjYjYyNTgyZDliM2Q3Yzk3MjRmLi5hMzBlZjRhYzA2Yjlk
MjYwNDJhZjNkYTY0ODYxNjUzMjZjYjFhNTNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsODcgQEAK
KzIwMjAtMDItMjkgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KKworICAgICAg
ICBSZW1vdmUgc3RkOjpsb2NrX2d1YXJkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMDY0NTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VOb2Rl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQnVmZmVyU291cmNlTm9kZTo6c2V0QnVmZmVy
KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvUGFyYW1UaW1lbGluZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpBdWRpb1BhcmFtVGltZWxpbmU6Omluc2VydEV2ZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OkF1ZGlvUGFyYW1UaW1lbGluZTo6Y2FuY2VsU2NoZWR1bGVkVmFsdWVzKToK
KyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0NvbnZvbHZlck5vZGUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q29udm9sdmVyTm9kZTo6cmVzZXQpOgorICAgICAgICAoV2ViQ29yZTo6Q29udm9s
dmVyTm9kZTo6c2V0QnVmZmVyKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL01lZGlhRWxl
bWVudEF1ZGlvU291cmNlTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUVsZW1lbnRB
dWRpb1NvdXJjZU5vZGU6OnNldEZvcm1hdCk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9N
ZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0
cmVhbUF1ZGlvU291cmNlTm9kZTo6c2V0Rm9ybWF0KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1
ZGlvL09zY2lsbGF0b3JOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok9zY2lsbGF0b3JOb2Rl
OjpzZXRQZXJpb2RpY1dhdmUpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vUGFubmVyTm9k
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYW5uZXJOb2RlOjpzZXRQYW5uaW5nTW9kZWwpOgor
ICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vV2F2ZVNoYXBlclByb2Nlc3Nvci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpXYXZlU2hhcGVyUHJvY2Vzc29yOjpzZXRDdXJ2ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpXYXZlU2hhcGVyUHJvY2Vzc29yOjpzZXRPdmVyc2FtcGxlKToKKyAgICAgICAgKiBN
b2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFi
YXNlOjpEYXRhYmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZTo6cGVyZm9ybU9wZW5B
bmRWZXJpZnkpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2U6OmNsb3NlRGF0YWJhc2UpOgor
ICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2U6OmdldENhY2hlZFZlcnNpb24gY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6RGF0YWJhc2U6OnNldENhY2hlZFZlcnNpb24pOgorICAgICAgICAqIE1v
ZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkRhdGFiYXNlTWFuYWdlcjo6YWRkUHJvcG9zZWREYXRhYmFzZSk6CisgICAgICAgIChXZWJDb3Jl
OjpEYXRhYmFzZU1hbmFnZXI6OnJlbW92ZVByb3Bvc2VkRGF0YWJhc2UpOgorICAgICAgICAoV2Vi
Q29yZTo6RGF0YWJhc2VNYW5hZ2VyOjpmdWxsUGF0aEZvckRhdGFiYXNlKToKKyAgICAgICAgKFdl
YkNvcmU6OkRhdGFiYXNlTWFuYWdlcjo6ZGV0YWlsc0Zvck5hbWVBbmRPcmlnaW4pOgorICAgICAg
ICAqIGNyeXB0by9DcnlwdG9BbGdvcml0aG1SZWdpc3RyeS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDcnlwdG9BbGdvcml0aG1SZWdpc3RyeTo6aWRlbnRpZmllcik6CisgICAgICAgIChXZWJDb3Jl
OjpDcnlwdG9BbGdvcml0aG1SZWdpc3RyeTo6bmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpDcnlw
dG9BbGdvcml0aG1SZWdpc3RyeTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0Fs
Z29yaXRobVJlZ2lzdHJ5OjpyZWdpc3RlckFsZ29yaXRobSk6CisgICAgICAgICogaW5zcGVjdG9y
L2FnZW50cy9XZWJIZWFwQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VuZEdhcmJhZ2VD
b2xsZWN0aW9uRXZlbnRzVGFzazo6YWRkR2FyYmFnZUNvbGxlY3Rpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6U2VuZEdhcmJhZ2VDb2xsZWN0aW9uRXZlbnRzVGFzazo6cmVzZXQpOgorICAgICAgICAo
V2ViQ29yZTo6U2VuZEdhcmJhZ2VDb2xsZWN0aW9uRXZlbnRzVGFzazo6dGltZXJGaXJlZCk6Cisg
ICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVGhyZWFkLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNjcm9sbGluZ1RocmVhZDo6ZGlzcGF0Y2gpOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
b2xsaW5nVGhyZWFkOjpkaXNwYXRjaEZ1bmN0aW9uc0Zyb21TY3JvbGxpbmdUaHJlYWQpOgorICAg
ICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL2dlbmVyaWMvU2Nyb2xsaW5nVGhyZWFkR2VuZXJpYy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUaHJlYWQ6OmluaXRpYWxpemVSdW5Mb29wKToK
KyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVGhyZWFkTWFjLm1tOgorICAg
ICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVGhyZWFkOjppbml0aWFsaXplUnVuTG9vcCk6CisgICAg
ICAgICogcGxhdGZvcm0vYXVkaW8vUmV2ZXJiQ29udm9sdmVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJldmVyYkNvbnZvbHZlcjo6flJldmVyYkNvbnZvbHZlcik6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0F1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6QXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakM6On5BdWRpb1NvdXJj
ZVByb3ZpZGVyQVZGT2JqQyk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1NvdXJjZVByb3ZpZGVy
QVZGT2JqQzo6ZmluYWxpemVDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1NvdXJj
ZVByb3ZpZGVyQVZGT2JqQzo6cHJlcGFyZUNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkF1
ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDOjp1bnByZXBhcmVDYWxsYmFjayk6CisgICAgICAgIChX
ZWJDb3JlOjpBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQzo6cHJvY2Vzc0NhbGxiYWNrKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250Q2FjaGVDb3JlVGV4dC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpGb250RGF0YWJhc2U6OmNvbGxlY3Rpb25Gb3JGYW1pbHkpOgorICAg
ICAgICAoV2ViQ29yZTo6Rm9udERhdGFiYXNlOjpjbGVhcik6CisgICAgICAgICogcGxhdGZvcm0v
aW9zL3dhay9XZWJDb3JlVGhyZWFkUnVuLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0
cmVhbS9tYWMvV2ViQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakMubW06CisgICAgICAgIChXZWJD
b3JlOjpXZWJBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQzo6fldlYkF1ZGlvU291cmNlUHJvdmlk
ZXJBVkZPYmpDKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkF1ZGlvU291cmNlUHJvdmlkZXJBVkZP
YmpDOjpwcmVwYXJlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkF1ZGlvU291cmNlUHJvdmlkZXJB
VkZPYmpDOjp1bnByZXBhcmUpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvTG9hZGVy
UnVuTG9vcENGLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmxvYWRlclJ1bkxvb3ApOgorICAgICAg
ICAqIHBsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
UUxpdGVEYXRhYmFzZTo6c2V0SXNEYXRhYmFzZU9wZW5pbmdGb3JiaWRkZW4pOgorICAgICAgICAo
V2ViQ29yZTo6U1FMaXRlRGF0YWJhc2U6Om9wZW4pOgorICAgICAgICAqIHBsYXRmb3JtL3NxbC9T
UUxpdGVEYXRhYmFzZVRyYWNrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJh
c2VUcmFja2VyOjpzZXRDbGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2VU
cmFja2VyOjppbmNyZW1lbnRUcmFuc2FjdGlvbkluUHJvZ3Jlc3NDb3VudCk6CisgICAgICAgIChX
ZWJDb3JlOjpTUUxpdGVEYXRhYmFzZVRyYWNrZXI6OmRlY3JlbWVudFRyYW5zYWN0aW9uSW5Qcm9n
cmVzc0NvdW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlVHJhY2tlcjo6aGFz
VHJhbnNhY3Rpb25JblByb2dyZXNzKToKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L1RleHRFbmNv
ZGluZ1JlZ2lzdHJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmJ1aWxkQmFzZVRleHRDb2RlY01h
cHMpOgorICAgICAgICAoV2ViQ29yZTo6bmV3VGV4dENvZGVjKToKKyAgICAgICAgKFdlYkNvcmU6
OmF0b21DYW5vbmljYWxUZXh0RW5jb2RpbmdOYW1lKToKKwogMjAyMC0wMi0yOCAgUGVuZyBMaXUg
IDxwZW5nLmxpdTZAYXBwbGUuY29tPgogCiAgICAgICAgIFtNZWRpYSBpbiBHUFUgcHJvY2Vzc10g
SW1wbGVtZW50IHRoZSB2aWRlbyBmdWxsc2NyZWVuIGFuZCBQaWN0dXJlLWluLVBpY3R1cmUgc3Vw
cG9ydApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZwppbmRleCAzNzRjNGMyNzdhNmI5NDg4ZTJhNTA0ZTYzNjMxMzZiYjUzOTE2NTE3
Li5kMGJmOWM3ZWVhZTVlN2VhMjZkYzA5MmNlMDQ2YTEwZmNmNjUwZmJjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAt
MSwzICsxLDM5IEBACisyMDIwLTAyLTI5ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5j
b20+CisKKyAgICAgICAgUmVtb3ZlIHN0ZDo6bG9ja19ndWFyZAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA2NDUxCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3
b3JrQ2FjaGVTdG9yYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpTdG9y
YWdlOjp0cmF2ZXJzZSk6CisgICAgICAgICogUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uY3BwOgor
ICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjpTeW5jTWVzc2FnZVN0YXRlOjpwcm9jZXNzSW5jb21p
bmdNZXNzYWdlKToKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6U3luY01lc3NhZ2VTdGF0ZTo6
ZGlzcGF0Y2hNZXNzYWdlcyk6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246OlN5bmNNZXNzYWdl
U3RhdGU6OmRpc3BhdGNoTWVzc2FnZXNBbmRSZXNldERpZFNjaGVkdWxlRGlzcGF0Y2hNZXNzYWdl
c0ZvckNvbm5lY3Rpb24pOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjphZGRXb3JrUXVldWVN
ZXNzYWdlUmVjZWl2ZXIpOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjpyZW1vdmVXb3JrUXVl
dWVNZXNzYWdlUmVjZWl2ZXIpOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjphZGRUaHJlYWRN
ZXNzYWdlUmVjZWl2ZXIpOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjpyZW1vdmVUaHJlYWRN
ZXNzYWdlUmVjZWl2ZXIpOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjpzZW5kTWVzc2FnZSk6
CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246OndhaXRGb3JNZXNzYWdlKToKKyAgICAgICAgKElQ
Qzo6Q29ubmVjdGlvbjo6cHJvY2Vzc0luY29taW5nTWVzc2FnZSk6CisgICAgICAgIChJUEM6OkNv
bm5lY3Rpb246Omluc3RhbGxJbmNvbWluZ1N5bmNNZXNzYWdlQ2FsbGJhY2spOgorICAgICAgICAo
SVBDOjpDb25uZWN0aW9uOjp1bmluc3RhbGxJbmNvbWluZ1N5bmNNZXNzYWdlQ2FsbGJhY2spOgor
ICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjpoYXNJbmNvbWluZ1N5bmNNZXNzYWdlKToKKyAgICAg
ICAgKElQQzo6Q29ubmVjdGlvbjo6Y29ubmVjdGlvbkRpZENsb3NlKToKKyAgICAgICAgKElQQzo6
Q29ubmVjdGlvbjo6c2VuZE91dGdvaW5nTWVzc2FnZXMpOgorICAgICAgICAoSVBDOjpDb25uZWN0
aW9uOjplbnF1ZXVlSW5jb21pbmdNZXNzYWdlKToKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6
ZGlzcGF0Y2hNZXNzYWdlVG9Xb3JrUXVldWVSZWNlaXZlcik6CisgICAgICAgIChJUEM6OkNvbm5l
Y3Rpb246OmRpc3BhdGNoTWVzc2FnZVRvVGhyZWFkUmVjZWl2ZXIpOgorICAgICAgICAoSVBDOjpD
b25uZWN0aW9uOjpkaXNwYXRjaE9uZUluY29taW5nTWVzc2FnZSk6CisgICAgICAgIChJUEM6OkNv
bm5lY3Rpb246OmRpc3BhdGNoSW5jb21pbmdNZXNzYWdlcyk6CisgICAgICAgICogU2hhcmVkL0Js
b2NraW5nUmVzcG9uc2VNYXAuaDoKKyAgICAgICAgKEJsb2NraW5nUmVzcG9uc2VNYXA6OmRpZFJl
Y2VpdmVSZXNwb25zZSk6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9XS1ByaW50aW5nVmlldy5t
bToKKyAgICAgICAgKC1bV0tQcmludGluZ1ZpZXcgX3ByZXBhcmVQREZEYXRhRm9yUHJpbnRpbmdP
blNlY29uZGFyeVRocmVhZF0pOgorICAgICAgICAocHJlcGFyZURhdGFGb3JQcmludGluZ09uU2Vj
b25kYXJ5VGhyZWFkKToKKwogMjAyMC0wMi0yOCAgUGVuZyBMaXUgIDxwZW5nLmxpdTZAYXBwbGUu
Y29tPgogCiAgICAgICAgIFtNZWRpYSBpbiBHUFUgcHJvY2Vzc10gSW1wbGVtZW50IHRoZSB2aWRl
byBmdWxsc2NyZWVuIGFuZCBQaWN0dXJlLWluLVBpY3R1cmUgc3VwcG9ydApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvQ2hhbmdlTG9nCmluZGV4IDE5NTllZGQyM2RiYjBlZGVmMDk4ODhhNGE3ZDkwYTczMWIwZWMy
MGMuLjg2MDc2MmQ3ZTUxMWFjZGQ2MzM1YjEwYWNjNWRjNTEyYjY5YzYxYTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAyMC0wMi0yOSAgWXVzdWtlIFN1
enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgorCisgICAgICAgIFJlbW92ZSBzdGQ6OmxvY2tfZ3Vh
cmQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNjQ1
MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogRE9N
L0RPTUludGVybmFsLm1tOgorICAgICAgICAoZ2V0RE9NV3JhcHBlcik6CisgICAgICAgIChhZGRE
T01XcmFwcGVyKToKKyAgICAgICAgKHJlbW92ZURPTVdyYXBwZXIpOgorCiAyMDIwLTAyLTI4ICBK
ZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgogCiAgICAgICAgIFtHUFVQXSBJbXBsZW1l
bnQgTW9kZXJuIEVNRSBBUEkgaW4gdGhlIEdQVSBQcm9jZXNzCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
Ym1hbGxvYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvYm1hbGxvYy9DaGFuZ2VMb2cKaW5kZXggOTMwYTI0
NjkwNTBmYmVjOTIyNjBjOWViYmNkYmY0YWY5NTk5ZjAwNS4uYjQ4NjQ3MGIxOTliMGU4MDg0MDE5
ODU5NDRlY2U4ODg1NTFhNDQxMSAxMDA2NDQKLS0tIGEvU291cmNlL2JtYWxsb2MvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9ibWFsbG9jL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDIwLTAy
LTI5ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3Zl
IHN0ZDo6bG9ja19ndWFyZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjA2NDUxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBibWFsbG9jL011dGV4Lmg6CisKIDIwMjAtMDItMjggIFNhYW0gQmFyYXRpICA8
c2JhcmF0aUBhcHBsZS5jb20+CiAKICAgICAgICAgQ2xlYW4gdXAgY29kZSB3aXRoIGhvdyB3ZSBj
aG9vc2UgR2lnYWNhZ2Ugc2l6ZXMgYW5kIHdoZXRoZXIgb3Igbm90IHRvIHVzZSBXYXNtIGZhc3Qg
bWVtb3J5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVmlydHVhbE1h
Y2hpbmUubW0gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVmlydHVhbE1hY2hpbmUubW0K
aW5kZXggMGQwMDgyOTA5NmUxZjlhMzUzNDZkMDY1NDA4NGRjMjRmOWQ5OTU3NC4uYzQ3MzZhZjgx
YzNhYmU4MGQ0NzFhYjY1ZjI4ZTc1ZjIyNmIxOGE3OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0FQSS9KU1ZpcnR1YWxNYWNoaW5lLm1tCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvSlNWaXJ0dWFsTWFjaGluZS5tbQpAQCAtNzAsMTMgKzcwLDEzIEBAIEBpbXBsZW1l
bnRhdGlvbiBKU1ZNV3JhcHBlckNhY2hlCiAKICsgKHZvaWQpYWRkV3JhcHBlcjooSlNWaXJ0dWFs
TWFjaGluZSAqKXdyYXBwZXIgZm9ySlNDb250ZXh0R3JvdXBSZWY6KEpTQ29udGV4dEdyb3VwUmVm
KWdyb3VwCiB7Ci0gICAgc3RkOjpsb2NrX2d1YXJkPExvY2s+IGxvY2sod3JhcHBlckNhY2hlTXV0
ZXgpOworICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sod3JhcHBlckNhY2hlTXV0ZXgpOwogICAg
IE5TTWFwSW5zZXJ0KHdyYXBwZXJDYWNoZSgpLCBncm91cCwgKF9fYnJpZGdlIHZvaWQqKXdyYXBw
ZXIpOwogfQogCiArIChKU1ZpcnR1YWxNYWNoaW5lICopd3JhcHBlckZvckpTQ29udGV4dEdyb3Vw
UmVmOihKU0NvbnRleHRHcm91cFJlZilncm91cAogewotICAgIHN0ZDo6bG9ja19ndWFyZDxMb2Nr
PiBsb2NrKHdyYXBwZXJDYWNoZU11dGV4KTsKKyAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKHdy
YXBwZXJDYWNoZU11dGV4KTsKICAgICByZXR1cm4gKF9fYnJpZGdlIEpTVmlydHVhbE1hY2hpbmUg
KilOU01hcEdldCh3cmFwcGVyQ2FjaGUoKSwgZ3JvdXApOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQVBJL2dsaWIvSlNDVmlydHVhbE1hY2hpbmUuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS9nbGliL0pTQ1ZpcnR1YWxNYWNoaW5lLmNwcAppbmRleCBjMDYx
YWZlZjE4OGE4MzM5MGVhZDRjMTFjMDZmYTM4MTExYzU4MmYyLi5iMjNiNzA3MTZkYmQxODAxZTg3
MzJkNGJlYWMzZjdhNjc4YTVkMjBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
QVBJL2dsaWIvSlNDVmlydHVhbE1hY2hpbmUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9BUEkvZ2xpYi9KU0NWaXJ0dWFsTWFjaGluZS5jcHAKQEAgLTU3LDE0ICs1NywxNCBAQCBzdGF0
aWMgSGFzaE1hcDxKU0NvbnRleHRHcm91cFJlZiwgSlNDVmlydHVhbE1hY2hpbmUqPiYgd3JhcHBl
ck1hcCgpCiAKIHN0YXRpYyB2b2lkIGFkZFdyYXBwZXIoSlNDb250ZXh0R3JvdXBSZWYgZ3JvdXAs
IEpTQ1ZpcnR1YWxNYWNoaW5lKiB2bSkKIHsKLSAgICBzdGQ6OmxvY2tfZ3VhcmQ8TG9jaz4gbG9j
ayh3cmFwcGVyQ2FjaGVNdXRleCk7CisgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayh3cmFwcGVy
Q2FjaGVNdXRleCk7CiAgICAgQVNTRVJUKCF3cmFwcGVyTWFwKCkuY29udGFpbnMoZ3JvdXApKTsK
ICAgICB3cmFwcGVyTWFwKCkuc2V0KGdyb3VwLCB2bSk7CiB9CiAKIHN0YXRpYyB2b2lkIHJlbW92
ZVdyYXBwZXIoSlNDb250ZXh0R3JvdXBSZWYgZ3JvdXApCiB7Ci0gICAgc3RkOjpsb2NrX2d1YXJk
PExvY2s+IGxvY2sod3JhcHBlckNhY2hlTXV0ZXgpOworICAgIGF1dG8gbG9ja2VyID0gaG9sZExv
Y2sod3JhcHBlckNhY2hlTXV0ZXgpOwogICAgIEFTU0VSVCh3cmFwcGVyTWFwKCkuY29udGFpbnMo
Z3JvdXApKTsKICAgICB3cmFwcGVyTWFwKCkucmVtb3ZlKGdyb3VwKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBTbmFwc2hvdEJ1aWxkZXIuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcFNuYXBzaG90QnVpbGRlci5jcHAKaW5kZXggY2Uw
MzliYTc3ZTlmYTJiY2VlNDdmMTVlYTYzZTZhNDhhNTFjY2QxMC4uZDViOWFkMjJmOTU1Mjg0MDE3
MzUyM2YxYTRiMTM4OTdjZTMwOWZmNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvSGVhcFNuYXBzaG90QnVpbGRlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvSGVhcFNuYXBzaG90QnVpbGRlci5jcHAKQEAgLTg4LDcgKzg4LDcgQEAgdm9pZCBIZWFw
U25hcHNob3RCdWlsZGVyOjphbmFseXplTm9kZShKU0NlbGwqIGNlbGwpCiAgICAgaWYgKHByZXZp
b3VzU25hcHNob3RIYXNOb2RlRm9yQ2VsbChjZWxsLCBpZGVudGlmaWVyKSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgc3RkOjpsb2NrX2d1YXJkPExvY2s+IGxvY2sobV9idWlsZGluZ05vZGVNdXRl
eCk7CisgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX2J1aWxkaW5nTm9kZU11dGV4KTsKICAg
ICBtX3NuYXBzaG90LT5hcHBlbmROb2RlKEhlYXBTbmFwc2hvdE5vZGUoY2VsbCwgZ2V0TmV4dE9i
amVjdElkZW50aWZpZXIoKSkpOwogfQogCkBAIC0xMDEsNyArMTAxLDcgQEAgdm9pZCBIZWFwU25h
cHNob3RCdWlsZGVyOjphbmFseXplRWRnZShKU0NlbGwqIGZyb20sIEpTQ2VsbCogdG8sIFNsb3RW
aXNpdG9yOjpSb28KICAgICBpZiAoZnJvbSA9PSB0bykKICAgICAgICAgcmV0dXJuOwogCi0gICAg
c3RkOjpsb2NrX2d1YXJkPExvY2s+IGxvY2sobV9idWlsZGluZ0VkZ2VNdXRleCk7CisgICAgYXV0
byBsb2NrZXIgPSBob2xkTG9jayhtX2J1aWxkaW5nRWRnZU11dGV4KTsKIAogICAgIGlmIChtX3Nu
YXBzaG90VHlwZSA9PSBTbmFwc2hvdFR5cGU6OkdDRGVidWdnaW5nU25hcHNob3QgJiYgIWZyb20p
IHsKICAgICAgICAgaWYgKHJvb3RNYXJrUmVhc29uID09IFNsb3RWaXNpdG9yOjpSb290TWFya1Jl
YXNvbjo6Tm9uZSAmJiBtX3NuYXBzaG90VHlwZSA9PSBTbmFwc2hvdFR5cGU6OkdDRGVidWdnaW5n
U25hcHNob3QpCkBAIC0xMjAsNyArMTIwLDcgQEAgdm9pZCBIZWFwU25hcHNob3RCdWlsZGVyOjph
bmFseXplUHJvcGVydHlOYW1lRWRnZShKU0NlbGwqIGZyb20sIEpTQ2VsbCogdG8sIFVuaXEKICAg
ICBBU1NFUlQobV9wcm9maWxlci5hY3RpdmVIZWFwQW5hbHl6ZXIoKSA9PSB0aGlzKTsKICAgICBB
U1NFUlQodG8pOwogCi0gICAgc3RkOjpsb2NrX2d1YXJkPExvY2s+IGxvY2sobV9idWlsZGluZ0Vk
Z2VNdXRleCk7CisgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX2J1aWxkaW5nRWRnZU11dGV4
KTsKIAogICAgIG1fZWRnZXMuYXBwZW5kKEhlYXBTbmFwc2hvdEVkZ2UoZnJvbSwgdG8sIEVkZ2VU
eXBlOjpQcm9wZXJ0eSwgcHJvcGVydHlOYW1lKSk7CiB9CkBAIC0xMzAsNyArMTMwLDcgQEAgdm9p
ZCBIZWFwU25hcHNob3RCdWlsZGVyOjphbmFseXplVmFyaWFibGVOYW1lRWRnZShKU0NlbGwqIGZy
b20sIEpTQ2VsbCogdG8sIFVuaXEKICAgICBBU1NFUlQobV9wcm9maWxlci5hY3RpdmVIZWFwQW5h
bHl6ZXIoKSA9PSB0aGlzKTsKICAgICBBU1NFUlQodG8pOwogCi0gICAgc3RkOjpsb2NrX2d1YXJk
PExvY2s+IGxvY2sobV9idWlsZGluZ0VkZ2VNdXRleCk7CisgICAgYXV0byBsb2NrZXIgPSBob2xk
TG9jayhtX2J1aWxkaW5nRWRnZU11dGV4KTsKIAogICAgIG1fZWRnZXMuYXBwZW5kKEhlYXBTbmFw
c2hvdEVkZ2UoZnJvbSwgdG8sIEVkZ2VUeXBlOjpWYXJpYWJsZSwgdmFyaWFibGVOYW1lKSk7CiB9
CkBAIC0xNDAsNyArMTQwLDcgQEAgdm9pZCBIZWFwU25hcHNob3RCdWlsZGVyOjphbmFseXplSW5k
ZXhFZGdlKEpTQ2VsbCogZnJvbSwgSlNDZWxsKiB0bywgdWludDMyX3QgaW4KICAgICBBU1NFUlQo
bV9wcm9maWxlci5hY3RpdmVIZWFwQW5hbHl6ZXIoKSA9PSB0aGlzKTsKICAgICBBU1NFUlQodG8p
OwogCi0gICAgc3RkOjpsb2NrX2d1YXJkPExvY2s+IGxvY2sobV9idWlsZGluZ0VkZ2VNdXRleCk7
CisgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX2J1aWxkaW5nRWRnZU11dGV4KTsKIAogICAg
IG1fZWRnZXMuYXBwZW5kKEhlYXBTbmFwc2hvdEVkZ2UoZnJvbSwgdG8sIGluZGV4KSk7CiB9CkBA
IC0xNTAsNyArMTUwLDcgQEAgdm9pZCBIZWFwU25hcHNob3RCdWlsZGVyOjpzZXRPcGFxdWVSb290
UmVhY2hhYmlsaXR5UmVhc29uRm9yQ2VsbChKU0NlbGwqIGNlbGwsIGMKICAgICBpZiAoIXJlYXNv
biB8fCAhKnJlYXNvbiB8fCBtX3NuYXBzaG90VHlwZSAhPSBTbmFwc2hvdFR5cGU6OkdDRGVidWdn
aW5nU25hcHNob3QpCiAgICAgICAgIHJldHVybjsKIAotICAgIHN0ZDo6bG9ja19ndWFyZDxMb2Nr
PiBsb2NrKG1fYnVpbGRpbmdFZGdlTXV0ZXgpOworICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2so
bV9idWlsZGluZ0VkZ2VNdXRleCk7CiAKICAgICBtX3Jvb3REYXRhLmVuc3VyZShjZWxsLCBbXSAo
KSAtPiBSb290RGF0YSB7CiAgICAgICAgIHJldHVybiB7IH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9NYWNoaW5lU3RhY2tNYXJrZXIuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvTWFjaGluZVN0YWNrTWFya2VyLmNwcAppbmRleCBhYjE5YzBlOTg5OTM3
MTAzY2E0MWYzOWU4N2UzMGZjYTYzNWZlZTcxLi4zODVjZWM0MjVlNWM3YWNiZDI2ZTJlNjQ2ZmIw
OWFjNzQ4NzYzMGFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYWNo
aW5lU3RhY2tNYXJrZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hY2hp
bmVTdGFja01hcmtlci5jcHAKQEAgLTEzNyw4ICsxMzcsOCBAQCBib29sIE1hY2hpbmVUaHJlYWRz
Ojp0cnlDb3B5T3RoZXJUaHJlYWRTdGFja3MoY29uc3QgQWJzdHJhY3RMb2NrZXImIGxvY2tlciwg
dm9pZAogewogICAgIC8vIFByZXZlbnQgdHdvIFZNcyBmcm9tIHN1c3BlbmRpbmcgZWFjaCBvdGhl
cidzIHRocmVhZHMgYXQgdGhlIHNhbWUgdGltZSwKICAgICAvLyB3aGljaCBjYW4gY2F1c2UgZGVh
ZGxvY2s6IDxyZGFyOi8vcHJvYmxlbS8yMDMwMDg0Mj4uCi0gICAgc3RhdGljIExvY2sgbXV0ZXg7
Ci0gICAgc3RkOjpsb2NrX2d1YXJkPExvY2s+IGxvY2sobXV0ZXgpOworICAgIHN0YXRpYyBMb2Nr
IHN1c3BlbmRMb2NrOworICAgIGF1dG8gc3VzcGVuZExvY2tlciA9IGhvbGRMb2NrKHN1c3BlbmRM
b2NrKTsKIAogICAgICpzaXplID0gMDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNSdW5Mb29wVGltZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNSdW5Mb29wVGltZXIuY3BwCmluZGV4IDA3YjBkNDkzZGZjMDFhODgzNmViMjk0NDQy
ZTFiMDc2NWI2ZDcwZGUuLjEzNTU0NjA4MmIxMGM4NGMyNzFkNDllZWE2YWE1MjZlOTA2ZGU2MzQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUnVuTG9vcFRpbWVy
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1J1bkxvb3BUaW1lci5j
cHAKQEAgLTI5NSw3ICsyOTUsNyBAQCB2b2lkIEpTUnVuTG9vcFRpbWVyOjp0aW1lckRpZEZpcmUo
KQogICAgICAgICB9CiAgICAgfQogCi0gICAgc3RkOjpsb2NrX2d1YXJkPEpTTG9jaz4gbG9jayht
X2FwaUxvY2suZ2V0KCkpOworICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9hcGlMb2NrLmdl
dCgpKTsKICAgICBSZWZQdHI8Vk0+IHZtID0gbV9hcGlMb2NrLT52bSgpOwogICAgIGlmICghdm0p
IHsKICAgICAgICAgLy8gVGhlIFZNIGhhcyBiZWVuIGRlc3Ryb3llZCwgc28gd2Ugc2hvdWxkIGp1
c3QgZ2l2ZSB1cC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvYmVuY2htYXJrcy9Db25kaXRpb25T
cGVlZFRlc3QuY3BwIGIvU291cmNlL1dURi9iZW5jaG1hcmtzL0NvbmRpdGlvblNwZWVkVGVzdC5j
cHAKaW5kZXggZjU5YjA4ZDc3YTkzMjc1NTYxY2Q2YjE0Mzc1M2RjODFmNGRiMjUwZC4uMWMwZDVk
MzAyZmNkZDdhYjk3YTFmMDdmMDAyYmFiYTEwNWFjN2QyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri9iZW5jaG1hcmtzL0NvbmRpdGlvblNwZWVkVGVzdC5jcHAKKysrIGIvU291cmNlL1dURi9iZW5j
aG1hcmtzL0NvbmRpdGlvblNwZWVkVGVzdC5jcHAKQEAgLTExOCw3ICsxMTgsNyBAQCB2b2lkIHJ1
blRlc3QoCiAgICAgICAgICAgICAgICAgICAgIG5vdGlmeShmdWxsQ29uZGl0aW9uLCBtdXN0Tm90
aWZ5KTsKIAogICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBz
dGQ6OmxvY2tfZ3VhcmQ8TG9ja1R5cGU+IGxvY2tlcihyZWNlaXZlZExvY2spOworICAgICAgICAg
ICAgICAgICAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhyZWNlaXZlZExvY2spOwogICAg
ICAgICAgICAgICAgICAgICAgICAgcmVjZWl2ZWQuYXBwZW5kKHJlc3VsdCk7CiAgICAgICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9CkBAIC0xNTIsNyArMTUyLDcgQEAgdm9pZCBy
dW5UZXN0KAogICAgICAgICB0aHJlYWQtPndhaXRGb3JDb21wbGV0aW9uKCk7CiAKICAgICB7Ci0g
ICAgICAgIHN0ZDo6bG9ja19ndWFyZDxMb2NrVHlwZT4gbG9ja2VyKGxvY2spOworICAgICAgICBh
dXRvIGxvY2tlciA9IGhvbGRMb2NrKGxvY2spOwogICAgICAgICBzaG91bGRDb250aW51ZSA9IGZh
bHNlOwogICAgIH0KICAgICBub3RpZnlBbGwoZW1wdHlDb25kaXRpb24pOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi93dGYvQ3J5cHRvZ3JhcGhpY2FsbHlSYW5kb21OdW1iZXIuY3BwIGIvU291cmNl
L1dURi93dGYvQ3J5cHRvZ3JhcGhpY2FsbHlSYW5kb21OdW1iZXIuY3BwCmluZGV4IDdhYzRlMTg3
ZDY0ZDI1MDFmMmEyZDQ3NTg1YmI3NDg2NGQxZWFlOGIuLmFmYmNlODkwZjRkOWI3Y2JiOGU0YzM3
NjAzNTNlNGVlOTVhMDg3NzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0NyeXB0b2dyYXBo
aWNhbGx5UmFuZG9tTnVtYmVyLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9DcnlwdG9ncmFwaGlj
YWxseVJhbmRvbU51bWJlci5jcHAKQEAgLTEzOCw3ICsxMzgsNyBAQCB1aW50MzJfdCBBUkM0UmFu
ZG9tTnVtYmVyR2VuZXJhdG9yOjpnZXRXb3JkKCkKIAogdWludDMyX3QgQVJDNFJhbmRvbU51bWJl
ckdlbmVyYXRvcjo6cmFuZG9tTnVtYmVyKCkKIHsKLSAgICBzdGQ6OmxvY2tfZ3VhcmQ8TG9jaz4g
bG9jayhtX211dGV4KTsKKyAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fbXV0ZXgpOwogCiAg
ICAgbV9jb3VudCAtPSA0OwogICAgIHN0aXJJZk5lZWRlZCgpOwpAQCAtMTQ3LDcgKzE0Nyw3IEBA
IHVpbnQzMl90IEFSQzRSYW5kb21OdW1iZXJHZW5lcmF0b3I6OnJhbmRvbU51bWJlcigpCiAKIHZv
aWQgQVJDNFJhbmRvbU51bWJlckdlbmVyYXRvcjo6cmFuZG9tVmFsdWVzKHZvaWQqIGJ1ZmZlciwg
c2l6ZV90IGxlbmd0aCkKIHsKLSAgICBzdGQ6OmxvY2tfZ3VhcmQ8TG9jaz4gbG9jayhtX211dGV4
KTsKKyAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fbXV0ZXgpOwogCiAgICAgdW5zaWduZWQg
Y2hhciogcmVzdWx0ID0gcmVpbnRlcnByZXRfY2FzdDx1bnNpZ25lZCBjaGFyKj4oYnVmZmVyKTsK
ICAgICBzdGlySWZOZWVkZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0hhc2hUYWJs
ZS5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9IYXNoVGFibGUuY3BwCmluZGV4IDUzYjRjZGJhZTI4YWFm
OTg2YjVlYjZlNTJlMDY0MjRkNjJkMDFjMDUuLjAyN2M1YzQ2MjA5ODI0Y2RlZDVjYjYyOTA4MTVj
ZTVkNjMwZmIyYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0hhc2hUYWJsZS5jcHAKKysr
IGIvU291cmNlL1dURi93dGYvSGFzaFRhYmxlLmNwcApAQCAtNDMsNyArNDMsNyBAQCBzdGF0aWMg
TG9jayBoYXNoVGFibGVTdGF0c011dGV4OwogCiB2b2lkIEhhc2hUYWJsZVN0YXRzOjpyZWNvcmRD
b2xsaXNpb25BdENvdW50KHVuc2lnbmVkIGNvdW50KQogewotICAgIHN0ZDo6bG9ja19ndWFyZDxM
b2NrPiBsb2NrKGhhc2hUYWJsZVN0YXRzTXV0ZXgpOworICAgIGF1dG8gbG9ja2VyID0gaG9sZExv
Y2soaGFzaFRhYmxlU3RhdHNNdXRleCk7CiAKICAgICBpZiAoY291bnQgPiBtYXhDb2xsaXNpb25z
KQogICAgICAgICBtYXhDb2xsaXNpb25zID0gY291bnQ7CkBAIC01Myw3ICs1Myw3IEBAIHZvaWQg
SGFzaFRhYmxlU3RhdHM6OnJlY29yZENvbGxpc2lvbkF0Q291bnQodW5zaWduZWQgY291bnQpCiAK
IHZvaWQgSGFzaFRhYmxlU3RhdHM6OmR1bXBTdGF0cygpCiB7Ci0gICAgc3RkOjpsb2NrX2d1YXJk
PExvY2s+IGxvY2soaGFzaFRhYmxlU3RhdHNNdXRleCk7CisgICAgYXV0byBsb2NrZXIgPSBob2xk
TG9jayhoYXNoVGFibGVTdGF0c011dGV4KTsKIAogICAgIGRhdGFMb2dGKCJcbldURjo6SGFzaFRh
YmxlIHN0YXRpc3RpY3NcblxuIik7CiAgICAgZGF0YUxvZ0YoIiV1IGFjY2Vzc2VzXG4iLCBudW1B
Y2Nlc3Nlcy5sb2FkKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvSGFzaFRhYmxlLmgg
Yi9Tb3VyY2UvV1RGL3d0Zi9IYXNoVGFibGUuaAppbmRleCA5MDc0NzgyMjk1OGE4YWY5NTgyMzEy
MmMxNWI4NjM1N2U0YzgzMjIyLi5jZWIxNjJkZmJiZmVlZWU1N2Q2MjUxMGE4YTczZGQ4MGI1NGJi
YTQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9IYXNoVGFibGUuaAorKysgYi9Tb3VyY2Uv
V1RGL3d0Zi9IYXNoVGFibGUuaApAQCAtMTQ5NSw3ICsxNDk1LDcgQEAgREVDTEFSRV9BTExPQ0FU
T1JfV0lUSF9IRUFQX0lERU5USUZJRVIoSGFzaFRhYmxlKTsKICAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hG
dW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzPgogICAgIHZvaWQg
SGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBL
ZXlUcmFpdHM+OjppbnZhbGlkYXRlSXRlcmF0b3JzKCkKICAgICB7Ci0gICAgICAgIHN0ZDo6bG9j
a19ndWFyZDxMb2NrPiBsb2NrKCptX211dGV4KTsKKyAgICAgICAgYXV0byBsb2NrZXIgPSBob2xk
TG9jaygqbV9tdXRleCk7CiAgICAgICAgIGNvbnN0X2l0ZXJhdG9yKiBuZXh0OwogICAgICAgICBm
b3IgKGNvbnN0X2l0ZXJhdG9yKiBwID0gbV9pdGVyYXRvcnM7IHA7IHAgPSBuZXh0KSB7CiAgICAg
ICAgICAgICBuZXh0ID0gcC0+bV9uZXh0OwpAQCAtMTUxNyw3ICsxNTE3LDcgQEAgREVDTEFSRV9B
TExPQ0FUT1JfV0lUSF9IRUFQX0lERU5USUZJRVIoSGFzaFRhYmxlKTsKICAgICAgICAgaWYgKCF0
YWJsZSkgewogICAgICAgICAgICAgaXQtPm1fbmV4dCA9IDA7CiAgICAgICAgIH0gZWxzZSB7Ci0g
ICAgICAgICAgICBzdGQ6OmxvY2tfZ3VhcmQ8TG9jaz4gbG9jaygqdGFibGUtPm1fbXV0ZXgpOwor
ICAgICAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jaygqdGFibGUtPm1fbXV0ZXgpOwogICAg
ICAgICAgICAgQVNTRVJUKHRhYmxlLT5tX2l0ZXJhdG9ycyAhPSBpdCk7CiAgICAgICAgICAgICBp
dC0+bV9uZXh0ID0gdGFibGUtPm1faXRlcmF0b3JzOwogICAgICAgICAgICAgdGFibGUtPm1faXRl
cmF0b3JzID0gaXQ7CkBAIC0xNTM2LDcgKzE1MzYsNyBAQCBERUNMQVJFX0FMTE9DQVRPUl9XSVRI
X0hFQVBfSURFTlRJRklFUihIYXNoVGFibGUpOwogICAgICAgICAgICAgQVNTRVJUKCFpdC0+bV9u
ZXh0KTsKICAgICAgICAgICAgIEFTU0VSVCghaXQtPm1fcHJldmlvdXMpOwogICAgICAgICB9IGVs
c2UgewotICAgICAgICAgICAgc3RkOjpsb2NrX2d1YXJkPExvY2s+IGxvY2soKml0LT5tX3RhYmxl
LT5tX211dGV4KTsKKyAgICAgICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2soKml0LT5tX3Rh
YmxlLT5tX211dGV4KTsKICAgICAgICAgICAgIGlmIChpdC0+bV9uZXh0KSB7CiAgICAgICAgICAg
ICAgICAgQVNTRVJUKGl0LT5tX25leHQtPm1fcHJldmlvdXMgPT0gaXQpOwogICAgICAgICAgICAg
ICAgIGl0LT5tX25leHQtPm1fcHJldmlvdXMgPSBpdC0+bV9wcmV2aW91czsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XVEYvd3RmL0xhbmd1YWdlLmNwcCBiL1NvdXJjZS9XVEYvd3RmL0xhbmd1YWdlLmNw
cAppbmRleCAwOWQwZWFkZmNjY2E0YjNlMGI3ZTlhMzE4YzE4OGRmY2U4OGJlZjMyLi5mNGNmMDY0
YjY1ZjdiMzdhM2M5NzllNjQyZjcxNmIxY2Y1ZTIxMzFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RG
L3d0Zi9MYW5ndWFnZS5jcHAKKysrIGIvU291cmNlL1dURi93dGYvTGFuZ3VhZ2UuY3BwCkBAIC0x
MDMsNyArMTAzLDcgQEAgc3RhdGljIFZlY3RvcjxTdHJpbmc+IGlzb2xhdGVkQ29weShjb25zdCBW
ZWN0b3I8U3RyaW5nPiYgc3RyaW5ncykKIFZlY3RvcjxTdHJpbmc+IHVzZXJQcmVmZXJyZWRMYW5n
dWFnZXMoKQogewogICAgIHsKLSAgICAgICAgc3RkOjpsb2NrX2d1YXJkPExvY2s+IGxvY2sodXNl
clByZWZlcnJlZExhbmd1YWdlc011dGV4KTsKKyAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9j
ayh1c2VyUHJlZmVycmVkTGFuZ3VhZ2VzTXV0ZXgpOwogICAgICAgICBWZWN0b3I8U3RyaW5nPiYg
b3ZlcnJpZGUgPSBwcmVmZXJyZWRMYW5ndWFnZXNPdmVycmlkZSgpOwogICAgICAgICBpZiAoIW92
ZXJyaWRlLmlzRW1wdHkoKSkKICAgICAgICAgICAgIHJldHVybiBpc29sYXRlZENvcHkob3ZlcnJp
ZGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvTWFpblRocmVhZC5jcHAgYi9Tb3VyY2Uv
V1RGL3d0Zi9NYWluVGhyZWFkLmNwcAppbmRleCA0OTk0NTc1Njc2NDEzNGNhYjQ2YzFmZjMxMmU0
N2MyODJjNjFkZjJmLi42MGU4MGQ0Mzc1M2M3MmQ4ODkwNDU3YWExOTg2MDYwZDhiOGNkYjMzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9NYWluVGhyZWFkLmNwcAorKysgYi9Tb3VyY2UvV1RG
L3d0Zi9NYWluVGhyZWFkLmNwcApAQCAtODQsNyArODQsNyBAQCB2b2lkIGRpc3BhdGNoRnVuY3Rp
b25zRnJvbU1haW5UaHJlYWQoKQogCiAgICAgd2hpbGUgKHRydWUpIHsKICAgICAgICAgewotICAg
ICAgICAgICAgc3RkOjpsb2NrX2d1YXJkPExvY2s+IGxvY2sobWFpblRocmVhZEZ1bmN0aW9uUXVl
dWVNdXRleCk7CisgICAgICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1haW5UaHJlYWRG
dW5jdGlvblF1ZXVlTXV0ZXgpOwogICAgICAgICAgICAgaWYgKCFmdW5jdGlvblF1ZXVlKCkuc2l6
ZSgpKQogICAgICAgICAgICAgICAgIGJyZWFrOwogCkBAIC0xMjQsNyArMTI0LDcgQEAgdm9pZCBj
YWxsT25NYWluVGhyZWFkKEZ1bmN0aW9uPHZvaWQoKT4mJiBmdW5jdGlvbikKICAgICBib29sIG5l
ZWRUb1NjaGVkdWxlID0gZmFsc2U7CiAKICAgICB7Ci0gICAgICAgIHN0ZDo6bG9ja19ndWFyZDxM
b2NrPiBsb2NrKG1haW5UaHJlYWRGdW5jdGlvblF1ZXVlTXV0ZXgpOworICAgICAgICBhdXRvIGxv
Y2tlciA9IGhvbGRMb2NrKG1haW5UaHJlYWRGdW5jdGlvblF1ZXVlTXV0ZXgpOwogICAgICAgICBu
ZWVkVG9TY2hlZHVsZSA9IGZ1bmN0aW9uUXVldWUoKS5zaXplKCkgPT0gMDsKICAgICAgICAgZnVu
Y3Rpb25RdWV1ZSgpLmFwcGVuZChXVEZNb3ZlKGZ1bmN0aW9uKSk7CiAgICAgfQpAQCAtMTc1LDcg
KzE3NSw3IEBAIHN0YXRpYyB2b2lkIGNhbGxPbk1haW5BbmRXYWl0KFdURjo6RnVuY3Rpb248dm9p
ZCgpPiYmIGZ1bmN0aW9uLCBNYWluU3R5bGUgbWFpblN0CiAgICAgYXV0byBmdW5jdGlvbkltcGwg
PSBbJiwgZnVuY3Rpb24gPSBXVEZNb3ZlKGZ1bmN0aW9uKV0gewogICAgICAgICBmdW5jdGlvbigp
OwogCi0gICAgICAgIHN0ZDo6bG9ja19ndWFyZDxMb2NrPiBsb2NrKG11dGV4KTsKKyAgICAgICAg
YXV0byBsb2NrZXIgPSBob2xkTG9jayhtdXRleCk7CiAgICAgICAgIGlzRmluaXNoZWQgPSB0cnVl
OwogICAgICAgICBjb25kaXRpb25WYXJpYWJsZS5ub3RpZnlPbmUoKTsKICAgICB9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dURi93dGYvU3RhY2tTdGF0cy5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9TdGFj
a1N0YXRzLmNwcAppbmRleCBjMWM0MzVmNTc4ZGRlZGM0NDk4YzkzZjhhMmU2ZGVmMmFmMDc1M2Zk
Li4zZjFhYjUyYzhkNmZhODU5N2VjYzlhNmFlZmIxNGUwMWY0ZjEzZDliIDEwMDY0NAotLS0gYS9T
b3VyY2UvV1RGL3d0Zi9TdGFja1N0YXRzLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9TdGFja1N0
YXRzLmNwcApAQCAtNjgsNyArNjgsNyBAQCBTdGFja1N0YXRzOjpQZXJUaHJlYWRTdGF0czo6UGVy
VGhyZWFkU3RhdHMoKQogCiBTdGFja1N0YXRzOjpDaGVja1BvaW50OjpDaGVja1BvaW50KCkKIHsK
LSAgICBzdGQ6OmxvY2tfZ3VhcmQ8TG9jaz4gbG9jayhTdGFja1N0YXRzOjpzX3NoYXJlZE11dGV4
KTsKKyAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKFN0YWNrU3RhdHM6OnNfc2hhcmVkTXV0ZXgp
OwogICAgIFRocmVhZCYgdGhyZWFkID0gVGhyZWFkOjpjdXJyZW50KCk7CiAgICAgU3RhY2tTdGF0
czo6UGVyVGhyZWFkU3RhdHMmIHQgPSB0aHJlYWQuc3RhY2tTdGF0cygpOwogICAgIGNvbnN0IFN0
YWNrQm91bmRzJiBzdGFjayA9IHRocmVhZC5zdGFjaygpOwpAQCAtMTIxLDcgKzEyMSw3IEBAIFN0
YWNrU3RhdHM6OkNoZWNrUG9pbnQ6OkNoZWNrUG9pbnQoKQogCiBTdGFja1N0YXRzOjpDaGVja1Bv
aW50Ojp+Q2hlY2tQb2ludCgpCiB7Ci0gICAgc3RkOjpsb2NrX2d1YXJkPExvY2s+IGxvY2soU3Rh
Y2tTdGF0czo6c19zaGFyZWRNdXRleCk7CisgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhTdGFj
a1N0YXRzOjpzX3NoYXJlZE11dGV4KTsKICAgICBUaHJlYWQmIHRocmVhZCA9IFRocmVhZDo6Y3Vy
cmVudCgpOwogICAgIFN0YWNrU3RhdHM6OlBlclRocmVhZFN0YXRzJiB0ID0gdGhyZWFkLnN0YWNr
U3RhdHMoKTsKIApAQCAtMTQ4LDcgKzE0OCw3IEBAIFN0YWNrU3RhdHM6OkNoZWNrUG9pbnQ6On5D
aGVja1BvaW50KCkKIAogdm9pZCBTdGFja1N0YXRzOjpwcm9iZSgpCiB7Ci0gICAgc3RkOjpsb2Nr
X2d1YXJkPExvY2s+IGxvY2soU3RhY2tTdGF0czo6c19zaGFyZWRNdXRleCk7CisgICAgYXV0byBs
b2NrZXIgPSBob2xkTG9jayhTdGFja1N0YXRzOjpzX3NoYXJlZE11dGV4KTsKICAgICBUaHJlYWQm
IHRocmVhZCA9IFRocmVhZDo6Y3VycmVudCgpOwogICAgIFN0YWNrU3RhdHM6OlBlclRocmVhZFN0
YXRzJiB0ID0gdGhyZWFkLnN0YWNrU3RhdHMoKTsKICAgICBjb25zdCBTdGFja0JvdW5kcyYgc3Rh
Y2sgPSB0aHJlYWQuc3RhY2soKTsKQEAgLTIwMyw3ICsyMDMsNyBAQCBTdGFja1N0YXRzOjpMYXlv
dXRDaGVja1BvaW50OjpMYXlvdXRDaGVja1BvaW50KCkKICAgICAvLyBwcm9iZSBmaXJzdCwgd2Ug
Y2FuIGF2b2lkIHJlLWVudGVyaW5nIHRoZSBsb2NrLgogICAgIFN0YWNrU3RhdHM6OnByb2JlKCk7
CiAKLSAgICBzdGQ6OmxvY2tfZ3VhcmQ8TG9jaz4gbG9jayhTdGFja1N0YXRzOjpzX3NoYXJlZE11
dGV4KTsKKyAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKFN0YWNrU3RhdHM6OnNfc2hhcmVkTXV0
ZXgpOwogICAgIFRocmVhZCYgdGhyZWFkID0gVGhyZWFkOjpjdXJyZW50KCk7CiAgICAgU3RhY2tT
dGF0czo6UGVyVGhyZWFkU3RhdHMmIHQgPSB0aHJlYWQuc3RhY2tTdGF0cygpOwogICAgIGNvbnN0
IFN0YWNrQm91bmRzJiBzdGFjayA9IHRocmVhZC5zdGFjaygpOwpAQCAtMjY0LDcgKzI2NCw3IEBA
IFN0YWNrU3RhdHM6OkxheW91dENoZWNrUG9pbnQ6OkxheW91dENoZWNrUG9pbnQoKQogCiBTdGFj
a1N0YXRzOjpMYXlvdXRDaGVja1BvaW50Ojp+TGF5b3V0Q2hlY2tQb2ludCgpCiB7Ci0gICAgc3Rk
Ojpsb2NrX2d1YXJkPExvY2s+IGxvY2soU3RhY2tTdGF0czo6c19zaGFyZWRNdXRleCk7CisgICAg
YXV0byBsb2NrZXIgPSBob2xkTG9jayhTdGFja1N0YXRzOjpzX3NoYXJlZE11dGV4KTsKIAogICAg
IC8vIFBvcCB0byB0aGUgcHJldmlvdXMgbGF5b3V0IGNoZWNrcG9pbnQ6CiAgICAgU3RhY2tTdGF0
czo6c190b3BMYXlvdXRDaGVja1BvaW50ID0gbV9wcmV2OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvV29yZExvY2suY3BwIGIvU291cmNlL1dURi93dGYvV29yZExvY2suY3BwCmluZGV4IGZi
MmM3OGUzZjMxNGJkMDQ2ZmYzYTg5Nzk0MmM0ZWE4MjgwYWZkMzUuLjQ1NTA2ZjkxMDRjMzU1ODg0
NTNhYzM0MzYzNGM5ZmM2ZDY4MjI5NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1dvcmRM
b2NrLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9Xb3JkTG9jay5jcHAKQEAgLTIzNiw3ICsyMzYs
NyBAQCBORVZFUl9JTkxJTkUgdm9pZCBXb3JkTG9jazo6dW5sb2NrU2xvdygpCiAgICAgewogICAg
ICAgICAvLyBCZSBzdXJlIHRvIGhvbGQgdGhlIGxvY2sgYWNyb3NzIG91ciBjYWxsIHRvIG5vdGlm
eV9vbmUoKSBiZWNhdXNlIGEgc3B1cmlvdXMgd2FrZXVwIGNvdWxkCiAgICAgICAgIC8vIGNhdXNl
IHRoZSB0aHJlYWQgYXQgdGhlIGhlYWQgb2YgdGhlIHF1ZXVlIHRvIGV4aXQgYW5kIGRlbGV0ZSBx
dWV1ZUhlYWQuCi0gICAgICAgIHN0ZDo6bG9ja19ndWFyZDxzdGQ6Om11dGV4PiBsb2NrZXIocXVl
dWVIZWFkLT5wYXJraW5nTG9jayk7CisgICAgICAgIHN0ZDo6c2NvcGVkX2xvY2s8c3RkOjptdXRl
eD4gbG9ja2VyKHF1ZXVlSGVhZC0+cGFya2luZ0xvY2spOwogICAgICAgICBxdWV1ZUhlYWQtPnNo
b3VsZFBhcmsgPSBmYWxzZTsKIAogICAgICAgICAvLyBEb2Vzbid0IG1hdHRlciBpZiB3ZSBub3Rp
ZnlfYWxsKCkgb3Igbm90aWZ5X29uZSgpIGhlcmUgc2luY2UgdGhlIG9ubHkgdGhyZWFkIHRoYXQg
Y291bGQgYmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL2NmL0xhbmd1YWdlQ0YuY3BwIGIv
U291cmNlL1dURi93dGYvY2YvTGFuZ3VhZ2VDRi5jcHAKaW5kZXggNzRjMWFmNDg3M2ZkMDkyYWUx
YjJkZmEyZDQ1NGQ5YWY0YWU0ZDdkZi4uMTIzOTZkYWQ0NmZlNDM4ODUxNGE1ODczOTNhNjhmNjU3
MTRhNjBiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvY2YvTGFuZ3VhZ2VDRi5jcHAKKysr
IGIvU291cmNlL1dURi93dGYvY2YvTGFuZ3VhZ2VDRi5jcHAKQEAgLTgzLDcgKzgzLDcgQEAgc3Rh
dGljIFN0cmluZyBodHRwU3R5bGVMYW5ndWFnZUNvZGUoQ0ZTdHJpbmdSZWYgbGFuZ3VhZ2UpCiBz
dGF0aWMgdm9pZCBsYW5ndWFnZVByZWZlcmVuY2VzRGlkQ2hhbmdlKENGTm90aWZpY2F0aW9uQ2Vu
dGVyUmVmLCB2b2lkKiwgQ0ZTdHJpbmdSZWYsIGNvbnN0IHZvaWQqLCBDRkRpY3Rpb25hcnlSZWYp
CiB7CiAgICAgewotICAgICAgICBzdGQ6OmxvY2tfZ3VhcmQ8TG9jaz4gbG9jayhwcmVmZXJyZWRM
YW5ndWFnZXNNdXRleCk7CisgICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2socHJlZmVycmVk
TGFuZ3VhZ2VzTXV0ZXgpOwogICAgICAgICBwcmVmZXJyZWRMYW5ndWFnZXMoKS5jbGVhcigpOwog
ICAgIH0KICAgICAKQEAgLTEwMCw3ICsxMDAsNyBAQCBWZWN0b3I8U3RyaW5nPiBwbGF0Zm9ybVVz
ZXJQcmVmZXJyZWRMYW5ndWFnZXMoKQogICAgIH0pOwogI2VuZGlmCiAKLSAgICBzdGQ6OmxvY2tf
Z3VhcmQ8TG9jaz4gbG9jayhwcmVmZXJyZWRMYW5ndWFnZXNNdXRleCk7CisgICAgYXV0byBsb2Nr
ZXIgPSBob2xkTG9jayhwcmVmZXJyZWRMYW5ndWFnZXNNdXRleCk7CiAgICAgVmVjdG9yPFN0cmlu
Zz4mIHVzZXJQcmVmZXJyZWRMYW5ndWFnZXMgPSBwcmVmZXJyZWRMYW5ndWFnZXMoKTsKIAogICAg
IGlmICh1c2VyUHJlZmVycmVkTGFuZ3VhZ2VzLmlzRW1wdHkoKSkgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvdGV4dC9TdHJpbmdWaWV3LmNwcCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3Ry
aW5nVmlldy5jcHAKaW5kZXggYzc5ODU1NWUzYTEwMDA4ODJkNmE2ZTIxZmRjNzFmYzkxOGQ2MmFh
OC4uOGQ0Nzk4YTFmMWJlZTYwMTA2NmRiZTgzM2RmZDBkMDc0MTUxMWM5NyAxMDA2NDQKLS0tIGEv
U291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdWaWV3LmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90
ZXh0L1N0cmluZ1ZpZXcuY3BwCkBAIC0zMDgsNyArMzA4LDcgQEAgdm9pZCBTdHJpbmdWaWV3Ojpp
bnZhbGlkYXRlKGNvbnN0IFN0cmluZ0ltcGwmIHN0cmluZ1RvQmVEZXN0cm95ZWQpCiB7CiAgICAg
VW5kZXJseWluZ1N0cmluZyogdW5kZXJseWluZ1N0cmluZzsKICAgICB7Ci0gICAgICAgIHN0ZDo6
bG9ja19ndWFyZDxMb2NrPiBsb2NrKHVuZGVybHlpbmdTdHJpbmdzTXV0ZXgpOworICAgICAgICBh
dXRvIGxvY2tlciA9IGhvbGRMb2NrKHVuZGVybHlpbmdTdHJpbmdzTXV0ZXgpOwogICAgICAgICB1
bmRlcmx5aW5nU3RyaW5nID0gdW5kZXJseWluZ1N0cmluZ3MoKS50YWtlKCZzdHJpbmdUb0JlRGVz
dHJveWVkKTsKICAgICAgICAgaWYgKCF1bmRlcmx5aW5nU3RyaW5nKQogICAgICAgICAgICAgcmV0
dXJuOwpAQCAtMzI1LDcgKzMyNSw3IEBAIGJvb2wgU3RyaW5nVmlldzo6dW5kZXJseWluZ1N0cmlu
Z0lzVmFsaWQoKSBjb25zdAogdm9pZCBTdHJpbmdWaWV3OjphZG9wdFVuZGVybHlpbmdTdHJpbmco
VW5kZXJseWluZ1N0cmluZyogdW5kZXJseWluZ1N0cmluZykKIHsKICAgICBpZiAobV91bmRlcmx5
aW5nU3RyaW5nKSB7Ci0gICAgICAgIHN0ZDo6bG9ja19ndWFyZDxMb2NrPiBsb2NrKHVuZGVybHlp
bmdTdHJpbmdzTXV0ZXgpOworICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKHVuZGVybHlp
bmdTdHJpbmdzTXV0ZXgpOwogICAgICAgICBpZiAoIS0tbV91bmRlcmx5aW5nU3RyaW5nLT5yZWZD
b3VudCkgewogICAgICAgICAgICAgaWYgKG1fdW5kZXJseWluZ1N0cmluZy0+aXNWYWxpZCkgewog
ICAgICAgICAgICAgICAgIHVuZGVybHlpbmdTdHJpbmdzKCkucmVtb3ZlKCZtX3VuZGVybHlpbmdT
dHJpbmctPnN0cmluZyk7CkBAIC0zNDIsNyArMzQyLDcgQEAgdm9pZCBTdHJpbmdWaWV3OjpzZXRV
bmRlcmx5aW5nU3RyaW5nKGNvbnN0IFN0cmluZ0ltcGwqIHN0cmluZykKICAgICBpZiAoIXN0cmlu
ZykKICAgICAgICAgdW5kZXJseWluZ1N0cmluZyA9IG51bGxwdHI7CiAgICAgZWxzZSB7Ci0gICAg
ICAgIHN0ZDo6bG9ja19ndWFyZDxMb2NrPiBsb2NrKHVuZGVybHlpbmdTdHJpbmdzTXV0ZXgpOwor
ICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKHVuZGVybHlpbmdTdHJpbmdzTXV0ZXgpOwog
ICAgICAgICBhdXRvIHJlc3VsdCA9IHVuZGVybHlpbmdTdHJpbmdzKCkuYWRkKHN0cmluZywgbnVs
bHB0cik7CiAgICAgICAgIGlmIChyZXN1bHQuaXNOZXdFbnRyeSkKICAgICAgICAgICAgIHJlc3Vs
dC5pdGVyYXRvci0+dmFsdWUgPSBuZXcgVW5kZXJseWluZ1N0cmluZygqc3RyaW5nKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XVEYvd3RmL3VuaWNvZGUvaWN1L0NvbGxhdG9ySUNVLmNwcCBiL1NvdXJj
ZS9XVEYvd3RmL3VuaWNvZGUvaWN1L0NvbGxhdG9ySUNVLmNwcAppbmRleCBkMGYyMGI5NDM3OGQx
MzkzOTViY2NlYjgyM2RlNzIzODkzZDAxYzA0Li42NzY2MDczYzlmNmI5Y2UwZmE1NjQxZmE1Y2Fi
MTVhOWIwMWZjYmFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi91bmljb2RlL2ljdS9Db2xs
YXRvcklDVS5jcHAKKysrIGIvU291cmNlL1dURi93dGYvdW5pY29kZS9pY3UvQ29sbGF0b3JJQ1Uu
Y3BwCkBAIC0xMDYsNyArMTA2LDcgQEAgQ29sbGF0b3I6OkNvbGxhdG9yKGNvbnN0IGNoYXIqIGxv
Y2FsZSwgYm9vbCBzaG91bGRTb3J0TG93ZXJjYXNlRmlyc3QpCiAgICAgVUVycm9yQ29kZSBzdGF0
dXMgPSBVX1pFUk9fRVJST1I7CiAKICAgICB7Ci0gICAgICAgIHN0ZDo6bG9ja19ndWFyZDxMb2Nr
PiBsb2NrKGNhY2hlZENvbGxhdG9yTXV0ZXgpOworICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRM
b2NrKGNhY2hlZENvbGxhdG9yTXV0ZXgpOwogICAgICAgICBpZiAoY2FjaGVkQ29sbGF0b3IgJiYg
bG9jYWxlc01hdGNoKGNhY2hlZENvbGxhdG9yTG9jYWxlLCBsb2NhbGUpICYmIGNhY2hlZENvbGxh
dG9yU2hvdWxkU29ydExvd2VyY2FzZUZpcnN0ID09IHNob3VsZFNvcnRMb3dlcmNhc2VGaXJzdCkg
ewogICAgICAgICAgICAgbV9jb2xsYXRvciA9IGNhY2hlZENvbGxhdG9yOwogICAgICAgICAgICAg
bV9sb2NhbGUgPSBjYWNoZWRDb2xsYXRvckxvY2FsZTsKQEAgLTEzNiw3ICsxMzYsNyBAQCBDb2xs
YXRvcjo6Q29sbGF0b3IoY29uc3QgY2hhciogbG9jYWxlLCBib29sIHNob3VsZFNvcnRMb3dlcmNh
c2VGaXJzdCkKIAogQ29sbGF0b3I6On5Db2xsYXRvcigpCiB7Ci0gICAgc3RkOjpsb2NrX2d1YXJk
PExvY2s+IGxvY2soY2FjaGVkQ29sbGF0b3JNdXRleCk7CisgICAgYXV0byBsb2NrZXIgPSBob2xk
TG9jayhjYWNoZWRDb2xsYXRvck11dGV4KTsKICAgICBpZiAoY2FjaGVkQ29sbGF0b3IpIHsKICAg
ICAgICAgdWNvbF9jbG9zZShjYWNoZWRDb2xsYXRvcik7CiAgICAgICAgIGZhc3RGcmVlKGNhY2hl
ZENvbGxhdG9yTG9jYWxlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3dpbi9MYW5ndWFn
ZVdpbi5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi93aW4vTGFuZ3VhZ2VXaW4uY3BwCmluZGV4IGZjMWZj
NTI3NmVkYzE5NjNhYjdmNDBhMTEwZWQzOGI1MGY0OGE2ZjEuLjMwODc1OTdkYjYzMGIxNjNiZDNm
ODQyZWZlY2YyNDljYzdhNzdmYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3dpbi9MYW5n
dWFnZVdpbi5jcHAKKysrIGIvU291cmNlL1dURi93dGYvd2luL0xhbmd1YWdlV2luLmNwcApAQCAt
NTcsNyArNTcsNyBAQCBzdGF0aWMgU3RyaW5nIGxvY2FsZUluZm8oTENUWVBFIGxvY2FsZVR5cGUs
IGNvbnN0IFN0cmluZyYgZmFsbGJhY2spCiAKIHN0YXRpYyBTdHJpbmcgcGxhdGZvcm1MYW5ndWFn
ZSgpCiB7Ci0gICAgc3RkOjpsb2NrX2d1YXJkPExvY2s+IGxvY2socGxhdGZvcm1MYW5ndWFnZU11
dGV4KTsKKyAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKHBsYXRmb3JtTGFuZ3VhZ2VNdXRleCk7
CiAKICAgICBzdGF0aWMgU3RyaW5nIGNvbXB1dGVkRGVmYXVsdExhbmd1YWdlOwogICAgIGlmICgh
Y29tcHV0ZWREZWZhdWx0TGFuZ3VhZ2UuaXNFbXB0eSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuY3BwCmluZGV4
IDMzMDZiOWMyMWQ2YzY1MzNiMzA2Y2MyYTc2ODAyZmJiMmZhYjlmMjguLmMzNjYxZGU1N2Q3Mzll
YzQ3MGQ2ZmFkOWY1NDFlNDk1ZWM5NzZkZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyU291cmNlTm9kZS5jcHAKQEAgLTQxNiw3
ICs0MTYsNyBAQCB2b2lkIEF1ZGlvQnVmZmVyU291cmNlTm9kZTo6c2V0QnVmZmVyKFJlZlB0cjxB
dWRpb0J1ZmZlcj4mJiBidWZmZXIpCiAgICAgQXVkaW9Db250ZXh0OjpBdXRvTG9ja2VyIGNvbnRl
eHRMb2NrZXIoY29udGV4dCgpKTsKICAgICAKICAgICAvLyBUaGlzIHN5bmNocm9uaXplcyB3aXRo
IHByb2Nlc3MoKS4KLSAgICBzdGQ6OmxvY2tfZ3VhcmQ8TG9jaz4gbG9jayhtX3Byb2Nlc3NNdXRl
eCk7CisgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX3Byb2Nlc3NNdXRleCk7CiAgICAgCiAg
ICAgaWYgKGJ1ZmZlcikgewogICAgICAgICAvLyBEbyBhbnkgbmVjZXNzc2FyeSByZS1jb25maWd1
cmF0aW9uIHRvIHRoZSBidWZmZXIncyBudW1iZXIgb2YgY2hhbm5lbHMuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvUGFyYW1UaW1lbGluZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvUGFyYW1UaW1lbGluZS5jcHAKaW5k
ZXggZmRjMWQzYzdjMWEwZWIzMzE1Yzg3MmIyZDBlZDI3NWFlOGQyN2U4YS4uMmI1OTU3MGJmNmU2
MWI1NDgzZWQxYjkwN2U2NzZmNjliZTliMzc0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9BdWRpb1BhcmFtVGltZWxpbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9QYXJhbVRpbWVsaW5lLmNwcApAQCAtODAsNyArODAs
NyBAQCB2b2lkIEF1ZGlvUGFyYW1UaW1lbGluZTo6aW5zZXJ0RXZlbnQoY29uc3QgUGFyYW1FdmVu
dCYgZXZlbnQpCiAgICAgaWYgKCFpc1ZhbGlkKQogICAgICAgICByZXR1cm47CiAgICAgICAgIAot
ICAgIHN0ZDo6bG9ja19ndWFyZDxMb2NrPiBsb2NrKG1fZXZlbnRzTXV0ZXgpOworICAgIGF1dG8g
bG9ja2VyID0gaG9sZExvY2sobV9ldmVudHNNdXRleCk7CiAgICAgCiAgICAgdW5zaWduZWQgaSA9
IDA7CiAgICAgZmxvYXQgaW5zZXJ0VGltZSA9IGV2ZW50LnRpbWUoKTsKQEAgLTEwMiw3ICsxMDIs
NyBAQCB2b2lkIEF1ZGlvUGFyYW1UaW1lbGluZTo6aW5zZXJ0RXZlbnQoY29uc3QgUGFyYW1FdmVu
dCYgZXZlbnQpCiAKIHZvaWQgQXVkaW9QYXJhbVRpbWVsaW5lOjpjYW5jZWxTY2hlZHVsZWRWYWx1
ZXMoZmxvYXQgc3RhcnRUaW1lKQogewotICAgIHN0ZDo6bG9ja19ndWFyZDxMb2NrPiBsb2NrKG1f
ZXZlbnRzTXV0ZXgpOworICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9ldmVudHNNdXRleCk7
CiAKICAgICAvLyBSZW1vdmUgYWxsIGV2ZW50cyBzdGFydGluZyBhdCBzdGFydFRpbWUuCiAgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fZXZlbnRzLnNpemUoKTsgKytpKSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0NvbnZvbHZlck5vZGUuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9Db252b2x2ZXJOb2RlLmNwcAppbmRleCBl
MzY2NzdjZmQ3NDVlOGJiZTAyZGEzZGM0ZGQ3YmExZjFhNTNkZDQ5Li5jYzk3MmYxMGRiZDdhYmZm
NzNmNzkzY2ZhY2M3YzQwMDhhNzIzNDQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL0NvbnZvbHZlck5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vQ29udm9sdmVyTm9kZS5jcHAKQEAgLTk0LDcgKzk0LDcgQEAgdm9pZCBDb252
b2x2ZXJOb2RlOjpwcm9jZXNzKHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpCiAKIHZvaWQgQ29udm9s
dmVyTm9kZTo6cmVzZXQoKQogewotICAgIHN0ZDo6bG9ja19ndWFyZDxMb2NrPiBsb2NrKG1fcHJv
Y2Vzc011dGV4KTsKKyAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fcHJvY2Vzc011dGV4KTsK
ICAgICBpZiAobV9yZXZlcmIpCiAgICAgICAgIG1fcmV2ZXJiLT5yZXNldCgpOwogfQpAQCAtMTUw
LDcgKzE1MCw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IENvbnZvbHZlck5vZGU6OnNldEJ1ZmZlcihB
dWRpb0J1ZmZlciogYnVmZmVyKQogCiAgICAgewogICAgICAgICAvLyBTeW5jaHJvbml6ZSB3aXRo
IHByb2Nlc3MoKS4KLSAgICAgICAgc3RkOjpsb2NrX2d1YXJkPExvY2s+IGxvY2sobV9wcm9jZXNz
TXV0ZXgpOworICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fcHJvY2Vzc011dGV4KTsK
ICAgICAgICAgbV9yZXZlcmIgPSBXVEZNb3ZlKHJldmVyYik7CiAgICAgICAgIG1fYnVmZmVyID0g
YnVmZmVyOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vTWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vTWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlLmNwcAppbmRleCA5MTJlNmVi
MjMyMTQ1NjQzZDZmZGFmYmMxMWU5Njc2NGMzZDJmNWQxLi4wZTU5ODFmYTY4NmRiOTIxMmZmYTBm
ODNlOWJkY2QwM2FmOWFhYWMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL01lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9NZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGUuY3BwCkBAIC04
NSw3ICs4NSw3IEBAIHZvaWQgTWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlOjpzZXRGb3JtYXQo
c2l6ZV90IG51bWJlck9mQ2hhbm5lbHMsIGZsb2F0IHNvdXJjCiAgICAgICAgIG1fc291cmNlU2Ft
cGxlUmF0ZSA9IHNvdXJjZVNhbXBsZVJhdGU7CiAKICAgICAgICAgLy8gU3luY2hyb25pemUgd2l0
aCBwcm9jZXNzKCkuCi0gICAgICAgIHN0ZDo6bG9ja19ndWFyZDxNZWRpYUVsZW1lbnRBdWRpb1Nv
dXJjZU5vZGU+IGxvY2soKnRoaXMpOworICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKCp0
aGlzKTsKIAogICAgICAgICBpZiAoc291cmNlU2FtcGxlUmF0ZSAhPSBzYW1wbGVSYXRlKCkpIHsK
ICAgICAgICAgICAgIGRvdWJsZSBzY2FsZUZhY3RvciA9IHNvdXJjZVNhbXBsZVJhdGUgLyBzYW1w
bGVSYXRlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL01l
ZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vTWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5vZGUuY3BwCmluZGV4IDdiYTU5YmY0OGE5MmE1
ODU1OGJjZjJiMmI4ZGQzMGI2NzBmYjUyZWEuLjFiNGZiNmQxOTIyYWQxYzRiMDQxY2I5MTI5YzU1
YzEzODcwN2Y3Y2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
TWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vTWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5vZGUuY3BwCkBAIC04NCw3ICs4NCw3
IEBAIHZvaWQgTWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5vZGU6OnNldEZvcm1hdChzaXplX3QgbnVt
YmVyT2ZDaGFubmVscywgZmxvYXQgc291cmNlCiAgICAgfQogCiAgICAgLy8gU3luY2hyb25pemUg
d2l0aCBwcm9jZXNzKCkuCi0gICAgc3RkOjpsb2NrX2d1YXJkPExvY2s+IGxvY2sobV9wcm9jZXNz
TXV0ZXgpOworICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9wcm9jZXNzTXV0ZXgpOwogCiAg
ICAgbV9zb3VyY2VOdW1iZXJPZkNoYW5uZWxzID0gbnVtYmVyT2ZDaGFubmVsczsKICAgICBtX3Nv
dXJjZVNhbXBsZVJhdGUgPSBzb3VyY2VTYW1wbGVSYXRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9Pc2NpbGxhdG9yTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL09zY2lsbGF0b3JOb2RlLmNwcAppbmRleCBhOTljZWFhZDZiNWMy
MWUwOWRkMjI1M2MyYWNmMzA0NTU0NzUzZTdiLi45NTYwMDUzYTQ4MDViOWQ0YmY1NTk5ZTczYTE5
YTgxZTI1YjBjOTZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L09zY2lsbGF0b3JOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L09zY2lsbGF0b3JOb2RlLmNwcApAQCAtMzA2LDcgKzMwNiw3IEBAIHZvaWQgT3NjaWxsYXRvck5v
ZGU6OnNldFBlcmlvZGljV2F2ZShQZXJpb2RpY1dhdmUqIHBlcmlvZGljV2F2ZSkKICAgICBBU1NF
UlQoaXNNYWluVGhyZWFkKCkpOwogICAgIAogICAgIC8vIFRoaXMgc3luY2hyb25pemVzIHdpdGgg
cHJvY2VzcygpLgotICAgIHN0ZDo6bG9ja19ndWFyZDxMb2NrPiBsb2NrKG1fcHJvY2Vzc011dGV4
KTsKKyAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fcHJvY2Vzc011dGV4KTsKICAgICBtX3Bl
cmlvZGljV2F2ZSA9IHBlcmlvZGljV2F2ZTsKICAgICBtX3R5cGUgPSBUeXBlOjpDdXN0b207CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1Bhbm5lck5vZGUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9QYW5uZXJOb2RlLmNwcAppbmRl
eCA5MjQyZjg4YTYzNmFkOTFlMWQ3YWVmYjhlOTFiMzAxZTE5NzA5YTBjLi41MDg3MzZiNjA1ZDc4
Yzc1Y2UxMzIyZGEwOTI0ZTIzNmRhNTMzNTM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL1Bhbm5lck5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vUGFubmVyTm9kZS5jcHAKQEAgLTE4Miw3ICsxODIsNyBAQCB2b2lkIFBhbm5l
ck5vZGU6OnNldFBhbm5pbmdNb2RlbChQYW5uaW5nTW9kZWxUeXBlIG1vZGVsKQogewogICAgIGlm
ICghbV9wYW5uZXIuZ2V0KCkgfHwgbW9kZWwgIT0gbV9wYW5uaW5nTW9kZWwpIHsKICAgICAgICAg
Ly8gVGhpcyBzeW5jaHJvbml6ZXMgd2l0aCBwcm9jZXNzKCkuCi0gICAgICAgIHN0ZDo6bG9ja19n
dWFyZDxMb2NrPiBsb2NrKG1fcGFubmVyTXV0ZXgpOworICAgICAgICBhdXRvIGxvY2tlciA9IGhv
bGRMb2NrKG1fcGFubmVyTXV0ZXgpOwogCiAgICAgICAgIG1fcGFubmVyID0gUGFubmVyOjpjcmVh
dGUobW9kZWwsIHNhbXBsZVJhdGUoKSwgbV9ocnRmRGF0YWJhc2VMb2FkZXIuZ2V0KCkpOwogICAg
ICAgICBtX3Bhbm5pbmdNb2RlbCA9IG1vZGVsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9XYXZlU2hhcGVyUHJvY2Vzc29yLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vV2F2ZVNoYXBlclByb2Nlc3Nvci5jcHAKaW5kZXggYmZlNWUwZTQ3
ZmI4NGEyOGM2M2M2ZTI4YjMyZTBmYzExZTVjNjdiMS4uNzc1NjQ5OWRlNDQ1NTYwYjhjYTdhMzc0
OTAxYTkwZmYxYzcwMzgwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9XYXZlU2hhcGVyUHJvY2Vzc29yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL1dhdmVTaGFwZXJQcm9jZXNzb3IuY3BwCkBAIC01Miw3ICs1Miw3IEBAIHN0ZDo6
dW5pcXVlX3B0cjxBdWRpb0RTUEtlcm5lbD4gV2F2ZVNoYXBlclByb2Nlc3Nvcjo6Y3JlYXRlS2Vy
bmVsKCkKIHZvaWQgV2F2ZVNoYXBlclByb2Nlc3Nvcjo6c2V0Q3VydmUoRmxvYXQzMkFycmF5KiBj
dXJ2ZSkKIHsKICAgICAvLyBUaGlzIHN5bmNocm9uaXplcyB3aXRoIHByb2Nlc3MoKS4KLSAgICBz
dGQ6OmxvY2tfZ3VhcmQ8TG9jaz4gbG9jayhtX3Byb2Nlc3NNdXRleCk7CisgICAgYXV0byBsb2Nr
ZXIgPSBob2xkTG9jayhtX3Byb2Nlc3NNdXRleCk7CiAKICAgICBtX2N1cnZlID0gY3VydmU7CiB9
CkBAIC02MCw3ICs2MCw3IEBAIHZvaWQgV2F2ZVNoYXBlclByb2Nlc3Nvcjo6c2V0Q3VydmUoRmxv
YXQzMkFycmF5KiBjdXJ2ZSkKIHZvaWQgV2F2ZVNoYXBlclByb2Nlc3Nvcjo6c2V0T3ZlcnNhbXBs
ZShPdmVyU2FtcGxlVHlwZSBvdmVyc2FtcGxlKQogewogICAgIC8vIFRoaXMgc3luY2hyb25pemVz
IHdpdGggcHJvY2VzcygpLgotICAgIHN0ZDo6bG9ja19ndWFyZDxMb2NrPiBsb2NrKG1fcHJvY2Vz
c011dGV4KTsKKyAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fcHJvY2Vzc011dGV4KTsKIAog
ICAgIG1fb3ZlcnNhbXBsZSA9IG92ZXJzYW1wbGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZS5jcHAKaW5kZXggMjE4YjBjNGM5MDA5MDZlN2I1NmQw
MGE4NzdlMWVjYTQzZTRmODNlMC4uYWQzOTUyYTA3MmNmNjVkZGQyNDhjMWJlODk2OTM0OTUxZTNl
NTZkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRh
YmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFz
ZS5jcHAKQEAgLTIwNiw3ICsyMDYsNyBAQCBEYXRhYmFzZTo6RGF0YWJhc2UoRGF0YWJhc2VDb250
ZXh0JiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgZQogICAgICwg
bV9kYXRhYmFzZUF1dGhvcml6ZXIoRGF0YWJhc2VBdXRob3JpemVyOjpjcmVhdGUodW5xdWFsaWZp
ZWRJbmZvVGFibGVOYW1lKSkKIHsKICAgICB7Ci0gICAgICAgIHN0ZDo6bG9ja19ndWFyZDxMb2Nr
PiBsb2NrZXIoZ3VpZE11dGV4KTsKKyAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhndWlk
TXV0ZXgpOwogCiAgICAgICAgIG1fZ3VpZCA9IGd1aWRGb3JPcmlnaW5BbmROYW1lKHNlY3VyaXR5
T3JpZ2luKCkuc2VjdXJpdHlPcmlnaW4oKS0+dG9TdHJpbmcoKSwgbmFtZSk7CiAgICAgICAgIGd1
aWRUb0RhdGFiYXNlTWFwKCkuZW5zdXJlKG1fZ3VpZCwgW10gewpAQCAtMzUzLDcgKzM1Myw3IEBA
IEV4Y2VwdGlvbk9yPHZvaWQ+IERhdGFiYXNlOjpwZXJmb3JtT3BlbkFuZFZlcmlmeShib29sIHNo
b3VsZFNldFZlcnNpb25Jbk5ld0RhdGFiCiAKICAgICBTdHJpbmcgY3VycmVudFZlcnNpb247CiAg
ICAgewotICAgICAgICBzdGQ6OmxvY2tfZ3VhcmQ8TG9jaz4gbG9ja2VyKGd1aWRNdXRleCk7Cisg
ICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2soZ3VpZE11dGV4KTsKIAogICAgICAgICBhdXRv
IGVudHJ5ID0gZ3VpZFRvVmVyc2lvbk1hcCgpLmZpbmQobV9ndWlkKTsKICAgICAgICAgaWYgKGVu
dHJ5ICE9IGd1aWRUb1ZlcnNpb25NYXAoKS5lbmQoKSkgewpAQCAtNDQyLDcgKzQ0Miw3IEBAIHZv
aWQgRGF0YWJhc2U6OmNsb3NlRGF0YWJhc2UoKQogICAgIERhdGFiYXNlVHJhY2tlcjo6c2luZ2xl
dG9uKCkucmVtb3ZlT3BlbkRhdGFiYXNlKCp0aGlzKTsKIAogICAgIHsKLSAgICAgICAgc3RkOjps
b2NrX2d1YXJkPExvY2s+IGxvY2tlcihndWlkTXV0ZXgpOworICAgICAgICBhdXRvIGxvY2tlciA9
IGhvbGRMb2NrKGd1aWRNdXRleCk7CiAKICAgICAgICAgYXV0byBpdCA9IGd1aWRUb0RhdGFiYXNl
TWFwKCkuZmluZChtX2d1aWQpOwogICAgICAgICBBU1NFUlQoaXQgIT0gZ3VpZFRvRGF0YWJhc2VN
YXAoKS5lbmQoKSk7CkBAIC01MDAsMTQgKzUwMCwxNCBAQCB2b2lkIERhdGFiYXNlOjpzZXRFeHBl
Y3RlZFZlcnNpb24oY29uc3QgU3RyaW5nJiB2ZXJzaW9uKQogCiBTdHJpbmcgRGF0YWJhc2U6Omdl
dENhY2hlZFZlcnNpb24oKSBjb25zdAogewotICAgIHN0ZDo6bG9ja19ndWFyZDxMb2NrPiBsb2Nr
ZXIoZ3VpZE11dGV4KTsKKyAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKGd1aWRNdXRleCk7CiAK
ICAgICByZXR1cm4gZ3VpZFRvVmVyc2lvbk1hcCgpLmdldChtX2d1aWQpLmlzb2xhdGVkQ29weSgp
OwogfQogCiB2b2lkIERhdGFiYXNlOjpzZXRDYWNoZWRWZXJzaW9uKGNvbnN0IFN0cmluZyYgYWN0
dWFsVmVyc2lvbikKIHsKLSAgICBzdGQ6OmxvY2tfZ3VhcmQ8TG9jaz4gbG9ja2VyKGd1aWRNdXRl
eCk7CisgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhndWlkTXV0ZXgpOwogCiAgICAgdXBkYXRl
R1VJRFZlcnNpb25NYXAobV9ndWlkLCBhY3R1YWxWZXJzaW9uKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VNYW5hZ2VyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VNYW5hZ2VyLmNwcAppbmRl
eCA3MTZmNTA3MzE3NTVjYmY4MDA0NjIzMDMwMTEzNTg2M2U0M2RiYmFmLi41ZWY2Njg3YzE3YjIz
NTVhOTFmMmU2NjhkNjliZWJiZGYzNzQxYWIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZU1hbmFnZXIuY3BwCkBAIC0xODEsMTMgKzE4
MSwxMyBAQCBFeGNlcHRpb25PcjxSZWY8RGF0YWJhc2U+PiBEYXRhYmFzZU1hbmFnZXI6OnRyeVRv
T3BlbkRhdGFiYXNlQmFja2VuZChEb2N1bWVudCYgZAogCiB2b2lkIERhdGFiYXNlTWFuYWdlcjo6
YWRkUHJvcG9zZWREYXRhYmFzZShQcm9wb3NlZERhdGFiYXNlJiBkYXRhYmFzZSkKIHsKLSAgICBz
dGQ6OmxvY2tfZ3VhcmQ8TG9jaz4gbG9jayB7IG1fcHJvcG9zZWREYXRhYmFzZXNNdXRleCB9Owor
ICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9wcm9wb3NlZERhdGFiYXNlc011dGV4KTsKICAg
ICBtX3Byb3Bvc2VkRGF0YWJhc2VzLmFkZCgmZGF0YWJhc2UpOwogfQogCiB2b2lkIERhdGFiYXNl
TWFuYWdlcjo6cmVtb3ZlUHJvcG9zZWREYXRhYmFzZShQcm9wb3NlZERhdGFiYXNlJiBkYXRhYmFz
ZSkKIHsKLSAgICBzdGQ6OmxvY2tfZ3VhcmQ8TG9jaz4gbG9jayB7IG1fcHJvcG9zZWREYXRhYmFz
ZXNNdXRleCB9OworICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9wcm9wb3NlZERhdGFiYXNl
c011dGV4KTsKICAgICBtX3Byb3Bvc2VkRGF0YWJhc2VzLnJlbW92ZSgmZGF0YWJhc2UpOwogfQog
CkBAIC0yMzcsNyArMjM3LDcgQEAgdm9pZCBEYXRhYmFzZU1hbmFnZXI6OnN0b3BEYXRhYmFzZXMo
RG9jdW1lbnQmIGRvY3VtZW50LCBEYXRhYmFzZVRhc2tTeW5jaHJvbml6ZXIKIFN0cmluZyBEYXRh
YmFzZU1hbmFnZXI6OmZ1bGxQYXRoRm9yRGF0YWJhc2UoU2VjdXJpdHlPcmlnaW4mIG9yaWdpbiwg
Y29uc3QgU3RyaW5nJiBuYW1lLCBib29sIGNyZWF0ZUlmRG9lc05vdEV4aXN0KQogewogICAgIHsK
LSAgICAgICAgc3RkOjpsb2NrX2d1YXJkPExvY2s+IGxvY2sgeyBtX3Byb3Bvc2VkRGF0YWJhc2Vz
TXV0ZXggfTsKKyAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX3Byb3Bvc2VkRGF0YWJh
c2VzTXV0ZXgpOwogICAgICAgICBmb3IgKGF1dG8qIHByb3Bvc2VkRGF0YWJhc2UgOiBtX3Byb3Bv
c2VkRGF0YWJhc2VzKSB7CiAgICAgICAgICAgICBpZiAocHJvcG9zZWREYXRhYmFzZS0+ZGV0YWls
cygpLm5hbWUoKSA9PSBuYW1lICYmIHByb3Bvc2VkRGF0YWJhc2UtPm9yaWdpbigpLmVxdWFsKCZv
cmlnaW4pKQogICAgICAgICAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKQEAgLTI0OSw3ICsyNDks
NyBAQCBTdHJpbmcgRGF0YWJhc2VNYW5hZ2VyOjpmdWxsUGF0aEZvckRhdGFiYXNlKFNlY3VyaXR5
T3JpZ2luJiBvcmlnaW4sIGNvbnN0IFN0cmluZwogRGF0YWJhc2VEZXRhaWxzIERhdGFiYXNlTWFu
YWdlcjo6ZGV0YWlsc0Zvck5hbWVBbmRPcmlnaW4oY29uc3QgU3RyaW5nJiBuYW1lLCBTZWN1cml0
eU9yaWdpbiYgb3JpZ2luKQogewogICAgIHsKLSAgICAgICAgc3RkOjpsb2NrX2d1YXJkPExvY2s+
IGxvY2sgeyBtX3Byb3Bvc2VkRGF0YWJhc2VzTXV0ZXggfTsKKyAgICAgICAgYXV0byBsb2NrZXIg
PSBob2xkTG9jayhtX3Byb3Bvc2VkRGF0YWJhc2VzTXV0ZXgpOwogICAgICAgICBmb3IgKGF1dG8q
IHByb3Bvc2VkRGF0YWJhc2UgOiBtX3Byb3Bvc2VkRGF0YWJhc2VzKSB7CiAgICAgICAgICAgICBp
ZiAocHJvcG9zZWREYXRhYmFzZS0+ZGV0YWlscygpLm5hbWUoKSA9PSBuYW1lICYmIHByb3Bvc2Vk
RGF0YWJhc2UtPm9yaWdpbigpLmVxdWFsKCZvcmlnaW4pKSB7CiAgICAgICAgICAgICAgICAgQVNT
RVJUKCZwcm9wb3NlZERhdGFiYXNlLT5kZXRhaWxzKCkudGhyZWFkKCkgPT0gJlRocmVhZDo6Y3Vy
cmVudCgpIHx8IGlzTWFpblRocmVhZCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Ny
eXB0by9DcnlwdG9BbGdvcml0aG1SZWdpc3RyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8v
Q3J5cHRvQWxnb3JpdGhtUmVnaXN0cnkuY3BwCmluZGV4IDdhNDgwMWFiMGE0NzUyYjBkMWNkNGQy
NzVhMDM2MzYwOWZjZTBhOGYuLjIyZjI3N2E4YWQ5NWViMGQ2NDVlNGI0ZDg0MDk0ODUwNTQ2ODQ4
MGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9DcnlwdG9BbGdvcml0aG1SZWdp
c3RyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL0NyeXB0b0FsZ29yaXRobVJlZ2lz
dHJ5LmNwcApAQCAtNTIsNyArNTIsNyBAQCBPcHRpb25hbDxDcnlwdG9BbGdvcml0aG1JZGVudGlm
aWVyPiBDcnlwdG9BbGdvcml0aG1SZWdpc3RyeTo6aWRlbnRpZmllcihjb25zdCBTdAogICAgIGlm
IChuYW1lLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIAotICAgIHN0
ZDo6bG9ja19ndWFyZDxMb2NrPiBsb2NrKHJlZ2lzdHJ5TXV0ZXgpOworICAgIGF1dG8gbG9ja2Vy
ID0gaG9sZExvY2socmVnaXN0cnlNdXRleCk7CiAKICAgICAvLyBGSVhNRTogSG93IGlzIGl0IGhl
bHBmdWwgdG8gY2FsbCBpc29sYXRlZENvcHkgb24gdGhlIGFyZ3VtZW50IHRvIGZpbmQ/CiAgICAg
YXV0byBpZGVudGlmaWVyID0gbV9pZGVudGlmaWVycy5maW5kKG5hbWUuaXNvbGF0ZWRDb3B5KCkp
OwpAQCAtNjQsNyArNjQsNyBAQCBPcHRpb25hbDxDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyPiBD
cnlwdG9BbGdvcml0aG1SZWdpc3RyeTo6aWRlbnRpZmllcihjb25zdCBTdAogCiBTdHJpbmcgQ3J5
cHRvQWxnb3JpdGhtUmVnaXN0cnk6Om5hbWUoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBpZGVu
dGlmaWVyKQogewotICAgIHN0ZDo6bG9ja19ndWFyZDxMb2NrPiBsb2NrKHJlZ2lzdHJ5TXV0ZXgp
OworICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2socmVnaXN0cnlNdXRleCk7CiAKICAgICBhdXRv
IGNvbnRydWN0b3IgPSBtX2NvbnN0cnVjdG9ycy5maW5kKHN0YXRpY19jYXN0PHVuc2lnbmVkPihp
ZGVudGlmaWVyKSk7CiAgICAgaWYgKGNvbnRydWN0b3IgPT0gbV9jb25zdHJ1Y3RvcnMuZW5kKCkp
CkBAIC03NSw3ICs3NSw3IEBAIFN0cmluZyBDcnlwdG9BbGdvcml0aG1SZWdpc3RyeTo6bmFtZShD
cnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGlkZW50aWZpZXIpCiAKIFJlZlB0cjxDcnlwdG9BbGdv
cml0aG0+IENyeXB0b0FsZ29yaXRobVJlZ2lzdHJ5OjpjcmVhdGUoQ3J5cHRvQWxnb3JpdGhtSWRl
bnRpZmllciBpZGVudGlmaWVyKQogewotICAgIHN0ZDo6bG9ja19ndWFyZDxMb2NrPiBsb2NrKHJl
Z2lzdHJ5TXV0ZXgpOworICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2socmVnaXN0cnlNdXRleCk7
CiAKICAgICBhdXRvIGNvbnRydWN0b3IgPSBtX2NvbnN0cnVjdG9ycy5maW5kKHN0YXRpY19jYXN0
PHVuc2lnbmVkPihpZGVudGlmaWVyKSk7CiAgICAgaWYgKGNvbnRydWN0b3IgPT0gbV9jb25zdHJ1
Y3RvcnMuZW5kKCkpCkBAIC04Niw3ICs4Niw3IEBAIFJlZlB0cjxDcnlwdG9BbGdvcml0aG0+IENy
eXB0b0FsZ29yaXRobVJlZ2lzdHJ5OjpjcmVhdGUoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllCiAK
IHZvaWQgQ3J5cHRvQWxnb3JpdGhtUmVnaXN0cnk6OnJlZ2lzdGVyQWxnb3JpdGhtKGNvbnN0IFN0
cmluZyYgbmFtZSwgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBpZGVudGlmaWVyLCBDcnlwdG9B
bGdvcml0aG1Db25zdHJ1Y3RvciBjb25zdHJ1Y3RvcikKIHsKLSAgICBzdGQ6OmxvY2tfZ3VhcmQ8
TG9jaz4gbG9jayhyZWdpc3RyeU11dGV4KTsKKyAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKHJl
Z2lzdHJ5TXV0ZXgpOwogCiAgICAgQVNTRVJUKCFtX2lkZW50aWZpZXJzLmNvbnRhaW5zKG5hbWUp
KTsKICAgICBBU1NFUlQoIW1fY29uc3RydWN0b3JzLmNvbnRhaW5zKHN0YXRpY19jYXN0PHVuc2ln
bmVkPihpZGVudGlmaWVyKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2FnZW50cy9XZWJIZWFwQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50
cy9XZWJIZWFwQWdlbnQuY3BwCmluZGV4IDNjYmZiODM3NWU2ZmZkNzZjMDc2NTlkNzFiOWExOWI0
YTFhYmFlM2QuLmFjZjNjOWYxNTk3ZWRlOWY3OTYwMGQyZDJhNWY4MTY4ZTM4MDIzMTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvV2ViSGVhcEFnZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL1dlYkhlYXBBZ2VudC5jcHAKQEAg
LTY0LDcgKzY0LDcgQEAgU2VuZEdhcmJhZ2VDb2xsZWN0aW9uRXZlbnRzVGFzazo6U2VuZEdhcmJh
Z2VDb2xsZWN0aW9uRXZlbnRzVGFzayhXZWJIZWFwQWdlbnQmIGEKIHZvaWQgU2VuZEdhcmJhZ2VD
b2xsZWN0aW9uRXZlbnRzVGFzazo6YWRkR2FyYmFnZUNvbGxlY3Rpb24oR2FyYmFnZUNvbGxlY3Rp
b25EYXRhJiYgY29sbGVjdGlvbikKIHsKICAgICB7Ci0gICAgICAgIHN0ZDo6bG9ja19ndWFyZDxM
b2NrPiBsb2NrKG1fbXV0ZXgpOworICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fbXV0
ZXgpOwogICAgICAgICBtX2NvbGxlY3Rpb25zLmFwcGVuZChXVEZNb3ZlKGNvbGxlY3Rpb24pKTsK
ICAgICB9CiAKQEAgLTc1LDcgKzc1LDcgQEAgdm9pZCBTZW5kR2FyYmFnZUNvbGxlY3Rpb25FdmVu
dHNUYXNrOjphZGRHYXJiYWdlQ29sbGVjdGlvbihHYXJiYWdlQ29sbGVjdGlvbkRhdGEKIHZvaWQg
U2VuZEdhcmJhZ2VDb2xsZWN0aW9uRXZlbnRzVGFzazo6cmVzZXQoKQogewogICAgIHsKLSAgICAg
ICAgc3RkOjpsb2NrX2d1YXJkPExvY2s+IGxvY2sobV9tdXRleCk7CisgICAgICAgIGF1dG8gbG9j
a2VyID0gaG9sZExvY2sobV9tdXRleCk7CiAgICAgICAgIG1fY29sbGVjdGlvbnMuY2xlYXIoKTsK
ICAgICB9CiAKQEAgLTg3LDcgKzg3LDcgQEAgdm9pZCBTZW5kR2FyYmFnZUNvbGxlY3Rpb25FdmVu
dHNUYXNrOjp0aW1lckZpcmVkKCkKICAgICBWZWN0b3I8R2FyYmFnZUNvbGxlY3Rpb25EYXRhPiBj
b2xsZWN0aW9uc1RvU2VuZDsKIAogICAgIHsKLSAgICAgICAgc3RkOjpsb2NrX2d1YXJkPExvY2s+
IGxvY2sobV9tdXRleCk7CisgICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9tdXRleCk7
CiAgICAgICAgIG1fY29sbGVjdGlvbnMuc3dhcChjb2xsZWN0aW9uc1RvU2VuZCk7CiAgICAgfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUaHJl
YWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVGhyZWFkLmNw
cAppbmRleCBiMTQ3ZWNmYzBkNDRjN2Q1NmY2NzJmYTEzYjQxMTJmYjkzYzMxNGJjLi45MmE2MDg2
MTNkZTAxMmViMThmZmYxMzJjZjQ1MWVkZmEzODJjYzY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUaHJlYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RocmVhZC5jcHAKQEAgLTQ5LDcgKzQ5LDcgQEAg
dm9pZCBTY3JvbGxpbmdUaHJlYWQ6OmRpc3BhdGNoKEZ1bmN0aW9uPHZvaWQgKCk+JiYgZnVuY3Rp
b24pCiAgICAgc2Nyb2xsaW5nVGhyZWFkLmNyZWF0ZVRocmVhZElmTmVlZGVkKCk7CiAKICAgICB7
Ci0gICAgICAgIHN0ZDo6bG9ja19ndWFyZDxMb2NrPiBsb2NrKHNjcm9sbGluZ1RocmVhZC5tX2Z1
bmN0aW9uc011dGV4KTsKKyAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhzY3JvbGxpbmdU
aHJlYWQubV9mdW5jdGlvbnNNdXRleCk7CiAgICAgICAgIHNjcm9sbGluZ1RocmVhZC5tX2Z1bmN0
aW9ucy5hcHBlbmQoV1RGTW92ZShmdW5jdGlvbikpOwogICAgIH0KIApAQCAtOTYsNyArOTYsNyBA
QCB2b2lkIFNjcm9sbGluZ1RocmVhZDo6ZGlzcGF0Y2hGdW5jdGlvbnNGcm9tU2Nyb2xsaW5nVGhy
ZWFkKCkKICAgICBWZWN0b3I8RnVuY3Rpb248dm9pZCAoKT4+IGZ1bmN0aW9uczsKICAgICAKICAg
ICB7Ci0gICAgICAgIHN0ZDo6bG9ja19ndWFyZDxMb2NrPiBsb2NrKG1fZnVuY3Rpb25zTXV0ZXgp
OworICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fZnVuY3Rpb25zTXV0ZXgpOwogICAg
ICAgICBmdW5jdGlvbnMgPSBXVEZNb3ZlKG1fZnVuY3Rpb25zKTsKICAgICB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2dlbmVyaWMvU2Nyb2xsaW5nVGhyZWFk
R2VuZXJpYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9nZW5lcmljL1Njcm9s
bGluZ1RocmVhZEdlbmVyaWMuY3BwCmluZGV4IGY2OTllMGUwODE4NzI4NzNkNjMzOGVmYmQxZjgw
NTcyM2UyNTVjNGIuLjhhNGU3MWI1NmYwNGZkODA4ZmNmMDc1ZTQ1NjM5MGQ4Njc1YjE3MjIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2dlbmVyaWMvU2Nyb2xsaW5n
VGhyZWFkR2VuZXJpYy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvZ2Vu
ZXJpYy9TY3JvbGxpbmdUaHJlYWRHZW5lcmljLmNwcApAQCAtMzUsNyArMzUsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiB2b2lkIFNjcm9sbGluZ1RocmVhZDo6aW5pdGlhbGl6ZVJ1bkxvb3AoKQog
ewogICAgIHsKLSAgICAgICAgc3RkOjpsb2NrX2d1YXJkPExvY2s+IGxvY2sobV9pbml0aWFsaXpl
UnVuTG9vcE11dGV4KTsKKyAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX2luaXRpYWxp
emVSdW5Mb29wTXV0ZXgpOwogICAgICAgICBtX3J1bkxvb3AgPSAmUnVuTG9vcDo6Y3VycmVudCgp
OwogICAgICAgICBtX2luaXRpYWxpemVSdW5Mb29wQ29uZGl0aW9uVmFyaWFibGUubm90aWZ5QWxs
KCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFj
L1Njcm9sbGluZ1RocmVhZE1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21h
Yy9TY3JvbGxpbmdUaHJlYWRNYWMubW0KaW5kZXggNmQyY2RhMDk0MTA1ZjU2NDRkOGM0OTUzMTRi
ZmM0NzE2NTViMWI0My4uZjI1OWQ2NjdjZGRlYjRmNWNiYjAwZGIwOTM2ZDY1ZDI1NGRlMTBhNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1Ro
cmVhZE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xs
aW5nVGhyZWFkTWFjLm1tCkBAIC0zNiw3ICszNiw3IEBAIHZvaWQgU2Nyb2xsaW5nVGhyZWFkOjpp
bml0aWFsaXplUnVuTG9vcCgpCiB7CiAgICAgLy8gSW5pdGlhbGl6ZSB0aGUgcnVuIGxvb3AuCiAg
ICAgewotICAgICAgICBzdGQ6OmxvY2tfZ3VhcmQ8TG9jaz4gbG9jayhtX2luaXRpYWxpemVSdW5M
b29wTXV0ZXgpOworICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1faW5pdGlhbGl6ZVJ1
bkxvb3BNdXRleCk7CiAKICAgICAgICAgbV90aHJlYWRSdW5Mb29wID0gQ0ZSdW5Mb29wR2V0Q3Vy
cmVudCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZl
cmJDb252b2x2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2ZXJiQ29u
dm9sdmVyLmNwcAppbmRleCBhMTJmMTY1NGUwNWU4ZTY2MTlkMjdkM2MxMWU1YTEyYmU0YzgzZDNl
Li45YzNmMTA1ZmY3ZGRiYjRiYWQ0MDUwNWZjOWU1YzRmZTMzNjZjNzVlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZlcmJDb252b2x2ZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYkNvbnZvbHZlci5jcHAKQEAgLTEzNSw3
ICsxMzUsNyBAQCBSZXZlcmJDb252b2x2ZXI6On5SZXZlcmJDb252b2x2ZXIoKQogCiAgICAgICAg
IC8vIFdha2UgdXAgdGhyZWFkIHNvIGl0IGNhbiByZXR1cm4KICAgICAgICAgewotICAgICAgICAg
ICAgc3RkOjpsb2NrX2d1YXJkPExvY2s+IGxvY2sobV9iYWNrZ3JvdW5kVGhyZWFkTXV0ZXgpOwor
ICAgICAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX2JhY2tncm91bmRUaHJlYWRNdXRl
eCk7CiAgICAgICAgICAgICBtX21vcmVJbnB1dEJ1ZmZlcmVkID0gdHJ1ZTsKICAgICAgICAgICAg
IG1fYmFja2dyb3VuZFRocmVhZENvbmRpdGlvblZhcmlhYmxlLm5vdGlmeU9uZSgpOwogICAgICAg
ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakMubW0K
aW5kZXggNmIzYzkyMmU2YWViZTU5MjBhZTY1ZTU3YWYwNWVkZTRhZDAzNzQzZS4uZWQ4MGM0NzIw
MDdhNmM1ZjY0ZjY1YzY5OGM0OGVmZjdlNmFlOTA3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0F1ZGlvU291cmNlUHJvdmlkZXJBVkZP
YmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9BdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQy5tbQpAQCAtODgsNyArODgsNyBAQCBBdWRpb1Nv
dXJjZVByb3ZpZGVyQVZGT2JqQzo6fkF1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDKCkKIHsKICAg
ICBzZXRDbGllbnQobnVsbHB0cik7CiAgICAgaWYgKG1fdGFwU3RvcmFnZSkgewotICAgICAgICBz
dGQ6OmxvY2tfZ3VhcmQ8TG9jaz4gbG9jayhtX3RhcFN0b3JhZ2UtPm11dGV4KTsKKyAgICAgICAg
YXV0byBsb2NrZXIgPSBob2xkTG9jayhtX3RhcFN0b3JhZ2UtPm11dGV4KTsKICAgICAgICAgbV90
YXBTdG9yYWdlLT5fdGhpcyA9IG51bGxwdHI7CiAgICAgfQogCkBAIC0yNTQsNyArMjU0LDcgQEAg
dm9pZCBBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQzo6ZmluYWxpemVDYWxsYmFjayhNVEF1ZGlv
UHJvY2Vzc2luZ1RhcFJlZiB0YXApCiAgICAgVGFwU3RvcmFnZSogdGFwU3RvcmFnZSA9IHN0YXRp
Y19jYXN0PFRhcFN0b3JhZ2UqPihNVEF1ZGlvUHJvY2Vzc2luZ1RhcEdldFN0b3JhZ2UodGFwKSk7
CiAKICAgICB7Ci0gICAgICAgIHN0ZDo6bG9ja19ndWFyZDxMb2NrPiBsb2NrKHRhcFN0b3JhZ2Ut
Pm11dGV4KTsKKyAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayh0YXBTdG9yYWdlLT5tdXRl
eCk7CiAgICAgICAgIGlmICh0YXBTdG9yYWdlLT5fdGhpcykKICAgICAgICAgICAgIHRhcFN0b3Jh
Z2UtPl90aGlzLT5maW5hbGl6ZSgpOwogICAgIH0KQEAgLTI2Niw3ICsyNjYsNyBAQCB2b2lkIEF1
ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDOjpwcmVwYXJlQ2FsbGJhY2soTVRBdWRpb1Byb2Nlc3Np
bmdUYXBSZWYgdGFwLCBDTQogICAgIEFTU0VSVCh0YXApOwogICAgIFRhcFN0b3JhZ2UqIHRhcFN0
b3JhZ2UgPSBzdGF0aWNfY2FzdDxUYXBTdG9yYWdlKj4oTVRBdWRpb1Byb2Nlc3NpbmdUYXBHZXRT
dG9yYWdlKHRhcCkpOwogCi0gICAgc3RkOjpsb2NrX2d1YXJkPExvY2s+IGxvY2sodGFwU3RvcmFn
ZS0+bXV0ZXgpOworICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sodGFwU3RvcmFnZS0+bXV0ZXgp
OwogCiAgICAgaWYgKHRhcFN0b3JhZ2UtPl90aGlzKQogICAgICAgICB0YXBTdG9yYWdlLT5fdGhp
cy0+cHJlcGFyZShtYXhGcmFtZXMsIHByb2Nlc3NpbmdGb3JtYXQpOwpAQCAtMjc3LDcgKzI3Nyw3
IEBAIHZvaWQgQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakM6OnVucHJlcGFyZUNhbGxiYWNrKE1U
QXVkaW9Qcm9jZXNzaW5nVGFwUmVmIHRhcCkKICAgICBBU1NFUlQodGFwKTsKICAgICBUYXBTdG9y
YWdlKiB0YXBTdG9yYWdlID0gc3RhdGljX2Nhc3Q8VGFwU3RvcmFnZSo+KE1UQXVkaW9Qcm9jZXNz
aW5nVGFwR2V0U3RvcmFnZSh0YXApKTsKIAotICAgIHN0ZDo6bG9ja19ndWFyZDxMb2NrPiBsb2Nr
KHRhcFN0b3JhZ2UtPm11dGV4KTsKKyAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKHRhcFN0b3Jh
Z2UtPm11dGV4KTsKIAogICAgIGlmICh0YXBTdG9yYWdlLT5fdGhpcykKICAgICAgICAgdGFwU3Rv
cmFnZS0+X3RoaXMtPnVucHJlcGFyZSgpOwpAQCAtMjg4LDcgKzI4OCw3IEBAIHZvaWQgQXVkaW9T
b3VyY2VQcm92aWRlckFWRk9iakM6OnByb2Nlc3NDYWxsYmFjayhNVEF1ZGlvUHJvY2Vzc2luZ1Rh
cFJlZiB0YXAsIENNCiAgICAgQVNTRVJUKHRhcCk7CiAgICAgVGFwU3RvcmFnZSogdGFwU3RvcmFn
ZSA9IHN0YXRpY19jYXN0PFRhcFN0b3JhZ2UqPihNVEF1ZGlvUHJvY2Vzc2luZ1RhcEdldFN0b3Jh
Z2UodGFwKSk7CiAKLSAgICBzdGQ6OmxvY2tfZ3VhcmQ8TG9jaz4gbG9jayh0YXBTdG9yYWdlLT5t
dXRleCk7CisgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayh0YXBTdG9yYWdlLT5tdXRleCk7CiAK
ICAgICBpZiAodGFwU3RvcmFnZS0+X3RoaXMpCiAgICAgICAgIHRhcFN0b3JhZ2UtPl90aGlzLT5w
cm9jZXNzKHRhcCwgbnVtYmVyRnJhbWVzLCBmbGFncywgYnVmZmVyTGlzdEluT3V0LCBudW1iZXJG
cmFtZXNPdXQsIGZsYWdzT3V0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL0ZvbnRDYWNoZUNvcmVUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRDYWNoZUNvcmVUZXh0LmNwcAppbmRleCAwYzkxZTMz
MmE0MzJjNjRlYjE5OWZjMjE5MzUyYzc1MDkzOTVhZDc0Li40OWIwYjcxMzFmM2E3NmUwZGMzNzVk
YzU0MmY5MWZiNzBiNzI1ODZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jb2NvYS9Gb250Q2FjaGVDb3JlVGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udENhY2hlQ29yZVRleHQuY3BwCkBAIC05MzQsNyAr
OTM0LDcgQEAgY2xhc3MgRm9udERhdGFiYXNlIHsKICAgICB7CiAgICAgICAgIGF1dG8gZm9sZGVk
ID0gRm9udENhc2NhZGVEZXNjcmlwdGlvbjo6Zm9sZGVkRmFtaWx5TmFtZShmYW1pbHlOYW1lKTsK
ICAgICAgICAgewotICAgICAgICAgICAgc3RkOjpsb2NrX2d1YXJkPExvY2s+IGxvY2tlcihtX2Zh
bWlseU5hbWVUb0ZvbnREZXNjcmlwdG9yc0xvY2spOworICAgICAgICAgICAgYXV0byBsb2NrZXIg
PSBob2xkTG9jayhtX2ZhbWlseU5hbWVUb0ZvbnREZXNjcmlwdG9yc0xvY2spOwogICAgICAgICAg
ICAgYXV0byBpdCA9IG1fZmFtaWx5TmFtZVRvRm9udERlc2NyaXB0b3JzLmZpbmQoZm9sZGVkKTsK
ICAgICAgICAgICAgIGlmIChpdCAhPSBtX2ZhbWlseU5hbWVUb0ZvbnREZXNjcmlwdG9ycy5lbmQo
KSkKICAgICAgICAgICAgICAgICByZXR1cm4gaXQtPnZhbHVlOwpAQCAtOTYwLDcgKzk2MCw3IEBA
IGNsYXNzIEZvbnREYXRhYmFzZSB7CiAgICAgICAgICAgICByZXR1cm4gSW5zdGFsbGVkRm9udEZh
bWlseSgpOwogICAgICAgICB9KCk7CiAKLSAgICAgICAgc3RkOjpsb2NrX2d1YXJkPExvY2s+IGxv
Y2tlcihtX2ZhbWlseU5hbWVUb0ZvbnREZXNjcmlwdG9yc0xvY2spOworICAgICAgICBhdXRvIGxv
Y2tlciA9IGhvbGRMb2NrKG1fZmFtaWx5TmFtZVRvRm9udERlc2NyaXB0b3JzTG9jayk7CiAgICAg
ICAgIHJldHVybiBtX2ZhbWlseU5hbWVUb0ZvbnREZXNjcmlwdG9ycy5hZGQoZm9sZGVkLmlzb2xh
dGVkQ29weSgpLCBXVEZNb3ZlKGluc3RhbGxlZEZvbnRGYW1pbHkpKS5pdGVyYXRvci0+dmFsdWU7
CiAgICAgfQogCkBAIC05ODQsNyArOTg0LDcgQEAgY2xhc3MgRm9udERhdGFiYXNlIHsKICAgICB2
b2lkIGNsZWFyKCkKICAgICB7CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0ZDo6bG9ja19ndWFy
ZDxMb2NrPiBsb2NrZXIobV9mYW1pbHlOYW1lVG9Gb250RGVzY3JpcHRvcnNMb2NrKTsKKyAgICAg
ICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9mYW1pbHlOYW1lVG9Gb250RGVzY3JpcHRv
cnNMb2NrKTsKICAgICAgICAgICAgIG1fZmFtaWx5TmFtZVRvRm9udERlc2NyaXB0b3JzLmNsZWFy
KCk7CiAgICAgICAgIH0KICAgICAgICAgbV9wb3N0U2NyaXB0TmFtZVRvRm9udERlc2NyaXB0b3Jz
LmNsZWFyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dl
YkNvcmVUaHJlYWRSdW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dhay9XZWJD
b3JlVGhyZWFkUnVuLmNwcAppbmRleCA4ZWYxNjU3MTg4NjFiNzBkNzVhNjUyNDVkMjE0ZmUxM2Uz
YzgyZjY0Li5lZmE4NDY0NWJhMzk4YTRiZTFiY2RlMmRlYzNkMDEwOGE0Mzk3NTUzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dlYkNvcmVUaHJlYWRSdW4uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsvV2ViQ29yZVRocmVhZFJ1bi5j
cHAKQEAgLTUyLDcgKzUyLDcgQEAgY2xhc3MgV2ViVGhyZWFkQmxvY2tTdGF0ZSB7CiAKICAgICB2
b2lkIHNldENvbXBsZXRlZCgpCiAgICAgewotICAgICAgICBzdGQ6OmxvY2tfZ3VhcmQ8TG9jaz4g
bG9jayhtX3N0YXRlTXV0ZXgpOworICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fc3Rh
dGVNdXRleCk7CiAKICAgICAgICAgQVNTRVJUKCFtX2NvbXBsZXRlZCk7CiAgICAgICAgIG1fY29t
cGxldGVkID0gdHJ1ZTsKQEAgLTEyNCw3ICsxMjQsNyBAQCBzdGF0aWMgdm9pZCBIYW5kbGVSdW5T
b3VyY2Uodm9pZCAqaW5mbykKIAogICAgIFdlYlRocmVhZFJ1blF1ZXVlIHF1ZXVlQ29weTsKICAg
ICB7Ci0gICAgICAgIHN0ZDo6bG9ja19ndWFyZDxMb2NrPiBsb2NrKHJ1blF1ZXVlTXV0ZXgpOwor
ICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKHJ1blF1ZXVlTXV0ZXgpOwogICAgICAgICBx
dWV1ZUNvcHkgPSAqcnVuUXVldWU7CiAgICAgICAgIHJ1blF1ZXVlLT5jbGVhcigpOwogICAgIH0K
QEAgLTE0OCw3ICsxNDgsNyBAQCBzdGF0aWMgdm9pZCBfV2ViVGhyZWFkUnVuKHZvaWQgKF5ibG9j
aykodm9pZCksIGJvb2wgc3luY2hyb25vdXMpCiAgICAgICAgIHN0YXRlID0gbmV3IFdlYlRocmVh
ZEJsb2NrU3RhdGU7CiAKICAgICB7Ci0gICAgICAgIHN0ZDo6bG9ja19ndWFyZDxMb2NrPiBsb2Nr
KHJ1blF1ZXVlTXV0ZXgpOworICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKHJ1blF1ZXVl
TXV0ZXgpOwogICAgICAgICBydW5RdWV1ZS0+YXBwZW5kKFdlYlRocmVhZEJsb2NrKGJsb2NrLCBz
dGF0ZSkpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vbWFjL1dlYkF1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDLm1tIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1dlYkF1ZGlvU291cmNlUHJvdmlkZXJBVkZP
YmpDLm1tCmluZGV4IGFkODYyZWJmMDFkNmEzNGY0OWE1NmVkYTc3YmQ3MWM1YWM2NjUzY2EuLmFl
OTAyZDFiZDNhZTJkZjkzY2YxMjQ4MTYxY2IzNzIwZTk4Njk0OTQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9XZWJBdWRpb1NvdXJjZVByb3ZpZGVy
QVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMv
V2ViQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakMubW0KQEAgLTU5LDcgKzU5LDcgQEAgV2ViQXVk
aW9Tb3VyY2VQcm92aWRlckFWRk9iakM6OldlYkF1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDKE1l
ZGlhU3RyZWFtVHJhY2tQcmkKIAogV2ViQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakM6On5XZWJB
dWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQygpCiB7Ci0gICAgc3RkOjpsb2NrX2d1YXJkPExvY2s+
IGxvY2sobV9tdXRleCk7CisgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX211dGV4KTsKIAog
ICAgIGlmIChtX2Nvbm5lY3RlZCAmJiBtX2NhcHR1cmVTb3VyY2UpCiAgICAgICAgIG1fY2FwdHVy
ZVNvdXJjZS0+cmVtb3ZlT2JzZXJ2ZXIoKnRoaXMpOwpAQCAtMTIyLDcgKzEyMiw3IEBAIHZvaWQg
V2ViQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakM6OnNldENsaWVudChBdWRpb1NvdXJjZVByb3Zp
ZGVyQ2xpZW50KiBjbGllbnQpCiAKIHZvaWQgV2ViQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakM6
OnByZXBhcmUoY29uc3QgQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uJiBmb3JtYXQpCiB7Ci0g
ICAgc3RkOjpsb2NrX2d1YXJkPExvY2s+IGxvY2sobV9tdXRleCk7CisgICAgYXV0byBsb2NrZXIg
PSBob2xkTG9jayhtX211dGV4KTsKIAogICAgIExPRyhNZWRpYSwgIldlYkF1ZGlvU291cmNlUHJv
dmlkZXJBVkZPYmpDOjpwcmVwYXJlKCVwKSIsIHRoaXMpOwogCkBAIC0xNTMsNyArMTUzLDcgQEAg
dm9pZCBXZWJBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQzo6cHJlcGFyZShjb25zdCBBdWRpb1N0
cmVhbUJhc2ljRGVzY3JpcHRpb24mIGYKIAogdm9pZCBXZWJBdWRpb1NvdXJjZVByb3ZpZGVyQVZG
T2JqQzo6dW5wcmVwYXJlKCkKIHsKLSAgICBzdGQ6OmxvY2tfZ3VhcmQ8TG9jaz4gbG9jayhtX211
dGV4KTsKKyAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fbXV0ZXgpOwogCiAgICAgbV9pbnB1
dERlc2NyaXB0aW9uID0gV1RGOjpudWxsb3B0OwogICAgIG1fb3V0cHV0RGVzY3JpcHRpb24gPSBX
VEY6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2NmL0xvYWRlclJ1bkxvb3BDRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2NmL0xvYWRlclJ1bkxvb3BDRi5jcHAKaW5kZXggZjYzM2ZlZDAxMDVjYTg0MjhmMzJmNDNhZTQ2
Nzc2YjZlNDYwYjI5YS4uNWVhNDQ4ZmNlNzczZTAzOTRkNzRmZDdiMWY5YzM3NjM2OWNkOWY4MyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Mb2FkZXJSdW5M
b29wQ0YuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvTG9hZGVy
UnVuTG9vcENGLmNwcApAQCAtNTcsNyArNTcsNyBAQCBDRlJ1bkxvb3BSZWYgbG9hZGVyUnVuTG9v
cCgpCiAgICAgaWYgKCFsb2FkZXJSdW5Mb29wT2JqZWN0KSB7CiAgICAgICAgIFRocmVhZDo6Y3Jl
YXRlKCJXZWJDb3JlOiBDRk5ldHdvcmsgTG9hZGVyIiwgW10gewogICAgICAgICAgICAgewotICAg
ICAgICAgICAgICAgIHN0ZDo6bG9ja19ndWFyZDxMb2NrPiBsb2NrKGxvYWRlclJ1bkxvb3BNdXRl
eCk7CisgICAgICAgICAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhsb2FkZXJSdW5Mb29w
TXV0ZXgpOwogCiAgICAgICAgICAgICAgICAgbG9hZGVyUnVuTG9vcE9iamVjdCA9IENGUnVuTG9v
cEdldEN1cnJlbnQoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3Fs
L1NRTGl0ZURhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVE
YXRhYmFzZS5jcHAKaW5kZXggYzQxYTIzOTRiODIyYjI0MThjZGE0YThlMzJhNWJiN2U3ODk0ZGQ4
MC4uNTBkNzVmY2Q2ZTYxYTU3ZTg0OTRkOGIzZjE0NWYzNjk1MTFhYmYxMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2UuY3BwCkBAIC03Niw3ICs3Niw3
IEBAIHN0YXRpYyBMb2NrIGlzRGF0YWJhc2VPcGVuaW5nRm9yYmlkZGVuTXV0ZXg7CiAKIHZvaWQg
U1FMaXRlRGF0YWJhc2U6OnNldElzRGF0YWJhc2VPcGVuaW5nRm9yYmlkZGVuKGJvb2wgaXNGb3Ji
aWRkZW4pCiB7Ci0gICAgc3RkOjpsb2NrX2d1YXJkPExvY2s+IGxvY2soaXNEYXRhYmFzZU9wZW5p
bmdGb3JiaWRkZW5NdXRleCk7CisgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhpc0RhdGFiYXNl
T3BlbmluZ0ZvcmJpZGRlbk11dGV4KTsKICAgICBpc0RhdGFiYXNlT3BlbmluZ0ZvcmJpZGRlbiA9
IGlzRm9yYmlkZGVuOwogfQogCkBAIC05NCw3ICs5NCw3IEBAIGJvb2wgU1FMaXRlRGF0YWJhc2U6
Om9wZW4oY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgT3Blbk1vZGUgb3Blbk1vZGUpCiAgICAgY2xv
c2UoKTsKIAogICAgIHsKLSAgICAgICAgc3RkOjpsb2NrX2d1YXJkPExvY2s+IGxvY2soaXNEYXRh
YmFzZU9wZW5pbmdGb3JiaWRkZW5NdXRleCk7CisgICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExv
Y2soaXNEYXRhYmFzZU9wZW5pbmdGb3JiaWRkZW5NdXRleCk7CiAgICAgICAgIGlmIChpc0RhdGFi
YXNlT3BlbmluZ0ZvcmJpZGRlbikgewogICAgICAgICAgICAgbV9vcGVuRXJyb3JNZXNzYWdlID0g
Im9wZW5pbmcgZGF0YWJhc2UgaXMgZm9yYmlkZGVuIjsKICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFz
ZVRyYWNrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNl
VHJhY2tlci5jcHAKaW5kZXggNGFmMjkwNzU5YjdlODI1ZDQyMzAwMjRmNmRiOWUwYTE2YzY0MTYx
Yi4uNmEyOGUxOWJlOTQ2OTMwMzVhNTZiNjQwOTRlNDE1N2VjOTVhN2Q3MCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlVHJhY2tlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlVHJhY2tlci5jcHAK
QEAgLTQwLDEzICs0MCwxMyBAQCBzdGF0aWMgTG9jayB0cmFuc2FjdGlvbkluUHJvZ3Jlc3NNdXRl
eDsKIAogdm9pZCBzZXRDbGllbnQoU1FMaXRlRGF0YWJhc2VUcmFja2VyQ2xpZW50KiBjbGllbnQp
CiB7Ci0gICAgc3RkOjpsb2NrX2d1YXJkPExvY2s+IGxvY2sodHJhbnNhY3Rpb25JblByb2dyZXNz
TXV0ZXgpOworICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sodHJhbnNhY3Rpb25JblByb2dyZXNz
TXV0ZXgpOwogICAgIHNfc3RhdGljU1FMaXRlRGF0YWJhc2VUcmFja2VyQ2xpZW50ID0gY2xpZW50
OwogfQogCiB2b2lkIGluY3JlbWVudFRyYW5zYWN0aW9uSW5Qcm9ncmVzc0NvdW50KCkKIHsKLSAg
ICBzdGQ6OmxvY2tfZ3VhcmQ8TG9jaz4gbG9jayh0cmFuc2FjdGlvbkluUHJvZ3Jlc3NNdXRleCk7
CisgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayh0cmFuc2FjdGlvbkluUHJvZ3Jlc3NNdXRleCk7
CiAgICAgaWYgKCFzX3N0YXRpY1NRTGl0ZURhdGFiYXNlVHJhY2tlckNsaWVudCkKICAgICAgICAg
cmV0dXJuOwogCkBAIC01Nyw3ICs1Nyw3IEBAIHZvaWQgaW5jcmVtZW50VHJhbnNhY3Rpb25JblBy
b2dyZXNzQ291bnQoKQogCiB2b2lkIGRlY3JlbWVudFRyYW5zYWN0aW9uSW5Qcm9ncmVzc0NvdW50
KCkKIHsKLSAgICBzdGQ6OmxvY2tfZ3VhcmQ8TG9jaz4gbG9jayh0cmFuc2FjdGlvbkluUHJvZ3Jl
c3NNdXRleCk7CisgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayh0cmFuc2FjdGlvbkluUHJvZ3Jl
c3NNdXRleCk7CiAgICAgaWYgKCFzX3N0YXRpY1NRTGl0ZURhdGFiYXNlVHJhY2tlckNsaWVudCkK
ICAgICAgICAgcmV0dXJuOwogCkBAIC03MCw3ICs3MCw3IEBAIHZvaWQgZGVjcmVtZW50VHJhbnNh
Y3Rpb25JblByb2dyZXNzQ291bnQoKQogCiBib29sIGhhc1RyYW5zYWN0aW9uSW5Qcm9ncmVzcygp
CiB7Ci0gICAgc3RkOjpsb2NrX2d1YXJkPExvY2s+IGxvY2sodHJhbnNhY3Rpb25JblByb2dyZXNz
TXV0ZXgpOworICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sodHJhbnNhY3Rpb25JblByb2dyZXNz
TXV0ZXgpOwogICAgIHJldHVybiAhc19zdGF0aWNTUUxpdGVEYXRhYmFzZVRyYWNrZXJDbGllbnQg
fHwgc190cmFuc2FjdGlvbkluUHJvZ3Jlc3NDb3VudGVyID4gMDsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0RW5jb2RpbmdSZWdpc3RyeS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRFbmNvZGluZ1JlZ2lzdHJ5LmNwcAppbmRl
eCBjOWUxNTBlZTZlM2Y2YWU0YTBjNTIxM2Y1MWVhYzBmN2M2OTE1MjliLi4yYTc4NTBmNTZlMzU5
NTQwNWIzMjUwOTBjZDgyYzYyZWY5N2M0YWRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS90ZXh0L1RleHRFbmNvZGluZ1JlZ2lzdHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS90ZXh0L1RleHRFbmNvZGluZ1JlZ2lzdHJ5LmNwcApAQCAtMTU1LDcgKzE1NSw3
IEBAIHN0YXRpYyB2b2lkIHBydW5lQmxhY2tsaXN0ZWRDb2RlY3MoKQogICAgIH0KIH0KIAotc3Rh
dGljIHZvaWQgYnVpbGRCYXNlVGV4dENvZGVjTWFwcyhjb25zdCBzdGQ6OmxvY2tfZ3VhcmQ8TG9j
az4mKQorc3RhdGljIHZvaWQgYnVpbGRCYXNlVGV4dENvZGVjTWFwcyhjb25zdCBBYnN0cmFjdExv
Y2tlciYpCiB7CiAgICAgQVNTRVJUKCF0ZXh0Q29kZWNNYXApOwogICAgIEFTU0VSVCghdGV4dEVu
Y29kaW5nTmFtZU1hcCk7CkBAIC0yNDMsNyArMjQzLDcgQEAgc3RhdGljIHZvaWQgZXh0ZW5kVGV4
dENvZGVjTWFwcygpCiAKIHN0ZDo6dW5pcXVlX3B0cjxUZXh0Q29kZWM+IG5ld1RleHRDb2RlYyhj
b25zdCBUZXh0RW5jb2RpbmcmIGVuY29kaW5nKQogewotICAgIHN0ZDo6bG9ja19ndWFyZDxMb2Nr
PiBsb2NrKGVuY29kaW5nUmVnaXN0cnlNdXRleCk7CisgICAgYXV0byBsb2NrZXIgPSBob2xkTG9j
ayhlbmNvZGluZ1JlZ2lzdHJ5TXV0ZXgpOwogCiAgICAgQVNTRVJUKHRleHRDb2RlY01hcCk7CiAg
ICAgYXV0byByZXN1bHQgPSB0ZXh0Q29kZWNNYXAtPmZpbmQoZW5jb2RpbmcubmFtZSgpKTsKQEAg
LTI1NiwxMCArMjU2LDEwIEBAIGNvbnN0IGNoYXIqIGF0b21DYW5vbmljYWxUZXh0RW5jb2RpbmdO
YW1lKGNvbnN0IGNoYXIqIG5hbWUpCiAgICAgaWYgKCFuYW1lIHx8ICFuYW1lWzBdKQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHN0ZDo6bG9ja19ndWFyZDxMb2NrPiBsb2NrKGVuY29k
aW5nUmVnaXN0cnlNdXRleCk7CisgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhlbmNvZGluZ1Jl
Z2lzdHJ5TXV0ZXgpOwogCiAgICAgaWYgKCF0ZXh0RW5jb2RpbmdOYW1lTWFwKQotICAgICAgICBi
dWlsZEJhc2VUZXh0Q29kZWNNYXBzKGxvY2spOworICAgICAgICBidWlsZEJhc2VUZXh0Q29kZWNN
YXBzKGxvY2tlcik7CiAKICAgICBpZiAoY29uc3QgY2hhciogYXRvbU5hbWUgPSB0ZXh0RW5jb2Rp
bmdOYW1lTWFwLT5nZXQobmFtZSkpCiAgICAgICAgIHJldHVybiBhdG9tTmFtZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RvcmFn
ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0
b3JhZ2UuY3BwCmluZGV4IGFiN2EwMzVhM2MxMjIyMWFjYzYzN2VlMjc2MmI0YzRiNmFlNzkwNDIu
LmNiOTc3ZjgxNDIxNGFmM2YxMTNkY2VkMDJiMGU5ZWRjZmIyMTg1NzQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdG9y
YWdlLmNwcApAQCAtOTYyLDcgKzk2Miw3IEBAIHZvaWQgU3RvcmFnZTo6dHJhdmVyc2UoY29uc3Qg
U3RyaW5nJiB0eXBlLCBPcHRpb25TZXQ8VHJhdmVyc2VGbGFnPiBmbGFncywgVHJhdmVyCiAgICAg
ICAgICAgICAgICAgICAgIHRyYXZlcnNlT3BlcmF0aW9uLmhhbmRsZXIoJnJlY29yZCwgaW5mbyk7
CiAgICAgICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAgICAgc3RkOjpsb2NrX2d1YXJkPExv
Y2s+IGxvY2sodHJhdmVyc2VPcGVyYXRpb24uYWN0aXZlTXV0ZXgpOworICAgICAgICAgICAgICAg
IGF1dG8gbG9ja2VyID0gaG9sZExvY2sodHJhdmVyc2VPcGVyYXRpb24uYWN0aXZlTXV0ZXgpOwog
ICAgICAgICAgICAgICAgIC0tdHJhdmVyc2VPcGVyYXRpb24uYWN0aXZlQ291bnQ7CiAgICAgICAg
ICAgICAgICAgdHJhdmVyc2VPcGVyYXRpb24uYWN0aXZlQ29uZGl0aW9uLm5vdGlmeU9uZSgpOwog
ICAgICAgICAgICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9D
b25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uY3Bw
CmluZGV4IDNmZjQxOGFjNjFkNzlkNjkzMzY3OGY3NmZmOTA2ZWI2MzFmMGYxMDQuLmQwYjY0MGQy
MGJkM2MyMDEwZjFiZGY0MjQ1OGYzNDg0NDc2YzFlNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZv
cm0vSVBDL0Nvbm5lY3Rpb24uY3BwCkBAIC0xNDksNyArMTQ5LDcgQEAgYm9vbCBDb25uZWN0aW9u
OjpTeW5jTWVzc2FnZVN0YXRlOjpwcm9jZXNzSW5jb21pbmdNZXNzYWdlKENvbm5lY3Rpb24mIGNv
bm5lY3Rpb24KIAogICAgIGJvb2wgc2hvdWxkRGlzcGF0Y2g7CiAgICAgewotICAgICAgICBzdGQ6
OmxvY2tfZ3VhcmQ8TG9jaz4gbG9jayhtX211dGV4KTsKKyAgICAgICAgYXV0byBsb2NrZXIgPSBo
b2xkTG9jayhtX211dGV4KTsKICAgICAgICAgc2hvdWxkRGlzcGF0Y2ggPSBtX2RpZFNjaGVkdWxl
RGlzcGF0Y2hNZXNzYWdlc1dvcmtTZXQuYWRkKCZjb25uZWN0aW9uKS5pc05ld0VudHJ5OwogICAg
ICAgICBtX21lc3NhZ2VzVG9EaXNwYXRjaFdoaWxlV2FpdGluZ0ZvclN5bmNSZXBseS5hcHBlbmQo
Q29ubmVjdGlvbkFuZEluY29taW5nTWVzc2FnZSB7IGNvbm5lY3Rpb24sIFdURk1vdmUobWVzc2Fn
ZSkgfSk7CiAgICAgfQpAQCAtMTcxLDcgKzE3MSw3IEBAIHZvaWQgQ29ubmVjdGlvbjo6U3luY01l
c3NhZ2VTdGF0ZTo6ZGlzcGF0Y2hNZXNzYWdlcygpCiAKICAgICBWZWN0b3I8Q29ubmVjdGlvbkFu
ZEluY29taW5nTWVzc2FnZT4gbWVzc2FnZXNUb0Rpc3BhdGNoV2hpbGVXYWl0aW5nRm9yU3luY1Jl
cGx5OwogICAgIHsKLSAgICAgICAgc3RkOjpsb2NrX2d1YXJkPExvY2s+IGxvY2sobV9tdXRleCk7
CisgICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9tdXRleCk7CiAgICAgICAgIG1fbWVz
c2FnZXNUb0Rpc3BhdGNoV2hpbGVXYWl0aW5nRm9yU3luY1JlcGx5LnN3YXAobWVzc2FnZXNUb0Rp
c3BhdGNoV2hpbGVXYWl0aW5nRm9yU3luY1JlcGx5KTsKICAgICB9CiAKQEAgLTE4NSw3ICsxODUs
NyBAQCB2b2lkIENvbm5lY3Rpb246OlN5bmNNZXNzYWdlU3RhdGU6OmRpc3BhdGNoTWVzc2FnZXNB
bmRSZXNldERpZFNjaGVkdWxlRGlzcGF0Y2hNZQogCiAgICAgVmVjdG9yPENvbm5lY3Rpb25BbmRJ
bmNvbWluZ01lc3NhZ2U+IG1lc3NhZ2VzVG9EaXNwYXRjaFdoaWxlV2FpdGluZ0ZvclN5bmNSZXBs
eTsKICAgICB7Ci0gICAgICAgIHN0ZDo6bG9ja19ndWFyZDxMb2NrPiBsb2NrKG1fbXV0ZXgpOwor
ICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fbXV0ZXgpOwogICAgICAgICBBU1NFUlQo
bV9kaWRTY2hlZHVsZURpc3BhdGNoTWVzc2FnZXNXb3JrU2V0LmNvbnRhaW5zKCZjb25uZWN0aW9u
KSk7CiAgICAgICAgIG1fZGlkU2NoZWR1bGVEaXNwYXRjaE1lc3NhZ2VzV29ya1NldC5yZW1vdmUo
JmNvbm5lY3Rpb24pOwogICAgICAgICBtX21lc3NhZ2VzVG9EaXNwYXRjaFdoaWxlV2FpdGluZ0Zv
clN5bmNSZXBseS5zd2FwKG1lc3NhZ2VzVG9EaXNwYXRjaFdoaWxlV2FpdGluZ0ZvclN5bmNSZXBs
eSk7CkBAIC0yMDAsNyArMjAwLDcgQEAgdm9pZCBDb25uZWN0aW9uOjpTeW5jTWVzc2FnZVN0YXRl
OjpkaXNwYXRjaE1lc3NhZ2VzQW5kUmVzZXREaWRTY2hlZHVsZURpc3BhdGNoTWUKICAgICB9CiAK
ICAgICBpZiAoIW1lc3NhZ2VzVG9QdXRCYWNrLmlzRW1wdHkoKSkgewotICAgICAgICBzdGQ6Omxv
Y2tfZ3VhcmQ8TG9jaz4gbG9jayhtX211dGV4KTsKKyAgICAgICAgYXV0byBsb2NrZXIgPSBob2xk
TG9jayhtX211dGV4KTsKICAgICAgICAgbWVzc2FnZXNUb1B1dEJhY2suYXBwZW5kVmVjdG9yKFdU
Rk1vdmUobV9tZXNzYWdlc1RvRGlzcGF0Y2hXaGlsZVdhaXRpbmdGb3JTeW5jUmVwbHkpKTsKICAg
ICAgICAgbV9tZXNzYWdlc1RvRGlzcGF0Y2hXaGlsZVdhaXRpbmdGb3JTeW5jUmVwbHkgPSBXVEZN
b3ZlKG1lc3NhZ2VzVG9QdXRCYWNrKTsKICAgICB9CkBAIC0zMTksNyArMzE5LDcgQEAgdm9pZCBD
b25uZWN0aW9uOjphZGRXb3JrUXVldWVNZXNzYWdlUmVjZWl2ZXIoU3RyaW5nUmVmZXJlbmNlIG1l
c3NhZ2VSZWNlaXZlck5hbWUKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogCi0g
ICAgc3RkOjpsb2NrX2d1YXJkPExvY2s+IGxvY2sobV93b3JrUXVldWVNZXNzYWdlUmVjZWl2ZXJz
TXV0ZXgpOworICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV93b3JrUXVldWVNZXNzYWdlUmVj
ZWl2ZXJzTXV0ZXgpOwogICAgIEFTU0VSVCghbV93b3JrUXVldWVNZXNzYWdlUmVjZWl2ZXJzLmNv
bnRhaW5zKG1lc3NhZ2VSZWNlaXZlck5hbWUpKTsKIAogICAgIG1fd29ya1F1ZXVlTWVzc2FnZVJl
Y2VpdmVycy5hZGQobWVzc2FnZVJlY2VpdmVyTmFtZSwgc3RkOjptYWtlX3BhaXIoJndvcmtRdWV1
ZSwgd29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyKSk7CkBAIC0zMjksNyArMzI5LDcgQEAgdm9pZCBD
b25uZWN0aW9uOjpyZW1vdmVXb3JrUXVldWVNZXNzYWdlUmVjZWl2ZXIoU3RyaW5nUmVmZXJlbmNl
IG1lc3NhZ2VSZWNlaXZlck4KIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogCi0g
ICAgc3RkOjpsb2NrX2d1YXJkPExvY2s+IGxvY2sobV93b3JrUXVldWVNZXNzYWdlUmVjZWl2ZXJz
TXV0ZXgpOworICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV93b3JrUXVldWVNZXNzYWdlUmVj
ZWl2ZXJzTXV0ZXgpOwogICAgIEFTU0VSVChtX3dvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlcnMuY29u
dGFpbnMobWVzc2FnZVJlY2VpdmVyTmFtZSkpOwogICAgIG1fd29ya1F1ZXVlTWVzc2FnZVJlY2Vp
dmVycy5yZW1vdmUobWVzc2FnZVJlY2VpdmVyTmFtZSk7CiB9CkBAIC0zNjUsNyArMzY1LDcgQEAg
dm9pZCBDb25uZWN0aW9uOjphZGRUaHJlYWRNZXNzYWdlUmVjZWl2ZXIoU3RyaW5nUmVmZXJlbmNl
IG1lc3NhZ2VSZWNlaXZlck5hbWUsIFQKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkp
OwogCi0gICAgc3RkOjpsb2NrX2d1YXJkPExvY2s+IGxvY2sobV90aHJlYWRNZXNzYWdlUmVjZWl2
ZXJzTG9jayk7CisgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX3RocmVhZE1lc3NhZ2VSZWNl
aXZlcnNMb2NrKTsKICAgICBBU1NFUlQoIW1fdGhyZWFkTWVzc2FnZVJlY2VpdmVycy5jb250YWlu
cyhtZXNzYWdlUmVjZWl2ZXJOYW1lKSk7CiAKICAgICBtX3RocmVhZE1lc3NhZ2VSZWNlaXZlcnMu
YWRkKG1lc3NhZ2VSZWNlaXZlck5hbWUsIHRocmVhZE1lc3NhZ2VSZWNlaXZlcik7CkBAIC0zNzUs
NyArMzc1LDcgQEAgdm9pZCBDb25uZWN0aW9uOjpyZW1vdmVUaHJlYWRNZXNzYWdlUmVjZWl2ZXIo
U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUKIHsKICAgICBBU1NFUlQoUnVuTG9v
cDo6aXNNYWluKCkpOwogCi0gICAgc3RkOjpsb2NrX2d1YXJkPExvY2s+IGxvY2sobV90aHJlYWRN
ZXNzYWdlUmVjZWl2ZXJzTG9jayk7CisgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX3RocmVh
ZE1lc3NhZ2VSZWNlaXZlcnNMb2NrKTsKICAgICBBU1NFUlQobV90aHJlYWRNZXNzYWdlUmVjZWl2
ZXJzLmNvbnRhaW5zKG1lc3NhZ2VSZWNlaXZlck5hbWUpKTsKIAogICAgIG1fdGhyZWFkTWVzc2Fn
ZVJlY2VpdmVycy5yZW1vdmUobWVzc2FnZVJlY2VpdmVyTmFtZSk7CkBAIC00NjksNyArNDY5LDcg
QEAgYm9vbCBDb25uZWN0aW9uOjpzZW5kTWVzc2FnZShzdGQ6OnVuaXF1ZV9wdHI8RW5jb2Rlcj4g
ZW5jb2RlciwgT3B0aW9uU2V0PFNlbmRPcHQKICAgICAgICAgZW5jb2Rlci0+c2V0U2hvdWxkRGlz
cGF0Y2hNZXNzYWdlV2hlbldhaXRpbmdGb3JTeW5jUmVwbHkoU2hvdWxkRGlzcGF0Y2hXaGVuV2Fp
dGluZ0ZvclN5bmNSZXBseTo6WWVzRHVyaW5nVW5ib3VuZGVkSVBDKTsKIAogICAgIHsKLSAgICAg
ICAgc3RkOjpsb2NrX2d1YXJkPExvY2s+IGxvY2sobV9vdXRnb2luZ01lc3NhZ2VzTXV0ZXgpOwor
ICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fb3V0Z29pbmdNZXNzYWdlc011dGV4KTsK
ICAgICAgICAgbV9vdXRnb2luZ01lc3NhZ2VzLmFwcGVuZChXVEZNb3ZlKGVuY29kZXIpKTsKICAg
ICB9CiAgICAgCkBAIC01MDEsNyArNTAxLDcgQEAgc3RkOjp1bmlxdWVfcHRyPERlY29kZXI+IENv
bm5lY3Rpb246OndhaXRGb3JNZXNzYWdlKFN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWkKIAog
ICAgIC8vIEZpcnN0LCBjaGVjayBpZiB0aGlzIG1lc3NhZ2UgaXMgYWxyZWFkeSBpbiB0aGUgaW5j
b21pbmcgbWVzc2FnZXMgcXVldWUuCiAgICAgewotICAgICAgICBzdGQ6OmxvY2tfZ3VhcmQ8TG9j
az4gbG9jayhtX2luY29taW5nTWVzc2FnZXNNdXRleCk7CisgICAgICAgIGF1dG8gbG9ja2VyID0g
aG9sZExvY2sobV9pbmNvbWluZ01lc3NhZ2VzTXV0ZXgpOwogCiAgICAgICAgIGZvciAoYXV0byBp
dCA9IG1faW5jb21pbmdNZXNzYWdlcy5iZWdpbigpLCBlbmQgPSBtX2luY29taW5nTWVzc2FnZXMu
ZW5kKCk7IGl0ICE9IGVuZDsgKytpdCkgewogICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPERl
Y29kZXI+JiBtZXNzYWdlID0gKml0OwpAQCAtNTIxLDcgKzUyMSw3IEBAIHN0ZDo6dW5pcXVlX3B0
cjxEZWNvZGVyPiBDb25uZWN0aW9uOjp3YWl0Rm9yTWVzc2FnZShTdHJpbmdSZWZlcmVuY2UgbWVz
c2FnZVJlY2VpCiAgICAgLy8gRG9uJ3QgZXZlbiBzdGFydCB3YWl0aW5nIGlmIHdlIGhhdmUgSW50
ZXJydXB0V2FpdGluZ0lmU3luY01lc3NhZ2VBcnJpdmVzIGFuZCB0aGVyZSdzIGEgc3luYyBtZXNz
YWdlIGFscmVhZHkgaW4gdGhlIHF1ZXVlLgogICAgIGlmIChoYXNJbmNvbWluZ1N5bmNocm9ub3Vz
TWVzc2FnZSAmJiB3YWl0Rm9yT3B0aW9ucy5jb250YWlucyhXYWl0Rm9yT3B0aW9uOjpJbnRlcnJ1
cHRXYWl0aW5nSWZTeW5jTWVzc2FnZUFycml2ZXMpKSB7CiAjaWYgQVNTRVJUX0VOQUJMRUQKLSAg
ICAgICAgc3RkOjpsb2NrX2d1YXJkPExvY2s+IGxvY2sobV93YWl0Rm9yTWVzc2FnZU11dGV4KTsK
KyAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX3dhaXRGb3JNZXNzYWdlTXV0ZXgpOwog
ICAgICAgICAvLyBXZSBkb24ndCBzdXBwb3J0IGhhdmluZyBtdWx0aXBsZSBjbGllbnRzIHdhaXRp
bmcgZm9yIG1lc3NhZ2VzLgogICAgICAgICBBU1NFUlQoIW1fd2FpdGluZ0Zvck1lc3NhZ2UpOwog
I2VuZGlmCkBAIC01MzEsNyArNTMxLDcgQEAgc3RkOjp1bmlxdWVfcHRyPERlY29kZXI+IENvbm5l
Y3Rpb246OndhaXRGb3JNZXNzYWdlKFN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWkKICAgICBX
YWl0Rm9yTWVzc2FnZVN0YXRlIHdhaXRpbmdGb3JNZXNzYWdlKG1lc3NhZ2VSZWNlaXZlck5hbWUs
IG1lc3NhZ2VOYW1lLCBkZXN0aW5hdGlvbklELCB3YWl0Rm9yT3B0aW9ucyk7CiAKICAgICB7Ci0g
ICAgICAgIHN0ZDo6bG9ja19ndWFyZDxMb2NrPiBsb2NrKG1fd2FpdEZvck1lc3NhZ2VNdXRleCk7
CisgICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV93YWl0Rm9yTWVzc2FnZU11dGV4KTsK
IAogICAgICAgICAvLyBXZSBkb24ndCBzdXBwb3J0IGhhdmluZyBtdWx0aXBsZSBjbGllbnRzIHdh
aXRpbmcgZm9yIG1lc3NhZ2VzLgogICAgICAgICBBU1NFUlQoIW1fd2FpdGluZ0Zvck1lc3NhZ2Up
OwpAQCAtNzQ2LDcgKzc0Niw3IEBAIHZvaWQgQ29ubmVjdGlvbjo6cHJvY2Vzc0luY29taW5nTWVz
c2FnZShzdGQ6OnVuaXF1ZV9wdHI8RGVjb2Rlcj4gbWVzc2FnZSkKICNlbmRpZgogCiAgICAgaWYg
KG1lc3NhZ2UtPmlzU3luY01lc3NhZ2UoKSkgewotICAgICAgICBzdGQ6OmxvY2tfZ3VhcmQ8TG9j
az4gbG9jayhtX2luY29taW5nU3luY01lc3NhZ2VDYWxsYmFja011dGV4KTsKKyAgICAgICAgYXV0
byBsb2NrZXIgPSBob2xkTG9jayhtX2luY29taW5nU3luY01lc3NhZ2VDYWxsYmFja011dGV4KTsK
IAogICAgICAgICBmb3IgKGF1dG8mIGNhbGxiYWNrIDogbV9pbmNvbWluZ1N5bmNNZXNzYWdlQ2Fs
bGJhY2tzLnZhbHVlcygpKQogICAgICAgICAgICAgbV9pbmNvbWluZ1N5bmNNZXNzYWdlQ2FsbGJh
Y2tRdWV1ZS0+ZGlzcGF0Y2goV1RGTW92ZShjYWxsYmFjaykpOwpAQCAtNzU2LDcgKzc1Niw3IEBA
IHZvaWQgQ29ubmVjdGlvbjo6cHJvY2Vzc0luY29taW5nTWVzc2FnZShzdGQ6OnVuaXF1ZV9wdHI8
RGVjb2Rlcj4gbWVzc2FnZSkKIAogICAgIC8vIENoZWNrIGlmIHdlJ3JlIHdhaXRpbmcgZm9yIHRo
aXMgbWVzc2FnZSwgb3IgaWYgd2UgbmVlZCB0byBpbnRlcnJ1cHQgd2FpdGluZyBkdWUgdG8gYW4g
aW5jb21pbmcgc3luYyBtZXNzYWdlLgogICAgIHsKLSAgICAgICAgc3RkOjpsb2NrX2d1YXJkPExv
Y2s+IGxvY2sobV93YWl0Rm9yTWVzc2FnZU11dGV4KTsKKyAgICAgICAgYXV0byBsb2NrZXIgPSBo
b2xkTG9jayhtX3dhaXRGb3JNZXNzYWdlTXV0ZXgpOwogCiAgICAgICAgIGlmIChtX3dhaXRpbmdG
b3JNZXNzYWdlICYmICFtX3dhaXRpbmdGb3JNZXNzYWdlLT5kZWNvZGVyKSB7CiAgICAgICAgICAg
ICBpZiAobV93YWl0aW5nRm9yTWVzc2FnZS0+bWVzc2FnZVJlY2VpdmVyTmFtZSA9PSBtZXNzYWdl
LT5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgJiYgbV93YWl0aW5nRm9yTWVzc2FnZS0+bWVzc2FnZU5h
bWUgPT0gbWVzc2FnZS0+bWVzc2FnZU5hbWUoKSAmJiBtX3dhaXRpbmdGb3JNZXNzYWdlLT5kZXN0
aW5hdGlvbklEID09IG1lc3NhZ2UtPmRlc3RpbmF0aW9uSUQoKSkgewpAQCAtNzg2LDcgKzc4Niw3
IEBAIHZvaWQgQ29ubmVjdGlvbjo6cHJvY2Vzc0luY29taW5nTWVzc2FnZShzdGQ6OnVuaXF1ZV9w
dHI8RGVjb2Rlcj4gbWVzc2FnZSkKIAogdWludDY0X3QgQ29ubmVjdGlvbjo6aW5zdGFsbEluY29t
aW5nU3luY01lc3NhZ2VDYWxsYmFjayhXVEY6OkZ1bmN0aW9uPHZvaWQgKCk+JiYgY2FsbGJhY2sp
CiB7Ci0gICAgc3RkOjpsb2NrX2d1YXJkPExvY2s+IGxvY2sobV9pbmNvbWluZ1N5bmNNZXNzYWdl
Q2FsbGJhY2tNdXRleCk7CisgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX2luY29taW5nU3lu
Y01lc3NhZ2VDYWxsYmFja011dGV4KTsKIAogICAgIG1fbmV4dEluY29taW5nU3luY01lc3NhZ2VD
YWxsYmFja0lEKys7CiAKQEAgLTgwMCwxMyArODAwLDEzIEBAIHVpbnQ2NF90IENvbm5lY3Rpb246
Omluc3RhbGxJbmNvbWluZ1N5bmNNZXNzYWdlQ2FsbGJhY2soV1RGOjpGdW5jdGlvbjx2b2lkICgp
PiYmCiAKIHZvaWQgQ29ubmVjdGlvbjo6dW5pbnN0YWxsSW5jb21pbmdTeW5jTWVzc2FnZUNhbGxi
YWNrKHVpbnQ2NF90IGNhbGxiYWNrSUQpCiB7Ci0gICAgc3RkOjpsb2NrX2d1YXJkPExvY2s+IGxv
Y2sobV9pbmNvbWluZ1N5bmNNZXNzYWdlQ2FsbGJhY2tNdXRleCk7CisgICAgYXV0byBsb2NrZXIg
PSBob2xkTG9jayhtX2luY29taW5nU3luY01lc3NhZ2VDYWxsYmFja011dGV4KTsKICAgICBtX2lu
Y29taW5nU3luY01lc3NhZ2VDYWxsYmFja3MucmVtb3ZlKGNhbGxiYWNrSUQpOwogfQogCiBib29s
IENvbm5lY3Rpb246Omhhc0luY29taW5nU3luY01lc3NhZ2UoKQogewotICAgIHN0ZDo6bG9ja19n
dWFyZDxMb2NrPiBsb2NrKG1faW5jb21pbmdNZXNzYWdlc011dGV4KTsKKyAgICBhdXRvIGxvY2tl
ciA9IGhvbGRMb2NrKG1faW5jb21pbmdNZXNzYWdlc011dGV4KTsKIAogICAgIGZvciAoYXV0byYg
bWVzc2FnZSA6IG1faW5jb21pbmdNZXNzYWdlcykgewogICAgICAgICBpZiAobWVzc2FnZS0+aXNT
eW5jTWVzc2FnZSgpKQpAQCAtODQ3LDcgKzg0Nyw3IEBAIHZvaWQgQ29ubmVjdGlvbjo6Y29ubmVj
dGlvbkRpZENsb3NlKCkKICAgICB9CiAKICAgICB7Ci0gICAgICAgIHN0ZDo6bG9ja19ndWFyZDxM
b2NrPiBsb2NrKG1fd2FpdEZvck1lc3NhZ2VNdXRleCk7CisgICAgICAgIGF1dG8gbG9ja2VyID0g
aG9sZExvY2sobV93YWl0Rm9yTWVzc2FnZU11dGV4KTsKIAogICAgICAgICBBU1NFUlQobV9zaG91
bGRXYWl0Rm9yTWVzc2FnZXMpOwogICAgICAgICBtX3Nob3VsZFdhaXRGb3JNZXNzYWdlcyA9IGZh
bHNlOwpAQCAtODkwLDcgKzg5MCw3IEBAIHZvaWQgQ29ubmVjdGlvbjo6c2VuZE91dGdvaW5nTWVz
c2FnZXMoKQogICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8RW5jb2Rlcj4gbWVzc2FnZTsKIAogICAg
ICAgICB7Ci0gICAgICAgICAgICBzdGQ6OmxvY2tfZ3VhcmQ8TG9jaz4gbG9jayhtX291dGdvaW5n
TWVzc2FnZXNNdXRleCk7CisgICAgICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fb3V0
Z29pbmdNZXNzYWdlc011dGV4KTsKICAgICAgICAgICAgIGlmIChtX291dGdvaW5nTWVzc2FnZXMu
aXNFbXB0eSgpKQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgbWVzc2FnZSA9
IG1fb3V0Z29pbmdNZXNzYWdlcy50YWtlRmlyc3QoKTsKQEAgLTk1Nyw3ICs5NTcsNyBAQCB2b2lk
IENvbm5lY3Rpb246OmRpZEZhaWxUb1NlbmRTeW5jTWVzc2FnZSgpCiB2b2lkIENvbm5lY3Rpb246
OmVucXVldWVJbmNvbWluZ01lc3NhZ2Uoc3RkOjp1bmlxdWVfcHRyPERlY29kZXI+IGluY29taW5n
TWVzc2FnZSkKIHsKICAgICB7Ci0gICAgICAgIHN0ZDo6bG9ja19ndWFyZDxMb2NrPiBsb2NrKG1f
aW5jb21pbmdNZXNzYWdlc011dGV4KTsKKyAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayht
X2luY29taW5nTWVzc2FnZXNNdXRleCk7CiAKICNpZiBQTEFURk9STShDT0NPQSkKICAgICAgICAg
aWYgKG1fd2FzS2lsbGVkKQpAQCAtMTAxMCw3ICsxMDEwLDcgQEAgdm9pZCBDb25uZWN0aW9uOjpk
aXNwYXRjaE1lc3NhZ2UoRGVjb2RlciYgZGVjb2RlcikKIAogYm9vbCBDb25uZWN0aW9uOjpkaXNw
YXRjaE1lc3NhZ2VUb1dvcmtRdWV1ZVJlY2VpdmVyKHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPiYg
bWVzc2FnZSkKIHsKLSAgICBzdGQ6OmxvY2tfZ3VhcmQ8TG9jaz4gbG9jayhtX3dvcmtRdWV1ZU1l
c3NhZ2VSZWNlaXZlcnNNdXRleCk7CisgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX3dvcmtR
dWV1ZU1lc3NhZ2VSZWNlaXZlcnNNdXRleCk7CiAgICAgYXV0byBpdCA9IG1fd29ya1F1ZXVlTWVz
c2FnZVJlY2VpdmVycy5maW5kKG1lc3NhZ2UtPm1lc3NhZ2VSZWNlaXZlck5hbWUoKSk7CiAgICAg
aWYgKGl0ICE9IG1fd29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVycy5lbmQoKSkgewogICAgICAgICBp
dC0+dmFsdWUuZmlyc3QtPmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyks
IHdvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlciA9IGl0LT52YWx1ZS5zZWNvbmQsIGRlY29kZXIgPSBX
VEZNb3ZlKG1lc3NhZ2UpXSgpIG11dGFibGUgewpAQCAtMTAyNSw3ICsxMDI1LDcgQEAgYm9vbCBD
b25uZWN0aW9uOjpkaXNwYXRjaE1lc3NhZ2VUb1RocmVhZFJlY2VpdmVyKHN0ZDo6dW5pcXVlX3B0
cjxEZWNvZGVyPiYgbWVzc2EKIHsKICAgICBSZWZQdHI8VGhyZWFkTWVzc2FnZVJlY2VpdmVyPiBw
cm90ZWN0ZWRUaHJlYWRNZXNzYWdlUmVjZWl2ZXI7CiAgICAgewotICAgICAgICBzdGQ6OmxvY2tf
Z3VhcmQ8TG9jaz4gbG9jayhtX3RocmVhZE1lc3NhZ2VSZWNlaXZlcnNMb2NrKTsKKyAgICAgICAg
YXV0byBsb2NrZXIgPSBob2xkTG9jayhtX3RocmVhZE1lc3NhZ2VSZWNlaXZlcnNMb2NrKTsKICAg
ICAgICAgcHJvdGVjdGVkVGhyZWFkTWVzc2FnZVJlY2VpdmVyID0gbV90aHJlYWRNZXNzYWdlUmVj
ZWl2ZXJzLmdldChtZXNzYWdlLT5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkpOwogICAgIH0KIApAQCAt
MTEzNiw3ICsxMTM2LDcgQEAgdm9pZCBDb25uZWN0aW9uOjpkaXNwYXRjaE9uZUluY29taW5nTWVz
c2FnZSgpCiB7CiAgICAgc3RkOjp1bmlxdWVfcHRyPERlY29kZXI+IG1lc3NhZ2U7CiAgICAgewot
ICAgICAgICBzdGQ6OmxvY2tfZ3VhcmQ8TG9jaz4gbG9jayhtX2luY29taW5nTWVzc2FnZXNNdXRl
eCk7CisgICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9pbmNvbWluZ01lc3NhZ2VzTXV0
ZXgpOwogICAgICAgICBpZiAobV9pbmNvbWluZ01lc3NhZ2VzLmlzRW1wdHkoKSkKICAgICAgICAg
ICAgIHJldHVybjsKIApAQCAtMTE1NCw3ICsxMTU0LDcgQEAgdm9pZCBDb25uZWN0aW9uOjpkaXNw
YXRjaEluY29taW5nTWVzc2FnZXMoKQogCiAgICAgc2l6ZV90IG1lc3NhZ2VzVG9Qcm9jZXNzID0g
MDsKICAgICB7Ci0gICAgICAgIHN0ZDo6bG9ja19ndWFyZDxMb2NrPiBsb2NrKG1faW5jb21pbmdN
ZXNzYWdlc011dGV4KTsKKyAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX2luY29taW5n
TWVzc2FnZXNNdXRleCk7CiAgICAgICAgIGlmIChtX2luY29taW5nTWVzc2FnZXMuaXNFbXB0eSgp
KQogICAgICAgICAgICAgcmV0dXJuOwogCkBAIC0xMTgyLDcgKzExODIsNyBAQCB2b2lkIENvbm5l
Y3Rpb246OmRpc3BhdGNoSW5jb21pbmdNZXNzYWdlcygpCiAKICAgICBmb3IgKHNpemVfdCBpID0g
MTsgaSA8IG1lc3NhZ2VzVG9Qcm9jZXNzOyArK2kpIHsKICAgICAgICAgewotICAgICAgICAgICAg
c3RkOjpsb2NrX2d1YXJkPExvY2s+IGxvY2sobV9pbmNvbWluZ01lc3NhZ2VzTXV0ZXgpOworICAg
ICAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX2luY29taW5nTWVzc2FnZXNNdXRleCk7
CiAgICAgICAgICAgICBpZiAobV9pbmNvbWluZ01lc3NhZ2VzLmlzRW1wdHkoKSkKICAgICAgICAg
ICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Jsb2Nr
aW5nUmVzcG9uc2VNYXAuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Jsb2NraW5nUmVzcG9uc2VN
YXAuaAppbmRleCA3MjhjODQ3N2JmOTQ4NDc5NzRlMzlmZTIxZDk5OWVlZTk2MzkwNzRjLi41MmY3
OGZjMzYyMTY0NzRhOWY1ZDZkMzhhN2ZiODcxZjc0MTUyOTY2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9CbG9ja2luZ1Jlc3BvbnNlTWFwLmgKKysrIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvQmxvY2tpbmdSZXNwb25zZU1hcC5oCkBAIC01Nyw3ICs1Nyw3IEBAIFdURl9NQUtFX05P
TkNPUFlBQkxFKEJsb2NraW5nUmVzcG9uc2VNYXApOwogCiAgICAgdm9pZCBkaWRSZWNlaXZlUmVz
cG9uc2UodWludDY0X3QgcmVxdWVzdElELCBzdGQ6OnVuaXF1ZV9wdHI8VD4gcmVzcG9uc2UpCiAg
ICAgewotICAgICAgICBzdGQ6OmxvY2tfZ3VhcmQ8TG9jaz4gbG9jayhtX211dGV4KTsKKyAgICAg
ICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX211dGV4KTsKICAgICAgICAgQVNTRVJUKCFtX3Jl
c3BvbnNlcy5jb250YWlucyhyZXF1ZXN0SUQpKTsKIAogICAgICAgICBtX3Jlc3BvbnNlcy5zZXQo
cmVxdWVzdElELCBXVEZNb3ZlKHJlc3BvbnNlKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9tYWMvV0tQcmludGluZ1ZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9tYWMvV0tQcmludGluZ1ZpZXcubW0KaW5kZXggZTM0MzZmMzFkNTBmMDkwYzJiM2I4YjcwOGNj
ODkyNmZkZDNjZWYxZC4uMDFlNDMyMTYwZGYyOWMxM2IyNGUzMGFkYWZlMWQzZmY1YTQ5MWM2MSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dLUHJpbnRpbmdWaWV3Lm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XS1ByaW50aW5nVmlldy5tbQpAQCAt
MjUwLDcgKzI1MCw3IEBAIC0gKHZvaWQpX3ByZXBhcmVQREZEYXRhRm9yUHJpbnRpbmdPblNlY29u
ZGFyeVRocmVhZAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgc3RkOjpsb2NrX2d1YXJk
PExvY2s+IGxvY2soX3ByaW50aW5nQ2FsbGJhY2tNdXRleCk7CisgICAgYXV0byBsb2NrZXIgPSBo
b2xkTG9jayhfcHJpbnRpbmdDYWxsYmFja011dGV4KTsKIAogICAgIEFTU0VSVChbc2VsZiBfaGFz
UGFnZVJlY3RzXSk7CiAgICAgQVNTRVJUKF9wcmludGVkUGFnZXNEYXRhLmlzRW1wdHkoKSk7CkBA
IC0zNjYsNyArMzY2LDcgQEAgc3RhdGljIHZvaWQgcHJlcGFyZURhdGFGb3JQcmludGluZ09uU2Vj
b25kYXJ5VGhyZWFkKFdLUHJpbnRpbmdWaWV3ICp2aWV3KQogewogICAgIEFTU0VSVChSdW5Mb29w
Ojppc01haW4oKSk7CiAKLSAgICBzdGQ6OmxvY2tfZ3VhcmQ8TG9jaz4gbG9jayh2aWV3LT5fcHJp
bnRpbmdDYWxsYmFja011dGV4KTsKKyAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKHZpZXctPl9w
cmludGluZ0NhbGxiYWNrTXV0ZXgpOwogCiAgICAgLy8gV2UgbWF5IGhhdmUgcmVjZWl2ZWQgcGFn
ZSByZWN0cyB3aGlsZSBhIG1lc3NhZ2UgdG8gY2FsbCB0aGlzIGZ1bmN0aW9uIHRyYXZlbGVkIGZy
b20gc2Vjb25kYXJ5IHRocmVhZCB0byBtYWluIG9uZS4KICAgICBpZiAoW3ZpZXcgX2hhc1BhZ2VS
ZWN0c10pIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01JbnRl
cm5hbC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01JbnRlcm5hbC5tbQppbmRl
eCAwMWY1ZTkxYjVjNWM0ZWM0ZThjNDkyYmUyMjg1ZGI3OGIzZGM5NWQ2Li4zYTcwNmM0YThkNDlj
MWZjNDdmODg5NGZhYzViNDI1ZmM3NzQ4ZjU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9ET00vRE9NSW50ZXJuYWwubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
RE9NL0RPTUludGVybmFsLm1tCkBAIC01Niw3ICs1Niw3IEBAIHN0YXRpYyBIYXNoTWFwPERPTU9i
amVjdEludGVybmFsKiwgTlNPYmplY3QgKj4mIHdyYXBwZXJDYWNoZSgpCiBOU09iamVjdCogZ2V0
RE9NV3JhcHBlcihET01PYmplY3RJbnRlcm5hbCogaW1wbCkKIHsKICNpZmRlZiBORUVEU19XUkFQ
UEVSX0NBQ0hFX0xPQ0sKLSAgICBzdGQ6OmxvY2tfZ3VhcmQ8TG9jaz4gbG9jayh3cmFwcGVyQ2Fj
aGVMb2NrKTsKKyAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKHdyYXBwZXJDYWNoZUxvY2spOwog
I2VuZGlmCiAgICAgcmV0dXJuIHdyYXBwZXJDYWNoZSgpLmdldChpbXBsKTsKIH0KQEAgLTY0LDcg
KzY0LDcgQEAgTlNPYmplY3QqIGdldERPTVdyYXBwZXIoRE9NT2JqZWN0SW50ZXJuYWwqIGltcGwp
CiB2b2lkIGFkZERPTVdyYXBwZXIoTlNPYmplY3QqIHdyYXBwZXIsIERPTU9iamVjdEludGVybmFs
KiBpbXBsKQogewogI2lmZGVmIE5FRURTX1dSQVBQRVJfQ0FDSEVfTE9DSwotICAgIHN0ZDo6bG9j
a19ndWFyZDxMb2NrPiBsb2NrKHdyYXBwZXJDYWNoZUxvY2spOworICAgIGF1dG8gbG9ja2VyID0g
aG9sZExvY2sod3JhcHBlckNhY2hlTG9jayk7CiAjZW5kaWYKICAgICB3cmFwcGVyQ2FjaGUoKS5z
ZXQoaW1wbCwgd3JhcHBlcik7CiB9CkBAIC03Miw3ICs3Miw3IEBAIHZvaWQgYWRkRE9NV3JhcHBl
cihOU09iamVjdCogd3JhcHBlciwgRE9NT2JqZWN0SW50ZXJuYWwqIGltcGwpCiB2b2lkIHJlbW92
ZURPTVdyYXBwZXIoRE9NT2JqZWN0SW50ZXJuYWwqIGltcGwpCiB7CiAjaWZkZWYgTkVFRFNfV1JB
UFBFUl9DQUNIRV9MT0NLCi0gICAgc3RkOjpsb2NrX2d1YXJkPExvY2s+IGxvY2sod3JhcHBlckNh
Y2hlTG9jayk7CisgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayh3cmFwcGVyQ2FjaGVMb2NrKTsK
ICNlbmRpZgogICAgIHdyYXBwZXJDYWNoZSgpLnJlbW92ZShpbXBsKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvTXV0ZXguaCBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2Mv
TXV0ZXguaAppbmRleCAyNDBjODVlZmZlYTAwNzcxMzRhMDliNTk3M2UzMzIxYjliOWM3ODA1Li5m
NGNjMmFhNDExYzkyODMyMjEyOTFjYTg1ODAyMGQzMDE4YWEyM2FkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvYm1hbGxvYy9ibWFsbG9jL011dGV4LmgKKysrIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9N
dXRleC5oCkBAIC0zOCw3ICszOCw3IEBAIG5hbWVzcGFjZSBibWFsbG9jIHsKIGNsYXNzIE11dGV4
OwogCiB1c2luZyBVbmlxdWVMb2NrSG9sZGVyID0gc3RkOjp1bmlxdWVfbG9jazxNdXRleD47Ci11
c2luZyBMb2NrSG9sZGVyID0gc3RkOjpsb2NrX2d1YXJkPE11dGV4PjsKK3VzaW5nIExvY2tIb2xk
ZXIgPSBzdGQ6OnNjb3BlZF9sb2NrPE11dGV4PjsKIAogY2xhc3MgTXV0ZXggewogcHVibGljOgpk
aWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGYyOTFm
NGViNjBmMjc0YTRkY2U3M2JkMjcxNDI5ZDhhMWVhMDgxOWIuLjMxMjhmZDJiNzY1MTY1YWYyMTI1
YmJiOTQ1ZTMzMzA0YzJlYTljOTAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9U
b29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOSBAQAorMjAyMC0wMi0yOSAgWXVzdWtlIFN1enVr
aSAgPHlzdXp1a2lAYXBwbGUuY29tPgorCisgICAgICAgIFJlbW92ZSBzdGQ6OmxvY2tfZ3VhcmQK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNjQ1MQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBzdGQ6
OmxvY2tfZ3VhcmQgbGludCBydWxlIHRvIHByZXZlbnQgZnJvbSB1c2luZyBpdC4KKworICAgICAg
ICAqIFNjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvY3BwLnB5OgorICAgICAgICAoY2hl
Y2tfbG9ja19ndWFyZCk6CisgICAgICAgIChjaGVja19zdHlsZSk6CisgICAgICAgIChDcHBDaGVj
a2VyKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL2NwcF91bml0
dGVzdC5weToKKyAgICAgICAgKFdlYktpdFN0eWxlVGVzdC50ZXN0X2xvY2tfZ3VhcmQpOgorICAg
ICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0NvbmRpdGlvbi5jcHA6CisgICAgICAgICog
VGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvUGFya2luZ0xvdC5jcHA6CisgICAgICAgICogVGVzdFdl
YktpdEFQSS9UZXN0cy9XVEYvYm1hbGxvYy9Jc29IZWFwLmNwcDoKKyAgICAgICAgKGFzc2VydEhh
c09iamVjdHMpOgorICAgICAgICAoYXNzZXJ0SGFzT25seU9iamVjdHMpOgorICAgICAgICAqIFdl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuY3Bw
OgorICAgICAgICAoV1RSOjpBWFRocmVhZDo6ZGlzcGF0Y2gpOgorICAgICAgICAoV1RSOjpBWFRo
cmVhZDo6ZGlzcGF0Y2hGdW5jdGlvbnNGcm9tQVhUaHJlYWQpOgorICAgICAgICAqIFdlYktpdFRl
c3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvbWFjL0FjY2Vzc2liaWxpdHlDb250cm9sbGVyTWFjLm1t
OgorICAgICAgICAoV1RSOjpBWFRocmVhZDo6aW5pdGlhbGl6ZVJ1bkxvb3ApOgorCiAyMDIwLTAy
LTI4ICBGdWppaSBIaXJvbm9yaSAgPEhpcm9ub3JpLkZ1amlpQHNvbnkuY29tPgogCiAgICAgICAg
IFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIyNTc1NjUuCmRpZmYgLS1naXQgYS9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL2NwcC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cHkvc3R5bGUvY2hlY2tlcnMvY3BwLnB5CmluZGV4IGVjZWM2NWNkOTZkNTg2N2MxM2ZkZmJhZDA3
ZTNkZWI1MTY5YTliMDQuLjk2OTNlZDM2ZjhlNDM2Yzg3ZDRiZGJjYzk2OWVkZTYzMmQ0Y2Y2MjYg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvY3BwLnB5
CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvY3BwLnB5CkBAIC0y
NTA1LDYgKzI1MDUsMjYgQEAgZGVmIGNoZWNrX3d0Zl9tYWtlX3VuaXF1ZShjbGVhbl9saW5lcywg
bGluZV9udW1iZXIsIGZpbGVfc3RhdGUsIGVycm9yKToKICAgICAgICAgICAgICAgIlVzZSAnV1RG
OjptYWtlVW5pcXVlPHt0eXBlbmFtZX0+JyBpbnN0ZWFkIG9mICdzdGQ6Om1ha2VfdW5pcXVlPHt0
eXBlbmFtZX0+Jy4iLmZvcm1hdCh0eXBlbmFtZT10eXBlbmFtZSkpCiAKIAorZGVmIGNoZWNrX2xv
Y2tfZ3VhcmQoY2xlYW5fbGluZXMsIGxpbmVfbnVtYmVyLCBmaWxlX3N0YXRlLCBlcnJvcik6Cisg
ICAgIiIiTG9va3MgZm9yIHVzZSBvZiAnc3RkOjpsb2NrX2d1YXJkPD4nIHdoaWNoIHNob3VsZCBi
ZSByZXBsYWNlZCB3aXRoICdXVEY6OkxvY2tlcicuCisKKyAgICBBcmdzOgorICAgICAgY2xlYW5f
bGluZXM6IEEgQ2xlYW5zZWRMaW5lcyBpbnN0YW5jZSBjb250YWluaW5nIHRoZSBmaWxlLgorICAg
ICAgbGluZV9udW1iZXI6IFRoZSBudW1iZXIgb2YgdGhlIGxpbmUgdG8gY2hlY2suCisgICAgICBm
aWxlX3N0YXRlOiBBIF9GaWxlU3RhdGUgaW5zdGFuY2Ugd2hpY2ggbWFpbnRhaW5zIGluZm9ybWF0
aW9uIGFib3V0CisgICAgICAgICAgICAgICAgICB0aGUgc3RhdGUgb2YgdGhpbmdzIGluIHRoZSBm
aWxlLgorICAgICAgZXJyb3I6IFRoZSBmdW5jdGlvbiB0byBjYWxsIHdpdGggYW55IGVycm9ycyBm
b3VuZC4KKyAgICAiIiIKKworICAgIGxpbmUgPSBjbGVhbl9saW5lcy5lbGlkZWRbbGluZV9udW1i
ZXJdICAjIEdldCByaWQgb2YgY29tbWVudHMgYW5kIHN0cmluZ3MuCisKKyAgICB1c2luZ19zdGRf
bG9ja19ndWFyZF9zZWFyY2ggPSBzZWFyY2gocidcYnN0ZDo6bG9ja19ndWFyZFxzKjwoW14oXSsp
JywgbGluZSkKKyAgICBpZiBub3QgdXNpbmdfc3RkX2xvY2tfZ3VhcmRfc2VhcmNoOgorICAgICAg
ICByZXR1cm4KKworICAgIGVycm9yKGxpbmVfbnVtYmVyLCAncnVudGltZS9sb2NrX2d1YXJkJywg
NCwgIlVzZSAnYXV0byBsb2NrZXIgPSBob2xkTG9jayhtdXRleCknIGluc3RlYWQgb2YgJ3N0ZDo6
bG9ja19ndWFyZDw+Jy4iKQorCisKIGRlZiBjaGVja19jdHlwZV9mdW5jdGlvbnMoY2xlYW5fbGlu
ZXMsIGxpbmVfbnVtYmVyLCBmaWxlX3N0YXRlLCBlcnJvcik6CiAgICAgIiIiTG9va3MgZm9yIHVz
ZSBvZiB0aGUgc3RhbmRhcmQgZnVuY3Rpb25zIGluIGN0eXBlLmggYW5kIHN1Z2dlc3QgdGhleSBi
ZSByZXBsYWNlZAogICAgICAgIGJ5IHVzZSBvZiBlcXVpdmlsZW50IG9uZXMgaW4gPHd0Zi9BU0NJ
SUNUeXBlLmg+Py4KQEAgLTMwNjUsNiArMzA4NSw3IEBAIGRlZiBjaGVja19zdHlsZShjbGVhbl9s
aW5lcywgbGluZV9udW1iZXIsIGZpbGVfZXh0ZW5zaW9uLCBjbGFzc19zdGF0ZSwgZmlsZV9zdGF0
CiAgICAgY2hlY2tfd3RmX21vdmUoY2xlYW5fbGluZXMsIGxpbmVfbnVtYmVyLCBmaWxlX3N0YXRl
LCBlcnJvcikKICAgICBjaGVja193dGZfb3B0aW9uYWwoY2xlYW5fbGluZXMsIGxpbmVfbnVtYmVy
LCBmaWxlX3N0YXRlLCBlcnJvcikKICAgICBjaGVja193dGZfbWFrZV91bmlxdWUoY2xlYW5fbGlu
ZXMsIGxpbmVfbnVtYmVyLCBmaWxlX3N0YXRlLCBlcnJvcikKKyAgICBjaGVja19sb2NrX2d1YXJk
KGNsZWFuX2xpbmVzLCBsaW5lX251bWJlciwgZmlsZV9zdGF0ZSwgZXJyb3IpCiAgICAgY2hlY2tf
Y3R5cGVfZnVuY3Rpb25zKGNsZWFuX2xpbmVzLCBsaW5lX251bWJlciwgZmlsZV9zdGF0ZSwgZXJy
b3IpCiAgICAgY2hlY2tfc3dpdGNoX2luZGVudGF0aW9uKGNsZWFuX2xpbmVzLCBsaW5lX251bWJl
ciwgZXJyb3IpCiAgICAgY2hlY2tfYnJhY2VzKGNsZWFuX2xpbmVzLCBsaW5lX251bWJlciwgZmls
ZV9zdGF0ZSwgZXJyb3IpCkBAIC00MjI2LDYgKzQyNDcsNyBAQCBjbGFzcyBDcHBDaGVja2VyKG9i
amVjdCk6CiAgICAgICAgICdydW50aW1lL2ludCcsCiAgICAgICAgICdydW50aW1lL2ludmFsaWRf
aW5jcmVtZW50JywKICAgICAgICAgJ3J1bnRpbWUvbGVha3lfcGF0dGVybicsCisgICAgICAgICdy
dW50aW1lL2xvY2tfZ3VhcmQnLAogICAgICAgICAncnVudGltZS9tYXhfbWluX21hY3JvcycsCiAg
ICAgICAgICdydW50aW1lL21lbXNldCcsCiAgICAgICAgICdydW50aW1lL3ByaW50ZicsCmRpZmYg
LS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL2NwcF91bml0dGVz
dC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvY3BwX3VuaXR0ZXN0
LnB5CmluZGV4IGUwYmM0YTQyYTZkN2U5ZDc5MTRiMjQ4NmU5ZDBiMmEwMGYyNWY4YWQuLmVlYTI5
M2Q3YmMyNzljNmU0MGUwNTQwNTcyMmFmYjU1ZDcyMjIwYTQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvY3BwX3VuaXR0ZXN0LnB5CisrKyBiL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvY3BwX3VuaXR0ZXN0LnB5CkBAIC01Mzcz
LDYgKzUzNzMsMjQgQEAgZGVmIHRlc3Rfd3RmX29wdGlvbmFsKHNlbGYpOgogICAgICAgICAgICAg
IiAgW3J1bnRpbWUvd3RmX29wdGlvbmFsXSBbNF0iLAogICAgICAgICAgICAgJ2Zvby5jcHAnKQog
CisgICAgZGVmIHRlc3RfbG9ja19ndWFyZChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRfbGlu
dCgKKyAgICAgICAgICAgICdhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG11dGV4KTsnLAorICAgICAg
ICAgICAgJycsCisgICAgICAgICAgICAnZm9vLmNwcCcpCisKKyAgICAgICAgc2VsZi5hc3NlcnRf
bGludCgKKyAgICAgICAgICAgICdzdGQ6OmxvY2tfZ3VhcmQ8TG9jaz4gbG9ja2VyKG11dGV4KTsn
LAorICAgICAgICAgICAgIlVzZSAnYXV0byBsb2NrZXIgPSBob2xkTG9jayhtdXRleCknIGluc3Rl
YWQgb2YgJ3N0ZDo6bG9ja19ndWFyZDw+Jy4iCisgICAgICAgICAgICAiICBbcnVudGltZS9sb2Nr
X2d1YXJkXSBbNF0iLAorICAgICAgICAgICAgJ2Zvby5jcHAnKQorCisgICAgICAgIHNlbGYuYXNz
ZXJ0X2xpbnQoCisgICAgICAgICAgICAnc3RkOjpsb2NrX2d1YXJkPExvY2s+IGxvY2tlcihtdXRl
eCk7JywKKyAgICAgICAgICAgICJVc2UgJ2F1dG8gbG9ja2VyID0gaG9sZExvY2sobXV0ZXgpJyBp
bnN0ZWFkIG9mICdzdGQ6OmxvY2tfZ3VhcmQ8PicuIgorICAgICAgICAgICAgIiAgW3J1bnRpbWUv
bG9ja19ndWFyZF0gWzRdIiwKKyAgICAgICAgICAgICdmb28ubW0nKQorCiAgICAgZGVmIHRlc3Rf
Y3R5cGVfZnVjbnRpb24oc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoCiAgICAgICAg
ICAgICAnaW50IGkgPSBpc2FzY2lpKDgpOycsCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dURi9Db25kaXRpb24uY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
VEYvQ29uZGl0aW9uLmNwcAppbmRleCAyNmM4Zjk5ZjQyOWNkMDNkYjAwOGI3NTcwZTM4MTFkMjIx
ODg0YzBmLi4wZWMxMDVkNGUyNWFmOTJmYWYwMzg2NzhiZDUxZWQyZDE1NGVhNThiIDEwMDY0NAot
LS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9Db25kaXRpb24uY3BwCisrKyBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0NvbmRpdGlvbi5jcHAKQEAgLTExOCw3ICsxMTgs
NyBAQCB2b2lkIHJ1blRlc3QoCiAgICAgICAgICAgICAgICAgICAgIG5vdGlmeShub3RpZnlTdHls
ZSwgZnVsbENvbmRpdGlvbiwgc2hvdWxkTm90aWZ5KTsKIAogICAgICAgICAgICAgICAgICAgICB7
Ci0gICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OmxvY2tfZ3VhcmQ8TG9jaz4gbG9ja2VyKHJl
Y2VpdmVkTG9jayk7CisgICAgICAgICAgICAgICAgICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRM
b2NrKHJlY2VpdmVkTG9jayk7CiAgICAgICAgICAgICAgICAgICAgICAgICByZWNlaXZlZC5hcHBl
bmQocmVzdWx0KTsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KQEAg
LTE1NSw3ICsxNTUsNyBAQCB2b2lkIHJ1blRlc3QoCiAgICAgICAgIHRocmVhZC0+d2FpdEZvckNv
bXBsZXRpb24oKTsKIAogICAgIHsKLSAgICAgICAgc3RkOjpsb2NrX2d1YXJkPExvY2s+IGxvY2tl
cihsb2NrKTsKKyAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhsb2NrKTsKICAgICAgICAg
c2hvdWxkQ29udGludWUgPSBmYWxzZTsKICAgICB9CiAgICAgZW1wdHlDb25kaXRpb24ubm90aWZ5
QWxsKCk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9QYXJraW5n
TG90LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1BhcmtpbmdMb3QuY3BwCmlu
ZGV4IGUwMGEwOWIyYTE3YWE3MzQ4NTZlNDJjMTE0NWNiZTYwODYzZjBhMDUuLmZiODI3OTBmODhl
NzJjY2FkOTZkYmJkZmFlZGY2MDk5ZGJlOTczOWIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV1RGL1BhcmtpbmdMb3QuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV1RGL1BhcmtpbmdMb3QuY3BwCkBAIC01MSw3ICs1MSw3IEBAIHN0cnVjdCBTaW5nbGVM
YXRjaFRlc3QgewogICAgICAgICAgICAgICAgICAgICBbJl0gKCkgewogICAgICAgICAgICAgICAg
ICAgICAgICAgZG93bigpOwogCi0gICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OmxvY2tfZ3Vh
cmQ8c3RkOjptdXRleD4gbG9ja2VyKGxvY2spOworICAgICAgICAgICAgICAgICAgICAgICAgc3Rk
OjpzY29wZWRfbG9jazxzdGQ6Om11dGV4PiBsb2NrZXIobG9jayk7CiAgICAgICAgICAgICAgICAg
ICAgICAgICBhd2FrZS5hZGQoVGhyZWFkOjpjdXJyZW50KCkpOwogICAgICAgICAgICAgICAgICAg
ICAgICAgbGFzdEF3b2tlbiA9ICZUaHJlYWQ6OmN1cnJlbnQoKTsKICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbmRpdGlvbi5ub3RpZnlfb25lKCk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dURi9ibWFsbG9jL0lzb0hlYXAuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XVEYvYm1hbGxvYy9Jc29IZWFwLmNwcAppbmRleCAwOGI3MmFhNmYyMjhkNDE1Mzcw
YjFhNTk1NDVlZWU1YmJmMWVmZWVhLi5jYmVlNzcxNTMwYzZhOGY4NjdjNDE1NjdlZTk0MGVkMzI1
NzQ1MWQ1IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9ibWFsbG9j
L0lzb0hlYXAuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL2JtYWxsb2Mv
SXNvSGVhcC5jcHAKQEAgLTc4LDcgKzc4LDcgQEAgc3RhdGljIHZvaWQgYXNzZXJ0SGFzT2JqZWN0
cyhJc29IZWFwPGhlYXBUeXBlPiYgaGVhcCwgc3RkOjpzZXQ8dm9pZCo+IHBvaW50ZXJzKQogICAg
ICAgICByZXR1cm47CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBoZWFwLmltcGwoKTsKLSAgICBz
dGQ6OmxvY2tfZ3VhcmQ8Ym1hbGxvYzo6TXV0ZXg+IGxvY2tlcihpbXBsLmxvY2spOworICAgIHN0
ZDo6c2NvcGVkX2xvY2s8Ym1hbGxvYzo6TXV0ZXg+IGxvY2tlcihpbXBsLmxvY2spOwogICAgIGlt
cGwuZm9yRWFjaExpdmVPYmplY3QoCiAgICAgICAgIGxvY2tlciwKICAgICAgICAgWyZdICh2b2lk
KiBvYmplY3QpIHsKQEAgLTk1LDcgKzk1LDcgQEAgc3RhdGljIHZvaWQgYXNzZXJ0SGFzT25seU9i
amVjdHMoSXNvSGVhcDxoZWFwVHlwZT4mIGhlYXAsIHN0ZDo6c2V0PHZvaWQqPiBwb2ludGUKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gaGVhcC5pbXBsKCk7Ci0gICAg
c3RkOjpsb2NrX2d1YXJkPGJtYWxsb2M6Ok11dGV4PiBsb2NrZXIoaW1wbC5sb2NrKTsKKyAgICBz
dGQ6OnNjb3BlZF9sb2NrPGJtYWxsb2M6Ok11dGV4PiBsb2NrZXIoaW1wbC5sb2NrKTsKICAgICBp
bXBsLmZvckVhY2hMaXZlT2JqZWN0KAogICAgICAgICBsb2NrZXIsCiAgICAgICAgIFsmXSAodm9p
ZCogb2JqZWN0KSB7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL0FjY2Vzc2liaWxpdHlDb250cm9sbGVyLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuY3BwCmluZGV4IGM5NjY5
YzFmZGJiNTJkMjA2ZGM0MzA3MjNhYzg4M2RmZTkwMjRiZjAuLjEyNDIyMzhiYTYyMDYzYTkyYmZh
YTMxNTEwMWUwM2Y5ODBlZWMyMWMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuY3BwCisrKyBiL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuY3Bw
CkBAIC0xMzcsNyArMTM3LDcgQEAgdm9pZCBBWFRocmVhZDo6ZGlzcGF0Y2goRnVuY3Rpb248dm9p
ZCgpPiYmIGZ1bmN0aW9uKQogICAgIGF4VGhyZWFkLmNyZWF0ZVRocmVhZElmTmVlZGVkKCk7CiAK
ICAgICB7Ci0gICAgICAgIHN0ZDo6bG9ja19ndWFyZDxMb2NrPiBsb2NrKGF4VGhyZWFkLm1fZnVu
Y3Rpb25zTXV0ZXgpOworICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKGF4VGhyZWFkLm1f
ZnVuY3Rpb25zTXV0ZXgpOwogICAgICAgICBheFRocmVhZC5tX2Z1bmN0aW9ucy5hcHBlbmQoV1RG
TW92ZShmdW5jdGlvbikpOwogICAgIH0KIApAQCAtMTg1LDcgKzE4NSw3IEBAIHZvaWQgQVhUaHJl
YWQ6OmRpc3BhdGNoRnVuY3Rpb25zRnJvbUFYVGhyZWFkKCkKICAgICBWZWN0b3I8RnVuY3Rpb248
dm9pZCgpPj4gZnVuY3Rpb25zOwogCiAgICAgewotICAgICAgICBzdGQ6OmxvY2tfZ3VhcmQ8TG9j
az4gbG9jayhtX2Z1bmN0aW9uc011dGV4KTsKKyAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9j
ayhtX2Z1bmN0aW9uc011dGV4KTsKICAgICAgICAgZnVuY3Rpb25zID0gV1RGTW92ZShtX2Z1bmN0
aW9ucyk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL21hYy9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlck1hYy5tbSBiL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvbWFjL0FjY2Vzc2liaWxpdHlDb250cm9sbGVyTWFj
Lm1tCmluZGV4IGE5NGRlMzg2MGQ5Y2M0MWU2YmY4Y2YwZmUzN2Q3OWI1M2JjYmJlNjMuLmU4M2Fk
Njc1NzYxMDc0Y2IzMzg1MzY1ODBjNzIxZjhlNDljMjNiYTIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvbWFjL0FjY2Vzc2liaWxpdHlDb250cm9sbGVy
TWFjLm1tCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvbWFjL0Fj
Y2Vzc2liaWxpdHlDb250cm9sbGVyTWFjLm1tCkBAIC0xMjksNyArMTI5LDcgQEAgdm9pZCBBWFRo
cmVhZDo6aW5pdGlhbGl6ZVJ1bkxvb3AoKQogewogICAgIC8vIEluaXRpYWxpemUgdGhlIHJ1biBs
b29wLgogICAgIHsKLSAgICAgICAgc3RkOjpsb2NrX2d1YXJkPExvY2s+IGxvY2sobV9pbml0aWFs
aXplUnVuTG9vcE11dGV4KTsKKyAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX2luaXRp
YWxpemVSdW5Mb29wTXV0ZXgpOwogCiAgICAgICAgIG1fdGhyZWFkUnVuTG9vcCA9IENGUnVuTG9v
cEdldEN1cnJlbnQoKTsKIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>