<?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>56135</bug_id>
          
          <creation_ts>2011-03-10 12:50:49 -0800</creation_ts>
          <short_desc>VisiblePosition&apos;s next and previous should take an enum instead of a boolean</short_desc>
          <delta_ts>2011-03-10 14:46:58 -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>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</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>Enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>53409</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>darin</cc>
    
    <cc>eric</cc>
    
    <cc>leviw</cc>
    
    <cc>tony</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>365450</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-03-10 12:50:49 -0800</bug_when>
    <thetext>There many places where we call next(true) and previous(true) and it&apos;s totally unclear what it means.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>365471</commentid>
    <comment_count>1</comment_count>
      <attachid>85381</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-03-10 13:08:47 -0800</bug_when>
    <thetext>Created attachment 85381
cleanup</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>365474</commentid>
    <comment_count>2</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-03-10 13:16:02 -0800</bug_when>
    <thetext>Committed r80752: &lt;http://trac.webkit.org/changeset/80752&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>365547</commentid>
    <comment_count>3</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-03-10 14:46:58 -0800</bug_when>
    <thetext>I accidentally reversed the boolean logic in the original patch.  Fixed it in http://trac.webkit.org/changeset/80766.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>85381</attachid>
            <date>2011-03-10 13:08:47 -0800</date>
            <delta_ts>2011-03-10 13:13:08 -0800</delta_ts>
            <desc>cleanup</desc>
            <filename>bug-56135-20110310130846.patch</filename>
            <type>text/plain</type>
            <size>25627</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDgwNzQ5KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNTUgQEAKKzIwMTEtMDMtMTAgIFJ5b3N1a2Ug
Tml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgVmlzaWJsZVBvc2l0aW9uJ3MgbmV4dCBhbmQgcHJldmlvdXMgc2hv
dWxkIHRha2UgYW4gZW51bSBpbnN0ZWFkIG9mIGEgYm9vbGVhbgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTYxMzUKKworICAgICAgICBDaGFuZ2VkIHRo
ZSBhcmd1bWVudCB0eXBlIG9mIFZpc2libGVQb3NpdGlvbjo6bmV4dCBhbmQgVmlzaWJsZVBvc2l0
aW9uOjpwcmV2aW91cworICAgICAgICBmcm9tIGJvb2wgdG8gRWRpdGluZ0JvdW5kYXJ5Q3Jvc3Np
bmdSdWxlLiBBbHNvIGdvdCByaWQgb2YgU3RheUluRWRpdGFibGVDb250ZW50IGVudW0KKyAgICAg
ICAgaW4gVmlzaWJsZVNlbGVjdGlvbiBhbmQgcmVwbGFjZWQgaXQgYnkgRWRpdGluZ0JvdW5kYXJ5
Q3Jvc3NpbmdSdWxlIGJlY2F1c2UgdGhlIGVudW0KKyAgICAgICAgd2FzIG9ubHkgdXNlZCBpbiBW
aXNpYmxlUG9zaXRpb246OmlzQWxsIGFuZCBzdWJzZXF1ZW50bHkgaW4gU2VsZWN0aW9uQ29udHJv
bGxlcjo6aXNBbGwKKyAgICAgICAgdG8gY2FsbCBWaXNpYmxlUG9zaXRpb246Om5leHQgYW5kIFZp
c2libGVQb3NpdGlvbjo6cHJldmlvdXMuCisKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjoKKyAg
ICAgICAgKiBkb20vUG9zaXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UG9zaXRpb246OnRy
YWlsaW5nV2hpdGVzcGFjZVBvc2l0aW9uKToKKyAgICAgICAgKiBlZGl0aW5nL0FwcGx5QmxvY2tF
bGVtZW50Q29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBseUJsb2NrRWxlbWVudENv
bW1hbmQ6OmRvQXBwbHkpOgorICAgICAgICAqIGVkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29tcG9zaXRlRWRpdENvbW1hbmQ6OmJyZWFrT3V0T2ZF
bXB0eU1haWxCbG9ja3F1b3RlZFBhcmFncmFwaCk6CisgICAgICAgICogZWRpdGluZy9JbnNlcnRM
aXN0Q29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNlcnRMaXN0Q29tbWFuZDo6ZG9B
cHBseSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNlcnRMaXN0Q29tbWFuZDo6bGlzdGlmeVBhcmFn
cmFwaCk6CisgICAgICAgICogZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6c2hvdWxkTWVyZ2VTdGFy
dCk6CisgICAgICAgIChXZWJDb3JlOjpSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6c2hvdWxkTWVy
Z2VFbmQpOgorICAgICAgICAoV2ViQ29yZTo6UmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OmRvQXBw
bHkpOgorICAgICAgICAqIGVkaXRpbmcvU2VsZWN0aW9uQ29udHJvbGxlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTZWxlY3Rpb25Db250cm9sbGVyOjptb2RpZnlFeHRlbmRpbmdSaWdodCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTZWxlY3Rpb25Db250cm9sbGVyOjptb2RpZnlFeHRlbmRpbmdGb3J3
YXJkKToKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdGlvbkNvbnRyb2xsZXI6Om1vZGlmeU1vdmlu
Z0ZvcndhcmQpOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0aW9uQ29udHJvbGxlcjo6bW9kaWZ5
RXh0ZW5kaW5nTGVmdCk6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3Rpb25Db250cm9sbGVyOjpt
b2RpZnlFeHRlbmRpbmdCYWNrd2FyZCk6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3Rpb25Db250
cm9sbGVyOjptb2RpZnlNb3ZpbmdCYWNrd2FyZCk6CisgICAgICAgICogZWRpdGluZy9TZWxlY3Rp
b25Db250cm9sbGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3Rpb25Db250cm9sbGVyOjpp
c0FsbCk6CisgICAgICAgICogZWRpdGluZy9UeXBpbmdDb21tYW5kLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlR5cGluZ0NvbW1hbmQ6OmRlbGV0ZUtleVByZXNzZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6VHlwaW5nQ29tbWFuZDo6Zm9yd2FyZERlbGV0ZUtleVByZXNzZWQpOgorICAgICAgICAqIGVk
aXRpbmcvVmlzaWJsZVBvc2l0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlZpc2libGVQb3Np
dGlvbjo6bmV4dCk6CisgICAgICAgIChXZWJDb3JlOjpWaXNpYmxlUG9zaXRpb246OnByZXZpb3Vz
KToKKyAgICAgICAgKiBlZGl0aW5nL1Zpc2libGVQb3NpdGlvbi5oOgorICAgICAgICAqIGVkaXRp
bmcvVmlzaWJsZVNlbGVjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWaXNpYmxlU2VsZWN0
aW9uOjppc0FsbCk6CisgICAgICAgIChXZWJDb3JlOjpWaXNpYmxlU2VsZWN0aW9uOjpzZXRTdGFy
dEFuZEVuZEZyb21CYXNlQW5kRXh0ZW50UmVzcGVjdGluZ0dyYW51bGFyaXR5KToKKyAgICAgICAg
KiBlZGl0aW5nL1Zpc2libGVTZWxlY3Rpb24uaDoKKyAgICAgICAgKiBlZGl0aW5nL2h0bWxlZGl0
aW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNlbGVjdGlvbkZvclBhcmFncmFwaEl0ZXJhdGlv
bik6CisgICAgICAgICogZWRpdGluZy92aXNpYmxlX3VuaXRzLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OnN0YXJ0T2ZOZXh0UGFyYWdyYXBoKToKKwogMjAxMS0wMy0xMCAgVG9ueSBHZW50aWxjb3Jl
ICA8dG9ueWdAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEVyaWMgU2VpZGVs
LgpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4JKHJldmlzaW9uIDgwNzM2KQorKysgU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5leHAuaW4JKHdvcmtpbmcgY29weSkKQEAgLTExMDYsOCArMTEwNiw4IEBA
IF9fWk5LN1dlYkNvcmUxNVJlc291cmNlUmVxdWVzdDEybnNVUkxSZXEKIF9fWk5LN1dlYkNvcmUx
NVZpc2libGVQb3NpdGlvbjE0Y2hhcmFjdGVyQWZ0ZXJFdgogX19aTks3V2ViQ29yZTE1VmlzaWJs
ZVBvc2l0aW9uMTRsb2NhbENhcmV0UmVjdEVSUE5TXzEyUmVuZGVyT2JqZWN0RQogX19aTks3V2Vi
Q29yZTE1VmlzaWJsZVBvc2l0aW9uMTlhYnNvbHV0ZUNhcmV0Qm91bmRzRXYKLV9fWk5LN1dlYkNv
cmUxNVZpc2libGVQb3NpdGlvbjRuZXh0RWIKLV9fWk5LN1dlYkNvcmUxNVZpc2libGVQb3NpdGlv
bjhwcmV2aW91c0ViCitfX1pOSzdXZWJDb3JlMTVWaXNpYmxlUG9zaXRpb240bmV4dEVOU18yN0Vk
aXRpbmdCb3VuZGFyeUNyb3NzaW5nUnVsZUUKK19fWk5LN1dlYkNvcmUxNVZpc2libGVQb3NpdGlv
bjhwcmV2aW91c0VOU18yN0VkaXRpbmdCb3VuZGFyeUNyb3NzaW5nUnVsZUUKIF9fWk5LN1dlYkNv
cmUxNkZvbnRGYWxsYmFja0xpc3QxMGZvbnREYXRhQXRFUEtOU180Rm9udEVqCiBfX1pOSzdXZWJD
b3JlMTZIVE1MSW5wdXRFbGVtZW50MTJhdXRvQ29tcGxldGVFdgogX19aTks3V2ViQ29yZTE2UmVz
b3VyY2VSZXNwb25zZTEzbnNVUkxSZXNwb25zZUV2CkBAIC0xMTE1LDcgKzExMTUsNyBAQCBfX1pO
SzdXZWJDb3JlMTZWaXNpYmxlU2VsZWN0aW9uMTdpc0NvbnRlCiBfX1pOSzdXZWJDb3JlMTZWaXNp
YmxlU2VsZWN0aW9uMTd0b05vcm1hbGl6ZWRSYW5nZUV2CiBfX1pOSzdXZWJDb3JlMTZWaXNpYmxl
U2VsZWN0aW9uMTlyb290RWRpdGFibGVFbGVtZW50RXYKIF9fWk5LN1dlYkNvcmUxNlZpc2libGVT
ZWxlY3Rpb24yM2lzQ29udGVudFJpY2hseUVkaXRhYmxlRXYKLV9fWk5LN1dlYkNvcmUxNlZpc2li
bGVTZWxlY3Rpb241aXNBbGxFTlNfMjFTdGF5SW5FZGl0YWJsZUNvbnRlbnRFCitfX1pOSzdXZWJD
b3JlMTZWaXNpYmxlU2VsZWN0aW9uNWlzQWxsRU5TXzI3RWRpdGluZ0JvdW5kYXJ5Q3Jvc3NpbmdS
dWxlRQogX19aTks3V2ViQ29yZTE3UmVzb3VyY2VFcnJvckJhc2U4bGF6eUluaXRFdgogX19aTks3
V2ViQ29yZTE5QW5pbWF0aW9uQ29udHJvbGxlcjI0bnVtYmVyT2ZBY3RpdmVBbmltYXRpb25zRXYK
IF9fWk5LN1dlYkNvcmUxOVJlc291cmNlUmVxdWVzdEJhc2UxMGh0dHBNZXRob2RFdgpJbmRleDog
U291cmNlL1dlYkNvcmUvZG9tL1Bvc2l0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9kb20vUG9zaXRpb24uY3BwCShyZXZpc2lvbiA4MDczNikKKysrIFNvdXJjZS9XZWJDb3Jl
L2RvbS9Qb3NpdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk4Miw3ICs5ODIsNyBAQCBQb3Np
dGlvbiBQb3NpdGlvbjo6dHJhaWxpbmdXaGl0ZXNwYWNlUG9zCiAgICAgVmlzaWJsZVBvc2l0aW9u
IHYoKnRoaXMpOwogICAgIFVDaGFyIGMgPSB2LmNoYXJhY3RlckFmdGVyKCk7CiAgICAgLy8gVGhl
IHNwYWNlIG11c3Qgbm90IGJlIGluIGFub3RoZXIgcGFyYWdyYXBoIGFuZCBpdCBtdXN0IGJlIGVk
aXRhYmxlLgotICAgIGlmICghaXNFbmRPZlBhcmFncmFwaCh2KSAmJiB2Lm5leHQodHJ1ZSkuaXNO
b3ROdWxsKCkpCisgICAgaWYgKCFpc0VuZE9mUGFyYWdyYXBoKHYpICYmIHYubmV4dChDYW5ub3RD
cm9zc0VkaXRpbmdCb3VuZGFyeSkuaXNOb3ROdWxsKCkpCiAgICAgICAgIGlmIChjb25zaWRlck5v
bkNvbGxhcHNpYmxlV2hpdGVzcGFjZSA/IChpc1NwYWNlT3JOZXdsaW5lKGMpIHx8IGMgPT0gbm9C
cmVha1NwYWNlKSA6IGlzQ29sbGFwc2libGVXaGl0ZXNwYWNlKGMpKQogICAgICAgICAgICAgcmV0
dXJuICp0aGlzOwogICAgIApJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9BcHBseUJsb2Nr
RWxlbWVudENvbW1hbmQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
QXBwbHlCbG9ja0VsZW1lbnRDb21tYW5kLmNwcAkocmV2aXNpb24gODA3MzYpCisrKyBTb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL0FwcGx5QmxvY2tFbGVtZW50Q29tbWFuZC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTcyLDcgKzcyLDcgQEAgdm9pZCBBcHBseUJsb2NrRWxlbWVudENvbW1hbmQ6OmRvQXBw
bHkoKQogICAgIC8vIG1hcmdpbi9wYWRkaW5nLCBidXQgbm90IG90aGVycy4gIFdlIHNob3VsZCBt
YWtlIHRoZSBnYXAgcGFpbnRpbmcgbW9yZSBjb25zaXN0ZW50IGFuZCAKICAgICAvLyB0aGVuIHVz
ZSBhIGxlZnQgbWFyZ2luL3BhZGRpbmcgcnVsZSBoZXJlLgogICAgIGlmICh2aXNpYmxlRW5kICE9
IHZpc2libGVTdGFydCAmJiBpc1N0YXJ0T2ZQYXJhZ3JhcGgodmlzaWJsZUVuZCkpCi0gICAgICAg
IHNldEVuZGluZ1NlbGVjdGlvbihWaXNpYmxlU2VsZWN0aW9uKHZpc2libGVTdGFydCwgdmlzaWJs
ZUVuZC5wcmV2aW91cyh0cnVlKSkpOworICAgICAgICBzZXRFbmRpbmdTZWxlY3Rpb24oVmlzaWJs
ZVNlbGVjdGlvbih2aXNpYmxlU3RhcnQsIHZpc2libGVFbmQucHJldmlvdXMoQ2Fubm90Q3Jvc3NF
ZGl0aW5nQm91bmRhcnkpKSk7CiAKICAgICBWaXNpYmxlU2VsZWN0aW9uIHNlbGVjdGlvbiA9IHNl
bGVjdGlvbkZvclBhcmFncmFwaEl0ZXJhdGlvbihlbmRpbmdTZWxlY3Rpb24oKSk7CiAgICAgVmlz
aWJsZVBvc2l0aW9uIHN0YXJ0T2ZTZWxlY3Rpb24gPSBzZWxlY3Rpb24udmlzaWJsZVN0YXJ0KCk7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5k
LmNwcAkocmV2aXNpb24gODA3MzYpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0
ZUVkaXRDb21tYW5kLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTExNCw3ICsxMTE0LDcgQEAgYm9v
bCBDb21wb3NpdGVFZGl0Q29tbWFuZDo6YnJlYWtPdXRPZkVtcAogICAgIGlmICghaXNTdGFydE9m
UGFyYWdyYXBoKGNhcmV0KSB8fCAhaXNFbmRPZlBhcmFncmFwaChjYXJldCkpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICAKLSAgICBWaXNpYmxlUG9zaXRpb24gcHJldmlvdXMoY2FyZXQucHJl
dmlvdXModHJ1ZSkpOworICAgIFZpc2libGVQb3NpdGlvbiBwcmV2aW91cyhjYXJldC5wcmV2aW91
cyhDYW5ub3RDcm9zc0VkaXRpbmdCb3VuZGFyeSkpOwogICAgIC8vIE9ubHkgbW92ZSBmb3J3YXJk
IGlmIHRoZXJlJ3Mgbm90aGluZyBiZWZvcmUgdGhlIGNhcmV0LCBvciBpZiB0aGVyZSdzIHVucXVv
dGVkIGNvbnRlbnQgYmVmb3JlIGl0LgogICAgIGlmIChlbmNsb3NpbmdOb2RlT2ZUeXBlKHByZXZp
b3VzLmRlZXBFcXVpdmFsZW50KCksICZpc01haWxCbG9ja3F1b3RlKSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwpJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9JbnNlcnRMaXN0Q29tbWFuZC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9JbnNlcnRMaXN0Q29tbWFu
ZC5jcHAJKHJldmlzaW9uIDgwNzM2KQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9JbnNlcnRM
aXN0Q29tbWFuZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyMiw3ICsxMjIsNyBAQCB2b2lkIElu
c2VydExpc3RDb21tYW5kOjpkb0FwcGx5KCkKICAgICAvLyBtYXJnaW4vcGFkZGluZywgYnV0IG5v
dCBvdGhlcnMuICBXZSBzaG91bGQgbWFrZSB0aGUgZ2FwIHBhaW50aW5nIG1vcmUgY29uc2lzdGVu
dCBhbmQgCiAgICAgLy8gdGhlbiB1c2UgYSBsZWZ0IG1hcmdpbi9wYWRkaW5nIHJ1bGUgaGVyZS4K
ICAgICBpZiAodmlzaWJsZUVuZCAhPSB2aXNpYmxlU3RhcnQgJiYgaXNTdGFydE9mUGFyYWdyYXBo
KHZpc2libGVFbmQpKQotICAgICAgICBzZXRFbmRpbmdTZWxlY3Rpb24oVmlzaWJsZVNlbGVjdGlv
bih2aXNpYmxlU3RhcnQsIHZpc2libGVFbmQucHJldmlvdXModHJ1ZSkpKTsKKyAgICAgICAgc2V0
RW5kaW5nU2VsZWN0aW9uKFZpc2libGVTZWxlY3Rpb24odmlzaWJsZVN0YXJ0LCB2aXNpYmxlRW5k
LnByZXZpb3VzKENhbm5vdENyb3NzRWRpdGluZ0JvdW5kYXJ5KSkpOwogCiAgICAgY29uc3QgUXVh
bGlmaWVkTmFtZSYgbGlzdFRhZyA9IChtX3R5cGUgPT0gT3JkZXJlZExpc3QpID8gb2xUYWcgOiB1
bFRhZzsKICAgICBpZiAoZW5kaW5nU2VsZWN0aW9uKCkuaXNSYW5nZSgpKSB7CkBAIC0zMzksOCAr
MzM5LDggQEAgUGFzc1JlZlB0cjxIVE1MRWxlbWVudD4gSW5zZXJ0TGlzdENvbW1hbgogICAgIGFw
cGVuZE5vZGUocGxhY2Vob2xkZXIsIGxpc3RJdGVtRWxlbWVudCk7CiAKICAgICAvLyBQbGFjZSBs
aXN0IGl0ZW0gaW50byBhZGpvaW5pbmcgbGlzdHMuCi0gICAgRWxlbWVudCogcHJldmlvdXNMaXN0
ID0gYWRqYWNlbnRFbmNsb3NpbmdMaXN0KHN0YXJ0LmRlZXBFcXVpdmFsZW50KCksIHN0YXJ0LnBy
ZXZpb3VzKHRydWUpLCBsaXN0VGFnKTsKLSAgICBFbGVtZW50KiBuZXh0TGlzdCA9IGFkamFjZW50
RW5jbG9zaW5nTGlzdChzdGFydC5kZWVwRXF1aXZhbGVudCgpLCBlbmQubmV4dCh0cnVlKSwgbGlz
dFRhZyk7CisgICAgRWxlbWVudCogcHJldmlvdXNMaXN0ID0gYWRqYWNlbnRFbmNsb3NpbmdMaXN0
KHN0YXJ0LmRlZXBFcXVpdmFsZW50KCksIHN0YXJ0LnByZXZpb3VzKENhbm5vdENyb3NzRWRpdGlu
Z0JvdW5kYXJ5KSwgbGlzdFRhZyk7CisgICAgRWxlbWVudCogbmV4dExpc3QgPSBhZGphY2VudEVu
Y2xvc2luZ0xpc3Qoc3RhcnQuZGVlcEVxdWl2YWxlbnQoKSwgZW5kLm5leHQoQ2Fubm90Q3Jvc3NF
ZGl0aW5nQm91bmRhcnkpLCBsaXN0VGFnKTsKICAgICBSZWZQdHI8SFRNTEVsZW1lbnQ+IGxpc3RF
bGVtZW50OwogICAgIGlmIChwcmV2aW91c0xpc3QpCiAgICAgICAgIGFwcGVuZE5vZGUobGlzdEl0
ZW1FbGVtZW50LCBwcmV2aW91c0xpc3QpOwpJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9S
ZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5jcHAJKHJldmlzaW9uIDgwNzM2KQorKysg
U291cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTM2Nyw3ICszNjcsNyBAQCBib29sIFJlcGxhY2VTZWxlY3Rpb25Db21tYW5k
OjpzaG91bGRNZXJnCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKICAgICBWaXNpYmxlUG9z
aXRpb24gc3RhcnRPZkluc2VydGVkQ29udGVudChwb3NpdGlvbkF0U3RhcnRPZkluc2VydGVkQ29u
dGVudCgpKTsKLSAgICBWaXNpYmxlUG9zaXRpb24gcHJldiA9IHN0YXJ0T2ZJbnNlcnRlZENvbnRl
bnQucHJldmlvdXModHJ1ZSk7CisgICAgVmlzaWJsZVBvc2l0aW9uIHByZXYgPSBzdGFydE9mSW5z
ZXJ0ZWRDb250ZW50LnByZXZpb3VzKENhbm5vdENyb3NzRWRpdGluZ0JvdW5kYXJ5KTsKICAgICBp
ZiAocHJldi5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIApAQCAtMzg5LDcg
KzM4OSw3IEBAIGJvb2wgUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OnNob3VsZE1lcmcKIGJvb2wg
UmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OnNob3VsZE1lcmdlRW5kKGJvb2wgc2VsZWN0aW9uRW5k
V2FzRW5kT2ZQYXJhZ3JhcGgpCiB7CiAgICAgVmlzaWJsZVBvc2l0aW9uIGVuZE9mSW5zZXJ0ZWRD
b250ZW50KHBvc2l0aW9uQXRFbmRPZkluc2VydGVkQ29udGVudCgpKTsKLSAgICBWaXNpYmxlUG9z
aXRpb24gbmV4dCA9IGVuZE9mSW5zZXJ0ZWRDb250ZW50Lm5leHQodHJ1ZSk7CisgICAgVmlzaWJs
ZVBvc2l0aW9uIG5leHQgPSBlbmRPZkluc2VydGVkQ29udGVudC5uZXh0KENhbm5vdENyb3NzRWRp
dGluZ0JvdW5kYXJ5KTsKICAgICBpZiAobmV4dC5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCkBAIC04NDAsNyArODQwLDcgQEAgdm9pZCBSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6
ZG9BcHBseSgpCiAgICAgfSBlbHNlIHsKICAgICAgICAgQVNTRVJUKHNlbGVjdGlvbi5pc0NhcmV0
KCkpOwogICAgICAgICBpZiAoZnJhZ21lbnQuaGFzSW50ZXJjaGFuZ2VOZXdsaW5lQXRTdGFydCgp
KSB7Ci0gICAgICAgICAgICBWaXNpYmxlUG9zaXRpb24gbmV4dCA9IHZpc2libGVTdGFydC5uZXh0
KHRydWUpOworICAgICAgICAgICAgVmlzaWJsZVBvc2l0aW9uIG5leHQgPSB2aXNpYmxlU3RhcnQu
bmV4dChDYW5ub3RDcm9zc0VkaXRpbmdCb3VuZGFyeSk7CiAgICAgICAgICAgICBpZiAoaXNFbmRP
ZlBhcmFncmFwaCh2aXNpYmxlU3RhcnQpICYmICFpc1N0YXJ0T2ZQYXJhZ3JhcGgodmlzaWJsZVN0
YXJ0KSAmJiBuZXh0LmlzTm90TnVsbCgpKQogICAgICAgICAgICAgICAgIHNldEVuZGluZ1NlbGVj
dGlvbihuZXh0KTsKICAgICAgICAgICAgIGVsc2UgCkBAIC0xMDM2LDcgKzEwMzYsNyBAQCB2b2lk
IFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpkb0FwcGx5KCkKICAgICBzdGFydE9mSW5zZXJ0ZWRD
b250ZW50ID0gcG9zaXRpb25BdFN0YXJ0T2ZJbnNlcnRlZENvbnRlbnQoKTsKICAgICAKICAgICBp
ZiAoaW50ZXJjaGFuZ2VOZXdsaW5lQXRFbmQpIHsKLSAgICAgICAgVmlzaWJsZVBvc2l0aW9uIG5l
eHQgPSBlbmRPZkluc2VydGVkQ29udGVudC5uZXh0KHRydWUpOworICAgICAgICBWaXNpYmxlUG9z
aXRpb24gbmV4dCA9IGVuZE9mSW5zZXJ0ZWRDb250ZW50Lm5leHQoQ2Fubm90Q3Jvc3NFZGl0aW5n
Qm91bmRhcnkpOwogCiAgICAgICAgIGlmIChzZWxlY3Rpb25FbmRXYXNFbmRPZlBhcmFncmFwaCB8
fCAhaXNFbmRPZlBhcmFncmFwaChlbmRPZkluc2VydGVkQ29udGVudCkgfHwgbmV4dC5pc051bGwo
KSkgewogICAgICAgICAgICAgaWYgKCFpc1N0YXJ0T2ZQYXJhZ3JhcGgoZW5kT2ZJbnNlcnRlZENv
bnRlbnQpKSB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NlbGVjdGlvbkNvbnRyb2xs
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU2VsZWN0aW9uQ29u
dHJvbGxlci5jcHAJKHJldmlzaW9uIDgwNzM2KQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9T
ZWxlY3Rpb25Db250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDI5LDkgKzQyOSw5IEBA
IFZpc2libGVQb3NpdGlvbiBTZWxlY3Rpb25Db250cm9sbGVyOjptb2QKICAgICBzd2l0Y2ggKGdy
YW51bGFyaXR5KSB7CiAgICAgY2FzZSBDaGFyYWN0ZXJHcmFudWxhcml0eToKICAgICAgICAgaWYg
KGRpcmVjdGlvbk9mRW5jbG9zaW5nQmxvY2soKSA9PSBMVFIpCi0gICAgICAgICAgICBwb3MgPSBw
b3MubmV4dCh0cnVlKTsKKyAgICAgICAgICAgIHBvcyA9IHBvcy5uZXh0KENhbm5vdENyb3NzRWRp
dGluZ0JvdW5kYXJ5KTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgcG9zID0gcG9zLnByZXZp
b3VzKHRydWUpOworICAgICAgICAgICAgcG9zID0gcG9zLnByZXZpb3VzKENhbm5vdENyb3NzRWRp
dGluZ0JvdW5kYXJ5KTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBXb3JkR3JhbnVsYXJpdHk6
CiAgICAgICAgIGlmIChkaXJlY3Rpb25PZkVuY2xvc2luZ0Jsb2NrKCkgPT0gTFRSKQpAQCAtNDYy
LDcgKzQ2Miw3IEBAIFZpc2libGVQb3NpdGlvbiBTZWxlY3Rpb25Db250cm9sbGVyOjptb2QKICAg
ICBWaXNpYmxlUG9zaXRpb24gcG9zKG1fc2VsZWN0aW9uLmV4dGVudCgpLCBtX3NlbGVjdGlvbi5h
ZmZpbml0eSgpKTsKICAgICBzd2l0Y2ggKGdyYW51bGFyaXR5KSB7CiAgICAgY2FzZSBDaGFyYWN0
ZXJHcmFudWxhcml0eToKLSAgICAgICAgcG9zID0gcG9zLm5leHQodHJ1ZSk7CisgICAgICAgIHBv
cyA9IHBvcy5uZXh0KENhbm5vdENyb3NzRWRpdGluZ0JvdW5kYXJ5KTsKICAgICAgICAgYnJlYWs7
CiAgICAgY2FzZSBXb3JkR3JhbnVsYXJpdHk6CiAgICAgICAgIHBvcyA9IG5leHRXb3JkUG9zaXRp
b24ocG9zKTsKQEAgLTUzNiw3ICs1MzYsNyBAQCBWaXNpYmxlUG9zaXRpb24gU2VsZWN0aW9uQ29u
dHJvbGxlcjo6bW9kCiAgICAgICAgIGlmIChpc1JhbmdlKCkpCiAgICAgICAgICAgICBwb3MgPSBW
aXNpYmxlUG9zaXRpb24obV9zZWxlY3Rpb24uZW5kKCksIG1fc2VsZWN0aW9uLmFmZmluaXR5KCkp
OwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBwb3MgPSBWaXNpYmxlUG9zaXRpb24obV9zZWxl
Y3Rpb24uZXh0ZW50KCksIG1fc2VsZWN0aW9uLmFmZmluaXR5KCkpLm5leHQodHJ1ZSk7CisgICAg
ICAgICAgICBwb3MgPSBWaXNpYmxlUG9zaXRpb24obV9zZWxlY3Rpb24uZXh0ZW50KCksIG1fc2Vs
ZWN0aW9uLmFmZmluaXR5KCkpLm5leHQoQ2Fubm90Q3Jvc3NFZGl0aW5nQm91bmRhcnkpOwogICAg
ICAgICBicmVhazsKICAgICBjYXNlIFdvcmRHcmFudWxhcml0eToKICAgICAgICAgcG9zID0gbmV4
dFdvcmRQb3NpdGlvbihWaXNpYmxlUG9zaXRpb24obV9zZWxlY3Rpb24uZXh0ZW50KCksIG1fc2Vs
ZWN0aW9uLmFmZmluaXR5KCkpKTsKQEAgLTU4Nyw5ICs1ODcsOSBAQCBWaXNpYmxlUG9zaXRpb24g
U2VsZWN0aW9uQ29udHJvbGxlcjo6bW9kCiAgICAgc3dpdGNoIChncmFudWxhcml0eSkgewogICAg
IGNhc2UgQ2hhcmFjdGVyR3JhbnVsYXJpdHk6CiAgICAgICAgIGlmIChkaXJlY3Rpb25PZkVuY2xv
c2luZ0Jsb2NrKCkgPT0gTFRSKQotICAgICAgICAgICAgcG9zID0gcG9zLnByZXZpb3VzKHRydWUp
OworICAgICAgICAgICAgcG9zID0gcG9zLnByZXZpb3VzKENhbm5vdENyb3NzRWRpdGluZ0JvdW5k
YXJ5KTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgcG9zID0gcG9zLm5leHQodHJ1ZSk7Cisg
ICAgICAgICAgICBwb3MgPSBwb3MubmV4dChDYW5ub3RDcm9zc0VkaXRpbmdCb3VuZGFyeSk7CiAg
ICAgICAgIGJyZWFrOwogICAgIGNhc2UgV29yZEdyYW51bGFyaXR5OgogICAgICAgICBpZiAoZGly
ZWN0aW9uT2ZFbmNsb3NpbmdCbG9jaygpID09IExUUikKQEAgLTYyNCw3ICs2MjQsNyBAQCBWaXNp
YmxlUG9zaXRpb24gU2VsZWN0aW9uQ29udHJvbGxlcjo6bW9kCiAgICAgLy8gb3ZlciBldmVyeXRo
aW5nLgogICAgIHN3aXRjaCAoZ3JhbnVsYXJpdHkpIHsKICAgICBjYXNlIENoYXJhY3RlckdyYW51
bGFyaXR5OgotICAgICAgICBwb3MgPSBwb3MucHJldmlvdXModHJ1ZSk7CisgICAgICAgIHBvcyA9
IHBvcy5wcmV2aW91cyhDYW5ub3RDcm9zc0VkaXRpbmdCb3VuZGFyeSk7CiAgICAgICAgIGJyZWFr
OwogICAgIGNhc2UgV29yZEdyYW51bGFyaXR5OgogICAgICAgICBwb3MgPSBwcmV2aW91c1dvcmRQ
b3NpdGlvbihwb3MpOwpAQCAtNjk2LDcgKzY5Niw3IEBAIFZpc2libGVQb3NpdGlvbiBTZWxlY3Rp
b25Db250cm9sbGVyOjptb2QKICAgICAgICAgaWYgKGlzUmFuZ2UoKSkKICAgICAgICAgICAgIHBv
cyA9IFZpc2libGVQb3NpdGlvbihtX3NlbGVjdGlvbi5zdGFydCgpLCBtX3NlbGVjdGlvbi5hZmZp
bml0eSgpKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgcG9zID0gVmlzaWJsZVBvc2l0aW9u
KG1fc2VsZWN0aW9uLmV4dGVudCgpLCBtX3NlbGVjdGlvbi5hZmZpbml0eSgpKS5wcmV2aW91cyh0
cnVlKTsKKyAgICAgICAgICAgIHBvcyA9IFZpc2libGVQb3NpdGlvbihtX3NlbGVjdGlvbi5leHRl
bnQoKSwgbV9zZWxlY3Rpb24uYWZmaW5pdHkoKSkucHJldmlvdXMoQ2Fubm90Q3Jvc3NFZGl0aW5n
Qm91bmRhcnkpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFdvcmRHcmFudWxhcml0eToKICAg
ICAgICAgcG9zID0gcHJldmlvdXNXb3JkUG9zaXRpb24oVmlzaWJsZVBvc2l0aW9uKG1fc2VsZWN0
aW9uLmV4dGVudCgpLCBtX3NlbGVjdGlvbi5hZmZpbml0eSgpKSk7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL1NlbGVjdGlvbkNvbnRyb2xsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL1NlbGVjdGlvbkNvbnRyb2xsZXIuaAkocmV2aXNpb24gODA3MzYpCisr
KyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NlbGVjdGlvbkNvbnRyb2xsZXIuaAkod29ya2luZyBj
b3B5KQpAQCAtMTI3LDcgKzEyNyw3IEBAIHB1YmxpYzoKICAgICBib29sIGlzUmFuZ2UoKSBjb25z
dCB7IHJldHVybiBtX3NlbGVjdGlvbi5pc1JhbmdlKCk7IH0KICAgICBib29sIGlzQ2FyZXRPclJh
bmdlKCkgY29uc3QgeyByZXR1cm4gbV9zZWxlY3Rpb24uaXNDYXJldE9yUmFuZ2UoKTsgfQogICAg
IGJvb2wgaXNJblBhc3N3b3JkRmllbGQoKSBjb25zdDsKLSAgICBib29sIGlzQWxsKFN0YXlJbkVk
aXRhYmxlQ29udGVudCBzdGF5SW5FZGl0YWJsZUNvbnRlbnQgPSBNdXN0U3RheUluRWRpdGFibGVD
b250ZW50KSBjb25zdCB7IHJldHVybiBtX3NlbGVjdGlvbi5pc0FsbChzdGF5SW5FZGl0YWJsZUNv
bnRlbnQpOyB9CisgICAgYm9vbCBpc0FsbChFZGl0aW5nQm91bmRhcnlDcm9zc2luZ1J1bGUgcnVs
ZSA9IENhbm5vdENyb3NzRWRpdGluZ0JvdW5kYXJ5KSBjb25zdCB7IHJldHVybiBtX3NlbGVjdGlv
bi5pc0FsbChydWxlKTsgfQogICAgIAogICAgIFBhc3NSZWZQdHI8UmFuZ2U+IHRvTm9ybWFsaXpl
ZFJhbmdlKCkgY29uc3QgeyByZXR1cm4gbV9zZWxlY3Rpb24udG9Ob3JtYWxpemVkUmFuZ2UoKTsg
fQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1R5cGluZ0NvbW1hbmQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVHlwaW5nQ29tbWFuZC5jcHAJKHJldmlz
aW9uIDgwNzM2KQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9UeXBpbmdDb21tYW5kLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNDc0LDE0ICs0NzQsMTQgQEAgdm9pZCBUeXBpbmdDb21tYW5kOjpk
ZWxldGVLZXlQcmVzc2VkKFRleAogICAgICAgICBpZiAoa2lsbFJpbmcgJiYgc2VsZWN0aW9uLmlz
Q2FyZXQoKSAmJiBncmFudWxhcml0eSAhPSBDaGFyYWN0ZXJHcmFudWxhcml0eSkKICAgICAgICAg
ICAgIHNlbGVjdGlvbi5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6QWx0ZXJhdGlvbkV4dGVu
ZCwgRGlyZWN0aW9uQmFja3dhcmQsIENoYXJhY3RlckdyYW51bGFyaXR5KTsKIAotICAgICAgICBp
ZiAoZW5kaW5nU2VsZWN0aW9uKCkudmlzaWJsZVN0YXJ0KCkucHJldmlvdXModHJ1ZSkuaXNOdWxs
KCkpIHsKKyAgICAgICAgaWYgKGVuZGluZ1NlbGVjdGlvbigpLnZpc2libGVTdGFydCgpLnByZXZp
b3VzKENhbm5vdENyb3NzRWRpdGluZ0JvdW5kYXJ5KS5pc051bGwoKSkgewogICAgICAgICAgICAg
Ly8gV2hlbiB0aGUgY2FyZXQgaXMgYXQgdGhlIHN0YXJ0IG9mIHRoZSBlZGl0YWJsZSBhcmVhIGlu
IGFuIGVtcHR5IGxpc3QgaXRlbSwgYnJlYWsgb3V0IG9mIHRoZSBsaXN0IGl0ZW0uCiAgICAgICAg
ICAgICBpZiAoYnJlYWtPdXRPZkVtcHR5TGlzdEl0ZW0oKSkgewogICAgICAgICAgICAgICAgIHR5
cGluZ0FkZGVkVG9PcGVuQ29tbWFuZChEZWxldGVLZXkpOwogICAgICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIC8vIFdoZW4gdGhlcmUgYXJlIG5vIHZpc2li
bGUgcG9zaXRpb25zIGluIHRoZSBlZGl0aW5nIHJvb3QsIGRlbGV0ZSBpdHMgZW50aXJlIGNvbnRl
bnRzLgotICAgICAgICAgICAgaWYgKGVuZGluZ1NlbGVjdGlvbigpLnZpc2libGVTdGFydCgpLm5l
eHQodHJ1ZSkuaXNOdWxsKCkgJiYgbWFrZUVkaXRhYmxlUm9vdEVtcHR5KCkpIHsKKyAgICAgICAg
ICAgIGlmIChlbmRpbmdTZWxlY3Rpb24oKS52aXNpYmxlU3RhcnQoKS5uZXh0KENhbm5vdENyb3Nz
RWRpdGluZ0JvdW5kYXJ5KS5pc051bGwoKSAmJiBtYWtlRWRpdGFibGVSb290RW1wdHkoKSkgewog
ICAgICAgICAgICAgICAgIHR5cGluZ0FkZGVkVG9PcGVuQ29tbWFuZChEZWxldGVLZXkpOwogICAg
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KQEAgLTQ5Myw3ICs0OTMsNyBAQCB2
b2lkIFR5cGluZ0NvbW1hbmQ6OmRlbGV0ZUtleVByZXNzZWQoVGV4CiAgICAgICAgICAgICByZXR1
cm47CiAKICAgICAgICAgLy8gSWYgdGhlIGNhcmV0IGlzIGF0IHRoZSBzdGFydCBvZiBhIHBhcmFn
cmFwaCBhZnRlciBhIHRhYmxlLCBtb3ZlIGNvbnRlbnQgaW50byB0aGUgbGFzdCB0YWJsZSBjZWxs
LgotICAgICAgICBpZiAoaXNTdGFydE9mUGFyYWdyYXBoKHZpc2libGVTdGFydCkgJiYgaXNGaXJz
dFBvc2l0aW9uQWZ0ZXJUYWJsZSh2aXNpYmxlU3RhcnQucHJldmlvdXModHJ1ZSkpKSB7CisgICAg
ICAgIGlmIChpc1N0YXJ0T2ZQYXJhZ3JhcGgodmlzaWJsZVN0YXJ0KSAmJiBpc0ZpcnN0UG9zaXRp
b25BZnRlclRhYmxlKHZpc2libGVTdGFydC5wcmV2aW91cyhDYW5ub3RDcm9zc0VkaXRpbmdCb3Vu
ZGFyeSkpKSB7CiAgICAgICAgICAgICAvLyBVbmxlc3MgdGhlIGNhcmV0IGlzIGp1c3QgYmVmb3Jl
IGEgdGFibGUuICBXZSBkb24ndCB3YW50IHRvIG1vdmUgYSB0YWJsZSBpbnRvIHRoZSBsYXN0IHRh
YmxlIGNlbGwuCiAgICAgICAgICAgICBpZiAoaXNMYXN0UG9zaXRpb25CZWZvcmVUYWJsZSh2aXNp
YmxlU3RhcnQpKQogICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTU3NCw3ICs1NzQsNyBAQCB2
b2lkIFR5cGluZ0NvbW1hbmQ6OmZvcndhcmREZWxldGVLZXlQcmVzCiAgICAgICAgIFBvc2l0aW9u
IGRvd25zdHJlYW1FbmQgPSBlbmRpbmdTZWxlY3Rpb24oKS5lbmQoKS5kb3duc3RyZWFtKCk7CiAg
ICAgICAgIFZpc2libGVQb3NpdGlvbiB2aXNpYmxlRW5kID0gZW5kaW5nU2VsZWN0aW9uKCkudmlz
aWJsZUVuZCgpOwogICAgICAgICBpZiAodmlzaWJsZUVuZCA9PSBlbmRPZlBhcmFncmFwaCh2aXNp
YmxlRW5kKSkKLSAgICAgICAgICAgIGRvd25zdHJlYW1FbmQgPSB2aXNpYmxlRW5kLm5leHQodHJ1
ZSkuZGVlcEVxdWl2YWxlbnQoKS5kb3duc3RyZWFtKCk7CisgICAgICAgICAgICBkb3duc3RyZWFt
RW5kID0gdmlzaWJsZUVuZC5uZXh0KENhbm5vdENyb3NzRWRpdGluZ0JvdW5kYXJ5KS5kZWVwRXF1
aXZhbGVudCgpLmRvd25zdHJlYW0oKTsKICAgICAgICAgLy8gV2hlbiBkZWxldGluZyB0YWJsZXM6
IFNlbGVjdCB0aGUgdGFibGUgZmlyc3QsIHRoZW4gcGVyZm9ybSB0aGUgZGVsZXRpb24KICAgICAg
ICAgaWYgKGRvd25zdHJlYW1FbmQuZGVwcmVjYXRlZE5vZGUoKSAmJiBkb3duc3RyZWFtRW5kLmRl
cHJlY2F0ZWROb2RlKCktPnJlbmRlcmVyKCkgJiYgZG93bnN0cmVhbUVuZC5kZXByZWNhdGVkTm9k
ZSgpLT5yZW5kZXJlcigpLT5pc1RhYmxlKCkgJiYgIWRvd25zdHJlYW1FbmQuZGVwcmVjYXRlZEVk
aXRpbmdPZmZzZXQoKSkgewogICAgICAgICAgICAgc2V0RW5kaW5nU2VsZWN0aW9uKFZpc2libGVT
ZWxlY3Rpb24oZW5kaW5nU2VsZWN0aW9uKCkuZW5kKCksIGxhc3REZWVwRWRpdGluZ1Bvc2l0aW9u
Rm9yTm9kZShkb3duc3RyZWFtRW5kLmRlcHJlY2F0ZWROb2RlKCkpLCBET1dOU1RSRUFNKSk7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVQb3NpdGlvbi5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlUG9zaXRpb24uY3BwCShyZXZpc2lv
biA4MDczNikKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVBvc2l0aW9uLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNTksMTggKzU5LDIyIEBAIHZvaWQgVmlzaWJsZVBvc2l0aW9uOjpp
bml0KGNvbnN0IFBvc2l0aW8KICAgICAgICAgbV9hZmZpbml0eSA9IERPV05TVFJFQU07CiB9CiAK
LVZpc2libGVQb3NpdGlvbiBWaXNpYmxlUG9zaXRpb246Om5leHQoYm9vbCBzdGF5SW5FZGl0YWJs
ZUNvbnRlbnQpIGNvbnN0CitWaXNpYmxlUG9zaXRpb24gVmlzaWJsZVBvc2l0aW9uOjpuZXh0KEVk
aXRpbmdCb3VuZGFyeUNyb3NzaW5nUnVsZSBydWxlKSBjb25zdAogeworICAgIC8vIEZJWE1FOiBT
dXBwb3J0IENhblNraXBFZGl0aW5nQm91bmRhcnkKKyAgICBBU1NFUlQocnVsZSA9PSBDYW5Dcm9z
c0VkaXRpbmdCb3VuZGFyeSB8fCBydWxlID09IENhbm5vdENyb3NzRWRpdGluZ0JvdW5kYXJ5KTsK
ICAgICBWaXNpYmxlUG9zaXRpb24gbmV4dChuZXh0VmlzdWFsbHlEaXN0aW5jdENhbmRpZGF0ZSht
X2RlZXBQb3NpdGlvbiksIG1fYWZmaW5pdHkpOwotICAgIAotICAgIGlmICghc3RheUluRWRpdGFi
bGVDb250ZW50KQorCisgICAgaWYgKHJ1bGUgPT0gQ2Fubm90Q3Jvc3NFZGl0aW5nQm91bmRhcnkp
CiAgICAgICAgIHJldHVybiBuZXh0OwotICAgIAorCiAgICAgcmV0dXJuIGhvbm9yRWRpdGFibGVC
b3VuZGFyeUF0T3JBZnRlcihuZXh0KTsKIH0KIAotVmlzaWJsZVBvc2l0aW9uIFZpc2libGVQb3Np
dGlvbjo6cHJldmlvdXMoYm9vbCBzdGF5SW5FZGl0YWJsZUNvbnRlbnQpIGNvbnN0CitWaXNpYmxl
UG9zaXRpb24gVmlzaWJsZVBvc2l0aW9uOjpwcmV2aW91cyhFZGl0aW5nQm91bmRhcnlDcm9zc2lu
Z1J1bGUgcnVsZSkgY29uc3QKIHsKKyAgICAvLyBGSVhNRTogU3VwcG9ydCBDYW5Ta2lwRWRpdGlu
Z0JvdW5kYXJ5CisgICAgQVNTRVJUKHJ1bGUgPT0gQ2FuQ3Jvc3NFZGl0aW5nQm91bmRhcnkgfHwg
cnVsZSA9PSBDYW5ub3RDcm9zc0VkaXRpbmdCb3VuZGFyeSk7CiAgICAgLy8gZmluZCBmaXJzdCBw
cmV2aW91cyBET00gcG9zaXRpb24gdGhhdCBpcyB2aXNpYmxlCiAgICAgUG9zaXRpb24gcG9zID0g
cHJldmlvdXNWaXN1YWxseURpc3RpbmN0Q2FuZGlkYXRlKG1fZGVlcFBvc2l0aW9uKTsKICAgICAK
QEAgLTkxLDcgKzk1LDcgQEAgVmlzaWJsZVBvc2l0aW9uIFZpc2libGVQb3NpdGlvbjo6cHJldmlv
dQogICAgIH0KICNlbmRpZgogCi0gICAgaWYgKCFzdGF5SW5FZGl0YWJsZUNvbnRlbnQpCisgICAg
aWYgKHJ1bGUgPT0gQ2Fubm90Q3Jvc3NFZGl0aW5nQm91bmRhcnkpCiAgICAgICAgIHJldHVybiBw
cmV2OwogICAgIAogICAgIHJldHVybiBob25vckVkaXRhYmxlQm91bmRhcnlBdE9yQmVmb3JlKHBy
ZXYpOwpJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlUG9zaXRpb24uaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVQb3NpdGlvbi5oCShyZXZp
c2lvbiA4MDczNikKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVBvc2l0aW9uLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDcgQEAKICNpZm5kZWYgVmlzaWJsZVBvc2l0aW9u
X2gKICNkZWZpbmUgVmlzaWJsZVBvc2l0aW9uX2gKIAorI2luY2x1ZGUgIkVkaXRpbmdCb3VuZGFy
eS5oIgogI2luY2x1ZGUgIk5vZGUuaCIKICNpbmNsdWRlICJQb3NpdGlvbi5oIgogI2luY2x1ZGUg
IlRleHREaXJlY3Rpb24uaCIKQEAgLTQ3LDggKzQ4LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBjbGFzcyBJbmxpbmVCb3g7CiAKLWVudW0gU3RheUluRWRpdGFibGVDb250ZW50IHsgTWF5TGVh
dmVFZGl0YWJsZUNvbnRlbnQsIE11c3RTdGF5SW5FZGl0YWJsZUNvbnRlbnQgfTsKLQogY2xhc3Mg
VmlzaWJsZVBvc2l0aW9uIHsKIHB1YmxpYzoKICAgICAvLyBOT1RFOiBVUFNUUkVBTSBhZmZpbml0
eSB3aWxsIGJlIHVzZWQgb25seSBpZiBwb3MgaXMgYXQgZW5kIG9mIGEgd3JhcHBlZCBsaW5lLApA
QCAtNjksOCArNjgsOCBAQCBwdWJsaWM6CiAgICAgLy8gRklYTUU6IENoYW5nZSB0aGUgZm9sbG93
aW5nIGZ1bmN0aW9ucycgcGFyYW1ldGVyIGZyb20gYSBib29sZWFuIHRvIFN0YXlJbkVkaXRhYmxl
Q29udGVudC4KIAogICAgIC8vIG5leHQoKSBhbmQgcHJldmlvdXMoKSB3aWxsIGluY3JlbWVudC9k
ZWNyZW1lbnQgYnkgYSBjaGFyYWN0ZXIgY2x1c3Rlci4KLSAgICBWaXNpYmxlUG9zaXRpb24gbmV4
dChib29sIHN0YXlJbkVkaXRhYmxlQ29udGVudCA9IGZhbHNlKSBjb25zdDsKLSAgICBWaXNpYmxl
UG9zaXRpb24gcHJldmlvdXMoYm9vbCBzdGF5SW5FZGl0YWJsZUNvbnRlbnQgPSBmYWxzZSkgY29u
c3Q7CisgICAgVmlzaWJsZVBvc2l0aW9uIG5leHQoRWRpdGluZ0JvdW5kYXJ5Q3Jvc3NpbmdSdWxl
ID0gQ2FuQ3Jvc3NFZGl0aW5nQm91bmRhcnkpIGNvbnN0OworICAgIFZpc2libGVQb3NpdGlvbiBw
cmV2aW91cyhFZGl0aW5nQm91bmRhcnlDcm9zc2luZ1J1bGUgPSBDYW5Dcm9zc0VkaXRpbmdCb3Vu
ZGFyeSkgY29uc3Q7CiAgICAgVmlzaWJsZVBvc2l0aW9uIGhvbm9yRWRpdGFibGVCb3VuZGFyeUF0
T3JCZWZvcmUoY29uc3QgVmlzaWJsZVBvc2l0aW9uJikgY29uc3Q7CiAgICAgVmlzaWJsZVBvc2l0
aW9uIGhvbm9yRWRpdGFibGVCb3VuZGFyeUF0T3JBZnRlcihjb25zdCBWaXNpYmxlUG9zaXRpb24m
KSBjb25zdDsKIApJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlU2VsZWN0aW9u
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVTZWxlY3Rp
b24uY3BwCShyZXZpc2lvbiA4MDczNikKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJs
ZVNlbGVjdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIxNyw5ICsyMTcsOSBAQCBzdGF0aWMg
UGFzc1JlZlB0cjxSYW5nZT4gbWFrZVNlYXJjaFJhbmdlCiAgICAgcmV0dXJuIHNlYXJjaFJhbmdl
LnJlbGVhc2UoKTsKIH0KIAotYm9vbCBWaXNpYmxlU2VsZWN0aW9uOjppc0FsbChTdGF5SW5FZGl0
YWJsZUNvbnRlbnQgc3RheUluRWRpdGFibGVDb250ZW50KSBjb25zdAorYm9vbCBWaXNpYmxlU2Vs
ZWN0aW9uOjppc0FsbChFZGl0aW5nQm91bmRhcnlDcm9zc2luZ1J1bGUgcnVsZSkgY29uc3QKIHsK
LSAgICByZXR1cm4gIXNoYWRvd1RyZWVSb290Tm9kZSgpICYmIHZpc2libGVTdGFydCgpLnByZXZp
b3VzKHN0YXlJbkVkaXRhYmxlQ29udGVudCkuaXNOdWxsKCkgJiYgdmlzaWJsZUVuZCgpLm5leHQo
c3RheUluRWRpdGFibGVDb250ZW50KS5pc051bGwoKTsKKyAgICByZXR1cm4gIXNoYWRvd1RyZWVS
b290Tm9kZSgpICYmIHZpc2libGVTdGFydCgpLnByZXZpb3VzKHJ1bGUpLmlzTnVsbCgpICYmIHZp
c2libGVFbmQoKS5uZXh0KHJ1bGUpLmlzTnVsbCgpOwogfQogCiB2b2lkIFZpc2libGVTZWxlY3Rp
b246OmFwcGVuZFRyYWlsaW5nV2hpdGVzcGFjZSgpCkBAIC0zMDUsNyArMzA1LDcgQEAgdm9pZCBW
aXNpYmxlU2VsZWN0aW9uOjpzZXRTdGFydEFuZEVuZEZybwogICAgICAgICAgICAgICAgICAgICAv
LyBUaGUgcGFyYWdyYXBoIGJyZWFrIGFmdGVyIHRoZSBsYXN0IHBhcmFncmFwaCBpbiB0aGUgbGFz
dCBjZWxsIG9mIGEgYmxvY2sgdGFibGUgZW5kcwogICAgICAgICAgICAgICAgICAgICAvLyBhdCB0
aGUgc3RhcnQgb2YgdGhlIHBhcmFncmFwaCBhZnRlciB0aGUgdGFibGUuCiAgICAgICAgICAgICAg
ICAgICAgIGlmIChpc0Jsb2NrKHRhYmxlKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGVuZCA9
IGVuZC5uZXh0KHRydWUpOworICAgICAgICAgICAgICAgICAgICAgICAgZW5kID0gZW5kLm5leHQo
Q2Fubm90Q3Jvc3NFZGl0aW5nQm91bmRhcnkpOwogICAgICAgICAgICAgICAgICAgICBlbHNlCiAg
ICAgICAgICAgICAgICAgICAgICAgICBlbmQgPSB3b3JkRW5kOwogICAgICAgICAgICAgICAgIH0K
QEAgLTM1NSw3ICszNTUsNyBAQCB2b2lkIFZpc2libGVTZWxlY3Rpb246OnNldFN0YXJ0QW5kRW5k
RnJvCiAgICAgICAgICAgICAgICAgLy8gVGhlIHBhcmFncmFwaCBicmVhayBhZnRlciB0aGUgbGFz
dCBwYXJhZ3JhcGggaW4gdGhlIGxhc3QgY2VsbCBvZiBhIGJsb2NrIHRhYmxlIGVuZHMKICAgICAg
ICAgICAgICAgICAvLyBhdCB0aGUgc3RhcnQgb2YgdGhlIHBhcmFncmFwaCBhZnRlciB0aGUgdGFi
bGUsIG5vdCBhdCB0aGUgcG9zaXRpb24ganVzdCBhZnRlciB0aGUgdGFibGUuCiAgICAgICAgICAg
ICAgICAgaWYgKGlzQmxvY2sodGFibGUpKQotICAgICAgICAgICAgICAgICAgICBlbmQgPSBlbmQu
bmV4dCh0cnVlKTsKKyAgICAgICAgICAgICAgICAgICAgZW5kID0gZW5kLm5leHQoQ2Fubm90Q3Jv
c3NFZGl0aW5nQm91bmRhcnkpOwogICAgICAgICAgICAgICAgIC8vIFRoZXJlIGlzIG5vIHBhcmFy
Z3JhcGggYnJlYWsgYWZ0ZXIgdGhlIGxhc3QgcGFyYWdyYXBoIGluIHRoZSBsYXN0IGNlbGwgb2Yg
YW4gaW5saW5lIHRhYmxlLgogICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAg
ICAgZW5kID0gdmlzaWJsZVBhcmFncmFwaEVuZDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvVmlzaWJsZVNlbGVjdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvVmlzaWJsZVNlbGVjdGlvbi5oCShyZXZpc2lvbiA4MDczNikKKysrIFNvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvVmlzaWJsZVNlbGVjdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC03OSw3ICs3OSw3
IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaXNCYXNlRmlyc3QoKSBjb25zdCB7IHJldHVybiBtX2Jh
c2VJc0ZpcnN0OyB9CiAKLSAgICBib29sIGlzQWxsKFN0YXlJbkVkaXRhYmxlQ29udGVudCkgY29u
c3Q7CisgICAgYm9vbCBpc0FsbChFZGl0aW5nQm91bmRhcnlDcm9zc2luZ1J1bGUpIGNvbnN0Owog
CiAgICAgdm9pZCBhcHBlbmRUcmFpbGluZ1doaXRlc3BhY2UoKTsKIApJbmRleDogU291cmNlL1dl
YkNvcmUvZWRpdGluZy9odG1sZWRpdGluZy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvZWRpdGluZy9odG1sZWRpdGluZy5jcHAJKHJldmlzaW9uIDgwNzM2KQorKysgU291cmNlL1dl
YkNvcmUvZWRpdGluZy9odG1sZWRpdGluZy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMTYsNyAr
MTAxNiw3IEBAIFZpc2libGVTZWxlY3Rpb24gc2VsZWN0aW9uRm9yUGFyYWdyYXBoSXQKICAgICAv
LyAoYSB0YWJsZSBpcyBpdHNlbGYgYSBwYXJhZ3JhcGgpLgogICAgIGlmIChOb2RlKiB0YWJsZSA9
IGlzRmlyc3RQb3NpdGlvbkFmdGVyVGFibGUoZW5kT2ZTZWxlY3Rpb24pKQogICAgICAgICBpZiAo
c3RhcnRPZlNlbGVjdGlvbi5kZWVwRXF1aXZhbGVudCgpLmRlcHJlY2F0ZWROb2RlKCktPmlzRGVz
Y2VuZGFudE9mKHRhYmxlKSkKLSAgICAgICAgICAgIG5ld1NlbGVjdGlvbiA9IFZpc2libGVTZWxl
Y3Rpb24oc3RhcnRPZlNlbGVjdGlvbiwgZW5kT2ZTZWxlY3Rpb24ucHJldmlvdXModHJ1ZSkpOwor
ICAgICAgICAgICAgbmV3U2VsZWN0aW9uID0gVmlzaWJsZVNlbGVjdGlvbihzdGFydE9mU2VsZWN0
aW9uLCBlbmRPZlNlbGVjdGlvbi5wcmV2aW91cyhDYW5ub3RDcm9zc0VkaXRpbmdCb3VuZGFyeSkp
OwogICAgIAogICAgIC8vIElmIHRoZSBzdGFydCBvZiB0aGUgc2VsZWN0aW9uIHRvIG1vZGlmeSBp
cyBqdXN0IGJlZm9yZSBhIHRhYmxlLAogICAgIC8vIGFuZCBpZiB0aGUgZW5kIG9mIHRoZSBzZWxl
Y3Rpb24gaXMgaW5zaWRlIHRoYXQgdGFibGUsIHRoZW4gdGhlIGZpcnN0IHBhcmFncmFwaApAQCAt
MTAyNCw3ICsxMDI0LDcgQEAgVmlzaWJsZVNlbGVjdGlvbiBzZWxlY3Rpb25Gb3JQYXJhZ3JhcGhJ
dAogICAgIC8vIGNvbnRhaW5pbmcgdGhlIHRhYmxlIGl0c2VsZi4KICAgICBpZiAoTm9kZSogdGFi
bGUgPSBpc0xhc3RQb3NpdGlvbkJlZm9yZVRhYmxlKHN0YXJ0T2ZTZWxlY3Rpb24pKQogICAgICAg
ICBpZiAoZW5kT2ZTZWxlY3Rpb24uZGVlcEVxdWl2YWxlbnQoKS5kZXByZWNhdGVkTm9kZSgpLT5p
c0Rlc2NlbmRhbnRPZih0YWJsZSkpCi0gICAgICAgICAgICBuZXdTZWxlY3Rpb24gPSBWaXNpYmxl
U2VsZWN0aW9uKHN0YXJ0T2ZTZWxlY3Rpb24ubmV4dCh0cnVlKSwgZW5kT2ZTZWxlY3Rpb24pOwor
ICAgICAgICAgICAgbmV3U2VsZWN0aW9uID0gVmlzaWJsZVNlbGVjdGlvbihzdGFydE9mU2VsZWN0
aW9uLm5leHQoQ2Fubm90Q3Jvc3NFZGl0aW5nQm91bmRhcnkpLCBlbmRPZlNlbGVjdGlvbik7CiAg
ICAgCiAgICAgcmV0dXJuIG5ld1NlbGVjdGlvbjsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvdmlzaWJsZV91bml0cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRp
dGluZy92aXNpYmxlX3VuaXRzLmNwcAkocmV2aXNpb24gODA3MzYpCisrKyBTb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL3Zpc2libGVfdW5pdHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NjksMTEgKzg2
OSwxMSBAQCBWaXNpYmxlUG9zaXRpb24gZW5kT2ZQYXJhZ3JhcGgoY29uc3QgVmlzCiBWaXNpYmxl
UG9zaXRpb24gc3RhcnRPZk5leHRQYXJhZ3JhcGgoY29uc3QgVmlzaWJsZVBvc2l0aW9uJiB2aXNp
YmxlUG9zaXRpb24pCiB7CiAgICAgVmlzaWJsZVBvc2l0aW9uIHBhcmFncmFwaEVuZChlbmRPZlBh
cmFncmFwaCh2aXNpYmxlUG9zaXRpb24pKTsKLSAgICBWaXNpYmxlUG9zaXRpb24gYWZ0ZXJQYXJh
Z3JhcGhFbmQocGFyYWdyYXBoRW5kLm5leHQodHJ1ZSkpOworICAgIFZpc2libGVQb3NpdGlvbiBh
ZnRlclBhcmFncmFwaEVuZChwYXJhZ3JhcGhFbmQubmV4dChDYW5ub3RDcm9zc0VkaXRpbmdCb3Vu
ZGFyeSkpOwogICAgIC8vIFRoZSBwb3NpdGlvbiBhZnRlciB0aGUgbGFzdCBwb3NpdGlvbiBpbiB0
aGUgbGFzdCBjZWxsIG9mIGEgdGFibGUKICAgICAvLyBpcyBub3QgdGhlIHN0YXJ0IG9mIHRoZSBu
ZXh0IHBhcmFncmFwaC4KICAgICBpZiAoaXNGaXJzdFBvc2l0aW9uQWZ0ZXJUYWJsZShhZnRlclBh
cmFncmFwaEVuZCkpCi0gICAgICAgIHJldHVybiBhZnRlclBhcmFncmFwaEVuZC5uZXh0KHRydWUp
OworICAgICAgICByZXR1cm4gYWZ0ZXJQYXJhZ3JhcGhFbmQubmV4dChDYW5ub3RDcm9zc0VkaXRp
bmdCb3VuZGFyeSk7CiAgICAgcmV0dXJuIGFmdGVyUGFyYWdyYXBoRW5kOwogfQogCkluZGV4OiBT
b3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9t
YWMvQ2hhbmdlTG9nCShyZXZpc2lvbiA4MDc0OSkKKysrIFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBACisyMDExLTAzLTEwICBSeW9zdWtl
IE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFZpc2libGVQb3NpdGlvbidzIG5leHQgYW5kIHByZXZpb3VzIHNo
b3VsZCB0YWtlIGFuIGVudW0gaW5zdGVhZCBvZiBhIGJvb2xlYW4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU2MTM1CisKKyAgICAgICAgU2VsZWN0aW9u
Q29udHJvbGxlcjo6aXNBbGwgbm93IHRha2VzIEVkaXRpbmdCb3VuZGFyeUNyb3NzaW5nUnVsZSBp
bnN0ZWFkIG9mCisgICAgICAgIFN0YXlJbkVkaXRhYmxlQ29udGVudC4KKworICAgICAgICAqIFdl
YlZpZXcvV2ViVmlldy5tbToKKyAgICAgICAgKC1bV2ViVmlldyBfc2VsZWN0aW9uSXNBbGxdKToK
KwogMjAxMS0wMy0wOSAgSmVzc2llIEJlcmxpbiAgPGpiZXJsaW5AYXBwbGUuY29tPgogCiAgICAg
ICAgIFJldmlld2VkIGJ5IEFkYW0gUm9iZW4uCkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJW
aWV3L1dlYlZpZXcubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9X
ZWJWaWV3Lm1tCShyZXZpc2lvbiA4MDczNikKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcv
V2ViVmlldy5tbQkod29ya2luZyBjb3B5KQpAQCAtNTQxNSw3ICs1NDE1LDcgQEAgLSAoQk9PTClf
c2VsZWN0aW9uSXNBbGwKICAgICBGcmFtZSogY29yZUZyYW1lID0gY29yZShbc2VsZiBfc2VsZWN0
ZWRPck1haW5GcmFtZV0pOwogICAgIGlmICghY29yZUZyYW1lKQogICAgICAgICByZXR1cm4gTk87
Ci0gICAgcmV0dXJuIGNvcmVGcmFtZS0+c2VsZWN0aW9uKCktPmlzQWxsKE1heUxlYXZlRWRpdGFi
bGVDb250ZW50KTsKKyAgICByZXR1cm4gY29yZUZyYW1lLT5zZWxlY3Rpb24oKS0+aXNBbGwoQ2Fu
Q3Jvc3NFZGl0aW5nQm91bmRhcnkpOwogfQogCiBAZW5kCg==
</data>
<flag name="review"
          id="77494"
          type_id="1"
          status="+"
          setter="tony"
    />
          </attachment>
      

    </bug>

</bugzilla>