<?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>12143</bug_id>
          
          <creation_ts>2007-01-06 12:59:39 -0800</creation_ts>
          <short_desc>remove Widget code unneeded now that form elements do not use Widget</short_desc>
          <delta_ts>2007-01-08 14:46:51 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Platform</component>
          <version>420+</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.4</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P4</priority>
          <bug_severity>Enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Darin Adler">darin</reporter>
          <assigned_to name="Darin Adler">darin</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>36674</commentid>
    <comment_count>0</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2007-01-06 12:59:39 -0800</bug_when>
    <thetext>I have some patches that remove lots of unneeded Widget code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>36625</commentid>
    <comment_count>1</comment_count>
      <attachid>12270</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2007-01-06 18:03:54 -0800</bug_when>
    <thetext>Created attachment 12270
patch with change log</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>36255</commentid>
    <comment_count>2</comment_count>
      <attachid>12270</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2007-01-08 12:11:22 -0800</bug_when>
    <thetext>Comment on attachment 12270
patch with change log

+        * platform/ScrollView.h: Removed unnneded includes.

Typo: &quot;unnneded&quot;

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>36280</commentid>
    <comment_count>3</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2007-01-08 14:46:51 -0800</bug_when>
    <thetext>Landed in r18677.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>12270</attachid>
            <date>2007-01-06 18:03:54 -0800</date>
            <delta_ts>2007-01-08 12:11:22 -0800</delta_ts>
            <desc>patch with change log</desc>
            <filename>WidgetPatch.txt</filename>
            <type>text/plain</type>
            <size>52336</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDE4NjQw
KQorKysgQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMxIEBACisyMDA3LTAx
LTA2ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAtIGh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTEyMTQzCisgICAgICAgICAgcmVtb3ZlIFdpZGdldCBjb2RlIHVubmVlZGVk
IG5vdyB0aGF0IGZvcm0gZWxlbWVudHMgZG8gbm90IHVzZSBXaWRnZXQKKworICAgICAgICAqIGJp
bmRpbmdzL29iamMvRE9NSFRNTC5tbTogKC1bRE9NSFRNTFNlbGVjdEVsZW1lbnQgX2FjdGl2YXRl
SXRlbUF0SW5kZXg6XSk6CisgICAgICAgIFJlbW92ZWQgdXNlbGVzcyBpbXBsZW1lbnRhdGlvbiB0
aGF0IHdvdWxkIG9ubHkgd29yayB3aXRoIE5TVmlldy1iYXNlZAorICAgICAgICA8c2VsZWN0PiBl
bGVtZW50cywgYW5kIGFkZGVkIGEgRklYTUUgYWJvdXQgdGhlIGZhY3QgdGhhdCB0aGlzIGZ1bmN0
aW9uCisgICAgICAgIGRvZXNuJ3QgZG8gYW55dGhpbmcgYW55IG1vcmUuIEkgdGhpbmsgaXQncyB1
c2VkIGJ5IFNhZmFyaSBmb3JtcyBhdXRvLWZpbGwuCisKKyAgICAgICAgKiBicmlkZ2UvbWFjL1dl
YkNvcmVBWE9iamVjdC5tbTogKC1bV2ViQ29yZUFYT2JqZWN0IHJlbmRlcmVyRm9yVmlldzpdKToK
KyAgICAgICAgUmVtb3ZlZCBjb2RlIHRoYXQgZGVwZW5kcyBvbiBlbGVtZW50Rm9yVmlldzosIHNp
bmNlIHRoYXQgYWx3YXlzIHJldHVybnMKKyAgICAgICAgbmlsIG5vdy4KKworICAgICAgICAqIGh0
bWwvSFRNTEZvcm1FbGVtZW50LmNwcDogKFdlYkNvcmU6OkhUTUxGb3JtRWxlbWVudDo6fkhUTUxG
b3JtRWxlbWVudCk6CisgICAgICAgIFVzZSBhIGZvcm1EZXN0cm95ZWQoKSBmdW5jdGlvbiByYXRo
ZXIgdGhhbiBjbGVhcmluZyBtX2Zvcm0gZGlyZWN0bHkgc28gdGhhdAorICAgICAgICB0aGlzIGNs
YXNzIGRvZXNuJ3QgaGF2ZSB0byBiZSBhIGZyaWVuZCBvZiBIVE1MR2VuZXJpY0Zvcm1FbGVtZW50
LgorCisgICAgICAgICogaHRtbC9IVE1MR2VuZXJpY0Zvcm1FbGVtZW50Lmg6IFJlbW92ZWQgbm93
LXVubmVlZGVkIGZyaWVuZCBkZWNsYXJhdGlvbgorICAgICAgICBmb3IgSFRNTEZvcm1FbGVtZW50
LiBNb3ZlZCBkZWZpbml0aW9uIG9mIHN1cHBvcnRzRm9jdXMgaW50byB0aGUgLmNwcCBmaWxlLgor
ICAgICAgICBBZGRlZCBhIHB1YmxpYyBmb3JtRGVzdHJveWVkIGZ1bmN0aW9uIGZvciB1c2UgYnkg
SFRNTEZvcm1FbGVtZW50LgorICAgICAgICAqIGh0bWwvSFRNTEdlbmVyaWNGb3JtRWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MR2VuZXJpY0Zvcm1FbGVtZW50OjphdHRhY2gpOiBS
ZW1vdmVkIHdpZGdldC1zcGVjaWZpYyBjb2RlLgorICAgICAgICAoV2ViQ29yZTo6SFRNTEdlbmVy
aWNGb3JtRWxlbWVudDo6aXNLZXlib2FyZEZvY3VzYWJsZSk6IERpdHRvLgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTEdlbmVyaWNGb3JtRWxlbWVudDo6aXNNb3VzZUZvY3VzYWJsZSk6IERpdHRvLgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTEdlbmVyaWNGb3JtRWxlbWVudDo6c3VwcG9ydHNGb2N1cyk6
IEFkZGVkIHRoaXMgaGVyZTsgaXQgd2FzCisgICAgICAgIGluIHRoZSBoZWFkZXIgZmlsZSBiZWZv
cmUsIGZvciBubyBnb29kIHJlYXNvbi4KKworICAgICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVyLmg6
IFJlbW92ZWQgdW51c2VkIE1hYy1zcGVjaWZpYworICAgICAgICBjdXJyZW50RXZlbnRJc01vdXNl
RG93bkluV2lkZ2V0LgorICAgICAgICAqIHBhZ2UvbWFjL0V2ZW50SGFuZGxlck1hYy5tbTogRGl0
dG8uCisKKyAgICAgICAgKiBwYWdlL0ZyYW1lLmNwcDogKFdlYkNvcmU6OkZyYW1lOjpmcmFtZUZv
cldpZGdldCk6IENoYW5nZWQgdG8gdXNlCisgICAgICAgIFJlbmRlcldpZGdldCB0byBmaW5kIHRo
ZSBmcmFtZSByYXRoZXIgdGhhbiB0aGUgV2lnZXRDbGllbnQgZWxlbWVudCgpCisgICAgICAgIGZ1
bmN0aW9uLgorCisgICAgICAgICogcGFnZS9tYWMvRnJhbWVNYWMuaDogUmVtb3ZlZCB1bnVzZWQg
YnJpZGdlRm9yV2lkZ2V0LgorICAgICAgICAqIHBhZ2UvbWFjL0ZyYW1lTWFjLm1tOiBEaXR0by4K
KworICAgICAgICAqIHBhZ2UvbWFjL1dlYkNvcmVGcmFtZUJyaWRnZS5oOiBSZW1vdmVkIGVsZW1l
bnRGb3JWaWV3LgorICAgICAgICAqIHBhZ2UvbWFjL1dlYkNvcmVGcmFtZUJyaWRnZS5tbTogRGl0
dG8uIFdoaWxlIHRoZSBzY3JvbGwgYmFyIHN0aWxsIGRpZAorICAgICAgICBpbXBsZW1lbnQgV2Vi
Q29yZVdpZGdldEhvbGRlciwgaXQgZG9lcyBub3QgY29ycmVzcG9uZCB0byBhIERPTSBlbGVtZW50
LAorICAgICAgICBzbyB0aGlzIG1ldGhvZCB3YXMgYWx3YXlzIHJldHVybmluZyBuaWwuCisKKyAg
ICAgICAgKiBwbGF0Zm9ybS9XaWRnZXQuaDogTW92ZWQgdW51c2VkIHR5cGVzIGFuZCBmdW5jdGlv
bnMgdGhhdCBhcmUgc3RpbGwKKyAgICAgICAgaW4gdGhlIHBsYXRmb3JtLXNwZWNpZmljIGltcGxl
bWVudGF0aW9ucyBpbnRvIGEgInRvIGJlIGRlbGV0ZWQiIHNlY3Rpb246CisgICAgICAgIEZvY3Vz
UG9saWN5LCBOb0ZvY3VzLCBUYWJGb2N1cywgQ2xpY2tGb2N1cywgU3Ryb25nRm9jdXMsIFdoZWVs
Rm9jdXMsCisgICAgICAgIGxvY2tEcmF3aW5nRm9jdXMsIGZvbnQsIGZvY3VzUG9saWN5LCBoYXNG
b2N1cywgY2xlYXJGb2N1cywgc2V0Rm9udCwKKyAgICAgICAgZGlzYWJsZUZsdXNoRHJhd2luZywg
ZW5hYmxlRmx1c2hEcmF3aW5nLCB1bmxvY2tEcmF3aW5nRm9jdXMuCisgICAgICAgIFJlbW92ZWQg
dW51c2VkIGZ1bmN0aW9ucyB0aGF0IGFyZSBub3QgaW4gcGxhdGZvcm0tc3BlY2lmaWMgaW1wbGVt
ZW50YXRpb25zOgorICAgICAgICBzaXplSGludCwgYmFzZWxpbmVQb3NpdGlvbiwgY2hlY2tzRGVz
Y2VuZGFudHNGb3JGb2N1cy4KKyAgICAgICAgKiBwbGF0Zm9ybS9XaWRnZXQuY3BwOiBSZW1vdmVk
IGZ1bmN0aW9ucy4KKworICAgICAgICAqIHBsYXRmb3JtL1dpZGdldENsaWVudC5oOiBFbXB0aWVk
IG91dCB0aGUgY2xhc3MuIFNvb24gd2UgY2FuIGRlbGV0ZSBpdC4KKworICAgICAgICAqIHBsYXRm
b3JtL21hYy9QbGF0Zm9ybVNjcm9sbEJhck1hYy5tbTogKC1bV2ViQ29yZVNjcm9sbEJhciBtb3Vz
ZURvd246XSk6CisgICAgICAgIEdvdCByaWQgb2YgdW5uZWVkZWQgaW5jbHVkZXMsIHJlbW92ZWQg
dXNlIG9mIHRoZSBXZWJDb3JlV2lkZ2V0SG9sZGVyCisgICAgICAgIHByb3RvY29sIGFuZCB0aGUg
b25lIG1ldGhvZCBpbiBpdCwgYW5kIGNoYW5nZWQgdGhlIGNhbGxzIHRvIGJlZm9yZU1vdXNlRG93
bgorICAgICAgICBhbmQgYWZ0ZXJNb3VzZURvd24gdG8gcGFzcyB0aGUgd2lkZ2V0IHBvaW50ZXIg
aW4uCisKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvV2ViQ29yZVdpZGdldEhvbGRlci5oOiBFbXB0
aWVkIG91dCB0aGUgZmlsZSAtLSB0byBiZSBkZWxldGVkCisgICAgICAgIGxhdGVyLgorCisgICAg
ICAgICogcGxhdGZvcm0vbWFjL1dpZGdldE1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OldpZGdl
dDo6fldpZGdldCk6IFJlbW92ZWQgY29kZSB0byBtYW5hZ2UgZGVmZXJyZWRGaXJzdFJlc3BvbmRl
ci4KKyAgICAgICAgKFdlYkNvcmU6OldpZGdldDo6aGFzRm9jdXMpOiBSZW1vdmVkIGJvZHkgb2Yg
ZnVuY3Rpb24gYW5kIHJlcGxhY2VkIHdpdGgKKyAgICAgICAgYW4gYXNzZXJ0aW9uIHRoYXQgaXQn
cyBuZXZlciBjYWxsZWQuIExhdGVyIHdlJ2xsIHJlbW92ZSBpdC4KKyAgICAgICAgKFdlYkNvcmU6
OldpZGdldDo6c2V0Rm9jdXMpOiBUd2Vha2VkIGEgYml0IHRvIHdvcmsgZ2l2ZW4gY2hhbmdlcyB0
byB0aGUKKyAgICAgICAgRnJhbWVNYWMgY2xhc3MuIEFsc28gYWRkZWQgYSBGSVhNRS4gR2l2ZW4g
aG93IHRoaXMgd29ya3MsIGl0IGRvZXMgbm90CisgICAgICAgIGJlbG9uZyBpbiB0aGUgcGxhdGZv
cm0gbGF5ZXIuCisgICAgICAgIChXZWJDb3JlOjpXaWRnZXQ6OmNsZWFyRm9jdXMpOiBSZW1vdmVk
IGJvZHkgb2YgZnVuY3Rpb24gYW5kIHJlcGxhY2VkIHdpdGgKKyAgICAgICAgYW4gYXNzZXJ0aW9u
IHRoYXQgaXQncyBuZXZlciBjYWxsZWQuIExhdGVyIHdlJ2xsIHJlbW92ZSBpdC4KKyAgICAgICAg
KFdlYkNvcmU6OldpZGdldDo6Zm9jdXNQb2xpY3kpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6
OldpZGdldDo6Zm9udCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6V2lkZ2V0OjpzZXRGb250
KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpXaWRnZXQ6OmxvY2tEcmF3aW5nRm9jdXMpOiBE
aXR0by4KKyAgICAgICAgKFdlYkNvcmU6OldpZGdldDo6dW5sb2NrRHJhd2luZ0ZvY3VzKTogRGl0
dG8uCisgICAgICAgIChXZWJDb3JlOjpXaWRnZXQ6OmRpc2FibGVGbHVzaERyYXdpbmcpOiBEaXR0
by4KKyAgICAgICAgKFdlYkNvcmU6OldpZGdldDo6ZW5hYmxlRmx1c2hEcmF3aW5nKTogRGl0dG8u
CisgICAgICAgIChXZWJDb3JlOjpXaWRnZXQ6OnBhaW50KTogUmVtb3ZlZCBvYnNvbGV0ZSBjb21t
ZW50LgorICAgICAgICAoV2ViQ29yZTo6V2lkZ2V0OjpzZW5kQ29uc3VtZWRNb3VzZVVwKTogUmVt
b3ZlZCBib2R5IG9mIGZ1bmN0aW9uIGFuZCByZXBsYWNlZCB3aXRoCisgICAgICAgIGFuIGFzc2Vy
dGlvbiB0aGF0IGl0J3MgbmV2ZXIgY2FsbGVkLiBMYXRlciB3ZSdsbCByZW1vdmUgaXQuCisgICAg
ICAgIChXZWJDb3JlOjpXaWRnZXQ6OnNldElzU2VsZWN0ZWQpOiBUd2Vha2VkIGEgYml0IHRvIHdv
cmsgZ2l2ZW4gY2hhbmdlcyB0byB0aGUKKyAgICAgICAgRnJhbWVNYWMgY2xhc3MuIEFsc28gYWRk
ZWQgYSBGSVhNRS4gR2l2ZW4gaG93IHRoaXMgd29ya3MsIGl0IGRvZXMgbm90CisgICAgICAgIGJl
bG9uZyBpbiB0aGUgcGxhdGZvcm0gbGF5ZXIuCisgICAgICAgIChXZWJDb3JlOjpXaWRnZXQ6OmJl
Zm9yZU1vdXNlRG93bik6IENoYW5nZWQgdG8gdGFrZSBhbiBleHBsaWNpdCBXaWRnZXQgcGFyYW1l
dGVyLgorICAgICAgICAoV2ViQ29yZTo6V2lkZ2V0OjphZnRlck1vdXNlRG93bik6IERpdHRvLgor
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckFwcGxldC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJBcHBsZXQ6OmludHJpbnNpY1dpZHRoKTogQ2hhbmdlZCB0byBub3QgY2FsbCBzaXpl
SGludCgpIGFueSBtb3JlLgorICAgICAgICBJIGRpZG4ndCBjaGFuZ2UgdGhlIHZhbHVlcyByZXR1
cm5lZCBieSB0aGUgZnVuY3Rpb24sIGJ1dCB0aGV5IG1ha2Ugbm8gc2Vuc2UgYW5kCisgICAgICAg
IHRoaXMgc2hvdWxkIHByb2JhYmx5IGJlIGZpeGVkIGxhdGVyLgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyQXBwbGV0OjppbnRyaW5zaWNIZWlnaHQpOiBEaXR0by4KKworICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJXaWRnZXQuaDogUmVtb3ZlZCB1bm5lZWRlZCBXaWRnZXRDbGllbnQuaCBpbmNs
dWRlLiBDaGFuZ2VkCisgICAgICAgIFJlbmRlcldpZGdldCB0byBubyBsb25nZXIgaW5oZXJpdCBm
cm9tIFdpZGdldENsaWVudC4gQWRkZWQgYSBmaW5kIGZ1bmN0aW9uIHRvIGZpbmQKKyAgICAgICAg
YSBSZW5kZXJXaWRnZXQgZ2l2ZW4gYSBXaWRnZXQuIFJlbW92ZWQgYWxsIHRoZSB2aXJ0dWFsIGZ1
bmN0aW9ucyB0aGF0IG92ZXJyaWRlCisgICAgICAgIFdpZGdldENsaWVudCBob29rcy4KKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyV2lkZ2V0LmNwcDogUmVtb3ZlZCBhbGwgdGhlIFdpZGdldENs
aWVudCBmdW5jdGlvbnMuCisgICAgICAgIChXZWJDb3JlOjp3aWRnZXRSZW5kZXJlck1hcCk6IEFk
ZGVkLiBNYXAgdGhhdCBnaXZlcyB0aGUgUmVuZGVyV2lkZ2V0IGZvciBlYWNoCisgICAgICAgIFdp
ZGdldCB0aGF0IGlzIG93bmVkIGJ5IGEgUmVuZGVyV2lkZ2V0LgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyV2lkZ2V0OjpkZXN0cm95KTogUmVtb3ZlZCB0aGUgc2V0Q2xpZW50IGNhbGwgYW5kIGFk
ZGVkIGEgY2FsbCB0bworICAgICAgICByZW1vdmUgdGhlIHdpZGdldCBmcm9tIHRoZSB3aWRnZXRS
ZW5kZXJlck1hcC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlcldpZGdldDo6c2V0V2lkZ2V0KTog
RGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJXaWRnZXQ6OnNldFN0eWxlKTogUmVtb3Zl
ZCB0aGUgY2FsbCB0byBXaWRnZXQ6OnNldEZvbnQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJX
aWRnZXQ6OmZpbmQpOiBBZGRlZC4gUmV0dXJucyB0aGUgUmVuZGVyV2lkZ2V0IGZvciBhIFdpZGdl
dCwgaWYgYW55LgorCisgICAgICAgIC0gb3RoZXIgY2hhbmdlcworCisgICAgICAgICogZG9tL05v
ZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6ZHVtcCk6IFJlbW92ZWQgdW5uZWNlc3Nh
cnkgdXNlIG9mIERlcHJlY2F0ZWRTdHJpbmcuCisgICAgICAgIChXZWJDb3JlOjphcHBlbmRBdHRy
aWJ1dGVEZXNjKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpzaG93Tm9kZSk6IERp
dHRvLgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6Zm9ybWF0Rm9yRGVidWdnZXIpOiBEaXR0by4K
KworICAgICAgICAqIGxvYWRlci9DYWNoZWRJbWFnZS5jcHA6IChXZWJDb3JlOjpDYWNoZWRJbWFn
ZTo6Y3JlYXRlSW1hZ2UpOiBDbGVhbmVkIHVwCisgICAgICAgIGNvbmRpdGlvbmFsIGNvbXBpbGF0
aW9uIHNvIGFkZGluZyBtb3JlIE1JTUUgdHlwZXMgaGVyZSBkb2Vzbid0IG1ha2UgdGhlCisgICAg
ICAgIGZ1bmN0aW9uIG1vcmUgYW5kIG1vcmUgZGlmZmljdWx0IHRvIHJlYWQuCisKKyAgICAgICAg
KiBwYWdlL0ZyYW1lLmg6IFJlbW92ZWQgdW5uZWVkZWQgaW5jbHVkZXMgYW5kIGRlY2xhcmF0aW9u
cy4KKyAgICAgICAgVHdlYWtlZCBmb3JtYXR0aW5nLgorICAgICAgICAqIHBhZ2UvUGFnZS5oOiBS
ZW1vdmVkIHVubmVlZGVkIGRlY2xhcmF0aW9ucy4KKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxW
aWV3Lmg6IFJlbW92ZWQgdW5ubmVkZWQgaW5jbHVkZXMuCisKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyQmxvY2suY3BwOiAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OnJlbmRlck5hbWUpOiBUd2Vh
a2VkIGZvcm1hdHRpbmcuCisKIDIwMDctMDEtMDYgIE1pdHogUGV0dGVsICA8bWl0ekB3ZWJraXQu
b3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IE1hY2llai4KSW5kZXg6IGJpbmRpbmdzL29iamMv
RE9NSFRNTC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBiaW5kaW5ncy9vYmpjL0RPTUhUTUwubW0JKHJldmlz
aW9uIDE4NjM5KQorKysgYmluZGluZ3Mvb2JqYy9ET01IVE1MLm1tCSh3b3JraW5nIGNvcHkpCkBA
IC03NiwyNSArNzYsNiBAQAogCiAjcHJhZ21hIG1hcmsgRE9NIEVYVEVOU0lPTlMKIAotLy8gVGhp
cyAjaW1wb3J0IGlzIHVzZWQgb25seSBieSB2aWV3Rm9yRWxlbWVudCBhbmQgc2hvdWxkIGJlIGRl
bGV0ZWQgCi0vLyB3aGVuIHRoYXQgZnVuY3Rpb24gZ29lcyBhd2F5LgotI2ltcG9ydCAiUmVuZGVy
V2lkZ2V0LmgiCi0KLS8vIFRoaXMgZnVuY3Rpb24gaXMgdXNlZCBvbmx5IGJ5IHRoZSB0d28gRm9y
bUF1dG9GaWxsVHJhbnNpdGlvbiBjYXRlZ29yaWVzLCBhbmQgd2lsbCBnbyBhd2F5Ci0vLyBhcyBz
b29uIGFzIHBvc3NpYmxlLgotc3RhdGljIE5TVmlldyAqdmlld0ZvckVsZW1lbnQoRE9NRWxlbWVu
dCAqZWxlbWVudCkKLXsKLSAgICBXZWJDb3JlOjpSZW5kZXJPYmplY3QgKnJlbmRlcmVyID0gW2Vs
ZW1lbnQgX2VsZW1lbnRdLT5yZW5kZXJlcigpOwotICAgIGlmIChyZW5kZXJlciAmJiByZW5kZXJl
ci0+aXNXaWRnZXQoKSkgewotICAgICAgICBXZWJDb3JlOjpXaWRnZXQgKndpZGdldCA9IHN0YXRp
Y19jYXN0PGNvbnN0IFdlYkNvcmU6OlJlbmRlcldpZGdldCo+KHJlbmRlcmVyKS0+d2lkZ2V0KCk7
Ci0gICAgICAgIGlmICh3aWRnZXQpIHsKLSAgICAgICAgICAgIHdpZGdldC0+cG9wdWxhdGUoKTsK
LSAgICAgICAgICAgIHJldHVybiB3aWRnZXQtPmdldFZpZXcoKTsKLSAgICAgICAgfQotICAgIH0K
LSAgICByZXR1cm4gbmlsOwotfQotCiBAaW1wbGVtZW50YXRpb24gRE9NSFRNTElucHV0RWxlbWVu
dChGb3JtQXV0b0ZpbGxUcmFuc2l0aW9uKQogCiAtIChCT09MKV9pc1RleHRGaWVsZApAQCAtMTc2
LDEwICsxNTcsNyBAQCBzdGF0aWMgTlNWaWV3ICp2aWV3Rm9yRWxlbWVudChET01FbGVtZW50CiAK
IC0gKHZvaWQpX2FjdGl2YXRlSXRlbUF0SW5kZXg6KGludClpbmRleAogewotICAgIE5TUG9wVXBC
dXR0b24gKnBvcFVwID0gKE5TUG9wVXBCdXR0b24gKil2aWV3Rm9yRWxlbWVudChzZWxmKTsKLSAg
ICBbcG9wVXAgc2VsZWN0SXRlbUF0SW5kZXg6aW5kZXhdOwotICAgIC8vIE11c3QgZG8gdGhpcyB0
byBzaW11bGF0ZSBzYW1lIHNpZGUgZWZmZWN0IGFzIGlmIHVzZXIgbWFkZSB0aGUgY2hvaWNlCi0g
ICAgW05TQXBwIHNlbmRBY3Rpb246W3BvcFVwIGFjdGlvbl0gdG86W3BvcFVwIHRhcmdldF0gZnJv
bTpwb3BVcF07CisgICAgLy8gRklYTUU6IE5lZWRzIGltcGxlbWVudGF0aW9uIGZvciBub24tTlNW
aWV3IDxzZWxlY3Q+IQogfQogCiBAZW5kCkluZGV4OiBicmlkZ2UvbWFjL1dlYkNvcmVBWE9iamVj
dC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBicmlkZ2UvbWFjL1dlYkNvcmVBWE9iamVjdC5tbQkocmV2aXNp
b24gMTg2MzkpCisrKyBicmlkZ2UvbWFjL1dlYkNvcmVBWE9iamVjdC5tbQkod29ya2luZyBjb3B5
KQpAQCAtMjMzMywxNCArMjMzMyw2IEBAIHN0YXRpYyBWaXNpYmxlUG9zaXRpb24gZW5kT2ZTdHls
ZVJhbmdlICgKIAogLSAoUmVuZGVyT2JqZWN0KilyZW5kZXJlckZvclZpZXc6KE5TVmlldyopdmll
dwogewotICAgIC8vIGNoZWNrIGZvciBXZWJDb3JlIE5TVmlldyB0aGF0IGxldHMgdXMgZmluZCBp
dHMgd2lkZ2V0Ci0gICAgRnJhbWUqIGZyYW1lID0gbV9yZW5kZXJlci0+ZG9jdW1lbnQoKS0+ZnJh
bWUoKTsKLSAgICBpZiAoZnJhbWUpIHsKLSAgICAgICAgRE9NRWxlbWVudCogZG9tRWxlbWVudCA9
IFtNYWMoZnJhbWUpLT5icmlkZ2UoKSBlbGVtZW50Rm9yVmlldzp2aWV3XTsKLSAgICAgICAgaWYg
KGRvbUVsZW1lbnQpCi0gICAgICAgICAgICByZXR1cm4gW2RvbUVsZW1lbnQgX2VsZW1lbnRdLT5y
ZW5kZXJlcigpOwotICAgIH0KLSAgICAKICAgICAvLyBjaGVjayBmb3IgV2ViS2l0IE5TVmlldyB0
aGF0IGxldHMgdXMgZmluZCBpdHMgYnJpZGdlCiAgICAgV2ViQ29yZUZyYW1lQnJpZGdlKiBicmlk
Z2UgPSBuaWw7CiAgICAgaWYgKFt2aWV3IGNvbmZvcm1zVG9Qcm90b2NvbDpAcHJvdG9jb2woV2Vi
Q29yZUJyaWRnZUhvbGRlcildKSB7CkluZGV4OiBkb20vTm9kZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
ZG9tL05vZGUuY3BwCShyZXZpc2lvbiAxODYzOSkKKysrIGRvbS9Ob2RlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjUsMTggKzI1LDE5IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAi
Tm9kZS5oIgogCisjaW5jbHVkZSAiQ1N0cmluZy5oIgogI2luY2x1ZGUgIkNoaWxkTm9kZUxpc3Qu
aCIKICNpbmNsdWRlICJET01JbXBsZW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgIkRvY3VtZW50Lmgi
CiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCisjaW5jbHVk
ZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiTmFtZWRBdHRyTWFwLmgiCisjaW5jbHVkZSAiUmVu
ZGVyT2JqZWN0LmgiCiAjaW5jbHVkZSAiVGV4dC5oIgorI2luY2x1ZGUgIlRleHRTdHJlYW0uaCIK
ICNpbmNsdWRlICJodG1sZWRpdGluZy5oIgotI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1
ZGUgImtqc19iaW5kaW5nLmgiCi0jaW5jbHVkZSAiUmVuZGVyT2JqZWN0LmgiCi0jaW5jbHVkZSAi
VGV4dFN0cmVhbS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTY3MSwxMCArNjcyLDgg
QEAgTm9kZTo6U3R5bGVDaGFuZ2UgTm9kZTo6ZGlmZiggUmVuZGVyU3R5bAogfQogCiAjaWZuZGVm
IE5ERUJVRwotdm9pZCBOb2RlOjpkdW1wKFRleHRTdHJlYW0gKnN0cmVhbSwgRGVwcmVjYXRlZFN0
cmluZyBpbmQpIGNvbnN0Cit2b2lkIE5vZGU6OmR1bXAoVGV4dFN0cmVhbSogc3RyZWFtLCBEZXBy
ZWNhdGVkU3RyaW5nIGluZCkgY29uc3QKIHsKLSAgICAvLyAjIyMgaW1wbGVtZW50IGR1bXAoKSBm
b3IgYWxsIGFwcHJvcHJpYXRlIHN1YmNsYXNzZXMKLQogICAgIGlmIChtX2hhc0lkKSB7ICpzdHJl
YW0gPDwgIiBoYXNJZCI7IH0KICAgICBpZiAobV9oYXNDbGFzcykgeyAqc3RyZWFtIDw8ICIgaGFz
Q2xhc3MiOyB9CiAgICAgaWYgKG1faGFzU3R5bGUpIHsgKnN0cmVhbSA8PCAiIGhhc1N0eWxlIjsg
fQpAQCAtNjg2LDExICs2ODUsOSBAQCB2b2lkIE5vZGU6OmR1bXAoVGV4dFN0cmVhbSAqc3RyZWFt
LCBEZXByCiAgICAgKnN0cmVhbSA8PCAiIHRhYkluZGV4PSIgPDwgbV90YWJJbmRleDsKICAgICAq
c3RyZWFtIDw8IGVuZGw7CiAKLSAgICBOb2RlICpjaGlsZCA9IGZpcnN0Q2hpbGQoKTsKLSAgICB3
aGlsZShjaGlsZCkgewotICAgICAgICAqc3RyZWFtIDw8IGluZCA8PCBjaGlsZC0+bm9kZU5hbWUo
KS5kZXByZWNhdGVkU3RyaW5nKCkuYXNjaWkoKSA8PCAiOiAiOwotICAgICAgICBjaGlsZC0+ZHVt
cChzdHJlYW0saW5kKyIgICIpOwotICAgICAgICBjaGlsZCA9IGNoaWxkLT5uZXh0U2libGluZygp
OworICAgIGZvciAoTm9kZSogY2hpbGQgPSBmaXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNo
aWxkLT5uZXh0U2libGluZygpKSB7CisgICAgICAgICpzdHJlYW0gPDwgaW5kIDw8IGNoaWxkLT5u
b2RlTmFtZSgpIDw8ICI6ICI7CisgICAgICAgIGNoaWxkLT5kdW1wKHN0cmVhbSwgaW5kICsgIiAg
Iik7CiAgICAgfQogfQogI2VuZGlmCkBAIC0xNDAxLDEwICsxMzk4LDEwIEBAIGJvb2wgTm9kZTo6
b2Zmc2V0SW5DaGFyYWN0ZXJzKCkgY29uc3QKIAogI2lmbmRlZiBOREVCVUcKIAotc3RhdGljIHZv
aWQgYXBwZW5kQXR0cmlidXRlRGVzYyhjb25zdCBOb2RlICpub2RlLCBTdHJpbmcgJnN0cmluZywg
Y29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgRGVwcmVjYXRlZFN0cmluZyBhdHRyRGVzYykKK3N0
YXRpYyB2b2lkIGFwcGVuZEF0dHJpYnV0ZURlc2MoY29uc3QgTm9kZSogbm9kZSwgU3RyaW5nJiBz
dHJpbmcsIGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IGNoYXIqIGF0dHJEZXNjKQog
ewogICAgIGlmIChub2RlLT5pc0VsZW1lbnROb2RlKCkpIHsKLSAgICAgICAgU3RyaW5nIGF0dHIg
PSBzdGF0aWNfY2FzdDxjb25zdCBFbGVtZW50ICo+KG5vZGUpLT5nZXRBdHRyaWJ1dGUobmFtZSk7
CisgICAgICAgIFN0cmluZyBhdHRyID0gc3RhdGljX2Nhc3Q8Y29uc3QgRWxlbWVudCo+KG5vZGUp
LT5nZXRBdHRyaWJ1dGUobmFtZSk7CiAgICAgICAgIGlmICghYXR0ci5pc0VtcHR5KCkpIHsKICAg
ICAgICAgICAgIHN0cmluZyArPSBhdHRyRGVzYzsKICAgICAgICAgICAgIHN0cmluZyArPSBhdHRy
OwpAQCAtMTQxNywxNSArMTQxNCwxNSBAQCB2b2lkIE5vZGU6OnNob3dOb2RlKGNvbnN0IGNoYXIq
IHByZWZpeCkgCiAgICAgaWYgKCFwcmVmaXgpCiAgICAgICAgIHByZWZpeCA9ICIiOwogICAgIGlm
IChpc1RleHROb2RlKCkpIHsKLSAgICAgICAgRGVwcmVjYXRlZFN0cmluZyB2YWx1ZSA9IG5vZGVW
YWx1ZSgpLmRlcHJlY2F0ZWRTdHJpbmcoKTsKKyAgICAgICAgU3RyaW5nIHZhbHVlID0gbm9kZVZh
bHVlKCk7CiAgICAgICAgIHZhbHVlLnJlcGxhY2UoJ1xcJywgIlxcXFwiKTsKICAgICAgICAgdmFs
dWUucmVwbGFjZSgnXG4nLCAiXFxuIik7Ci0gICAgICAgIGZwcmludGYoc3RkZXJyLCAiJXMlc1x0
JXAgXCIlc1wiXG4iLCBwcmVmaXgsIG5vZGVOYW1lKCkuZGVwcmVjYXRlZFN0cmluZygpLnV0Zjgo
KS5kYXRhKCksIHRoaXMsIHZhbHVlLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICBmcHJpbnRmKHN0
ZGVyciwgIiVzJXNcdCVwIFwiJXNcIlxuIiwgcHJlZml4LCBub2RlTmFtZSgpLnV0ZjgoKS5kYXRh
KCksIHRoaXMsIHZhbHVlLnV0ZjgoKS5kYXRhKCkpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIFN0
cmluZyBhdHRycyA9ICIiOwogICAgICAgICBhcHBlbmRBdHRyaWJ1dGVEZXNjKHRoaXMsIGF0dHJz
LCBjbGFzc0F0dHIsICIgQ0xBU1M9Iik7CiAgICAgICAgIGFwcGVuZEF0dHJpYnV0ZURlc2ModGhp
cywgYXR0cnMsIHN0eWxlQXR0ciwgIiBTVFlMRT0iKTsKLSAgICAgICAgZnByaW50ZihzdGRlcnIs
ICIlcyVzXHQlcCVzXG4iLCBwcmVmaXgsIG5vZGVOYW1lKCkuZGVwcmVjYXRlZFN0cmluZygpLnV0
ZjgoKS5kYXRhKCksIHRoaXMsIGF0dHJzLmRlcHJlY2F0ZWRTdHJpbmcoKS5hc2NpaSgpKTsKKyAg
ICAgICAgZnByaW50ZihzdGRlcnIsICIlcyVzXHQlcCVzXG4iLCBwcmVmaXgsIG5vZGVOYW1lKCku
dXRmOCgpLmRhdGEoKSwgdGhpcywgYXR0cnMudXRmOCgpLmRhdGEoKSk7CiAgICAgfQogfQogCkBA
IC0xNDU0LDcgKzE0NTEsNyBAQCB2b2lkIE5vZGU6OnNob3dUcmVlQW5kTWFyayhjb25zdCBOb2Rl
KiBtCiAgICAgfQogfQogCi12b2lkIE5vZGU6OmZvcm1hdEZvckRlYnVnZ2VyKGNoYXIgKmJ1ZmZl
ciwgdW5zaWduZWQgbGVuZ3RoKSBjb25zdAordm9pZCBOb2RlOjpmb3JtYXRGb3JEZWJ1Z2dlcihj
aGFyKiBidWZmZXIsIHVuc2lnbmVkIGxlbmd0aCkgY29uc3QKIHsKICAgICBTdHJpbmcgcmVzdWx0
OwogICAgIFN0cmluZyBzOwpAQCAtMTQ2NSw3ICsxNDYyLDcgQEAgdm9pZCBOb2RlOjpmb3JtYXRG
b3JEZWJ1Z2dlcihjaGFyICpidWZmZQogICAgIGVsc2UKICAgICAgICAgcmVzdWx0ICs9IHM7CiAg
ICAgICAgICAgCi0gICAgc3RybmNweShidWZmZXIsIHJlc3VsdC5kZXByZWNhdGVkU3RyaW5nKCku
bGF0aW4xKCksIGxlbmd0aCAtIDEpOworICAgIHN0cm5jcHkoYnVmZmVyLCByZXN1bHQudXRmOCgp
LmRhdGEoKSwgbGVuZ3RoIC0gMSk7CiB9CiAKICNlbmRpZgpJbmRleDogaHRtbC9IVE1MRm9ybUVs
ZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIGh0bWwvSFRNTEZvcm1FbGVtZW50LmNwcAkocmV2aXNp
b24gMTg2MzkpCisrKyBodG1sL0hUTUxGb3JtRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTY4LDcgKzY4LDcgQEAgSFRNTEZvcm1FbGVtZW50Ojp+SFRNTEZvcm1FbGVtZW50KCkKICAgICBk
ZWxldGUgY29sbGVjdGlvbkluZm87CiAgICAgCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IGZvcm1FbGVtZW50cy5zaXplKCk7ICsraSkKLSAgICAgICAgZm9ybUVsZW1lbnRzW2ldLT5tX2Zv
cm0gPSAwOworICAgICAgICBmb3JtRWxlbWVudHNbaV0tPmZvcm1EZXN0cm95ZWQoKTsKICAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgaW1nRWxlbWVudHMuc2l6ZSgpOyArK2kpCiAgICAgICAg
IGltZ0VsZW1lbnRzW2ldLT5tX2Zvcm0gPSAwOwogfQpJbmRleDogaHRtbC9IVE1MR2VuZXJpY0Zv
cm1FbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBodG1sL0hUTUxHZW5lcmljRm9ybUVsZW1lbnQu
Y3BwCShyZXZpc2lvbiAxODYzOSkKKysrIGh0bWwvSFRNTEdlbmVyaWNGb3JtRWxlbWVudC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTI3LDE0ICsyNywxMyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgog
I2luY2x1ZGUgIkhUTUxHZW5lcmljRm9ybUVsZW1lbnQuaCIKIAorI2luY2x1ZGUgIkRvY3VtZW50
LmgiCiAjaW5jbHVkZSAiRXZlbnRIYW5kbGVyLmgiCiAjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgog
I2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiSFRNTEZvcm1FbGVtZW50LmgiCiAjaW5jbHVk
ZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiUmVuZGVyVGhlbWUuaCIKLSNpbmNsdWRlICJSZW5k
ZXJXaWRnZXQuaCIKLSNpbmNsdWRlICJXaWRnZXQuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CkBAIC04OSwxOCArODgsOCBAQCB2b2lkIEhUTUxHZW5lcmljRm9ybUVsZW1lbnQ6OmF0dGFjaCgp
CiAgICAgLy8gVGhlIGNhbGwgdG8gdXBkYXRlRnJvbUVsZW1lbnQoKSBuZWVkcyB0byBnbyBhZnRl
ciB0aGUgY2FsbCB0aHJvdWdoCiAgICAgLy8gdG8gdGhlIGJhc2UgY2xhc3MncyBhdHRhY2goKSBi
ZWNhdXNlIHRoYXQgY2FuIHNvbWV0aW1lcyBkbyBhIGNsb3NlCiAgICAgLy8gb24gdGhlIHJlbmRl
cmVyLgotICAgIGlmIChyZW5kZXJlcigpKSB7CisgICAgaWYgKHJlbmRlcmVyKCkpCiAgICAgICAg
IHJlbmRlcmVyKCktPnVwZGF0ZUZyb21FbGVtZW50KCk7Ci0gICAgCi0gICAgICAgIC8vIERlbGF5
ZWQgYXR0YWNobWVudCBpbiBvcmRlciB0byBwcmV2ZW50IEZPVUMgY2FuIHJlc3VsdCBpbiBhbiBv
YmplY3QgYmVpbmcKLSAgICAgICAgLy8gcHJvZ3JhbW1hdGljYWxseSBmb2N1c2VkIGJlZm9yZSBp
dCBoYXMgYSByZW5kZXIgb2JqZWN0LiAgSWYgd2UgaGF2ZSBiZWVuIGZvY3VzZWQKLSAgICAgICAg
Ly8gKGkuZS4sIGlmIHdlIGFyZSB0aGUgZm9jdXNlZE5vZGUpIHRoZW4gZ28gYWhlYWQgYW5kIGZv
Y3VzIG91ciBjb3JyZXNwb25kaW5nIG5hdGl2ZSB3aWRnZXQuCi0gICAgICAgIC8vIChBdHRhY2gv
ZGV0YWNoIGNhbiBhbHNvIGhhcHBlbiBhcyBhIHJlc3VsdCBvZiBkaXNwbGF5IHR5cGUgY2hhbmdl
cywgZS5nLiwgbWFraW5nIGEgd2lkZ2V0Ci0gICAgICAgIC8vIGJsb2NrIGluc3RlYWQgb2YgaW5s
aW5lLCBhbmQgZm9jdXMgc2hvdWxkIGJlIHJlc3RvcmVkIGluIHRoYXQgY2FzZSBhcyB3ZWxsLikK
LSAgICAgICAgaWYgKGRvY3VtZW50KCktPmZvY3VzZWROb2RlKCkgPT0gdGhpcyAmJiByZW5kZXJl
cigpLT5pc1dpZGdldCgpICYmIAotICAgICAgICAgICAgc3RhdGljX2Nhc3Q8UmVuZGVyV2lkZ2V0
Kj4ocmVuZGVyZXIoKSktPndpZGdldCgpKQotICAgICAgICAgICAgc3RhdGljX2Nhc3Q8UmVuZGVy
V2lkZ2V0Kj4ocmVuZGVyZXIoKSktPndpZGdldCgpLT5zZXRGb2N1cygpOwotICAgIH0KIH0KIAog
dm9pZCBIVE1MR2VuZXJpY0Zvcm1FbGVtZW50OjppbnNlcnRlZEludG9UcmVlKGJvb2wgZGVlcCkK
QEAgLTE4NiwxMiArMTc1LDExIEBAIHZvaWQgSFRNTEdlbmVyaWNGb3JtRWxlbWVudDo6c2V0UmVh
ZE9ubHkKICAgICBzZXRBdHRyaWJ1dGUocmVhZG9ubHlBdHRyLCBiID8gIiIgOiAwKTsKIH0KIAot
dm9pZCBIVE1MR2VuZXJpY0Zvcm1FbGVtZW50OjpyZWNhbGNTdHlsZSggU3R5bGVDaGFuZ2UgY2gg
KQordm9pZCBIVE1MR2VuZXJpY0Zvcm1FbGVtZW50OjpyZWNhbGNTdHlsZShTdHlsZUNoYW5nZSBj
aGFuZ2UpCiB7Ci0gICAgLy9ib29sIGNoYW5nZWQgPSBjaGFuZ2VkKCk7Ci0gICAgSFRNTEVsZW1l
bnQ6OnJlY2FsY1N0eWxlKCBjaCApOworICAgIEhUTUxFbGVtZW50OjpyZWNhbGNTdHlsZShjaGFu
Z2UpOwogCi0gICAgaWYgKHJlbmRlcmVyKCkgLyomJiBjaGFuZ2VkKi8pCisgICAgaWYgKHJlbmRl
cmVyKCkpCiAgICAgICAgIHJlbmRlcmVyKCktPnVwZGF0ZUZyb21FbGVtZW50KCk7CiB9CiAKQEAg
LTIwNiwyOCArMTk0LDE0IEBAIGJvb2wgSFRNTEdlbmVyaWNGb3JtRWxlbWVudDo6aXNGb2N1c2Fi
bGUKIAogYm9vbCBIVE1MR2VuZXJpY0Zvcm1FbGVtZW50Ojppc0tleWJvYXJkRm9jdXNhYmxlKEtl
eWJvYXJkRXZlbnQqIGV2ZW50KSBjb25zdAogewotICAgIGlmIChpc0ZvY3VzYWJsZSgpKSB7Ci0g
ICAgICAgIGlmIChyZW5kZXJlcigpLT5pc1dpZGdldCgpKSB7Ci0gICAgICAgICAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8UmVuZGVyV2lkZ2V0Kj4ocmVuZGVyZXIoKSktPndpZGdldCgpICYmCi0gICAg
ICAgICAgICAgICAgKHN0YXRpY19jYXN0PFJlbmRlcldpZGdldCo+KHJlbmRlcmVyKCkpLT53aWRn
ZXQoKS0+Zm9jdXNQb2xpY3koKSAmIFdpZGdldDo6VGFiRm9jdXMpOwotICAgICAgICB9CisgICAg
aWYgKGlzRm9jdXNhYmxlKCkpCiAgICAgICAgIGlmIChkb2N1bWVudCgpLT5mcmFtZSgpKQogICAg
ICAgICAgICAgcmV0dXJuIGRvY3VtZW50KCktPmZyYW1lKCktPmV2ZW50SGFuZGxlcigpLT50YWJz
VG9BbGxDb250cm9scyhldmVudCk7Ci0gICAgfQogICAgIHJldHVybiBmYWxzZTsKIH0KIAogYm9v
bCBIVE1MR2VuZXJpY0Zvcm1FbGVtZW50Ojppc01vdXNlRm9jdXNhYmxlKCkgY29uc3QKIHsKLSAg
ICBpZiAoaXNGb2N1c2FibGUoKSkgewotICAgICAgICBpZiAocmVuZGVyZXIoKS0+aXNXaWRnZXQo
KSkgewotICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFJlbmRlcldpZGdldCo+KHJlbmRl
cmVyKCkpLT53aWRnZXQoKSAmJgotICAgICAgICAgICAgICAgIChzdGF0aWNfY2FzdDxSZW5kZXJX
aWRnZXQqPihyZW5kZXJlcigpKS0+d2lkZ2V0KCktPmZvY3VzUG9saWN5KCkgJiBXaWRnZXQ6OkNs
aWNrRm9jdXMpOwotICAgICAgICB9IAotICAgICAgICAvLyBGb3IgPGlucHV0IHR5cGU9aW1hZ2U+
IGFuZCA8YnV0dG9uPiwgd2Ugd2lsbCBhc3N1bWUgbm8gbW91c2UgZm9jdXNhYmlsaXR5LiAgVGhp
cyBpcwotICAgICAgICAvLyBjb25zaXN0ZW50IHdpdGggT1MgWCBiZWhhdmlvciBmb3IgYnV0dG9u
cy4KLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KICAgICByZXR1cm4gZmFsc2U7CiB9CiAK
QEAgLTI2Miw0ICsyMzYsOSBAQCB2b2lkIEhUTUxHZW5lcmljRm9ybUVsZW1lbnQ6OnNldFRhYklu
ZGV4CiAgICAgc2V0QXR0cmlidXRlKHRhYmluZGV4QXR0ciwgU3RyaW5nOjpudW1iZXIodmFsdWUp
KTsKIH0KICAgICAKK2Jvb2wgSFRNTEdlbmVyaWNGb3JtRWxlbWVudDo6c3VwcG9ydHNGb2N1cygp
IGNvbnN0Cit7CisgICAgcmV0dXJuIGlzRm9jdXNhYmxlKCkgfHwgKCFkaXNhYmxlZCgpICYmIGRv
Y3VtZW50KCkgJiYgIWRvY3VtZW50KCktPmhhdmVTdHlsZXNoZWV0c0xvYWRlZCgpKTsKK30KKwog
fSAvLyBuYW1lc3BhY2UKSW5kZXg6IGh0bWwvSFRNTEdlbmVyaWNGb3JtRWxlbWVudC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIGh0bWwvSFRNTEdlbmVyaWNGb3JtRWxlbWVudC5oCShyZXZpc2lvbiAxODYzOSkK
KysrIGh0bWwvSFRNTEdlbmVyaWNGb3JtRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3
ICsyNiw2IEBACiAjaWZuZGVmIEhUTUxfSFRNTEdlbmVyaWNGb3JtRWxlbWVudEltcGxfaAogI2Rl
ZmluZSBIVE1MX0hUTUxHZW5lcmljRm9ybUVsZW1lbnRJbXBsX2gKIAotI2luY2x1ZGUgIkRvY3Vt
ZW50LmgiCiAjaW5jbHVkZSAiSFRNTEVsZW1lbnQuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpA
QCAtMzQsMTAgKzMzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgRm9ybURhdGFMaXN0
OwogY2xhc3MgSFRNTEZvcm1FbGVtZW50OwogCi1jbGFzcyBIVE1MR2VuZXJpY0Zvcm1FbGVtZW50
IDogcHVibGljIEhUTUxFbGVtZW50Ci17Ci0gICAgZnJpZW5kIGNsYXNzIEhUTUxGb3JtRWxlbWVu
dDsKLQorY2xhc3MgSFRNTEdlbmVyaWNGb3JtRWxlbWVudCA6IHB1YmxpYyBIVE1MRWxlbWVudCB7
CiBwdWJsaWM6CiAgICAgSFRNTEdlbmVyaWNGb3JtRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1l
JiB0YWdOYW1lLCBEb2N1bWVudCosIEhUTUxGb3JtRWxlbWVudCogPSAwKTsKICAgICB2aXJ0dWFs
IH5IVE1MR2VuZXJpY0Zvcm1FbGVtZW50KCk7CkBAIC02OSw3ICs2NSw3IEBAIHB1YmxpYzoKICAg
ICBib29sIGRpc2FibGVkKCkgY29uc3Q7CiAgICAgdm9pZCBzZXREaXNhYmxlZChib29sKTsKIAot
ICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0ZvY3VzKCkgY29uc3QgeyByZXR1cm4gaXNGb2N1c2Fi
bGUoKSB8fCAoIWRpc2FibGVkKCkgJiYgZG9jdW1lbnQoKSAmJiAhZG9jdW1lbnQoKS0+aGF2ZVN0
eWxlc2hlZXRzTG9hZGVkKCkpOyB9CisgICAgdmlydHVhbCBib29sIHN1cHBvcnRzRm9jdXMoKSBj
b25zdDsKICAgICB2aXJ0dWFsIGJvb2wgaXNGb2N1c2FibGUoKSBjb25zdDsKICAgICB2aXJ0dWFs
IGJvb2wgaXNLZXlib2FyZEZvY3VzYWJsZShLZXlib2FyZEV2ZW50KikgY29uc3Q7CiAgICAgdmly
dHVhbCBib29sIGlzTW91c2VGb2N1c2FibGUoKSBjb25zdDsKQEAgLTEwMCw2ICs5Niw4IEBAIHB1
YmxpYzoKIAogICAgIHZvaWQgc2V0VGFiSW5kZXgoaW50KTsKIAorICAgIHZvaWQgZm9ybURlc3Ry
b3llZCgpIHsgbV9mb3JtID0gMDsgfQorCiBwcm90ZWN0ZWQ6CiAgICAgSFRNTEZvcm1FbGVtZW50
KiBnZXRGb3JtKCkgY29uc3Q7CiAKSW5kZXg6IGxvYWRlci9DYWNoZWRJbWFnZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gbG9hZGVyL0NhY2hlZEltYWdlLmNwcAkocmV2aXNpb24gMTg2MzkpCisrKyBsb2Fk
ZXIvQ2FjaGVkSW1hZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNCwxNSArMzQsMTkgQEAKICNp
bmNsdWRlICJDYWNoZWRSZXNvdXJjZUNsaWVudC5oIgogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNl
Q2xpZW50V2Fsa2VyLmgiCiAjaW5jbHVkZSAiRG9jTG9hZGVyLmgiCi0jaWYgUExBVEZPUk0oTUFD
KQotI2luY2x1ZGUgIlNWR0ltYWdlLmgiCi0jZW5kaWYKICNpbmNsdWRlICJMb2FkZXJGdW5jdGlv
bnMuaCIKKyNpbmNsdWRlICJSZXF1ZXN0LmgiCisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCiAj
aWYgUExBVEZPUk0oQ0cpCiAjaW5jbHVkZSAiUERGRG9jdW1lbnRJbWFnZS5oIgogI2VuZGlmCi0j
aW5jbHVkZSAiUmVxdWVzdC5oIgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworI2lmZGVmIFNW
R19TVVBQT1JUCisjaWYgUExBVEZPUk0oTUFDKQorI2luY2x1ZGUgIlNWR0ltYWdlLmgiCisjZW5k
aWYKKyNlbmRpZgogCiB1c2luZyBzdGQ6Om1heDsKIApAQCAtMTQwLDIyICsxNDQsMjMgQEAgdm9p
ZCBDYWNoZWRJbWFnZTo6Y2xlYXIoKQogaW5saW5lIHZvaWQgQ2FjaGVkSW1hZ2U6OmNyZWF0ZUlt
YWdlKCkKIHsKICAgICAvLyBDcmVhdGUgdGhlIGltYWdlIGlmIGl0IGRvZXNuJ3QgeWV0IGV4aXN0
LgotICAgIAotICAgIGlmICghbV9pbWFnZSkgeworICAgIGlmIChtX2ltYWdlKQorICAgICAgICBy
ZXR1cm47CiAjaWYgUExBVEZPUk0oQ0cpCi0gICAgICAgIGlmIChtX3Jlc3BvbnNlLm1pbWVUeXBl
KCkgPT0gImFwcGxpY2F0aW9uL3BkZiIpCi0gICAgICAgICAgICBtX2ltYWdlID0gbmV3IFBERkRv
Y3VtZW50SW1hZ2U7Ci0gICAgICAgIGVsc2UKKyAgICBpZiAobV9yZXNwb25zZS5taW1lVHlwZSgp
ID09ICJhcHBsaWNhdGlvbi9wZGYiKSB7CisgICAgICAgIG1faW1hZ2UgPSBuZXcgUERGRG9jdW1l
bnRJbWFnZTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KICNlbmRpZgogI2lmZGVmIFNWR19TVVBQ
T1JUCiAjaWYgUExBVEZPUk0oTUFDKQotICAgICAgICBpZiAobV9yZXNwb25zZS5taW1lVHlwZSgp
ID09ICJpbWFnZS9zdmcreG1sIikKLSAgICAgICAgICAgIG1faW1hZ2UgPSBuZXcgU1ZHSW1hZ2Uo
dGhpcyk7Ci0gICAgICAgIGVsc2UKKyAgICBpZiAobV9yZXNwb25zZS5taW1lVHlwZSgpID09ICJp
bWFnZS9zdmcreG1sIikgeworICAgICAgICBtX2ltYWdlID0gbmV3IFNWR0ltYWdlKHRoaXMpOwor
ICAgICAgICByZXR1cm47CisgICAgfQogI2VuZGlmCiAjZW5kaWYKLSAgICAgICAgICAgIG1faW1h
Z2UgPSBuZXcgQml0bWFwSW1hZ2UodGhpcyk7Ci0gICAgfQorICAgIG1faW1hZ2UgPSBuZXcgQml0
bWFwSW1hZ2UodGhpcyk7CiB9CiAKIFZlY3RvcjxjaGFyPiYgQ2FjaGVkSW1hZ2U6OmJ1ZmZlckRh
dGEoY29uc3QgY2hhciogYnl0ZXMsIGludCBhZGRlZFNpemUsIFJlcXVlc3QqIHJlcXVlc3QpCklu
ZGV4OiBwYWdlL0V2ZW50SGFuZGxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHBhZ2UvRXZlbnRIYW5kbGVy
LmgJKHJldmlzaW9uIDE4NjM5KQorKysgcGFnZS9FdmVudEhhbmRsZXIuaAkod29ya2luZyBjb3B5
KQpAQCAtMTI2LDggKzEyNiw2IEBAIHB1YmxpYzoKICNpZiBQTEFURk9STShNQUMpCiAgICAgUGFz
c1JlZlB0cjxLZXlib2FyZEV2ZW50PiBjdXJyZW50S2V5Ym9hcmRFdmVudCgpIGNvbnN0OwogCi0g
ICAgc3RhdGljIGJvb2wgY3VycmVudEV2ZW50SXNNb3VzZURvd25JbldpZGdldChXaWRnZXQqKTsK
LQogICAgIHZvaWQgbW91c2VEb3duKE5TRXZlbnQqKTsKICAgICB2b2lkIG1vdXNlRHJhZ2dlZChO
U0V2ZW50Kik7CiAgICAgdm9pZCBtb3VzZVVwKE5TRXZlbnQqKTsKSW5kZXg6IHBhZ2UvRnJhbWUu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIHBhZ2UvRnJhbWUuY3BwCShyZXZpc2lvbiAxODYzOSkKKysrIHBh
Z2UvRnJhbWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDcyLDEzICsxMDcyLDEzIEBAIHZvaWQg
RnJhbWU6OmFkanVzdFBhZ2VIZWlnaHQoZmxvYXQgKm5ld0IKIEZyYW1lKiBGcmFtZTo6ZnJhbWVG
b3JXaWRnZXQoY29uc3QgV2lkZ2V0KiB3aWRnZXQpCiB7CiAgICAgQVNTRVJUX0FSRyh3aWRnZXQs
IHdpZGdldCk7Ci0gICAgCi0gICAgaWYgKFdpZGdldENsaWVudCogY2xpZW50ID0gd2lkZ2V0LT5j
bGllbnQoKSkgewotICAgICAgICBpZiAoRWxlbWVudCogZWxlbWVudCA9IGNsaWVudC0+ZWxlbWVu
dChjb25zdF9jYXN0PFdpZGdldCo+KHdpZGdldCkpKQotICAgICAgICAgICAgcmV0dXJuIGVsZW1l
bnQtPmRvY3VtZW50KCktPmZyYW1lKCk7Ci0gICAgfQotICAgIAotICAgIC8vIEFzc3VtZSBhbGwg
d2lkZ2V0cyBhcmUgZWl0aGVyIGZvcm0gY29udHJvbHMsIG9yIEZyYW1lVmlld3MuCisKKyAgICBp
ZiAoUmVuZGVyV2lkZ2V0KiByZW5kZXJlciA9IFJlbmRlcldpZGdldDo6ZmluZCh3aWRnZXQpKQor
ICAgICAgICBpZiAoTm9kZSogbm9kZSA9IHJlbmRlcmVyLT5ub2RlKCkpCisgICAgICAgICAgICBy
ZXR1cm4gbm9kZS0+ZG9jdW1lbnQoKS0+ZnJhbWUoKTsKKworICAgIC8vIEFzc3VtZSBhbGwgd2lk
Z2V0cyBhcmUgZWl0aGVyIGEgRnJhbWVWaWV3IG9yIG93bmVkIGJ5IGEgUmVuZGVyV2lkZ2V0Lgor
ICAgIC8vIEZJWE1FOiBUaGF0IGFzc3VtcHRpb24gaXMgbm90IHJpZ2h0IGZvciBzY3JvbGwgYmFy
cyEKICAgICBBU1NFUlQod2lkZ2V0LT5pc0ZyYW1lVmlldygpKTsKICAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8Y29uc3QgRnJhbWVWaWV3Kj4od2lkZ2V0KS0+ZnJhbWUoKTsKIH0KSW5kZXg6IHBhZ2Uv
RnJhbWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBwYWdlL0ZyYW1lLmgJKHJldmlzaW9uIDE4NjM5KQorKysg
cGFnZS9GcmFtZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSwxOCArMzEsMTIgQEAKICNpbmNsdWRl
ICJDb2xvci5oIgogI2luY2x1ZGUgIkVkaXRBY3Rpb24uaCIKICNpbmNsdWRlICJSZW5kZXJMYXll
ci5oIgotI2luY2x1ZGUgIlRleHRBZmZpbml0eS5oIgogI2luY2x1ZGUgIlRleHRHcmFudWxhcml0
eS5oIgotI2luY2x1ZGUgInd0Zi91bmljb2RlL1VuaWNvZGUuaCIKKyNpbmNsdWRlIDx3dGYvdW5p
Y29kZS9Vbmljb2RlLmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYv
VmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBLSlMgewotICAgIGNsYXNzIEpTVmFsdWU7Ci0gICAgY2xh
c3MgUGF1c2VkVGltZW91dHM7Ci0gICAgY2xhc3MgU2F2ZWRCdWlsdGluczsKLSAgICBjbGFzcyBT
YXZlZFByb3BlcnRpZXM7Ci0KICAgICBuYW1lc3BhY2UgQmluZGluZ3MgewogICAgICAgICBjbGFz
cyBJbnN0YW5jZTsKICAgICAgICAgY2xhc3MgUm9vdE9iamVjdDsKQEAgLTU3LDcgKzUxLDYgQEAg
Y2xhc3MgQ1NTU3R5bGVEZWNsYXJhdGlvbjsKIGNsYXNzIENvbW1hbmRCeU5hbWU7CiBjbGFzcyBE
T01XaW5kb3c7CiBjbGFzcyBEb2N1bWVudDsKLWNsYXNzIEVkaXRDb21tYW5kOwogY2xhc3MgRWRp
dG9yOwogY2xhc3MgRWxlbWVudDsKIGNsYXNzIEV2ZW50SGFuZGxlcjsKQEAgLTcwLDExICs2Myw5
IEBAIGNsYXNzIEZyYW1lVHJlZTsKIGNsYXNzIEZyYW1lVmlldzsKIGNsYXNzIEdyYXBoaWNzQ29u
dGV4dDsKIGNsYXNzIEhUTUxGb3JtRWxlbWVudDsKLWNsYXNzIEhpdFRlc3RSZXN1bHQ7CiBjbGFz
cyBJbnRSZWN0OwogY2xhc3MgS0pTUHJveHk7CiBjbGFzcyBLVVJMOwotY2xhc3MgTW91c2VFdmVu
dFdpdGhIaXRUZXN0UmVzdWx0czsKIGNsYXNzIE5vZGU7CiBjbGFzcyBQYWdlOwogY2xhc3MgUmFu
Z2U7CkBAIC04NCw3ICs3NSw2IEBAIGNsYXNzIFJlbmRlclN0eWxlOwogY2xhc3MgU2VsZWN0aW9u
OwogY2xhc3MgU2VsZWN0aW9uQ29udHJvbGxlcjsKIGNsYXNzIFNldHRpbmdzOwotY2xhc3MgVmlz
aWJsZVBvc2l0aW9uOwogY2xhc3MgV2lkZ2V0OwogCiBzdHJ1Y3QgRnJhbWVMb2FkUmVxdWVzdDsK
QEAgLTI2MCw3ICsyNTAsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHJlc3BvbmRUb0No
YW5nZWRTZWxlY3Rpb24oY29uc3QgU2VsZWN0aW9uJiBvbGRTZWxlY3Rpb24sIGJvb2wgY2xvc2VU
eXBpbmcpID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkQ2hhbmdlU2VsZWN0aW9uKGNvbnN0
IFNlbGVjdGlvbiYgb2xkU2VsZWN0aW9uLCBjb25zdCBTZWxlY3Rpb24mIG5ld1NlbGVjdGlvbiwg
RUFmZmluaXR5LCBib29sIHN0aWxsU2VsZWN0aW5nKSBjb25zdCA9IDA7CiAKLSAgICBSZW5kZXJT
dHlsZSogc3R5bGVGb3JTZWxlY3Rpb25TdGFydChOb2RlKiAmbm9kZVRvUmVtb3ZlKSBjb25zdDsK
KyAgICBSZW5kZXJTdHlsZSogc3R5bGVGb3JTZWxlY3Rpb25TdGFydChOb2RlKiYgbm9kZVRvUmVt
b3ZlKSBjb25zdDsKIAogICAgIGNvbnN0IFZlY3RvcjxNYXJrZWRUZXh0VW5kZXJsaW5lPiYgbWFy
a2VkVGV4dFVuZGVybGluZXMoKSBjb25zdDsgIAogICAgIGJvb2wgbWFya2VkVGV4dFVzZXNVbmRl
cmxpbmVzKCkgY29uc3Q7CkluZGV4OiBwYWdlL1BhZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBwYWdlL1Bh
Z2UuaAkocmV2aXNpb24gMTg2MzkpCisrKyBwYWdlL1BhZ2UuaAkod29ya2luZyBjb3B5KQpAQCAt
NDIsMTIgKzQyLDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIEVkaXRvckNsaWVu
dDsKICAgICBjbGFzcyBGb2N1c0NvbnRyb2xsZXI7CiAgICAgY2xhc3MgRnJhbWU7Ci0gICAgY2xh
c3MgRnJhbWVOYW1lc3BhY2U7Ci0gICAgY2xhc3MgRmxvYXRSZWN0OwogICAgIGNsYXNzIE5vZGU7
CiAgICAgY2xhc3MgU2VsZWN0aW9uQ29udHJvbGxlcjsKICAgICBjbGFzcyBTZXR0aW5nczsKLSAg
ICBjbGFzcyBXaWRnZXQ7CiAKICAgICBjbGFzcyBQYWdlIDogTm9uY29weWFibGUgewogICAgIHB1
YmxpYzoKSW5kZXg6IHBhZ2UvbWFjL0V2ZW50SGFuZGxlck1hYy5tbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBw
YWdlL21hYy9FdmVudEhhbmRsZXJNYWMubW0JKHJldmlzaW9uIDE4NjM5KQorKysgcGFnZS9tYWMv
RXZlbnRIYW5kbGVyTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC05NCwzMyArOTQsNiBAQCBib29s
IEV2ZW50SGFuZGxlcjo6d2hlZWxFdmVudChOU0V2ZW50ICplCiAgICAgcmV0dXJuIHdoZWVsRXZl
bnQuaXNBY2NlcHRlZCgpOwogfQogCi1ib29sIEV2ZW50SGFuZGxlcjo6Y3VycmVudEV2ZW50SXNN
b3VzZURvd25JbldpZGdldChXaWRnZXQqIGNhbmRpZGF0ZSkKLXsKLSAgICBCRUdJTl9CTE9DS19P
QkpDX0VYQ0VQVElPTlM7Ci0gICAgc3dpdGNoIChbW05TQXBwIGN1cnJlbnRFdmVudF0gdHlwZV0p
IHsKLSAgICAgICAgY2FzZSBOU0xlZnRNb3VzZURvd246Ci0gICAgICAgIGNhc2UgTlNSaWdodE1v
dXNlRG93bjoKLSAgICAgICAgY2FzZSBOU090aGVyTW91c2VEb3duOgotICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQot
ICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlM7Ci0KLSAgICBpZiAoIWNhbmRpZGF0ZSkKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgIFdpZGdldENsaWVudCogY2xpZW50ID0gY2FuZGlkYXRl
LT5jbGllbnQoKTsKLSAgICBpZiAoIWNsaWVudCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
IEVsZW1lbnQqIGVsZW1lbnQgPSBjbGllbnQtPmVsZW1lbnQoY2FuZGlkYXRlKTsKLSAgICBpZiAo
IWVsZW1lbnQpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBGcmFtZSogZnJhbWUgPSBlbGVt
ZW50LT5kb2N1bWVudCgpLT5mcmFtZSgpOwotICAgIGlmICghZnJhbWUpCi0gICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICByZXR1cm4gZnJhbWUtPmV2ZW50SGFuZGxlcigpLT5ub2RlVW5kZXJNb3Vz
ZSgpID09IGVsZW1lbnQ7Ci19Ci0KIFBhc3NSZWZQdHI8S2V5Ym9hcmRFdmVudD4gRXZlbnRIYW5k
bGVyOjpjdXJyZW50S2V5Ym9hcmRFdmVudCgpIGNvbnN0CiB7CiAgICAgTlNFdmVudCAqZXZlbnQg
PSBbTlNBcHAgY3VycmVudEV2ZW50XTsKSW5kZXg6IHBhZ2UvbWFjL0ZyYW1lTWFjLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gcGFnZS9tYWMvRnJhbWVNYWMuaAkocmV2aXNpb24gMTg2MzkpCisrKyBwYWdlL21h
Yy9GcmFtZU1hYy5oCSh3b3JraW5nIGNvcHkpCkBAIC02OCwxMCArNjgsNyBAQCB0eXBlZGVmIGlu
dCBOU1dyaXRpbmdEaXJlY3Rpb247CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgQ2xp
cGJvYXJkTWFjOwotY2xhc3MgRWRpdG9yQ2xpZW50OwogY2xhc3MgSFRNTFRhYmxlQ2VsbEVsZW1l
bnQ7Ci1jbGFzcyBSZW5kZXJXaWRnZXQ7CiAKIGNsYXNzIEZyYW1lTWFjIDogcHVibGljIEZyYW1l
IHsKICAgICBmcmllbmQgY2xhc3MgRnJhbWU7CkBAIC04OSw4ICs4Niw2IEBAIHByaXZhdGU6ICAg
IAogLy8gPT09IHVuZGVjaWRlZCwgbWF5IG9yIG1heSBub3QgYmVsb25nIGhlcmUKIAogcHVibGlj
OgotICAgIHN0YXRpYyBXZWJDb3JlRnJhbWVCcmlkZ2UqIGJyaWRnZUZvcldpZGdldChjb25zdCBX
aWRnZXQqKTsKLQogICAgIE5TU3RyaW5nKiBzZWFyY2hGb3JMYWJlbHNBYm92ZUNlbGwoUmVndWxh
ckV4cHJlc3Npb24qLCBIVE1MVGFibGVDZWxsRWxlbWVudCopOwogICAgIE5TU3RyaW5nKiBzZWFy
Y2hGb3JMYWJlbHNCZWZvcmVFbGVtZW50KE5TQXJyYXkqIGxhYmVscywgRWxlbWVudCopOwogICAg
IE5TU3RyaW5nKiBtYXRjaExhYmVsc0FnYWluc3RFbGVtZW50KE5TQXJyYXkqIGxhYmVscywgRWxl
bWVudCopOwpJbmRleDogcGFnZS9tYWMvRnJhbWVNYWMubW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gcGFnZS9t
YWMvRnJhbWVNYWMubW0JKHJldmlzaW9uIDE4NjM5KQorKysgcGFnZS9tYWMvRnJhbWVNYWMubW0J
KHdvcmtpbmcgY29weSkKQEAgLTQ1OSwxNSArNDU5LDYgQEAgTlBPYmplY3QgKkZyYW1lTWFjOjp3
aW5kb3dTY3JpcHROUE9iamVjdAogICAgIHJldHVybiBfd2luZG93U2NyaXB0TlBPYmplY3Q7CiB9
CiAKLVdlYkNvcmVGcmFtZUJyaWRnZSAqRnJhbWVNYWM6OmJyaWRnZUZvcldpZGdldChjb25zdCBX
aWRnZXQqIHdpZGdldCkKLXsKLSAgICBBU1NFUlRfQVJHKHdpZGdldCwgd2lkZ2V0KTsKLSAgICAK
LSAgICBGcmFtZU1hYyogZnJhbWUgPSBNYWMoZnJhbWVGb3JXaWRnZXQod2lkZ2V0KSk7Ci0gICAg
QVNTRVJUKGZyYW1lKTsKLSAgICByZXR1cm4gZnJhbWUtPl9icmlkZ2U7Ci19Ci0KIHZvaWQgRnJh
bWVNYWM6OnJ1bkphdmFTY3JpcHRBbGVydChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiB7CiAgICAg
U3RyaW5nIHRleHQgPSBtZXNzYWdlOwpJbmRleDogcGFnZS9tYWMvV2ViQ29yZUZyYW1lQnJpZGdl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gcGFnZS9tYWMvV2ViQ29yZUZyYW1lQnJpZGdlLmgJKHJldmlzaW9u
IDE4NjM5KQorKysgcGFnZS9tYWMvV2ViQ29yZUZyYW1lQnJpZGdlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTEzNyw3ICsxMzcsNiBAQCB0eXBlZGVmIGVudW0gT2JqZWN0RWxlbWVudFR5cGUgewogLSAo
TlNVUkwgKilVUkxXaXRoQXR0cmlidXRlU3RyaW5nOihOU1N0cmluZyAqKXN0cmluZzsKIAogLSAo
RE9NRWxlbWVudCAqKWVsZW1lbnRXaXRoTmFtZTooTlNTdHJpbmcgKiluYW1lIGluRm9ybTooRE9N
RWxlbWVudCAqKWZvcm07Ci0tIChET01FbGVtZW50ICopZWxlbWVudEZvclZpZXc6KE5TVmlldyAq
KXZpZXc7CiAtIChCT09MKWVsZW1lbnREb2VzQXV0b0NvbXBsZXRlOihET01FbGVtZW50ICopZWxl
bWVudDsKIC0gKEJPT0wpZWxlbWVudElzUGFzc3dvcmQ6KERPTUVsZW1lbnQgKillbGVtZW50Owog
LSAoRE9NRWxlbWVudCAqKWZvcm1Gb3JFbGVtZW50OihET01FbGVtZW50ICopZWxlbWVudDsKSW5k
ZXg6IHBhZ2UvbWFjL1dlYkNvcmVGcmFtZUJyaWRnZS5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBwYWdlL21h
Yy9XZWJDb3JlRnJhbWVCcmlkZ2UubW0JKHJldmlzaW9uIDE4NjM5KQorKysgcGFnZS9tYWMvV2Vi
Q29yZUZyYW1lQnJpZGdlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC03OCw3ICs3OCw2IEBACiAjaW1w
b3J0ICJUeXBpbmdDb21tYW5kLmgiCiAjaW1wb3J0ICJXZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmgi
CiAjaW1wb3J0ICJXZWJDb3JlVmlld0ZhY3RvcnkuaCIKLSNpbXBvcnQgIldlYkNvcmVXaWRnZXRI
b2xkZXIuaCIKICNpbXBvcnQgIkRvY3VtZW50TG9hZGVyLmgiCiAjaW1wb3J0ICJGb3JtRGF0YVN0
cmVhbU1hYy5oIgogI2ltcG9ydCAiU3VicmVzb3VyY2VMb2FkZXIuaCIKQEAgLTU1MiwxOCArNTUx
LDYgQEAgc3RhdGljIEJPT0wgbm93UHJpbnRpbmcoV2ViQ29yZUZyYW1lQnJpZAogICAgIG1fZnJh
bWUtPnZpZXcoKS0+aW5pdFNjcm9sbGJhcnMoKTsKIH0KIAotLSAoRE9NRWxlbWVudCopZWxlbWVu
dEZvclZpZXc6KE5TVmlldyopdmlldwotewotICAgIC8vIEZJWE1FOiBpbXBsZW1lbnRlZCBjdXJy
ZW50bHkgZm9yIG9ubHkgYSBzdWJzZXQgb2YgdGhlIEtXUSB3aWRnZXRzCi0gICAgaWYgKFt2aWV3
IGNvbmZvcm1zVG9Qcm90b2NvbDpAcHJvdG9jb2woV2ViQ29yZVdpZGdldEhvbGRlcildKSB7Ci0g
ICAgICAgIE5TVmlldyA8V2ViQ29yZVdpZGdldEhvbGRlcj4qIHdpZGdldEhvbGRlciA9IHZpZXc7
Ci0gICAgICAgIFdpZGdldCogd2lkZ2V0ID0gW3dpZGdldEhvbGRlciB3aWRnZXRdOwotICAgICAg
ICBpZiAod2lkZ2V0ICYmIHdpZGdldC0+Y2xpZW50KCkpCi0gICAgICAgICAgICByZXR1cm4gW0RP
TUVsZW1lbnQgX2VsZW1lbnRXaXRoOndpZGdldC0+Y2xpZW50KCktPmVsZW1lbnQod2lkZ2V0KV07
Ci0gICAgfQotICAgIHJldHVybiBuaWw7Ci19Ci0KIHN0YXRpYyBIVE1MSW5wdXRFbGVtZW50KiBp
bnB1dEVsZW1lbnRGcm9tRE9NRWxlbWVudChET01FbGVtZW50KiBlbGVtZW50KQogewogICAgIE5v
ZGUqIG5vZGUgPSBbZWxlbWVudCBfbm9kZV07CkluZGV4OiBwbGF0Zm9ybS9TY3JvbGxWaWV3LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gcGxhdGZvcm0vU2Nyb2xsVmlldy5oCShyZXZpc2lvbiAxODYzOSkKKysr
IHBsYXRmb3JtL1Njcm9sbFZpZXcuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsMTAgKzI2LDggQEAK
ICNpZm5kZWYgU2Nyb2xsVmlld19ICiAjZGVmaW5lIFNjcm9sbFZpZXdfSAogCi0jaW5jbHVkZSAi
SW50UmVjdC5oIgogI2luY2x1ZGUgIlNjcm9sbFR5cGVzLmgiCiAjaW5jbHVkZSAiV2lkZ2V0Lmgi
Ci0jaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CiAKICNpZiBQTEFURk9STShRVCkKIGNsYXNzIFFT
Y3JvbGxBcmVhOwpAQCAtNDAsNyArMzgsOSBAQCB0eXBlZGVmIHN0cnVjdCBIUkdOX18qIEhSR047
CiAjZW5kaWYKIAogbmFtZXNwYWNlIFdlYkNvcmUgeworCiAgICAgY2xhc3MgRmxvYXRSZWN0Owor
ICAgIGNsYXNzIEludFJlY3Q7CiAgICAgY2xhc3MgUGxhdGZvcm1XaGVlbEV2ZW50OwogICAgIGNs
YXNzIFBsYXRmb3JtU2Nyb2xsYmFyOwogCkluZGV4OiBwbGF0Zm9ybS9XaWRnZXQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIHBsYXRmb3JtL1dpZGdldC5jcHAJKHJldmlzaW9uIDE4NjM5KQorKysgcGxhdGZv
cm0vV2lkZ2V0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsMTEgKzMwLDYgQEAKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCi1JbnRTaXplIFdpZGdldDo6c2l6ZUhpbnQoKSBjb25zdCAKLXsKLSAg
ICByZXR1cm4gSW50U2l6ZSgpOwotfQotCiB2b2lkIFdpZGdldDo6cmVzaXplKGludCB3LCBpbnQg
aCkgCiB7CiAgICAgc2V0RnJhbWVHZW9tZXRyeShJbnRSZWN0KHgoKSwgeSgpLCB3LCBoKSk7CkBA
IC04NSwxNiArODAsNiBAQCB2b2lkIFdpZGdldDo6bW92ZShjb25zdCBJbnRQb2ludCAmcCkgCiAg
ICAgbW92ZShwLngoKSwgcC55KCkpOwogfQogCi1pbnQgV2lkZ2V0OjpiYXNlbGluZVBvc2l0aW9u
KGludCBoZWlnaHQpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIGhlaWdodDsKLX0KLQotYm9vbCBXaWRn
ZXQ6OmNoZWNrc0Rlc2NlbmRhbnRzRm9yRm9jdXMoKSBjb25zdAotewotICAgIHJldHVybiBmYWxz
ZTsKLX0KLQogYm9vbCBXaWRnZXQ6OmlzRnJhbWVWaWV3KCkgY29uc3QKIHsKICAgICByZXR1cm4g
ZmFsc2U7CkluZGV4OiBwbGF0Zm9ybS9XaWRnZXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBwbGF0Zm9ybS9X
aWRnZXQuaAkocmV2aXNpb24gMTg2MzkpCisrKyBwbGF0Zm9ybS9XaWRnZXQuaAkod29ya2luZyBj
b3B5KQpAQCAtNjQsMjAgKzY0LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgY2xhc3Mg
V2lkZ2V0IHsKICAgICBwdWJsaWM6Ci0KLSAgICAgICAgZW51bSBGb2N1c1BvbGljeSB7Ci0gICAg
ICAgICAgICBOb0ZvY3VzID0gMCwKLSAgICAgICAgICAgIFRhYkZvY3VzID0gMHgxLAotICAgICAg
ICAgICAgQ2xpY2tGb2N1cyA9IDB4MiwKLSAgICAgICAgICAgIFN0cm9uZ0ZvY3VzID0gMHgzLAot
ICAgICAgICAgICAgV2hlZWxGb2N1cyA9IDB4NwotICAgICAgICB9OwotCiAgICAgICAgIFdpZGdl
dCgpOwogICAgICAgICB2aXJ0dWFsIH5XaWRnZXQoKTsKIAotICAgICAgICB2aXJ0dWFsIEludFNp
emUgc2l6ZUhpbnQoKSBjb25zdDsKLSAgICAgICAgCiAgICAgICAgIHZpcnR1YWwgdm9pZCBzZXRF
bmFibGVkKGJvb2wpOwogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNFbmFibGVkKCkgY29uc3Q7CiAK
QEAgLTk5LDE3ICs4OCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCB2
b2lkIHNldEZyYW1lR2VvbWV0cnkoY29uc3QgSW50UmVjdCYpOwogICAgICAgICB2aXJ0dWFsIElu
dFJlY3QgZnJhbWVHZW9tZXRyeSgpIGNvbnN0OwogCi0gICAgICAgIHZpcnR1YWwgaW50IGJhc2Vs
aW5lUG9zaXRpb24oaW50IGhlaWdodCkgY29uc3Q7IC8vIHJlbGF0aXZlIHRvIHRoZSB0b3Agb2Yg
dGhlIHdpZGdldAotCi0gICAgICAgIHZpcnR1YWwgYm9vbCBoYXNGb2N1cygpIGNvbnN0OwogICAg
ICAgICB2aXJ0dWFsIHZvaWQgc2V0Rm9jdXMoKTsKLSAgICAgICAgdmlydHVhbCB2b2lkIGNsZWFy
Rm9jdXMoKTsKLSAgICAgICAgdmlydHVhbCBib29sIGNoZWNrc0Rlc2NlbmRhbnRzRm9yRm9jdXMo
KSBjb25zdDsKLQotICAgICAgICB2aXJ0dWFsIEZvY3VzUG9saWN5IGZvY3VzUG9saWN5KCkgY29u
c3Q7Ci0KLSAgICAgICAgY29uc3QgRm9udCYgZm9udCgpIGNvbnN0OwotICAgICAgICB2aXJ0dWFs
IHZvaWQgc2V0Rm9udChjb25zdCBGb250Jik7CiAKICAgICAgICAgdm9pZCBzZXRDdXJzb3IoY29u
c3QgQ3Vyc29yJik7CiAgICAgICAgIEN1cnNvciBjdXJzb3IoKTsKQEAgLTExNywxMyArOTYsNiBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBzaG93KCk7CiAgICAg
ICAgIHZpcnR1YWwgdm9pZCBoaWRlKCk7CiAKLSAgICAgICAgdmlydHVhbCB2b2lkIHBvcHVsYXRl
KCkge30KLQotICAgICAgICBHcmFwaGljc0NvbnRleHQqIGxvY2tEcmF3aW5nRm9jdXMoKTsKLSAg
ICAgICAgdm9pZCB1bmxvY2tEcmF3aW5nRm9jdXMoR3JhcGhpY3NDb250ZXh0Kik7Ci0gICAgICAg
IHZvaWQgZW5hYmxlRmx1c2hEcmF3aW5nKCk7Ci0gICAgICAgIHZvaWQgZGlzYWJsZUZsdXNoRHJh
d2luZygpOwotCiAgICAgICAgIHZvaWQgc2V0SXNTZWxlY3RlZChib29sKTsKIAogICAgICAgICB2
b2lkIHNldENsaWVudChXaWRnZXRDbGllbnQqKTsKQEAgLTEzOSw2ICsxMTEsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgSW50UmVjdCB3aW5kb3dDbGlwUmVjdCgpIGNv
bnN0OwogCiAgICAgICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVFdmVudChFdmVudCopIHsgfQorCiAj
aWYgUExBVEZPUk0oV0lOKQogICAgICAgICB2b2lkIHNldENvbnRhaW5pbmdXaW5kb3coSFdORCk7
CiAgICAgICAgIEhXTkQgY29udGFpbmluZ1dpbmRvdygpIGNvbnN0OwpAQCAtMTcwLDggKzE0Myw4
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oR0RLKQotICAg
ICAgICBXaWRnZXQoR2RrRHJhd2FibGUqIGRyYXdhYmxlKTsKLSAgICAgICAgdmlydHVhbCB2b2lk
IHNldERyYXdhYmxlKEdka0RyYXdhYmxlKiBkcmF3YWJsZSk7CisgICAgICAgIFdpZGdldChHZGtE
cmF3YWJsZSopOworICAgICAgICB2aXJ0dWFsIHZvaWQgc2V0RHJhd2FibGUoR2RrRHJhd2FibGUq
KTsKICAgICAgICAgR2RrRHJhd2FibGUqIGRyYXdhYmxlKCkgY29uc3Q7CiAjZW5kaWYKIApAQCAt
MTg0LDcgKzE1Nyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICNlbmRpZgogCiAjaWYgUExBVEZP
Uk0oTUFDKQotICAgICAgICBXaWRnZXQoTlNWaWV3KiB2aWV3KTsKKyAgICAgICAgV2lkZ2V0KE5T
VmlldyopOwogCiAgICAgICAgIE5TVmlldyogZ2V0VmlldygpIGNvbnN0OwogICAgICAgICBOU1Zp
ZXcqIGdldE91dGVyVmlldygpIGNvbnN0OwpAQCAtMTkyLDE1ICsxNjUsMjUgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgICAgICAKICAgICAgICAgdm9pZCBzZW5kQ29uc3VtZWRNb3VzZVVwKCk7
CiAgICAgICAgIAotICAgICAgICBzdGF0aWMgdm9pZCBiZWZvcmVNb3VzZURvd24oTlNWaWV3Kik7
Ci0gICAgICAgIHN0YXRpYyB2b2lkIGFmdGVyTW91c2VEb3duKE5TVmlldyopOworICAgICAgICBz
dGF0aWMgdm9pZCBiZWZvcmVNb3VzZURvd24oTlNWaWV3KiwgV2lkZ2V0Kik7CisgICAgICAgIHN0
YXRpYyB2b2lkIGFmdGVyTW91c2VEb3duKE5TVmlldyosIFdpZGdldCopOwogCiAgICAgICAgIHZv
aWQgYWRkVG9TdXBlcnZpZXcoTlNWaWV3KiBzdXBlcnZpZXcpOwogICAgICAgICB2b2lkIHJlbW92
ZUZyb21TdXBlcnZpZXcoKTsKLQotICAgICAgICBzdGF0aWMgdm9pZCBzZXREZWZlckZpcnN0UmVz
cG9uZGVyQ2hhbmdlcyhib29sKTsKICNlbmRpZgogCisgICAgICAgIC8vIFRvIGJlIGRlbGV0ZWQu
CisgICAgICAgIGVudW0gRm9jdXNQb2xpY3kgeyBOb0ZvY3VzLCBUYWJGb2N1cywgQ2xpY2tGb2N1
cywgU3Ryb25nRm9jdXMsIFdoZWVsRm9jdXMgfTsKKyAgICAgICAgR3JhcGhpY3NDb250ZXh0KiBs
b2NrRHJhd2luZ0ZvY3VzKCk7CisgICAgICAgIGNvbnN0IEZvbnQmIGZvbnQoKSBjb25zdDsKKyAg
ICAgICAgdmlydHVhbCBGb2N1c1BvbGljeSBmb2N1c1BvbGljeSgpIGNvbnN0OworICAgICAgICB2
aXJ0dWFsIGJvb2wgaGFzRm9jdXMoKSBjb25zdDsKKyAgICAgICAgdmlydHVhbCB2b2lkIGNsZWFy
Rm9jdXMoKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIHNldEZvbnQoY29uc3QgRm9udCYpOworICAg
ICAgICB2b2lkIGRpc2FibGVGbHVzaERyYXdpbmcoKTsKKyAgICAgICAgdm9pZCBlbmFibGVGbHVz
aERyYXdpbmcoKTsKKyAgICAgICAgdm9pZCB1bmxvY2tEcmF3aW5nRm9jdXMoR3JhcGhpY3NDb250
ZXh0Kik7CisKICAgICBwcml2YXRlOgogICAgICAgICBXaWRnZXRQcml2YXRlKiBkYXRhOwogICAg
IH07CkluZGV4OiBwbGF0Zm9ybS9XaWRnZXRDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBwbGF0Zm9y
bS9XaWRnZXRDbGllbnQuaAkocmV2aXNpb24gMTg2MzkpCisrKyBwbGF0Zm9ybS9XaWRnZXRDbGll
bnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzEsMjYgKzMxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgIGNsYXNzIEVsZW1lbnQ7CiAgICAgY2xhc3MgV2lkZ2V0OwogCi0gICAgY2xhc3MgV2lk
Z2V0Q2xpZW50IHsKLSAgICBwdWJsaWM6Ci0gICAgICAgIHZpcnR1YWwgfldpZGdldENsaWVudCgp
IHsgfQotCi0gICAgICAgIHZpcnR1YWwgdm9pZCBzY3JvbGxUb1Zpc2libGUoV2lkZ2V0KikgeyB9
Ci0KLSAgICAgICAgdmlydHVhbCB2b2lkIGZvY3VzSW4oV2lkZ2V0KikgeyB9Ci0gICAgICAgIHZp
cnR1YWwgdm9pZCBmb2N1c091dChXaWRnZXQqKSB7IH0KLQotICAgICAgICB2aXJ0dWFsIHZvaWQg
Y2xpY2tlZChXaWRnZXQqKSB7IH0KLSAgICAgICAgdmlydHVhbCB2b2lkIHZhbHVlQ2hhbmdlZChX
aWRnZXQqKSB7IH0KLSAgICAgICAgdmlydHVhbCB2b2lkIHNlbGVjdGlvbkNoYW5nZWQoV2lkZ2V0
KikgeyB9Ci0KLSAgICAgICAgdmlydHVhbCB2b2lkIHJldHVyblByZXNzZWQoV2lkZ2V0KikgeyB9
Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBwZXJmb3JtU2VhcmNoKFdpZGdldCopIHsgfQotCi0gICAg
ICAgIHZpcnR1YWwgRWxlbWVudCogZWxlbWVudChXaWRnZXQqKSB7IHJldHVybiAwOyB9Ci0gICAg
ICAgIHZpcnR1YWwgdm9pZCBzZW5kQ29uc3VtZWRNb3VzZVVwKFdpZGdldCopIHsgfQotICAgICAg
ICB2aXJ0dWFsIGJvb2wgaXNWaXNpYmxlKFdpZGdldCopIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAg
fTsKKyAgICBjbGFzcyBXaWRnZXRDbGllbnQgeyB9OwogCiB9CiAKSW5kZXg6IHBsYXRmb3JtL21h
Yy9QbGF0Zm9ybVNjcm9sbEJhck1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBwbGF0Zm9ybS9tYWMvUGxh
dGZvcm1TY3JvbGxCYXJNYWMubW0JKHJldmlzaW9uIDE4NjM5KQorKysgcGxhdGZvcm0vbWFjL1Bs
YXRmb3JtU2Nyb2xsQmFyTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNywxMiArMjcsMTAgQEAK
ICNpbXBvcnQgIlBsYXRmb3JtU2Nyb2xsQmFyLmgiCiAKICNpbXBvcnQgIkJsb2NrRXhjZXB0aW9u
cy5oIgotI2ltcG9ydCAiV2ViQ29yZVdpZGdldEhvbGRlci5oIgotI2ltcG9ydCAiV2lkZ2V0Q2xp
ZW50LmgiCiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCi1AaW50ZXJmYWNlIFdlYkNvcmVT
Y3JvbGxCYXIgOiBOU1Njcm9sbGVyIDxXZWJDb3JlV2lkZ2V0SG9sZGVyPgorQGludGVyZmFjZSBX
ZWJDb3JlU2Nyb2xsQmFyIDogTlNTY3JvbGxlcgogewogICAgIFBsYXRmb3JtU2Nyb2xsYmFyKiBz
Y3JvbGxiYXI7CiB9CkBAIC05MCwxNiArODgsMTEgQEAgc3RhdGljIE5TQ29udHJvbFNpemUgTlND
b250cm9sU2l6ZUZvclNjcgogICAgICAgICBzY3JvbGxiYXItPnNjcm9sbGJhckhpdChbc2VuZGVy
IGhpdFBhcnRdKTsKIH0KIAotLSAoV2lkZ2V0ICopd2lkZ2V0Ci17Ci0gICAgcmV0dXJuIHNjcm9s
bGJhcjsKLX0KLQogLSAodm9pZCltb3VzZURvd246KE5TRXZlbnQgKilldmVudAogewotICAgIFdp
ZGdldDo6YmVmb3JlTW91c2VEb3duKHNlbGYpOworICAgIFdpZGdldDo6YmVmb3JlTW91c2VEb3du
KHNlbGYsIHNjcm9sbGJhcik7CiAgICAgW3N1cGVyIG1vdXNlRG93bjpldmVudF07Ci0gICAgV2lk
Z2V0OjphZnRlck1vdXNlRG93bihzZWxmKTsKKyAgICBXaWRnZXQ6OmFmdGVyTW91c2VEb3duKHNl
bGYsIHNjcm9sbGJhcik7CiB9CiAKIEBlbmQKSW5kZXg6IHBsYXRmb3JtL21hYy9XZWJDb3JlV2lk
Z2V0SG9sZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gcGxhdGZvcm0vbWFjL1dlYkNvcmVXaWRnZXRIb2xk
ZXIuaAkocmV2aXNpb24gMTg2MzkpCisrKyBwbGF0Zm9ybS9tYWMvV2ViQ29yZVdpZGdldEhvbGRl
ci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMzICsxLDIgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMDQsIDIwMDUgQXBwbGUgQ29tcHV0ZXIsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRF
UiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVS
LCBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgot
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAot
ICovCi0gCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0gICAgY2xhc3MgV2lkZ2V0OwotfQotCi0vLyBO
U1ZpZXcgc3ViY2xhc3NlcyBpbiBXZWJDb3JlIHNob3VsZCBpbXBsZW1lbnQgdGhpcyBwcm90b2Nv
bAotQHByb3RvY29sIFdlYkNvcmVXaWRnZXRIb2xkZXIKLS0gKFdlYkNvcmU6OldpZGdldCAqKXdp
ZGdldDsKLUBlbmQKKy8qIFRoaXMgZmlsZSBpbnRlbnRpb25hbGx5IGxlZnQgYmxhbmsuIFRvIGJl
IHJlbW92ZWQgc29vbi4gKi8KKyNlcnJvcgpJbmRleDogcGxhdGZvcm0vbWFjL1dpZGdldE1hYy5t
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBwbGF0Zm9ybS9tYWMvV2lkZ2V0TWFjLm1tCShyZXZpc2lvbiAxODYz
OSkKKysrIHBsYXRmb3JtL21hYy9XaWRnZXRNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTI2LDI4
ICsyNiwyMiBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJXaWRnZXQuaCIKIAorI2lt
cG9ydCAiQmxvY2tFeGNlcHRpb25zLmgiCiAjaW1wb3J0ICJDdXJzb3IuaCIKICNpbXBvcnQgIkRv
Y3VtZW50LmgiCiAjaW1wb3J0ICJGb250LmgiCi0jaW1wb3J0ICJHcmFwaGljc0NvbnRleHQuaCIK
LSNpbXBvcnQgIkJsb2NrRXhjZXB0aW9ucy5oIgogI2ltcG9ydCAiRnJhbWVNYWMuaCIKKyNpbXBv
cnQgIkdyYXBoaWNzQ29udGV4dC5oIgogI2ltcG9ydCAiUmV0YWluUHRyLmgiCiAjaW1wb3J0ICJX
ZWJDb3JlRnJhbWVCcmlkZ2UuaCIKICNpbXBvcnQgIldlYkNvcmVGcmFtZVZpZXcuaCIKICNpbXBv
cnQgIldlYkNvcmVWaWV3LmgiCi0jaW1wb3J0ICJXZWJDb3JlV2lkZ2V0SG9sZGVyLmgiCiAjaW1w
b3J0ICJXaWRnZXRDbGllbnQuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMgYm9v
bCBkZWZlckZpcnN0UmVzcG9uZGVyQ2hhbmdlczsKLXN0YXRpYyBXaWRnZXQgKmRlZmVycmVkRmly
c3RSZXNwb25kZXI7Ci0KLWNsYXNzIFdpZGdldFByaXZhdGUKLXsKK2NsYXNzIFdpZGdldFByaXZh
dGUgewogcHVibGljOgotICAgIEZvbnQgZm9udDsKICAgICBSZXRhaW5QdHI8TlNWaWV3PiB2aWV3
OwogICAgIFdpZGdldENsaWVudCogY2xpZW50OwogICAgIGJvb2wgdmlzaWJsZTsKQEAgLTc1LDkg
KzY5LDYgQEAgV2lkZ2V0OjpXaWRnZXQoTlNWaWV3KiB2aWV3KSA6IGRhdGEobmV3IAogCiBXaWRn
ZXQ6On5XaWRnZXQoKSAKIHsKLSAgICBpZiAoZGVmZXJyZWRGaXJzdFJlc3BvbmRlciA9PSB0aGlz
KQotICAgICAgICBkZWZlcnJlZEZpcnN0UmVzcG9uZGVyID0gMDsKLQogICAgIGRlbGV0ZSBkYXRh
OwogfQogCkBAIC0xMTQsMTA4ICsxMDUsNjIgQEAgSW50UmVjdCBXaWRnZXQ6OmZyYW1lR2VvbWV0
cnkoKSBjb25zdAogCiBib29sIFdpZGdldDo6aGFzRm9jdXMoKSBjb25zdAogewotICAgIGlmIChk
ZWZlckZpcnN0UmVzcG9uZGVyQ2hhbmdlcyAmJiBkZWZlcnJlZEZpcnN0UmVzcG9uZGVyKQotICAg
ICAgICByZXR1cm4gdGhpcyA9PSBkZWZlcnJlZEZpcnN0UmVzcG9uZGVyOwotCi0gICAgQkVHSU5f
QkxPQ0tfT0JKQ19FWENFUFRJT05TOwotCi0gICAgTlNWaWV3ICp2aWV3ID0gW2dldFZpZXcoKSBf
d2ViY29yZV9lZmZlY3RpdmVGaXJzdFJlc3BvbmRlcl07Ci0KLSAgICBpZCBmaXJzdFJlc3BvbmRl
ciA9IFtGcmFtZU1hYzo6YnJpZGdlRm9yV2lkZ2V0KHRoaXMpIGZpcnN0UmVzcG9uZGVyXTsKLQot
ICAgIGlmICghZmlyc3RSZXNwb25kZXIpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAo
Zmlyc3RSZXNwb25kZXIgPT0gdmlldykKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICAvLyBT
b21lIHdpZGdldHMsIGxpa2UgdGV4dCBmaWVsZHMsIHNlY3VyZSB0ZXh0IGZpZWxkcywgdGV4dCBh
cmVhcywgYW5kIHNlbGVjdHMKLSAgICAvLyAod2hlbiBkaXNwbGF5ZWQgdXNpbmcgYSBsaXN0IGJv
eCkgbWF5IGhhdmUgYSBkZXNjZW5kZW50IHdpZGdldCB0aGF0IGlzCi0gICAgLy8gZmlyc3QgcmVz
cG9uZGVyLiBUaGlzIGNoZWNrc0Rlc2NlbmRhbnRzRm9yRm9jdXMoKSBjaGVjaywgdHVybmVkIG9u
IGZvciB0aGUgCi0gICAgLy8gZm91ciB3aWRnZXQgdHlwZXMgbGlzdGVkLCBlbmFibGVzIHRoZSBh
ZGRpdGlvbmFsIGNoZWNrIHdoaWNoIG1ha2VzIHRoaXMgCi0gICAgLy8gZnVuY3Rpb24gd29yayBj
b3JyZWN0bHkgZm9yIHRoZSBhYm92ZS1tZW50aW9uZWQgd2lkZ2V0IHR5cGVzLgotICAgIGlmIChj
aGVja3NEZXNjZW5kYW50c0ZvckZvY3VzKCkgJiYgCi0gICAgICAgIFtmaXJzdFJlc3BvbmRlciBp
c0tpbmRPZkNsYXNzOltOU1ZpZXcgY2xhc3NdXSAmJiAKLSAgICAgICAgWyhOU1ZpZXcgKilmaXJz
dFJlc3BvbmRlciBpc0Rlc2NlbmRhbnRPZjp2aWV3XSkgewotICAgICAgICAvLyBSZXR1cm4gdHJ1
ZSB3aGVuIHRoZSBmaXJzdCByZXNwb25kZXIgaXMgYSBzdWJ2aWV3IG9mIHRoaXMgd2lkZ2V0J3Mg
dmlldwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0KLSAgICBFTkRfQkxPQ0tfT0JKQ19F
WENFUFRJT05TOwotCisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIGZhbHNl
OwogfQogCisvLyBGSVhNRTogU2hvdWxkIG1vdmUgdGhpcyB0byBDaHJvbWU7IGJhZCBsYXllcmlu
ZyB0aGF0IHRoaXMga25vd3MgYWJvdXQgRnJhbWUuCiB2b2lkIFdpZGdldDo6c2V0Rm9jdXMoKQog
ewotICAgIGlmIChoYXNGb2N1cygpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAoZGVmZXJG
aXJzdFJlc3BvbmRlckNoYW5nZXMpIHsKLSAgICAgICAgZGVmZXJyZWRGaXJzdFJlc3BvbmRlciA9
IHRoaXM7CisgICAgRnJhbWUqIGZyYW1lID0gRnJhbWU6OmZyYW1lRm9yV2lkZ2V0KHRoaXMpOwor
ICAgIGlmICghZnJhbWUpCiAgICAgICAgIHJldHVybjsKLSAgICB9CiAKICAgICBCRUdJTl9CTE9D
S19PQkpDX0VYQ0VQVElPTlM7CisgCiAgICAgTlNWaWV3ICp2aWV3ID0gW2dldFZpZXcoKSBfd2Vi
Y29yZV9lZmZlY3RpdmVGaXJzdFJlc3BvbmRlcl07Ci0gICAgaWYgKFt2aWV3IHN1cGVydmlld10g
JiYgW3ZpZXcgYWNjZXB0c0ZpcnN0UmVzcG9uZGVyXSkgewotICAgICAgICBXZWJDb3JlRnJhbWVC
cmlkZ2UgKmJyaWRnZSA9IEZyYW1lTWFjOjpicmlkZ2VGb3JXaWRnZXQodGhpcyk7Ci0gICAgICAg
IE5TUmVzcG9uZGVyICpvbGRGaXJzdFJlc3BvbmRlciA9IFticmlkZ2UgZmlyc3RSZXNwb25kZXJd
OwotCi0gICAgICAgIFticmlkZ2UgbWFrZUZpcnN0UmVzcG9uZGVyOnZpZXddOwotCi0gICAgICAg
IC8vIFNldHRpbmcgZm9jdXMgY2FuIGFjdHVhbGx5IGNhdXNlIGEgc3R5bGUgY2hhbmdlIHdoaWNo
IG1pZ2h0Ci0gICAgICAgIC8vIHJlbW92ZSB0aGUgdmlldyBmcm9tIGl0cyBzdXBlcnZpZXcgd2hp
bGUgaXQncyBiZWluZyBtYWRlCi0gICAgICAgIC8vIGZpcnN0IHJlc3BvbmRlci4gVGhpcyBjb25m
dXNlcyBBcHBLaXQgc28gd2UgbXVzdCByZXN0b3JlCi0gICAgICAgIC8vIHRoZSBvbGQgZmlyc3Qg
cmVzcG9uZGVyLgorICAgIFdlYkNvcmVGcmFtZUJyaWRnZSAqYnJpZGdlID0gTWFjKGZyYW1lKS0+
YnJpZGdlKCk7CisgICAgaWQgZmlyc3RSZXNwb25kZXIgPSBbYnJpZGdlIGZpcnN0UmVzcG9uZGVy
XTsKKyAgICBpZiAoZmlyc3RSZXNwb25kZXIgJiYgZmlyc3RSZXNwb25kZXIgPT0gdmlldykKKyAg
ICAgICAgcmV0dXJuOworCisgICAgaWYgKCFbdmlldyBzdXBlcnZpZXddIHx8ICFbdmlldyBhY2Nl
cHRzRmlyc3RSZXNwb25kZXJdKQorICAgICAgICByZXR1cm47CisKKyAgICBOU1Jlc3BvbmRlciAq
b2xkRmlyc3RSZXNwb25kZXIgPSBbYnJpZGdlIGZpcnN0UmVzcG9uZGVyXTsKKworICAgIFticmlk
Z2UgbWFrZUZpcnN0UmVzcG9uZGVyOnZpZXddOworCisgICAgLy8gU2V0dGluZyBmb2N1cyBjYW4g
YWN0dWFsbHkgY2F1c2UgYSBzdHlsZSBjaGFuZ2Ugd2hpY2ggbWlnaHQKKyAgICAvLyByZW1vdmUg
dGhlIHZpZXcgZnJvbSBpdHMgc3VwZXJ2aWV3IHdoaWxlIGl0J3MgYmVpbmcgbWFkZQorICAgIC8v
IGZpcnN0IHJlc3BvbmRlci4gVGhpcyBjb25mdXNlcyBBcHBLaXQgc28gd2UgbXVzdCByZXN0b3Jl
CisgICAgLy8gdGhlIG9sZCBmaXJzdCByZXNwb25kZXIuCisgICAgaWYgKCFbdmlldyBzdXBlcnZp
ZXddKQorICAgICAgICBbYnJpZGdlIG1ha2VGaXJzdFJlc3BvbmRlcjpvbGRGaXJzdFJlc3BvbmRl
cl07CiAKLSAgICAgICAgaWYgKCFbdmlldyBzdXBlcnZpZXddKQotICAgICAgICAgICAgW2JyaWRn
ZSBtYWtlRmlyc3RSZXNwb25kZXI6b2xkRmlyc3RSZXNwb25kZXJdOwotICAgIH0KICAgICBFTkRf
QkxPQ0tfT0JKQ19FWENFUFRJT05TOwogfQogCiB2b2lkIFdpZGdldDo6Y2xlYXJGb2N1cygpCiB7
Ci0gICAgaWYgKCFoYXNGb2N1cygpKQotICAgICAgICByZXR1cm47Ci0gICAgLy8gRklYTUU6IFRo
aXMgcHJvYmFibHkgc2hvdWxkbid0IGJlIHRoZSBXaWRnZXQncyByZXNwb25zaWJpbGl0eQotICAg
IEZyYW1lKiBmcmFtZSA9IEZyYW1lOjpmcmFtZUZvcldpZGdldCh0aGlzKTsKLSAgICBpZiAoIWZy
YW1lKQotICAgICAgICByZXR1cm47Ci0gICAgZnJhbWUtPmRvY3VtZW50KCktPnNldEZvY3VzZWRO
b2RlKDApOworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCiBXaWRnZXQ6OkZvY3VzUG9s
aWN5IFdpZGdldDo6Zm9jdXNQb2xpY3koKSBjb25zdAogewotICAgIC8vIFRoaXMgcHJvdmlkZXMg
c3VwcG9ydCBmb3IgY29udHJvbGxpbmcgdGhlIHdpZGdldHMgdGhhdCB0YWtlIAotICAgIC8vIHBh
cnQgaW4gdGFiIG5hdmlnYXRpb24uIFdpZGdldHMgbXVzdDoKLSAgICAvLyAxLiBub3QgYmUgaGlk
ZGVuIGJ5IGNzcwotICAgIC8vIDIuIGJlIGVuYWJsZWQKLSAgICAvLyAzLiBhY2NlcHQgZmlyc3Qg
cmVzcG9uZGVyCi0KLSAgICBpZiAoIWNsaWVudCgpKQotICAgICAgICByZXR1cm4gTm9Gb2N1czsK
LSAgICBpZiAoIWNsaWVudCgpLT5pc1Zpc2libGUoY29uc3RfY2FzdDxXaWRnZXQqPih0aGlzKSkp
Ci0gICAgICAgIHJldHVybiBOb0ZvY3VzOwotICAgIGlmICghaXNFbmFibGVkKCkpCi0gICAgICAg
IHJldHVybiBOb0ZvY3VzOwotCi0gICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TOwotICAg
IGlmICghW2dldFZpZXcoKSBhY2NlcHRzRmlyc3RSZXNwb25kZXJdKQotICAgICAgICByZXR1cm4g
Tm9Gb2N1czsKLSAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TOwotCi0gICAgcmV0dXJuIFRh
YkZvY3VzOworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBOb0ZvY3VzOwog
fQogCiBjb25zdCBGb250JiBXaWRnZXQ6OmZvbnQoKSBjb25zdAogewotICAgIHJldHVybiBkYXRh
LT5mb250OworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiAqc3RhdGljX2Nh
c3Q8Rm9udCo+KDApOwogfQogCiB2b2lkIFdpZGdldDo6c2V0Rm9udChjb25zdCBGb250JiBmb250
KQogewotICAgIGRhdGEtPmZvbnQgPSBmb250OworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwog
fQogCiB2b2lkIFdpZGdldDo6c2V0Q3Vyc29yKGNvbnN0IEN1cnNvciYgY3Vyc29yKQpAQCAtMjQw
LDcgKzE4NSw3IEBAIHZvaWQgV2lkZ2V0OjpzaG93KCkKICAgICBkYXRhLT52aXNpYmxlID0gdHJ1
ZTsKIAogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKLSAgICBbZ2V0T3V0ZXJWaWV3
KCkgc2V0SGlkZGVuOiBOT107CisgICAgW2dldE91dGVyVmlldygpIHNldEhpZGRlbjpOT107CiAg
ICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKIH0KIApAQCAtMjUyLDcgKzE5Nyw3IEBAIHZv
aWQgV2lkZ2V0OjpoaWRlKCkKICAgICBkYXRhLT52aXNpYmxlID0gZmFsc2U7CiAKICAgICBCRUdJ
Tl9CTE9DS19PQkpDX0VYQ0VQVElPTlM7Ci0gICAgW2dldE91dGVyVmlldygpIHNldEhpZGRlbjog
WUVTXTsKKyAgICBbZ2V0T3V0ZXJWaWV3KCkgc2V0SGlkZGVuOllFU107CiAgICAgRU5EX0JMT0NL
X09CSkNfRVhDRVBUSU9OUzsKIH0KIApAQCAtMjkzLDQ2ICsyMzgsMjUgQEAgTlNWaWV3KiBXaWRn
ZXQ6OmdldE91dGVyVmlldygpIGNvbnN0CiAgICAgcmV0dXJuIHZpZXc7CiB9CiAKLS8vIEZJWE1F
OiBHZXQgcmlkIG9mIHRoZSBzaW5nbGUgdXNlIG9mIHRoZXNlIG5leHQgdHdvIGZ1bmN0aW9ucyAo
ZnJhbWUgcmVzaXppbmcpLCBhbmQgcmVtb3ZlIHRoZW0uCi0KIEdyYXBoaWNzQ29udGV4dCogV2lk
Z2V0Ojpsb2NrRHJhd2luZ0ZvY3VzKCkKIHsKLSAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElP
TlM7Ci0gICAgW2dldFZpZXcoKSBsb2NrRm9jdXNdOwotICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQ
VElPTlM7Ci0gICAgUGxhdGZvcm1HcmFwaGljc0NvbnRleHQqIHBsYXRmb3JtQ29udGV4dCA9IHN0
YXRpY19jYXN0PFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0Kj4oW1tOU0dyYXBoaWNzQ29udGV4dCBj
dXJyZW50Q29udGV4dF0gZ3JhcGhpY3NQb3J0XSk7Ci0gICAgQVNTRVJUKFtbTlNHcmFwaGljc0Nv
bnRleHQgY3VycmVudENvbnRleHRdIGlzRmxpcHBlZF0pOwotICAgIHJldHVybiBuZXcgR3JhcGhp
Y3NDb250ZXh0KHBsYXRmb3JtQ29udGV4dCk7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisg
ICAgcmV0dXJuIDA7CiB9CiAKLXZvaWQgV2lkZ2V0Ojp1bmxvY2tEcmF3aW5nRm9jdXMoR3JhcGhp
Y3NDb250ZXh0KiBjb250ZXh0KQordm9pZCBXaWRnZXQ6OnVubG9ja0RyYXdpbmdGb2N1cyhHcmFw
aGljc0NvbnRleHQqKQogewotICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKLSAgICBb
Z2V0VmlldygpIHVubG9ja0ZvY3VzXTsKLSAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TOwot
ICAgIGRlbGV0ZSBjb250ZXh0OworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCiB2b2lk
IFdpZGdldDo6ZGlzYWJsZUZsdXNoRHJhd2luZygpCiB7Ci0gICAgLy8gSXQncyBPSyB0byB1c2Ug
dGhlIHJlYWwgd2luZG93IGhlcmUsIGJlY2F1c2UgaWYgdGhlIHZpZXcncyBub3QKLSAgICAvLyBp
biB0aGUgdmlldyBoaWVyYXJjaHksIHRoZW4gd2UgZG9uJ3QgYWN0dWFsbHkgd2FudCB0byBhZmZl
Y3QKLSAgICAvLyBmbHVzaGluZy4KLSAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlM7Ci0g
ICAgW1tnZXRWaWV3KCkgd2luZG93XSBkaXNhYmxlRmx1c2hXaW5kb3ddOwotICAgIEVORF9CTE9D
S19PQkpDX0VYQ0VQVElPTlM7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKIHZvaWQg
V2lkZ2V0OjplbmFibGVGbHVzaERyYXdpbmcoKQogewotICAgIC8vIEl0J3MgT0sgdG8gdXNlIHRo
ZSByZWFsIHdpbmRvdyBoZXJlLCBiZWNhdXNlIGlmIHRoZSB2aWV3J3Mgbm90Ci0gICAgLy8gaW4g
dGhlIHZpZXcgaGllcmFyY2h5LCB0aGVuIHdlIGRvbid0IGFjdHVhbGx5IHdhbnQgdG8gYWZmZWN0
Ci0gICAgLy8gZmx1c2hpbmcuCi0gICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TOwotICAg
IE5TV2luZG93KiB3aW5kb3cgPSBbZ2V0VmlldygpIHdpbmRvd107Ci0gICAgW3dpbmRvdyBlbmFi
bGVGbHVzaFdpbmRvd107Ci0gICAgW3dpbmRvdyBmbHVzaFdpbmRvd107Ci0gICAgRU5EX0JMT0NL
X09CSkNfRVhDRVBUSU9OUzsKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIAogdm9pZCBX
aWRnZXQ6OnBhaW50KEdyYXBoaWNzQ29udGV4dCogcCwgY29uc3QgSW50UmVjdCYgcikKQEAgLTM0
MCw4ICsyNjQsNiBAQCB2b2lkIFdpZGdldDo6cGFpbnQoR3JhcGhpY3NDb250ZXh0KiBwLCBjCiAg
ICAgaWYgKHAtPnBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogICAgIE5TVmll
dyAqdmlldyA9IGdldE91dGVyVmlldygpOwotICAgIC8vIFdlYkNvcmVUZXh0RmllbGQgcmVsaWVz
IG9uIHRoZSBmYWN0IHRoYXQgd2UgdXNlIHRoaXMgcGFydGljdWxhcgotICAgIC8vIE5TVmlldyBk
aXNwbGF5IG1ldGhvZC4gSWYgeW91IGNoYW5nZSB0aGlzLCBiZSBzdXJlIHRvIHVwZGF0ZSB0aGVt
IGFzIHdlbGwuCiAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TOwogICAgIFt2aWV3IGRp
c3BsYXlSZWN0SWdub3JpbmdPcGFjaXR5Olt2aWV3IGNvbnZlcnRSZWN0OnIgZnJvbVZpZXc6W3Zp
ZXcgc3VwZXJ2aWV3XV1dOwogICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CkBAIC0zNjMs
MTMgKzI4NSwxNCBAQCB2b2lkIFdpZGdldDo6aW52YWxpZGF0ZVJlY3QoY29uc3QgSW50UmVjCiAK
IHZvaWQgV2lkZ2V0OjpzZW5kQ29uc3VtZWRNb3VzZVVwKCkKIHsKLSAgICBpZiAoY2xpZW50KCkp
Ci0gICAgICAgIGNsaWVudCgpLT5zZW5kQ29uc3VtZWRNb3VzZVVwKHRoaXMpOworICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwogfQogCisvLyBGSVhNRTogU2hvdWxkIG1vdmUgdGhpcyB0byBDaHJv
bWU7IGJhZCBsYXllcmluZyB0aGF0IHRoaXMga25vd3MgYWJvdXQgRnJhbWUuCiB2b2lkIFdpZGdl
dDo6c2V0SXNTZWxlY3RlZChib29sIGlzU2VsZWN0ZWQpCiB7Ci0gICAgW0ZyYW1lTWFjOjpicmlk
Z2VGb3JXaWRnZXQodGhpcykgc2V0SXNTZWxlY3RlZDppc1NlbGVjdGVkIGZvclZpZXc6Z2V0Vmll
dygpXTsKKyAgICBpZiAoRnJhbWUqIGZyYW1lID0gRnJhbWU6OmZyYW1lRm9yV2lkZ2V0KHRoaXMp
KQorICAgICAgICBbTWFjKGZyYW1lKS0+YnJpZGdlKCkgc2V0SXNTZWxlY3RlZDppc1NlbGVjdGVk
IGZvclZpZXc6Z2V0VmlldygpXTsKIH0KIAogdm9pZCBXaWRnZXQ6OmFkZFRvU3VwZXJ2aWV3KE5T
VmlldyAqc3VwZXJ2aWV3KQpAQCAtMzk4LDEwICszMjEsOCBAQCB2b2lkIFdpZGdldDo6cmVtb3Zl
RnJvbVN1cGVydmlldygpCiAgICAgfQogfQogCi12b2lkIFdpZGdldDo6YmVmb3JlTW91c2VEb3du
KE5TVmlldyAqdmlldykKK3ZvaWQgV2lkZ2V0OjpiZWZvcmVNb3VzZURvd24oTlNWaWV3ICp2aWV3
LCBXaWRnZXQqIHdpZGdldCkKIHsKLSAgICBBU1NFUlQoW3ZpZXcgY29uZm9ybXNUb1Byb3RvY29s
OkBwcm90b2NvbChXZWJDb3JlV2lkZ2V0SG9sZGVyKV0pOwotICAgIFdpZGdldCogd2lkZ2V0ID0g
WyhOU1ZpZXcgPFdlYkNvcmVXaWRnZXRIb2xkZXI+ICopdmlldyB3aWRnZXRdOwogICAgIGlmICh3
aWRnZXQpIHsKICAgICAgICAgQVNTRVJUKHZpZXcgPT0gd2lkZ2V0LT5nZXRPdXRlclZpZXcoKSk7
CiAgICAgICAgIEFTU0VSVCghd2lkZ2V0LT5kYXRhLT5tdXN0U3RheUluV2luZG93KTsKQEAgLTQw
OSwxMCArMzMwLDggQEAgdm9pZCBXaWRnZXQ6OmJlZm9yZU1vdXNlRG93bihOU1ZpZXcgKnZpZQog
ICAgIH0KIH0KIAotdm9pZCBXaWRnZXQ6OmFmdGVyTW91c2VEb3duKE5TVmlldyAqdmlldykKK3Zv
aWQgV2lkZ2V0OjphZnRlck1vdXNlRG93bihOU1ZpZXcgKnZpZXcsIFdpZGdldCogd2lkZ2V0KQog
ewotICAgIEFTU0VSVChbdmlldyBjb25mb3Jtc1RvUHJvdG9jb2w6QHByb3RvY29sKFdlYkNvcmVX
aWRnZXRIb2xkZXIpXSk7Ci0gICAgV2lkZ2V0KiB3aWRnZXQgPSBbKE5TVmlldyA8V2ViQ29yZVdp
ZGdldEhvbGRlcj4qKXZpZXcgd2lkZ2V0XTsKICAgICBpZiAoIXdpZGdldCkgewogICAgICAgICBC
RUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CiAgICAgICAgIFt2aWV3IHJlbW92ZUZyb21TdXBl
cnZpZXddOwpAQCAtNDI1LDE4ICszNDQsNiBAQCB2b2lkIFdpZGdldDo6YWZ0ZXJNb3VzZURvd24o
TlNWaWV3ICp2aWV3CiAgICAgfQogfQogCi12b2lkIFdpZGdldDo6c2V0RGVmZXJGaXJzdFJlc3Bv
bmRlckNoYW5nZXMoYm9vbCBkZWZlcikKLXsKLSAgICBkZWZlckZpcnN0UmVzcG9uZGVyQ2hhbmdl
cyA9IGRlZmVyOwotICAgIGlmICghZGVmZXIpIHsKLSAgICAgICAgV2lkZ2V0KiByID0gZGVmZXJy
ZWRGaXJzdFJlc3BvbmRlcjsKLSAgICAgICAgZGVmZXJyZWRGaXJzdFJlc3BvbmRlciA9IDA7Ci0g
ICAgICAgIGlmIChyKSB7Ci0gICAgICAgICAgICByLT5zZXRGb2N1cygpOwotICAgICAgICB9Ci0g
ICAgfQotfQotCiB2b2lkIFdpZGdldDo6c2V0Q2xpZW50KFdpZGdldENsaWVudCogYykKIHsKICAg
ICBkYXRhLT5jbGllbnQgPSBjOwpJbmRleDogcmVuZGVyaW5nL1JlbmRlckFwcGxldC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gcmVuZGVyaW5nL1JlbmRlckFwcGxldC5jcHAJKHJldmlzaW9uIDE4NjM5KQor
KysgcmVuZGVyaW5nL1JlbmRlckFwcGxldC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDE4ICs0
OSwxOCBAQCBSZW5kZXJBcHBsZXQ6On5SZW5kZXJBcHBsZXQoKQogCiBpbnQgUmVuZGVyQXBwbGV0
OjppbnRyaW5zaWNXaWR0aCgpIGNvbnN0CiB7Ci0gICAgaWYgKCFtX3dpZGdldCkKLSAgICAgICAg
cmV0dXJuIDE1MDsKLSAgICBpbnQgdyA9IG1fd2lkZ2V0LT5zaXplSGludCgpLndpZHRoKCk7Ci0g
ICAgcmV0dXJuIHcgPiAxMCA/IHcgOiA1MDsKKyAgICAvLyBGSVhNRTogVGhpcyBkb2Vzbid0IG1h
a2Ugc2Vuc2UuCisgICAgLy8gQWZ0ZXIgc29tZSByZXNlYXJjaCB3ZSBjYW4gcHJvYmFibHkgcmVt
b3ZlIHRoaXMgZW50aXJlbHkgYW5kIGp1c3QgY2FsbAorICAgIC8vIHNldEludHJpbnNpY1dpZHRo
IGluIHRoZSBjb25zdHJ1Y3Rvci4KKyAgICByZXR1cm4gbV93aWRnZXQgPyA1MCA6IDE1MDsKIH0K
IAogaW50IFJlbmRlckFwcGxldDo6aW50cmluc2ljSGVpZ2h0KCkgY29uc3QKIHsKLSAgICBpZiAo
IW1fd2lkZ2V0KQotICAgICAgICByZXR1cm4gMTUwOwotICAgIGludCBoID0gbV93aWRnZXQtPnNp
emVIaW50KCkuaGVpZ2h0KCk7Ci0gICAgcmV0dXJuIGggPiAxMCA/IGggOiA1MDsKKyAgICAvLyBG
SVhNRTogVGhpcyBkb2Vzbid0IG1ha2Ugc2Vuc2UuCisgICAgLy8gQWZ0ZXIgc29tZSByZXNlYXJj
aCB3ZSBjYW4gcHJvYmFibHkgcmVtb3ZlIHRoaXMgZW50aXJlbHkgYW5kIGp1c3QgY2FsbAorICAg
IC8vIHNldEludHJpbnNpY0hlaWdodCBpbiB0aGUgY29uc3RydWN0b3IuCisgICAgcmV0dXJuIG1f
d2lkZ2V0ID8gNTAgOiAxNTA7CiB9CiAKIHZvaWQgUmVuZGVyQXBwbGV0OjpjcmVhdGVXaWRnZXRJ
Zk5lY2Vzc2FyeSgpCkluZGV4OiByZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIHJlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAJKHJldmlzaW9uIDE4NjM5KQorKysgcmVuZGVy
aW5nL1JlbmRlckJsb2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzY0MCw3ICszNjQwLDcgQEAg
dm9pZCBSZW5kZXJCbG9jazo6Y2xlYXJUcnVuY2F0aW9uKCkKICAgICB9CiB9CiAKLWNvbnN0IGNo
YXIgKlJlbmRlckJsb2NrOjpyZW5kZXJOYW1lKCkgY29uc3QKK2NvbnN0IGNoYXIqIFJlbmRlckJs
b2NrOjpyZW5kZXJOYW1lKCkgY29uc3QKIHsKICAgICBpZiAoaXNCb2R5KCkpCiAgICAgICAgIHJl
dHVybiAiUmVuZGVyQm9keSI7IC8vIEZJWE1FOiBUZW1wb3JhcnkgaGFjayB1bnRpbCB3ZSBrbm93
IHRoYXQgdGhlIHJlZ3Jlc3Npb24gdGVzdHMgcGFzcy4KSW5kZXg6IHJlbmRlcmluZy9SZW5kZXJX
aWRnZXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIHJlbmRlcmluZy9SZW5kZXJXaWRnZXQuY3BwCShyZXZp
c2lvbiAxODYzOSkKKysrIHJlbmRlcmluZy9SZW5kZXJXaWRnZXQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC00MSw2ICs0MSwxMiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFj
ZSBFdmVudE5hbWVzOwogCitzdGF0aWMgSGFzaE1hcDxjb25zdCBXaWRnZXQqLCBSZW5kZXJXaWRn
ZXQqPiYgd2lkZ2V0UmVuZGVyZXJNYXAoKQoreworICAgIHN0YXRpYyBIYXNoTWFwPGNvbnN0IFdp
ZGdldCosIFJlbmRlcldpZGdldCo+KiBzdGF0aWNXaWRnZXRSZW5kZXJlck1hcCA9IG5ldyBIYXNo
TWFwPGNvbnN0IFdpZGdldCosIFJlbmRlcldpZGdldCo+OworICAgIHJldHVybiAqc3RhdGljV2lk
Z2V0UmVuZGVyZXJNYXA7Cit9CisKIFJlbmRlcldpZGdldDo6UmVuZGVyV2lkZ2V0KE5vZGUqIG5v
ZGUpCiAgICAgICA6IFJlbmRlclJlcGxhY2VkKG5vZGUpCiAgICAgICAsIG1fd2lkZ2V0KDApCkBA
IC01Miw5ICs1OCw5IEBAIFJlbmRlcldpZGdldDo6UmVuZGVyV2lkZ2V0KE5vZGUqIG5vZGUpCiAK
ICAgICB2aWV3KCktPmFkZFdpZGdldCh0aGlzKTsKIAotICAgIC8vIHRoaXMgaXMgbm8gcmVhbCBy
ZWZlcmVuY2UgY291bnRpbmcsIGl0cyBqdXN0IHRoZXJlCi0gICAgLy8gdG8gbWFrZSBzdXJlIHRo
YXQgd2UncmUgbm90IGRlbGV0ZWQgd2hpbGUgd2UncmUgcmVjdXJzZWQKLSAgICAvLyBpbiBhbiBl
dmVudEZpbHRlciBvZiB0aGUgd2lkZ2V0CisgICAgLy8gUmVmZXJlbmNlIGNvdW50aW5nIGlzIHVz
ZWQgdG8gcHJldmVudCB0aGUgd2lkZ2V0IGZyb20gYmVpbmcKKyAgICAvLyBkZXN0cm95ZWQgd2hp
bGUgaW5zaWRlIHRoZSBXaWRnZXQgY29kZSwgd2hpY2ggbWlnaHQgbm90IGJlCisgICAgLy8gYWJs
ZSB0byBoYW5kbGUgdGhhdC4KICAgICByZWYoKTsKIH0KIApAQCAtNzYsNyArODIsNyBAQCB2b2lk
IFJlbmRlcldpZGdldDo6ZGVzdHJveSgpCiAgICAgaWYgKG1fd2lkZ2V0KSB7CiAgICAgICAgIGlm
IChtX3ZpZXcpCiAgICAgICAgICAgICBtX3ZpZXctPnJlbW92ZUNoaWxkKG1fd2lkZ2V0KTsKLSAg
ICAgICAgbV93aWRnZXQtPnNldENsaWVudCgwKTsKKyAgICAgICAgd2lkZ2V0UmVuZGVyZXJNYXAo
KS5yZW1vdmUobV93aWRnZXQpOwogICAgIH0KIAogICAgIFJlbmRlckxheWVyKiBsYXllciA9IG1f
bGF5ZXI7CkBAIC0xMTMsMTIgKzExOSwxMiBAQCB2b2lkIFJlbmRlcldpZGdldDo6c2V0V2lkZ2V0
KFdpZGdldCogd2lkCiB7CiAgICAgaWYgKHdpZGdldCAhPSBtX3dpZGdldCkgewogICAgICAgICBp
ZiAobV93aWRnZXQpIHsKLSAgICAgICAgICAgIG1fd2lkZ2V0LT5zZXRDbGllbnQoMCk7CisgICAg
ICAgICAgICB3aWRnZXRSZW5kZXJlck1hcCgpLnJlbW92ZShtX3dpZGdldCk7CiAgICAgICAgICAg
ICBkZWxldGVXaWRnZXQoKTsKICAgICAgICAgfQogICAgICAgICBtX3dpZGdldCA9IHdpZGdldDsK
ICAgICAgICAgaWYgKG1fd2lkZ2V0KSB7Ci0gICAgICAgICAgICBtX3dpZGdldC0+c2V0Q2xpZW50
KHRoaXMpOworICAgICAgICAgICAgd2lkZ2V0UmVuZGVyZXJNYXAoKS5hZGQobV93aWRnZXQsIHRo
aXMpOwogICAgICAgICAgICAgLy8gaWYgd2UndmUgYWxyZWFkeSByZWNlaXZlZCBhIGxheW91dCwg
YXBwbHkgdGhlIGNhbGN1bGF0ZWQgc3BhY2UgdG8gdGhlCiAgICAgICAgICAgICAvLyB3aWRnZXQg
aW1tZWRpYXRlbHksIGJ1dCB3ZSBoYXZlIHRvIGhhdmUgcmVhbGx5IGJlZW4gZnVsbCBjb25zdHJ1
Y3RlZCAod2l0aCBhIG5vbi1udWxsCiAgICAgICAgICAgICAvLyBzdHlsZSBwb2ludGVyKS4KQEAg
LTE0NSwxOCArMTUxLDEwIEBAIHZvaWQgUmVuZGVyV2lkZ2V0OjpsYXlvdXQoKQogICAgIHNldE5l
ZWRzTGF5b3V0KGZhbHNlKTsKIH0KIAotdm9pZCBSZW5kZXJXaWRnZXQ6OnNlbmRDb25zdW1lZE1v
dXNlVXAoV2lkZ2V0KikKLXsKLSAgICBSZW5kZXJBcmVuYSogYXJlbmEgPSByZWYoKTsKLSAgICBF
dmVudFRhcmdldE5vZGVDYXN0KG5vZGUoKSktPmRpc3BhdGNoU2ltdWxhdGVkTW91c2VFdmVudCht
b3VzZXVwRXZlbnQpOwotICAgIGRlcmVmKGFyZW5hKTsKLX0KLQogdm9pZCBSZW5kZXJXaWRnZXQ6
OnNldFN0eWxlKFJlbmRlclN0eWxlKiBuZXdTdHlsZSkKIHsKICAgICBSZW5kZXJSZXBsYWNlZDo6
c2V0U3R5bGUobmV3U3R5bGUpOwogICAgIGlmIChtX3dpZGdldCkgewotICAgICAgICBtX3dpZGdl
dC0+c2V0Rm9udChzdHlsZSgpLT5mb250KCkpOwogICAgICAgICBpZiAoc3R5bGUoKS0+dmlzaWJp
bGl0eSgpICE9IFZJU0lCTEUpCiAgICAgICAgICAgICBtX3dpZGdldC0+aGlkZSgpOwogICAgICAg
ICBlbHNlCkBAIC0xOTksNDEgKzE5Nyw2IEBAIHZvaWQgUmVuZGVyV2lkZ2V0OjpwYWludChQYWlu
dEluZm8mIHBhaW4KICAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPmZpbGxSZWN0KHNlbGVjdGlv
blJlY3QoKSwgc2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKCkpOwogfQogCi12b2lkIFJlbmRlcldp
ZGdldDo6Zm9jdXNJbihXaWRnZXQqKQotewotICAgIFJlbmRlckFyZW5hKiBhcmVuYSA9IHJlZigp
OwotICAgIFJlZlB0cjxOb2RlPiBlbGVtID0gZWxlbWVudCgpOwotICAgIGlmIChlbGVtKQotICAg
ICAgICBlbGVtLT5kb2N1bWVudCgpLT5zZXRGb2N1c2VkTm9kZShlbGVtKTsKLSAgICBkZXJlZihh
cmVuYSk7Ci19Ci0KLXZvaWQgUmVuZGVyV2lkZ2V0Ojpmb2N1c091dChXaWRnZXQqKQotewotICAg
IFJlbmRlckFyZW5hKiBhcmVuYSA9IHJlZigpOwotICAgIFJlZlB0cjxOb2RlPiBlbGVtID0gZWxl
bWVudCgpOwotICAgIGlmIChlbGVtICYmIGVsZW0gPT0gZWxlbS0+ZG9jdW1lbnQoKS0+Zm9jdXNl
ZE5vZGUoKSkKLSAgICAgICAgZWxlbS0+ZG9jdW1lbnQoKS0+c2V0Rm9jdXNlZE5vZGUoMCk7Ci0g
ICAgZGVyZWYoYXJlbmEpOwotfQotCi12b2lkIFJlbmRlcldpZGdldDo6c2Nyb2xsVG9WaXNpYmxl
KFdpZGdldCogd2lkZ2V0KQotewotICAgIGlmIChSZW5kZXJMYXllciogbGF5ZXIgPSBlbmNsb3Np
bmdMYXllcigpKQotICAgICAgICBsYXllci0+c2Nyb2xsUmVjdFRvVmlzaWJsZShhYnNvbHV0ZUJv
dW5kaW5nQm94UmVjdCgpKTsKLX0KLQotYm9vbCBSZW5kZXJXaWRnZXQ6OmlzVmlzaWJsZShXaWRn
ZXQqIHdpZGdldCkKLXsKLSAgICByZXR1cm4gc3R5bGUoKS0+dmlzaWJpbGl0eSgpID09IFZJU0lC
TEU7Ci19Ci0KLUVsZW1lbnQqIFJlbmRlcldpZGdldDo6ZWxlbWVudChXaWRnZXQqIHdpZGdldCkK
LXsKLSAgICBOb2RlKiBuID0gbm9kZSgpOwotICAgIHJldHVybiBuLT5pc0VsZW1lbnROb2RlKCkg
PyBzdGF0aWNfY2FzdDxFbGVtZW50Kj4obikgOiAwOwotfQotCiB2b2lkIFJlbmRlcldpZGdldDo6
ZGVyZWYoUmVuZGVyQXJlbmEgKmFyZW5hKQogewogICAgIGlmICgtLW1fcmVmQ291bnQgPD0gMCkK
QEAgLTI4OCw0ICsyNTEsOSBAQCB2b2lkIFJlbmRlcldpZGdldDo6ZGVsZXRlV2lkZ2V0KCkKICAg
ICBkZWxldGUgbV93aWRnZXQ7CiB9CiAKK1JlbmRlcldpZGdldCogUmVuZGVyV2lkZ2V0OjpmaW5k
KGNvbnN0IFdpZGdldCogd2lkZ2V0KQoreworICAgIHJldHVybiB3aWRnZXRSZW5kZXJlck1hcCgp
LmdldCh3aWRnZXQpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiByZW5kZXJp
bmcvUmVuZGVyV2lkZ2V0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gcmVuZGVyaW5nL1JlbmRlcldpZGdldC5o
CShyZXZpc2lvbiAxODYzOSkKKysrIHJlbmRlcmluZy9SZW5kZXJXaWRnZXQuaAkod29ya2luZyBj
b3B5KQpAQCAtMjUsMTEgKzI1LDEyIEBACiAjZGVmaW5lIFJlbmRlcldpZGdldF9oCiAKICNpbmNs
dWRlICJSZW5kZXJSZXBsYWNlZC5oIgotI2luY2x1ZGUgIldpZGdldENsaWVudC5oIgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFJlbmRlcldpZGdldCA6IHB1YmxpYyBSZW5kZXJSZXBs
YWNlZCwgcHVibGljIFdpZGdldENsaWVudCB7CitjbGFzcyBXaWRnZXQ7CisKK2NsYXNzIFJlbmRl
cldpZGdldCA6IHB1YmxpYyBSZW5kZXJSZXBsYWNlZCB7CiBwdWJsaWM6CiAgICAgUmVuZGVyV2lk
Z2V0KE5vZGUqKTsKICAgICB2aXJ0dWFsIH5SZW5kZXJXaWRnZXQoKTsKQEAgLTQxLDkgKzQyLDEw
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoUGFpbnRJbmZvJiwgaW50IHR4LCBp
bnQgdHkpOwogCiAgICAgdmlydHVhbCB2b2lkIGRlc3Ryb3koKTsKLSAgICB2aXJ0dWFsIHZvaWQg
bGF5b3V0KCApOworICAgIHZpcnR1YWwgdm9pZCBsYXlvdXQoKTsKIAogICAgIFdpZGdldCogd2lk
Z2V0KCkgY29uc3QgeyByZXR1cm4gbV93aWRnZXQ7IH0KKyAgICBzdGF0aWMgUmVuZGVyV2lkZ2V0
KiBmaW5kKGNvbnN0IFdpZGdldCopOwogCiAgICAgUmVuZGVyQXJlbmEqIHJlZigpIHsgKyttX3Jl
ZkNvdW50OyByZXR1cm4gcmVuZGVyQXJlbmEoKTsgfQogICAgIHZvaWQgZGVyZWYoUmVuZGVyQXJl
bmEqKTsKQEAgLTU3LDEzICs1OSw2IEBAIHB1YmxpYzoKICAgICB1c2luZyBSZW5kZXJSZXBsYWNl
ZDo6ZWxlbWVudDsKIAogcHJpdmF0ZToKLSAgICB2aXJ0dWFsIHZvaWQgZm9jdXNJbihXaWRnZXQq
KTsKLSAgICB2aXJ0dWFsIHZvaWQgZm9jdXNPdXQoV2lkZ2V0Kik7Ci0gICAgdmlydHVhbCB2b2lk
IHNjcm9sbFRvVmlzaWJsZShXaWRnZXQqKTsKLSAgICB2aXJ0dWFsIEVsZW1lbnQqIGVsZW1lbnQo
V2lkZ2V0Kik7Ci0gICAgdmlydHVhbCBib29sIGlzVmlzaWJsZShXaWRnZXQqKTsKLSAgICB2aXJ0
dWFsIHZvaWQgc2VuZENvbnN1bWVkTW91c2VVcChXaWRnZXQqKTsKLQogICAgIHZvaWQgcmVzaXpl
V2lkZ2V0KFdpZGdldCosIGludCB3LCBpbnQgaCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRl
V2lkZ2V0KCk7Cg==
</data>
<flag name="review"
          id="4572"
          type_id="1"
          status="+"
          setter="aroben"
    />
          </attachment>
      

    </bug>

</bugzilla>