<?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>83320</bug_id>
          
          <creation_ts>2012-04-05 15:03:22 -0700</creation_ts>
          <short_desc>Make WebCore use jsCast rather than static_cast for casting JSC objects</short_desc>
          <delta_ts>2012-04-09 06:35:24 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Oliver Hunt">oliver</reporter>
          <assigned_to name="Oliver Hunt">oliver</assigned_to>
          <cc>abarth</cc>
    
    <cc>code.vineet</cc>
    
    <cc>fischman</cc>
    
    <cc>haraken</cc>
    
    <cc>japhet</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>596944</commentid>
    <comment_count>0</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2012-04-05 15:03:22 -0700</bug_when>
    <thetext>Make WebCore use jsCast rather than static_cast for casting JSC objects</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>596948</commentid>
    <comment_count>1</comment_count>
      <attachid>135915</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2012-04-05 15:05:04 -0700</bug_when>
    <thetext>Created attachment 135915
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>596966</commentid>
    <comment_count>2</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2012-04-05 15:34:06 -0700</bug_when>
    <thetext>Committed r113387: &lt;http://trac.webkit.org/changeset/113387&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>598251</commentid>
    <comment_count>3</comment_count>
    <who name="Vineet Chaudhary (vineetc)">code.vineet</who>
    <bug_when>2012-04-09 06:22:45 -0700</bug_when>
    <thetext>Hi Oliver Hunt,
I think you forgot to update bindings results for the change :).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>598255</commentid>
    <comment_count>4</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-04-09 06:35:24 -0700</bug_when>
    <thetext>I rebaselined run-bindings-tests results.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>135915</attachid>
            <date>2012-04-05 15:05:04 -0700</date>
            <delta_ts>2012-04-05 15:24:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-83320-20120405150503.patch</filename>
            <type>text/plain</type>
            <size>104037</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEzMzY1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjUwNGMyNWM2NWZkNTc3
ZWQyZTA2Y2UwNWY4NDYwNDNlZDU0ZDMwZC4uZDcxZGNmNDM4YTFkYzM1ZjgwNjJkMmI2MGE1YjM3
MTA1OGVhOTBlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5NiBAQAorMjAxMi0wNC0wNSAgT2xp
dmVyIEh1bnQgIDxvbGl2ZXJAYXBwbGUuY29tPgorCisgICAgICAgIE1ha2UgV2ViQ29yZSB1c2Ug
anNDYXN0IHJhdGhlciB0aGFuIHN0YXRpY19jYXN0IGZvciBjYXN0aW5nIEpTQyBvYmplY3RzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MzMyMAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1lY2hhbmljYWxs
eSByZXBsYWNlIHN0YXRpY19jYXN0IHdpdGgganNDYXN0IHdoZXJlIGV2ZXIgd2UgY2FuLgorCisg
ICAgICAgICogV2ViQ29yZS5leHAuaW46CisgICAgICAgICogYmluZGluZ3MvanMvRE9NV3JhcHBl
cldvcmxkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTU3RyaW5nT3duZXI6OmZpbmFsaXplKToK
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9ET01XcmFwcGVyV29ybGQuaDoKKyAgICAgICAgKFdlYkNv
cmU6OmN1cnJlbnRXb3JsZCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNBcnJheUJ1ZmZlckN1
c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0FycmF5QnVmZmVyQ29uc3RydWN0b3I6OmNv
bnN0cnVjdEpTQXJyYXlCdWZmZXIpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQXVkaW9Db250
ZXh0Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTQXVkaW9Db250ZXh0Q29uc3RydWN0
b3I6OmNvbnN0cnVjdEpTQXVkaW9Db250ZXh0KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0NT
U1J1bGVMaXN0Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTQ1NTUnVsZUxpc3RPd25l
cjo6aXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pT
Q1NTU3R5bGVEZWNsYXJhdGlvbkN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjc3NQcm9w
ZXJ0eUdldHRlclBpeGVsT3JQb3NQcmVmaXhDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpj
c3NQcm9wZXJ0eUdldHRlckNhbGxiYWNrKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0NTU1Zh
bHVlQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTQ1NTVmFsdWVPd25lcjo6aXNSZWFj
aGFibGVGcm9tT3BhcXVlUm9vdHMpOgorICAgICAgICAoV2ViQ29yZTo6SlNDU1NWYWx1ZU93bmVy
OjpmaW5hbGl6ZSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OnJlcG9ydEV4Y2VwdGlvbik6CisgICAgICAgICogYmluZGluZ3MvanMv
SlNET01CaW5kaW5nLmg6CisgICAgICAgIChXZWJDb3JlOjpkZXByZWNhdGVkR2xvYmFsT2JqZWN0
Rm9yUHJvdG90eXBlKToKKyAgICAgICAgKFdlYkNvcmU6OmdldERPTVByb3RvdHlwZSk6CisgICAg
ICAgICogYmluZGluZ3MvanMvSlNET01Gb3JtRGF0YUN1c3RvbS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjp0b0hUTUxGb3JtRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTUZvcm1EYXRh
Q29uc3RydWN0b3I6OmNvbnN0cnVjdEpTRE9NRm9ybURhdGEpOgorICAgICAgICAqIGJpbmRpbmdz
L2pzL0pTRE9NTWltZVR5cGVBcnJheUN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0RP
TU1pbWVUeXBlQXJyYXk6Om5hbWVHZXR0ZXIpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9N
UGx1Z2luQXJyYXlDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNET01QbHVnaW5BcnJh
eTo6bmFtZUdldHRlcik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01QbHVnaW5DdXN0b20u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNET01QbHVnaW46Om5hbWVHZXR0ZXIpOgorICAgICAg
ICAqIGJpbmRpbmdzL2pzL0pTRE9NU3RyaW5nTWFwQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkpTRE9NU3RyaW5nTWFwOjpuYW1lR2V0dGVyKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9K
U0RPTVdpbmRvd0Jhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dG9KU0RPTVdpbmRvdyk6Cisg
ICAgICAgICogYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Y2hpbGRGcmFtZUdldHRlcik6CisgICAgICAgIChXZWJDb3JlOjppbmRleEdldHRlcik6
CisgICAgICAgIChXZWJDb3JlOjpuYW1lZEl0ZW1HZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6
dG9ET01XaW5kb3cpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmg6
CisgICAgICAgIChXZWJDb3JlOjphc0pTRE9NV2luZG93KToKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9KU0RPTVdpbmRvd1NoZWxsLmg6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvd1NoZWxs
Ojp3aW5kb3cpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV3JhcHBlci5oOgorICAgICAg
ICAoV2ViQ29yZTo6SlNET01XcmFwcGVyOjpnbG9iYWxPYmplY3QpOgorICAgICAgICAqIGJpbmRp
bmdzL2pzL0pTRGF0YVZpZXdDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNEYXRhVmll
d0NvbnN0cnVjdG9yOjpjb25zdHJ1Y3RKU0RhdGFWaWV3KToKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9KU0V2ZW50TGlzdGVuZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNFdmVudExpc3RlbmVy
OjpoYW5kbGVFdmVudCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNFdmVudFRhcmdldC5jcHA6
CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OnRvRXZlbnRUYXJnZXQpOgor
ICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRmxvYXQzMkFycmF5Q3VzdG9tLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkpTRmxvYXQzMkFycmF5Q29uc3RydWN0b3I6OmNvbnN0cnVjdEpTRmxvYXQzMkFy
cmF5KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0Zsb2F0NjRBcnJheUN1c3RvbS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpKU0Zsb2F0NjRBcnJheUNvbnN0cnVjdG9yOjpjb25zdHJ1Y3RKU0Zs
b2F0NjRBcnJheSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNHZW9sb2NhdGlvbkN1c3RvbS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpKU0dlb2xvY2F0aW9uOjpnZXRDdXJyZW50UG9zaXRpb24p
OgorICAgICAgICAoV2ViQ29yZTo6SlNHZW9sb2NhdGlvbjo6d2F0Y2hQb3NpdGlvbik6CisgICAg
ICAgICogYmluZGluZ3MvanMvSlNIVE1MQWxsQ29sbGVjdGlvbkN1c3RvbS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpjYWxsSFRNTEFsbENvbGxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6SlNI
VE1MQWxsQ29sbGVjdGlvbjo6bmFtZUdldHRlcik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNI
VE1MQ29sbGVjdGlvbkN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0hUTUxDb2xsZWN0
aW9uOjpuYW1lR2V0dGVyKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0hUTUxEb2N1bWVudEN1
c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0hUTUxEb2N1bWVudDo6bmFtZUdldHRlcik6
CisgICAgICAgICogYmluZGluZ3MvanMvSlNIVE1MRm9ybUVsZW1lbnRDdXN0b20uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SlNIVE1MRm9ybUVsZW1lbnQ6Om5hbWVHZXR0ZXIpOgorICAgICAgICAq
IGJpbmRpbmdzL2pzL0pTSFRNTEZyYW1lU2V0RWxlbWVudEN1c3RvbS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpKU0hUTUxGcmFtZVNldEVsZW1lbnQ6Om5hbWVHZXR0ZXIpOgorICAgICAgICAqIGJp
bmRpbmdzL2pzL0pTSFRNTE9wdGlvbnNDb2xsZWN0aW9uQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkpTSFRNTE9wdGlvbnNDb2xsZWN0aW9uOjpyZW1vdmUpOgorICAgICAgICAqIGJpbmRp
bmdzL2pzL0pTSW1hZ2VDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb25zdHJ1
Y3RJbWFnZSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNJbmplY3RlZFNjcmlwdE1hbmFnZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOjpjcmVhdGVJbmpl
Y3RlZFNjcmlwdCk6CisgICAgICAgIChXZWJDb3JlOjpJbmplY3RlZFNjcmlwdE1hbmFnZXI6OmRp
c2NhcmRJbmplY3RlZFNjcmlwdCk6CisgICAgICAgIChXZWJDb3JlOjpJbmplY3RlZFNjcmlwdE1h
bmFnZXI6OmluamVjdGVkU2NyaXB0Rm9yKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0ludDE2
QXJyYXlDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNJbnQxNkFycmF5Q29uc3RydWN0
b3I6OmNvbnN0cnVjdEpTSW50MTZBcnJheSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNJbnQz
MkFycmF5Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTSW50MzJBcnJheUNvbnN0cnVj
dG9yOjpjb25zdHJ1Y3RKU0ludDMyQXJyYXkpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTSW50
OEFycmF5Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTSW50OEFycmF5Q29uc3RydWN0
b3I6OmNvbnN0cnVjdEpTSW50OEFycmF5KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0xhenlF
dmVudExpc3RlbmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTTGF6eUV2ZW50TGlzdGVuZXI6
OmluaXRpYWxpemVKU0Z1bmN0aW9uKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU05hbWVkTm9k
ZU1hcEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU05hbWVkTm9kZU1hcDo6bmFtZUdl
dHRlcik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNOb2RlQ3VzdG9tLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkpTTm9kZU93bmVyOjppc1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyk6CisgICAg
ICAgIChXZWJDb3JlOjpKU05vZGVPd25lcjo6ZmluYWxpemUpOgorICAgICAgICAqIGJpbmRpbmdz
L2pzL0pTTm9kZUN1c3RvbS5oOgorICAgICAgICAoV2ViQ29yZTo6dG9KUyk6CisgICAgICAgICog
YmluZGluZ3MvanMvSlNOb2RlRmlsdGVyQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRv
Tm9kZUZpbHRlcik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNOb2RlTGlzdEN1c3RvbS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpKU05vZGVMaXN0T3duZXI6OmlzUmVhY2hhYmxlRnJvbU9wYXF1
ZVJvb3RzKToKKyAgICAgICAgKFdlYkNvcmU6OkpTTm9kZUxpc3Q6Om5hbWVHZXR0ZXIpOgorICAg
ICAgICAqIGJpbmRpbmdzL2pzL0pTUGx1Z2luRWxlbWVudEZ1bmN0aW9ucy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpydW50aW1lT2JqZWN0UHJvcGVydHlHZXR0ZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6Y2FsbFBsdWdpbik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNQb3BTdGF0ZUV2ZW50Q3Vz
dG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTUG9wU3RhdGVFdmVudDo6c3RhdGUpOgorICAg
ICAgICAqIGJpbmRpbmdzL2pzL0pTU1FMVHJhbnNhY3Rpb25DdXN0b20uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SlNTUUxUcmFuc2FjdGlvbjo6ZXhlY3V0ZVNxbCk6CisgICAgICAgICogYmluZGlu
Z3MvanMvSlNTaGFyZWRXb3JrZXJDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNTaGFy
ZWRXb3JrZXJDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0SlNTaGFyZWRXb3JrZXIpOgorICAgICAgICAq
IGJpbmRpbmdzL2pzL0pTU3RvcmFnZUN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1N0
b3JhZ2U6Om5hbWVHZXR0ZXIpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTU3R5bGVTaGVldExp
c3RDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNTdHlsZVNoZWV0TGlzdDo6bmFtZUdl
dHRlcik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNUZXh0VHJhY2tDdWVDdXN0b20uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SlNUZXh0VHJhY2tDdWVPd25lcjo6aXNSZWFjaGFibGVGcm9tT3Bh
cXVlUm9vdHMpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTVGV4dFRyYWNrQ3VzdG9tLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkpTVGV4dFRyYWNrT3duZXI6OmlzUmVhY2hhYmxlRnJvbU9wYXF1
ZVJvb3RzKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1RleHRUcmFja0xpc3RDdXN0b20uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SlNUZXh0VHJhY2tMaXN0T3duZXI6OmlzUmVhY2hhYmxlRnJv
bU9wYXF1ZVJvb3RzKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1RyYWNrQ3VzdG9tLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OnRvVHJhY2spOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTVWlu
dDE2QXJyYXlDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNVaW50MTZBcnJheUNvbnN0
cnVjdG9yOjpjb25zdHJ1Y3RKU1VpbnQxNkFycmF5KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9K
U1VpbnQzMkFycmF5Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVWludDMyQXJyYXlD
b25zdHJ1Y3Rvcjo6Y29uc3RydWN0SlNVaW50MzJBcnJheSk6CisgICAgICAgICogYmluZGluZ3Mv
anMvSlNVaW50OEFycmF5Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVWludDhBcnJh
eUNvbnN0cnVjdG9yOjpjb25zdHJ1Y3RKU1VpbnQ4QXJyYXkpOgorICAgICAgICAqIGJpbmRpbmdz
L2pzL0pTVWludDhDbGFtcGVkQXJyYXlDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNV
aW50OENsYW1wZWRBcnJheUNvbnN0cnVjdG9yOjpjb25zdHJ1Y3RKU1VpbnQ4Q2xhbXBlZEFycmF5
KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1dlYktpdE11dGF0aW9uT2JzZXJ2ZXJDdXN0b20u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNXZWJLaXRNdXRhdGlvbk9ic2VydmVyQ29uc3RydWN0
b3I6OmNvbnN0cnVjdEpTV2ViS2l0TXV0YXRpb25PYnNlcnZlcik6CisgICAgICAgICogYmluZGlu
Z3MvanMvSlNXZWJLaXRQb2ludEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1dlYktp
dFBvaW50Q29uc3RydWN0b3I6OmNvbnN0cnVjdEpTV2ViS2l0UG9pbnQpOgorICAgICAgICAqIGJp
bmRpbmdzL2pzL0pTV2ViU29ja2V0Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTV2Vi
U29ja2V0Q29uc3RydWN0b3I6OmNvbnN0cnVjdEpTV2ViU29ja2V0KToKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9KU1dvcmtlckNvbnRleHRCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRvSlNE
ZWRpY2F0ZWRXb3JrZXJDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OnRvSlNTaGFyZWRXb3Jr
ZXJDb250ZXh0KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1dvcmtlckN1c3RvbS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpKU1dvcmtlckNvbnN0cnVjdG9yOjpjb25zdHJ1Y3RKU1dvcmtlcik6
CisgICAgICAgICogYmluZGluZ3MvanMvSlNYU0xUUHJvY2Vzc29yQ3VzdG9tLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkpTWFNMVFByb2Nlc3Nvcjo6aW1wb3J0U3R5bGVzaGVldCk6CisgICAgICAg
IChXZWJDb3JlOjpKU1hTTFRQcm9jZXNzb3I6OnRyYW5zZm9ybVRvRnJhZ21lbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6SlNYU0xUUHJvY2Vzc29yOjp0cmFuc2Zvcm1Ub0RvY3VtZW50KToKKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRDYWxsU3RhY2tGYWN0b3J5LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OmNyZWF0ZVNjcmlwdENhbGxTdGFja0Zvckluc3BlY3Rvcik6CisgICAgICAgICogYmlu
ZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlck1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OnVwZGF0
ZVN0eWxlSWZOZWVkZWRGb3JCaW5kaW5ncyk6CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0
RGVidWdTZXJ2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RGVidWdTZXJ2ZXI6OmRp
c3BhdGNoRGlkUGF1c2UpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdE9iamVjdC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRHbG9iYWxPYmplY3Q6OnNldCk6CisgICAgICAgICog
YmluZGluZ3MvanMvU2NyaXB0U3RhdGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZG9tV2luZG93
RnJvbVNjcmlwdFN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OnNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHRGcm9tU2NyaXB0U3RhdGUpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDbG9uZVNlcmlhbGl6ZXI6OmZpbGxUcmFu
c2Zlck1hcCk6CisgICAgICAgIChXZWJDb3JlOjpDbG9uZVNlcmlhbGl6ZXI6OmR1bXBBcnJheUJ1
ZmZlclZpZXcpOgorICAgICAgICAoV2ViQ29yZTo6Q2xvbmVEZXNlcmlhbGl6ZXI6OmdldEpTVmFs
dWUpOgorICAgICAgICAoV2ViQ29yZTo6Q2xvbmVEZXNlcmlhbGl6ZXI6OnJlYWRUZXJtaW5hbCk6
CisgICAgICAgICogYmluZGluZ3Mvb2JqYy9XZWJTY3JpcHRPYmplY3QubW06CisgICAgICAgICgt
W1dlYlNjcmlwdE9iamVjdCBfaXNTYWZlU2NyaXB0XSk6CisgICAgICAgICgrW1dlYlNjcmlwdE9i
amVjdCBfY29udmVydFZhbHVlVG9PYmpjVmFsdWU6b3JpZ2luUm9vdE9iamVjdDpyb290T2JqZWN0
Ol0pOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtOgorICAg
ICAgICAoR2VuZXJhdGVHZXRPd25Qcm9wZXJ0eVNsb3RCb2R5KToKKyAgICAgICAgKEdlbmVyYXRl
R2V0T3duUHJvcGVydHlEZXNjcmlwdG9yQm9keSk6CisgICAgICAgIChHZW5lcmF0ZUltcGxlbWVu
dGF0aW9uKToKKyAgICAgICAgKEdlbmVyYXRlQ2FsbFdpdGgpOgorICAgICAgICAoTmF0aXZlVG9K
U1ZhbHVlKToKKyAgICAgICAgKEdlbmVyYXRlQ29uc3RydWN0b3JEZWZpbml0aW9uKToKKyAgICAg
ICAgKiBicmlkZ2Uvam5pL2puaV9qc29iamVjdC5oOgorICAgICAgICAqIGJyaWRnZS9qbmkvam5p
X2pzb2JqZWN0Lm1tOgorICAgICAgICAoSmF2YUpTT2JqZWN0Ojpjb252ZXJ0Sk9iamVjdFRvVmFs
dWUpOgorICAgICAgICAqIGJyaWRnZS9qbmkvanNjL0phdmFJbnN0YW5jZUpTQy5jcHA6CisgICAg
ICAgIChKYXZhSW5zdGFuY2U6Omludm9rZU1ldGhvZCk6CisgICAgICAgICogYnJpZGdlL29iamMv
b2JqY191dGlsaXR5Lm1tOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6Y29udmVydFZhbHVlVG9P
YmpjVmFsdWUpOgorICAgICAgICAqIGJyaWRnZS9ydW50aW1lX21ldGhvZC5jcHA6CisgICAgICAg
IChKU0M6OmNhbGxSdW50aW1lTWV0aG9kKToKKyAgICAgICAgKiBicmlkZ2UvcnVudGltZV9vYmpl
Y3QuY3BwOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6Y2FsbFJ1bnRpbWVDb25zdHJ1Y3Rvcik6
CisgICAgICAgICogdGVzdGluZy9qcy9XZWJDb3JlVGVzdFN1cHBvcnQuY3BwOgorICAgICAgICAo
V2ViQ29yZVRlc3RTdXBwb3J0OjppbmplY3RJbnRlcm5hbHNPYmplY3QpOgorICAgICAgICAoV2Vi
Q29yZVRlc3RTdXBwb3J0OjpyZXNldEludGVybmFsc09iamVjdCk6CisKIDIwMTItMDQtMDUgIFNo
YXduIFNpbmdoICA8c2hhd25zaW5naEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW2Nocm9taXVt
XSBOZWVkIHRvIGNsaXAgdG8gaG9tb2dlbmVvdXMgdz0wIHBsYW5lIHdoZW4gYXBwbHlpbmcgdHJh
bnNmb3Jtcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KaW5kZXggMmZmMzYyMGNlZjljYmE4OGUwODUwMzJj
NzUyYWQzNTlkYzYwMzVmMC4uZTgzZDkyYzUyNTgxMTgxYTdmNDgxZGRhZmZlNTYwMzkxNDM2NTYy
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KKysrIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KQEAgLTUzNyw2ICs1MzcsNyBAQCBfX1pON1dlYkNvcmUx
N0RldmljZU9yaWVudGF0aW9uNmNyZWF0ZUViZGJkYmRiYgogX19aTjdXZWJDb3JlMTdHbHlwaFBh
Z2VUcmVlTm9kZTE4dHJlZUdseXBoUGFnZUNvdW50RXYKIF9fWk43V2ViQ29yZTE3SGlzdG9yeUNv
bnRyb2xsZXIyNnNhdmVEb2N1bWVudEFuZFNjcm9sbFN0YXRlRXYKIF9fWk43V2ViQ29yZTE3SGlz
dG9yeUNvbnRyb2xsZXIzM3Jlc3RvcmVTY3JvbGxQb3NpdGlvbkFuZFZpZXdTdGF0ZUV2CitfX1pO
N1dlYkNvcmUxN0pTRE9NR2xvYmFsT2JqZWN0NnNfaW5mb0UKIF9fWk43V2ViQ29yZTE3UmVndWxh
ckV4cHJlc3Npb25DMUVSS04zV1RGNlN0cmluZ0VOUzFfMTlUZXh0Q2FzZVNlbnNpdGl2aXR5RQog
X19aTjdXZWJDb3JlMTdSZWd1bGFyRXhwcmVzc2lvbkQxRXYKIF9fWk43V2ViQ29yZTE3Y2FjaGVE
T01TdHJ1Y3R1cmVFUE5TXzE3SlNET01HbG9iYWxPYmplY3RFUE4zSlNDOVN0cnVjdHVyZUVQS05T
Ml85Q2xhc3NJbmZvRQpAQCAtMTE2NSw2ICsxMTY2LDcgQEAgX19aTjdXZWJDb3JlOXBsYWluVGV4
dEVQS05TXzVSYW5nZUVOU18yMFRleHRJdGVyYXRvckJlaGF2aW9yRQogX19aTjdXZWJDb3JlOXRv
RWxlbWVudEVOM0pTQzdKU1ZhbHVlRQogX19aTjdXZWJDb3JlOXVuaW9uUmVjdEVSS04zV1RGNlZl
Y3RvcklOU185RmxvYXRSZWN0RUxtMEVFRQogX19aTjdXZWJDb3JlMTFCaXRtYXBJbWFnZUMxRVBO
U18xM0ltYWdlT2JzZXJ2ZXJFCitfX1pON1dlYkNvcmUxMUpTRE9NV2luZG93NnNfaW5mb0UKIF9f
Wk43V2ViQ29yZTVJbWFnZTdzZXREYXRhRU4zV1RGMTBQYXNzUmVmUHRySU5TXzEyU2hhcmVkQnVm
ZmVyRUVFYgogX19aTkszSlNDOEJpbmRpbmdzMTBSb290T2JqZWN0MTJnbG9iYWxPYmplY3RFdgog
X19aTkszV1RGNlN0cmluZzE0Y3JlYXRlQ0ZTdHJpbmdFdgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvRE9NV3JhcHBlcldvcmxkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0RPTVdyYXBwZXJXb3JsZC5jcHAKaW5kZXggZDA4MjI0MjA0N2NlZjBmMzk4MDRm
NjJiMDA5ZTgwODgxMTEwMGFmOS4uYTFmODZkNDIzM2QxM2JhNjA2YTI4NDU0OGIyYjY3NDZlZTdk
OGEyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvRE9NV3JhcHBlcldv
cmxkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9ET01XcmFwcGVyV29ybGQu
Y3BwCkBAIC0zMiw3ICszMiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdm9pZCBKU1N0cmlu
Z093bmVyOjpmaW5hbGl6ZShKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+IGhhbmRsZSwgdm9pZCog
Y29udGV4dCkKIHsKLSAgICBKU1N0cmluZyoganNTdHJpbmcgPSBzdGF0aWNfY2FzdDxKU1N0cmlu
Zyo+KGhhbmRsZS5nZXQoKS5hc0NlbGwoKSk7CisgICAgSlNTdHJpbmcqIGpzU3RyaW5nID0ganND
YXN0PEpTU3RyaW5nKj4oaGFuZGxlLmdldCgpLmFzQ2VsbCgpKTsKICAgICBTdHJpbmdJbXBsKiBz
dHJpbmdJbXBsID0gc3RhdGljX2Nhc3Q8U3RyaW5nSW1wbCo+KGNvbnRleHQpOwogICAgIEFTU0VS
VF9VTlVTRUQoanNTdHJpbmcsIG1fd29ybGQtPm1fc3RyaW5nQ2FjaGUuZmluZChzdHJpbmdJbXBs
KS0+c2Vjb25kLndhcyhqc1N0cmluZykpOwogICAgIG1fd29ybGQtPm1fc3RyaW5nQ2FjaGUucmVt
b3ZlKHN0cmluZ0ltcGwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
RE9NV3JhcHBlcldvcmxkLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9ET01XcmFwcGVy
V29ybGQuaAppbmRleCAwMTBiZTA0OTdmYmRhNWIwZjAwMjVhN2JlNTg4MzcxOGM4NmUwOWUzLi43
NTUzNzVkNjU3YWVlMWY4YzVjNTNhOTc1YjA5ZDVjZjRhNDg5OWZhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9ET01XcmFwcGVyV29ybGQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9ET01XcmFwcGVyV29ybGQuaApAQCAtOTEsNyArOTEsNyBAQCBpbmxp
bmUgRE9NV3JhcHBlcldvcmxkKiBwbHVnaW5Xb3JsZCgpIHsgcmV0dXJuIG1haW5UaHJlYWROb3Jt
YWxXb3JsZCgpOyB9CiAKIGlubGluZSBET01XcmFwcGVyV29ybGQqIGN1cnJlbnRXb3JsZChKU0M6
OkV4ZWNTdGF0ZSogZXhlYykKIHsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SlNET01HbG9iYWxP
YmplY3QqPihleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLT53b3JsZCgpOworICAgIHJldHVy
biBKU0M6OmpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGV4ZWMtPmxleGljYWxHbG9iYWxPYmpl
Y3QoKSktPndvcmxkKCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXJyYXlCdWZmZXJDdXN0b20uY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNBcnJheUJ1ZmZlckN1c3RvbS5jcHAKaW5kZXggM2Rk
Y2Y5YTQ4M2U2ZDMzM2VkODNmNmQwNzNkMGEzYzgwNzJiMGU2ZC4uMmZhMzA2YTlkMzhjMmMzOWIz
NzJlNTk0YTZmODI4MjlhNDYzNTg5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNBcnJheUJ1ZmZlckN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNBcnJheUJ1ZmZlckN1c3RvbS5jcHAKQEAgLTM2LDcgKzM2LDcgQEAgdXNpbmcgbmFt
ZXNwYWNlIEpTQzsKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBKU0FycmF5QnVmZmVy
Q29uc3RydWN0b3I6OmNvbnN0cnVjdEpTQXJyYXlCdWZmZXIoRXhlY1N0YXRlKiBleGVjKQogewot
ICAgIEpTQXJyYXlCdWZmZXJDb25zdHJ1Y3RvcioganNDb25zdHJ1Y3RvciA9IHN0YXRpY19jYXN0
PEpTQXJyYXlCdWZmZXJDb25zdHJ1Y3Rvcio+KGV4ZWMtPmNhbGxlZSgpKTsKKyAgICBKU0FycmF5
QnVmZmVyQ29uc3RydWN0b3IqIGpzQ29uc3RydWN0b3IgPSBqc0Nhc3Q8SlNBcnJheUJ1ZmZlckNv
bnN0cnVjdG9yKj4oZXhlYy0+Y2FsbGVlKCkpOwogCiAgICAgaW50IGxlbmd0aCA9IDA7CiAgICAg
aWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA+IDApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0F1ZGlvQ29udGV4dEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0F1ZGlvQ29udGV4dEN1c3RvbS5jcHAKaW5kZXggY2JlYjUxNDVhNTQ0NjA2
OTZmODk4YzM3MjZjMjA4NjI4NDFjYzE5OC4uOWY1ZTI2ZTdkZmY4MTljMjNmMDIzMWQyNTgyYjM3
MTcyN2UyMGJjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNBdWRp
b0NvbnRleHRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXVk
aW9Db250ZXh0Q3VzdG9tLmNwcApAQCAtNTEsNyArNTEsNyBAQCB2b2lkIEpTQXVkaW9Db250ZXh0
Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiAKIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSlNBdWRpb0NvbnRleHRDb25zdHJ1Y3Rvcjo6Y29u
c3RydWN0SlNBdWRpb0NvbnRleHQoRXhlY1N0YXRlKiBleGVjKQogewotICAgIEpTQXVkaW9Db250
ZXh0Q29uc3RydWN0b3IqIGpzQ29uc3RydWN0b3IgPSBzdGF0aWNfY2FzdDxKU0F1ZGlvQ29udGV4
dENvbnN0cnVjdG9yKj4oZXhlYy0+Y2FsbGVlKCkpOworICAgIEpTQXVkaW9Db250ZXh0Q29uc3Ry
dWN0b3IqIGpzQ29uc3RydWN0b3IgPSBqc0Nhc3Q8SlNBdWRpb0NvbnRleHRDb25zdHJ1Y3Rvcio+
KGV4ZWMtPmNhbGxlZSgpKTsKICAgICBpZiAoIWpzQ29uc3RydWN0b3IpCiAgICAgICAgIHJldHVy
biB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlUmVmZXJlbmNlRXJyb3IoZXhlYywgIkF1ZGlvQ29u
dGV4dCBjb25zdHJ1Y3RvciBjYWxsZWUgaXMgdW5hdmFpbGFibGUiKSk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ1NTUnVsZUxpc3RDdXN0b20uY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDU1NSdWxlTGlzdEN1c3RvbS5jcHAKaW5kZXggMjhj
Y2IxZmRlNzBkNzFiMTA1ODRlMjIwZTIxZjYwZDQ5Y2IyMzBkZi4uODdiNjlhNjM1NGM3YmU4ODE5
NzE1MTQ0ZDlmZmNhMWQyODM5NTg4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNDU1NSdWxlTGlzdEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNDU1NSdWxlTGlzdEN1c3RvbS5jcHAKQEAgLTM3LDcgKzM3LDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBib29sIEpTQ1NTUnVsZUxpc3RPd25lcjo6aXNSZWFjaGFibGVGcm9tT3Bh
cXVlUm9vdHMoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiBoYW5kbGUsIHZvaWQqLCBTbG90Vmlz
aXRvciYgdmlzaXRvcikKIHsKLSAgICBKU0NTU1J1bGVMaXN0KiBqc0NTU1J1bGVMaXN0ID0gc3Rh
dGljX2Nhc3Q8SlNDU1NSdWxlTGlzdCo+KGhhbmRsZS5nZXQoKS5hc0NlbGwoKSk7CisgICAgSlND
U1NSdWxlTGlzdCoganNDU1NSdWxlTGlzdCA9IGpzQ2FzdDxKU0NTU1J1bGVMaXN0Kj4oaGFuZGxl
LmdldCgpLmFzQ2VsbCgpKTsKICAgICBpZiAoIWpzQ1NTUnVsZUxpc3QtPmhhc0N1c3RvbVByb3Bl
cnRpZXMoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmIChDU1NTdHlsZVNoZWV0KiBz
dHlsZVNoZWV0ID0ganNDU1NSdWxlTGlzdC0+aW1wbCgpLT5zdHlsZVNoZWV0KCkpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NTU1N0eWxlRGVjbGFyYXRpb25DdXN0
b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDU1NTdHlsZURlY2xhcmF0aW9u
Q3VzdG9tLmNwcAppbmRleCA2MWNjZDAyNTliYTM1MWE3YTM0ZjVlODIyYjlhNzUwYTEyNWI0ZmUz
Li43ZDE5YzIyNWRiODI3ZjRiZTc0MzY4NWI2MDE3MjM4MDI0OWJkYmE3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NTU1N0eWxlRGVjbGFyYXRpb25DdXN0b20uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ1NTU3R5bGVEZWNsYXJhdGlvbkN1
c3RvbS5jcHAKQEAgLTI5Miw3ICsyOTIsNyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUgY3NzUHJv
cGVydHlHZXR0ZXJQaXhlbE9yUG9zUHJlZml4KEV4ZWNTdGF0ZSogZXhlYywgSlNDU1NTdAogCiBz
dGF0aWMgSlNWYWx1ZSBjc3NQcm9wZXJ0eUdldHRlclBpeGVsT3JQb3NQcmVmaXhDYWxsYmFjayhF
eGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIHVuc2lnbmVkIHByb3BlcnR5SUQpCiB7
Ci0gICAgcmV0dXJuIGNzc1Byb3BlcnR5R2V0dGVyUGl4ZWxPclBvc1ByZWZpeChleGVjLCBzdGF0
aWNfY2FzdDxKU0NTU1N0eWxlRGVjbGFyYXRpb24qPihhc09iamVjdChzbG90QmFzZSkpLCBwcm9w
ZXJ0eUlEKTsKKyAgICByZXR1cm4gY3NzUHJvcGVydHlHZXR0ZXJQaXhlbE9yUG9zUHJlZml4KGV4
ZWMsIGpzQ2FzdDxKU0NTU1N0eWxlRGVjbGFyYXRpb24qPihhc09iamVjdChzbG90QmFzZSkpLCBw
cm9wZXJ0eUlEKTsKIH0KIAogc3RhdGljIGlubGluZSBKU1ZhbHVlIGNzc1Byb3BlcnR5R2V0dGVy
KEV4ZWNTdGF0ZSogZXhlYywgSlNDU1NTdHlsZURlY2xhcmF0aW9uKiB0aGlzT2JqLCB1bnNpZ25l
ZCBwcm9wZXJ0eUlEKQpAQCAtMzA2LDcgKzMwNiw3IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBj
c3NQcm9wZXJ0eUdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbioK
IAogc3RhdGljIEpTVmFsdWUgY3NzUHJvcGVydHlHZXR0ZXJDYWxsYmFjayhFeGVjU3RhdGUqIGV4
ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIHVuc2lnbmVkIHByb3BlcnR5SUQpCiB7Ci0gICAgcmV0dXJu
IGNzc1Byb3BlcnR5R2V0dGVyKGV4ZWMsIHN0YXRpY19jYXN0PEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bio+KGFzT2JqZWN0KHNsb3RCYXNlKSksIHByb3BlcnR5SUQpOworICAgIHJldHVybiBjc3NQcm9w
ZXJ0eUdldHRlcihleGVjLCBqc0Nhc3Q8SlNDU1NTdHlsZURlY2xhcmF0aW9uKj4oYXNPYmplY3Qo
c2xvdEJhc2UpKSwgcHJvcGVydHlJRCk7CiB9CiAKIGJvb2wgSlNDU1NTdHlsZURlY2xhcmF0aW9u
OjpnZXRPd25Qcm9wZXJ0eVNsb3REZWxlZ2F0ZShFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVy
JiBwcm9wZXJ0eUlkZW50aWZpZXIsIFByb3BlcnR5U2xvdCYgc2xvdCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ1NTVmFsdWVDdXN0b20uY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNDU1NWYWx1ZUN1c3RvbS5jcHAKaW5kZXggMGVmYjRiYjRiODNk
Mjc5ZTgxNzRlN2I5NzBiOWE3MGM1MjkxNTg0Ny4uMzc3MWU0OTNiMmRjNzYyNWFhNTBlN2U1OGQw
OTllYWVlMzc1ODk4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlND
U1NWYWx1ZUN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDU1NW
YWx1ZUN1c3RvbS5jcHAKQEAgLTUyLDcgKzUyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBi
b29sIEpTQ1NTVmFsdWVPd25lcjo6aXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMoSlNDOjpIYW5k
bGU8SlNDOjpVbmtub3duPiBoYW5kbGUsIHZvaWQqIGNvbnRleHQsIFNsb3RWaXNpdG9yJiB2aXNp
dG9yKQogewotICAgIEpTQ1NTVmFsdWUqIGpzQ1NTVmFsdWUgPSBzdGF0aWNfY2FzdDxKU0NTU1Zh
bHVlKj4oaGFuZGxlLmdldCgpLmFzQ2VsbCgpKTsKKyAgICBKU0NTU1ZhbHVlKiBqc0NTU1ZhbHVl
ID0ganNDYXN0PEpTQ1NTVmFsdWUqPihoYW5kbGUuZ2V0KCkuYXNDZWxsKCkpOwogICAgIGlmICgh
anNDU1NWYWx1ZS0+aGFzQ3VzdG9tUHJvcGVydGllcygpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgRE9NV3JhcHBlcldvcmxkKiB3b3JsZCA9IHN0YXRpY19jYXN0PERPTVdyYXBwZXJXb3Js
ZCo+KGNvbnRleHQpOwpAQCAtNjQsNyArNjQsNyBAQCBib29sIEpTQ1NTVmFsdWVPd25lcjo6aXNS
ZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiBoYW5kbAog
CiB2b2lkIEpTQ1NTVmFsdWVPd25lcjo6ZmluYWxpemUoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3du
PiBoYW5kbGUsIHZvaWQqIGNvbnRleHQpCiB7Ci0gICAgSlNDU1NWYWx1ZSoganNDU1NWYWx1ZSA9
IHN0YXRpY19jYXN0PEpTQ1NTVmFsdWUqPihoYW5kbGUuZ2V0KCkuYXNDZWxsKCkpOworICAgIEpT
Q1NTVmFsdWUqIGpzQ1NTVmFsdWUgPSBqc0Nhc3Q8SlNDU1NWYWx1ZSo+KGhhbmRsZS5nZXQoKS5h
c0NlbGwoKSk7CiAgICAgRE9NV3JhcHBlcldvcmxkKiB3b3JsZCA9IHN0YXRpY19jYXN0PERPTVdy
YXBwZXJXb3JsZCo+KGNvbnRleHQpOwogICAgIHdvcmxkLT5tX2Nzc1ZhbHVlUm9vdHMucmVtb3Zl
KGpzQ1NTVmFsdWUtPmltcGwoKSk7CiAgICAgdW5jYWNoZVdyYXBwZXIod29ybGQsIGpzQ1NTVmFs
dWUtPmltcGwoKSwganNDU1NWYWx1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0RPTUJpbmRpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
T01CaW5kaW5nLmNwcAppbmRleCBjMTFmNjAxMDM4YTY2MDA2OWJhYTVkOTkyNmNjMjVkMmJlZDA0
ODZjLi4zNDZjMjY3OWRmZTkzN2MwYzU3Y2I3NzkxOTlhZDAyZDU3NzdjZTQzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5jcHAKQEAgLTE2MCw3ICsxNjAsNyBA
QCB2b2lkIHJlcG9ydEV4Y2VwdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgZXhjZXB0aW9u
KQogICAgIGlmIChFeGNlcHRpb25CYXNlKiBleGNlcHRpb25CYXNlID0gdG9FeGNlcHRpb25CYXNl
KGV4Y2VwdGlvbikpCiAgICAgICAgIGVycm9yTWVzc2FnZSA9IHN0cmluZ1RvVVN0cmluZyhleGNl
cHRpb25CYXNlLT5tZXNzYWdlKCkgKyAiOiAiICArIGV4Y2VwdGlvbkJhc2UtPmRlc2NyaXB0aW9u
KCkpOwogCi0gICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCA9IHN0YXRpY19jYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZXhlYy0+bGV4aWNhbEdsb2JhbE9i
amVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOworICAgIFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgPSBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3Qq
PihleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7
CiAKICAgICAvLyBzY3JpcHRFeGVjdXRpb25Db250ZXh0IGNhbiBiZSBudWxsIHdoZW4gdGhlIHJl
bGV2YW50IGdsb2JhbCBvYmplY3QgaXMgYSBzdGFsZSBpbm5lciB3aW5kb3cgb2JqZWN0LgogICAg
IC8vIEl0J3MgaGFybWxlc3MgdG8gcmV0dXJuIGhlcmUgd2l0aG91dCByZXBvcnRpbmcgdGhlIGV4
Y2VwdGlvbiB0byB0aGUgbG9nIGFuZCB0aGUgZGVidWdnZXIgaW4gdGhpcyBjYXNlLgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmggYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaAppbmRleCA5ODc0NmU5MWJlZDBkYjgy
MmFkYzVlMDk4OWMwNDA2NTY1MWRhNDA1Li5hZWY4OWQyZTY4NzRjM2I5OTJmNzRkMTBmYzE2ZTQ1
OGU1MDQwYjVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJp
bmRpbmcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaApA
QCAtMTA0LDcgKzEwNCw3IEBAIGVudW0gUGFyYW1ldGVyRGVmYXVsdFBvbGljeSB7CiAgICAgICAg
IC8vIEZJWE1FOiBDYWxsZXJzIHRvIHRoaXMgZnVuY3Rpb24gc2hvdWxkIGJlIHVzaW5nIHRoZSBn
bG9iYWwgb2JqZWN0CiAgICAgICAgIC8vIGZyb20gd2hpY2ggdGhlIG9iamVjdCBpcyBiZWluZyBj
cmVhdGVkLCBpbnN0ZWFkIG9mIGFzc3VtaW5nIHRoZSBsZXhpY2FsIG9uZS4KICAgICAgICAgLy8g
ZS5nLiBzdWJmcmFtZS5kb2N1bWVudC5ib2R5IHNob3VsZCB1c2UgdGhlIHN1YmZyYW1lJ3MgZ2xv
YmFsIG9iamVjdCwgbm90IHRoZSBsZXhpY2FsIG9uZS4KLSAgICAgICAgcmV0dXJuIHN0YXRpY19j
YXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKTsKKyAg
ICAgICAgcmV0dXJuIEpTQzo6anNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZXhlYy0+bGV4aWNh
bEdsb2JhbE9iamVjdCgpKTsKICAgICB9CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBXcmFwcGVyQ2xh
c3M+IGlubGluZSBKU0M6OlN0cnVjdHVyZSogZ2V0RE9NU3RydWN0dXJlKEpTQzo6RXhlY1N0YXRl
KiBleGVjLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQpAQCAtMTIyLDcgKzEyMiw3
IEBAIGVudW0gUGFyYW1ldGVyRGVmYXVsdFBvbGljeSB7CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBX
cmFwcGVyQ2xhc3M+IGlubGluZSBKU0M6OkpTT2JqZWN0KiBnZXRET01Qcm90b3R5cGUoSlNDOjpF
eGVjU3RhdGUqIGV4ZWMsIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKICAgICB7
Ci0gICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxKU0M6OkpTT2JqZWN0Kj4oYXNPYmplY3QoZ2V0
RE9NU3RydWN0dXJlPFdyYXBwZXJDbGFzcz4oZXhlYywgc3RhdGljX2Nhc3Q8SlNET01HbG9iYWxP
YmplY3QqPihnbG9iYWxPYmplY3QpKS0+c3RvcmVkUHJvdG90eXBlKCkpKTsKKyAgICAgICAgcmV0
dXJuIEpTQzo6anNDYXN0PEpTQzo6SlNPYmplY3QqPihhc09iamVjdChnZXRET01TdHJ1Y3R1cmU8
V3JhcHBlckNsYXNzPihleGVjLCBKU0M6OmpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2Jh
bE9iamVjdCkpLT5zdG9yZWRQcm90b3R5cGUoKSkpOwogICAgIH0KIAogICAgIC8vIE92ZXJsb2Fk
IHRoZXNlIGZ1bmN0aW9ucyB0byBwcm92aWRlIGEgZmFzdCBwYXRoIGZvciB3cmFwcGVyIGFjY2Vz
cy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NRm9ybURhdGFD
dXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Gb3JtRGF0YUN1c3Rv
bS5jcHAKaW5kZXggNjVjMWNmNDNmMzkzYzE1MTE1ZmE2NWI5M2U5MjllYTFmYTk3NDVkMi4uN2Jl
OTMzMjhjMjY1NjY0N2Q3ZjFmMGU2MjNhYmE2ZDI1MDc3M2JiMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Gb3JtRGF0YUN1c3RvbS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Gb3JtRGF0YUN1c3RvbS5jcHAKQEAgLTQzLDEyICs0
MywxMiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRpYyBIVE1MRm9ybUVsZW1lbnQqIHRv
SFRNTEZvcm1FbGVtZW50KEpTQzo6SlNWYWx1ZSB2YWx1ZSkKIHsKLSAgICByZXR1cm4gdmFsdWUu
aW5oZXJpdHMoJkpTSFRNTEZvcm1FbGVtZW50OjpzX2luZm8pID8gc3RhdGljX2Nhc3Q8SFRNTEZv
cm1FbGVtZW50Kj4oc3RhdGljX2Nhc3Q8SlNIVE1MRm9ybUVsZW1lbnQqPihhc09iamVjdCh2YWx1
ZSkpLT5pbXBsKCkpIDogMDsKKyAgICByZXR1cm4gdmFsdWUuaW5oZXJpdHMoJkpTSFRNTEZvcm1F
bGVtZW50OjpzX2luZm8pID8gc3RhdGljX2Nhc3Q8SFRNTEZvcm1FbGVtZW50Kj4oanNDYXN0PEpT
SFRNTEZvcm1FbGVtZW50Kj4oYXNPYmplY3QodmFsdWUpKS0+aW1wbCgpKSA6IDA7CiB9CiAKIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSlNET01Gb3JtRGF0YUNvbnN0cnVjdG9yOjpjb25z
dHJ1Y3RKU0RPTUZvcm1EYXRhKEV4ZWNTdGF0ZSogZXhlYykKIHsKLSAgICBKU0RPTUZvcm1EYXRh
Q29uc3RydWN0b3IqIGpzQ29uc3RydWN0b3IgPSBzdGF0aWNfY2FzdDxKU0RPTUZvcm1EYXRhQ29u
c3RydWN0b3IqPihleGVjLT5jYWxsZWUoKSk7CisgICAgSlNET01Gb3JtRGF0YUNvbnN0cnVjdG9y
KiBqc0NvbnN0cnVjdG9yID0ganNDYXN0PEpTRE9NRm9ybURhdGFDb25zdHJ1Y3Rvcio+KGV4ZWMt
PmNhbGxlZSgpKTsKIAogICAgIEhUTUxGb3JtRWxlbWVudCogZm9ybSA9IDA7CiAgICAgaWYgKGV4
ZWMtPmFyZ3VtZW50Q291bnQoKSA+IDApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0RPTU1pbWVUeXBlQXJyYXlDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNET01NaW1lVHlwZUFycmF5Q3VzdG9tLmNwcAppbmRleCBkY2Q0YzVhZDUyZTg0
OWEzMDdjOWVmN2VlNGJkYjkyNjQ3NjZiOWVlLi5iZDhhMzQyOGE3YmI0OGVlNmY1ODQxNmNkYTA4
NTZkY2YxMGEyNDc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RP
TU1pbWVUeXBlQXJyYXlDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRE9NTWltZVR5cGVBcnJheUN1c3RvbS5jcHAKQEAgLTM1LDcgKzM1LDcgQEAgYm9vbCBKU0RP
TU1pbWVUeXBlQXJyYXk6OmNhbkdldEl0ZW1zRm9yTmFtZShFeGVjU3RhdGUqLCBET01NaW1lVHlw
ZUFycmF5KiBtaW1lVHkKIAogSlNWYWx1ZSBKU0RPTU1pbWVUeXBlQXJyYXk6Om5hbWVHZXR0ZXIo
RXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBjb25zdCBJZGVudGlmaWVyJiBwcm9w
ZXJ0eU5hbWUpCiB7Ci0gICAgSlNET01NaW1lVHlwZUFycmF5KiB0aGlzT2JqID0gc3RhdGljX2Nh
c3Q8SlNET01NaW1lVHlwZUFycmF5Kj4oYXNPYmplY3Qoc2xvdEJhc2UpKTsKKyAgICBKU0RPTU1p
bWVUeXBlQXJyYXkqIHRoaXNPYmogPSBqc0Nhc3Q8SlNET01NaW1lVHlwZUFycmF5Kj4oYXNPYmpl
Y3Qoc2xvdEJhc2UpKTsKICAgICByZXR1cm4gdG9KUyhleGVjLCB0aGlzT2JqLT5nbG9iYWxPYmpl
Y3QoKSwgdGhpc09iai0+aW1wbCgpLT5uYW1lZEl0ZW0oaWRlbnRpZmllclRvQXRvbWljU3RyaW5n
KHByb3BlcnR5TmFtZSkpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNET01QbHVnaW5BcnJheUN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RPTVBsdWdpbkFycmF5Q3VzdG9tLmNwcAppbmRleCAwMzZhNWEzMjgzYTQ1YjJiMTI4
ZjY1MTBjMzExM2UzZjBmMTA5ZTZjLi4xMmEyZDdhN2Y5NjkzOTI5MjdiNjk4MGM5M2ZmZWQ3NThj
Mjk1YzlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVBsdWdp
bkFycmF5Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVBs
dWdpbkFycmF5Q3VzdG9tLmNwcApAQCAtMzUsNyArMzUsNyBAQCBib29sIEpTRE9NUGx1Z2luQXJy
YXk6OmNhbkdldEl0ZW1zRm9yTmFtZShFeGVjU3RhdGUqLCBET01QbHVnaW5BcnJheSogcGx1Z2lu
QXJyYQogCiBKU1ZhbHVlIEpTRE9NUGx1Z2luQXJyYXk6Om5hbWVHZXR0ZXIoRXhlY1N0YXRlKiBl
eGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpCiB7
Ci0gICAgSlNET01QbHVnaW5BcnJheSogdGhpc09iaiA9IHN0YXRpY19jYXN0PEpTRE9NUGx1Z2lu
QXJyYXkqPihhc09iamVjdChzbG90QmFzZSkpOworICAgIEpTRE9NUGx1Z2luQXJyYXkqIHRoaXNP
YmogPSBqc0Nhc3Q8SlNET01QbHVnaW5BcnJheSo+KGFzT2JqZWN0KHNsb3RCYXNlKSk7CiAgICAg
cmV0dXJuIHRvSlMoZXhlYywgdGhpc09iai0+Z2xvYmFsT2JqZWN0KCksIHRoaXNPYmotPmltcGwo
KS0+bmFtZWRJdGVtKGlkZW50aWZpZXJUb0F0b21pY1N0cmluZyhwcm9wZXJ0eU5hbWUpKSk7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NUGx1Z2luQ3Vz
dG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NUGx1Z2luQ3VzdG9tLmNw
cAppbmRleCAzMmI3NmVkZjg4OTU5MGE0NDM4ODljZWFiZjQ2OTBiM2E4MDc5NjBkLi4wNjFkYTNh
YjZlOTc5YWY0Nzk1NzVkYTE3YmRiZjUzNzkzNjUzNWM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RPTVBsdWdpbkN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNET01QbHVnaW5DdXN0b20uY3BwCkBAIC0zNCw3ICszNCw3IEBAIGJv
b2wgSlNET01QbHVnaW46OmNhbkdldEl0ZW1zRm9yTmFtZShFeGVjU3RhdGUqLCBET01QbHVnaW4q
IHBsdWdpbiwgY29uc3QgSWRlbnRpCiAKIEpTVmFsdWUgSlNET01QbHVnaW46Om5hbWVHZXR0ZXIo
RXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBjb25zdCBJZGVudGlmaWVyJiBwcm9w
ZXJ0eU5hbWUpCiB7Ci0gICAgSlNET01QbHVnaW4qIHRoaXNPYmogPSBzdGF0aWNfY2FzdDxKU0RP
TVBsdWdpbio+KGFzT2JqZWN0KHNsb3RCYXNlKSk7CisgICAgSlNET01QbHVnaW4qIHRoaXNPYmog
PSBqc0Nhc3Q8SlNET01QbHVnaW4qPihhc09iamVjdChzbG90QmFzZSkpOwogICAgIHJldHVybiB0
b0pTKGV4ZWMsIHRoaXNPYmotPmdsb2JhbE9iamVjdCgpLCB0aGlzT2JqLT5pbXBsKCktPm5hbWVk
SXRlbShpZGVudGlmaWVyVG9BdG9taWNTdHJpbmcocHJvcGVydHlOYW1lKSkpOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVN0cmluZ01hcEN1c3RvbS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVN0cmluZ01hcEN1c3RvbS5jcHAK
aW5kZXggN2M1OTljNWRiNWNiZjBlNDcwNDE5NGJkMzAyZjAwMGI4NWI0NzNhMy4uNTY4NzFjMmNj
NjE2NmU2Nzg4MDk0MDMzODRjZmMzZGQ4Mzg2YmNlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNET01TdHJpbmdNYXBDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRE9NU3RyaW5nTWFwQ3VzdG9tLmNwcApAQCAtNDIsNyArNDIsNyBA
QCBib29sIEpTRE9NU3RyaW5nTWFwOjpjYW5HZXRJdGVtc0Zvck5hbWUoRXhlY1N0YXRlKiwgRE9N
U3RyaW5nTWFwKiBpbXBsLCBjb25zdCBJZAogCiBKU1ZhbHVlIEpTRE9NU3RyaW5nTWFwOjpuYW1l
R2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgY29uc3QgSWRlbnRpZmll
ciYgcHJvcGVydHlOYW1lKQogewotICAgIEpTRE9NU3RyaW5nTWFwKiB0aGlzT2JqID0gc3RhdGlj
X2Nhc3Q8SlNET01TdHJpbmdNYXAqPihhc09iamVjdChzbG90QmFzZSkpOworICAgIEpTRE9NU3Ry
aW5nTWFwKiB0aGlzT2JqID0ganNDYXN0PEpTRE9NU3RyaW5nTWFwKj4oYXNPYmplY3Qoc2xvdEJh
c2UpKTsKICAgICByZXR1cm4ganNTdHJpbmcoZXhlYywgdGhpc09iai0+aW1wbCgpLT5pdGVtKGlk
ZW50aWZpZXJUb0F0b21pY1N0cmluZyhwcm9wZXJ0eU5hbWUpKSk7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwCmluZGV4IDE2MDQ2NWY0YjNi
MDNhMzRjM2I1NDkxMjk3Yzk1YTQwMTZkOTg4NzAuLjM5ZTBlYzE0Y2RiMTkzMWU3ZmY3N2E2YTg5
NjU1ODcyZTQyNDc2NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RE9NV2luZG93QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01X
aW5kb3dCYXNlLmNwcApAQCAtMjM3LDkgKzIzNyw5IEBAIEpTRE9NV2luZG93KiB0b0pTRE9NV2lu
ZG93KEpTVmFsdWUgdmFsdWUpCiAgICAgICAgIHJldHVybiAwOwogICAgIGNvbnN0IENsYXNzSW5m
byogY2xhc3NJbmZvID0gYXNPYmplY3QodmFsdWUpLT5jbGFzc0luZm8oKTsKICAgICBpZiAoY2xh
c3NJbmZvID09ICZKU0RPTVdpbmRvdzo6c19pbmZvKQotICAgICAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8SlNET01XaW5kb3cqPihhc09iamVjdCh2YWx1ZSkpOworICAgICAgICByZXR1cm4ganNDYXN0
PEpTRE9NV2luZG93Kj4oYXNPYmplY3QodmFsdWUpKTsKICAgICBpZiAoY2xhc3NJbmZvID09ICZK
U0RPTVdpbmRvd1NoZWxsOjpzX2luZm8pCi0gICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxKU0RP
TVdpbmRvd1NoZWxsKj4oYXNPYmplY3QodmFsdWUpKS0+d2luZG93KCk7CisgICAgICAgIHJldHVy
biBqc0Nhc3Q8SlNET01XaW5kb3dTaGVsbCo+KGFzT2JqZWN0KHZhbHVlKSktPndpbmRvdygpOwog
ICAgIHJldHVybiAwOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RP
TVdpbmRvd0N1c3RvbS5jcHAKaW5kZXggYmU1NTFiZjk2N2NiYWI4YWVmYmY3YzJmNmNkOGFiZDI1
YjQ3MTUwYy4uNGU5ZjIwNjAwNTRjZWQzZjQ3NjZlNDJmOWQ2NjZhMGU4YmFjMzJiYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcApAQCAt
OTksMTcgKzk5LDE3IEBAIEpTVmFsdWUgbm9uQ2FjaGluZ1N0YXRpY0Z1bmN0aW9uR2V0dGVyKEV4
ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSwgY29uc3QgSWRlbnRpZmllCiAKIHN0YXRpYyBKU1ZhbHVl
IGNoaWxkRnJhbWVHZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBjb25z
dCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpCiB7Ci0gICAgcmV0dXJuIHRvSlMoZXhlYywgc3Rh
dGljX2Nhc3Q8SlNET01XaW5kb3cqPihhc09iamVjdChzbG90QmFzZSkpLT5pbXBsKCktPmZyYW1l
KCktPnRyZWUoKS0+c2NvcGVkQ2hpbGQoaWRlbnRpZmllclRvQXRvbWljU3RyaW5nKHByb3BlcnR5
TmFtZSkpLT5kb21XaW5kb3coKSk7CisgICAgcmV0dXJuIHRvSlMoZXhlYywganNDYXN0PEpTRE9N
V2luZG93Kj4oYXNPYmplY3Qoc2xvdEJhc2UpKS0+aW1wbCgpLT5mcmFtZSgpLT50cmVlKCktPnNj
b3BlZENoaWxkKGlkZW50aWZpZXJUb0F0b21pY1N0cmluZyhwcm9wZXJ0eU5hbWUpKS0+ZG9tV2lu
ZG93KCkpOwogfQogCiBzdGF0aWMgSlNWYWx1ZSBpbmRleEdldHRlcihFeGVjU3RhdGUqIGV4ZWMs
IEpTVmFsdWUgc2xvdEJhc2UsIHVuc2lnbmVkIGluZGV4KQogewotICAgIHJldHVybiB0b0pTKGV4
ZWMsIHN0YXRpY19jYXN0PEpTRE9NV2luZG93Kj4oYXNPYmplY3Qoc2xvdEJhc2UpKS0+aW1wbCgp
LT5mcmFtZSgpLT50cmVlKCktPnNjb3BlZENoaWxkKGluZGV4KS0+ZG9tV2luZG93KCkpOworICAg
IHJldHVybiB0b0pTKGV4ZWMsIGpzQ2FzdDxKU0RPTVdpbmRvdyo+KGFzT2JqZWN0KHNsb3RCYXNl
KSktPmltcGwoKS0+ZnJhbWUoKS0+dHJlZSgpLT5zY29wZWRDaGlsZChpbmRleCktPmRvbVdpbmRv
dygpKTsKIH0KIAogc3RhdGljIEpTVmFsdWUgbmFtZWRJdGVtR2V0dGVyKEV4ZWNTdGF0ZSogZXhl
YywgSlNWYWx1ZSBzbG90QmFzZSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKQogewot
ICAgIEpTRE9NV2luZG93QmFzZSogdGhpc09iaiA9IHN0YXRpY19jYXN0PEpTRE9NV2luZG93Kj4o
YXNPYmplY3Qoc2xvdEJhc2UpKTsKKyAgICBKU0RPTVdpbmRvd0Jhc2UqIHRoaXNPYmogPSBqc0Nh
c3Q8SlNET01XaW5kb3cqPihhc09iamVjdChzbG90QmFzZSkpOwogICAgIERvY3VtZW50KiBkb2N1
bWVudCA9IHRoaXNPYmotPmltcGwoKS0+ZnJhbWUoKS0+ZG9jdW1lbnQoKTsKIAogICAgIEFTU0VS
VCh0aGlzT2JqLT5hbGxvd3NBY2Nlc3NGcm9tKGV4ZWMpKTsKQEAgLTY2Myw5ICs2NjMsOSBAQCBE
T01XaW5kb3cqIHRvRE9NV2luZG93KEpTVmFsdWUgdmFsdWUpCiAgICAgICAgIHJldHVybiAwOwog
ICAgIEpTT2JqZWN0KiBvYmplY3QgPSBhc09iamVjdCh2YWx1ZSk7CiAgICAgaWYgKG9iamVjdC0+
aW5oZXJpdHMoJkpTRE9NV2luZG93OjpzX2luZm8pKQotICAgICAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8SlNET01XaW5kb3cqPihvYmplY3QpLT5pbXBsKCk7CisgICAgICAgIHJldHVybiBqc0Nhc3Q8
SlNET01XaW5kb3cqPihvYmplY3QpLT5pbXBsKCk7CiAgICAgaWYgKG9iamVjdC0+aW5oZXJpdHMo
JkpTRE9NV2luZG93U2hlbGw6OnNfaW5mbykpCi0gICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxK
U0RPTVdpbmRvd1NoZWxsKj4ob2JqZWN0KS0+aW1wbCgpOworICAgICAgICByZXR1cm4ganNDYXN0
PEpTRE9NV2luZG93U2hlbGwqPihvYmplY3QpLT5pbXBsKCk7CiAgICAgcmV0dXJuIDA7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9t
LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5oCmluZGV4
IDc1NTFmZTRiNjEyODg2OGIwMDZhYTI2NDcxZWRjOTM5NzE1MzkyZjkuLjU3ZTgxNjY4MDMyNGU5
ZjA2YmI2MGIyYjNlODIzYjIzNmE1YTg5MDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNET01XaW5kb3dDdXN0b20uaApAQCAtMjgsNyArMjgsNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIGlubGluZSBKU0RPTVdpbmRvdyogYXNKU0RPTVdpbmRvdyhKU0M6OkpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QpCiB7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PEpTRE9NV2lu
ZG93Kj4oZ2xvYmFsT2JqZWN0KTsKKyAgICByZXR1cm4gSlNDOjpqc0Nhc3Q8SlNET01XaW5kb3cq
PihnbG9iYWxPYmplY3QpOwogfQogIAogaW5saW5lIGNvbnN0IEpTRE9NV2luZG93KiBhc0pTRE9N
V2luZG93KGNvbnN0IEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93U2hlbGwuaCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93U2hlbGwuaAppbmRleCBiN2M3NTAxNDAw
ZTBkYjcxODZlODQzMTYxOTVlYjM5OGJmY2IxMGRjLi5mMWUyNzM5OTU1MDI3MGVhZGI4ZDEzM2U3
ZDQ0YTY0ZjI4NmJjZGZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0RPTVdpbmRvd1NoZWxsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01X
aW5kb3dTaGVsbC5oCkBAIC00Myw3ICs0Myw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAg
ICAgSlNET01XaW5kb3dTaGVsbChQYXNzUmVmUHRyPERPTVdpbmRvdz4sIEpTQzo6U3RydWN0dXJl
KiwgRE9NV3JhcHBlcldvcmxkKik7CiAgICAgICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxs
Kik7CiAKLSAgICAgICAgSlNET01XaW5kb3cqIHdpbmRvdygpIGNvbnN0IHsgcmV0dXJuIHN0YXRp
Y19jYXN0PEpTRE9NV2luZG93Kj4obV91bndyYXBwZWRPYmplY3QuZ2V0KCkpOyB9CisgICAgICAg
IEpTRE9NV2luZG93KiB3aW5kb3coKSBjb25zdCB7IHJldHVybiBKU0M6OmpzQ2FzdDxKU0RPTVdp
bmRvdyo+KG1fdW53cmFwcGVkT2JqZWN0LmdldCgpKTsgfQogICAgICAgICB2b2lkIHNldFdpbmRv
dyhKU0M6OkpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNET01XaW5kb3cqIHdpbmRvdykKICAg
ICAgICAgewogICAgICAgICAgICAgQVNTRVJUX0FSRyh3aW5kb3csIHdpbmRvdyk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdyYXBwZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV3JhcHBlci5oCmluZGV4IDc0ZjE1NmFhZTBiMzc2ZTdh
NmE0MTBmZDI4NDlhYzkyMzdiNGU5N2MuLmYwYThhM2E0MmE3N2YxYjMxM2I3NWEyMTQ4MmJhMGQ4
Y2IxYmE0MjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV3Jh
cHBlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV3JhcHBlci5oCkBA
IC0zMyw3ICszMyw3IEBAIGNsYXNzIEpTRE9NV3JhcHBlciA6IHB1YmxpYyBKU0M6OkpTTm9uRmlu
YWxPYmplY3QgewogcHVibGljOgogICAgIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qo
KSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEpTRE9NR2xvYmFsT2Jq
ZWN0Kj4oSlNDOjpKU05vbkZpbmFsT2JqZWN0OjpnbG9iYWxPYmplY3QoKSk7CisgICAgICAgIHJl
dHVybiBKU0M6OmpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KEpTQzo6SlNOb25GaW5hbE9iamVj
dDo6Z2xvYmFsT2JqZWN0KCkpOwogICAgIH0KIAogICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNEYXRhVmlld0N1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0RhdGFWaWV3Q3VzdG9tLmNwcAppbmRleCA4N2Q0NDU4MmY2MTg5YjdhYTYyNmI1
YTdjMjVkNTVhYTQ0Yjc5ODdhLi5hYjc5YzgzOGRkOWMxNjZkZjQ0MjkxMzBkMjljMDQwODQxNTEx
NTBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RhdGFWaWV3Q3Vz
dG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RhdGFWaWV3Q3VzdG9t
LmNwcApAQCAtNTgsNyArNTgsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpTRGF0
YVZpZXdDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0SlNEYXRhVmlldyhFeGVjU3RhdAogICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIH0KIAotICAgIEpTRGF0
YVZpZXdDb25zdHJ1Y3RvcioganNDb25zdHJ1Y3RvciA9IHN0YXRpY19jYXN0PEpTRGF0YVZpZXdD
b25zdHJ1Y3Rvcio+KGV4ZWMtPmNhbGxlZSgpKTsKKyAgICBKU0RhdGFWaWV3Q29uc3RydWN0b3Iq
IGpzQ29uc3RydWN0b3IgPSBqc0Nhc3Q8SlNEYXRhVmlld0NvbnN0cnVjdG9yKj4oZXhlYy0+Y2Fs
bGVlKCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoYXNPYmplY3QodG9KUyhleGVjLCBq
c0NvbnN0cnVjdG9yLT5nbG9iYWxPYmplY3QoKSwgdmlldy5nZXQoKSkpKTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudExpc3RlbmVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5jcHAKaW5kZXggNTgzNjkw
MDVmZDI1Y2ViMjZhMzRmZDJmYmM4ZTkxYTcwM2Y4MDE3OC4uZmE5OTZlNTYzMDk2OGExMDNkODAw
YjczOTc2ZDE2ZTMyZTg5MWQ0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNFdmVudExpc3RlbmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0V2ZW50TGlzdGVuZXIuY3BwCkBAIC04Nyw3ICs4Nyw3IEBAIHZvaWQgSlNFdmVudExpc3RlbmVy
OjpoYW5kbGVFdmVudChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250
ZXh0CiAKICAgICBGcmFtZSogZnJhbWUgPSAwOwogICAgIGlmIChzY3JpcHRFeGVjdXRpb25Db250
ZXh0LT5pc0RvY3VtZW50KCkpIHsKLSAgICAgICAgSlNET01XaW5kb3cqIHdpbmRvdyA9IHN0YXRp
Y19jYXN0PEpTRE9NV2luZG93Kj4oZ2xvYmFsT2JqZWN0KTsKKyAgICAgICAgSlNET01XaW5kb3cq
IHdpbmRvdyA9IGpzQ2FzdDxKU0RPTVdpbmRvdyo+KGdsb2JhbE9iamVjdCk7CiAgICAgICAgIGZy
YW1lID0gd2luZG93LT5pbXBsKCktPmZyYW1lKCk7CiAgICAgICAgIGlmICghZnJhbWUpCiAgICAg
ICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0V2ZW50VGFyZ2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRUYXJn
ZXQuY3BwCmluZGV4IDQ1ZmFkN2Y3YzQyMDdkNjI3YmRhNjJlMTRlN2M1NjQyMzdkNjM0YTYuLjY2
ZTE1NzYxNWRiNTdlMzEwYWQzZDc5MDkwMjFkYjc5MTZkYTllMDUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRUYXJnZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRUYXJnZXQuY3BwCkBAIC02NiwxMiArNjYsMTIgQEAgSlNW
YWx1ZSB0b0pTKEV4ZWNTdGF0ZSogZXhlYywgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgRXZlbnRUYXJnZXQqIHRhcmcKIAogI2RlZmluZSBUUllfVE9fVU5XUkFQX1dJVEhfSU5URVJG
QUNFKGludGVyZmFjZU5hbWUpIFwKICAgICBpZiAodmFsdWUuaW5oZXJpdHMoJkpTIyNpbnRlcmZh
Y2VOYW1lOjpzX2luZm8pKSBcCi0gICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnRlcmZhY2VO
YW1lKj4oc3RhdGljX2Nhc3Q8SlMjI2ludGVyZmFjZU5hbWUqPihhc09iamVjdCh2YWx1ZSkpLT5p
bXBsKCkpOworICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50ZXJmYWNlTmFtZSo+KGpzQ2Fz
dDxKUyMjaW50ZXJmYWNlTmFtZSo+KGFzT2JqZWN0KHZhbHVlKSktPmltcGwoKSk7CiAKIEV2ZW50
VGFyZ2V0KiB0b0V2ZW50VGFyZ2V0KEpTQzo6SlNWYWx1ZSB2YWx1ZSkKIHsKICAgICBpZiAodmFs
dWUuaW5oZXJpdHMoJkpTRE9NV2luZG93U2hlbGw6OnNfaW5mbykpCi0gICAgICAgIHJldHVybiBz
dGF0aWNfY2FzdDxKU0RPTVdpbmRvd1NoZWxsKj4oYXNPYmplY3QodmFsdWUpKS0+aW1wbCgpOwor
ICAgICAgICByZXR1cm4ganNDYXN0PEpTRE9NV2luZG93U2hlbGwqPihhc09iamVjdCh2YWx1ZSkp
LT5pbXBsKCk7CiAKICAgICBET01fRVZFTlRfVEFSR0VUX0lOVEVSRkFDRVNfRk9SX0VBQ0goVFJZ
X1RPX1VOV1JBUF9XSVRIX0lOVEVSRkFDRSkKICAgICByZXR1cm4gMDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRmxvYXQzMkFycmF5Q3VzdG9tLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRmxvYXQzMkFycmF5Q3VzdG9tLmNwcAppbmRleCBlZDNi
MTEyNjUxNmM0ODgyMmI2MzBmZGY0NDhkNjFhN2RlZGM5NjU0Li5jYWRlNTJlMzhlN2IwZTllYjUx
ZWYyZjA3YWI4ZDg0ZTJkNGYzZjA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0Zsb2F0MzJBcnJheUN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNGbG9hdDMyQXJyYXlDdXN0b20uY3BwCkBAIC01MCw3ICs1MCw3IEBAIEpTQzo6SlNW
YWx1ZSBKU0Zsb2F0MzJBcnJheTo6c2V0KEpTQzo6RXhlY1N0YXRlKiBleGVjKQogCiBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpTRmxvYXQzMkFycmF5Q29uc3RydWN0b3I6OmNvbnN0cnVj
dEpTRmxvYXQzMkFycmF5KEV4ZWNTdGF0ZSogZXhlYykKIHsKLSAgICBKU0Zsb2F0MzJBcnJheUNv
bnN0cnVjdG9yKiBqc0NvbnN0cnVjdG9yID0gc3RhdGljX2Nhc3Q8SlNGbG9hdDMyQXJyYXlDb25z
dHJ1Y3Rvcio+KGV4ZWMtPmNhbGxlZSgpKTsKKyAgICBKU0Zsb2F0MzJBcnJheUNvbnN0cnVjdG9y
KiBqc0NvbnN0cnVjdG9yID0ganNDYXN0PEpTRmxvYXQzMkFycmF5Q29uc3RydWN0b3IqPihleGVj
LT5jYWxsZWUoKSk7CiAgICAgUmVmUHRyPEZsb2F0MzJBcnJheT4gYXJyYXkgPSBjb25zdHJ1Y3RB
cnJheUJ1ZmZlclZpZXc8RmxvYXQzMkFycmF5LCBmbG9hdD4oZXhlYyk7CiAgICAgaWYgKCFhcnJh
eS5nZXQoKSkKICAgICAgICAgLy8gRXhjZXB0aW9uIGhhcyBhbHJlYWR5IGJlZW4gdGhyb3duLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNGbG9hdDY0QXJyYXlDdXN0
b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNGbG9hdDY0QXJyYXlDdXN0b20u
Y3BwCmluZGV4IGZiZDgyYjUxZDUwMmMwNDM2OTdlMjM3NjQ1NTlhMTI3OTgwMWQwYjYuLjE1NjE5
ZTMyNTJlYWEyYzJlMzc0ZjFhY2NiNmQxMzk2ZDcwYjNjOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRmxvYXQ2NEFycmF5Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0Zsb2F0NjRBcnJheUN1c3RvbS5jcHAKQEAgLTUwLDcgKzUw
LDcgQEAgSlNDOjpKU1ZhbHVlIEpTRmxvYXQ2NEFycmF5OjpzZXQoSlNDOjpFeGVjU3RhdGUqIGV4
ZWMpCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSlNGbG9hdDY0QXJyYXlDb25zdHJ1
Y3Rvcjo6Y29uc3RydWN0SlNGbG9hdDY0QXJyYXkoRXhlY1N0YXRlKiBleGVjKQogewotICAgIEpT
RmxvYXQ2NEFycmF5Q29uc3RydWN0b3IqIGpzQ29uc3RydWN0b3IgPSBzdGF0aWNfY2FzdDxKU0Zs
b2F0NjRBcnJheUNvbnN0cnVjdG9yKj4oZXhlYy0+Y2FsbGVlKCkpOworICAgIEpTRmxvYXQ2NEFy
cmF5Q29uc3RydWN0b3IqIGpzQ29uc3RydWN0b3IgPSBqc0Nhc3Q8SlNGbG9hdDY0QXJyYXlDb25z
dHJ1Y3Rvcio+KGV4ZWMtPmNhbGxlZSgpKTsKICAgICBSZWZQdHI8RmxvYXQ2NEFycmF5PiBhcnJh
eSA9IGNvbnN0cnVjdEFycmF5QnVmZmVyVmlldzxGbG9hdDY0QXJyYXksIGRvdWJsZT4oZXhlYyk7
CiAgICAgaWYgKCFhcnJheS5nZXQoKSkKICAgICAgICAgLy8gRXhjZXB0aW9uIGhhcyBhbHJlYWR5
IGJlZW4gdGhyb3duLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNH
ZW9sb2NhdGlvbkN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0dlb2xv
Y2F0aW9uQ3VzdG9tLmNwcAppbmRleCA4YTkxODU2NGIyNDdiOTA2ODBkNDY3OGQ5NGM1MWIxYWJm
NjVkOWFjLi41N2ZiMTgwYTM5YmIyM2VlODlhNjJjMGY1MzY5ZTgxOGM3ZDg4NzczIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0dlb2xvY2F0aW9uQ3VzdG9tLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0dlb2xvY2F0aW9uQ3VzdG9tLmNwcApA
QCAtMTAxLDEyICsxMDEsMTIgQEAgSlNWYWx1ZSBKU0dlb2xvY2F0aW9uOjpnZXRDdXJyZW50UG9z
aXRpb24oRXhlY1N0YXRlKiBleGVjKQogewogICAgIC8vIEFyZ3VtZW50czogUG9zaXRpb25DYWxs
YmFjaywgKG9wdGlvbmFsKVBvc2l0aW9uRXJyb3JDYWxsYmFjaywgKG9wdGlvbmFsKVBvc2l0aW9u
T3B0aW9ucwogCi0gICAgUmVmUHRyPFBvc2l0aW9uQ2FsbGJhY2s+IHBvc2l0aW9uQ2FsbGJhY2sg
PSBjcmVhdGVGdW5jdGlvbk9ubHlDYWxsYmFjazxKU1Bvc2l0aW9uQ2FsbGJhY2s+KGV4ZWMsIHN0
YXRpY19jYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgp
KSwgZXhlYy0+YXJndW1lbnQoMCkpOworICAgIFJlZlB0cjxQb3NpdGlvbkNhbGxiYWNrPiBwb3Np
dGlvbkNhbGxiYWNrID0gY3JlYXRlRnVuY3Rpb25Pbmx5Q2FsbGJhY2s8SlNQb3NpdGlvbkNhbGxi
YWNrPihleGVjLCBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihleGVjLT5sZXhpY2FsR2xvYmFs
T2JqZWN0KCkpLCBleGVjLT5hcmd1bWVudCgwKSk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlv
bigpKQogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKICAgICBBU1NFUlQocG9zaXRpb25D
YWxsYmFjayk7CiAKLSAgICBSZWZQdHI8UG9zaXRpb25FcnJvckNhbGxiYWNrPiBwb3NpdGlvbkVy
cm9yQ2FsbGJhY2sgPSBjcmVhdGVGdW5jdGlvbk9ubHlDYWxsYmFjazxKU1Bvc2l0aW9uRXJyb3JD
YWxsYmFjaz4oZXhlYywgc3RhdGljX2Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihleGVjLT5sZXhp
Y2FsR2xvYmFsT2JqZWN0KCkpLCBleGVjLT5hcmd1bWVudCgxKSwgQ2FsbGJhY2tBbGxvd1VuZGVm
aW5lZCB8IENhbGxiYWNrQWxsb3dOdWxsKTsKKyAgICBSZWZQdHI8UG9zaXRpb25FcnJvckNhbGxi
YWNrPiBwb3NpdGlvbkVycm9yQ2FsbGJhY2sgPSBjcmVhdGVGdW5jdGlvbk9ubHlDYWxsYmFjazxK
U1Bvc2l0aW9uRXJyb3JDYWxsYmFjaz4oZXhlYywganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4o
ZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKSwgZXhlYy0+YXJndW1lbnQoMSksIENhbGxiYWNr
QWxsb3dVbmRlZmluZWQgfCBDYWxsYmFja0FsbG93TnVsbCk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4
Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKIApAQCAtMTIzLDEyICsx
MjMsMTIgQEAgSlNWYWx1ZSBKU0dlb2xvY2F0aW9uOjp3YXRjaFBvc2l0aW9uKEV4ZWNTdGF0ZSog
ZXhlYykKIHsKICAgICAvLyBBcmd1bWVudHM6IFBvc2l0aW9uQ2FsbGJhY2ssIChvcHRpb25hbClQ
b3NpdGlvbkVycm9yQ2FsbGJhY2ssIChvcHRpb25hbClQb3NpdGlvbk9wdGlvbnMKIAotICAgIFJl
ZlB0cjxQb3NpdGlvbkNhbGxiYWNrPiBwb3NpdGlvbkNhbGxiYWNrID0gY3JlYXRlRnVuY3Rpb25P
bmx5Q2FsbGJhY2s8SlNQb3NpdGlvbkNhbGxiYWNrPihleGVjLCBzdGF0aWNfY2FzdDxKU0RPTUds
b2JhbE9iamVjdCo+KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSksIGV4ZWMtPmFyZ3VtZW50
KDApKTsKKyAgICBSZWZQdHI8UG9zaXRpb25DYWxsYmFjaz4gcG9zaXRpb25DYWxsYmFjayA9IGNy
ZWF0ZUZ1bmN0aW9uT25seUNhbGxiYWNrPEpTUG9zaXRpb25DYWxsYmFjaz4oZXhlYywganNDYXN0
PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKSwgZXhlYy0+
YXJndW1lbnQoMCkpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0
dXJuIGpzVW5kZWZpbmVkKCk7CiAgICAgQVNTRVJUKHBvc2l0aW9uQ2FsbGJhY2spOwogCi0gICAg
UmVmUHRyPFBvc2l0aW9uRXJyb3JDYWxsYmFjaz4gcG9zaXRpb25FcnJvckNhbGxiYWNrID0gY3Jl
YXRlRnVuY3Rpb25Pbmx5Q2FsbGJhY2s8SlNQb3NpdGlvbkVycm9yQ2FsbGJhY2s+KGV4ZWMsIHN0
YXRpY19jYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgp
KSwgZXhlYy0+YXJndW1lbnQoMSksIENhbGxiYWNrQWxsb3dVbmRlZmluZWQgfCBDYWxsYmFja0Fs
bG93TnVsbCk7CisgICAgUmVmUHRyPFBvc2l0aW9uRXJyb3JDYWxsYmFjaz4gcG9zaXRpb25FcnJv
ckNhbGxiYWNrID0gY3JlYXRlRnVuY3Rpb25Pbmx5Q2FsbGJhY2s8SlNQb3NpdGlvbkVycm9yQ2Fs
bGJhY2s+KGV4ZWMsIGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGV4ZWMtPmxleGljYWxHbG9i
YWxPYmplY3QoKSksIGV4ZWMtPmFyZ3VtZW50KDEpLCBDYWxsYmFja0FsbG93VW5kZWZpbmVkIHwg
Q2FsbGJhY2tBbGxvd051bGwpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAg
ICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTSFRNTEFsbENvbGxlY3Rpb25DdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNIVE1MQWxsQ29sbGVjdGlvbkN1c3RvbS5jcHAKaW5kZXggMzYyNmNkYzM0
NjI1YTQ2Mzc2ZmQ0NjI5YzU2MWNiMGE3MGZkNTI0My4uZjk4YzE3NjUwNDljYTExZjNjNTc1ZGM1
NjFiYzBjMzY1MjBkMzRlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNIVE1MQWxsQ29sbGVjdGlvbkN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNIVE1MQWxsQ29sbGVjdGlvbkN1c3RvbS5jcHAKQEAgLTY0LDcgKzY0LDcgQEAgc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbEhUTUxBbGxDb2xsZWN0aW9uKEV4
ZWNTdGF0ZSogZXhlYykKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5l
ZCgpKTsKIAogICAgIC8vIERvIG5vdCB1c2UgdGhpc09iaiBoZXJlLiBJdCBjYW4gYmUgdGhlIEpT
SFRNTERvY3VtZW50LCBpbiB0aGUgZG9jdW1lbnQuZm9ybXMoaSkgY2FzZS4KLSAgICBKU0hUTUxB
bGxDb2xsZWN0aW9uKiBqc0NvbGxlY3Rpb24gPSBzdGF0aWNfY2FzdDxKU0hUTUxBbGxDb2xsZWN0
aW9uKj4oZXhlYy0+Y2FsbGVlKCkpOworICAgIEpTSFRNTEFsbENvbGxlY3Rpb24qIGpzQ29sbGVj
dGlvbiA9IGpzQ2FzdDxKU0hUTUxBbGxDb2xsZWN0aW9uKj4oZXhlYy0+Y2FsbGVlKCkpOwogICAg
IEhUTUxBbGxDb2xsZWN0aW9uKiBjb2xsZWN0aW9uID0gc3RhdGljX2Nhc3Q8SFRNTEFsbENvbGxl
Y3Rpb24qPihqc0NvbGxlY3Rpb24tPmltcGwoKSk7CiAKICAgICAvLyBBbHNvLCBkbyB3ZSBuZWVk
IHRoZSBUeXBlRXJyb3IgdGVzdCBoZXJlID8KQEAgLTEwNiw3ICsxMDYsNyBAQCBib29sIEpTSFRN
TEFsbENvbGxlY3Rpb246OmNhbkdldEl0ZW1zRm9yTmFtZShFeGVjU3RhdGUqLCBIVE1MQWxsQ29s
bGVjdGlvbiogY29sbAogCiBKU1ZhbHVlIEpTSFRNTEFsbENvbGxlY3Rpb246Om5hbWVHZXR0ZXIo
RXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBjb25zdCBJZGVudGlmaWVyJiBwcm9w
ZXJ0eU5hbWUpCiB7Ci0gICAgSlNIVE1MQWxsQ29sbGVjdGlvbiogdGhpc09iaiA9IHN0YXRpY19j
YXN0PEpTSFRNTEFsbENvbGxlY3Rpb24qPihhc09iamVjdChzbG90QmFzZSkpOworICAgIEpTSFRN
TEFsbENvbGxlY3Rpb24qIHRoaXNPYmogPSBqc0Nhc3Q8SlNIVE1MQWxsQ29sbGVjdGlvbio+KGFz
T2JqZWN0KHNsb3RCYXNlKSk7CiAgICAgcmV0dXJuIGdldE5hbWVkSXRlbXMoZXhlYywgdGhpc09i
aiwgcHJvcGVydHlOYW1lKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNIVE1MQ29sbGVjdGlvbkN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0hUTUxDb2xsZWN0aW9uQ3VzdG9tLmNwcAppbmRleCBkM2Y5MzZmZWRmODEyZjc4MDAz
YWNlNDRiYjVjY2VmMDMwMWQwYTFiLi43NGU5MjRmMjY1NDczMGU3Y2MzMTJmMWNkYzUzZDNhOGE1
YjU4ZDM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxDb2xs
ZWN0aW9uQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxD
b2xsZWN0aW9uQ3VzdG9tLmNwcApAQCAtNjUsNyArNjUsNyBAQCBib29sIEpTSFRNTENvbGxlY3Rp
b246OmNhbkdldEl0ZW1zRm9yTmFtZShFeGVjU3RhdGUqLCBIVE1MQ29sbGVjdGlvbiogY29sbGVj
dGlvbgogCiBKU1ZhbHVlIEpTSFRNTENvbGxlY3Rpb246Om5hbWVHZXR0ZXIoRXhlY1N0YXRlKiBl
eGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpCiB7
Ci0gICAgSlNIVE1MQ29sbGVjdGlvbiogdGhpc09iaiA9IHN0YXRpY19jYXN0PEpTSFRNTENvbGxl
Y3Rpb24qPihhc09iamVjdChzbG90QmFzZSkpOworICAgIEpTSFRNTENvbGxlY3Rpb24qIHRoaXNP
YmogPSBqc0Nhc3Q8SlNIVE1MQ29sbGVjdGlvbio+KGFzT2JqZWN0KHNsb3RCYXNlKSk7CiAgICAg
cmV0dXJuIGdldE5hbWVkSXRlbXMoZXhlYywgdGhpc09iaiwgcHJvcGVydHlOYW1lKTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MRG9jdW1lbnRDdXN0
b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MRG9jdW1lbnRDdXN0b20u
Y3BwCmluZGV4IGU2NGUyNDM4MWVhODE0NDA3NDE2OTlhNTU3ODI5MGQwZTk3MGZlMTcuLjVkMmU4
M2NlMTNlYTE1NjA3YWU2ZDJjMDI5ZDA1ZTlkNjEyZmE4ODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTERvY3VtZW50Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxEb2N1bWVudEN1c3RvbS5jcHAKQEAgLTU5LDcgKzU5
LDcgQEAgYm9vbCBKU0hUTUxEb2N1bWVudDo6Y2FuR2V0SXRlbXNGb3JOYW1lKEV4ZWNTdGF0ZSos
IEhUTUxEb2N1bWVudCogZG9jdW1lbnQsIGNvbnMKIAogSlNWYWx1ZSBKU0hUTUxEb2N1bWVudDo6
bmFtZUdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIGNvbnN0IElkZW50
aWZpZXImIHByb3BlcnR5TmFtZSkKIHsKLSAgICBKU0hUTUxEb2N1bWVudCogdGhpc09iaiA9IHN0
YXRpY19jYXN0PEpTSFRNTERvY3VtZW50Kj4oYXNPYmplY3Qoc2xvdEJhc2UpKTsKKyAgICBKU0hU
TUxEb2N1bWVudCogdGhpc09iaiA9IGpzQ2FzdDxKU0hUTUxEb2N1bWVudCo+KGFzT2JqZWN0KHNs
b3RCYXNlKSk7CiAgICAgSFRNTERvY3VtZW50KiBkb2N1bWVudCA9IHN0YXRpY19jYXN0PEhUTUxE
b2N1bWVudCo+KHRoaXNPYmotPmltcGwoKSk7CiAKICAgICBIVE1MQ29sbGVjdGlvbiogY29sbGVj
dGlvbiA9IGRvY3VtZW50LT5kb2N1bWVudE5hbWVkSXRlbXMoaWRlbnRpZmllclRvQXRvbWljU3Ry
aW5nKHByb3BlcnR5TmFtZSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNIVE1MRm9ybUVsZW1lbnRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNIVE1MRm9ybUVsZW1lbnRDdXN0b20uY3BwCmluZGV4IDc1N2I1MDI3NjRmYWRiMzc0ZDNi
NWM4Y2FjMzhjODE1YmU2MTljMGUuLjMwODdjZDRhYmEzMTAxODA5NzU0Mjc5YzdjNzMwMGM0ODhh
OTYzOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEZvcm1F
bGVtZW50Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxG
b3JtRWxlbWVudEN1c3RvbS5jcHAKQEAgLTQ2LDcgKzQ2LDcgQEAgYm9vbCBKU0hUTUxGb3JtRWxl
bWVudDo6Y2FuR2V0SXRlbXNGb3JOYW1lKEV4ZWNTdGF0ZSosIEhUTUxGb3JtRWxlbWVudCogZm9y
bSwgY28KIAogSlNWYWx1ZSBKU0hUTUxGb3JtRWxlbWVudDo6bmFtZUdldHRlcihFeGVjU3RhdGUq
IGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSkK
IHsKLSAgICBKU0hUTUxFbGVtZW50KiBqc0Zvcm0gPSBzdGF0aWNfY2FzdDxKU0hUTUxGb3JtRWxl
bWVudCo+KGFzT2JqZWN0KHNsb3RCYXNlKSk7CisgICAgSlNIVE1MRWxlbWVudCoganNGb3JtID0g
anNDYXN0PEpTSFRNTEZvcm1FbGVtZW50Kj4oYXNPYmplY3Qoc2xvdEJhc2UpKTsKICAgICBIVE1M
Rm9ybUVsZW1lbnQqIGZvcm0gPSBzdGF0aWNfY2FzdDxIVE1MRm9ybUVsZW1lbnQqPihqc0Zvcm0t
PmltcGwoKSk7CiAKICAgICBWZWN0b3I8UmVmUHRyPE5vZGU+ID4gbmFtZWRJdGVtczsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEZyYW1lU2V0RWxlbWVudEN1
c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxGcmFtZVNldEVsZW1l
bnRDdXN0b20uY3BwCmluZGV4IDA3YmFjNjE2ODRiYWY4NmZlMWE5ZjVhZDEwMDcxMTkyNmI0MWMy
ZTUuLjk1MDkzYzkzOWU1MmU3ZTEwMWRhYjljNjM3ZDZhNTA2MzU1YjU4NmMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEZyYW1lU2V0RWxlbWVudEN1c3RvbS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MRnJhbWVTZXRFbGVtZW50
Q3VzdG9tLmNwcApAQCAtNDksNyArNDksNyBAQCBib29sIEpTSFRNTEZyYW1lU2V0RWxlbWVudDo6
Y2FuR2V0SXRlbXNGb3JOYW1lKEV4ZWNTdGF0ZSosIEhUTUxGcmFtZVNldEVsZW1lbnQqCiAKIEpT
VmFsdWUgSlNIVE1MRnJhbWVTZXRFbGVtZW50OjpuYW1lR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywg
SlNWYWx1ZSBzbG90QmFzZSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKQogewotICAg
IEhUTUxFbGVtZW50KiBlbGVtZW50ID0gc3RhdGljX2Nhc3Q8SlNIVE1MRWxlbWVudCo+KGFzT2Jq
ZWN0KHNsb3RCYXNlKSktPmltcGwoKTsKKyAgICBIVE1MRWxlbWVudCogZWxlbWVudCA9IGpzQ2Fz
dDxKU0hUTUxFbGVtZW50Kj4oYXNPYmplY3Qoc2xvdEJhc2UpKS0+aW1wbCgpOwogICAgIE5vZGUq
IGZyYW1lRWxlbWVudCA9IGVsZW1lbnQtPmNoaWxkcmVuKCktPm5hbWVkSXRlbShpZGVudGlmaWVy
VG9BdG9taWNTdHJpbmcocHJvcGVydHlOYW1lKSk7CiAgICAgaWYgKERvY3VtZW50KiBkb2N1bWVu
dCA9IHN0YXRpY19jYXN0PEhUTUxGcmFtZUVsZW1lbnQqPihmcmFtZUVsZW1lbnQpLT5jb250ZW50
RG9jdW1lbnQoKSkgewogICAgICAgICBpZiAoSlNET01XaW5kb3dTaGVsbCogd2luZG93ID0gdG9K
U0RPTVdpbmRvd1NoZWxsKGRvY3VtZW50LT5mcmFtZSgpLCBjdXJyZW50V29ybGQoZXhlYykpKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MT3B0aW9uc0NvbGxl
Y3Rpb25DdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MT3B0aW9u
c0NvbGxlY3Rpb25DdXN0b20uY3BwCmluZGV4IGQ5ODYwMmE0NDBhZjA4MGJmMjI2ZGVkNWJkZjc0
ZjMxOTE0NjY3Y2EuLjQ4MGI4OGE0NGZkZGZjOWYzNTA2NTViNWU3ZmNiNjg2YjI5MTU1NjEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTE9wdGlvbnNDb2xsZWN0
aW9uQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxPcHRp
b25zQ29sbGVjdGlvbkN1c3RvbS5jcHAKQEAgLTkxLDcgKzkxLDcgQEAgSlNWYWx1ZSBKU0hUTUxP
cHRpb25zQ29sbGVjdGlvbjo6YWRkKEV4ZWNTdGF0ZSogZXhlYykKIEpTVmFsdWUgSlNIVE1MT3B0
aW9uc0NvbGxlY3Rpb246OnJlbW92ZShFeGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAgSFRNTE9wdGlv
bnNDb2xsZWN0aW9uKiBpbXAgPSBzdGF0aWNfY2FzdDxIVE1MT3B0aW9uc0NvbGxlY3Rpb24qPihp
bXBsKCkpOwotICAgIEpTSFRNTFNlbGVjdEVsZW1lbnQqIGJhc2UgPSBzdGF0aWNfY2FzdDxKU0hU
TUxTZWxlY3RFbGVtZW50Kj4oYXNPYmplY3QodG9KUyhleGVjLCBnbG9iYWxPYmplY3QoKSwgaW1w
LT5iYXNlKCkpKSk7CisgICAgSlNIVE1MU2VsZWN0RWxlbWVudCogYmFzZSA9IGpzQ2FzdDxKU0hU
TUxTZWxlY3RFbGVtZW50Kj4oYXNPYmplY3QodG9KUyhleGVjLCBnbG9iYWxPYmplY3QoKSwgaW1w
LT5iYXNlKCkpKSk7CiAgICAgcmV0dXJuIGJhc2UtPnJlbW92ZShleGVjKTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJbWFnZUNvbnN0cnVjdG9yLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW1hZ2VDb25zdHJ1Y3Rvci5jcHAKaW5kZXgg
OTU2Yzk2MTVhMDFlOTM2ODZiZmVhOTE1MDUxZjY1YmM2NWE0YzAyYi4uOWE2MTE2MDc0MTYzMjYx
NzI4NjdlMWIwNmEwYzk1NDlhNzdmMTM2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNJbWFnZUNvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0ltYWdlQ29uc3RydWN0b3IuY3BwCkBAIC00OSw3ICs0OSw3IEBAIHZvaWQgSlNJ
bWFnZUNvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTRE9NR2xv
YmFsT2JqZWN0KiBnbG9iCiAKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNv
bnN0cnVjdEltYWdlKEV4ZWNTdGF0ZSogZXhlYykKIHsKLSAgICBKU0ltYWdlQ29uc3RydWN0b3Iq
IGpzQ29uc3RydWN0b3IgPSBzdGF0aWNfY2FzdDxKU0ltYWdlQ29uc3RydWN0b3IqPihleGVjLT5j
YWxsZWUoKSk7CisgICAgSlNJbWFnZUNvbnN0cnVjdG9yKiBqc0NvbnN0cnVjdG9yID0ganNDYXN0
PEpTSW1hZ2VDb25zdHJ1Y3Rvcio+KGV4ZWMtPmNhbGxlZSgpKTsKICAgICBEb2N1bWVudCogZG9j
dW1lbnQgPSBqc0NvbnN0cnVjdG9yLT5kb2N1bWVudCgpOwogICAgIGlmICghZG9jdW1lbnQpCiAg
ICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlUmVmZXJlbmNlRXJyb3IoZXhl
YywgIkltYWdlIGNvbnN0cnVjdG9yIGFzc29jaWF0ZWQgZG9jdW1lbnQgaXMgdW5hdmFpbGFibGUi
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0luamVjdGVkU2Ny
aXB0TWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0luamVjdGVkU2Ny
aXB0TWFuYWdlci5jcHAKaW5kZXggNTAwNzM3ZGVhNzFmNTYxOGQ1OTJjMGEwYzdlNjk1ZDk2NGQx
NDA0MS4uMjQ5OTkzZjI3NWNhNTI3YWM2OWVhZGJhZjVmNDBkZTdkZTNkMmZjNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJbmplY3RlZFNjcmlwdE1hbmFnZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW5qZWN0ZWRTY3JpcHRNYW5hZ2Vy
LmNwcApAQCAtNTQsNyArNTQsNyBAQCBTY3JpcHRPYmplY3QgSW5qZWN0ZWRTY3JpcHRNYW5hZ2Vy
OjpjcmVhdGVJbmplY3RlZFNjcmlwdChjb25zdCBTdHJpbmcmIHNvdXJjZSwgUwogICAgIEpTTG9j
ayBsb2NrKFNpbGVuY2VBc3NlcnRpb25zT25seSk7CiAKICAgICBTb3VyY2VDb2RlIHNvdXJjZUNv
ZGUgPSBtYWtlU291cmNlKHN0cmluZ1RvVVN0cmluZyhzb3VyY2UpKTsKLSAgICBKU0RPTUdsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gc3RhdGljX2Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihz
Y3JpcHRTdGF0ZS0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKTsKKyAgICBKU0RPTUdsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0ID0ganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oc2NyaXB0U3RhdGUt
PmxleGljYWxHbG9iYWxPYmplY3QoKSk7CiAgICAgSlNWYWx1ZSBnbG9iYWxUaGlzVmFsdWUgPSBz
Y3JpcHRTdGF0ZS0+Z2xvYmFsVGhpc1ZhbHVlKCk7CiAKICAgICBKU1ZhbHVlIGV2YWx1YXRpb25F
eGNlcHRpb247CkBAIC04MCwxNCArODAsMTQgQEAgU2NyaXB0T2JqZWN0IEluamVjdGVkU2NyaXB0
TWFuYWdlcjo6Y3JlYXRlSW5qZWN0ZWRTY3JpcHQoY29uc3QgU3RyaW5nJiBzb3VyY2UsIFMKIAog
dm9pZCBJbmplY3RlZFNjcmlwdE1hbmFnZXI6OmRpc2NhcmRJbmplY3RlZFNjcmlwdChTY3JpcHRT
dGF0ZSogc2NyaXB0U3RhdGUpCiB7Ci0gICAgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCA9IHN0YXRpY19jYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oc2NyaXB0U3RhdGUtPmxleGljYWxH
bG9iYWxPYmplY3QoKSk7CisgICAgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGpz
Q2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KHNjcmlwdFN0YXRlLT5sZXhpY2FsR2xvYmFsT2JqZWN0
KCkpOwogICAgIGdsb2JhbE9iamVjdC0+c2V0SW5qZWN0ZWRTY3JpcHQoMCk7CiB9CiAKIEluamVj
dGVkU2NyaXB0IEluamVjdGVkU2NyaXB0TWFuYWdlcjo6aW5qZWN0ZWRTY3JpcHRGb3IoU2NyaXB0
U3RhdGUqIHNjcmlwdFN0YXRlKQogewogICAgIEpTTG9jayBsb2NrKFNpbGVuY2VBc3NlcnRpb25z
T25seSk7Ci0gICAgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IHN0YXRpY19jYXN0
PEpTRE9NR2xvYmFsT2JqZWN0Kj4oc2NyaXB0U3RhdGUtPmxleGljYWxHbG9iYWxPYmplY3QoKSk7
CisgICAgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGpzQ2FzdDxKU0RPTUdsb2Jh
bE9iamVjdCo+KHNjcmlwdFN0YXRlLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpOwogICAgIEpTT2Jq
ZWN0KiBpbmplY3RlZFNjcmlwdCA9IGdsb2JhbE9iamVjdC0+aW5qZWN0ZWRTY3JpcHQoKTsKICAg
ICBpZiAoaW5qZWN0ZWRTY3JpcHQpCiAgICAgICAgIHJldHVybiBJbmplY3RlZFNjcmlwdChTY3Jp
cHRPYmplY3Qoc2NyaXB0U3RhdGUsIGluamVjdGVkU2NyaXB0KSwgbV9pbnNwZWN0ZWRTdGF0ZUFj
Y2Vzc0NoZWNrKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW50
MTZBcnJheUN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0ludDE2QXJy
YXlDdXN0b20uY3BwCmluZGV4IDc2YWFiYTAxNzRlY2JjNmZiMjQ0MTM3MjI2N2ZlNmRhZjQxOWE2
MzIuLmJjNzdhNmQyYjJmOWIwYjMxZTIwOTQzYTMyOTMzMWEwYmM4ZWE4MDggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW50MTZBcnJheUN1c3RvbS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJbnQxNkFycmF5Q3VzdG9tLmNwcApAQCAtNTAs
NyArNTAsNyBAQCBKU0M6OkpTVmFsdWUgSlNJbnQxNkFycmF5OjpzZXQoSlNDOjpFeGVjU3RhdGUq
IGV4ZWMpCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSlNJbnQxNkFycmF5Q29uc3Ry
dWN0b3I6OmNvbnN0cnVjdEpTSW50MTZBcnJheShFeGVjU3RhdGUqIGV4ZWMpCiB7Ci0gICAgSlNJ
bnQxNkFycmF5Q29uc3RydWN0b3IqIGpzQ29uc3RydWN0b3IgPSBzdGF0aWNfY2FzdDxKU0ludDE2
QXJyYXlDb25zdHJ1Y3Rvcio+KGV4ZWMtPmNhbGxlZSgpKTsKKyAgICBKU0ludDE2QXJyYXlDb25z
dHJ1Y3RvcioganNDb25zdHJ1Y3RvciA9IGpzQ2FzdDxKU0ludDE2QXJyYXlDb25zdHJ1Y3Rvcio+
KGV4ZWMtPmNhbGxlZSgpKTsKICAgICBSZWZQdHI8SW50MTZBcnJheT4gYXJyYXkgPSBjb25zdHJ1
Y3RBcnJheUJ1ZmZlclZpZXc8SW50MTZBcnJheSwgc2hvcnQ+KGV4ZWMpOwogICAgIGlmICghYXJy
YXkuZ2V0KCkpCiAgICAgICAgIC8vIEV4Y2VwdGlvbiBoYXMgYWxyZWFkeSBiZWVuIHRocm93bi4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW50MzJBcnJheUN1c3Rv
bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0ludDMyQXJyYXlDdXN0b20uY3Bw
CmluZGV4IDQzMzkwYjFjMGEwMTg1ZWQ0NzRmZTcwOTU5OTUxOTJhMzhkNGEyNTQuLmQ4NTI4N2Y0
NDFjOTEyZjQ1NzdhNTJhZDVhMGMyNTQyZmEzYmMxNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTSW50MzJBcnJheUN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNJbnQzMkFycmF5Q3VzdG9tLmNwcApAQCAtNTAsNyArNTAsNyBAQCBK
U0M6OkpTVmFsdWUgSlNJbnQzMkFycmF5OjpzZXQoSlNDOjpFeGVjU3RhdGUqIGV4ZWMpCiAKIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSlNJbnQzMkFycmF5Q29uc3RydWN0b3I6OmNvbnN0
cnVjdEpTSW50MzJBcnJheShFeGVjU3RhdGUqIGV4ZWMpCiB7Ci0gICAgSlNJbnQzMkFycmF5Q29u
c3RydWN0b3IqIGpzQ29uc3RydWN0b3IgPSBzdGF0aWNfY2FzdDxKU0ludDMyQXJyYXlDb25zdHJ1
Y3Rvcio+KGV4ZWMtPmNhbGxlZSgpKTsKKyAgICBKU0ludDMyQXJyYXlDb25zdHJ1Y3RvcioganND
b25zdHJ1Y3RvciA9IGpzQ2FzdDxKU0ludDMyQXJyYXlDb25zdHJ1Y3Rvcio+KGV4ZWMtPmNhbGxl
ZSgpKTsKICAgICBSZWZQdHI8SW50MzJBcnJheT4gYXJyYXkgPSBjb25zdHJ1Y3RBcnJheUJ1ZmZl
clZpZXc8SW50MzJBcnJheSwgaW50PihleGVjKTsKICAgICBpZiAoIWFycmF5LmdldCgpKQogICAg
ICAgICAvLyBFeGNlcHRpb24gaGFzIGFscmVhZHkgYmVlbiB0aHJvd24uCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0ludDhBcnJheUN1c3RvbS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0ludDhBcnJheUN1c3RvbS5jcHAKaW5kZXggYmI3ZmU4YWQ2
MDFmYjE0NWI5ODMxNDA2NzIxMWM2MDJiMWFiMGNlMy4uYjZlMTUwNzZmOWE4ZGJjYTljNDA4ZGMw
ZmIzOGY4NmVmYzFlNDZkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNJbnQ4QXJyYXlDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
SW50OEFycmF5Q3VzdG9tLmNwcApAQCAtNTEsNyArNTEsNyBAQCBKU0M6OkpTVmFsdWUgSlNJbnQ4
QXJyYXk6OnNldChKU0M6OkV4ZWNTdGF0ZSogZXhlYykKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBKU0ludDhBcnJheUNvbnN0cnVjdG9yOjpjb25zdHJ1Y3RKU0ludDhBcnJheShFeGVj
U3RhdGUqIGV4ZWMpCiB7Ci0gICAgSlNJbnQ4QXJyYXlDb25zdHJ1Y3RvcioganNDb25zdHJ1Y3Rv
ciA9IHN0YXRpY19jYXN0PEpTSW50OEFycmF5Q29uc3RydWN0b3IqPihleGVjLT5jYWxsZWUoKSk7
CisgICAgSlNJbnQ4QXJyYXlDb25zdHJ1Y3RvcioganNDb25zdHJ1Y3RvciA9IGpzQ2FzdDxKU0lu
dDhBcnJheUNvbnN0cnVjdG9yKj4oZXhlYy0+Y2FsbGVlKCkpOwogICAgIFJlZlB0cjxJbnQ4QXJy
YXk+IGFycmF5ID0gY29uc3RydWN0QXJyYXlCdWZmZXJWaWV3PEludDhBcnJheSwgc2lnbmVkIGNo
YXI+KGV4ZWMpOwogICAgIGlmICghYXJyYXkuZ2V0KCkpCiAgICAgICAgIC8vIEV4Y2VwdGlvbiBo
YXMgYWxyZWFkeSBiZWVuIHRocm93bi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTTGF6eUV2ZW50TGlzdGVuZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNMYXp5RXZlbnRMaXN0ZW5lci5jcHAKaW5kZXggNGUzMDAxMjRiMDZiODI3OGQ1ZTE2NmUx
M2ExMTI5ZmYzYjFiOTU5Zi4uZjExYmY5MDBjMWQwZDUwZDFjN2FjNWM4YmZjNGJiM2QwNDFkYWFh
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNMYXp5RXZlbnRMaXN0
ZW5lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNMYXp5RXZlbnRMaXN0
ZW5lci5jcHAKQEAgLTEwNCw3ICsxMDQsNyBAQCBKU09iamVjdCogSlNMYXp5RXZlbnRMaXN0ZW5l
cjo6aW5pdGlhbGl6ZUpTRnVuY3Rpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogZXhlYwogICAg
ICAgICByZXR1cm4gMDsKICAgICB9CiAKLSAgICBKU0Z1bmN0aW9uKiBsaXN0ZW5lckFzRnVuY3Rp
b24gPSBzdGF0aWNfY2FzdDxKU0Z1bmN0aW9uKj4oanNGdW5jdGlvbik7CisgICAgSlNGdW5jdGlv
biogbGlzdGVuZXJBc0Z1bmN0aW9uID0ganNDYXN0PEpTRnVuY3Rpb24qPihqc0Z1bmN0aW9uKTsK
ICAgICBpZiAobV9vcmlnaW5hbE5vZGUpIHsKICAgICAgICAgaWYgKCF3cmFwcGVyKCkpIHsKICAg
ICAgICAgICAgIC8vIEVuc3VyZSB0aGF0ICdub2RlJyBoYXMgYSBKYXZhU2NyaXB0IHdyYXBwZXIg
dG8gbWFyayB0aGUgZXZlbnQgbGlzdGVuZXIgd2UncmUgY3JlYXRpbmcuCkBAIC0xMTUsNyArMTE1
LDcgQEAgSlNPYmplY3QqIEpTTGF6eUV2ZW50TGlzdGVuZXI6OmluaXRpYWxpemVKU0Z1bmN0aW9u
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGV4ZWMKIAogICAgICAgICAvLyBBZGQgdGhlIGV2ZW50
J3MgaG9tZSBlbGVtZW50IHRvIHRoZSBzY29wZQogICAgICAgICAvLyAoYW5kIHRoZSBkb2N1bWVu
dCwgYW5kIHRoZSBmb3JtIC0gc2VlIEpTSFRNTEVsZW1lbnQ6OmV2ZW50SGFuZGxlclNjb3BlKQot
ICAgICAgICBsaXN0ZW5lckFzRnVuY3Rpb24tPnNldFNjb3BlKGV4ZWMtPmdsb2JhbERhdGEoKSwg
c3RhdGljX2Nhc3Q8SlNOb2RlKj4od3JhcHBlcigpKS0+cHVzaEV2ZW50SGFuZGxlclNjb3BlKGV4
ZWMsIGxpc3RlbmVyQXNGdW5jdGlvbi0+c2NvcGUoKSkpOworICAgICAgICBsaXN0ZW5lckFzRnVu
Y3Rpb24tPnNldFNjb3BlKGV4ZWMtPmdsb2JhbERhdGEoKSwganNDYXN0PEpTTm9kZSo+KHdyYXBw
ZXIoKSktPnB1c2hFdmVudEhhbmRsZXJTY29wZShleGVjLCBsaXN0ZW5lckFzRnVuY3Rpb24tPnNj
b3BlKCkpKTsKICAgICB9CiAKICAgICAvLyBTaW5jZSB3ZSBvbmx5IHBhcnNlIG9uY2UsIHRoZXJl
J3Mgbm8gbmVlZCB0byBrZWVwIGRhdGEgdXNlZCBmb3IgcGFyc2luZyBhcm91bmQgYW55bW9yZS4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTmFtZWROb2RlTWFwQ3Vz
dG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTmFtZWROb2RlTWFwQ3VzdG9t
LmNwcAppbmRleCA4NzFmMDZhZmNhYzc1ZjUxZmE3NjVhYjI0N2UxZmYyZGI2NTRlMzhhLi5iMTI4
MDMyZWUxMGYwM2RmNjJjZGY1YTc3M2Q0YTcwZDEzNGQzY2Y1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU05hbWVkTm9kZU1hcEN1c3RvbS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNOYW1lZE5vZGVNYXBDdXN0b20uY3BwCkBAIC00Miw3ICs0
Miw3IEBAIGJvb2wgSlNOYW1lZE5vZGVNYXA6OmNhbkdldEl0ZW1zRm9yTmFtZShFeGVjU3RhdGUq
LCBOYW1lZE5vZGVNYXAqIGltcGwsIGNvbnN0IElkCiAKIEpTVmFsdWUgSlNOYW1lZE5vZGVNYXA6
Om5hbWVHZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBjb25zdCBJZGVu
dGlmaWVyJiBwcm9wZXJ0eU5hbWUpCiB7Ci0gICAgSlNOYW1lZE5vZGVNYXAqIHRoaXNPYmogPSBz
dGF0aWNfY2FzdDxKU05hbWVkTm9kZU1hcCo+KGFzT2JqZWN0KHNsb3RCYXNlKSk7CisgICAgSlNO
YW1lZE5vZGVNYXAqIHRoaXNPYmogPSBqc0Nhc3Q8SlNOYW1lZE5vZGVNYXAqPihhc09iamVjdChz
bG90QmFzZSkpOwogICAgIHJldHVybiB0b0pTKGV4ZWMsIHRoaXNPYmotPmdsb2JhbE9iamVjdCgp
LCB0aGlzT2JqLT5pbXBsKCktPmdldE5hbWVkSXRlbShpZGVudGlmaWVyVG9TdHJpbmcocHJvcGVy
dHlOYW1lKSkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U05vZGVDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlQ3VzdG9t
LmNwcAppbmRleCA3Y2RkNWZjZTdmNjg2MjA0MzdjM2EwZjM0OTQyZmM2NGFmMzY2NWVkLi4zOTRk
MGYzM2Q3MzU3NzQ3ZjQ1Y2M1YTcwN2E4YTNlZmU4YzYwYWUwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU05vZGVDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTTm9kZUN1c3RvbS5jcHAKQEAgLTEzMiwxMyArMTMyLDEzIEBAIHN0YXRp
YyBpbmxpbmUgYm9vbCBpc1JlYWNoYWJsZUZyb21ET00oSlNOb2RlKiBqc05vZGUsIE5vZGUqIG5v
ZGUsIFNsb3RWaXNpdG9yJiB2CiAKIGJvb2wgSlNOb2RlT3duZXI6OmlzUmVhY2hhYmxlRnJvbU9w
YXF1ZVJvb3RzKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4gaGFuZGxlLCB2b2lkKiwgU2xvdFZp
c2l0b3ImIHZpc2l0b3IpCiB7Ci0gICAgSlNOb2RlKiBqc05vZGUgPSBzdGF0aWNfY2FzdDxKU05v
ZGUqPihoYW5kbGUuZ2V0KCkuYXNDZWxsKCkpOworICAgIEpTTm9kZSoganNOb2RlID0ganNDYXN0
PEpTTm9kZSo+KGhhbmRsZS5nZXQoKS5hc0NlbGwoKSk7CiAgICAgcmV0dXJuIGlzUmVhY2hhYmxl
RnJvbURPTShqc05vZGUsIGpzTm9kZS0+aW1wbCgpLCB2aXNpdG9yKTsKIH0KIAogdm9pZCBKU05v
ZGVPd25lcjo6ZmluYWxpemUoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiBoYW5kbGUsIHZvaWQq
IGNvbnRleHQpCiB7Ci0gICAgSlNOb2RlKiBqc05vZGUgPSBzdGF0aWNfY2FzdDxKU05vZGUqPiho
YW5kbGUuZ2V0KCkuYXNDZWxsKCkpOworICAgIEpTTm9kZSoganNOb2RlID0ganNDYXN0PEpTTm9k
ZSo+KGhhbmRsZS5nZXQoKS5hc0NlbGwoKSk7CiAgICAgRE9NV3JhcHBlcldvcmxkKiB3b3JsZCA9
IHN0YXRpY19jYXN0PERPTVdyYXBwZXJXb3JsZCo+KGNvbnRleHQpOwogICAgIHVuY2FjaGVXcmFw
cGVyKHdvcmxkLCBqc05vZGUtPmltcGwoKSwganNOb2RlKTsKICAgICBqc05vZGUtPnJlbGVhc2VJ
bXBsKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05vZGVDdXN0
b20uaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZUN1c3RvbS5oCmluZGV4IDUx
OGIyMWQ1NDU4ZmIyZTlkZWMxNzRiZjZkNjdmNjAyNjI0MWMyMjguLmRkMjQyZTNjNzlkZGEyMTdh
YWVhNDc5OGNlMGMyYTQ5ODI1MjAxOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTTm9kZUN1c3RvbS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
Tm9kZUN1c3RvbS5oCkBAIC02MSw3ICs2MSw3IEBAIGlubGluZSBKU0M6OkpTVmFsdWUgdG9KUyhK
U0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwKICAg
ICBpZiAoIW5vZGUpCiAgICAgICAgIHJldHVybiBKU0M6OmpzTnVsbCgpOwogCi0gICAgSlNOb2Rl
KiB3cmFwcGVyID0gc3RhdGljX2Nhc3Q8SlNOb2RlKj4oZ2V0Q2FjaGVkV3JhcHBlcihjdXJyZW50
V29ybGQoZXhlYyksIG5vZGUpKTsKKyAgICBKU05vZGUqIHdyYXBwZXIgPSBKU0M6OmpzQ2FzdDxK
U05vZGUqPihnZXRDYWNoZWRXcmFwcGVyKGN1cnJlbnRXb3JsZChleGVjKSwgbm9kZSkpOwogICAg
IGlmICh3cmFwcGVyKQogICAgICAgICByZXR1cm4gd3JhcHBlcjsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlRmlsdGVyQ3VzdG9tLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZUZpbHRlckN1c3RvbS5jcHAKaW5kZXggZjQwMjM0Mjlm
NmZmOGExYjdmMWJiNGIwMzdmOTFiZDkzZWViMjRlOS4uM2Q5Y2YzZDRmYTc3OGMzOTQ3MDMzNGIy
NTcwYjQ1NzU4MDg4YmMyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNOb2RlRmlsdGVyQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U05vZGVGaWx0ZXJDdXN0b20uY3BwCkBAIC00OSw3ICs0OSw3IEBAIHZvaWQgSlNOb2RlRmlsdGVy
Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiBQYXNz
UmVmUHRyPE5vZGVGaWx0ZXI+IHRvTm9kZUZpbHRlcihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEs
IEpTVmFsdWUgdmFsdWUpCiB7CiAgICAgaWYgKHZhbHVlLmluaGVyaXRzKCZKU05vZGVGaWx0ZXI6
OnNfaW5mbykpCi0gICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxKU05vZGVGaWx0ZXIqPihhc09i
amVjdCh2YWx1ZSkpLT5pbXBsKCk7CisgICAgICAgIHJldHVybiBqc0Nhc3Q8SlNOb2RlRmlsdGVy
Kj4oYXNPYmplY3QodmFsdWUpKS0+aW1wbCgpOwogCiAgICAgUmVmUHRyPE5vZGVGaWx0ZXI+IHJl
c3VsdCA9IE5vZGVGaWx0ZXI6OmNyZWF0ZSgpOwogICAgIHJlc3VsdC0+c2V0Q29uZGl0aW9uKEpT
Tm9kZUZpbHRlckNvbmRpdGlvbjo6Y3JlYXRlKGdsb2JhbERhdGEsIHJlc3VsdC5nZXQoKSwgdmFs
dWUpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZUxpc3RD
dXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlTGlzdEN1c3RvbS5j
cHAKaW5kZXggNTYwMmQyNDIzZjYyZjRlMWY4MjZhNzFhMTdlZWZmM2U2OTBmNTkzYy4uNzI1ZTA1
M2E1OWZmYThiYjAwMWE5NTM1ZDlmMTc2YjJkZjJkNmNiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNOb2RlTGlzdEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNOb2RlTGlzdEN1c3RvbS5jcHAKQEAgLTM4LDcgKzM4LDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBib29sIEpTTm9kZUxpc3RPd25lcjo6aXNSZWFjaGFibGVGcm9t
T3BhcXVlUm9vdHMoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiBoYW5kbGUsIHZvaWQqLCBTbG90
VmlzaXRvciYgdmlzaXRvcikKIHsKLSAgICBKU05vZGVMaXN0KiBqc05vZGVMaXN0ID0gc3RhdGlj
X2Nhc3Q8SlNOb2RlTGlzdCo+KGhhbmRsZS5nZXQoKS5hc0NlbGwoKSk7CisgICAgSlNOb2RlTGlz
dCoganNOb2RlTGlzdCA9IGpzQ2FzdDxKU05vZGVMaXN0Kj4oaGFuZGxlLmdldCgpLmFzQ2VsbCgp
KTsKICAgICBpZiAoIWpzTm9kZUxpc3QtPmhhc0N1c3RvbVByb3BlcnRpZXMoKSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIGlmICghanNOb2RlTGlzdC0+aW1wbCgpLT5pc0R5bmFtaWNOb2Rl
TGlzdCgpKQpAQCAtNTMsNyArNTMsNyBAQCBib29sIEpTTm9kZUxpc3Q6OmNhbkdldEl0ZW1zRm9y
TmFtZShFeGVjU3RhdGUqLCBOb2RlTGlzdCogaW1wbCwgY29uc3QgSWRlbnRpZmllcgogCiBKU1Zh
bHVlIEpTTm9kZUxpc3Q6Om5hbWVHZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RC
YXNlLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpCiB7Ci0gICAgSlNOb2RlTGlzdCog
dGhpc09iaiA9IHN0YXRpY19jYXN0PEpTTm9kZUxpc3QqPihhc09iamVjdChzbG90QmFzZSkpOwor
ICAgIEpTTm9kZUxpc3QqIHRoaXNPYmogPSBqc0Nhc3Q8SlNOb2RlTGlzdCo+KGFzT2JqZWN0KHNs
b3RCYXNlKSk7CiAgICAgcmV0dXJuIHRvSlMoZXhlYywgdGhpc09iai0+Z2xvYmFsT2JqZWN0KCks
IHRoaXNPYmotPmltcGwoKS0+aXRlbVdpdGhOYW1lKGlkZW50aWZpZXJUb0F0b21pY1N0cmluZyhw
cm9wZXJ0eU5hbWUpKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTUGx1Z2luRWxlbWVudEZ1bmN0aW9ucy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU1BsdWdpbkVsZW1lbnRGdW5jdGlvbnMuY3BwCmluZGV4IDJkNjU1M2FmNDVjYzZmZjNh
MzA5ZTViOWVjYjM4YTIyYjFhZWVjMzIuLjgzODE5ZTNkY2VmNTY5ZjgyOWQ3OTVkNWVjODNjZDY2
YmRmYWQ3N2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUGx1Z2lu
RWxlbWVudEZ1bmN0aW9ucy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNQ
bHVnaW5FbGVtZW50RnVuY3Rpb25zLmNwcApAQCAtMTAyLDcgKzEwMiw3IEBAIEpTT2JqZWN0KiBw
bHVnaW5TY3JpcHRPYmplY3QoRXhlY1N0YXRlKiBleGVjLCBKU0hUTUxFbGVtZW50KiBqc0hUTUxF
bGVtZW50KQogICAgIAogSlNWYWx1ZSBydW50aW1lT2JqZWN0UHJvcGVydHlHZXR0ZXIoRXhlY1N0
YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5h
bWUpCiB7Ci0gICAgSlNIVE1MRWxlbWVudCogZWxlbWVudCA9IHN0YXRpY19jYXN0PEpTSFRNTEVs
ZW1lbnQqPihhc09iamVjdChzbG90QmFzZSkpOworICAgIEpTSFRNTEVsZW1lbnQqIGVsZW1lbnQg
PSBqc0Nhc3Q8SlNIVE1MRWxlbWVudCo+KGFzT2JqZWN0KHNsb3RCYXNlKSk7CiAgICAgSlNPYmpl
Y3QqIHNjcmlwdE9iamVjdCA9IHBsdWdpblNjcmlwdE9iamVjdChleGVjLCBlbGVtZW50KTsKICAg
ICBpZiAoIXNjcmlwdE9iamVjdCkKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CkBAIC0x
NTEsNyArMTUxLDcgQEAgYm9vbCBydW50aW1lT2JqZWN0Q3VzdG9tUHV0KEV4ZWNTdGF0ZSogZXhl
YywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1YKIAogc3RhdGljIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbFBsdWdpbihFeGVjU3RhdGUqIGV4ZWMpCiB7Ci0gICAg
SlNIVE1MRWxlbWVudCogZWxlbWVudCA9IHN0YXRpY19jYXN0PEpTSFRNTEVsZW1lbnQqPihleGVj
LT5jYWxsZWUoKSk7CisgICAgSlNIVE1MRWxlbWVudCogZWxlbWVudCA9IGpzQ2FzdDxKU0hUTUxF
bGVtZW50Kj4oZXhlYy0+Y2FsbGVlKCkpOwogCiAgICAgLy8gR2V0IHRoZSBwbHVnLWluIHNjcmlw
dCBvYmplY3QuCiAgICAgSlNPYmplY3QqIHNjcmlwdE9iamVjdCA9IHBsdWdpblNjcmlwdE9iamVj
dChleGVjLCBlbGVtZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTUG9wU3RhdGVFdmVudEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U1BvcFN0YXRlRXZlbnRDdXN0b20uY3BwCmluZGV4IGYwMWY4NGI5MDRlNGVkZmRlM2ZlYzE4MmZi
ZWY1NDhmZWM5MjViOTguLjNkZTI4MDdkMWNlYzc3YzYzYmRmNzVhODllYWVkN2I4NWZkOTEwMTUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUG9wU3RhdGVFdmVudEN1
c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNQb3BTdGF0ZUV2ZW50
Q3VzdG9tLmNwcApAQCAtNzAsNyArNzAsNyBAQCBKU1ZhbHVlIEpTUG9wU3RhdGVFdmVudDo6c3Rh
dGUoRXhlY1N0YXRlKiBleGVjKSBjb25zdAogICAgIEpTVmFsdWUgcmVzdWx0OwogCiAgICAgaWYg
KGlzU2FtZVN0YXRlKSB7Ci0gICAgICAgIEpTSGlzdG9yeSoganNIaXN0b3J5ID0gc3RhdGljX2Nh
c3Q8SlNIaXN0b3J5Kj4odG9KUyhleGVjLCBnbG9iYWxPYmplY3QoKSwgaGlzdG9yeSkuYXNDZWxs
KCkpOworICAgICAgICBKU0hpc3RvcnkqIGpzSGlzdG9yeSA9IGpzQ2FzdDxKU0hpc3RvcnkqPih0
b0pTKGV4ZWMsIGdsb2JhbE9iamVjdCgpLCBoaXN0b3J5KS5hc0NlbGwoKSk7CiAgICAgICAgIHJl
c3VsdCA9IGpzSGlzdG9yeS0+c3RhdGUoZXhlYyk7CiAgICAgfSBlbHNlCiAgICAgICAgIHJlc3Vs
dCA9IGV2ZW50LT5zZXJpYWxpemVkU3RhdGUoKS0+ZGVzZXJpYWxpemUoZXhlYywgZ2xvYmFsT2Jq
ZWN0KCksIDApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTUUxU
cmFuc2FjdGlvbkN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1NRTFRy
YW5zYWN0aW9uQ3VzdG9tLmNwcAppbmRleCAzMGFhZTFiNTRkODg0ZTU3MzY2NzY2NzNlMWI4YWRh
NTY4OWY3MWQwLi5hM2MxOThmODU3MWEyYTY2ZDZhMjJjMDQ3NGMwZTI3NWY1YzM4NjdmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1NRTFRyYW5zYWN0aW9uQ3VzdG9t
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1NRTFRyYW5zYWN0aW9uQ3Vz
dG9tLmNwcApAQCAtOTYsNyArOTYsNyBAQCBKU1ZhbHVlIEpTU1FMVHJhbnNhY3Rpb246OmV4ZWN1
dGVTcWwoRXhlY1N0YXRlKiBleGVjKQogICAgICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7
CiAgICAgICAgIH0KIAotICAgICAgICBjYWxsYmFjayA9IEpTU1FMU3RhdGVtZW50Q2FsbGJhY2s6
OmNyZWF0ZShvYmplY3QsIHN0YXRpY19jYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2Jq
ZWN0KCkpKTsKKyAgICAgICAgY2FsbGJhY2sgPSBKU1NRTFN0YXRlbWVudENhbGxiYWNrOjpjcmVh
dGUob2JqZWN0LCBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QoKSkpOwog
ICAgIH0KIAogICAgIFJlZlB0cjxTUUxTdGF0ZW1lbnRFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxi
YWNrOwpAQCAtMTA3LDcgKzEwNyw3IEBAIEpTVmFsdWUgSlNTUUxUcmFuc2FjdGlvbjo6ZXhlY3V0
ZVNxbChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsK
ICAgICAgICAgfQogCi0gICAgICAgIGVycm9yQ2FsbGJhY2sgPSBKU1NRTFN0YXRlbWVudEVycm9y
Q2FsbGJhY2s6OmNyZWF0ZShvYmplY3QsIHN0YXRpY19jYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4o
Z2xvYmFsT2JqZWN0KCkpKTsKKyAgICAgICAgZXJyb3JDYWxsYmFjayA9IEpTU1FMU3RhdGVtZW50
RXJyb3JDYWxsYmFjazo6Y3JlYXRlKG9iamVjdCwganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4o
Z2xvYmFsT2JqZWN0KCkpKTsKICAgICB9CiAKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU2hhcmVkV29ya2VyQ3VzdG9t
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU2hhcmVkV29ya2VyQ3VzdG9tLmNw
cAppbmRleCBmYjhkYzE4ZWYwYTcxZjU4NDc5OWU2NDdkM2YyMmFmYTg2NGE5YzJlLi4yODI3YmJm
ZThiZDNjMmE1YzcyNGMwYzZjNmZkMjk2NjZlNmI0ZmUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU1NoYXJlZFdvcmtlckN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNTaGFyZWRXb3JrZXJDdXN0b20uY3BwCkBAIC01Nyw3ICs1Nyw3
IEBAIHZvaWQgSlNTaGFyZWRXb3JrZXI6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90
VmlzaXRvciYgdmlzaXRvcikKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBKU1NoYXJl
ZFdvcmtlckNvbnN0cnVjdG9yOjpjb25zdHJ1Y3RKU1NoYXJlZFdvcmtlcihFeGVjU3RhdGUqIGV4
ZWMpCiB7Ci0gICAgSlNTaGFyZWRXb3JrZXJDb25zdHJ1Y3RvcioganNDb25zdHJ1Y3RvciA9IHN0
YXRpY19jYXN0PEpTU2hhcmVkV29ya2VyQ29uc3RydWN0b3IqPihleGVjLT5jYWxsZWUoKSk7Cisg
ICAgSlNTaGFyZWRXb3JrZXJDb25zdHJ1Y3RvcioganNDb25zdHJ1Y3RvciA9IGpzQ2FzdDxKU1No
YXJlZFdvcmtlckNvbnN0cnVjdG9yKj4oZXhlYy0+Y2FsbGVlKCkpOwogCiAgICAgaWYgKGV4ZWMt
PmFyZ3VtZW50Q291bnQoKSA8IDEpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywg
Y3JlYXRlVHlwZUVycm9yKGV4ZWMsICJOb3QgZW5vdWdoIGFyZ3VtZW50cyIpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU3RvcmFnZUN1c3RvbS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1N0b3JhZ2VDdXN0b20uY3BwCmluZGV4IDMxYmUyNjlh
YTJlNmU2YTBlOTE5Mjg2MThiMWYxMDgwMGI0MDY3YzIuLmE0YjkwODlkZWJmY2QwYmYyYWM5ODYz
YzgyYzI3MGE3NmIwOWZkOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTU3RvcmFnZUN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNT
dG9yYWdlQ3VzdG9tLmNwcApAQCAtNDEsNyArNDEsNyBAQCBib29sIEpTU3RvcmFnZTo6Y2FuR2V0
SXRlbXNGb3JOYW1lKEV4ZWNTdGF0ZSosIFN0b3JhZ2UqIGltcGwsIGNvbnN0IElkZW50aWZpZXIm
CiAKIEpTVmFsdWUgSlNTdG9yYWdlOjpuYW1lR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1
ZSBzbG90QmFzZSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKQogewotICAgIEpTU3Rv
cmFnZSogdGhpc09iaiA9IHN0YXRpY19jYXN0PEpTU3RvcmFnZSo+KGFzT2JqZWN0KHNsb3RCYXNl
KSk7CisgICAgSlNTdG9yYWdlKiB0aGlzT2JqID0ganNDYXN0PEpTU3RvcmFnZSo+KGFzT2JqZWN0
KHNsb3RCYXNlKSk7CiAgICAgcmV0dXJuIGpzU3RyaW5nT3JOdWxsKGV4ZWMsIHRoaXNPYmotPmlt
cGwoKS0+Z2V0SXRlbShpZGVudGlmaWVyVG9TdHJpbmcocHJvcGVydHlOYW1lKSkpOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1N0eWxlU2hlZXRMaXN0Q3Vz
dG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU3R5bGVTaGVldExpc3RDdXN0
b20uY3BwCmluZGV4IGEyYzhiNjdmZWJkZTM2ZjQ5MGQzYTMwM2Q0M2QxMmNjMjg0ZDA2NzEuLmMw
NWVlZjViMTVjZjIxNDViMjgxOTdhYzA3NTc3NzkyNzAxMTQ3YjggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU3R5bGVTaGVldExpc3RDdXN0b20uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU3R5bGVTaGVldExpc3RDdXN0b20uY3BwCkBAIC00
Miw3ICs0Miw3IEBAIGJvb2wgSlNTdHlsZVNoZWV0TGlzdDo6Y2FuR2V0SXRlbXNGb3JOYW1lKEV4
ZWNTdGF0ZSosIFN0eWxlU2hlZXRMaXN0KiBzdHlsZVNoZWV0CiAKIEpTVmFsdWUgSlNTdHlsZVNo
ZWV0TGlzdDo6bmFtZUdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIGNv
bnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSkKIHsKLSAgICBKU1N0eWxlU2hlZXRMaXN0KiB0
aGlzT2JqID0gc3RhdGljX2Nhc3Q8SlNTdHlsZVNoZWV0TGlzdCo+KGFzT2JqZWN0KHNsb3RCYXNl
KSk7CisgICAgSlNTdHlsZVNoZWV0TGlzdCogdGhpc09iaiA9IGpzQ2FzdDxKU1N0eWxlU2hlZXRM
aXN0Kj4oYXNPYmplY3Qoc2xvdEJhc2UpKTsKICAgICBIVE1MU3R5bGVFbGVtZW50KiBlbGVtZW50
ID0gdGhpc09iai0+aW1wbCgpLT5nZXROYW1lZEl0ZW0oaWRlbnRpZmllclRvU3RyaW5nKHByb3Bl
cnR5TmFtZSkpOwogICAgIEFTU0VSVChlbGVtZW50KTsKICAgICByZXR1cm4gdG9KUyhleGVjLCB0
aGlzT2JqLT5nbG9iYWxPYmplY3QoKSwgZWxlbWVudC0+c2hlZXQoKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1RleHRUcmFja0N1ZUN1c3RvbS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1RleHRUcmFja0N1ZUN1c3RvbS5jcHAKaW5kZXggYzZk
ZTE1ZmM4OGQ0ZWFhZjY0N2ZjNzViZTc2MmNjNTI2MDY5ZmM0Mi4uNWRkOWRjYTc2MGE4Mjc2YzQ0
Y2UxMGM1YTk4NzYwZDZkZDc5M2IxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNUZXh0VHJhY2tDdWVDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTVGV4dFRyYWNrQ3VlQ3VzdG9tLmNwcApAQCAtMzYsNyArMzYsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIGJvb2wgSlNUZXh0VHJhY2tDdWVPd25lcjo6aXNSZWFjaGFibGVGcm9t
T3BhcXVlUm9vdHMoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiBoYW5kbGUsIHZvaWQqLCBTbG90
VmlzaXRvciYgdmlzaXRvcikKIHsKLSAgICBKU1RleHRUcmFja0N1ZSoganNUZXh0VHJhY2tDdWUg
PSBzdGF0aWNfY2FzdDxKU1RleHRUcmFja0N1ZSo+KGhhbmRsZS5nZXQoKS5hc0NlbGwoKSk7Cisg
ICAgSlNUZXh0VHJhY2tDdWUqIGpzVGV4dFRyYWNrQ3VlID0ganNDYXN0PEpTVGV4dFRyYWNrQ3Vl
Kj4oaGFuZGxlLmdldCgpLmFzQ2VsbCgpKTsKICAgICBUZXh0VHJhY2tDdWUqIHRleHRUcmFja0N1
ZSA9IHN0YXRpY19jYXN0PFRleHRUcmFja0N1ZSo+KGpzVGV4dFRyYWNrQ3VlLT5pbXBsKCkpOwog
CiAgICAgLy8gSWYgdGhlIGN1ZSBpcyBmaXJpbmcgZXZlbnQgbGlzdGVuZXJzLCBpdHMgd3JhcHBl
ciBpcyByZWFjaGFibGUgYmVjYXVzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNUZXh0VHJhY2tDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNUZXh0VHJhY2tDdXN0b20uY3BwCmluZGV4IDYxM2JiZTM5ZWExNGE1ZWFiZmQ0N2IwMGM3YjRm
MjgyYjIxNTVlZDEuLjVkNjQxMjQ2NjVhNzE4ZWQwZGNlZWYzNDQ1MDgzNGE5NGU2NWRjNWIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVGV4dFRyYWNrQ3VzdG9tLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1RleHRUcmFja0N1c3RvbS5jcHAK
QEAgLTM3LDcgKzM3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBib29sIEpTVGV4dFRyYWNr
T3duZXI6OmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93
bj4gaGFuZGxlLCB2b2lkKiwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7Ci0gICAgSlNUZXh0VHJh
Y2sqIGpzVGV4dFRyYWNrID0gc3RhdGljX2Nhc3Q8SlNUZXh0VHJhY2sqPihoYW5kbGUuZ2V0KCku
YXNDZWxsKCkpOworICAgIEpTVGV4dFRyYWNrKiBqc1RleHRUcmFjayA9IGpzQ2FzdDxKU1RleHRU
cmFjayo+KGhhbmRsZS5nZXQoKS5hc0NlbGwoKSk7CiAgICAgVGV4dFRyYWNrKiB0ZXh0VHJhY2sg
PSBzdGF0aWNfY2FzdDxUZXh0VHJhY2sqPihqc1RleHRUcmFjay0+aW1wbCgpKTsKIAogICAgIC8v
IElmIHRoZSBjdWUgaXMgZmlyaW5nIGV2ZW50IGxpc3RlbmVycywgaXRzIHdyYXBwZXIgaXMgcmVh
Y2hhYmxlIGJlY2F1c2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
VGV4dFRyYWNrTGlzdEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1Rl
eHRUcmFja0xpc3RDdXN0b20uY3BwCmluZGV4IDhmYzFlNTZiMjJlN2JmN2YyNDVlMTJmNTE0YTEx
MDEyNzVmYjMzMDcuLmE5NjdmZTFmN2U2YjI0NTdiNzdhMDc5ZmU4N2ZiYmI4NTQ2YjkwMGIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVGV4dFRyYWNrTGlzdEN1c3Rv
bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNUZXh0VHJhY2tMaXN0Q3Vz
dG9tLmNwcApAQCAtMzYsNyArMzYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGJvb2wgSlNU
ZXh0VHJhY2tMaXN0T3duZXI6OmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKEpTQzo6SGFuZGxl
PEpTQzo6VW5rbm93bj4gaGFuZGxlLCB2b2lkKiwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7Ci0g
ICAgSlNUZXh0VHJhY2tMaXN0KiBqc1RleHRUcmFja0xpc3QgPSBzdGF0aWNfY2FzdDxKU1RleHRU
cmFja0xpc3QqPihoYW5kbGUuZ2V0KCkuYXNDZWxsKCkpOworICAgIEpTVGV4dFRyYWNrTGlzdCog
anNUZXh0VHJhY2tMaXN0ID0ganNDYXN0PEpTVGV4dFRyYWNrTGlzdCo+KGhhbmRsZS5nZXQoKS5h
c0NlbGwoKSk7CiAgICAgVGV4dFRyYWNrTGlzdCogdGV4dFRyYWNrTGlzdCA9IHN0YXRpY19jYXN0
PFRleHRUcmFja0xpc3QqPihqc1RleHRUcmFja0xpc3QtPmltcGwoKSk7CiAKICAgICAvLyBJZiB0
aGUgbGlzdCBpcyBmaXJpbmcgZXZlbnQgbGlzdGVuZXJzLCBpdHMgd3JhcHBlciBpcyByZWFjaGFi
bGUgYmVjYXVzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNUcmFj
a0N1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1RyYWNrQ3VzdG9tLmNw
cAppbmRleCAxZDljYTAwMGU3MGE2YWM1N2E5M2E1NTViMjljY2EzYjMxMGZjOTg0Li43Yjk3OTQ1
Y2ExMGE0MWRmMGNkZmI0N2MxZjZjMTc3NmUwMTYwYmFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU1RyYWNrQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU1RyYWNrQ3VzdG9tLmNwcApAQCAtNDIsNyArNDIsNyBAQCBUcmFja0Jhc2Uq
IHRvVHJhY2soSlNWYWx1ZSB2YWx1ZSkKIAogICAgIEpTT2JqZWN0KiBvYmplY3QgPSBhc09iamVj
dCh2YWx1ZSk7CiAgICAgaWYgKG9iamVjdC0+aW5oZXJpdHMoJkpTVGV4dFRyYWNrOjpzX2luZm8p
KQotICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SlNUZXh0VHJhY2sqPihvYmplY3QpLT5pbXBs
KCk7CisgICAgICAgIHJldHVybiBqc0Nhc3Q8SlNUZXh0VHJhY2sqPihvYmplY3QpLT5pbXBsKCk7
CiAgICAgCiAgICAgLy8gRklYTUU6IEZpbGwgaW4gYWRkaXRpb25hbCB0ZXN0cyBhbmQgY2FzdHMg
aGVyZSBmb3IgVmlkZW9UcmFjayBhbmQgQXVkaW9UcmFjayB3aGVuIAogICAgIC8vIHRoZXkgaGF2
ZSBiZWVuIGFkZGVkIHRvIFdlYkNvcmUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU1VpbnQxNkFycmF5Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTVWludDE2QXJyYXlDdXN0b20uY3BwCmluZGV4IGEyMWQzNTE3MGE5NDI5MGZlYzY2NTBh
NTcxYjVhN2Q0YTU1MmUyNDEuLjQ3YjQ0MDJiYWU3MjFhYjRiMzhlMmExMDUyMzgzYzYyN2MxNmZm
ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVWludDE2QXJyYXlD
dXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVWludDE2QXJyYXlD
dXN0b20uY3BwCkBAIC01MCw3ICs1MCw3IEBAIEpTQzo6SlNWYWx1ZSBKU1VpbnQxNkFycmF5Ojpz
ZXQoSlNDOjpFeGVjU3RhdGUqIGV4ZWMpCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
SlNVaW50MTZBcnJheUNvbnN0cnVjdG9yOjpjb25zdHJ1Y3RKU1VpbnQxNkFycmF5KEV4ZWNTdGF0
ZSogZXhlYykKIHsKLSAgICBKU1VpbnQxNkFycmF5Q29uc3RydWN0b3IqIGpzQ29uc3RydWN0b3Ig
PSBzdGF0aWNfY2FzdDxKU1VpbnQxNkFycmF5Q29uc3RydWN0b3IqPihleGVjLT5jYWxsZWUoKSk7
CisgICAgSlNVaW50MTZBcnJheUNvbnN0cnVjdG9yKiBqc0NvbnN0cnVjdG9yID0ganNDYXN0PEpT
VWludDE2QXJyYXlDb25zdHJ1Y3Rvcio+KGV4ZWMtPmNhbGxlZSgpKTsKICAgICBSZWZQdHI8VWlu
dDE2QXJyYXk+IGFycmF5ID0gY29uc3RydWN0QXJyYXlCdWZmZXJWaWV3PFVpbnQxNkFycmF5LCB1
bnNpZ25lZCBzaG9ydD4oZXhlYyk7CiAgICAgaWYgKCFhcnJheS5nZXQoKSkKICAgICAgICAgLy8g
RXhjZXB0aW9uIGhhcyBhbHJlYWR5IGJlZW4gdGhyb3duLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNVaW50MzJBcnJheUN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU1VpbnQzMkFycmF5Q3VzdG9tLmNwcAppbmRleCA4Mjg4MDQ0YmYxOWZk
OWRiM2RhZDAzMmM1ZmU3YWNmZGI5MTk4NTY1Li5hYThiODI2N2Y1YmY0MmI5ZmUyNjcwZTdjMTNm
MjY3ZWMxM2E2MTQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1Vp
bnQzMkFycmF5Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1Vp
bnQzMkFycmF5Q3VzdG9tLmNwcApAQCAtNTAsNyArNTAsNyBAQCBKU0M6OkpTVmFsdWUgSlNVaW50
MzJBcnJheTo6c2V0KEpTQzo6RXhlY1N0YXRlKiBleGVjKQogCiBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIEpTVWludDMyQXJyYXlDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0SlNVaW50MzJBcnJh
eShFeGVjU3RhdGUqIGV4ZWMpCiB7Ci0gICAgSlNVaW50MzJBcnJheUNvbnN0cnVjdG9yKiBqc0Nv
bnN0cnVjdG9yID0gc3RhdGljX2Nhc3Q8SlNVaW50MzJBcnJheUNvbnN0cnVjdG9yKj4oZXhlYy0+
Y2FsbGVlKCkpOworICAgIEpTVWludDMyQXJyYXlDb25zdHJ1Y3RvcioganNDb25zdHJ1Y3RvciA9
IGpzQ2FzdDxKU1VpbnQzMkFycmF5Q29uc3RydWN0b3IqPihleGVjLT5jYWxsZWUoKSk7CiAgICAg
UmVmUHRyPFVpbnQzMkFycmF5PiBhcnJheSA9IGNvbnN0cnVjdEFycmF5QnVmZmVyVmlldzxVaW50
MzJBcnJheSwgdW5zaWduZWQgaW50PihleGVjKTsKICAgICBpZiAoIWFycmF5LmdldCgpKQogICAg
ICAgICAvLyBFeGNlcHRpb24gaGFzIGFscmVhZHkgYmVlbiB0aHJvd24uCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1VpbnQ4QXJyYXlDdXN0b20uY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNVaW50OEFycmF5Q3VzdG9tLmNwcAppbmRleCAwYjI4NjQ3
Njg0MjAwNDRlMWQ0YWZmZDBlMzViMGQzNDkzYmI2MThlLi42YTRmYTFkZjVjZGVmMDJhNGFkYzQ2
MmUzMzkxZjgzM2U0Y2YxYzU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU1VpbnQ4QXJyYXlDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTVWludDhBcnJheUN1c3RvbS5jcHAKQEAgLTUwLDcgKzUwLDcgQEAgSlNDOjpKU1ZhbHVlIEpT
VWludDhBcnJheTo6c2V0KEpTQzo6RXhlY1N0YXRlKiBleGVjKQogCiBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIEpTVWludDhBcnJheUNvbnN0cnVjdG9yOjpjb25zdHJ1Y3RKU1VpbnQ4QXJy
YXkoRXhlY1N0YXRlKiBleGVjKQogewotICAgIEpTVWludDhBcnJheUNvbnN0cnVjdG9yKiBqc0Nv
bnN0cnVjdG9yID0gc3RhdGljX2Nhc3Q8SlNVaW50OEFycmF5Q29uc3RydWN0b3IqPihleGVjLT5j
YWxsZWUoKSk7CisgICAgSlNVaW50OEFycmF5Q29uc3RydWN0b3IqIGpzQ29uc3RydWN0b3IgPSBq
c0Nhc3Q8SlNVaW50OEFycmF5Q29uc3RydWN0b3IqPihleGVjLT5jYWxsZWUoKSk7CiAgICAgUmVm
UHRyPFVpbnQ4QXJyYXk+IGFycmF5ID0gY29uc3RydWN0QXJyYXlCdWZmZXJWaWV3PFVpbnQ4QXJy
YXksIHVuc2lnbmVkIGNoYXI+KGV4ZWMpOwogICAgIGlmICghYXJyYXkuZ2V0KCkpCiAgICAgICAg
IC8vIEV4Y2VwdGlvbiBoYXMgYWxyZWFkeSBiZWVuIHRocm93bi4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVWludDhDbGFtcGVkQXJyYXlDdXN0b20uY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNVaW50OENsYW1wZWRBcnJheUN1c3RvbS5jcHAKaW5k
ZXggMTU2NmQwNGQwMzZhN2UxYThmMGMyYzI2NGRiZGExNTU4MWYxZDkzOC4uMmQ1Y2E3ODVkNWJh
MGMzNWRlNTAxYzVjMTA4Njg0Zjk2YjI4NTEzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNVaW50OENsYW1wZWRBcnJheUN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNVaW50OENsYW1wZWRBcnJheUN1c3RvbS5jcHAKQEAgLTUwLDcg
KzUwLDcgQEAgSlNDOjpKU1ZhbHVlIEpTVWludDhDbGFtcGVkQXJyYXk6OnNldChKU0M6OkV4ZWNT
dGF0ZSogZXhlYykKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBKU1VpbnQ4Q2xhbXBl
ZEFycmF5Q29uc3RydWN0b3I6OmNvbnN0cnVjdEpTVWludDhDbGFtcGVkQXJyYXkoRXhlY1N0YXRl
KiBleGVjKQogewotICAgIEpTVWludDhDbGFtcGVkQXJyYXlDb25zdHJ1Y3RvcioganNDb25zdHJ1
Y3RvciA9IHN0YXRpY19jYXN0PEpTVWludDhDbGFtcGVkQXJyYXlDb25zdHJ1Y3Rvcio+KGV4ZWMt
PmNhbGxlZSgpKTsKKyAgICBKU1VpbnQ4Q2xhbXBlZEFycmF5Q29uc3RydWN0b3IqIGpzQ29uc3Ry
dWN0b3IgPSBqc0Nhc3Q8SlNVaW50OENsYW1wZWRBcnJheUNvbnN0cnVjdG9yKj4oZXhlYy0+Y2Fs
bGVlKCkpOwogICAgIFJlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gYXJyYXkgPSBjb25zdHJ1Y3RB
cnJheUJ1ZmZlclZpZXc8VWludDhDbGFtcGVkQXJyYXksIHVuc2lnbmVkIGNoYXI+KGV4ZWMpOwog
ICAgIGlmICghYXJyYXkuZ2V0KCkpCiAgICAgICAgIC8vIEV4Y2VwdGlvbiBoYXMgYWxyZWFkeSBi
ZWVuIHRocm93bi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2Vi
S2l0TXV0YXRpb25PYnNlcnZlckN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU1dlYktpdE11dGF0aW9uT2JzZXJ2ZXJDdXN0b20uY3BwCmluZGV4IDQ1NWY0ZDRlMDliNWQx
OWM4MzhiMjgyMjBkYjg3MzBmNThkMWQyMDIuLmFkZmNmMDczZmI2YTRiZGVmOGY1ZGViZmI3ZGQ3
MmUxOGQ4Zjc1ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2Vi
S2l0TXV0YXRpb25PYnNlcnZlckN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNXZWJLaXRNdXRhdGlvbk9ic2VydmVyQ3VzdG9tLmNwcApAQCAtNTksNyArNTksNyBA
QCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpTV2ViS2l0TXV0YXRpb25PYnNlcnZlckNv
bnN0cnVjdG9yOjpjb25zdHJ1Y3RKU1dlYgogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzVW5kZWZpbmVkKCkpOwogICAgIH0KIAotICAgIEpTV2ViS2l0TXV0YXRpb25PYnNlcnZlckNv
bnN0cnVjdG9yKiBqc0NvbnN0cnVjdG9yID0gc3RhdGljX2Nhc3Q8SlNXZWJLaXRNdXRhdGlvbk9i
c2VydmVyQ29uc3RydWN0b3IqPihleGVjLT5jYWxsZWUoKSk7CisgICAgSlNXZWJLaXRNdXRhdGlv
bk9ic2VydmVyQ29uc3RydWN0b3IqIGpzQ29uc3RydWN0b3IgPSBqc0Nhc3Q8SlNXZWJLaXRNdXRh
dGlvbk9ic2VydmVyQ29uc3RydWN0b3IqPihleGVjLT5jYWxsZWUoKSk7CiAgICAgUmVmUHRyPE11
dGF0aW9uQ2FsbGJhY2s+IGNhbGxiYWNrID0gSlNNdXRhdGlvbkNhbGxiYWNrOjpjcmVhdGUob2Jq
ZWN0LCBqc0NvbnN0cnVjdG9yLT5nbG9iYWxPYmplY3QoKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShhc09iamVjdCh0b0pTKGV4ZWMsIGpzQ29uc3RydWN0b3ItPmdsb2JhbE9iamVjdCgp
LCBXZWJLaXRNdXRhdGlvbk9ic2VydmVyOjpjcmVhdGUoY2FsbGJhY2sucmVsZWFzZSgpKSkpKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2ViS2l0UG9pbnRD
dXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXZWJLaXRQb2ludEN1c3Rv
bS5jcHAKaW5kZXggZTFiMjBjZWRmMTE5MjI2OGRmOTQwNWM1MjNiZGUwMmExMDAzYzIyOC4uYWEx
NGU2NWEyYTQyNWY0ZTAzNjBkYTQ0NTZhMjhiNjIzZjRkYWI3ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNXZWJLaXRQb2ludEN1c3RvbS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNXZWJLaXRQb2ludEN1c3RvbS5jcHAKQEAgLTM0LDcgKzM0
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IEpTV2ViS2l0UG9pbnRDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0SlNXZWJLaXRQb2ludChFeGVjU3Rh
dGUqIGV4ZWMpCiB7Ci0gICAgSlNXZWJLaXRQb2ludENvbnN0cnVjdG9yKiBqc0NvbnN0cnVjdG9y
ID0gc3RhdGljX2Nhc3Q8SlNXZWJLaXRQb2ludENvbnN0cnVjdG9yKj4oZXhlYy0+Y2FsbGVlKCkp
OworICAgIEpTV2ViS2l0UG9pbnRDb25zdHJ1Y3RvcioganNDb25zdHJ1Y3RvciA9IGpzQ2FzdDxK
U1dlYktpdFBvaW50Q29uc3RydWN0b3IqPihleGVjLT5jYWxsZWUoKSk7CiAKICAgICBmbG9hdCB4
ID0gMDsKICAgICBmbG9hdCB5ID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTV2ViU29ja2V0Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTV2ViU29ja2V0Q3VzdG9tLmNwcAppbmRleCBjOGUwMDY5ZWZjZDdmMzRkZDc5NDJhM2I0ZjUx
MjA1ZjBiMGQ0MjE3Li43MWFkNTdhZGQ1ZTJiZjNkYzNiODk2Mzg5OGY2OTA3NWU2MzFkMjFkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dlYlNvY2tldEN1c3RvbS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXZWJTb2NrZXRDdXN0b20uY3Bw
CkBAIC01Miw3ICs1Miw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBKU1dlYlNvY2tldENvbnN0cnVjdG9yOjpjb25zdHJ1Y3RKU1dlYlNvY2tl
dChFeGVjU3RhdGUqIGV4ZWMpCiB7Ci0gICAgSlNXZWJTb2NrZXRDb25zdHJ1Y3RvcioganNDb25z
dHJ1Y3RvciA9IHN0YXRpY19jYXN0PEpTV2ViU29ja2V0Q29uc3RydWN0b3IqPihleGVjLT5jYWxs
ZWUoKSk7CisgICAgSlNXZWJTb2NrZXRDb25zdHJ1Y3RvcioganNDb25zdHJ1Y3RvciA9IGpzQ2Fz
dDxKU1dlYlNvY2tldENvbnN0cnVjdG9yKj4oZXhlYy0+Y2FsbGVlKCkpOwogICAgIFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQgPSBqc0NvbnN0cnVjdG9yLT5zY3JpcHRFeGVjdXRpb25D
b250ZXh0KCk7CiAgICAgaWYgKCFjb250ZXh0KQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9y
KGV4ZWMsIGNyZWF0ZVJlZmVyZW5jZUVycm9yKGV4ZWMsICJXZWJTb2NrZXQgY29uc3RydWN0b3Ig
YXNzb2NpYXRlZCBkb2N1bWVudCBpcyB1bmF2YWlsYWJsZSIpKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyQ29udGV4dEJhc2UuY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJDb250ZXh0QmFzZS5jcHAKaW5kZXggZTc5YzZlNGJk
NDMyMWU1YzA3N2YwODc4ZWZmNDUyOGFmZGE1OTVjNy4uMmMxM2E5ZDc3ZjYzOGY5NzI3MmE2OGVl
NDlkYjZjYzdjNDYwMTEyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNXb3JrZXJDb250ZXh0QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNXb3JrZXJDb250ZXh0QmFzZS5jcHAKQEAgLTkzLDcgKzkzLDcgQEAgSlNEZWRpY2F0ZWRXb3Jr
ZXJDb250ZXh0KiB0b0pTRGVkaWNhdGVkV29ya2VyQ29udGV4dChKU1ZhbHVlIHZhbHVlKQogICAg
ICAgICByZXR1cm4gMDsKICAgICBjb25zdCBDbGFzc0luZm8qIGNsYXNzSW5mbyA9IGFzT2JqZWN0
KHZhbHVlKS0+Y2xhc3NJbmZvKCk7CiAgICAgaWYgKGNsYXNzSW5mbyA9PSAmSlNEZWRpY2F0ZWRX
b3JrZXJDb250ZXh0OjpzX2luZm8pCi0gICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxKU0RlZGlj
YXRlZFdvcmtlckNvbnRleHQqPihhc09iamVjdCh2YWx1ZSkpOworICAgICAgICByZXR1cm4ganND
YXN0PEpTRGVkaWNhdGVkV29ya2VyQ29udGV4dCo+KGFzT2JqZWN0KHZhbHVlKSk7CiAgICAgcmV0
dXJuIDA7CiB9CiAKQEAgLTEwNCw3ICsxMDQsNyBAQCBKU1NoYXJlZFdvcmtlckNvbnRleHQqIHRv
SlNTaGFyZWRXb3JrZXJDb250ZXh0KEpTVmFsdWUgdmFsdWUpCiAgICAgICAgIHJldHVybiAwOwog
ICAgIGNvbnN0IENsYXNzSW5mbyogY2xhc3NJbmZvID0gYXNPYmplY3QodmFsdWUpLT5jbGFzc0lu
Zm8oKTsKICAgICBpZiAoY2xhc3NJbmZvID09ICZKU1NoYXJlZFdvcmtlckNvbnRleHQ6OnNfaW5m
bykKLSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEpTU2hhcmVkV29ya2VyQ29udGV4dCo+KGFz
T2JqZWN0KHZhbHVlKSk7CisgICAgICAgIHJldHVybiBqc0Nhc3Q8SlNTaGFyZWRXb3JrZXJDb250
ZXh0Kj4oYXNPYmplY3QodmFsdWUpKTsKICAgICByZXR1cm4gMDsKIH0KICNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJDdXN0b20uY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJDdXN0b20uY3BwCmluZGV4IGNhMGY3NjE5
NThkYzMwZWU1MmYwMDI2MDU4Yjc0ODVjNzc3NDg5MzQuLjcwYmQ4ODdmMTFmYmMyZDU0ZGEzNzRm
ZWQ2Mzk2MTkwNGQ2NTYxZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTV29ya2VyQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dv
cmtlckN1c3RvbS5jcHAKQEAgLTUyLDcgKzUyLDcgQEAgSlNDOjpKU1ZhbHVlIEpTV29ya2VyOjp3
ZWJraXRQb3N0TWVzc2FnZShKU0M6OkV4ZWNTdGF0ZSogZXhlYykKIAogRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBKU1dvcmtlckNvbnN0cnVjdG9yOjpjb25zdHJ1Y3RKU1dvcmtlcihFeGVj
U3RhdGUqIGV4ZWMpCiB7Ci0gICAgSlNXb3JrZXJDb25zdHJ1Y3RvcioganNDb25zdHJ1Y3RvciA9
IHN0YXRpY19jYXN0PEpTV29ya2VyQ29uc3RydWN0b3IqPihleGVjLT5jYWxsZWUoKSk7CisgICAg
SlNXb3JrZXJDb25zdHJ1Y3RvcioganNDb25zdHJ1Y3RvciA9IGpzQ2FzdDxKU1dvcmtlckNvbnN0
cnVjdG9yKj4oZXhlYy0+Y2FsbGVlKCkpOwogCiAgICAgaWYgKCFleGVjLT5hcmd1bWVudENvdW50
KCkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4
ZWMsICJOb3QgZW5vdWdoIGFyZ3VtZW50cyIpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTWFNMVFByb2Nlc3NvckN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU1hTTFRQcm9jZXNzb3JDdXN0b20uY3BwCmluZGV4IGRhODAwOTdkZGRmZGM3
ZDc2ZmQ2NzQ2OWUxNTlhNjZmNjQzODYxNDUuLjcwYjY5ODA5ZDc4N2ZiNGMxMjExZWViNWM3YzAw
MDNiODZiYmI5YTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTWFNM
VFByb2Nlc3NvckN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNY
U0xUUHJvY2Vzc29yQ3VzdG9tLmNwcApAQCAtNTAsNyArNTAsNyBAQCBKU1ZhbHVlIEpTWFNMVFBy
b2Nlc3Nvcjo6aW1wb3J0U3R5bGVzaGVldChFeGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAgSlNWYWx1
ZSBub2RlVmFsID0gZXhlYy0+YXJndW1lbnQoMCk7CiAgICAgaWYgKG5vZGVWYWwuaW5oZXJpdHMo
JkpTTm9kZTo6c19pbmZvKSkgewotICAgICAgICBKU05vZGUqIG5vZGUgPSBzdGF0aWNfY2FzdDxK
U05vZGUqPihhc09iamVjdChub2RlVmFsKSk7CisgICAgICAgIEpTTm9kZSogbm9kZSA9IGpzQ2Fz
dDxKU05vZGUqPihhc09iamVjdChub2RlVmFsKSk7CiAgICAgICAgIGltcGwoKS0+aW1wb3J0U3R5
bGVzaGVldChub2RlLT5pbXBsKCkpOwogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKICAg
ICB9CkBAIC02Myw4ICs2Myw4IEBAIEpTVmFsdWUgSlNYU0xUUHJvY2Vzc29yOjp0cmFuc2Zvcm1U
b0ZyYWdtZW50KEV4ZWNTdGF0ZSogZXhlYykKICAgICBKU1ZhbHVlIG5vZGVWYWwgPSBleGVjLT5h
cmd1bWVudCgwKTsKICAgICBKU1ZhbHVlIGRvY1ZhbCA9IGV4ZWMtPmFyZ3VtZW50KDEpOwogICAg
IGlmIChub2RlVmFsLmluaGVyaXRzKCZKU05vZGU6OnNfaW5mbykgJiYgZG9jVmFsLmluaGVyaXRz
KCZKU0RvY3VtZW50OjpzX2luZm8pKSB7Ci0gICAgICAgIFdlYkNvcmU6Ok5vZGUqIG5vZGUgPSBz
dGF0aWNfY2FzdDxKU05vZGUqPihhc09iamVjdChub2RlVmFsKSktPmltcGwoKTsKLSAgICAgICAg
RG9jdW1lbnQqIGRvYyA9IHN0YXRpY19jYXN0PERvY3VtZW50Kj4oc3RhdGljX2Nhc3Q8SlNEb2N1
bWVudCo+KGFzT2JqZWN0KGRvY1ZhbCkpLT5pbXBsKCkpOworICAgICAgICBXZWJDb3JlOjpOb2Rl
KiBub2RlID0ganNDYXN0PEpTTm9kZSo+KGFzT2JqZWN0KG5vZGVWYWwpKS0+aW1wbCgpOworICAg
ICAgICBEb2N1bWVudCogZG9jID0gc3RhdGljX2Nhc3Q8RG9jdW1lbnQqPihqc0Nhc3Q8SlNEb2N1
bWVudCo+KGFzT2JqZWN0KGRvY1ZhbCkpLT5pbXBsKCkpOwogICAgICAgICByZXR1cm4gdG9KUyhl
eGVjLCBnbG9iYWxPYmplY3QoKSwgaW1wbCgpLT50cmFuc2Zvcm1Ub0ZyYWdtZW50KG5vZGUsIGRv
YykuZ2V0KCkpOwogICAgIH0KICAgICAvLyBUaHJvdyBleGNlcHRpb24/CkBAIC03NSw3ICs3NSw3
IEBAIEpTVmFsdWUgSlNYU0xUUHJvY2Vzc29yOjp0cmFuc2Zvcm1Ub0RvY3VtZW50KEV4ZWNTdGF0
ZSogZXhlYykKIHsKICAgICBKU1ZhbHVlIG5vZGVWYWwgPSBleGVjLT5hcmd1bWVudCgwKTsKICAg
ICBpZiAobm9kZVZhbC5pbmhlcml0cygmSlNOb2RlOjpzX2luZm8pKSB7Ci0gICAgICAgIEpTTm9k
ZSogbm9kZSA9IHN0YXRpY19jYXN0PEpTTm9kZSo+KGFzT2JqZWN0KG5vZGVWYWwpKTsKKyAgICAg
ICAgSlNOb2RlKiBub2RlID0ganNDYXN0PEpTTm9kZSo+KGFzT2JqZWN0KG5vZGVWYWwpKTsKICAg
ICAgICAgUmVmUHRyPERvY3VtZW50PiByZXN1bHREb2N1bWVudCA9IGltcGwoKS0+dHJhbnNmb3Jt
VG9Eb2N1bWVudChub2RlLT5pbXBsKCkpOwogICAgICAgICBpZiAocmVzdWx0RG9jdW1lbnQpCiAg
ICAgICAgICAgICByZXR1cm4gdG9KUyhleGVjLCBnbG9iYWxPYmplY3QoKSwgcmVzdWx0RG9jdW1l
bnQuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0
Q2FsbFN0YWNrRmFjdG9yeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRD
YWxsU3RhY2tGYWN0b3J5LmNwcAppbmRleCA2M2ViZTYyZThkZGQ0Zjk4Y2NhZDk5NjBkNzZhY2Zk
NjI1MGU0MDUzLi5jY2Y2NzNmZDQxMjUzZGRiZGNjMGQ3OTRmMTFkNjhjOWY0YjZmYTJkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDYWxsU3RhY2tGYWN0b3J5
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDYWxsU3RhY2tGYWN0
b3J5LmNwcApAQCAtOTAsNyArOTAsNyBAQCBQYXNzUmVmUHRyPFNjcmlwdENhbGxTdGFjaz4gY3Jl
YXRlU2NyaXB0Q2FsbFN0YWNrRm9ySW5zcGVjdG9yKEpTQzo6RXhlY1N0YXRlKiBleAogewogICAg
IHNpemVfdCBtYXhTdGFja1NpemUgPSAxOwogICAgIGlmIChJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246Omhhc0Zyb250ZW5kcygpKSB7Ci0gICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQgPSBzdGF0aWNfY2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGV4
ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKKyAg
ICAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCA9IGpz
Q2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSktPnNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKICAgICAgICAgaWYgKEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6aGFzRnJvbnRlbmRGb3JTY3JpcHRDb250ZXh0KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQp
KQogICAgICAgICAgICAgbWF4U3RhY2tTaXplID0gU2NyaXB0Q2FsbFN0YWNrOjptYXhDYWxsU3Rh
Y2tTaXplVG9DYXB0dXJlOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1NjcmlwdENvbnRyb2xsZXJNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9TY3JpcHRDb250cm9sbGVyTWFjLm1tCmluZGV4IGY3YWQzZmZhYjQ2NGRkMmE0ZWJjYmNmN2Qy
MDc4MWYyYzZlZWY2NDcuLjUwYTVhN2U3MTMyNDg5OTVhYjQ3YmVhZjQxZjkxNTZlMzMxZGZkYzAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXJN
YWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlck1h
Yy5tbQpAQCAtMTQ4LDcgKzE0OCw3IEBAIHN0YXRpYyB2b2lkIHVwZGF0ZVN0eWxlSWZOZWVkZWRG
b3JCaW5kaW5ncyhKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNPYmplY3QqIHJvb3RPCiAgICAgaWYg
KCFyb290T2JqZWN0KQogICAgICAgICByZXR1cm47CiAKLSAgICBKU0RPTVdpbmRvdyogd2luZG93
ID0gc3RhdGljX2Nhc3Q8SlNET01XaW5kb3cqPihyb290T2JqZWN0KTsKKyAgICBKU0RPTVdpbmRv
dyogd2luZG93ID0gSlNDOjpqc0Nhc3Q8SlNET01XaW5kb3cqPihyb290T2JqZWN0KTsKICAgICBp
ZiAoIXdpbmRvdykKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TY3JpcHREZWJ1Z1NlcnZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9TY3JpcHREZWJ1Z1NlcnZlci5jcHAKaW5kZXggMTBkZWQ3MDA3MDc5NDAyM2RjN2Vk
MjEyOTlmY2ZiMjQ4NjEyMTdkMC4uMWQ2MTE3Y2ZkZWMyMzIxNjQ1MDVlZmQ5YTY0N2U1Y2YwZTE1
NWQ0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0RGVidWdT
ZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdERlYnVnU2Vy
dmVyLmNwcApAQCAtMjExLDcgKzIxMSw3IEBAIHZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OmRpc3Bh
dGNoRGlkUGF1c2UoU2NyaXB0RGVidWdMaXN0ZW5lciogbGlzdGVuZXIpCiAgICAgSlNWYWx1ZSBq
c0NhbGxGcmFtZTsKICAgICB7CiAgICAgICAgIGlmIChtX2N1cnJlbnRDYWxsRnJhbWUtPmlzVmFs
aWQoKSAmJiBnbG9iYWxPYmplY3QtPmluaGVyaXRzKCZKU0RPTUdsb2JhbE9iamVjdDo6c19pbmZv
KSkgewotICAgICAgICAgICAgSlNET01HbG9iYWxPYmplY3QqIGRvbUdsb2JhbE9iamVjdCA9IHN0
YXRpY19jYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KTsKKyAgICAgICAgICAg
IEpTRE9NR2xvYmFsT2JqZWN0KiBkb21HbG9iYWxPYmplY3QgPSBqc0Nhc3Q8SlNET01HbG9iYWxP
YmplY3QqPihnbG9iYWxPYmplY3QpOwogICAgICAgICAgICAgSlNMb2NrIGxvY2soU2lsZW5jZUFz
c2VydGlvbnNPbmx5KTsKICAgICAgICAgICAgIGpzQ2FsbEZyYW1lID0gdG9KUyhzdGF0ZSwgZG9t
R2xvYmFsT2JqZWN0LCBtX2N1cnJlbnRDYWxsRnJhbWUuZ2V0KCkpOwogICAgICAgICB9IGVsc2UK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdE9iamVjdC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRPYmplY3QuY3BwCmluZGV4IDY3NjBl
NDdiZjkzMjI2MjY5Y2YzOWVlMGM3NGZiYjEzNTYyN2RiOGYuLjFmY2Q5Y2I4MDI2MzQ5MDk3YWE2
MmMyZDgxOTUwZTIwMmYxMzQxNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL1NjcmlwdE9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2Ny
aXB0T2JqZWN0LmNwcApAQCAtNzAsNyArNzAsNyBAQCBib29sIFNjcmlwdEdsb2JhbE9iamVjdDo6
c2V0KFNjcmlwdFN0YXRlKiBzY3JpcHRTdGF0ZSwgY29uc3QgY2hhciogbmFtZSwgY29uc3QgUwog
Ym9vbCBTY3JpcHRHbG9iYWxPYmplY3Q6OnNldChTY3JpcHRTdGF0ZSogc2NyaXB0U3RhdGUsIGNv
bnN0IGNoYXIqIG5hbWUsIEluc3BlY3RvckZyb250ZW5kSG9zdCogdmFsdWUpCiB7CiAgICAgSlNM
b2NrIGxvY2soU2lsZW5jZUFzc2VydGlvbnNPbmx5KTsKLSAgICBKU0RPTUdsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0ID0gc3RhdGljX2Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihzY3JpcHRTdGF0
ZS0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKTsKKyAgICBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0ID0ganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oc2NyaXB0U3RhdGUtPmxleGljYWxH
bG9iYWxPYmplY3QoKSk7CiAgICAgZ2xvYmFsT2JqZWN0LT5wdXREaXJlY3Qoc2NyaXB0U3RhdGUt
Pmdsb2JhbERhdGEoKSwgSWRlbnRpZmllcihzY3JpcHRTdGF0ZSwgbmFtZSksIHRvSlMoc2NyaXB0
U3RhdGUsIGdsb2JhbE9iamVjdCwgdmFsdWUpKTsKICAgICByZXR1cm4gaGFuZGxlRXhjZXB0aW9u
KHNjcmlwdFN0YXRlKTsKIH0KQEAgLTc4LDcgKzc4LDcgQEAgYm9vbCBTY3JpcHRHbG9iYWxPYmpl
Y3Q6OnNldChTY3JpcHRTdGF0ZSogc2NyaXB0U3RhdGUsIGNvbnN0IGNoYXIqIG5hbWUsIEluc3Bl
Y3QKIGJvb2wgU2NyaXB0R2xvYmFsT2JqZWN0OjpzZXQoU2NyaXB0U3RhdGUqIHNjcmlwdFN0YXRl
LCBjb25zdCBjaGFyKiBuYW1lLCBJbmplY3RlZFNjcmlwdEhvc3QqIHZhbHVlKQogewogICAgIEpT
TG9jayBsb2NrKFNpbGVuY2VBc3NlcnRpb25zT25seSk7Ci0gICAgSlNET01HbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCA9IHN0YXRpY19jYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oc2NyaXB0U3Rh
dGUtPmxleGljYWxHbG9iYWxPYmplY3QoKSk7CisgICAgSlNET01HbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KHNjcmlwdFN0YXRlLT5sZXhpY2Fs
R2xvYmFsT2JqZWN0KCkpOwogICAgIGdsb2JhbE9iamVjdC0+cHV0RGlyZWN0KHNjcmlwdFN0YXRl
LT5nbG9iYWxEYXRhKCksIElkZW50aWZpZXIoc2NyaXB0U3RhdGUsIG5hbWUpLCB0b0pTKHNjcmlw
dFN0YXRlLCBnbG9iYWxPYmplY3QsIHZhbHVlKSk7CiAgICAgcmV0dXJuIGhhbmRsZUV4Y2VwdGlv
bihzY3JpcHRTdGF0ZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9TY3JpcHRTdGF0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRTdGF0
ZS5jcHAKaW5kZXggZWI2NmJkY2ZhMWViMzcxMGYwNWQ3ZDc0ZDc0ZjAzYmExN2U3N2VlMy4uNzgw
Y2E0ZDlkMjNjODdlNDQ4N2Q1MmFkNzU3Y2VlZWZlNTZhMWViYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0U3RhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1NjcmlwdFN0YXRlLmNwcApAQCAtNjgsNyArNjgsNyBAQCBET01XaW5kb3cq
IGRvbVdpbmRvd0Zyb21TY3JpcHRTdGF0ZShTY3JpcHRTdGF0ZSogc2NyaXB0U3RhdGUpCiAgICAg
SlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gc2NyaXB0U3RhdGUtPmxleGljYWxH
bG9iYWxPYmplY3QoKTsKICAgICBpZiAoIWdsb2JhbE9iamVjdC0+aW5oZXJpdHMoJkpTRE9NV2lu
ZG93QmFzZTo6c19pbmZvKSkKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgcmV0dXJuIHN0YXRpY19j
YXN0PEpTRE9NV2luZG93QmFzZSo+KGdsb2JhbE9iamVjdCktPmltcGwoKTsKKyAgICByZXR1cm4g
SlNDOjpqc0Nhc3Q8SlNET01XaW5kb3dCYXNlKj4oZ2xvYmFsT2JqZWN0KS0+aW1wbCgpOwogfQog
CiBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0RnJvbVNjcmlw
dFN0YXRlKFNjcmlwdFN0YXRlKiBzY3JpcHRTdGF0ZSkKQEAgLTc2LDcgKzc2LDcgQEAgU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dEZyb21TY3JpcHRTdGF0ZShT
Y3JpcHRTdGF0ZSogc2NyaXAKICAgICBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qg
PSBzY3JpcHRTdGF0ZS0+bGV4aWNhbEdsb2JhbE9iamVjdCgpOwogICAgIGlmICghZ2xvYmFsT2Jq
ZWN0LT5pbmhlcml0cygmSlNET01HbG9iYWxPYmplY3Q6OnNfaW5mbykpCiAgICAgICAgIHJldHVy
biAwOwotICAgIHJldHVybiBzdGF0aWNfY2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9i
amVjdCktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKKyAgICByZXR1cm4gSlNDOjpqc0Nhc3Q8
SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0
KCk7CiB9CiAKIGJvb2wgZXZhbEVuYWJsZWQoU2NyaXB0U3RhdGUqIHNjcmlwdFN0YXRlKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5j
cHAKaW5kZXggYjI1OTI5MDZiMWM1YTA1ODg1OTdhM2JkZWRiMmQxMWMxOTI4MzJkZS4uMzE2NDA4
YjZkZmM0ODEwMzAwZGZjNTE5NGFiMGZhM2FmM2E5ZDM4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCkBAIC0zNzAsNyAr
MzcwLDcgQEAgcHJpdmF0ZToKICAgICB7CiAgICAgICAgIGlmICghaW5wdXQpCiAgICAgICAgICAg
ICByZXR1cm47Ci0gICAgICAgIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBzdGF0
aWNfY2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KG1fZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgp
KTsKKyAgICAgICAgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGpzQ2FzdDxKU0RP
TUdsb2JhbE9iamVjdCo+KG1fZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKTsKICAgICAgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBpbnB1dC0+c2l6ZSgpOyBpKyspIHsKICAgICAgICAgICAg
IEpTQzo6SlNWYWx1ZSB2YWx1ZSA9IHRvSlMobV9leGVjLCBnbG9iYWxPYmplY3QsIGlucHV0LT5h
dChpKS5nZXQoKSk7CiAgICAgICAgICAgICBKU0M6OkpTT2JqZWN0KiBvYmogPSB2YWx1ZS5nZXRP
YmplY3QoKTsKQEAgLTUzOSw3ICs1MzksNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgY29kZSA9
IFZhbGlkYXRpb25FcnJvcjsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9Ci0g
ICAgICAgIEpTVmFsdWUgYnVmZmVyT2JqID0gdG9KUyhtX2V4ZWMsIHN0YXRpY19jYXN0PEpTRE9N
R2xvYmFsT2JqZWN0Kj4obV9leGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLCBhcnJheUJ1ZmZl
ci5nZXQoKSk7CisgICAgICAgIEpTVmFsdWUgYnVmZmVyT2JqID0gdG9KUyhtX2V4ZWMsIGpzQ2Fz
dDxKU0RPTUdsb2JhbE9iamVjdCo+KG1fZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKSwgYXJy
YXlCdWZmZXIuZ2V0KCkpOwogICAgICAgICByZXR1cm4gZHVtcElmVGVybWluYWwoYnVmZmVyT2Jq
LCBjb2RlKTsKICAgICB9CiAKQEAgLTEzNTAsNyArMTM1MCw3IEBAIHByaXZhdGU6CiAgICAgdGVt
cGxhdGU8Y2xhc3MgVD4KICAgICBKU1ZhbHVlIGdldEpTVmFsdWUoVCogbmF0aXZlT2JqKQogICAg
IHsKLSAgICAgICAgcmV0dXJuIHRvSlMobV9leGVjLCBzdGF0aWNfY2FzdDxKU0RPTUdsb2JhbE9i
amVjdCo+KG1fZ2xvYmFsT2JqZWN0KSwgbmF0aXZlT2JqKTsKKyAgICAgICAgcmV0dXJuIHRvSlMo
bV9leGVjLCBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihtX2dsb2JhbE9iamVjdCksIG5hdGl2
ZU9iaik7CiAgICAgfQogCiAgICAgSlNWYWx1ZSByZWFkVGVybWluYWwoKQpAQCAtMTM5Myw3ICsx
MzkzLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOwogICAg
ICAgICAgICAgaWYgKCFtX2lzRE9NR2xvYmFsT2JqZWN0KQogICAgICAgICAgICAgICAgIHJldHVy
biBqc051bGwoKTsKLSAgICAgICAgICAgIHJldHVybiB0b0pTKG1fZXhlYywgc3RhdGljX2Nhc3Q8
SlNET01HbG9iYWxPYmplY3QqPihtX2dsb2JhbE9iamVjdCksIGZpbGUuZ2V0KCkpOworICAgICAg
ICAgICAgcmV0dXJuIHRvSlMobV9leGVjLCBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihtX2ds
b2JhbE9iamVjdCksIGZpbGUuZ2V0KCkpOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgRmlsZUxp
c3RUYWc6IHsKICAgICAgICAgICAgIHVuc2lnbmVkIGxlbmd0aCA9IDA7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL1dlYlNjcmlwdE9iamVjdC5tbSBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL29iamMvV2ViU2NyaXB0T2JqZWN0Lm1tCmluZGV4IGQwZGY3YmY1NzM3
OTEzM2JkNTBkZTE3ZGU3ZGI0OTM5NzgyMGEwMmMuLmFlZWY5NDEzMWYzNzk3NWVhZDBmYmFmODVh
MzMyNTYzMDRlOTBiZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMv
V2ViU2NyaXB0T2JqZWN0Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvV2Vi
U2NyaXB0T2JqZWN0Lm1tCkBAIC0yMjEsNyArMjIxLDcgQEAgc3RhdGljIHZvaWQgX2RpZEV4ZWN1
dGUoV2ViU2NyaXB0T2JqZWN0ICpvYmopCiAgICAgaWYgKCFfcHJpdmF0ZS0+b3JpZ2luUm9vdE9i
amVjdC0+aXNWYWxpZCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8SlNET01XaW5kb3dCYXNlKj4ocm9vdC0+Z2xvYmFsT2JqZWN0KCkpLT5hbGxvd3NB
Y2Nlc3NGcm9tKF9wcml2YXRlLT5vcmlnaW5Sb290T2JqZWN0LT5nbG9iYWxPYmplY3QoKSk7Cisg
ICAgcmV0dXJuIGpzQ2FzdDxKU0RPTVdpbmRvd0Jhc2UqPihyb290LT5nbG9iYWxPYmplY3QoKSkt
PmFsbG93c0FjY2Vzc0Zyb20oX3ByaXZhdGUtPm9yaWdpblJvb3RPYmplY3QtPmdsb2JhbE9iamVj
dCgpKTsKIH0KIAogLSAodm9pZClkZWFsbG9jCkBAIC01MTksNyArNTE5LDcgQEAgc3RhdGljIHZv
aWQgZ2V0TGlzdEZyb21OU0FycmF5KEV4ZWNTdGF0ZSAqZXhlYywgTlNBcnJheSAqYXJyYXksIFJv
b3RPYmplY3QqIHJvb3QKIAogICAgICAgICBpZiAob2JqZWN0LT5pbmhlcml0cygmSlNIVE1MRWxl
bWVudDo6c19pbmZvKSkgewogICAgICAgICAgICAgLy8gUGx1Z2luIGVsZW1lbnRzIGNhY2hlIHRo
ZSBpbnN0YW5jZSBpbnRlcm5hbGx5LgotICAgICAgICAgICAgSFRNTEVsZW1lbnQqIGVsID0gc3Rh
dGljX2Nhc3Q8SlNIVE1MRWxlbWVudCo+KG9iamVjdCktPmltcGwoKTsKKyAgICAgICAgICAgIEhU
TUxFbGVtZW50KiBlbCA9IGpzQ2FzdDxKU0hUTUxFbGVtZW50Kj4ob2JqZWN0KS0+aW1wbCgpOwog
ICAgICAgICAgICAgT2JqY0luc3RhbmNlKiBpbnN0YW5jZSA9IHN0YXRpY19jYXN0PE9iamNJbnN0
YW5jZSo+KHBsdWdpbkluc3RhbmNlKGVsKSk7CiAgICAgICAgICAgICBpZiAoaW5zdGFuY2UpCiAg
ICAgICAgICAgICAgICAgcmV0dXJuIGluc3RhbmNlLT5nZXRPYmplY3QoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KaW5kZXggZjc3
ODc4YzYyYzE1NDMzODk5ZjFlZGVjZDNmOTdkZmI2NGE3ZWI5NS4uNGVjZTIwYTQ4MjkwNjg1NDYw
OTI4NjYzZDJkMDFjNzFlZTU4Mjc2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KQEAgLTM5Miw3ICszOTIsNyBAQCBzdWIgR2Vu
ZXJhdGVHZXRPd25Qcm9wZXJ0eVNsb3RCb2R5CiAKICAgICBpZiAoJGludGVyZmFjZU5hbWUgZXEg
Ik5hbWVkTm9kZU1hcCIgb3IgJGludGVyZmFjZU5hbWUgZXEgIkhUTUxDb2xsZWN0aW9uIiBvciAk
aW50ZXJmYWNlTmFtZSBlcSAiSFRNTEFsbENvbGxlY3Rpb24iKSB7CiAgICAgICAgIHB1c2goQGdl
dE93blByb3BlcnR5U2xvdEltcGwsICIgICAgJHtuYW1lc3BhY2VNYXliZX1KU1ZhbHVlIHByb3Rv
ID0gdGhpc09iamVjdC0+cHJvdG90eXBlKCk7XG4iKTsKLSAgICAgICAgcHVzaChAZ2V0T3duUHJv
cGVydHlTbG90SW1wbCwgIiAgICBpZiAocHJvdG8uaXNPYmplY3QoKSAmJiBzdGF0aWNfY2FzdDwk
e25hbWVzcGFjZU1heWJlfUpTT2JqZWN0Kj4oYXNPYmplY3QocHJvdG8pKS0+aGFzUHJvcGVydHko
ZXhlYywgcHJvcGVydHlOYW1lKSlcbiIpOworICAgICAgICBwdXNoKEBnZXRPd25Qcm9wZXJ0eVNs
b3RJbXBsLCAiICAgIGlmIChwcm90by5pc09iamVjdCgpICYmIGpzQ2FzdDwke25hbWVzcGFjZU1h
eWJlfUpTT2JqZWN0Kj4oYXNPYmplY3QocHJvdG8pKS0+aGFzUHJvcGVydHkoZXhlYywgcHJvcGVy
dHlOYW1lKSlcbiIpOwogICAgICAgICBwdXNoKEBnZXRPd25Qcm9wZXJ0eVNsb3RJbXBsLCAiICAg
ICAgICByZXR1cm4gZmFsc2U7XG5cbiIpOwogICAgIH0KIApAQCAtNDg0LDcgKzQ4NCw3IEBAIHN1
YiBHZW5lcmF0ZUdldE93blByb3BlcnR5RGVzY3JpcHRvckJvZHkKICAgICAKICAgICBpZiAoJGlu
dGVyZmFjZU5hbWUgZXEgIk5hbWVkTm9kZU1hcCIgb3IgJGludGVyZmFjZU5hbWUgZXEgIkhUTUxD
b2xsZWN0aW9uIiBvciAkaW50ZXJmYWNlTmFtZSBlcSAiSFRNTEFsbENvbGxlY3Rpb24iKSB7CiAg
ICAgICAgIHB1c2goQGdldE93blByb3BlcnR5RGVzY3JpcHRvckltcGwsICIgICAgJHtuYW1lc3Bh
Y2VNYXliZX1KU1ZhbHVlIHByb3RvID0gdGhpc09iamVjdC0+cHJvdG90eXBlKCk7XG4iKTsKLSAg
ICAgICAgcHVzaChAZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ySW1wbCwgIiAgICBpZiAocHJvdG8u
aXNPYmplY3QoKSAmJiBzdGF0aWNfY2FzdDwke25hbWVzcGFjZU1heWJlfUpTT2JqZWN0Kj4oYXNP
YmplY3QocHJvdG8pKS0+aGFzUHJvcGVydHkoZXhlYywgcHJvcGVydHlOYW1lKSlcbiIpOworICAg
ICAgICBwdXNoKEBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JJbXBsLCAiICAgIGlmIChwcm90by5p
c09iamVjdCgpICYmIGpzQ2FzdDwke25hbWVzcGFjZU1heWJlfUpTT2JqZWN0Kj4oYXNPYmplY3Qo
cHJvdG8pKS0+aGFzUHJvcGVydHkoZXhlYywgcHJvcGVydHlOYW1lKSlcbiIpOwogICAgICAgICBw
dXNoKEBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JJbXBsLCAiICAgICAgICByZXR1cm4gZmFsc2U7
XG5cbiIpOwogICAgIH0KICAgICAKQEAgLTE2NzYsNyArMTY3Niw3IEBAIHN1YiBHZW5lcmF0ZUlt
cGxlbWVudGF0aW9uCiAKICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIkpTVmFs
dWUgJHtnZXRGdW5jdGlvbk5hbWV9KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwg
Y29uc3QgSWRlbnRpZmllciYpXG4iKTsKICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIntcbiIpOwotICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICR7Y2xh
c3NOYW1lfSogY2FzdGVkVGhpcyA9IHN0YXRpY19jYXN0PCRjbGFzc05hbWUqPihhc09iamVjdChz
bG90QmFzZSkpO1xuIik7CisgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAg
JHtjbGFzc05hbWV9KiBjYXN0ZWRUaGlzID0ganNDYXN0PCRjbGFzc05hbWUqPihhc09iamVjdChz
bG90QmFzZSkpO1xuIik7CiAKICAgICAgICAgICAgICAgICBpZiAoJGF0dHJpYnV0ZS0+c2lnbmF0
dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ2FjaGVkQXR0cmlidXRlIn0pIHsKICAgICAgICAg
ICAgICAgICAgICAgJG5lZWRzTWFya0NoaWxkcmVuID0gMTsKQEAgLTE3OTUsNyArMTc5NSw3IEBA
IHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAKICAgICAgICAgICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgIkpTVmFsdWUgJHtjb25zdHJ1Y3RvckZ1bmN0aW9uTmFtZX0oRXhlY1N0YXRlKiBl
eGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBjb25zdCBJZGVudGlmaWVyJilcbiIpOwogICAgICAgICAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAie1xuIik7Ci0gICAgICAgICAgICAgICAgcHVzaChA
aW1wbENvbnRlbnQsICIgICAgJHtjbGFzc05hbWV9KiBkb21PYmplY3QgPSBzdGF0aWNfY2FzdDwk
Y2xhc3NOYW1lKj4oYXNPYmplY3Qoc2xvdEJhc2UpKTtcbiIpOworICAgICAgICAgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAiICAgICR7Y2xhc3NOYW1lfSogZG9tT2JqZWN0ID0ganNDYXN0PCRj
bGFzc05hbWUqPihhc09iamVjdChzbG90QmFzZSkpO1xuIik7CiAKICAgICAgICAgICAgICAgICBp
ZiAoJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ2hlY2tTZWN1cml0eSJ9KSB7CiAg
ICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGlmICghZG9tT2JqZWN0
LT5hbGxvd3NBY2Nlc3NGcm9tKGV4ZWMpKVxuIik7CkBAIC0xODcwLDE5ICsxODcwLDE5IEBAIHN1
YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgk
ZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDaGVja1NlY3VyaXR5In0gJiYgISRhdHRy
aWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkRvTm90Q2hlY2tTZWN1cml0
eSJ9KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRpbnRlcmZhY2VOYW1lIGVx
ICJET01XaW5kb3ciKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAiICAgIGlmICghc3RhdGljX2Nhc3Q8JGNsYXNzTmFtZSo+KHRoaXNPYmplY3Qp
LT5hbGxvd3NBY2Nlc3NGcm9tKGV4ZWMpKVxuIik7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGlmICghanNDYXN0PCRjbGFzc05hbWUqPih0
aGlzT2JqZWN0KS0+YWxsb3dzQWNjZXNzRnJvbShleGVjKSlcbiIpOwogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAiICAgIGlmICghc2hvdWxkQWxsb3dBY2Nlc3NUb0ZyYW1lKGV4ZWMs
IHN0YXRpY19jYXN0PCRjbGFzc05hbWUqPih0aGlzT2JqZWN0KS0+aW1wbCgpLT5mcmFtZSgpKSlc
biIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
IiAgICBpZiAoIXNob3VsZEFsbG93QWNjZXNzVG9GcmFtZShleGVjLCBqc0Nhc3Q8JGNsYXNzTmFt
ZSo+KHRoaXNPYmplY3QpLT5pbXBsKCktPmZyYW1lKCkpKVxuIik7CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250
ZW50LCAiICAgICAgICByZXR1cm47XG4iKTsKICAgICAgICAgICAgICAgICAgICAgICAgIH0KIAog
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5k
ZWRBdHRyaWJ1dGVzLT57IkN1c3RvbSJ9IHx8ICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5k
ZWRBdHRyaWJ1dGVzLT57IkpTQ3VzdG9tIn0gfHwgJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRl
bmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tU2V0dGVyIn0gfHwgJGF0dHJpYnV0ZS0+c2lnbmF0dXJl
LT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSlNDdXN0b21TZXR0ZXIifSkgewotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHN0YXRpY19jYXN0PCRjbGFz
c05hbWUqPih0aGlzT2JqZWN0KS0+c2V0JGltcGxTZXR0ZXJGdW5jdGlvbk5hbWUoZXhlYywgdmFs
dWUpO1xuIik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICIgICAganNDYXN0PCRjbGFzc05hbWUqPih0aGlzT2JqZWN0KS0+c2V0JGltcGxTZXR0ZXJGdW5j
dGlvbk5hbWUoZXhlYywgdmFsdWUpO1xuIik7CiAgICAgICAgICAgICAgICAgICAgICAgICB9IGVs
c2lmICgkdHlwZSBlcSAiRXZlbnRMaXN0ZW5lciIpIHsKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAkaW1wbEluY2x1ZGVzeyJKU0V2ZW50TGlzdGVuZXIuaCJ9ID0gMTsKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBVTlVTRURfUEFSQU0oZXhl
Yyk7XG4iKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
IiAgICAke2NsYXNzTmFtZX0qIGNhc3RlZFRoaXMgPSBzdGF0aWNfY2FzdDwke2NsYXNzTmFtZX0q
Pih0aGlzT2JqZWN0KTtcbiIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAiICAgICR7Y2xhc3NOYW1lfSogY2FzdGVkVGhpcyA9IGpzQ2FzdDwke2NsYXNz
TmFtZX0qPih0aGlzT2JqZWN0KTtcbiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG15
ICR3aW5kb3dFdmVudExpc3RlbmVyID0gJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0
dHJpYnV0ZXMtPnsiSlNXaW5kb3dFdmVudExpc3RlbmVyIn07CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKCR3aW5kb3dFdmVudExpc3RlbmVyKSB7CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIEpTRE9NR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QgPSBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKTtcbiIpOwpAQCAtMTkwNiwx
NSArMTkwNiwxNSBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0
LWluIGNvbnN0cnVjdG9yXG4iKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJGlu
dGVyZmFjZU5hbWUgZXEgIkRPTVdpbmRvdyIgJiYgJGNsYXNzTmFtZSBlcSAiSlNibGFoIikgewog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIEZJWE1FOiBUaGlzIGJyYW5jaCBuZXZl
ciBleGVjdXRlcyBhbmQgc2hvdWxkIGJlIHJlbW92ZWQuCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHN0YXRpY19jYXN0PCRjbGFzc05hbWUq
Pih0aGlzT2JqZWN0KS0+cHV0RGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJvcGVy
dHlOYW1lcygpLmNvbnN0cnVjdG9yLCB2YWx1ZSk7XG4iKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAganNDYXN0PCRjbGFzc05hbWUqPih0
aGlzT2JqZWN0KS0+cHV0RGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJvcGVydHlO
YW1lcygpLmNvbnN0cnVjdG9yLCB2YWx1ZSk7XG4iKTsKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgIiAgICBzdGF0aWNfY2FzdDwkY2xhc3NOYW1lKj4odGhpc09iamVjdCktPnB1dERp
cmVjdChleGVjLT5nbG9iYWxEYXRhKCksIElkZW50aWZpZXIoZXhlYywgXCIkbmFtZVwiKSwgdmFs
dWUpO1xuIik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250
ZW50LCAiICAgIGpzQ2FzdDwkY2xhc3NOYW1lKj4odGhpc09iamVjdCktPnB1dERpcmVjdChleGVj
LT5nbG9iYWxEYXRhKCksIElkZW50aWZpZXIoZXhlYywgXCIkbmFtZVwiKSwgdmFsdWUpO1xuIik7
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAg
fSBlbHNpZiAoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiUmVw
bGFjZWFibGUifSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250
ZW50LCAiICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0LWluIG9iamVjdFxuIik7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgc3RhdGljX2Nhc3Q8JGNs
YXNzTmFtZSo+KHRoaXNPYmplY3QpLT5wdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBJZGVu
dGlmaWVyKGV4ZWMsIFwiJG5hbWVcIiksIHZhbHVlKTtcbiIpOworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGpzQ2FzdDwkY2xhc3NOYW1lKj4odGhp
c09iamVjdCktPnB1dERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCksIElkZW50aWZpZXIoZXhlYywg
XCIkbmFtZVwiKSwgdmFsdWUpO1xuIik7CiAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Ug
ewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICRj
bGFzc05hbWUqIGNhc3RlZFRoaXMgPSBzdGF0aWNfY2FzdDwkY2xhc3NOYW1lKj4odGhpc09iamVj
dCk7XG4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
IiAgICAkY2xhc3NOYW1lKiBjYXN0ZWRUaGlzID0ganNDYXN0PCRjbGFzc05hbWUqPih0aGlzT2Jq
ZWN0KTtcbiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAiICAgICRpbXBsVHlwZSogaW1wbCA9IHN0YXRpY19jYXN0PCRpbXBsVHlwZSo+KGNhc3RlZFRo
aXMtPmltcGwoKSk7XG4iKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgIiAgICBFeGNlcHRpb25Db2RlIGVjID0gMDtcbiIpIGlmIEB7JGF0dHJpYnV0ZS0+
c2V0dGVyRXhjZXB0aW9uc307CiAKQEAgLTE5OTUsOSArMTk5NSw5IEBAIHN1YiBHZW5lcmF0ZUlt
cGxlbWVudGF0aW9uCiAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ7XG4iKTsK
ICAgICAgICAgICAgICAgICBpZiAoJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ2hl
Y2tTZWN1cml0eSJ9KSB7CiAgICAgICAgICAgICAgICAgICAgIGlmICgkaW50ZXJmYWNlTmFtZSBl
cSAiRE9NV2luZG93IikgewotICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICIgICAgaWYgKCFzdGF0aWNfY2FzdDwkY2xhc3NOYW1lKj4odGhpc09iamVjdCktPmFsbG93
c0FjY2Vzc0Zyb20oZXhlYykpXG4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAiICAgIGlmICghanNDYXN0PCRjbGFzc05hbWUqPih0aGlzT2JqZWN0KS0+YWxs
b3dzQWNjZXNzRnJvbShleGVjKSlcbiIpOwogICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugewot
ICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKCFzaG91
bGRBbGxvd0FjY2Vzc1RvRnJhbWUoZXhlYywgc3RhdGljX2Nhc3Q8JGNsYXNzTmFtZSo+KHRoaXNP
YmplY3QpLT5pbXBsKCktPmZyYW1lKCkpKVxuIik7CisgICAgICAgICAgICAgICAgICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAoIXNob3VsZEFsbG93QWNjZXNzVG9GcmFtZShleGVj
LCBqc0Nhc3Q8JGNsYXNzTmFtZSo+KHRoaXNPYmplY3QpLT5pbXBsKCktPmZyYW1lKCkpKVxuIik7
CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICIgICAgICAgIHJldHVybjtcbiIpOwogICAgICAgICAgICAgICAgIH0KQEAgLTIwMDUs
NyArMjAwNSw3IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICIgICAgLy8gU2hhZG93aW5nIGEgYnVpbHQtaW4gY29uc3RydWN0
b3JcbiIpOwogCiAgICAgICAgICAgICAgICAgaWYgKCRpbnRlcmZhY2VOYW1lIGVxICJET01XaW5k
b3ciKSB7Ci0gICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHN0YXRp
Y19jYXN0PCRjbGFzc05hbWUqPih0aGlzT2JqZWN0KS0+cHV0RGlyZWN0KGV4ZWMtPmdsb2JhbERh
dGEoKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLmNvbnN0cnVjdG9yLCB2YWx1ZSk7XG4iKTsKKyAg
ICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAganNDYXN0PCRjbGFzc05h
bWUqPih0aGlzT2JqZWN0KS0+cHV0RGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJv
cGVydHlOYW1lcygpLmNvbnN0cnVjdG9yLCB2YWx1ZSk7XG4iKTsKICAgICAgICAgICAgICAgICB9
IGVsc2UgewogICAgICAgICAgICAgICAgICAgICBkaWUgIk5vIHdheSB0byBoYW5kbGUgaW50ZXJm
YWNlIHdpdGggUmVwbGFjZWFibGVDb25zdHJ1Y3RvciBleHRlbmRlZCBhdHRyaWJ1dGU6ICRpbnRl
cmZhY2VOYW1lIjsKICAgICAgICAgICAgICAgICB9CkBAIC0yMDI5LDcgKzIwMjksNyBAQCBzdWIg
R2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogCiAgICAgaWYgKCEkZGF0YU5vZGUtPmV4dGVuZGVkQXR0
cmlidXRlcy0+eyJPbWl0Q29uc3RydWN0b3IifSkgewogICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIkpTVmFsdWUgJHtjbGFzc05hbWV9OjpnZXRDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMs
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpXG57XG4iKTsKLSAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICIgICAgcmV0dXJuIGdldERPTUNvbnN0cnVjdG9yPCR7Y2xhc3NOYW1lfUNvbnN0
cnVjdG9yPihleGVjLCBzdGF0aWNfY2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVj
dCkpO1xuIik7CisgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJldHVybiBnZXRET01D
b25zdHJ1Y3Rvcjwke2NsYXNzTmFtZX1Db25zdHJ1Y3Rvcj4oZXhlYywganNDYXN0PEpTRE9NR2xv
YmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSk7XG4iKTsKICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICJ9XG5cbiIpOwogICAgIH0KIApAQCAtMjA5NSw3ICsyMDk1LDcgQEAgc3ViIEdlbmVyYXRl
SW1wbGVtZW50YXRpb24KICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIg
ICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT5ob3N0VGhpc1ZhbHVlKCk7XG4iKTsKICAgICAg
ICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKCF0aGlzVmFsdWUuaW5o
ZXJpdHMoJiR7Y2xhc3NOYW1lfTo6c19pbmZvKSlcbiIpOwogICAgICAgICAgICAgICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7
XG4iKTsKLSAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgJGNsYXNz
TmFtZSogY2FzdGVkVGhpcyA9IHN0YXRpY19jYXN0PCRjbGFzc05hbWUqPihhc09iamVjdCh0aGlz
VmFsdWUpKTtcbiIpOworICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAg
ICAkY2xhc3NOYW1lKiBjYXN0ZWRUaGlzID0ganNDYXN0PCRjbGFzc05hbWUqPihhc09iamVjdCh0
aGlzVmFsdWUpKTtcbiIpOwogICAgICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAiICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhp
cywgJiR7Y2xhc3NOYW1lfTo6c19pbmZvKTtcbiIpOwpAQCAtMjIxMyw3ICsyMjEzLDcgQEAgc3Vi
IEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICBpZiAoJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJp
YnV0ZXMtPnsiSW5kZXhlZEdldHRlciJ9KSB7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
XG5KU1ZhbHVlICR7Y2xhc3NOYW1lfTo6aW5kZXhHZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBKU1Zh
bHVlIHNsb3RCYXNlLCB1bnNpZ25lZCBpbmRleClcbiIpOwogICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIntcbiIpOwotICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAke2NsYXNzTmFt
ZX0qIHRoaXNPYmogPSBzdGF0aWNfY2FzdDwkY2xhc3NOYW1lKj4oYXNPYmplY3Qoc2xvdEJhc2Up
KTtcbiIpOworICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAke2NsYXNzTmFtZX0qIHRo
aXNPYmogPSBqc0Nhc3Q8JGNsYXNzTmFtZSo+KGFzT2JqZWN0KHNsb3RCYXNlKSk7XG4iKTsKICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0
aGlzT2JqLCAmc19pbmZvKTtcbiIpOwogICAgICAgICBpZiAoSW5kZXhHZXR0ZXJSZXR1cm5zU3Ry
aW5ncygkaW1wbENsYXNzTmFtZSkpIHsKICAgICAgICAgICAgICRpbXBsSW5jbHVkZXN7IktVUkwu
aCJ9ID0gMTsKQEAgLTIyNTIsNyArMjI1Miw3IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9u
CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIn1cblxuIik7CiAgICAgICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIkpTVmFsdWUgJHtjbGFzc05hbWV9OjpuYW1lR2V0dGVyKEV4ZWNT
dGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlO
YW1lKVxuIik7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIntcbiIpOwotICAgICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgJHtjbGFzc05hbWV9KiB0aGlzT2JqID0gc3Rh
dGljX2Nhc3Q8JGNsYXNzTmFtZSo+KGFzT2JqZWN0KHNsb3RCYXNlKSk7XG4iKTsKKyAgICAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICR7Y2xhc3NOYW1lfSogdGhpc09iaiA9IGpzQ2Fz
dDwkY2xhc3NOYW1lKj4oYXNPYmplY3Qoc2xvdEJhc2UpKTtcbiIpOwogICAgICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICIgICAgcmV0dXJuIHRvSlMoZXhlYywgdGhpc09iai0+Z2xvYmFsT2Jq
ZWN0KCksIHN0YXRpY19jYXN0PCRpbXBsQ2xhc3NOYW1lKj4odGhpc09iai0+aW1wbCgpKS0+bmFt
ZWRJdGVtKGlkZW50aWZpZXJUb0F0b21pY1N0cmluZyhwcm9wZXJ0eU5hbWUpKSk7XG4iKTsKICAg
ICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAifVxuXG4iKTsKICAgICAgICAgfQpAQCAtMjI3
Miw3ICsyMjcyLDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KIAogICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgImJvb2wgSlMke2ltcGxDbGFzc05hbWV9T3duZXI6OmlzUmVhY2hhYmxl
RnJvbU9wYXF1ZVJvb3RzKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4gaGFuZGxlLCB2b2lkKiwg
U2xvdFZpc2l0b3ImIHZpc2l0b3IpXG4iKTsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ7
XG4iKTsKLSAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgSlMke2ltcGxDbGFzc05hbWV9
KiBqcyR7aW1wbENsYXNzTmFtZX0gPSBzdGF0aWNfY2FzdDxKUyR7aW1wbENsYXNzTmFtZX0qPiho
YW5kbGUuZ2V0KCkuYXNDZWxsKCkpO1xuIik7CisgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
ICAgIEpTJHtpbXBsQ2xhc3NOYW1lfSoganMke2ltcGxDbGFzc05hbWV9ID0ganNDYXN0PEpTJHtp
bXBsQ2xhc3NOYW1lfSo+KGhhbmRsZS5nZXQoKS5hc0NlbGwoKSk7XG4iKTsKICAgICAgICAgIyBB
bGwgQWN0aXZlRE9NT2JqZWN0cyBpbXBsZW1lbnQgaGFzUGVuZGluZ0FjdGl2aXR5KCksIGJ1dCBu
b3QgYWxsIG9mIHRoZW0KICAgICAgICAgIyBpbmNyZW1lbnQgdGhlaXIgQysrIHJlZmVyZW5jZSBj
b3VudHMgd2hlbiBoYXNQZW5kaW5nQWN0aXZpdHkoKSBiZWNvbWVzCiAgICAgICAgICMgdHJ1ZS4g
QXMgYSByZXN1bHQsIEFjdGl2ZURPTU9iamVjdHMgY2FuIGJlIHByZW1hdHVyZWx5IGRlc3Ryb3ll
ZCBiZWZvcmUKQEAgLTIzMjksNyArMjMyOSw3IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9u
CiAgICAgICAgICAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJBY3RpdmVET01PYmpl
Y3QifSkpIHsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ2b2lkIEpTJHtpbXBsQ2xhc3NO
YW1lfU93bmVyOjpmaW5hbGl6ZShKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+IGhhbmRsZSwgdm9p
ZCogY29udGV4dClcbiIpOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIntcbiIpOwotICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBKUyR7aW1wbENsYXNzTmFtZX0qIGpzJHtpbXBs
Q2xhc3NOYW1lfSA9IHN0YXRpY19jYXN0PEpTJHtpbXBsQ2xhc3NOYW1lfSo+KGhhbmRsZS5nZXQo
KS5hc0NlbGwoKSk7XG4iKTsKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgSlMke2lt
cGxDbGFzc05hbWV9KiBqcyR7aW1wbENsYXNzTmFtZX0gPSBqc0Nhc3Q8SlMke2ltcGxDbGFzc05h
bWV9Kj4oaGFuZGxlLmdldCgpLmFzQ2VsbCgpKTtcbiIpOwogICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIiAgICBET01XcmFwcGVyV29ybGQqIHdvcmxkID0gc3RhdGljX2Nhc3Q8RE9NV3JhcHBl
cldvcmxkKj4oY29udGV4dCk7XG4iKTsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAg
dW5jYWNoZVdyYXBwZXIod29ybGQsIGpzJHtpbXBsQ2xhc3NOYW1lfS0+aW1wbCgpLCBqcyR7aW1w
bENsYXNzTmFtZX0pO1xuIik7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGpzJHtp
bXBsQ2xhc3NOYW1lfS0+cmVsZWFzZUltcGwoKTtcbiIpOwpAQCAtMjM1MCw3ICsyMzUwLDcgQEAg
c3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICBpZiAoKCEkaGFzUGFyZW50IG9yICRkYXRh
Tm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkpTR2VuZXJhdGVUb05hdGl2ZU9iamVjdCJ9KSBh
bmQgISRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkpTQ3VzdG9tVG9OYXRpdmVPYmpl
Y3QifSkgewogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiRpbXBsVHlwZSogdG8ke2ludGVy
ZmFjZU5hbWV9KEpTQzo6SlNWYWx1ZSB2YWx1ZSlcbiIpOwogICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIntcbiIpOwotICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICByZXR1cm4gdmFs
dWUuaW5oZXJpdHMoJiR7Y2xhc3NOYW1lfTo6c19pbmZvKSA/IHN0YXRpY19jYXN0PCRjbGFzc05h
bWUqPihhc09iamVjdCh2YWx1ZSkpLT5pbXBsKCkgOiAwIik7CisgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAiICAgIHJldHVybiB2YWx1ZS5pbmhlcml0cygmJHtjbGFzc05hbWV9OjpzX2luZm8p
ID8ganNDYXN0PCRjbGFzc05hbWUqPihhc09iamVjdCh2YWx1ZSkpLT5pbXBsKCkgOiAwIik7CiAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiO1xufVxuIik7CiAgICAgfQogCkBAIC0yMzczLDcg
KzIzNzMsNyBAQCBzdWIgR2VuZXJhdGVDYWxsV2l0aAogICAgICAgICBwdXNoKEBjYWxsV2l0aEFy
Z3MsICJleGVjIik7CiAgICAgfQogICAgIGlmICgkY29kZUdlbmVyYXRvci0+RXh0ZW5kZWRBdHRy
aWJ1dGVDb250YWlucygkY2FsbFdpdGgsICJTY3JpcHRFeGVjdXRpb25Db250ZXh0IikpIHsKLSAg
ICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNj
cmlwdENvbnRleHQgPSBzdGF0aWNfY2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGV4ZWMtPmxleGlj
YWxHbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTtcbiIpOworICAgICAg
ICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0
Q29udGV4dCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGV4ZWMtPmxleGljYWxHbG9iYWxP
YmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTtcbiIpOwogICAgICAgICBwdXNoKEAk
b3V0cHV0QXJyYXksICIgICAgaWYgKCFzY3JpcHRDb250ZXh0KVxuIik7CiAgICAgICAgIHB1c2go
QCRvdXRwdXRBcnJheSwgIiAgICAgICAgcmV0dXJuIiAuICgkcmV0dXJuVmFsdWUgPyAiICIgLiAk
cmV0dXJuVmFsdWUgOiAiIikgLiAiO1xuIik7CiAgICAgICAgIHB1c2goQGNhbGxXaXRoQXJncywg
InNjcmlwdENvbnRleHQiKTsKQEAgLTMwODEsNyArMzA4MSw3IEBAIHN1YiBOYXRpdmVUb0pTVmFs
dWUKICAgICBpZiAoJGdsb2JhbE9iamVjdCkgewogICAgICAgICByZXR1cm4gInRvSlMoZXhlYywg
JGdsb2JhbE9iamVjdCwgV1RGOjpnZXRQdHIoJHZhbHVlKSkiOwogICAgIH0gZWxzZSB7Ci0gICAg
ICAgIHJldHVybiAidG9KUyhleGVjLCBzdGF0aWNfY2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGV4
ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSksIFdURjo6Z2V0UHRyKCR2YWx1ZSkpIjsKKyAgICAg
ICAgcmV0dXJuICJ0b0pTKGV4ZWMsIGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGV4ZWMtPmxl
eGljYWxHbG9iYWxPYmplY3QoKSksIFdURjo6Z2V0UHRyKCR2YWx1ZSkpIjsKICAgICB9CiB9CiAK
QEAgLTM0ODMsMTIgKzM0ODMsMTIgQEAgc3ViIEdlbmVyYXRlQ29uc3RydWN0b3JEZWZpbml0aW9u
CiAKICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiYm9vbCAke2NvbnN0cnVjdG9yQ2xhc3NO
YW1lfTo6Z2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBj
b25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdClcbiIpOwog
ICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICJ7XG4iKTsKLSAgICAgICAgcHVzaChAJG91dHB1
dEFycmF5LCAiICAgIHJldHVybiBnZXRTdGF0aWMke2tpbmR9U2xvdDwke2NvbnN0cnVjdG9yQ2xh
c3NOYW1lfSwgSlNET01XcmFwcGVyPihleGVjLCAmJHtjb25zdHJ1Y3RvckNsYXNzTmFtZX1UYWJs
ZSwgc3RhdGljX2Nhc3Q8JHtjb25zdHJ1Y3RvckNsYXNzTmFtZX0qPihjZWxsKSwgcHJvcGVydHlO
YW1lLCBzbG90KTtcbiIpOworICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgcmV0dXJu
IGdldFN0YXRpYyR7a2luZH1TbG90PCR7Y29uc3RydWN0b3JDbGFzc05hbWV9LCBKU0RPTVdyYXBw
ZXI+KGV4ZWMsICYke2NvbnN0cnVjdG9yQ2xhc3NOYW1lfVRhYmxlLCBqc0Nhc3Q8JHtjb25zdHJ1
Y3RvckNsYXNzTmFtZX0qPihjZWxsKSwgcHJvcGVydHlOYW1lLCBzbG90KTtcbiIpOwogICAgICAg
ICBwdXNoKEAkb3V0cHV0QXJyYXksICJ9XG5cbiIpOwogCiAgICAgICAgIHB1c2goQCRvdXRwdXRB
cnJheSwgImJvb2wgJHtjb25zdHJ1Y3RvckNsYXNzTmFtZX06OmdldE93blByb3BlcnR5RGVzY3Jp
cHRvcihKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXIm
IHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKVxuIik7CiAgICAg
ICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIntcbiIpOwotICAgICAgICBwdXNoKEAkb3V0cHV0QXJy
YXksICIgICAgcmV0dXJuIGdldFN0YXRpYyR7a2luZH1EZXNjcmlwdG9yPCR7Y29uc3RydWN0b3JD
bGFzc05hbWV9LCBKU0RPTVdyYXBwZXI+KGV4ZWMsICYke2NvbnN0cnVjdG9yQ2xhc3NOYW1lfVRh
YmxlLCBzdGF0aWNfY2FzdDwke2NvbnN0cnVjdG9yQ2xhc3NOYW1lfSo+KG9iamVjdCksIHByb3Bl
cnR5TmFtZSwgZGVzY3JpcHRvcik7XG4iKTsKKyAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAi
ICAgIHJldHVybiBnZXRTdGF0aWMke2tpbmR9RGVzY3JpcHRvcjwke2NvbnN0cnVjdG9yQ2xhc3NO
YW1lfSwgSlNET01XcmFwcGVyPihleGVjLCAmJHtjb25zdHJ1Y3RvckNsYXNzTmFtZX1UYWJsZSwg
anNDYXN0PCR7Y29uc3RydWN0b3JDbGFzc05hbWV9Kj4ob2JqZWN0KSwgcHJvcGVydHlOYW1lLCBk
ZXNjcmlwdG9yKTtcbiIpOwogICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICJ9XG5cbiIpOwog
ICAgIH0KIApAQCAtMzUwMCw3ICszNTAwLDcgQEAgc3ViIEdlbmVyYXRlQ29uc3RydWN0b3JEZWZp
bml0aW9uCiAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksIDw8RU5EKTsKIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgJHtjb25zdHJ1Y3RvckNsYXNzTmFtZX06OmNvbnN0cnVjdCR7
Y2xhc3NOYW1lfShFeGVjU3RhdGUqIGV4ZWMpCiB7Ci0gICAgJHtjb25zdHJ1Y3RvckNsYXNzTmFt
ZX0qIGpzQ29uc3RydWN0b3IgPSBzdGF0aWNfY2FzdDwke2NvbnN0cnVjdG9yQ2xhc3NOYW1lfSo+
KGV4ZWMtPmNhbGxlZSgpKTsKKyAgICAke2NvbnN0cnVjdG9yQ2xhc3NOYW1lfSoganNDb25zdHJ1
Y3RvciA9IGpzQ2FzdDwke2NvbnN0cnVjdG9yQ2xhc3NOYW1lfSo+KGV4ZWMtPmNhbGxlZSgpKTsK
IAogICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGV4ZWN1dGlvbkNvbnRleHQgPSBqc0NvbnN0
cnVjdG9yLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CiAgICAgaWYgKCFleGVjdXRpb25Db250
ZXh0KQpAQCAtMzU2MSw3ICszNTYxLDcgQEAgRU5ECiAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0
QXJyYXksICJFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMICR7Y29uc3RydWN0b3JDbGFzc05h
bWV9Ojpjb25zdHJ1Y3Qke2NsYXNzTmFtZX0oRXhlY1N0YXRlKiBleGVjKVxuIik7CiAgICAgICAg
ICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICJ7XG4iKTsKIAotICAgICAgICAgICAgcHVzaChAJG91
dHB1dEFycmF5LCAiICAgICR7Y29uc3RydWN0b3JDbGFzc05hbWV9KiBjYXN0ZWRUaGlzID0gc3Rh
dGljX2Nhc3Q8JHtjb25zdHJ1Y3RvckNsYXNzTmFtZX0qPihleGVjLT5jYWxsZWUoKSk7XG4iKTsK
KyAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAke2NvbnN0cnVjdG9yQ2xhc3NO
YW1lfSogY2FzdGVkVGhpcyA9IGpzQ2FzdDwke2NvbnN0cnVjdG9yQ2xhc3NOYW1lfSo+KGV4ZWMt
PmNhbGxlZSgpKTtcbiIpOwogCiAgICAgICAgICAgICBteSAkZnVuY3Rpb24gPSAkZGF0YU5vZGUt
PmNvbnN0cnVjdG9yOwogICAgICAgICAgICAgbXkgQGNvbnN0cnVjdG9yQXJnTGlzdDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9qbmkvam5pX2pzb2JqZWN0LmggYi9Tb3VyY2Uv
V2ViQ29yZS9icmlkZ2Uvam5pL2puaV9qc29iamVjdC5oCmluZGV4IGQ5MTQ3M2ZjNzlkMjY3NGI5
Yjg1YzgxN2QzNGNmYWQwMjllZWRlYzkuLjE3NGYxNjMzNzljYTc0ZWE4NTc1MjU4MzYxODRkMjcz
ODhmZDkwNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9qbmkvam5pX2pzb2Jq
ZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL2puaS9qbmlfanNvYmplY3QuaApAQCAt
MzMsNyArMzMsNyBAQAogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAogI2RlZmluZSBqbG9uZ190
b19wdHIoYSkgKCh2b2lkKikodWludHB0cl90KShhKSkKLSNkZWZpbmUgamxvbmdfdG9faW1wcHRy
KGEpIChzdGF0aWNfY2FzdDxKU0M6OkpTT2JqZWN0Kj4oKCh2b2lkKikodWludHB0cl90KShhKSkp
KQorI2RlZmluZSBqbG9uZ190b19pbXBwdHIoYSkgKEpTQzo6anNDYXN0PEpTQzo6SlNPYmplY3Qq
Pigoc3RhdGljX2Nhc3Q8SlNDZWxsKj4oKHZvaWQqKSh1aW50cHRyX3QpKGEpKSkpKQogI2RlZmlu
ZSBwdHJfdG9famxvbmcoYSkgKChqbG9uZykodWludHB0cl90KShhKSkKIAogI2lmIFBMQVRGT1JN
KE1BQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9qbmkvam5pX2pzb2JqZWN0
Lm1tIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL2puaS9qbmlfanNvYmplY3QubW0KaW5kZXggZTBi
NWRiZDJlMDc5ZTdjYjQ3NGM2OGRlODkwN2ExZDM1YTI4ZTNjOS4uZTU2YzMyMjQyYmJiZGQ0MTI3
ZTE3YTM4MTZmZmZkMjJjMjAxYTU3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdl
L2puaS9qbmlfanNvYmplY3QubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL2puaS9qbmlf
anNvYmplY3QubW0KQEAgLTU3Niw3ICs1NzYsNyBAQCBKU1ZhbHVlIEphdmFKU09iamVjdDo6Y29u
dmVydEpPYmplY3RUb1ZhbHVlKEV4ZWNTdGF0ZSogZXhlYywgam9iamVjdCB0aGVPYmplY3QpCiAg
ICAgamxvbmcgbmF0aXZlSGFuZGxlID0gZW52LT5HZXRMb25nRmllbGQodGhlT2JqZWN0LCBmaWVs
ZElEKTsKICAgICBpZiAobmF0aXZlSGFuZGxlID09IFVuZGVmaW5lZEhhbmRsZSkKICAgICAgICAg
cmV0dXJuIGpzVW5kZWZpbmVkKCk7Ci0gICAgSlNPYmplY3QgKmltcCA9IHN0YXRpY19jYXN0PEpT
T2JqZWN0Kj4oamxvbmdfdG9faW1wcHRyKG5hdGl2ZUhhbmRsZSkpOworICAgIEpTT2JqZWN0ICpp
bXAgPSBqc0Nhc3Q8SlNPYmplY3QqPihqbG9uZ190b19pbXBwdHIobmF0aXZlSGFuZGxlKSk7CiAg
ICAgcmV0dXJuIGltcDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL2pu
aS9qc2MvSmF2YUluc3RhbmNlSlNDLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9qbmkvanNj
L0phdmFJbnN0YW5jZUpTQy5jcHAKaW5kZXggYzk0MjcxOWRhYmM3Njg1YmMzMzBkYjg3YzZjNWM4
ZWE3YTU5NjgwZi4uNmFmMmRhNWE3MmYzYTY5OWU1NzQ0MzYwM2UxYzE2ZTdlOWU4MGI0OCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL2puaS9qc2MvSmF2YUluc3RhbmNlSlNDLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvam5pL2pzYy9KYXZhSW5zdGFuY2VKU0MuY3Bw
CkBAIC0yNDUsNyArMjQ1LDcgQEAgSlNWYWx1ZSBKYXZhSW5zdGFuY2U6Omludm9rZU1ldGhvZChF
eGVjU3RhdGUqIGV4ZWMsIFJ1bnRpbWVNZXRob2QqIHJ1bnRpbWVNZXRob2QKICAgICAgICAgICAg
ICAgICAgICAgICAgIC8vIGFuZCBzbyBpdCBkb2VzIGJldHdlZW4gZGlmZmVyZW50IHZlcnNpb25z
IG9mIExpdmVDb25uZWN0IHNwZWMuIFRoZXJlIHNob3VsZCBub3QgYmUgbXVsdGlwbGUgY29kZSBw
YXRocyB0byBkbyB0aGUgc2FtZSB3b3JrLgogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG5h
dGl2ZUhhbmRsZSA9PSAxIC8qIFVuZGVmaW5lZEhhbmRsZSAqLykKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKLSAgICAgICAgICAgICAgICAgICAgICAg
IHJldHVybiBzdGF0aWNfY2FzdDxKU09iamVjdCo+KGpsb25nX3RvX3B0cihuYXRpdmVIYW5kbGUp
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBqbG9uZ190b19pbXBwdHIobmF0aXZl
SGFuZGxlKTsKICAgICAgICAgICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gSmF2YUluc3RhbmNlOjpjcmVhdGUocmVzdWx0LmwsIHJvb3RPYmplY3QpLT5j
cmVhdGVSdW50aW1lT2JqZWN0KGV4ZWMpOwogICAgICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfdXRpbGl0eS5tbSBiL1NvdXJjZS9XZWJD
b3JlL2JyaWRnZS9vYmpjL29iamNfdXRpbGl0eS5tbQppbmRleCAxYTdiOTI5YTZiZTM3YjZiZmE2
ZjlmNjMzYWM2YTRlYWJiYzQ4OWVmLi4wNGFjZjczNjlhMTRmOWRmY2I2YjEyYmU2ZThlOGQyMzlk
ZDA3NmE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX3V0aWxp
dHkubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY191dGlsaXR5Lm1tCkBA
IC0xNDMsNyArMTQzLDcgQEAgT2JqY1ZhbHVlIGNvbnZlcnRWYWx1ZVRvT2JqY1ZhbHVlKEV4ZWNT
dGF0ZSogZXhlYywgSlNWYWx1ZSB2YWx1ZSwgT2JqY1ZhbHVlVHlwZQogCiAgICAgICAgICAgICBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gMDsKICAgICAgICAgICAgIGlmICh2YWx1ZS5p
c09iamVjdCgpICYmIGFzT2JqZWN0KHZhbHVlKS0+aXNHbG9iYWxPYmplY3QoKSkKLSAgICAgICAg
ICAgICAgICBnbG9iYWxPYmplY3QgPSBzdGF0aWNfY2FzdDxKU0dsb2JhbE9iamVjdCo+KGFzT2Jq
ZWN0KHZhbHVlKSk7CisgICAgICAgICAgICAgICAgZ2xvYmFsT2JqZWN0ID0ganNDYXN0PEpTR2xv
YmFsT2JqZWN0Kj4oYXNPYmplY3QodmFsdWUpKTsKIAogICAgICAgICAgICAgaWYgKCFnbG9iYWxP
YmplY3QpCiAgICAgICAgICAgICAgICAgZ2xvYmFsT2JqZWN0ID0gb3JpZ2luR2xvYmFsT2JqZWN0
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfbWV0aG9kLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX21ldGhvZC5jcHAKaW5kZXggNmI4NjIzMTVm
OTBhZjk2NzQwMWM3Y2UxMDUzNWQzOWNjNmQ4NzQ5Yy4uNWVmYzcxMjc2NDFkMmNhYTRmNjI0MTg5
NzliODkwZTU2YjE3NDg5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRp
bWVfbWV0aG9kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9tZXRob2Qu
Y3BwCkBAIC0xMTYsNyArMTE2LDcgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgY2FsbFJ1bnRpbWVNZXRob2QoRXhlY1N0YXRlKiBleGVjKQogICAgIH0gZWxzZSB7CiAgICAg
ICAgIC8vIENhbGxpbmcgYSBydW50aW1lIG9iamVjdCBvZiBhIHBsdWdpbiBlbGVtZW50PwogICAg
ICAgICBpZiAodGhpc1ZhbHVlLmluaGVyaXRzKCZKU0hUTUxFbGVtZW50OjpzX2luZm8pKSB7Ci0g
ICAgICAgICAgICBIVE1MRWxlbWVudCogZWxlbWVudCA9IHN0YXRpY19jYXN0PEpTSFRNTEVsZW1l
bnQqPihhc09iamVjdCh0aGlzVmFsdWUpKS0+aW1wbCgpOworICAgICAgICAgICAgSFRNTEVsZW1l
bnQqIGVsZW1lbnQgPSBqc0Nhc3Q8SlNIVE1MRWxlbWVudCo+KGFzT2JqZWN0KHRoaXNWYWx1ZSkp
LT5pbXBsKCk7CiAgICAgICAgICAgICBpbnN0YW5jZSA9IHBsdWdpbkluc3RhbmNlKGVsZW1lbnQp
OwogICAgICAgICB9CiAgICAgICAgIGlmICghaW5zdGFuY2UpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9icmlkZ2UvcnVudGltZV9vYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYnJpZGdl
L3J1bnRpbWVfb2JqZWN0LmNwcAppbmRleCA3ZWMwODdkMzU2NGQ1OTc4OTY5YTMwY2VjMTc2MTQw
NzQ1NjM0YjYxLi43NGJjYzNmNTY4M2VjZTEyNmU3MTA3YmI4MWIzMmNkODJiYTAyNzdkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9vYmplY3QuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX29iamVjdC5jcHAKQEAgLTI5MCw3ICsyOTAsNyBA
QCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsUnVudGltZUNvbnN0cnVj
dG9yKEV4ZWNTdGF0ZSogZXhlYykKICAgICBpbnN0YW5jZS0+ZW5kKCk7CiAgICAgCiAgICAgQVNT
RVJUKHJlc3VsdCk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQuaXNPYmplY3Qo
KSA/IHN0YXRpY19jYXN0PEpTT2JqZWN0Kj4ocmVzdWx0LmFzQ2VsbCgpKSA6IGNvbnN0cnVjdG9y
KTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdC5pc09iamVjdCgpID8ganNDYXN0
PEpTT2JqZWN0Kj4ocmVzdWx0LmFzQ2VsbCgpKSA6IGNvbnN0cnVjdG9yKTsKIH0KIAogQ29uc3Ry
dWN0VHlwZSBSdW50aW1lT2JqZWN0OjpnZXRDb25zdHJ1Y3REYXRhKEpTQ2VsbCogY2VsbCwgQ29u
c3RydWN0RGF0YSYgY29uc3RydWN0RGF0YSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvanMvV2ViQ29yZVRlc3RTdXBwb3J0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
anMvV2ViQ29yZVRlc3RTdXBwb3J0LmNwcAppbmRleCAxZDJhNDU3NWIzNzc3Zjg4MzE2YjZiYTVm
OWEzYzhhYWJlYTEwN2Y1Li43ZTUwYmMyNjc0ZjQzNTRhYWNkZjZmN2M2NmRkYWY1MmU4ZTMyZTAz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL2pzL1dlYkNvcmVUZXN0U3VwcG9y
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9qcy9XZWJDb3JlVGVzdFN1cHBvcnQu
Y3BwCkBAIC00MSw3ICs0MSw3IEBAIHZvaWQgaW5qZWN0SW50ZXJuYWxzT2JqZWN0KEpTQ29udGV4
dFJlZiBjb250ZXh0KQogewogICAgIEpTTG9jayBsb2NrKFNpbGVuY2VBc3NlcnRpb25zT25seSk7
CiAgICAgRXhlY1N0YXRlKiBleGVjID0gdG9KUyhjb250ZXh0KTsKLSAgICBKU0RPTUdsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0ID0gc3RhdGljX2Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihleGVj
LT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpOworICAgIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QgPSBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihleGVjLT5sZXhpY2FsR2xvYmFsT2Jq
ZWN0KCkpOwogICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdENvbnRleHQgPSBnbG9i
YWxPYmplY3QtPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKICAgICBEb2N1bWVudCogZG9jdW1l
bnQgPSBzY3JpcHRDb250ZXh0LT5pc0RvY3VtZW50KCkgPyBzdGF0aWNfY2FzdDxEb2N1bWVudCo+
KHNjcmlwdENvbnRleHQpIDogMDsKICAgICBnbG9iYWxPYmplY3QtPnB1dERpcmVjdChleGVjLT5n
bG9iYWxEYXRhKCksIElkZW50aWZpZXIoZXhlYywgSW50ZXJuYWxzOjppbnRlcm5hbHNJZCksIHRv
SlMoZXhlYywgZ2xvYmFsT2JqZWN0LCBJbnRlcm5hbHM6OmNyZWF0ZShkb2N1bWVudCkpKTsKQEAg
LTUxLDcgKzUxLDcgQEAgdm9pZCByZXNldEludGVybmFsc09iamVjdChKU0NvbnRleHRSZWYgY29u
dGV4dCkKIHsKICAgICBKU0xvY2sgbG9jayhTaWxlbmNlQXNzZXJ0aW9uc09ubHkpOwogICAgIEV4
ZWNTdGF0ZSogZXhlYyA9IHRvSlMoY29udGV4dCk7Ci0gICAgSlNET01HbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCA9IHN0YXRpY19jYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZXhlYy0+bGV4aWNh
bEdsb2JhbE9iamVjdCgpKTsKKyAgICBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0g
anNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKTsK
ICAgICBJbnRlcm5hbHMgKiBpbnRlcm5hbHMgPSB0b0ludGVybmFscyhnbG9iYWxPYmplY3QtPmdl
dERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCksIElkZW50aWZpZXIoZXhlYywgSW50ZXJuYWxzOjpp
bnRlcm5hbHNJZCkpKTsKICAgICBpZiAoaW50ZXJuYWxzKSB7CiAgICAgICAgIFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIHNjcmlwdENvbnRleHQgPSBnbG9iYWxPYmplY3QtPnNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKTsK
</data>
<flag name="review"
          id="140559"
          type_id="1"
          status="+"
          setter="slewis"
    />
          </attachment>
      

    </bug>

</bugzilla>