<?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>137764</bug_id>
          
          <creation_ts>2014-10-15 19:15:41 -0700</creation_ts>
          <short_desc>Use is&lt;&gt;() / downcast&lt;&gt;() for list-related render objects</short_desc>
          <delta_ts>2014-10-15 23:04:42 -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>Layout and Rendering</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>137424</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>benjamin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>kling</cc>
    
    <cc>mihnea</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1042037</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-10-15 19:15:41 -0700</bug_when>
    <thetext>Use is&lt;&gt;() / downcast&lt;&gt;() for list-related render objects</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1042039</commentid>
    <comment_count>1</comment_count>
      <attachid>239917</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-10-15 19:20:28 -0700</bug_when>
    <thetext>Created attachment 239917
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1042063</commentid>
    <comment_count>2</comment_count>
      <attachid>239917</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2014-10-15 21:17:48 -0700</bug_when>
    <thetext>Comment on attachment 239917
Patch

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

&gt; Source/WebCore/html/HTMLLIElement.cpp:97
&gt;      while (!listNode) {

This loop is so weird.

I would prefer a while(true)+break or a do-while.

&gt; Source/WebCore/rendering/RenderListItem.cpp:155
&gt; +        Node* otherList = enclosingList(downcast&lt;RenderListItem&gt;(renderer));

Node-&gt;Element</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1042064</commentid>
    <comment_count>3</comment_count>
      <attachid>239927</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-10-15 21:34:19 -0700</bug_when>
    <thetext>Created attachment 239927
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1042072</commentid>
    <comment_count>4</comment_count>
      <attachid>239927</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-10-15 23:04:38 -0700</bug_when>
    <thetext>Comment on attachment 239927
Patch

Clearing flags on attachment: 239927

Committed r174759: &lt;http://trac.webkit.org/changeset/174759&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1042073</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-10-15 23:04:42 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>239917</attachid>
            <date>2014-10-15 19:20:28 -0700</date>
            <delta_ts>2014-10-15 21:34:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-137764-20141015192033.patch</filename>
            <type>text/plain</type>
            <size>38002</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc0NzU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTM4ZmIyZjk5NjJlZTUx
MjA3OTFmMDFlZGJmMjQwMzI3MDc5YWJkMi4uMzJmNDFlN2Y1MDdiMDg0NzkyNzU0NTg0YjMyZDA5
YTU4MTM3NzAwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDY5IEBACiAyMDE0LTEwLTE1ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKKyAgICAgICAgVXNlIGlzPD4oKSAvIGRvd25j
YXN0PD4oKSBmb3IgbGlzdC1yZWxhdGVkIHJlbmRlciBvYmplY3RzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzc3NjQKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVc2UgaXM8PigpIC8gZG93bmNhc3Q8Pigp
IGZvciBsaXN0LXJlbGF0ZWQgcmVuZGVyIG9iamVjdHMgYW5kIGNsZWFuIHVwCisgICAgICAgIHRo
ZSBzdXJyb3VuZGluZyBjb2RlLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgbm8gYmVoYXZpb3Ig
Y2hhbmdlLgorCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TGlzdEJveC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5TGlzdEJveDo6dmlzaWJsZUNoaWxk
cmVuKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlMaXN0Qm94OjplbGVtZW50QWNj
ZXNzaWJpbGl0eUhpdFRlc3QpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eUxpc3RCb3hPcHRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eUxpc3RC
b3hPcHRpb246OmVsZW1lbnRSZWN0KToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cmVuZGVyTGlzdEl0ZW1Db250YWlu
ZXJGb3JOb2RlKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxl
SHlwZXJsaW5rLmNwcDoKKyAgICAgICAgKGdldFJhbmdlTGVuZ3RoRm9yT2JqZWN0KToKKyAgICAg
ICAgKiBhY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNlVGV4dC5jcHA6
CisgICAgICAgIChhY2Nlc3NpYmlsaXR5T2JqZWN0TGVuZ3RoKToKKyAgICAgICAgKG9mZnNldEFk
anVzdG1lbnRGb3JMaXN0SXRlbSk6CisgICAgICAgICh3ZWJraXRBY2Nlc3NpYmxlVGV4dEdldFRl
eHQpOgorICAgICAgICAqIGVkaXRpbmcvQnJlYWtCbG9ja3F1b3RlQ29tbWFuZC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpCcmVha0Jsb2NrcXVvdGVDb21tYW5kOjpkb0FwcGx5KToKKyAgICAgICAg
KiBodG1sL0hUTUxMSUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTExJRWxlbWVu
dDo6ZGlkQXR0YWNoUmVuZGVyZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxMSUVsZW1lbnQ6
OnBhcnNlVmFsdWUpOgorICAgICAgICAqIGh0bWwvSFRNTFNlbGVjdEVsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTFNlbGVjdEVsZW1lbnQ6Om5leHRTZWxlY3RhYmxlTGlzdEluZGV4
UGFnZUF3YXkpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNlbGVjdEVsZW1lbnQ6OnNjcm9sbFRv
U2VsZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTZWxlY3RFbGVtZW50OjpzZXRPcHRp
b25zQ2hhbmdlZE9uUmVuZGVyZXIpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNlbGVjdEVsZW1l
bnQ6OnNlbGVjdE9wdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MU2VsZWN0RWxlbWVudDo6
cGxhdGZvcm1IYW5kbGVLZXlkb3duRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNlbGVj
dEVsZW1lbnQ6Om1lbnVMaXN0RGVmYXVsdEV2ZW50SGFuZGxlcik6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MU2VsZWN0RWxlbWVudDo6bGlzdEJveERlZmF1bHRFdmVudEhhbmRsZXIpOgorICAgICAg
ICAqIGh0bWwvSFRNTFNlbGVjdEVsZW1lbnRXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TFNlbGVjdEVsZW1lbnQ6OnBsYXRmb3JtSGFuZGxlS2V5ZG93bkV2ZW50KToKKyAgICAgICAgKiBw
YWdlL21hYy9FdmVudEhhbmRsZXJNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRs
ZXI6OnBsYXRmb3JtUHJlcGFyZUZvcldoZWVsRXZlbnRzKToKKyAgICAgICAgKiByZW5kZXJpbmcv
SW5saW5lRmxvd0JveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVGbG93Qm94OjphZGRU
b0xpbmUpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lRmxvd0JveDo6cGxhY2VCb3hSYW5nZUlu
SW5saW5lRGlyZWN0aW9uKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQ291bnRlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpwbGFuQ291bnRlcik6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlckxpc3RCb3guaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGlzdEl0ZW0uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6bmV4dExpc3RJdGVtKToKKyAgICAgICAgKFdlYkNvcmU6OnByZXZp
b3VzTGlzdEl0ZW0pOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMaXN0SXRlbS5oOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJMaXN0TWFya2VyLmg6CisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlck1lbnVMaXN0Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRyZWVBc1RleHQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6bWFya2VyVGV4dEZvckxpc3RJdGVtKToKKyAgICAgICAg
KiByZW5kZXJpbmcvVGV4dEF1dG9TaXppbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEF1
dG9TaXppbmdWYWx1ZTo6YWRqdXN0Tm9kZVNpemVzKToKKyAgICAgICAgKiByZW5kZXJpbmcvbGlu
ZS9CcmVha2luZ0NvbnRleHRJbmxpbmVIZWFkZXJzLmg6CisgICAgICAgIChXZWJDb3JlOjpCcmVh
a2luZ0NvbnRleHQ6OmhhbmRsZVJlcGxhY2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkJyZWFraW5n
Q29udGV4dDo6Y29tbWl0QW5kVXBkYXRlTGluZUJyZWFrSWZOZWVkZWQpOgorICAgICAgICAqIHRl
c3RpbmcvSW50ZXJuYWxzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6aXNTZWxl
Y3RQb3B1cFZpc2libGUpOgorCisyMDE0LTEwLTE1ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBs
ZS5jb20+CisKICAgICAgICAgW01hY10gRml4IGluZWZmaWNpZW5jaWVzIGluIFJlc291cmNlUmVz
cG9uc2U6OnBsYXRmb3JtTGF6eUluaXQoSW5pdExldmVsKSAtIFBhcnQgMgogICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM3NzIxCiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUxpc3RCb3guY3BwIGIv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TGlzdEJveC5jcHAKaW5k
ZXggMGY4ZTFkOWI1NmU3ODhmODE3NTNiMWYyMDBjZmIyNzUzYmIxYjBiYy4uMzU2MWVlNmRhZDFh
MjY5ODBlN2EzMWE0NDkzZGFiZjI3ZjM1MmJkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TGlzdEJveC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TGlzdEJveC5jcHAKQEAgLTEyNyw3ICsxMjcs
NyBAQCB2b2lkIEFjY2Vzc2liaWxpdHlMaXN0Qm94Ojp2aXNpYmxlQ2hpbGRyZW4oQWNjZXNzaWJp
bGl0eUNoaWxkcmVuVmVjdG9yJiByZXN1bHQpCiAgICAgCiAgICAgdW5zaWduZWQgbGVuZ3RoID0g
bV9jaGlsZHJlbi5zaXplKCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsg
aSsrKSB7Ci0gICAgICAgIGlmICh0b1JlbmRlckxpc3RCb3gobV9yZW5kZXJlciktPmxpc3RJbmRl
eElzVmlzaWJsZShpKSkKKyAgICAgICAgaWYgKGRvd25jYXN0PFJlbmRlckxpc3RCb3g+KCptX3Jl
bmRlcmVyKS5saXN0SW5kZXhJc1Zpc2libGUoaSkpCiAgICAgICAgICAgICByZXN1bHQuYXBwZW5k
KG1fY2hpbGRyZW5baV0pOwogICAgIH0KIH0KQEAgLTE1OSw4ICsxNTksOCBAQCBBY2Nlc3NpYmls
aXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5TGlzdEJveDo6ZWxlbWVudEFjY2Vzc2liaWxpdHlIaXRU
ZXN0KGNvbnN0IEludAogICAgIAogICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGxpc3RCb3hPcHRp
b24gPSBudWxscHRyOwogICAgIHVuc2lnbmVkIGxlbmd0aCA9IG1fY2hpbGRyZW4uc2l6ZSgpOwot
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgewotICAgICAgICBMYXlv
dXRSZWN0IHJlY3QgPSB0b1JlbmRlckxpc3RCb3gobV9yZW5kZXJlciktPml0ZW1Cb3VuZGluZ0Jv
eFJlY3QocGFyZW50UmVjdC5sb2NhdGlvbigpLCBpKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgbGVuZ3RoOyArK2kpIHsKKyAgICAgICAgTGF5b3V0UmVjdCByZWN0ID0gZG93bmNhc3Q8
UmVuZGVyTGlzdEJveD4oKm1fcmVuZGVyZXIpLml0ZW1Cb3VuZGluZ0JveFJlY3QocGFyZW50UmVj
dC5sb2NhdGlvbigpLCBpKTsKICAgICAgICAgLy8gVGhlIGNhc3QgdG8gSFRNTEVsZW1lbnQgYmVs
b3cgaXMgc2FmZSBiZWNhdXNlIHRoZSBvbmx5IG90aGVyIHBvc3NpYmxlIGxpc3RJdGVtIHR5cGUK
ICAgICAgICAgLy8gd291bGQgYmUgYSBXTUxFbGVtZW50LCBidXQgV01MIGJ1aWxkcyBkb24ndCB1
c2UgYWNjZXNzaWJpbGl0eSBmZWF0dXJlcyBhdCBhbGwuCiAgICAgICAgIGlmIChyZWN0LmNvbnRh
aW5zKHBvaW50KSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5TGlzdEJveE9wdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlMaXN0Qm94T3B0aW9uLmNwcAppbmRleCBkY2EwZWE2ZWM2Zjg5MjEw
M2RiOWIxOWRmODIyMGZhMTk1YWUzYjQ2Li5jYWE2ZGIwNTI1NWMyMTZkZDg1MmU5YzY5YmY1ODcx
NmM1M2Y0M2M0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlMaXN0Qm94T3B0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlMaXN0Qm94T3B0aW9uLmNwcApAQCAtMTAwLDE0ICsxMDAsMTQgQEAg
TGF5b3V0UmVjdCBBY2Nlc3NpYmlsaXR5TGlzdEJveE9wdGlvbjo6ZWxlbWVudFJlY3QoKSBjb25z
dAogICAgIGlmICghbGlzdEJveFBhcmVudE5vZGUpCiAgICAgICAgIHJldHVybiByZWN0OwogICAg
IAotICAgIFJlbmRlck9iamVjdCogbGlzdEJveFJlbmRlcmVyID0gbGlzdEJveFBhcmVudE5vZGUt
PnJlbmRlcmVyKCk7CisgICAgUmVuZGVyRWxlbWVudCogbGlzdEJveFJlbmRlcmVyID0gbGlzdEJv
eFBhcmVudE5vZGUtPnJlbmRlcmVyKCk7CiAgICAgaWYgKCFsaXN0Qm94UmVuZGVyZXIpCiAgICAg
ICAgIHJldHVybiByZWN0OwogICAgIAogICAgIExheW91dFJlY3QgcGFyZW50UmVjdCA9IGxpc3RC
b3hSZW5kZXJlci0+ZG9jdW1lbnQoKS5heE9iamVjdENhY2hlKCktPmdldE9yQ3JlYXRlKGxpc3RC
b3hSZW5kZXJlciktPmJvdW5kaW5nQm94UmVjdCgpOwogICAgIGludCBpbmRleCA9IGxpc3RCb3hP
cHRpb25JbmRleCgpOwogICAgIGlmIChpbmRleCAhPSAtMSkKLSAgICAgICAgcmVjdCA9IHRvUmVu
ZGVyTGlzdEJveChsaXN0Qm94UmVuZGVyZXIpLT5pdGVtQm91bmRpbmdCb3hSZWN0KHBhcmVudFJl
Y3QubG9jYXRpb24oKSwgaW5kZXgpOworICAgICAgICByZWN0ID0gZG93bmNhc3Q8UmVuZGVyTGlz
dEJveD4oKmxpc3RCb3hSZW5kZXJlcikuaXRlbUJvdW5kaW5nQm94UmVjdChwYXJlbnRSZWN0Lmxv
Y2F0aW9uKCksIGluZGV4KTsKICAgICAKICAgICByZXR1cm4gcmVjdDsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwCmluZGV4
IGU0N2JhOTQ5OGYzMGE2OWZjOWZlZDdmOWZjNmYzMWIwZjllMWIwMjMuLmU3YzdkMmM1MDk1MmJk
OWJiZDc3N2I5NTA5YTY3ZjMwNWU0YWExOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcApAQCAtMTE2MCw4ICsxMTYwLDgg
QEAgc3RhdGljIFJlbmRlckxpc3RJdGVtKiByZW5kZXJMaXN0SXRlbUNvbnRhaW5lckZvck5vZGUo
Tm9kZSogbm9kZSkKIHsKICAgICBmb3IgKDsgbm9kZTsgbm9kZSA9IG5vZGUtPnBhcmVudE5vZGUo
KSkgewogICAgICAgICBSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVuZGVyZXIgPSBub2RlLT5yZW5k
ZXJCb3hNb2RlbE9iamVjdCgpOwotICAgICAgICBpZiAocmVuZGVyZXIgJiYgcmVuZGVyZXItPmlz
TGlzdEl0ZW0oKSkKLSAgICAgICAgICAgIHJldHVybiB0b1JlbmRlckxpc3RJdGVtKHJlbmRlcmVy
KTsKKyAgICAgICAgaWYgKGlzPFJlbmRlckxpc3RJdGVtPihyZW5kZXJlcikpCisgICAgICAgICAg
ICByZXR1cm4gZG93bmNhc3Q8UmVuZGVyTGlzdEl0ZW0+KHJlbmRlcmVyKTsKICAgICB9CiAgICAg
cmV0dXJuIG51bGxwdHI7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSHlwZXJsaW5rLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVIeXBlcmxpbmsuY3BwCmluZGV4IDBlNGEw
YzhlZGZhZGU5MjBlMmRkN2U4YjE0YmI3MThlYTZhYzI4MjguLmNkNzljNGI1M2U2NWY4ZGI0YjI4
ZWVjN2E2MGMyNmY1MDU2YzAwY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVIeXBlcmxpbmsuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVIeXBlcmxpbmsuY3BwCkBAIC0y
MzEsMTAgKzIzMSwxMCBAQCBzdGF0aWMgZ2ludCBnZXRSYW5nZUxlbmd0aEZvck9iamVjdChBY2Nl
c3NpYmlsaXR5T2JqZWN0KiBvYmosIFJhbmdlKiByYW5nZSkKICAgICAgICAgcmV0dXJuIGJhc2VM
ZW5ndGg7CiAKICAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gbWFya2VyT2JqLT5yZW5kZXJl
cigpOwotICAgIGlmICghcmVuZGVyZXIgfHwgIXJlbmRlcmVyLT5pc0xpc3RNYXJrZXIoKSkKKyAg
ICBpZiAoIWlzPFJlbmRlckxpc3RNYXJrZXI+KHJlbmRlcmVyKSkKICAgICAgICAgcmV0dXJuIGJh
c2VMZW5ndGg7CiAKLSAgICBSZW5kZXJMaXN0TWFya2VyJiBtYXJrZXIgPSB0b1JlbmRlckxpc3RN
YXJrZXIoKnJlbmRlcmVyKTsKKyAgICBhdXRvJiBtYXJrZXIgPSBkb3duY2FzdDxSZW5kZXJMaXN0
TWFya2VyPigqcmVuZGVyZXIpOwogICAgIHJldHVybiBiYXNlTGVuZ3RoICsgbWFya2VyLnRleHQo
KS5sZW5ndGgoKSArIG1hcmtlci5zdWZmaXgoKS5sZW5ndGgoKTsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUludGVyZmFj
ZVRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNz
aWJsZUludGVyZmFjZVRleHQuY3BwCmluZGV4IDM5NDkyOGI1YzY2OWQ2ZWQ4MWU4ZDQ5Yjk0Yjg3
ZjE2ZmU2YmM5OTguLmQxNDE5ZDg2MWU3YzYzZWRkZDM2MWMyNDEzYWNlMWIxNjJjYmJhMjUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2li
bGVJbnRlcmZhY2VUZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0
ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNlVGV4dC5jcHAKQEAgLTI3MCw4ICsyNzAsOCBAQCBz
dGF0aWMgZ3VpbnQgYWNjZXNzaWJpbGl0eU9iamVjdExlbmd0aChjb25zdCBBY2Nlc3NpYmlsaXR5
T2JqZWN0KiBvYmplY3QpCiAgICAgLy8gZm9yIHRob3NlIGNhc2VzIHdoZW4gaXQncyBuZWVkZWQg
dG8gdGFrZSBpdCBpbnRvIGFjY291bnQKICAgICAvLyBzZXBhcmF0ZWx5IChhcyBpbiBnZXRBY2Nl
c3NpYmlsaXR5T2JqZWN0Rm9yT2Zmc2V0KQogICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBv
YmplY3QtPnJlbmRlcmVyKCk7Ci0gICAgaWYgKHJlbmRlcmVyICYmIHJlbmRlcmVyLT5pc0xpc3RN
YXJrZXIoKSkgewotICAgICAgICBSZW5kZXJMaXN0TWFya2VyJiBtYXJrZXIgPSB0b1JlbmRlckxp
c3RNYXJrZXIoKnJlbmRlcmVyKTsKKyAgICBpZiAoaXM8UmVuZGVyTGlzdE1hcmtlcj4ocmVuZGVy
ZXIpKSB7CisgICAgICAgIGF1dG8mIG1hcmtlciA9IGRvd25jYXN0PFJlbmRlckxpc3RNYXJrZXI+
KCpyZW5kZXJlcik7CiAgICAgICAgIHJldHVybiBtYXJrZXIudGV4dCgpLmxlbmd0aCgpICsgbWFy
a2VyLnN1ZmZpeCgpLmxlbmd0aCgpOwogICAgIH0KIApAQCAtMzYzLDggKzM2Myw4IEBAIHN0YXRp
YyBpbnQgb2Zmc2V0QWRqdXN0bWVudEZvckxpc3RJdGVtKGNvbnN0IEFjY2Vzc2liaWxpdHlPYmpl
Y3QqIG9iamVjdCkKICAgICAvLyBXZSBuZWVkIHRvIGFkanVzdCB0aGUgb2Zmc2V0cyBmb3IgdGhl
IGxpc3QgaXRlbSBtYXJrZXIgaW4KICAgICAvLyBMZWZ0LVRvLVJpZ2h0IHRleHQsIHNpbmNlIHdl
IGV4cG9zZSBpdCB0b2dldGhlciB3aXRoIHRoZSB0ZXh0LgogICAgIFJlbmRlck9iamVjdCogcmVu
ZGVyZXIgPSBvYmplY3QtPnJlbmRlcmVyKCk7Ci0gICAgaWYgKHJlbmRlcmVyICYmIHJlbmRlcmVy
LT5pc0xpc3RJdGVtKCkgJiYgcmVuZGVyZXItPnN0eWxlKCkuZGlyZWN0aW9uKCkgPT0gTFRSKQot
ICAgICAgICByZXR1cm4gdG9SZW5kZXJMaXN0SXRlbShyZW5kZXJlciktPm1hcmtlclRleHRXaXRo
U3VmZml4KCkubGVuZ3RoKCk7CisgICAgaWYgKGlzPFJlbmRlckxpc3RJdGVtPihyZW5kZXJlcikg
JiYgcmVuZGVyZXItPnN0eWxlKCkuZGlyZWN0aW9uKCkgPT0gTFRSKQorICAgICAgICByZXR1cm4g
ZG93bmNhc3Q8UmVuZGVyTGlzdEl0ZW0+KCpyZW5kZXJlcikubWFya2VyVGV4dFdpdGhTdWZmaXgo
KS5sZW5ndGgoKTsKIAogICAgIHJldHVybiAwOwogfQpAQCAtNDk1LDggKzQ5NSw4IEBAIHN0YXRp
YyBnY2hhciogd2Via2l0QWNjZXNzaWJsZVRleHRHZXRUZXh0KEF0a1RleHQqIHRleHQsIGdpbnQg
c3RhcnRPZmZzZXQsIGdpbnQKICAgICBpbnQgYWN0dWFsRW5kT2Zmc2V0ID0gZW5kT2Zmc2V0ID09
IC0xID8gcmV0Lmxlbmd0aCgpIDogZW5kT2Zmc2V0OwogICAgIGlmIChjb3JlT2JqZWN0LT5yb2xl
VmFsdWUoKSA9PSBMaXN0SXRlbVJvbGUpIHsKICAgICAgICAgUmVuZGVyT2JqZWN0KiBvYmpSZW5k
ZXJlciA9IGNvcmVPYmplY3QtPnJlbmRlcmVyKCk7Ci0gICAgICAgIGlmIChvYmpSZW5kZXJlciAm
JiBvYmpSZW5kZXJlci0+aXNMaXN0SXRlbSgpKSB7Ci0gICAgICAgICAgICBTdHJpbmcgbWFya2Vy
VGV4dCA9IHRvUmVuZGVyTGlzdEl0ZW0ob2JqUmVuZGVyZXIpLT5tYXJrZXJUZXh0V2l0aFN1ZmZp
eCgpOworICAgICAgICBpZiAoaXM8UmVuZGVyTGlzdEl0ZW0+KG9ialJlbmRlcmVyKSkgeworICAg
ICAgICAgICAgU3RyaW5nIG1hcmtlclRleHQgPSBkb3duY2FzdDxSZW5kZXJMaXN0SXRlbT4oKm9i
alJlbmRlcmVyKS5tYXJrZXJUZXh0V2l0aFN1ZmZpeCgpOwogICAgICAgICAgICAgcmV0ID0gb2Jq
UmVuZGVyZXItPnN0eWxlKCkuZGlyZWN0aW9uKCkgPT0gTFRSID8gbWFya2VyVGV4dCArIHJldCA6
IHJldCArIG1hcmtlclRleHQ7CiAgICAgICAgICAgICBpZiAoZW5kT2Zmc2V0ID09IC0xKQogICAg
ICAgICAgICAgICAgIGFjdHVhbEVuZE9mZnNldCA9IHJldC5sZW5ndGgoKSArIG1hcmtlclRleHQu
bGVuZ3RoKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0JyZWFrQmxvY2tx
dW90ZUNvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9CcmVha0Jsb2NrcXVvdGVD
b21tYW5kLmNwcAppbmRleCA2NDRkMzQ1ZmVmMTk4MjNiMTk0ZjQzMzk3MWM5NjFmMzkwYjU1NTk0
Li4yOTRhZGI2ODkzNzgwMDM4NjBlYTliYjIwODkxNWNlOGVlZGFjMGI1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL0JyZWFrQmxvY2txdW90ZUNvbW1hbmQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvQnJlYWtCbG9ja3F1b3RlQ29tbWFuZC5jcHAKQEAgLTE0OCw4
ICsxNDgsOCBAQCB2b2lkIEJyZWFrQmxvY2txdW90ZUNvbW1hbmQ6OmRvQXBwbHkoKQogICAgICAg
ICAgICAgLy8gZmluZCB0aGUgZmlyc3Qgb25lIHNvIHRoYXQgd2Uga25vdyB3aGVyZSB0byBzdGFy
dCBudW1iZXJpbmcuCiAgICAgICAgICAgICB3aGlsZSAobGlzdENoaWxkTm9kZSAmJiAhbGlzdENo
aWxkTm9kZS0+aGFzVGFnTmFtZShsaVRhZykpCiAgICAgICAgICAgICAgICAgbGlzdENoaWxkTm9k
ZSA9IGxpc3RDaGlsZE5vZGUtPm5leHRTaWJsaW5nKCk7Ci0gICAgICAgICAgICBpZiAobGlzdENo
aWxkTm9kZSAmJiBsaXN0Q2hpbGROb2RlLT5yZW5kZXJlcigpICYmIGxpc3RDaGlsZE5vZGUtPnJl
bmRlcmVyKCktPmlzTGlzdEl0ZW0oKSkKLSAgICAgICAgICAgICAgICBzZXROb2RlQXR0cmlidXRl
KGNsb25lZENoaWxkLCBzdGFydEF0dHIsIEF0b21pY1N0cmluZzo6bnVtYmVyKHRvUmVuZGVyTGlz
dEl0ZW0obGlzdENoaWxkTm9kZS0+cmVuZGVyZXIoKSktPnZhbHVlKCkpKTsKKyAgICAgICAgICAg
IGlmIChsaXN0Q2hpbGROb2RlICYmIGlzPFJlbmRlckxpc3RJdGVtPihsaXN0Q2hpbGROb2RlLT5y
ZW5kZXJlcigpKSkKKyAgICAgICAgICAgICAgICBzZXROb2RlQXR0cmlidXRlKGNsb25lZENoaWxk
LCBzdGFydEF0dHIsIEF0b21pY1N0cmluZzo6bnVtYmVyKGRvd25jYXN0PFJlbmRlckxpc3RJdGVt
PigqbGlzdENoaWxkTm9kZS0+cmVuZGVyZXIoKSkudmFsdWUoKSkpOwogICAgICAgICB9CiAgICAg
ICAgICAgICAKICAgICAgICAgYXBwZW5kTm9kZShjbG9uZWRDaGlsZC5nZXQoKSwgY2xvbmVkQW5j
ZXN0b3IuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTElFbGVt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExJRWxlbWVudC5jcHAKaW5kZXggYWIy
ZGY5MTVjZTZiOTJiN2UzN2ZkYzU5Y2QzOWM3YmRkZTRhZGMzNi4uM2E0Zjk3YTRlYWRhNWE1ODcz
NmJlODQyOGZkMzdmMDk4ZjVmYjA5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MTElFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMSUVsZW1lbnQu
Y3BwCkBAIC04NywzOSArODcsMzkgQEAgdm9pZCBIVE1MTElFbGVtZW50OjpwYXJzZUF0dHJpYnV0
ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbmcKIAogdm9pZCBI
VE1MTElFbGVtZW50OjpkaWRBdHRhY2hSZW5kZXJlcnMoKQogewotICAgIGlmICghcmVuZGVyZXIo
KSB8fCAhcmVuZGVyZXIoKS0+aXNMaXN0SXRlbSgpKQorICAgIGlmICghaXM8UmVuZGVyTGlzdEl0
ZW0+KHJlbmRlcmVyKCkpKQogICAgICAgICByZXR1cm47Ci0gICAgUmVuZGVyTGlzdEl0ZW0qIGxp
c3RJdGVtUmVuZGVyZXIgPSB0b1JlbmRlckxpc3RJdGVtKHJlbmRlcmVyKCkpOworICAgIGF1dG8m
IGxpc3RJdGVtUmVuZGVyZXIgPSBkb3duY2FzdDxSZW5kZXJMaXN0SXRlbT4oKnJlbmRlcmVyKCkp
OwogCiAgICAgLy8gRmluZCB0aGUgZW5jbG9zaW5nIGxpc3Qgbm9kZS4KLSAgICBFbGVtZW50KiBs
aXN0Tm9kZSA9IDA7CisgICAgRWxlbWVudCogbGlzdE5vZGUgPSBudWxscHRyOwogICAgIEVsZW1l
bnQqIGN1cnJlbnQgPSB0aGlzOwogICAgIHdoaWxlICghbGlzdE5vZGUpIHsKICAgICAgICAgY3Vy
cmVudCA9IGN1cnJlbnQtPnBhcmVudEVsZW1lbnQoKTsKICAgICAgICAgaWYgKCFjdXJyZW50KQog
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGlmIChjdXJyZW50LT5oYXNUYWdOYW1lKHVsVGFn
KSB8fCBjdXJyZW50LT5oYXNUYWdOYW1lKG9sVGFnKSkKKyAgICAgICAgaWYgKGlzPEhUTUxVTGlz
dEVsZW1lbnQ+KCpjdXJyZW50KSB8fCBpczxIVE1MT0xpc3RFbGVtZW50PigqY3VycmVudCkpCiAg
ICAgICAgICAgICBsaXN0Tm9kZSA9IGN1cnJlbnQ7CiAgICAgfQogCiAgICAgLy8gSWYgd2UgYXJl
IG5vdCBpbiBhIGxpc3QsIHRlbGwgdGhlIHJlbmRlcmVyIHNvIGl0IGNhbiBwb3NpdGlvbiB1cyBp
bnNpZGUuCiAgICAgLy8gV2UgZG9uJ3Qgd2FudCB0byBjaGFuZ2Ugb3VyIHN0eWxlIHRvIHNheSAi
aW5zaWRlIiBzaW5jZSB0aGF0IHdvdWxkIGFmZmVjdCBuZXN0ZWQgbm9kZXMuCiAgICAgaWYgKCFs
aXN0Tm9kZSkKLSAgICAgICAgbGlzdEl0ZW1SZW5kZXJlci0+c2V0Tm90SW5MaXN0KHRydWUpOwor
ICAgICAgICBsaXN0SXRlbVJlbmRlcmVyLnNldE5vdEluTGlzdCh0cnVlKTsKIAogICAgIHBhcnNl
VmFsdWUoZmFzdEdldEF0dHJpYnV0ZSh2YWx1ZUF0dHIpKTsKIH0KIAogaW5saW5lIHZvaWQgSFRN
TExJRWxlbWVudDo6cGFyc2VWYWx1ZShjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKQogewotICAg
IEFTU0VSVChyZW5kZXJlcigpICYmIHJlbmRlcmVyKCktPmlzTGlzdEl0ZW0oKSk7CisgICAgQVNT
RVJUKHJlbmRlcmVyKCkpOwogCiAgICAgYm9vbCB2YWx1ZU9LOwogICAgIGludCByZXF1ZXN0ZWRW
YWx1ZSA9IHZhbHVlLnRvSW50KCZ2YWx1ZU9LKTsKICAgICBpZiAodmFsdWVPSykKLSAgICAgICAg
dG9SZW5kZXJMaXN0SXRlbShyZW5kZXJlcigpKS0+c2V0RXhwbGljaXRWYWx1ZShyZXF1ZXN0ZWRW
YWx1ZSk7CisgICAgICAgIGRvd25jYXN0PFJlbmRlckxpc3RJdGVtPigqcmVuZGVyZXIoKSkuc2V0
RXhwbGljaXRWYWx1ZShyZXF1ZXN0ZWRWYWx1ZSk7CiAgICAgZWxzZQotICAgICAgICB0b1JlbmRl
ckxpc3RJdGVtKHJlbmRlcmVyKCkpLT5jbGVhckV4cGxpY2l0VmFsdWUoKTsKKyAgICAgICAgZG93
bmNhc3Q8UmVuZGVyTGlzdEl0ZW0+KCpyZW5kZXJlcigpKS5jbGVhckV4cGxpY2l0VmFsdWUoKTsK
IH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2VsZWN0RWxlbWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50LmNwcAppbmRleCBj
NGQxMjY1ZTc0NTkzNWFlYzBjMDQxZjkyYzk2Mzc1MjA0YjBiZmQyLi40Zjg5ODM2MmY4NTEyN2Zk
MTkzMDk5MmY1YTA1MzlmNDliZWIyMjBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxTZWxlY3RFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTZWxl
Y3RFbGVtZW50LmNwcApAQCAtNTYyLDE0ICs1NjIsMTQgQEAgaW50IEhUTUxTZWxlY3RFbGVtZW50
OjpuZXh0U2VsZWN0YWJsZUxpc3RJbmRleFBhZ2VBd2F5KGludCBzdGFydEluZGV4LCBTa2lwRGly
ZWMKICAgICBjb25zdCBWZWN0b3I8SFRNTEVsZW1lbnQqPiYgaXRlbXMgPSBsaXN0SXRlbXMoKTsK
ICAgICAvLyBDYW4ndCB1c2UgbV9zaXplIGJlY2F1c2UgcmVuZGVyZXIgZm9yY2VzIGEgbWluaW11
bSBzaXplLgogICAgIGludCBwYWdlU2l6ZSA9IDA7Ci0gICAgaWYgKHJlbmRlcmVyKCktPmlzTGlz
dEJveCgpKQotICAgICAgICBwYWdlU2l6ZSA9IHRvUmVuZGVyTGlzdEJveChyZW5kZXJlcigpKS0+
c2l6ZSgpIC0gMTsgLy8gLTEgc28gd2Ugc3RpbGwgc2hvdyBjb250ZXh0LgorICAgIGlmIChpczxS
ZW5kZXJMaXN0Qm94PigqcmVuZGVyZXIoKSkpCisgICAgICAgIHBhZ2VTaXplID0gZG93bmNhc3Q8
UmVuZGVyTGlzdEJveD4oKnJlbmRlcmVyKCkpLnNpemUoKSAtIDE7IC8vIC0xIHNvIHdlIHN0aWxs
IHNob3cgY29udGV4dC4KIAogICAgIC8vIE9uZSBwYWdlIGF3YXksIGJ1dCBub3Qgb3V0c2lkZSB2
YWxpZCBib3VuZHMuCiAgICAgLy8gSWYgdGhlcmUgaXMgYSB2YWxpZCBvcHRpb24gaXRlbSBvbmUg
cGFnZSBhd2F5LCB0aGUgaW5kZXggaXMgY2hvc2VuLgogICAgIC8vIElmIHRoZXJlIGlzIG5vIGV4
YWN0IG9uZSBwYWdlIGF3YXkgdmFsaWQgb3B0aW9uLCByZXR1cm5zIHN0YXJ0SW5kZXggb3IgdGhl
IG1vc3QgZmFyIGluZGV4LgotICAgIGludCBlZGdlSW5kZXggPSAoZGlyZWN0aW9uID09IFNraXBG
b3J3YXJkcykgPyAwIDogKGl0ZW1zLnNpemUoKSAtIDEpOwotICAgIGludCBza2lwQW1vdW50ID0g
cGFnZVNpemUgKyAoKGRpcmVjdGlvbiA9PSBTa2lwRm9yd2FyZHMpID8gc3RhcnRJbmRleCA6IChl
ZGdlSW5kZXggLSBzdGFydEluZGV4KSk7CisgICAgaW50IGVkZ2VJbmRleCA9IGRpcmVjdGlvbiA9
PSBTa2lwRm9yd2FyZHMgPyAwIDogaXRlbXMuc2l6ZSgpIC0gMTsKKyAgICBpbnQgc2tpcEFtb3Vu
dCA9IHBhZ2VTaXplICsgKGRpcmVjdGlvbiA9PSBTa2lwRm9yd2FyZHMgPyBzdGFydEluZGV4IDog
ZWRnZUluZGV4IC0gc3RhcnRJbmRleCk7CiAgICAgcmV0dXJuIG5leHRWYWxpZEluZGV4KGVkZ2VJ
bmRleCwgZGlyZWN0aW9uLCBza2lwQW1vdW50KTsKIH0KIApAQCAtNzA3LDI2ICs3MDcsMjYgQEAg
dm9pZCBIVE1MU2VsZWN0RWxlbWVudDo6c2Nyb2xsVG9TZWxlY3Rpb24oKQogICAgIGlmICh1c2Vz
TWVudUxpc3QoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0byByZW5kZXJlciA9IHRoaXMt
PnJlbmRlcmVyKCk7Ci0gICAgaWYgKCFyZW5kZXJlciB8fCAhcmVuZGVyZXItPmlzTGlzdEJveCgp
KQorICAgIGF1dG8qIHJlbmRlcmVyID0gdGhpcy0+cmVuZGVyZXIoKTsKKyAgICBpZiAoIWlzPFJl
bmRlckxpc3RCb3g+KHJlbmRlcmVyKSkKICAgICAgICAgcmV0dXJuOwotICAgIHRvUmVuZGVyTGlz
dEJveChyZW5kZXJlciktPnNlbGVjdGlvbkNoYW5nZWQoKTsKKyAgICBkb3duY2FzdDxSZW5kZXJM
aXN0Qm94PigqcmVuZGVyZXIpLnNlbGVjdGlvbkNoYW5nZWQoKTsKICNlbHNlCi0gICAgaWYgKGF1
dG8gcmVuZGVyZXIgPSB0aGlzLT5yZW5kZXJlcigpKQorICAgIGlmIChhdXRvKiByZW5kZXJlciA9
IHRoaXMtPnJlbmRlcmVyKCkpCiAgICAgICAgIHJlbmRlcmVyLT5yZXBhaW50KCk7CiAjZW5kaWYK
IH0KIAogdm9pZCBIVE1MU2VsZWN0RWxlbWVudDo6c2V0T3B0aW9uc0NoYW5nZWRPblJlbmRlcmVy
KCkKIHsKLSAgICBpZiAoYXV0byByZW5kZXJlciA9IHRoaXMtPnJlbmRlcmVyKCkpIHsKKyAgICBp
ZiAoYXV0byogcmVuZGVyZXIgPSB0aGlzLT5yZW5kZXJlcigpKSB7CiAjaWYgIVBMQVRGT1JNKElP
UykKLSAgICAgICAgaWYgKHJlbmRlcmVyLT5pc01lbnVMaXN0KCkpCi0gICAgICAgICAgICB0b1Jl
bmRlck1lbnVMaXN0KHJlbmRlcmVyKS0+c2V0T3B0aW9uc0NoYW5nZWQodHJ1ZSk7CisgICAgICAg
IGlmIChpczxSZW5kZXJNZW51TGlzdD4oKnJlbmRlcmVyKSkKKyAgICAgICAgICAgIGRvd25jYXN0
PFJlbmRlck1lbnVMaXN0PigqcmVuZGVyZXIpLnNldE9wdGlvbnNDaGFuZ2VkKHRydWUpOwogICAg
ICAgICBlbHNlCi0gICAgICAgICAgICB0b1JlbmRlckxpc3RCb3gocmVuZGVyZXIpLT5zZXRPcHRp
b25zQ2hhbmdlZCh0cnVlKTsKKyAgICAgICAgICAgIGRvd25jYXN0PFJlbmRlckxpc3RCb3g+KCpy
ZW5kZXJlcikuc2V0T3B0aW9uc0NoYW5nZWQodHJ1ZSk7CiAjZWxzZQotICAgICAgICB0b1JlbmRl
ck1lbnVMaXN0KHJlbmRlcmVyKS0+c2V0T3B0aW9uc0NoYW5nZWQodHJ1ZSk7CisgICAgICAgIGRv
d25jYXN0PFJlbmRlck1lbnVMaXN0PigqcmVuZGVyZXIpLnNldE9wdGlvbnNDaGFuZ2VkKHRydWUp
OwogI2VuZGlmCiAgICAgfQogfQpAQCAtODg5LDcgKzg4OSw3IEBAIHZvaWQgSFRNTFNlbGVjdEVs
ZW1lbnQ6OnNlbGVjdE9wdGlvbihpbnQgb3B0aW9uSW5kZXgsIFNlbGVjdE9wdGlvbkZsYWdzIGZs
YWdzKQogICAgICAgICBkZXNlbGVjdEl0ZW1zV2l0aG91dFZhbGlkYXRpb24oZWxlbWVudCk7CiAK
ICAgICAvLyBGb3IgdGhlIG1lbnUgbGlzdCBjYXNlLCB0aGlzIGlzIHdoYXQgbWFrZXMgdGhlIHNl
bGVjdGVkIGVsZW1lbnQgYXBwZWFyLgotICAgIGlmIChhdXRvIHJlbmRlcmVyID0gdGhpcy0+cmVu
ZGVyZXIoKSkKKyAgICBpZiAoYXV0byogcmVuZGVyZXIgPSB0aGlzLT5yZW5kZXJlcigpKQogICAg
ICAgICByZW5kZXJlci0+dXBkYXRlRnJvbUVsZW1lbnQoKTsKIAogICAgIHNjcm9sbFRvU2VsZWN0
aW9uKCk7CkBAIC04OTgsMTEgKzg5OCwxMSBAQCB2b2lkIEhUTUxTZWxlY3RFbGVtZW50OjpzZWxl
Y3RPcHRpb24oaW50IG9wdGlvbkluZGV4LCBTZWxlY3RPcHRpb25GbGFncyBmbGFncykKICAgICAg
ICAgbV9pc1Byb2Nlc3NpbmdVc2VyRHJpdmVuQ2hhbmdlID0gZmxhZ3MgJiBVc2VyRHJpdmVuOwog
ICAgICAgICBpZiAoZmxhZ3MgJiBEaXNwYXRjaENoYW5nZUV2ZW50KQogICAgICAgICAgICAgZGlz
cGF0Y2hDaGFuZ2VFdmVudEZvck1lbnVMaXN0KCk7Ci0gICAgICAgIGlmIChhdXRvIHJlbmRlcmVy
ID0gdGhpcy0+cmVuZGVyZXIoKSkgewotICAgICAgICAgICAgaWYgKHJlbmRlcmVyLT5pc01lbnVM
aXN0KCkpCi0gICAgICAgICAgICAgICAgdG9SZW5kZXJNZW51TGlzdChyZW5kZXJlciktPmRpZFNl
dFNlbGVjdGVkSW5kZXgobGlzdEluZGV4KTsKKyAgICAgICAgaWYgKGF1dG8qIHJlbmRlcmVyID0g
dGhpcy0+cmVuZGVyZXIoKSkgeworICAgICAgICAgICAgaWYgKGlzPFJlbmRlck1lbnVMaXN0Pigq
cmVuZGVyZXIpKQorICAgICAgICAgICAgICAgIGRvd25jYXN0PFJlbmRlck1lbnVMaXN0PigqcmVu
ZGVyZXIpLmRpZFNldFNlbGVjdGVkSW5kZXgobGlzdEluZGV4KTsKICAgICAgICAgICAgIGVsc2UK
LSAgICAgICAgICAgICAgICB0b1JlbmRlckxpc3RCb3gocmVuZGVyZXIpLT5zZWxlY3Rpb25DaGFu
Z2VkKCk7CisgICAgICAgICAgICAgICAgZG93bmNhc3Q8UmVuZGVyTGlzdEJveD4oKnJlbmRlcmVy
KS5zZWxlY3Rpb25DaGFuZ2VkKCk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTExMjAsNyArMTEy
MCw3IEBAIGJvb2wgSFRNTFNlbGVjdEVsZW1lbnQ6OnBsYXRmb3JtSGFuZGxlS2V5ZG93bkV2ZW50
KEtleWJvYXJkRXZlbnQqIGV2ZW50KQogICAgICAgICAgICAgLy8gQ2FsbGluZyBmb2N1cygpIG1h
eSBjYXVzZSB1cyB0byBsb3NlIG91ciByZW5kZXJlci4gUmV0dXJuIHRydWUgc28KICAgICAgICAg
ICAgIC8vIHRoYXQgb3VyIGNhbGxlciBkb2Vzbid0IHByb2Nlc3MgdGhlIGV2ZW50IGZ1cnRoZXIs
IGJ1dCBkb24ndCBzZXQKICAgICAgICAgICAgIC8vIHRoZSBldmVudCBhcyBoYW5kbGVkLgotICAg
ICAgICAgICAgaWYgKCFyZW5kZXJlcigpIHx8ICFyZW5kZXJlcigpLT5pc01lbnVMaXN0KCkpCisg
ICAgICAgICAgICBpZiAoIWlzPFJlbmRlck1lbnVMaXN0PihyZW5kZXJlcigpKSkKICAgICAgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgICAgICAgICAgLy8gU2F2ZSB0aGUgc2VsZWN0aW9u
IHNvIGl0IGNhbiBiZSBjb21wYXJlZCB0byB0aGUgbmV3IHNlbGVjdGlvbgpAQCAtMTEyOCw3ICsx
MTI4LDcgQEAgYm9vbCBIVE1MU2VsZWN0RWxlbWVudDo6cGxhdGZvcm1IYW5kbGVLZXlkb3duRXZl
bnQoS2V5Ym9hcmRFdmVudCogZXZlbnQpCiAgICAgICAgICAgICAvLyBnZXRzIGNhbGxlZCBmcm9t
IFJlbmRlck1lbnVMaXN0Ojp2YWx1ZUNoYW5nZWQsIHdoaWNoIGdldHMgY2FsbGVkCiAgICAgICAg
ICAgICAvLyBhZnRlciB0aGUgdXNlciBtYWtlcyBhIHNlbGVjdGlvbiBmcm9tIHRoZSBtZW51Lgog
ICAgICAgICAgICAgc2F2ZUxhc3RTZWxlY3Rpb24oKTsKLSAgICAgICAgICAgIHRvUmVuZGVyTWVu
dUxpc3QocmVuZGVyZXIoKSktPnNob3dQb3B1cCgpOworICAgICAgICAgICAgZG93bmNhc3Q8UmVu
ZGVyTWVudUxpc3Q+KCpyZW5kZXJlcigpKS5zaG93UG9wdXAoKTsKICAgICAgICAgICAgIGV2ZW50
LT5zZXREZWZhdWx0SGFuZGxlZCgpOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiB0cnVlOwpA
QCAtMTIxOSw3ICsxMjE5LDcgQEAgdm9pZCBIVE1MU2VsZWN0RWxlbWVudDo6bWVudUxpc3REZWZh
dWx0RXZlbnRIYW5kbGVyKEV2ZW50KiBldmVudCkKIAogICAgICAgICAgICAgICAgIC8vIENhbGxp
bmcgZm9jdXMoKSBtYXkgcmVtb3ZlIHRoZSByZW5kZXJlciBvciBjaGFuZ2UgdGhlCiAgICAgICAg
ICAgICAgICAgLy8gcmVuZGVyZXIgdHlwZS4KLSAgICAgICAgICAgICAgICBpZiAoIXJlbmRlcmVy
KCkgfHwgIXJlbmRlcmVyKCktPmlzTWVudUxpc3QoKSkKKyAgICAgICAgICAgICAgICBpZiAoIWlz
PFJlbmRlck1lbnVMaXN0PihyZW5kZXJlcigpKSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
OwogCiAgICAgICAgICAgICAgICAgLy8gU2F2ZSB0aGUgc2VsZWN0aW9uIHNvIGl0IGNhbiBiZSBj
b21wYXJlZCB0byB0aGUgbmV3IHNlbGVjdGlvbgpAQCAtMTIyNyw3ICsxMjI3LDcgQEAgdm9pZCBI
VE1MU2VsZWN0RWxlbWVudDo6bWVudUxpc3REZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50KiBldmVu
dCkKICAgICAgICAgICAgICAgICAvLyBnZXRzIGNhbGxlZCBmcm9tIFJlbmRlck1lbnVMaXN0Ojp2
YWx1ZUNoYW5nZWQsIHdoaWNoIGdldHMgY2FsbGVkCiAgICAgICAgICAgICAgICAgLy8gYWZ0ZXIg
dGhlIHVzZXIgbWFrZXMgYSBzZWxlY3Rpb24gZnJvbSB0aGUgbWVudS4KICAgICAgICAgICAgICAg
ICBzYXZlTGFzdFNlbGVjdGlvbigpOwotICAgICAgICAgICAgICAgIHRvUmVuZGVyTWVudUxpc3Qo
cmVuZGVyZXIoKSktPnNob3dQb3B1cCgpOworICAgICAgICAgICAgICAgIGRvd25jYXN0PFJlbmRl
ck1lbnVMaXN0PigqcmVuZGVyZXIoKSkuc2hvd1BvcHVwKCk7CiAgICAgICAgICAgICAgICAgaGFu
ZGxlZCA9IHRydWU7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZSBpZiAocmVuZGVyVGhl
bWUtPnBvcHNNZW51QnlBcnJvd0tleXMoKSkgewpAQCAtMTIzNiw3ICsxMjM2LDcgQEAgdm9pZCBI
VE1MU2VsZWN0RWxlbWVudDo6bWVudUxpc3REZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50KiBldmVu
dCkKIAogICAgICAgICAgICAgICAgIC8vIENhbGxpbmcgZm9jdXMoKSBtYXkgcmVtb3ZlIHRoZSBy
ZW5kZXJlciBvciBjaGFuZ2UgdGhlCiAgICAgICAgICAgICAgICAgLy8gcmVuZGVyZXIgdHlwZS4K
LSAgICAgICAgICAgICAgICBpZiAoIXJlbmRlcmVyKCkgfHwgIXJlbmRlcmVyKCktPmlzTWVudUxp
c3QoKSkKKyAgICAgICAgICAgICAgICBpZiAoIWlzPFJlbmRlck1lbnVMaXN0PihyZW5kZXJlcigp
KSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgICAgICAgICAgLy8gU2F2
ZSB0aGUgc2VsZWN0aW9uIHNvIGl0IGNhbiBiZSBjb21wYXJlZCB0byB0aGUgbmV3IHNlbGVjdGlv
bgpAQCAtMTI0NCw3ICsxMjQ0LDcgQEAgdm9pZCBIVE1MU2VsZWN0RWxlbWVudDo6bWVudUxpc3RE
ZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50KiBldmVudCkKICAgICAgICAgICAgICAgICAvLyBnZXRz
IGNhbGxlZCBmcm9tIFJlbmRlck1lbnVMaXN0Ojp2YWx1ZUNoYW5nZWQsIHdoaWNoIGdldHMgY2Fs
bGVkCiAgICAgICAgICAgICAgICAgLy8gYWZ0ZXIgdGhlIHVzZXIgbWFrZXMgYSBzZWxlY3Rpb24g
ZnJvbSB0aGUgbWVudS4KICAgICAgICAgICAgICAgICBzYXZlTGFzdFNlbGVjdGlvbigpOwotICAg
ICAgICAgICAgICAgIHRvUmVuZGVyTWVudUxpc3QocmVuZGVyZXIoKSktPnNob3dQb3B1cCgpOwor
ICAgICAgICAgICAgICAgIGRvd25jYXN0PFJlbmRlck1lbnVMaXN0PigqcmVuZGVyZXIoKSkuc2hv
d1BvcHVwKCk7CiAgICAgICAgICAgICAgICAgaGFuZGxlZCA9IHRydWU7CiAgICAgICAgICAgICB9
IGVsc2UgaWYgKGtleUNvZGUgPT0gJ1xyJykgewogICAgICAgICAgICAgICAgIGlmIChmb3JtKCkp
CkBAIC0xMjYxLDggKzEyNjEsOCBAQCB2b2lkIEhUTUxTZWxlY3RFbGVtZW50OjptZW51TGlzdERl
ZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqIGV2ZW50KQogICAgIGlmIChldmVudC0+dHlwZSgpID09
IGV2ZW50TmFtZXMoKS5tb3VzZWRvd25FdmVudCAmJiBpczxNb3VzZUV2ZW50PigqZXZlbnQpICYm
IGRvd25jYXN0PE1vdXNlRXZlbnQ+KCpldmVudCkuYnV0dG9uKCkgPT0gTGVmdEJ1dHRvbikgewog
ICAgICAgICBmb2N1cygpOwogI2lmICFQTEFURk9STShJT1MpCi0gICAgICAgIGlmIChyZW5kZXJl
cigpICYmIHJlbmRlcmVyKCktPmlzTWVudUxpc3QoKSkgewotICAgICAgICAgICAgYXV0byYgbWVu
dUxpc3QgPSB0b1JlbmRlck1lbnVMaXN0KCpyZW5kZXJlcigpKTsKKyAgICAgICAgaWYgKGlzPFJl
bmRlck1lbnVMaXN0PihyZW5kZXJlcigpKSkgeworICAgICAgICAgICAgYXV0byYgbWVudUxpc3Qg
PSBkb3duY2FzdDxSZW5kZXJNZW51TGlzdD4oKnJlbmRlcmVyKCkpOwogICAgICAgICAgICAgQVNT
RVJUKCFtZW51TGlzdC5wb3B1cElzVmlzaWJsZSgpKTsKICAgICAgICAgICAgIC8vIFNhdmUgdGhl
IHNlbGVjdGlvbiBzbyBpdCBjYW4gYmUgY29tcGFyZWQgdG8gdGhlIG5ldwogICAgICAgICAgICAg
Ly8gc2VsZWN0aW9uIHdoZW4gd2UgY2FsbCBvbkNoYW5nZSBkdXJpbmcgc2VsZWN0T3B0aW9uLApA
QCAtMTI3OCw3ICsxMjc4LDcgQEAgdm9pZCBIVE1MU2VsZWN0RWxlbWVudDo6bWVudUxpc3REZWZh
dWx0RXZlbnRIYW5kbGVyKEV2ZW50KiBldmVudCkKIAogI2lmICFQTEFURk9STShJT1MpCiAgICAg
aWYgKGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLmJsdXJFdmVudCAmJiAhZm9jdXNlZCgp
KSB7Ci0gICAgICAgIGF1dG8mIG1lbnVMaXN0ID0gdG9SZW5kZXJNZW51TGlzdCgqcmVuZGVyZXIo
KSk7CisgICAgICAgIGF1dG8mIG1lbnVMaXN0ID0gZG93bmNhc3Q8UmVuZGVyTWVudUxpc3Q+KCpy
ZW5kZXJlcigpKTsKICAgICAgICAgaWYgKG1lbnVMaXN0LnBvcHVwSXNWaXNpYmxlKCkpCiAgICAg
ICAgICAgICBtZW51TGlzdC5oaWRlUG9wdXAoKTsKICAgICB9CkBAIC0xMzQxLDEzICsxMzQxLDEz
IEBAIHZvaWQgSFRNTFNlbGVjdEVsZW1lbnQ6Omxpc3RCb3hEZWZhdWx0RXZlbnRIYW5kbGVyKEV2
ZW50KiBldmVudCkKICAgICBpZiAoZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkubW91c2Vk
b3duRXZlbnQgJiYgaXM8TW91c2VFdmVudD4oKmV2ZW50KSAmJiBkb3duY2FzdDxNb3VzZUV2ZW50
PigqZXZlbnQpLmJ1dHRvbigpID09IExlZnRCdXR0b24pIHsKICAgICAgICAgZm9jdXMoKTsKICAg
ICAgICAgLy8gQ2FsbGluZyBmb2N1cygpIG1heSByZW1vdmUgb3IgY2hhbmdlIG91ciByZW5kZXJl
ciwgaW4gd2hpY2ggY2FzZSB3ZSBkb24ndCB3YW50IHRvIGhhbmRsZSB0aGUgZXZlbnQgZnVydGhl
ci4KLSAgICAgICAgaWYgKCFyZW5kZXJlcigpIHx8ICFyZW5kZXJlcigpLT5pc0xpc3RCb3goKSkK
KyAgICAgICAgaWYgKCFpczxSZW5kZXJMaXN0Qm94PihyZW5kZXJlcigpKSkKICAgICAgICAgICAg
IHJldHVybjsKIAogICAgICAgICAvLyBDb252ZXJ0IHRvIGNvb3JkcyByZWxhdGl2ZSB0byB0aGUg
bGlzdCBib3ggaWYgbmVlZGVkLgogICAgICAgICBNb3VzZUV2ZW50JiBtb3VzZUV2ZW50ID0gZG93
bmNhc3Q8TW91c2VFdmVudD4oKmV2ZW50KTsKICAgICAgICAgSW50UG9pbnQgbG9jYWxPZmZzZXQg
PSByb3VuZGVkSW50UG9pbnQocmVuZGVyZXIoKS0+YWJzb2x1dGVUb0xvY2FsKG1vdXNlRXZlbnQu
YWJzb2x1dGVMb2NhdGlvbigpLCBVc2VUcmFuc2Zvcm1zKSk7Ci0gICAgICAgIGludCBsaXN0SW5k
ZXggPSB0b1JlbmRlckxpc3RCb3gocmVuZGVyZXIoKSktPmxpc3RJbmRleEF0T2Zmc2V0KHRvSW50
U2l6ZShsb2NhbE9mZnNldCkpOworICAgICAgICBpbnQgbGlzdEluZGV4ID0gZG93bmNhc3Q8UmVu
ZGVyTGlzdEJveD4oKnJlbmRlcmVyKCkpLmxpc3RJbmRleEF0T2Zmc2V0KHRvSW50U2l6ZShsb2Nh
bE9mZnNldCkpOwogICAgICAgICBpZiAobGlzdEluZGV4ID49IDApIHsKICAgICAgICAgICAgIGlm
ICghaXNEaXNhYmxlZEZvcm1Db250cm9sKCkpIHsKICNpZiBQTEFURk9STShDT0NPQSkKQEAgLTEz
NjcsNyArMTM2Nyw3IEBAIHZvaWQgSFRNTFNlbGVjdEVsZW1lbnQ6Omxpc3RCb3hEZWZhdWx0RXZl
bnRIYW5kbGVyKEV2ZW50KiBldmVudCkKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBJ
bnRQb2ludCBsb2NhbE9mZnNldCA9IHJvdW5kZWRJbnRQb2ludChyZW5kZXJlcigpLT5hYnNvbHV0
ZVRvTG9jYWwobW91c2VFdmVudC5hYnNvbHV0ZUxvY2F0aW9uKCksIFVzZVRyYW5zZm9ybXMpKTsK
LSAgICAgICAgaW50IGxpc3RJbmRleCA9IHRvUmVuZGVyTGlzdEJveChyZW5kZXJlcigpKS0+bGlz
dEluZGV4QXRPZmZzZXQodG9JbnRTaXplKGxvY2FsT2Zmc2V0KSk7CisgICAgICAgIGludCBsaXN0
SW5kZXggPSBkb3duY2FzdDxSZW5kZXJMaXN0Qm94PigqcmVuZGVyZXIoKSkubGlzdEluZGV4QXRP
ZmZzZXQodG9JbnRTaXplKGxvY2FsT2Zmc2V0KSk7CiAgICAgICAgIGlmIChsaXN0SW5kZXggPj0g
MCkgewogICAgICAgICAgICAgaWYgKCFpc0Rpc2FibGVkRm9ybUNvbnRyb2woKSkgewogICAgICAg
ICAgICAgICAgIGlmIChtX211bHRpcGxlKSB7CkBAIC0xNDc1LDcgKzE0NzUsNyBAQCB2b2lkIEhU
TUxTZWxlY3RFbGVtZW50OjpsaXN0Qm94RGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCogZXZlbnQp
CiAgICAgICAgICAgICAgICAgc2V0QWN0aXZlU2VsZWN0aW9uQW5jaG9ySW5kZXgobV9hY3RpdmVT
ZWxlY3Rpb25FbmRJbmRleCk7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIHRvUmVuZGVy
TGlzdEJveChyZW5kZXJlcigpKS0+c2Nyb2xsVG9SZXZlYWxFbGVtZW50QXRMaXN0SW5kZXgoZW5k
SW5kZXgpOworICAgICAgICAgICAgZG93bmNhc3Q8UmVuZGVyTGlzdEJveD4oKnJlbmRlcmVyKCkp
LnNjcm9sbFRvUmV2ZWFsRWxlbWVudEF0TGlzdEluZGV4KGVuZEluZGV4KTsKICAgICAgICAgICAg
IGlmIChzZWxlY3ROZXdJdGVtKSB7CiAgICAgICAgICAgICAgICAgdXBkYXRlTGlzdEJveFNlbGVj
dGlvbihkZXNlbGVjdE90aGVycyk7CiAgICAgICAgICAgICAgICAgbGlzdEJveE9uQ2hhbmdlKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50V2luLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnRXaW4uY3BwCmluZGV4IDIw
MWM2YTVkMTA3OTlhN2M5NzkzOGE1MzU5MGFjM2NlMWQxOWNlMjIuLjkwZjZlZjcwZjcyYTlkNTZm
ZWI4NTcwZDQ1M2UxNGFhMTIzZWJjNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFNlbGVjdEVsZW1lbnRXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNl
bGVjdEVsZW1lbnRXaW4uY3BwCkBAIC00NSw3ICs0NSw3IEBAIGJvb2wgSFRNTFNlbGVjdEVsZW1l
bnQ6OnBsYXRmb3JtSGFuZGxlS2V5ZG93bkV2ZW50KEtleWJvYXJkRXZlbnQqIGV2ZW50KQogICAg
IC8vIFNhdmUgdGhlIHNlbGVjdGlvbiBzbyBpdCBjYW4gYmUgY29tcGFyZWQgdG8gdGhlIG5ldyBz
ZWxlY3Rpb24gd2hlbiBkaXNwYXRjaGluZyBjaGFuZ2UgZXZlbnRzIGR1cmluZyBzZXRTZWxlY3Rl
ZEluZGV4LAogICAgIC8vIHdoaWNoIGdldHMgY2FsbGVkIGZyb20gUmVuZGVyTWVudUxpc3Q6OnZh
bHVlQ2hhbmdlZCwgd2hpY2ggZ2V0cyBjYWxsZWQgYWZ0ZXIgdGhlIHVzZXIgbWFrZXMgYSBzZWxl
Y3Rpb24gZnJvbSB0aGUgbWVudS4KICAgICBzYXZlTGFzdFNlbGVjdGlvbigpOwotICAgIGlmIChS
ZW5kZXJNZW51TGlzdCogbWVudUxpc3QgPSB0b1JlbmRlck1lbnVMaXN0KHJlbmRlcmVyKCkpKQor
ICAgIGlmIChhdXRvKiBtZW51TGlzdCA9IGRvd25jYXN0PFJlbmRlck1lbnVMaXN0PihyZW5kZXJl
cigpKSkKICAgICAgICAgbWVudUxpc3QtPnNob3dQb3B1cCgpOwogCiAgICAgaW50IGluZGV4ID0g
c2VsZWN0ZWRJbmRleCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvRXZl
bnRIYW5kbGVyTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvRXZlbnRIYW5kbGVyTWFj
Lm1tCmluZGV4IDNkNzUxNDg2OTYyMWZjY2YxNzc3M2FmZTAyNzFjMGU0MmIwYjM4OTQuLjQyYWJj
Mzg4NWEzMGVmNWI5NDA4MzE3Y2I3ZjcwNGUxMjE5Nzg4YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvbWFjL0V2ZW50SGFuZGxlck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL21hYy9FdmVudEhhbmRsZXJNYWMubW0KQEAgLTg0Miw4ICs4NDIsOCBAQCB2b2lkIEV2ZW50
SGFuZGxlcjo6cGxhdGZvcm1QcmVwYXJlRm9yV2hlZWxFdmVudHMoY29uc3QgUGxhdGZvcm1XaGVl
bEV2ZW50JiB3aGVlbAogICAgICAgICAgICAgc2Nyb2xsYWJsZUNvbnRhaW5lciA9IGZpbmRFbmNs
b3NpbmdTY3JvbGxhYmxlQ29udGFpbmVyKCp3aGVlbEV2ZW50VGFyZ2V0KTsKICAgICAgICAgICAg
IGlmIChzY3JvbGxhYmxlQ29udGFpbmVyKSB7CiAgICAgICAgICAgICAgICAgaWYgKFJlbmRlckJv
eCogYm94ID0gc2Nyb2xsYWJsZUNvbnRhaW5lci0+cmVuZGVyQm94KCkpIHsKLSAgICAgICAgICAg
ICAgICAgICAgaWYgKGJveC0+aXNMaXN0Qm94KCkpCi0gICAgICAgICAgICAgICAgICAgICAgICBz
Y3JvbGxhYmxlQXJlYSA9IHRvUmVuZGVyTGlzdEJveChib3gpOworICAgICAgICAgICAgICAgICAg
ICBpZiAoaXM8UmVuZGVyTGlzdEJveD4oKmJveCkpCisgICAgICAgICAgICAgICAgICAgICAgICBz
Y3JvbGxhYmxlQXJlYSA9IGRvd25jYXN0PFJlbmRlckxpc3RCb3g+KGJveCk7CiAgICAgICAgICAg
ICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgIHNjcm9sbGFibGVBcmVhID0g
Ym94LT5sYXllcigpOwogICAgICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9JbmxpbmVGbG93Qm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9JbmxpbmVGbG93Qm94LmNwcAppbmRleCA4MTJkZDBkOTk5ZWE0OTYzMTE3YWY1MTIxMWMxN2M3
NDJjM2M0NjNmLi5jODlkMDJiYTUzZDExOTRkYTA4MmIwN2M2YzEyNzFhNzIzMDZiYTdlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lRmxvd0JveC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUZsb3dCb3guY3BwCkBAIC0xNjEsNyArMTYx
LDcgQEAgdm9pZCBJbmxpbmVGbG93Qm94OjphZGRUb0xpbmUoSW5saW5lQm94KiBjaGlsZCkKICAg
ICAgICAgICAgIGlmIChib3guaGFzUmVuZGVyT3ZlcmZsb3coKSB8fCBib3guaGFzU2VsZlBhaW50
aW5nTGF5ZXIoKSkKICAgICAgICAgICAgICAgICBjaGlsZC0+Y2xlYXJLbm93blRvSGF2ZU5vT3Zl
cmZsb3coKTsKICAgICAgICAgfSBlbHNlIGlmICghY2hpbGQtPnJlbmRlcmVyKCkuaXNMaW5lQnJl
YWsoKSAmJiAoY2hpbGRTdHlsZS5ib3hTaGFkb3coKSB8fCBjaGlsZC0+Ym94TW9kZWxPYmplY3Qo
KS0+aGFzU2VsZlBhaW50aW5nTGF5ZXIoKQotICAgICAgICAgICAgfHwgKGNoaWxkLT5yZW5kZXJl
cigpLmlzTGlzdE1hcmtlcigpICYmICF0b1JlbmRlckxpc3RNYXJrZXIoY2hpbGQtPnJlbmRlcmVy
KCkpLmlzSW5zaWRlKCkpCisgICAgICAgICAgICB8fCAoaXM8UmVuZGVyTGlzdE1hcmtlcj4oY2hp
bGQtPnJlbmRlcmVyKCkpICYmICFkb3duY2FzdDxSZW5kZXJMaXN0TWFya2VyPihjaGlsZC0+cmVu
ZGVyZXIoKSkuaXNJbnNpZGUoKSkKICAgICAgICAgICAgIHx8IGNoaWxkU3R5bGUuaGFzQm9yZGVy
SW1hZ2VPdXRzZXRzKCkpKQogICAgICAgICAgICAgY2hpbGQtPmNsZWFyS25vd25Ub0hhdmVOb092
ZXJmbG93KCk7CiAgICAgICAgIApAQCAtNDA4LDcgKzQwOCw3IEBAIGZsb2F0IElubGluZUZsb3dC
b3g6OnBsYWNlQm94UmFuZ2VJbklubGluZURpcmVjdGlvbihJbmxpbmVCb3gqIGZpcnN0Q2hpbGQs
IElubGluCiAgICAgICAgICAgICAgICAgaWYgKGtub3duVG9IYXZlTm9PdmVyZmxvdygpKQogICAg
ICAgICAgICAgICAgICAgICBtYXhMb2dpY2FsUmlnaHQgPSBzdGQ6Om1heChsb2dpY2FsTGVmdCwg
bWF4TG9naWNhbFJpZ2h0KTsKICAgICAgICAgICAgICAgICBsb2dpY2FsTGVmdCArPSBmbG93Lm1h
cmdpbkxvZ2ljYWxSaWdodCgpOwotICAgICAgICAgICAgfSBlbHNlIGlmICghY2hpbGQtPnJlbmRl
cmVyKCkuaXNMaXN0TWFya2VyKCkgfHwgdG9SZW5kZXJMaXN0TWFya2VyKGNoaWxkLT5yZW5kZXJl
cigpKS5pc0luc2lkZSgpKSB7CisgICAgICAgICAgICB9IGVsc2UgaWYgKCFpczxSZW5kZXJMaXN0
TWFya2VyPihjaGlsZC0+cmVuZGVyZXIoKSkgfHwgZG93bmNhc3Q8UmVuZGVyTGlzdE1hcmtlcj4o
Y2hpbGQtPnJlbmRlcmVyKCkpLmlzSW5zaWRlKCkpIHsKICAgICAgICAgICAgICAgICAvLyBUaGUg
Ym94IGNhbiBoYXZlIGEgZGlmZmVyZW50IHdyaXRpbmctbW9kZSB0aGFuIHRoZSBvdmVyYWxsIGxp
bmUsIHNvIHRoaXMgaXMgYSBiaXQgY29tcGxpY2F0ZWQuCiAgICAgICAgICAgICAgICAgLy8gSnVz
dCBnZXQgYWxsIHRoZSBwaHlzaWNhbCBtYXJnaW4gYW5kIG92ZXJmbG93IHZhbHVlcyBieSBoYW5k
IGJhc2VkIG9mZiB8aXNWZXJ0aWNhbHwuCiAgICAgICAgICAgICAgICAgTGF5b3V0VW5pdCBsb2dp
Y2FsTGVmdE1hcmdpbiA9IGlzSG9yaXpvbnRhbCgpID8gY2hpbGQtPmJveE1vZGVsT2JqZWN0KCkt
Pm1hcmdpbkxlZnQoKSA6IGNoaWxkLT5ib3hNb2RlbE9iamVjdCgpLT5tYXJnaW5Ub3AoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJDb3VudGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJDb3VudGVyLmNwcAppbmRleCA0ODc4YjZmMWQy
ZWViNTIwNWIyNWY2ZThhNzYwNmZmZmE1NTczZjRjLi41ZDU3MDY5ZDQyYWVmNTUwOTQzMWE0MWE2
MTdkMzczOTg1NTFlMjY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQ291bnRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckNvdW50
ZXIuY3BwCkBAIC0xMzEsOSArMTMxLDkgQEAgc3RhdGljIGJvb2wgcGxhbkNvdW50ZXIoUmVuZGVy
RWxlbWVudCYgcmVuZGVyZXIsIGNvbnN0IEF0b21pY1N0cmluZyYgaWRlbnRpZmllciwKICAgICB9
CiAKICAgICBpZiAoaWRlbnRpZmllciA9PSAibGlzdC1pdGVtIikgewotICAgICAgICBpZiAocmVu
ZGVyZXIuaXNMaXN0SXRlbSgpKSB7Ci0gICAgICAgICAgICBpZiAodG9SZW5kZXJMaXN0SXRlbShy
ZW5kZXJlcikuaGFzRXhwbGljaXRWYWx1ZSgpKSB7Ci0gICAgICAgICAgICAgICAgdmFsdWUgPSB0
b1JlbmRlckxpc3RJdGVtKHJlbmRlcmVyKS5leHBsaWNpdFZhbHVlKCk7CisgICAgICAgIGlmIChp
czxSZW5kZXJMaXN0SXRlbT4ocmVuZGVyZXIpKSB7CisgICAgICAgICAgICBpZiAoZG93bmNhc3Q8
UmVuZGVyTGlzdEl0ZW0+KHJlbmRlcmVyKS5oYXNFeHBsaWNpdFZhbHVlKCkpIHsKKyAgICAgICAg
ICAgICAgICB2YWx1ZSA9IGRvd25jYXN0PFJlbmRlckxpc3RJdGVtPihyZW5kZXJlcikuZXhwbGlj
aXRWYWx1ZSgpOwogICAgICAgICAgICAgICAgIGlzUmVzZXQgPSB0cnVlOwogICAgICAgICAgICAg
ICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJMaXN0Qm94LmgKaW5kZXggNTIyMGI4MmZlNmJjYzdmMjk0M2Y3MzQyMWMzODQzMmI4MGRm
ZTJiYS4uOGFlNjlkYjQ0MzM1NDQwYWFlOTNiMTFiZjQ0NTVkODBiNDAwZDg4MSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5oCkBAIC0xNjEsOCArMTYxLDYgQEAgcHJp
dmF0ZToKICAgICBSZWZQdHI8U2Nyb2xsYmFyPiBtX3ZCYXI7CiB9OwogCi1SRU5ERVJfT0JKRUNU
X1RZUEVfQ0FTVFMoUmVuZGVyTGlzdEJveCwgaXNMaXN0Qm94KCkpCi0KIH0gLy8gbmFtZXBhY2Ug
V2ViQ29yZQogCiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1JFTkRFUl9PQkpFQ1QoUmVuZGVyTGlz
dEJveCwgaXNMaXN0Qm94KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTGlzdEl0ZW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RJ
dGVtLmNwcAppbmRleCA2MmY3NDVmNTI5YWUyNDk5M2NlOGNhZDNlM2U5M2ZlMzMzMDZlOTVkLi4z
YjA3YTcwMjQ3ZTA0ZWJmYjM0Yjc2MjliNDg3MzY4MDk1ZmNmZDhjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEl0ZW0uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0SXRlbS5jcHAKQEAgLTExOCwxMCArMTE4LDEwIEBAIHN0
YXRpYyBFbGVtZW50KiBlbmNsb3NpbmdMaXN0KGNvbnN0IFJlbmRlckxpc3RJdGVtKiBsaXN0SXRl
bSkKIH0KIAogLy8gUmV0dXJucyB0aGUgbmV4dCBsaXN0IGl0ZW0gd2l0aCByZXNwZWN0IHRvIHRo
ZSBET00gb3JkZXIuCi1zdGF0aWMgUmVuZGVyTGlzdEl0ZW0qIG5leHRMaXN0SXRlbShjb25zdCBF
bGVtZW50KiBsaXN0Tm9kZSwgY29uc3QgUmVuZGVyTGlzdEl0ZW0qIGl0ZW0gPSAwKQorc3RhdGlj
IFJlbmRlckxpc3RJdGVtKiBuZXh0TGlzdEl0ZW0oY29uc3QgRWxlbWVudCogbGlzdE5vZGUsIGNv
bnN0IFJlbmRlckxpc3RJdGVtKiBpdGVtID0gbnVsbHB0cikKIHsKICAgICBpZiAoIWxpc3ROb2Rl
KQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBjb25z
dCBFbGVtZW50KiBjdXJyZW50ID0gaXRlbSA/ICZpdGVtLT5lbGVtZW50KCkgOiBsaXN0Tm9kZTsK
ICAgICBjdXJyZW50ID0gRWxlbWVudFRyYXZlcnNhbDo6bmV4dEluY2x1ZGluZ1BzZXVkbyhjdXJy
ZW50LCBsaXN0Tm9kZSk7CkBAIC0xMzMsMTUgKzEzMywxNSBAQCBzdGF0aWMgUmVuZGVyTGlzdEl0
ZW0qIG5leHRMaXN0SXRlbShjb25zdCBFbGVtZW50KiBsaXN0Tm9kZSwgY29uc3QgUmVuZGVyTGlz
dEl0ZQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KIAotICAgICAgICBSZW5kZXJP
YmplY3QqIHJlbmRlcmVyID0gY3VycmVudC0+cmVuZGVyZXIoKTsKLSAgICAgICAgaWYgKHJlbmRl
cmVyICYmIHJlbmRlcmVyLT5pc0xpc3RJdGVtKCkpCi0gICAgICAgICAgICByZXR1cm4gdG9SZW5k
ZXJMaXN0SXRlbShyZW5kZXJlcik7CisgICAgICAgIFJlbmRlckVsZW1lbnQqIHJlbmRlcmVyID0g
Y3VycmVudC0+cmVuZGVyZXIoKTsKKyAgICAgICAgaWYgKGlzPFJlbmRlckxpc3RJdGVtPihyZW5k
ZXJlcikpCisgICAgICAgICAgICByZXR1cm4gZG93bmNhc3Q8UmVuZGVyTGlzdEl0ZW0+KHJlbmRl
cmVyKTsKIAogICAgICAgICAvLyBGSVhNRTogQ2FuIHRoaXMgYmUgb3B0aW1pemVkIHRvIHNraXAg
dGhlIGNoaWxkcmVuIG9mIHRoZSBlbGVtZW50cyB3aXRob3V0IGEgcmVuZGVyZXI/CiAgICAgICAg
IGN1cnJlbnQgPSBFbGVtZW50VHJhdmVyc2FsOjpuZXh0SW5jbHVkaW5nUHNldWRvKGN1cnJlbnQs
IGxpc3ROb2RlKTsKICAgICB9CiAKLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gbnVsbHB0cjsK
IH0KIAogLy8gUmV0dXJucyB0aGUgcHJldmlvdXMgbGlzdCBpdGVtIHdpdGggcmVzcGVjdCB0byB0
aGUgRE9NIG9yZGVyLgpAQCAtMTQ5LDEzICsxNDksMTMgQEAgc3RhdGljIFJlbmRlckxpc3RJdGVt
KiBwcmV2aW91c0xpc3RJdGVtKGNvbnN0IEVsZW1lbnQqIGxpc3ROb2RlLCBjb25zdCBSZW5kZXJM
aXMKIHsKICAgICBFbGVtZW50KiBjdXJyZW50ID0gJml0ZW0tPmVsZW1lbnQoKTsKICAgICBmb3Ig
KGN1cnJlbnQgPSBFbGVtZW50VHJhdmVyc2FsOjpwcmV2aW91c0luY2x1ZGluZ1BzZXVkbyhjdXJy
ZW50LCBsaXN0Tm9kZSk7IGN1cnJlbnQ7IGN1cnJlbnQgPSBFbGVtZW50VHJhdmVyc2FsOjpwcmV2
aW91c0luY2x1ZGluZ1BzZXVkbyhjdXJyZW50LCBsaXN0Tm9kZSkpIHsKLSAgICAgICAgUmVuZGVy
T2JqZWN0KiByZW5kZXJlciA9IGN1cnJlbnQtPnJlbmRlcmVyKCk7Ci0gICAgICAgIGlmICghcmVu
ZGVyZXIgfHwgKHJlbmRlcmVyICYmICFyZW5kZXJlci0+aXNMaXN0SXRlbSgpKSkKKyAgICAgICAg
UmVuZGVyRWxlbWVudCogcmVuZGVyZXIgPSBjdXJyZW50LT5yZW5kZXJlcigpOworICAgICAgICBp
ZiAoIWlzPFJlbmRlckxpc3RJdGVtPihyZW5kZXJlcikpCiAgICAgICAgICAgICBjb250aW51ZTsK
LSAgICAgICAgTm9kZSogb3RoZXJMaXN0ID0gZW5jbG9zaW5nTGlzdCh0b1JlbmRlckxpc3RJdGVt
KHJlbmRlcmVyKSk7CisgICAgICAgIE5vZGUqIG90aGVyTGlzdCA9IGVuY2xvc2luZ0xpc3QoZG93
bmNhc3Q8UmVuZGVyTGlzdEl0ZW0+KHJlbmRlcmVyKSk7CiAgICAgICAgIC8vIFRoaXMgaXRlbSBp
cyBwYXJ0IG9mIG91ciBjdXJyZW50IGxpc3QsIHNvIGl0J3Mgd2hhdCB3ZSdyZSBsb29raW5nIGZv
ci4KICAgICAgICAgaWYgKGxpc3ROb2RlID09IG90aGVyTGlzdCkKLSAgICAgICAgICAgIHJldHVy
biB0b1JlbmRlckxpc3RJdGVtKHJlbmRlcmVyKTsKKyAgICAgICAgICAgIHJldHVybiBkb3duY2Fz
dDxSZW5kZXJMaXN0SXRlbT4ocmVuZGVyZXIpOwogICAgICAgICAvLyBXZSBmb3VuZCBvdXJzZWxm
IGluc2lkZSBhbm90aGVyIGxpc3Q7IGxldHMgc2tpcCB0aGUgcmVzdCBvZiBpdC4KICAgICAgICAg
Ly8gVXNlIG5leHRJbmNsdWRpbmdQc2V1ZG8oKSBoZXJlIGJlY2F1c2UgdGhlIG90aGVyIGxpc3Qg
aXRzZWxmIG1heSBhY3R1YWxseQogICAgICAgICAvLyBiZSBhIGxpc3QgaXRlbSBpdHNlbGYuIFdl
IG5lZWQgdG8gZXhhbWluZSBpdCwgc28gd2UgZG8gdGhpcyB0byBjb3VudGVyYWN0CkBAIC0xNjMs
NyArMTYzLDcgQEAgc3RhdGljIFJlbmRlckxpc3RJdGVtKiBwcmV2aW91c0xpc3RJdGVtKGNvbnN0
IEVsZW1lbnQqIGxpc3ROb2RlLCBjb25zdCBSZW5kZXJMaXMKICAgICAgICAgaWYgKG90aGVyTGlz
dCkKICAgICAgICAgICAgIGN1cnJlbnQgPSBFbGVtZW50VHJhdmVyc2FsOjpuZXh0SW5jbHVkaW5n
UHNldWRvKG90aGVyTGlzdCk7CiAgICAgfQotICAgIHJldHVybiAwOworICAgIHJldHVybiBudWxs
cHRyOwogfQogCiB2b2lkIFJlbmRlckxpc3RJdGVtOjp1cGRhdGVJdGVtVmFsdWVzRm9yT3JkZXJl
ZExpc3QoY29uc3QgSFRNTE9MaXN0RWxlbWVudCogbGlzdE5vZGUpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEl0ZW0uaCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMaXN0SXRlbS5oCmluZGV4IDBhODFhMzhiZjRlMTBkNjBjOGExMGFkNDU4
YzA2ZWE5YTY0ODQzNzMuLjczZGE2ZmJhOThmOWEyYmMxN2UxNzA0YzY1ZjYwN2I5ZDM4NGU0Zjkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0SXRlbS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0SXRlbS5oCkBAIC05Myw4ICs5
Myw2IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX25vdEluTGlzdCA6IDE7CiB9OwogCi1SRU5ERVJf
T0JKRUNUX1RZUEVfQ0FTVFMoUmVuZGVyTGlzdEl0ZW0sIGlzTGlzdEl0ZW0oKSkKLQogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQogCiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1JFTkRFUl9PQkpFQ1Qo
UmVuZGVyTGlzdEl0ZW0sIGlzTGlzdEl0ZW0oKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJMaXN0TWFya2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTGlzdE1hcmtlci5oCmluZGV4IGVhOGQzMmY5ZGU4MGE1OWQwNGE0ZmJjOGUzOGM1YWIw
ZDllNjI5NzQuLjFhN2ZiNzA5MmM2MjdkMTJmYWJmZTI1N2I1NTFiYmExMjc4NmI5NzIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0TWFya2VyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RNYXJrZXIuaApAQCAtODUsOCArODUs
NiBAQCBwcml2YXRlOgogICAgIFJlbmRlckxpc3RJdGVtJiBtX2xpc3RJdGVtOwogfTsKIAotUkVO
REVSX09CSkVDVF9UWVBFX0NBU1RTKFJlbmRlckxpc3RNYXJrZXIsIGlzTGlzdE1hcmtlcigpKQot
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfUkVOREVS
X09CSkVDVChSZW5kZXJMaXN0TWFya2VyLCBpc0xpc3RNYXJrZXIoKSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZW51TGlzdC5oIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlck1lbnVMaXN0LmgKaW5kZXggOTNlNmJiMmI5YWRhMDA3NzQ4ODIyZjc2
OTZlMGRjODFhZjFiMDFiYi4uNzUwZTZhZmY4MzM4YmFlMWI5NzdmZWNlMzU3YmEzZjc4ZTVkNDQ0
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lbnVMaXN0LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lbnVMaXN0LmgKQEAgLTE1Miw4
ICsxNTIsNiBAQCBwcml2YXRlOgogI2VuZGlmCiB9OwogCi1SRU5ERVJfT0JKRUNUX1RZUEVfQ0FT
VFMoUmVuZGVyTWVudUxpc3QsIGlzTWVudUxpc3QoKSkKLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQogCiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1JFTkRFUl9PQkpFQ1QoUmVuZGVyTWVudUxpc3Qs
IGlzTWVudUxpc3QoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUcmVlQXNUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUcmVlQXNU
ZXh0LmNwcAppbmRleCBiN2NkZTc0Yjc5Y2MyMWI0YjNkNmI5ZWE2YjNhNDExOGRjNzI5ZTE4Li5h
NjRiZTYyZDBiYTU4NGQ4NGI0ZjM2MjhiMmY0OWFlOWIzNDcwY2MyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVHJlZUFzVGV4dC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRyZWVBc1RleHQuY3BwCkBAIC05MzQsMTEgKzkzNCwxMSBA
QCBTdHJpbmcgbWFya2VyVGV4dEZvckxpc3RJdGVtKEVsZW1lbnQqIGVsZW1lbnQpCiAgICAgUmVm
UHRyPEVsZW1lbnQ+IGVsZW1lbnRSZWYoZWxlbWVudCk7CiAgICAgZWxlbWVudC0+ZG9jdW1lbnQo
KS51cGRhdGVMYXlvdXQoKTsKIAotICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBlbGVtZW50
LT5yZW5kZXJlcigpOwotICAgIGlmICghcmVuZGVyZXIgfHwgIXJlbmRlcmVyLT5pc0xpc3RJdGVt
KCkpCisgICAgUmVuZGVyRWxlbWVudCogcmVuZGVyZXIgPSBlbGVtZW50LT5yZW5kZXJlcigpOwor
ICAgIGlmICghaXM8UmVuZGVyTGlzdEl0ZW0+KHJlbmRlcmVyKSkKICAgICAgICAgcmV0dXJuIFN0
cmluZygpOwogCi0gICAgcmV0dXJuIHRvUmVuZGVyTGlzdEl0ZW0ocmVuZGVyZXIpLT5tYXJrZXJU
ZXh0KCk7CisgICAgcmV0dXJuIGRvd25jYXN0PFJlbmRlckxpc3RJdGVtPigqcmVuZGVyZXIpLm1h
cmtlclRleHQoKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRBdXRvU2l6aW5nLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9UZXh0QXV0b1NpemluZy5jcHAKaW5kZXggYTM3MjdlOTg2YzY2MjM3ZGIxNjQ3
ZjEwYTc5YmI3NTg4MDRlNGQyMi4uY2I5MWMxZGM1YmJmZmU3YjhhOGVmYTFlN2NiNGY3MDQ3NDgz
MmViNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRBdXRvU2l6aW5n
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dEF1dG9TaXppbmcuY3BwCkBA
IC0xNzcsNyArMTc3LDcgQEAgYm9vbCBUZXh0QXV0b1NpemluZ1ZhbHVlOjphZGp1c3ROb2RlU2l6
ZXMoKQogICAgICAgICAgICAgICAgIFJlZlB0cjxSZW5kZXJTdHlsZT4gc3R5bGUgPSBjbG9uZVJl
bmRlclN0eWxlV2l0aFN0YXRlKGxpc3RNYXJrZXJSZW5kZXJlci0+c3R5bGUoKSk7CiAgICAgICAg
ICAgICAgICAgc3R5bGUtPnNldEZvbnREZXNjcmlwdGlvbihmb250RGVzY3JpcHRpb24pOwogICAg
ICAgICAgICAgICAgIHN0eWxlLT5mb250KCkudXBkYXRlKGF1dG9TaXppbmdOb2RlLT5kb2N1bWVu
dCgpLmVuc3VyZVN0eWxlUmVzb2x2ZXIoKS5mb250U2VsZWN0b3IoKSk7Ci0gICAgICAgICAgICAg
ICAgdG9SZW5kZXJMaXN0TWFya2VyKCpsaXN0TWFya2VyUmVuZGVyZXIpLnNldFN0eWxlKHN0eWxl
LnJlbGVhc2VOb25OdWxsKCkpOworICAgICAgICAgICAgICAgIGRvd25jYXN0PFJlbmRlckxpc3RN
YXJrZXI+KCpsaXN0TWFya2VyUmVuZGVyZXIpLnNldFN0eWxlKHN0eWxlLnJlbGVhc2VOb25OdWxs
KCkpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgCiAgICAgICAgICAgICAvLyBSZXNpemUg
dGhlIGxpbmUgaGVpZ2h0IG9mIHRoZSBwYXJlbnQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvbGluZS9CcmVha2luZ0NvbnRleHRJbmxpbmVIZWFkZXJzLmggYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvbGluZS9CcmVha2luZ0NvbnRleHRJbmxpbmVIZWFkZXJzLmgKaW5k
ZXggOWFlZmZiNGEwYmRlNzdiMmI4MjkxYzVlZDQ0ZDZkZTMyNGJlNTU5NS4uMDllODBhMzVhZDMw
ODA3ZTI2ZTM5MDA5NGE4NGZlZTUyZTgxMmQ5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL2xpbmUvQnJlYWtpbmdDb250ZXh0SW5saW5lSGVhZGVycy5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9saW5lL0JyZWFraW5nQ29udGV4dElubGluZUhlYWRlcnMuaApA
QCAtNDMwLDcgKzQzMCw3IEBAIGlubGluZSB2b2lkIEJyZWFraW5nQ29udGV4dDo6aGFuZGxlUmVw
bGFjZWQoKQogICAgIC8vIE9wdGltaXplIGZvciBhIGNvbW1vbiBjYXNlLiBJZiB3ZSBjYW4ndCBm
aW5kIHdoaXRlc3BhY2UgYWZ0ZXIgdGhlIGxpc3QKICAgICAvLyBpdGVtLCB0aGVuIHRoaXMgaXMg
YWxsIG1vb3QuCiAgICAgTGF5b3V0VW5pdCByZXBsYWNlZExvZ2ljYWxXaWR0aCA9IG1fYmxvY2su
bG9naWNhbFdpZHRoRm9yQ2hpbGQocmVwbGFjZWRCb3gpICsgbV9ibG9jay5tYXJnaW5TdGFydEZv
ckNoaWxkKHJlcGxhY2VkQm94KSArIG1fYmxvY2subWFyZ2luRW5kRm9yQ2hpbGQocmVwbGFjZWRC
b3gpICsgaW5saW5lTG9naWNhbFdpZHRoKG1fY3VycmVudC5yZW5kZXJlcigpKTsKLSAgICBpZiAo
bV9jdXJyZW50LnJlbmRlcmVyKCktPmlzTGlzdE1hcmtlcigpKSB7CisgICAgaWYgKGlzPFJlbmRl
ckxpc3RNYXJrZXI+KCptX2N1cnJlbnQucmVuZGVyZXIoKSkpIHsKICAgICAgICAgaWYgKG1fYmxv
Y2tTdHlsZS5jb2xsYXBzZVdoaXRlU3BhY2UoKSAmJiBzaG91bGRTa2lwV2hpdGVzcGFjZUFmdGVy
U3RhcnRPYmplY3QobV9ibG9jaywgbV9jdXJyZW50LnJlbmRlcmVyKCksIG1fbGluZU1pZHBvaW50
U3RhdGUpKSB7CiAgICAgICAgICAgICAvLyBMaWtlIHdpdGggaW5saW5lIGZsb3dzLCB3ZSBzdGFy
dCBpZ25vcmluZyBzcGFjZXMgdG8gbWFrZSBzdXJlIHRoYXQgYW55CiAgICAgICAgICAgICAvLyBh
ZGRpdGlvbmFsIHNwYWNlcyB3ZSBzZWUgd2lsbCBiZSBkaXNjYXJkZWQuCkBAIC00MzgsMTIgKzQz
OCwxMiBAQCBpbmxpbmUgdm9pZCBCcmVha2luZ0NvbnRleHQ6OmhhbmRsZVJlcGxhY2VkKCkKICAg
ICAgICAgICAgIG1fY3VycmVudENoYXJhY3RlcklzV1MgPSBmYWxzZTsKICAgICAgICAgICAgIG1f
aWdub3JpbmdTcGFjZXMgPSB0cnVlOwogICAgICAgICB9Ci0gICAgICAgIGlmICh0b1JlbmRlckxp
c3RNYXJrZXIoKm1fY3VycmVudC5yZW5kZXJlcigpKS5pc0luc2lkZSgpKQorICAgICAgICBpZiAo
ZG93bmNhc3Q8UmVuZGVyTGlzdE1hcmtlcj4oKm1fY3VycmVudC5yZW5kZXJlcigpKS5pc0luc2lk
ZSgpKQogICAgICAgICAgICAgbV93aWR0aC5hZGRVbmNvbW1pdHRlZFdpZHRoKHJlcGxhY2VkTG9n
aWNhbFdpZHRoKTsKICAgICB9IGVsc2UKICAgICAgICAgbV93aWR0aC5hZGRVbmNvbW1pdHRlZFdp
ZHRoKHJlcGxhY2VkTG9naWNhbFdpZHRoKTsKLSAgICBpZiAobV9jdXJyZW50LnJlbmRlcmVyKCkt
PmlzUnVieVJ1bigpKQotICAgICAgICBtX3dpZHRoLmFwcGx5T3ZlcmhhbmcodG9SZW5kZXJSdWJ5
UnVuKG1fY3VycmVudC5yZW5kZXJlcigpKSwgbV9sYXN0T2JqZWN0LCBtX25leHRPYmplY3QpOwor
ICAgIGlmIChpczxSZW5kZXJSdWJ5UnVuPigqbV9jdXJyZW50LnJlbmRlcmVyKCkpKQorICAgICAg
ICBtX3dpZHRoLmFwcGx5T3ZlcmhhbmcoZG93bmNhc3Q8UmVuZGVyUnVieVJ1bj4obV9jdXJyZW50
LnJlbmRlcmVyKCkpLCBtX2xhc3RPYmplY3QsIG1fbmV4dE9iamVjdCk7CiAgICAgLy8gVXBkYXRl
IHByaW9yIGxpbmUgYnJlYWsgY29udGV4dCBjaGFyYWN0ZXJzLCB1c2luZyBVK0ZGRkQgKE9CSkVD
VCBSRVBMQUNFTUVOVCBDSEFSQUNURVIpIGZvciByZXBsYWNlZCBlbGVtZW50LgogICAgIG1fcmVu
ZGVyVGV4dEluZm8ubV9saW5lQnJlYWtJdGVyYXRvci51cGRhdGVQcmlvckNvbnRleHQocmVwbGFj
ZW1lbnRDaGFyYWN0ZXIpOwogfQpAQCAtOTk1LDcgKzk5NSw3IEBAIGlubGluZSB2b2lkIEJyZWFr
aW5nQ29udGV4dDo6Y29tbWl0QW5kVXBkYXRlTGluZUJyZWFrSWZOZWVkZWQoKQogCiAgICAgaWYg
KCFtX2N1cnJlbnQucmVuZGVyZXIoKS0+aXNGbG9hdGluZ09yT3V0T2ZGbG93UG9zaXRpb25lZCgp
KSB7CiAgICAgICAgIG1fbGFzdE9iamVjdCA9IG1fY3VycmVudC5yZW5kZXJlcigpOwotICAgICAg
ICBpZiAobV9sYXN0T2JqZWN0LT5pc1JlcGxhY2VkKCkgJiYgbV9hdXRvV3JhcCAmJiAoIW1fbGFz
dE9iamVjdC0+aXNJbWFnZSgpIHx8IG1fYWxsb3dJbWFnZXNUb0JyZWFrKSAmJiAoIW1fbGFzdE9i
amVjdC0+aXNMaXN0TWFya2VyKCkgfHwgdG9SZW5kZXJMaXN0TWFya2VyKCptX2xhc3RPYmplY3Qp
LmlzSW5zaWRlKCkpKSB7CisgICAgICAgIGlmIChtX2xhc3RPYmplY3QtPmlzUmVwbGFjZWQoKSAm
JiBtX2F1dG9XcmFwICYmICghbV9sYXN0T2JqZWN0LT5pc0ltYWdlKCkgfHwgbV9hbGxvd0ltYWdl
c1RvQnJlYWspICYmICghaXM8UmVuZGVyTGlzdE1hcmtlcj4oKm1fbGFzdE9iamVjdCkgfHwgZG93
bmNhc3Q8UmVuZGVyTGlzdE1hcmtlcj4oKm1fbGFzdE9iamVjdCkuaXNJbnNpZGUoKSkpIHsKICAg
ICAgICAgICAgIG1fd2lkdGguY29tbWl0KCk7CiAgICAgICAgICAgICBtX2xpbmVCcmVhay5tb3Zl
VG9TdGFydE9mKG1fbmV4dE9iamVjdCk7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50
ZXJuYWxzLmNwcAppbmRleCAzZTNiYTMzZWNlNjU3ZGM2ZGVhOTJiMWE5NTEyNGRhYjU3ZjIwOWFi
Li4xNDhkM2MyM2UzMDQ1NDFlNGY4M2JjMjVlZGI5ZmU1MTY1NWQ3Y2YzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9JbnRlcm5hbHMuY3BwCkBAIC0yMDkyLDEzICsyMDkyLDEzIEBAIGJvb2wgSW50ZXJu
YWxzOjppc1NlbGVjdFBvcHVwVmlzaWJsZShOb2RlKiBub2RlKQogCiAgICAgSFRNTFNlbGVjdEVs
ZW1lbnQmIHNlbGVjdCA9IGRvd25jYXN0PEhUTUxTZWxlY3RFbGVtZW50Pigqbm9kZSk7CiAKLSAg
ICBhdXRvIHJlbmRlcmVyID0gc2VsZWN0LnJlbmRlcmVyKCk7Ci0gICAgaWYgKCFyZW5kZXJlci0+
aXNNZW51TGlzdCgpKQorICAgIGF1dG8qIHJlbmRlcmVyID0gc2VsZWN0LnJlbmRlcmVyKCk7Cisg
ICAgQVNTRVJUKHJlbmRlcmVyKTsKKyAgICBpZiAoIWlzPFJlbmRlck1lbnVMaXN0PigqcmVuZGVy
ZXIpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICNpZiAhUExBVEZPUk0oSU9TKQotICAgIFJl
bmRlck1lbnVMaXN0KiBtZW51TGlzdCA9IHRvUmVuZGVyTWVudUxpc3QocmVuZGVyZXIpOwotICAg
IHJldHVybiBtZW51TGlzdC0+cG9wdXBJc1Zpc2libGUoKTsKKyAgICByZXR1cm4gZG93bmNhc3Q8
UmVuZGVyTWVudUxpc3Q+KCpyZW5kZXJlcikucG9wdXBJc1Zpc2libGUoKTsKICNlbHNlCiAgICAg
cmV0dXJuIGZhbHNlOwogI2VuZGlmIC8vICFQTEFURk9STShJT1MpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>239927</attachid>
            <date>2014-10-15 21:34:19 -0700</date>
            <delta_ts>2014-10-15 23:04:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-137764-20141015213424.patch</filename>
            <type>text/plain</type>
            <size>38374</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc0NzU1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTM4ZmIyZjk5NjJlZTUx
MjA3OTFmMDFlZGJmMjQwMzI3MDc5YWJkMi4uZmRiNzhlYjA0MzlkYTNhMzEyMmEzNzlhNTU5NWIw
NjhmOWJkNTEwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDY5IEBACiAyMDE0LTEwLTE1ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKKyAgICAgICAgVXNlIGlzPD4oKSAvIGRvd25j
YXN0PD4oKSBmb3IgbGlzdC1yZWxhdGVkIHJlbmRlciBvYmplY3RzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzc3NjQKKworICAgICAgICBSZXZpZXdl
ZCBieSBCZW5qYW1pbiBQb3VsYWluLgorCisgICAgICAgIFVzZSBpczw+KCkgLyBkb3duY2FzdDw+
KCkgZm9yIGxpc3QtcmVsYXRlZCByZW5kZXIgb2JqZWN0cyBhbmQgY2xlYW4gdXAKKyAgICAgICAg
dGhlIHN1cnJvdW5kaW5nIGNvZGUuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBubyBiZWhhdmlv
ciBjaGFuZ2UuCisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlMaXN0Qm94
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlMaXN0Qm94Ojp2aXNpYmxlQ2hp
bGRyZW4pOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eUxpc3RCb3g6OmVsZW1lbnRB
Y2Nlc3NpYmlsaXR5SGl0VGVzdCk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5TGlzdEJveE9wdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5TGlz
dEJveE9wdGlvbjo6ZWxlbWVudFJlY3QpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eU9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpyZW5kZXJMaXN0SXRlbUNvbnRh
aW5lckZvck5vZGUpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2li
bGVIeXBlcmxpbmsuY3BwOgorICAgICAgICAoZ2V0UmFuZ2VMZW5ndGhGb3JPYmplY3QpOgorICAg
ICAgICAqIGFjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVJbnRlcmZhY2VUZXh0LmNw
cDoKKyAgICAgICAgKGFjY2Vzc2liaWxpdHlPYmplY3RMZW5ndGgpOgorICAgICAgICAob2Zmc2V0
QWRqdXN0bWVudEZvckxpc3RJdGVtKToKKyAgICAgICAgKHdlYmtpdEFjY2Vzc2libGVUZXh0R2V0
VGV4dCk6CisgICAgICAgICogZWRpdGluZy9CcmVha0Jsb2NrcXVvdGVDb21tYW5kLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkJyZWFrQmxvY2txdW90ZUNvbW1hbmQ6OmRvQXBwbHkpOgorICAgICAg
ICAqIGh0bWwvSFRNTExJRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTElFbGVt
ZW50OjpkaWRBdHRhY2hSZW5kZXJlcnMpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTExJRWxlbWVu
dDo6cGFyc2VWYWx1ZSk6CisgICAgICAgICogaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MU2VsZWN0RWxlbWVudDo6bmV4dFNlbGVjdGFibGVMaXN0SW5k
ZXhQYWdlQXdheSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MU2VsZWN0RWxlbWVudDo6c2Nyb2xs
VG9TZWxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNlbGVjdEVsZW1lbnQ6OnNldE9w
dGlvbnNDaGFuZ2VkT25SZW5kZXJlcik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MU2VsZWN0RWxl
bWVudDo6c2VsZWN0T3B0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTZWxlY3RFbGVtZW50
OjpwbGF0Zm9ybUhhbmRsZUtleWRvd25FdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MU2Vs
ZWN0RWxlbWVudDo6bWVudUxpc3REZWZhdWx0RXZlbnRIYW5kbGVyKToKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxTZWxlY3RFbGVtZW50OjpsaXN0Qm94RGVmYXVsdEV2ZW50SGFuZGxlcik6CisgICAg
ICAgICogaHRtbC9IVE1MU2VsZWN0RWxlbWVudFdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MU2VsZWN0RWxlbWVudDo6cGxhdGZvcm1IYW5kbGVLZXlkb3duRXZlbnQpOgorICAgICAgICAq
IHBhZ2UvbWFjL0V2ZW50SGFuZGxlck1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFu
ZGxlcjo6cGxhdGZvcm1QcmVwYXJlRm9yV2hlZWxFdmVudHMpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9JbmxpbmVGbG93Qm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUZsb3dCb3g6OmFk
ZFRvTGluZSk6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVGbG93Qm94OjpwbGFjZUJveFJhbmdl
SW5JbmxpbmVEaXJlY3Rpb24pOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJDb3VudGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OnBsYW5Db3VudGVyKToKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyTGlzdEJveC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMaXN0SXRlbS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpuZXh0TGlzdEl0ZW0pOgorICAgICAgICAoV2ViQ29yZTo6cHJl
dmlvdXNMaXN0SXRlbSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxpc3RJdGVtLmg6Cisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxpc3RNYXJrZXIuaDoKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyTWVudUxpc3QuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVHJlZUFzVGV4
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjptYXJrZXJUZXh0Rm9yTGlzdEl0ZW0pOgorICAgICAg
ICAqIHJlbmRlcmluZy9UZXh0QXV0b1NpemluZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0
QXV0b1NpemluZ1ZhbHVlOjphZGp1c3ROb2RlU2l6ZXMpOgorICAgICAgICAqIHJlbmRlcmluZy9s
aW5lL0JyZWFraW5nQ29udGV4dElubGluZUhlYWRlcnMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkJy
ZWFraW5nQ29udGV4dDo6aGFuZGxlUmVwbGFjZWQpOgorICAgICAgICAoV2ViQ29yZTo6QnJlYWtp
bmdDb250ZXh0Ojpjb21taXRBbmRVcGRhdGVMaW5lQnJlYWtJZk5lZWRlZCk6CisgICAgICAgICog
dGVzdGluZy9JbnRlcm5hbHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjppc1Nl
bGVjdFBvcHVwVmlzaWJsZSk6CisKKzIwMTQtMTAtMTUgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFw
cGxlLmNvbT4KKwogICAgICAgICBbTWFjXSBGaXggaW5lZmZpY2llbmNpZXMgaW4gUmVzb3VyY2VS
ZXNwb25zZTo6cGxhdGZvcm1MYXp5SW5pdChJbml0TGV2ZWwpIC0gUGFydCAyCiAgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzc3MjEKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TGlzdEJveC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlMaXN0Qm94LmNwcApp
bmRleCAwZjhlMWQ5YjU2ZTc4OGY4MTc1M2IxZjIwMGNmYjI3NTNiYjFiMGJjLi4zNTYxZWU2ZGFk
MWEyNjk4MGU3YTMxYTQ0OTNkYWJmMjdmMzUyYmRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlMaXN0Qm94LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlMaXN0Qm94LmNwcApAQCAtMTI3LDcgKzEy
Nyw3IEBAIHZvaWQgQWNjZXNzaWJpbGl0eUxpc3RCb3g6OnZpc2libGVDaGlsZHJlbihBY2Nlc3Np
YmlsaXR5Q2hpbGRyZW5WZWN0b3ImIHJlc3VsdCkKICAgICAKICAgICB1bnNpZ25lZCBsZW5ndGgg
PSBtX2NoaWxkcmVuLnNpemUoKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3Ro
OyBpKyspIHsKLSAgICAgICAgaWYgKHRvUmVuZGVyTGlzdEJveChtX3JlbmRlcmVyKS0+bGlzdElu
ZGV4SXNWaXNpYmxlKGkpKQorICAgICAgICBpZiAoZG93bmNhc3Q8UmVuZGVyTGlzdEJveD4oKm1f
cmVuZGVyZXIpLmxpc3RJbmRleElzVmlzaWJsZShpKSkKICAgICAgICAgICAgIHJlc3VsdC5hcHBl
bmQobV9jaGlsZHJlbltpXSk7CiAgICAgfQogfQpAQCAtMTU5LDggKzE1OSw4IEBAIEFjY2Vzc2li
aWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlMaXN0Qm94OjplbGVtZW50QWNjZXNzaWJpbGl0eUhp
dFRlc3QoY29uc3QgSW50CiAgICAgCiAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogbGlzdEJveE9w
dGlvbiA9IG51bGxwdHI7CiAgICAgdW5zaWduZWQgbGVuZ3RoID0gbV9jaGlsZHJlbi5zaXplKCk7
Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7Ci0gICAgICAgIExh
eW91dFJlY3QgcmVjdCA9IHRvUmVuZGVyTGlzdEJveChtX3JlbmRlcmVyKS0+aXRlbUJvdW5kaW5n
Qm94UmVjdChwYXJlbnRSZWN0LmxvY2F0aW9uKCksIGkpOworICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBsZW5ndGg7ICsraSkgeworICAgICAgICBMYXlvdXRSZWN0IHJlY3QgPSBkb3duY2Fz
dDxSZW5kZXJMaXN0Qm94PigqbV9yZW5kZXJlcikuaXRlbUJvdW5kaW5nQm94UmVjdChwYXJlbnRS
ZWN0LmxvY2F0aW9uKCksIGkpOwogICAgICAgICAvLyBUaGUgY2FzdCB0byBIVE1MRWxlbWVudCBi
ZWxvdyBpcyBzYWZlIGJlY2F1c2UgdGhlIG9ubHkgb3RoZXIgcG9zc2libGUgbGlzdEl0ZW0gdHlw
ZQogICAgICAgICAvLyB3b3VsZCBiZSBhIFdNTEVsZW1lbnQsIGJ1dCBXTUwgYnVpbGRzIGRvbid0
IHVzZSBhY2Nlc3NpYmlsaXR5IGZlYXR1cmVzIGF0IGFsbC4KICAgICAgICAgaWYgKHJlY3QuY29u
dGFpbnMocG9pbnQpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlMaXN0Qm94T3B0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQWNjZXNzaWJpbGl0eUxpc3RCb3hPcHRpb24uY3BwCmluZGV4IGRjYTBlYTZlYzZmODky
MTAzZGI5YjE5ZGY4MjIwZmExOTVhZTNiNDYuLmNhYTZkYjA1MjU1YzIxNmRkODUyZTljNjliZjU4
NzE2YzUzZjQzYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eUxpc3RCb3hPcHRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQWNjZXNzaWJpbGl0eUxpc3RCb3hPcHRpb24uY3BwCkBAIC0xMDAsMTQgKzEwMCwxNCBA
QCBMYXlvdXRSZWN0IEFjY2Vzc2liaWxpdHlMaXN0Qm94T3B0aW9uOjplbGVtZW50UmVjdCgpIGNv
bnN0CiAgICAgaWYgKCFsaXN0Qm94UGFyZW50Tm9kZSkKICAgICAgICAgcmV0dXJuIHJlY3Q7CiAg
ICAgCi0gICAgUmVuZGVyT2JqZWN0KiBsaXN0Qm94UmVuZGVyZXIgPSBsaXN0Qm94UGFyZW50Tm9k
ZS0+cmVuZGVyZXIoKTsKKyAgICBSZW5kZXJFbGVtZW50KiBsaXN0Qm94UmVuZGVyZXIgPSBsaXN0
Qm94UGFyZW50Tm9kZS0+cmVuZGVyZXIoKTsKICAgICBpZiAoIWxpc3RCb3hSZW5kZXJlcikKICAg
ICAgICAgcmV0dXJuIHJlY3Q7CiAgICAgCiAgICAgTGF5b3V0UmVjdCBwYXJlbnRSZWN0ID0gbGlz
dEJveFJlbmRlcmVyLT5kb2N1bWVudCgpLmF4T2JqZWN0Q2FjaGUoKS0+Z2V0T3JDcmVhdGUobGlz
dEJveFJlbmRlcmVyKS0+Ym91bmRpbmdCb3hSZWN0KCk7CiAgICAgaW50IGluZGV4ID0gbGlzdEJv
eE9wdGlvbkluZGV4KCk7CiAgICAgaWYgKGluZGV4ICE9IC0xKQotICAgICAgICByZWN0ID0gdG9S
ZW5kZXJMaXN0Qm94KGxpc3RCb3hSZW5kZXJlciktPml0ZW1Cb3VuZGluZ0JveFJlY3QocGFyZW50
UmVjdC5sb2NhdGlvbigpLCBpbmRleCk7CisgICAgICAgIHJlY3QgPSBkb3duY2FzdDxSZW5kZXJM
aXN0Qm94PigqbGlzdEJveFJlbmRlcmVyKS5pdGVtQm91bmRpbmdCb3hSZWN0KHBhcmVudFJlY3Qu
bG9jYXRpb24oKSwgaW5kZXgpOwogICAgIAogICAgIHJldHVybiByZWN0OwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAKaW5k
ZXggZTQ3YmE5NDk4ZjMwYTY5ZmM5ZmVkN2Y5ZmM2ZjMxYjBmOWUxYjAyMy4uZTdjN2QyYzUwOTUy
YmQ5YmJkNzc3Yjk1MDlhNjdmMzA1ZTRhYTE5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwCkBAIC0xMTYwLDggKzExNjAs
OCBAQCBzdGF0aWMgUmVuZGVyTGlzdEl0ZW0qIHJlbmRlckxpc3RJdGVtQ29udGFpbmVyRm9yTm9k
ZShOb2RlKiBub2RlKQogewogICAgIGZvciAoOyBub2RlOyBub2RlID0gbm9kZS0+cGFyZW50Tm9k
ZSgpKSB7CiAgICAgICAgIFJlbmRlckJveE1vZGVsT2JqZWN0KiByZW5kZXJlciA9IG5vZGUtPnJl
bmRlckJveE1vZGVsT2JqZWN0KCk7Ci0gICAgICAgIGlmIChyZW5kZXJlciAmJiByZW5kZXJlci0+
aXNMaXN0SXRlbSgpKQotICAgICAgICAgICAgcmV0dXJuIHRvUmVuZGVyTGlzdEl0ZW0ocmVuZGVy
ZXIpOworICAgICAgICBpZiAoaXM8UmVuZGVyTGlzdEl0ZW0+KHJlbmRlcmVyKSkKKyAgICAgICAg
ICAgIHJldHVybiBkb3duY2FzdDxSZW5kZXJMaXN0SXRlbT4ocmVuZGVyZXIpOwogICAgIH0KICAg
ICByZXR1cm4gbnVsbHB0cjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVIeXBlcmxpbmsuY3BwIGIvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUh5cGVybGluay5jcHAKaW5kZXggMGU0
YTBjOGVkZmFkZTkyMGUyZGQ3ZThiMTRiYjcxOGVhNmFjMjgyOC4uY2Q3OWM0YjUzZTY1ZjhkYjRi
MjhlZWM3YTYwYzI2ZjUwNTZjMDBjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUh5cGVybGluay5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUh5cGVybGluay5jcHAKQEAg
LTIzMSwxMCArMjMxLDEwIEBAIHN0YXRpYyBnaW50IGdldFJhbmdlTGVuZ3RoRm9yT2JqZWN0KEFj
Y2Vzc2liaWxpdHlPYmplY3QqIG9iaiwgUmFuZ2UqIHJhbmdlKQogICAgICAgICByZXR1cm4gYmFz
ZUxlbmd0aDsKIAogICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBtYXJrZXJPYmotPnJlbmRl
cmVyKCk7Ci0gICAgaWYgKCFyZW5kZXJlciB8fCAhcmVuZGVyZXItPmlzTGlzdE1hcmtlcigpKQor
ICAgIGlmICghaXM8UmVuZGVyTGlzdE1hcmtlcj4ocmVuZGVyZXIpKQogICAgICAgICByZXR1cm4g
YmFzZUxlbmd0aDsKIAotICAgIFJlbmRlckxpc3RNYXJrZXImIG1hcmtlciA9IHRvUmVuZGVyTGlz
dE1hcmtlcigqcmVuZGVyZXIpOworICAgIGF1dG8mIG1hcmtlciA9IGRvd25jYXN0PFJlbmRlckxp
c3RNYXJrZXI+KCpyZW5kZXJlcik7CiAgICAgcmV0dXJuIGJhc2VMZW5ndGggKyBtYXJrZXIudGV4
dCgpLmxlbmd0aCgpICsgbWFya2VyLnN1ZmZpeCgpLmxlbmd0aCgpOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJm
YWNlVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nl
c3NpYmxlSW50ZXJmYWNlVGV4dC5jcHAKaW5kZXggMzk0OTI4YjVjNjY5ZDZlZDgxZThkNDliOTRi
ODdmMTZmZTZiYzk5OC4uZDE0MTlkODYxZTdjNjNlZGRkMzYxYzI0MTNhY2UxYjE2MmNiYmEyNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNz
aWJsZUludGVyZmFjZVRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
YXRrL1dlYktpdEFjY2Vzc2libGVJbnRlcmZhY2VUZXh0LmNwcApAQCAtMjcwLDggKzI3MCw4IEBA
IHN0YXRpYyBndWludCBhY2Nlc3NpYmlsaXR5T2JqZWN0TGVuZ3RoKGNvbnN0IEFjY2Vzc2liaWxp
dHlPYmplY3QqIG9iamVjdCkKICAgICAvLyBmb3IgdGhvc2UgY2FzZXMgd2hlbiBpdCdzIG5lZWRl
ZCB0byB0YWtlIGl0IGludG8gYWNjb3VudAogICAgIC8vIHNlcGFyYXRlbHkgKGFzIGluIGdldEFj
Y2Vzc2liaWxpdHlPYmplY3RGb3JPZmZzZXQpCiAgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9
IG9iamVjdC0+cmVuZGVyZXIoKTsKLSAgICBpZiAocmVuZGVyZXIgJiYgcmVuZGVyZXItPmlzTGlz
dE1hcmtlcigpKSB7Ci0gICAgICAgIFJlbmRlckxpc3RNYXJrZXImIG1hcmtlciA9IHRvUmVuZGVy
TGlzdE1hcmtlcigqcmVuZGVyZXIpOworICAgIGlmIChpczxSZW5kZXJMaXN0TWFya2VyPihyZW5k
ZXJlcikpIHsKKyAgICAgICAgYXV0byYgbWFya2VyID0gZG93bmNhc3Q8UmVuZGVyTGlzdE1hcmtl
cj4oKnJlbmRlcmVyKTsKICAgICAgICAgcmV0dXJuIG1hcmtlci50ZXh0KCkubGVuZ3RoKCkgKyBt
YXJrZXIuc3VmZml4KCkubGVuZ3RoKCk7CiAgICAgfQogCkBAIC0zNjMsOCArMzYzLDggQEAgc3Rh
dGljIGludCBvZmZzZXRBZGp1c3RtZW50Rm9yTGlzdEl0ZW0oY29uc3QgQWNjZXNzaWJpbGl0eU9i
amVjdCogb2JqZWN0KQogICAgIC8vIFdlIG5lZWQgdG8gYWRqdXN0IHRoZSBvZmZzZXRzIGZvciB0
aGUgbGlzdCBpdGVtIG1hcmtlciBpbgogICAgIC8vIExlZnQtVG8tUmlnaHQgdGV4dCwgc2luY2Ug
d2UgZXhwb3NlIGl0IHRvZ2V0aGVyIHdpdGggdGhlIHRleHQuCiAgICAgUmVuZGVyT2JqZWN0KiBy
ZW5kZXJlciA9IG9iamVjdC0+cmVuZGVyZXIoKTsKLSAgICBpZiAocmVuZGVyZXIgJiYgcmVuZGVy
ZXItPmlzTGlzdEl0ZW0oKSAmJiByZW5kZXJlci0+c3R5bGUoKS5kaXJlY3Rpb24oKSA9PSBMVFIp
Ci0gICAgICAgIHJldHVybiB0b1JlbmRlckxpc3RJdGVtKHJlbmRlcmVyKS0+bWFya2VyVGV4dFdp
dGhTdWZmaXgoKS5sZW5ndGgoKTsKKyAgICBpZiAoaXM8UmVuZGVyTGlzdEl0ZW0+KHJlbmRlcmVy
KSAmJiByZW5kZXJlci0+c3R5bGUoKS5kaXJlY3Rpb24oKSA9PSBMVFIpCisgICAgICAgIHJldHVy
biBkb3duY2FzdDxSZW5kZXJMaXN0SXRlbT4oKnJlbmRlcmVyKS5tYXJrZXJUZXh0V2l0aFN1ZmZp
eCgpLmxlbmd0aCgpOwogCiAgICAgcmV0dXJuIDA7CiB9CkBAIC00OTUsOCArNDk1LDggQEAgc3Rh
dGljIGdjaGFyKiB3ZWJraXRBY2Nlc3NpYmxlVGV4dEdldFRleHQoQXRrVGV4dCogdGV4dCwgZ2lu
dCBzdGFydE9mZnNldCwgZ2ludAogICAgIGludCBhY3R1YWxFbmRPZmZzZXQgPSBlbmRPZmZzZXQg
PT0gLTEgPyByZXQubGVuZ3RoKCkgOiBlbmRPZmZzZXQ7CiAgICAgaWYgKGNvcmVPYmplY3QtPnJv
bGVWYWx1ZSgpID09IExpc3RJdGVtUm9sZSkgewogICAgICAgICBSZW5kZXJPYmplY3QqIG9ialJl
bmRlcmVyID0gY29yZU9iamVjdC0+cmVuZGVyZXIoKTsKLSAgICAgICAgaWYgKG9ialJlbmRlcmVy
ICYmIG9ialJlbmRlcmVyLT5pc0xpc3RJdGVtKCkpIHsKLSAgICAgICAgICAgIFN0cmluZyBtYXJr
ZXJUZXh0ID0gdG9SZW5kZXJMaXN0SXRlbShvYmpSZW5kZXJlciktPm1hcmtlclRleHRXaXRoU3Vm
Zml4KCk7CisgICAgICAgIGlmIChpczxSZW5kZXJMaXN0SXRlbT4ob2JqUmVuZGVyZXIpKSB7Cisg
ICAgICAgICAgICBTdHJpbmcgbWFya2VyVGV4dCA9IGRvd25jYXN0PFJlbmRlckxpc3RJdGVtPigq
b2JqUmVuZGVyZXIpLm1hcmtlclRleHRXaXRoU3VmZml4KCk7CiAgICAgICAgICAgICByZXQgPSBv
YmpSZW5kZXJlci0+c3R5bGUoKS5kaXJlY3Rpb24oKSA9PSBMVFIgPyBtYXJrZXJUZXh0ICsgcmV0
IDogcmV0ICsgbWFya2VyVGV4dDsKICAgICAgICAgICAgIGlmIChlbmRPZmZzZXQgPT0gLTEpCiAg
ICAgICAgICAgICAgICAgYWN0dWFsRW5kT2Zmc2V0ID0gcmV0Lmxlbmd0aCgpICsgbWFya2VyVGV4
dC5sZW5ndGgoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQnJlYWtCbG9j
a3F1b3RlQ29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0JyZWFrQmxvY2txdW90
ZUNvbW1hbmQuY3BwCmluZGV4IDY0NGQzNDVmZWYxOTgyM2IxOTRmNDMzOTcxYzk2MWYzOTBiNTU1
OTQuLjI5NGFkYjY4OTM3ODAwMzg2MGVhOWJiMjA4OTE1Y2U4ZWVkYWMwYjUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQnJlYWtCbG9ja3F1b3RlQ29tbWFuZC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9CcmVha0Jsb2NrcXVvdGVDb21tYW5kLmNwcApAQCAtMTQ4
LDggKzE0OCw4IEBAIHZvaWQgQnJlYWtCbG9ja3F1b3RlQ29tbWFuZDo6ZG9BcHBseSgpCiAgICAg
ICAgICAgICAvLyBmaW5kIHRoZSBmaXJzdCBvbmUgc28gdGhhdCB3ZSBrbm93IHdoZXJlIHRvIHN0
YXJ0IG51bWJlcmluZy4KICAgICAgICAgICAgIHdoaWxlIChsaXN0Q2hpbGROb2RlICYmICFsaXN0
Q2hpbGROb2RlLT5oYXNUYWdOYW1lKGxpVGFnKSkKICAgICAgICAgICAgICAgICBsaXN0Q2hpbGRO
b2RlID0gbGlzdENoaWxkTm9kZS0+bmV4dFNpYmxpbmcoKTsKLSAgICAgICAgICAgIGlmIChsaXN0
Q2hpbGROb2RlICYmIGxpc3RDaGlsZE5vZGUtPnJlbmRlcmVyKCkgJiYgbGlzdENoaWxkTm9kZS0+
cmVuZGVyZXIoKS0+aXNMaXN0SXRlbSgpKQotICAgICAgICAgICAgICAgIHNldE5vZGVBdHRyaWJ1
dGUoY2xvbmVkQ2hpbGQsIHN0YXJ0QXR0ciwgQXRvbWljU3RyaW5nOjpudW1iZXIodG9SZW5kZXJM
aXN0SXRlbShsaXN0Q2hpbGROb2RlLT5yZW5kZXJlcigpKS0+dmFsdWUoKSkpOworICAgICAgICAg
ICAgaWYgKGxpc3RDaGlsZE5vZGUgJiYgaXM8UmVuZGVyTGlzdEl0ZW0+KGxpc3RDaGlsZE5vZGUt
PnJlbmRlcmVyKCkpKQorICAgICAgICAgICAgICAgIHNldE5vZGVBdHRyaWJ1dGUoY2xvbmVkQ2hp
bGQsIHN0YXJ0QXR0ciwgQXRvbWljU3RyaW5nOjpudW1iZXIoZG93bmNhc3Q8UmVuZGVyTGlzdEl0
ZW0+KCpsaXN0Q2hpbGROb2RlLT5yZW5kZXJlcigpKS52YWx1ZSgpKSk7CiAgICAgICAgIH0KICAg
ICAgICAgICAgIAogICAgICAgICBhcHBlbmROb2RlKGNsb25lZENoaWxkLmdldCgpLCBjbG9uZWRB
bmNlc3Rvci5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMSUVs
ZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTElFbGVtZW50LmNwcAppbmRleCBh
YjJkZjkxNWNlNmI5MmI3ZTM3ZmRjNTljZDM5YzdiZGRlNGFkYzM2Li44MjdiMzYxYzhjNDlkYTU4
ZTRmNGNkYzE4MzdjYWQ3ZmMyNzllYzM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxMSUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExJRWxlbWVu
dC5jcHAKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJBdHRyaWJ1dGUuaCIKICNpbmNsdWRl
ICJDU1NQcm9wZXJ0eU5hbWVzLmgiCiAjaW5jbHVkZSAiQ1NTVmFsdWVLZXl3b3Jkcy5oIgorI2lu
Y2x1ZGUgIkVsZW1lbnRBbmNlc3Rvckl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgi
CiAjaW5jbHVkZSAiUmVuZGVyTGlzdEl0ZW0uaCIKIApAQCAtODcsMzkgKzg4LDM3IEBAIHZvaWQg
SFRNTExJRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwg
Y29uc3QgQXRvbWljU3RyaW5nCiAKIHZvaWQgSFRNTExJRWxlbWVudDo6ZGlkQXR0YWNoUmVuZGVy
ZXJzKCkKIHsKLSAgICBpZiAoIXJlbmRlcmVyKCkgfHwgIXJlbmRlcmVyKCktPmlzTGlzdEl0ZW0o
KSkKKyAgICBpZiAoIWlzPFJlbmRlckxpc3RJdGVtPihyZW5kZXJlcigpKSkKICAgICAgICAgcmV0
dXJuOwotICAgIFJlbmRlckxpc3RJdGVtKiBsaXN0SXRlbVJlbmRlcmVyID0gdG9SZW5kZXJMaXN0
SXRlbShyZW5kZXJlcigpKTsKLQotICAgIC8vIEZpbmQgdGhlIGVuY2xvc2luZyBsaXN0IG5vZGUu
Ci0gICAgRWxlbWVudCogbGlzdE5vZGUgPSAwOwotICAgIEVsZW1lbnQqIGN1cnJlbnQgPSB0aGlz
OwotICAgIHdoaWxlICghbGlzdE5vZGUpIHsKLSAgICAgICAgY3VycmVudCA9IGN1cnJlbnQtPnBh
cmVudEVsZW1lbnQoKTsKLSAgICAgICAgaWYgKCFjdXJyZW50KQorICAgIGF1dG8mIGxpc3RJdGVt
UmVuZGVyZXIgPSBkb3duY2FzdDxSZW5kZXJMaXN0SXRlbT4oKnJlbmRlcmVyKCkpOworCisgICAg
Ly8gQ2hlY2sgaWYgdGhlcmUgaXMgYW4gZW5jbG9zaW5nIGxpc3QuCisgICAgYm9vbCBpc0luTGlz
dCA9IGZhbHNlOworICAgIGZvciAoYXV0byYgYW5jZXN0b3IgOiBhbmNlc3RvcnNPZlR5cGU8SFRN
TEVsZW1lbnQ+KCp0aGlzKSkgeworICAgICAgICBpZiAoaXM8SFRNTFVMaXN0RWxlbWVudD4oYW5j
ZXN0b3IpIHx8IGlzPEhUTUxPTGlzdEVsZW1lbnQ+KGFuY2VzdG9yKSkgeworICAgICAgICAgICAg
aXNJbkxpc3QgPSB0cnVlOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGlmIChjdXJyZW50
LT5oYXNUYWdOYW1lKHVsVGFnKSB8fCBjdXJyZW50LT5oYXNUYWdOYW1lKG9sVGFnKSkKLSAgICAg
ICAgICAgIGxpc3ROb2RlID0gY3VycmVudDsKKyAgICAgICAgfQogICAgIH0KIAogICAgIC8vIElm
IHdlIGFyZSBub3QgaW4gYSBsaXN0LCB0ZWxsIHRoZSByZW5kZXJlciBzbyBpdCBjYW4gcG9zaXRp
b24gdXMgaW5zaWRlLgogICAgIC8vIFdlIGRvbid0IHdhbnQgdG8gY2hhbmdlIG91ciBzdHlsZSB0
byBzYXkgImluc2lkZSIgc2luY2UgdGhhdCB3b3VsZCBhZmZlY3QgbmVzdGVkIG5vZGVzLgotICAg
IGlmICghbGlzdE5vZGUpCi0gICAgICAgIGxpc3RJdGVtUmVuZGVyZXItPnNldE5vdEluTGlzdCh0
cnVlKTsKKyAgICBpZiAoIWlzSW5MaXN0KQorICAgICAgICBsaXN0SXRlbVJlbmRlcmVyLnNldE5v
dEluTGlzdCh0cnVlKTsKIAogICAgIHBhcnNlVmFsdWUoZmFzdEdldEF0dHJpYnV0ZSh2YWx1ZUF0
dHIpKTsKIH0KIAogaW5saW5lIHZvaWQgSFRNTExJRWxlbWVudDo6cGFyc2VWYWx1ZShjb25zdCBB
dG9taWNTdHJpbmcmIHZhbHVlKQogewotICAgIEFTU0VSVChyZW5kZXJlcigpICYmIHJlbmRlcmVy
KCktPmlzTGlzdEl0ZW0oKSk7CisgICAgQVNTRVJUKHJlbmRlcmVyKCkpOwogCiAgICAgYm9vbCB2
YWx1ZU9LOwogICAgIGludCByZXF1ZXN0ZWRWYWx1ZSA9IHZhbHVlLnRvSW50KCZ2YWx1ZU9LKTsK
ICAgICBpZiAodmFsdWVPSykKLSAgICAgICAgdG9SZW5kZXJMaXN0SXRlbShyZW5kZXJlcigpKS0+
c2V0RXhwbGljaXRWYWx1ZShyZXF1ZXN0ZWRWYWx1ZSk7CisgICAgICAgIGRvd25jYXN0PFJlbmRl
ckxpc3RJdGVtPigqcmVuZGVyZXIoKSkuc2V0RXhwbGljaXRWYWx1ZShyZXF1ZXN0ZWRWYWx1ZSk7
CiAgICAgZWxzZQotICAgICAgICB0b1JlbmRlckxpc3RJdGVtKHJlbmRlcmVyKCkpLT5jbGVhckV4
cGxpY2l0VmFsdWUoKTsKKyAgICAgICAgZG93bmNhc3Q8UmVuZGVyTGlzdEl0ZW0+KCpyZW5kZXJl
cigpKS5jbGVhckV4cGxpY2l0VmFsdWUoKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxTZWxlY3RFbGVtZW50LmNwcAppbmRleCBjNGQxMjY1ZTc0NTkzNWFlYzBjMDQxZjkyYzk2Mzc1
MjA0YjBiZmQyLi40Zjg5ODM2MmY4NTEyN2ZkMTkzMDk5MmY1YTA1MzlmNDliZWIyMjBiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50LmNwcApAQCAtNTYyLDE0ICs1NjIs
MTQgQEAgaW50IEhUTUxTZWxlY3RFbGVtZW50OjpuZXh0U2VsZWN0YWJsZUxpc3RJbmRleFBhZ2VB
d2F5KGludCBzdGFydEluZGV4LCBTa2lwRGlyZWMKICAgICBjb25zdCBWZWN0b3I8SFRNTEVsZW1l
bnQqPiYgaXRlbXMgPSBsaXN0SXRlbXMoKTsKICAgICAvLyBDYW4ndCB1c2UgbV9zaXplIGJlY2F1
c2UgcmVuZGVyZXIgZm9yY2VzIGEgbWluaW11bSBzaXplLgogICAgIGludCBwYWdlU2l6ZSA9IDA7
Ci0gICAgaWYgKHJlbmRlcmVyKCktPmlzTGlzdEJveCgpKQotICAgICAgICBwYWdlU2l6ZSA9IHRv
UmVuZGVyTGlzdEJveChyZW5kZXJlcigpKS0+c2l6ZSgpIC0gMTsgLy8gLTEgc28gd2Ugc3RpbGwg
c2hvdyBjb250ZXh0LgorICAgIGlmIChpczxSZW5kZXJMaXN0Qm94PigqcmVuZGVyZXIoKSkpCisg
ICAgICAgIHBhZ2VTaXplID0gZG93bmNhc3Q8UmVuZGVyTGlzdEJveD4oKnJlbmRlcmVyKCkpLnNp
emUoKSAtIDE7IC8vIC0xIHNvIHdlIHN0aWxsIHNob3cgY29udGV4dC4KIAogICAgIC8vIE9uZSBw
YWdlIGF3YXksIGJ1dCBub3Qgb3V0c2lkZSB2YWxpZCBib3VuZHMuCiAgICAgLy8gSWYgdGhlcmUg
aXMgYSB2YWxpZCBvcHRpb24gaXRlbSBvbmUgcGFnZSBhd2F5LCB0aGUgaW5kZXggaXMgY2hvc2Vu
LgogICAgIC8vIElmIHRoZXJlIGlzIG5vIGV4YWN0IG9uZSBwYWdlIGF3YXkgdmFsaWQgb3B0aW9u
LCByZXR1cm5zIHN0YXJ0SW5kZXggb3IgdGhlIG1vc3QgZmFyIGluZGV4LgotICAgIGludCBlZGdl
SW5kZXggPSAoZGlyZWN0aW9uID09IFNraXBGb3J3YXJkcykgPyAwIDogKGl0ZW1zLnNpemUoKSAt
IDEpOwotICAgIGludCBza2lwQW1vdW50ID0gcGFnZVNpemUgKyAoKGRpcmVjdGlvbiA9PSBTa2lw
Rm9yd2FyZHMpID8gc3RhcnRJbmRleCA6IChlZGdlSW5kZXggLSBzdGFydEluZGV4KSk7CisgICAg
aW50IGVkZ2VJbmRleCA9IGRpcmVjdGlvbiA9PSBTa2lwRm9yd2FyZHMgPyAwIDogaXRlbXMuc2l6
ZSgpIC0gMTsKKyAgICBpbnQgc2tpcEFtb3VudCA9IHBhZ2VTaXplICsgKGRpcmVjdGlvbiA9PSBT
a2lwRm9yd2FyZHMgPyBzdGFydEluZGV4IDogZWRnZUluZGV4IC0gc3RhcnRJbmRleCk7CiAgICAg
cmV0dXJuIG5leHRWYWxpZEluZGV4KGVkZ2VJbmRleCwgZGlyZWN0aW9uLCBza2lwQW1vdW50KTsK
IH0KIApAQCAtNzA3LDI2ICs3MDcsMjYgQEAgdm9pZCBIVE1MU2VsZWN0RWxlbWVudDo6c2Nyb2xs
VG9TZWxlY3Rpb24oKQogICAgIGlmICh1c2VzTWVudUxpc3QoKSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgYXV0byByZW5kZXJlciA9IHRoaXMtPnJlbmRlcmVyKCk7Ci0gICAgaWYgKCFyZW5kZXJl
ciB8fCAhcmVuZGVyZXItPmlzTGlzdEJveCgpKQorICAgIGF1dG8qIHJlbmRlcmVyID0gdGhpcy0+
cmVuZGVyZXIoKTsKKyAgICBpZiAoIWlzPFJlbmRlckxpc3RCb3g+KHJlbmRlcmVyKSkKICAgICAg
ICAgcmV0dXJuOwotICAgIHRvUmVuZGVyTGlzdEJveChyZW5kZXJlciktPnNlbGVjdGlvbkNoYW5n
ZWQoKTsKKyAgICBkb3duY2FzdDxSZW5kZXJMaXN0Qm94PigqcmVuZGVyZXIpLnNlbGVjdGlvbkNo
YW5nZWQoKTsKICNlbHNlCi0gICAgaWYgKGF1dG8gcmVuZGVyZXIgPSB0aGlzLT5yZW5kZXJlcigp
KQorICAgIGlmIChhdXRvKiByZW5kZXJlciA9IHRoaXMtPnJlbmRlcmVyKCkpCiAgICAgICAgIHJl
bmRlcmVyLT5yZXBhaW50KCk7CiAjZW5kaWYKIH0KIAogdm9pZCBIVE1MU2VsZWN0RWxlbWVudDo6
c2V0T3B0aW9uc0NoYW5nZWRPblJlbmRlcmVyKCkKIHsKLSAgICBpZiAoYXV0byByZW5kZXJlciA9
IHRoaXMtPnJlbmRlcmVyKCkpIHsKKyAgICBpZiAoYXV0byogcmVuZGVyZXIgPSB0aGlzLT5yZW5k
ZXJlcigpKSB7CiAjaWYgIVBMQVRGT1JNKElPUykKLSAgICAgICAgaWYgKHJlbmRlcmVyLT5pc01l
bnVMaXN0KCkpCi0gICAgICAgICAgICB0b1JlbmRlck1lbnVMaXN0KHJlbmRlcmVyKS0+c2V0T3B0
aW9uc0NoYW5nZWQodHJ1ZSk7CisgICAgICAgIGlmIChpczxSZW5kZXJNZW51TGlzdD4oKnJlbmRl
cmVyKSkKKyAgICAgICAgICAgIGRvd25jYXN0PFJlbmRlck1lbnVMaXN0PigqcmVuZGVyZXIpLnNl
dE9wdGlvbnNDaGFuZ2VkKHRydWUpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICB0b1JlbmRl
ckxpc3RCb3gocmVuZGVyZXIpLT5zZXRPcHRpb25zQ2hhbmdlZCh0cnVlKTsKKyAgICAgICAgICAg
IGRvd25jYXN0PFJlbmRlckxpc3RCb3g+KCpyZW5kZXJlcikuc2V0T3B0aW9uc0NoYW5nZWQodHJ1
ZSk7CiAjZWxzZQotICAgICAgICB0b1JlbmRlck1lbnVMaXN0KHJlbmRlcmVyKS0+c2V0T3B0aW9u
c0NoYW5nZWQodHJ1ZSk7CisgICAgICAgIGRvd25jYXN0PFJlbmRlck1lbnVMaXN0PigqcmVuZGVy
ZXIpLnNldE9wdGlvbnNDaGFuZ2VkKHRydWUpOwogI2VuZGlmCiAgICAgfQogfQpAQCAtODg5LDcg
Kzg4OSw3IEBAIHZvaWQgSFRNTFNlbGVjdEVsZW1lbnQ6OnNlbGVjdE9wdGlvbihpbnQgb3B0aW9u
SW5kZXgsIFNlbGVjdE9wdGlvbkZsYWdzIGZsYWdzKQogICAgICAgICBkZXNlbGVjdEl0ZW1zV2l0
aG91dFZhbGlkYXRpb24oZWxlbWVudCk7CiAKICAgICAvLyBGb3IgdGhlIG1lbnUgbGlzdCBjYXNl
LCB0aGlzIGlzIHdoYXQgbWFrZXMgdGhlIHNlbGVjdGVkIGVsZW1lbnQgYXBwZWFyLgotICAgIGlm
IChhdXRvIHJlbmRlcmVyID0gdGhpcy0+cmVuZGVyZXIoKSkKKyAgICBpZiAoYXV0byogcmVuZGVy
ZXIgPSB0aGlzLT5yZW5kZXJlcigpKQogICAgICAgICByZW5kZXJlci0+dXBkYXRlRnJvbUVsZW1l
bnQoKTsKIAogICAgIHNjcm9sbFRvU2VsZWN0aW9uKCk7CkBAIC04OTgsMTEgKzg5OCwxMSBAQCB2
b2lkIEhUTUxTZWxlY3RFbGVtZW50OjpzZWxlY3RPcHRpb24oaW50IG9wdGlvbkluZGV4LCBTZWxl
Y3RPcHRpb25GbGFncyBmbGFncykKICAgICAgICAgbV9pc1Byb2Nlc3NpbmdVc2VyRHJpdmVuQ2hh
bmdlID0gZmxhZ3MgJiBVc2VyRHJpdmVuOwogICAgICAgICBpZiAoZmxhZ3MgJiBEaXNwYXRjaENo
YW5nZUV2ZW50KQogICAgICAgICAgICAgZGlzcGF0Y2hDaGFuZ2VFdmVudEZvck1lbnVMaXN0KCk7
Ci0gICAgICAgIGlmIChhdXRvIHJlbmRlcmVyID0gdGhpcy0+cmVuZGVyZXIoKSkgewotICAgICAg
ICAgICAgaWYgKHJlbmRlcmVyLT5pc01lbnVMaXN0KCkpCi0gICAgICAgICAgICAgICAgdG9SZW5k
ZXJNZW51TGlzdChyZW5kZXJlciktPmRpZFNldFNlbGVjdGVkSW5kZXgobGlzdEluZGV4KTsKKyAg
ICAgICAgaWYgKGF1dG8qIHJlbmRlcmVyID0gdGhpcy0+cmVuZGVyZXIoKSkgeworICAgICAgICAg
ICAgaWYgKGlzPFJlbmRlck1lbnVMaXN0PigqcmVuZGVyZXIpKQorICAgICAgICAgICAgICAgIGRv
d25jYXN0PFJlbmRlck1lbnVMaXN0PigqcmVuZGVyZXIpLmRpZFNldFNlbGVjdGVkSW5kZXgobGlz
dEluZGV4KTsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICB0b1JlbmRlckxpc3RC
b3gocmVuZGVyZXIpLT5zZWxlY3Rpb25DaGFuZ2VkKCk7CisgICAgICAgICAgICAgICAgZG93bmNh
c3Q8UmVuZGVyTGlzdEJveD4oKnJlbmRlcmVyKS5zZWxlY3Rpb25DaGFuZ2VkKCk7CiAgICAgICAg
IH0KICAgICB9CiAKQEAgLTExMjAsNyArMTEyMCw3IEBAIGJvb2wgSFRNTFNlbGVjdEVsZW1lbnQ6
OnBsYXRmb3JtSGFuZGxlS2V5ZG93bkV2ZW50KEtleWJvYXJkRXZlbnQqIGV2ZW50KQogICAgICAg
ICAgICAgLy8gQ2FsbGluZyBmb2N1cygpIG1heSBjYXVzZSB1cyB0byBsb3NlIG91ciByZW5kZXJl
ci4gUmV0dXJuIHRydWUgc28KICAgICAgICAgICAgIC8vIHRoYXQgb3VyIGNhbGxlciBkb2Vzbid0
IHByb2Nlc3MgdGhlIGV2ZW50IGZ1cnRoZXIsIGJ1dCBkb24ndCBzZXQKICAgICAgICAgICAgIC8v
IHRoZSBldmVudCBhcyBoYW5kbGVkLgotICAgICAgICAgICAgaWYgKCFyZW5kZXJlcigpIHx8ICFy
ZW5kZXJlcigpLT5pc01lbnVMaXN0KCkpCisgICAgICAgICAgICBpZiAoIWlzPFJlbmRlck1lbnVM
aXN0PihyZW5kZXJlcigpKSkKICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgICAg
ICAgICAgLy8gU2F2ZSB0aGUgc2VsZWN0aW9uIHNvIGl0IGNhbiBiZSBjb21wYXJlZCB0byB0aGUg
bmV3IHNlbGVjdGlvbgpAQCAtMTEyOCw3ICsxMTI4LDcgQEAgYm9vbCBIVE1MU2VsZWN0RWxlbWVu
dDo6cGxhdGZvcm1IYW5kbGVLZXlkb3duRXZlbnQoS2V5Ym9hcmRFdmVudCogZXZlbnQpCiAgICAg
ICAgICAgICAvLyBnZXRzIGNhbGxlZCBmcm9tIFJlbmRlck1lbnVMaXN0Ojp2YWx1ZUNoYW5nZWQs
IHdoaWNoIGdldHMgY2FsbGVkCiAgICAgICAgICAgICAvLyBhZnRlciB0aGUgdXNlciBtYWtlcyBh
IHNlbGVjdGlvbiBmcm9tIHRoZSBtZW51LgogICAgICAgICAgICAgc2F2ZUxhc3RTZWxlY3Rpb24o
KTsKLSAgICAgICAgICAgIHRvUmVuZGVyTWVudUxpc3QocmVuZGVyZXIoKSktPnNob3dQb3B1cCgp
OworICAgICAgICAgICAgZG93bmNhc3Q8UmVuZGVyTWVudUxpc3Q+KCpyZW5kZXJlcigpKS5zaG93
UG9wdXAoKTsKICAgICAgICAgICAgIGV2ZW50LT5zZXREZWZhdWx0SGFuZGxlZCgpOwogICAgICAg
ICB9CiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMTIxOSw3ICsxMjE5LDcgQEAgdm9pZCBIVE1M
U2VsZWN0RWxlbWVudDo6bWVudUxpc3REZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50KiBldmVudCkK
IAogICAgICAgICAgICAgICAgIC8vIENhbGxpbmcgZm9jdXMoKSBtYXkgcmVtb3ZlIHRoZSByZW5k
ZXJlciBvciBjaGFuZ2UgdGhlCiAgICAgICAgICAgICAgICAgLy8gcmVuZGVyZXIgdHlwZS4KLSAg
ICAgICAgICAgICAgICBpZiAoIXJlbmRlcmVyKCkgfHwgIXJlbmRlcmVyKCktPmlzTWVudUxpc3Qo
KSkKKyAgICAgICAgICAgICAgICBpZiAoIWlzPFJlbmRlck1lbnVMaXN0PihyZW5kZXJlcigpKSkK
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgICAgICAgICAgLy8gU2F2ZSB0
aGUgc2VsZWN0aW9uIHNvIGl0IGNhbiBiZSBjb21wYXJlZCB0byB0aGUgbmV3IHNlbGVjdGlvbgpA
QCAtMTIyNyw3ICsxMjI3LDcgQEAgdm9pZCBIVE1MU2VsZWN0RWxlbWVudDo6bWVudUxpc3REZWZh
dWx0RXZlbnRIYW5kbGVyKEV2ZW50KiBldmVudCkKICAgICAgICAgICAgICAgICAvLyBnZXRzIGNh
bGxlZCBmcm9tIFJlbmRlck1lbnVMaXN0Ojp2YWx1ZUNoYW5nZWQsIHdoaWNoIGdldHMgY2FsbGVk
CiAgICAgICAgICAgICAgICAgLy8gYWZ0ZXIgdGhlIHVzZXIgbWFrZXMgYSBzZWxlY3Rpb24gZnJv
bSB0aGUgbWVudS4KICAgICAgICAgICAgICAgICBzYXZlTGFzdFNlbGVjdGlvbigpOwotICAgICAg
ICAgICAgICAgIHRvUmVuZGVyTWVudUxpc3QocmVuZGVyZXIoKSktPnNob3dQb3B1cCgpOworICAg
ICAgICAgICAgICAgIGRvd25jYXN0PFJlbmRlck1lbnVMaXN0PigqcmVuZGVyZXIoKSkuc2hvd1Bv
cHVwKCk7CiAgICAgICAgICAgICAgICAgaGFuZGxlZCA9IHRydWU7CiAgICAgICAgICAgICB9CiAg
ICAgICAgIH0gZWxzZSBpZiAocmVuZGVyVGhlbWUtPnBvcHNNZW51QnlBcnJvd0tleXMoKSkgewpA
QCAtMTIzNiw3ICsxMjM2LDcgQEAgdm9pZCBIVE1MU2VsZWN0RWxlbWVudDo6bWVudUxpc3REZWZh
dWx0RXZlbnRIYW5kbGVyKEV2ZW50KiBldmVudCkKIAogICAgICAgICAgICAgICAgIC8vIENhbGxp
bmcgZm9jdXMoKSBtYXkgcmVtb3ZlIHRoZSByZW5kZXJlciBvciBjaGFuZ2UgdGhlCiAgICAgICAg
ICAgICAgICAgLy8gcmVuZGVyZXIgdHlwZS4KLSAgICAgICAgICAgICAgICBpZiAoIXJlbmRlcmVy
KCkgfHwgIXJlbmRlcmVyKCktPmlzTWVudUxpc3QoKSkKKyAgICAgICAgICAgICAgICBpZiAoIWlz
PFJlbmRlck1lbnVMaXN0PihyZW5kZXJlcigpKSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
OwogCiAgICAgICAgICAgICAgICAgLy8gU2F2ZSB0aGUgc2VsZWN0aW9uIHNvIGl0IGNhbiBiZSBj
b21wYXJlZCB0byB0aGUgbmV3IHNlbGVjdGlvbgpAQCAtMTI0NCw3ICsxMjQ0LDcgQEAgdm9pZCBI
VE1MU2VsZWN0RWxlbWVudDo6bWVudUxpc3REZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50KiBldmVu
dCkKICAgICAgICAgICAgICAgICAvLyBnZXRzIGNhbGxlZCBmcm9tIFJlbmRlck1lbnVMaXN0Ojp2
YWx1ZUNoYW5nZWQsIHdoaWNoIGdldHMgY2FsbGVkCiAgICAgICAgICAgICAgICAgLy8gYWZ0ZXIg
dGhlIHVzZXIgbWFrZXMgYSBzZWxlY3Rpb24gZnJvbSB0aGUgbWVudS4KICAgICAgICAgICAgICAg
ICBzYXZlTGFzdFNlbGVjdGlvbigpOwotICAgICAgICAgICAgICAgIHRvUmVuZGVyTWVudUxpc3Qo
cmVuZGVyZXIoKSktPnNob3dQb3B1cCgpOworICAgICAgICAgICAgICAgIGRvd25jYXN0PFJlbmRl
ck1lbnVMaXN0PigqcmVuZGVyZXIoKSkuc2hvd1BvcHVwKCk7CiAgICAgICAgICAgICAgICAgaGFu
ZGxlZCA9IHRydWU7CiAgICAgICAgICAgICB9IGVsc2UgaWYgKGtleUNvZGUgPT0gJ1xyJykgewog
ICAgICAgICAgICAgICAgIGlmIChmb3JtKCkpCkBAIC0xMjYxLDggKzEyNjEsOCBAQCB2b2lkIEhU
TUxTZWxlY3RFbGVtZW50OjptZW51TGlzdERlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqIGV2ZW50
KQogICAgIGlmIChldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5tb3VzZWRvd25FdmVudCAm
JiBpczxNb3VzZUV2ZW50PigqZXZlbnQpICYmIGRvd25jYXN0PE1vdXNlRXZlbnQ+KCpldmVudCku
YnV0dG9uKCkgPT0gTGVmdEJ1dHRvbikgewogICAgICAgICBmb2N1cygpOwogI2lmICFQTEFURk9S
TShJT1MpCi0gICAgICAgIGlmIChyZW5kZXJlcigpICYmIHJlbmRlcmVyKCktPmlzTWVudUxpc3Qo
KSkgewotICAgICAgICAgICAgYXV0byYgbWVudUxpc3QgPSB0b1JlbmRlck1lbnVMaXN0KCpyZW5k
ZXJlcigpKTsKKyAgICAgICAgaWYgKGlzPFJlbmRlck1lbnVMaXN0PihyZW5kZXJlcigpKSkgewor
ICAgICAgICAgICAgYXV0byYgbWVudUxpc3QgPSBkb3duY2FzdDxSZW5kZXJNZW51TGlzdD4oKnJl
bmRlcmVyKCkpOwogICAgICAgICAgICAgQVNTRVJUKCFtZW51TGlzdC5wb3B1cElzVmlzaWJsZSgp
KTsKICAgICAgICAgICAgIC8vIFNhdmUgdGhlIHNlbGVjdGlvbiBzbyBpdCBjYW4gYmUgY29tcGFy
ZWQgdG8gdGhlIG5ldwogICAgICAgICAgICAgLy8gc2VsZWN0aW9uIHdoZW4gd2UgY2FsbCBvbkNo
YW5nZSBkdXJpbmcgc2VsZWN0T3B0aW9uLApAQCAtMTI3OCw3ICsxMjc4LDcgQEAgdm9pZCBIVE1M
U2VsZWN0RWxlbWVudDo6bWVudUxpc3REZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50KiBldmVudCkK
IAogI2lmICFQTEFURk9STShJT1MpCiAgICAgaWYgKGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1l
cygpLmJsdXJFdmVudCAmJiAhZm9jdXNlZCgpKSB7Ci0gICAgICAgIGF1dG8mIG1lbnVMaXN0ID0g
dG9SZW5kZXJNZW51TGlzdCgqcmVuZGVyZXIoKSk7CisgICAgICAgIGF1dG8mIG1lbnVMaXN0ID0g
ZG93bmNhc3Q8UmVuZGVyTWVudUxpc3Q+KCpyZW5kZXJlcigpKTsKICAgICAgICAgaWYgKG1lbnVM
aXN0LnBvcHVwSXNWaXNpYmxlKCkpCiAgICAgICAgICAgICBtZW51TGlzdC5oaWRlUG9wdXAoKTsK
ICAgICB9CkBAIC0xMzQxLDEzICsxMzQxLDEzIEBAIHZvaWQgSFRNTFNlbGVjdEVsZW1lbnQ6Omxp
c3RCb3hEZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50KiBldmVudCkKICAgICBpZiAoZXZlbnQtPnR5
cGUoKSA9PSBldmVudE5hbWVzKCkubW91c2Vkb3duRXZlbnQgJiYgaXM8TW91c2VFdmVudD4oKmV2
ZW50KSAmJiBkb3duY2FzdDxNb3VzZUV2ZW50PigqZXZlbnQpLmJ1dHRvbigpID09IExlZnRCdXR0
b24pIHsKICAgICAgICAgZm9jdXMoKTsKICAgICAgICAgLy8gQ2FsbGluZyBmb2N1cygpIG1heSBy
ZW1vdmUgb3IgY2hhbmdlIG91ciByZW5kZXJlciwgaW4gd2hpY2ggY2FzZSB3ZSBkb24ndCB3YW50
IHRvIGhhbmRsZSB0aGUgZXZlbnQgZnVydGhlci4KLSAgICAgICAgaWYgKCFyZW5kZXJlcigpIHx8
ICFyZW5kZXJlcigpLT5pc0xpc3RCb3goKSkKKyAgICAgICAgaWYgKCFpczxSZW5kZXJMaXN0Qm94
PihyZW5kZXJlcigpKSkKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICAvLyBDb252ZXJ0
IHRvIGNvb3JkcyByZWxhdGl2ZSB0byB0aGUgbGlzdCBib3ggaWYgbmVlZGVkLgogICAgICAgICBN
b3VzZUV2ZW50JiBtb3VzZUV2ZW50ID0gZG93bmNhc3Q8TW91c2VFdmVudD4oKmV2ZW50KTsKICAg
ICAgICAgSW50UG9pbnQgbG9jYWxPZmZzZXQgPSByb3VuZGVkSW50UG9pbnQocmVuZGVyZXIoKS0+
YWJzb2x1dGVUb0xvY2FsKG1vdXNlRXZlbnQuYWJzb2x1dGVMb2NhdGlvbigpLCBVc2VUcmFuc2Zv
cm1zKSk7Ci0gICAgICAgIGludCBsaXN0SW5kZXggPSB0b1JlbmRlckxpc3RCb3gocmVuZGVyZXIo
KSktPmxpc3RJbmRleEF0T2Zmc2V0KHRvSW50U2l6ZShsb2NhbE9mZnNldCkpOworICAgICAgICBp
bnQgbGlzdEluZGV4ID0gZG93bmNhc3Q8UmVuZGVyTGlzdEJveD4oKnJlbmRlcmVyKCkpLmxpc3RJ
bmRleEF0T2Zmc2V0KHRvSW50U2l6ZShsb2NhbE9mZnNldCkpOwogICAgICAgICBpZiAobGlzdElu
ZGV4ID49IDApIHsKICAgICAgICAgICAgIGlmICghaXNEaXNhYmxlZEZvcm1Db250cm9sKCkpIHsK
ICNpZiBQTEFURk9STShDT0NPQSkKQEAgLTEzNjcsNyArMTM2Nyw3IEBAIHZvaWQgSFRNTFNlbGVj
dEVsZW1lbnQ6Omxpc3RCb3hEZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50KiBldmVudCkKICAgICAg
ICAgICAgIHJldHVybjsKIAogICAgICAgICBJbnRQb2ludCBsb2NhbE9mZnNldCA9IHJvdW5kZWRJ
bnRQb2ludChyZW5kZXJlcigpLT5hYnNvbHV0ZVRvTG9jYWwobW91c2VFdmVudC5hYnNvbHV0ZUxv
Y2F0aW9uKCksIFVzZVRyYW5zZm9ybXMpKTsKLSAgICAgICAgaW50IGxpc3RJbmRleCA9IHRvUmVu
ZGVyTGlzdEJveChyZW5kZXJlcigpKS0+bGlzdEluZGV4QXRPZmZzZXQodG9JbnRTaXplKGxvY2Fs
T2Zmc2V0KSk7CisgICAgICAgIGludCBsaXN0SW5kZXggPSBkb3duY2FzdDxSZW5kZXJMaXN0Qm94
PigqcmVuZGVyZXIoKSkubGlzdEluZGV4QXRPZmZzZXQodG9JbnRTaXplKGxvY2FsT2Zmc2V0KSk7
CiAgICAgICAgIGlmIChsaXN0SW5kZXggPj0gMCkgewogICAgICAgICAgICAgaWYgKCFpc0Rpc2Fi
bGVkRm9ybUNvbnRyb2woKSkgewogICAgICAgICAgICAgICAgIGlmIChtX211bHRpcGxlKSB7CkBA
IC0xNDc1LDcgKzE0NzUsNyBAQCB2b2lkIEhUTUxTZWxlY3RFbGVtZW50OjpsaXN0Qm94RGVmYXVs
dEV2ZW50SGFuZGxlcihFdmVudCogZXZlbnQpCiAgICAgICAgICAgICAgICAgc2V0QWN0aXZlU2Vs
ZWN0aW9uQW5jaG9ySW5kZXgobV9hY3RpdmVTZWxlY3Rpb25FbmRJbmRleCk7CiAgICAgICAgICAg
ICB9CiAKLSAgICAgICAgICAgIHRvUmVuZGVyTGlzdEJveChyZW5kZXJlcigpKS0+c2Nyb2xsVG9S
ZXZlYWxFbGVtZW50QXRMaXN0SW5kZXgoZW5kSW5kZXgpOworICAgICAgICAgICAgZG93bmNhc3Q8
UmVuZGVyTGlzdEJveD4oKnJlbmRlcmVyKCkpLnNjcm9sbFRvUmV2ZWFsRWxlbWVudEF0TGlzdElu
ZGV4KGVuZEluZGV4KTsKICAgICAgICAgICAgIGlmIChzZWxlY3ROZXdJdGVtKSB7CiAgICAgICAg
ICAgICAgICAgdXBkYXRlTGlzdEJveFNlbGVjdGlvbihkZXNlbGVjdE90aGVycyk7CiAgICAgICAg
ICAgICAgICAgbGlzdEJveE9uQ2hhbmdlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxTZWxlY3RFbGVtZW50V2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNl
bGVjdEVsZW1lbnRXaW4uY3BwCmluZGV4IDIwMWM2YTVkMTA3OTlhN2M5NzkzOGE1MzU5MGFjM2Nl
MWQxOWNlMjIuLjkwZjZlZjcwZjcyYTlkNTZmZWI4NTcwZDQ1M2UxNGFhMTIzZWJjNjcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnRXaW4uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnRXaW4uY3BwCkBAIC00NSw3ICs0
NSw3IEBAIGJvb2wgSFRNTFNlbGVjdEVsZW1lbnQ6OnBsYXRmb3JtSGFuZGxlS2V5ZG93bkV2ZW50
KEtleWJvYXJkRXZlbnQqIGV2ZW50KQogICAgIC8vIFNhdmUgdGhlIHNlbGVjdGlvbiBzbyBpdCBj
YW4gYmUgY29tcGFyZWQgdG8gdGhlIG5ldyBzZWxlY3Rpb24gd2hlbiBkaXNwYXRjaGluZyBjaGFu
Z2UgZXZlbnRzIGR1cmluZyBzZXRTZWxlY3RlZEluZGV4LAogICAgIC8vIHdoaWNoIGdldHMgY2Fs
bGVkIGZyb20gUmVuZGVyTWVudUxpc3Q6OnZhbHVlQ2hhbmdlZCwgd2hpY2ggZ2V0cyBjYWxsZWQg
YWZ0ZXIgdGhlIHVzZXIgbWFrZXMgYSBzZWxlY3Rpb24gZnJvbSB0aGUgbWVudS4KICAgICBzYXZl
TGFzdFNlbGVjdGlvbigpOwotICAgIGlmIChSZW5kZXJNZW51TGlzdCogbWVudUxpc3QgPSB0b1Jl
bmRlck1lbnVMaXN0KHJlbmRlcmVyKCkpKQorICAgIGlmIChhdXRvKiBtZW51TGlzdCA9IGRvd25j
YXN0PFJlbmRlck1lbnVMaXN0PihyZW5kZXJlcigpKSkKICAgICAgICAgbWVudUxpc3QtPnNob3dQ
b3B1cCgpOwogCiAgICAgaW50IGluZGV4ID0gc2VsZWN0ZWRJbmRleCgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9tYWMvRXZlbnRIYW5kbGVyTWFjLm1tIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9tYWMvRXZlbnRIYW5kbGVyTWFjLm1tCmluZGV4IDNkNzUxNDg2OTYyMWZjY2YxNzc3
M2FmZTAyNzFjMGU0MmIwYjM4OTQuLjQyYWJjMzg4NWEzMGVmNWI5NDA4MzE3Y2I3ZjcwNGUxMjE5
Nzg4YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0V2ZW50SGFuZGxlck1h
Yy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9FdmVudEhhbmRsZXJNYWMubW0KQEAg
LTg0Miw4ICs4NDIsOCBAQCB2b2lkIEV2ZW50SGFuZGxlcjo6cGxhdGZvcm1QcmVwYXJlRm9yV2hl
ZWxFdmVudHMoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiB3aGVlbAogICAgICAgICAgICAgc2Ny
b2xsYWJsZUNvbnRhaW5lciA9IGZpbmRFbmNsb3NpbmdTY3JvbGxhYmxlQ29udGFpbmVyKCp3aGVl
bEV2ZW50VGFyZ2V0KTsKICAgICAgICAgICAgIGlmIChzY3JvbGxhYmxlQ29udGFpbmVyKSB7CiAg
ICAgICAgICAgICAgICAgaWYgKFJlbmRlckJveCogYm94ID0gc2Nyb2xsYWJsZUNvbnRhaW5lci0+
cmVuZGVyQm94KCkpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGJveC0+aXNMaXN0Qm94KCkp
Ci0gICAgICAgICAgICAgICAgICAgICAgICBzY3JvbGxhYmxlQXJlYSA9IHRvUmVuZGVyTGlzdEJv
eChib3gpOworICAgICAgICAgICAgICAgICAgICBpZiAoaXM8UmVuZGVyTGlzdEJveD4oKmJveCkp
CisgICAgICAgICAgICAgICAgICAgICAgICBzY3JvbGxhYmxlQXJlYSA9IGRvd25jYXN0PFJlbmRl
ckxpc3RCb3g+KGJveCk7CiAgICAgICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAg
ICAgICAgICAgIHNjcm9sbGFibGVBcmVhID0gYm94LT5sYXllcigpOwogICAgICAgICAgICAgICAg
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVGbG93Qm94LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVGbG93Qm94LmNwcAppbmRleCA4MTJk
ZDBkOTk5ZWE0OTYzMTE3YWY1MTIxMWMxN2M3NDJjM2M0NjNmLi5jODlkMDJiYTUzZDExOTRkYTA4
MmIwN2M2YzEyNzFhNzIzMDZiYTdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvSW5saW5lRmxvd0JveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGlu
ZUZsb3dCb3guY3BwCkBAIC0xNjEsNyArMTYxLDcgQEAgdm9pZCBJbmxpbmVGbG93Qm94OjphZGRU
b0xpbmUoSW5saW5lQm94KiBjaGlsZCkKICAgICAgICAgICAgIGlmIChib3guaGFzUmVuZGVyT3Zl
cmZsb3coKSB8fCBib3guaGFzU2VsZlBhaW50aW5nTGF5ZXIoKSkKICAgICAgICAgICAgICAgICBj
aGlsZC0+Y2xlYXJLbm93blRvSGF2ZU5vT3ZlcmZsb3coKTsKICAgICAgICAgfSBlbHNlIGlmICgh
Y2hpbGQtPnJlbmRlcmVyKCkuaXNMaW5lQnJlYWsoKSAmJiAoY2hpbGRTdHlsZS5ib3hTaGFkb3co
KSB8fCBjaGlsZC0+Ym94TW9kZWxPYmplY3QoKS0+aGFzU2VsZlBhaW50aW5nTGF5ZXIoKQotICAg
ICAgICAgICAgfHwgKGNoaWxkLT5yZW5kZXJlcigpLmlzTGlzdE1hcmtlcigpICYmICF0b1JlbmRl
ckxpc3RNYXJrZXIoY2hpbGQtPnJlbmRlcmVyKCkpLmlzSW5zaWRlKCkpCisgICAgICAgICAgICB8
fCAoaXM8UmVuZGVyTGlzdE1hcmtlcj4oY2hpbGQtPnJlbmRlcmVyKCkpICYmICFkb3duY2FzdDxS
ZW5kZXJMaXN0TWFya2VyPihjaGlsZC0+cmVuZGVyZXIoKSkuaXNJbnNpZGUoKSkKICAgICAgICAg
ICAgIHx8IGNoaWxkU3R5bGUuaGFzQm9yZGVySW1hZ2VPdXRzZXRzKCkpKQogICAgICAgICAgICAg
Y2hpbGQtPmNsZWFyS25vd25Ub0hhdmVOb092ZXJmbG93KCk7CiAgICAgICAgIApAQCAtNDA4LDcg
KzQwOCw3IEBAIGZsb2F0IElubGluZUZsb3dCb3g6OnBsYWNlQm94UmFuZ2VJbklubGluZURpcmVj
dGlvbihJbmxpbmVCb3gqIGZpcnN0Q2hpbGQsIElubGluCiAgICAgICAgICAgICAgICAgaWYgKGtu
b3duVG9IYXZlTm9PdmVyZmxvdygpKQogICAgICAgICAgICAgICAgICAgICBtYXhMb2dpY2FsUmln
aHQgPSBzdGQ6Om1heChsb2dpY2FsTGVmdCwgbWF4TG9naWNhbFJpZ2h0KTsKICAgICAgICAgICAg
ICAgICBsb2dpY2FsTGVmdCArPSBmbG93Lm1hcmdpbkxvZ2ljYWxSaWdodCgpOwotICAgICAgICAg
ICAgfSBlbHNlIGlmICghY2hpbGQtPnJlbmRlcmVyKCkuaXNMaXN0TWFya2VyKCkgfHwgdG9SZW5k
ZXJMaXN0TWFya2VyKGNoaWxkLT5yZW5kZXJlcigpKS5pc0luc2lkZSgpKSB7CisgICAgICAgICAg
ICB9IGVsc2UgaWYgKCFpczxSZW5kZXJMaXN0TWFya2VyPihjaGlsZC0+cmVuZGVyZXIoKSkgfHwg
ZG93bmNhc3Q8UmVuZGVyTGlzdE1hcmtlcj4oY2hpbGQtPnJlbmRlcmVyKCkpLmlzSW5zaWRlKCkp
IHsKICAgICAgICAgICAgICAgICAvLyBUaGUgYm94IGNhbiBoYXZlIGEgZGlmZmVyZW50IHdyaXRp
bmctbW9kZSB0aGFuIHRoZSBvdmVyYWxsIGxpbmUsIHNvIHRoaXMgaXMgYSBiaXQgY29tcGxpY2F0
ZWQuCiAgICAgICAgICAgICAgICAgLy8gSnVzdCBnZXQgYWxsIHRoZSBwaHlzaWNhbCBtYXJnaW4g
YW5kIG92ZXJmbG93IHZhbHVlcyBieSBoYW5kIGJhc2VkIG9mZiB8aXNWZXJ0aWNhbHwuCiAgICAg
ICAgICAgICAgICAgTGF5b3V0VW5pdCBsb2dpY2FsTGVmdE1hcmdpbiA9IGlzSG9yaXpvbnRhbCgp
ID8gY2hpbGQtPmJveE1vZGVsT2JqZWN0KCktPm1hcmdpbkxlZnQoKSA6IGNoaWxkLT5ib3hNb2Rl
bE9iamVjdCgpLT5tYXJnaW5Ub3AoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJDb3VudGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJD
b3VudGVyLmNwcAppbmRleCA0ODc4YjZmMWQyZWViNTIwNWIyNWY2ZThhNzYwNmZmZmE1NTczZjRj
Li41ZDU3MDY5ZDQyYWVmNTUwOTQzMWE0MWE2MTdkMzczOTg1NTFlMjY5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQ291bnRlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckNvdW50ZXIuY3BwCkBAIC0xMzEsOSArMTMxLDkgQEAgc3Rh
dGljIGJvb2wgcGxhbkNvdW50ZXIoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIGNvbnN0IEF0b21p
Y1N0cmluZyYgaWRlbnRpZmllciwKICAgICB9CiAKICAgICBpZiAoaWRlbnRpZmllciA9PSAibGlz
dC1pdGVtIikgewotICAgICAgICBpZiAocmVuZGVyZXIuaXNMaXN0SXRlbSgpKSB7Ci0gICAgICAg
ICAgICBpZiAodG9SZW5kZXJMaXN0SXRlbShyZW5kZXJlcikuaGFzRXhwbGljaXRWYWx1ZSgpKSB7
Ci0gICAgICAgICAgICAgICAgdmFsdWUgPSB0b1JlbmRlckxpc3RJdGVtKHJlbmRlcmVyKS5leHBs
aWNpdFZhbHVlKCk7CisgICAgICAgIGlmIChpczxSZW5kZXJMaXN0SXRlbT4ocmVuZGVyZXIpKSB7
CisgICAgICAgICAgICBpZiAoZG93bmNhc3Q8UmVuZGVyTGlzdEl0ZW0+KHJlbmRlcmVyKS5oYXNF
eHBsaWNpdFZhbHVlKCkpIHsKKyAgICAgICAgICAgICAgICB2YWx1ZSA9IGRvd25jYXN0PFJlbmRl
ckxpc3RJdGVtPihyZW5kZXJlcikuZXhwbGljaXRWYWx1ZSgpOwogICAgICAgICAgICAgICAgIGlz
UmVzZXQgPSB0cnVlOwogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guaCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmgKaW5kZXggNTIyMGI4MmZl
NmJjYzdmMjk0M2Y3MzQyMWMzODQzMmI4MGRmZTJiYS4uOGFlNjlkYjQ0MzM1NDQwYWFlOTNiMTFi
ZjQ0NTVkODBiNDAwZDg4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxpc3RCb3guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJv
eC5oCkBAIC0xNjEsOCArMTYxLDYgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8U2Nyb2xsYmFyPiBt
X3ZCYXI7CiB9OwogCi1SRU5ERVJfT0JKRUNUX1RZUEVfQ0FTVFMoUmVuZGVyTGlzdEJveCwgaXNM
aXN0Qm94KCkpCi0KIH0gLy8gbmFtZXBhY2UgV2ViQ29yZQogCiBTUEVDSUFMSVpFX1RZUEVfVFJB
SVRTX1JFTkRFUl9PQkpFQ1QoUmVuZGVyTGlzdEJveCwgaXNMaXN0Qm94KCkpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEl0ZW0uY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RJdGVtLmNwcAppbmRleCA2MmY3NDVmNTI5YWUyNDk5
M2NlOGNhZDNlM2U5M2ZlMzMzMDZlOTVkLi4zMjRiYjBjMWVlOTI1ZGU0N2UzZmM2MWMyNzk4ZjAy
MDkzY2I2NTkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlz
dEl0ZW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0SXRlbS5j
cHAKQEAgLTExOCwxMCArMTE4LDEwIEBAIHN0YXRpYyBFbGVtZW50KiBlbmNsb3NpbmdMaXN0KGNv
bnN0IFJlbmRlckxpc3RJdGVtKiBsaXN0SXRlbSkKIH0KIAogLy8gUmV0dXJucyB0aGUgbmV4dCBs
aXN0IGl0ZW0gd2l0aCByZXNwZWN0IHRvIHRoZSBET00gb3JkZXIuCi1zdGF0aWMgUmVuZGVyTGlz
dEl0ZW0qIG5leHRMaXN0SXRlbShjb25zdCBFbGVtZW50KiBsaXN0Tm9kZSwgY29uc3QgUmVuZGVy
TGlzdEl0ZW0qIGl0ZW0gPSAwKQorc3RhdGljIFJlbmRlckxpc3RJdGVtKiBuZXh0TGlzdEl0ZW0o
Y29uc3QgRWxlbWVudCogbGlzdE5vZGUsIGNvbnN0IFJlbmRlckxpc3RJdGVtKiBpdGVtID0gbnVs
bHB0cikKIHsKICAgICBpZiAoIWxpc3ROb2RlKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAKICAgICBjb25zdCBFbGVtZW50KiBjdXJyZW50ID0gaXRlbSA/ICZp
dGVtLT5lbGVtZW50KCkgOiBsaXN0Tm9kZTsKICAgICBjdXJyZW50ID0gRWxlbWVudFRyYXZlcnNh
bDo6bmV4dEluY2x1ZGluZ1BzZXVkbyhjdXJyZW50LCBsaXN0Tm9kZSk7CkBAIC0xMzMsMTUgKzEz
MywxNSBAQCBzdGF0aWMgUmVuZGVyTGlzdEl0ZW0qIG5leHRMaXN0SXRlbShjb25zdCBFbGVtZW50
KiBsaXN0Tm9kZSwgY29uc3QgUmVuZGVyTGlzdEl0ZQogICAgICAgICAgICAgY29udGludWU7CiAg
ICAgICAgIH0KIAotICAgICAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gY3VycmVudC0+cmVu
ZGVyZXIoKTsKLSAgICAgICAgaWYgKHJlbmRlcmVyICYmIHJlbmRlcmVyLT5pc0xpc3RJdGVtKCkp
Ci0gICAgICAgICAgICByZXR1cm4gdG9SZW5kZXJMaXN0SXRlbShyZW5kZXJlcik7CisgICAgICAg
IFJlbmRlckVsZW1lbnQqIHJlbmRlcmVyID0gY3VycmVudC0+cmVuZGVyZXIoKTsKKyAgICAgICAg
aWYgKGlzPFJlbmRlckxpc3RJdGVtPihyZW5kZXJlcikpCisgICAgICAgICAgICByZXR1cm4gZG93
bmNhc3Q8UmVuZGVyTGlzdEl0ZW0+KHJlbmRlcmVyKTsKIAogICAgICAgICAvLyBGSVhNRTogQ2Fu
IHRoaXMgYmUgb3B0aW1pemVkIHRvIHNraXAgdGhlIGNoaWxkcmVuIG9mIHRoZSBlbGVtZW50cyB3
aXRob3V0IGEgcmVuZGVyZXI/CiAgICAgICAgIGN1cnJlbnQgPSBFbGVtZW50VHJhdmVyc2FsOjpu
ZXh0SW5jbHVkaW5nUHNldWRvKGN1cnJlbnQsIGxpc3ROb2RlKTsKICAgICB9CiAKLSAgICByZXR1
cm4gMDsKKyAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAogLy8gUmV0dXJucyB0aGUgcHJldmlvdXMg
bGlzdCBpdGVtIHdpdGggcmVzcGVjdCB0byB0aGUgRE9NIG9yZGVyLgpAQCAtMTQ5LDEzICsxNDks
MTMgQEAgc3RhdGljIFJlbmRlckxpc3RJdGVtKiBwcmV2aW91c0xpc3RJdGVtKGNvbnN0IEVsZW1l
bnQqIGxpc3ROb2RlLCBjb25zdCBSZW5kZXJMaXMKIHsKICAgICBFbGVtZW50KiBjdXJyZW50ID0g
Jml0ZW0tPmVsZW1lbnQoKTsKICAgICBmb3IgKGN1cnJlbnQgPSBFbGVtZW50VHJhdmVyc2FsOjpw
cmV2aW91c0luY2x1ZGluZ1BzZXVkbyhjdXJyZW50LCBsaXN0Tm9kZSk7IGN1cnJlbnQ7IGN1cnJl
bnQgPSBFbGVtZW50VHJhdmVyc2FsOjpwcmV2aW91c0luY2x1ZGluZ1BzZXVkbyhjdXJyZW50LCBs
aXN0Tm9kZSkpIHsKLSAgICAgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IGN1cnJlbnQtPnJl
bmRlcmVyKCk7Ci0gICAgICAgIGlmICghcmVuZGVyZXIgfHwgKHJlbmRlcmVyICYmICFyZW5kZXJl
ci0+aXNMaXN0SXRlbSgpKSkKKyAgICAgICAgUmVuZGVyRWxlbWVudCogcmVuZGVyZXIgPSBjdXJy
ZW50LT5yZW5kZXJlcigpOworICAgICAgICBpZiAoIWlzPFJlbmRlckxpc3RJdGVtPihyZW5kZXJl
cikpCiAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgTm9kZSogb3RoZXJMaXN0ID0gZW5j
bG9zaW5nTGlzdCh0b1JlbmRlckxpc3RJdGVtKHJlbmRlcmVyKSk7CisgICAgICAgIEVsZW1lbnQq
IG90aGVyTGlzdCA9IGVuY2xvc2luZ0xpc3QoZG93bmNhc3Q8UmVuZGVyTGlzdEl0ZW0+KHJlbmRl
cmVyKSk7CiAgICAgICAgIC8vIFRoaXMgaXRlbSBpcyBwYXJ0IG9mIG91ciBjdXJyZW50IGxpc3Qs
IHNvIGl0J3Mgd2hhdCB3ZSdyZSBsb29raW5nIGZvci4KICAgICAgICAgaWYgKGxpc3ROb2RlID09
IG90aGVyTGlzdCkKLSAgICAgICAgICAgIHJldHVybiB0b1JlbmRlckxpc3RJdGVtKHJlbmRlcmVy
KTsKKyAgICAgICAgICAgIHJldHVybiBkb3duY2FzdDxSZW5kZXJMaXN0SXRlbT4ocmVuZGVyZXIp
OwogICAgICAgICAvLyBXZSBmb3VuZCBvdXJzZWxmIGluc2lkZSBhbm90aGVyIGxpc3Q7IGxldHMg
c2tpcCB0aGUgcmVzdCBvZiBpdC4KICAgICAgICAgLy8gVXNlIG5leHRJbmNsdWRpbmdQc2V1ZG8o
KSBoZXJlIGJlY2F1c2UgdGhlIG90aGVyIGxpc3QgaXRzZWxmIG1heSBhY3R1YWxseQogICAgICAg
ICAvLyBiZSBhIGxpc3QgaXRlbSBpdHNlbGYuIFdlIG5lZWQgdG8gZXhhbWluZSBpdCwgc28gd2Ug
ZG8gdGhpcyB0byBjb3VudGVyYWN0CkBAIC0xNjMsNyArMTYzLDcgQEAgc3RhdGljIFJlbmRlckxp
c3RJdGVtKiBwcmV2aW91c0xpc3RJdGVtKGNvbnN0IEVsZW1lbnQqIGxpc3ROb2RlLCBjb25zdCBS
ZW5kZXJMaXMKICAgICAgICAgaWYgKG90aGVyTGlzdCkKICAgICAgICAgICAgIGN1cnJlbnQgPSBF
bGVtZW50VHJhdmVyc2FsOjpuZXh0SW5jbHVkaW5nUHNldWRvKG90aGVyTGlzdCk7CiAgICAgfQot
ICAgIHJldHVybiAwOworICAgIHJldHVybiBudWxscHRyOwogfQogCiB2b2lkIFJlbmRlckxpc3RJ
dGVtOjp1cGRhdGVJdGVtVmFsdWVzRm9yT3JkZXJlZExpc3QoY29uc3QgSFRNTE9MaXN0RWxlbWVu
dCogbGlzdE5vZGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TGlzdEl0ZW0uaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0SXRlbS5oCmlu
ZGV4IDBhODFhMzhiZjRlMTBkNjBjOGExMGFkNDU4YzA2ZWE5YTY0ODQzNzMuLjczZGE2ZmJhOThm
OWEyYmMxN2UxNzA0YzY1ZjYwN2I5ZDM4NGU0ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJMaXN0SXRlbS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMaXN0SXRlbS5oCkBAIC05Myw4ICs5Myw2IEBAIHByaXZhdGU6CiAgICAgYm9vbCBt
X25vdEluTGlzdCA6IDE7CiB9OwogCi1SRU5ERVJfT0JKRUNUX1RZUEVfQ0FTVFMoUmVuZGVyTGlz
dEl0ZW0sIGlzTGlzdEl0ZW0oKSkKLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiBTUEVDSUFM
SVpFX1RZUEVfVFJBSVRTX1JFTkRFUl9PQkpFQ1QoUmVuZGVyTGlzdEl0ZW0sIGlzTGlzdEl0ZW0o
KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0TWFya2Vy
LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdE1hcmtlci5oCmluZGV4IGVh
OGQzMmY5ZGU4MGE1OWQwNGE0ZmJjOGUzOGM1YWIwZDllNjI5NzQuLjFhN2ZiNzA5MmM2MjdkMTJm
YWJmZTI1N2I1NTFiYmExMjc4NmI5NzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMaXN0TWFya2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxpc3RNYXJrZXIuaApAQCAtODUsOCArODUsNiBAQCBwcml2YXRlOgogICAgIFJlbmRlckxp
c3RJdGVtJiBtX2xpc3RJdGVtOwogfTsKIAotUkVOREVSX09CSkVDVF9UWVBFX0NBU1RTKFJlbmRl
ckxpc3RNYXJrZXIsIGlzTGlzdE1hcmtlcigpKQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAK
IFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfUkVOREVSX09CSkVDVChSZW5kZXJMaXN0TWFya2VyLCBp
c0xpc3RNYXJrZXIoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJNZW51TGlzdC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lbnVMaXN0LmgK
aW5kZXggOTNlNmJiMmI5YWRhMDA3NzQ4ODIyZjc2OTZlMGRjODFhZjFiMDFiYi4uNzUwZTZhZmY4
MzM4YmFlMWI5NzdmZWNlMzU3YmEzZjc4ZTVkNDQ0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlck1lbnVMaXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlck1lbnVMaXN0LmgKQEAgLTE1Miw4ICsxNTIsNiBAQCBwcml2YXRlOgogI2VuZGlm
CiB9OwogCi1SRU5ERVJfT0JKRUNUX1RZUEVfQ0FTVFMoUmVuZGVyTWVudUxpc3QsIGlzTWVudUxp
c3QoKSkKLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRT
X1JFTkRFUl9PQkpFQ1QoUmVuZGVyTWVudUxpc3QsIGlzTWVudUxpc3QoKSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUcmVlQXNUZXh0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUcmVlQXNUZXh0LmNwcAppbmRleCBiN2NkZTc0Yjc5Y2My
MWI0YjNkNmI5ZWE2YjNhNDExOGRjNzI5ZTE4Li5hNjRiZTYyZDBiYTU4NGQ4NGI0ZjM2MjhiMmY0
OWFlOWIzNDcwY2MyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VHJlZUFzVGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRyZWVB
c1RleHQuY3BwCkBAIC05MzQsMTEgKzkzNCwxMSBAQCBTdHJpbmcgbWFya2VyVGV4dEZvckxpc3RJ
dGVtKEVsZW1lbnQqIGVsZW1lbnQpCiAgICAgUmVmUHRyPEVsZW1lbnQ+IGVsZW1lbnRSZWYoZWxl
bWVudCk7CiAgICAgZWxlbWVudC0+ZG9jdW1lbnQoKS51cGRhdGVMYXlvdXQoKTsKIAotICAgIFJl
bmRlck9iamVjdCogcmVuZGVyZXIgPSBlbGVtZW50LT5yZW5kZXJlcigpOwotICAgIGlmICghcmVu
ZGVyZXIgfHwgIXJlbmRlcmVyLT5pc0xpc3RJdGVtKCkpCisgICAgUmVuZGVyRWxlbWVudCogcmVu
ZGVyZXIgPSBlbGVtZW50LT5yZW5kZXJlcigpOworICAgIGlmICghaXM8UmVuZGVyTGlzdEl0ZW0+
KHJlbmRlcmVyKSkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogCi0gICAgcmV0dXJuIHRvUmVu
ZGVyTGlzdEl0ZW0ocmVuZGVyZXIpLT5tYXJrZXJUZXh0KCk7CisgICAgcmV0dXJuIGRvd25jYXN0
PFJlbmRlckxpc3RJdGVtPigqcmVuZGVyZXIpLm1hcmtlclRleHQoKTsKIH0KIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRB
dXRvU2l6aW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0QXV0b1NpemluZy5j
cHAKaW5kZXggYTM3MjdlOTg2YzY2MjM3ZGIxNjQ3ZjEwYTc5YmI3NTg4MDRlNGQyMi4uY2I5MWMx
ZGM1YmJmZmU3YjhhOGVmYTFlN2NiNGY3MDQ3NDgzMmViNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1RleHRBdXRvU2l6aW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvVGV4dEF1dG9TaXppbmcuY3BwCkBAIC0xNzcsNyArMTc3LDcgQEAgYm9vbCBUZXh0
QXV0b1NpemluZ1ZhbHVlOjphZGp1c3ROb2RlU2l6ZXMoKQogICAgICAgICAgICAgICAgIFJlZlB0
cjxSZW5kZXJTdHlsZT4gc3R5bGUgPSBjbG9uZVJlbmRlclN0eWxlV2l0aFN0YXRlKGxpc3RNYXJr
ZXJSZW5kZXJlci0+c3R5bGUoKSk7CiAgICAgICAgICAgICAgICAgc3R5bGUtPnNldEZvbnREZXNj
cmlwdGlvbihmb250RGVzY3JpcHRpb24pOwogICAgICAgICAgICAgICAgIHN0eWxlLT5mb250KCku
dXBkYXRlKGF1dG9TaXppbmdOb2RlLT5kb2N1bWVudCgpLmVuc3VyZVN0eWxlUmVzb2x2ZXIoKS5m
b250U2VsZWN0b3IoKSk7Ci0gICAgICAgICAgICAgICAgdG9SZW5kZXJMaXN0TWFya2VyKCpsaXN0
TWFya2VyUmVuZGVyZXIpLnNldFN0eWxlKHN0eWxlLnJlbGVhc2VOb25OdWxsKCkpOworICAgICAg
ICAgICAgICAgIGRvd25jYXN0PFJlbmRlckxpc3RNYXJrZXI+KCpsaXN0TWFya2VyUmVuZGVyZXIp
LnNldFN0eWxlKHN0eWxlLnJlbGVhc2VOb25OdWxsKCkpOwogICAgICAgICAgICAgfQogICAgICAg
ICAgICAgCiAgICAgICAgICAgICAvLyBSZXNpemUgdGhlIGxpbmUgaGVpZ2h0IG9mIHRoZSBwYXJl
bnQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbGluZS9CcmVha2luZ0Nv
bnRleHRJbmxpbmVIZWFkZXJzLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbGluZS9CcmVh
a2luZ0NvbnRleHRJbmxpbmVIZWFkZXJzLmgKaW5kZXggOWFlZmZiNGEwYmRlNzdiMmI4MjkxYzVl
ZDQ0ZDZkZTMyNGJlNTU5NS4uMDllODBhMzVhZDMwODA3ZTI2ZTM5MDA5NGE4NGZlZTUyZTgxMmQ5
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2xpbmUvQnJlYWtpbmdDb250
ZXh0SW5saW5lSGVhZGVycy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9saW5lL0Jy
ZWFraW5nQ29udGV4dElubGluZUhlYWRlcnMuaApAQCAtNDMwLDcgKzQzMCw3IEBAIGlubGluZSB2
b2lkIEJyZWFraW5nQ29udGV4dDo6aGFuZGxlUmVwbGFjZWQoKQogICAgIC8vIE9wdGltaXplIGZv
ciBhIGNvbW1vbiBjYXNlLiBJZiB3ZSBjYW4ndCBmaW5kIHdoaXRlc3BhY2UgYWZ0ZXIgdGhlIGxp
c3QKICAgICAvLyBpdGVtLCB0aGVuIHRoaXMgaXMgYWxsIG1vb3QuCiAgICAgTGF5b3V0VW5pdCBy
ZXBsYWNlZExvZ2ljYWxXaWR0aCA9IG1fYmxvY2subG9naWNhbFdpZHRoRm9yQ2hpbGQocmVwbGFj
ZWRCb3gpICsgbV9ibG9jay5tYXJnaW5TdGFydEZvckNoaWxkKHJlcGxhY2VkQm94KSArIG1fYmxv
Y2subWFyZ2luRW5kRm9yQ2hpbGQocmVwbGFjZWRCb3gpICsgaW5saW5lTG9naWNhbFdpZHRoKG1f
Y3VycmVudC5yZW5kZXJlcigpKTsKLSAgICBpZiAobV9jdXJyZW50LnJlbmRlcmVyKCktPmlzTGlz
dE1hcmtlcigpKSB7CisgICAgaWYgKGlzPFJlbmRlckxpc3RNYXJrZXI+KCptX2N1cnJlbnQucmVu
ZGVyZXIoKSkpIHsKICAgICAgICAgaWYgKG1fYmxvY2tTdHlsZS5jb2xsYXBzZVdoaXRlU3BhY2Uo
KSAmJiBzaG91bGRTa2lwV2hpdGVzcGFjZUFmdGVyU3RhcnRPYmplY3QobV9ibG9jaywgbV9jdXJy
ZW50LnJlbmRlcmVyKCksIG1fbGluZU1pZHBvaW50U3RhdGUpKSB7CiAgICAgICAgICAgICAvLyBM
aWtlIHdpdGggaW5saW5lIGZsb3dzLCB3ZSBzdGFydCBpZ25vcmluZyBzcGFjZXMgdG8gbWFrZSBz
dXJlIHRoYXQgYW55CiAgICAgICAgICAgICAvLyBhZGRpdGlvbmFsIHNwYWNlcyB3ZSBzZWUgd2ls
bCBiZSBkaXNjYXJkZWQuCkBAIC00MzgsMTIgKzQzOCwxMiBAQCBpbmxpbmUgdm9pZCBCcmVha2lu
Z0NvbnRleHQ6OmhhbmRsZVJlcGxhY2VkKCkKICAgICAgICAgICAgIG1fY3VycmVudENoYXJhY3Rl
cklzV1MgPSBmYWxzZTsKICAgICAgICAgICAgIG1faWdub3JpbmdTcGFjZXMgPSB0cnVlOwogICAg
ICAgICB9Ci0gICAgICAgIGlmICh0b1JlbmRlckxpc3RNYXJrZXIoKm1fY3VycmVudC5yZW5kZXJl
cigpKS5pc0luc2lkZSgpKQorICAgICAgICBpZiAoZG93bmNhc3Q8UmVuZGVyTGlzdE1hcmtlcj4o
Km1fY3VycmVudC5yZW5kZXJlcigpKS5pc0luc2lkZSgpKQogICAgICAgICAgICAgbV93aWR0aC5h
ZGRVbmNvbW1pdHRlZFdpZHRoKHJlcGxhY2VkTG9naWNhbFdpZHRoKTsKICAgICB9IGVsc2UKICAg
ICAgICAgbV93aWR0aC5hZGRVbmNvbW1pdHRlZFdpZHRoKHJlcGxhY2VkTG9naWNhbFdpZHRoKTsK
LSAgICBpZiAobV9jdXJyZW50LnJlbmRlcmVyKCktPmlzUnVieVJ1bigpKQotICAgICAgICBtX3dp
ZHRoLmFwcGx5T3ZlcmhhbmcodG9SZW5kZXJSdWJ5UnVuKG1fY3VycmVudC5yZW5kZXJlcigpKSwg
bV9sYXN0T2JqZWN0LCBtX25leHRPYmplY3QpOworICAgIGlmIChpczxSZW5kZXJSdWJ5UnVuPigq
bV9jdXJyZW50LnJlbmRlcmVyKCkpKQorICAgICAgICBtX3dpZHRoLmFwcGx5T3ZlcmhhbmcoZG93
bmNhc3Q8UmVuZGVyUnVieVJ1bj4obV9jdXJyZW50LnJlbmRlcmVyKCkpLCBtX2xhc3RPYmplY3Qs
IG1fbmV4dE9iamVjdCk7CiAgICAgLy8gVXBkYXRlIHByaW9yIGxpbmUgYnJlYWsgY29udGV4dCBj
aGFyYWN0ZXJzLCB1c2luZyBVK0ZGRkQgKE9CSkVDVCBSRVBMQUNFTUVOVCBDSEFSQUNURVIpIGZv
ciByZXBsYWNlZCBlbGVtZW50LgogICAgIG1fcmVuZGVyVGV4dEluZm8ubV9saW5lQnJlYWtJdGVy
YXRvci51cGRhdGVQcmlvckNvbnRleHQocmVwbGFjZW1lbnRDaGFyYWN0ZXIpOwogfQpAQCAtOTk1
LDcgKzk5NSw3IEBAIGlubGluZSB2b2lkIEJyZWFraW5nQ29udGV4dDo6Y29tbWl0QW5kVXBkYXRl
TGluZUJyZWFrSWZOZWVkZWQoKQogCiAgICAgaWYgKCFtX2N1cnJlbnQucmVuZGVyZXIoKS0+aXNG
bG9hdGluZ09yT3V0T2ZGbG93UG9zaXRpb25lZCgpKSB7CiAgICAgICAgIG1fbGFzdE9iamVjdCA9
IG1fY3VycmVudC5yZW5kZXJlcigpOwotICAgICAgICBpZiAobV9sYXN0T2JqZWN0LT5pc1JlcGxh
Y2VkKCkgJiYgbV9hdXRvV3JhcCAmJiAoIW1fbGFzdE9iamVjdC0+aXNJbWFnZSgpIHx8IG1fYWxs
b3dJbWFnZXNUb0JyZWFrKSAmJiAoIW1fbGFzdE9iamVjdC0+aXNMaXN0TWFya2VyKCkgfHwgdG9S
ZW5kZXJMaXN0TWFya2VyKCptX2xhc3RPYmplY3QpLmlzSW5zaWRlKCkpKSB7CisgICAgICAgIGlm
IChtX2xhc3RPYmplY3QtPmlzUmVwbGFjZWQoKSAmJiBtX2F1dG9XcmFwICYmICghbV9sYXN0T2Jq
ZWN0LT5pc0ltYWdlKCkgfHwgbV9hbGxvd0ltYWdlc1RvQnJlYWspICYmICghaXM8UmVuZGVyTGlz
dE1hcmtlcj4oKm1fbGFzdE9iamVjdCkgfHwgZG93bmNhc3Q8UmVuZGVyTGlzdE1hcmtlcj4oKm1f
bGFzdE9iamVjdCkuaXNJbnNpZGUoKSkpIHsKICAgICAgICAgICAgIG1fd2lkdGguY29tbWl0KCk7
CiAgICAgICAgICAgICBtX2xpbmVCcmVhay5tb3ZlVG9TdGFydE9mKG1fbmV4dE9iamVjdCk7CiAg
ICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCAzZTNiYTMzZWNl
NjU3ZGM2ZGVhOTJiMWE5NTEyNGRhYjU3ZjIwOWFiLi4xNDhkM2MyM2UzMDQ1NDFlNGY4M2JjMjVl
ZGI5ZmU1MTY1NWQ3Y2YzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVy
bmFscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCkBAIC0y
MDkyLDEzICsyMDkyLDEzIEBAIGJvb2wgSW50ZXJuYWxzOjppc1NlbGVjdFBvcHVwVmlzaWJsZShO
b2RlKiBub2RlKQogCiAgICAgSFRNTFNlbGVjdEVsZW1lbnQmIHNlbGVjdCA9IGRvd25jYXN0PEhU
TUxTZWxlY3RFbGVtZW50Pigqbm9kZSk7CiAKLSAgICBhdXRvIHJlbmRlcmVyID0gc2VsZWN0LnJl
bmRlcmVyKCk7Ci0gICAgaWYgKCFyZW5kZXJlci0+aXNNZW51TGlzdCgpKQorICAgIGF1dG8qIHJl
bmRlcmVyID0gc2VsZWN0LnJlbmRlcmVyKCk7CisgICAgQVNTRVJUKHJlbmRlcmVyKTsKKyAgICBp
ZiAoIWlzPFJlbmRlck1lbnVMaXN0PigqcmVuZGVyZXIpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKICNpZiAhUExBVEZPUk0oSU9TKQotICAgIFJlbmRlck1lbnVMaXN0KiBtZW51TGlzdCA9IHRv
UmVuZGVyTWVudUxpc3QocmVuZGVyZXIpOwotICAgIHJldHVybiBtZW51TGlzdC0+cG9wdXBJc1Zp
c2libGUoKTsKKyAgICByZXR1cm4gZG93bmNhc3Q8UmVuZGVyTWVudUxpc3Q+KCpyZW5kZXJlciku
cG9wdXBJc1Zpc2libGUoKTsKICNlbHNlCiAgICAgcmV0dXJuIGZhbHNlOwogI2VuZGlmIC8vICFQ
TEFURk9STShJT1MpCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>