<?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>186043</bug_id>
          
          <creation_ts>2018-05-28 22:20:35 -0700</creation_ts>
          <short_desc>Straighten out HTMLInputElement attribute handling</short_desc>
          <delta_ts>2018-05-31 22:41:32 -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>Forms</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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Darin Adler">darin</reporter>
          <assigned_to name="Darin Adler">darin</assigned_to>
          <cc>cdumez</cc>
    
    <cc>dbates</cc>
    
    <cc>realdawei</cc>
    
    <cc>rniwa</cc>
    
    <cc>ryanhaddad</cc>
    
    <cc>sam</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1428011</commentid>
    <comment_count>0</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2018-05-28 22:20:35 -0700</bug_when>
    <thetext>Straighten out HTMLInputElement attribute handling</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1428012</commentid>
    <comment_count>1</comment_count>
      <attachid>341471</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2018-05-28 22:35:52 -0700</bug_when>
    <thetext>Created attachment 341471
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1428017</commentid>
    <comment_count>2</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2018-05-28 23:00:39 -0700</bug_when>
    <thetext>Added recent modifiers of HTMLInputElement to the cc list.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1428143</commentid>
    <comment_count>3</comment_count>
      <attachid>341471</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2018-05-29 11:29:20 -0700</bug_when>
    <thetext>Comment on attachment 341471
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=341471&amp;action=review

&gt; Source/WebCore/ChangeLog:45
&gt; +        fixed a bug: With some work could create a test case to demonstrate that.

The last sentence does not read well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1428746</commentid>
    <comment_count>4</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2018-05-30 21:23:07 -0700</bug_when>
    <thetext>Committed r232335: &lt;https://trac.webkit.org/changeset/232335&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1428748</commentid>
    <comment_count>5</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-05-30 21:41:20 -0700</bug_when>
    <thetext>&lt;rdar://problem/40674604&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1428856</commentid>
    <comment_count>6</comment_count>
    <who name="Dawei Fenton (:realdawei)">realdawei</who>
    <bug_when>2018-05-31 09:10:39 -0700</bug_when>
    <thetext>Looks like this patch broke iOS build:

https://build.webkit.org/builders/Apple%20iOS%2011%20Simulator%20Release%20%28Build%29/builds/6238/steps/compile-webkit/logs/stdio</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1428859</commentid>
    <comment_count>7</comment_count>
    <who name="Ryan Haddad">ryanhaddad</who>
    <bug_when>2018-05-31 09:17:45 -0700</bug_when>
    <thetext>(In reply to David Fenton from comment #6)
&gt; Looks like this patch broke iOS build:
&gt; 
&gt; https://build.webkit.org/builders/
&gt; Apple%20iOS%2011%20Simulator%20Release%20%28Build%29/builds/6238/steps/
&gt; compile-webkit/logs/stdio
From the log:

./html/BaseChooserOnlyDateAndTimeInputType.h:44:10: error: &apos;updateInnerTextValue&apos; overrides a member function but is not marked &apos;override&apos; [-Werror,-Winconsistent-missing-override]</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1428860</commentid>
    <comment_count>8</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-05-31 09:20:12 -0700</bug_when>
    <thetext>(In reply to Ryan Haddad from comment #7)
&gt; (In reply to David Fenton from comment #6)
&gt; &gt; Looks like this patch broke iOS build:
&gt; &gt; 
&gt; &gt; https://build.webkit.org/builders/
&gt; &gt; Apple%20iOS%2011%20Simulator%20Release%20%28Build%29/builds/6238/steps/
&gt; &gt; compile-webkit/logs/stdio
&gt; From the log:
&gt; 
&gt; ./html/BaseChooserOnlyDateAndTimeInputType.h:44:10: error:
&gt; &apos;updateInnerTextValue&apos; overrides a member function but is not marked
&gt; &apos;override&apos; [-Werror,-Winconsistent-missing-override]

I will fix it shortly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1428862</commentid>
    <comment_count>9</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-05-31 09:25:18 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #8)
&gt; (In reply to Ryan Haddad from comment #7)
&gt; &gt; (In reply to David Fenton from comment #6)
&gt; &gt; &gt; Looks like this patch broke iOS build:
&gt; &gt; &gt; 
&gt; &gt; &gt; https://build.webkit.org/builders/
&gt; &gt; &gt; Apple%20iOS%2011%20Simulator%20Release%20%28Build%29/builds/6238/steps/
&gt; &gt; &gt; compile-webkit/logs/stdio
&gt; &gt; From the log:
&gt; &gt; 
&gt; &gt; ./html/BaseChooserOnlyDateAndTimeInputType.h:44:10: error:
&gt; &gt; &apos;updateInnerTextValue&apos; overrides a member function but is not marked
&gt; &gt; &apos;override&apos; [-Werror,-Winconsistent-missing-override]
&gt; 
&gt; I will fix it shortly.

iOS build fixes: &lt;https://trac.webkit.org/changeset/232349&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1429149</commentid>
    <comment_count>10</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2018-05-31 22:41:32 -0700</bug_when>
    <thetext>Thanks for fixing it, Chris.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>341471</attachid>
            <date>2018-05-28 22:35:52 -0700</date>
            <delta_ts>2018-05-29 11:29:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-186043-20180528223551.patch</filename>
            <type>text/plain</type>
            <size>51987</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMyMjI3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmIwODhiOWQ4MzRlM2Uw
NTY1OTczZWNjMTE0MTA3MWQ4OWUwNTJkMy4uOTEwYjExOTM1MjNmNGJiYmY3NjE0OTQyOGMwZjlk
MThhOWNhYzI4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwOSBAQAorMjAxOC0wNS0yOCAgRGFy
aW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgU3RyYWlnaHRlbiBvdXQgSFRN
TElucHV0RWxlbWVudCBhdHRyaWJ1dGUgaGFuZGxpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4NjA0MworCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogZG9tL1JhZGlvQnV0dG9uR3JvdXBzLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJhZGlvQnV0dG9uR3JvdXA6OnJlcXVpcmVkU3RhdGVDaGFuZ2VkKTog
UmVuYW1lZCBmcm9tIHJlcXVpcmVkQXR0cmlidXRlQ2hhbmdlZCwKKyAgICAgICAgYW5kIGNoYW5n
ZWQgdG8gdGFrZSBhIHJlZmVyZW5jZS4KKyAgICAgICAgKFdlYkNvcmU6OlJhZGlvQnV0dG9uR3Jv
dXBzOjpyZXF1aXJlZFN0YXRlQ2hhbmdlZCk6IERpdHRvLgorICAgICAgICAqIGRvbS9SYWRpb0J1
dHRvbkdyb3Vwcy5oOiBVcGRhdGVkIGZvciBjaGFuZ2VzIGFib3ZlLgorCisgICAgICAgICogaHRt
bC9CYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QmFzZURh
dGVBbmRUaW1lSW5wdXRUeXBlOjphdHRyaWJ1dGVDaGFuZ2VkKTogUmVwbGFjZWQKKyAgICAgICAg
bWluT3JNYXhBdHRyaWJ1dGVDaGFuZ2VkIHdpdGggdGhpcyBvdmVycmlkZSwgY2hlY2tpbmcgZm9y
IHRoZSBhdHRyaWJ1dGUgbmFtZXMuCisgICAgICAgICogaHRtbC9CYXNlRGF0ZUFuZFRpbWVJbnB1
dFR5cGUuaDogVXBkYXRlZCBmb3IgY2hhbmdlcyBhYm92ZS4KKworICAgICAgICAqIGh0bWwvRmls
ZUlucHV0VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGaWxlSW5wdXRUeXBlOjpkaXNhYmxl
ZFN0YXRlQ2hhbmdlZCk6IFJlbmFtZWQgZnJvbSBkaXNhYmxlZEF0dHJpYnV0ZUNoYW5nZWQuCisg
ICAgICAgIChXZWJDb3JlOjpGaWxlSW5wdXRUeXBlOjphdHRyaWJ1dGVDaGFuZ2VkKTogUmVwbGFj
ZWQKKyAgICAgICAgbXVsdGlwbGVBdHRyaWJ1dGVDaGFuZ2VkIHdpdGggdGhpcyBvdmVycmlkZSwg
Y2hlY2tpbmcgZm9yIHRoZSBhdHRyaWJ1dGUgbmFtZXMuCisgICAgICAgICogaHRtbC9GaWxlSW5w
dXRUeXBlLmg6IFVwZGF0ZWQgZm9yIGNoYW5nZXMgYWJvdmUuCisKKyAgICAgICAgKiBodG1sL0hU
TUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZvcm1Db250
cm9sRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUpOiBVcGRhdGVkIGZ1bmN0aW9uIG5hbWVzIHRvIHNh
eQorICAgICAgICAic3RhdGUgY2hhbmdlZCIgcmF0aGVyIHRoYW4gImF0dHJpYnV0ZSBjaGFuZ2Vk
IiBpZiB0aGV5IGFyZSBjYWxsZWQgb25seSB3aGVuIHRoZQorICAgICAgICBjb21wdXRlZCB2YWx1
ZSBpcyBjaGFuZ2VkLCBub3QgdGhlIHJhdyBhdHRyaWJ1dGUgdmFsdWUuCisgICAgICAgIChXZWJD
b3JlOjpIVE1MRm9ybUNvbnRyb2xFbGVtZW50OjpyZWFkT25seVN0YXRlQ2hhbmdlZCk6IFVwZGF0
ZWQgbmFtZS4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OnJlcXVp
cmVkU3RhdGVDaGFuZ2VkKTogRGl0dG8uCisgICAgICAgICogaHRtbC9IVE1MRm9ybUNvbnRyb2xF
bGVtZW50Lmg6IFVwZGF0ZWQgZm9yIGNoYW5nZXMgYWJvdmUuCisKKyAgICAgICAgKiBodG1sL0hU
TUxJbnB1dEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6
cGFyc2VBdHRyaWJ1dGUpOiBSZW1vdmVkIHRoZSBjb2RlIHRvIGNhbGwgbG90cyBvZiBzcGVjaWZp
YworICAgICAgICBhdHRyaWJ1dGUgY2hhbmdlZCBmdW5jdGlvbnMgdGhhdCBoYXZlIG5vdyBiZWVu
IGRlbGV0ZWQuIEFsc28gcmVtb3ZlZCBlbXB0eSBjb2RlIGZvciBhCisgICAgICAgIGNvdXBsZSBv
ZiBhdHRyaWJ1dGVzLgorICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6ZGlzYWJs
ZWRTdGF0ZUNoYW5nZWQpOiBBZGRlZC4gRm9yd2FyZCBjYWxsIHRvIGlucHV0IHR5cGUuCisgICAg
ICAgIChXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50OjpyZWFkT25seVN0YXRlQ2hhbmdlZCk6IERp
dHRvLgorICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6cmVxdWlyZWRTdGF0ZUNo
YW5nZWQpOiBSZW5hbWVkIGZyb20gcmVxdWlyZWRBdHRyaWJ1dGVDaGFuZ2VkLgorICAgICAgICAq
IGh0bWwvSFRNTElucHV0RWxlbWVudC5oOiBVcGRhdGVkIGZvciBjaGFuZ2VzIGFib3ZlLgorCisg
ICAgICAgICogaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudDo6cmVhZE9ubHlTdGF0ZUNoYW5nZWQp
OiBSZW5hbWVkIGZyb20KKyAgICAgICAgcmVhZE9ubHlBdHRyaWJ1dGVDaGFuZ2VkLiBBbHNvIGZp
eGVkIGluY29ycmVjdCBjYWxsIHRvIGJhc2UgY2xhc3MuIFRoaXMgcHJvYmFibHkKKyAgICAgICAg
Zml4ZWQgYSBidWc6IFdpdGggc29tZSB3b3JrIGNvdWxkIGNyZWF0ZSBhIHRlc3QgY2FzZSB0byBk
ZW1vbnN0cmF0ZSB0aGF0LgorICAgICAgICAqIGh0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1l
bnQuaDogVXBkYXRlZCBmb3IgY2hhbmdlcyBhYm92ZS4KKworICAgICAgICAqIGh0bWwvSW1hZ2VJ
bnB1dFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VJbnB1dFR5cGU6OmF0dHJpYnV0
ZUNoYW5nZWQpOiBSZXBsYWNlZAorICAgICAgICBhbHRBdHRyaWJ1dGVDaGFuZ2VkIGFuZCBzcmNB
dHRyaWJ1dGVDaGFuZ2VkIHdpdGggdGhpcyBvdmVycmlkZSwgY2hlY2tpbmcgZm9yIHRoZQorICAg
ICAgICBhdHRyaWJ1dGUgbmFtZXMuCisgICAgICAgICogaHRtbC9JbWFnZUlucHV0VHlwZS5oOiBV
cGRhdGVkIGZvciBjaGFuZ2VzIGFib3ZlLgorCisgICAgICAgICogaHRtbC9JbnB1dFR5cGUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SW5wdXRUeXBlOjphbHRBdHRyaWJ1dGVDaGFuZ2VkKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OklucHV0VHlwZTo6c3JjQXR0cmlidXRlQ2hhbmdlZCk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbnB1dFR5cGU6Om1heFJlc3VsdHNBdHRyaWJ1
dGVDaGFuZ2VkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OklucHV0VHlwZTo6bWluT3JN
YXhBdHRyaWJ1dGVDaGFuZ2VkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OklucHV0VHlw
ZTo6c3RlcEF0dHJpYnV0ZUNoYW5nZWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW5w
dXRUeXBlOjphdHRyaWJ1dGVDaGFuZ2VkKTogTW92ZWQgdG8gaGVhZGVyIGFzIGFuIGlubGluZSBz
byBkZXJpdmVkCisgICAgICAgIGNsYXNzZXMgY2FuIGNhbGwgdGhyb3VnaCB0byB0aGUgYmFzZSBj
bGFzcyB3aXRoIHRoZSBlbXB0eSBmdW5jdGlvbiBpbmxpbmVkLgorICAgICAgICAoV2ViQ29yZTo6
SW5wdXRUeXBlOjptdWx0aXBsZUF0dHJpYnV0ZUNoYW5nZWQpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6SW5wdXRUeXBlOjpkaXNhYmxlZEF0dHJpYnV0ZUNoYW5nZWQpOiBNb3ZlZCB0byBo
ZWFkZXIgYXMgYW4gaW5saW5lLgorICAgICAgICAoV2ViQ29yZTo6SW5wdXRUeXBlOjpyZWFkb25s
eUF0dHJpYnV0ZUNoYW5nZWQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OklucHV0VHlwZTo6
cmVxdWlyZWRBdHRyaWJ1dGVDaGFuZ2VkKTogRGl0dG8uCisgICAgICAgICogaHRtbC9JbnB1dFR5
cGUuaDogVXBkYXRlZCBmb3IgY2hhbmdlcyBhYm92ZS4KKworICAgICAgICAqIGh0bWwvTnVtYmVy
SW5wdXRUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok51bWJlcklucHV0VHlwZTo6YXR0cmli
dXRlQ2hhbmdlZCk6IFJlcGxhY2VkCisgICAgICAgIG1pbk9yTWF4QXR0cmlidXRlQ2hhbmdlZCBh
bmQgc3RlcEF0dHJpYnV0ZUNoYW5nZWQgd2l0aCB0aGlzIG92ZXJyaWRlLCBjaGVja2luZworICAg
ICAgICBmb3IgdGhlIGF0dHJpYnV0ZSBuYW1lcy4KKyAgICAgICAgKiBodG1sL051bWJlcklucHV0
VHlwZS5oOiBVcGRhdGVkIGZvciBjaGFuZ2VzIGFib3ZlLgorCisgICAgICAgICogaHRtbC9SYW5n
ZUlucHV0VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSYW5nZUlucHV0VHlwZTo6ZGlzYWJs
ZWRTdGF0ZUNoYW5nZWQpOiBSZW5hbWVkIGZyb20KKyAgICAgICAgZGlzYWJsZWRBdHRyaWJ1dGVD
aGFuZ2VkLgorICAgICAgICAoV2ViQ29yZTo6UmFuZ2VJbnB1dFR5cGU6OmF0dHJpYnV0ZUNoYW5n
ZWQpOiBSZXBsYWNlZAorICAgICAgICBtaW5Pck1heEF0dHJpYnV0ZUNoYW5nZWQgd2l0aCB0aGlz
IG92ZXJyaWRlLCBjaGVja2luZyBmb3IgdGhlIGF0dHJpYnV0ZSBuYW1lcy4KKyAgICAgICAgKiBo
dG1sL1JhbmdlSW5wdXRUeXBlLmg6IFVwZGF0ZWQgZm9yIGNoYW5nZXMgYWJvdmUuCisKKyAgICAg
ICAgKiBodG1sL1NlYXJjaElucHV0VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZWFyY2hJ
bnB1dFR5cGU6OlNlYXJjaElucHV0VHlwZSk6IFJlbW92ZWQgdW5uZWVkZWQgaW5pdGlhbGl6YXRp
b24gb2YKKyAgICAgICAgUmVmUHRyIGRhdGEgbWVtYmVycyB0byBudWxscHRyLgorICAgICAgICAo
V2ViQ29yZTo6dXBkYXRlUmVzdWx0QnV0dG9uUHNldWRvVHlwZSk6IFJlbW92ZWQgdW5uZWVkZWQg
aWYgc3RhdGVtZW50OyB0aGUgdHdvCisgICAgICAgIGNhc2VzIGFib3ZlIGNvdmVyIDAsIGFuZCBs
ZXNzIHRoYW4gMCwgc28gdGhlcmUgaXMgbm8gbmVlZCB0byBjaGVjayBmb3IgZ3JlYXRlcgorICAg
ICAgICB0aGFuIDAgZm9yIHRoZSB0aGlyZCBjYXNlLgorICAgICAgICAoV2ViQ29yZTo6U2VhcmNo
SW5wdXRUeXBlOjphdHRyaWJ1dGVDaGFuZ2VkKTogUmVwbGFjZWQKKyAgICAgICAgbWF4UmVzdWx0
c0F0dHJpYnV0ZUNoYW5nZWQgd2l0aCB0aGlzIG92ZXJyaWRlLCBjaGVja2luZyBmb3IgdGhlIGF0
dHJpYnV0ZSBuYW1lLgorICAgICAgICAqIGh0bWwvU2VhcmNoSW5wdXRUeXBlLmg6IFVwZGF0ZWQg
Zm9yIGNoYW5nZXMgYWJvdmUgYW5kIG1hcmtlZCBtb3JlCisgICAgICAgIG1lbWJlciBmdW5jdGlv
bnMgZmluYWwuCisKKyAgICAgICAgKiBodG1sL1RleHRGaWVsZElucHV0VHlwZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpUZXh0RmllbGRJbnB1dFR5cGU6OmF0dHJpYnV0ZUNoYW5nZWQpOiBBZGRl
ZCBhIGNhbGwgdGhyb3VnaCB0byB0aGUKKyAgICAgICAgYmFzZSBjbGFzcyB0byBtYXRjaCB0aGUg
c3R5bGUgb2Ygb3RoZXIgb3ZlcnJpZGVzIG9mIHRoaXMgZnVuY3Rpb24uCisgICAgICAgIChXZWJD
b3JlOjpUZXh0RmllbGRJbnB1dFR5cGU6OmRpc2FibGVkU3RhdGVDaGFuZ2VkKTogUmVuYW1lZCBm
cm9tIGRpc2FibGVkQXR0cmlidXRlQ2hhbmdlZC4KKyAgICAgICAgKFdlYkNvcmU6OlRleHRGaWVs
ZElucHV0VHlwZTo6cmVhZE9ubHlTdGF0ZUNoYW5nZWQpOiBSZW5hbWVkIGZyb20gcmVhZG9ubHlB
dHRyaWJ1dGVDaGFuZ2VkLgorICAgICAgICAqIGh0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmg6IFVw
ZGF0ZWQgZm9yIGNoYW5nZXMgYWJvdmUuIEFsc28gbWFkZSBhdHRyaWJ1dGVDaGFuZ2VkIG5vCisg
ICAgICAgIGxvbmdlciBiZSBtYXJrZWQgZmluYWwgc2luY2UgZGVyaXZlZCBjbGFzc2VzIG5vdyBv
dmVycmlkZSBpdC4KKworICAgICAgICAqIGh0bWwvc2hhZG93L1NsaWRlclRodW1iRWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTbGlkZXJUaHVtYkVsZW1lbnQ6OlNsaWRlclRodW1iRWxl
bWVudCk6IE1vdmVkIHNvbWUgZGF0YSBtZW1iZXIgaW5pdGlhbGl6YXRpb24KKyAgICAgICAgZnJv
bSB0aGlzIGNvbnN0cnVjdG9yIHRvIHRoZSBjbGFzcyBkZWZpbml0aW9uLgorICAgICAgICAoV2Vi
Q29yZTo6U2xpZGVyVGh1bWJFbGVtZW50Ojpob3N0RGlzYWJsZWRTdGF0ZUNoYW5nZWQpOiBSZW5h
bWVkIGZyb20gZGlzYWJsZWRBdHRyaWJ1dGVDaGFuZ2VkLgorICAgICAgICAqIGh0bWwvc2hhZG93
L1NsaWRlclRodW1iRWxlbWVudC5oOiBVcGRhdGVkIGZvciBjaGFuZ2VzIGFib3ZlIGFuZCBtYXJr
ZWQgbW9yZQorICAgICAgICBtZW1iZXIgZnVuY3Rpb25zIGZpbmFsLgorCiAyMDE4LTA1LTI2ICBa
YWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW0xGQ10gSW1wbGVtZW50
IG1hcmdpbiBjb21wdXRhdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1JhZGlv
QnV0dG9uR3JvdXBzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9SYWRpb0J1dHRvbkdyb3Vwcy5j
cHAKaW5kZXggNzc4YWIxYTY1MWMwY2YzMDVmZTJjNmVkOTVjYjc0N2JjZTYwNGI1OC4uYjgwN2Jl
ZmFkMzAzZjZjZjRjMTBjMjY2Zjk2NTg1NjVhMDgwZjhiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL1JhZGlvQnV0dG9uR3JvdXBzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
UmFkaW9CdXR0b25Hcm91cHMuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAwNywgMjAwOCwgMjAwOSwgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDctMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0
cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTMwLDEzICszMCwxMiBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiBjbGFzcyBSYWRpb0J1dHRvbkdyb3VwIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKIHB1YmxpYzoKLSAgICBSYWRpb0J1dHRvbkdyb3VwKCk7CiAgICAgYm9vbCBpc0VtcHR5
KCkgY29uc3QgeyByZXR1cm4gbV9tZW1iZXJzLmlzRW1wdHkoKTsgfQogICAgIGJvb2wgaXNSZXF1
aXJlZCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVxdWlyZWRDb3VudDsgfQogICAgIEhUTUxJbnB1dEVs
ZW1lbnQqIGNoZWNrZWRCdXR0b24oKSBjb25zdCB7IHJldHVybiBtX2NoZWNrZWRCdXR0b247IH0K
ICAgICB2b2lkIGFkZChIVE1MSW5wdXRFbGVtZW50Kik7CiAgICAgdm9pZCB1cGRhdGVDaGVja2Vk
U3RhdGUoSFRNTElucHV0RWxlbWVudCopOwotICAgIHZvaWQgcmVxdWlyZWRBdHRyaWJ1dGVDaGFu
Z2VkKEhUTUxJbnB1dEVsZW1lbnQqKTsKKyAgICB2b2lkIHJlcXVpcmVkU3RhdGVDaGFuZ2VkKEhU
TUxJbnB1dEVsZW1lbnQmKTsKICAgICB2b2lkIHJlbW92ZShIVE1MSW5wdXRFbGVtZW50Kik7CiAg
ICAgYm9vbCBjb250YWlucyhIVE1MSW5wdXRFbGVtZW50KikgY29uc3Q7CiAgICAgVmVjdG9yPEhU
TUxJbnB1dEVsZW1lbnQqPiBtZW1iZXJzKCkgY29uc3Q7CkBAIC00OSwxNiArNDgsMTAgQEAgcHJp
dmF0ZToKICAgICB2b2lkIHNldENoZWNrZWRCdXR0b24oSFRNTElucHV0RWxlbWVudCopOwogCiAg
ICAgSGFzaFNldDxIVE1MSW5wdXRFbGVtZW50Kj4gbV9tZW1iZXJzOwotICAgIEhUTUxJbnB1dEVs
ZW1lbnQqIG1fY2hlY2tlZEJ1dHRvbjsKLSAgICBzaXplX3QgbV9yZXF1aXJlZENvdW50OworICAg
IEhUTUxJbnB1dEVsZW1lbnQqIG1fY2hlY2tlZEJ1dHRvbiB7IG51bGxwdHIgfTsKKyAgICBzaXpl
X3QgbV9yZXF1aXJlZENvdW50IHsgMCB9OwogfTsKIAotUmFkaW9CdXR0b25Hcm91cDo6UmFkaW9C
dXR0b25Hcm91cCgpCi0gICAgOiBtX2NoZWNrZWRCdXR0b24obnVsbHB0cikKLSAgICAsIG1fcmVx
dWlyZWRDb3VudCgwKQotewotfQotCiBpbmxpbmUgYm9vbCBSYWRpb0J1dHRvbkdyb3VwOjppc1Zh
bGlkKCkgY29uc3QKIHsKICAgICByZXR1cm4gIWlzUmVxdWlyZWQoKSB8fCBtX2NoZWNrZWRCdXR0
b247CkBAIC0xMjMsMTIgKzExNiwxMiBAQCB2b2lkIFJhZGlvQnV0dG9uR3JvdXA6OnVwZGF0ZUNo
ZWNrZWRTdGF0ZShIVE1MSW5wdXRFbGVtZW50KiBidXR0b24pCiAgICAgICAgIHVwZGF0ZVZhbGlk
aXR5Rm9yQWxsQnV0dG9ucygpOwogfQogCi12b2lkIFJhZGlvQnV0dG9uR3JvdXA6OnJlcXVpcmVk
QXR0cmlidXRlQ2hhbmdlZChIVE1MSW5wdXRFbGVtZW50KiBidXR0b24pCit2b2lkIFJhZGlvQnV0
dG9uR3JvdXA6OnJlcXVpcmVkU3RhdGVDaGFuZ2VkKEhUTUxJbnB1dEVsZW1lbnQmIGJ1dHRvbikK
IHsKLSAgICBBU1NFUlQoYnV0dG9uLT5pc1JhZGlvQnV0dG9uKCkpOwotICAgIEFTU0VSVChtX21l
bWJlcnMuY29udGFpbnMoYnV0dG9uKSk7CisgICAgQVNTRVJUKGJ1dHRvbi5pc1JhZGlvQnV0dG9u
KCkpOworICAgIEFTU0VSVChtX21lbWJlcnMuY29udGFpbnMoJmJ1dHRvbikpOwogICAgIGJvb2wg
d2FzVmFsaWQgPSBpc1ZhbGlkKCk7Ci0gICAgaWYgKGJ1dHRvbi0+aXNSZXF1aXJlZCgpKQorICAg
IGlmIChidXR0b24uaXNSZXF1aXJlZCgpKQogICAgICAgICArK21fcmVxdWlyZWRDb3VudDsKICAg
ICBlbHNlIHsKICAgICAgICAgQVNTRVJUKG1fcmVxdWlyZWRDb3VudCk7CkBAIC0yNDgsMTcgKzI0
MSwxNyBAQCB2b2lkIFJhZGlvQnV0dG9uR3JvdXBzOjp1cGRhdGVDaGVja2VkU3RhdGUoSFRNTElu
cHV0RWxlbWVudCogZWxlbWVudCkKICAgICBncm91cC0+dXBkYXRlQ2hlY2tlZFN0YXRlKGVsZW1l
bnQpOwogfQogCi12b2lkIFJhZGlvQnV0dG9uR3JvdXBzOjpyZXF1aXJlZEF0dHJpYnV0ZUNoYW5n
ZWQoSFRNTElucHV0RWxlbWVudCogZWxlbWVudCkKK3ZvaWQgUmFkaW9CdXR0b25Hcm91cHM6OnJl
cXVpcmVkU3RhdGVDaGFuZ2VkKEhUTUxJbnB1dEVsZW1lbnQmIGVsZW1lbnQpCiB7Ci0gICAgQVNT
RVJUKGVsZW1lbnQtPmlzUmFkaW9CdXR0b24oKSk7Ci0gICAgaWYgKGVsZW1lbnQtPm5hbWUoKS5p
c0VtcHR5KCkpCisgICAgQVNTRVJUKGVsZW1lbnQuaXNSYWRpb0J1dHRvbigpKTsKKyAgICBpZiAo
ZWxlbWVudC5uYW1lKCkuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAgICAgQVNTRVJUKG1f
bmFtZVRvR3JvdXBNYXApOwogICAgIGlmICghbV9uYW1lVG9Hcm91cE1hcCkKICAgICAgICAgcmV0
dXJuOwotICAgIFJhZGlvQnV0dG9uR3JvdXAqIGdyb3VwID0gbV9uYW1lVG9Hcm91cE1hcC0+Z2V0
KGVsZW1lbnQtPm5hbWUoKS5pbXBsKCkpOworICAgIGF1dG8qIGdyb3VwID0gbV9uYW1lVG9Hcm91
cE1hcC0+Z2V0KGVsZW1lbnQubmFtZSgpLmltcGwoKSk7CiAgICAgQVNTRVJUKGdyb3VwKTsKLSAg
ICBncm91cC0+cmVxdWlyZWRBdHRyaWJ1dGVDaGFuZ2VkKGVsZW1lbnQpOworICAgIGdyb3VwLT5y
ZXF1aXJlZFN0YXRlQ2hhbmdlZChlbGVtZW50KTsKIH0KIAogSFRNTElucHV0RWxlbWVudCogUmFk
aW9CdXR0b25Hcm91cHM6OmNoZWNrZWRCdXR0b25Gb3JHcm91cChjb25zdCBBdG9taWNTdHJpbmcm
IG5hbWUpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vUmFkaW9CdXR0b25H
cm91cHMuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9SYWRpb0J1dHRvbkdyb3Vwcy5oCmluZGV4IDFl
NWE1OGQ1N2RhNzY4NWUxYzAxOGZkOTZhZmFmMjA3ZWYwMTMzNmEuLmRlOGEyMDhjNWE1OTcwYmMw
ODRjNWE1ODU3NjM3NTJhMjk4MTlhMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9S
YWRpb0J1dHRvbkdyb3Vwcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9SYWRpb0J1dHRvbkdy
b3Vwcy5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNywgMjAwOCwg
MjAwOSwgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMDctMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhp
cyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v
cgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMKQEAgLTM2LDcgKzM2LDcgQEAgcHVibGljOgogICAgIH5SYWRpb0J1dHRvbkdyb3Vw
cygpOwogICAgIHZvaWQgYWRkQnV0dG9uKEhUTUxJbnB1dEVsZW1lbnQqKTsKICAgICB2b2lkIHVw
ZGF0ZUNoZWNrZWRTdGF0ZShIVE1MSW5wdXRFbGVtZW50Kik7Ci0gICAgdm9pZCByZXF1aXJlZEF0
dHJpYnV0ZUNoYW5nZWQoSFRNTElucHV0RWxlbWVudCopOworICAgIHZvaWQgcmVxdWlyZWRTdGF0
ZUNoYW5nZWQoSFRNTElucHV0RWxlbWVudCYpOwogICAgIHZvaWQgcmVtb3ZlQnV0dG9uKEhUTUxJ
bnB1dEVsZW1lbnQqKTsKICAgICBIVE1MSW5wdXRFbGVtZW50KiBjaGVja2VkQnV0dG9uRm9yR3Jv
dXAoY29uc3QgQXRvbWljU3RyaW5nJiBncm91cE5hbWUpIGNvbnN0OwogICAgIGJvb2wgaGFzQ2hl
Y2tlZEJ1dHRvbihjb25zdCBIVE1MSW5wdXRFbGVtZW50KikgY29uc3Q7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0Jhc2VEYXRlQW5kVGltZUlucHV0VHlwZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0Jhc2VEYXRlQW5kVGltZUlucHV0VHlwZS5jcHAKaW5kZXggMzdmYzJmZWYw
YTEyMjA3NGJjOGYzNTVkOTUzOTI5MGE4ODMyYTVkMC4uOWVjOWEwYTEyYmJlZjgxZjJjYWI3NjQw
NWI2MTNiNTI1MGMyYzVjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9CYXNlRGF0
ZUFuZFRpbWVJbnB1dFR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvQmFzZURhdGVB
bmRUaW1lSW5wdXRUeXBlLmNwcApAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMp
IDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykg
MjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTYtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMgYXJlCkBAIC05NSw5ICs5NSwxMSBAQCBib29sIEJhc2VEYXRlQW5kVGlt
ZUlucHV0VHlwZTo6aXNTdGVwcGFibGUoKSBjb25zdAogICAgIHJldHVybiB0cnVlOwogfQogCi12
b2lkIEJhc2VEYXRlQW5kVGltZUlucHV0VHlwZTo6bWluT3JNYXhBdHRyaWJ1dGVDaGFuZ2VkKCkK
K3ZvaWQgQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlOjphdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1
YWxpZmllZE5hbWUmIG5hbWUpCiB7Ci0gICAgZWxlbWVudCgpLmludmFsaWRhdGVTdHlsZUZvclN1
YnRyZWUoKTsKKyAgICBpZiAobmFtZSA9PSBtYXhBdHRyIHx8IG5hbWUgPT0gbWluQXR0cikKKyAg
ICAgICAgZWxlbWVudCgpLmludmFsaWRhdGVTdHlsZUZvclN1YnRyZWUoKTsKKyAgICBJbnB1dFR5
cGU6OmF0dHJpYnV0ZUNoYW5nZWQobmFtZSk7CiB9CiAKIERlY2ltYWwgQmFzZURhdGVBbmRUaW1l
SW5wdXRUeXBlOjpwYXJzZVRvTnVtYmVyKGNvbnN0IFN0cmluZyYgc291cmNlLCBjb25zdCBEZWNp
bWFsJiBkZWZhdWx0VmFsdWUpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0Jhc2VEYXRlQW5kVGltZUlucHV0VHlwZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9CYXNlRGF0
ZUFuZFRpbWVJbnB1dFR5cGUuaAppbmRleCA4MzQwNTdkNGQ0YzBkZmE0ZGNlOTI1YTRhYjU0ZWI5
NGYwNTMzZDA4Li5mZDk2YzA3NjA0ZmQ5NTgwMjNlMmZkODI0NWI2MGI5NGMwNTM4NzgyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0Jhc2VEYXRlQW5kVGltZUlucHV0VHlwZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlLmgKQEAgLTY3
LDcgKzY3LDcgQEAgcHJpdmF0ZToKICAgICBib29sIHR5cGVNaXNtYXRjaCgpIGNvbnN0IG92ZXJy
aWRlOwogICAgIGJvb2wgdmFsdWVNaXNzaW5nKGNvbnN0IFN0cmluZyYpIGNvbnN0IG92ZXJyaWRl
OwogICAgIERlY2ltYWwgZGVmYXVsdFZhbHVlRm9yU3RlcFVwKCkgY29uc3Qgb3ZlcnJpZGU7Ci0g
ICAgdm9pZCBtaW5Pck1heEF0dHJpYnV0ZUNoYW5nZWQoKSBvdmVycmlkZTsKKyAgICB2b2lkIGF0
dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpIG92ZXJyaWRlOwogICAgIGJvb2wg
aXNTdGVwcGFibGUoKSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIFN0cmluZyBzZXJpYWxp
emVXaXRoTWlsbGlzZWNvbmRzKGRvdWJsZSkgY29uc3Q7CiAgICAgU3RyaW5nIGxvY2FsaXplVmFs
dWUoY29uc3QgU3RyaW5nJikgY29uc3Qgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0ZpbGVJbnB1dFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9GaWxlSW5w
dXRUeXBlLmNwcAppbmRleCAzZTU1YTA1ZTg5MzY2NTEzMjBlZTllYmZjOWM2YTk1OTU0MWRkMzdi
Li5hOTcyNDYxYzdkYmViN2I5NjFkNTZkYjEzNDg4MjhjZmRmNzk5M2NhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0ZpbGVJbnB1dFR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvRmlsZUlucHV0VHlwZS5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDA0LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDA0LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29w
eXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
VGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu
ZC9vcgpAQCAtMjgxLDcgKzI4MSw3IEBAIHZvaWQgRmlsZUlucHV0VHlwZTo6Y3JlYXRlU2hhZG93
U3VidHJlZSgpCiAgICAgZWxlbWVudCgpLnVzZXJBZ2VudFNoYWRvd1Jvb3QoKS0+YXBwZW5kQ2hp
bGQoZWxlbWVudCgpLm11bHRpcGxlKCkgPyBVcGxvYWRCdXR0b25FbGVtZW50OjpjcmVhdGVGb3JN
dWx0aXBsZShlbGVtZW50KCkuZG9jdW1lbnQoKSk6IFVwbG9hZEJ1dHRvbkVsZW1lbnQ6OmNyZWF0
ZShlbGVtZW50KCkuZG9jdW1lbnQoKSkpOwogfQogCi12b2lkIEZpbGVJbnB1dFR5cGU6OmRpc2Fi
bGVkQXR0cmlidXRlQ2hhbmdlZCgpCit2b2lkIEZpbGVJbnB1dFR5cGU6OmRpc2FibGVkU3RhdGVD
aGFuZ2VkKCkKIHsKICAgICBBU1NFUlQoZWxlbWVudCgpLnNoYWRvd1Jvb3QoKSk7CiAKQEAgLTI5
MywxNiArMjkzLDE2IEBAIHZvaWQgRmlsZUlucHV0VHlwZTo6ZGlzYWJsZWRBdHRyaWJ1dGVDaGFu
Z2VkKCkKICAgICAgICAgYnV0dG9uLT5zZXRCb29sZWFuQXR0cmlidXRlKGRpc2FibGVkQXR0ciwg
ZWxlbWVudCgpLmlzRGlzYWJsZWRGb3JtQ29udHJvbCgpKTsKIH0KIAotdm9pZCBGaWxlSW5wdXRU
eXBlOjptdWx0aXBsZUF0dHJpYnV0ZUNoYW5nZWQoKQordm9pZCBGaWxlSW5wdXRUeXBlOjphdHRy
aWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUpCiB7Ci0gICAgQVNTRVJUKGVs
ZW1lbnQoKS5zaGFkb3dSb290KCkpOwotCi0gICAgYXV0byByb290ID0gZWxlbWVudCgpLnVzZXJB
Z2VudFNoYWRvd1Jvb3QoKTsKLSAgICBpZiAoIXJvb3QpCi0gICAgICAgIHJldHVybjsKLQotICAg
IGlmIChhdXRvIGJ1dHRvbiA9IG1ha2VSZWZQdHIoY2hpbGRyZW5PZlR5cGU8VXBsb2FkQnV0dG9u
RWxlbWVudD4oKnJvb3QpLmZpcnN0KCkpKQotICAgICAgICBidXR0b24tPnNldFZhbHVlKGVsZW1l
bnQoKS5tdWx0aXBsZSgpID8gZmlsZUJ1dHRvbkNob29zZU11bHRpcGxlRmlsZXNMYWJlbCgpIDog
ZmlsZUJ1dHRvbkNob29zZUZpbGVMYWJlbCgpKTsKKyAgICBpZiAobmFtZSA9PSBtdWx0aXBsZUF0
dHIpIHsKKyAgICAgICAgQVNTRVJUKGVsZW1lbnQoKS5zaGFkb3dSb290KCkpOworICAgICAgICBp
ZiAoYXV0byByb290ID0gZWxlbWVudCgpLnVzZXJBZ2VudFNoYWRvd1Jvb3QoKSkgeworICAgICAg
ICAgICAgaWYgKGF1dG8gYnV0dG9uID0gbWFrZVJlZlB0cihjaGlsZHJlbk9mVHlwZTxVcGxvYWRC
dXR0b25FbGVtZW50Pigqcm9vdCkuZmlyc3QoKSkpCisgICAgICAgICAgICAgICAgYnV0dG9uLT5z
ZXRWYWx1ZShlbGVtZW50KCkubXVsdGlwbGUoKSA/IGZpbGVCdXR0b25DaG9vc2VNdWx0aXBsZUZp
bGVzTGFiZWwoKSA6IGZpbGVCdXR0b25DaG9vc2VGaWxlTGFiZWwoKSk7CisgICAgICAgIH0KKyAg
ICB9CisgICAgQmFzZUNsaWNrYWJsZVdpdGhLZXlJbnB1dFR5cGU6OmF0dHJpYnV0ZUNoYW5nZWQo
bmFtZSk7CiB9CiAKIHZvaWQgRmlsZUlucHV0VHlwZTo6cmVxdWVzdEljb24oY29uc3QgVmVjdG9y
PFN0cmluZz4mIHBhdGhzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9GaWxlSW5w
dXRUeXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZpbGVJbnB1dFR5cGUuaAppbmRleCAxYWJi
Y2VkYzI1ZDcxYzczZDI5NDRhYTBjZmM5MWM3YjczOTYzZDdiLi5jNTgyY2FjZjFiMmU5NDY3MDZk
YzliNDc0ZWYwZWUzOGM0ZGM4M2I2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zp
bGVJbnB1dFR5cGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZpbGVJbnB1dFR5cGUuaApA
QCAtMSw2ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAxOCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCkBA
IC03Niw4ICs3Niw4IEBAIHByaXZhdGU6CiAgICAgSWNvbiogaWNvbigpIGNvbnN0IGZpbmFsOwog
ICAgIGJvb2wgaXNGaWxlVXBsb2FkKCkgY29uc3QgZmluYWw7CiAgICAgdm9pZCBjcmVhdGVTaGFk
b3dTdWJ0cmVlKCkgZmluYWw7Ci0gICAgdm9pZCBkaXNhYmxlZEF0dHJpYnV0ZUNoYW5nZWQoKSBm
aW5hbDsKLSAgICB2b2lkIG11bHRpcGxlQXR0cmlidXRlQ2hhbmdlZCgpIGZpbmFsOworICAgIHZv
aWQgZGlzYWJsZWRTdGF0ZUNoYW5nZWQoKSBmaW5hbDsKKyAgICB2b2lkIGF0dHJpYnV0ZUNoYW5n
ZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpIGZpbmFsOwogICAgIFN0cmluZyBkZWZhdWx0VG9vbFRp
cCgpIGNvbnN0IGZpbmFsOwogCiAgICAgdm9pZCBmaWxlc0Nob3Nlbihjb25zdCBWZWN0b3I8Rmls
ZUNob29zZXJGaWxlSW5mbz4mLCBjb25zdCBTdHJpbmcmIGRpc3BsYXlTdHJpbmcgPSB7IH0sIElj
b24qID0gbnVsbHB0cikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNv
bnRyb2xFbGVtZW50LmNwcAppbmRleCA5ZTRjODMxZDI4YzJlYWE0NjNhNjI5YmUzY2Q5OGNiNTU2
YTZhZGQyLi5hYmViMzg1OGU5OTc1NzE4NDEzYTRhYzk1ZDk3NjkyODc0MjhiYWYyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHAKQEAgLTIsNyAr
Miw3IEBACiAgKiBDb3B5cmlnaHQgKEMpIDE5OTkgTGFycyBLbm9sbCAoa25vbGxAa2RlLm9yZykK
ICAqICAgICAgICAgICAoQykgMTk5OSBBbnR0aSBLb2l2aXN0byAoa29pdmlzdG9Aa2RlLm9yZykK
ICAqICAgICAgICAgICAoQykgMjAwMSBEaXJrIE11ZWxsZXIgKG11ZWxsZXJAa2RlLm9yZykKLSAq
IENvcHlyaWdodCAoQykgMjAwNC0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAwNC0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqICAgICAgICAgICAoQykgMjAwNiBBbGV4ZXkgUHJvc2t1cnlha292IChhcEBueXBvcC5j
b20pCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0
cmlidXRlIGl0IGFuZC9vcgpAQCAtMTU5LDEyICsxNTksMTIgQEAgdm9pZCBIVE1MRm9ybUNvbnRy
b2xFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25z
dCBBdG8KICAgICAgICAgYm9vbCB3YXNSZWFkT25seSA9IG1faXNSZWFkT25seTsKICAgICAgICAg
bV9pc1JlYWRPbmx5ID0gIXZhbHVlLmlzTnVsbCgpOwogICAgICAgICBpZiAod2FzUmVhZE9ubHkg
IT0gbV9pc1JlYWRPbmx5KQotICAgICAgICAgICAgcmVhZE9ubHlBdHRyaWJ1dGVDaGFuZ2VkKCk7
CisgICAgICAgICAgICByZWFkT25seVN0YXRlQ2hhbmdlZCgpOwogICAgIH0gZWxzZSBpZiAobmFt
ZSA9PSByZXF1aXJlZEF0dHIpIHsKICAgICAgICAgYm9vbCB3YXNSZXF1aXJlZCA9IG1faXNSZXF1
aXJlZDsKICAgICAgICAgbV9pc1JlcXVpcmVkID0gIXZhbHVlLmlzTnVsbCgpOwogICAgICAgICBp
ZiAod2FzUmVxdWlyZWQgIT0gbV9pc1JlcXVpcmVkKQotICAgICAgICAgICAgcmVxdWlyZWRBdHRy
aWJ1dGVDaGFuZ2VkKCk7CisgICAgICAgICAgICByZXF1aXJlZFN0YXRlQ2hhbmdlZCgpOwogICAg
IH0gZWxzZQogICAgICAgICBIVE1MRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUobmFtZSwgdmFsdWUp
OwogfQpAQCAtMTgyLDEzICsxODIsMTMgQEAgdm9pZCBIVE1MRm9ybUNvbnRyb2xFbGVtZW50Ojpk
aXNhYmxlZFN0YXRlQ2hhbmdlZCgpCiAgICAgICAgIHJlbmRlcmVyKCktPnRoZW1lKCkuc3RhdGVD
aGFuZ2VkKCpyZW5kZXJlcigpLCBDb250cm9sU3RhdGVzOjpFbmFibGVkU3RhdGUpOwogfQogCi12
b2lkIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OnJlYWRPbmx5QXR0cmlidXRlQ2hhbmdlZCgpCit2
b2lkIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OnJlYWRPbmx5U3RhdGVDaGFuZ2VkKCkKIHsKICAg
ICBzZXROZWVkc1dpbGxWYWxpZGF0ZUNoZWNrKCk7CiAgICAgaW52YWxpZGF0ZVN0eWxlRm9yU3Vi
dHJlZSgpOwogfQogCi12b2lkIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OnJlcXVpcmVkQXR0cmli
dXRlQ2hhbmdlZCgpCit2b2lkIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OnJlcXVpcmVkU3RhdGVD
aGFuZ2VkKCkKIHsKICAgICB1cGRhdGVWYWxpZGl0eSgpOwogICAgIC8vIFN0eWxlIHJlY2FsY3Vs
YXRpb24gaXMgbmVlZGVkIGJlY2F1c2Ugc3R5bGUgc2VsZWN0b3JzIG1heSBpbmNsdWRlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5oCmluZGV4IGZiZjIyNWQ0
N2QyMTIwMjc2MGRjNTc4YmExMTFkMDM5MmFjODY3ODcuLmQ4NzY1NzNhMjk4YjJkNmNlYjdkZTkx
NTFhODFjYTJkNDVjNDVlNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZv
cm1Db250cm9sRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250
cm9sRWxlbWVudC5oCkBAIC0yLDcgKzIsNyBAQAogICogQ29weXJpZ2h0IChDKSAxOTk5IExhcnMg
S25vbGwgKGtub2xsQGtkZS5vcmcpCiAgKiAgICAgICAgICAgKEMpIDE5OTkgQW50dGkgS29pdmlz
dG8gKGtvaXZpc3RvQGtkZS5vcmcpCiAgKiAgICAgICAgICAgKEMpIDIwMDAgRGlyayBNdWVsbGVy
IChtdWVsbGVyQGtkZS5vcmcpCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDQtMjAxNyBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQtMjAxOCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29m
dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVy
IHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTEzMyw4ICsx
MzMsOCBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZp
ZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lk
IGRpc2FibGVkQXR0cmlidXRlQ2hhbmdlZCgpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNhYmxlZFN0
YXRlQ2hhbmdlZCgpOwotICAgIHZpcnR1YWwgdm9pZCByZWFkT25seUF0dHJpYnV0ZUNoYW5nZWQo
KTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVxdWlyZWRBdHRyaWJ1dGVDaGFuZ2VkKCk7CisgICAgdmly
dHVhbCB2b2lkIHJlYWRPbmx5U3RhdGVDaGFuZ2VkKCk7CisgICAgdmlydHVhbCB2b2lkIHJlcXVp
cmVkU3RhdGVDaGFuZ2VkKCk7CiAgICAgdm9pZCBkaWRBdHRhY2hSZW5kZXJlcnMoKSBvdmVycmlk
ZTsKICAgICBJbnNlcnRlZEludG9BbmNlc3RvclJlc3VsdCBpbnNlcnRlZEludG9BbmNlc3RvcihJ
bnNlcnRpb25UeXBlLCBDb250YWluZXJOb2RlJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRGaW5p
c2hJbnNlcnRpbmdOb2RlKCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRF
bGVtZW50LmNwcAppbmRleCA3MmM2ZmM3NDAzZTA5ZDE5MmE0MzZmNmY2YWQ1MDYxNmE0OTgxZTc5
Li5kMjIwNzM0MTliNTRmNDE0NzEyOGExMTk1ODEyYjcwZWE3OTgzYzk1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKQEAgLTc0OSw0MiArNzQ5LDEyIEBAIHZvaWQg
SFRNTElucHV0RWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFt
ZSwgY29uc3QgQXRvbWljU3RyCiAgICAgICAgIG1fc2l6ZSA9IGxpbWl0VG9Pbmx5SFRNTE5vbk5l
Z2F0aXZlTnVtYmVyc0dyZWF0ZXJUaGFuWmVybyh2YWx1ZSwgZGVmYXVsdFNpemUpOwogICAgICAg
ICBpZiAobV9zaXplICE9IG9sZFNpemUgJiYgcmVuZGVyZXIoKSkKICAgICAgICAgICAgIHJlbmRl
cmVyKCktPnNldE5lZWRzTGF5b3V0QW5kUHJlZldpZHRoc1JlY2FsYygpOwotICAgIH0gZWxzZSBp
ZiAobmFtZSA9PSBhbHRBdHRyKQotICAgICAgICBtX2lucHV0VHlwZS0+YWx0QXR0cmlidXRlQ2hh
bmdlZCgpOwotICAgIGVsc2UgaWYgKG5hbWUgPT0gc3JjQXR0cikKLSAgICAgICAgbV9pbnB1dFR5
cGUtPnNyY0F0dHJpYnV0ZUNoYW5nZWQoKTsKLSAgICBlbHNlIGlmIChuYW1lID09IHVzZW1hcEF0
dHIgfHwgbmFtZSA9PSBhY2Nlc3NrZXlBdHRyKSB7Ci0gICAgICAgIC8vIEZJWE1FOiBpZ25vcmUg
Zm9yIHRoZSBtb21lbnQKLSAgICB9IGVsc2UgaWYgKG5hbWUgPT0gcmVzdWx0c0F0dHIpIHsKKyAg
ICB9IGVsc2UgaWYgKG5hbWUgPT0gcmVzdWx0c0F0dHIpCiAgICAgICAgIG1fbWF4UmVzdWx0cyA9
ICF2YWx1ZS5pc051bGwoKSA/IHN0ZDo6bWluKHZhbHVlLnRvSW50KCksIG1heFNhdmVkUmVzdWx0
cykgOiAtMTsKLSAgICAgICAgbV9pbnB1dFR5cGUtPm1heFJlc3VsdHNBdHRyaWJ1dGVDaGFuZ2Vk
KCk7Ci0gICAgfSBlbHNlIGlmIChuYW1lID09IGF1dG9zYXZlQXR0cikgeworICAgIGVsc2UgaWYg
KG5hbWUgPT0gYXV0b3NhdmVBdHRyIHx8IG5hbWUgPT0gaW5jcmVtZW50YWxBdHRyKQogICAgICAg
ICBpbnZhbGlkYXRlU3R5bGVGb3JTdWJ0cmVlKCk7Ci0gICAgfSBlbHNlIGlmIChuYW1lID09IGlu
Y3JlbWVudGFsQXR0cikgewotICAgICAgICBpbnZhbGlkYXRlU3R5bGVGb3JTdWJ0cmVlKCk7Ci0g
ICAgfSBlbHNlIGlmIChuYW1lID09IG1pbkF0dHIpIHsKLSAgICAgICAgbV9pbnB1dFR5cGUtPm1p
bk9yTWF4QXR0cmlidXRlQ2hhbmdlZCgpOwotICAgICAgICB1cGRhdGVWYWxpZGl0eSgpOwotICAg
IH0gZWxzZSBpZiAobmFtZSA9PSBtYXhBdHRyKSB7Ci0gICAgICAgIG1faW5wdXRUeXBlLT5taW5P
ck1heEF0dHJpYnV0ZUNoYW5nZWQoKTsKLSAgICAgICAgdXBkYXRlVmFsaWRpdHkoKTsKLSAgICB9
IGVsc2UgaWYgKG5hbWUgPT0gbXVsdGlwbGVBdHRyKSB7Ci0gICAgICAgIG1faW5wdXRUeXBlLT5t
dWx0aXBsZUF0dHJpYnV0ZUNoYW5nZWQoKTsKLSAgICAgICAgdXBkYXRlVmFsaWRpdHkoKTsKLSAg
ICB9IGVsc2UgaWYgKG5hbWUgPT0gc3RlcEF0dHIpIHsKLSAgICAgICAgbV9pbnB1dFR5cGUtPnN0
ZXBBdHRyaWJ1dGVDaGFuZ2VkKCk7CisgICAgZWxzZSBpZiAobmFtZSA9PSBtYXhBdHRyIHx8IG5h
bWUgPT0gbWluQXR0ciB8fCBuYW1lID09IG11bHRpcGxlQXR0ciB8fCBuYW1lID09IHBhdHRlcm5B
dHRyIHx8IG5hbWUgPT0gcHJlY2lzaW9uQXR0ciB8fCBuYW1lID09IHN0ZXBBdHRyKQogICAgICAg
ICB1cGRhdGVWYWxpZGl0eSgpOwotICAgIH0gZWxzZSBpZiAobmFtZSA9PSBwYXR0ZXJuQXR0cikg
ewotICAgICAgICB1cGRhdGVWYWxpZGl0eSgpOwotICAgIH0gZWxzZSBpZiAobmFtZSA9PSBwcmVj
aXNpb25BdHRyKSB7Ci0gICAgICAgIHVwZGF0ZVZhbGlkaXR5KCk7Ci0gICAgfSBlbHNlIGlmIChu
YW1lID09IGRpc2FibGVkQXR0cikgewotICAgICAgICBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVu
dDo6cGFyc2VBdHRyaWJ1dGUobmFtZSwgdmFsdWUpOwotICAgICAgICBtX2lucHV0VHlwZS0+ZGlz
YWJsZWRBdHRyaWJ1dGVDaGFuZ2VkKCk7Ci0gICAgfSBlbHNlIGlmIChuYW1lID09IHJlYWRvbmx5
QXR0cikgewotICAgICAgICBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudDo6cGFyc2VBdHRyaWJ1
dGUobmFtZSwgdmFsdWUpOwotICAgICAgICBtX2lucHV0VHlwZS0+cmVhZG9ubHlBdHRyaWJ1dGVD
aGFuZ2VkKCk7Ci0gICAgfQogI2lmIEVOQUJMRShEQVRBTElTVF9FTEVNRU5UKQogICAgIGVsc2Ug
aWYgKG5hbWUgPT0gbGlzdEF0dHIpIHsKICAgICAgICAgbV9oYXNOb25FbXB0eUxpc3QgPSAhdmFs
dWUuaXNFbXB0eSgpOwpAQCAtODAwLDYgKzc3MCwxOCBAQCB2b2lkIEhUTUxJbnB1dEVsZW1lbnQ6
OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0
cgogICAgIG1faW5wdXRUeXBlLT5hdHRyaWJ1dGVDaGFuZ2VkKG5hbWUpOwogfQogCit2b2lkIEhU
TUxJbnB1dEVsZW1lbnQ6OmRpc2FibGVkU3RhdGVDaGFuZ2VkKCkKK3sKKyAgICBIVE1MVGV4dEZv
cm1Db250cm9sRWxlbWVudDo6ZGlzYWJsZWRTdGF0ZUNoYW5nZWQoKTsKKyAgICBtX2lucHV0VHlw
ZS0+ZGlzYWJsZWRTdGF0ZUNoYW5nZWQoKTsKK30KKwordm9pZCBIVE1MSW5wdXRFbGVtZW50Ojpy
ZWFkT25seVN0YXRlQ2hhbmdlZCgpCit7CisgICAgSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6
OnJlYWRPbmx5U3RhdGVDaGFuZ2VkKCk7CisgICAgbV9pbnB1dFR5cGUtPnJlYWRPbmx5U3RhdGVD
aGFuZ2VkKCk7Cit9CisKIHZvaWQgSFRNTElucHV0RWxlbWVudDo6cGFyc2VyRGlkU2V0QXR0cmli
dXRlcygpCiB7CiAgICAgQVNTRVJUKG1fcGFyc2luZ0luUHJvZ3Jlc3MpOwpAQCAtMTU5NSwxMiAr
MTU3NywxMiBAQCBib29sIEhUTUxJbnB1dEVsZW1lbnQ6OmNvbXB1dGVXaWxsVmFsaWRhdGUoKSBj
b25zdAogICAgIHJldHVybiBtX2lucHV0VHlwZS0+c3VwcG9ydHNWYWxpZGF0aW9uKCkgJiYgSFRN
TFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OmNvbXB1dGVXaWxsVmFsaWRhdGUoKTsKIH0KIAotdm9p
ZCBIVE1MSW5wdXRFbGVtZW50OjpyZXF1aXJlZEF0dHJpYnV0ZUNoYW5nZWQoKQordm9pZCBIVE1M
SW5wdXRFbGVtZW50OjpyZXF1aXJlZFN0YXRlQ2hhbmdlZCgpCiB7Ci0gICAgSFRNTFRleHRGb3Jt
Q29udHJvbEVsZW1lbnQ6OnJlcXVpcmVkQXR0cmlidXRlQ2hhbmdlZCgpOwotICAgIGlmIChSYWRp
b0J1dHRvbkdyb3VwcyogYnV0dG9ucyA9IHJhZGlvQnV0dG9uR3JvdXBzKCkpCi0gICAgICAgIGJ1
dHRvbnMtPnJlcXVpcmVkQXR0cmlidXRlQ2hhbmdlZCh0aGlzKTsKLSAgICBtX2lucHV0VHlwZS0+
cmVxdWlyZWRBdHRyaWJ1dGVDaGFuZ2VkKCk7CisgICAgSFRNTFRleHRGb3JtQ29udHJvbEVsZW1l
bnQ6OnJlcXVpcmVkU3RhdGVDaGFuZ2VkKCk7CisgICAgaWYgKGF1dG8qIGJ1dHRvbnMgPSByYWRp
b0J1dHRvbkdyb3VwcygpKQorICAgICAgICBidXR0b25zLT5yZXF1aXJlZFN0YXRlQ2hhbmdlZCgq
dGhpcyk7CisgICAgbV9pbnB1dFR5cGUtPnJlcXVpcmVkU3RhdGVDaGFuZ2VkKCk7CiB9CiAKIENv
bG9yIEhUTUxJbnB1dEVsZW1lbnQ6OnZhbHVlQXNDb2xvcigpIGNvbnN0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTElucHV0RWxlbWVudC5oCmluZGV4IGFjMWM4MWM3ODQ0Y2QzYzg0NmE2Mjk3Y2UzYjYy
OGYwMmFkMjYwYzMuLjA1OGJkNjZhMDAwOWFkOTgzODQ1ZThmY2UzZGVkYjFlYjBmMDM5NzkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5oCkBAIC0yLDcgKzIsNyBAQAogICog
Q29weXJpZ2h0IChDKSAxOTk5IExhcnMgS25vbGwgKGtub2xsQGtkZS5vcmcpCiAgKiAgICAgICAg
ICAgKEMpIDE5OTkgQW50dGkgS29pdmlzdG8gKGtvaXZpc3RvQGtkZS5vcmcpCiAgKiAgICAgICAg
ICAgKEMpIDIwMDAgRGlyayBNdWVsbGVyIChtdWVsbGVyQGtkZS5vcmcpCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMDQtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMDQtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5
cmlnaHQgKEMpIDIwMTIgU2Ftc3VuZyBFbGVjdHJvbmljcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1
dGUgaXQgYW5kL29yCkBAIC00MjgsMTMgKzQyOCwxNSBAQCBwcml2YXRlOgogICAgIGJvb2wgaXNP
cHRpb25hbEZvcm1Db250cm9sKCkgY29uc3QgZmluYWwgeyByZXR1cm4gIWlzUmVxdWlyZWRGb3Jt
Q29udHJvbCgpOyB9CiAgICAgYm9vbCBpc1JlcXVpcmVkRm9ybUNvbnRyb2woKSBjb25zdCBmaW5h
bDsKICAgICBib29sIGNvbXB1dGVXaWxsVmFsaWRhdGUoKSBjb25zdCBmaW5hbDsKLSAgICB2b2lk
IHJlcXVpcmVkQXR0cmlidXRlQ2hhbmdlZCgpIGZpbmFsOworICAgIHZvaWQgcmVxdWlyZWRTdGF0
ZUNoYW5nZWQoKSBmaW5hbDsKIAogICAgIHZvaWQgaW5pdGlhbGl6ZUlucHV0VHlwZSgpOwogICAg
IHZvaWQgdXBkYXRlVHlwZSgpOwogICAgIHZvaWQgcnVuUG9zdFR5cGVVcGRhdGVUYXNrcygpOwot
ICAgIAorCiAgICAgdm9pZCBzdWJ0cmVlSGFzQ2hhbmdlZCgpIGZpbmFsOworICAgIHZvaWQgZGlz
YWJsZWRTdGF0ZUNoYW5nZWQoKSBmaW5hbDsKKyAgICB2b2lkIHJlYWRPbmx5U3RhdGVDaGFuZ2Vk
KCkgZmluYWw7CiAKICNpZiBFTkFCTEUoREFUQUxJU1RfRUxFTUVOVCkKICAgICB2b2lkIHJlc2V0
TGlzdEF0dHJpYnV0ZVRhcmdldE9ic2VydmVyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuY3BwCmluZGV4IDk4M2JlYTBlY2I3ZTI0MmI4
ZjQ0ZjM5MDJkNmQ0N2QyMzZiZmZlYzkuLjVjOWIwNDk3ZTk4Zjg0NzBlNjkzOTgzOTIxNDQ2Yzk0
NTllMWNjZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRGb3JtQ29u
dHJvbEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRGb3JtQ29u
dHJvbEVsZW1lbnQuY3BwCkBAIC0yLDcgKzIsNyBAQAogICogQ29weXJpZ2h0IChDKSAxOTk5IExh
cnMgS25vbGwgKGtub2xsQGtkZS5vcmcpCiAgKiAgICAgICAgICAgKEMpIDE5OTkgQW50dGkgS29p
dmlzdG8gKGtvaXZpc3RvQGtkZS5vcmcpCiAgKiAgICAgICAgICAgKEMpIDIwMDEgRGlyayBNdWVs
bGVyIChtdWVsbGVyQGtkZS5vcmcpCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDQtMjAxNyBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQtMjAxOCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiAgICAgICAgICAgKEMpIDIwMDYgQWxleGV5
IFByb3NrdXJ5YWtvdiAoYXBAbnlwb3AuY29tKQogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVl
IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKQEAgLTUwOCw5ICs1MDgs
OSBAQCB2b2lkIEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50OjpkaXNhYmxlZFN0YXRlQ2hhbmdl
ZCgpCiAgICAgdXBkYXRlSW5uZXJUZXh0RWxlbWVudEVkaXRhYmlsaXR5KCk7CiB9CiAKLXZvaWQg
SFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OnJlYWRPbmx5QXR0cmlidXRlQ2hhbmdlZCgpCit2
b2lkIEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50OjpyZWFkT25seVN0YXRlQ2hhbmdlZCgpCiB7
Ci0gICAgSFRNTEZvcm1Db250cm9sRWxlbWVudFdpdGhTdGF0ZTo6ZGlzYWJsZWRBdHRyaWJ1dGVD
aGFuZ2VkKCk7CisgICAgSFRNTEZvcm1Db250cm9sRWxlbWVudFdpdGhTdGF0ZTo6cmVhZE9ubHlT
dGF0ZUNoYW5nZWQoKTsKICAgICB1cGRhdGVJbm5lclRleHRFbGVtZW50RWRpdGFiaWxpdHkoKTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZvcm1Db250cm9s
RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVu
dC5oCmluZGV4IDdlODMwM2NhN2VjODUxNjhlMDdiZWM4NzA3NzY0Mzg3YmIzYWRhYzguLjFjMzkx
YjNjMTQ4NmZkNmYwNzlkMjNkN2Q1ZWU5NmIwZTRlZDFmYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmgKQEAgLTIsNyArMiw3IEBACiAg
KiBDb3B5cmlnaHQgKEMpIDE5OTkgTGFycyBLbm9sbCAoa25vbGxAa2RlLm9yZykKICAqICAgICAg
ICAgICAoQykgMTk5OSBBbnR0aSBLb2l2aXN0byAoa29pdmlzdG9Aa2RlLm9yZykKICAqICAgICAg
ICAgICAoQykgMjAwMCBEaXJrIE11ZWxsZXIgKG11ZWxsZXJAa2RlLm9yZykKLSAqIENvcHlyaWdo
dCAoQykgMjAwNC0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAwNC0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENv
cHlyaWdodCAoQykgMjAwOSwgMjAxMCwgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz
dHJpYnV0ZSBpdCBhbmQvb3IKQEAgLTEwNiw3ICsxMDYsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9p
ZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5n
Jikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGRpc2FibGVkU3RhdGVDaGFuZ2VkKCkgb3ZlcnJpZGU7
Ci0gICAgdm9pZCByZWFkT25seUF0dHJpYnV0ZUNoYW5nZWQoKSBvdmVycmlkZTsKKyAgICB2b2lk
IHJlYWRPbmx5U3RhdGVDaGFuZ2VkKCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBib29sIGlzSW5u
ZXJUZXh0RWxlbWVudEVkaXRhYmxlKCkgY29uc3Q7CiAgICAgdm9pZCB1cGRhdGVJbm5lclRleHRF
bGVtZW50RWRpdGFiaWxpdHkoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9J
bWFnZUlucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlSW5wdXRUeXBlLmNw
cAppbmRleCBmYzRjMGRiZDJkZjU2NGI5OTU2ZjE2MTVlNDg0ZDY3ZjZmODhhM2UyLi42YjViZTQ5
ZjgxOGQyZTdjZDc5ZjFiMzlkYmMxY2YyMzEyZTA3ZTQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0ltYWdlSW5wdXRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0lt
YWdlSW5wdXRUeXBlLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MDQtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMDQtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQg
KEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAo
QykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKQEAg
LTExNywyMiArMTE3LDE4IEBAIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBJbWFnZUlucHV0VHlw
ZTo6Y3JlYXRlSW5wdXRSZW5kZXJlcihSZW5kZXJTdHlsZSYmIHN0eWxlCiAgICAgcmV0dXJuIGNy
ZWF0ZVJlbmRlcmVyPFJlbmRlckltYWdlPihlbGVtZW50KCksIFdURk1vdmUoc3R5bGUpKTsKIH0K
IAotdm9pZCBJbWFnZUlucHV0VHlwZTo6YWx0QXR0cmlidXRlQ2hhbmdlZCgpCit2b2lkIEltYWdl
SW5wdXRUeXBlOjphdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUpCiB7
Ci0gICAgaWYgKCFpczxSZW5kZXJJbWFnZT4oZWxlbWVudCgpLnJlbmRlcmVyKCkpKQotICAgICAg
ICByZXR1cm47Ci0KLSAgICBhdXRvKiByZW5kZXJlciA9IGRvd25jYXN0PFJlbmRlckltYWdlPihl
bGVtZW50KCkucmVuZGVyZXIoKSk7Ci0gICAgaWYgKCFyZW5kZXJlcikKLSAgICAgICAgcmV0dXJu
OwotICAgIHJlbmRlcmVyLT51cGRhdGVBbHRUZXh0KCk7Ci19Ci0KLXZvaWQgSW1hZ2VJbnB1dFR5
cGU6OnNyY0F0dHJpYnV0ZUNoYW5nZWQoKQotewotICAgIGlmICghZWxlbWVudCgpLnJlbmRlcmVy
KCkpCi0gICAgICAgIHJldHVybjsKLSAgICBlbGVtZW50KCkuZW5zdXJlSW1hZ2VMb2FkZXIoKS51
cGRhdGVGcm9tRWxlbWVudElnbm9yaW5nUHJldmlvdXNFcnJvcigpOworICAgIGlmIChuYW1lID09
IGFsdEF0dHIpIHsKKyAgICAgICAgYXV0byogcmVuZGVyZXIgPSBlbGVtZW50KCkucmVuZGVyZXIo
KTsKKyAgICAgICAgaWYgKGlzPFJlbmRlckltYWdlPihyZW5kZXJlcikpCisgICAgICAgICAgICBk
b3duY2FzdDxSZW5kZXJJbWFnZT4oKnJlbmRlcmVyKS51cGRhdGVBbHRUZXh0KCk7CisgICAgfSBl
bHNlIGlmIChuYW1lID09IHNyY0F0dHIpIHsKKyAgICAgICAgYXV0byYgZWxlbWVudCA9IHRoaXMt
PmVsZW1lbnQoKTsKKyAgICAgICAgaWYgKGVsZW1lbnQucmVuZGVyZXIoKSkKKyAgICAgICAgICAg
IGVsZW1lbnQuZW5zdXJlSW1hZ2VMb2FkZXIoKS51cGRhdGVGcm9tRWxlbWVudElnbm9yaW5nUHJl
dmlvdXNFcnJvcigpOworICAgIH0KKyAgICBCYXNlQnV0dG9uSW5wdXRUeXBlOjphdHRyaWJ1dGVD
aGFuZ2VkKG5hbWUpOwogfQogCiB2b2lkIEltYWdlSW5wdXRUeXBlOjphdHRhY2goKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZUlucHV0VHlwZS5oIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9JbWFnZUlucHV0VHlwZS5oCmluZGV4IGM3ZTBlODQ4N2YzNGJhMjI2ODM5OThjM2I5
NzViNWMyY2NmYTBkMTIuLjBlMzFkY2Y4NDlkZmU2M2FmMDMzOWQ3MTJmMzczNmU3ODMxYmQ2YTYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VJbnB1dFR5cGUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlSW5wdXRUeXBlLmgKQEAgLTEsNiArMSw2IEBACiAvKgog
ICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDExLTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICogQ29weXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC00MiwyMiArNDIsMjEgQEAgcHVibGljOgogICAg
IGV4cGxpY2l0IEltYWdlSW5wdXRUeXBlKEhUTUxJbnB1dEVsZW1lbnQmKTsKIAogcHJpdmF0ZToK
LSAgICBjb25zdCBBdG9taWNTdHJpbmcmIGZvcm1Db250cm9sVHlwZSgpIGNvbnN0IG92ZXJyaWRl
OwotICAgIGJvb2wgaXNGb3JtRGF0YUFwcGVuZGFibGUoKSBjb25zdCBvdmVycmlkZTsKLSAgICBi
b29sIGFwcGVuZEZvcm1EYXRhKERPTUZvcm1EYXRhJiwgYm9vbCkgY29uc3Qgb3ZlcnJpZGU7Ci0g
ICAgYm9vbCBzdXBwb3J0c1ZhbGlkYXRpb24oKSBjb25zdCBvdmVycmlkZTsKLSAgICBSZW5kZXJQ
dHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlSW5wdXRSZW5kZXJlcihSZW5kZXJTdHlsZSYmKSBvdmVy
cmlkZTsKLSAgICB2b2lkIGhhbmRsZURPTUFjdGl2YXRlRXZlbnQoRXZlbnQmKSBvdmVycmlkZTsK
LSAgICB2b2lkIGFsdEF0dHJpYnV0ZUNoYW5nZWQoKSBvdmVycmlkZTsKLSAgICB2b2lkIHNyY0F0
dHJpYnV0ZUNoYW5nZWQoKSBvdmVycmlkZTsKLSAgICB2b2lkIGF0dGFjaCgpIG92ZXJyaWRlOwot
ICAgIGJvb2wgc2hvdWxkUmVzcGVjdEFsaWduQXR0cmlidXRlKCkgb3ZlcnJpZGU7Ci0gICAgYm9v
bCBjYW5CZVN1Y2Nlc3NmdWxTdWJtaXRCdXR0b24oKSBvdmVycmlkZTsKLSAgICBib29sIGlzSW1h
Z2VCdXR0b24oKSBjb25zdCBvdmVycmlkZTsKLSAgICBib29sIGlzRW51bWVyYXRhYmxlKCkgb3Zl
cnJpZGU7Ci0gICAgYm9vbCBzaG91bGRSZXNwZWN0SGVpZ2h0QW5kV2lkdGhBdHRyaWJ1dGVzKCkg
b3ZlcnJpZGU7Ci0gICAgdW5zaWduZWQgaGVpZ2h0KCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdW5z
aWduZWQgd2lkdGgoKSBjb25zdCBvdmVycmlkZTsKKyAgICBjb25zdCBBdG9taWNTdHJpbmcmIGZv
cm1Db250cm9sVHlwZSgpIGNvbnN0IGZpbmFsOworICAgIGJvb2wgaXNGb3JtRGF0YUFwcGVuZGFi
bGUoKSBjb25zdCBmaW5hbDsKKyAgICBib29sIGFwcGVuZEZvcm1EYXRhKERPTUZvcm1EYXRhJiwg
Ym9vbCkgY29uc3QgZmluYWw7CisgICAgYm9vbCBzdXBwb3J0c1ZhbGlkYXRpb24oKSBjb25zdCBm
aW5hbDsKKyAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlSW5wdXRSZW5kZXJlcihS
ZW5kZXJTdHlsZSYmKSBmaW5hbDsKKyAgICB2b2lkIGhhbmRsZURPTUFjdGl2YXRlRXZlbnQoRXZl
bnQmKSBmaW5hbDsKKyAgICB2b2lkIGF0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFt
ZSYpIGZpbmFsOworICAgIHZvaWQgYXR0YWNoKCkgZmluYWw7CisgICAgYm9vbCBzaG91bGRSZXNw
ZWN0QWxpZ25BdHRyaWJ1dGUoKSBmaW5hbDsKKyAgICBib29sIGNhbkJlU3VjY2Vzc2Z1bFN1Ym1p
dEJ1dHRvbigpIGZpbmFsOworICAgIGJvb2wgaXNJbWFnZUJ1dHRvbigpIGNvbnN0IGZpbmFsOwor
ICAgIGJvb2wgaXNFbnVtZXJhdGFibGUoKSBmaW5hbDsKKyAgICBib29sIHNob3VsZFJlc3BlY3RI
ZWlnaHRBbmRXaWR0aEF0dHJpYnV0ZXMoKSBmaW5hbDsKKyAgICB1bnNpZ25lZCBoZWlnaHQoKSBj
b25zdCBmaW5hbDsKKyAgICB1bnNpZ25lZCB3aWR0aCgpIGNvbnN0IGZpbmFsOwogCiAgICAgSW50
UG9pbnQgbV9jbGlja0xvY2F0aW9uOyAvLyBWYWxpZCBvbmx5IGR1cmluZyBIVE1MRm9ybUVsZW1l
bnQ6OnByZXBhcmVGb3JTdWJtaXNzaW9uKCkuCiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9JbnB1dFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuY3Bw
CmluZGV4IDhiZWMzYTZmNDAwOTc0YWFkYzRiZWFiMzQ5YmUwNmY4ZDRjYjdhNTcuLjQ4NTM2NjZm
OTRkY2NjZGQ0Mjk1ZGM0YzhhZWFhZDJiMWU3MDk0MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSW5wdXRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlw
ZS5jcHAKQEAgLTU5NSwzMSArNTk1LDExIEBAIHZvaWQgSW5wdXRUeXBlOjpkZXRhY2goKQogewog
fQogCi12b2lkIElucHV0VHlwZTo6YWx0QXR0cmlidXRlQ2hhbmdlZCgpCi17Ci19Ci0KLXZvaWQg
SW5wdXRUeXBlOjpzcmNBdHRyaWJ1dGVDaGFuZ2VkKCkKLXsKLX0KLQotdm9pZCBJbnB1dFR5cGU6
Om1heFJlc3VsdHNBdHRyaWJ1dGVDaGFuZ2VkKCkKLXsKLX0KLQogYm9vbCBJbnB1dFR5cGU6OnNo
b3VsZFJlc3BlY3RBbGlnbkF0dHJpYnV0ZSgpCiB7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi12
b2lkIElucHV0VHlwZTo6bWluT3JNYXhBdHRyaWJ1dGVDaGFuZ2VkKCkKLXsKLX0KLQotdm9pZCBJ
bnB1dFR5cGU6OnN0ZXBBdHRyaWJ1dGVDaGFuZ2VkKCkKLXsKLX0KLQogYm9vbCBJbnB1dFR5cGU6
OmNhbkJlU3VjY2Vzc2Z1bFN1Ym1pdEJ1dHRvbigpCiB7CiAgICAgcmV0dXJuIGZhbHNlOwpAQCAt
ODk2LDI2ICs4NzYsNiBAQCB2b2lkIElucHV0VHlwZTo6dXBkYXRlUGxhY2Vob2xkZXJUZXh0KCkK
IHsKIH0KIAotdm9pZCBJbnB1dFR5cGU6OmF0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVk
TmFtZSYpCi17Ci19Ci0KLXZvaWQgSW5wdXRUeXBlOjptdWx0aXBsZUF0dHJpYnV0ZUNoYW5nZWQo
KQotewotfQotCi12b2lkIElucHV0VHlwZTo6ZGlzYWJsZWRBdHRyaWJ1dGVDaGFuZ2VkKCkKLXsK
LX0KLQotdm9pZCBJbnB1dFR5cGU6OnJlYWRvbmx5QXR0cmlidXRlQ2hhbmdlZCgpCi17Ci19Ci0K
LXZvaWQgSW5wdXRUeXBlOjpyZXF1aXJlZEF0dHJpYnV0ZUNoYW5nZWQoKQotewotfQotCiB2b2lk
IElucHV0VHlwZTo6Y2Fwc0xvY2tTdGF0ZU1heUhhdmVDaGFuZ2VkKCkKIHsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0lucHV0VHlwZS5oCmluZGV4IGQwYjg2YjU4YTAzNWJiYzAxNTQ2YmEzYzQ3MTJmYTQwNjYxNDEz
YjAuLmY2YzlhZjEwMGFjY2Q1MzM1NjkyNTkzMDBmNjFjZjdjMjY5ZTM4NDggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9JbnB1dFR5cGUuaApAQCAtMjM0LDExICsyMzQsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2
b2lkIGFkZFNlYXJjaFJlc3VsdCgpOwogICAgIHZpcnR1YWwgdm9pZCBhdHRhY2goKTsKICAgICB2
aXJ0dWFsIHZvaWQgZGV0YWNoKCk7Ci0gICAgdmlydHVhbCB2b2lkIG1pbk9yTWF4QXR0cmlidXRl
Q2hhbmdlZCgpOwotICAgIHZpcnR1YWwgdm9pZCBzdGVwQXR0cmlidXRlQ2hhbmdlZCgpOwotICAg
IHZpcnR1YWwgdm9pZCBhbHRBdHRyaWJ1dGVDaGFuZ2VkKCk7Ci0gICAgdmlydHVhbCB2b2lkIHNy
Y0F0dHJpYnV0ZUNoYW5nZWQoKTsKLSAgICB2aXJ0dWFsIHZvaWQgbWF4UmVzdWx0c0F0dHJpYnV0
ZUNoYW5nZWQoKTsKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkUmVzcGVjdEFsaWduQXR0cmlidXRl
KCk7CiAgICAgdmlydHVhbCBGaWxlTGlzdCogZmlsZXMoKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0
RmlsZXMoUmVmUHRyPEZpbGVMaXN0PiYmKTsKQEAgLTI1NywxMSArMjUyLDEwIEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNSZWFkT25seSgpIGNvbnN0OwogICAgIHZpcnR1YWwg
dm9pZCB1cGRhdGVJbm5lclRleHRWYWx1ZSgpOwogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVQbGFj
ZWhvbGRlclRleHQoKTsKLSAgICB2aXJ0dWFsIHZvaWQgYXR0cmlidXRlQ2hhbmdlZChjb25zdCBR
dWFsaWZpZWROYW1lJik7Ci0gICAgdmlydHVhbCB2b2lkIG11bHRpcGxlQXR0cmlidXRlQ2hhbmdl
ZCgpOwotICAgIHZpcnR1YWwgdm9pZCBkaXNhYmxlZEF0dHJpYnV0ZUNoYW5nZWQoKTsKLSAgICB2
aXJ0dWFsIHZvaWQgcmVhZG9ubHlBdHRyaWJ1dGVDaGFuZ2VkKCk7Ci0gICAgdmlydHVhbCB2b2lk
IHJlcXVpcmVkQXR0cmlidXRlQ2hhbmdlZCgpOworICAgIHZpcnR1YWwgdm9pZCBhdHRyaWJ1dGVD
aGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlzYWJs
ZWRTdGF0ZUNoYW5nZWQoKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgcmVhZE9ubHlTdGF0ZUNoYW5n
ZWQoKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgcmVxdWlyZWRTdGF0ZUNoYW5nZWQoKSB7IH0KICAg
ICB2aXJ0dWFsIHZvaWQgY2Fwc0xvY2tTdGF0ZU1heUhhdmVDaGFuZ2VkKCk7CiAgICAgdmlydHVh
bCB2b2lkIHVwZGF0ZUF1dG9GaWxsQnV0dG9uKCk7CiAgICAgdmlydHVhbCBTdHJpbmcgZGVmYXVs
dFRvb2xUaXAoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTnVtYmVy
SW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTnVtYmVySW5wdXRUeXBlLmNwcApp
bmRleCA4N2VjMDhiN2ViNDcyYTUxNDNkNDk3MWU5NjJjNzExYzM5YjRjOGY4Li43YmZjZTNmZTEz
MmRiYWRlZWY5YTY4Njg3MjkzNTgyZjdlNjY3MGNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL051bWJlcklucHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9OdW1i
ZXJJbnB1dFR5cGUuY3BwCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAx
MCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDEx
LCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAxMS0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucyBhcmUKQEAgLTI4MCwyMSArMjgwLDE4IEBAIGJvb2wgTnVtYmVySW5w
dXRUeXBlOjppc051bWJlckZpZWxkKCkgY29uc3QKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9p
ZCBOdW1iZXJJbnB1dFR5cGU6Om1pbk9yTWF4QXR0cmlidXRlQ2hhbmdlZCgpCit2b2lkIE51bWJl
cklucHV0VHlwZTo6YXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lKQog
ewotICAgIElucHV0VHlwZTo6bWluT3JNYXhBdHRyaWJ1dGVDaGFuZ2VkKCk7Ci0gICAgSFRNTElu
cHV0RWxlbWVudCYgZWxlbWVudCA9IHRoaXMtPmVsZW1lbnQoKTsKLSAgICBlbGVtZW50LmludmFs
aWRhdGVTdHlsZUZvclN1YnRyZWUoKTsKLSAgICBpZiAoUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9
IGVsZW1lbnQucmVuZGVyZXIoKSkKKyAgICBpZiAobmFtZSA9PSBtYXhBdHRyIHx8IG5hbWUgPT0g
bWluQXR0cikgeworICAgICAgICBhdXRvJiBlbGVtZW50ID0gdGhpcy0+ZWxlbWVudCgpOworICAg
ICAgICBlbGVtZW50LmludmFsaWRhdGVTdHlsZUZvclN1YnRyZWUoKTsKKyAgICAgICAgaWYgKGF1
dG8qIHJlbmRlcmVyID0gZWxlbWVudC5yZW5kZXJlcigpKQorICAgICAgICAgICAgcmVuZGVyZXIt
PnNldE5lZWRzTGF5b3V0QW5kUHJlZldpZHRoc1JlY2FsYygpOworICAgIH0gZWxzZSBpZiAobmFt
ZSA9PSBzdGVwQXR0cikgeworICAgICAgICBpZiAoYXV0byogcmVuZGVyZXIgPSBlbGVtZW50KCku
cmVuZGVyZXIoKSkKICAgICAgICAgcmVuZGVyZXItPnNldE5lZWRzTGF5b3V0QW5kUHJlZldpZHRo
c1JlY2FsYygpOwotfQotCi12b2lkIE51bWJlcklucHV0VHlwZTo6c3RlcEF0dHJpYnV0ZUNoYW5n
ZWQoKQotewotICAgIElucHV0VHlwZTo6c3RlcEF0dHJpYnV0ZUNoYW5nZWQoKTsKLQotICAgIGlm
IChlbGVtZW50KCkucmVuZGVyZXIoKSkKLSAgICAgICAgZWxlbWVudCgpLnJlbmRlcmVyKCktPnNl
dE5lZWRzTGF5b3V0QW5kUHJlZldpZHRoc1JlY2FsYygpOworICAgIH0KKyAgICBUZXh0RmllbGRJ
bnB1dFR5cGU6OmF0dHJpYnV0ZUNoYW5nZWQobmFtZSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTnVtYmVySW5wdXRUeXBlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL051bWJlcklucHV0VHlwZS5oCmluZGV4IGUzNzVjN2Y1NTg1
ZGQyNjA4NDQ1NjQ4OGM5YmVjNzNkZGU0MDFmYjcuLjY4OWY1Mjk3NTA3MThlYWExYjljY2YxZjk5
MWM2ZmM2MmQzNTk4ZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTnVtYmVySW5w
dXRUeXBlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9OdW1iZXJJbnB1dFR5cGUuaApAQCAt
MSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCkBAIC02MSw4
ICs2Miw3IEBAIHByaXZhdGU6CiAgICAgU3RyaW5nIGJhZElucHV0VGV4dCgpIGNvbnN0IGZpbmFs
OwogICAgIGJvb2wgc3VwcG9ydHNQbGFjZWhvbGRlcigpIGNvbnN0IGZpbmFsOwogICAgIGJvb2wg
aXNOdW1iZXJGaWVsZCgpIGNvbnN0IGZpbmFsOwotICAgIHZvaWQgbWluT3JNYXhBdHRyaWJ1dGVD
aGFuZ2VkKCkgZmluYWw7Ci0gICAgdm9pZCBzdGVwQXR0cmlidXRlQ2hhbmdlZCgpIGZpbmFsOwor
ICAgIHZvaWQgYXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJikgZmluYWw7CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL1JhbmdlSW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvUmFuZ2VJbnB1dFR5
cGUuY3BwCmluZGV4IDdjNWI4MTkyMTA3YzczNzgwZmRiMjk3YTVlNGM0N2RkNjQyYjA1YzUuLmNj
MTQ0NDEzNmQ0ODU5NjUwMzQ1NDJlZWZmMmEwMzhkZDBkNTU1ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvUmFuZ2VJbnB1dFR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvUmFuZ2VJbnB1dFR5cGUuY3BwCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAo
QykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChD
KSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAxMS0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucyBhcmUKQEAgLTE4Niw5ICsxODYsOSBAQCBib29sIFJhbmdlSW5wdXRU
eXBlOjpoYXNUb3VjaEV2ZW50SGFuZGxlcigpIGNvbnN0CiAjZW5kaWYKICNlbmRpZiAvLyBFTkFC
TEUoVE9VQ0hfRVZFTlRTKQogCi12b2lkIFJhbmdlSW5wdXRUeXBlOjpkaXNhYmxlZEF0dHJpYnV0
ZUNoYW5nZWQoKQordm9pZCBSYW5nZUlucHV0VHlwZTo6ZGlzYWJsZWRTdGF0ZUNoYW5nZWQoKQog
ewotICAgIHR5cGVkU2xpZGVyVGh1bWJFbGVtZW50KCkuZGlzYWJsZWRBdHRyaWJ1dGVDaGFuZ2Vk
KCk7CisgICAgdHlwZWRTbGlkZXJUaHVtYkVsZW1lbnQoKS5ob3N0RGlzYWJsZWRTdGF0ZUNoYW5n
ZWQoKTsKIH0KIAogdm9pZCBSYW5nZUlucHV0VHlwZTo6aGFuZGxlS2V5ZG93bkV2ZW50KEtleWJv
YXJkRXZlbnQmIGV2ZW50KQpAQCAtMzE3LDE1ICszMTcsMTggQEAgdm9pZCBSYW5nZUlucHV0VHlw
ZTo6YWNjZXNzS2V5QWN0aW9uKGJvb2wgc2VuZE1vdXNlRXZlbnRzKQogICAgIGVsZW1lbnQoKS5k
aXNwYXRjaFNpbXVsYXRlZENsaWNrKDAsIHNlbmRNb3VzZUV2ZW50cyA/IFNlbmRNb3VzZVVwRG93
bkV2ZW50cyA6IFNlbmROb0V2ZW50cyk7CiB9CiAKLXZvaWQgUmFuZ2VJbnB1dFR5cGU6Om1pbk9y
TWF4QXR0cmlidXRlQ2hhbmdlZCgpCit2b2lkIFJhbmdlSW5wdXRUeXBlOjphdHRyaWJ1dGVDaGFu
Z2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUpCiB7Ci0gICAgSW5wdXRUeXBlOjptaW5Pck1h
eEF0dHJpYnV0ZUNoYW5nZWQoKTsKLQotICAgIC8vIFNhbml0aXplIHRoZSB2YWx1ZS4KLSAgICBp
ZiAoZWxlbWVudCgpLmhhc0RpcnR5VmFsdWUoKSkKLSAgICAgICAgZWxlbWVudCgpLnNldFZhbHVl
KGVsZW1lbnQoKS52YWx1ZSgpKTsKLQotICAgIHR5cGVkU2xpZGVyVGh1bWJFbGVtZW50KCkuc2V0
UG9zaXRpb25Gcm9tVmFsdWUoKTsKKyAgICAvLyBGSVhNRTogRG9uJ3Qgd2UgbmVlZCB0byBkbyB0
aGlzIHdvcmsgZm9yIHByZWNpc2lvbkF0dHIgdG9vPworICAgIGlmIChuYW1lID09IG1heEF0dHIg
fHwgbmFtZSA9PSBtaW5BdHRyKSB7CisgICAgICAgIC8vIFNhbml0aXplIHRoZSB2YWx1ZS4KKyAg
ICAgICAgYXV0byYgZWxlbWVudCA9IHRoaXMtPmVsZW1lbnQoKTsKKyAgICAgICAgaWYgKGVsZW1l
bnQuaGFzRGlydHlWYWx1ZSgpKQorICAgICAgICAgICAgZWxlbWVudC5zZXRWYWx1ZShlbGVtZW50
LnZhbHVlKCkpOworCisgICAgICAgIHR5cGVkU2xpZGVyVGh1bWJFbGVtZW50KCkuc2V0UG9zaXRp
b25Gcm9tVmFsdWUoKTsKKyAgICB9CisgICAgSW5wdXRUeXBlOjphdHRyaWJ1dGVDaGFuZ2VkKG5h
bWUpOwogfQogCiB2b2lkIFJhbmdlSW5wdXRUeXBlOjpzZXRWYWx1ZShjb25zdCBTdHJpbmcmIHZh
bHVlLCBib29sIHZhbHVlQ2hhbmdlZCwgVGV4dEZpZWxkRXZlbnRCZWhhdmlvciBldmVudEJlaGF2
aW9yKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9SYW5nZUlucHV0VHlwZS5oIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9SYW5nZUlucHV0VHlwZS5oCmluZGV4IGM4MzlmMTM1Njk1MGU5
NDA3NTA5YjViMGZhZGE0ZGM4M2QwNzZjYmIuLjk5ODQ2NWZiZDNjODQ1YTJlNjMzM2VlNDJiMDIw
YTFjMDc3MDJlZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvUmFuZ2VJbnB1dFR5
cGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1JhbmdlSW5wdXRUeXBlLmgKQEAgLTEsNSAr
MSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQpAQCAtNTgsNyArNTks
NyBAQCBwcml2YXRlOgogICAgIERlY2ltYWwgcGFyc2VUb051bWJlcihjb25zdCBTdHJpbmcmLCBj
b25zdCBEZWNpbWFsJikgY29uc3QgZmluYWw7CiAgICAgU3RyaW5nIHNlcmlhbGl6ZShjb25zdCBE
ZWNpbWFsJikgY29uc3QgZmluYWw7CiAgICAgdm9pZCBhY2Nlc3NLZXlBY3Rpb24oYm9vbCBzZW5k
TW91c2VFdmVudHMpIGZpbmFsOwotICAgIHZvaWQgbWluT3JNYXhBdHRyaWJ1dGVDaGFuZ2VkKCkg
ZmluYWw7CisgICAgdm9pZCBhdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBm
aW5hbDsKICAgICB2b2lkIHNldFZhbHVlKGNvbnN0IFN0cmluZyYsIGJvb2wgdmFsdWVDaGFuZ2Vk
LCBUZXh0RmllbGRFdmVudEJlaGF2aW9yKSBmaW5hbDsKICAgICBTdHJpbmcgZmFsbGJhY2tWYWx1
ZSgpIGNvbnN0IGZpbmFsOwogICAgIFN0cmluZyBzYW5pdGl6ZVZhbHVlKGNvbnN0IFN0cmluZyYg
cHJvcG9zZWRWYWx1ZSkgY29uc3QgZmluYWw7CkBAIC04MSw3ICs4Miw3IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCBoYW5kbGVUb3VjaEV2ZW50KFRvdWNoRXZlbnQmKSBmaW5hbDsKICNlbmRpZgogCi0g
ICAgdm9pZCBkaXNhYmxlZEF0dHJpYnV0ZUNoYW5nZWQoKSBmaW5hbDsKKyAgICB2b2lkIGRpc2Fi
bGVkU3RhdGVDaGFuZ2VkKCkgZmluYWw7CiAKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKSAmJiAh
UExBVEZPUk0oSU9TKSAmJiBFTkFCTEUoVE9VQ0hfU0xJREVSKQogICAgIGJvb2wgaGFzVG91Y2hF
dmVudEhhbmRsZXIoKSBjb25zdCBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvU2VhcmNoSW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvU2VhcmNoSW5wdXRU
eXBlLmNwcAppbmRleCBkZDIyYWIwMWU1MjM3ZDFiNGFkMTI0Nzk5NjRmNmVmYWZiNzRiOWUxLi5j
OWZkMjI4NjRlYjcwOTdkMmIzYjI2OWNmNDhkYzdiNzg0NmQ1MWM2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL1NlYXJjaElucHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9TZWFyY2hJbnB1dFR5cGUuY3BwCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqIENvcHlyaWdo
dCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0
IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxNC0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKQEAgLTQ2LDE0ICs0NiwxMCBAQCB1c2luZyBuYW1lc3Bh
Y2UgSFRNTE5hbWVzOwogCiBTZWFyY2hJbnB1dFR5cGU6OlNlYXJjaElucHV0VHlwZShIVE1MSW5w
dXRFbGVtZW50JiBlbGVtZW50KQogICAgIDogQmFzZVRleHRJbnB1dFR5cGUoZWxlbWVudCkKLSAg
ICAsIG1fcmVzdWx0c0J1dHRvbihudWxscHRyKQotICAgICwgbV9jYW5jZWxCdXR0b24obnVsbHB0
cikKICAgICAsIG1fc2VhcmNoRXZlbnRUaW1lcigqdGhpcywgJlNlYXJjaElucHV0VHlwZTo6c2Vh
cmNoRXZlbnRUaW1lckZpcmVkKQogewogfQogCi1TZWFyY2hJbnB1dFR5cGU6On5TZWFyY2hJbnB1
dFR5cGUoKSA9IGRlZmF1bHQ7Ci0KIHZvaWQgU2VhcmNoSW5wdXRUeXBlOjphZGRTZWFyY2hSZXN1
bHQoKQogewogI2lmICFQTEFURk9STShJT1MpCkBAIC03MSwxNCArNjcsMTcgQEAgc3RhdGljIHZv
aWQgdXBkYXRlUmVzdWx0QnV0dG9uUHNldWRvVHlwZShTZWFyY2hGaWVsZFJlc3VsdHNCdXR0b25F
bGVtZW50JiByZXN1bHQKICAgICAgICAgcmVzdWx0QnV0dG9uLnNldFBzZXVkbyhBdG9taWNTdHJp
bmcoIi13ZWJraXQtc2VhcmNoLXJlc3VsdHMtZGVjb3JhdGlvbiIsIEF0b21pY1N0cmluZzo6Q29u
c3RydWN0RnJvbUxpdGVyYWwpKTsKICAgICBlbHNlIGlmIChtYXhSZXN1bHRzIDwgMCkKICAgICAg
ICAgcmVzdWx0QnV0dG9uLnNldFBzZXVkbyhBdG9taWNTdHJpbmcoIi13ZWJraXQtc2VhcmNoLWRl
Y29yYXRpb24iLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7Ci0gICAgZWxz
ZSBpZiAobWF4UmVzdWx0cyA+IDApCisgICAgZWxzZQogICAgICAgICByZXN1bHRCdXR0b24uc2V0
UHNldWRvKEF0b21pY1N0cmluZygiLXdlYmtpdC1zZWFyY2gtcmVzdWx0cy1idXR0b24iLCBBdG9t
aWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CiB9CiAKLXZvaWQgU2VhcmNoSW5wdXRU
eXBlOjptYXhSZXN1bHRzQXR0cmlidXRlQ2hhbmdlZCgpCit2b2lkIFNlYXJjaElucHV0VHlwZTo6
YXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lKQogewotICAgIGlmICht
X3Jlc3VsdHNCdXR0b24pCi0gICAgICAgIHVwZGF0ZVJlc3VsdEJ1dHRvblBzZXVkb1R5cGUoKm1f
cmVzdWx0c0J1dHRvbiwgZWxlbWVudCgpLm1heFJlc3VsdHMoKSk7CisgICAgaWYgKG5hbWUgPT0g
cmVzdWx0c0F0dHIpIHsKKyAgICAgICAgaWYgKG1fcmVzdWx0c0J1dHRvbikKKyAgICAgICAgICAg
IHVwZGF0ZVJlc3VsdEJ1dHRvblBzZXVkb1R5cGUoKm1fcmVzdWx0c0J1dHRvbiwgZWxlbWVudCgp
Lm1heFJlc3VsdHMoKSk7CisgICAgfQorICAgIEJhc2VUZXh0SW5wdXRUeXBlOjphdHRyaWJ1dGVD
aGFuZ2VkKG5hbWUpOwogfQogCiBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gU2VhcmNoSW5wdXRU
eXBlOjpjcmVhdGVJbnB1dFJlbmRlcmVyKFJlbmRlclN0eWxlJiYgc3R5bGUpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL1NlYXJjaElucHV0VHlwZS5oIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9TZWFyY2hJbnB1dFR5cGUuaAppbmRleCBkZjMwNDAwNzUwODAyNTk5MDI0YmQxMDk1Yjcx
MzNlMjdmMTVhMjNjLi43ZGUyODUxYzY0ZjllMmNmM2EyZGE3MTRjYzg5Y2E5Zjc5ODQ0ZTk3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1NlYXJjaElucHV0VHlwZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvU2VhcmNoSW5wdXRUeXBlLmgKQEAgLTEsNiArMSw2IEBACiAvKgog
ICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDE0LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQpAQCAtNDEsMjUgKzQxLDI0IEBAIGNs
YXNzIFNlYXJjaEZpZWxkUmVzdWx0c0J1dHRvbkVsZW1lbnQ7CiBjbGFzcyBTZWFyY2hJbnB1dFR5
cGUgZmluYWwgOiBwdWJsaWMgQmFzZVRleHRJbnB1dFR5cGUgewogcHVibGljOgogICAgIGV4cGxp
Y2l0IFNlYXJjaElucHV0VHlwZShIVE1MSW5wdXRFbGVtZW50Jik7Ci0gICAgflNlYXJjaElucHV0
VHlwZSgpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBzdG9wU2VhcmNoRXZlbnRUaW1lcigpOwogCiBw
cml2YXRlOgotICAgIHZvaWQgYWRkU2VhcmNoUmVzdWx0KCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBt
YXhSZXN1bHRzQXR0cmlidXRlQ2hhbmdlZCgpIG92ZXJyaWRlOwotICAgIFJlbmRlclB0cjxSZW5k
ZXJFbGVtZW50PiBjcmVhdGVJbnB1dFJlbmRlcmVyKFJlbmRlclN0eWxlJiYpIG92ZXJyaWRlOwot
ICAgIGNvbnN0IEF0b21pY1N0cmluZyYgZm9ybUNvbnRyb2xUeXBlKCkgY29uc3Qgb3ZlcnJpZGU7
Ci0gICAgYm9vbCBpc1NlYXJjaEZpZWxkKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgYm9vbCBuZWVk
c0NvbnRhaW5lcigpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZvaWQgY3JlYXRlU2hhZG93U3VidHJl
ZSgpIG92ZXJyaWRlOwotICAgIHZvaWQgZGVzdHJveVNoYWRvd1N1YnRyZWUoKSBvdmVycmlkZTsK
LSAgICBIVE1MRWxlbWVudCogcmVzdWx0c0J1dHRvbkVsZW1lbnQoKSBjb25zdCBvdmVycmlkZTsK
LSAgICBIVE1MRWxlbWVudCogY2FuY2VsQnV0dG9uRWxlbWVudCgpIGNvbnN0IG92ZXJyaWRlOwot
ICAgIHZvaWQgaGFuZGxlS2V5ZG93bkV2ZW50KEtleWJvYXJkRXZlbnQmKSBvdmVycmlkZTsKLSAg
ICB2b2lkIGRpZFNldFZhbHVlQnlVc2VyRWRpdCgpIG92ZXJyaWRlOwotICAgIGJvb2wgc2l6ZVNo
b3VsZEluY2x1ZGVEZWNvcmF0aW9uKGludCBkZWZhdWx0U2l6ZSwgaW50JiBwcmVmZXJyZWRTaXpl
KSBjb25zdCBvdmVycmlkZTsKLSAgICBmbG9hdCBkZWNvcmF0aW9uV2lkdGgoKSBjb25zdCBvdmVy
cmlkZTsKKyAgICB2b2lkIGFkZFNlYXJjaFJlc3VsdCgpIGZpbmFsOworICAgIHZvaWQgYXR0cmli
dXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJikgZmluYWw7CisgICAgUmVuZGVyUHRyPFJl
bmRlckVsZW1lbnQ+IGNyZWF0ZUlucHV0UmVuZGVyZXIoUmVuZGVyU3R5bGUmJikgZmluYWw7Cisg
ICAgY29uc3QgQXRvbWljU3RyaW5nJiBmb3JtQ29udHJvbFR5cGUoKSBjb25zdCBmaW5hbDsKKyAg
ICBib29sIGlzU2VhcmNoRmllbGQoKSBjb25zdCBmaW5hbDsKKyAgICBib29sIG5lZWRzQ29udGFp
bmVyKCkgY29uc3QgZmluYWw7CisgICAgdm9pZCBjcmVhdGVTaGFkb3dTdWJ0cmVlKCkgZmluYWw7
CisgICAgdm9pZCBkZXN0cm95U2hhZG93U3VidHJlZSgpIGZpbmFsOworICAgIEhUTUxFbGVtZW50
KiByZXN1bHRzQnV0dG9uRWxlbWVudCgpIGNvbnN0IGZpbmFsOworICAgIEhUTUxFbGVtZW50KiBj
YW5jZWxCdXR0b25FbGVtZW50KCkgY29uc3QgZmluYWw7CisgICAgdm9pZCBoYW5kbGVLZXlkb3du
RXZlbnQoS2V5Ym9hcmRFdmVudCYpIGZpbmFsOworICAgIHZvaWQgZGlkU2V0VmFsdWVCeVVzZXJF
ZGl0KCkgZmluYWw7CisgICAgYm9vbCBzaXplU2hvdWxkSW5jbHVkZURlY29yYXRpb24oaW50IGRl
ZmF1bHRTaXplLCBpbnQmIHByZWZlcnJlZFNpemUpIGNvbnN0IGZpbmFsOworICAgIGZsb2F0IGRl
Y29yYXRpb25XaWR0aCgpIGNvbnN0IGZpbmFsOwogCiAgICAgdm9pZCBzZWFyY2hFdmVudFRpbWVy
RmlyZWQoKTsKICAgICBib29sIHNlYXJjaEV2ZW50c1Nob3VsZEJlRGlzcGF0Y2hlZCgpIGNvbnN0
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUuY3BwCmluZGV4IGQ5YzQ5
MmVkMTM4MzFmOGM2OTE0NTExODdkNmJiZTA3YmRkNmEyMzEuLjFmYWViNTEwOGU3MTY2NTY3YzNk
NWNlMDRjNzQ2MzY4MTk3NmRmNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4
dEZpZWxkSW5wdXRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1RleHRGaWVsZElu
cHV0VHlwZS5jcHAKQEAgLTEsNiArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDEwIEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIw
MTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEx
LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zIGFyZQpAQCAtMzQ4LDEzICszNDgsMTQgQEAgdm9pZCBUZXh0RmllbGRJbnB1
dFR5cGU6OmRlc3Ryb3lTaGFkb3dTdWJ0cmVlKCkKICAgICBtX2NvbnRhaW5lciA9IG51bGxwdHI7
CiB9CiAKLXZvaWQgVGV4dEZpZWxkSW5wdXRUeXBlOjphdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1
YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUpCit2b2lkIFRleHRGaWVsZElucHV0VHlwZTo6YXR0
cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lKQogewotICAgIGlmIChhdHRy
aWJ1dGVOYW1lID09IHZhbHVlQXR0ciB8fCBhdHRyaWJ1dGVOYW1lID09IHBsYWNlaG9sZGVyQXR0
cikKKyAgICBpZiAobmFtZSA9PSB2YWx1ZUF0dHIgfHwgbmFtZSA9PSBwbGFjZWhvbGRlckF0dHIp
CiAgICAgICAgIHVwZGF0ZUlubmVyVGV4dFZhbHVlKCk7CisgICAgSW5wdXRUeXBlOjphdHRyaWJ1
dGVDaGFuZ2VkKG5hbWUpOwogfQogCi12b2lkIFRleHRGaWVsZElucHV0VHlwZTo6ZGlzYWJsZWRB
dHRyaWJ1dGVDaGFuZ2VkKCkKK3ZvaWQgVGV4dEZpZWxkSW5wdXRUeXBlOjpkaXNhYmxlZFN0YXRl
Q2hhbmdlZCgpCiB7CiAgICAgaWYgKG1faW5uZXJTcGluQnV0dG9uKQogICAgICAgICBtX2lubmVy
U3BpbkJ1dHRvbi0+cmVsZWFzZUNhcHR1cmUoKTsKQEAgLTM2Miw3ICszNjMsNyBAQCB2b2lkIFRl
eHRGaWVsZElucHV0VHlwZTo6ZGlzYWJsZWRBdHRyaWJ1dGVDaGFuZ2VkKCkKICAgICB1cGRhdGVB
dXRvRmlsbEJ1dHRvbigpOwogfQogCi12b2lkIFRleHRGaWVsZElucHV0VHlwZTo6cmVhZG9ubHlB
dHRyaWJ1dGVDaGFuZ2VkKCkKK3ZvaWQgVGV4dEZpZWxkSW5wdXRUeXBlOjpyZWFkT25seVN0YXRl
Q2hhbmdlZCgpCiB7CiAgICAgaWYgKG1faW5uZXJTcGluQnV0dG9uKQogICAgICAgICBtX2lubmVy
U3BpbkJ1dHRvbi0+cmVsZWFzZUNhcHR1cmUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1RleHRGaWVs
ZElucHV0VHlwZS5oCmluZGV4IDA3YjU3M2Q3ZTQ4OWNkZWM5YTY3YTA5YjU3ZTQ1Yjc0YWY1ODEy
ZmEuLmE4OTU0YjVhMzExMGU4OWVmNmJkYWVkNGNjNmM5ZWVkMDJjMzA2MzQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUuaApAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBD
b3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCkBAIC01NSwxMyArNTYsMTIgQEAgcHJvdGVjdGVk
OgogICAgIEhUTUxFbGVtZW50KiBjYXBzTG9ja0luZGljYXRvckVsZW1lbnQoKSBjb25zdCBmaW5h
bDsKICAgICBIVE1MRWxlbWVudCogYXV0b0ZpbGxCdXR0b25FbGVtZW50KCkgY29uc3QgZmluYWw7
CiAKLXByb3RlY3RlZDoKICAgICB2aXJ0dWFsIGJvb2wgbmVlZHNDb250YWluZXIoKSBjb25zdDsK
ICAgICB2b2lkIGNyZWF0ZVNoYWRvd1N1YnRyZWUoKSBvdmVycmlkZTsKICAgICB2b2lkIGRlc3Ry
b3lTaGFkb3dTdWJ0cmVlKCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBhdHRyaWJ1dGVDaGFuZ2VkKGNv
bnN0IFF1YWxpZmllZE5hbWUmKSBmaW5hbDsKLSAgICB2b2lkIGRpc2FibGVkQXR0cmlidXRlQ2hh
bmdlZCgpIGZpbmFsOwotICAgIHZvaWQgcmVhZG9ubHlBdHRyaWJ1dGVDaGFuZ2VkKCkgZmluYWw7
CisgICAgdm9pZCBhdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBvdmVycmlk
ZTsKKyAgICB2b2lkIGRpc2FibGVkU3RhdGVDaGFuZ2VkKCkgZmluYWw7CisgICAgdm9pZCByZWFk
T25seVN0YXRlQ2hhbmdlZCgpIGZpbmFsOwogICAgIGJvb2wgc3VwcG9ydHNSZWFkT25seSgpIGNv
bnN0IGZpbmFsOwogICAgIHZvaWQgaGFuZGxlRm9jdXNFdmVudChOb2RlKiBvbGRGb2N1c2VkTm9k
ZSwgRm9jdXNEaXJlY3Rpb24pIGZpbmFsOwogICAgIHZvaWQgaGFuZGxlQmx1ckV2ZW50KCkgZmlu
YWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9TbGlkZXJUaHVtYkVs
ZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU2xpZGVyVGh1bWJFbGVtZW50
LmNwcAppbmRleCA2YWY5NDU4MWM2NDc4MzE0MjQ0NDMxMTllNmVjMmQ0M2ExZmNjNTY4Li5iMTIx
MTgzYWUwMGIzZDcyZjRjM2E2OGY2ZWQxZmY3MGU0N2NmYWY4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3NoYWRvdy9TbGlkZXJUaHVtYkVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvc2hhZG93L1NsaWRlclRodW1iRWxlbWVudC5jcHAKQEAgLTEsNSArMSw1IEBA
CiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNi0yMDE4IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAtMjA3LDExICsyMDcs
NiBAQCB2b2lkIFJlbmRlclNsaWRlckNvbnRhaW5lcjo6bGF5b3V0KCkKIAogU2xpZGVyVGh1bWJF
bGVtZW50OjpTbGlkZXJUaHVtYkVsZW1lbnQoRG9jdW1lbnQmIGRvY3VtZW50KQogICAgIDogSFRN
TERpdkVsZW1lbnQoSFRNTE5hbWVzOjpkaXZUYWcsIGRvY3VtZW50KQotICAgICwgbV9pbkRyYWdN
b2RlKGZhbHNlKQotI2lmIEVOQUJMRShJT1NfVE9VQ0hfRVZFTlRTKQotICAgICwgbV9leGNsdXNp
dmVUb3VjaElkZW50aWZpZXIoTm9JZGVudGlmaWVyKQotICAgICwgbV9pc1JlZ2lzdGVyZWRBc1Rv
dWNoRXZlbnRMaXN0ZW5lcihmYWxzZSkKLSNlbmRpZgogewogICAgIHNldEhhc0N1c3RvbVN0eWxl
UmVzb2x2ZUNhbGxiYWNrcygpOwogfQpAQCAtMzg0LDYgKzM3OSw3IEBAIHZvaWQgU2xpZGVyVGh1
bWJFbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50JiBldmVudCkKICNlbmRpZgogCiAj
aWYgIVBMQVRGT1JNKElPUykKKwogYm9vbCBTbGlkZXJUaHVtYkVsZW1lbnQ6OndpbGxSZXNwb25k
VG9Nb3VzZU1vdmVFdmVudHMoKQogewogICAgIGNvbnN0IGF1dG8gaW5wdXQgPSBob3N0SW5wdXQo
KTsKQEAgLTQwMSw2ICszOTcsNyBAQCBib29sIFNsaWRlclRodW1iRWxlbWVudDo6d2lsbFJlc3Bv
bmRUb01vdXNlQ2xpY2tFdmVudHMoKQogCiAgICAgcmV0dXJuIEhUTUxEaXZFbGVtZW50Ojp3aWxs
UmVzcG9uZFRvTW91c2VDbGlja0V2ZW50cygpOwogfQorCiAjZW5kaWYgLy8gIVBMQVRGT1JNKElP
UykKIAogdm9pZCBTbGlkZXJUaHVtYkVsZW1lbnQ6OndpbGxEZXRhY2hSZW5kZXJlcnMoKQpAQCAt
NDE1LDYgKzQxMiw3IEBAIHZvaWQgU2xpZGVyVGh1bWJFbGVtZW50Ojp3aWxsRGV0YWNoUmVuZGVy
ZXJzKCkKIH0KIAogI2lmIEVOQUJMRShJT1NfVE9VQ0hfRVZFTlRTKQorCiB1bnNpZ25lZCBTbGlk
ZXJUaHVtYkVsZW1lbnQ6OmV4Y2x1c2l2ZVRvdWNoSWRlbnRpZmllcigpIGNvbnN0CiB7CiAgICAg
cmV0dXJuIG1fZXhjbHVzaXZlVG91Y2hJZGVudGlmaWVyOwpAQCAtNTY5LDkgKzU2NywxMCBAQCB2
b2lkIFNsaWRlclRodW1iRWxlbWVudDo6dW5yZWdpc3RlckZvclRvdWNoRXZlbnRzKCkKICAgICBk
b2N1bWVudCgpLnJlbW92ZVRvdWNoRXZlbnRIYW5kbGVyKCp0aGlzKTsKICAgICBtX2lzUmVnaXN0
ZXJlZEFzVG91Y2hFdmVudExpc3RlbmVyID0gZmFsc2U7CiB9CisKICNlbmRpZiAvLyBFTkFCTEUo
SU9TX1RPVUNIX0VWRU5UUykKIAotdm9pZCBTbGlkZXJUaHVtYkVsZW1lbnQ6OmRpc2FibGVkQXR0
cmlidXRlQ2hhbmdlZCgpCit2b2lkIFNsaWRlclRodW1iRWxlbWVudDo6aG9zdERpc2FibGVkU3Rh
dGVDaGFuZ2VkKCkKIHsKICAgICBpZiAoaXNEaXNhYmxlZEZvcm1Db250cm9sKCkpCiAgICAgICAg
IHN0b3BEcmFnZ2luZygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cv
U2xpZGVyVGh1bWJFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9TbGlkZXJU
aHVtYkVsZW1lbnQuaAppbmRleCAxZTI5ZDM1NGFhMzc2MjI0OWUwYzYyZDQ1ODY2ZmRhYjljM2Q4
Mjk1Li5hNDE4YzE4NWU3Nzk5MDgyYjYxMWVlZjkzZGIyNmQ0OGY1MmI4ZDYzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9TbGlkZXJUaHVtYkVsZW1lbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9TbGlkZXJUaHVtYkVsZW1lbnQuaApAQCAtMSw1ICsx
LDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDkgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA2LTIwMTggQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC0zOCw3ICsz
OCw2IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEhUTUxJbnB1dEVsZW1lbnQ7Ci1j
bGFzcyBGbG9hdFBvaW50OwogY2xhc3MgVG91Y2hFdmVudDsKIAogY2xhc3MgU2xpZGVyVGh1bWJF
bGVtZW50IGZpbmFsIDogcHVibGljIEhUTUxEaXZFbGVtZW50IHsKQEAgLTU1LDMwICs1NCwzMSBA
QCBwdWJsaWM6CiAgICAgdm9pZCBoYW5kbGVUb3VjaEV2ZW50KFRvdWNoRXZlbnQmKTsKICNlbmRp
ZgogCi0gICAgdm9pZCBkaXNhYmxlZEF0dHJpYnV0ZUNoYW5nZWQoKTsKKyAgICB2b2lkIGhvc3RE
aXNhYmxlZFN0YXRlQ2hhbmdlZCgpOwogCiBwcml2YXRlOgogICAgIFNsaWRlclRodW1iRWxlbWVu
dChEb2N1bWVudCYpOwogCi0gICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1l
bnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBvdmVy
cmlkZTsKKyAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVy
KFJlbmRlclN0eWxlJiYsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIGZpbmFsOworCisgICAg
UmVmPEVsZW1lbnQ+IGNsb25lRWxlbWVudFdpdGhvdXRBdHRyaWJ1dGVzQW5kQ2hpbGRyZW4oRG9j
dW1lbnQmKSBmaW5hbDsKKyAgICBib29sIGlzRGlzYWJsZWRGb3JtQ29udHJvbCgpIGNvbnN0IGZp
bmFsOworICAgIGJvb2wgbWF0Y2hlc1JlYWRXcml0ZVBzZXVkb0NsYXNzKCkgY29uc3QgZmluYWw7
CisgICAgUmVmUHRyPEVsZW1lbnQ+IGZvY3VzRGVsZWdhdGUoKSBmaW5hbDsKIAotICAgIFJlZjxF
bGVtZW50PiBjbG9uZUVsZW1lbnRXaXRob3V0QXR0cmlidXRlc0FuZENoaWxkcmVuKERvY3VtZW50
Jikgb3ZlcnJpZGU7Ci0gICAgYm9vbCBpc0Rpc2FibGVkRm9ybUNvbnRyb2woKSBjb25zdCBvdmVy
cmlkZTsKLSAgICBib29sIG1hdGNoZXNSZWFkV3JpdGVQc2V1ZG9DbGFzcygpIGNvbnN0IG92ZXJy
aWRlOwotICAgIFJlZlB0cjxFbGVtZW50PiBmb2N1c0RlbGVnYXRlKCkgb3ZlcnJpZGU7CiAjaWYg
IVBMQVRGT1JNKElPUykKLSAgICB2b2lkIGRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQmKSBvdmVy
cmlkZTsKLSAgICBib29sIHdpbGxSZXNwb25kVG9Nb3VzZU1vdmVFdmVudHMoKSBvdmVycmlkZTsK
LSAgICBib29sIHdpbGxSZXNwb25kVG9Nb3VzZUNsaWNrRXZlbnRzKCkgb3ZlcnJpZGU7CisgICAg
dm9pZCBkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50JikgZmluYWw7CisgICAgYm9vbCB3aWxsUmVz
cG9uZFRvTW91c2VNb3ZlRXZlbnRzKCkgZmluYWw7CisgICAgYm9vbCB3aWxsUmVzcG9uZFRvTW91
c2VDbGlja0V2ZW50cygpIGZpbmFsOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoSU9TX1RPVUNIX0VW
RU5UUykKLSAgICB2b2lkIGRpZEF0dGFjaFJlbmRlcmVycygpIG92ZXJyaWRlOworICAgIHZvaWQg
ZGlkQXR0YWNoUmVuZGVyZXJzKCkgZmluYWw7CiAjZW5kaWYKLSAgICB2b2lkIHdpbGxEZXRhY2hS
ZW5kZXJlcnMoKSBvdmVycmlkZTsKKyAgICB2b2lkIHdpbGxEZXRhY2hSZW5kZXJlcnMoKSBmaW5h
bDsKIAotICAgIHN0ZDo6b3B0aW9uYWw8RWxlbWVudFN0eWxlPiByZXNvbHZlQ3VzdG9tU3R5bGUo
Y29uc3QgUmVuZGVyU3R5bGUmLCBjb25zdCBSZW5kZXJTdHlsZSopIG92ZXJyaWRlOwotICAgIGNv
bnN0IEF0b21pY1N0cmluZyYgc2hhZG93UHNldWRvSWQoKSBjb25zdCBvdmVycmlkZTsKKyAgICBz
dGQ6Om9wdGlvbmFsPEVsZW1lbnRTdHlsZT4gcmVzb2x2ZUN1c3RvbVN0eWxlKGNvbnN0IFJlbmRl
clN0eWxlJiwgY29uc3QgUmVuZGVyU3R5bGUqKSBmaW5hbDsKKyAgICBjb25zdCBBdG9taWNTdHJp
bmcmIHNoYWRvd1BzZXVkb0lkKCkgY29uc3QgZmluYWw7CiAKICAgICB2b2lkIHN0YXJ0RHJhZ2dp
bmcoKTsKICAgICB2b2lkIHN0b3BEcmFnZ2luZygpOwpAQCAtOTgsMTQgKzk4LDE0IEBAIHByaXZh
dGU6CiAjZW5kaWYKIAogICAgIEF0b21pY1N0cmluZyBtX3NoYWRvd1BzZXVkb0lkOwotICAgIGJv
b2wgbV9pbkRyYWdNb2RlOworICAgIGJvb2wgbV9pbkRyYWdNb2RlIHsgZmFsc2UgfTsKIAogI2lm
IEVOQUJMRShJT1NfVE9VQ0hfRVZFTlRTKQogICAgIC8vIEZJWE1FOiBDdXJyZW50bHkgaXQgaXMg
c2FmZSB0byB1c2UgMCwgYnV0IHRoaXMgbWF5IG5lZWQgdG8gY2hhbmdlCiAgICAgLy8gaWYgdG91
Y2ggaWRlbnRpZmllcnMgY2hhbmdlIGluIHRoZSBmdXR1cmUgYW5kIGNhbiBiZSAwLgogICAgIHN0
YXRpYyBjb25zdCB1bnNpZ25lZCBOb0lkZW50aWZpZXIgPSAwOwotICAgIHVuc2lnbmVkIG1fZXhj
bHVzaXZlVG91Y2hJZGVudGlmaWVyOwotICAgIGJvb2wgbV9pc1JlZ2lzdGVyZWRBc1RvdWNoRXZl
bnRMaXN0ZW5lcjsKKyAgICB1bnNpZ25lZCBtX2V4Y2x1c2l2ZVRvdWNoSWRlbnRpZmllciB7IE5v
SWRlbnRpZmllciB9OworICAgIGJvb2wgbV9pc1JlZ2lzdGVyZWRBc1RvdWNoRXZlbnRMaXN0ZW5l
ciB7IGZhbHNlIH07CiAjZW5kaWYKIH07CiAKQEAgLTEyMyw3ICsxMjMsNyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCB1cGRhdGVBcHBlYXJhbmNlKGNvbnN0IFJlbmRlclN0eWxlKiBwYXJlbnRTdHlsZSk7
CiAKIHByaXZhdGU6Ci0gICAgYm9vbCBpc1NsaWRlclRodW1iKCkgY29uc3Qgb3ZlcnJpZGU7Cisg
ICAgYm9vbCBpc1NsaWRlclRodW1iKCkgY29uc3QgZmluYWw7CiB9OwogCiAvLyAtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtMTM1LDEwICsxMzUsMTAgQEAgcHVibGljOgogCiBw
cml2YXRlOgogICAgIFNsaWRlckNvbnRhaW5lckVsZW1lbnQoRG9jdW1lbnQmKTsKLSAgICBSZW5k
ZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYs
IGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIG92ZXJyaWRlOwotICAgIHN0ZDo6b3B0aW9uYWw8
RWxlbWVudFN0eWxlPiByZXNvbHZlQ3VzdG9tU3R5bGUoY29uc3QgUmVuZGVyU3R5bGUmLCBjb25z
dCBSZW5kZXJTdHlsZSopIG92ZXJyaWRlOwotICAgIGNvbnN0IEF0b21pY1N0cmluZyYgc2hhZG93
UHNldWRvSWQoKSBjb25zdCBvdmVycmlkZTsKLSAgICBib29sIGlzU2xpZGVyQ29udGFpbmVyRWxl
bWVudCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KKyAgICBSZW5kZXJQdHI8UmVu
ZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYsIGNvbnN0IFJl
bmRlclRyZWVQb3NpdGlvbiYpIGZpbmFsOworICAgIHN0ZDo6b3B0aW9uYWw8RWxlbWVudFN0eWxl
PiByZXNvbHZlQ3VzdG9tU3R5bGUoY29uc3QgUmVuZGVyU3R5bGUmLCBjb25zdCBSZW5kZXJTdHls
ZSopIGZpbmFsOworICAgIGNvbnN0IEF0b21pY1N0cmluZyYgc2hhZG93UHNldWRvSWQoKSBjb25z
dCBmaW5hbDsKKyAgICBib29sIGlzU2xpZGVyQ29udGFpbmVyRWxlbWVudCgpIGNvbnN0IGZpbmFs
IHsgcmV0dXJuIHRydWU7IH0KIAogICAgIEF0b21pY1N0cmluZyBtX3NoYWRvd1BzZXVkb0lkOwog
fTsK
</data>
<flag name="review"
          id="359641"
          type_id="1"
          status="+"
          setter="dbates"
    />
          </attachment>
      

    </bug>

</bugzilla>