<?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>159864</bug_id>
          
          <creation_ts>2016-07-17 16:59:48 -0700</creation_ts>
          <short_desc>Rename fastHasAttribute to hasAttributeWithoutSynchronization</short_desc>
          <delta_ts>2016-07-17 17:57:03 -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>DOM</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Ryosuke Niwa">rniwa</assigned_to>
          <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1211875</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2016-07-17 16:59:48 -0700</bug_when>
    <thetext>Do the same rename as the bug 159852 for hasAttribute.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1211876</commentid>
    <comment_count>1</comment_count>
      <attachid>283873</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2016-07-17 17:01:12 -0700</bug_when>
    <thetext>Created attachment 283873
Did the rename</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1211878</commentid>
    <comment_count>2</comment_count>
      <attachid>283873</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-07-17 17:18:46 -0700</bug_when>
    <thetext>Comment on attachment 283873
Did the rename

rs=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1211880</commentid>
    <comment_count>3</comment_count>
      <attachid>283873</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-07-17 17:40:31 -0700</bug_when>
    <thetext>Comment on attachment 283873
Did the rename

Clearing flags on attachment: 283873

Committed r203337: &lt;http://trac.webkit.org/changeset/203337&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1211881</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-07-17 17:40:35 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1211885</commentid>
    <comment_count>5</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2016-07-17 17:57:03 -0700</bug_when>
    <thetext>This patch requires clean rebuilds on Mac :(  I triggered them on build.webkit.org bots.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>283873</attachid>
            <date>2016-07-17 17:01:12 -0700</date>
            <delta_ts>2016-07-17 17:40:31 -0700</delta_ts>
            <desc>Did the rename</desc>
            <filename>bug-159864-20160717170019.patch</filename>
            <type>text/plain</type>
            <size>64722</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwMzMzNikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3MyBAQAorMjAxNi0wNy0xNyAgUnlvc3Vr
ZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KKworICAgICAgICBSZW5hbWUgZmFzdEhhc0F0dHJp
YnV0ZSB0byBoYXNBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTk4NjQKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW5hbWVkIFJlbmFtZSBmYXN0SGFz
QXR0cmlidXRlIHRvIGhhc0F0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24gZm9yIGNsYXJp
dHkuCisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlMaXN0Qm94T3B0aW9u
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlMaXN0Qm94T3B0aW9uOjppc0Vu
YWJsZWQpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpoYXNBdHRyaWJ1dGUpOgor
ICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6Z2V0QXR0cmlidXRlKToKKyAg
ICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6ZGV0ZXJtaW5lQWNjZXNz
aWJpbGl0eVJvbGUpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvci5w
bToKKyAgICAgICAgKEdldHRlckV4cHJlc3Npb24pOgorICAgICAgICAqIGJpbmRpbmdzL3Njcmlw
dHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RPYmouY3BwOgorICAgICAgICAqIGJpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0
T2JqUmVmbGVjdGVkQm9vbGVhbkF0dHIpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUmVm
bGVjdGVkQ3VzdG9tQm9vbGVhbkF0dHIpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVz
dC9PYmpDL0RPTVRlc3RPYmoubW06CisgICAgICAgICgtW0RPTVRlc3RPYmogcmVmbGVjdGVkQm9v
bGVhbkF0dHJdKToKKyAgICAgICAgKC1bRE9NVGVzdE9iaiBzZXRSZWZsZWN0ZWRCb29sZWFuQXR0
cjpdKToKKyAgICAgICAgKC1bRE9NVGVzdE9iaiByZWZsZWN0ZWRDdXN0b21Cb29sZWFuQXR0cl0p
OgorICAgICAgICAoLVtET01UZXN0T2JqIHNldFJlZmxlY3RlZEN1c3RvbUJvb2xlYW5BdHRyOl0p
OgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVu
dDo6aGFzTWFuaWZlc3QpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmRvY3R5cGUpOgor
ICAgICAgICAqIGRvbS9FbGVtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpwYXJlbnRF
bGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6Omhhc0F0dHJpYnV0ZVdpdGhvdXRT
eW5jaHJvbml6YXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6ZmFzdEhhc0F0dHJp
YnV0ZSk6IERlbGV0ZWQuCisgICAgICAgICogZWRpdGluZy9BcHBseVN0eWxlQ29tbWFuZC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpBcHBseVN0eWxlQ29tbWFuZDo6cmVtb3ZlRW1iZWRkaW5nVXBU
b0VuY2xvc2luZ0Jsb2NrKToKKyAgICAgICAgKiBlZGl0aW5nL0RlbGV0ZVNlbGVjdGlvbkNvbW1h
bmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGVsZXRlU2VsZWN0aW9uQ29tbWFuZDo6bWFrZVN0
eWxpbmdFbGVtZW50c0RpcmVjdENoaWxkcmVuT2ZFZGl0YWJsZVJvb3RUb1ByZXZlbnRTdHlsZUxv
c3MpOgorICAgICAgICAqIGVkaXRpbmcvbWFya3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNy
ZWF0ZU1hcmt1cEludGVybmFsKToKKyAgICAgICAgKiBodG1sL0NvbG9ySW5wdXRUeXBlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNvbG9ySW5wdXRUeXBlOjpzaG91bGRTaG93U3VnZ2VzdGlvbnMp
OgorICAgICAgICAqIGh0bWwvRmlsZUlucHV0VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpG
aWxlSW5wdXRUeXBlOjpoYW5kbGVET01BY3RpdmF0ZUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OkZpbGVJbnB1dFR5cGU6OnJlY2VpdmVEcm9wcGVkRmlsZXMpOgorICAgICAgICAqIGh0bWwvRm9y
bUFzc29jaWF0ZWRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvcm1Bc3NvY2lhdGVk
RWxlbWVudDo6ZGlkTW92ZVRvTmV3RG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6Rm9ybUFz
c29jaWF0ZWRFbGVtZW50OjppbnNlcnRlZEludG8pOgorICAgICAgICAoV2ViQ29yZTo6Rm9ybUFz
c29jaWF0ZWRFbGVtZW50OjpyZW1vdmVkRnJvbSk6CisgICAgICAgIChXZWJDb3JlOjpGb3JtQXNz
b2NpYXRlZEVsZW1lbnQ6OmZvcm1BdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKiBodG1sL0Zv
cm1Db250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om93bmVyRm9ybUZvclN0YXRlKToK
KyAgICAgICAgKiBodG1sL0dlbmVyaWNDYWNoZWRIVE1MQ29sbGVjdGlvbi5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpHZW5lcmljQ2FjaGVkSFRNTENvbGxlY3Rpb248dHJhdmVyc2FsVHlwZT46OmVs
ZW1lbnRNYXRjaGVzKToKKyAgICAgICAgKiBodG1sL0hUTUxBbmNob3JFbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxBbmNob3JFbGVtZW50OjpkcmFnZ2FibGUpOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTEFuY2hvckVsZW1lbnQ6OmhyZWYpOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TEFuY2hvckVsZW1lbnQ6OnNlbmRQaW5ncyk6CisgICAgICAgICogaHRtbC9IVE1MQXBwbGV0RWxl
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQXBwbGV0RWxlbWVudDo6cmVuZGVyZXJJ
c05lZWRlZCk6CisgICAgICAgICogaHRtbC9IVE1MRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MRWxlbWVudDo6Y29sbGVjdFN0eWxlRm9yUHJlc2VudGF0aW9uQXR0cmlidXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OmVsZW1lbnRBZmZlY3RzRGlyZWN0aW9uYWxpdHkpOgorICAgICAg
ICAoV2ViQ29yZTo6c2V0SGFzRGlyQXV0b0ZsYWdSZWN1cnNpdmVseSk6CisgICAgICAgICogaHRt
bC9IVE1MRW1iZWRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxFbWJlZEVsZW1l
bnQ6OnJlbmRlcmVySXNOZWVkZWQpOgorICAgICAgICAqIGh0bWwvSFRNTEZpZWxkU2V0RWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjp1cGRhdGVGcm9tQ29udHJvbEVsZW1lbnRzQW5jZXN0
b3JEaXNhYmxlZFN0YXRlVW5kZXIpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZpZWxkU2V0RWxl
bWVudDo6ZGlzYWJsZWRBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxG
aWVsZFNldEVsZW1lbnQ6OmRpc2FibGVkU3RhdGVDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxGaWVsZFNldEVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZCk6CisgICAgICAgICogaHRtbC9I
VE1MRm9ybUNvbnRyb2xFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGb3JtQ29u
dHJvbEVsZW1lbnQ6OmZvcm1Ob1ZhbGlkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGb3Jt
Q29udHJvbEVsZW1lbnQ6OmZvcm1BY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZvcm1D
b250cm9sRWxlbWVudDo6Y29tcHV0ZUlzRGlzYWJsZWRCeUZpZWxkc2V0QW5jZXN0b3IpOgorICAg
ICAgICAoV2ViQ29yZTo6c2hvdWxkQXV0b2ZvY3VzKToKKyAgICAgICAgKiBodG1sL0hUTUxGb3Jt
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRm9ybUVsZW1lbnQ6OmZvcm1FbGVt
ZW50SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZvcm1FbGVtZW50Ojpub1ZhbGlkYXRl
KToKKyAgICAgICAgKiBodG1sL0hUTUxGcmFtZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTEZyYW1lRWxlbWVudDo6bm9SZXNpemUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZy
YW1lRWxlbWVudDo6ZGlkQXR0YWNoUmVuZGVyZXJzKToKKyAgICAgICAgKiBodG1sL0hUTUxGcmFt
ZUVsZW1lbnRCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGcmFtZUVsZW1lbnRCYXNl
OjpwYXJzZUF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRnJhbWVFbGVtZW50QmFz
ZTo6bG9jYXRpb24pOgorICAgICAgICAqIGh0bWwvSFRNTEhSRWxlbWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MSFJFbGVtZW50Ojpjb2xsZWN0U3R5bGVGb3JQcmVzZW50YXRpb25BdHRy
aWJ1dGUpOgorICAgICAgICAqIGh0bWwvSFRNTEltYWdlRWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MSW1hZ2VFbGVtZW50Ojppc1NlcnZlck1hcCk6CisgICAgICAgICogaHRtbC9I
VE1MSW5wdXRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6
OmZpbmlzaFBhcnNpbmdDaGlsZHJlbik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW5wdXRFbGVt
ZW50OjptYXRjaGVzRGVmYXVsdFBzZXVkb0NsYXNzKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJ
bnB1dEVsZW1lbnQ6OmlzQWN0aXZhdGVkU3VibWl0KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJ
bnB1dEVsZW1lbnQ6OnJlc2V0KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6
Om11bHRpcGxlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OnNldFNpemUp
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6c2hvdWxkVXNlTWVkaWFDYXB0
dXJlKToKKyAgICAgICAgKiBodG1sL0hUTUxNYXJxdWVlRWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MTWFycXVlZUVsZW1lbnQ6Om1pbmltdW1EZWxheSk6CisgICAgICAgICogaHRt
bC9IVE1MTWVkaWFFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1l
bnQ6Omluc2VydGVkSW50byk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojpz
ZWxlY3RNZWRpYVJlc291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6
OmxvYWRSZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjphdXRv
cGxheSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpwcmVsb2FkKToKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6Omxvb3ApOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTE1lZGlhRWxlbWVudDo6c2V0TG9vcCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVk
aWFFbGVtZW50Ojpjb250cm9scyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50
OjpzZXRDb250cm9scyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjptdXRl
ZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpzZXRNdXRlZCk6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpzZWxlY3ROZXh0U291cmNlQ2hpbGQpOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6c291cmNlV2FzQWRkZWQpOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6bWVkaWFTZXNzaW9uVGl0bGUpOgorICAg
ICAgICAqIGh0bWwvSFRNTE9iamVjdEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TE9iamVjdEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKToKKyAgICAgICAgKiBodG1sL0hUTUxPcHRH
cm91cEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE9wdEdyb3VwRWxlbWVudDo6
aXNEaXNhYmxlZEZvcm1Db250cm9sKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxPcHRHcm91cEVs
ZW1lbnQ6OmlzRm9jdXNhYmxlKToKKyAgICAgICAgKiBodG1sL0hUTUxPcHRpb25FbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxPcHRpb25FbGVtZW50OjptYXRjaGVzRGVmYXVsdFBz
ZXVkb0NsYXNzKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxPcHRpb25FbGVtZW50Ojp0ZXh0KToK
KyAgICAgICAgKiBodG1sL0hUTUxQcm9ncmVzc0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTFByb2dyZXNzRWxlbWVudDo6aXNEZXRlcm1pbmF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MUHJvZ3Jlc3NFbGVtZW50OjpkaWRFbGVtZW50U3RhdGVDaGFuZ2UpOgorICAgICAgICAq
IGh0bWwvSFRNTFNjcmlwdEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNjcmlw
dEVsZW1lbnQ6OmFzeW5jKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTY3JpcHRFbGVtZW50Ojpz
ZXRDcm9zc09yaWdpbik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MU2NyaXB0RWxlbWVudDo6YXN5
bmNBdHRyaWJ1dGVWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MU2NyaXB0RWxlbWVudDo6
ZGVmZXJBdHRyaWJ1dGVWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MU2NyaXB0RWxlbWVu
dDo6aGFzU291cmNlQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTY3JpcHRFbGVt
ZW50OjpkaXNwYXRjaExvYWRFdmVudCk6CisgICAgICAgICogaHRtbC9IVE1MU2VsZWN0RWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MU2VsZWN0RWxlbWVudDo6cmVzZXQpOgorICAg
ICAgICAqIGh0bWwvSFRNTFRyYWNrRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
VHJhY2tFbGVtZW50Ojppc0RlZmF1bHQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyYWNrRWxl
bWVudDo6ZW5zdXJlVHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyYWNrRWxlbWVudDo6
bG9hZFRpbWVyRmlyZWQpOgorICAgICAgICAqIGh0bWwvTWVkaWFFbGVtZW50U2Vzc2lvbi5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUVsZW1lbnRTZXNzaW9uOjp3aXJlbGVzc1ZpZGVvUGxh
eWJhY2tEaXNhYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUVsZW1lbnRTZXNzaW9uOjpy
ZXF1aXJlc0Z1bGxzY3JlZW5Gb3JWaWRlb1BsYXliYWNrKToKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhRWxlbWVudFNlc3Npb246OmFsbG93c0F1dG9tYXRpY01lZGlhRGF0YUxvYWRpbmcpOgorICAg
ICAgICAqIGh0bWwvU2VhcmNoSW5wdXRUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlYXJj
aElucHV0VHlwZTo6c2VhcmNoRXZlbnRzU2hvdWxkQmVEaXNwYXRjaGVkKToKKyAgICAgICAgKFdl
YkNvcmU6OlNlYXJjaElucHV0VHlwZTo6ZGlkU2V0VmFsdWVCeVVzZXJFZGl0KToKKyAgICAgICAg
KiBpbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yRE9NQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yTm9kZSk6CisgICAgICAgICogbG9hZGVyL0Zy
YW1lTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpzaG91bGRUcmVh
dFVSTEFzU3JjZG9jRG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmZp
bmRGcmFtZUZvck5hdmlnYXRpb24pOgorICAgICAgICAqIGxvYWRlci9JbWFnZUxvYWRlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUxvYWRlcjo6bm90aWZ5RmluaXNoZWQpOgorICAgICAg
ICAqIG1hdGhtbC9NYXRoTUxTZWxlY3RFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1h
dGhNTFNlbGVjdEVsZW1lbnQ6OmdldFNlbGVjdGVkU2VtYW50aWNzQ2hpbGQpOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
VGFibGVDZWxsOjpjb21wdXRlUHJlZmVycmVkTG9naWNhbFdpZHRocyk6CisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVJ
T1M6OmFkanVzdE1lbnVMaXN0QnV0dG9uU3R5bGUpOgorICAgICAgICAqIHJlbmRlcmluZy9TaW1w
bGVMaW5lTGF5b3V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNpbXBsZUxpbmVMYXlvdXQ6OmNh
blVzZUZvcldpdGhSZWFzb24pOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVz
b3VyY2VDbGlwcGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNlQ2xp
cHBlcjo6ZHJhd0NvbnRlbnRJbnRvTWFza0ltYWdlKToKKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0
ZU1vdGlvbkVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZU1vdGlvbkVs
ZW1lbnQ6OnVwZGF0ZUFuaW1hdGlvblBhdGgpOgorICAgICAgICAqIHN2Zy9TVkdBbmltYXRpb25F
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGlvbkVsZW1lbnQ6OnN0YXJ0
ZWRBY3RpdmVJbnRlcnZhbCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRpb25FbGVtZW50
Ojp1cGRhdGVBbmltYXRpb24pOgorICAgICAgICAqIHN2Zy9hbmltYXRpb24vU1ZHU01JTEVsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHU01JTEVsZW1lbnQ6Omluc2VydGVkSW50byk6
CisKIDIwMTYtMDctMTcgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgogCiAgICAg
ICAgIEV4Y2VwdGlvbnMgbG9nZ2VkIHRvIHRoZSBKUyBjb25zb2xlIHNob3VsZCB1c2UgdG9TdHJp
bmcoKS4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUxp
c3RCb3hPcHRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eUxpc3RCb3hPcHRpb24uY3BwCShyZXZpc2lvbiAyMDMzMzYpCisrKyBT
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlMaXN0Qm94T3B0aW9uLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNjcsNyArNjcsNyBAQCBib29sIEFjY2Vzc2liaWxpdHlMaXN0
Qm94T3B0aW9uOjppc0VuYWJsCiAgICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNl
KGdldEF0dHJpYnV0ZShhcmlhX2Rpc2FibGVkQXR0ciksICJ0cnVlIikpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAotICAgIGlmIChtX29wdGlvbkVsZW1lbnQtPmZhc3RIYXNBdHRyaWJ1dGUoZGlz
YWJsZWRBdHRyKSkKKyAgICBpZiAobV9vcHRpb25FbGVtZW50LT5oYXNBdHRyaWJ1dGVXaXRob3V0
U3luY2hyb25pemF0aW9uKGRpc2FibGVkQXR0cikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICAKICAgICByZXR1cm4gdHJ1ZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eU9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcAkocmV2aXNpb24gMjAzMzM2KQorKysg
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTk5Myw3ICsxOTkzLDcgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5T2JqZWN0
OjpoYXNBdHRyaWJ1dGUoYwogICAgIGlmICghaXM8RWxlbWVudD4obm9kZSkpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICAKLSAgICByZXR1cm4gZG93bmNhc3Q8RWxlbWVudD4oKm5vZGUpLmZh
c3RIYXNBdHRyaWJ1dGUoYXR0cmlidXRlKTsKKyAgICByZXR1cm4gZG93bmNhc3Q8RWxlbWVudD4o
Km5vZGUpLmhhc0F0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oYXR0cmlidXRlKTsKIH0K
ICAgICAKIGNvbnN0IEF0b21pY1N0cmluZyYgQWNjZXNzaWJpbGl0eU9iamVjdDo6Z2V0QXR0cmli
dXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZSkgY29uc3QKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVy
T2JqZWN0LmNwcAkocmV2aXNpb24gMjAzMzM2KQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjU0
Myw3ICsyNTQzLDcgQEAgQWNjZXNzaWJpbGl0eVJvbGUgQWNjZXNzaWJpbGl0eVJlbmRlck9iagog
CiAgICAgaWYgKG5vZGUgJiYgbm9kZS0+aXNMaW5rKCkpCiAgICAgICAgIHJldHVybiBXZWJDb3Jl
TGlua1JvbGU7Ci0gICAgaWYgKG5vZGUgJiYgaXM8SFRNTEltYWdlRWxlbWVudD4oKm5vZGUpICYm
IGRvd25jYXN0PEhUTUxJbWFnZUVsZW1lbnQ+KCpub2RlKS5mYXN0SGFzQXR0cmlidXRlKHVzZW1h
cEF0dHIpKQorICAgIGlmIChub2RlICYmIGlzPEhUTUxJbWFnZUVsZW1lbnQ+KCpub2RlKSAmJiBk
b3duY2FzdDxIVE1MSW1hZ2VFbGVtZW50Pigqbm9kZSkuaGFzQXR0cmlidXRlV2l0aG91dFN5bmNo
cm9uaXphdGlvbih1c2VtYXBBdHRyKSkKICAgICAgICAgcmV0dXJuIEltYWdlTWFwUm9sZTsKICAg
ICBpZiAoKGNzc0JveCAmJiBjc3NCb3gtPmlzTGlzdEl0ZW0oKSkgfHwgKG5vZGUgJiYgbm9kZS0+
aGFzVGFnTmFtZShsaVRhZykpKQogICAgICAgICByZXR1cm4gTGlzdEl0ZW1Sb2xlOwpJbmRleDog
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yLnBtCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvci5wbQko
cmV2aXNpb24gMjAzMzM2KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2Rl
R2VuZXJhdG9yLnBtCSh3b3JraW5nIGNvcHkpCkBAIC02NTQsNyArNjU0LDcgQEAgc3ViIEdldHRl
ckV4cHJlc3Npb24KICAgICBpZiAoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJp
YnV0ZXMtPnsiVVJMIn0pIHsKICAgICAgICAgJGZ1bmN0aW9uTmFtZSA9ICJnZXRVUkxBdHRyaWJ1
dGUiOwogICAgIH0gZWxzaWYgKCRhdHRyaWJ1dGVUeXBlIGVxICJib29sZWFuIikgewotICAgICAg
ICAkZnVuY3Rpb25OYW1lID0gImZhc3RIYXNBdHRyaWJ1dGUiOworICAgICAgICAkZnVuY3Rpb25O
YW1lID0gImhhc0F0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24iOwogICAgIH0gZWxzaWYg
KCRhdHRyaWJ1dGVUeXBlIGVxICJsb25nIikgewogICAgICAgICAkZnVuY3Rpb25OYW1lID0gImdl
dEludGVncmFsQXR0cmlidXRlIjsKICAgICB9IGVsc2lmICgkYXR0cmlidXRlVHlwZSBlcSAidW5z
aWduZWQgbG9uZyIpIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9HT2JqZWN0L1dlYktpdERPTVRlc3RPYmouY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RPYmouY3BwCShy
ZXZpc2lvbiAyMDMzMzYpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
R09iamVjdC9XZWJLaXRET01UZXN0T2JqLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQ2Miw3ICsy
NDYyLDcgQEAgZ2Jvb2xlYW4gd2Via2l0X2RvbV90ZXN0X29ial9nZXRfcmVmbGVjdAogICAgIFdl
YkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKICAgICBnX3JldHVybl92YWxfaWZf
ZmFpbChXRUJLSVRfRE9NX0lTX1RFU1RfT0JKKHNlbGYpLCBGQUxTRSk7CiAgICAgV2ViQ29yZTo6
VGVzdE9iaiogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKLSAgICBnYm9vbGVhbiByZXN1bHQg
PSBpdGVtLT5mYXN0SGFzQXR0cmlidXRlKFdlYkNvcmU6OkhUTUxOYW1lczo6cmVmbGVjdGVkYm9v
bGVhbmF0dHJBdHRyKTsKKyAgICBnYm9vbGVhbiByZXN1bHQgPSBpdGVtLT5oYXNBdHRyaWJ1dGVX
aXRob3V0U3luY2hyb25pemF0aW9uKFdlYkNvcmU6OkhUTUxOYW1lczo6cmVmbGVjdGVkYm9vbGVh
bmF0dHJBdHRyKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCkBAIC0yNTM0LDcgKzI1MzQsNyBA
QCBnYm9vbGVhbiB3ZWJraXRfZG9tX3Rlc3Rfb2JqX2dldF9yZWZsZWN0CiAgICAgV2ViQ29yZTo6
SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwogICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdF
QktJVF9ET01fSVNfVEVTVF9PQkooc2VsZiksIEZBTFNFKTsKICAgICBXZWJDb3JlOjpUZXN0T2Jq
KiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwotICAgIGdib29sZWFuIHJlc3VsdCA9IGl0ZW0t
PmZhc3RIYXNBdHRyaWJ1dGUoV2ViQ29yZTo6SFRNTE5hbWVzOjpjdXN0b21Db250ZW50Qm9vbGVh
bkF0dHJBdHRyKTsKKyAgICBnYm9vbGVhbiByZXN1bHQgPSBpdGVtLT5oYXNBdHRyaWJ1dGVXaXRo
b3V0U3luY2hyb25pemF0aW9uKFdlYkNvcmU6OkhUTUxOYW1lczo6Y3VzdG9tQ29udGVudEJvb2xl
YW5BdHRyQXR0cik7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApJbmRleDogU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAJKHJl
dmlzaW9uIDIwMzMzNikKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RPYmouY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNzk3LDcgKzE3OTcsNyBAQCBFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3RPYmpSZWZsZWN0ZWRCb29sZWFuCiAgICAgICAgIHJldHVybiB0aHJv
d0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInJlZmxlY3RlZEJvb2xlYW5BdHRy
Iik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7Ci0gICAg
SlNWYWx1ZSByZXN1bHQgPSBqc0Jvb2xlYW4oaW1wbC5mYXN0SGFzQXR0cmlidXRlKFdlYkNvcmU6
OkhUTUxOYW1lczo6cmVmbGVjdGVkYm9vbGVhbmF0dHJBdHRyKSk7CisgICAgSlNWYWx1ZSByZXN1
bHQgPSBqc0Jvb2xlYW4oaW1wbC5oYXNBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKFdl
YkNvcmU6OkhUTUxOYW1lczo6cmVmbGVjdGVkYm9vbGVhbmF0dHJBdHRyKSk7CiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQogCkBAIC0xODU3LDcgKzE4NTcsNyBAQCBFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3RPYmpSZWZsZWN0ZWRDdXN0b21CCiAgICAgICAgIHJldHVybiB0aHJv
d0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInJlZmxlY3RlZEN1c3RvbUJvb2xl
YW5BdHRyIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7
Ci0gICAgSlNWYWx1ZSByZXN1bHQgPSBqc0Jvb2xlYW4oaW1wbC5mYXN0SGFzQXR0cmlidXRlKFdl
YkNvcmU6OkhUTUxOYW1lczo6Y3VzdG9tQ29udGVudEJvb2xlYW5BdHRyQXR0cikpOworICAgIEpT
VmFsdWUgcmVzdWx0ID0ganNCb29sZWFuKGltcGwuaGFzQXR0cmlidXRlV2l0aG91dFN5bmNocm9u
aXphdGlvbihXZWJDb3JlOjpIVE1MTmFtZXM6OmN1c3RvbUNvbnRlbnRCb29sZWFuQXR0ckF0dHIp
KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CiAKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RPYmoubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVz
dE9iai5tbQkocmV2aXNpb24gMjAzMzM2KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L09iakMvRE9NVGVzdE9iai5tbQkod29ya2luZyBjb3B5KQpAQCAtMzY4LDcgKzM2
OCw3IEBAIC0gKHZvaWQpc2V0UmVmbGVjdGVkVW5zaWduZWRJbnRlZ3JhbEF0dHIKIC0gKEJPT0wp
cmVmbGVjdGVkQm9vbGVhbkF0dHIKIHsKICAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3Rh
dGUgc3RhdGU7Ci0gICAgcmV0dXJuIElNUEwtPmZhc3RIYXNBdHRyaWJ1dGUoV2ViQ29yZTo6SFRN
TE5hbWVzOjpyZWZsZWN0ZWRib29sZWFuYXR0ckF0dHIpOworICAgIHJldHVybiBJTVBMLT5oYXNB
dHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKFdlYkNvcmU6OkhUTUxOYW1lczo6cmVmbGVj
dGVkYm9vbGVhbmF0dHJBdHRyKTsKIH0KIAogLSAodm9pZClzZXRSZWZsZWN0ZWRCb29sZWFuQXR0
cjooQk9PTCluZXdSZWZsZWN0ZWRCb29sZWFuQXR0cgpAQCAtNDE2LDcgKzQxNiw3IEBAIC0gKHZv
aWQpc2V0UmVmbGVjdGVkQ3VzdG9tSW50ZWdyYWxBdHRyOigKIC0gKEJPT0wpcmVmbGVjdGVkQ3Vz
dG9tQm9vbGVhbkF0dHIKIHsKICAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3Rh
dGU7Ci0gICAgcmV0dXJuIElNUEwtPmZhc3RIYXNBdHRyaWJ1dGUoV2ViQ29yZTo6SFRNTE5hbWVz
OjpjdXN0b21Db250ZW50Qm9vbGVhbkF0dHJBdHRyKTsKKyAgICByZXR1cm4gSU1QTC0+aGFzQXR0
cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihXZWJDb3JlOjpIVE1MTmFtZXM6OmN1c3RvbUNv
bnRlbnRCb29sZWFuQXR0ckF0dHIpOwogfQogCiAtICh2b2lkKXNldFJlZmxlY3RlZEN1c3RvbUJv
b2xlYW5BdHRyOihCT09MKW5ld1JlZmxlY3RlZEN1c3RvbUJvb2xlYW5BdHRyCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudC5jcHAJKHJldmlzaW9uIDIwMzMzNikKKysrIFNvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg0Nyw3ICs4NDcsNyBAQCBET01JbXBs
ZW1lbnRhdGlvbiYgRG9jdW1lbnQ6OmltcGxlbWVudGF0CiAKIGJvb2wgRG9jdW1lbnQ6Omhhc01h
bmlmZXN0KCkgY29uc3QKIHsKLSAgICByZXR1cm4gZG9jdW1lbnRFbGVtZW50KCkgJiYgZG9jdW1l
bnRFbGVtZW50KCktPmhhc1RhZ05hbWUoaHRtbFRhZykgJiYgZG9jdW1lbnRFbGVtZW50KCktPmZh
c3RIYXNBdHRyaWJ1dGUobWFuaWZlc3RBdHRyKTsKKyAgICByZXR1cm4gZG9jdW1lbnRFbGVtZW50
KCkgJiYgZG9jdW1lbnRFbGVtZW50KCktPmhhc1RhZ05hbWUoaHRtbFRhZykgJiYgZG9jdW1lbnRF
bGVtZW50KCktPmhhc0F0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24obWFuaWZlc3RBdHRy
KTsKIH0KIAogRG9jdW1lbnRUeXBlKiBEb2N1bWVudDo6ZG9jdHlwZSgpIGNvbnN0CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2RvbS9FbGVtZW50LmgJKHJldmlzaW9uIDIwMzMzNikKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9F
bGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTg2LDcgKzg2LDcgQEAgcHVibGljOgogCiAgICAg
Ly8gQ2FsbCB0aGlzIHRvIGdldCB0aGUgdmFsdWUgb2YgYW4gYXR0cmlidXRlIHRoYXQgaXMga25v
d24gbm90IHRvIGJlIHRoZSBzdHlsZQogICAgIC8vIGF0dHJpYnV0ZSBvciBvbmUgb2YgdGhlIFNW
RyBhbmltYXRhYmxlIGF0dHJpYnV0ZXMuCi0gICAgYm9vbCBmYXN0SGFzQXR0cmlidXRlKGNvbnN0
IFF1YWxpZmllZE5hbWUmKSBjb25zdDsKKyAgICBib29sIGhhc0F0dHJpYnV0ZVdpdGhvdXRTeW5j
aHJvbml6YXRpb24oY29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0OwogICAgIGNvbnN0IEF0b21p
Y1N0cmluZyYgYXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihjb25zdCBRdWFsaWZpZWRO
YW1lJikgY29uc3Q7CiAjaWZuZGVmIE5ERUJVRwogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgZmFz
dEF0dHJpYnV0ZUxvb2t1cEFsbG93ZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0OwpAQCAt
NjYzLDcgKzY2Myw3IEBAIGlubGluZSBFbGVtZW50KiBOb2RlOjpwYXJlbnRFbGVtZW50KCkgY28K
ICAgICByZXR1cm4gaXM8RWxlbWVudD4ocGFyZW50KSA/IGRvd25jYXN0PEVsZW1lbnQ+KHBhcmVu
dCkgOiBudWxscHRyOwogfQogCi1pbmxpbmUgYm9vbCBFbGVtZW50OjpmYXN0SGFzQXR0cmlidXRl
KGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUpIGNvbnN0CitpbmxpbmUgYm9vbCBFbGVtZW50Ojpo
YXNBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5h
bWUpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGZhc3RBdHRyaWJ1dGVMb29rdXBBbGxvd2VkKG5hbWUp
KTsKICAgICByZXR1cm4gZWxlbWVudERhdGEoKSAmJiBmaW5kQXR0cmlidXRlQnlOYW1lKG5hbWUp
OwpJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9BcHBseVN0eWxlQ29tbWFuZC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9BcHBseVN0eWxlQ29tbWFuZC5jcHAJ
KHJldmlzaW9uIDIwMzMzNikKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQXBwbHlTdHlsZUNv
bW1hbmQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MzAsNyArNTMwLDcgQEAgdm9pZCBBcHBseVN0
eWxlQ29tbWFuZDo6cmVtb3ZlRW1iZWRkaW5nVQogICAgICAgICAvLyBhbmQgYWxsIG1hdGNoaW5n
IHN0eWxlIHJ1bGVzIGluIG9yZGVyIHRvIGRldGVybWluZSBob3cgdG8gYmVzdCBzZXQgdGhlIHVu
aWNvZGUtYmlkaSBwcm9wZXJ0eSB0byAnbm9ybWFsJy4KICAgICAgICAgLy8gRm9yIG5vdywgaXQg
YXNzdW1lcyB0aGF0IGlmIHRoZSAnZGlyJyBhdHRyaWJ1dGUgaXMgcHJlc2VudCwgdGhlbiByZW1v
dmluZyBpdCB3aWxsIHN1ZmZpY2UsIGFuZAogICAgICAgICAvLyBvdGhlcndpc2UgaXQgc2V0cyB0
aGUgcHJvcGVydHkgaW4gdGhlIGlubGluZSBzdHlsZSBkZWNsYXJhdGlvbi4KLSAgICAgICAgaWYg
KGVsZW1lbnQuZmFzdEhhc0F0dHJpYnV0ZShkaXJBdHRyKSkgeworICAgICAgICBpZiAoZWxlbWVu
dC5oYXNBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKGRpckF0dHIpKSB7CiAgICAgICAg
ICAgICAvLyBGSVhNRTogSWYgdGhpcyBpcyBhIEJETyBlbGVtZW50LCB3ZSBzaG91bGQgcHJvYmFi
bHkganVzdCByZW1vdmUgaXQgaWYgaXQgaGFzIG5vCiAgICAgICAgICAgICAvLyBvdGhlciBhdHRy
aWJ1dGVzLCBsaWtlIHdlIChzaG91bGQpIGRvIHdpdGggQiBhbmQgSSBlbGVtZW50cy4KICAgICAg
ICAgICAgIHJlbW92ZU5vZGVBdHRyaWJ1dGUoJmVsZW1lbnQsIGRpckF0dHIpOwpJbmRleDogU291
cmNlL1dlYkNvcmUvZWRpdGluZy9EZWxldGVTZWxlY3Rpb25Db21tYW5kLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0RlbGV0ZVNlbGVjdGlvbkNvbW1hbmQuY3BwCShy
ZXZpc2lvbiAyMDMzMzYpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0RlbGV0ZVNlbGVjdGlv
bkNvbW1hbmQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MzQsNyArNDM0LDcgQEAgdm9pZCBEZWxl
dGVTZWxlY3Rpb25Db21tYW5kOjptYWtlU3R5bGluZwogICAgIFJlZlB0cjxOb2RlPiBub2RlID0g
cmFuZ2UtPmZpcnN0Tm9kZSgpOwogICAgIHdoaWxlIChub2RlICYmIG5vZGUgIT0gcmFuZ2UtPnBh
c3RMYXN0Tm9kZSgpKSB7CiAgICAgICAgIFJlZlB0cjxOb2RlPiBuZXh0Tm9kZSA9IE5vZGVUcmF2
ZXJzYWw6Om5leHQoKm5vZGUpOwotICAgICAgICBpZiAoKGlzPEhUTUxTdHlsZUVsZW1lbnQ+KCpu
b2RlKSAmJiAhZG93bmNhc3Q8SFRNTFN0eWxlRWxlbWVudD4oKm5vZGUpLmZhc3RIYXNBdHRyaWJ1
dGUoc2NvcGVkQXR0cikpIHx8IGlzPEhUTUxMaW5rRWxlbWVudD4oKm5vZGUpKSB7CisgICAgICAg
IGlmICgoaXM8SFRNTFN0eWxlRWxlbWVudD4oKm5vZGUpICYmICFkb3duY2FzdDxIVE1MU3R5bGVF
bGVtZW50Pigqbm9kZSkuaGFzQXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihzY29wZWRB
dHRyKSkgfHwgaXM8SFRNTExpbmtFbGVtZW50Pigqbm9kZSkpIHsKICAgICAgICAgICAgIG5leHRO
b2RlID0gTm9kZVRyYXZlcnNhbDo6bmV4dFNraXBwaW5nQ2hpbGRyZW4oKm5vZGUpOwogICAgICAg
ICAgICAgUmVmUHRyPENvbnRhaW5lck5vZGU+IHJvb3RFZGl0YWJsZUVsZW1lbnQgPSBub2RlLT5y
b290RWRpdGFibGVFbGVtZW50KCk7CiAgICAgICAgICAgICBpZiAocm9vdEVkaXRhYmxlRWxlbWVu
dCkgewpJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcAkocmV2aXNpb24gMjAzMzM2KQor
KysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02
MjksNyArNjI5LDcgQEAgc3RhdGljIFN0cmluZyBjcmVhdGVNYXJrdXBJbnRlcm5hbChEb2N1bQog
ICAgICAgICAgICAgICAgIC8vIEJyaW5nIHRoZSBiYWNrZ3JvdW5kIGF0dHJpYnV0ZSBvdmVyLCBi
dXQgbm90IGFzIGFuIGF0dHJpYnV0ZSBiZWNhdXNlIGEgYmFja2dyb3VuZCBhdHRyaWJ1dGUgb24g
YSBkaXYKICAgICAgICAgICAgICAgICAvLyBhcHBlYXJzIHRvIGhhdmUgbm8gZWZmZWN0LgogICAg
ICAgICAgICAgICAgIGlmICgoIWZ1bGx5U2VsZWN0ZWRSb290U3R5bGUgfHwgIWZ1bGx5U2VsZWN0
ZWRSb290U3R5bGUtPnN0eWxlKCkgfHwgIWZ1bGx5U2VsZWN0ZWRSb290U3R5bGUtPnN0eWxlKCkt
PmdldFByb3BlcnR5Q1NTVmFsdWUoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kSW1hZ2UpKQotICAgICAg
ICAgICAgICAgICAgICAmJiBmdWxseVNlbGVjdGVkUm9vdC0+ZmFzdEhhc0F0dHJpYnV0ZShiYWNr
Z3JvdW5kQXR0cikpCisgICAgICAgICAgICAgICAgICAgICYmIGZ1bGx5U2VsZWN0ZWRSb290LT5o
YXNBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKGJhY2tncm91bmRBdHRyKSkKICAgICAg
ICAgICAgICAgICAgICAgZnVsbHlTZWxlY3RlZFJvb3RTdHlsZS0+c3R5bGUoKS0+c2V0UHJvcGVy
dHkoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kSW1hZ2UsICJ1cmwoJyIgKyBmdWxseVNlbGVjdGVkUm9v
dC0+Z2V0QXR0cmlidXRlKGJhY2tncm91bmRBdHRyKSArICInKSIpOwogCiAgICAgICAgICAgICAg
ICAgaWYgKGZ1bGx5U2VsZWN0ZWRSb290U3R5bGUtPnN0eWxlKCkpIHsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2h0bWwvQ29sb3JJbnB1dFR5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2h0bWwvQ29sb3JJbnB1dFR5cGUuY3BwCShyZXZpc2lvbiAyMDMzMzYpCisrKyBTb3VyY2Uv
V2ViQ29yZS9odG1sL0NvbG9ySW5wdXRUeXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjIyLDcg
KzIyMiw3IEBAIENvbG9yIENvbG9ySW5wdXRUeXBlOjpjdXJyZW50Q29sb3IoKQogYm9vbCBDb2xv
cklucHV0VHlwZTo6c2hvdWxkU2hvd1N1Z2dlc3Rpb25zKCkgY29uc3QKIHsKICNpZiBFTkFCTEUo
REFUQUxJU1RfRUxFTUVOVCkKLSAgICByZXR1cm4gZWxlbWVudCgpLmZhc3RIYXNBdHRyaWJ1dGUo
bGlzdEF0dHIpOworICAgIHJldHVybiBlbGVtZW50KCkuaGFzQXR0cmlidXRlV2l0aG91dFN5bmNo
cm9uaXphdGlvbihsaXN0QXR0cik7CiAjZWxzZQogICAgIHJldHVybiBmYWxzZTsKICNlbmRpZgpJ
bmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9GaWxlSW5wdXRUeXBlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9odG1sL0ZpbGVJbnB1dFR5cGUuY3BwCShyZXZpc2lvbiAyMDMzMzYp
CisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0ZpbGVJbnB1dFR5cGUuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xODAsNyArMTgwLDcgQEAgdm9pZCBGaWxlSW5wdXRUeXBlOjpoYW5kbGVET01BY3RpdmF0
ZUV2ZQogICAgIGlmIChDaHJvbWUqIGNocm9tZSA9IHRoaXMtPmNocm9tZSgpKSB7CiAgICAgICAg
IEZpbGVDaG9vc2VyU2V0dGluZ3Mgc2V0dGluZ3M7CiAgICAgICAgIEhUTUxJbnB1dEVsZW1lbnQm
IGlucHV0ID0gZWxlbWVudCgpOwotICAgICAgICBzZXR0aW5ncy5hbGxvd3NNdWx0aXBsZUZpbGVz
ID0gaW5wdXQuZmFzdEhhc0F0dHJpYnV0ZShtdWx0aXBsZUF0dHIpOworICAgICAgICBzZXR0aW5n
cy5hbGxvd3NNdWx0aXBsZUZpbGVzID0gaW5wdXQuaGFzQXR0cmlidXRlV2l0aG91dFN5bmNocm9u
aXphdGlvbihtdWx0aXBsZUF0dHIpOwogICAgICAgICBzZXR0aW5ncy5hY2NlcHRNSU1FVHlwZXMg
PSBpbnB1dC5hY2NlcHRNSU1FVHlwZXMoKTsKICAgICAgICAgc2V0dGluZ3MuYWNjZXB0RmlsZUV4
dGVuc2lvbnMgPSBpbnB1dC5hY2NlcHRGaWxlRXh0ZW5zaW9ucygpOwogICAgICAgICBzZXR0aW5n
cy5zZWxlY3RlZEZpbGVzID0gbV9maWxlTGlzdC0+cGF0aHMoKTsKQEAgLTQwNCw3ICs0MDQsNyBA
QCBib29sIEZpbGVJbnB1dFR5cGU6OnJlY2VpdmVEcm9wcGVkRmlsZXMoCiAgICAgZm9yIChhdXRv
JiBwYXRoIDogcGF0aHMpCiAgICAgICAgIGZpbGVzLmFwcGVuZChGaWxlQ2hvb3NlckZpbGVJbmZv
KHBhdGgpKTsKIAotICAgIGlmIChpbnB1dC0+ZmFzdEhhc0F0dHJpYnV0ZShtdWx0aXBsZUF0dHIp
KQorICAgIGlmIChpbnB1dC0+aGFzQXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihtdWx0
aXBsZUF0dHIpKQogICAgICAgICBmaWxlc0Nob3NlbihmaWxlcyk7CiAgICAgZWxzZSB7CiAgICAg
ICAgIFZlY3RvcjxGaWxlQ2hvb3NlckZpbGVJbmZvPiBmaXJzdEZpbGVPbmx5OwpJbmRleDogU291
cmNlL1dlYkNvcmUvaHRtbC9Gb3JtQXNzb2NpYXRlZEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2h0bWwvRm9ybUFzc29jaWF0ZWRFbGVtZW50LmNwcAkocmV2aXNpb24g
MjAzMzM2KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9Gb3JtQXNzb2NpYXRlZEVsZW1lbnQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC02Myw3ICs2Myw3IEBAIEZvcm1Bc3NvY2lhdGVkRWxlbWVudDo6
fkZvcm1Bc3NvY2lhdGVkRWwKIHZvaWQgRm9ybUFzc29jaWF0ZWRFbGVtZW50OjpkaWRNb3ZlVG9O
ZXdEb2N1bWVudChEb2N1bWVudCogb2xkRG9jdW1lbnQpCiB7CiAgICAgSFRNTEVsZW1lbnQmIGVs
ZW1lbnQgPSBhc0hUTUxFbGVtZW50KCk7Ci0gICAgaWYgKG9sZERvY3VtZW50ICYmIGVsZW1lbnQu
ZmFzdEhhc0F0dHJpYnV0ZShmb3JtQXR0cikpCisgICAgaWYgKG9sZERvY3VtZW50ICYmIGVsZW1l
bnQuaGFzQXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihmb3JtQXR0cikpCiAgICAgICAg
IHJlc2V0Rm9ybUF0dHJpYnV0ZVRhcmdldE9ic2VydmVyKCk7CiB9CiAKQEAgLTc4LDcgKzc4LDcg
QEAgdm9pZCBGb3JtQXNzb2NpYXRlZEVsZW1lbnQ6Omluc2VydGVkSW50bwogICAgIGlmICghaW5z
ZXJ0aW9uUG9pbnQuaW5Eb2N1bWVudCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoZWxl
bWVudC5mYXN0SGFzQXR0cmlidXRlKGZvcm1BdHRyKSkKKyAgICBpZiAoZWxlbWVudC5oYXNBdHRy
aWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKGZvcm1BdHRyKSkKICAgICAgICAgcmVzZXRGb3Jt
QXR0cmlidXRlVGFyZ2V0T2JzZXJ2ZXIoKTsKIH0KIApAQCAtOTYsNyArOTYsNyBAQCBzdGF0aWMg
Tm9kZSogY29tcHV0ZVJvb3ROb2RlKE5vZGUmIG5vZGUpCiB2b2lkIEZvcm1Bc3NvY2lhdGVkRWxl
bWVudDo6cmVtb3ZlZEZyb20oQ29udGFpbmVyTm9kZSYgaW5zZXJ0aW9uUG9pbnQpCiB7CiAgICAg
SFRNTEVsZW1lbnQmIGVsZW1lbnQgPSBhc0hUTUxFbGVtZW50KCk7Ci0gICAgaWYgKGluc2VydGlv
blBvaW50LmluRG9jdW1lbnQoKSAmJiBlbGVtZW50LmZhc3RIYXNBdHRyaWJ1dGUoZm9ybUF0dHIp
KQorICAgIGlmIChpbnNlcnRpb25Qb2ludC5pbkRvY3VtZW50KCkgJiYgZWxlbWVudC5oYXNBdHRy
aWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKGZvcm1BdHRyKSkKICAgICAgICAgbV9mb3JtQXR0
cmlidXRlVGFyZ2V0T2JzZXJ2ZXIgPSBudWxscHRyOwogICAgIC8vIElmIHRoZSBmb3JtIGFuZCBl
bGVtZW50IGFyZSBib3RoIGluIHRoZSBzYW1lIHRyZWUsIHByZXNlcnZlIHRoZSBjb25uZWN0aW9u
IHRvIHRoZSBmb3JtLgogICAgIC8vIE90aGVyd2lzZSwgbnVsbCBvdXQgb3VyIGZvcm0gYW5kIHJl
bW92ZSBvdXJzZWx2ZXMgZnJvbSB0aGUgZm9ybSdzIGxpc3Qgb2YgZWxlbWVudHMuCkBAIC0xNzUs
NyArMTc1LDcgQEAgdm9pZCBGb3JtQXNzb2NpYXRlZEVsZW1lbnQ6OnJlc2V0Rm9ybU93bgogdm9p
ZCBGb3JtQXNzb2NpYXRlZEVsZW1lbnQ6OmZvcm1BdHRyaWJ1dGVDaGFuZ2VkKCkKIHsKICAgICBI
VE1MRWxlbWVudCYgZWxlbWVudCA9IGFzSFRNTEVsZW1lbnQoKTsKLSAgICBpZiAoIWVsZW1lbnQu
ZmFzdEhhc0F0dHJpYnV0ZShmb3JtQXR0cikpIHsKKyAgICBpZiAoIWVsZW1lbnQuaGFzQXR0cmli
dXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihmb3JtQXR0cikpIHsKICAgICAgICAgLy8gVGhlIGZv
cm0gYXR0cmlidXRlIHJlbW92ZWQuIFdlIG5lZWQgdG8gcmVzZXQgZm9ybSBvd25lciBoZXJlLgog
ICAgICAgICBIVE1MRm9ybUVsZW1lbnQqIG9yaWdpbmFsRm9ybSA9IG1fZm9ybTsKICAgICAgICAg
c2V0Rm9ybShIVE1MRm9ybUVsZW1lbnQ6OmZpbmRDbG9zZXN0Rm9ybUFuY2VzdG9yKGVsZW1lbnQp
KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvRm9ybUNvbnRyb2xsZXIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvRm9ybUNvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiAy
MDMzMzYpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0Zvcm1Db250cm9sbGVyLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzUsNyArMzUsNyBAQCBzdGF0aWMgaW5saW5lIEhUTUxGb3JtRWxlbWVudCog
b3duZXJGb3JtCiAgICAgLy8gQXNzdW1lIGNvbnRyb2xzIHdpdGggZm9ybSBhdHRyaWJ1dGUgaGF2
ZSBubyBvd25lcnMgYmVjYXVzZSB3ZSByZXN0b3JlCiAgICAgLy8gc3RhdGUgZHVyaW5nIHBhcnNp
bmcgYW5kIGZvcm0gb3duZXJzIG9mIHN1Y2ggY29udHJvbHMgbWlnaHQgYmUKICAgICAvLyBpbmRl
dGVybWluYXRlLgotICAgIHJldHVybiBjb250cm9sLmZhc3RIYXNBdHRyaWJ1dGUoZm9ybUF0dHIp
ID8gMCA6IGNvbnRyb2wuZm9ybSgpOworICAgIHJldHVybiBjb250cm9sLmhhc0F0dHJpYnV0ZVdp
dGhvdXRTeW5jaHJvbml6YXRpb24oZm9ybUF0dHIpID8gMCA6IGNvbnRyb2wuZm9ybSgpOwogfQog
CiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0dlbmVy
aWNDYWNoZWRIVE1MQ29sbGVjdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
aHRtbC9HZW5lcmljQ2FjaGVkSFRNTENvbGxlY3Rpb24uY3BwCShyZXZpc2lvbiAyMDMzMzYpCisr
KyBTb3VyY2UvV2ViQ29yZS9odG1sL0dlbmVyaWNDYWNoZWRIVE1MQ29sbGVjdGlvbi5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTY5LDkgKzY5LDkgQEAgYm9vbCBHZW5lcmljQ2FjaGVkSFRNTENvbGxl
Y3Rpb248dHJhdmVycwogICAgIGNhc2UgRG9jRW1iZWRzOgogICAgICAgICByZXR1cm4gZWxlbWVu
dC5oYXNUYWdOYW1lKGVtYmVkVGFnKTsKICAgICBjYXNlIERvY0xpbmtzOgotICAgICAgICByZXR1
cm4gKGVsZW1lbnQuaGFzVGFnTmFtZShhVGFnKSB8fCBlbGVtZW50Lmhhc1RhZ05hbWUoYXJlYVRh
ZykpICYmIGVsZW1lbnQuZmFzdEhhc0F0dHJpYnV0ZShocmVmQXR0cik7CisgICAgICAgIHJldHVy
biAoZWxlbWVudC5oYXNUYWdOYW1lKGFUYWcpIHx8IGVsZW1lbnQuaGFzVGFnTmFtZShhcmVhVGFn
KSkgJiYgZWxlbWVudC5oYXNBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKGhyZWZBdHRy
KTsKICAgICBjYXNlIERvY0FuY2hvcnM6Ci0gICAgICAgIHJldHVybiBlbGVtZW50Lmhhc1RhZ05h
bWUoYVRhZykgJiYgZWxlbWVudC5mYXN0SGFzQXR0cmlidXRlKG5hbWVBdHRyKTsKKyAgICAgICAg
cmV0dXJuIGVsZW1lbnQuaGFzVGFnTmFtZShhVGFnKSAmJiBlbGVtZW50Lmhhc0F0dHJpYnV0ZVdp
dGhvdXRTeW5jaHJvbml6YXRpb24obmFtZUF0dHIpOwogICAgIGNhc2UgQnlDbGFzczoKICAgICBj
YXNlIEJ5VGFnOgogICAgIGNhc2UgQnlIVE1MVGFnOgpJbmRleDogU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MQW5jaG9yRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MQW5jaG9yRWxlbWVudC5jcHAJKHJldmlzaW9uIDIwMzMzNikKKysrIFNvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEFuY2hvckVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yODEsNyAr
MjgxLDcgQEAgYm9vbCBIVE1MQW5jaG9yRWxlbWVudDo6ZHJhZ2dhYmxlKCkgY29ucwogICAgICAg
ICByZXR1cm4gdHJ1ZTsKICAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UodmFs
dWUsICJmYWxzZSIpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIGZhc3RIYXNB
dHRyaWJ1dGUoaHJlZkF0dHIpOworICAgIHJldHVybiBoYXNBdHRyaWJ1dGVXaXRob3V0U3luY2hy
b25pemF0aW9uKGhyZWZBdHRyKTsKIH0KIAogVVJMIEhUTUxBbmNob3JFbGVtZW50OjpocmVmKCkg
Y29uc3QKQEAgLTM0OSw3ICszNDksNyBAQCBib29sIEhUTUxBbmNob3JFbGVtZW50Ojppc0xpdmVM
aW5rKCkgY29uCiAKIHZvaWQgSFRNTEFuY2hvckVsZW1lbnQ6OnNlbmRQaW5ncyhjb25zdCBVUkwm
IGRlc3RpbmF0aW9uVVJMKQogewotICAgIGlmICghZmFzdEhhc0F0dHJpYnV0ZShwaW5nQXR0cikg
fHwgIWRvY3VtZW50KCkuc2V0dGluZ3MoKSB8fCAhZG9jdW1lbnQoKS5zZXR0aW5ncygpLT5oeXBl
cmxpbmtBdWRpdGluZ0VuYWJsZWQoKSkKKyAgICBpZiAoIWhhc0F0dHJpYnV0ZVdpdGhvdXRTeW5j
aHJvbml6YXRpb24ocGluZ0F0dHIpIHx8ICFkb2N1bWVudCgpLnNldHRpbmdzKCkgfHwgIWRvY3Vt
ZW50KCkuc2V0dGluZ3MoKS0+aHlwZXJsaW5rQXVkaXRpbmdFbmFibGVkKCkpCiAgICAgICAgIHJl
dHVybjsKIAogICAgIFNwYWNlU3BsaXRTdHJpbmcgcGluZ1VSTHMoYXR0cmlidXRlV2l0aG91dFN5
bmNocm9uaXphdGlvbihwaW5nQXR0ciksIGZhbHNlKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEFwcGxldEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEFwcGxldEVsZW1lbnQuY3BwCShyZXZpc2lvbiAyMDMzMzYpCisrKyBTb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxBcHBsZXRFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzAsNyAr
NzAsNyBAQCB2b2lkIEhUTUxBcHBsZXRFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjCiAKIGJvb2wg
SFRNTEFwcGxldEVsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQoY29uc3QgUmVuZGVyU3R5bGUmIHN0
eWxlKQogewotICAgIGlmICghZmFzdEhhc0F0dHJpYnV0ZShjb2RlQXR0cikpCisgICAgaWYgKCFo
YXNBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKGNvZGVBdHRyKSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIHJldHVybiBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50OjpyZW5kZXJlcklz
TmVlZGVkKHN0eWxlKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwCShy
ZXZpc2lvbiAyMDMzMzYpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjQzLDcgKzI0Myw3IEBAIHZvaWQgSFRNTEVsZW1lbnQ6OmNvbGxl
Y3RTdHlsZUZvclByZXNlbnQKICAgICAgICAgbWFwTGFuZ3VhZ2VBdHRyaWJ1dGVUb0xvY2FsZSh2
YWx1ZSwgc3R5bGUpOwogICAgIGVsc2UgaWYgKG5hbWUgPT0gbGFuZ0F0dHIpIHsKICAgICAgICAg
Ly8geG1sOmxhbmcgaGFzIGEgaGlnaGVyIHByaW9yaXR5IHRoYW4gbGFuZy4KLSAgICAgICAgaWYg
KCFmYXN0SGFzQXR0cmlidXRlKFhNTE5hbWVzOjpsYW5nQXR0cikpCisgICAgICAgIGlmICghaGFz
QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihYTUxOYW1lczo6bGFuZ0F0dHIpKQogICAg
ICAgICAgICAgbWFwTGFuZ3VhZ2VBdHRyaWJ1dGVUb0xvY2FsZSh2YWx1ZSwgc3R5bGUpOwogICAg
IH0gZWxzZQogICAgICAgICBTdHlsZWRFbGVtZW50Ojpjb2xsZWN0U3R5bGVGb3JQcmVzZW50YXRp
b25BdHRyaWJ1dGUobmFtZSwgdmFsdWUsIHN0eWxlKTsKQEAgLTg4Myw3ICs4ODMsNyBAQCBzdGF0
aWMgaW5saW5lIGJvb2wgZWxlbWVudEFmZmVjdHNEaXJlY3RpCiAgICAgaWYgKCFpczxIVE1MRWxl
bWVudD4obm9kZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBjb25zdCBIVE1MRWxlbWVu
dCYgZWxlbWVudCA9IGRvd25jYXN0PEhUTUxFbGVtZW50Pihub2RlKTsKLSAgICByZXR1cm4gaXM8
SFRNTEJESUVsZW1lbnQ+KGVsZW1lbnQpIHx8IGVsZW1lbnQuZmFzdEhhc0F0dHJpYnV0ZShkaXJB
dHRyKTsKKyAgICByZXR1cm4gaXM8SFRNTEJESUVsZW1lbnQ+KGVsZW1lbnQpIHx8IGVsZW1lbnQu
aGFzQXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihkaXJBdHRyKTsKIH0KIAogc3RhdGlj
IHZvaWQgc2V0SGFzRGlyQXV0b0ZsYWdSZWN1cnNpdmVseShOb2RlKiBmaXJzdE5vZGUsIGJvb2wg
ZmxhZywgTm9kZSogbGFzdE5vZGUgPSBudWxscHRyKQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MRW1iZWRFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxFbWJlZEVsZW1lbnQuY3BwCShyZXZpc2lvbiAyMDMzMzYpCisrKyBTb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxFbWJlZEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODMsNyArMTgz
LDcgQEAgdm9pZCBIVE1MRW1iZWRFbGVtZW50Ojp1cGRhdGVXaWRnZXQoUGx1ZwogCiBib29sIEhU
TUxFbWJlZEVsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQoY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxl
KQogewotICAgIGlmICghZmFzdEhhc0F0dHJpYnV0ZSh0eXBlQXR0cikgJiYgIWZhc3RIYXNBdHRy
aWJ1dGUoc3JjQXR0cikpCisgICAgaWYgKCFoYXNBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0
aW9uKHR5cGVBdHRyKSAmJiAhaGFzQXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihzcmNB
dHRyKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKGlzSW1hZ2VUeXBlKCkpCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGaWVsZFNldEVsZW1lbnQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZpZWxkU2V0RWxlbWVudC5jcHAJKHJldmlz
aW9uIDIwMzMzNikKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZpZWxkU2V0RWxlbWVudC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTY1LDcgKzY1LDcgQEAgc3RhdGljIHZvaWQgdXBkYXRlRnJv
bUNvbnRyb2xFbGVtZW50c0FuYwogICAgIHdoaWxlIChjb250cm9sKSB7CiAgICAgICAgIGNvbnRy
b2wtPnNldEFuY2VzdG9yRGlzYWJsZWQoaXNEaXNhYmxlZCk7CiAgICAgICAgIC8vIERvbid0IGNh
bGwgc2V0QW5jZXN0b3JEaXNhYmxlZChmYWxzZSkgb24gZm9ybSBjb250cm9scyBpbnNpZGUgZGlz
YWJsZWQgZmllbGRzZXRzLgotICAgICAgICBpZiAoaXM8SFRNTEZpZWxkU2V0RWxlbWVudD4oKmNv
bnRyb2wpICYmIGNvbnRyb2wtPmZhc3RIYXNBdHRyaWJ1dGUoZGlzYWJsZWRBdHRyKSkKKyAgICAg
ICAgaWYgKGlzPEhUTUxGaWVsZFNldEVsZW1lbnQ+KCpjb250cm9sKSAmJiBjb250cm9sLT5oYXNB
dHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKGRpc2FibGVkQXR0cikpCiAgICAgICAgICAg
ICBjb250cm9sID0gVHJhdmVyc2FsPEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ+OjpuZXh0U2tpcHBp
bmdDaGlsZHJlbigqY29udHJvbCwgJnN0YXJ0Tm9kZSk7CiAgICAgICAgIGVsc2UKICAgICAgICAg
ICAgIGNvbnRyb2wgPSBUcmF2ZXJzYWw8SFRNTEZvcm1Db250cm9sRWxlbWVudD46Om5leHQoKmNv
bnRyb2wsICZzdGFydE5vZGUpOwpAQCAtNzQsNyArNzQsNyBAQCBzdGF0aWMgdm9pZCB1cGRhdGVG
cm9tQ29udHJvbEVsZW1lbnRzQW5jCiAKIHZvaWQgSFRNTEZpZWxkU2V0RWxlbWVudDo6ZGlzYWJs
ZWRBdHRyaWJ1dGVDaGFuZ2VkKCkKIHsKLSAgICBib29sIGhhc0Rpc2FibGVkQXR0cmlidXRlID0g
ZmFzdEhhc0F0dHJpYnV0ZShkaXNhYmxlZEF0dHIpOworICAgIGJvb2wgaGFzRGlzYWJsZWRBdHRy
aWJ1dGUgPSBoYXNBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKGRpc2FibGVkQXR0cik7
CiAgICAgaWYgKG1faGFzRGlzYWJsZWRBdHRyaWJ1dGUgIT0gaGFzRGlzYWJsZWRBdHRyaWJ1dGUp
IHsKICAgICAgICAgbV9oYXNEaXNhYmxlZEF0dHJpYnV0ZSA9IGhhc0Rpc2FibGVkQXR0cmlidXRl
OwogICAgICAgICBpZiAoaGFzRGlzYWJsZWRBdHRyaWJ1dGUpCkBAIC05NCw3ICs5NCw3IEBAIHZv
aWQgSFRNTEZpZWxkU2V0RWxlbWVudDo6ZGlzYWJsZWRTdGF0ZUMKICAgICBpZiAoZGlzYWJsZWRC
eUFuY2VzdG9yRmllbGRzZXQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYm9vbCB0aGlzRmll
bGRzZXRJc0Rpc2FibGVkID0gZmFzdEhhc0F0dHJpYnV0ZShkaXNhYmxlZEF0dHIpOworICAgIGJv
b2wgdGhpc0ZpZWxkc2V0SXNEaXNhYmxlZCA9IGhhc0F0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6
YXRpb24oZGlzYWJsZWRBdHRyKTsKICAgICBib29sIGhhc1NlZW5GaXJzdExlZ2VuZEVsZW1lbnQg
PSBmYWxzZTsKICAgICBmb3IgKEhUTUxFbGVtZW50KiBjb250cm9sID0gVHJhdmVyc2FsPEhUTUxF
bGVtZW50Pjo6Zmlyc3RDaGlsZCgqdGhpcyk7IGNvbnRyb2w7IGNvbnRyb2wgPSBUcmF2ZXJzYWw8
SFRNTEVsZW1lbnQ+OjpuZXh0U2libGluZygqY29udHJvbCkpIHsKICAgICAgICAgaWYgKCFoYXNT
ZWVuRmlyc3RMZWdlbmRFbGVtZW50ICYmIGlzPEhUTUxMZWdlbmRFbGVtZW50PigqY29udHJvbCkp
IHsKQEAgLTEwOSw3ICsxMDksNyBAQCB2b2lkIEhUTUxGaWVsZFNldEVsZW1lbnQ6OmRpc2FibGVk
U3RhdGVDCiB2b2lkIEhUTUxGaWVsZFNldEVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChjb25zdCBD
aGlsZENoYW5nZSYgY2hhbmdlKQogewogICAgIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OmNoaWxk
cmVuQ2hhbmdlZChjaGFuZ2UpOwotICAgIGlmICghZmFzdEhhc0F0dHJpYnV0ZShkaXNhYmxlZEF0
dHIpKQorICAgIGlmICghaGFzQXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihkaXNhYmxl
ZEF0dHIpKQogICAgICAgICByZXR1cm47CiAKICAgICBIVE1MTGVnZW5kRWxlbWVudCogbGVnZW5k
ID0gVHJhdmVyc2FsPEhUTUxMZWdlbmRFbGVtZW50Pjo6Zmlyc3RDaGlsZCgqdGhpcyk7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHAJKHJl
dmlzaW9uIDIwMzMzNikKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxl
bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMyw3ICsxMDMsNyBAQCB2b2lkIEhUTUxGb3Jt
Q29udHJvbEVsZW1lbnQ6OnNldEZvcm1NZXRoCiAKIGJvb2wgSFRNTEZvcm1Db250cm9sRWxlbWVu
dDo6Zm9ybU5vVmFsaWRhdGUoKSBjb25zdAogewotICAgIHJldHVybiBmYXN0SGFzQXR0cmlidXRl
KGZvcm1ub3ZhbGlkYXRlQXR0cik7CisgICAgcmV0dXJuIGhhc0F0dHJpYnV0ZVdpdGhvdXRTeW5j
aHJvbml6YXRpb24oZm9ybW5vdmFsaWRhdGVBdHRyKTsKIH0KIAogU3RyaW5nIEhUTUxGb3JtQ29u
dHJvbEVsZW1lbnQ6OmZvcm1BY3Rpb24oKSBjb25zdApAQCAtMTIzLDcgKzEyMyw3IEBAIGJvb2wg
SFRNTEZvcm1Db250cm9sRWxlbWVudDo6Y29tcHV0ZUlzRGkKIHsKICAgICBFbGVtZW50KiBwcmV2
aW91c0FuY2VzdG9yID0gbnVsbHB0cjsKICAgICBmb3IgKEVsZW1lbnQqIGFuY2VzdG9yID0gcGFy
ZW50RWxlbWVudCgpOyBhbmNlc3RvcjsgYW5jZXN0b3IgPSBhbmNlc3Rvci0+cGFyZW50RWxlbWVu
dCgpKSB7Ci0gICAgICAgIGlmIChpczxIVE1MRmllbGRTZXRFbGVtZW50PigqYW5jZXN0b3IpICYm
IGFuY2VzdG9yLT5mYXN0SGFzQXR0cmlidXRlKGRpc2FibGVkQXR0cikpIHsKKyAgICAgICAgaWYg
KGlzPEhUTUxGaWVsZFNldEVsZW1lbnQ+KCphbmNlc3RvcikgJiYgYW5jZXN0b3ItPmhhc0F0dHJp
YnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oZGlzYWJsZWRBdHRyKSkgewogICAgICAgICAgICAg
SFRNTEZpZWxkU2V0RWxlbWVudCYgZmllbGRTZXRBbmNlc3RvciA9IGRvd25jYXN0PEhUTUxGaWVs
ZFNldEVsZW1lbnQ+KCphbmNlc3Rvcik7CiAgICAgICAgICAgICBib29sIGlzSW5GaXJzdExlZ2Vu
ZCA9IGlzPEhUTUxMZWdlbmRFbGVtZW50PihwcmV2aW91c0FuY2VzdG9yKSAmJiBwcmV2aW91c0Fu
Y2VzdG9yID09IGZpZWxkU2V0QW5jZXN0b3IubGVnZW5kKCk7CiAgICAgICAgICAgICByZXR1cm4g
IWlzSW5GaXJzdExlZ2VuZDsKQEAgLTE5Niw3ICsxOTYsNyBAQCBzdGF0aWMgYm9vbCBzaG91bGRB
dXRvZm9jdXMoSFRNTEZvcm1Db250CiB7CiAgICAgaWYgKCFlbGVtZW50LT5yZW5kZXJlcigpKQog
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKCFlbGVtZW50LT5mYXN0SGFzQXR0cmlidXRl
KGF1dG9mb2N1c0F0dHIpKQorICAgIGlmICghZWxlbWVudC0+aGFzQXR0cmlidXRlV2l0aG91dFN5
bmNocm9uaXphdGlvbihhdXRvZm9jdXNBdHRyKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IGlmICghZWxlbWVudC0+aW5Eb2N1bWVudCgpIHx8ICFlbGVtZW50LT5kb2N1bWVudCgpLnJlbmRl
clZpZXcoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MRm9ybUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEZvcm1FbGVtZW50LmNwcAkocmV2aXNpb24gMjAzMzM2KQorKysgU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NTEsNyArNTUxLDcg
QEAgdW5zaWduZWQgSFRNTEZvcm1FbGVtZW50Ojpmb3JtRWxlbWVudEluZAogCiAgICAgLy8gVHJl
YXRzIHNlcGFyYXRlbHkgdGhlIGNhc2Ugd2hlcmUgdGhpcyBlbGVtZW50IGhhcyB0aGUgZm9ybSBh
dHRyaWJ1dGUKICAgICAvLyBmb3IgcGVyZm9ybWFuY2UgY29uc2lkZXJhdGlvbi4KLSAgICBpZiAo
YXNzb2NpYXRlZEhUTUxFbGVtZW50LmZhc3RIYXNBdHRyaWJ1dGUoZm9ybUF0dHIpKSB7CisgICAg
aWYgKGFzc29jaWF0ZWRIVE1MRWxlbWVudC5oYXNBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0
aW9uKGZvcm1BdHRyKSkgewogICAgICAgICB1bnNpZ25lZCBzaG9ydCBwb3NpdGlvbiA9IGNvbXBh
cmVEb2N1bWVudFBvc2l0aW9uKCZhc3NvY2lhdGVkSFRNTEVsZW1lbnQpOwogICAgICAgICBpZiAo
cG9zaXRpb24gJiBET0NVTUVOVF9QT1NJVElPTl9QUkVDRURJTkcpIHsKICAgICAgICAgICAgICsr
bV9hc3NvY2lhdGVkRWxlbWVudHNCZWZvcmVJbmRleDsKQEAgLTY3NCw3ICs2NzQsNyBAQCBTdHJp
bmcgSFRNTEZvcm1FbGVtZW50OjpuYW1lKCkgY29uc3QKIAogYm9vbCBIVE1MRm9ybUVsZW1lbnQ6
Om5vVmFsaWRhdGUoKSBjb25zdAogewotICAgIHJldHVybiBmYXN0SGFzQXR0cmlidXRlKG5vdmFs
aWRhdGVBdHRyKTsKKyAgICByZXR1cm4gaGFzQXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlv
bihub3ZhbGlkYXRlQXR0cik7CiB9CiAKIC8vIEZJWE1FOiBUaGlzIGZ1bmN0aW9uIHNob3VsZCBi
ZSByZW1vdmVkIGJlY2F1c2UgaXQgZG9lcyBub3QgZG8gdGhlIHNhbWUgdGhpbmcgYXMgdGhlCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZUVsZW1lbnQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lRWxlbWVudC5jcHAJKHJldmlzaW9uIDIw
MzMzNikKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lRWxlbWVudC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTU4LDcgKzU4LDcgQEAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IEhUTUxG
cmFtZUVsZW1lbgogCiBib29sIEhUTUxGcmFtZUVsZW1lbnQ6Om5vUmVzaXplKCkgY29uc3QKIHsK
LSAgICByZXR1cm4gZmFzdEhhc0F0dHJpYnV0ZShub3Jlc2l6ZUF0dHIpOworICAgIHJldHVybiBo
YXNBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKG5vcmVzaXplQXR0cik7CiB9CiAKIHZv
aWQgSFRNTEZyYW1lRWxlbWVudDo6ZGlkQXR0YWNoUmVuZGVyZXJzKCkKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEZyYW1lRWxlbWVudEJhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lRWxlbWVudEJhc2UuY3BwCShyZXZpc2lvbiAyMDMzMzYp
CisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZUVsZW1lbnRCYXNlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtOTQsMTIgKzk0LDEyIEBAIHZvaWQgSFRNTEZyYW1lRWxlbWVudEJhc2U6OnBh
cnNlQXR0cmlidXQKIHsKICAgICBpZiAobmFtZSA9PSBzcmNkb2NBdHRyKQogICAgICAgICBzZXRM
b2NhdGlvbigiYWJvdXQ6c3JjZG9jIik7Ci0gICAgZWxzZSBpZiAobmFtZSA9PSBzcmNBdHRyICYm
ICFmYXN0SGFzQXR0cmlidXRlKHNyY2RvY0F0dHIpKQorICAgIGVsc2UgaWYgKG5hbWUgPT0gc3Jj
QXR0ciAmJiAhaGFzQXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihzcmNkb2NBdHRyKSkK
ICAgICAgICAgc2V0TG9jYXRpb24oc3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdIVE1MU3BhY2VzKHZh
bHVlKSk7CiAgICAgZWxzZSBpZiAobmFtZSA9PSBpZEF0dHIpIHsKICAgICAgICAgSFRNTEZyYW1l
T3duZXJFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShuYW1lLCB2YWx1ZSk7CiAgICAgICAgIC8vIEZh
bGxpbmcgYmFjayB0byB1c2luZyB0aGUgJ2lkJyBhdHRyaWJ1dGUgaXMgbm90IHN0YW5kYXJkIGJ1
dCBzb21lIGNvbnRlbnQgcmVsaWVzIG9uIHRoaXMgYmVoYXZpb3IuCi0gICAgICAgIGlmICghZmFz
dEhhc0F0dHJpYnV0ZShuYW1lQXR0cikpCisgICAgICAgIGlmICghaGFzQXR0cmlidXRlV2l0aG91
dFN5bmNocm9uaXphdGlvbihuYW1lQXR0cikpCiAgICAgICAgICAgICBtX2ZyYW1lTmFtZSA9IHZh
bHVlOwogICAgIH0gZWxzZSBpZiAobmFtZSA9PSBuYW1lQXR0cikgewogICAgICAgICBtX2ZyYW1l
TmFtZSA9IHZhbHVlOwpAQCAtMTY3LDcgKzE2Nyw3IEBAIHZvaWQgSFRNTEZyYW1lRWxlbWVudEJh
c2U6OmRpZEF0dGFjaFJlbmQKIAogVVJMIEhUTUxGcmFtZUVsZW1lbnRCYXNlOjpsb2NhdGlvbigp
IGNvbnN0CiB7Ci0gICAgaWYgKGZhc3RIYXNBdHRyaWJ1dGUoc3JjZG9jQXR0cikpCisgICAgaWYg
KGhhc0F0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oc3JjZG9jQXR0cikpCiAgICAgICAg
IHJldHVybiBVUkwoUGFyc2VkVVJMU3RyaW5nLCAiYWJvdXQ6c3JjZG9jIik7CiAgICAgcmV0dXJu
IGRvY3VtZW50KCkuY29tcGxldGVVUkwoYXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihz
cmNBdHRyKSk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxIUkVsZW1lbnQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEhSRWxlbWVudC5jcHAJKHJl
dmlzaW9uIDIwMzMzNikKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEhSRWxlbWVudC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTgxLDcgKzgxLDcgQEAgdm9pZCBIVE1MSFJFbGVtZW50Ojpjb2xs
ZWN0U3R5bGVGb3JQcmVzZQogICAgICAgICBhZGRIVE1MQ29sb3JUb1N0eWxlKHN0eWxlLCBDU1NQ
cm9wZXJ0eUJvcmRlckNvbG9yLCB2YWx1ZSk7CiAgICAgICAgIGFkZEhUTUxDb2xvclRvU3R5bGUo
c3R5bGUsIENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yLCB2YWx1ZSk7CiAgICAgfSBlbHNlIGlm
IChuYW1lID09IG5vc2hhZGVBdHRyKSB7Ci0gICAgICAgIGlmICghZmFzdEhhc0F0dHJpYnV0ZShj
b2xvckF0dHIpKSB7CisgICAgICAgIGlmICghaGFzQXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXph
dGlvbihjb2xvckF0dHIpKSB7CiAgICAgICAgICAgICBhZGRQcm9wZXJ0eVRvUHJlc2VudGF0aW9u
QXR0cmlidXRlU3R5bGUoc3R5bGUsIENTU1Byb3BlcnR5Qm9yZGVyU3R5bGUsIENTU1ZhbHVlU29s
aWQpOwogCiAgICAgICAgICAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGRhcmtHcmF5VmFs
dWUgPSBDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZUNvbG9yVmFsdWUoQ29sb3I6OmRh
cmtHcmF5KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcAko
cmV2aXNpb24gMjAzMzM2KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTU5LDcgKzU1OSw3IEBAIHZvaWQgSFRNTEltYWdlRWxl
bWVudDo6ZGlkTW92ZVRvTmV3RG9jdW0KIAogYm9vbCBIVE1MSW1hZ2VFbGVtZW50Ojppc1NlcnZl
ck1hcCgpIGNvbnN0CiB7Ci0gICAgaWYgKCFmYXN0SGFzQXR0cmlidXRlKGlzbWFwQXR0cikpCisg
ICAgaWYgKCFoYXNBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKGlzbWFwQXR0cikpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGNvbnN0IEF0b21pY1N0cmluZyYgdXNlbWFwID0g
YXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbih1c2VtYXBBdHRyKTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcAkocmV2aXNpb24gMjAzMzM2KQorKysg
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNzYxLDcgKzc2MSw3IEBAIHZvaWQgSFRNTElucHV0RWxlbWVudDo6ZmluaXNoUGFyc2luZ0No
aWwKICAgICBBU1NFUlQobV9pbnB1dFR5cGUpOwogICAgIEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVt
ZW50OjpmaW5pc2hQYXJzaW5nQ2hpbGRyZW4oKTsKICAgICBpZiAoIW1fc3RhdGVSZXN0b3JlZCkg
ewotICAgICAgICBib29sIGNoZWNrZWQgPSBmYXN0SGFzQXR0cmlidXRlKGNoZWNrZWRBdHRyKTsK
KyAgICAgICAgYm9vbCBjaGVja2VkID0gaGFzQXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlv
bihjaGVja2VkQXR0cik7CiAgICAgICAgIGlmIChjaGVja2VkKQogICAgICAgICAgICAgc2V0Q2hl
Y2tlZChjaGVja2VkKTsKICAgICAgICAgbV9yZWZsZWN0c0NoZWNrZWRBdHRyaWJ1dGUgPSB0cnVl
OwpAQCAtODI4LDcgKzgyOCw3IEBAIGJvb2wgSFRNTElucHV0RWxlbWVudDo6bWF0Y2hlc0RlZmF1
bHRQc2UKICAgICBBU1NFUlQobV9pbnB1dFR5cGUpOwogICAgIGlmIChtX2lucHV0VHlwZS0+Y2Fu
QmVTdWNjZXNzZnVsU3VibWl0QnV0dG9uKCkpCiAgICAgICAgIHJldHVybiAhaXNEaXNhYmxlZEZv
cm1Db250cm9sKCkgJiYgZm9ybSgpICYmIGZvcm0oKS0+ZGVmYXVsdEJ1dHRvbigpID09IHRoaXM7
Ci0gICAgcmV0dXJuIG1faW5wdXRUeXBlLT5pc0NoZWNrYWJsZSgpICYmIGZhc3RIYXNBdHRyaWJ1
dGUoY2hlY2tlZEF0dHIpOworICAgIHJldHVybiBtX2lucHV0VHlwZS0+aXNDaGVja2FibGUoKSAm
JiBoYXNBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKGNoZWNrZWRBdHRyKTsKIH0KIAog
Ym9vbCBIVE1MSW5wdXRFbGVtZW50Ojppc0FjdGl2YXRlZFN1Ym1pdCgpIGNvbnN0CkBAIC04NTIs
NyArODUyLDcgQEAgdm9pZCBIVE1MSW5wdXRFbGVtZW50OjpyZXNldCgpCiAgICAgICAgIHNldFZh
bHVlKFN0cmluZygpKTsKIAogICAgIHNldEF1dG9GaWxsZWQoZmFsc2UpOwotICAgIHNldENoZWNr
ZWQoZmFzdEhhc0F0dHJpYnV0ZShjaGVja2VkQXR0cikpOworICAgIHNldENoZWNrZWQoaGFzQXR0
cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihjaGVja2VkQXR0cikpOwogICAgIG1fcmVmbGVj
dHNDaGVja2VkQXR0cmlidXRlID0gdHJ1ZTsKIH0KIApAQCAtMTI4Miw3ICsxMjgyLDcgQEAgdW5z
aWduZWQgSFRNTElucHV0RWxlbWVudDo6ZWZmZWN0aXZlTWF4TAogCiBib29sIEhUTUxJbnB1dEVs
ZW1lbnQ6Om11bHRpcGxlKCkgY29uc3QKIHsKLSAgICByZXR1cm4gZmFzdEhhc0F0dHJpYnV0ZSht
dWx0aXBsZUF0dHIpOworICAgIHJldHVybiBoYXNBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0
aW9uKG11bHRpcGxlQXR0cik7CiB9CiAKIHZvaWQgSFRNTElucHV0RWxlbWVudDo6c2V0U2l6ZSh1
bnNpZ25lZCBzaXplKQpAQCAtMTc5OCw3ICsxNzk4LDcgQEAgYm9vbCBIVE1MSW5wdXRFbGVtZW50
OjpzaG91bGRBcHBlYXJJbmRldAogI2lmIEVOQUJMRShNRURJQV9DQVBUVVJFKQogYm9vbCBIVE1M
SW5wdXRFbGVtZW50OjpzaG91bGRVc2VNZWRpYUNhcHR1cmUoKSBjb25zdAogewotICAgIHJldHVy
biBpc0ZpbGVVcGxvYWQoKSAmJiBmYXN0SGFzQXR0cmlidXRlKGNhcHR1cmVBdHRyKTsKKyAgICBy
ZXR1cm4gaXNGaWxlVXBsb2FkKCkgJiYgaGFzQXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlv
bihjYXB0dXJlQXR0cik7CiB9CiAjZW5kaWYKIApJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MTWFycXVlZUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTE1hcnF1ZWVFbGVtZW50LmNwcAkocmV2aXNpb24gMjAzMzM2KQorKysgU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MTWFycXVlZUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Miw3ICs1
Miw3IEBAIFJlZjxIVE1MTWFycXVlZUVsZW1lbnQ+IEhUTUxNYXJxdWVlRWxlbWUKIAogaW50IEhU
TUxNYXJxdWVlRWxlbWVudDo6bWluaW11bURlbGF5KCkgY29uc3QKIHsKLSAgICBpZiAoIWZhc3RI
YXNBdHRyaWJ1dGUodHJ1ZXNwZWVkQXR0cikpIHsKKyAgICBpZiAoIWhhc0F0dHJpYnV0ZVdpdGhv
dXRTeW5jaHJvbml6YXRpb24odHJ1ZXNwZWVkQXR0cikpIHsKICAgICAgICAgLy8gV2luSUUgdXNl
cyA2MG1zIGFzIHRoZSBtaW5pbXVtIGRlbGF5IGJ5IGRlZmF1bHQuCiAgICAgICAgIHJldHVybiA2
MDsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAJ
KHJldmlzaW9uIDIwMzMzNikKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVu
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc4Miw3ICs3ODIsNyBAQCBOb2RlOjpJbnNlcnRpb25O
b3RpZmljYXRpb25SZXF1ZXN0IEhUTUxNCiAKICAgICBpZiAoIW1fZXhwbGljaXRseU11dGVkKSB7
CiAgICAgICAgIG1fZXhwbGljaXRseU11dGVkID0gdHJ1ZTsKLSAgICAgICAgbV9tdXRlZCA9IGZh
c3RIYXNBdHRyaWJ1dGUobXV0ZWRBdHRyKTsKKyAgICAgICAgbV9tdXRlZCA9IGhhc0F0dHJpYnV0
ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24obXV0ZWRBdHRyKTsKICAgICB9CiAKICAgICBjb25maWd1
cmVNZWRpYUNvbnRyb2xzKCk7CkBAIC0xMjYzLDcgKzEyNjMsNyBAQCB2b2lkIEhUTUxNZWRpYUVs
ZW1lbnQ6OnNlbGVjdE1lZGlhUmVzb3VyCiAKICAgICAvLyAzIC0gSWYgdGhlIG1lZGlhIGVsZW1l
bnQgaGFzIGEgc3JjIGF0dHJpYnV0ZSwgdGhlbiBsZXQgbW9kZSBiZSBhdHRyaWJ1dGUuCiAgICAg
TW9kZSBtb2RlID0gYXR0cmlidXRlOwotICAgIGlmICghZmFzdEhhc0F0dHJpYnV0ZShzcmNBdHRy
KSkgeworICAgIGlmICghaGFzQXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihzcmNBdHRy
KSkgewogICAgICAgICAvLyBPdGhlcndpc2UsIGlmIHRoZSBtZWRpYSBlbGVtZW50IGRvZXMgbm90
IGhhdmUgYSBzcmMgYXR0cmlidXRlIGJ1dCBoYXMgYSBzb3VyY2UgCiAgICAgICAgIC8vIGVsZW1l
bnQgY2hpbGQsIHRoZW4gbGV0IG1vZGUgYmUgY2hpbGRyZW4gYW5kIGxldCBjYW5kaWRhdGUgYmUg
dGhlIGZpcnN0IHN1Y2ggCiAgICAgICAgIC8vIHNvdXJjZSBlbGVtZW50IGNoaWxkIGluIHRyZWUg
b3JkZXIuCkBAIC0xNDIxLDcgKzE0MjEsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmxvYWRS
ZXNvdXJjZShjb25zCiAKICAgICBpZiAoIW1fZXhwbGljaXRseU11dGVkKSB7CiAgICAgICAgIG1f
ZXhwbGljaXRseU11dGVkID0gdHJ1ZTsKLSAgICAgICAgbV9tdXRlZCA9IGZhc3RIYXNBdHRyaWJ1
dGUobXV0ZWRBdHRyKTsKKyAgICAgICAgbV9tdXRlZCA9IGhhc0F0dHJpYnV0ZVdpdGhvdXRTeW5j
aHJvbml6YXRpb24obXV0ZWRBdHRyKTsKICAgICB9CiAKICAgICB1cGRhdGVWb2x1bWUoKTsKQEAg
LTMwMTIsNyArMzAxMiw3IEBAIGJvb2wgSFRNTE1lZGlhRWxlbWVudDo6ZW5kZWQoKSBjb25zdAog
CiBib29sIEhUTUxNZWRpYUVsZW1lbnQ6OmF1dG9wbGF5KCkgY29uc3QKIHsKLSAgICByZXR1cm4g
ZmFzdEhhc0F0dHJpYnV0ZShhdXRvcGxheUF0dHIpOworICAgIHJldHVybiBoYXNBdHRyaWJ1dGVX
aXRob3V0U3luY2hyb25pemF0aW9uKGF1dG9wbGF5QXR0cik7CiB9CiAKIFN0cmluZyBIVE1MTWVk
aWFFbGVtZW50OjpwcmVsb2FkKCkgY29uc3QKQEAgLTMyOTEsNyArMzI5MSw3IEBAIHZvaWQgSFRN
TE1lZGlhRWxlbWVudDo6d2Via2l0Q2FuY2VsS2V5UmUKIAogYm9vbCBIVE1MTWVkaWFFbGVtZW50
Ojpsb29wKCkgY29uc3QKIHsKLSAgICByZXR1cm4gZmFzdEhhc0F0dHJpYnV0ZShsb29wQXR0cik7
CisgICAgcmV0dXJuIGhhc0F0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24obG9vcEF0dHIp
OwogfQogCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNldExvb3AoYm9vbCBiKQpAQCAtMzMwOCw3
ICszMzA4LDcgQEAgYm9vbCBIVE1MTWVkaWFFbGVtZW50Ojpjb250cm9scygpIGNvbnN0CiAgICAg
aWYgKGZyYW1lICYmICFmcmFtZS0+c2NyaXB0KCkuY2FuRXhlY3V0ZVNjcmlwdHMoTm90QWJvdXRU
b0V4ZWN1dGVTY3JpcHQpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIHJldHVybiBmYXN0
SGFzQXR0cmlidXRlKGNvbnRyb2xzQXR0cik7CisgICAgcmV0dXJuIGhhc0F0dHJpYnV0ZVdpdGhv
dXRTeW5jaHJvbml6YXRpb24oY29udHJvbHNBdHRyKTsKIH0KIAogdm9pZCBIVE1MTWVkaWFFbGVt
ZW50OjpzZXRDb250cm9scyhib29sIGIpCkBAIC0zMzQzLDcgKzMzNDMsNyBAQCB2b2lkIEhUTUxN
ZWRpYUVsZW1lbnQ6OnNldFZvbHVtZShkb3VibGUgCiAKIGJvb2wgSFRNTE1lZGlhRWxlbWVudDo6
bXV0ZWQoKSBjb25zdAogewotICAgIHJldHVybiBtX2V4cGxpY2l0bHlNdXRlZCA/IG1fbXV0ZWQg
OiBmYXN0SGFzQXR0cmlidXRlKG11dGVkQXR0cik7CisgICAgcmV0dXJuIG1fZXhwbGljaXRseU11
dGVkID8gbV9tdXRlZCA6IGhhc0F0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24obXV0ZWRB
dHRyKTsKIH0KIAogdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzZXRNdXRlZChib29sIG11dGVkKQpA
QCAtNDIwNSw3ICs0MjA1LDcgQEAgVVJMIEhUTUxNZWRpYUVsZW1lbnQ6OnNlbGVjdE5leHRTb3Vy
Y2VDaAogICAgICAgICBpZiAobWVkaWFVUkwuaXNFbXB0eSgpKQogICAgICAgICAgICAgZ290byBD
aGVja0FnYWluOwogICAgICAgICAKLSAgICAgICAgaWYgKHNvdXJjZS0+ZmFzdEhhc0F0dHJpYnV0
ZShtZWRpYUF0dHIpKSB7CisgICAgICAgIGlmIChzb3VyY2UtPmhhc0F0dHJpYnV0ZVdpdGhvdXRT
eW5jaHJvbml6YXRpb24obWVkaWFBdHRyKSkgewogICAgICAgICAgICAgYXV0byBtZWRpYSA9IHNv
dXJjZS0+bWVkaWFRdWVyeVNldCgpOwogI2lmICFMT0dfRElTQUJMRUQKICAgICAgICAgICAgIGlm
IChzaG91bGRMb2cpCkBAIC00Mjk3LDcgKzQyOTcsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6
OnNvdXJjZVdhc0FkZGVkKEhUCiAjZW5kaWYKICAgICAKICAgICAvLyBXZSBzaG91bGQgb25seSBj
b25zaWRlciBhIDxzb3VyY2U+IGVsZW1lbnQgd2hlbiB0aGVyZSBpcyBub3Qgc3JjIGF0dHJpYnV0
ZSBhdCBhbGwuCi0gICAgaWYgKGZhc3RIYXNBdHRyaWJ1dGUoc3JjQXR0cikpCisgICAgaWYgKGhh
c0F0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oc3JjQXR0cikpCiAgICAgICAgIHJldHVy
bjsKIAogICAgIC8vIDQuOC44IC0gSWYgYSBzb3VyY2UgZWxlbWVudCBpcyBpbnNlcnRlZCBhcyBh
IGNoaWxkIG9mIGEgbWVkaWEgZWxlbWVudCB0aGF0IGhhcyBubyBzcmMgCkBAIC02ODIxLDcgKzY4
MjEsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1heVJlc3VtZVBsYXliYWNrCiAgICAgCiBT
dHJpbmcgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFTZXNzaW9uVGl0bGUoKSBjb25zdAogewotICAg
IGlmIChmYXN0SGFzQXR0cmlidXRlKHRpdGxlQXR0cikpCisgICAgaWYgKGhhc0F0dHJpYnV0ZVdp
dGhvdXRTeW5jaHJvbml6YXRpb24odGl0bGVBdHRyKSkKICAgICAgICAgcmV0dXJuIGF0dHJpYnV0
ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24odGl0bGVBdHRyKTsKICAgICAKICAgICByZXR1cm4gbV9j
dXJyZW50U3JjOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5j
cHAJKHJldmlzaW9uIDIwMzMzNikKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVs
ZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTMsNyArMTEzLDcgQEAgdm9pZCBIVE1MT2Jq
ZWN0RWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoYwogICAgICAgICBmb3JtQXR0cmlidXRlQ2hhbmdl
ZCgpOwogICAgIGVsc2UgaWYgKG5hbWUgPT0gdHlwZUF0dHIpIHsKICAgICAgICAgbV9zZXJ2aWNl
VHlwZSA9IHZhbHVlLnN0cmluZygpLmxlZnQodmFsdWUuZmluZCgnOycpKS5jb252ZXJ0VG9BU0NJ
SUxvd2VyY2FzZSgpOwotICAgICAgICBpbnZhbGlkYXRlUmVuZGVyZXIgPSAhZmFzdEhhc0F0dHJp
YnV0ZShjbGFzc2lkQXR0cik7CisgICAgICAgIGludmFsaWRhdGVSZW5kZXJlciA9ICFoYXNBdHRy
aWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKGNsYXNzaWRBdHRyKTsKICAgICAgICAgc2V0TmVl
ZHNXaWRnZXRVcGRhdGUodHJ1ZSk7CiAgICAgfSBlbHNlIGlmIChuYW1lID09IGRhdGFBdHRyKSB7
CiAgICAgICAgIG1fdXJsID0gc3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdIVE1MU3BhY2VzKHZhbHVl
KTsKQEAgLTEyMyw3ICsxMjMsNyBAQCB2b2lkIEhUTUxPYmplY3RFbGVtZW50OjpwYXJzZUF0dHJp
YnV0ZShjCiAgICAgICAgICAgICAgICAgbV9pbWFnZUxvYWRlciA9IHN0ZDo6bWFrZV91bmlxdWU8
SFRNTEltYWdlTG9hZGVyPigqdGhpcyk7CiAgICAgICAgICAgICBtX2ltYWdlTG9hZGVyLT51cGRh
dGVGcm9tRWxlbWVudElnbm9yaW5nUHJldmlvdXNFcnJvcigpOwogICAgICAgICB9Ci0gICAgICAg
IGludmFsaWRhdGVSZW5kZXJlciA9ICFmYXN0SGFzQXR0cmlidXRlKGNsYXNzaWRBdHRyKTsKKyAg
ICAgICAgaW52YWxpZGF0ZVJlbmRlcmVyID0gIWhhc0F0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6
YXRpb24oY2xhc3NpZEF0dHIpOwogICAgICAgICBzZXROZWVkc1dpZGdldFVwZGF0ZSh0cnVlKTsK
ICAgICB9IGVsc2UgaWYgKG5hbWUgPT0gY2xhc3NpZEF0dHIpIHsKICAgICAgICAgaW52YWxpZGF0
ZVJlbmRlcmVyID0gdHJ1ZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdEdyb3Vw
RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0R3Jv
dXBFbGVtZW50LmNwcAkocmV2aXNpb24gMjAzMzM2KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MT3B0R3JvdXBFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTAsNyArNTAsNyBAQCBS
ZWY8SFRNTE9wdEdyb3VwRWxlbWVudD4gSFRNTE9wdEdyb3VwRWxlCiAKIGJvb2wgSFRNTE9wdEdy
b3VwRWxlbWVudDo6aXNEaXNhYmxlZEZvcm1Db250cm9sKCkgY29uc3QKIHsKLSAgICByZXR1cm4g
ZmFzdEhhc0F0dHJpYnV0ZShkaXNhYmxlZEF0dHIpOworICAgIHJldHVybiBoYXNBdHRyaWJ1dGVX
aXRob3V0U3luY2hyb25pemF0aW9uKGRpc2FibGVkQXR0cik7CiB9CiAKIGJvb2wgSFRNTE9wdEdy
b3VwRWxlbWVudDo6aXNGb2N1c2FibGUoKSBjb25zdApJbmRleDogU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MT3B0aW9uRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MT3B0aW9uRWxlbWVudC5jcHAJKHJldmlzaW9uIDIwMzMzNikKKysrIFNvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTE9wdGlvbkVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05OCw3ICs5
OCw3IEBAIGJvb2wgSFRNTE9wdGlvbkVsZW1lbnQ6OmlzRm9jdXNhYmxlKCkgY28KIAogYm9vbCBI
VE1MT3B0aW9uRWxlbWVudDo6bWF0Y2hlc0RlZmF1bHRQc2V1ZG9DbGFzcygpIGNvbnN0CiB7Ci0g
ICAgcmV0dXJuIGZhc3RIYXNBdHRyaWJ1dGUoc2VsZWN0ZWRBdHRyKTsKKyAgICByZXR1cm4gaGFz
QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihzZWxlY3RlZEF0dHIpOwogfQogCiBTdHJp
bmcgSFRNTE9wdGlvbkVsZW1lbnQ6OnRleHQoKSBjb25zdApJbmRleDogU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MUHJvZ3Jlc3NFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxQcm9ncmVzc0VsZW1lbnQuY3BwCShyZXZpc2lvbiAyMDMzMzYpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxQcm9ncmVzc0VsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xMzEsNyArMTMxLDcgQEAgZG91YmxlIEhUTUxQcm9ncmVzc0VsZW1lbnQ6OnBvc2l0aW9uKCkg
YwogCiBib29sIEhUTUxQcm9ncmVzc0VsZW1lbnQ6OmlzRGV0ZXJtaW5hdGUoKSBjb25zdAogewot
ICAgIHJldHVybiBmYXN0SGFzQXR0cmlidXRlKHZhbHVlQXR0cik7CisgICAgcmV0dXJuIGhhc0F0
dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24odmFsdWVBdHRyKTsKIH0KICAgICAKIHZvaWQg
SFRNTFByb2dyZXNzRWxlbWVudDo6ZGlkRWxlbWVudFN0YXRlQ2hhbmdlKCkKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTFNjcmlwdEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTFNjcmlwdEVsZW1lbnQuY3BwCShyZXZpc2lvbiAyMDMzMzYpCisr
KyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTY3JpcHRFbGVtZW50LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTAyLDcgKzEwMiw3IEBAIHZvaWQgSFRNTFNjcmlwdEVsZW1lbnQ6OnNldEFzeW5jKGJv
b2wgYXMKIAogYm9vbCBIVE1MU2NyaXB0RWxlbWVudDo6YXN5bmMoKSBjb25zdAogewotICAgIHJl
dHVybiBmYXN0SGFzQXR0cmlidXRlKGFzeW5jQXR0cikgfHwgZm9yY2VBc3luYygpOworICAgIHJl
dHVybiBoYXNBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKGFzeW5jQXR0cikgfHwgZm9y
Y2VBc3luYygpOwogfQogCiB2b2lkIEhUTUxTY3JpcHRFbGVtZW50OjpzZXRDcm9zc09yaWdpbihj
b25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKQpAQCAtMTU5LDE3ICsxNTksMTcgQEAgU3RyaW5nIEhU
TUxTY3JpcHRFbGVtZW50OjpldmVudEF0dHJpYnV0ZQogCiBib29sIEhUTUxTY3JpcHRFbGVtZW50
Ojphc3luY0F0dHJpYnV0ZVZhbHVlKCkgY29uc3QKIHsKLSAgICByZXR1cm4gZmFzdEhhc0F0dHJp
YnV0ZShhc3luY0F0dHIpOworICAgIHJldHVybiBoYXNBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25p
emF0aW9uKGFzeW5jQXR0cik7CiB9CiAKIGJvb2wgSFRNTFNjcmlwdEVsZW1lbnQ6OmRlZmVyQXR0
cmlidXRlVmFsdWUoKSBjb25zdAogewotICAgIHJldHVybiBmYXN0SGFzQXR0cmlidXRlKGRlZmVy
QXR0cik7CisgICAgcmV0dXJuIGhhc0F0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oZGVm
ZXJBdHRyKTsKIH0KIAogYm9vbCBIVE1MU2NyaXB0RWxlbWVudDo6aGFzU291cmNlQXR0cmlidXRl
KCkgY29uc3QKIHsKLSAgICByZXR1cm4gZmFzdEhhc0F0dHJpYnV0ZShzcmNBdHRyKTsKKyAgICBy
ZXR1cm4gaGFzQXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihzcmNBdHRyKTsKIH0KIAog
dm9pZCBIVE1MU2NyaXB0RWxlbWVudDo6ZGlzcGF0Y2hMb2FkRXZlbnQoKQpJbmRleDogU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5jcHAJKHJldmlzaW9uIDIwMzMzNikKKysr
IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xMDYyLDcgKzEwNjIsNyBAQCB2b2lkIEhUTUxTZWxlY3RFbGVtZW50OjpyZXNldCgpCiAg
ICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICBIVE1MT3B0aW9uRWxlbWVudCYgb3B0aW9u
ID0gZG93bmNhc3Q8SFRNTE9wdGlvbkVsZW1lbnQ+KCplbGVtZW50KTsKLSAgICAgICAgaWYgKG9w
dGlvbi5mYXN0SGFzQXR0cmlidXRlKHNlbGVjdGVkQXR0cikpIHsKKyAgICAgICAgaWYgKG9wdGlv
bi5oYXNBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKHNlbGVjdGVkQXR0cikpIHsKICAg
ICAgICAgICAgIGlmIChzZWxlY3RlZE9wdGlvbiAmJiAhbV9tdWx0aXBsZSkKICAgICAgICAgICAg
ICAgICBzZWxlY3RlZE9wdGlvbi0+c2V0U2VsZWN0ZWRTdGF0ZShmYWxzZSk7CiAgICAgICAgICAg
ICBvcHRpb24uc2V0U2VsZWN0ZWRTdGF0ZSh0cnVlKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTFRyYWNrRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MVHJhY2tFbGVtZW50LmNwcAkocmV2aXNpb24gMjAzMzM2KQorKysgU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MVHJhY2tFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTM1LDcgKzEz
NSw3IEBAIGNvbnN0IEF0b21pY1N0cmluZyYgSFRNTFRyYWNrRWxlbWVudDo6bGEKIAogYm9vbCBI
VE1MVHJhY2tFbGVtZW50Ojppc0RlZmF1bHQoKSBjb25zdAogewotICAgIHJldHVybiBmYXN0SGFz
QXR0cmlidXRlKGRlZmF1bHRBdHRyKTsKKyAgICByZXR1cm4gaGFzQXR0cmlidXRlV2l0aG91dFN5
bmNocm9uaXphdGlvbihkZWZhdWx0QXR0cik7CiB9CiAKIExvYWRhYmxlVGV4dFRyYWNrJiBIVE1M
VHJhY2tFbGVtZW50OjplbnN1cmVUcmFjaygpCkBAIC0xODMsNyArMTgzLDcgQEAgdm9pZCBIVE1M
VHJhY2tFbGVtZW50OjpzY2hlZHVsZUxvYWQoKQogCiB2b2lkIEhUTUxUcmFja0VsZW1lbnQ6Omxv
YWRUaW1lckZpcmVkKCkKIHsKLSAgICBpZiAoIWZhc3RIYXNBdHRyaWJ1dGUoc3JjQXR0cikpCisg
ICAgaWYgKCFoYXNBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKHNyY0F0dHIpKQogICAg
ICAgICByZXR1cm47CiAKICAgICAvLyA2LiBTZXQgdGhlIHRleHQgdHJhY2sgcmVhZGluZXNzIHN0
YXRlIHRvIGxvYWRpbmcuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRWxlbWVudFNl
c3Npb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFFbGVtZW50
U2Vzc2lvbi5jcHAJKHJldmlzaW9uIDIwMzMzNikKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvTWVk
aWFFbGVtZW50U2Vzc2lvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxNCw3ICszMTQsNyBAQCBi
b29sIE1lZGlhRWxlbWVudFNlc3Npb246OndpcmVsZXNzVmlkZW9QCiAgICAgICAgIHJldHVybiB0
cnVlOwogICAgIH0KIAotICAgIGlmIChlbGVtZW50LmZhc3RIYXNBdHRyaWJ1dGUoSFRNTE5hbWVz
Ojp3ZWJraXR3aXJlbGVzc3ZpZGVvcGxheWJhY2tkaXNhYmxlZEF0dHIpKSB7CisgICAgaWYgKGVs
ZW1lbnQuaGFzQXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihIVE1MTmFtZXM6OndlYmtp
dHdpcmVsZXNzdmlkZW9wbGF5YmFja2Rpc2FibGVkQXR0cikpIHsKICAgICAgICAgTE9HKE1lZGlh
LCAiTWVkaWFFbGVtZW50U2Vzc2lvbjo6d2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQgLSBy
ZXR1cm5pbmcgVFJVRSBiZWNhdXNlIG9mIGF0dHJpYnV0ZSIpOwogICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICB9CkBAIC00NTUsNyArNDU1LDcgQEAgYm9vbCBNZWRpYUVsZW1lbnRTZXNzaW9uOjpy
ZXF1aXJlc0Z1bGxzYwogICAgIGlmICghc2V0dGluZ3MgfHwgIXNldHRpbmdzLT5hbGxvd3NJbmxp
bmVNZWRpYVBsYXliYWNrKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgcmV0dXJuIHNl
dHRpbmdzLT5pbmxpbmVNZWRpYVBsYXliYWNrUmVxdWlyZXNQbGF5c0lubGluZUF0dHJpYnV0ZSgp
ICYmICEoZWxlbWVudC5mYXN0SGFzQXR0cmlidXRlKEhUTUxOYW1lczo6d2Via2l0X3BsYXlzaW5s
aW5lQXR0cikgfHwgZWxlbWVudC5mYXN0SGFzQXR0cmlidXRlKEhUTUxOYW1lczo6cGxheXNpbmxp
bmVBdHRyKSk7CisgICAgcmV0dXJuIHNldHRpbmdzLT5pbmxpbmVNZWRpYVBsYXliYWNrUmVxdWly
ZXNQbGF5c0lubGluZUF0dHJpYnV0ZSgpICYmICEoZWxlbWVudC5oYXNBdHRyaWJ1dGVXaXRob3V0
U3luY2hyb25pemF0aW9uKEhUTUxOYW1lczo6d2Via2l0X3BsYXlzaW5saW5lQXR0cikgfHwgZWxl
bWVudC5oYXNBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKEhUTUxOYW1lczo6cGxheXNp
bmxpbmVBdHRyKSk7CiB9CiAKIGJvb2wgTWVkaWFFbGVtZW50U2Vzc2lvbjo6YWxsb3dzQXV0b21h
dGljTWVkaWFEYXRhTG9hZGluZyhjb25zdCBIVE1MTWVkaWFFbGVtZW50JiBlbGVtZW50KSBjb25z
dApJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9TZWFyY2hJbnB1dFR5cGUuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvU2VhcmNoSW5wdXRUeXBlLmNwcAkocmV2aXNpb24g
MjAzMzM2KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9TZWFyY2hJbnB1dFR5cGUuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xODAsNyArMTgwLDcgQEAgdm9pZCBTZWFyY2hJbnB1dFR5cGU6OnNlYXJj
aEV2ZW50VGltZXJGaQogCiBib29sIFNlYXJjaElucHV0VHlwZTo6c2VhcmNoRXZlbnRzU2hvdWxk
QmVEaXNwYXRjaGVkKCkgY29uc3QKIHsKLSAgICByZXR1cm4gZWxlbWVudCgpLmZhc3RIYXNBdHRy
aWJ1dGUoaW5jcmVtZW50YWxBdHRyKTsKKyAgICByZXR1cm4gZWxlbWVudCgpLmhhc0F0dHJpYnV0
ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oaW5jcmVtZW50YWxBdHRyKTsKIH0KIAogdm9pZCBTZWFy
Y2hJbnB1dFR5cGU6OmRpZFNldFZhbHVlQnlVc2VyRWRpdCgpCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHAJKHJldmlzaW9uIDIwMzMzNikK
KysrIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTEzNzksNyArMTM3OSw3IEBAIFJlZjxJbnNwZWN0b3I6OlByb3RvY29sOjpE
T006Ok5vZGU+IEluc3AKICAgICAgICAgaWYgKGlzPEhUTUxUZW1wbGF0ZUVsZW1lbnQ+KGVsZW1l
bnQpKQogICAgICAgICAgICAgdmFsdWUtPnNldFRlbXBsYXRlQ29udGVudChidWlsZE9iamVjdEZv
ck5vZGUoJmRvd25jYXN0PEhUTUxUZW1wbGF0ZUVsZW1lbnQ+KGVsZW1lbnQpLmNvbnRlbnQoKSwg
MCwgbm9kZXNNYXApKTsKIAotICAgICAgICBpZiAoaXM8SFRNTFN0eWxlRWxlbWVudD4oZWxlbWVu
dCkgfHwgKGlzPEhUTUxTY3JpcHRFbGVtZW50PihlbGVtZW50KSAmJiAhZWxlbWVudC5mYXN0SGFz
QXR0cmlidXRlKEhUTUxOYW1lczo6c3JjQXR0cikpKQorICAgICAgICBpZiAoaXM8SFRNTFN0eWxl
RWxlbWVudD4oZWxlbWVudCkgfHwgKGlzPEhUTUxTY3JpcHRFbGVtZW50PihlbGVtZW50KSAmJiAh
ZWxlbWVudC5oYXNBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKEhUTUxOYW1lczo6c3Jj
QXR0cikpKQogICAgICAgICAgICAgdmFsdWUtPnNldENvbnRlbnRTZWN1cml0eVBvbGljeUhhc2go
Y29tcHV0ZUNvbnRlbnRTZWN1cml0eVBvbGljeVNIQTI1Nkhhc2goZWxlbWVudCkpOwogCiAgICAg
ICAgIGlmIChlbGVtZW50LnBzZXVkb0lkKCkpIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRl
ci9GcmFtZUxvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zy
YW1lTG9hZGVyLmNwcAkocmV2aXNpb24gMjAzMzM2KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVy
L0ZyYW1lTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzI2Miw3ICszMjYyLDcgQEAgYm9v
bCBGcmFtZUxvYWRlcjo6c2hvdWxkVHJlYXRVUkxBc1NyY2RvYwogICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgaWYgKCFvd25lckVsZW1lbnQtPmhhc1RhZ05hbWUoaWZyYW1lVGFnKSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiBvd25lckVsZW1lbnQtPmZhc3RIYXNBdHRyaWJ1
dGUoc3JjZG9jQXR0cik7CisgICAgcmV0dXJuIG93bmVyRWxlbWVudC0+aGFzQXR0cmlidXRlV2l0
aG91dFN5bmNocm9uaXphdGlvbihzcmNkb2NBdHRyKTsKIH0KIAogRnJhbWUqIEZyYW1lTG9hZGVy
OjpmaW5kRnJhbWVGb3JOYXZpZ2F0aW9uKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgRG9jdW1l
bnQqIGFjdGl2ZURvY3VtZW50KQpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0ltYWdlTG9h
ZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvSW1hZ2VMb2FkZXIu
Y3BwCShyZXZpc2lvbiAyMDMzMzYpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvSW1hZ2VMb2Fk
ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yODYsNyArMjg2LDcgQEAgdm9pZCBJbWFnZUxvYWRl
cjo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUgogICAgIGlmICghbV9oYXNQZW5kaW5nTG9hZEV2ZW50
KQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoZWxlbWVudCgpLmZhc3RIYXNBdHRyaWJ1dGUo
SFRNTE5hbWVzOjpjcm9zc29yaWdpbkF0dHIpICYmICFyZXNvdXJjZS0+cGFzc2VzU2FtZU9yaWdp
blBvbGljeUNoZWNrKCplbGVtZW50KCkuZG9jdW1lbnQoKS5zZWN1cml0eU9yaWdpbigpKSkgewor
ICAgIGlmIChlbGVtZW50KCkuaGFzQXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihIVE1M
TmFtZXM6OmNyb3Nzb3JpZ2luQXR0cikgJiYgIXJlc291cmNlLT5wYXNzZXNTYW1lT3JpZ2luUG9s
aWN5Q2hlY2soKmVsZW1lbnQoKS5kb2N1bWVudCgpLnNlY3VyaXR5T3JpZ2luKCkpKSB7CiAgICAg
ICAgIGNsZWFySW1hZ2VXaXRob3V0Q29uc2lkZXJpbmdQZW5kaW5nTG9hZEV2ZW50KCk7CiAKICAg
ICAgICAgbV9oYXNQZW5kaW5nRXJyb3JFdmVudCA9IHRydWU7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9tYXRobWwvTWF0aE1MU2VsZWN0RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvbWF0aG1sL01hdGhNTFNlbGVjdEVsZW1lbnQuY3BwCShyZXZpc2lvbiAyMDMzMzYpCisr
KyBTb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MU2VsZWN0RWxlbWVudC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTE3NCw3ICsxNzQsNyBAQCBFbGVtZW50KiBNYXRoTUxTZWxlY3RFbGVtZW50Ojpn
ZXRTZWxlY3RlCiAKICAgICAgICAgaWYgKGNoaWxkLT5oYXNUYWdOYW1lKE1hdGhNTE5hbWVzOjph
bm5vdGF0aW9uVGFnKSkgewogICAgICAgICAgICAgLy8gSWYgdGhlIDxhbm5vdGF0aW9uPiBlbGVt
ZW50IGhhcyBhbiBzcmMgYXR0cmlidXRlIHRoZW4gaXQgaXMgYSByZWZlcmVuY2UgdG8gYXJiaXRy
YXJ5IGJpbmFyeSBkYXRhIGFuZCBpdCBpcyBub3QgY2xlYXIgd2hldGhlciB3ZSBjYW4gZGlzcGxh
eSBpdC4gSGVuY2Ugd2UganVzdCBpZ25vcmUgdGhlIGFubm90YXRpb24uCi0gICAgICAgICAgICBp
ZiAoY2hpbGQtPmZhc3RIYXNBdHRyaWJ1dGUoTWF0aE1MTmFtZXM6OnNyY0F0dHIpKQorICAgICAg
ICAgICAgaWYgKGNoaWxkLT5oYXNBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKE1hdGhN
TE5hbWVzOjpzcmNBdHRyKSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAg
IC8vIE90aGVyd2lzZSwgd2UgYXNzdW1lIGl0IGlzIGEgdGV4dCBhbm5vdGF0aW9uIHRoYXQgY2Fu
IGFsd2F5cyBiZSBkaXNwbGF5ZWQgYW5kIHdlIHN0b3AgaGVyZS4KICAgICAgICAgICAgIHJldHVy
biBjaGlsZDsKQEAgLTE4Miw3ICsxODIsNyBAQCBFbGVtZW50KiBNYXRoTUxTZWxlY3RFbGVtZW50
OjpnZXRTZWxlY3RlCiAKICAgICAgICAgaWYgKGNoaWxkLT5oYXNUYWdOYW1lKE1hdGhNTE5hbWVz
Ojphbm5vdGF0aW9uX3htbFRhZykpIHsKICAgICAgICAgICAgIC8vIElmIHRoZSA8YW5ub3RhdGlv
bi14bWw+IGVsZW1lbnQgaGFzIGFuIHNyYyBhdHRyaWJ1dGUgdGhlbiBpdCBpcyBhIHJlZmVyZW5j
ZSB0byBhcmJpdHJhcnkgYmluYXJ5IGRhdGEgYW5kIGl0IGlzIG5vdCBjbGVhciB3aGV0aGVyIHdl
IGNhbiBkaXNwbGF5IGl0LiBIZW5jZSB3ZSBqdXN0IGlnbm9yZSB0aGUgYW5ub3RhdGlvbi4KLSAg
ICAgICAgICAgIGlmIChjaGlsZC0+ZmFzdEhhc0F0dHJpYnV0ZShNYXRoTUxOYW1lczo6c3JjQXR0
cikpCisgICAgICAgICAgICBpZiAoY2hpbGQtPmhhc0F0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6
YXRpb24oTWF0aE1MTmFtZXM6OnNyY0F0dHIpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwog
ICAgICAgICAgICAgLy8gSWYgdGhlIDxhbm5vdGF0aW9uLXhtbD4gZWxlbWVudCBoYXMgYW4gZW5j
b2RpbmcgYXR0cmlidXRlIGRlc2NyaWJpbmcgcHJlc2VudGF0aW9uIE1hdGhNTCwgU1ZHIG9yIEhU
TUwgd2UgYXNzdW1lIHRoZSBjb250ZW50IGNhbiBiZSBkaXNwbGF5ZWQgYW5kIHdlIHN0b3AgaGVy
ZS4KICAgICAgICAgICAgIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUgPSBjaGlsZC0+YXR0cmli
dXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihNYXRoTUxOYW1lczo6ZW5jb2RpbmdBdHRyKTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuY3BwCShyZXZp
c2lvbiAyMDMzMzYpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxs
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTgzLDcgKzE4Myw3IEBAIHZvaWQgUmVuZGVyVGFibGVD
ZWxsOjpjb21wdXRlUHJlZmVycmVkTG8KICAgICB0YWJsZSgpLT5yZWNhbGNTZWN0aW9uc0lmTmVl
ZGVkKCk7CiAKICAgICBSZW5kZXJCbG9ja0Zsb3c6OmNvbXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lk
dGhzKCk7Ci0gICAgaWYgKCFlbGVtZW50KCkgfHwgIXN0eWxlKCkuYXV0b1dyYXAoKSB8fCAhZWxl
bWVudCgpLT5mYXN0SGFzQXR0cmlidXRlKG5vd3JhcEF0dHIpKQorICAgIGlmICghZWxlbWVudCgp
IHx8ICFzdHlsZSgpLmF1dG9XcmFwKCkgfHwgIWVsZW1lbnQoKS0+aGFzQXR0cmlidXRlV2l0aG91
dFN5bmNocm9uaXphdGlvbihub3dyYXBBdHRyKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgTGVu
Z3RoIHcgPSBzdHlsZU9yQ29sTG9naWNhbFdpZHRoKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1tCShyZXZpc2lvbiAyMDMzMzYpCisrKyBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW0JKHdvcmtpbmcgY29weSkKQEAgLTYy
NSw3ICs2MjUsNyBAQCB2b2lkIFJlbmRlclRoZW1lSU9TOjphZGp1c3RNZW51TGlzdEJ1dHRvCiAg
ICAgLy8gRW5mb3JjZSBzb21lIGRlZmF1bHQgc3R5bGVzIGluIHRoZSBjYXNlIHRoYXQgdGhpcyBp
cyBhIG5vbi1tdWx0aXBsZSA8c2VsZWN0PiBlbGVtZW50LAogICAgIC8vIG9yIGEgZGF0ZSBpbnB1
dC4gV2UgZG9uJ3QgZm9yY2UgdGhlc2UgaWYgdGhpcyBpcyBqdXN0IGFuIGVsZW1lbnQgd2l0aAog
ICAgIC8vICItd2Via2l0LWFwcGVhcmFuY2U6IG1lbnVsaXN0LWJ1dHRvbiIuCi0gICAgaWYgKGlz
PEhUTUxTZWxlY3RFbGVtZW50PigqZWxlbWVudCkgJiYgIWVsZW1lbnQtPmZhc3RIYXNBdHRyaWJ1
dGUoSFRNTE5hbWVzOjptdWx0aXBsZUF0dHIpKQorICAgIGlmIChpczxIVE1MU2VsZWN0RWxlbWVu
dD4oKmVsZW1lbnQpICYmICFlbGVtZW50LT5oYXNBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0
aW9uKEhUTUxOYW1lczo6bXVsdGlwbGVBdHRyKSkKICAgICAgICAgYWRqdXN0U2VsZWN0TGlzdEJ1
dHRvblN0eWxlKHN0eWxlLCAqZWxlbWVudCk7CiAgICAgZWxzZSBpZiAoaXM8SFRNTElucHV0RWxl
bWVudD4oKmVsZW1lbnQpKQogICAgICAgICBhZGp1c3RJbnB1dEVsZW1lbnRCdXR0b25TdHlsZShz
dHlsZSwgZG93bmNhc3Q8SFRNTElucHV0RWxlbWVudD4oKmVsZW1lbnQpKTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dC5jcHAJKHJldmlzaW9uIDIw
MzMzNikKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjk4LDcgKzI5OCw3IEBAIHN0YXRpYyBBdm9pZGFuY2VSZWFzb25G
bGFncyBjYW5Vc2VGb3JXaXQKICAgICBpZiAoaXM8UmVuZGVyVGV4dENvbnRyb2w+KCpmbG93LnBh
cmVudCgpKSAmJiBkb3duY2FzdDxSZW5kZXJUZXh0Q29udHJvbD4oKmZsb3cucGFyZW50KCkpLnRl
eHRGb3JtQ29udHJvbEVsZW1lbnQoKS5wbGFjZWhvbGRlckVsZW1lbnQoKSkKICAgICAgICAgU0VU
X1JFQVNPTl9BTkRfUkVUVVJOX0lGX05FRURFRChGbG93UGFyZW50SXNQbGFjZWhvbGRlckVsZW1l
bnQsIHJlYXNvbnMsIGluY2x1ZGVSZWFzb25zKTsKICAgICAvLyBGSVhNRTogSW1wbGVtZW50YXRp
b24gb2Ygd3JhcD1oYXJkIGxvb2tzIGludG8gbGluZWJveGVzLgotICAgIGlmIChmbG93LnBhcmVu
dCgpLT5pc1RleHRBcmVhKCkgJiYgZmxvdy5wYXJlbnQoKS0+ZWxlbWVudCgpLT5mYXN0SGFzQXR0
cmlidXRlKEhUTUxOYW1lczo6d3JhcEF0dHIpKQorICAgIGlmIChmbG93LnBhcmVudCgpLT5pc1Rl
eHRBcmVhKCkgJiYgZmxvdy5wYXJlbnQoKS0+ZWxlbWVudCgpLT5oYXNBdHRyaWJ1dGVXaXRob3V0
U3luY2hyb25pemF0aW9uKEhUTUxOYW1lczo6d3JhcEF0dHIpKQogICAgICAgICBTRVRfUkVBU09O
X0FORF9SRVRVUk5fSUZfTkVFREVEKEZsb3dQYXJlbnRJc1RleHRBcmVhV2l0aFdyYXBwaW5nLCBy
ZWFzb25zLCBpbmNsdWRlUmVhc29ucyk7CiAgICAgLy8gVGhpcyBjdXJyZW50bHkgY292ZXJzIDxi
bG9ja2Zsb3c+I3RleHQ8L2Jsb2NrZmxvdz4sIDxibG9ja2Zsb3c+I3RleHQ8YnI+PC9ibG9ja2Zs
b3c+IGFuZCBtdXRpcGxlIChzaWJsaW5nKSBSZW5kZXJUZXh0IGNhc2VzLgogICAgIC8vIFRoZSA8
YmxvY2tmbG93PjxpbmxpbmU+I3RleHQ8L2lubGluZT48L2Jsb2NrZmxvdz4gY2FzZSBpcyBhbHNv
IHBvcHVsYXIgYW5kIHNob3VsZCBiZSByZWxhdGl2ZWx5IGVhc3kgdG8gY292ZXIuCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlQ2xpcHBlci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNv
dXJjZUNsaXBwZXIuY3BwCShyZXZpc2lvbiAyMDMzMzYpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlQ2xpcHBlci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTIxNSw3ICsyMTUsNyBAQCBib29sIFJlbmRlclNWR1Jlc291cmNlQ2xpcHBlcjo6ZHJhd0NvbnRl
CiAgICAgICAgICAgICByZW5kZXJlciA9IHVzZUVsZW1lbnQucmVuZGVyZXJDbGlwQ2hpbGQoKTsK
ICAgICAgICAgICAgIGlmICghcmVuZGVyZXIpCiAgICAgICAgICAgICAgICAgY29udGludWU7Ci0g
ICAgICAgICAgICBpZiAoIXVzZUVsZW1lbnQuZmFzdEhhc0F0dHJpYnV0ZShTVkdOYW1lczo6Y2xp
cF9ydWxlQXR0cikpCisgICAgICAgICAgICBpZiAoIXVzZUVsZW1lbnQuaGFzQXR0cmlidXRlV2l0
aG91dFN5bmNocm9uaXphdGlvbihTVkdOYW1lczo6Y2xpcF9ydWxlQXR0cikpCiAgICAgICAgICAg
ICAgICAgbmV3Q2xpcFJ1bGUgPSByZW5kZXJlci0+c3R5bGUoKS5zdmdTdHlsZSgpLmNsaXBSdWxl
KCk7CiAgICAgICAgIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVNb3Rp
b25FbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0
ZU1vdGlvbkVsZW1lbnQuY3BwCShyZXZpc2lvbiAyMDMzMzYpCisrKyBTb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzIsNyAr
MTMyLDcgQEAgdm9pZCBTVkdBbmltYXRlTW90aW9uRWxlbWVudDo6dXBkYXRlQW5pbQogICAgICAg
ICB9CiAgICAgfQogCi0gICAgaWYgKCFmb3VuZE1QYXRoICYmIGZhc3RIYXNBdHRyaWJ1dGUoU1ZH
TmFtZXM6OnBhdGhBdHRyKSkKKyAgICBpZiAoIWZvdW5kTVBhdGggJiYgaGFzQXR0cmlidXRlV2l0
aG91dFN5bmNocm9uaXphdGlvbihTVkdOYW1lczo6cGF0aEF0dHIpKQogICAgICAgICBtX2FuaW1h
dGlvblBhdGggPSBtX3BhdGg7CiAKICAgICB1cGRhdGVBbmltYXRpb25Nb2RlKCk7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0aW9uRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGlvbkVsZW1lbnQuY3BwCShyZXZpc2lvbiAyMDMz
MzYpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0aW9uRWxlbWVudC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTU1Myw3ICs1NTMsNyBAQCB2b2lkIFNWR0FuaW1hdGlvbkVsZW1lbnQ6OnN0
YXJ0ZWRBY3RpdmVJCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIFRoZXNlIHZhbGlkYXRpb25z
IGFyZSBhcHByb3ByaWF0ZSBmb3IgYWxsIGFuaW1hdGlvbiBtb2Rlcy4KLSAgICBpZiAoZmFzdEhh
c0F0dHJpYnV0ZShTVkdOYW1lczo6a2V5UG9pbnRzQXR0cikgJiYgbV9rZXlQb2ludHMuc2l6ZSgp
ICE9IG1fa2V5VGltZXMuc2l6ZSgpKQorICAgIGlmIChoYXNBdHRyaWJ1dGVXaXRob3V0U3luY2hy
b25pemF0aW9uKFNWR05hbWVzOjprZXlQb2ludHNBdHRyKSAmJiBtX2tleVBvaW50cy5zaXplKCkg
IT0gbV9rZXlUaW1lcy5zaXplKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIEFuaW1hdGlvbk1v
ZGUgYW5pbWF0aW9uTW9kZSA9IHRoaXMtPmFuaW1hdGlvbk1vZGUoKTsKQEAgLTU2MSw5ICs1NjEs
OSBAQCB2b2lkIFNWR0FuaW1hdGlvbkVsZW1lbnQ6OnN0YXJ0ZWRBY3RpdmVJCiAgICAgaWYgKGNh
bGNNb2RlID09IENhbGNNb2RlU3BsaW5lKSB7CiAgICAgICAgIHVuc2lnbmVkIHNwbGluZXNDb3Vu
dCA9IG1fa2V5U3BsaW5lcy5zaXplKCk7CiAgICAgICAgIGlmICghc3BsaW5lc0NvdW50Ci0gICAg
ICAgICAgICB8fCAoZmFzdEhhc0F0dHJpYnV0ZShTVkdOYW1lczo6a2V5UG9pbnRzQXR0cikgJiYg
bV9rZXlQb2ludHMuc2l6ZSgpIC0gMSAhPSBzcGxpbmVzQ291bnQpCisgICAgICAgICAgICB8fCAo
aGFzQXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihTVkdOYW1lczo6a2V5UG9pbnRzQXR0
cikgJiYgbV9rZXlQb2ludHMuc2l6ZSgpIC0gMSAhPSBzcGxpbmVzQ291bnQpCiAgICAgICAgICAg
ICB8fCAoYW5pbWF0aW9uTW9kZSA9PSBWYWx1ZXNBbmltYXRpb24gJiYgbV92YWx1ZXMuc2l6ZSgp
IC0gMSAhPSBzcGxpbmVzQ291bnQpCi0gICAgICAgICAgICB8fCAoZmFzdEhhc0F0dHJpYnV0ZShT
VkdOYW1lczo6a2V5VGltZXNBdHRyKSAmJiBtX2tleVRpbWVzLnNpemUoKSAtIDEgIT0gc3BsaW5l
c0NvdW50KSkKKyAgICAgICAgICAgIHx8IChoYXNBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0
aW9uKFNWR05hbWVzOjprZXlUaW1lc0F0dHIpICYmIG1fa2V5VGltZXMuc2l6ZSgpIC0gMSAhPSBz
cGxpbmVzQ291bnQpKQogICAgICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNTczLDcgKzU3
Myw3IEBAIHZvaWQgU1ZHQW5pbWF0aW9uRWxlbWVudDo6c3RhcnRlZEFjdGl2ZUkKICAgICBpZiAo
YW5pbWF0aW9uTW9kZSA9PSBOb0FuaW1hdGlvbikKICAgICAgICAgcmV0dXJuOwogICAgIGlmICgo
YW5pbWF0aW9uTW9kZSA9PSBGcm9tVG9BbmltYXRpb24gfHwgYW5pbWF0aW9uTW9kZSA9PSBGcm9t
QnlBbmltYXRpb24gfHwgYW5pbWF0aW9uTW9kZSA9PSBUb0FuaW1hdGlvbiB8fCBhbmltYXRpb25N
b2RlID09IEJ5QW5pbWF0aW9uKQotICAgICAgICAmJiAoZmFzdEhhc0F0dHJpYnV0ZShTVkdOYW1l
czo6a2V5UG9pbnRzQXR0cikgJiYgZmFzdEhhc0F0dHJpYnV0ZShTVkdOYW1lczo6a2V5VGltZXNB
dHRyKSAmJiAobV9rZXlUaW1lcy5zaXplKCkgPCAyIHx8IG1fa2V5VGltZXMuc2l6ZSgpICE9IG1f
a2V5UG9pbnRzLnNpemUoKSkpKQorICAgICAgICAmJiAoaGFzQXR0cmlidXRlV2l0aG91dFN5bmNo
cm9uaXphdGlvbihTVkdOYW1lczo6a2V5UG9pbnRzQXR0cikgJiYgaGFzQXR0cmlidXRlV2l0aG91
dFN5bmNocm9uaXphdGlvbihTVkdOYW1lczo6a2V5VGltZXNBdHRyKSAmJiAobV9rZXlUaW1lcy5z
aXplKCkgPCAyIHx8IG1fa2V5VGltZXMuc2l6ZSgpICE9IG1fa2V5UG9pbnRzLnNpemUoKSkpKQog
ICAgICAgICByZXR1cm47CiAgICAgaWYgKGFuaW1hdGlvbk1vZGUgPT0gRnJvbVRvQW5pbWF0aW9u
KQogICAgICAgICBtX2FuaW1hdGlvblZhbGlkID0gY2FsY3VsYXRlRnJvbUFuZFRvVmFsdWVzKGZy
b20sIHRvKTsKQEAgLTU4NywxNiArNTg3LDE2IEBAIHZvaWQgU1ZHQW5pbWF0aW9uRWxlbWVudDo6
c3RhcnRlZEFjdGl2ZUkKICAgICAgICAgbV9hbmltYXRpb25WYWxpZCA9IGNhbGN1bGF0ZUZyb21B
bmRCeVZhbHVlcyhlbXB0eVN0cmluZygpLCBieSk7CiAgICAgZWxzZSBpZiAoYW5pbWF0aW9uTW9k
ZSA9PSBWYWx1ZXNBbmltYXRpb24pIHsKICAgICAgICAgbV9hbmltYXRpb25WYWxpZCA9IG1fdmFs
dWVzLnNpemUoKSA+PSAxCi0gICAgICAgICAgICAmJiAoY2FsY01vZGUgPT0gQ2FsY01vZGVQYWNl
ZCB8fCAhZmFzdEhhc0F0dHJpYnV0ZShTVkdOYW1lczo6a2V5VGltZXNBdHRyKSB8fCBmYXN0SGFz
QXR0cmlidXRlKFNWR05hbWVzOjprZXlQb2ludHNBdHRyKSB8fCAobV92YWx1ZXMuc2l6ZSgpID09
IG1fa2V5VGltZXMuc2l6ZSgpKSkKKyAgICAgICAgICAgICYmIChjYWxjTW9kZSA9PSBDYWxjTW9k
ZVBhY2VkIHx8ICFoYXNBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKFNWR05hbWVzOjpr
ZXlUaW1lc0F0dHIpIHx8IGhhc0F0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oU1ZHTmFt
ZXM6OmtleVBvaW50c0F0dHIpIHx8IChtX3ZhbHVlcy5zaXplKCkgPT0gbV9rZXlUaW1lcy5zaXpl
KCkpKQogICAgICAgICAgICAgJiYgKGNhbGNNb2RlID09IENhbGNNb2RlRGlzY3JldGUgfHwgIW1f
a2V5VGltZXMuc2l6ZSgpIHx8IG1fa2V5VGltZXMubGFzdCgpID09IDEpCiAgICAgICAgICAgICAm
JiAoY2FsY01vZGUgIT0gQ2FsY01vZGVTcGxpbmUgfHwgKChtX2tleVNwbGluZXMuc2l6ZSgpICYm
IChtX2tleVNwbGluZXMuc2l6ZSgpID09IG1fdmFsdWVzLnNpemUoKSAtIDEpKSB8fCBtX2tleVNw
bGluZXMuc2l6ZSgpID09IG1fa2V5UG9pbnRzLnNpemUoKSAtIDEpKQotICAgICAgICAgICAgJiYg
KCFmYXN0SGFzQXR0cmlidXRlKFNWR05hbWVzOjprZXlQb2ludHNBdHRyKSB8fCAobV9rZXlUaW1l
cy5zaXplKCkgPiAxICYmIG1fa2V5VGltZXMuc2l6ZSgpID09IG1fa2V5UG9pbnRzLnNpemUoKSkp
OworICAgICAgICAgICAgJiYgKCFoYXNBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKFNW
R05hbWVzOjprZXlQb2ludHNBdHRyKSB8fCAobV9rZXlUaW1lcy5zaXplKCkgPiAxICYmIG1fa2V5
VGltZXMuc2l6ZSgpID09IG1fa2V5UG9pbnRzLnNpemUoKSkpOwogICAgICAgICBpZiAobV9hbmlt
YXRpb25WYWxpZCkKICAgICAgICAgICAgIG1fYW5pbWF0aW9uVmFsaWQgPSBjYWxjdWxhdGVUb0F0
RW5kT2ZEdXJhdGlvblZhbHVlKG1fdmFsdWVzLmxhc3QoKSk7CiAgICAgICAgIGlmIChjYWxjTW9k
ZSA9PSBDYWxjTW9kZVBhY2VkICYmIG1fYW5pbWF0aW9uVmFsaWQpCiAgICAgICAgICAgICBjYWxj
dWxhdGVLZXlUaW1lc0ZvckNhbGNNb2RlUGFjZWQoKTsKICAgICB9IGVsc2UgaWYgKGFuaW1hdGlv
bk1vZGUgPT0gUGF0aEFuaW1hdGlvbikKLSAgICAgICAgbV9hbmltYXRpb25WYWxpZCA9IGNhbGNN
b2RlID09IENhbGNNb2RlUGFjZWQgfHwgIWZhc3RIYXNBdHRyaWJ1dGUoU1ZHTmFtZXM6OmtleVBv
aW50c0F0dHIpIHx8IChtX2tleVRpbWVzLnNpemUoKSA+IDEgJiYgbV9rZXlUaW1lcy5zaXplKCkg
PT0gbV9rZXlQb2ludHMuc2l6ZSgpKTsKKyAgICAgICAgbV9hbmltYXRpb25WYWxpZCA9IGNhbGNN
b2RlID09IENhbGNNb2RlUGFjZWQgfHwgIWhhc0F0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRp
b24oU1ZHTmFtZXM6OmtleVBvaW50c0F0dHIpIHx8IChtX2tleVRpbWVzLnNpemUoKSA+IDEgJiYg
bV9rZXlUaW1lcy5zaXplKCkgPT0gbV9rZXlQb2ludHMuc2l6ZSgpKTsKIH0KIAogdm9pZCBTVkdB
bmltYXRpb25FbGVtZW50Ojp1cGRhdGVBbmltYXRpb24oZmxvYXQgcGVyY2VudCwgdW5zaWduZWQg
cmVwZWF0Q291bnQsIFNWR1NNSUxFbGVtZW50KiByZXN1bHRFbGVtZW50KQpJbmRleDogU291cmNl
L1dlYkNvcmUvc3ZnL2FuaW1hdGlvbi9TVkdTTUlMRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvc3ZnL2FuaW1hdGlvbi9TVkdTTUlMRWxlbWVudC5jcHAJKHJldmlzaW9u
IDIwMzMzNikKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9hbmltYXRpb24vU1ZHU01JTEVsZW1lbnQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNjcsNyArMjY3LDcgQEAgTm9kZTo6SW5zZXJ0aW9uTm90
aWZpY2F0aW9uUmVxdWVzdCBTVkdTTQogICAgIG1fdGltZUNvbnRhaW5lci0+c2V0RG9jdW1lbnRP
cmRlckluZGV4ZXNEaXJ0eSgpOwogCiAgICAgLy8gIklmIG5vIGF0dHJpYnV0ZSBpcyBwcmVzZW50
LCB0aGUgZGVmYXVsdCBiZWdpbiB2YWx1ZSAoYW4gb2Zmc2V0LXZhbHVlIG9mIDApIG11c3QgYmUg
ZXZhbHVhdGVkLiIKLSAgICBpZiAoIWZhc3RIYXNBdHRyaWJ1dGUoU1ZHTmFtZXM6OmJlZ2luQXR0
cikpCisgICAgaWYgKCFoYXNBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKFNWR05hbWVz
OjpiZWdpbkF0dHIpKQogICAgICAgICBtX2JlZ2luVGltZXMuYXBwZW5kKFNNSUxUaW1lV2l0aE9y
aWdpbigpKTsKIAogICAgIGlmIChtX2lzV2FpdGluZ0ZvckZpcnN0SW50ZXJ2YWwpCkluZGV4OiBT
b3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyMDMzMzYpCisrKyBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHdv
cmtpbmcgY29weSkKQEAgLTEsMyArMSwxMyBAQAorMjAxNi0wNy0xNyAgUnlvc3VrZSBOaXdhICA8
cm5pd2FAd2Via2l0Lm9yZz4KKworICAgICAgICBSZW5hbWUgZmFzdEhhc0F0dHJpYnV0ZSB0byBo
YXNBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTk4NjQKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFn
ZUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Z2V0QXNzaXN0ZWROb2RlSW5mb3Jt
YXRpb24pOgorCiAyMDE2LTA3LTE3ICBKZXJlbXkgSm9uZXMgIDxqZXJlbXlqQGFwcGxlLmNvbT4K
IAogICAgICAgICBSRUdSRVNTSU9OIChyMTkxOTA3KTogTWF4dGhvbiBCcm93c2VyIC1BZnRlciBl
eGl0IGZ1bGwgc2NyZWVuIHZpZGVvIHBsYXliYWNrIHRoZSBicm93c2VyIHdpbmRvdyBpcyBibGFu
ayB3aXRoIGF1ZGlvIHJ1bm5pbmcKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9pb3MvV2ViUGFnZUlPUy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0JKHJldmlzaW9uIDIwMzMzNikKKysrIFNv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtMjU1OSwxMSArMjU1OSwxMSBAQCB2b2lkIFdlYlBhZ2U6OmdldEFzc2lzdGVk
Tm9kZUluZm9ybWF0aW9uCiAgICAgICAgICAgICBIVE1MRWxlbWVudCogaXRlbSA9IGl0ZW1zW2ld
OwogICAgICAgICAgICAgaWYgKGlzPEhUTUxPcHRpb25FbGVtZW50PigqaXRlbSkpIHsKICAgICAg
ICAgICAgICAgICBIVE1MT3B0aW9uRWxlbWVudCYgb3B0aW9uID0gZG93bmNhc3Q8SFRNTE9wdGlv
bkVsZW1lbnQ+KCppdGVtKTsKLSAgICAgICAgICAgICAgICBpbmZvcm1hdGlvbi5zZWxlY3RPcHRp
b25zLmFwcGVuZChPcHRpb25JdGVtKG9wdGlvbi50ZXh0KCksIGZhbHNlLCBwYXJlbnRHcm91cElE
LCBvcHRpb24uc2VsZWN0ZWQoKSwgb3B0aW9uLmZhc3RIYXNBdHRyaWJ1dGUoV2ViQ29yZTo6SFRN
TE5hbWVzOjpkaXNhYmxlZEF0dHIpKSk7CisgICAgICAgICAgICAgICAgaW5mb3JtYXRpb24uc2Vs
ZWN0T3B0aW9ucy5hcHBlbmQoT3B0aW9uSXRlbShvcHRpb24udGV4dCgpLCBmYWxzZSwgcGFyZW50
R3JvdXBJRCwgb3B0aW9uLnNlbGVjdGVkKCksIG9wdGlvbi5oYXNBdHRyaWJ1dGVXaXRob3V0U3lu
Y2hyb25pemF0aW9uKFdlYkNvcmU6OkhUTUxOYW1lczo6ZGlzYWJsZWRBdHRyKSkpOwogICAgICAg
ICAgICAgfSBlbHNlIGlmIChpczxIVE1MT3B0R3JvdXBFbGVtZW50PigqaXRlbSkpIHsKICAgICAg
ICAgICAgICAgICBIVE1MT3B0R3JvdXBFbGVtZW50JiBncm91cCA9IGRvd25jYXN0PEhUTUxPcHRH
cm91cEVsZW1lbnQ+KCppdGVtKTsKICAgICAgICAgICAgICAgICBwYXJlbnRHcm91cElEKys7Ci0g
ICAgICAgICAgICAgICAgaW5mb3JtYXRpb24uc2VsZWN0T3B0aW9ucy5hcHBlbmQoT3B0aW9uSXRl
bShncm91cC5ncm91cExhYmVsVGV4dCgpLCB0cnVlLCAwLCBmYWxzZSwgZ3JvdXAuZmFzdEhhc0F0
dHJpYnV0ZShXZWJDb3JlOjpIVE1MTmFtZXM6OmRpc2FibGVkQXR0cikpKTsKKyAgICAgICAgICAg
ICAgICBpbmZvcm1hdGlvbi5zZWxlY3RPcHRpb25zLmFwcGVuZChPcHRpb25JdGVtKGdyb3VwLmdy
b3VwTGFiZWxUZXh0KCksIHRydWUsIDAsIGZhbHNlLCBncm91cC5oYXNBdHRyaWJ1dGVXaXRob3V0
U3luY2hyb25pemF0aW9uKFdlYkNvcmU6OkhUTUxOYW1lczo6ZGlzYWJsZWRBdHRyKSkpOwogICAg
ICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIGluZm9ybWF0aW9uLnNlbGVjdGVkSW5kZXgg
PSBlbGVtZW50LnNlbGVjdGVkSW5kZXgoKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>