<?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>146387</bug_id>
          
          <creation_ts>2015-06-27 09:31:19 -0700</creation_ts>
          <short_desc>Make converting JSString to StringView idiomatically safe</short_desc>
          <delta_ts>2015-06-27 15:54:03 -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="Darin Adler">darin</reporter>
          <assigned_to name="Darin Adler">darin</assigned_to>
          <cc>andersca</cc>
    
    <cc>kling</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1105185</commentid>
    <comment_count>0</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-06-27 09:31:19 -0700</bug_when>
    <thetext>Make converting JSString to StringView idiomatically safe</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1105193</commentid>
    <comment_count>1</comment_count>
      <attachid>255704</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-06-27 13:51:13 -0700</bug_when>
    <thetext>Created attachment 255704
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1105208</commentid>
    <comment_count>2</comment_count>
      <attachid>255704</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2015-06-27 14:46:38 -0700</bug_when>
    <thetext>Comment on attachment 255704
Patch

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

&gt; Source/JavaScriptCore/runtime/JSString.h:456
&gt; +    const JSString* volatile m_string { nullptr };

Might be useful to put a comment here stating why this needs to be volatile.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1105223</commentid>
    <comment_count>3</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-06-27 15:54:03 -0700</bug_when>
    <thetext>Committed r186037: &lt;http://trac.webkit.org/changeset/186037&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>255704</attachid>
            <date>2015-06-27 13:51:13 -0700</date>
            <delta_ts>2015-06-27 14:46:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-146387-20150627135025.patch</filename>
            <type>text/plain</type>
            <size>22441</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg2MDMxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
OTBiZTM1OWRjMjJmNjE4ZDVmYzEzZjY4Y2U3NzFiNGMyM2I2Yjg1Li5iZDU2M2JiZmQxM2NjOGVl
NjZiZWNlMGNiMTIxNjA2NzA3ZDI4MTg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0NSBAQAorMjAxNS0wNi0yNyAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisK
KyAgICAgICAgTWFrZSBjb252ZXJ0aW5nIEpTU3RyaW5nIHRvIFN0cmluZ1ZpZXcgaWRpb21hdGlj
YWxseSBzYWZlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNDYzODcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIGpzYy5jcHA6CisgICAgICAgIChmdW5jdGlvblByaW50KTogQWRkIGV4cGxpY2l0IGNhbGwg
dG8gU2FmZVZpZXc6OmdldCwgbmVlZGVkIHNpbmNlIHRoZXJlCisgICAgICAgIGlzIG5vIFN0cmlu
Z1ZpZXcgdGVtcG9yYXJ5LgorICAgICAgICAoZnVuY3Rpb25EZWJ1Zyk6IERpdHRvLgorCisgICAg
ICAgICogcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OmhvbGVzTXVz
dEZvcndhcmRUb1Byb3RvdHlwZSk6IFJlZmFjdG9yZWQgaW50byBoZWxwZXIgZnVuY3Rpb24uCisg
ICAgICAgIChKU0M6OmpvaW4pOiBSZWZhY3RvcmVkIHNvIHRoYXQgU3RyaW5nVmlldyBpcyBhIGZ1
bmN0aW9uIGFyZ3VtZW50LCBtYWtpbmcKKyAgICAgICAgdGhlIGxpZmV0aW1lIHNpbXBsZXIuCisg
ICAgICAgIChKU0M6OmFycmF5UHJvdG9GdW5jSm9pbik6IERpdHRvLgorICAgICAgICAoSlNDOjph
cnJheVByb3RvRnVuY1JldmVyc2UpOiBVc2UgbmV3IGhvbGVzTXVzdEZvcndhcmRUb1Byb3RvdHlw
ZSBoZWxwZXIuCisKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmNw
cDoKKyAgICAgICAgKEpTQzo6ZW5jb2RlKTogQWRkIGV4cGxpY2l0IGNhbGwgdG8gU2FmZVZpZXc6
OmdldC4KKworICAgICAgICAqIHJ1bnRpbWUvSlNTdHJpbmcuaDogTW92ZWQgZGVjbGFyYXRpb25z
IG9mIGZ1bmN0aW9ucyB0byB0aGUgdG9wIG9mIHRoZQorICAgICAgICBmaWxlIGluc3RlYWQgb2Yg
bWl4aW5nIHRoZW0gaW4gd2l0aCB0aGUgZnVuY3Rpb24gZGVmaW5pdGlvbnMuIENoYW5nZWQKKyAg
ICAgICAgcmV0dXJuIHR5cGUgb2YgdGhlIHZpZXcgZnVuY3Rpb24gdG8gcmV0dXJuIGEgSlNTdHJp
bmc6OlNhZmVWaWV3IHNvIHRoYXQKKyAgICAgICAgdGhlIEpTU3RyaW5nJ3MgbGlmZXRpbWUgd2ls
bCBsYXN0IGFzIGxvbmcgYXMgdGhlIFN0cmluZ1ZpZXcgZG9lcyBpbgorICAgICAgICB0eXBpY2Fs
IGNvZGluZyBpZGlvbXMuCisgICAgICAgIChKU0M6OkpTU3RyaW5nOjpnZXRJbmRleCk6IFVzZSB1
bnNhZmVWaWV3IHNvIHdlIGNhbiBpbmRleCBpbnRvIHRoZQorICAgICAgICB2aWV3OyBjb3VsZCBh
bHNvIGhhdmUgdXNlZCB2aWV3LmdldCBidXQgaGVyZSBpbiB0aGlzIGNsYXNzIHRoaXMgc2VlbXMg
ZmluZS4KKyAgICAgICAgKEpTQzo6SlNSb3BlU3RyaW5nOjp1bnNhZmVWaWV3KTogUmVuYW1lZCBl
eGlzdGluZyB2aWV3IGZ1bmN0aW9uIHRvIHRoaXMuCisgICAgICAgIChKU0M6OkpTU3RyaW5nOjp1
bnNhZmVWaWV3KTogRGl0dG8uCisgICAgICAgIChKU0M6OkpTU3RyaW5nOjpTYWZlVmlldzo6U2Fm
ZVZpZXcpOiBDb250YWlucyByZWZlcmVuY2UgdG8gYW4gRXhlY1N0YXRlCisgICAgICAgIGFuZCBh
IEpTU3RyaW5nLiBUaGUgRXhlY1N0YXRlIGlzIG5lZWRlZCB0byBjcmVhdGUgdGhlIFN0cmluZ1Zp
ZXcsIGFuZCB0aGUKKyAgICAgICAgSlNTdHJpbmcgbmVlZHMgdG8gYmUga2VwdCBhbGl2ZSBhcyBs
b25nIGFzIHRoZSBTdHJpbmdWaWV3IGlzLgorICAgICAgICAoSlNDOjpKU1N0cmluZzo6U2FmZVZp
ZXc6Om9wZXJhdG9yIFN0cmluZ1ZpZXcpOiBDYWxsIHVuc2FmZVZpZXcuCisgICAgICAgIChKU0M6
OkpTU3RyaW5nOjpTYWZlVmlldzo6Z2V0KTogQ29udmVuaWVuY2UgZm9yIHdoZW4gd2Ugd2FudCB0
byBjYWxsCisgICAgICAgIFN0cmluZ1ZpZXcgbWVtYmVyIGZ1bmN0aW9ucy4KKyAgICAgICAgKEpT
Qzo6SlNTdHJpbmc6OnZpZXcpOiBBZGRlZC4gUmV0dXJucyBhIFNhZmVWaWV3LgorCisgICAgICAg
ICogcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpzdHJpbmdQcm90
b0Z1bmNJbmRleE9mKTogQWRkIGV4cGxpY2l0IGNhbGwgdG8gU2FmZVZpZXc6OmdldC4KKwogMjAx
NS0wNi0yNiAgQ3NhYmEgT3N6dHJvZ29uw6FjICA8b3NzeUB3ZWJraXQub3JnPgogCiAgICAgICAg
IFJlbW92ZSBBUk12N0Fzc2VtYmxlci5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qc2MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKaW5kZXggMDJjNjcz
MWZhNzU0MGJhNGRiYzgyY2MwM2VmOTZjMDg0NjgzMDMxNC4uZjMwMGQxZGM3YTI3NzgxNTlkMjEw
M2ExODRmZTY4YjJkNGYzOTgxMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pz
Yy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKQEAgLTcwMSw3ICs3MDEs
NyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uUHJpbnQoRXhlY1N0YXRl
KiBleGVjKQogICAgICAgICBpZiAoaSkKICAgICAgICAgICAgIHB1dGNoYXIoJyAnKTsKIAotICAg
ICAgICBwcmludGYoIiVzIiwgZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoaSkudG9TdHJpbmcoZXhl
YyktPnZpZXcoZXhlYykudXRmOCgpLmRhdGEoKSk7CisgICAgICAgIHByaW50ZigiJXMiLCBleGVj
LT51bmNoZWNrZWRBcmd1bWVudChpKS50b1N0cmluZyhleGVjKS0+dmlldyhleGVjKS5nZXQoKS51
dGY4KCkuZGF0YSgpKTsKICAgICB9CiAKICAgICBwdXRjaGFyKCdcbicpOwpAQCAtNzIyLDcgKzcy
Miw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25EdW1wQ2FsbEZyYW1l
KEV4ZWNTdGF0ZSogZXhlYykKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlv
bkRlYnVnKEV4ZWNTdGF0ZSogZXhlYykKIHsKLSAgICBmcHJpbnRmKHN0ZGVyciwgIi0tPiAlc1xu
IiwgZXhlYy0+YXJndW1lbnQoMCkudG9TdHJpbmcoZXhlYyktPnZpZXcoZXhlYykudXRmOCgpLmRh
dGEoKSk7CisgICAgZnByaW50ZihzdGRlcnIsICItLT4gJXNcbiIsIGV4ZWMtPmFyZ3VtZW50KDAp
LnRvU3RyaW5nKGV4ZWMpLT52aWV3KGV4ZWMpLmdldCgpLnV0ZjgoKS5kYXRhKCkpOwogICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcAppbmRleCBjODBlYWE2N2Vk
MWRjOWM5YmI2ZGM3YTFhOGQ1MDM1NDI0MTAyZWMzLi5lNjgyNDI5NzkyMDc3YTA1YzIyYWVjMzg0
ZGJjZDg0NDlmZTI0ODU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9BcnJheVByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
QXJyYXlQcm90b3R5cGUuY3BwCkBAIC00MCw3ICs0MCw2IEBACiAjaW5jbHVkZSAiT2JqZWN0Q29u
c3RydWN0b3IuaCIKICNpbmNsdWRlICJPYmplY3RQcm90b3R5cGUuaCIKICNpbmNsdWRlICJTdHJp
bmdSZWN1cnNpb25DaGVja2VyLmgiCi0jaW5jbHVkZSAiU3Ryb25nSW5saW5lcy5oIgogI2luY2x1
ZGUgPGFsZ29yaXRobT4KICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgogI2luY2x1ZGUgPHd0
Zi9IYXNoU2V0Lmg+CkBAIC0zODAsMzEgKzM3OSwxNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBz
dGF0aWMgaW5saW5lIGJvb2wgY29udGFpbnNIb2xlKFQqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkK
ICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJy
YXlQcm90b0Z1bmNKb2luKEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBpbmxpbmUgYm9vbCBob2xl
c011c3RGb3J3YXJkVG9Qcm90b3R5cGUoRXhlY1N0YXRlJiBzdGF0ZSwgSlNPYmplY3QqIG9iamVj
dCkKIHsKLSAgICBKU09iamVjdCogdGhpc09iamVjdCA9IGV4ZWMtPnRoaXNWYWx1ZSgpLnRvVGhp
cyhleGVjLCBTdHJpY3RNb2RlKS50b09iamVjdChleGVjKTsKLQotICAgIHVuc2lnbmVkIGxlbmd0
aCA9IGdldExlbmd0aChleGVjLCB0aGlzT2JqZWN0KTsKLSAgICBpZiAoZXhlYy0+aGFkRXhjZXB0
aW9uKCkpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0K
LSAgICBTdHJpbmdSZWN1cnNpb25DaGVja2VyIGNoZWNrZXIoZXhlYywgdGhpc09iamVjdCk7Ci0g
ICAgaWYgKEpTVmFsdWUgZWFybHlSZXR1cm5WYWx1ZSA9IGNoZWNrZXIuZWFybHlSZXR1cm5WYWx1
ZSgpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGVhcmx5UmV0dXJuVmFsdWUpOwot
Ci0gICAgYXV0byYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8mIHZtID0gc3RhdGUudm0oKTsK
KyAgICByZXR1cm4gb2JqZWN0LT5zdHJ1Y3R1cmUodm0pLT5ob2xlc011c3RGb3J3YXJkVG9Qcm90
b3R5cGUodm0pOworfQogCi0gICAgU3Ryb25nPEpTU3RyaW5nPiBzZXBhcmF0b3JPbkhlYXA7Ci0g
ICAgU3RyaW5nVmlldyBzZXBhcmF0b3I7Ci0gICAgaWYgKGV4ZWMtPmFyZ3VtZW50KDApLmlzVW5k
ZWZpbmVkKCkpIHsKLSAgICAgICAgc3RhdGljIGNvbnN0IExDaGFyIGNvbW1hID0gJywnOwotICAg
ICAgICBzZXBhcmF0b3IgPSB7ICZjb21tYSwgMSB9OwotICAgIH0gZWxzZSB7Ci0gICAgICAgIHNl
cGFyYXRvck9uSGVhcC5zZXQodm0sIGV4ZWMtPmFyZ3VtZW50KDApLnRvU3RyaW5nKGV4ZWMpKTsK
LSAgICAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQotICAgICAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICAgICAgc2VwYXJhdG9yID0gc2VwYXJh
dG9yT25IZWFwLT52aWV3KGV4ZWMpOwotICAgIH0KK3N0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqb2lu
KEV4ZWNTdGF0ZSYgc3RhdGUsIEpTT2JqZWN0KiB0aGlzT2JqZWN0LCBTdHJpbmdWaWV3IHNlcGFy
YXRvcikKK3sKKyAgICB1bnNpZ25lZCBsZW5ndGggPSBnZXRMZW5ndGgoJnN0YXRlLCB0aGlzT2Jq
ZWN0KTsKKyAgICBpZiAoc3RhdGUuaGFkRXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybiBqc1Vu
ZGVmaW5lZCgpOwogCiAgICAgc3dpdGNoICh0aGlzT2JqZWN0LT5pbmRleGluZ1R5cGUoKSkgewog
ICAgIGNhc2UgQUxMX0NPTlRJR1VPVVNfSU5ERVhJTkdfVFlQRVM6CkBAIC00MTIsODYgKzM5Nywx
MDYgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY0pvaW4oRXhl
Y1N0YXRlKiBleGVjKQogICAgICAgICBhdXRvJiBidXR0ZXJmbHkgPSAqdGhpc09iamVjdC0+YnV0
dGVyZmx5KCk7CiAgICAgICAgIGlmIChsZW5ndGggPiBidXR0ZXJmbHkucHVibGljTGVuZ3RoKCkp
CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgSlNTdHJpbmdKb2luZXIgam9pbmVyKCpleGVj
LCBzZXBhcmF0b3IsIGxlbmd0aCk7Ci0gICAgICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkK
LSAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAg
ICAgIEpTU3RyaW5nSm9pbmVyIGpvaW5lcihzdGF0ZSwgc2VwYXJhdG9yLCBsZW5ndGgpOworICAg
ICAgICBpZiAoc3RhdGUuaGFkRXhjZXB0aW9uKCkpCisgICAgICAgICAgICByZXR1cm4ganNVbmRl
ZmluZWQoKTsKICAgICAgICAgYXV0byBkYXRhID0gYnV0dGVyZmx5LmNvbnRpZ3VvdXMoKS5kYXRh
KCk7CiAgICAgICAgIGJvb2wgaG9sZXNLbm93blRvQmVPSyA9IGZhbHNlOwogICAgICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKICAgICAgICAgICAgIGlmIChKU1Zh
bHVlIHZhbHVlID0gZGF0YVtpXS5nZXQoKSkgewotICAgICAgICAgICAgICAgIGpvaW5lci5hcHBl
bmQoKmV4ZWMsIHZhbHVlKTsKLSAgICAgICAgICAgICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9u
KCkpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmlu
ZWQoKSk7CisgICAgICAgICAgICAgICAgam9pbmVyLmFwcGVuZChzdGF0ZSwgdmFsdWUpOworICAg
ICAgICAgICAgICAgIGlmIChzdGF0ZS5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAg
ICAgICAgIGlmICghaG9sZXNLbm93blRvQmVPSykgewotICAgICAgICAgICAgICAgICAgICBpZiAo
dGhpc09iamVjdC0+c3RydWN0dXJlKHZtKS0+aG9sZXNNdXN0Rm9yd2FyZFRvUHJvdG90eXBlKHZt
KSkKKyAgICAgICAgICAgICAgICAgICAgaWYgKGhvbGVzTXVzdEZvcndhcmRUb1Byb3RvdHlwZShz
dGF0ZSwgdGhpc09iamVjdCkpCiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGdlbmVyYWxD
YXNlOwogICAgICAgICAgICAgICAgICAgICBob2xlc0tub3duVG9CZU9LID0gdHJ1ZTsKICAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgam9pbmVyLmFwcGVuZEVtcHR5U3RyaW5nKCk7
CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqb2luZXIuam9pbigqZXhlYykpOworICAgICAgICByZXR1cm4gam9pbmVyLmpvaW4oc3RhdGUp
OwogICAgIH0KICAgICBjYXNlIEFMTF9ET1VCTEVfSU5ERVhJTkdfVFlQRVM6IHsKICAgICAgICAg
YXV0byYgYnV0dGVyZmx5ID0gKnRoaXNPYmplY3QtPmJ1dHRlcmZseSgpOwogICAgICAgICBpZiAo
bGVuZ3RoID4gYnV0dGVyZmx5LnB1YmxpY0xlbmd0aCgpKQogICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgIEpTU3RyaW5nSm9pbmVyIGpvaW5lcigqZXhlYywgc2VwYXJhdG9yLCBsZW5ndGgpOwot
ICAgICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCi0gICAgICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgICAgICBKU1N0cmluZ0pvaW5lciBqb2lu
ZXIoc3RhdGUsIHNlcGFyYXRvciwgbGVuZ3RoKTsKKyAgICAgICAgaWYgKHN0YXRlLmhhZEV4Y2Vw
dGlvbigpKQorICAgICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAgICAgICAgIGF1dG8g
ZGF0YSA9IGJ1dHRlcmZseS5jb250aWd1b3VzRG91YmxlKCkuZGF0YSgpOwogICAgICAgICBib29s
IGhvbGVzS25vd25Ub0JlT0sgPSBmYWxzZTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IGxlbmd0aDsgKytpKSB7CiAgICAgICAgICAgICBkb3VibGUgdmFsdWUgPSBkYXRhW2ldOwog
ICAgICAgICAgICAgaWYgKCFpc0hvbGUodmFsdWUpKQotICAgICAgICAgICAgICAgIGpvaW5lci5h
cHBlbmQoKmV4ZWMsIGpzRG91YmxlTnVtYmVyKHZhbHVlKSk7CisgICAgICAgICAgICAgICAgam9p
bmVyLmFwcGVuZChzdGF0ZSwganNEb3VibGVOdW1iZXIodmFsdWUpKTsKICAgICAgICAgICAgIGVs
c2UgewogICAgICAgICAgICAgICAgIGlmICghaG9sZXNLbm93blRvQmVPSykgewotICAgICAgICAg
ICAgICAgICAgICBpZiAodGhpc09iamVjdC0+c3RydWN0dXJlKHZtKS0+aG9sZXNNdXN0Rm9yd2Fy
ZFRvUHJvdG90eXBlKHZtKSkKKyAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXNPYmplY3QtPnN0
cnVjdHVyZShzdGF0ZS52bSgpKS0+aG9sZXNNdXN0Rm9yd2FyZFRvUHJvdG90eXBlKHN0YXRlLnZt
KCkpKQogICAgICAgICAgICAgICAgICAgICAgICAgZ290byBnZW5lcmFsQ2FzZTsKICAgICAgICAg
ICAgICAgICAgICAgaG9sZXNLbm93blRvQmVPSyA9IHRydWU7CiAgICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICAgICAgIGpvaW5lci5hcHBlbmRFbXB0eVN0cmluZygpOwogICAgICAgICAgICAg
fQogICAgICAgICB9Ci0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoam9pbmVyLmpvaW4o
KmV4ZWMpKTsKKyAgICAgICAgcmV0dXJuIGpvaW5lci5qb2luKHN0YXRlKTsKICAgICB9CiAgICAg
Y2FzZSBBTExfQVJSQVlfU1RPUkFHRV9JTkRFWElOR19UWVBFUzogewogICAgICAgICBhdXRvJiBz
dG9yYWdlID0gKnRoaXNPYmplY3QtPmJ1dHRlcmZseSgpLT5hcnJheVN0b3JhZ2UoKTsKICAgICAg
ICAgaWYgKGxlbmd0aCA+IHN0b3JhZ2UudmVjdG9yTGVuZ3RoKCkpCiAgICAgICAgICAgICBicmVh
azsKLSAgICAgICAgaWYgKHN0b3JhZ2UuaGFzSG9sZXMoKSAmJiB0aGlzT2JqZWN0LT5zdHJ1Y3R1
cmUodm0pLT5ob2xlc011c3RGb3J3YXJkVG9Qcm90b3R5cGUodm0pKQorICAgICAgICBpZiAoc3Rv
cmFnZS5oYXNIb2xlcygpICYmIHRoaXNPYmplY3QtPnN0cnVjdHVyZShzdGF0ZS52bSgpKS0+aG9s
ZXNNdXN0Rm9yd2FyZFRvUHJvdG90eXBlKHN0YXRlLnZtKCkpKQogICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgIEpTU3RyaW5nSm9pbmVyIGpvaW5lcigqZXhlYywgc2VwYXJhdG9yLCBsZW5ndGgp
OwotICAgICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCi0gICAgICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgICAgICBKU1N0cmluZ0pvaW5lciBq
b2luZXIoc3RhdGUsIHNlcGFyYXRvciwgbGVuZ3RoKTsKKyAgICAgICAgaWYgKHN0YXRlLmhhZEV4
Y2VwdGlvbigpKQorICAgICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAgICAgICAgIGF1
dG8gZGF0YSA9IHN0b3JhZ2UudmVjdG9yKCkuZGF0YSgpOwogICAgICAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKICAgICAgICAgICAgIGlmIChKU1ZhbHVlIHZhbHVl
ID0gZGF0YVtpXS5nZXQoKSkgewotICAgICAgICAgICAgICAgIGpvaW5lci5hcHBlbmQoKmV4ZWMs
IHZhbHVlKTsKLSAgICAgICAgICAgICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCi0gICAg
ICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Cisg
ICAgICAgICAgICAgICAgam9pbmVyLmFwcGVuZChzdGF0ZSwgdmFsdWUpOworICAgICAgICAgICAg
ICAgIGlmIChzdGF0ZS5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IGpzVW5kZWZpbmVkKCk7CiAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICBqb2lu
ZXIuYXBwZW5kRW1wdHlTdHJpbmcoKTsKICAgICAgICAgfQotICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpvaW5lci5qb2luKCpleGVjKSk7CisgICAgICAgIHJldHVybiBqb2luZXIuam9p
bihzdGF0ZSk7CiAgICAgfQogICAgIH0KIAogZ2VuZXJhbENhc2U6Ci0gICAgSlNTdHJpbmdKb2lu
ZXIgam9pbmVyKCpleGVjLCBzZXBhcmF0b3IsIGxlbmd0aCk7Ci0gICAgaWYgKGV4ZWMtPmhhZEV4
Y2VwdGlvbigpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkp
OworICAgIEpTU3RyaW5nSm9pbmVyIGpvaW5lcihzdGF0ZSwgc2VwYXJhdG9yLCBsZW5ndGgpOwor
ICAgIGlmIChzdGF0ZS5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVk
KCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7Ci0gICAgICAg
IEpTVmFsdWUgZWxlbWVudCA9IHRoaXNPYmplY3QtPmdldEluZGV4KGV4ZWMsIGkpOwotICAgICAg
ICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCi0gICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotICAgICAgICBqb2luZXIuYXBwZW5kKCpleGVjLCBlbGVt
ZW50KTsKLSAgICAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQotICAgICAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKyAgICAgICAgSlNWYWx1ZSBlbGVt
ZW50ID0gdGhpc09iamVjdC0+Z2V0SW5kZXgoJnN0YXRlLCBpKTsKKyAgICAgICAgaWYgKHN0YXRl
LmhhZEV4Y2VwdGlvbigpKQorICAgICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CisgICAg
ICAgIGpvaW5lci5hcHBlbmQoc3RhdGUsIGVsZW1lbnQpOworICAgICAgICBpZiAoc3RhdGUuaGFk
RXhjZXB0aW9uKCkpCisgICAgICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKKyAgICB9Cisg
ICAgcmV0dXJuIGpvaW5lci5qb2luKHN0YXRlKTsKK30KKworRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBhcnJheVByb3RvRnVuY0pvaW4oRXhlY1N0YXRlKiBleGVjKQoreworICAgIEpTT2Jq
ZWN0KiB0aGlzT2JqZWN0ID0gZXhlYy0+dGhpc1ZhbHVlKCkudG9UaGlzKGV4ZWMsIFN0cmljdE1v
ZGUpLnRvT2JqZWN0KGV4ZWMpOworCisgICAgU3RyaW5nUmVjdXJzaW9uQ2hlY2tlciBjaGVja2Vy
KGV4ZWMsIHRoaXNPYmplY3QpOworICAgIGlmIChKU1ZhbHVlIGVhcmx5UmV0dXJuVmFsdWUgPSBj
aGVja2VyLmVhcmx5UmV0dXJuVmFsdWUoKSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShlYXJseVJldHVyblZhbHVlKTsKKworICAgIEpTVmFsdWUgc2VwYXJhdG9yVmFsdWUgPSBleGVj
LT5hcmd1bWVudCgwKTsKKyAgICBpZiAoc2VwYXJhdG9yVmFsdWUuaXNVbmRlZmluZWQoKSkgewor
ICAgICAgICBjb25zdCBMQ2hhciBjb21tYSA9ICcsJzsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqb2luKCpleGVjLCB0aGlzT2JqZWN0LCB7ICZjb21tYSwgMSB9KSk7CiAgICAgfQot
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoam9pbmVyLmpvaW4oKmV4ZWMpKTsKKworICAgIEpT
U3RyaW5nKiBzZXBhcmF0b3IgPSBzZXBhcmF0b3JWYWx1ZS50b1N0cmluZyhleGVjKTsKKyAgICBp
ZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNVbmRlZmluZWQoKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqb2luKCpleGVjLCB0
aGlzT2JqZWN0LCBzZXBhcmF0b3ItPnZpZXcoZXhlYykpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY0NvbmNhdChFeGVjU3RhdGUqIGV4ZWMpCkBAIC02
MTksOCArNjI0LDYgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVu
Y1JldmVyc2UoRXhlY1N0YXRlKiBleGVjKQogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkK
ICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIAotICAgIGF1
dG8mIHZtID0gZXhlYy0+dm0oKTsKLQogICAgIHN3aXRjaCAodGhpc09iamVjdC0+aW5kZXhpbmdU
eXBlKCkpIHsKICAgICBjYXNlIEFMTF9DT05USUdVT1VTX0lOREVYSU5HX1RZUEVTOgogICAgIGNh
c2UgQUxMX0lOVDMyX0lOREVYSU5HX1RZUEVTOiB7CkBAIC02MjgsNyArNjMxLDcgQEAgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY1JldmVyc2UoRXhlY1N0YXRlKiBl
eGVjKQogICAgICAgICBpZiAobGVuZ3RoID4gYnV0dGVyZmx5LnB1YmxpY0xlbmd0aCgpKQogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIGF1dG8gZGF0YSA9IGJ1dHRlcmZseS5jb250aWd1b3Vz
KCkuZGF0YSgpOwotICAgICAgICBpZiAoY29udGFpbnNIb2xlKGRhdGEsIGxlbmd0aCkgJiYgdGhp
c09iamVjdC0+c3RydWN0dXJlKHZtKS0+aG9sZXNNdXN0Rm9yd2FyZFRvUHJvdG90eXBlKHZtKSkK
KyAgICAgICAgaWYgKGNvbnRhaW5zSG9sZShkYXRhLCBsZW5ndGgpICYmIGhvbGVzTXVzdEZvcndh
cmRUb1Byb3RvdHlwZSgqZXhlYywgdGhpc09iamVjdCkpCiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgc3RkOjpyZXZlcnNlKGRhdGEsIGRhdGEgKyBsZW5ndGgpOwogICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKHRoaXNPYmplY3QpOwpAQCAtNjM4LDcgKzY0MSw3IEBAIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNSZXZlcnNlKEV4ZWNTdGF0ZSogZXhl
YykKICAgICAgICAgaWYgKGxlbmd0aCA+IGJ1dHRlcmZseS5wdWJsaWNMZW5ndGgoKSkKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICBhdXRvIGRhdGEgPSBidXR0ZXJmbHkuY29udGlndW91c0Rv
dWJsZSgpLmRhdGEoKTsKLSAgICAgICAgaWYgKGNvbnRhaW5zSG9sZShkYXRhLCBsZW5ndGgpICYm
IHRoaXNPYmplY3QtPnN0cnVjdHVyZSh2bSktPmhvbGVzTXVzdEZvcndhcmRUb1Byb3RvdHlwZSh2
bSkpCisgICAgICAgIGlmIChjb250YWluc0hvbGUoZGF0YSwgbGVuZ3RoKSAmJiBob2xlc011c3RG
b3J3YXJkVG9Qcm90b3R5cGUoKmV4ZWMsIHRoaXNPYmplY3QpKQogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIHN0ZDo6cmV2ZXJzZShkYXRhLCBkYXRhICsgbGVuZ3RoKTsKICAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZSh0aGlzT2JqZWN0KTsKQEAgLTY0Nyw3ICs2NTAsNyBAQCBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jUmV2ZXJzZShFeGVjU3RhdGUq
IGV4ZWMpCiAgICAgICAgIGF1dG8mIHN0b3JhZ2UgPSAqdGhpc09iamVjdC0+YnV0dGVyZmx5KCkt
PmFycmF5U3RvcmFnZSgpOwogICAgICAgICBpZiAobGVuZ3RoID4gc3RvcmFnZS52ZWN0b3JMZW5n
dGgoKSkKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBpZiAoc3RvcmFnZS5oYXNIb2xlcygp
ICYmIHRoaXNPYmplY3QtPnN0cnVjdHVyZSh2bSktPmhvbGVzTXVzdEZvcndhcmRUb1Byb3RvdHlw
ZSh2bSkpCisgICAgICAgIGlmIChzdG9yYWdlLmhhc0hvbGVzKCkgJiYgaG9sZXNNdXN0Rm9yd2Fy
ZFRvUHJvdG90eXBlKCpleGVjLCB0aGlzT2JqZWN0KSkKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICBhdXRvIGRhdGEgPSBzdG9yYWdlLnZlY3RvcigpLmRhdGEoKTsKICAgICAgICAgc3RkOjpy
ZXZlcnNlKGRhdGEsIGRhdGEgKyBsZW5ndGgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuY3BwCmluZGV4IGMzNGJm
Y2M2N2MyMWNkNDY4MDk4NTc3ZDM1MTRhYmNiMjJmNjVkOTEuLjQ1YTI0ZWNkMjBkM2MxN2VmZTQz
YTQ5NDA4MDY5MjE5NjIyODM4ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5jcHAKQEAgLTY0LDcgKzY0LDcg
QEAgc3RhdGljIEJpdG1hcDwyNTY+IG1ha2VDaGFyYWN0ZXJCaXRtYXAoY29uc3QgY2hhciAoJmNo
YXJhY3RlcnMpW2NoYXJhY3RlcnNDb3VudF0KIAogc3RhdGljIEpTVmFsdWUgZW5jb2RlKEV4ZWNT
dGF0ZSogZXhlYywgY29uc3QgQml0bWFwPDI1Nj4mIGRvTm90RXNjYXBlKQogewotICAgIENTdHJp
bmcgY3N0ciA9IGV4ZWMtPmFyZ3VtZW50KDApLnRvU3RyaW5nKGV4ZWMpLT52aWV3KGV4ZWMpLnV0
ZjgoU3RyaWN0Q29udmVyc2lvbik7CisgICAgQ1N0cmluZyBjc3RyID0gZXhlYy0+YXJndW1lbnQo
MCkudG9TdHJpbmcoZXhlYyktPnZpZXcoZXhlYykuZ2V0KCkudXRmOChTdHJpY3RDb252ZXJzaW9u
KTsKICAgICBpZiAoIWNzdHIuZGF0YSgpKQogICAgICAgICByZXR1cm4gZXhlYy0+dm0oKS50aHJv
d0V4Y2VwdGlvbihleGVjLCBjcmVhdGVVUklFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlN0cmlu
ZyBjb250YWluZWQgYW4gaWxsZWdhbCBVVEYtMTYgc2VxdWVuY2UuIikpKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmgKaW5kZXggMDM0ZTdjYjUwY2RkMWQ3MzczNWY2
YTdjOGUzOTllZjhjOWNlYjljYS4uYTUyZjRmODExZWFjMWViYjQ2Y2FjMTEwNDFlZmQ1YTQ3N2Ez
ZjBjNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5oCkBAIC00Nyw2
ICs0Nyw4IEBAIEpTU3RyaW5nKiBqc1NpbmdsZUNoYXJhY3RlclN0cmluZyhWTSosIFVDaGFyKTsK
IEpTU3RyaW5nKiBqc1NpbmdsZUNoYXJhY3RlclN0cmluZyhFeGVjU3RhdGUqLCBVQ2hhcik7CiBK
U1N0cmluZyoganNTdWJzdHJpbmcoVk0qLCBjb25zdCBTdHJpbmcmLCB1bnNpZ25lZCBvZmZzZXQs
IHVuc2lnbmVkIGxlbmd0aCk7CiBKU1N0cmluZyoganNTdWJzdHJpbmcoRXhlY1N0YXRlKiwgY29u
c3QgU3RyaW5nJiwgdW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpOworSlNTdHJpbmcq
IGpzU3Vic3RyaW5nOChWTSosIGNvbnN0IFN0cmluZyYsIHVuc2lnbmVkIG9mZnNldCwgdW5zaWdu
ZWQgbGVuZ3RoKTsKK0pTU3RyaW5nKiBqc1N1YnN0cmluZzgoRXhlY1N0YXRlKiwgY29uc3QgU3Ry
aW5nJiwgdW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpOwogCiAvLyBOb24tdHJpdmlh
bCBzdHJpbmdzIGFyZSB0d28gb3IgbW9yZSBjaGFyYWN0ZXJzIGxvbmcuCiAvLyBUaGVzZSBmdW5j
dGlvbnMgYXJlIGZhc3RlciB0aGFuIGp1c3QgY2FsbGluZyBqc1N0cmluZy4KQEAgLTYyLDYgKzY0
LDkgQEAgSlNTdHJpbmcqIGpzT3duZWRTdHJpbmcoRXhlY1N0YXRlKiwgY29uc3QgU3RyaW5nJik7
CiAKIEpTUm9wZVN0cmluZyoganNTdHJpbmdCdWlsZGVyKFZNKik7CiAKK2Jvb2wgaXNKU1N0cmlu
ZyhKU1ZhbHVlKTsKK0pTU3RyaW5nKiBhc1N0cmluZyhKU1ZhbHVlKTsKKwogc3RydWN0IFN0cmlu
Z1ZpZXdXaXRoVW5kZXJseWluZ1N0cmluZyB7CiAgICAgU3RyaW5nVmlldyB2aWV3OwogICAgIFN0
cmluZyB1bmRlcmx5aW5nU3RyaW5nOwpAQCAtMTQ4LDggKzE1MywxMSBAQCBwdWJsaWM6CiAgICAg
SWRlbnRpZmllciB0b0lkZW50aWZpZXIoRXhlY1N0YXRlKikgY29uc3Q7CiAgICAgQXRvbWljU3Ry
aW5nIHRvQXRvbWljU3RyaW5nKEV4ZWNTdGF0ZSopIGNvbnN0OwogICAgIFJlZlB0cjxBdG9taWNT
dHJpbmdJbXBsPiB0b0V4aXN0aW5nQXRvbWljU3RyaW5nKEV4ZWNTdGF0ZSopIGNvbnN0OwotICAg
IFN0cmluZ1ZpZXcgdmlldyhFeGVjU3RhdGUqKSBjb25zdDsKKworICAgIGNsYXNzIFNhZmVWaWV3
OworICAgIFNhZmVWaWV3IHZpZXcoRXhlY1N0YXRlKikgY29uc3Q7CiAgICAgU3RyaW5nVmlld1dp
dGhVbmRlcmx5aW5nU3RyaW5nIHZpZXdXaXRoVW5kZXJseWluZ1N0cmluZyhFeGVjU3RhdGUmKSBj
b25zdDsKKwogICAgIGNvbnN0IFN0cmluZyYgdmFsdWUoRXhlY1N0YXRlKikgY29uc3Q7CiAgICAg
Y29uc3QgU3RyaW5nJiB0cnlHZXRWYWx1ZSgpIGNvbnN0OwogICAgIGNvbnN0IFN0cmluZ0ltcGwq
IHRyeUdldFZhbHVlSW1wbCgpIGNvbnN0OwpAQCAtMjIwLDYgKzIyOCw3IEBAIHByaXZhdGU6CiAg
ICAgc3RhdGljIEpTVmFsdWUgdG9UaGlzKEpTQ2VsbCosIEV4ZWNTdGF0ZSosIEVDTUFNb2RlKTsK
IAogICAgIFN0cmluZyYgc3RyaW5nKCkgeyBBU1NFUlQoIWlzUm9wZSgpKTsgcmV0dXJuIG1fdmFs
dWU7IH0KKyAgICBTdHJpbmdWaWV3IHVuc2FmZVZpZXcoRXhlY1N0YXRlJikgY29uc3Q7CiAKICAg
ICBmcmllbmQgSlNWYWx1ZSBqc1N0cmluZyhFeGVjU3RhdGUqLCBKU1N0cmluZyosIEpTU3RyaW5n
Kik7CiAgICAgZnJpZW5kIEpTU3RyaW5nKiBqc1N1YnN0cmluZyhFeGVjU3RhdGUqLCBKU1N0cmlu
ZyosIHVuc2lnbmVkIG9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKTsKQEAgLTM4OSw3ICszOTgsNyBA
QCBwcml2YXRlOgogICAgIHZvaWQgcmVzb2x2ZVJvcGVJbnRlcm5hbDE2KFVDaGFyKikgY29uc3Q7
CiAgICAgdm9pZCByZXNvbHZlUm9wZUludGVybmFsMTZOb1N1YnN0cmluZyhVQ2hhciopIGNvbnN0
OwogICAgIHZvaWQgY2xlYXJGaWJlcnMoKSBjb25zdDsKLSAgICBTdHJpbmdWaWV3IHZpZXcoRXhl
Y1N0YXRlKikgY29uc3Q7CisgICAgU3RyaW5nVmlldyB1bnNhZmVWaWV3KEV4ZWNTdGF0ZSYpIGNv
bnN0OwogICAgIFN0cmluZ1ZpZXdXaXRoVW5kZXJseWluZ1N0cmluZyB2aWV3V2l0aFVuZGVybHlp
bmdTdHJpbmcoRXhlY1N0YXRlJikgY29uc3Q7CiAKICAgICBXcml0ZUJhcnJpZXJCYXNlPEpTU3Ry
aW5nPiYgZmliZXIodW5zaWduZWQgaSkgY29uc3QKQEAgLTQzNSwxNCArNDQ0LDI1IEBAIHByaXZh
dGU6CiAgICAgfSB1W3NfbWF4SW50ZXJuYWxSb3BlTGVuZ3RoXTsKIH07CiAKK2NsYXNzIEpTU3Ry
aW5nOjpTYWZlVmlldyB7CitwdWJsaWM6CisgICAgU2FmZVZpZXcoKTsKKyAgICBleHBsaWNpdCBT
YWZlVmlldyhFeGVjU3RhdGUmLCBjb25zdCBKU1N0cmluZyYpOworICAgIG9wZXJhdG9yIFN0cmlu
Z1ZpZXcoKSBjb25zdDsKKyAgICBTdHJpbmdWaWV3IGdldCgpIGNvbnN0OworCitwcml2YXRlOgor
ICAgIEV4ZWNTdGF0ZSogbV9zdGF0ZSB7IG51bGxwdHIgfTsKKyAgICBjb25zdCBKU1N0cmluZyog
dm9sYXRpbGUgbV9zdHJpbmcgeyBudWxscHRyIH07Cit9OworCitKU19FWFBPUlRfUFJJVkFURSBK
U1N0cmluZyoganNTdHJpbmdXaXRoQ2FjaGVTbG93Q2FzZShWTSYsIFN0cmluZ0ltcGwmKTsKIAog
aW5saW5lIGNvbnN0IFN0cmluZ0ltcGwqIEpTU3RyaW5nOjp0cnlHZXRWYWx1ZUltcGwoKSBjb25z
dAogewogICAgIHJldHVybiBtX3ZhbHVlLmltcGwoKTsKIH0KIAotSlNTdHJpbmcqIGFzU3RyaW5n
KEpTVmFsdWUpOwotCiBpbmxpbmUgSlNTdHJpbmcqIGFzU3RyaW5nKEpTVmFsdWUgdmFsdWUpCiB7
CiAgICAgQVNTRVJUKHZhbHVlLmFzQ2VsbCgpLT5pc1N0cmluZygpKTsKQEAgLTUxMSw3ICs1MzEs
NyBAQCBpbmxpbmUgY29uc3QgU3RyaW5nJiBKU1N0cmluZzo6dHJ5R2V0VmFsdWUoKSBjb25zdAog
aW5saW5lIEpTU3RyaW5nKiBKU1N0cmluZzo6Z2V0SW5kZXgoRXhlY1N0YXRlKiBleGVjLCB1bnNp
Z25lZCBpKQogewogICAgIEFTU0VSVChjYW5HZXRJbmRleChpKSk7Ci0gICAgcmV0dXJuIGpzU2lu
Z2xlQ2hhcmFjdGVyU3RyaW5nKGV4ZWMsIHZpZXcoZXhlYylbaV0pOworICAgIHJldHVybiBqc1Np
bmdsZUNoYXJhY3RlclN0cmluZyhleGVjLCB1bnNhZmVWaWV3KCpleGVjKVtpXSk7CiB9CiAKIGlu
bGluZSBKU1N0cmluZyoganNTdHJpbmcoVk0qIHZtLCBjb25zdCBTdHJpbmcmIHMpCkBAIC01OTcs
OCArNjE3LDYgQEAgaW5saW5lIEpTU3RyaW5nKiBqc05vbnRyaXZpYWxTdHJpbmcoRXhlY1N0YXRl
KiBleGVjLCBjb25zdCBTdHJpbmcmIHMpIHsgcmV0dXJuIGoKIGlubGluZSBKU1N0cmluZyoganNO
b250cml2aWFsU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYywgU3RyaW5nJiYgcykgeyByZXR1cm4ganNO
b250cml2aWFsU3RyaW5nKCZleGVjLT52bSgpLCBXVEY6Om1vdmUocykpOyB9CiBpbmxpbmUgSlNT
dHJpbmcqIGpzT3duZWRTdHJpbmcoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBTdHJpbmcmIHMpIHsg
cmV0dXJuIGpzT3duZWRTdHJpbmcoJmV4ZWMtPnZtKCksIHMpOyB9CiAKLUpTX0VYUE9SVF9QUklW
QVRFIEpTU3RyaW5nKiBqc1N0cmluZ1dpdGhDYWNoZVNsb3dDYXNlKFZNJiwgU3RyaW5nSW1wbCYp
OwotCiBBTFdBWVNfSU5MSU5FIEpTU3RyaW5nKiBqc1N0cmluZ1dpdGhDYWNoZShFeGVjU3RhdGUq
IGV4ZWMsIGNvbnN0IFN0cmluZyYgcykKIHsKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwpAQCAt
NjUxLDQ0ICs2NjksMjAgQEAgQUxXQVlTX0lOTElORSBib29sIEpTU3RyaW5nOjpnZXRTdHJpbmdQ
cm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBwcm8KICAgICByZXR1cm4gZmFs
c2U7CiB9CiAKLWlubGluZSBib29sIGlzSlNTdHJpbmcoSlNWYWx1ZSB2KSB7IHJldHVybiB2Lmlz
Q2VsbCgpICYmIHYuYXNDZWxsKCktPnR5cGUoKSA9PSBTdHJpbmdUeXBlOyB9Ci0KLS8vIC0tLSBK
U1ZhbHVlIGlubGluZXMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi1pbmxpbmUgYm9v
bCBKU1ZhbHVlOjp0b0Jvb2xlYW4oRXhlY1N0YXRlKiBleGVjKSBjb25zdAotewotICAgIGlmIChp
c0ludDMyKCkpCi0gICAgICAgIHJldHVybiBhc0ludDMyKCk7Ci0gICAgaWYgKGlzRG91YmxlKCkp
Ci0gICAgICAgIHJldHVybiBhc0RvdWJsZSgpID4gMC4wIHx8IGFzRG91YmxlKCkgPCAwLjA7IC8v
IGZhbHNlIGZvciBOYU4KLSAgICBpZiAoaXNDZWxsKCkpCi0gICAgICAgIHJldHVybiBhc0NlbGwo
KS0+dG9Cb29sZWFuKGV4ZWMpOwotICAgIHJldHVybiBpc1RydWUoKTsgLy8gZmFsc2UsIG51bGws
IGFuZCB1bmRlZmluZWQgYWxsIGNvbnZlcnQgdG8gZmFsc2UuCi19Ci0KLWlubGluZSBKU1N0cmlu
ZyogSlNWYWx1ZTo6dG9TdHJpbmcoRXhlY1N0YXRlKiBleGVjKSBjb25zdAoraW5saW5lIGJvb2wg
aXNKU1N0cmluZyhKU1ZhbHVlIHYpCiB7Ci0gICAgaWYgKGlzU3RyaW5nKCkpCi0gICAgICAgIHJl
dHVybiBqc0Nhc3Q8SlNTdHJpbmcqPihhc0NlbGwoKSk7Ci0gICAgcmV0dXJuIHRvU3RyaW5nU2xv
d0Nhc2UoZXhlYyk7CisgICAgcmV0dXJuIHYuaXNDZWxsKCkgJiYgdi5hc0NlbGwoKS0+dHlwZSgp
ID09IFN0cmluZ1R5cGU7CiB9CiAKLWlubGluZSBTdHJpbmcgSlNWYWx1ZTo6dG9XVEZTdHJpbmco
RXhlY1N0YXRlKiBleGVjKSBjb25zdAotewotICAgIGlmIChpc1N0cmluZygpKQotICAgICAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8SlNTdHJpbmcqPihhc0NlbGwoKSktPnZhbHVlKGV4ZWMpOwotICAg
IHJldHVybiB0b1dURlN0cmluZ1Nsb3dDYXNlKGV4ZWMpOwotfQotCi1BTFdBWVNfSU5MSU5FIFN0
cmluZ1ZpZXcgSlNSb3BlU3RyaW5nOjp2aWV3KEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKK0FMV0FZ
U19JTkxJTkUgU3RyaW5nVmlldyBKU1JvcGVTdHJpbmc6OnVuc2FmZVZpZXcoRXhlY1N0YXRlJiBz
dGF0ZSkgY29uc3QKIHsKICAgICBpZiAoaXNTdWJzdHJpbmcoKSkgewogICAgICAgICBpZiAoaXM4
Qml0KCkpCiAgICAgICAgICAgICByZXR1cm4gU3RyaW5nVmlldyhzdWJzdHJpbmdCYXNlKCktPm1f
dmFsdWUuY2hhcmFjdGVyczgoKSArIHN1YnN0cmluZ09mZnNldCgpLCBtX2xlbmd0aCk7CiAgICAg
ICAgIHJldHVybiBTdHJpbmdWaWV3KHN1YnN0cmluZ0Jhc2UoKS0+bV92YWx1ZS5jaGFyYWN0ZXJz
MTYoKSArIHN1YnN0cmluZ09mZnNldCgpLCBtX2xlbmd0aCk7CiAgICAgfQotICAgIHJlc29sdmVS
b3BlKGV4ZWMpOwotICAgIHJldHVybiBTdHJpbmdWaWV3KG1fdmFsdWUpOworICAgIHJlc29sdmVS
b3BlKCZzdGF0ZSk7CisgICAgcmV0dXJuIG1fdmFsdWU7CiB9CiAKIEFMV0FZU19JTkxJTkUgU3Ry
aW5nVmlld1dpdGhVbmRlcmx5aW5nU3RyaW5nIEpTUm9wZVN0cmluZzo6dmlld1dpdGhVbmRlcmx5
aW5nU3RyaW5nKEV4ZWNTdGF0ZSYgc3RhdGUpIGNvbnN0CkBAIC03MDMsMTEgKzY5NywxMSBAQCBB
TFdBWVNfSU5MSU5FIFN0cmluZ1ZpZXdXaXRoVW5kZXJseWluZ1N0cmluZyBKU1JvcGVTdHJpbmc6
OnZpZXdXaXRoVW5kZXJseWluZ1N0cgogICAgIHJldHVybiB7IG1fdmFsdWUsIG1fdmFsdWUgfTsK
IH0KIAotQUxXQVlTX0lOTElORSBTdHJpbmdWaWV3IEpTU3RyaW5nOjp2aWV3KEV4ZWNTdGF0ZSog
ZXhlYykgY29uc3QKK0FMV0FZU19JTkxJTkUgU3RyaW5nVmlldyBKU1N0cmluZzo6dW5zYWZlVmll
dyhFeGVjU3RhdGUmIHN0YXRlKSBjb25zdAogewogICAgIGlmIChpc1JvcGUoKSkKLSAgICAgICAg
cmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IEpTUm9wZVN0cmluZyo+KHRoaXMpLT52aWV3KGV4ZWMp
OwotICAgIHJldHVybiBTdHJpbmdWaWV3KG1fdmFsdWUpOworICAgICAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8Y29uc3QgSlNSb3BlU3RyaW5nKj4odGhpcyktPnVuc2FmZVZpZXcoc3RhdGUpOworICAg
IHJldHVybiBtX3ZhbHVlOwogfQogCiBBTFdBWVNfSU5MSU5FIFN0cmluZ1ZpZXdXaXRoVW5kZXJs
eWluZ1N0cmluZyBKU1N0cmluZzo6dmlld1dpdGhVbmRlcmx5aW5nU3RyaW5nKEV4ZWNTdGF0ZSYg
c3RhdGUpIGNvbnN0CkBAIC03MjIsNiArNzE2LDU4IEBAIGlubGluZSBib29sIEpTU3RyaW5nOjpp
c1N1YnN0cmluZygpIGNvbnN0CiAgICAgcmV0dXJuIGlzUm9wZSgpICYmIHN0YXRpY19jYXN0PGNv
bnN0IEpTUm9wZVN0cmluZyo+KHRoaXMpLT5pc1N1YnN0cmluZygpOwogfQogCitpbmxpbmUgSlNT
dHJpbmc6OlNhZmVWaWV3OjpTYWZlVmlldygpCit7Cit9CisKK2lubGluZSBKU1N0cmluZzo6U2Fm
ZVZpZXc6OlNhZmVWaWV3KEV4ZWNTdGF0ZSYgc3RhdGUsIGNvbnN0IEpTU3RyaW5nJiBzdHJpbmcp
CisgICAgOiBtX3N0YXRlKCZzdGF0ZSkKKyAgICAsIG1fc3RyaW5nKCZzdHJpbmcpCit7Cit9CisK
K2lubGluZSBKU1N0cmluZzo6U2FmZVZpZXc6Om9wZXJhdG9yIFN0cmluZ1ZpZXcoKSBjb25zdAor
eworICAgIHJldHVybiBtX3N0cmluZy0+dW5zYWZlVmlldygqbV9zdGF0ZSk7Cit9CisKK2lubGlu
ZSBTdHJpbmdWaWV3IEpTU3RyaW5nOjpTYWZlVmlldzo6Z2V0KCkgY29uc3QKK3sKKyAgICByZXR1
cm4gKnRoaXM7Cit9CisKK0FMV0FZU19JTkxJTkUgSlNTdHJpbmc6OlNhZmVWaWV3IEpTU3RyaW5n
Ojp2aWV3KEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKK3sKKyAgICByZXR1cm4gU2FmZVZpZXcoKmV4
ZWMsICp0aGlzKTsKK30KKworLy8gLS0tIEpTVmFsdWUgaW5saW5lcyAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCisKK2lubGluZSBib29sIEpTVmFsdWU6OnRvQm9vbGVhbihFeGVjU3RhdGUq
IGV4ZWMpIGNvbnN0Cit7CisgICAgaWYgKGlzSW50MzIoKSkKKyAgICAgICAgcmV0dXJuIGFzSW50
MzIoKTsKKyAgICBpZiAoaXNEb3VibGUoKSkKKyAgICAgICAgcmV0dXJuIGFzRG91YmxlKCkgPiAw
LjAgfHwgYXNEb3VibGUoKSA8IDAuMDsgLy8gZmFsc2UgZm9yIE5hTgorICAgIGlmIChpc0NlbGwo
KSkKKyAgICAgICAgcmV0dXJuIGFzQ2VsbCgpLT50b0Jvb2xlYW4oZXhlYyk7CisgICAgcmV0dXJu
IGlzVHJ1ZSgpOyAvLyBmYWxzZSwgbnVsbCwgYW5kIHVuZGVmaW5lZCBhbGwgY29udmVydCB0byBm
YWxzZS4KK30KKworaW5saW5lIEpTU3RyaW5nKiBKU1ZhbHVlOjp0b1N0cmluZyhFeGVjU3RhdGUq
IGV4ZWMpIGNvbnN0Cit7CisgICAgaWYgKGlzU3RyaW5nKCkpCisgICAgICAgIHJldHVybiBqc0Nh
c3Q8SlNTdHJpbmcqPihhc0NlbGwoKSk7CisgICAgcmV0dXJuIHRvU3RyaW5nU2xvd0Nhc2UoZXhl
Yyk7Cit9CisKK2lubGluZSBTdHJpbmcgSlNWYWx1ZTo6dG9XVEZTdHJpbmcoRXhlY1N0YXRlKiBl
eGVjKSBjb25zdAoreworICAgIGlmIChpc1N0cmluZygpKQorICAgICAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8SlNTdHJpbmcqPihhc0NlbGwoKSktPnZhbHVlKGV4ZWMpOworICAgIHJldHVybiB0b1dU
RlN0cmluZ1Nsb3dDYXNlKGV4ZWMpOworfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogI2VuZGlm
IC8vIEpTU3RyaW5nX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N0cmluZ1Byb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJp
bmdQcm90b3R5cGUuY3BwCmluZGV4IDllMmZhYTJjYzRkYWI0YjE0YzRkODYxNTc0M2YwMDdiMGJk
ZWFjZjEuLjJlZGJmNDJjNzQ2ZTkzMzVjN2ZhMjE2Mzc1ZWFmZjk3MDNmY2FjNTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcApAQCAt
ODk2LDcgKzg5Niw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9G
dW5jSW5kZXhPZihFeGVjU3RhdGUqIGV4ZWMpCiAgICAgaWYgKHRoaXNKU1N0cmluZy0+bGVuZ3Ro
KCkgPCBvdGhlckpTU3RyaW5nLT5sZW5ndGgoKSArIHBvcykKICAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc051bWJlcigtMSkpOwogCi0gICAgc2l6ZV90IHJlc3VsdCA9IHRoaXNKU1N0
cmluZy0+dmlldyhleGVjKS5maW5kKG90aGVySlNTdHJpbmctPnZpZXcoZXhlYyksIHBvcyk7Cisg
ICAgc2l6ZV90IHJlc3VsdCA9IHRoaXNKU1N0cmluZy0+dmlldyhleGVjKS5nZXQoKS5maW5kKG90
aGVySlNTdHJpbmctPnZpZXcoZXhlYyksIHBvcyk7CiAgICAgaWYgKHJlc3VsdCA9PSBub3RGb3Vu
ZCkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcigtMSkpOwogICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIocmVzdWx0KSk7Cg==
</data>
<flag name="review"
          id="280781"
          type_id="1"
          status="+"
          setter="andersca"
    />
          </attachment>
      

    </bug>

</bugzilla>