<?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>144358</bug_id>
          
          <creation_ts>2015-04-28 15:30:14 -0700</creation_ts>
          <short_desc>[TextIndicator] Yellow highlight takes too long to fade out on scroll</short_desc>
          <delta_ts>2015-04-28 16:29:23 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Tim Horton">thorton</reporter>
          <assigned_to name="Tim Horton">thorton</assigned_to>
          <cc>bdakin</cc>
    
    <cc>bfulgham</cc>
    
    <cc>simon.fraser</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1089758</commentid>
    <comment_count>0</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2015-04-28 15:30:14 -0700</bug_when>
    <thetext>[TextIndicator] Yellow highlight takes too long to fade out on scroll</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1089760</commentid>
    <comment_count>1</comment_count>
      <attachid>251890</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2015-04-28 15:30:35 -0700</bug_when>
    <thetext>Created attachment 251890
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1089761</commentid>
    <comment_count>2</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2015-04-28 15:31:13 -0700</bug_when>
    <thetext>&lt;rdar://problem/19451011&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1089780</commentid>
    <comment_count>3</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2015-04-28 16:15:16 -0700</bug_when>
    <thetext>This creates an EFL build failure:

../../Source/WebKit2/UIProcess/CoordinatedGraphics/WebView.h:184:18: error: &apos;virtual void WebKit::WebView::setTextIndicator(WTF::PassRefPtr&lt;WebCore::TextIndicator&gt;, bool)&apos; marked override, but does not override
     virtual void setTextIndicator(PassRefPtr&lt;WebCore::TextIndicator&gt;, bool) override;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1089782</commentid>
    <comment_count>4</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2015-04-28 16:18:14 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; This creates an EFL build failure:
&gt; 
&gt; ../../Source/WebKit2/UIProcess/CoordinatedGraphics/WebView.h:184:18: error:
&gt; &apos;virtual void
&gt; WebKit::WebView::setTextIndicator(WTF::PassRefPtr&lt;WebCore::TextIndicator&gt;,
&gt; bool)&apos; marked override, but does not override
&gt;      virtual void setTextIndicator(PassRefPtr&lt;WebCore::TextIndicator&gt;, bool)
&gt; override;

Yep. In WebKit2. I haven&apos;t landed it yet because I&apos;m going to make a minor-but-untested effort to fix EFL and GTK before landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1089784</commentid>
    <comment_count>5</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2015-04-28 16:29:23 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/183517</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>251890</attachid>
            <date>2015-04-28 15:30:35 -0700</date>
            <delta_ts>2015-04-28 15:44:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-144358-20150428152928.patch</filename>
            <type>text/plain</type>
            <size>50066</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgzNDA3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTYxY2IwMzI4YmVlNDlj
YWU4MzY1NGE3MmJkMDBhOWVjNDVmMzg3Ny4uMTgzYjU5NzkyMmYxZTdjNTc1NmVmNTQxYmVkMjc3
YzI5Zjc3ZmU0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDE1LTA0LTI4ICBUaW1v
dGh5IEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KKworICAgICAgICBbVGV4dElu
ZGljYXRvcl0gWWVsbG93IGhpZ2hsaWdodCB0YWtlcyB0b28gbG9uZyB0byBmYWRlIG91dCBvbiBz
Y3JvbGwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0
NDM1OAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMTk0NTEwMTE+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBwYWdlL1RleHRJbmRpY2F0b3IuaDoK
KyAgICAgICAgQWRkIExpZmV0aW1lIGFuZCBEaXNtaXNzYWxBbmltYXRpb24gZW51bXMuCisKKyAg
ICAgICAgKFdlYkNvcmU6OlRleHRJbmRpY2F0b3I6OmNvbnRlbnRJbWFnZVdpdGhIaWdobGlnaHQp
OgorICAgICAgICAoV2ViQ29yZTo6VGV4dEluZGljYXRvcjo6Y29udGVudEltYWdlKToKKyAgICAg
ICAgRml4IHN0eWxlLgorCisgICAgICAgICogcGFnZS9tYWMvVGV4dEluZGljYXRvcldpbmRvdy5o
OgorICAgICAgICAqIHBhZ2UvbWFjL1RleHRJbmRpY2F0b3JXaW5kb3cubW06CisgICAgICAgIChX
ZWJDb3JlOjpUZXh0SW5kaWNhdG9yV2luZG93OjpUZXh0SW5kaWNhdG9yV2luZG93KToKKyAgICAg
ICAgKFdlYkNvcmU6OlRleHRJbmRpY2F0b3JXaW5kb3c6On5UZXh0SW5kaWNhdG9yV2luZG93KToK
KyAgICAgICAgKFdlYkNvcmU6OlRleHRJbmRpY2F0b3JXaW5kb3c6OmNsZWFyVGV4dEluZGljYXRv
cik6CisgICAgICAgIChXZWJDb3JlOjpUZXh0SW5kaWNhdG9yV2luZG93OjpzZXRUZXh0SW5kaWNh
dG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRJbmRpY2F0b3JXaW5kb3c6OmNsb3NlV2luZG93
KToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRJbmRpY2F0b3JXaW5kb3c6OnN0YXJ0RmFkZU91dCk6
CisgICAgICAgIFJlbmFtZSBtX3N0YXJ0RmFkZU91dFRpbWVyIHRvIG1fdGVtcG9yYXJ5VGV4dElu
ZGljYXRvclRpbWVyIChhbmQgcmVsYXRlZCkuCisgICAgICAgIFRoaXMgaXMganVzdCBhYm91dCB0
ZW1wb3JhcnktbGlmZXRpbWUgVGV4dEluZGljYXRvcnMsIGxpa2UgdGhlIG9uZXMKKyAgICAgICAg
eW91IGdldCB3aGVuIHRoZSBmaW5kLWluLXBhZ2UgVUkgaXMgaGlkZGVuIGJ1dCB5b3UgaGl0IENt
ZC1HLgorCisgICAgICAgIEFkZCBjbGVhclRleHRJbmRpY2F0b3IsIHdoaWNoIHRha2VzIGEgRGlz
bWlzc2FsQW5pbWF0aW9uLCBwcm92aWRpbmcKKyAgICAgICAgY2xpZW50cyBhbiBvcHBvcnR1bml0
eSB0byBhdm9pZCB0aGUgbm9ybWFsIGZhZGUtb3V0IGFuaW1hdGlvbiwgaWYgaXQKKyAgICAgICAg
d2FzIGdvaW5nIHRvIGhhcHBlbi4KKwogMjAxNS0wNC0yNyAgUGVyIEFybmUgVm9sbGFuICA8cGVh
dm9Ab3V0bG9vay5jb20+CiAKICAgICAgICAgW0N1cmxdIEZhdmljb25zIGxvYWRlZCBmcm9tIGRp
c2MgY2FjaGUgYXJlIGlnbm9yZWQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5kZXggZDk3MDMyZWRkZDMzZjI0
MmRjYWU2ZWEzZjU3M2JhOWQ0MGI0ZGFlNS4uYWJlYjQyNzE5NzIzMTZiMjYyNzZmNjczMTBlZTkz
NTMwNzMwYjQ4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDE1LTA0LTI4
ICBUaW1vdGh5IEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KKworICAgICAgICBb
VGV4dEluZGljYXRvcl0gWWVsbG93IGhpZ2hsaWdodCB0YWtlcyB0b28gbG9uZyB0byBmYWRlIG91
dCBvbiBzY3JvbGwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE0NDM1OAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMTk0NTEwMTE+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJWaWV3L1dlYkFjdGlv
bk1lbnVDb250cm9sbGVyLm1tOgorICAgICAgICAoLVtXZWJBY3Rpb25NZW51Q29udHJvbGxlciBf
c2hvd1RleHRJbmRpY2F0b3JdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYkhUTUxWaWV3Lm1tOgor
ICAgICAgICAoLVtXZWJIVE1MVmlldyBxdWlja0xvb2tXaXRoRXZlbnQ6XSk6CisgICAgICAgICog
V2ViVmlldy9XZWJJbW1lZGlhdGVBY3Rpb25Db250cm9sbGVyLm1tOgorICAgICAgICAoLVtXZWJJ
bW1lZGlhdGVBY3Rpb25Db250cm9sbGVyIF9kZWZhdWx0QW5pbWF0aW9uQ29udHJvbGxlcl0pOgor
ICAgICAgICAoLVtXZWJJbW1lZGlhdGVBY3Rpb25Db250cm9sbGVyIF9hbmltYXRpb25Db250cm9s
bGVyRm9yRGF0YURldGVjdGVkVGV4dF0pOgorICAgICAgICAoLVtXZWJJbW1lZGlhdGVBY3Rpb25D
b250cm9sbGVyIF9hbmltYXRpb25Db250cm9sbGVyRm9yRGF0YURldGVjdGVkTGlua10pOgorICAg
ICAgICBQdWxsIF9jbGVhclRleHRJbmRpY2F0b3JXaXRoQW5pbWF0aW9uIG91dCwgbWFrZSBpdCBh
dm9pZCB1c2luZyBhIGRpc21pc3NhbCBhbmltYXRpb24KKyAgICAgICAgaWYgd2UncmUgY2FsbGVk
IGZyb20gZGlkSGFuZGxlU2Nyb2xsV2hlZWwuCisKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXcu
bW06CisgICAgICAgICgtW1dlYlZpZXcgX2FuaW1hdGlvbkNvbnRyb2xsZXJGb3JEaWN0aW9uYXJ5
TG9va3VwUG9wdXBJbmZvOl0pOgorICAgICAgICAoLVtXZWJWaWV3IF9zZXRUZXh0SW5kaWNhdG9y
Ol0pOgorICAgICAgICAoLVtXZWJWaWV3IF9zZXRUZXh0SW5kaWNhdG9yOndpdGhMaWZldGltZTpd
KToKKyAgICAgICAgKC1bV2ViVmlldyBfY2xlYXJUZXh0SW5kaWNhdG9yXSk6CisgICAgICAgICgt
W1dlYlZpZXcgX3Nob3dEaWN0aW9uYXJ5TG9va3VwUG9wdXA6XSk6CisgICAgICAgICgtW1dlYlZp
ZXcgX2RpY3Rpb25hcnlMb29rdXBQb3BvdmVyV2lsbENsb3NlOl0pOgorICAgICAgICAoLVtXZWJW
aWV3IF9zZXRUZXh0SW5kaWNhdG9yOmZhZGVPdXQ6XSk6IERlbGV0ZWQuCisgICAgICAgICogV2Vi
Vmlldy9XZWJWaWV3SW50ZXJuYWwuaDoKKyAgICAgICAgTWFrZSBfc2V0VGV4dEluZGljYXRvciB0
YWtlIGEgcmVmZXJlbmNlLgorICAgICAgICBBZGQgYSB2YXJpYW50IG9mIF9zZXRUZXh0SW5kaWNh
dG9yIHRoYXQgdGFrZXMgYSBMaWZldGltZS4KKyAgICAgICAgTWFrZSBfY2xlYXJUZXh0SW5kaWNh
dG9yV2l0aEFuaW1hdGlvbiB0YWtlIGEgRGlzbWlzc2FsQW5pbWF0aW9uLgorCiAyMDE1LTA0LTI3
ICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBNYWtlICdlbnVt
IE5hdmlnYXRpb25UeXBlJyBiZSBhbiBlbnVtIGNsYXNzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMTg0M2U3NDA5
ODc2N2M1OGQ2MTI0OWY1ZThiNDNlNWU4OWQwMWU5Yy4uZjQ3NDMyZDI3OTY1YTg5OTUxNjg3M2Y0
MmNjMzI4NjI1NjA5Zjg0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYzIEBACisyMDE1LTA0LTI4
ICBUaW1vdGh5IEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KKworICAgICAgICBb
VGV4dEluZGljYXRvcl0gWWVsbG93IGhpZ2hsaWdodCB0YWtlcyB0b28gbG9uZyB0byBmYWRlIG91
dCBvbiBzY3JvbGwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE0NDM1OAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMTk0NTEwMTE+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLVmlld1ByaXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcu
bW06CisgICAgICAgICgtW1dLVmlldyByZW5ld0dTdGF0ZV0pOgorICAgICAgICAoLVtXS1ZpZXcg
dmlld0RpZE1vdmVUb1dpbmRvd10pOgorICAgICAgICAoLVtXS1ZpZXcgX2RpY3Rpb25hcnlMb29r
dXBQb3BvdmVyV2lsbENsb3NlOl0pOgorICAgICAgICAoLVtXS1ZpZXcgX3NldFRleHRJbmRpY2F0
b3I6XSk6CisgICAgICAgICgtW1dLVmlldyBfc2V0VGV4dEluZGljYXRvcjp3aXRoTGlmZXRpbWU6
XSk6CisgICAgICAgICgtW1dLVmlldyBfY2xlYXJUZXh0SW5kaWNhdG9yV2l0aEFuaW1hdGlvbjpd
KToKKyAgICAgICAgKC1bV0tWaWV3IG1hZ25pZnlXaXRoRXZlbnQ6XSk6CisgICAgICAgICgtW1dL
VmlldyBzbWFydE1hZ25pZnlXaXRoRXZlbnQ6XSk6CisgICAgICAgICgtW1dLVmlldyBzZXRNYWdu
aWZpY2F0aW9uOmNlbnRlcmVkQXRQb2ludDpdKToKKyAgICAgICAgKC1bV0tWaWV3IHNldE1hZ25p
ZmljYXRpb246XSk6CisgICAgICAgICgtW1dLVmlldyBfZGlzbWlzc0NvbnRlbnRSZWxhdGl2ZUNo
aWxkV2luZG93c10pOgorICAgICAgICAoLVtXS1ZpZXcgX2Rpc21pc3NDb250ZW50UmVsYXRpdmVD
aGlsZFdpbmRvd3NXaXRoQW5pbWF0aW9uOl0pOgorICAgICAgICAoLVtXS1ZpZXcgX3NldFRleHRJ
bmRpY2F0b3I6ZmFkZU91dDpdKTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL21h
Yy9XS1ZpZXdJbnRlcm5hbC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9QYWdlQ2xpZW50Lmg6Cisg
ICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2VQcm94eTo6cGFnZURpZFNjcm9sbCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94
eTo6c2V0VGV4dEluZGljYXRvcik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y2xl
YXJUZXh0SW5kaWNhdG9yKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6Cisg
ICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBV
SVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmg6CisgICAgICAgICogVUlQcm9jZXNzL2lv
cy9QYWdlQ2xpZW50SW1wbElPUy5tbToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6
OnNldFRleHRJbmRpY2F0b3IpOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6Y2xl
YXJUZXh0SW5kaWNhdG9yKToKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBs
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbC5tbToKKyAgICAgICAg
KFdlYktpdDo6UGFnZUNsaWVudEltcGw6OnNldFRleHRJbmRpY2F0b3IpOgorICAgICAgICAoV2Vi
S2l0OjpQYWdlQ2xpZW50SW1wbDo6Y2xlYXJUZXh0SW5kaWNhdG9yKToKKyAgICAgICAgKFdlYktp
dDo6UGFnZUNsaWVudEltcGw6OmRpZFBlcmZvcm1EaWN0aW9uYXJ5TG9va3VwKToKKyAgICAgICAg
KFdlYktpdDo6UGFnZUNsaWVudEltcGw6OmRpc21pc3NDb250ZW50UmVsYXRpdmVDaGlsZFdpbmRv
d3MpOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvV0tBY3Rpb25NZW51Q29udHJvbGxlci5tbToK
KyAgICAgICAgKC1bV0tBY3Rpb25NZW51Q29udHJvbGxlciBfZGVmYXVsdE1lbnVJdGVtc0ZvckRh
dGFEZXRlY3RlZFRleHRdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1dLSW1tZWRpYXRlQWN0
aW9uQ29udHJvbGxlci5tbToKKyAgICAgICAgKC1bV0tJbW1lZGlhdGVBY3Rpb25Db250cm9sbGVy
IF9kZWZhdWx0QW5pbWF0aW9uQ29udHJvbGxlcl0pOgorICAgICAgICAoLVtXS0ltbWVkaWF0ZUFj
dGlvbkNvbnRyb2xsZXIgX2FuaW1hdGlvbkNvbnRyb2xsZXJGb3JEYXRhRGV0ZWN0ZWRUZXh0XSk6
CisgICAgICAgICgtW1dLSW1tZWRpYXRlQWN0aW9uQ29udHJvbGxlciBfYW5pbWF0aW9uQ29udHJv
bGxlckZvckRhdGFEZXRlY3RlZExpbmtdKToKKyAgICAgICAgKC1bV0tJbW1lZGlhdGVBY3Rpb25D
b250cm9sbGVyIF9hbmltYXRpb25Db250cm9sbGVyRm9yVGV4dF0pOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViUGFnZS9GaW5kQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OkZpbmRD
b250cm9sbGVyOjp1cGRhdGVGaW5kSW5kaWNhdG9yKToKKyAgICAgICAgTWFrZSBfc2V0VGV4dElu
ZGljYXRvciB0YWtlIGEgcmVmZXJlbmNlLgorICAgICAgICBBZGQgYSB2YXJpYW50IG9mIF9zZXRU
ZXh0SW5kaWNhdG9yIHRoYXQgdGFrZXMgYSBMaWZldGltZS4KKyAgICAgICAgTWFrZSBfY2xlYXJU
ZXh0SW5kaWNhdG9yV2l0aEFuaW1hdGlvbiB0YWtlIGEgRGlzbWlzc2FsQW5pbWF0aW9uLgorICAg
ICAgICBNYWtlIGRpc21pc3NDb250ZW50UmVsYXRpdmVDaGlsZFdpbmRvd3MgdGFrZSBhIHBhcmFt
ZXRlciBpbmRpY2F0aW5nCisgICAgICAgIHdoZXRoZXIgdGhlIGRpc21pc3NhbCBzaG91bGQgaW5j
bHVkZSBhbmltYXRpb24gb3Igbm90IChjdXJyZW50bHkKKyAgICAgICAgb25seSBhcHBsaWVzIHRv
IFRleHRJbmRpY2F0b3IpLgorICAgICAgICBEb24ndCBhbmltYXRlIHdoZW4gZGlzbWlzc2FsIG9j
Y3VycyBiZWNhdXNlIG9mIHNjcm9sbGluZywgem9vbWluZywKKyAgICAgICAgb3Igb3RoZXIgdGhp
bmdzIGluIHdoaWNoIHRoZSBjb250ZW50IHdpbGwgaGF2ZSBjaGFuZ2VkIHNpZ25pZmljYW50bHkK
KyAgICAgICAgdW5kZXJuZWF0aCB0aGUgaW5kaWNhdG9yIGFuZCBzaG91bGRuJ3QgaGF2ZSBhIHNs
b3dseS1mYWRpbmctb3V0IHllbGxvdyBoaWdobGlnaHQuCisKIDIwMTUtMDQtMjcgIEJyYWR5IEVp
ZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgogCiAgICAgICAgIE1ha2UgJ2VudW0gTmF2aWdhdGlv
blR5cGUnIGJlIGFuIGVudW0gY2xhc3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
VGV4dEluZGljYXRvci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9UZXh0SW5kaWNhdG9yLmgKaW5k
ZXggYTM2YTliNjM0ZTg4ZDRhNDAwYjZhYmRmOGVhNWIwZjZkYzFjMjA5Zi4uYzY2NGZiNjJlODIy
NGUxMGE2ZjVjZjVhYTA1NDMwZmM2NDZiN2Y4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9UZXh0SW5kaWNhdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9UZXh0SW5kaWNh
dG9yLmgKQEAgLTU2LDYgKzU2LDE5IEBAIGVudW0gY2xhc3MgVGV4dEluZGljYXRvclByZXNlbnRh
dGlvblRyYW5zaXRpb24gewogICAgIENyb3NzZmFkZQogfTsKIAorZW51bSBjbGFzcyBUZXh0SW5k
aWNhdG9yTGlmZXRpbWUgeworICAgIC8vIFRoZSBUZXh0SW5kaWNhdG9yIHNob3VsZCBpbmRpY2F0
ZSB0aGUgdGV4dCB1bnRpbCBkaXNtaXNzZWQuCisgICAgUGVybWFuZW50LAorCisgICAgLy8gVGhl
IFRleHRJbmRpY2F0b3Igc2hvdWxkIGJyaWVmbHkgaW5kaWNhdGUgdGhlIHRleHQgYW5kIHRoZW4g
YXV0b21hdGljYWxseSBkaXNtaXNzLgorICAgIFRlbXBvcmFyeQorfTsKKworZW51bSBjbGFzcyBU
ZXh0SW5kaWNhdG9yRGlzbWlzc2FsQW5pbWF0aW9uIHsKKyAgICBOb25lLAorICAgIEZhZGVPdXQK
K307CisKIHN0cnVjdCBUZXh0SW5kaWNhdG9yRGF0YSB7CiAgICAgRmxvYXRSZWN0IHNlbGVjdGlv
blJlY3RJblJvb3RWaWV3Q29vcmRpbmF0ZXM7CiAgICAgRmxvYXRSZWN0IHRleHRCb3VuZGluZ1Jl
Y3RJblJvb3RWaWV3Q29vcmRpbmF0ZXM7CkBAIC03OCw4ICs5MSw4IEBAIHB1YmxpYzoKICAgICBG
bG9hdFJlY3QgdGV4dEJvdW5kaW5nUmVjdEluUm9vdFZpZXdDb29yZGluYXRlcygpIGNvbnN0IHsg
cmV0dXJuIG1fZGF0YS50ZXh0Qm91bmRpbmdSZWN0SW5Sb290Vmlld0Nvb3JkaW5hdGVzOyB9CiAg
ICAgY29uc3QgVmVjdG9yPEZsb2F0UmVjdD4mIHRleHRSZWN0c0luQm91bmRpbmdSZWN0Q29vcmRp
bmF0ZXMoKSBjb25zdCB7IHJldHVybiBtX2RhdGEudGV4dFJlY3RzSW5Cb3VuZGluZ1JlY3RDb29y
ZGluYXRlczsgfQogICAgIGZsb2F0IGNvbnRlbnRJbWFnZVNjYWxlRmFjdG9yKCkgY29uc3QgeyBy
ZXR1cm4gbV9kYXRhLmNvbnRlbnRJbWFnZVNjYWxlRmFjdG9yOyB9Ci0gICAgSW1hZ2UgKmNvbnRl
bnRJbWFnZVdpdGhIaWdobGlnaHQoKSBjb25zdCB7IHJldHVybiBtX2RhdGEuY29udGVudEltYWdl
V2l0aEhpZ2hsaWdodC5nZXQoKTsgfQotICAgIEltYWdlICpjb250ZW50SW1hZ2UoKSBjb25zdCB7
IHJldHVybiBtX2RhdGEuY29udGVudEltYWdlLmdldCgpOyB9CisgICAgSW1hZ2UqIGNvbnRlbnRJ
bWFnZVdpdGhIaWdobGlnaHQoKSBjb25zdCB7IHJldHVybiBtX2RhdGEuY29udGVudEltYWdlV2l0
aEhpZ2hsaWdodC5nZXQoKTsgfQorICAgIEltYWdlKiBjb250ZW50SW1hZ2UoKSBjb25zdCB7IHJl
dHVybiBtX2RhdGEuY29udGVudEltYWdlLmdldCgpOyB9CiAKICAgICBUZXh0SW5kaWNhdG9yUHJl
c2VudGF0aW9uVHJhbnNpdGlvbiBwcmVzZW50YXRpb25UcmFuc2l0aW9uKCkgY29uc3QgeyByZXR1
cm4gbV9kYXRhLnByZXNlbnRhdGlvblRyYW5zaXRpb247IH0KICAgICB2b2lkIHNldFByZXNlbnRh
dGlvblRyYW5zaXRpb24oVGV4dEluZGljYXRvclByZXNlbnRhdGlvblRyYW5zaXRpb24gdHJhbnNp
dGlvbikgeyBtX2RhdGEucHJlc2VudGF0aW9uVHJhbnNpdGlvbiA9IHRyYW5zaXRpb247IH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL1RleHRJbmRpY2F0b3JXaW5kb3cuaCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL1RleHRJbmRpY2F0b3JXaW5kb3cuaAppbmRleCA0NzQ0
MTU5MmRiZGUzNzk0ODJmNDllYjM2YjQ0YWFiZDVlZDliMTE1Li45OGY5MjBlNGU1OTViY2I3NDkx
ZWZkZTBhZWZmZWMyMDEyMDM5NDVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL21h
Yy9UZXh0SW5kaWNhdG9yV2luZG93LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvVGV4
dEluZGljYXRvcldpbmRvdy5oCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpZiBQTEFURk9STShNQUMp
CiAKKyNpbXBvcnQgIlRleHRJbmRpY2F0b3IuaCIKICNpbXBvcnQgPHd0Zi9Ob25jb3B5YWJsZS5o
PgogI2ltcG9ydCA8d3RmL1JlZlB0ci5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgpAQCAt
MzgsOCArMzksNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFRleHRJbmRpY2F0
b3I7Ci0KIGNsYXNzIFRleHRJbmRpY2F0b3JXaW5kb3cgewogICAgIFdURl9NQUtFX05PTkNPUFlB
QkxFKFRleHRJbmRpY2F0b3JXaW5kb3cpOwogCkBAIC00Nyw3ICs0Niw4IEBAIHB1YmxpYzoKICAg
ICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBUZXh0SW5kaWNhdG9yV2luZG93KE5TVmlldyAqKTsK
ICAgICBXRUJDT1JFX0VYUE9SVCB+VGV4dEluZGljYXRvcldpbmRvdygpOwogCi0gICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBzZXRUZXh0SW5kaWNhdG9yKFBhc3NSZWZQdHI8VGV4dEluZGljYXRvcj4s
IENHUmVjdCBjb250ZW50UmVjdCwgYm9vbCBmYWRlT3V0KTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIHNldFRleHRJbmRpY2F0b3IoUmVmPFRleHRJbmRpY2F0b3I+LCBDR1JlY3QgY29udGVudFJl
Y3QsIFRleHRJbmRpY2F0b3JMaWZldGltZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjbGVh
clRleHRJbmRpY2F0b3IoVGV4dEluZGljYXRvckRpc21pc3NhbEFuaW1hdGlvbik7CiAKICAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIHNldEFuaW1hdGlvblByb2dyZXNzKGZsb2F0KTsKIApAQCAtNjEs
NyArNjEsOSBAQCBwcml2YXRlOgogICAgIFJldGFpblB0cjxOU1dpbmRvdz4gbV90ZXh0SW5kaWNh
dG9yV2luZG93OwogICAgIFJldGFpblB0cjxXZWJUZXh0SW5kaWNhdG9yVmlldz4gbV90ZXh0SW5k
aWNhdG9yVmlldzsKIAotICAgIFJ1bkxvb3A6OlRpbWVyPFRleHRJbmRpY2F0b3JXaW5kb3c+IG1f
c3RhcnRGYWRlT3V0VGltZXI7CisgICAgUnVuTG9vcDo6VGltZXI8VGV4dEluZGljYXRvcldpbmRv
dz4gbV90ZW1wb3JhcnlUZXh0SW5kaWNhdG9yVGltZXI7CisKKyAgICBib29sIG1fZmFkaW5nT3V0
IHsgZmFsc2UgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9tYWMvVGV4dEluZGljYXRvcldpbmRvdy5tbSBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvbWFjL1RleHRJbmRpY2F0b3JXaW5kb3cubW0KaW5kZXggNzkxMDQ5NGRjNDUxODEy
MjdkY2Q4Zjc1NjNiZTRhZjM5MTEwOWFhNi4uMzdhODg5MWRmZGU3YTIzYWQ2MWUyZWI5OGE0MWM0
Yzk4NDZiNGMzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvVGV4dEluZGlj
YXRvcldpbmRvdy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9UZXh0SW5kaWNhdG9y
V2luZG93Lm1tCkBAIC0zNDgsMTggKzM0OCwxMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFRl
eHRJbmRpY2F0b3JXaW5kb3c6OlRleHRJbmRpY2F0b3JXaW5kb3coTlNWaWV3ICp0YXJnZXRWaWV3
KQogICAgIDogbV90YXJnZXRWaWV3KHRhcmdldFZpZXcpCi0gICAgLCBtX3N0YXJ0RmFkZU91dFRp
bWVyKFJ1bkxvb3A6Om1haW4oKSwgdGhpcywgJlRleHRJbmRpY2F0b3JXaW5kb3c6OnN0YXJ0RmFk
ZU91dCkKKyAgICAsIG1fdGVtcG9yYXJ5VGV4dEluZGljYXRvclRpbWVyKFJ1bkxvb3A6Om1haW4o
KSwgdGhpcywgJlRleHRJbmRpY2F0b3JXaW5kb3c6OnN0YXJ0RmFkZU91dCkKIHsKIH0KIAogVGV4
dEluZGljYXRvcldpbmRvdzo6flRleHRJbmRpY2F0b3JXaW5kb3coKQogewotICAgIGlmIChtX3Rl
eHRJbmRpY2F0b3ItPndhbnRzTWFudWFsQW5pbWF0aW9uKCkgJiYgW21fdGV4dEluZGljYXRvclZp
ZXcgaGFzQ29tcGxldGVkQW5pbWF0aW9uXSkgewotICAgICAgICBzdGFydEZhZGVPdXQoKTsKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGNsb3NlV2luZG93KCk7CisgICAgY2xlYXJUZXh0
SW5kaWNhdG9yKFRleHRJbmRpY2F0b3JEaXNtaXNzYWxBbmltYXRpb246OkZhZGVPdXQpOwogfQog
CiB2b2lkIFRleHRJbmRpY2F0b3JXaW5kb3c6OnNldEFuaW1hdGlvblByb2dyZXNzKGZsb2F0IHBy
b2dyZXNzKQpAQCAtMzcwLDE4ICszNjUsMzAgQEAgdm9pZCBUZXh0SW5kaWNhdG9yV2luZG93Ojpz
ZXRBbmltYXRpb25Qcm9ncmVzcyhmbG9hdCBwcm9ncmVzcykKICAgICBbbV90ZXh0SW5kaWNhdG9y
VmlldyBzZXRBbmltYXRpb25Qcm9ncmVzczpwcm9ncmVzc107CiB9CiAKLXZvaWQgVGV4dEluZGlj
YXRvcldpbmRvdzo6c2V0VGV4dEluZGljYXRvcihQYXNzUmVmUHRyPFRleHRJbmRpY2F0b3I+IHRl
eHRJbmRpY2F0b3IsIENHUmVjdCB0ZXh0Qm91bmRpbmdSZWN0SW5TY3JlZW5Db29yZGluYXRlcywg
Ym9vbCBmYWRlT3V0KQordm9pZCBUZXh0SW5kaWNhdG9yV2luZG93OjpjbGVhclRleHRJbmRpY2F0
b3IoVGV4dEluZGljYXRvckRpc21pc3NhbEFuaW1hdGlvbiBhbmltYXRpb24pCiB7Ci0gICAgaWYg
KG1fdGV4dEluZGljYXRvciA9PSB0ZXh0SW5kaWNhdG9yKQorICAgIFJlZlB0cjxUZXh0SW5kaWNh
dG9yPiB0ZXh0SW5kaWNhdG9yID0gV1RGOjptb3ZlKG1fdGV4dEluZGljYXRvcik7CisKKyAgICBp
ZiAobV9mYWRpbmdPdXQpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fdGV4dEluZGljYXRvciA9
IHRleHRJbmRpY2F0b3I7CisgICAgaWYgKHRleHRJbmRpY2F0b3IgJiYgdGV4dEluZGljYXRvci0+
d2FudHNNYW51YWxBbmltYXRpb24oKSAmJiBbbV90ZXh0SW5kaWNhdG9yVmlldyBoYXNDb21wbGV0
ZWRBbmltYXRpb25dICYmIGFuaW1hdGlvbiA9PSBUZXh0SW5kaWNhdG9yRGlzbWlzc2FsQW5pbWF0
aW9uOjpGYWRlT3V0KSB7CisgICAgICAgIHN0YXJ0RmFkZU91dCgpOworICAgICAgICByZXR1cm47
CisgICAgfQogCiAgICAgY2xvc2VXaW5kb3coKTsKK30KIAotICAgIGlmICghbV90ZXh0SW5kaWNh
dG9yKQordm9pZCBUZXh0SW5kaWNhdG9yV2luZG93OjpzZXRUZXh0SW5kaWNhdG9yKFJlZjxUZXh0
SW5kaWNhdG9yPiB0ZXh0SW5kaWNhdG9yLCBDR1JlY3QgdGV4dEJvdW5kaW5nUmVjdEluU2NyZWVu
Q29vcmRpbmF0ZXMsIFRleHRJbmRpY2F0b3JMaWZldGltZSBsaWZldGltZSkKK3sKKyAgICBpZiAo
bV90ZXh0SW5kaWNhdG9yID09IHRleHRJbmRpY2F0b3IucHRyKCkpCiAgICAgICAgIHJldHVybjsK
IAorICAgIG1fdGV4dEluZGljYXRvciA9IHRleHRJbmRpY2F0b3IucHRyKCk7CisKKyAgICBjbG9z
ZVdpbmRvdygpOworCiAgICAgQ0dGbG9hdCBob3Jpem9udGFsTWFyZ2luID0gZHJvcFNoYWRvd0Js
dXJSYWRpdXMgKiAyICsgaG9yaXpvbnRhbEJvcmRlcjsKICAgICBDR0Zsb2F0IHZlcnRpY2FsTWFy
Z2luID0gZHJvcFNoYWRvd0JsdXJSYWRpdXMgKiAyICsgdmVydGljYWxCb3JkZXI7CiAgICAgCkBA
IC00MTAsOCArNDE3LDggQEAgdm9pZCBUZXh0SW5kaWNhdG9yV2luZG93OjpzZXRUZXh0SW5kaWNh
dG9yKFBhc3NSZWZQdHI8VGV4dEluZGljYXRvcj4gdGV4dEluZGljYXQKICAgICBpZiAobV90ZXh0
SW5kaWNhdG9yLT5wcmVzZW50YXRpb25UcmFuc2l0aW9uKCkgIT0gVGV4dEluZGljYXRvclByZXNl
bnRhdGlvblRyYW5zaXRpb246Ok5vbmUpCiAgICAgICAgIFttX3RleHRJbmRpY2F0b3JWaWV3IHBy
ZXNlbnRdOwogCi0gICAgaWYgKGZhZGVPdXQpCi0gICAgICAgIG1fc3RhcnRGYWRlT3V0VGltZXIu
c3RhcnRPbmVTaG90KHRpbWVCZWZvcmVGYWRlU3RhcnRzKTsKKyAgICBpZiAobGlmZXRpbWUgPT0g
VGV4dEluZGljYXRvckxpZmV0aW1lOjpUZW1wb3JhcnkpCisgICAgICAgIG1fdGVtcG9yYXJ5VGV4
dEluZGljYXRvclRpbWVyLnN0YXJ0T25lU2hvdCh0aW1lQmVmb3JlRmFkZVN0YXJ0cyk7CiB9CiAK
IHZvaWQgVGV4dEluZGljYXRvcldpbmRvdzo6Y2xvc2VXaW5kb3coKQpAQCAtNDE5LDcgKzQyNiwx
MCBAQCB2b2lkIFRleHRJbmRpY2F0b3JXaW5kb3c6OmNsb3NlV2luZG93KCkKICAgICBpZiAoIW1f
dGV4dEluZGljYXRvcldpbmRvdykKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9zdGFydEZhZGVP
dXRUaW1lci5zdG9wKCk7CisgICAgaWYgKG1fZmFkaW5nT3V0KQorICAgICAgICByZXR1cm47CisK
KyAgICBtX3RlbXBvcmFyeVRleHRJbmRpY2F0b3JUaW1lci5zdG9wKCk7CiAKICAgICBbW21fdGV4
dEluZGljYXRvcldpbmRvdyBwYXJlbnRXaW5kb3ddIHJlbW92ZUNoaWxkV2luZG93Om1fdGV4dElu
ZGljYXRvcldpbmRvdy5nZXQoKV07CiAgICAgW21fdGV4dEluZGljYXRvcldpbmRvdyBjbG9zZV07
CkBAIC00MjgsNiArNDM4LDcgQEAgdm9pZCBUZXh0SW5kaWNhdG9yV2luZG93OjpjbG9zZVdpbmRv
dygpCiAKIHZvaWQgVGV4dEluZGljYXRvcldpbmRvdzo6c3RhcnRGYWRlT3V0KCkKIHsKKyAgICBt
X2ZhZGluZ091dCA9IHRydWU7CiAgICAgUmV0YWluUHRyPE5TV2luZG93PiBpbmRpY2F0b3JXaW5k
b3cgPSBtX3RleHRJbmRpY2F0b3JXaW5kb3c7CiAgICAgW21fdGV4dEluZGljYXRvclZpZXcgaGlk
ZVdpdGhDb21wbGV0aW9uSGFuZGxlcjpbaW5kaWNhdG9yV2luZG93XSB7CiAgICAgICAgIFtbaW5k
aWNhdG9yV2luZG93IHBhcmVudFdpbmRvd10gcmVtb3ZlQ2hpbGRXaW5kb3c6aW5kaWNhdG9yV2lu
ZG93LmdldCgpXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViQWN0
aW9uTWVudUNvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkFjdGlv
bk1lbnVDb250cm9sbGVyLm1tCmluZGV4IDM2Y2RjYjI1MmE1MTFiYjJiNmE1ZTg4MWUzY2JmYmY1
ZTQwNTkzZGMuLjg0NDU3ZjAwNDJmMmU5ZDE1ODc1NTE3MTM2ZDc1YzBlMzJkOTJmN2YgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViQWN0aW9uTWVudUNvbnRyb2xsZXIu
bW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJBY3Rpb25NZW51Q29udHJvbGxl
ci5tbQpAQCAtMTIxLDYgKzEyMSw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogLSAodm9p
ZCl3ZWJWaWV3OihXZWJWaWV3ICopd2ViVmlldyBkaWRIYW5kbGVTY3JvbGxXaGVlbDooTlNFdmVu
dCAqKWV2ZW50CiB7CiAgICAgW3NlbGYgX2Rpc21pc3NBY3Rpb25NZW51UG9wb3ZlcnNdOworICAg
IFtzZWxmIF9oaWRlVGV4dEluZGljYXRvcldpdGhBbmltYXRpb246VGV4dEluZGljYXRvckRpc21p
c3NhbEFuaW1hdGlvbjo6Tm9uZV07CiB9CiAKIC0gKHZvaWQpcHJlcGFyZUZvck1lbnU6KE5TTWVu
dSAqKW1lbnUgd2l0aEV2ZW50OihOU0V2ZW50ICopZXZlbnQKQEAgLTEzMyw2ICsxMzQsNyBAQCB1
c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKICAgICAgICAgcmV0dXJuOwogCiAgICAgW3NlbGYgX2Rp
c21pc3NBY3Rpb25NZW51UG9wb3ZlcnNdOworICAgIFtzZWxmIF9oaWRlVGV4dEluZGljYXRvcldp
dGhBbmltYXRpb246VGV4dEluZGljYXRvckRpc21pc3NhbEFuaW1hdGlvbjo6RmFkZU91dF07CiAg
ICAgW2FjdGlvbk1lbnUgcmVtb3ZlQWxsSXRlbXNdOwogCiAgICAgV2ViRWxlbWVudERpY3Rpb25h
cnkgKmhpdFRlc3RSZXN1bHQgPSBbc2VsZiBwZXJmb3JtSGl0VGVzdEF0UG9pbnQ6ZXZlbnQubG9j
YXRpb25JbldpbmRvd107CkBAIC01NDksNyArNTUxLDcgQEAgc3RhdGljIE5TU3RyaW5nICpwYXRo
VG9QaG90b09uRGlzayhOU1N0cmluZyAqc3VnZ2VzdGVkRmlsZW5hbWUpCiAgICAgfSBpbnRlcmFj
dGlvbkNoYW5nZWRIYW5kbGVyOl4oKSB7CiAgICAgICAgIFtzZWxmIF9zaG93VGV4dEluZGljYXRv
cl07CiAgICAgfSBpbnRlcmFjdGlvblN0b3BwZWRIYW5kbGVyOl4oKSB7Ci0gICAgICAgIFtzZWxm
IF9oaWRlVGV4dEluZGljYXRvcl07CisgICAgICAgIFtzZWxmIF9oaWRlVGV4dEluZGljYXRvcldp
dGhBbmltYXRpb246VGV4dEluZGljYXRvckRpc21pc3NhbEFuaW1hdGlvbjo6RmFkZU91dF07CiAg
ICAgfV07CiAgICAgX2N1cnJlbnREZXRlY3RlZERhdGFSYW5nZSA9IGRldGVjdGVkRGF0YVJhbmdl
OwogCkBAIC04MTMsMTcgKzgxNSwxNyBAQCBzdGF0aWMgTlNTdHJpbmcgKnBhdGhUb1Bob3RvT25E
aXNrKE5TU3RyaW5nICpzdWdnZXN0ZWRGaWxlbmFtZSkKICAgICAgICAgcmV0dXJuOwogCiAgICAg
aWYgKF90eXBlID09IFdlYkFjdGlvbk1lbnVEYXRhRGV0ZWN0ZWRJdGVtICYmIF9jdXJyZW50RGV0
ZWN0ZWREYXRhVGV4dEluZGljYXRvcikgewotICAgICAgICBbX3dlYlZpZXcgX3NldFRleHRJbmRp
Y2F0b3I6X2N1cnJlbnREZXRlY3RlZERhdGFUZXh0SW5kaWNhdG9yLmdldCgpIGZhZGVPdXQ6Tk9d
OworICAgICAgICBbX3dlYlZpZXcgX3NldFRleHRJbmRpY2F0b3I6Kl9jdXJyZW50RGV0ZWN0ZWRE
YXRhVGV4dEluZGljYXRvciB3aXRoTGlmZXRpbWU6VGV4dEluZGljYXRvckxpZmV0aW1lOjpQZXJt
YW5lbnRdOwogICAgICAgICBfaXNTaG93aW5nVGV4dEluZGljYXRvciA9IFlFUzsKICAgICB9CiB9
CiAKLS0gKHZvaWQpX2hpZGVUZXh0SW5kaWNhdG9yCistICh2b2lkKV9oaWRlVGV4dEluZGljYXRv
cldpdGhBbmltYXRpb246KFRleHRJbmRpY2F0b3JEaXNtaXNzYWxBbmltYXRpb24pYW5pbWF0aW9u
CiB7CiAgICAgaWYgKCFfaXNTaG93aW5nVGV4dEluZGljYXRvcikKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgW193ZWJWaWV3IF9jbGVhclRleHRJbmRpY2F0b3JdOworICAgIFtfd2ViVmlldyBfY2xl
YXJUZXh0SW5kaWNhdG9yV2l0aEFuaW1hdGlvbjphbmltYXRpb25dOwogICAgIF9pc1Nob3dpbmdU
ZXh0SW5kaWNhdG9yID0gTk87CiB9CiAKQEAgLTgzMiw4ICs4MzQsNiBAQCBzdGF0aWMgTlNTdHJp
bmcgKnBhdGhUb1Bob3RvT25EaXNrKE5TU3RyaW5nICpzdWdnZXN0ZWRGaWxlbmFtZSkKICAgICBE
REFjdGlvbnNNYW5hZ2VyICphY3Rpb25zTWFuYWdlciA9IFtnZXREREFjdGlvbnNNYW5hZ2VyQ2xh
c3MoKSBzaGFyZWRNYW5hZ2VyXTsKICAgICBpZiAoW2FjdGlvbnNNYW5hZ2VyIHJlc3BvbmRzVG9T
ZWxlY3RvcjpAc2VsZWN0b3IocmVxdWVzdEJ1YmJsZUNsb3N1cmVVbmFuY2hvck9uRmFpbHVyZTop
XSkKICAgICAgICAgW2FjdGlvbnNNYW5hZ2VyIHJlcXVlc3RCdWJibGVDbG9zdXJlVW5hbmNob3JP
bkZhaWx1cmU6WUVTXTsKLQotICAgIFtzZWxmIF9oaWRlVGV4dEluZGljYXRvcl07CiB9CiAKIEBl
bmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0g
Yi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCmluZGV4IDI2NmZkZWQ5
NWY0ZmFkYzQwYmYwOTFiYWYzODI1MmNiNTRlZmIwZmQuLjFjNDg4ZjZmNWU0NTA4NGI3ZjA4OWJm
Zjg5YzQxMDBjY2U5NzZjNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcv
V2ViSFRNTFZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJIVE1MVmll
dy5tbQpAQCAtNTY3Niw3ICs1Njc2LDcgQEAgc3RhdGljIEJPT0wgd3JpdGluZ0RpcmVjdGlvbktl
eUJpbmRpbmdzRW5hYmxlZCgpCiAKIC0gKHZvaWQpcXVpY2tMb29rV2l0aEV2ZW50OihOU0V2ZW50
ICopZXZlbnQKIHsKLSAgICBbW3NlbGYgX3dlYlZpZXddIF9zZXRUZXh0SW5kaWNhdG9yOm51bGxw
dHIgZmFkZU91dDpOT107CisgICAgW1tzZWxmIF93ZWJWaWV3XSBfY2xlYXJUZXh0SW5kaWNhdG9y
V2l0aEFuaW1hdGlvbjpUZXh0SW5kaWNhdG9yRGlzbWlzc2FsQW5pbWF0aW9uOjpGYWRlT3V0XTsK
ICAgICBbc3VwZXIgcXVpY2tMb29rV2l0aEV2ZW50OmV2ZW50XTsKIH0KICNlbmRpZiAvLyAhUExB
VEZPUk0oSU9TKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJJbW1l
ZGlhdGVBY3Rpb25Db250cm9sbGVyLm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJJ
bW1lZGlhdGVBY3Rpb25Db250cm9sbGVyLm1tCmluZGV4IDc2ODI1ZTcxY2MwYmEyZmQzMTVkZWNl
NDAwNzIwZmM2OGY2ZjFlYTAuLmI5NGQ5OWUyNmI3Y2YxMmNjMzI2NDM2ZDNiZWE3YjgzYzQ1ODhi
NjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViSW1tZWRpYXRlQWN0
aW9uQ29udHJvbGxlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkltbWVk
aWF0ZUFjdGlvbkNvbnRyb2xsZXIubW0KQEAgLTk3LDEyICs5NywxNCBAQCB1c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZTsKIC0gKHZvaWQpd2ViVmlldzooV2ViVmlldyAqKXdlYlZpZXcgd2lsbEhhbmRs
ZU1vdXNlRG93bjooTlNFdmVudCAqKWV2ZW50CiB7CiAgICAgW3NlbGYgX2NsZWFySW1tZWRpYXRl
QWN0aW9uU3RhdGVdOworICAgIFtfd2ViVmlldyBfY2xlYXJUZXh0SW5kaWNhdG9yV2l0aEFuaW1h
dGlvbjpUZXh0SW5kaWNhdG9yRGlzbWlzc2FsQW5pbWF0aW9uOjpGYWRlT3V0XTsKIH0KIAogLSAo
dm9pZCl3ZWJWaWV3OihXZWJWaWV3ICopd2ViVmlldyBkaWRIYW5kbGVTY3JvbGxXaGVlbDooTlNF
dmVudCAqKWV2ZW50CiB7CiAgICAgW19jdXJyZW50UUxQcmV2aWV3TWVudUl0ZW0gY2xvc2VdOwog
ICAgIFtzZWxmIF9jbGVhckltbWVkaWF0ZUFjdGlvblN0YXRlXTsKKyAgICBbX3dlYlZpZXcgX2Ns
ZWFyVGV4dEluZGljYXRvcldpdGhBbmltYXRpb246VGV4dEluZGljYXRvckRpc21pc3NhbEFuaW1h
dGlvbjo6Tm9uZV07CiB9CiAKIC0gKE5TSW1tZWRpYXRlQWN0aW9uR2VzdHVyZVJlY29nbml6ZXIg
KilpbW1lZGlhdGVBY3Rpb25SZWNvZ25pemVyCkBAIC0xMTcsMTEgKzExOSwxMSBAQCB1c2luZyBu
YW1lc3BhY2UgV2ViQ29yZTsKICAgICBbX2ltbWVkaWF0ZUFjdGlvblJlY29nbml6ZXIgc2V0RW5h
YmxlZDpZRVNdOwogCiAgICAgW3NlbGYgX2NsZWFySW1tZWRpYXRlQWN0aW9uU3RhdGVdOworICAg
IFtfd2ViVmlldyBfY2xlYXJUZXh0SW5kaWNhdG9yV2l0aEFuaW1hdGlvbjpUZXh0SW5kaWNhdG9y
RGlzbWlzc2FsQW5pbWF0aW9uOjpGYWRlT3V0XTsKIH0KIAogLSAodm9pZClfY2xlYXJJbW1lZGlh
dGVBY3Rpb25TdGF0ZQogewotICAgIFtfd2ViVmlldyBfY2xlYXJUZXh0SW5kaWNhdG9yXTsKICAg
ICBEREFjdGlvbnNNYW5hZ2VyICphY3Rpb25zTWFuYWdlciA9IFtnZXREREFjdGlvbnNNYW5hZ2Vy
Q2xhc3MoKSBzaGFyZWRNYW5hZ2VyXTsKICAgICBpZiAoW2FjdGlvbnNNYW5hZ2VyIHJlc3BvbmRz
VG9TZWxlY3RvcjpAc2VsZWN0b3IocmVxdWVzdEJ1YmJsZUNsb3N1cmVVbmFuY2hvck9uRmFpbHVy
ZTopXSkKICAgICAgICAgW2FjdGlvbnNNYW5hZ2VyIHJlcXVlc3RCdWJibGVDbG9zdXJlVW5hbmNo
b3JPbkZhaWx1cmU6WUVTXTsKQEAgLTE5Niw2ICsxOTgsNyBAQCB1c2luZyBuYW1lc3BhY2UgV2Vi
Q29yZTsKIAogICAgIFtfd2ViVmlldyBfc2V0VGV4dEluZGljYXRvckFuaW1hdGlvblByb2dyZXNz
OjBdOwogICAgIFtzZWxmIF9jbGVhckltbWVkaWF0ZUFjdGlvblN0YXRlXTsKKyAgICBbX3dlYlZp
ZXcgX2NsZWFyVGV4dEluZGljYXRvcldpdGhBbmltYXRpb246VGV4dEluZGljYXRvckRpc21pc3Nh
bEFuaW1hdGlvbjo6Tm9uZV07CiAgICAgW193ZWJWaWV3IF9zZXRNYWludGFpbnNJbmFjdGl2ZVNl
bGVjdGlvbjpOT107CiB9CiAKQEAgLTIzMCw3ICsyMzMsNyBAQCB1c2luZyBuYW1lc3BhY2UgV2Vi
Q29yZTsKIAogICAgICAgICAgICAgUmVmUHRyPFJhbmdlPiBsaW5rUmFuZ2UgPSByYW5nZU9mQ29u
dGVudHMoKl9oaXRUZXN0UmVzdWx0LlVSTEVsZW1lbnQoKSk7CiAgICAgICAgICAgICBSZWZQdHI8
VGV4dEluZGljYXRvcj4gaW5kaWNhdG9yID0gVGV4dEluZGljYXRvcjo6Y3JlYXRlV2l0aFJhbmdl
KCpsaW5rUmFuZ2UsIFRleHRJbmRpY2F0b3JQcmVzZW50YXRpb25UcmFuc2l0aW9uOjpGYWRlSW4p
OwotICAgICAgICAgICAgW193ZWJWaWV3IF9zZXRUZXh0SW5kaWNhdG9yOmluZGljYXRvci5nZXQo
KSBmYWRlT3V0Ok5PXTsKKyAgICAgICAgICAgIFtfd2ViVmlldyBfc2V0VGV4dEluZGljYXRvcjoq
aW5kaWNhdG9yIHdpdGhMaWZldGltZTpUZXh0SW5kaWNhdG9yTGlmZXRpbWU6OlBlcm1hbmVudF07
CiAKICAgICAgICAgICAgIFFMUHJldmlld01lbnVJdGVtICppdGVtID0gW05TTWVudUl0ZW0gc3Rh
bmRhcmRRdWlja0xvb2tNZW51SXRlbV07CiAgICAgICAgICAgICBpdGVtLnByZXZpZXdTdHlsZSA9
IFFMUHJldmlld1N0eWxlUG9wb3ZlcjsKQEAgLTMwMyw2ICszMDYsNyBAQCB1c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZTsKIC0gKHZvaWQpbWVudUl0ZW1EaWRDbG9zZTooTlNNZW51SXRlbSAqKW1lbnVJ
dGVtCiB7CiAgICAgW3NlbGYgX2NsZWFySW1tZWRpYXRlQWN0aW9uU3RhdGVdOworICAgIFtfd2Vi
VmlldyBfY2xlYXJUZXh0SW5kaWNhdG9yV2l0aEFuaW1hdGlvbjpUZXh0SW5kaWNhdG9yRGlzbWlz
c2FsQW5pbWF0aW9uOjpGYWRlT3V0XTsKIH0KIAogc3RhdGljIEludFJlY3QgZWxlbWVudEJvdW5k
aW5nQm94SW5XaW5kb3dDb29yZGluYXRlc0Zyb21Ob2RlKE5vZGUqIG5vZGUpCkBAIC0zODMsOSAr
Mzg3LDkgQEAgc3RhdGljIEludFJlY3QgZWxlbWVudEJvdW5kaW5nQm94SW5XaW5kb3dDb29yZGlu
YXRlc0Zyb21Ob2RlKE5vZGUqIG5vZGUpCiAKICAgICBfY3VycmVudEFjdGlvbkNvbnRleHQgPSBb
YWN0aW9uQ29udGV4dCBjb250ZXh0Rm9yVmlldzpfd2ViVmlldyBhbHRNb2RlOllFUyBpbnRlcmFj
dGlvblN0YXJ0ZWRIYW5kbGVyOl4oKSB7CiAgICAgfSBpbnRlcmFjdGlvbkNoYW5nZWRIYW5kbGVy
Ol4oKSB7Ci0gICAgICAgIFtfd2ViVmlldyBfc2V0VGV4dEluZGljYXRvcjpkZXRlY3RlZERhdGFU
ZXh0SW5kaWNhdG9yLmdldCgpIGZhZGVPdXQ6Tk9dOworICAgICAgICBbX3dlYlZpZXcgX3NldFRl
eHRJbmRpY2F0b3I6KmRldGVjdGVkRGF0YVRleHRJbmRpY2F0b3Igd2l0aExpZmV0aW1lOlRleHRJ
bmRpY2F0b3JMaWZldGltZTo6UGVybWFuZW50XTsKICAgICB9IGludGVyYWN0aW9uU3RvcHBlZEhh
bmRsZXI6XigpIHsKLSAgICAgICAgW193ZWJWaWV3IF9jbGVhclRleHRJbmRpY2F0b3JdOworICAg
ICAgICBbX3dlYlZpZXcgX2NsZWFyVGV4dEluZGljYXRvcldpdGhBbmltYXRpb246VGV4dEluZGlj
YXRvckRpc21pc3NhbEFuaW1hdGlvbjo6RmFkZU91dF07CiAgICAgfV07CiAKICAgICBbX2N1cnJl
bnRBY3Rpb25Db250ZXh0IHNldEhpZ2hsaWdodEZyYW1lOltfd2ViVmlldy53aW5kb3cgY29udmVy
dFJlY3RUb1NjcmVlbjpkZXRlY3RlZERhdGFCb3VuZGluZ0JveF1dOwpAQCAtNDE0LDkgKzQxOCw5
IEBAIHN0YXRpYyBJbnRSZWN0IGVsZW1lbnRCb3VuZGluZ0JveEluV2luZG93Q29vcmRpbmF0ZXNG
cm9tTm9kZShOb2RlKiBub2RlKQogCiAgICAgX2N1cnJlbnRBY3Rpb25Db250ZXh0ID0gW2FjdGlv
bkNvbnRleHQgY29udGV4dEZvclZpZXc6X3dlYlZpZXcgYWx0TW9kZTpZRVMgaW50ZXJhY3Rpb25T
dGFydGVkSGFuZGxlcjpeKCkgewogICAgIH0gaW50ZXJhY3Rpb25DaGFuZ2VkSGFuZGxlcjpeKCkg
ewotICAgICAgICBbX3dlYlZpZXcgX3NldFRleHRJbmRpY2F0b3I6aW5kaWNhdG9yLmdldCgpIGZh
ZGVPdXQ6Tk9dOworICAgICAgICBbX3dlYlZpZXcgX3NldFRleHRJbmRpY2F0b3I6KmluZGljYXRv
ciB3aXRoTGlmZXRpbWU6VGV4dEluZGljYXRvckxpZmV0aW1lOjpQZXJtYW5lbnRdOwogICAgIH0g
aW50ZXJhY3Rpb25TdG9wcGVkSGFuZGxlcjpeKCkgewotICAgICAgICBbX3dlYlZpZXcgX2NsZWFy
VGV4dEluZGljYXRvcl07CisgICAgICAgIFtfd2ViVmlldyBfY2xlYXJUZXh0SW5kaWNhdG9yV2l0
aEFuaW1hdGlvbjpUZXh0SW5kaWNhdG9yRGlzbWlzc2FsQW5pbWF0aW9uOjpGYWRlT3V0XTsKICAg
ICB9XTsKIAogICAgIFtfY3VycmVudEFjdGlvbkNvbnRleHQgc2V0SGlnaGxpZ2h0RnJhbWU6W193
ZWJWaWV3LndpbmRvdyBjb252ZXJ0UmVjdFRvU2NyZWVuOmVsZW1lbnRCb3VuZGluZ0JveEluV2lu
ZG93Q29vcmRpbmF0ZXNGcm9tTm9kZShfaGl0VGVzdFJlc3VsdC5VUkxFbGVtZW50KCkpXV07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0gYi9Tb3VyY2Uv
V2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KaW5kZXggZmVjNjE5ZjZlZDY4MDZmMDk0MDk5
NWU5YTJmZjcxZTUyMmU1Mjc3OS4uN2MwZjFiOTIyZTQ2Mzg4MTA2NGNiYWQ5MDQ3N2YzZmNjYjZh
NjcxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQpAQCAtODU5MSw3ICs4NTkx
LDcgQEAgYm9vbCBMYXllckZsdXNoQ29udHJvbGxlcjo6Zmx1c2hMYXllcnMoKQogICAgICAgICBp
ZiAoIW11dGFibGVPcHRpb25zKQogICAgICAgICAgICAgbXV0YWJsZU9wdGlvbnMgPSBhZG9wdE5T
KFtbTlNNdXRhYmxlRGljdGlvbmFyeSBhbGxvY10gaW5pdF0pOwogICAgICAgICBbbXV0YWJsZU9w
dGlvbnMgc2V0T2JqZWN0OkBZRVMgZm9yS2V5OmdldExVVGVybU9wdGlvbkRpc2FibGVTZWFyY2hU
ZXJtSW5kaWNhdG9yKCldOwotICAgICAgICBbc2VsZiBfc2V0VGV4dEluZGljYXRvcjpkaWN0aW9u
YXJ5UG9wdXBJbmZvLnRleHRJbmRpY2F0b3IuZ2V0KCkgZmFkZU91dDpOT107CisgICAgICAgIFtz
ZWxmIF9zZXRUZXh0SW5kaWNhdG9yOipkaWN0aW9uYXJ5UG9wdXBJbmZvLnRleHRJbmRpY2F0b3Ig
d2l0aExpZmV0aW1lOlRleHRJbmRpY2F0b3JMaWZldGltZTo6UGVybWFuZW50XTsKICAgICAgICAg
cmV0dXJuIFtnZXRMVUxvb2t1cERlZmluaXRpb25Nb2R1bGVDbGFzcygpIGxvb2t1cEFuaW1hdGlv
bkNvbnRyb2xsZXJGb3JUZXJtOmRpY3Rpb25hcnlQb3B1cEluZm8uYXR0cmlidXRlZFN0cmluZy5n
ZXQoKSBhdExvY2F0aW9uOnRleHRCYXNlbGluZU9yaWdpbiBvcHRpb25zOm11dGFibGVPcHRpb25z
LmdldCgpXTsKICAgICB9CiAKQEAgLTg1OTksMjQgKzg1OTksMjYgQEAgYm9vbCBMYXllckZsdXNo
Q29udHJvbGxlcjo6Zmx1c2hMYXllcnMoKQogfQogI2VuZGlmIC8vIF9fTUFDX09TX1hfVkVSU0lP
Tl9NSU5fUkVRVUlSRUQgPj0gMTAxMDAwCiAKLS0gKHZvaWQpX3NldFRleHRJbmRpY2F0b3I6KFRl
eHRJbmRpY2F0b3IgKil0ZXh0SW5kaWNhdG9yIGZhZGVPdXQ6KEJPT0wpZmFkZU91dAorLSAodm9p
ZClfc2V0VGV4dEluZGljYXRvcjooVGV4dEluZGljYXRvciYpdGV4dEluZGljYXRvcgogewotICAg
IGlmICghdGV4dEluZGljYXRvcikgewotICAgICAgICBfcHJpdmF0ZS0+dGV4dEluZGljYXRvcldp
bmRvdyA9IG51bGxwdHI7Ci0gICAgICAgIHJldHVybjsKLSAgICB9CisgICAgW3NlbGYgX3NldFRl
eHRJbmRpY2F0b3I6dGV4dEluZGljYXRvciB3aXRoTGlmZXRpbWU6VGV4dEluZGljYXRvckxpZmV0
aW1lOjpQZXJtYW5lbnRdOworfQogCistICh2b2lkKV9zZXRUZXh0SW5kaWNhdG9yOihUZXh0SW5k
aWNhdG9yJil0ZXh0SW5kaWNhdG9yIHdpdGhMaWZldGltZTooVGV4dEluZGljYXRvckxpZmV0aW1l
KWxpZmV0aW1lCit7CiAgICAgaWYgKCFfcHJpdmF0ZS0+dGV4dEluZGljYXRvcldpbmRvdykKICAg
ICAgICAgX3ByaXZhdGUtPnRleHRJbmRpY2F0b3JXaW5kb3cgPSBzdGQ6Om1ha2VfdW5pcXVlPFRl
eHRJbmRpY2F0b3JXaW5kb3c+KHNlbGYpOwogCi0gICAgTlNSZWN0IHRleHRCb3VuZGluZ1JlY3RJ
bldpbmRvd0Nvb3JkaW5hdGVzID0gW3NlbGYgY29udmVydFJlY3Q6W3NlbGYgX2NvbnZlcnRSZWN0
RnJvbVJvb3RWaWV3OnRleHRJbmRpY2F0b3ItPnRleHRCb3VuZGluZ1JlY3RJblJvb3RWaWV3Q29v
cmRpbmF0ZXMoKV0gdG9WaWV3Om5pbF07CisgICAgTlNSZWN0IHRleHRCb3VuZGluZ1JlY3RJbldp
bmRvd0Nvb3JkaW5hdGVzID0gW3NlbGYgY29udmVydFJlY3Q6W3NlbGYgX2NvbnZlcnRSZWN0RnJv
bVJvb3RWaWV3OnRleHRJbmRpY2F0b3IudGV4dEJvdW5kaW5nUmVjdEluUm9vdFZpZXdDb29yZGlu
YXRlcygpXSB0b1ZpZXc6bmlsXTsKICAgICBOU1JlY3QgdGV4dEJvdW5kaW5nUmVjdEluU2NyZWVu
Q29vcmRpbmF0ZXMgPSBbc2VsZi53aW5kb3cgY29udmVydFJlY3RUb1NjcmVlbjp0ZXh0Qm91bmRp
bmdSZWN0SW5XaW5kb3dDb29yZGluYXRlc107Ci0gICAgX3ByaXZhdGUtPnRleHRJbmRpY2F0b3JX
aW5kb3ctPnNldFRleHRJbmRpY2F0b3IodGV4dEluZGljYXRvciwgTlNSZWN0VG9DR1JlY3QodGV4
dEJvdW5kaW5nUmVjdEluU2NyZWVuQ29vcmRpbmF0ZXMpLCBmYWRlT3V0KTsKKyAgICBfcHJpdmF0
ZS0+dGV4dEluZGljYXRvcldpbmRvdy0+c2V0VGV4dEluZGljYXRvcih0ZXh0SW5kaWNhdG9yLCBO
U1JlY3RUb0NHUmVjdCh0ZXh0Qm91bmRpbmdSZWN0SW5TY3JlZW5Db29yZGluYXRlcyksIGxpZmV0
aW1lKTsKIH0KIAotLSAodm9pZClfY2xlYXJUZXh0SW5kaWNhdG9yCistICh2b2lkKV9jbGVhclRl
eHRJbmRpY2F0b3JXaXRoQW5pbWF0aW9uOihUZXh0SW5kaWNhdG9yRGlzbWlzc2FsQW5pbWF0aW9u
KWFuaW1hdGlvbgogewotICAgIFtzZWxmIF9zZXRUZXh0SW5kaWNhdG9yOm51bGxwdHIgZmFkZU91
dDpOT107CisgICAgaWYgKF9wcml2YXRlLT50ZXh0SW5kaWNhdG9yV2luZG93KQorICAgICAgICBf
cHJpdmF0ZS0+dGV4dEluZGljYXRvcldpbmRvdy0+Y2xlYXJUZXh0SW5kaWNhdG9yKFRleHRJbmRp
Y2F0b3JEaXNtaXNzYWxBbmltYXRpb246OkZhZGVPdXQpOworICAgIF9wcml2YXRlLT50ZXh0SW5k
aWNhdG9yV2luZG93ID0gbnVsbHB0cjsKIH0KIAogLSAodm9pZClfc2V0VGV4dEluZGljYXRvckFu
aW1hdGlvblByb2dyZXNzOihmbG9hdClwcm9ncmVzcwpAQCAtODY0NSw3ICs4NjQ3LDcgQEAgYm9v
bCBMYXllckZsdXNoQ29udHJvbGxlcjo6Zmx1c2hMYXllcnMoKQogICAgICAgICBpZiAoIW11dGFi
bGVPcHRpb25zKQogICAgICAgICAgICAgbXV0YWJsZU9wdGlvbnMgPSBhZG9wdE5TKFtbTlNNdXRh
YmxlRGljdGlvbmFyeSBhbGxvY10gaW5pdF0pOwogICAgICAgICBbbXV0YWJsZU9wdGlvbnMgc2V0
T2JqZWN0OkBZRVMgZm9yS2V5OmdldExVVGVybU9wdGlvbkRpc2FibGVTZWFyY2hUZXJtSW5kaWNh
dG9yKCldOwotICAgICAgICBbc2VsZiBfc2V0VGV4dEluZGljYXRvcjpkaWN0aW9uYXJ5UG9wdXBJ
bmZvLnRleHRJbmRpY2F0b3IuZ2V0KCkgZmFkZU91dDpOT107CisgICAgICAgIFtzZWxmIF9zZXRU
ZXh0SW5kaWNhdG9yOipkaWN0aW9uYXJ5UG9wdXBJbmZvLnRleHRJbmRpY2F0b3Igd2l0aExpZmV0
aW1lOlRleHRJbmRpY2F0b3JMaWZldGltZTo6UGVybWFuZW50XTsKICAgICAgICAgW2dldExVTG9v
a3VwRGVmaW5pdGlvbk1vZHVsZUNsYXNzKCkgc2hvd0RlZmluaXRpb25Gb3JUZXJtOmRpY3Rpb25h
cnlQb3B1cEluZm8uYXR0cmlidXRlZFN0cmluZy5nZXQoKSBhdExvY2F0aW9uOnRleHRCYXNlbGlu
ZU9yaWdpbiBvcHRpb25zOm11dGFibGVPcHRpb25zLmdldCgpXTsKICAgICB9IGVsc2UKICAgICAg
ICAgW2dldExVTG9va3VwRGVmaW5pdGlvbk1vZHVsZUNsYXNzKCkgc2hvd0RlZmluaXRpb25Gb3JU
ZXJtOmRpY3Rpb25hcnlQb3B1cEluZm8uYXR0cmlidXRlZFN0cmluZy5nZXQoKSBhdExvY2F0aW9u
OnRleHRCYXNlbGluZU9yaWdpbiBvcHRpb25zOmRpY3Rpb25hcnlQb3B1cEluZm8ub3B0aW9ucy5n
ZXQoKV07CkBAIC04NjUzLDcgKzg2NTUsNyBAQCBib29sIExheWVyRmx1c2hDb250cm9sbGVyOjpm
bHVzaExheWVycygpCiAKIC0gKHZvaWQpX2RpY3Rpb25hcnlMb29rdXBQb3BvdmVyV2lsbENsb3Nl
OihOU05vdGlmaWNhdGlvbiAqKW5vdGlmaWNhdGlvbgogewotICAgIFtzZWxmIF9zZXRUZXh0SW5k
aWNhdG9yOm51bGxwdHIgZmFkZU91dDpOT107CisgICAgW3NlbGYgX2NsZWFyVGV4dEluZGljYXRv
cldpdGhBbmltYXRpb246VGV4dEluZGljYXRvckRpc21pc3NhbEFuaW1hdGlvbjo6RmFkZU91dF07
CiB9CiAjZW5kaWYgLy8gUExBVEZPUk0oTUFDKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L21hYy9XZWJWaWV3L1dlYlZpZXdJbnRlcm5hbC5oIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmll
dy9XZWJWaWV3SW50ZXJuYWwuaAppbmRleCA1Mzc0MjAwMGM4ZjcwOWRlZTcxYmI0NDNkN2RjYmY2
NTkwMTY5OTliLi45ODBiMGJkMzg0MjJlYjU3ZWMwMmUwMmE3MTFiOTFlOTI4YzNmMThlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdJbnRlcm5hbC5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld0ludGVybmFsLmgKQEAgLTQwLDYgKzQw
LDcgQEAKICNpbXBvcnQgPFdlYkNvcmUvSFRNTE1lZGlhRWxlbWVudC5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9MYXlvdXRNaWxlc3RvbmVzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RleHRBbHRlcm5hdGl2
ZVdpdGhSYW5nZS5oPgorI2ltcG9ydCA8V2ViQ29yZS9UZXh0SW5kaWNhdG9yV2luZG93Lmg+CiAj
aW1wb3J0IDxXZWJDb3JlL1dlYkNvcmVLZXlib2FyZFVJTW9kZS5oPgogI2ltcG9ydCA8ZnVuY3Rp
b25hbD4KICNpbXBvcnQgPHd0Zi9Gb3J3YXJkLmg+CkBAIC0yNTgsOCArMjU5LDkgQEAgT0JKQ19D
TEFTUyBOU1RleHRBbHRlcm5hdGl2ZXM7CiAtICh2b2lkKV9zZXRNYWludGFpbnNJbmFjdGl2ZVNl
bGVjdGlvbjooQk9PTClzaG91bGRNYWludGFpbkluYWN0aXZlU2VsZWN0aW9uOwogCiAjaWYgUExB
VEZPUk0oTUFDKSAmJiBkZWZpbmVkKF9fY3BsdXNwbHVzKQotLSAodm9pZClfc2V0VGV4dEluZGlj
YXRvcjooV2ViQ29yZTo6VGV4dEluZGljYXRvciopdGV4dEluZGljYXRvciBmYWRlT3V0OihCT09M
KWZhZGVPdXQ7Ci0tICh2b2lkKV9jbGVhclRleHRJbmRpY2F0b3I7CistICh2b2lkKV9zZXRUZXh0
SW5kaWNhdG9yOihXZWJDb3JlOjpUZXh0SW5kaWNhdG9yJil0ZXh0SW5kaWNhdG9yOworLSAodm9p
ZClfc2V0VGV4dEluZGljYXRvcjooV2ViQ29yZTo6VGV4dEluZGljYXRvciYpdGV4dEluZGljYXRv
ciB3aXRoTGlmZXRpbWU6KFdlYkNvcmU6OlRleHRJbmRpY2F0b3JMaWZldGltZSlsaWZldGltZTsK
Ky0gKHZvaWQpX2NsZWFyVGV4dEluZGljYXRvcldpdGhBbmltYXRpb246KFdlYkNvcmU6OlRleHRJ
bmRpY2F0b3JEaXNtaXNzYWxBbmltYXRpb24pYW5pbWF0aW9uOwogLSAodm9pZClfc2V0VGV4dElu
ZGljYXRvckFuaW1hdGlvblByb2dyZXNzOihmbG9hdClwcm9ncmVzczsKIC0gKHZvaWQpX3Nob3dE
aWN0aW9uYXJ5TG9va3VwUG9wdXA6KGNvbnN0IERpY3Rpb25hcnlQb3B1cEluZm8mKWRpY3Rpb25h
cnlQb3B1cEluZm87CiAjaWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEw
MDAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tWaWV3
UHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1ZpZXdQcml2
YXRlLmgKaW5kZXggODMzY2UzZjAwZmE0YjRjMzI5MWExMDc4ZmI5NGQ3ZjVmMzkyZDI1ZS4uM2My
ZGRjN2RlYmIxYzE1Mjc0NTc1MWVjOWQyZWZhNzFmZjJkZmFjZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1ZpZXdQcml2YXRlLmgKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1ZpZXdQcml2YXRlLmgKQEAgLTE0OSw2ICsx
NDksNyBAQAogLSAodm9pZClfY29tcGxldGVJbW1lZGlhdGVBY3Rpb25BbmltYXRpb247CiAKIC0g
KHZvaWQpX2Rpc21pc3NDb250ZW50UmVsYXRpdmVDaGlsZFdpbmRvd3M7CistICh2b2lkKV9kaXNt
aXNzQ29udGVudFJlbGF0aXZlQ2hpbGRXaW5kb3dzV2l0aEFuaW1hdGlvbjooQk9PTCl3aXRoQW5p
bWF0aW9uOwogCiAtICh2b2lkKV9kaWRDaGFuZ2VDb250ZW50U2l6ZTooTlNTaXplKW5ld1NpemU7
CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dL
Vmlldy5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbQppbmRl
eCA5NzFiYWY5MGVjNDY3NTM3ZWM2N2JiYWJmOWU4MTQ0MDY5ZDdlOTUxLi41NzVlNTFlNDIzZDZh
MzE0OTg5OWQwOWFiNzJhZDk2ZTEwNDE2MTZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9tYWMvV0tWaWV3Lm1tCkBAIC02MDIsNyArNjAyLDcgQEAgc3RydWN0IFdLVmlld0ludGVy
cHJldEtleUV2ZW50c1BhcmFtZXRlcnMgewogLSAodm9pZClyZW5ld0dTdGF0ZQogewogICAgIGlm
IChfZGF0YS0+X3RleHRJbmRpY2F0b3JXaW5kb3cpCi0gICAgICAgIFtzZWxmIF9kaXNtaXNzQ29u
dGVudFJlbGF0aXZlQ2hpbGRXaW5kb3dzXTsKKyAgICAgICAgW3NlbGYgX2Rpc21pc3NDb250ZW50
UmVsYXRpdmVDaGlsZFdpbmRvd3NXaXRoQW5pbWF0aW9uOk5PXTsKIAogICAgIC8vIFVwZGF0ZSB0
aGUgdmlldyBmcmFtZS4KICAgICBpZiAoW3NlbGYgd2luZG93XSkKQEAgLTI3NjAsNyArMjc2MCw3
IEBAIHN0YXRpYyB2b2lkKiBrZXlWYWx1ZU9ic2VydmluZ0NvbnRleHQgPSAma2V5VmFsdWVPYnNl
cnZpbmdDb250ZXh0OwogICAgICAgICBbTlNFdmVudCByZW1vdmVNb25pdG9yOl9kYXRhLT5fZmxh
Z3NDaGFuZ2VkRXZlbnRNb25pdG9yXTsKICAgICAgICAgX2RhdGEtPl9mbGFnc0NoYW5nZWRFdmVu
dE1vbml0b3IgPSBuaWw7CiAKLSAgICAgICAgW3NlbGYgX2Rpc21pc3NDb250ZW50UmVsYXRpdmVD
aGlsZFdpbmRvd3NdOworICAgICAgICBbc2VsZiBfZGlzbWlzc0NvbnRlbnRSZWxhdGl2ZUNoaWxk
V2luZG93c1dpdGhBbmltYXRpb246Tk9dOwogCiAjaWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9S
RVFVSVJFRCA+PSAxMDEwMDAKICAgICAgICAgaWYgKF9kYXRhLT5faW1tZWRpYXRlQWN0aW9uR2Vz
dHVyZVJlY29nbml6ZXIpCkBAIC0yODk2LDcgKzI4OTYsNyBAQCBzdGF0aWMgdm9pZCoga2V5VmFs
dWVPYnNlcnZpbmdDb250ZXh0ID0gJmtleVZhbHVlT2JzZXJ2aW5nQ29udGV4dDsKIAogLSAodm9p
ZClfZGljdGlvbmFyeUxvb2t1cFBvcG92ZXJXaWxsQ2xvc2U6KE5TTm90aWZpY2F0aW9uICopbm90
aWZpY2F0aW9uCiB7Ci0gICAgW3NlbGYgX3NldFRleHRJbmRpY2F0b3I6bmlsIGZhZGVPdXQ6Tk9d
OworICAgIFtzZWxmIF9jbGVhclRleHRJbmRpY2F0b3JXaXRoQW5pbWF0aW9uOlRleHRJbmRpY2F0
b3JEaXNtaXNzYWxBbmltYXRpb246Ok5vbmVdOwogfQogCiAtICh2b2lkKV9hY2Nlc3NpYmlsaXR5
UmVnaXN0ZXJVSVByb2Nlc3NUb2tlbnMKQEAgLTMyODIsMTggKzMyODIsMjUgQEAgc3RhdGljIHZv
aWQqIGtleVZhbHVlT2JzZXJ2aW5nQ29udGV4dCA9ICZrZXlWYWx1ZU9ic2VydmluZ0NvbnRleHQ7
CiAgICAgfQogfQogCi0tICh2b2lkKV9zZXRUZXh0SW5kaWNhdG9yOihQYXNzUmVmUHRyPFRleHRJ
bmRpY2F0b3I+KXRleHRJbmRpY2F0b3IgZmFkZU91dDooQk9PTClmYWRlT3V0CistICh2b2lkKV9z
ZXRUZXh0SW5kaWNhdG9yOihUZXh0SW5kaWNhdG9yJil0ZXh0SW5kaWNhdG9yCiB7Ci0gICAgaWYg
KCF0ZXh0SW5kaWNhdG9yKSB7Ci0gICAgICAgIF9kYXRhLT5fdGV4dEluZGljYXRvcldpbmRvdyA9
IG51bGxwdHI7Ci0gICAgICAgIHJldHVybjsKLSAgICB9CisgICAgW3NlbGYgX3NldFRleHRJbmRp
Y2F0b3I6dGV4dEluZGljYXRvciB3aXRoTGlmZXRpbWU6VGV4dEluZGljYXRvckxpZmV0aW1lOjpQ
ZXJtYW5lbnRdOworfQogCistICh2b2lkKV9zZXRUZXh0SW5kaWNhdG9yOihUZXh0SW5kaWNhdG9y
Jil0ZXh0SW5kaWNhdG9yIHdpdGhMaWZldGltZTooVGV4dEluZGljYXRvckxpZmV0aW1lKWxpZmV0
aW1lCit7CiAgICAgaWYgKCFfZGF0YS0+X3RleHRJbmRpY2F0b3JXaW5kb3cpCiAgICAgICAgIF9k
YXRhLT5fdGV4dEluZGljYXRvcldpbmRvdyA9IHN0ZDo6bWFrZV91bmlxdWU8VGV4dEluZGljYXRv
cldpbmRvdz4oc2VsZik7CiAKLSAgICBOU1JlY3QgdGV4dEJvdW5kaW5nUmVjdEluU2NyZWVuQ29v
cmRpbmF0ZXMgPSBbc2VsZi53aW5kb3cgY29udmVydFJlY3RUb1NjcmVlbjpbc2VsZiBjb252ZXJ0
UmVjdDp0ZXh0SW5kaWNhdG9yLT50ZXh0Qm91bmRpbmdSZWN0SW5Sb290Vmlld0Nvb3JkaW5hdGVz
KCkgdG9WaWV3Om5pbF1dOwotICAgIF9kYXRhLT5fdGV4dEluZGljYXRvcldpbmRvdy0+c2V0VGV4
dEluZGljYXRvcih0ZXh0SW5kaWNhdG9yLCBOU1JlY3RUb0NHUmVjdCh0ZXh0Qm91bmRpbmdSZWN0
SW5TY3JlZW5Db29yZGluYXRlcyksIGZhZGVPdXQpOworICAgIE5TUmVjdCB0ZXh0Qm91bmRpbmdS
ZWN0SW5TY3JlZW5Db29yZGluYXRlcyA9IFtzZWxmLndpbmRvdyBjb252ZXJ0UmVjdFRvU2NyZWVu
OltzZWxmIGNvbnZlcnRSZWN0OnRleHRJbmRpY2F0b3IudGV4dEJvdW5kaW5nUmVjdEluUm9vdFZp
ZXdDb29yZGluYXRlcygpIHRvVmlldzpuaWxdXTsKKyAgICBfZGF0YS0+X3RleHRJbmRpY2F0b3JX
aW5kb3ctPnNldFRleHRJbmRpY2F0b3IodGV4dEluZGljYXRvciwgTlNSZWN0VG9DR1JlY3QodGV4
dEJvdW5kaW5nUmVjdEluU2NyZWVuQ29vcmRpbmF0ZXMpLCBsaWZldGltZSk7Cit9CisKKy0gKHZv
aWQpX2NsZWFyVGV4dEluZGljYXRvcldpdGhBbmltYXRpb246KFRleHRJbmRpY2F0b3JEaXNtaXNz
YWxBbmltYXRpb24pYW5pbWF0aW9uCit7CisgICAgaWYgKF9kYXRhLT5fdGV4dEluZGljYXRvcldp
bmRvdykKKyAgICAgICAgX2RhdGEtPl90ZXh0SW5kaWNhdG9yV2luZG93LT5jbGVhclRleHRJbmRp
Y2F0b3IoYW5pbWF0aW9uKTsKKyAgICBfZGF0YS0+X3RleHRJbmRpY2F0b3JXaW5kb3cgPSBudWxs
cHRyOwogfQogCiAtICh2b2lkKV9zZXRUZXh0SW5kaWNhdG9yQW5pbWF0aW9uUHJvZ3Jlc3M6KGZs
b2F0KXByb2dyZXNzCkBAIC00NTM4LDcgKzQ1NDUsNyBAQCBzdGF0aWMgTlNTdHJpbmcgKnBhdGhX
aXRoVW5pcXVlRmlsZW5hbWVGb3JQYXRoKE5TU3RyaW5nICpwYXRoKQogICAgICAgICByZXR1cm47
CiAgICAgfQogCi0gICAgW3NlbGYgX2Rpc21pc3NDb250ZW50UmVsYXRpdmVDaGlsZFdpbmRvd3Nd
OworICAgIFtzZWxmIF9kaXNtaXNzQ29udGVudFJlbGF0aXZlQ2hpbGRXaW5kb3dzV2l0aEFuaW1h
dGlvbjpOT107CiAKICAgICBbc2VsZiBfZW5zdXJlR2VzdHVyZUNvbnRyb2xsZXJdOwogCkBAIC00
NTU1LDcgKzQ1NjIsNyBAQCBzdGF0aWMgTlNTdHJpbmcgKnBhdGhXaXRoVW5pcXVlRmlsZW5hbWVG
b3JQYXRoKE5TU3RyaW5nICpwYXRoKQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgW3Nl
bGYgX2Rpc21pc3NDb250ZW50UmVsYXRpdmVDaGlsZFdpbmRvd3NdOworICAgIFtzZWxmIF9kaXNt
aXNzQ29udGVudFJlbGF0aXZlQ2hpbGRXaW5kb3dzV2l0aEFuaW1hdGlvbjpOT107CiAKICAgICBb
c2VsZiBfZW5zdXJlR2VzdHVyZUNvbnRyb2xsZXJdOwogCkBAIC00NTY3LDcgKzQ1NzQsNyBAQCBz
dGF0aWMgTlNTdHJpbmcgKnBhdGhXaXRoVW5pcXVlRmlsZW5hbWVGb3JQYXRoKE5TU3RyaW5nICpw
YXRoKQogICAgIGlmIChtYWduaWZpY2F0aW9uIDw9IDAgfHwgaXNuYW4obWFnbmlmaWNhdGlvbikg
fHwgaXNpbmYobWFnbmlmaWNhdGlvbikpCiAgICAgICAgIFtOU0V4Y2VwdGlvbiByYWlzZTpOU0lu
dmFsaWRBcmd1bWVudEV4Y2VwdGlvbiBmb3JtYXQ6QCJNYWduaWZpY2F0aW9uIHNob3VsZCBiZSBh
IHBvc2l0aXZlIG51bWJlciJdOwogCi0gICAgW3NlbGYgX2Rpc21pc3NDb250ZW50UmVsYXRpdmVD
aGlsZFdpbmRvd3NdOworICAgIFtzZWxmIF9kaXNtaXNzQ29udGVudFJlbGF0aXZlQ2hpbGRXaW5k
b3dzV2l0aEFuaW1hdGlvbjpOT107CiAKICAgICBfZGF0YS0+X3BhZ2UtPnNjYWxlUGFnZUluVmll
d0Nvb3JkaW5hdGVzKG1hZ25pZmljYXRpb24sIHJvdW5kZWRJbnRQb2ludChwb2ludCkpOwogfQpA
QCAtNDU3Nyw3ICs0NTg0LDcgQEAgc3RhdGljIE5TU3RyaW5nICpwYXRoV2l0aFVuaXF1ZUZpbGVu
YW1lRm9yUGF0aChOU1N0cmluZyAqcGF0aCkKICAgICBpZiAobWFnbmlmaWNhdGlvbiA8PSAwIHx8
IGlzbmFuKG1hZ25pZmljYXRpb24pIHx8IGlzaW5mKG1hZ25pZmljYXRpb24pKQogICAgICAgICBb
TlNFeGNlcHRpb24gcmFpc2U6TlNJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24gZm9ybWF0OkAiTWFn
bmlmaWNhdGlvbiBzaG91bGQgYmUgYSBwb3NpdGl2ZSBudW1iZXIiXTsKIAotICAgIFtzZWxmIF9k
aXNtaXNzQ29udGVudFJlbGF0aXZlQ2hpbGRXaW5kb3dzXTsKKyAgICBbc2VsZiBfZGlzbWlzc0Nv
bnRlbnRSZWxhdGl2ZUNoaWxkV2luZG93c1dpdGhBbmltYXRpb246Tk9dOwogCiAgICAgRmxvYXRQ
b2ludCB2aWV3Q2VudGVyKE5TTWlkWChbc2VsZiBib3VuZHNdKSwgTlNNaWRZKFtzZWxmIGJvdW5k
c10pKTsKICAgICBfZGF0YS0+X3BhZ2UtPnNjYWxlUGFnZUluVmlld0Nvb3JkaW5hdGVzKG1hZ25p
ZmljYXRpb24sIHJvdW5kZWRJbnRQb2ludCh2aWV3Q2VudGVyKSk7CkBAIC00Njc1LDkgKzQ2ODIs
OSBAQCBzdGF0aWMgTlNTdHJpbmcgKnBhdGhXaXRoVW5pcXVlRmlsZW5hbWVGb3JQYXRoKE5TU3Ry
aW5nICpwYXRoKQogICAgIC8vIEZJWE1FOiBXZSBkb24ndCBrbm93IHdoaWNoIHBhbmVsIHdlIGFy
ZSBkaXNtaXNzaW5nLCBpdCBtYXkgbm90IGV2ZW4gYmUgaW4gdGhlIGN1cnJlbnQgcGFnZSAoc2Vl
IDxyZGFyOi8vcHJvYmxlbS8xMzg3NTc2Nj4pLgogICAgIGlmIChbW3NlbGYgd2luZG93XSBpc0tl
eVdpbmRvd10KICNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTAwMAot
ICAgIHx8IFtfZGF0YS0+X2ltbWVkaWF0ZUFjdGlvbkNvbnRyb2xsZXIgaGFzQWN0aXZlSW1tZWRp
YXRlQWN0aW9uXQorICAgICAgICB8fCBbX2RhdGEtPl9pbW1lZGlhdGVBY3Rpb25Db250cm9sbGVy
IGhhc0FjdGl2ZUltbWVkaWF0ZUFjdGlvbl0KICNlbmRpZgotICAgICkgeworICAgICAgICApIHsK
ICAgICAgICAgaWYgKENsYXNzIGxvb2t1cERlZmluaXRpb25Nb2R1bGVDbGFzcyA9IGdldExVTG9v
a3VwRGVmaW5pdGlvbk1vZHVsZUNsYXNzKCkpCiAgICAgICAgICAgICBbbG9va3VwRGVmaW5pdGlv
bk1vZHVsZUNsYXNzIGhpZGVEZWZpbml0aW9uXTsKIApAQCAtNDY4Niw3ICs0NjkzLDcgQEAgc3Rh
dGljIE5TU3RyaW5nICpwYXRoV2l0aFVuaXF1ZUZpbGVuYW1lRm9yUGF0aChOU1N0cmluZyAqcGF0
aCkKICAgICAgICAgICAgIFthY3Rpb25zTWFuYWdlciByZXF1ZXN0QnViYmxlQ2xvc3VyZVVuYW5j
aG9yT25GYWlsdXJlOllFU107CiAgICAgfQogCi0gICAgW3NlbGYgX3NldFRleHRJbmRpY2F0b3I6
bnVsbHB0ciBmYWRlT3V0Ok5PXTsKKyAgICBbc2VsZiBfY2xlYXJUZXh0SW5kaWNhdG9yV2l0aEFu
aW1hdGlvbjpUZXh0SW5kaWNhdG9yRGlzbWlzc2FsQW5pbWF0aW9uOjpGYWRlT3V0XTsKIAogI2lm
IF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMDAwCiAgICAgW19kYXRhLT5f
aW1tZWRpYXRlQWN0aW9uQ29udHJvbGxlciBkaXNtaXNzQ29udGVudFJlbGF0aXZlQ2hpbGRXaW5k
b3dzXTsKQEAgLTQ2OTUsNiArNDcwMiwxNCBAQCBzdGF0aWMgTlNTdHJpbmcgKnBhdGhXaXRoVW5p
cXVlRmlsZW5hbWVGb3JQYXRoKE5TU3RyaW5nICpwYXRoKQogICAgIHN0YXRpY19jYXN0PFBhZ2VD
bGllbnQmPigqX2RhdGEtPl9wYWdlQ2xpZW50KS5kaXNtaXNzQ29ycmVjdGlvblBhbmVsKFJlYXNv
bkZvckRpc21pc3NpbmdBbHRlcm5hdGl2ZVRleHRJZ25vcmVkKTsKIH0KIAorLSAodm9pZClfZGlz
bWlzc0NvbnRlbnRSZWxhdGl2ZUNoaWxkV2luZG93c1dpdGhBbmltYXRpb246KEJPT0wpd2l0aEFu
aW1hdGlvbgoreworICAgIC8vIENhbGxpbmcgX2NsZWFyVGV4dEluZGljYXRvcldpdGhBbmltYXRp
b24gaGVyZSB3aWxsIHdpbiBvdXQgb3ZlciB0aGUgYW5pbWF0ZWQgY2xlYXIgaW4gX2Rpc21pc3ND
b250ZW50UmVsYXRpdmVDaGlsZFdpbmRvd3MuCisgICAgLy8gV2UgY2FuJ3QgaW52ZXJ0IHRoZXNl
IGJlY2F1c2UgY2xpZW50cyBjYW4gb3ZlcnJpZGUgKGFuZCBoYXZlIG92ZXJyaWRkZW4pIF9kaXNt
aXNzQ29udGVudFJlbGF0aXZlQ2hpbGRXaW5kb3dzLCBzbyBpdCBuZWVkcyB0byBiZSBjYWxsZWQu
CisgICAgW3NlbGYgX2NsZWFyVGV4dEluZGljYXRvcldpdGhBbmltYXRpb246d2l0aEFuaW1hdGlv
biA/IFRleHRJbmRpY2F0b3JEaXNtaXNzYWxBbmltYXRpb246OkZhZGVPdXQgOiBUZXh0SW5kaWNh
dG9yRGlzbWlzc2FsQW5pbWF0aW9uOjpOb25lXTsKKyAgICBbc2VsZiBfZGlzbWlzc0NvbnRlbnRS
ZWxhdGl2ZUNoaWxkV2luZG93c107Cit9CisKICNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JF
UVVJUkVEID49IDEwMTAwMAogCiAtICh2b2lkKV9zZXRBdXRvbWF0aWNhbGx5QWRqdXN0c0NvbnRl
bnRJbnNldHM6KEJPT0wpYXV0b21hdGljYWxseUFkanVzdHNDb250ZW50SW5zZXRzCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXdJbnRlcm5hbC5oIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3SW50ZXJuYWwuaAppbmRleCA5
ZTJhNmNkMjhhOTgxYWI4OTE2Yjg4ZGVkMGVmMGE3YWIyYjk5MmUxLi4xOTM1ZmMxODA3NGQ3MjVl
YzEwZTUwZTQzNWE3NTEyNTRlMmI0MjdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL21hYy9XS1ZpZXdJbnRlcm5hbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvbWFjL1dLVmlld0ludGVybmFsLmgKQEAgLTg1LDcgKzg1LDkgQEAgc3RydWN0IFdl
YlBhZ2VDb25maWd1cmF0aW9uOwogLSAodm9pZClfc2V0SW50cmluc2ljQ29udGVudFNpemU6KE5T
U2l6ZSlpbnRyaW5zaWNDb250ZW50U2l6ZTsKIC0gKE5TUmVjdClfY29udmVydFRvRGV2aWNlU3Bh
Y2U6KE5TUmVjdClyZWN0OwogLSAoTlNSZWN0KV9jb252ZXJ0VG9Vc2VyU3BhY2U6KE5TUmVjdCly
ZWN0OwotLSAodm9pZClfc2V0VGV4dEluZGljYXRvcjooUGFzc1JlZlB0cjxXZWJDb3JlOjpUZXh0
SW5kaWNhdG9yPil0ZXh0SW5kaWNhdG9yIGZhZGVPdXQ6KEJPT0wpZmFkZU91dDsKKy0gKHZvaWQp
X3NldFRleHRJbmRpY2F0b3I6KFdlYkNvcmU6OlRleHRJbmRpY2F0b3ImKXRleHRJbmRpY2F0b3I7
CistICh2b2lkKV9zZXRUZXh0SW5kaWNhdG9yOihXZWJDb3JlOjpUZXh0SW5kaWNhdG9yJil0ZXh0
SW5kaWNhdG9yIHdpdGhMaWZldGltZTooV2ViQ29yZTo6VGV4dEluZGljYXRvckxpZmV0aW1lKWxp
ZmV0aW1lOworLSAodm9pZClfY2xlYXJUZXh0SW5kaWNhdG9yV2l0aEFuaW1hdGlvbjooV2ViQ29y
ZTo6VGV4dEluZGljYXRvckRpc21pc3NhbEFuaW1hdGlvbilhbmltYXRpb247CiAtICh2b2lkKV9z
ZXRUZXh0SW5kaWNhdG9yQW5pbWF0aW9uUHJvZ3Jlc3M6KGZsb2F0KXByb2dyZXNzOwogLSAodm9p
ZClfc2VsZWN0aW9uQ2hhbmdlZDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1BhZ2VDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgK
aW5kZXggMWU1NTMyOGE5MjY4ZjFhOWYwNjUwMWViZjA5NzA1OWNhYzRjOWVmYS4uZGRlOGFjNWNl
Y2UwOGY0ZTgxYjE4MWZjOWNiZmM1NmFiNzZlYzllNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
UGFnZUNsaWVudC5oCkBAIC0yMjAsNyArMjIwLDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgUGFz
c1JlZlB0cjxXZWJDb2xvclBpY2tlcj4gY3JlYXRlQ29sb3JQaWNrZXIoV2ViUGFnZVByb3h5Kiwg
Y29uc3QgV2ViQ29yZTo6Q29sb3ImIGluaXRpYWxDb2xvciwgY29uc3QgV2ViQ29yZTo6SW50UmVj
dCYpID0gMDsKICNlbmRpZgogCi0gICAgdmlydHVhbCB2b2lkIHNldFRleHRJbmRpY2F0b3IoUGFz
c1JlZlB0cjxXZWJDb3JlOjpUZXh0SW5kaWNhdG9yPiwgYm9vbCBmYWRlT3V0KSA9IDA7CisgICAg
dmlydHVhbCB2b2lkIHNldFRleHRJbmRpY2F0b3IoUmVmPFdlYkNvcmU6OlRleHRJbmRpY2F0b3I+
LCBXZWJDb3JlOjpUZXh0SW5kaWNhdG9yTGlmZXRpbWUgPSBXZWJDb3JlOjpUZXh0SW5kaWNhdG9y
TGlmZXRpbWU6OlBlcm1hbmVudCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBjbGVhclRleHRJbmRp
Y2F0b3IoV2ViQ29yZTo6VGV4dEluZGljYXRvckRpc21pc3NhbEFuaW1hdGlvbiA9IFdlYkNvcmU6
OlRleHRJbmRpY2F0b3JEaXNtaXNzYWxBbmltYXRpb246OkZhZGVPdXQpID0gMDsKICAgICB2aXJ0
dWFsIHZvaWQgc2V0VGV4dEluZGljYXRvckFuaW1hdGlvblByb2dyZXNzKGZsb2F0KSA9IDA7CiAK
ICAgICB2aXJ0dWFsIHZvaWQgZW50ZXJBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZShjb25zdCBM
YXllclRyZWVDb250ZXh0JikgPSAwOwpAQCAtMjMxLDcgKzIzMiw3IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIHZvaWQgcGx1Z2luRm9jdXNPcldpbmRvd0ZvY3VzQ2hhbmdlZCh1aW50NjRfdCBwbHVn
aW5Db21wbGV4VGV4dElucHV0SWRlbnRpZmllciwgYm9vbCBwbHVnaW5IYXNGb2N1c0FuZFdpbmRv
d0hhc0ZvY3VzKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNldFBsdWdpbkNvbXBsZXhUZXh0SW5w
dXRTdGF0ZSh1aW50NjRfdCBwbHVnaW5Db21wbGV4VGV4dElucHV0SWRlbnRpZmllciwgUGx1Z2lu
Q29tcGxleFRleHRJbnB1dFN0YXRlKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZFBlcmZvcm1E
aWN0aW9uYXJ5TG9va3VwKGNvbnN0IERpY3Rpb25hcnlQb3B1cEluZm8mKSA9IDA7Ci0gICAgdmly
dHVhbCB2b2lkIGRpc21pc3NDb250ZW50UmVsYXRpdmVDaGlsZFdpbmRvd3MoKSA9IDA7CisgICAg
dmlydHVhbCB2b2lkIGRpc21pc3NDb250ZW50UmVsYXRpdmVDaGlsZFdpbmRvd3MoYm9vbCB3aXRo
QW5pbWF0aW9uID0gdHJ1ZSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzaG93Q29ycmVjdGlvblBh
bmVsKFdlYkNvcmU6OkFsdGVybmF0aXZlVGV4dFR5cGUsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVj
dCYgYm91bmRpbmdCb3hPZlJlcGxhY2VkU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VkU3Ry
aW5nLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50U3RyaW5nLCBjb25zdCBWZWN0b3I8U3RyaW5n
PiYgYWx0ZXJuYXRpdmVSZXBsYWNlbWVudFN0cmluZ3MpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQg
ZGlzbWlzc0NvcnJlY3Rpb25QYW5lbChXZWJDb3JlOjpSZWFzb25Gb3JEaXNtaXNzaW5nQWx0ZXJu
YXRpdmVUZXh0KSA9IDA7CiAgICAgdmlydHVhbCBTdHJpbmcgZGlzbWlzc0NvcnJlY3Rpb25QYW5l
bFNvb24oV2ViQ29yZTo6UmVhc29uRm9yRGlzbWlzc2luZ0FsdGVybmF0aXZlVGV4dCkgPSAwOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCAxYWVkNDUzMDFh
MmZlZWFkNDRjYzZjN2VhZWM0N2Q4YjQ3Y2YxYzFiLi4wYjk3NDA4N2Q4MzIwY2JmOTgwM2JhNmYz
NzlhNzE1NDgxZWRmNTc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmNwcApAQCAtMzY0Niw3ICszNjQ2LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnBhZ2VEaWRTY3Jv
bGwoKQogewogICAgIG1fdWlDbGllbnQtPnBhZ2VEaWRTY3JvbGwodGhpcyk7CiAjaWYgUExBVEZP
Uk0oTUFDKQotICAgIG1fcGFnZUNsaWVudC5kaXNtaXNzQ29udGVudFJlbGF0aXZlQ2hpbGRXaW5k
b3dzKCk7CisgICAgbV9wYWdlQ2xpZW50LmRpc21pc3NDb250ZW50UmVsYXRpdmVDaGlsZFdpbmRv
d3MoZmFsc2UpOwogI2VuZGlmCiB9CiAKQEAgLTM4OTksMTQgKzM4OTksMTQgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OmRpZEdldEltYWdlRm9yRmluZE1hdGNoKGNvbnN0IFNoYXJlYWJsZUJpdG1hcDo6
SGFuZGxlJiBjb250ZW4KICAgICBtX2ZpbmRNYXRjaGVzQ2xpZW50LmRpZEdldEltYWdlRm9yTWF0
Y2hSZXN1bHQodGhpcywgV2ViSW1hZ2U6OmNyZWF0ZShTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZShj
b250ZW50SW1hZ2VIYW5kbGUpKS5nZXQoKSwgbWF0Y2hJbmRleCk7CiB9CiAKLXZvaWQgV2ViUGFn
ZVByb3h5OjpzZXRUZXh0SW5kaWNhdG9yKGNvbnN0IFRleHRJbmRpY2F0b3JEYXRhJiBpbmRpY2F0
b3JEYXRhLCBib29sIGZhZGVPdXQpCit2b2lkIFdlYlBhZ2VQcm94eTo6c2V0VGV4dEluZGljYXRv
cihjb25zdCBUZXh0SW5kaWNhdG9yRGF0YSYgaW5kaWNhdG9yRGF0YSwgdWludDY0X3QgbGlmZXRp
bWUpCiB7Ci0gICAgbV9wYWdlQ2xpZW50LnNldFRleHRJbmRpY2F0b3IoVGV4dEluZGljYXRvcjo6
Y3JlYXRlKGluZGljYXRvckRhdGEpLCBmYWRlT3V0KTsKKyAgICBtX3BhZ2VDbGllbnQuc2V0VGV4
dEluZGljYXRvcigqVGV4dEluZGljYXRvcjo6Y3JlYXRlKGluZGljYXRvckRhdGEpLCBzdGF0aWNf
Y2FzdDxUZXh0SW5kaWNhdG9yTGlmZXRpbWU+KGxpZmV0aW1lKSk7CiB9CiAKIHZvaWQgV2ViUGFn
ZVByb3h5OjpjbGVhclRleHRJbmRpY2F0b3IoKQogewotICAgIG1fcGFnZUNsaWVudC5zZXRUZXh0
SW5kaWNhdG9yKG51bGxwdHIsIGZhbHNlKTsKKyAgICBtX3BhZ2VDbGllbnQuY2xlYXJUZXh0SW5k
aWNhdG9yKCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRUZXh0SW5kaWNhdG9yQW5pbWF0
aW9uUHJvZ3Jlc3MoZmxvYXQgcHJvZ3Jlc3MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmgKaW5kZXggNTM5NjAzZWZhZjFmOTIyN2JlYjdiMTEwZGY2NzVjNmZjMDEwMGExYy4u
Yzg5YWNjMTQ5NjFlMGQ4Njc3ZDBjYmJiMWVjNTkxOGZkMGRlMTQ0MSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtNzI3LDcgKzcyNyw3IEBAIHB1YmxpYzoKICAg
ICB2b2lkIGhpZGVGaW5kVUkoKTsKICAgICB2b2lkIGNvdW50U3RyaW5nTWF0Y2hlcyhjb25zdCBT
dHJpbmcmLCBGaW5kT3B0aW9ucywgdW5zaWduZWQgbWF4TWF0Y2hDb3VudCk7CiAgICAgdm9pZCBk
aWRDb3VudFN0cmluZ01hdGNoZXMoY29uc3QgU3RyaW5nJiwgdWludDMyX3QgbWF0Y2hDb3VudCk7
Ci0gICAgdm9pZCBzZXRUZXh0SW5kaWNhdG9yKGNvbnN0IFdlYkNvcmU6OlRleHRJbmRpY2F0b3JE
YXRhJiwgYm9vbCBmYWRlT3V0KTsKKyAgICB2b2lkIHNldFRleHRJbmRpY2F0b3IoY29uc3QgV2Vi
Q29yZTo6VGV4dEluZGljYXRvckRhdGEmLCB1aW50NjRfdCAvKiBXZWJDb3JlOjpUZXh0SW5kaWNh
dG9yTGlmZXRpbWUgKi8gbGlmZXRpbWUgPSAodWludDY0X3QpV2ViQ29yZTo6VGV4dEluZGljYXRv
ckxpZmV0aW1lOjpQZXJtYW5lbnQpOwogICAgIHZvaWQgc2V0VGV4dEluZGljYXRvckFuaW1hdGlv
blByb2dyZXNzKGZsb2F0KTsKICAgICB2b2lkIGNsZWFyVGV4dEluZGljYXRvcigpOwogICAgIHZv
aWQgZGlkRmluZFN0cmluZyhjb25zdCBTdHJpbmcmLCB1aW50MzJfdCBtYXRjaENvdW50LCBpbnQz
Ml90IG1hdGNoSW5kZXgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkubWVzc2FnZXMuaW4KaW5kZXggNThkNDcwZThkMmM1NDYwZDVlM2UwYjhjMDcyNWFjOTgy
ZDU2Y2U1Yy4uNmI4NmNmYTdlYjM3Mzk2ODZmYWNjNTkzZWIyYjk4NTY1ZjlhYjIxZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCkBA
IC0yMzYsNyArMjM2LDcgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZVByb3h5IHsKIAogICAgICMgRmlu
ZCBtZXNzYWdlcwogICAgIERpZENvdW50U3RyaW5nTWF0Y2hlcyhTdHJpbmcgc3RyaW5nLCB1aW50
MzJfdCBtYXRjaENvdW50KQotICAgIFNldFRleHRJbmRpY2F0b3Ioc3RydWN0IFdlYkNvcmU6OlRl
eHRJbmRpY2F0b3JEYXRhIGluZGljYXRvciwgYm9vbCBmYWRlT3V0KQorICAgIFNldFRleHRJbmRp
Y2F0b3Ioc3RydWN0IFdlYkNvcmU6OlRleHRJbmRpY2F0b3JEYXRhIGluZGljYXRvciwgdWludDY0
X3QgbGlmZXRpbWUpCiAgICAgQ2xlYXJUZXh0SW5kaWNhdG9yKCkKICAgICBEaWRGaW5kU3RyaW5n
KFN0cmluZyBzdHJpbmcsIHVpbnQzMl90IG1hdGNoQ291bnQsIGludDMyX3QgbWF0Y2hJbmRleCkK
ICAgICBEaWRGYWlsVG9GaW5kU3RyaW5nKFN0cmluZyBzdHJpbmcpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmggYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmgKaW5kZXggZGViYWVmZjUzYjNk
MmQ2YTA3ZTIxZTEwZDZjNjUwOTkzNTM1ZWUxMS4uYTBhNDQ4ZGZhODAxYWNhMjIyOTU4MGE1Nzhh
MzFhMjBkYzMzOTM5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9Q
YWdlQ2xpZW50SW1wbElPUy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvUGFn
ZUNsaWVudEltcGxJT1MuaApAQCAtOTksNyArOTksOCBAQCBwcml2YXRlOgogI2VuZGlmCiAgICAg
dmlydHVhbCBQYXNzUmVmUHRyPFdlYlBvcHVwTWVudVByb3h5PiBjcmVhdGVQb3B1cE1lbnVQcm94
eShXZWJQYWdlUHJveHkqKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29u
dGV4dE1lbnVQcm94eT4gY3JlYXRlQ29udGV4dE1lbnVQcm94eShXZWJQYWdlUHJveHkqKSBvdmVy
cmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0VGV4dEluZGljYXRvcihQYXNzUmVmUHRyPFdlYkNv
cmU6OlRleHRJbmRpY2F0b3I+LCBib29sIGZhZGVPdXQpIG92ZXJyaWRlOworICAgIHZpcnR1YWwg
dm9pZCBzZXRUZXh0SW5kaWNhdG9yKFJlZjxXZWJDb3JlOjpUZXh0SW5kaWNhdG9yPiwgV2ViQ29y
ZTo6VGV4dEluZGljYXRvckxpZmV0aW1lID0gV2ViQ29yZTo6VGV4dEluZGljYXRvckxpZmV0aW1l
OjpQZXJtYW5lbnQpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBjbGVhclRleHRJbmRpY2F0
b3IoV2ViQ29yZTo6VGV4dEluZGljYXRvckRpc21pc3NhbEFuaW1hdGlvbiA9IFdlYkNvcmU6OlRl
eHRJbmRpY2F0b3JEaXNtaXNzYWxBbmltYXRpb246OkZhZGVPdXQpIG92ZXJyaWRlOwogICAgIHZp
cnR1YWwgdm9pZCBzZXRUZXh0SW5kaWNhdG9yQW5pbWF0aW9uUHJvZ3Jlc3MoZmxvYXQpIG92ZXJy
aWRlOwogCiAgICAgdmlydHVhbCB2b2lkIGVudGVyQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUo
Y29uc3QgTGF5ZXJUcmVlQ29udGV4dCYpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbSBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW0KaW5kZXggYmM4NThhNWJkNDU2ZjFm
ZTY3MTE5MzljYWVhN2UwNzFmYzgxYzAwMC4uNTczMjA3MjNhMTY0YjdkOWZjZDFhMGUyMGUyNTFi
MmVkODU3MzhlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9QYWdl
Q2xpZW50SW1wbElPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1BhZ2VD
bGllbnRJbXBsSU9TLm1tCkBAIC00NTMsNyArNDUzLDExIEBAIFBhc3NSZWZQdHI8V2ViQ29udGV4
dE1lbnVQcm94eT4gUGFnZUNsaWVudEltcGw6OmNyZWF0ZUNvbnRleHRNZW51UHJveHkoV2ViUGFn
ZVByCiAgICAgcmV0dXJuIDA7CiB9CiAKLXZvaWQgUGFnZUNsaWVudEltcGw6OnNldFRleHRJbmRp
Y2F0b3IoUGFzc1JlZlB0cjxUZXh0SW5kaWNhdG9yPiB0ZXh0SW5kaWNhdG9yLCBib29sIGZhZGVP
dXQpCit2b2lkIFBhZ2VDbGllbnRJbXBsOjpzZXRUZXh0SW5kaWNhdG9yKFJlZjxUZXh0SW5kaWNh
dG9yPiB0ZXh0SW5kaWNhdG9yLCBUZXh0SW5kaWNhdG9yTGlmZXRpbWUpCit7Cit9CisKK3ZvaWQg
UGFnZUNsaWVudEltcGw6OmNsZWFyVGV4dEluZGljYXRvcihUZXh0SW5kaWNhdG9yRGlzbWlzc2Fs
QW5pbWF0aW9uKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
bWFjL1BhZ2VDbGllbnRJbXBsLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1BhZ2VD
bGllbnRJbXBsLmgKaW5kZXggNTdjM2U4ZjMwZDVlYTIyYzg2ZTc5MDFiMjUxZjhkNmNkYTgwY2Rh
MC4uMzRkMTAxMTlhYWMxZWZmODc1YjBlODIwMDczMzhjNWMxN2E4MWEwNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGwuaApAQCAtMTI3LDcgKzEyNyw4
IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvbG9yUGlja2VyPiBjcmVh
dGVDb2xvclBpY2tlcihXZWJQYWdlUHJveHkqLCBjb25zdCBXZWJDb3JlOjpDb2xvciYgaW5pdGlh
bENvbG9yLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0Jikgb3ZlcnJpZGU7CiAjZW5kaWYKIAotICAg
IHZpcnR1YWwgdm9pZCBzZXRUZXh0SW5kaWNhdG9yKFBhc3NSZWZQdHI8V2ViQ29yZTo6VGV4dElu
ZGljYXRvcj4sIGJvb2wgZmFkZU91dCkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHNldFRl
eHRJbmRpY2F0b3IoUmVmPFdlYkNvcmU6OlRleHRJbmRpY2F0b3I+LCBXZWJDb3JlOjpUZXh0SW5k
aWNhdG9yTGlmZXRpbWUgPSBXZWJDb3JlOjpUZXh0SW5kaWNhdG9yTGlmZXRpbWU6OlBlcm1hbmVu
dCkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGNsZWFyVGV4dEluZGljYXRvcihXZWJDb3Jl
OjpUZXh0SW5kaWNhdG9yRGlzbWlzc2FsQW5pbWF0aW9uID0gV2ViQ29yZTo6VGV4dEluZGljYXRv
ckRpc21pc3NhbEFuaW1hdGlvbjo6RmFkZU91dCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lk
IHNldFRleHRJbmRpY2F0b3JBbmltYXRpb25Qcm9ncmVzcyhmbG9hdCkgb3ZlcnJpZGU7CiAKICAg
ICB2aXJ0dWFsIHZvaWQgZW50ZXJBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZShjb25zdCBMYXll
clRyZWVDb250ZXh0Jikgb3ZlcnJpZGU7CkBAIC0xNDUsNyArMTQ2LDcgQEAgcHJpdmF0ZToKICAg
ICB2aXJ0dWFsIHZvaWQgbWFrZUZpcnN0UmVzcG9uZGVyKCkgb3ZlcnJpZGU7CiAgICAgCiAgICAg
dmlydHVhbCB2b2lkIGRpZFBlcmZvcm1EaWN0aW9uYXJ5TG9va3VwKGNvbnN0IERpY3Rpb25hcnlQ
b3B1cEluZm8mKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlzbWlzc0NvbnRlbnRSZWxh
dGl2ZUNoaWxkV2luZG93cygpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBkaXNtaXNzQ29u
dGVudFJlbGF0aXZlQ2hpbGRXaW5kb3dzKGJvb2wgd2l0aEFuaW1hdGlvbiA9IHRydWUpIG92ZXJy
aWRlOwogCiAgICAgdmlydHVhbCB2b2lkIHNob3dDb3JyZWN0aW9uUGFuZWwoV2ViQ29yZTo6QWx0
ZXJuYXRpdmVUZXh0VHlwZSwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBib3VuZGluZ0JveE9m
UmVwbGFjZWRTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVwbGFjZWRTdHJpbmcsIGNvbnN0IFN0cmlu
ZyYgcmVwbGFjZW1lbnRTdHJpbmcsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBhbHRlcm5hdGl2ZVJl
cGxhY2VtZW50U3RyaW5ncykgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGRpc21pc3NDb3Jy
ZWN0aW9uUGFuZWwoV2ViQ29yZTo6UmVhc29uRm9yRGlzbWlzc2luZ0FsdGVybmF0aXZlVGV4dCkg
b3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1BhZ2VD
bGllbnRJbXBsLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1w
bC5tbQppbmRleCBlMmMxMjQzNjgxZGI1NmU0MjJjOWRhY2FmMGZlMjRlMTNkMzk5ZDZhLi5kYTQw
OTIzMGU1MjlmMTdiYzQzZGNhODEyZWQ4NjY0Y2Q3YzU5MjU1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGwubW0KQEAgLTUwMyw5ICs1MDMsMTQgQEAg
UGFzc1JlZlB0cjxXZWJDb2xvclBpY2tlcj4gUGFnZUNsaWVudEltcGw6OmNyZWF0ZUNvbG9yUGlj
a2VyKFdlYlBhZ2VQcm94eSogcGFnZSwKIH0KICNlbmRpZgogCi12b2lkIFBhZ2VDbGllbnRJbXBs
OjpzZXRUZXh0SW5kaWNhdG9yKFBhc3NSZWZQdHI8VGV4dEluZGljYXRvcj4gdGV4dEluZGljYXRv
ciwgYm9vbCBmYWRlT3V0KQordm9pZCBQYWdlQ2xpZW50SW1wbDo6c2V0VGV4dEluZGljYXRvcihS
ZWY8VGV4dEluZGljYXRvcj4gdGV4dEluZGljYXRvciwgV2ViQ29yZTo6VGV4dEluZGljYXRvckxp
ZmV0aW1lIGxpZmV0aW1lKQogewotICAgIFttX3drVmlldyBfc2V0VGV4dEluZGljYXRvcjp0ZXh0
SW5kaWNhdG9yIGZhZGVPdXQ6ZmFkZU91dF07CisgICAgW21fd2tWaWV3IF9zZXRUZXh0SW5kaWNh
dG9yOnRleHRJbmRpY2F0b3IuZ2V0KCkgd2l0aExpZmV0aW1lOmxpZmV0aW1lXTsKK30KKwordm9p
ZCBQYWdlQ2xpZW50SW1wbDo6Y2xlYXJUZXh0SW5kaWNhdG9yKFdlYkNvcmU6OlRleHRJbmRpY2F0
b3JEaXNtaXNzYWxBbmltYXRpb24gZGlzbWlzc2FsQW5pbWF0aW9uKQoreworICAgIFttX3drVmll
dyBfY2xlYXJUZXh0SW5kaWNhdG9yV2l0aEFuaW1hdGlvbjpkaXNtaXNzYWxBbmltYXRpb25dOwog
fQogCiB2b2lkIFBhZ2VDbGllbnRJbXBsOjpzZXRUZXh0SW5kaWNhdG9yQW5pbWF0aW9uUHJvZ3Jl
c3MoZmxvYXQgcHJvZ3Jlc3MpCkBAIC01ODksMTYgKzU5NCwxNiBAQCB2b2lkIFBhZ2VDbGllbnRJ
bXBsOjpkaWRQZXJmb3JtRGljdGlvbmFyeUxvb2t1cChjb25zdCBEaWN0aW9uYXJ5UG9wdXBJbmZv
JiBkaWN0aQogICAgIFJldGFpblB0cjxOU011dGFibGVEaWN0aW9uYXJ5PiBtdXRhYmxlT3B0aW9u
cyA9IGFkb3B0TlMoWyhOU0RpY3Rpb25hcnkgKilkaWN0aW9uYXJ5UG9wdXBJbmZvLm9wdGlvbnMu
Z2V0KCkgbXV0YWJsZUNvcHldKTsKIAogICAgIGlmIChjYW5Mb2FkTFVUZXJtT3B0aW9uRGlzYWJs
ZVNlYXJjaFRlcm1JbmRpY2F0b3IoKSAmJiBkaWN0aW9uYXJ5UG9wdXBJbmZvLnRleHRJbmRpY2F0
b3IuY29udGVudEltYWdlKSB7Ci0gICAgICAgIFttX3drVmlldyBfc2V0VGV4dEluZGljYXRvcjpU
ZXh0SW5kaWNhdG9yOjpjcmVhdGUoZGljdGlvbmFyeVBvcHVwSW5mby50ZXh0SW5kaWNhdG9yKSBm
YWRlT3V0Ok5PXTsKKyAgICAgICAgW21fd2tWaWV3IF9zZXRUZXh0SW5kaWNhdG9yOipUZXh0SW5k
aWNhdG9yOjpjcmVhdGUoZGljdGlvbmFyeVBvcHVwSW5mby50ZXh0SW5kaWNhdG9yKSB3aXRoTGlm
ZXRpbWU6VGV4dEluZGljYXRvckxpZmV0aW1lOjpQZXJtYW5lbnRdOwogICAgICAgICBbbXV0YWJs
ZU9wdGlvbnMgc2V0T2JqZWN0OkBZRVMgZm9yS2V5OmdldExVVGVybU9wdGlvbkRpc2FibGVTZWFy
Y2hUZXJtSW5kaWNhdG9yKCldOwogICAgICAgICBbZ2V0TFVMb29rdXBEZWZpbml0aW9uTW9kdWxl
Q2xhc3MoKSBzaG93RGVmaW5pdGlvbkZvclRlcm06ZGljdGlvbmFyeVBvcHVwSW5mby5hdHRyaWJ1
dGVkU3RyaW5nLnN0cmluZy5nZXQoKSBhdExvY2F0aW9uOnRleHRCYXNlbGluZU9yaWdpbiBvcHRp
b25zOm11dGFibGVPcHRpb25zLmdldCgpXTsKICAgICB9IGVsc2UKICAgICAgICAgW2dldExVTG9v
a3VwRGVmaW5pdGlvbk1vZHVsZUNsYXNzKCkgc2hvd0RlZmluaXRpb25Gb3JUZXJtOmRpY3Rpb25h
cnlQb3B1cEluZm8uYXR0cmlidXRlZFN0cmluZy5zdHJpbmcuZ2V0KCkgYXRMb2NhdGlvbjp0ZXh0
QmFzZWxpbmVPcmlnaW4gb3B0aW9uczptdXRhYmxlT3B0aW9ucy5nZXQoKV07CiB9CiAKLXZvaWQg
UGFnZUNsaWVudEltcGw6OmRpc21pc3NDb250ZW50UmVsYXRpdmVDaGlsZFdpbmRvd3MoKQordm9p
ZCBQYWdlQ2xpZW50SW1wbDo6ZGlzbWlzc0NvbnRlbnRSZWxhdGl2ZUNoaWxkV2luZG93cyhib29s
IHdpdGhBbmltYXRpb24pCiB7Ci0gICAgW21fd2tWaWV3IF9kaXNtaXNzQ29udGVudFJlbGF0aXZl
Q2hpbGRXaW5kb3dzXTsKKyAgICBbbV93a1ZpZXcgX2Rpc21pc3NDb250ZW50UmVsYXRpdmVDaGls
ZFdpbmRvd3NXaXRoQW5pbWF0aW9uOndpdGhBbmltYXRpb25dOwogfQogCiB2b2lkIFBhZ2VDbGll
bnRJbXBsOjpzaG93Q29ycmVjdGlvblBhbmVsKEFsdGVybmF0aXZlVGV4dFR5cGUgdHlwZSwgY29u
c3QgRmxvYXRSZWN0JiBib3VuZGluZ0JveE9mUmVwbGFjZWRTdHJpbmcsIGNvbnN0IFN0cmluZyYg
cmVwbGFjZWRTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnRTdHJpbmcsIGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiBhbHRlcm5hdGl2ZVJlcGxhY2VtZW50U3RyaW5ncykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV0tBY3Rpb25NZW51Q29udHJvbGxlci5tbSBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV0tBY3Rpb25NZW51Q29udHJvbGxlci5tbQpp
bmRleCBhOTNhYjM2OTgxZTBkOTA2MzJkMjFkZWUzNDZiY2I5YTI0NzA2NzcyLi5iNjk5OTlhZDc3
MzllZjAzYmJkM2NjYzkzMTcyZmI4YTI4MmIxMDdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvbWFjL1dLQWN0aW9uTWVudUNvbnRyb2xsZXIubW0KKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL21hYy9XS0FjdGlvbk1lbnVDb250cm9sbGVyLm1tCkBAIC0zNzcsNyAr
Mzc3LDcgQEAgc3RhdGljIE5TU3RyaW5nICpwYXRoVG9QaG90b09uRGlzayhOU1N0cmluZyAqc3Vn
Z2VzdGVkRmlsZW5hbWUpCiAgICAgICAgIHBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRh
dGFEZXRlY3RvcnNEaWRQcmVzZW50VUkob3ZlcmxheUlEKSk7CiAgICAgfSBpbnRlcmFjdGlvbkNo
YW5nZWRIYW5kbGVyOl4oKSB7CiAgICAgICAgIGlmIChfaGl0VGVzdFJlc3VsdERhdGEuZGV0ZWN0
ZWREYXRhVGV4dEluZGljYXRvcikKLSAgICAgICAgICAgIHBhZ2UtPnNldFRleHRJbmRpY2F0b3Io
X2hpdFRlc3RSZXN1bHREYXRhLmRldGVjdGVkRGF0YVRleHRJbmRpY2F0b3ItPmRhdGEoKSwgZmFs
c2UpOworICAgICAgICAgICAgcGFnZS0+c2V0VGV4dEluZGljYXRvcihfaGl0VGVzdFJlc3VsdERh
dGEuZGV0ZWN0ZWREYXRhVGV4dEluZGljYXRvci0+ZGF0YSgpKTsKICAgICAgICAgcGFnZS0+c2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6RGF0YURldGVjdG9yc0RpZENoYW5nZVVJKG92ZXJsYXlJRCkp
OwogICAgIH0gaW50ZXJhY3Rpb25TdG9wcGVkSGFuZGxlcjpeKCkgewogICAgICAgICBwYWdlLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEYXRhRGV0ZWN0b3JzRGlkSGlkZVVJKG92ZXJsYXlJRCkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XS0ltbWVkaWF0ZUFj
dGlvbkNvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dLSW1tZWRp
YXRlQWN0aW9uQ29udHJvbGxlci5tbQppbmRleCA1MzFhZDFkNDE3Nzk2ZjYyNzRlMDZlNTcxZTgz
YTI3NjkzOTI2MDQ3Li5jYTcxNWQxZTQwMjYxYTVlYmIzMWZlOGI0MmQwYWNiMmZhMGIwMTcyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dLSW1tZWRpYXRlQWN0aW9u
Q29udHJvbGxlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dLSW1tZWRp
YXRlQWN0aW9uQ29udHJvbGxlci5tbQpAQCAtMjk0LDcgKzI5NCw3IEBAIHVzaW5nIG5hbWVzcGFj
ZSBXZWJLaXQ7CiAgICAgICAgICAgICBfY3VycmVudFFMUHJldmlld01lbnVJdGVtID0gaXRlbTsK
IAogICAgICAgICAgICAgaWYgKFRleHRJbmRpY2F0b3IgKnRleHRJbmRpY2F0b3IgPSBfaGl0VGVz
dFJlc3VsdERhdGEubGlua1RleHRJbmRpY2F0b3IuZ2V0KCkpCi0gICAgICAgICAgICAgICAgX3Bh
Z2UtPnNldFRleHRJbmRpY2F0b3IodGV4dEluZGljYXRvci0+ZGF0YSgpLCBmYWxzZSk7CisgICAg
ICAgICAgICAgICAgX3BhZ2UtPnNldFRleHRJbmRpY2F0b3IodGV4dEluZGljYXRvci0+ZGF0YSgp
KTsKIAogICAgICAgICAgICAgcmV0dXJuIChpZDxOU0ltbWVkaWF0ZUFjdGlvbkFuaW1hdGlvbkNv
bnRyb2xsZXI+KWl0ZW07CiAgICAgICAgIH0KQEAgLTQwNiw3ICs0MDYsNyBAQCB1c2luZyBuYW1l
c3BhY2UgV2ViS2l0OwogICAgICAgICBwYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEYXRh
RGV0ZWN0b3JzRGlkUHJlc2VudFVJKG92ZXJsYXlJRCkpOwogICAgIH0gaW50ZXJhY3Rpb25DaGFu
Z2VkSGFuZGxlcjpeKCkgewogICAgICAgICBpZiAoX2hpdFRlc3RSZXN1bHREYXRhLmRldGVjdGVk
RGF0YVRleHRJbmRpY2F0b3IpCi0gICAgICAgICAgICBwYWdlLT5zZXRUZXh0SW5kaWNhdG9yKF9o
aXRUZXN0UmVzdWx0RGF0YS5kZXRlY3RlZERhdGFUZXh0SW5kaWNhdG9yLT5kYXRhKCksIGZhbHNl
KTsKKyAgICAgICAgICAgIHBhZ2UtPnNldFRleHRJbmRpY2F0b3IoX2hpdFRlc3RSZXN1bHREYXRh
LmRldGVjdGVkRGF0YVRleHRJbmRpY2F0b3ItPmRhdGEoKSk7CiAgICAgICAgIHBhZ2UtPnNlbmQo
TWVzc2FnZXM6OldlYlBhZ2U6OkRhdGFEZXRlY3RvcnNEaWRDaGFuZ2VVSShvdmVybGF5SUQpKTsK
ICAgICB9IGludGVyYWN0aW9uU3RvcHBlZEhhbmRsZXI6XigpIHsKICAgICAgICAgcGFnZS0+c2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6RGF0YURldGVjdG9yc0RpZEhpZGVVSShvdmVybGF5SUQpKTsK
QEAgLTQzNyw3ICs0MzcsNyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogICAgIF9jdXJyZW50
QWN0aW9uQ29udGV4dCA9IFthY3Rpb25Db250ZXh0IGNvbnRleHRGb3JWaWV3Ol93a1ZpZXcgYWx0
TW9kZTpZRVMgaW50ZXJhY3Rpb25TdGFydGVkSGFuZGxlcjpeKCkgewogICAgIH0gaW50ZXJhY3Rp
b25DaGFuZ2VkSGFuZGxlcjpeKCkgewogICAgICAgICBpZiAoX2hpdFRlc3RSZXN1bHREYXRhLmxp
bmtUZXh0SW5kaWNhdG9yKQotICAgICAgICAgICAgcGFnZS0+c2V0VGV4dEluZGljYXRvcihfaGl0
VGVzdFJlc3VsdERhdGEubGlua1RleHRJbmRpY2F0b3ItPmRhdGEoKSwgZmFsc2UpOworICAgICAg
ICAgICAgcGFnZS0+c2V0VGV4dEluZGljYXRvcihfaGl0VGVzdFJlc3VsdERhdGEubGlua1RleHRJ
bmRpY2F0b3ItPmRhdGEoKSk7CiAgICAgfSBpbnRlcmFjdGlvblN0b3BwZWRIYW5kbGVyOl4oKSB7
CiAgICAgICAgIFtzZWxmIF9jbGVhckltbWVkaWF0ZUFjdGlvblN0YXRlXTsKICAgICB9XTsKQEAg
LTQ3NCw3ICs0NzQsOCBAQCB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogCiAgICAgUmV0YWluUHRy
PE5TTXV0YWJsZURpY3Rpb25hcnk+IG11dGFibGVPcHRpb25zID0gYWRvcHROUyhbKE5TRGljdGlv
bmFyeSAqKWRpY3Rpb25hcnlQb3B1cEluZm8ub3B0aW9ucy5nZXQoKSBtdXRhYmxlQ29weV0pOwog
ICAgIGlmIChjYW5Mb2FkTFVUZXJtT3B0aW9uRGlzYWJsZVNlYXJjaFRlcm1JbmRpY2F0b3IoKSAm
JiBkaWN0aW9uYXJ5UG9wdXBJbmZvLnRleHRJbmRpY2F0b3IuY29udGVudEltYWdlKSB7Ci0gICAg
ICAgIFtfd2tWaWV3IF9zZXRUZXh0SW5kaWNhdG9yOlRleHRJbmRpY2F0b3I6OmNyZWF0ZShkaWN0
aW9uYXJ5UG9wdXBJbmZvLnRleHRJbmRpY2F0b3IpIGZhZGVPdXQ6Tk9dOworICAgICAgICBSZWZQ
dHI8VGV4dEluZGljYXRvcj4gaW5kaWNhdG9yID0gVGV4dEluZGljYXRvcjo6Y3JlYXRlKGRpY3Rp
b25hcnlQb3B1cEluZm8udGV4dEluZGljYXRvcik7CisgICAgICAgIFtfd2tWaWV3IF9zZXRUZXh0
SW5kaWNhdG9yOippbmRpY2F0b3Igd2l0aExpZmV0aW1lOlRleHRJbmRpY2F0b3JMaWZldGltZTo6
UGVybWFuZW50XTsKICAgICAgICAgW211dGFibGVPcHRpb25zIHNldE9iamVjdDpAWUVTIGZvcktl
eTpnZXRMVVRlcm1PcHRpb25EaXNhYmxlU2VhcmNoVGVybUluZGljYXRvcigpXTsKICAgICAgICAg
cmV0dXJuIFtnZXRMVUxvb2t1cERlZmluaXRpb25Nb2R1bGVDbGFzcygpIGxvb2t1cEFuaW1hdGlv
bkNvbnRyb2xsZXJGb3JUZXJtOmRpY3Rpb25hcnlQb3B1cEluZm8uYXR0cmlidXRlZFN0cmluZy5z
dHJpbmcuZ2V0KCkgYXRMb2NhdGlvbjp0ZXh0QmFzZWxpbmVPcmlnaW4gb3B0aW9uczptdXRhYmxl
T3B0aW9ucy5nZXQoKV07CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL0ZpbmRDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9GaW5kQ29udHJvbGxlci5jcHAKaW5kZXggZTA0YTEzOGM0OWM1ZTk3YjUzYjVm
YjVhZTE3YjAxMjlkNjA5NWJhOC4uOWNjODZkNGZmYTVlNDBlMTE3YjYxZTViMjBlNDg2OTdkM2Vi
YmU5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0ZpbmRD
b250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRmlu
ZENvbnRyb2xsZXIuY3BwCkBAIC0zMjIsNyArMzIyLDcgQEAgYm9vbCBGaW5kQ29udHJvbGxlcjo6
dXBkYXRlRmluZEluZGljYXRvcihGcmFtZSYgc2VsZWN0ZWRGcmFtZSwgYm9vbCBpc1Nob3dpbmdP
dmUKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgbV9maW5kSW5kaWNhdG9yUmVjdCA9IGVu
Y2xvc2luZ0ludFJlY3QoaW5kaWNhdG9yLT5zZWxlY3Rpb25SZWN0SW5Sb290Vmlld0Nvb3JkaW5h
dGVzKCkpOwotICAgIG1fd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTZXRU
ZXh0SW5kaWNhdG9yKGluZGljYXRvci0+ZGF0YSgpLCAhaXNTaG93aW5nT3ZlcmxheSkpOworICAg
IG1fd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTZXRUZXh0SW5kaWNhdG9y
KGluZGljYXRvci0+ZGF0YSgpLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4oaXNTaG93aW5nT3Zlcmxh
eSA/IFRleHRJbmRpY2F0b3JMaWZldGltZTo6UGVybWFuZW50IDogVGV4dEluZGljYXRvckxpZmV0
aW1lOjpUZW1wb3JhcnkpKSk7CiAgICAgbV9pc1Nob3dpbmdGaW5kSW5kaWNhdG9yID0gdHJ1ZTsK
IAogICAgIHJldHVybiB0cnVlOwo=
</data>
<flag name="review"
          id="276697"
          type_id="1"
          status="+"
          setter="bdakin"
    />
          </attachment>
      

    </bug>

</bugzilla>