<?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>3729</bug_id>
          
          <creation_ts>2005-06-26 17:13:49 -0700</creation_ts>
          <short_desc>right/left arrow keys move forward/backward through document instead of right/left in RTL text</short_desc>
          <delta_ts>2009-01-07 11:21:53 -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>HTML Editing</component>
          <version>412</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>InRadar, Regression</keywords>
          <priority>P1</priority>
          <bug_severity>Major</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>3710</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Darin Adler">darin</reporter>
          <assigned_to>mitz</assigned_to>
          <cc>ian</cc>
    
    <cc>KwhiteRight</cc>
    
    <cc>mitz</cc>
    
    <cc>mohannad.harthi</cc>
    
    <cc>oliver</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>13265</commentid>
    <comment_count>0</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2005-06-26 17:13:49 -0700</bug_when>
    <thetext>Also in Radar as:

    &lt;rdar://problem/4036353&gt; RTL: arrow keys move insertion bar backwards in RTL text

Easy to reproduce by typing in some Hebrew text, and then using the arrow keys. You&apos;ll move forward/
back through the document rather than left/right through the visible text.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>13266</commentid>
    <comment_count>1</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2005-06-26 17:14:50 -0700</bug_when>
    <thetext>My patch in bug 3710 has some relevant related changes, so it might be good to fix that bug first.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>38007</commentid>
    <comment_count>2</comment_count>
    <who name="">mitz</who>
    <bug_when>2006-03-30 12:44:37 -0800</bug_when>
    <thetext>Raising to P1 since this causes a regression with the new text fields.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>38335</commentid>
    <comment_count>3</comment_count>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2006-04-02 23:25:34 -0700</bug_when>
    <thetext>These are all text field regressions so they should all be P1.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>51111</commentid>
    <comment_count>4</comment_count>
    <who name="">mitz</who>
    <bug_when>2006-07-29 08:08:46 -0700</bug_when>
    <thetext>Here&apos;s one of the relatively simple cases that I just don&apos;t know how to solve (uppercase letters are RTL):

&lt;div style=&quot;direction:ltr&quot;&gt;
abcABC&lt;span&gt;DEF&lt;/span&gt;
&lt;/div&gt;

It is laid out as

abcFEDCBA

The primary caret positions, from left to right, should be:
div.text[0] div.text[1] div.text[2] div.text[3] span.text[2] span.text[1] span.text[0] div.text[5] div.text[4] span.text[3]

That last step, from div.text[4] to span.text[3] is the tricky one, and so is recognizing that span.text[3] is a rightmost position.

There is also a variant where there is another text node after the span, but that text node wraps to the next line.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>56557</commentid>
    <comment_count>5</comment_count>
      <attachid>10786</attachid>
    <who name="Justin Garcia">justin.garcia</who>
    <bug_when>2006-09-26 13:06:57 -0700</bug_when>
    <thetext>Created attachment 10786
unfinished patch

Here&apos;s an unfinished patch written a while back by an Apple Engineer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>79078</commentid>
    <comment_count>6</comment_count>
    <who name="">mitz</who>
    <bug_when>2008-04-27 21:51:00 -0700</bug_when>
    <thetext>Fixed in &lt;http://trac.webkit.org/changeset/32605&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>104735</commentid>
    <comment_count>7</comment_count>
    <who name="">mitz</who>
    <bug_when>2009-01-07 11:21:53 -0800</bug_when>
    <thetext>*** Bug 20612 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>10786</attachid>
            <date>2006-09-26 13:06:57 -0700</date>
            <delta_ts>2006-09-26 13:06:57 -0700</delta_ts>
            <desc>unfinished patch</desc>
            <filename>bidiarrow.txt</filename>
            <type>text/plain</type>
            <size>23573</size>
            <attacher name="Justin Garcia">justin.garcia</attacher>
            
              <data encoding="base64">PyBiaWRpYXJyb3cudHh0Cj8gYnVpbGQKPyBraHRtbC50Z3oKSW5kZXg6IGtodG1sL2VkaXRpbmcv
c2VsZWN0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvbG9jYWwvaG9tZS9jdnMvTGFieXJp
bnRoL1dlYkNvcmUva2h0bWwvZWRpdGluZy9zZWxlY3Rpb24uY3BwLHYKcmV0cmlldmluZyByZXZp
c2lvbiAxLjc5CmRpZmYgLXUgLWIgLWQgLXIxLjc5IHNlbGVjdGlvbi5jcHAKLS0tIHNlbGVjdGlv
bi5jcHAJMjAwNS8wMi8xNCAxODoxOToxNwkxLjc5CisrKyBzZWxlY3Rpb24uY3BwCTIwMDUvMDMv
MTAgMDU6NDg6MTUKQEAgLTI0MiwxMiArMjQyLDEyIEBACiAgICAgfQogfQogCi1WaXNpYmxlUG9z
aXRpb24gU2VsZWN0aW9uOjptb2RpZnlFeHRlbmRpbmdSaWdodEZvcndhcmQoRVRleHRHcmFudWxh
cml0eSBncmFudWxhcml0eSkKK1Zpc2libGVQb3NpdGlvbiBTZWxlY3Rpb246Om1vZGlmeUV4dGVu
ZGluZ1JpZ2h0Rm9yd2FyZChFVGV4dEdyYW51bGFyaXR5IGdyYW51bGFyaXR5LGJvb2wgbW92ZVZp
c3VhbGx5KQogewogICAgIFZpc2libGVQb3NpdGlvbiBwb3MobV9leHRlbnQsIG1fYWZmaW5pdHkp
OwogICAgIHN3aXRjaCAoZ3JhbnVsYXJpdHkpIHsKICAgICAgICAgY2FzZSBDSEFSQUNURVI6Ci0g
ICAgICAgICAgICBwb3MgPSBwb3MubmV4dCgpOworICAgICAgICAgICAgcG9zID0gKG1vdmVWaXN1
YWxseSA/IHBvcy5yaWdodCgpIDogcG9zLm5leHQoKSk7CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgY2FzZSBXT1JEOgogICAgICAgICAgICAgcG9zID0gbmV4dFdvcmRQb3NpdGlvbihwb3Mp
OwpAQCAtMjcyLDE1ICsyNzIsMTcgQEAKICAgICByZXR1cm4gcG9zOwogfQogCi1WaXNpYmxlUG9z
aXRpb24gU2VsZWN0aW9uOjptb2RpZnlNb3ZpbmdSaWdodEZvcndhcmQoRVRleHRHcmFudWxhcml0
eSBncmFudWxhcml0eSkKK1Zpc2libGVQb3NpdGlvbiBTZWxlY3Rpb246Om1vZGlmeU1vdmluZ1Jp
Z2h0Rm9yd2FyZChFVGV4dEdyYW51bGFyaXR5IGdyYW51bGFyaXR5LGJvb2wgbW92ZVZpc3VhbGx5
KQogewogICAgIFZpc2libGVQb3NpdGlvbiBwb3M7CiAgICAgc3dpdGNoIChncmFudWxhcml0eSkg
ewogICAgICAgICBjYXNlIENIQVJBQ1RFUjoKICAgICAgICAgICAgIGlmIChpc1JhbmdlKCkpIAog
ICAgICAgICAgICAgICAgIHBvcyA9IFZpc2libGVQb3NpdGlvbihtX2VuZCwgbV9hZmZpbml0eSk7
Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgcG9zID0gVmlzaWJsZVBvc2l0aW9u
KG1fZXh0ZW50LCBtX2FmZmluaXR5KS5uZXh0KCk7CisgICAgICAgICAgICBlbHNlIHsKKwkJcG9z
ID0gVmlzaWJsZVBvc2l0aW9uKG1fZXh0ZW50LCBtX2FmZmluaXR5KTsKKwkJcG9zID0gKG1vdmVW
aXN1YWxseSA/IHBvcy5yaWdodCgpIDogcG9zLm5leHQoKSk7CisJICAgIH0KICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICBjYXNlIFdPUkQ6CiAgICAgICAgICAgICBwb3MgPSBuZXh0V29yZFBv
c2l0aW9uKFZpc2libGVQb3NpdGlvbihtX2V4dGVudCwgbV9hZmZpbml0eSkpOwpAQCAtMzA5LDEy
ICszMTEsMTIgQEAKICAgICByZXR1cm4gcG9zOwogfQogCi1WaXNpYmxlUG9zaXRpb24gU2VsZWN0
aW9uOjptb2RpZnlFeHRlbmRpbmdMZWZ0QmFja3dhcmQoRVRleHRHcmFudWxhcml0eSBncmFudWxh
cml0eSkKK1Zpc2libGVQb3NpdGlvbiBTZWxlY3Rpb246Om1vZGlmeUV4dGVuZGluZ0xlZnRCYWNr
d2FyZChFVGV4dEdyYW51bGFyaXR5IGdyYW51bGFyaXR5LGJvb2wgbW92ZVZpc3VhbGx5KQogewog
ICAgIFZpc2libGVQb3NpdGlvbiBwb3MobV9leHRlbnQsIG1fYWZmaW5pdHkpOwogICAgIHN3aXRj
aCAoZ3JhbnVsYXJpdHkpIHsKICAgICAgICAgY2FzZSBDSEFSQUNURVI6Ci0gICAgICAgICAgICBw
b3MgPSBwb3MucHJldmlvdXMoKTsKKyAgICAgICAgICAgIHBvcyA9IChtb3ZlVmlzdWFsbHkgPyBw
b3MubGVmdCgpIDogcG9zLnByZXZpb3VzKCkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IGNhc2UgV09SRDoKICAgICAgICAgICAgIHBvcyA9IHByZXZpb3VzV29yZFBvc2l0aW9uKHBvcyk7
CkBAIC0zMzgsMTUgKzM0MCwxNyBAQAogICAgIHJldHVybiBwb3M7CiB9CiAKLVZpc2libGVQb3Np
dGlvbiBTZWxlY3Rpb246Om1vZGlmeU1vdmluZ0xlZnRCYWNrd2FyZChFVGV4dEdyYW51bGFyaXR5
IGdyYW51bGFyaXR5KQorVmlzaWJsZVBvc2l0aW9uIFNlbGVjdGlvbjo6bW9kaWZ5TW92aW5nTGVm
dEJhY2t3YXJkKEVUZXh0R3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHksYm9vbCBtb3ZlVmlzdWFsbHkp
CiB7CiAgICAgVmlzaWJsZVBvc2l0aW9uIHBvczsKICAgICBzd2l0Y2ggKGdyYW51bGFyaXR5KSB7
CiAgICAgICAgIGNhc2UgQ0hBUkFDVEVSOgogICAgICAgICAgICAgaWYgKGlzUmFuZ2UoKSkgCiAg
ICAgICAgICAgICAgICAgcG9zID0gVmlzaWJsZVBvc2l0aW9uKG1fc3RhcnQsIG1fYWZmaW5pdHkp
OwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHBvcyA9IFZpc2libGVQb3NpdGlv
bihtX2V4dGVudCwgbV9hZmZpbml0eSkucHJldmlvdXMoKTsKKyAgICAgICAgICAgIGVsc2Ugewor
ICAgICAgICAgICAgICAgIHBvcyA9IFZpc2libGVQb3NpdGlvbihtX2V4dGVudCwgbV9hZmZpbml0
eSk7CisJCXBvcyA9IChtb3ZlVmlzdWFsbHkgPyBwb3MubGVmdCgpIDogcG9zLnByZXZpb3VzKCkp
OworCSAgICB9CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBXT1JEOgogICAgICAg
ICAgICAgcG9zID0gcHJldmlvdXNXb3JkUG9zaXRpb24oVmlzaWJsZVBvc2l0aW9uKG1fZXh0ZW50
LCBtX2FmZmluaXR5KSk7CkBAIC0zNzgsMTggKzM4MiwyOCBAQAogICAgIHN3aXRjaCAoZGlyKSB7
CiAgICAgICAgIC8vIEVESVQgRklYTUU6IFRoZXNlIG5lZWQgdG8gaGFuZGxlIGJpZGkKICAgICAg
ICAgY2FzZSBSSUdIVDoKKyAgICAgICAgICAgIGlmIChhbHRlciA9PSBFWFRFTkQpCisgICAgICAg
ICAgICAgICAgcG9zID0gbW9kaWZ5RXh0ZW5kaW5nUmlnaHRGb3J3YXJkKGdyYW51bGFyaXR5LHRy
dWUpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHBvcyA9IG1vZGlmeU1vdmlu
Z1JpZ2h0Rm9yd2FyZChncmFudWxhcml0eSx0cnVlKTsKKwkgICAgYnJlYWs7CiAgICAgICAgIGNh
c2UgRk9SV0FSRDoKICAgICAgICAgICAgIGlmIChhbHRlciA9PSBFWFRFTkQpCi0gICAgICAgICAg
ICAgICAgcG9zID0gbW9kaWZ5RXh0ZW5kaW5nUmlnaHRGb3J3YXJkKGdyYW51bGFyaXR5KTsKKyAg
ICAgICAgICAgICAgICBwb3MgPSBtb2RpZnlFeHRlbmRpbmdSaWdodEZvcndhcmQoZ3JhbnVsYXJp
dHksZmFsc2UpOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHBvcyA9IG1vZGlm
eU1vdmluZ1JpZ2h0Rm9yd2FyZChncmFudWxhcml0eSk7CisgICAgICAgICAgICAgICAgcG9zID0g
bW9kaWZ5TW92aW5nUmlnaHRGb3J3YXJkKGdyYW51bGFyaXR5LGZhbHNlKTsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICBjYXNlIExFRlQ6CisgICAgICAgICAgICBpZiAoYWx0ZXIgPT0gRVhU
RU5EKQorICAgICAgICAgICAgICAgIHBvcyA9IG1vZGlmeUV4dGVuZGluZ0xlZnRCYWNrd2FyZChn
cmFudWxhcml0eSx0cnVlKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBwb3Mg
PSBtb2RpZnlNb3ZpbmdMZWZ0QmFja3dhcmQoZ3JhbnVsYXJpdHksdHJ1ZSk7CisgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgY2FzZSBCQUNLV0FSRDoKICAgICAgICAgICAgIGlmIChhbHRlciA9
PSBFWFRFTkQpCi0gICAgICAgICAgICAgICAgcG9zID0gbW9kaWZ5RXh0ZW5kaW5nTGVmdEJhY2t3
YXJkKGdyYW51bGFyaXR5KTsKKyAgICAgICAgICAgICAgICBwb3MgPSBtb2RpZnlFeHRlbmRpbmdM
ZWZ0QmFja3dhcmQoZ3JhbnVsYXJpdHksZmFsc2UpOwogICAgICAgICAgICAgZWxzZQotICAgICAg
ICAgICAgICAgIHBvcyA9IG1vZGlmeU1vdmluZ0xlZnRCYWNrd2FyZChncmFudWxhcml0eSk7Cisg
ICAgICAgICAgICAgICAgcG9zID0gbW9kaWZ5TW92aW5nTGVmdEJhY2t3YXJkKGdyYW51bGFyaXR5
LGZhbHNlKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgIH0KIApJbmRleDoga2h0bWwvZWRpdGlu
Zy9zZWxlY3Rpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvbG9jYWwvaG9tZS9jdnMvTGFieXJp
bnRoL1dlYkNvcmUva2h0bWwvZWRpdGluZy9zZWxlY3Rpb24uaCx2CnJldHJpZXZpbmcgcmV2aXNp
b24gMS4zNQpkaWZmIC11IC1iIC1kIC1yMS4zNSBzZWxlY3Rpb24uaAotLS0gc2VsZWN0aW9uLmgJ
MjAwNS8wMi8xMCAwMDozMDowNQkxLjM1CisrKyBzZWxlY3Rpb24uaAkyMDA1LzAzLzEwIDA1OjQ4
OjE1CkBAIC0xMjYsMTAgKzEyNiwxMCBAQAogICAgIHZvaWQgaW5pdChFQWZmaW5pdHkgYWZmaW5p
dHkpOwogICAgIHZvaWQgdmFsaWRhdGUoRVRleHRHcmFudWxhcml0eSBncmFudWxhcml0eSA9IENI
QVJBQ1RFUik7CiAKLSAgICBWaXNpYmxlUG9zaXRpb24gbW9kaWZ5RXh0ZW5kaW5nUmlnaHRGb3J3
YXJkKEVUZXh0R3JhbnVsYXJpdHkpOwotICAgIFZpc2libGVQb3NpdGlvbiBtb2RpZnlNb3ZpbmdS
aWdodEZvcndhcmQoRVRleHRHcmFudWxhcml0eSk7Ci0gICAgVmlzaWJsZVBvc2l0aW9uIG1vZGlm
eUV4dGVuZGluZ0xlZnRCYWNrd2FyZChFVGV4dEdyYW51bGFyaXR5KTsKLSAgICBWaXNpYmxlUG9z
aXRpb24gbW9kaWZ5TW92aW5nTGVmdEJhY2t3YXJkKEVUZXh0R3JhbnVsYXJpdHkpOworICAgIFZp
c2libGVQb3NpdGlvbiBtb2RpZnlFeHRlbmRpbmdSaWdodEZvcndhcmQoRVRleHRHcmFudWxhcml0
eSxib29sIG1vdmVWaXN1YWxseSk7CisgICAgVmlzaWJsZVBvc2l0aW9uIG1vZGlmeU1vdmluZ1Jp
Z2h0Rm9yd2FyZChFVGV4dEdyYW51bGFyaXR5LGJvb2wgbW92ZVZpc3VhbGx5KTsKKyAgICBWaXNp
YmxlUG9zaXRpb24gbW9kaWZ5RXh0ZW5kaW5nTGVmdEJhY2t3YXJkKEVUZXh0R3JhbnVsYXJpdHks
Ym9vbCBtb3ZlVmlzdWFsbHkpOworICAgIFZpc2libGVQb3NpdGlvbiBtb2RpZnlNb3ZpbmdMZWZ0
QmFja3dhcmQoRVRleHRHcmFudWxhcml0eSxib29sIG1vdmVWaXN1YWxseSk7CiAKICAgICB2b2lk
IGxheW91dCgpOwogICAgIHZvaWQgbmVlZHNDYXJldFJlcGFpbnQoKTsKSW5kZXg6IGtodG1sL2Vk
aXRpbmcvdmlzaWJsZV9wb3NpdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2xvY2FsL2hv
bWUvY3ZzL0xhYnlyaW50aC9XZWJDb3JlL2todG1sL2VkaXRpbmcvdmlzaWJsZV9wb3NpdGlvbi5j
cHAsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMzgKZGlmZiAtdSAtYiAtZCAtcjEuMzggdmlzaWJs
ZV9wb3NpdGlvbi5jcHAKLS0tIHZpc2libGVfcG9zaXRpb24uY3BwCTIwMDUvMDMvMDYgMDg6MDM6
NTYJMS4zOAorKysgdmlzaWJsZV9wb3NpdGlvbi5jcHAJMjAwNS8wMy8xMCAwNTo0ODoxNQpAQCAt
OTYsMTkgKzk2LDE5IEBACiAKICAgICBpZiAoaXNDYW5kaWRhdGUoZGVlcFBvcykpIHsKICAgICAg
ICAgbV9kZWVwUG9zaXRpb24gPSBkZWVwUG9zOwotICAgICAgICBQb3NpdGlvbiBuZXh0ID0gbmV4
dFZpc2libGVQb3NpdGlvbihkZWVwUG9zKTsKKyAgICAgICAgUG9zaXRpb24gbmV4dCA9IG5leHRW
aXNpYmxlUG9zaXRpb24oZGVlcFBvcyxmYWxzZSk7CiAgICAgICAgIGlmIChuZXh0LmlzTm90TnVs
bCgpKSB7Ci0gICAgICAgICAgICBQb3NpdGlvbiBwcmV2aW91cyA9IHByZXZpb3VzVmlzaWJsZVBv
c2l0aW9uKG5leHQpOworICAgICAgICAgICAgUG9zaXRpb24gcHJldmlvdXMgPSBwcmV2aW91c1Zp
c2libGVQb3NpdGlvbihuZXh0LGZhbHNlKTsKICAgICAgICAgICAgIGlmIChwcmV2aW91cy5pc05v
dE51bGwoKSkKICAgICAgICAgICAgICAgICBtX2RlZXBQb3NpdGlvbiA9IHByZXZpb3VzOwogICAg
ICAgICB9CiAgICAgfQogICAgIGVsc2UgewotICAgICAgICBQb3NpdGlvbiBwcmV2aW91cyA9IHBy
ZXZpb3VzVmlzaWJsZVBvc2l0aW9uKGRlZXBQb3MpOworICAgICAgICBQb3NpdGlvbiBwcmV2aW91
cyA9IHByZXZpb3VzVmlzaWJsZVBvc2l0aW9uKGRlZXBQb3MsZmFsc2UpOwogICAgICAgICBpZiAo
cHJldmlvdXMuaXNOb3ROdWxsKCkpIHsKICAgICAgICAgICAgIG1fZGVlcFBvc2l0aW9uID0gcHJl
dmlvdXM7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBQb3NpdGlvbiBuZXh0ID0gbmV4
dFZpc2libGVQb3NpdGlvbihkZWVwUG9zKTsKKyAgICAgICAgICAgIFBvc2l0aW9uIG5leHQgPSBu
ZXh0VmlzaWJsZVBvc2l0aW9uKGRlZXBQb3MsZmFsc2UpOwogICAgICAgICAgICAgaWYgKG5leHQu
aXNOb3ROdWxsKCkpCiAgICAgICAgICAgICAgICAgbV9kZWVwUG9zaXRpb24gPSBuZXh0OwogICAg
ICAgICB9CkBAIC0xMjEsMTkgKzEyMSwxOSBAQAogCiAgICAgaWYgKGlzQ2FuZGlkYXRlKGRlZXBQ
b3MpKSB7CiAgICAgICAgIG1fZGVlcFBvc2l0aW9uID0gZGVlcFBvczsKLSAgICAgICAgUG9zaXRp
b24gcHJldmlvdXMgPSBwcmV2aW91c1Zpc2libGVQb3NpdGlvbihkZWVwUG9zKTsKKyAgICAgICAg
UG9zaXRpb24gcHJldmlvdXMgPSBwcmV2aW91c1Zpc2libGVQb3NpdGlvbihkZWVwUG9zLGZhbHNl
KTsKICAgICAgICAgaWYgKHByZXZpb3VzLmlzTm90TnVsbCgpKSB7Ci0gICAgICAgICAgICBQb3Np
dGlvbiBuZXh0ID0gbmV4dFZpc2libGVQb3NpdGlvbihwcmV2aW91cyk7CisgICAgICAgICAgICBQ
b3NpdGlvbiBuZXh0ID0gbmV4dFZpc2libGVQb3NpdGlvbihwcmV2aW91cyxmYWxzZSk7CiAgICAg
ICAgICAgICBpZiAobmV4dC5pc05vdE51bGwoKSkKICAgICAgICAgICAgICAgICBtX2RlZXBQb3Np
dGlvbiA9IG5leHQ7CiAgICAgICAgIH0KICAgICB9CiAgICAgZWxzZSB7Ci0gICAgICAgIFBvc2l0
aW9uIG5leHQgPSBuZXh0VmlzaWJsZVBvc2l0aW9uKGRlZXBQb3MpOworICAgICAgICBQb3NpdGlv
biBuZXh0ID0gbmV4dFZpc2libGVQb3NpdGlvbihkZWVwUG9zLGZhbHNlKTsKICAgICAgICAgaWYg
KG5leHQuaXNOb3ROdWxsKCkpIHsKICAgICAgICAgICAgIG1fZGVlcFBvc2l0aW9uID0gbmV4dDsK
ICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIFBvc2l0aW9uIHByZXZpb3VzID0gcHJldmlv
dXNWaXNpYmxlUG9zaXRpb24oZGVlcFBvcyk7CisgICAgICAgICAgICBQb3NpdGlvbiBwcmV2aW91
cyA9IHByZXZpb3VzVmlzaWJsZVBvc2l0aW9uKGRlZXBQb3MsZmFsc2UpOwogICAgICAgICAgICAg
aWYgKHByZXZpb3VzLmlzTm90TnVsbCgpKQogICAgICAgICAgICAgICAgIG1fZGVlcFBvc2l0aW9u
ID0gcHJldmlvdXM7CiAgICAgICAgIH0KQEAgLTE0MiwxNCArMTQyLDE0IEBACiAKIFZpc2libGVQ
b3NpdGlvbiBWaXNpYmxlUG9zaXRpb246Om5leHQoKSBjb25zdAogewotICAgIFZpc2libGVQb3Np
dGlvbiByZXN1bHQgPSBWaXNpYmxlUG9zaXRpb24obmV4dFZpc2libGVQb3NpdGlvbihtX2RlZXBQ
b3NpdGlvbiksIG1fYWZmaW5pdHkpOworICAgIFZpc2libGVQb3NpdGlvbiByZXN1bHQgPSBWaXNp
YmxlUG9zaXRpb24obmV4dFZpc2libGVQb3NpdGlvbihtX2RlZXBQb3NpdGlvbixmYWxzZSksIG1f
YWZmaW5pdHkpOwogICAgIHNldEFmZmluaXR5VXNpbmdMaW5lUG9zaXRpb24ocmVzdWx0KTsKICAg
ICByZXR1cm4gcmVzdWx0OwogfQogCiBWaXNpYmxlUG9zaXRpb24gVmlzaWJsZVBvc2l0aW9uOjpw
cmV2aW91cygpIGNvbnN0CiB7Ci0gICAgVmlzaWJsZVBvc2l0aW9uIHJlc3VsdCA9ICBWaXNpYmxl
UG9zaXRpb24ocHJldmlvdXNWaXNpYmxlUG9zaXRpb24obV9kZWVwUG9zaXRpb24pLCBET1dOU1RS
RUFNKTsKKyAgICBWaXNpYmxlUG9zaXRpb24gcmVzdWx0ID0gIFZpc2libGVQb3NpdGlvbihwcmV2
aW91c1Zpc2libGVQb3NpdGlvbihtX2RlZXBQb3NpdGlvbixmYWxzZSksIERPV05TVFJFQU0pOwog
CiAjaWZuZGVmIE5ERUJVRwogICAgIC8vIHdlIHNob3VsZCBhbHdheXMgYmUgYWJsZSB0byBtYWtl
IHRoZSBhZmZpbml0eSBET1dOU1RSRUFNLCBiZWNhdXNlIGdvaW5nIHByZXZpb3VzIGZyb20gYW4K
QEAgLTE2Myw3ICsxNjMsMzEgQEAKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1Qb3NpdGlvbiBW
aXNpYmxlUG9zaXRpb246OnByZXZpb3VzVmlzaWJsZVBvc2l0aW9uKGNvbnN0IFBvc2l0aW9uICZw
b3MpCitWaXNpYmxlUG9zaXRpb24gVmlzaWJsZVBvc2l0aW9uOjpyaWdodCgpIGNvbnN0Cit7Cisg
ICAgVmlzaWJsZVBvc2l0aW9uIHJlc3VsdCA9IFZpc2libGVQb3NpdGlvbihuZXh0VmlzaWJsZVBv
c2l0aW9uKG1fZGVlcFBvc2l0aW9uLHRydWUpLCBtX2FmZmluaXR5KTsKKyAgICBzZXRBZmZpbml0
eVVzaW5nTGluZVBvc2l0aW9uKHJlc3VsdCk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworVmlz
aWJsZVBvc2l0aW9uIFZpc2libGVQb3NpdGlvbjo6bGVmdCgpIGNvbnN0Cit7CisgICAgVmlzaWJs
ZVBvc2l0aW9uIHJlc3VsdCA9ICBWaXNpYmxlUG9zaXRpb24ocHJldmlvdXNWaXNpYmxlUG9zaXRp
b24obV9kZWVwUG9zaXRpb24sdHJ1ZSksIERPV05TVFJFQU0pOworICAgIAorI2lmbmRlZiBOREVC
VUcKKyAgICAvLyB3ZSBzaG91bGQgYWx3YXlzIGJlIGFibGUgdG8gbWFrZSB0aGUgYWZmaW5pdHkg
RE9XTlNUUkVBTSwgYmVjYXVzZSBnb2luZyBwcmV2aW91cyBmcm9tIGFuCisgICAgLy8gVVBTVFJF
QU0gcG9zaXRpb24gY2FuIG5ldmVyIHlpZWxkIGFub3RoZXIgVVBTVFJFQU0gcG9zaXRpb24gKHVu
bGVzcyBsaW5lIHdyYXAgbGVuZ3RoIGlzIDAhKS4KKyAgICBpZiAocmVzdWx0LmlzTm90TnVsbCgp
ICYmIG1fYWZmaW5pdHkgPT0gVVBTVFJFQU0pIHsKKyAgICAgICAgVmlzaWJsZVBvc2l0aW9uIHRl
bXAgPSByZXN1bHQ7CisgICAgICAgIHRlbXAuc2V0QWZmaW5pdHkoVVBTVFJFQU0pOworICAgICAg
ICBBU1NFUlQoIXZpc2libGVQb3NpdGlvbnNPbkRpZmZlcmVudExpbmVzKHRlbXAsIHJlc3VsdCkp
OworICAgIH0KKyNlbmRpZgorICAgIHJldHVybiByZXN1bHQ7Cit9CisKKworUG9zaXRpb24gVmlz
aWJsZVBvc2l0aW9uOjpwcmV2aW91c1Zpc2libGVQb3NpdGlvbihjb25zdCBQb3NpdGlvbiAmcG9z
LGJvb2wgbW92ZVZpc3VhbGx5KQogewogICAgIGlmIChwb3MuaXNOdWxsKCkgfHwgYXRTdGFydChw
b3MpKQogICAgICAgICByZXR1cm4gUG9zaXRpb24oKTsKQEAgLTE3NCw3ICsxOTgsNyBAQAogCiAg
ICAgUG9zaXRpb24gY3VycmVudCA9IHRlc3Q7CiAgICAgd2hpbGUgKCFhdFN0YXJ0KGN1cnJlbnQp
KSB7Ci0gICAgICAgIGN1cnJlbnQgPSBwcmV2aW91c1Bvc2l0aW9uKGN1cnJlbnQpOworICAgICAg
ICBjdXJyZW50ID0gcHJldmlvdXNQb3NpdGlvbihjdXJyZW50LG1vdmVWaXN1YWxseSk7CiAgICAg
ICAgIGlmIChpc0NhbmRpZGF0ZShjdXJyZW50KSAmJiAoYWNjZXB0QW55VmlzaWJsZVBvc2l0aW9u
IHx8IChkb3duc3RyZWFtVGVzdCAhPSBjdXJyZW50LmRvd25zdHJlYW0oU3RheUluQmxvY2spKSkp
IHsKICAgICAgICAgICAgIHJldHVybiBjdXJyZW50OwogICAgICAgICB9CkBAIC0xODMsNyArMjA3
LDcgQEAKICAgICByZXR1cm4gUG9zaXRpb24oKTsKIH0KIAotUG9zaXRpb24gVmlzaWJsZVBvc2l0
aW9uOjpuZXh0VmlzaWJsZVBvc2l0aW9uKGNvbnN0IFBvc2l0aW9uICZwb3MpCitQb3NpdGlvbiBW
aXNpYmxlUG9zaXRpb246Om5leHRWaXNpYmxlUG9zaXRpb24oY29uc3QgUG9zaXRpb24gJnBvcyxi
b29sIG1vdmVWaXN1YWxseSkKIHsKICAgICBpZiAocG9zLmlzTnVsbCgpIHx8IGF0RW5kKHBvcykp
CiAgICAgICAgIHJldHVybiBQb3NpdGlvbigpOwpAQCAtMTk0LDcgKzIxOCw3IEBACiAgICAgUG9z
aXRpb24gY3VycmVudCA9IHRlc3Q7CiAgICAgUG9zaXRpb24gZG93bnN0cmVhbVRlc3QgPSB0ZXN0
LmRvd25zdHJlYW0oU3RheUluQmxvY2spOwogICAgIHdoaWxlICghYXRFbmQoY3VycmVudCkpIHsK
LSAgICAgICAgY3VycmVudCA9IG5leHRQb3NpdGlvbihjdXJyZW50KTsKKyAgICAgICAgY3VycmVu
dCA9IG5leHRQb3NpdGlvbihjdXJyZW50LG1vdmVWaXN1YWxseSk7CiAgICAgICAgIGlmIChpc0Nh
bmRpZGF0ZShjdXJyZW50KSAmJiAoYWNjZXB0QW55VmlzaWJsZVBvc2l0aW9uIHx8IChkb3duc3Ry
ZWFtVGVzdCAhPSBjdXJyZW50LmRvd25zdHJlYW0oU3RheUluQmxvY2spKSkpIHsKICAgICAgICAg
ICAgIHJldHVybiBjdXJyZW50OwogICAgICAgICB9CkBAIC0yMDMsNyArMjI3LDcgQEAKICAgICBy
ZXR1cm4gUG9zaXRpb24oKTsKIH0KIAotUG9zaXRpb24gVmlzaWJsZVBvc2l0aW9uOjpwcmV2aW91
c1Bvc2l0aW9uKGNvbnN0IFBvc2l0aW9uICZwb3MpCitQb3NpdGlvbiBWaXNpYmxlUG9zaXRpb246
OnByZXZpb3VzUG9zaXRpb24oY29uc3QgUG9zaXRpb24gJnBvcyxib29sIG1vdmVWaXN1YWxseSkK
IHsKICAgICBpZiAocG9zLmlzTnVsbCgpKQogICAgICAgICByZXR1cm4gcG9zOwpAQCAtMjE3LDEz
ICsyNDEsMTYgQEAKICAgICB9CiAgICAgZWxzZSB7CiAgICAgICAgIE5vZGVJbXBsICpub2RlID0g
cG9zLm5vZGUoKTsKKwlpZiAobW92ZVZpc3VhbGx5KQorCSAgICByZXN1bHQgPSBQb3NpdGlvbihu
b2RlLCBub2RlLT5uZXh0T2Zmc2V0TGVmdChwb3Mub2Zmc2V0KCkpKTsKKwllbHNlCiAgICAgICAg
IHJlc3VsdCA9IFBvc2l0aW9uKG5vZGUsIG5vZGUtPnByZXZpb3VzT2Zmc2V0KHBvcy5vZmZzZXQo
KSkpOwogICAgIH0KICAgICAKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1Qb3NpdGlvbiBWaXNp
YmxlUG9zaXRpb246Om5leHRQb3NpdGlvbihjb25zdCBQb3NpdGlvbiAmcG9zKQorUG9zaXRpb24g
VmlzaWJsZVBvc2l0aW9uOjpuZXh0UG9zaXRpb24oY29uc3QgUG9zaXRpb24gJnBvcyxib29sIG1v
dmVWaXN1YWxseSkKIHsKICAgICBpZiAocG9zLmlzTnVsbCgpKQogICAgICAgICByZXR1cm4gcG9z
OwpAQCAtMjM3LDYgKzI2NCw5IEBACiAgICAgfQogICAgIGVsc2UgewogICAgICAgICBOb2RlSW1w
bCAqbm9kZSA9IHBvcy5ub2RlKCk7CisJaWYgKG1vdmVWaXN1YWxseSkKKwkgICAgcmVzdWx0ID0g
UG9zaXRpb24obm9kZSwgbm9kZS0+bmV4dE9mZnNldFJpZ2h0KHBvcy5vZmZzZXQoKSkpOworCWVs
c2UKICAgICAgICAgcmVzdWx0ID0gUG9zaXRpb24obm9kZSwgbm9kZS0+bmV4dE9mZnNldChwb3Mu
b2Zmc2V0KCkpKTsKICAgICB9CiAgICAgCkBAIC0zNTAsNyArMzgwLDcgQEAKIAogICAgIFBvc2l0
aW9uIGN1cnJlbnQgPSBwb3M7CiAgICAgd2hpbGUgKCFhdEVuZChjdXJyZW50KSkgewotICAgICAg
ICBjdXJyZW50ID0gbmV4dFBvc2l0aW9uKGN1cnJlbnQpOworICAgICAgICBjdXJyZW50ID0gbmV4
dFBvc2l0aW9uKGN1cnJlbnQsZmFsc2UpOwogICAgICAgICBpZiAoaXNDYW5kaWRhdGUoY3VycmVu
dCkpIHsKICAgICAgICAgICAgIGlmIChkb3duc3RyZWFtVGVzdCAhPSBjdXJyZW50LmRvd25zdHJl
YW0oU3RheUluQmxvY2spKQogICAgICAgICAgICAgICAgIGJyZWFrOwpJbmRleDoga2h0bWwvZWRp
dGluZy92aXNpYmxlX3Bvc2l0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2xvY2FsL2hvbWUv
Y3ZzL0xhYnlyaW50aC9XZWJDb3JlL2todG1sL2VkaXRpbmcvdmlzaWJsZV9wb3NpdGlvbi5oLHYK
cmV0cmlldmluZyByZXZpc2lvbiAxLjIxCmRpZmYgLXUgLWIgLWQgLXIxLjIxIHZpc2libGVfcG9z
aXRpb24uaAotLS0gdmlzaWJsZV9wb3NpdGlvbi5oCTIwMDUvMDMvMDQgMjI6MzI6MTUJMS4yMQor
KysgdmlzaWJsZV9wb3NpdGlvbi5oCTIwMDUvMDMvMTAgMDU6NDg6MTUKQEAgLTc5LDYgKzc5LDkg
QEAKICAgICBWaXNpYmxlUG9zaXRpb24gbmV4dCgpIGNvbnN0OwogICAgIFZpc2libGVQb3NpdGlv
biBwcmV2aW91cygpIGNvbnN0OwogCisgICAgVmlzaWJsZVBvc2l0aW9uIHJpZ2h0KCkgY29uc3Q7
CisgICAgVmlzaWJsZVBvc2l0aW9uIGxlZnQoKSBjb25zdDsKKwogICAgIGJvb2wgaXNMYXN0SW5C
bG9jaygpIGNvbnN0OwogCiAgICAgUUNoYXIgY2hhcmFjdGVyKCkgY29uc3Q7CkBAIC0xMDAsMTEg
KzEwMywxMSBAQAogICAgIHN0YXRpYyBsb25nIG1heE9mZnNldChjb25zdCBOb2RlSW1wbCAqKTsK
ICAgICBzdGF0aWMgYm9vbCBpc0F0b21pY05vZGUoY29uc3QgTm9kZUltcGwgKik7CiAgICAgCi0g
ICAgc3RhdGljIFBvc2l0aW9uIHByZXZpb3VzVmlzaWJsZVBvc2l0aW9uKGNvbnN0IFBvc2l0aW9u
ICYpOwotICAgIHN0YXRpYyBQb3NpdGlvbiBuZXh0VmlzaWJsZVBvc2l0aW9uKGNvbnN0IFBvc2l0
aW9uICYpOworICAgIHN0YXRpYyBQb3NpdGlvbiBwcmV2aW91c1Zpc2libGVQb3NpdGlvbihjb25z
dCBQb3NpdGlvbiAmLGJvb2wgbW92ZVZpc3VhbGx5KTsKKyAgICBzdGF0aWMgUG9zaXRpb24gbmV4
dFZpc2libGVQb3NpdGlvbihjb25zdCBQb3NpdGlvbiAmLGJvb2wgbW92ZVZpc3VhbGx5KTsKIAot
ICAgIHN0YXRpYyBQb3NpdGlvbiBwcmV2aW91c1Bvc2l0aW9uKGNvbnN0IFBvc2l0aW9uICYpOwot
ICAgIHN0YXRpYyBQb3NpdGlvbiBuZXh0UG9zaXRpb24oY29uc3QgUG9zaXRpb24gJik7CisgICAg
c3RhdGljIFBvc2l0aW9uIHByZXZpb3VzUG9zaXRpb24oY29uc3QgUG9zaXRpb24gJixib29sIG1v
dmVWaXN1YWxseSk7CisgICAgc3RhdGljIFBvc2l0aW9uIG5leHRQb3NpdGlvbihjb25zdCBQb3Np
dGlvbiAmLGJvb2wgbW92ZVZpc3VhbGx5KTsKIAogICAgIHN0YXRpYyBib29sIGF0U3RhcnQoY29u
c3QgUG9zaXRpb24gJik7CiAgICAgc3RhdGljIGJvb2wgYXRFbmQoY29uc3QgUG9zaXRpb24gJik7
CkluZGV4OiBraHRtbC9yZW5kZXJpbmcvcmVuZGVyX29iamVjdC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1Mg
ZmlsZTogL2xvY2FsL2hvbWUvY3ZzL0xhYnlyaW50aC9XZWJDb3JlL2todG1sL3JlbmRlcmluZy9y
ZW5kZXJfb2JqZWN0LmNwcCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4xOTEKZGlmZiAtdSAtYiAt
ZCAtcjEuMTkxIHJlbmRlcl9vYmplY3QuY3BwCi0tLSByZW5kZXJfb2JqZWN0LmNwcAkyMDA1LzAz
LzAyIDA0OjMzOjQ5CTEuMTkxCisrKyByZW5kZXJfb2JqZWN0LmNwcAkyMDA1LzAzLzEwIDA1OjQ4
OjIzCkBAIC0yMzU3LDYgKzIzNTcsMTYgQEAKICAgICByZXR1cm4gbmV4dE9mZnNldDsKIH0KIAor
bG9uZyBSZW5kZXJPYmplY3Q6Om5leHRPZmZzZXRSaWdodCAobG9uZyBjdXJyZW50KSBjb25zdAor
eworICAgIHJldHVybiBuZXh0T2Zmc2V0KGN1cnJlbnQpOworfQorCitsb25nIFJlbmRlck9iamVj
dDo6bmV4dE9mZnNldExlZnQgKGxvbmcgY3VycmVudCkgY29uc3QKK3sKKyAgICByZXR1cm4gcHJl
dmlvdXNPZmZzZXQoY3VycmVudCk7Cit9CisKIElubGluZUJveCAqUmVuZGVyT2JqZWN0Ojppbmxp
bmVCb3gobG9uZyBvZmZzZXQsIEVBZmZpbml0eSBhZmZpbml0eSkKIHsKICAgICByZXR1cm4gaW5s
aW5lQm94V3JhcHBlcigpOwpJbmRleDoga2h0bWwvcmVuZGVyaW5nL3JlbmRlcl9vYmplY3QuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09ClJDUyBmaWxlOiAvbG9jYWwvaG9tZS9jdnMvTGFieXJpbnRoL1dlYkNvcmUva2h0
bWwvcmVuZGVyaW5nL3JlbmRlcl9vYmplY3QuaCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4xNDcK
ZGlmZiAtdSAtYiAtZCAtcjEuMTQ3IHJlbmRlcl9vYmplY3QuaAotLS0gcmVuZGVyX29iamVjdC5o
CTIwMDUvMDIvMTQgMTg6MTk6MTgJMS4xNDcKKysrIHJlbmRlcl9vYmplY3QuaAkyMDA1LzAzLzEw
IDA1OjQ4OjI0CkBAIC04NDAsNiArODQwLDkgQEAKICAgICB2aXJ0dWFsIGxvbmcgcHJldmlvdXNP
ZmZzZXQgKGxvbmcgY3VycmVudCkgY29uc3Q7CiAgICAgdmlydHVhbCBsb25nIG5leHRPZmZzZXQg
KGxvbmcgY3VycmVudCkgY29uc3Q7CiAKKyAgICB2aXJ0dWFsIGxvbmcgbmV4dE9mZnNldFJpZ2h0
IChsb25nIGN1cnJlbnQpIGNvbnN0OworICAgIHZpcnR1YWwgbG9uZyBuZXh0T2Zmc2V0TGVmdCAo
bG9uZyBjdXJyZW50KSBjb25zdDsKKyAgICAKICAgICB2aXJ0dWFsIHZvaWQgc2V0UGl4bWFwKGNv
bnN0IFFQaXhtYXAmLCBjb25zdCBRUmVjdCYsIENhY2hlZEltYWdlICopOwogCiAgICAgdmlydHVh
bCB2b2lkIHNlbGVjdGlvblN0YXJ0RW5kKGludCYgc3BvcywgaW50JiBlcG9zKTsKSW5kZXg6IGto
dG1sL3JlbmRlcmluZy9yZW5kZXJfdGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2xvY2Fs
L2hvbWUvY3ZzL0xhYnlyaW50aC9XZWJDb3JlL2todG1sL3JlbmRlcmluZy9yZW5kZXJfdGV4dC5j
cHAsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMTczCmRpZmYgLXUgLWIgLWQgLXIxLjE3MyByZW5k
ZXJfdGV4dC5jcHAKLS0tIHJlbmRlcl90ZXh0LmNwcAkyMDA1LzAzLzA4IDIxOjMxOjU1CTEuMTcz
CisrKyByZW5kZXJfdGV4dC5jcHAJMjAwNS8wMy8xMCAwNTo0ODoyNQpAQCAtNzM2LDYgKzczNiwy
MzMgQEAKICAgICByZXR1cm4gY3VycmVudCArIDE7CiB9CiAKKyNpZmRlZiBBUFBMRV9DSEFOR0VT
CisKK3ZvaWQgcHJpbnRCb3goRklMRSAqZnAsSW5saW5lVGV4dEJveCAqYm94KQoreworICAgIGlm
IChib3gpIAorCWZwcmludGYoZnAsIiglZCwlZCwlcywlZClcbiIsYm94LT5tX3N0YXJ0LGJveC0+
bV9zdGFydCtib3gtPm1fbGVuLGJveC0+bV9yZXZlcnNlZCA/ICJydGwiIDogImx0ciIsYm94LT5t
X3gpOworICAgIGVsc2UKKwlmcHJpbnRmKGZwLCJudWxsXG4iKTsKKworfQorCitJbmxpbmVUZXh0
Qm94ICpuZXh0TGVmdEJveChJbmxpbmVUZXh0Qm94ICpib3gpCit7CisgICAgaWYgKCFib3gpCisJ
cmV0dXJuIE5VTEw7CisgICAgZnByaW50ZihzdGRlcnIsImJveCA9ICIpO3ByaW50Qm94KHN0ZGVy
cixib3gpOworICAgIElubGluZVRleHRCb3gqICBvdGhlciA9IGJveC0+bmV4dFRleHRCb3goKTsK
KyAgICBmcHJpbnRmKHN0ZGVyciwib3RoZXIxID0gIik7cHJpbnRCb3goc3RkZXJyLG90aGVyKTsK
KyAgICBpZiAob3RoZXIgJiYgKG90aGVyLT5tX3ggPCBib3gtPm1feCkpCisJcmV0dXJuIG90aGVy
OworICAgIGZwcmludGYoc3RkZXJyLCJvdGhlMnIgPSAiKTtvdGhlciA9IGJveC0+cHJldlRleHRC
b3goKTsKKyAgICBwcmludEJveChzdGRlcnIsb3RoZXIpOworICAgIGlmIChvdGhlciAmJiAob3Ro
ZXItPm1feCA8IGJveC0+bV94KSkKKwlyZXR1cm4gb3RoZXI7CisgICAgcmV0dXJuIE5VTEw7Cit9
CisKK0lubGluZVRleHRCb3ggKm5leHRSaWdodEJveChJbmxpbmVUZXh0Qm94ICpib3gpCit7Cisg
ICAgaWYgKCFib3gpCisJcmV0dXJuIE5VTEw7CisgICAgcHJpbnRCb3goc3RkZXJyLGJveCk7Cisg
ICAgSW5saW5lVGV4dEJveCogIG90aGVyID0gYm94LT5uZXh0VGV4dEJveCgpOworICAgIHByaW50
Qm94KHN0ZGVycixvdGhlcik7CisgICAgaWYgKG90aGVyICYmIChvdGhlci0+bV94ID4gYm94LT5t
X3gpKQorCXJldHVybiBvdGhlcjsKKyAgICBvdGhlciA9IGJveC0+cHJldlRleHRCb3goKTsKKyAg
ICBwcmludEJveChzdGRlcnIsb3RoZXIpOworICAgIGlmIChvdGhlciAmJiAob3RoZXItPm1feCA+
IGJveC0+bV94KSkKKwlyZXR1cm4gb3RoZXI7CisgICAgcmV0dXJuIE5VTEw7Cit9CisKK3ZvaWQg
Ym94ZXNTdXJyb3VuZGluZ09mZnNldChJbmxpbmVUZXh0Qm94ICpib3gsbG9uZyBvZmZzZXQsSW5s
aW5lVGV4dEJveComIGxCb3gsSW5saW5lVGV4dEJveComIHJCb3gpCit7CisgICAgbEJveCA9IE5V
TEw7CisgICAgckJveCA9IE5VTEw7CisgICAgaWYgKGJveCkgeworCUlubGluZVRleHRCb3gqIG90
aGVyID0gYm94LT5uZXh0VGV4dEJveCgpOworCWlmIChvdGhlcikgeworCSAgICBpZiAoKG90aGVy
LT5tX3N0YXJ0ID09IG9mZnNldCkgfHwgKG90aGVyLT5tX3N0YXJ0ICsgb3RoZXItPm1fbGVuID09
IG9mZnNldCkpeworCQlpZiAob3RoZXItPm1feCA+IGJveC0+bV94KSB7CisJCSAgICBsQm94ID0g
Ym94OworCQkgICAgckJveCA9IG90aGVyOworCQl9IGVsc2UgeworCQkgICAgbEJveCA9IG90aGVy
OworCQkgICAgckJveCA9IGJveDsKKwkJfQorCQlyZXR1cm47CisJICAgIH0KKwl9CisJb3RoZXIg
PSBib3gtPnByZXZUZXh0Qm94KCk7CisJaWYgKG90aGVyKSB7CisJICAgIGlmICgob3RoZXItPm1f
c3RhcnQgPT0gb2Zmc2V0KSB8fCAob3RoZXItPm1fc3RhcnQgKyBvdGhlci0+bV9sZW4gPT0gb2Zm
c2V0KSl7CisJCWlmIChvdGhlci0+bV94ID4gYm94LT5tX3gpIHsKKwkJICAgIGxCb3ggPSBib3g7
CisJCSAgICByQm94ID0gb3RoZXI7CisJCX0gZWxzZSB7CisJCSAgICBsQm94ID0gb3RoZXI7CisJ
CSAgICByQm94ID0gYm94OworCQl9CisJCXJldHVybjsKKwkgICAgfQorCX0KKwlsQm94ID0gYm94
OworICAgIH0KK30KKworLyoKK0dEaXIJRGlyICAgIExlZnQJUmlnaHQJUmVzCQl2aXN1YWwJICAg
IGxvZ2ljYWwKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQorTAlMCS0JUgljdXJyZW50KzEJPD5GRUQJICAgIERFRjw+CitMCUwJLQlM
CWN1cnJlbnQtMQk8PmFiYwkgICAgPD5hYmMKKworTAlMCVIJTAlMLnN0YXJ0KzEJQ0JBPD5kZWYg
ICAgPEFCQz5kZWYKK0wJTAlSCS0JTC5zdGFydCsxCUNCQTw+CSAgICA8PkFCQworTAlMCVIJUglM
LnN0YXJ0KzEJQ0JBPD5GRUQgICAgPEFCQ0RFPkYKKyAKK0wJTAlMCUwJTC5lbmQtMQkJYWJjPD5k
ZWYgICAgYWJkPD5kZWYKK0wJTAlMCS0JTC5lbmQtMQkJYWJjPD4JICAgIGFiYzw+CitMCUwJTAlS
CUwuZW5kLTEJCWFiYzw+RkVEICAgIGFiZDxERT5GCisgCitMCVIJUgktCWN1cnJlbnQtMQlDQkE8
PgkgICAgPD5BQkMKK0wJUglMCS0JY3VycmVudCsxCWFiYzw+CSAgICA8PmFiYworIAorTAlSCUwJ
UglSLmVuZC0xCQlhYmM8PkZFRCAgICBhYmQ8REU+RgorTAlSCS0JUglSLmVuZC0xCQk8PkZFRAkg
ICAgREVGPD4KK0wJUglSCVIJUi5lbmQtMQkJQ0JBPD5GRUQgICAgPEFCQ0RFPkYgCisgCitMCVIJ
TAlMCVIuc3RhcnQrMQlhYmM8PmRlZiAgICBhYmQ8PmRlZgorTAlSCS0JTAlSLnN0YXJ0KzEJPD5h
YmMJICAgIDw+YWJjCitMCVIJUglMCVIuc3RhcnQrMQlDQkE8PmRlZiAgICA8QUJDPmRlZgorCitS
CUwJLQlSCWN1cnJlbnQrMQk8PkZFRAkgICAgREVGPD4KK1IJTAktCUwJY3VycmVudC0xCTw+YWJj
CSAgICA8PmFiYworCitSCUwJUglMCUwuc3RhcnQrMQlDQkE8PmRlZiAgICA8QUJDPmRlZgorUglM
CVIJLQlMLnN0YXJ0KzEJQ0JBPD4JICAgIDw+QUJDCitSCUwJUglSCUwuc3RhcnQrMQlDQkE8PkZF
RCAgICA8QUJDREU+RgorCitSCUwJTAlMCUwuZW5kLTEJCWFiYzw+ZGVmICAgIGFiZDw+ZGVmCitS
CUwJTAktCUwuZW5kLTEJCWFiYzw+CSAgICBhYmM8PgorUglMCUwJUglMLmVuZC0xCQlhYmM8PkZF
RCAgICBhYmQ8REU+RgorCitSCVIJUgktCWN1cnJlbnQtMQlDQkE8PgkgICAgPD5BQkMKK1IJUglM
CS0JY3VycmVudCsxCWFiYzw+CSAgICA8PmFiYworCitSCVIJTAlSCVIuZW5kLTEJCWFiYzw+RkVE
ICAgIGFiZDxERT5GCitSCVIJLQlSCVIuZW5kLTEJCTw+RkVECSAgICBERUY8PgorUglSCVIJUglS
LmVuZC0xCQlDQkE8PkZFRCAgICA8QUJDREU+RiAKKworUglSCUwJTAlSLnN0YXJ0KzEJYWJjPD5k
ZWYgICAgYWJkPD5kZWYKK1IJUgktCUwJUi5zdGFydCsxCTw+YWJjCSAgICA8PmFiYworUglSCVIJ
TAlSLnN0YXJ0KzEJQ0JBPD5kZWYgICAgPEFCQz5kZWYKKworKi8KKworbG9uZwlSZW5kZXJUZXh0
OjpyZXNvbHZlTmV4dE9mZnNldEFmdGVyQm91bmRhcnkobG9uZyBjdXJyZW50LElubGluZVRleHRC
b3ggKmxCb3gsIElubGluZVRleHRCb3ggKnJCb3gsIGJvb2wgbGVmdCkgY29uc3QKK3sKKyAgICBp
ZiAoKHJCb3ggPT0gTlVMTCkgJiYgKGxCb3ggPT0gTlVMTCkpCisJcmV0dXJuIChsZWZ0ID8gcHJl
dmlvdXNPZmZzZXQoY3VycmVudCkgOiBuZXh0T2Zmc2V0KGN1cnJlbnQpKTsKKyAgICBlbHNlIHsK
Kwlib29sICAgIGxlZnRSVEwgPSBsQm94ICYmIGxCb3gtPm1fcmV2ZXJzZWQ7CisJYm9vbCAgICBy
aWdodFJUTCA9IHJCb3ggJiYgckJveC0+bV9yZXZlcnNlZDsKKwlmcHJpbnRmKHN0ZGVyciwiY3Vy
cmVudCA9ICVsZCIsY3VycmVudCk7CisJaWYgKGxCb3gpIGZwcmludGYoc3RkZXJyLCJcdGxib3gg
PSAoJWQsJWQsJXMpIixsQm94LT5tX3N0YXJ0LGxCb3gtPm1fc3RhcnQrbEJveC0+bV9sZW4sbGVm
dFJUTCA/ICJydGwiIDogImx0ciIpOworCWlmIChyQm94KSBmcHJpbnRmKHN0ZGVyciwiXHRyYm94
ID0gKCVkLCVkLCVzKSIsckJveC0+bV9zdGFydCxyQm94LT5tX3N0YXJ0K3JCb3gtPm1fbGVuLHJp
Z2h0UlRMID8gInJ0bCIgOiAibHRyIik7CisJcHJpbnRmKCJcbiIpOworCWlmIChsZWZ0KSB7CisJ
ICAgIGlmICghbEJveCkKKwkJcmV0dXJuIChyaWdodFJUTCA/IG5leHRPZmZzZXQoY3VycmVudCkg
OiBwcmV2aW91c09mZnNldChjdXJyZW50KSk7CisJICAgIGVsc2UgaWYgKGxlZnRSVEwpCisJCXJl
dHVybiBuZXh0T2Zmc2V0KGxCb3gtPm1fc3RhcnQpOworCSAgICBlbHNlCisJCXJldHVybiBwcmV2
aW91c09mZnNldChsQm94LT5tX3N0YXJ0K2xCb3gtPm1fbGVuKTsKKwl9IGVsc2UgeworCSAgICBp
ZiAoIXJCb3gpCisJCXJldHVybiAobGVmdFJUTCA/IHByZXZpb3VzT2Zmc2V0KGN1cnJlbnQpIDog
bmV4dE9mZnNldChjdXJyZW50KSk7CisJICAgIGVsc2UgaWYgKHJpZ2h0UlRMKQorCQlyZXR1cm4g
cHJldmlvdXNPZmZzZXQockJveC0+bV9zdGFydCArIHJCb3gtPm1fbGVuKTsKKwkgICAgZWxzZQor
CQlyZXR1cm4gbmV4dE9mZnNldChyQm94LT5tX3N0YXJ0KTsKKwl9CisgICAgfQorfQorCitsb25n
IFJlbmRlclRleHQ6Om5leHRPZmZzZXRMZWZ0UmlnaHQobG9uZyBjdXJyZW50LGJvb2wgbGVmdCkg
Y29uc3QKK3sKKyAgICBJbmxpbmVUZXh0Qm94ICAgKmJveCA9IDA7CisgICAgUmVuZGVyU3R5bGUJ
KnN0eWxlID0gdGhpcy0+c3R5bGUoKTsKKyAgICBFRGlyZWN0aW9uIGRpciA9IChzdHlsZSA/IHN0
eWxlLT5kaXJlY3Rpb24oKSA6IExUUik7CisgICAgbG9uZyBuZXdPZmZzZXQgPSAwOworICAgIGZv
ciAoYm94ID0gZmlyc3RUZXh0Qm94KCk7IGJveDsgYm94ID0gYm94LT5uZXh0VGV4dEJveCgpKSB7
CisJbG9uZwlzdGFydCA9IGJveC0+bV9zdGFydDsKKwlsb25nCWVuZCAgPSBib3gtPm1fc3RhcnQg
KyBib3gtPm1fbGVuOworCWlmICgoY3VycmVudCA+IHN0YXJ0KSAmJiAoY3VycmVudCA8IGVuZCkp
IHsKKworCSAgICAvLyB3ZSdyZSBub3QgYXQgYSBib3ggYm91bmRhcnkKKwkgICAgaWYgKChib3gt
Pm1fcmV2ZXJzZWQgXiBsZWZ0KSA9PSAxKSAgICAvLyB0aGUgYm94IGlzIHJldmVyc2VkIFhPUiB3
ZSBhcmUgZ29pbmcgbGVmdAorCQluZXdPZmZzZXQgPSBwcmV2aW91c09mZnNldChjdXJyZW50KTsK
KwkgICAgZWxzZQorCQluZXdPZmZzZXQgPSBuZXh0T2Zmc2V0KGN1cnJlbnQpOworCSAgICBpZiAo
Ym94LT5tX3JldmVyc2VkICYmIChkaXIgPT0gTFRSKSkgeworCQlpZiAobmV3T2Zmc2V0ID09IHN0
YXJ0KSB7CisJCSAgICBJbmxpbmVUZXh0Qm94ICpvdGhlciA9IG5leHRSaWdodEJveChib3gpOwor
CQkgICAgaWYgKG90aGVyKQorCQkJbmV3T2Zmc2V0ID0gb3RoZXItPm1fc3RhcnQ7CisJCSAgICBl
bHNlCisJCQluZXdPZmZzZXQgPSBib3gtPm1fc3RhcnQrYm94LT5tX2xlbjsKKwkJfSBlbHNlIAlp
ZiAobmV3T2Zmc2V0ID09IGVuZCkgeworCQkgICAgSW5saW5lVGV4dEJveCAqb3RoZXIgPSBuZXh0
TGVmdEJveChib3gpOworCQkgICAgaWYgKG90aGVyKQorCQkJbmV3T2Zmc2V0ID0gb3RoZXItPm1f
c3RhcnQgKyBvdGhlci0+bV9sZW47CisJCSAgICBlbHNlCisJCQluZXdPZmZzZXQgPSBib3gtPm1f
c3RhcnQ7CisJCX0KKwkgICAgfSBlbHNlIGlmICghYm94LT5tX3JldmVyc2VkICYmIChkaXIgPT0g
UlRMKSkgeworCQlpZiAobmV3T2Zmc2V0ID09IGVuZCkgeworCQkgICAgSW5saW5lVGV4dEJveCAq
b3RoZXIgPSBuZXh0UmlnaHRCb3goYm94KTsKKwkJICAgIGlmIChvdGhlcikKKwkJCW5ld09mZnNl
dCA9IG90aGVyLT5tX3N0YXJ0K290aGVyLT5tX2xlbjsKKwkJICAgIGVsc2UKKwkJCW5ld09mZnNl
dCA9IGJveC0+bV9zdGFydDsKKwkJfSBlbHNlIGlmIChuZXdPZmZzZXQgPT0gc3RhcnQpIHsKKwkJ
ICAgIElubGluZVRleHRCb3ggKm90aGVyID0gbmV4dExlZnRCb3goYm94KTsKKwkJICAgIGlmIChv
dGhlcikKKwkJCW5ld09mZnNldCA9IG90aGVyLT5tX3N0YXJ0OworCQkgICAgZWxzZQorCQkJbmV3
T2Zmc2V0ID0gYm94LT5tX3N0YXJ0ICsgYm94LT5tX2xlbjsKKwkJfQorCSAgICB9CisJICAgIGZw
cmludGYoc3RkZXJyLCJjdXJyZW50ID0gJWxkIC0tPiAlbGRcbiIsY3VycmVudCxuZXdPZmZzZXQp
OworCSAgICByZXR1cm4gbmV3T2Zmc2V0OworCX0gZWxzZSBpZiAoKGN1cnJlbnQgPT0gc3RhcnQp
IHx8IChjdXJyZW50ID09IGVuZCkpIHsKKwkgICAgSW5saW5lVGV4dEJveCAgICpsQm94OworCSAg
ICBJbmxpbmVUZXh0Qm94ICAgKnJCb3g7CisJICAgIGJveGVzU3Vycm91bmRpbmdPZmZzZXQoYm94
LGN1cnJlbnQsbEJveCxyQm94KTsKKwkgICAgbmV3T2Zmc2V0ID0gcmVzb2x2ZU5leHRPZmZzZXRB
ZnRlckJvdW5kYXJ5KGN1cnJlbnQsbEJveCxyQm94LGxlZnQpOworCSAgICBmcHJpbnRmKHN0ZGVy
ciwiY3VycmVudCA9ICVsZCAtLT4gJWxkXG4iLGN1cnJlbnQsbmV3T2Zmc2V0KTsKKwkgICAgcmV0
dXJuIG5ld09mZnNldDsKKwl9CisgICAgfQorICAgIHJldHVybiAobGVmdCA/IHByZXZpb3VzT2Zm
c2V0KGN1cnJlbnQpIDogbmV4dE9mZnNldChjdXJyZW50KSk7Cit9CisKK2xvbmcgUmVuZGVyVGV4
dDo6bmV4dE9mZnNldFJpZ2h0IChsb25nIGN1cnJlbnQpIGNvbnN0Cit7CisgICAgcmV0dXJuIG5l
eHRPZmZzZXRMZWZ0UmlnaHQoY3VycmVudCxmYWxzZSk7Cit9CisKKworbG9uZyBSZW5kZXJUZXh0
OjpuZXh0T2Zmc2V0TGVmdCAobG9uZyBjdXJyZW50KSBjb25zdAoreworICAgIHJldHVybiBuZXh0
T2Zmc2V0TGVmdFJpZ2h0KGN1cnJlbnQsdHJ1ZSk7Cit9CisjZW5kaWYKKwogI2RlZmluZSBMT0NB
TF9XSURUSF9CVUZfU0laRQkxMDI0CiAKIGludCBJbmxpbmVUZXh0Qm94OjpvZmZzZXRGb3JQb3Np
dGlvbihpbnQgX3gsIGJvb2wgaW5jbHVkZVBhcnRpYWxHbHlwaHMpCkluZGV4OiBraHRtbC9yZW5k
ZXJpbmcvcmVuZGVyX3RleHQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvbG9jYWwvaG9tZS9jdnMv
TGFieXJpbnRoL1dlYkNvcmUva2h0bWwvcmVuZGVyaW5nL3JlbmRlcl90ZXh0LmgsdgpyZXRyaWV2
aW5nIHJldmlzaW9uIDEuNzcKZGlmZiAtdSAtYiAtZCAtcjEuNzcgcmVuZGVyX3RleHQuaAotLS0g
cmVuZGVyX3RleHQuaAkyMDA1LzAyLzE0IDE4OjE5OjE4CTEuNzcKKysrIHJlbmRlcl90ZXh0LmgJ
MjAwNS8wMy8xMCAwNTo0ODoyNQpAQCAtMjYxLDYgKzI2MSwxNCBAQAogICAgIHZpcnR1YWwgbG9u
ZyBuZXh0T2Zmc2V0IChsb25nIGN1cnJlbnQpIGNvbnN0OwogICAgIAogI2lmIEFQUExFX0NIQU5H
RVMKK3ByaXZhdGU6CisgICAgbG9uZyByZXNvbHZlTmV4dE9mZnNldEFmdGVyQm91bmRhcnkobG9u
ZyBjdXJyZW50LElubGluZVRleHRCb3ggKmxCb3gsIElubGluZVRleHRCb3ggKnJCb3gsIGJvb2wg
bGVmdCkgY29uc3Q7CisgICAgbG9uZyBuZXh0T2Zmc2V0TGVmdFJpZ2h0KGxvbmcgb2Zmc2V0LGJv
b2wgbGVmdCkgY29uc3Q7CitwdWJsaWM6CisJCisgICAgdmlydHVhbCBsb25nIG5leHRPZmZzZXRS
aWdodCAobG9uZyBjdXJyZW50KSBjb25zdDsKKyAgICB2aXJ0dWFsIGxvbmcgbmV4dE9mZnNldExl
ZnQgKGxvbmcgY3VycmVudCkgY29uc3Q7CisKIHB1YmxpYzoKICNlbmRpZgogICAgIElubGluZVRl
eHRCb3ggKiBmaW5kTmV4dElubGluZVRleHRCb3goIGludCBvZmZzZXQsIGludCAmcG9zICkgY29u
c3Q7CkluZGV4OiBraHRtbC94bWwvZG9tX25vZGVpbXBsLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxl
OiAvbG9jYWwvaG9tZS9jdnMvTGFieXJpbnRoL1dlYkNvcmUva2h0bWwveG1sL2RvbV9ub2RlaW1w
bC5jcHAsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMTM4CmRpZmYgLXUgLWIgLWQgLXIxLjEzOCBk
b21fbm9kZWltcGwuY3BwCi0tLSBkb21fbm9kZWltcGwuY3BwCTIwMDUvMDMvMDEgMDE6NTg6MzQJ
MS4xMzgKKysrIGRvbV9ub2RlaW1wbC5jcHAJMjAwNS8wMy8xMCAwNTo0ODoyNgpAQCAtMTM5MCw2
ICsxMzkwLDE3IEBACiAgICAgcmV0dXJuIHJlbmRlcmVyKCkgPyByZW5kZXJlcigpLT5uZXh0T2Zm
c2V0KGN1cnJlbnQpIDogY3VycmVudCArIDE7CiB9CiAKKworbG9uZyBOb2RlSW1wbDo6bmV4dE9m
ZnNldExlZnQgKGxvbmcgY3VycmVudCkgY29uc3QKK3sKKyAgICByZXR1cm4gcmVuZGVyZXIoKSA/
IHJlbmRlcmVyKCktPm5leHRPZmZzZXRMZWZ0KGN1cnJlbnQpIDogY3VycmVudCAtIDE7Cit9CisK
K2xvbmcgTm9kZUltcGw6Om5leHRPZmZzZXRSaWdodCAobG9uZyBjdXJyZW50KSBjb25zdAorewor
ICAgIHJldHVybiByZW5kZXJlcigpID8gcmVuZGVyZXIoKS0+bmV4dE9mZnNldFJpZ2h0KGN1cnJl
bnQpIDogY3VycmVudCArIDE7Cit9CisKIGJvb2wgTm9kZUltcGw6OmlzQmxvY2tGbG93KCkgY29u
c3QKIHsKICAgICByZXR1cm4gcmVuZGVyZXIoKSAmJiByZW5kZXJlcigpLT5pc0Jsb2NrRmxvdygp
OwpJbmRleDoga2h0bWwveG1sL2RvbV9ub2RlaW1wbC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9s
b2NhbC9ob21lL2N2cy9MYWJ5cmludGgvV2ViQ29yZS9raHRtbC94bWwvZG9tX25vZGVpbXBsLmgs
dgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuNzMKZGlmZiAtdSAtYiAtZCAtcjEuNzMgZG9tX25vZGVp
bXBsLmgKLS0tIGRvbV9ub2RlaW1wbC5oCTIwMDUvMDIvMTAgMDg6NDA6NTYJMS43MworKysgZG9t
X25vZGVpbXBsLmgJMjAwNS8wMy8xMCAwNTo0ODoyNgpAQCAtMzU2LDYgKzM1Niw5IEBACiAgICAg
dmlydHVhbCBsb25nIHByZXZpb3VzT2Zmc2V0IChsb25nIGN1cnJlbnQpIGNvbnN0OwogICAgIHZp
cnR1YWwgbG9uZyBuZXh0T2Zmc2V0IChsb25nIGN1cnJlbnQpIGNvbnN0OwogICAgIAorICAgIHZp
cnR1YWwgbG9uZyBuZXh0T2Zmc2V0UmlnaHQgKGxvbmcgY3VycmVudCkgY29uc3Q7CisgICAgdmly
dHVhbCBsb25nIG5leHRPZmZzZXRMZWZ0IChsb25nIGN1cnJlbnQpIGNvbnN0OworICAgIAogI2lm
bmRlZiBOREVCVUcKICAgICB2aXJ0dWFsIHZvaWQgZHVtcChRVGV4dFN0cmVhbSAqc3RyZWFtLCBR
U3RyaW5nIGluZCA9ICIiKSBjb25zdDsKICNlbmRpZgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>