<?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>115393</bug_id>
          
          <creation_ts>2013-04-29 18:39:50 -0700</creation_ts>
          <short_desc>fourthTier: String::utf8() should also be available as StringImpl::utf8() so that you don&apos;t have to ref() a StringImpl just to get its utf8()</short_desc>
          <delta_ts>2013-04-29 21:49:58 -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>JavaScriptCore</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>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>115300</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>barraclough</cc>
    
    <cc>ggaren</cc>
    
    <cc>kling</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mhahnenberg</cc>
    
    <cc>msaboff</cc>
    
    <cc>oliver</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>882889</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-04-29 18:39:50 -0700</bug_when>
    <thetext>Patch forthcoming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>882890</commentid>
    <comment_count>1</comment_count>
      <attachid>200070</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-04-29 18:41:53 -0700</bug_when>
    <thetext>Created attachment 200070
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>882900</commentid>
    <comment_count>2</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2013-04-29 19:04:34 -0700</bug_when>
    <thetext>Why not do this on trunk?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>882904</commentid>
    <comment_count>3</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-04-29 19:56:05 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; Why not do this on trunk?

I would be happy to merge this to trunk if that&apos;s what you mean.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>882913</commentid>
    <comment_count>4</comment_count>
      <attachid>200070</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2013-04-29 20:22:30 -0700</bug_when>
    <thetext>Comment on attachment 200070
the patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>882924</commentid>
    <comment_count>5</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-04-29 21:49:58 -0700</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/149351</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>200070</attachid>
            <date>2013-04-29 18:41:53 -0700</date>
            <delta_ts>2013-04-29 20:22:30 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>22241</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTQ5MzQ0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBA
CisyMDEzLTA0LTI5ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
Zm91cnRoVGllcjogU3RyaW5nOjp1dGY4KCkgc2hvdWxkIGFsc28gYmUgYXZhaWxhYmxlIGFzIFN0
cmluZ0ltcGw6OnV0ZjgoKSBzbyB0aGF0IHlvdSBkb24ndCBoYXZlIHRvIHJlZigpIGEgU3RyaW5n
SW1wbCBqdXN0IHRvIGdldCBpdHMgdXRmOCgpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMTUzOTMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuY3Bw
OgorICAgICAgICAoSlNDOjplbmNvZGUpOgorCiAyMDEzLTA0LTI4ICBGaWxpcCBQaXpsbyAgPGZw
aXpsb0BhcHBsZS5jb20+CiAKICAgICAgICAgZm91cnRoVGllcjogQVNTRVJUIHRoYXQgY29tbW9u
bHkgdXNlZCBub3QtdGhyZWFkLXNhZmUgbWV0aG9kcyBpbiB0aGUgcnVudGltZSBhcmUgbm90IGJl
aW5nIGNhbGxlZCBkdXJpbmcgY29tcGlsYXRpb24KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5jcHAJKHJl
dmlzaW9uIDE0OTI2MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFs
T2JqZWN0RnVuY3Rpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTMsNyArNTMsNyBAQCBuYW1l
c3BhY2UgSlNDIHsKIAogc3RhdGljIEpTVmFsdWUgZW5jb2RlKEV4ZWNTdGF0ZSogZXhlYywgY29u
c3QgY2hhciogZG9Ob3RFc2NhcGUpCiB7Ci0gICAgQ1N0cmluZyBjc3RyID0gZXhlYy0+YXJndW1l
bnQoMCkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpLnV0ZjgoU3RyaW5nOjpTdHJpY3RDb252
ZXJzaW9uKTsKKyAgICBDU3RyaW5nIGNzdHIgPSBleGVjLT5hcmd1bWVudCgwKS50b1N0cmluZyhl
eGVjKS0+dmFsdWUoZXhlYykudXRmOChTdHJpY3RDb252ZXJzaW9uKTsKICAgICBpZiAoIWNzdHIu
ZGF0YSgpKQogICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihleGVjLCBjcmVhdGVVUklFcnJvcihl
eGVjLCBBU0NJSUxpdGVyYWwoIlN0cmluZyBjb250YWluZWQgYW4gaWxsZWdhbCBVVEYtMTYgc2Vx
dWVuY2UuIikpKTsKIApJbmRleDogU291cmNlL1dURi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dURi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0OTM0NCkKKysrIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjUgQEAKKzIwMTMtMDQtMjkgIEZpbGlw
IFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KKworICAgICAgICBmb3VydGhUaWVyOiBTdHJpbmc6
OnV0ZjgoKSBzaG91bGQgYWxzbyBiZSBhdmFpbGFibGUgYXMgU3RyaW5nSW1wbDo6dXRmOCgpIHNv
IHRoYXQgeW91IGRvbid0IGhhdmUgdG8gcmVmKCkgYSBTdHJpbmdJbXBsIGp1c3QgdG8gZ2V0IGl0
cyB1dGY4KCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTExNTM5MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogd3RmL3RleHQvQ29u
dmVyc2lvbk1vZGUuaDogQWRkZWQuCisgICAgICAgIChXVEYpOgorICAgICAgICAqIHd0Zi90ZXh0
L1N0cmluZ0ltcGwuY3BwOgorICAgICAgICAoV1RGKToKKyAgICAgICAgKFdURjo6cHV0VVRGOFRy
aXBsZSk6CisgICAgICAgIChXVEY6OlN0cmluZ0ltcGw6OnV0ZjgpOgorICAgICAgICAqIHd0Zi90
ZXh0L1N0cmluZ0ltcGwuaDoKKyAgICAgICAgKFN0cmluZ0ltcGwpOgorICAgICAgICAqIHd0Zi90
ZXh0L1dURlN0cmluZy5jcHA6CisgICAgICAgIChXVEYpOgorICAgICAgICAoV1RGOjpTdHJpbmc6
OnV0ZjgpOgorICAgICAgICAqIHd0Zi90ZXh0L1dURlN0cmluZy5oOgorICAgICAgICAoU3RyaW5n
KToKKwogMjAxMy0wNC0yOCAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgogCiAgICAg
ICAgIGZvdXJ0aFRpZXI6IEFTU0VSVCB0aGF0IGNvbW1vbmx5IHVzZWQgbm90LXRocmVhZC1zYWZl
IG1ldGhvZHMgaW4gdGhlIHJ1bnRpbWUgYXJlIG5vdCBiZWluZyBjYWxsZWQgZHVyaW5nIGNvbXBp
bGF0aW9uCkluZGV4OiBTb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJl
dmlzaW9uIDE0OTI2MykKKysrIFNvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oJKHdvcmtpbmcgY29weSkKQEAgLTIzLDYgKzIzLDcgQEAKIC8qIEJlZ2luIFBCWEJ1aWxkRmls
ZSBzZWN0aW9uICovCiAJCTBGMEQ4NUI0MTcyMzRDQzEwMDMzODIxMCAvKiBOb0xvY2suaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMEQ4NUIzMTcyMzRD
QjEwMDMzODIxMCAvKiBOb0xvY2suaCAqLzsgfTsKIAkJMEY4NzEwNUExNjY0M0YxOTAwOTBCMEFE
IC8qIFJhd1BvaW50ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDBGODcxMDU5MTY2NDNGMTkwMDkwQjBBRCAvKiBSYXdQb2ludGVyLmggKi87IH07CisJ
CTBGOEYyQjlDMTcyRjI1OTYwMDdEQkRBNSAvKiBDb252ZXJzaW9uTW9kZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY4RjJCOUIxNzJGMjU5NDAwN0RC
REE1IC8qIENvbnZlcnNpb25Nb2RlLmggKi87IH07CiAJCTBGOUQzMzYwMTY1REJBNzMwMDVBRDM4
NyAvKiBGaWxlUHJpbnRTdHJlYW0uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMEY5RDMzNUIxNjVEQkE3MzAwNUFEMzg3IC8qIEZpbGVQcmludFN0cmVh
bS5jcHAgKi87IH07CiAJCTBGOUQzMzYxMTY1REJBNzMwMDVBRDM4NyAvKiBGaWxlUHJpbnRTdHJl
YW0uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGOUQz
MzVDMTY1REJBNzMwMDVBRDM4NyAvKiBGaWxlUHJpbnRTdHJlYW0uaCAqLzsgfTsKIAkJMEY5RDMz
NjIxNjVEQkE3MzAwNUFEMzg3IC8qIFByaW50U3RyZWFtLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGOUQzMzVEMTY1REJBNzMwMDVBRDM4NyAvKiBQ
cmludFN0cmVhbS5jcHAgKi87IH07CkBAIC0zMzQsNiArMzM1LDcgQEAKIC8qIEJlZ2luIFBCWEZp
bGVSZWZlcmVuY2Ugc2VjdGlvbiAqLwogCQkwRjBEODVCMzE3MjM0Q0IxMDAzMzgyMTAgLyogTm9M
b2NrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5vTG9jay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkwRjg3MTA1OTE2NjQzRjE5MDA5MEIwQUQgLyogUmF3UG9pbnRlci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBSYXdQb2ludGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTBGOEYyQjlCMTcyRjI1OTQwMDdEQkRBNSAvKiBDb252ZXJzaW9uTW9kZS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBDb252ZXJzaW9uTW9kZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkwRjlEMzM1QjE2NURCQTczMDA1QUQzODcgLyogRmlsZVByaW50U3RyZWFtLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZpbGVQcmludFN0cmVhbS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGOUQzMzVDMTY1REJBNzMwMDVBRDM4NyAvKiBG
aWxlUHJpbnRTdHJlYW0uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRmlsZVBy
aW50U3RyZWFtLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGOUQzMzVEMTY1REJB
NzMwMDVBRDM4NyAvKiBQcmludFN0cmVhbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBQcmludFN0cmVhbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC05NTMsNiArOTU1LDcgQEAKIAkJQThBNDczMUIxNTFBODI1QjAwNDEyM0ZGIC8qIHRleHQgKi8g
PSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTBGOEYyQjlCMTcy
RjI1OTQwMDdEQkRBNSAvKiBDb252ZXJzaW9uTW9kZS5oICovLAogCQkJCUE4QTQ3MzFDMTUxQTgy
NUIwMDQxMjNGRiAvKiBBU0NJSUZhc3RQYXRoLmggKi8sCiAJCQkJQThBNDczMUQxNTFBODI1QjAw
NDEyM0ZGIC8qIEF0b21pY1N0cmluZy5jcHAgKi8sCiAJCQkJQThBNDczMUUxNTFBODI1QjAwNDEy
M0ZGIC8qIEF0b21pY1N0cmluZy5oICovLApAQCAtMTIzMyw2ICsxMjM2LDcgQEAKIAkJCQlBOEE0
NzQyOTE1MUE4MjVCMDA0MTIzRkYgLyogU3RhdGljQ29uc3RydWN0b3JzLmggaW4gSGVhZGVycyAq
LywKIAkJCQlBOEE0NzQyQTE1MUE4MjVCMDA0MTIzRkYgLyogU3RkTGliRXh0cmFzLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkxQTZCQjc2OTE2MkYzMDA1MDBERDE2REIgLyogU3RyZWFtQnVmZmVyLmgg
aW4gSGVhZGVycyAqLywKKwkJCQkwRjhGMkI5QzE3MkYyNTk2MDA3REJEQTUgLyogQ29udmVyc2lv
bk1vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4QTQ3NDNCMTUxQTgyNUIwMDQxMjNGRiAvKiBT
dHJpbmdCdWZmZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4QTQ3NDNEMTUxQTgyNUIwMDQxMjNG
RiAvKiBTdHJpbmdCdWlsZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEE0NzQzRTE1MUE4MjVC
MDA0MTIzRkYgLyogU3RyaW5nQ29uY2F0ZW5hdGUuaCBpbiBIZWFkZXJzICovLApJbmRleDogU291
cmNlL1dURi93dGYvdGV4dC9Db252ZXJzaW9uTW9kZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
VEYvd3RmL3RleHQvQ29udmVyc2lvbk1vZGUuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XVEYv
d3RmL3RleHQvQ29udmVyc2lvbk1vZGUuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ1IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYg
Q29udmVyc2lvbk1vZGVfaAorI2RlZmluZSBDb252ZXJzaW9uTW9kZV9oCisKK25hbWVzcGFjZSBX
VEYgeworCit0eXBlZGVmIGVudW0geworICAgIExlbmllbnRDb252ZXJzaW9uLAorICAgIFN0cmlj
dENvbnZlcnNpb24sCisgICAgU3RyaWN0Q29udmVyc2lvblJlcGxhY2luZ1VucGFpcmVkU3Vycm9n
YXRlc1dpdGhGRkZELAorfSBDb252ZXJzaW9uTW9kZTsKKworfSAvLyBuYW1lc3BhY2UgV1RGCisK
K3VzaW5nIFdURjo6Q29udmVyc2lvbk1vZGU7Cit1c2luZyBXVEY6OkxlbmllbnRDb252ZXJzaW9u
OwordXNpbmcgV1RGOjpTdHJpY3RDb252ZXJzaW9uOwordXNpbmcgV1RGOjpTdHJpY3RDb252ZXJz
aW9uUmVwbGFjaW5nVW5wYWlyZWRTdXJyb2dhdGVzV2l0aEZGRkQ7CisKKyNlbmRpZiAvLyBDb252
ZXJzaW9uTW9kZV9oCisKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmNwcAkocmV2aXNp
b24gMTQ5MjYzKQorKysgU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzAsNyArMzAsOSBAQAogI2luY2x1ZGUgIlN0cmluZ0hhc2guaCIKICNpbmNs
dWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL1dURlRocmVhZERhdGEuaD4K
KyNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3VuaWNvZGUvQ2hh
cmFjdGVyTmFtZXMuaD4KKyNpbmNsdWRlIDx3dGYvdW5pY29kZS9VVEY4Lmg+CiAKICNpZmRlZiBT
VFJJTkdfU1RBVFMKICNpbmNsdWRlIDx1bmlzdGQuaD4KQEAgLTE4OTQsNCArMTg5Niw5MiBAQCBz
aXplX3QgU3RyaW5nSW1wbDo6c2l6ZUluQnl0ZXMoKSBjb25zdAogICAgIHJldHVybiBzaXplICsg
c2l6ZW9mKCp0aGlzKTsKIH0KIAorLy8gSGVscGVyIHRvIHdyaXRlIGEgdGhyZWUtYnl0ZSBVVEYt
OCBjb2RlIHBvaW50IHRvIHRoZSBidWZmZXIsIGNhbGxlciBtdXN0IGNoZWNrIHJvb20gaXMgYXZh
aWxhYmxlLgorc3RhdGljIGlubGluZSB2b2lkIHB1dFVURjhUcmlwbGUoY2hhciomIGJ1ZmZlciwg
VUNoYXIgY2gpCit7CisgICAgQVNTRVJUKGNoID49IDB4MDgwMCk7CisgICAgKmJ1ZmZlcisrID0g
c3RhdGljX2Nhc3Q8Y2hhcj4oKChjaCA+PiAxMikgJiAweDBGKSB8IDB4RTApOworICAgICpidWZm
ZXIrKyA9IHN0YXRpY19jYXN0PGNoYXI+KCgoY2ggPj4gNikgJiAweDNGKSB8IDB4ODApOworICAg
ICpidWZmZXIrKyA9IHN0YXRpY19jYXN0PGNoYXI+KChjaCAmIDB4M0YpIHwgMHg4MCk7Cit9CisK
K0NTdHJpbmcgU3RyaW5nSW1wbDo6dXRmOChDb252ZXJzaW9uTW9kZSBtb2RlKSBjb25zdAorewor
ICAgIHVuc2lnbmVkIGxlbmd0aCA9IHRoaXMtPmxlbmd0aCgpOworCisgICAgaWYgKCFsZW5ndGgp
CisgICAgICAgIHJldHVybiBDU3RyaW5nKCIiLCAwKTsKKworICAgIC8vIEFsbG9jYXRlIGEgYnVm
ZmVyIGJpZyBlbm91Z2ggdG8gaG9sZCBhbGwgdGhlIGNoYXJhY3RlcnMKKyAgICAvLyAoYW4gaW5k
aXZpZHVhbCBVVEYtMTYgVUNoYXIgY2FuIG9ubHkgZXhwYW5kIHRvIDMgVVRGLTggYnl0ZXMpLgor
ICAgIC8vIE9wdGltaXphdGlvbiBpZGVhcywgaWYgd2UgZmluZCB0aGlzIGZ1bmN0aW9uIGlzIGhv
dDoKKyAgICAvLyAgKiBXZSBjb3VsZCBzcGVjdWxhdGl2ZWx5IGNyZWF0ZSBhIENTdHJpbmdCdWZm
ZXIgdG8gY29udGFpbiAnbGVuZ3RoJyAKKyAgICAvLyAgICBjaGFyYWN0ZXJzLCBhbmQgcmVzaXpl
IGlmIG5lY2Vzc2FyeSAoaS5lLiBpZiB0aGUgYnVmZmVyIGNvbnRhaW5zCisgICAgLy8gICAgbm9u
LWFzY2lpIGNoYXJhY3RlcnMpLiAoQWx0ZXJuYXRpdmVseSwgc2NhbiB0aGUgYnVmZmVyIGZpcnN0
IGZvcgorICAgIC8vICAgIGFzY2lpIGNoYXJhY3RlcnMsIHNvIHdlIGtub3cgdGhpcyB3aWxsIGJl
IHN1ZmZpY2llbnQpLgorICAgIC8vICAqIFdlIGNvdWxkIGFsbG9jYXRlIGEgQ1N0cmluZ0J1ZmZl
ciB3aXRoIGFuIGFwcHJvcHJpYXRlIHNpemUgdG8KKyAgICAvLyAgICBoYXZlIGEgZ29vZCBjaGFu
Y2Ugb2YgYmVpbmcgYWJsZSB0byB3cml0ZSB0aGUgc3RyaW5nIGludG8gdGhlCisgICAgLy8gICAg
YnVmZmVyIHdpdGhvdXQgcmVhbGxvY2luZyAoc2F5LCAxLjUgeCBsZW5ndGgpLgorICAgIGlmIChs
ZW5ndGggPiBudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpIC8gMykKKyAgICAgICAgcmV0
dXJuIENTdHJpbmcoKTsKKyAgICBWZWN0b3I8Y2hhciwgMTAyND4gYnVmZmVyVmVjdG9yKGxlbmd0
aCAqIDMpOworCisgICAgY2hhciogYnVmZmVyID0gYnVmZmVyVmVjdG9yLmRhdGEoKTsKKworICAg
IGlmIChpczhCaXQoKSkgeworICAgICAgICBjb25zdCBMQ2hhciogY2hhcmFjdGVycyA9IHRoaXMt
PmNoYXJhY3RlcnM4KCk7CisKKyAgICAgICAgQ29udmVyc2lvblJlc3VsdCByZXN1bHQgPSBjb252
ZXJ0TGF0aW4xVG9VVEY4KCZjaGFyYWN0ZXJzLCBjaGFyYWN0ZXJzICsgbGVuZ3RoLCAmYnVmZmVy
LCBidWZmZXIgKyBidWZmZXJWZWN0b3Iuc2l6ZSgpKTsKKyAgICAgICAgQVNTRVJUX1VOVVNFRChy
ZXN1bHQsIHJlc3VsdCAhPSB0YXJnZXRFeGhhdXN0ZWQpOyAvLyAobGVuZ3RoICogMykgc2hvdWxk
IGJlIHN1ZmZpY2llbnQgZm9yIGFueSBjb252ZXJzaW9uCisgICAgfSBlbHNlIHsKKyAgICAgICAg
Y29uc3QgVUNoYXIqIGNoYXJhY3RlcnMgPSB0aGlzLT5jaGFyYWN0ZXJzMTYoKTsKKworICAgICAg
ICBpZiAobW9kZSA9PSBTdHJpY3RDb252ZXJzaW9uUmVwbGFjaW5nVW5wYWlyZWRTdXJyb2dhdGVz
V2l0aEZGRkQpIHsKKyAgICAgICAgICAgIGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzRW5kID0gY2hh
cmFjdGVycyArIGxlbmd0aDsKKyAgICAgICAgICAgIGNoYXIqIGJ1ZmZlckVuZCA9IGJ1ZmZlciAr
IGJ1ZmZlclZlY3Rvci5zaXplKCk7CisgICAgICAgICAgICB3aGlsZSAoY2hhcmFjdGVycyA8IGNo
YXJhY3RlcnNFbmQpIHsKKyAgICAgICAgICAgICAgICAvLyBVc2Ugc3RyaWN0IGNvbnZlcnNpb24g
dG8gZGV0ZWN0IHVucGFpcmVkIHN1cnJvZ2F0ZXMuCisgICAgICAgICAgICAgICAgQ29udmVyc2lv
blJlc3VsdCByZXN1bHQgPSBjb252ZXJ0VVRGMTZUb1VURjgoJmNoYXJhY3RlcnMsIGNoYXJhY3Rl
cnNFbmQsICZidWZmZXIsIGJ1ZmZlckVuZCwgdHJ1ZSk7CisgICAgICAgICAgICAgICAgQVNTRVJU
KHJlc3VsdCAhPSB0YXJnZXRFeGhhdXN0ZWQpOworICAgICAgICAgICAgICAgIC8vIENvbnZlcnNp
b24gZmFpbHMgd2hlbiB0aGVyZSBpcyBhbiB1bnBhaXJlZCBzdXJyb2dhdGUuCisgICAgICAgICAg
ICAgICAgLy8gUHV0IHJlcGxhY2VtZW50IGNoYXJhY3RlciAoVStGRkZEKSBpbnN0ZWFkIG9mIHRo
ZSB1bnBhaXJlZCBzdXJyb2dhdGUuCisgICAgICAgICAgICAgICAgaWYgKHJlc3VsdCAhPSBjb252
ZXJzaW9uT0spIHsKKyAgICAgICAgICAgICAgICAgICAgQVNTRVJUKCgweEQ4MDAgPD0gKmNoYXJh
Y3RlcnMgJiYgKmNoYXJhY3RlcnMgPD0gMHhERkZGKSk7CisgICAgICAgICAgICAgICAgICAgIC8v
IFRoZXJlIHNob3VsZCBiZSByb29tIGxlZnQsIHNpbmNlIG9uZSBVQ2hhciBoYXNuJ3QgYmVlbiBj
b252ZXJ0ZWQuCisgICAgICAgICAgICAgICAgICAgIEFTU0VSVCgoYnVmZmVyICsgMykgPD0gYnVm
ZmVyRW5kKTsKKyAgICAgICAgICAgICAgICAgICAgcHV0VVRGOFRyaXBsZShidWZmZXIsIHJlcGxh
Y2VtZW50Q2hhcmFjdGVyKTsKKyAgICAgICAgICAgICAgICAgICAgKytjaGFyYWN0ZXJzOworICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgIGJvb2wgc3RyaWN0ID0gbW9kZSA9PSBTdHJpY3RDb252ZXJzaW9uOworICAgICAgICAgICAg
Q29udmVyc2lvblJlc3VsdCByZXN1bHQgPSBjb252ZXJ0VVRGMTZUb1VURjgoJmNoYXJhY3RlcnMs
IGNoYXJhY3RlcnMgKyBsZW5ndGgsICZidWZmZXIsIGJ1ZmZlciArIGJ1ZmZlclZlY3Rvci5zaXpl
KCksIHN0cmljdCk7CisgICAgICAgICAgICBBU1NFUlQocmVzdWx0ICE9IHRhcmdldEV4aGF1c3Rl
ZCk7IC8vIChsZW5ndGggKiAzKSBzaG91bGQgYmUgc3VmZmljaWVudCBmb3IgYW55IGNvbnZlcnNp
b24KKworICAgICAgICAgICAgLy8gT25seSBwcm9kdWNlZCBmcm9tIHN0cmljdCBjb252ZXJzaW9u
LgorICAgICAgICAgICAgaWYgKHJlc3VsdCA9PSBzb3VyY2VJbGxlZ2FsKSB7CisgICAgICAgICAg
ICAgICAgQVNTRVJUKHN0cmljdCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIENTdHJpbmcoKTsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gQ2hlY2sgZm9yIGFuIHVuY29udmVydGVk
IGhpZ2ggc3Vycm9nYXRlLgorICAgICAgICAgICAgaWYgKHJlc3VsdCA9PSBzb3VyY2VFeGhhdXN0
ZWQpIHsKKyAgICAgICAgICAgICAgICBpZiAoc3RyaWN0KQorICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gQ1N0cmluZygpOworICAgICAgICAgICAgICAgIC8vIFRoaXMgc2hvdWxkIGJlIG9uZSB1
bnBhaXJlZCBoaWdoIHN1cnJvZ2F0ZS4gVHJlYXQgaXQgdGhlIHNhbWUKKyAgICAgICAgICAgICAg
ICAvLyB3YXMgYXMgYW4gdW5wYWlyZWQgaGlnaCBzdXJyb2dhdGUgd291bGQgaGF2ZSBiZWVuIGhh
bmRsZWQgaW4KKyAgICAgICAgICAgICAgICAvLyB0aGUgbWlkZGxlIG9mIGEgc3RyaW5nIHdpdGgg
bm9uLXN0cmljdCBjb252ZXJzaW9uIC0gd2hpY2ggaXMKKyAgICAgICAgICAgICAgICAvLyB0byBz
YXksIHNpbXBseSBlbmNvZGUgaXQgdG8gVVRGLTguCisgICAgICAgICAgICAgICAgQVNTRVJUKChj
aGFyYWN0ZXJzICsgMSkgPT0gKHRoaXMtPmNoYXJhY3RlcnMoKSArIGxlbmd0aCkpOworICAgICAg
ICAgICAgICAgIEFTU0VSVCgoKmNoYXJhY3RlcnMgPj0gMHhEODAwKSAmJiAoKmNoYXJhY3RlcnMg
PD0gMHhEQkZGKSk7CisgICAgICAgICAgICAgICAgLy8gVGhlcmUgc2hvdWxkIGJlIHJvb20gbGVm
dCwgc2luY2Ugb25lIFVDaGFyIGhhc24ndCBiZWVuIGNvbnZlcnRlZC4KKyAgICAgICAgICAgICAg
ICBBU1NFUlQoKGJ1ZmZlciArIDMpIDw9IChidWZmZXIgKyBidWZmZXJWZWN0b3Iuc2l6ZSgpKSk7
CisgICAgICAgICAgICAgICAgcHV0VVRGOFRyaXBsZShidWZmZXIsICpjaGFyYWN0ZXJzKTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBDU3RyaW5nKGJ1ZmZl
clZlY3Rvci5kYXRhKCksIGJ1ZmZlciAtIGJ1ZmZlclZlY3Rvci5kYXRhKCkpOworfQorCiB9IC8v
IG5hbWVzcGFjZSBXVEYKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5oCShyZXZpc2lvbiAx
NDkyNjMpCisrKyBTb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuaAkod29ya2luZyBjb3B5
KQpAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KICNpbmNs
dWRlIDx3dGYvU3RyaW5nSGFzaGVyLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorI2luY2x1
ZGUgPHd0Zi90ZXh0L0NvbnZlcnNpb25Nb2RlLmg+CiAjaW5jbHVkZSA8d3RmL3VuaWNvZGUvVW5p
Y29kZS5oPgogCiAjaWYgUExBVEZPUk0oUVQpCkBAIC01MzQsNiArNTM1LDggQEAgcHVibGljOgog
I2lmIFBMQVRGT1JNKFFUKQogICAgIFFTdHJpbmdEYXRhKiBxU3RyaW5nRGF0YSgpIHsgcmV0dXJu
IGJ1ZmZlck93bmVyc2hpcCgpID09IEJ1ZmZlckFkb3B0ZWRRU3RyaW5nID8gbV9xU3RyaW5nRGF0
YSA6IDA7IH0KICNlbmRpZgorICAgIAorICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBDU3RyaW5n
IHV0ZjgoQ29udmVyc2lvbk1vZGUgPSBMZW5pZW50Q29udmVyc2lvbikgY29uc3Q7CiAKIHByaXZh
dGU6CiAgICAgLy8gVGhlIGhpZ2ggYml0cyBvZiAnaGFzaCcgYXJlIGFsd2F5cyBlbXB0eSwgYnV0
IHdlIHByZWZlciB0byBzdG9yZSBvdXIgZmxhZ3MKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL3RleHQv
V1RGU3RyaW5nLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmlu
Zy5jcHAJKHJldmlzaW9uIDE0OTI2MykKKysrIFNvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5n
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzcwLDkyICs3NzAsMTIgQEAgQ1N0cmluZyBTdHJpbmc6
OmxhdGluMSgpIGNvbnN0CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotLy8gSGVscGVyIHRvIHdy
aXRlIGEgdGhyZWUtYnl0ZSBVVEYtOCBjb2RlIHBvaW50IHRvIHRoZSBidWZmZXIsIGNhbGxlciBt
dXN0IGNoZWNrIHJvb20gaXMgYXZhaWxhYmxlLgotc3RhdGljIGlubGluZSB2b2lkIHB1dFVURjhU
cmlwbGUoY2hhciomIGJ1ZmZlciwgVUNoYXIgY2gpCi17Ci0gICAgQVNTRVJUKGNoID49IDB4MDgw
MCk7Ci0gICAgKmJ1ZmZlcisrID0gc3RhdGljX2Nhc3Q8Y2hhcj4oKChjaCA+PiAxMikgJiAweDBG
KSB8IDB4RTApOwotICAgICpidWZmZXIrKyA9IHN0YXRpY19jYXN0PGNoYXI+KCgoY2ggPj4gNikg
JiAweDNGKSB8IDB4ODApOwotICAgICpidWZmZXIrKyA9IHN0YXRpY19jYXN0PGNoYXI+KChjaCAm
IDB4M0YpIHwgMHg4MCk7Ci19Ci0KIENTdHJpbmcgU3RyaW5nOjp1dGY4KENvbnZlcnNpb25Nb2Rl
IG1vZGUpIGNvbnN0CiB7Ci0gICAgdW5zaWduZWQgbGVuZ3RoID0gdGhpcy0+bGVuZ3RoKCk7Ci0K
LSAgICBpZiAoIWxlbmd0aCkKKyAgICBpZiAoIW1faW1wbCkKICAgICAgICAgcmV0dXJuIENTdHJp
bmcoIiIsIDApOwotCi0gICAgLy8gQWxsb2NhdGUgYSBidWZmZXIgYmlnIGVub3VnaCB0byBob2xk
IGFsbCB0aGUgY2hhcmFjdGVycwotICAgIC8vIChhbiBpbmRpdmlkdWFsIFVURi0xNiBVQ2hhciBj
YW4gb25seSBleHBhbmQgdG8gMyBVVEYtOCBieXRlcykuCi0gICAgLy8gT3B0aW1pemF0aW9uIGlk
ZWFzLCBpZiB3ZSBmaW5kIHRoaXMgZnVuY3Rpb24gaXMgaG90OgotICAgIC8vICAqIFdlIGNvdWxk
IHNwZWN1bGF0aXZlbHkgY3JlYXRlIGEgQ1N0cmluZ0J1ZmZlciB0byBjb250YWluICdsZW5ndGgn
IAotICAgIC8vICAgIGNoYXJhY3RlcnMsIGFuZCByZXNpemUgaWYgbmVjZXNzYXJ5IChpLmUuIGlm
IHRoZSBidWZmZXIgY29udGFpbnMKLSAgICAvLyAgICBub24tYXNjaWkgY2hhcmFjdGVycykuIChB
bHRlcm5hdGl2ZWx5LCBzY2FuIHRoZSBidWZmZXIgZmlyc3QgZm9yCi0gICAgLy8gICAgYXNjaWkg
Y2hhcmFjdGVycywgc28gd2Uga25vdyB0aGlzIHdpbGwgYmUgc3VmZmljaWVudCkuCi0gICAgLy8g
ICogV2UgY291bGQgYWxsb2NhdGUgYSBDU3RyaW5nQnVmZmVyIHdpdGggYW4gYXBwcm9wcmlhdGUg
c2l6ZSB0bwotICAgIC8vICAgIGhhdmUgYSBnb29kIGNoYW5jZSBvZiBiZWluZyBhYmxlIHRvIHdy
aXRlIHRoZSBzdHJpbmcgaW50byB0aGUKLSAgICAvLyAgICBidWZmZXIgd2l0aG91dCByZWFsbG9j
aW5nIChzYXksIDEuNSB4IGxlbmd0aCkuCi0gICAgaWYgKGxlbmd0aCA+IG51bWVyaWNfbGltaXRz
PHVuc2lnbmVkPjo6bWF4KCkgLyAzKQotICAgICAgICByZXR1cm4gQ1N0cmluZygpOwotICAgIFZl
Y3RvcjxjaGFyLCAxMDI0PiBidWZmZXJWZWN0b3IobGVuZ3RoICogMyk7Ci0KLSAgICBjaGFyKiBi
dWZmZXIgPSBidWZmZXJWZWN0b3IuZGF0YSgpOwotCi0gICAgaWYgKGlzOEJpdCgpKSB7Ci0gICAg
ICAgIGNvbnN0IExDaGFyKiBjaGFyYWN0ZXJzID0gdGhpcy0+Y2hhcmFjdGVyczgoKTsKLQotICAg
ICAgICBDb252ZXJzaW9uUmVzdWx0IHJlc3VsdCA9IGNvbnZlcnRMYXRpbjFUb1VURjgoJmNoYXJh
Y3RlcnMsIGNoYXJhY3RlcnMgKyBsZW5ndGgsICZidWZmZXIsIGJ1ZmZlciArIGJ1ZmZlclZlY3Rv
ci5zaXplKCkpOwotICAgICAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0ICE9IHRhcmdl
dEV4aGF1c3RlZCk7IC8vIChsZW5ndGggKiAzKSBzaG91bGQgYmUgc3VmZmljaWVudCBmb3IgYW55
IGNvbnZlcnNpb24KLSAgICB9IGVsc2UgewotICAgICAgICBjb25zdCBVQ2hhciogY2hhcmFjdGVy
cyA9IHRoaXMtPmNoYXJhY3RlcnMxNigpOwotCi0gICAgICAgIGlmIChtb2RlID09IFN0cmljdENv
bnZlcnNpb25SZXBsYWNpbmdVbnBhaXJlZFN1cnJvZ2F0ZXNXaXRoRkZGRCkgewotICAgICAgICAg
ICAgY29uc3QgVUNoYXIqIGNoYXJhY3RlcnNFbmQgPSBjaGFyYWN0ZXJzICsgbGVuZ3RoOwotICAg
ICAgICAgICAgY2hhciogYnVmZmVyRW5kID0gYnVmZmVyICsgYnVmZmVyVmVjdG9yLnNpemUoKTsK
LSAgICAgICAgICAgIHdoaWxlIChjaGFyYWN0ZXJzIDwgY2hhcmFjdGVyc0VuZCkgewotICAgICAg
ICAgICAgICAgIC8vIFVzZSBzdHJpY3QgY29udmVyc2lvbiB0byBkZXRlY3QgdW5wYWlyZWQgc3Vy
cm9nYXRlcy4KLSAgICAgICAgICAgICAgICBDb252ZXJzaW9uUmVzdWx0IHJlc3VsdCA9IGNvbnZl
cnRVVEYxNlRvVVRGOCgmY2hhcmFjdGVycywgY2hhcmFjdGVyc0VuZCwgJmJ1ZmZlciwgYnVmZmVy
RW5kLCB0cnVlKTsKLSAgICAgICAgICAgICAgICBBU1NFUlQocmVzdWx0ICE9IHRhcmdldEV4aGF1
c3RlZCk7Ci0gICAgICAgICAgICAgICAgLy8gQ29udmVyc2lvbiBmYWlscyB3aGVuIHRoZXJlIGlz
IGFuIHVucGFpcmVkIHN1cnJvZ2F0ZS4KLSAgICAgICAgICAgICAgICAvLyBQdXQgcmVwbGFjZW1l
bnQgY2hhcmFjdGVyIChVK0ZGRkQpIGluc3RlYWQgb2YgdGhlIHVucGFpcmVkIHN1cnJvZ2F0ZS4K
LSAgICAgICAgICAgICAgICBpZiAocmVzdWx0ICE9IGNvbnZlcnNpb25PSykgewotICAgICAgICAg
ICAgICAgICAgICBBU1NFUlQoKDB4RDgwMCA8PSAqY2hhcmFjdGVycyAmJiAqY2hhcmFjdGVycyA8
PSAweERGRkYpKTsKLSAgICAgICAgICAgICAgICAgICAgLy8gVGhlcmUgc2hvdWxkIGJlIHJvb20g
bGVmdCwgc2luY2Ugb25lIFVDaGFyIGhhc24ndCBiZWVuIGNvbnZlcnRlZC4KLSAgICAgICAgICAg
ICAgICAgICAgQVNTRVJUKChidWZmZXIgKyAzKSA8PSBidWZmZXJFbmQpOwotICAgICAgICAgICAg
ICAgICAgICBwdXRVVEY4VHJpcGxlKGJ1ZmZlciwgcmVwbGFjZW1lbnRDaGFyYWN0ZXIpOwotICAg
ICAgICAgICAgICAgICAgICArK2NoYXJhY3RlcnM7Ci0gICAgICAgICAgICAgICAgfQotICAgICAg
ICAgICAgfQotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgYm9vbCBzdHJpY3QgPSBtb2Rl
ID09IFN0cmljdENvbnZlcnNpb247Ci0gICAgICAgICAgICBDb252ZXJzaW9uUmVzdWx0IHJlc3Vs
dCA9IGNvbnZlcnRVVEYxNlRvVVRGOCgmY2hhcmFjdGVycywgY2hhcmFjdGVycyArIGxlbmd0aCwg
JmJ1ZmZlciwgYnVmZmVyICsgYnVmZmVyVmVjdG9yLnNpemUoKSwgc3RyaWN0KTsKLSAgICAgICAg
ICAgIEFTU0VSVChyZXN1bHQgIT0gdGFyZ2V0RXhoYXVzdGVkKTsgLy8gKGxlbmd0aCAqIDMpIHNo
b3VsZCBiZSBzdWZmaWNpZW50IGZvciBhbnkgY29udmVyc2lvbgotCi0gICAgICAgICAgICAvLyBP
bmx5IHByb2R1Y2VkIGZyb20gc3RyaWN0IGNvbnZlcnNpb24uCi0gICAgICAgICAgICBpZiAocmVz
dWx0ID09IHNvdXJjZUlsbGVnYWwpIHsKLSAgICAgICAgICAgICAgICBBU1NFUlQoc3RyaWN0KTsK
LSAgICAgICAgICAgICAgICByZXR1cm4gQ1N0cmluZygpOwotICAgICAgICAgICAgfQotCi0gICAg
ICAgICAgICAvLyBDaGVjayBmb3IgYW4gdW5jb252ZXJ0ZWQgaGlnaCBzdXJyb2dhdGUuCi0gICAg
ICAgICAgICBpZiAocmVzdWx0ID09IHNvdXJjZUV4aGF1c3RlZCkgewotICAgICAgICAgICAgICAg
IGlmIChzdHJpY3QpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBDU3RyaW5nKCk7Ci0gICAg
ICAgICAgICAgICAgLy8gVGhpcyBzaG91bGQgYmUgb25lIHVucGFpcmVkIGhpZ2ggc3Vycm9nYXRl
LiBUcmVhdCBpdCB0aGUgc2FtZQotICAgICAgICAgICAgICAgIC8vIHdhcyBhcyBhbiB1bnBhaXJl
ZCBoaWdoIHN1cnJvZ2F0ZSB3b3VsZCBoYXZlIGJlZW4gaGFuZGxlZCBpbgotICAgICAgICAgICAg
ICAgIC8vIHRoZSBtaWRkbGUgb2YgYSBzdHJpbmcgd2l0aCBub24tc3RyaWN0IGNvbnZlcnNpb24g
LSB3aGljaCBpcwotICAgICAgICAgICAgICAgIC8vIHRvIHNheSwgc2ltcGx5IGVuY29kZSBpdCB0
byBVVEYtOC4KLSAgICAgICAgICAgICAgICBBU1NFUlQoKGNoYXJhY3RlcnMgKyAxKSA9PSAodGhp
cy0+Y2hhcmFjdGVycygpICsgbGVuZ3RoKSk7Ci0gICAgICAgICAgICAgICAgQVNTRVJUKCgqY2hh
cmFjdGVycyA+PSAweEQ4MDApICYmICgqY2hhcmFjdGVycyA8PSAweERCRkYpKTsKLSAgICAgICAg
ICAgICAgICAvLyBUaGVyZSBzaG91bGQgYmUgcm9vbSBsZWZ0LCBzaW5jZSBvbmUgVUNoYXIgaGFz
bid0IGJlZW4gY29udmVydGVkLgotICAgICAgICAgICAgICAgIEFTU0VSVCgoYnVmZmVyICsgMykg
PD0gKGJ1ZmZlciArIGJ1ZmZlclZlY3Rvci5zaXplKCkpKTsKLSAgICAgICAgICAgICAgICBwdXRV
VEY4VHJpcGxlKGJ1ZmZlciwgKmNoYXJhY3RlcnMpOwotICAgICAgICAgICAgfQotICAgICAgICB9
Ci0gICAgfQotCi0gICAgcmV0dXJuIENTdHJpbmcoYnVmZmVyVmVjdG9yLmRhdGEoKSwgYnVmZmVy
IC0gYnVmZmVyVmVjdG9yLmRhdGEoKSk7CisgICAgCisgICAgcmV0dXJuIG1faW1wbC0+dXRmOCht
b2RlKTsKIH0KIAogU3RyaW5nIFN0cmluZzo6bWFrZThCaXRGcm9tMTZCaXRTb3VyY2UoY29uc3Qg
VUNoYXIqIHNvdXJjZSwgc2l6ZV90IGxlbmd0aCkKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL3RleHQv
V1RGU3RyaW5nLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcu
aAkocmV2aXNpb24gMTQ5MjYzKQorKysgU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuaAko
d29ya2luZyBjb3B5KQpAQCAtMjE5LDEyICsyMTksNiBAQCBwdWJsaWM6CiAgICAgV1RGX0VYUE9S
VF9TVFJJTkdfQVBJIENTdHJpbmcgYXNjaWkoKSBjb25zdDsKICAgICBXVEZfRVhQT1JUX1NUUklO
R19BUEkgQ1N0cmluZyBsYXRpbjEoKSBjb25zdDsKIAotICAgIHR5cGVkZWYgZW51bSB7Ci0gICAg
ICAgIExlbmllbnRDb252ZXJzaW9uLAotICAgICAgICBTdHJpY3RDb252ZXJzaW9uLAotICAgICAg
ICBTdHJpY3RDb252ZXJzaW9uUmVwbGFjaW5nVW5wYWlyZWRTdXJyb2dhdGVzV2l0aEZGRkQsCi0g
ICAgfSBDb252ZXJzaW9uTW9kZTsKLQogICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBDU3RyaW5n
IHV0ZjgoQ29udmVyc2lvbk1vZGUgPSBMZW5pZW50Q29udmVyc2lvbikgY29uc3Q7CiAKICAgICBV
Q2hhciBvcGVyYXRvcltdKHVuc2lnbmVkIGluZGV4KSBjb25zdApJbmRleDogU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkocmV2
aXNpb24gMTQ5MzQ0KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDMgKzEsMTkgQEAKKzIwMTMtMDQtMjkgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxl
LmNvbT4KKworICAgICAgICBmb3VydGhUaWVyOiBTdHJpbmc6OnV0ZjgoKSBzaG91bGQgYWxzbyBi
ZSBhdmFpbGFibGUgYXMgU3RyaW5nSW1wbDo6dXRmOCgpIHNvIHRoYXQgeW91IGRvbid0IGhhdmUg
dG8gcmVmKCkgYSBTdHJpbmdJbXBsIGp1c3QgdG8gZ2V0IGl0cyB1dGY4KCkKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExNTM5MworCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBiZWNhdXNl
IG5vIG5ldyBiZWhhdmlvci4KKworICAgICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2Nr
ZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0OjpjbG9zZSk6CisgICAgICAgICog
TW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViU29ja2V0Q2hhbm5lbDo6c2VuZCk6CisgICAgICAgICogaHRtbC9NZWRpYUZyYWdtZW50
VVJJUGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRnJhZ21lbnRVUklQYXJzZXI6
OnBhcnNlRnJhZ21lbnRzKToKKwogMjAxMy0wNC0xOCAgR2VvZmZyZXkgR2FyZW4gIDxnZ2FyZW5A
YXBwbGUuY29tPgogCiAgICAgICAgIENoZXJyeS1waWNrIG1lcmdlZCA8aHR0cDovL3RyYWMud2Vi
a2l0Lm9yZy9jaGFuZ2VzZXQvMTQ4Njk2PiB0byB0aGUgRlRMCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcAkocmV2aXNpb24gMTQ5MjYz
KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTM3OSw3ICszNzksNyBAQCB2b2lkIFdlYlNvY2tldDo6Y2xvc2UoaW50
IGNvZGUsIGNvbnN0IFN0CiAgICAgICAgICAgICBlYyA9IElOVkFMSURfQUNDRVNTX0VSUjsKICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQotICAgICAgICBDU3RyaW5nIHV0ZjggPSByZWFz
b24udXRmOChTdHJpbmc6OlN0cmljdENvbnZlcnNpb25SZXBsYWNpbmdVbnBhaXJlZFN1cnJvZ2F0
ZXNXaXRoRkZGRCk7CisgICAgICAgIENTdHJpbmcgdXRmOCA9IHJlYXNvbi51dGY4KFN0cmljdENv
bnZlcnNpb25SZXBsYWNpbmdVbnBhaXJlZFN1cnJvZ2F0ZXNXaXRoRkZGRCk7CiAgICAgICAgIGlm
ICh1dGY4Lmxlbmd0aCgpID4gbWF4UmVhc29uU2l6ZUluQnl0ZXMpIHsKICAgICAgICAgICAgIHNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+YWRkQ29uc29sZU1lc3NhZ2UoSlNNZXNzYWdlU291cmNl
LCBFcnJvck1lc3NhZ2VMZXZlbCwgIldlYlNvY2tldCBjbG9zZSBtZXNzYWdlIGlzIHRvbyBsb25n
LiIpOwogICAgICAgICAgICAgZWMgPSBTWU5UQVhfRVJSOwpJbmRleDogU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcAkocmV2
aXNpb24gMTQ5MjYzKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNv
Y2tldENoYW5uZWwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzgsNyArMTM4LDcgQEAgU3RyaW5n
IFdlYlNvY2tldENoYW5uZWw6OmV4dGVuc2lvbnMoKQogVGhyZWFkYWJsZVdlYlNvY2tldENoYW5u
ZWw6OlNlbmRSZXN1bHQgV2ViU29ja2V0Q2hhbm5lbDo6c2VuZChjb25zdCBTdHJpbmcmIG1lc3Nh
Z2UpCiB7CiAgICAgTE9HKE5ldHdvcmssICJXZWJTb2NrZXRDaGFubmVsICVwIHNlbmQgJXMiLCB0
aGlzLCBtZXNzYWdlLnV0ZjgoKS5kYXRhKCkpOwotICAgIENTdHJpbmcgdXRmOCA9IG1lc3NhZ2Uu
dXRmOChTdHJpbmc6OlN0cmljdENvbnZlcnNpb25SZXBsYWNpbmdVbnBhaXJlZFN1cnJvZ2F0ZXNX
aXRoRkZGRCk7CisgICAgQ1N0cmluZyB1dGY4ID0gbWVzc2FnZS51dGY4KFN0cmljdENvbnZlcnNp
b25SZXBsYWNpbmdVbnBhaXJlZFN1cnJvZ2F0ZXNXaXRoRkZGRCk7CiAgICAgZW5xdWV1ZVRleHRG
cmFtZSh1dGY4KTsKICAgICAvLyBBY2NvcmRpbmcgdG8gV2ViU29ja2V0IEFQSSBzcGVjaWZpY2F0
aW9uLCBXZWJTb2NrZXQuc2VuZCgpIHNob3VsZCByZXR1cm4gdm9pZCBpbnN0ZWFkCiAgICAgLy8g
b2YgYm9vbGVhbi4gSG93ZXZlciwgb3VyIGltcGxlbWVudGF0aW9uIHN0aWxsIHJldHVybnMgYm9v
bGVhbiBkdWUgdG8gY29tcGF0aWJpbGl0eQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9NZWRp
YUZyYWdtZW50VVJJUGFyc2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1s
L01lZGlhRnJhZ21lbnRVUklQYXJzZXIuY3BwCShyZXZpc2lvbiAxNDkyNjMpCisrKyBTb3VyY2Uv
V2ViQ29yZS9odG1sL01lZGlhRnJhZ21lbnRVUklQYXJzZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xNDIsMTEgKzE0MiwxMSBAQCB2b2lkIE1lZGlhRnJhZ21lbnRVUklQYXJzZXI6OnBhcnNlRnJh
Z21lCiAgICAgICAgIC8vICAgICBuYW1lIG9yIHZhbHVlIGFyZSBub3QgdmFsaWQgVVRGLTggc3Ry
aW5ncywgdGhlbiByZW1vdmUgdGhlIG5hbWUtdmFsdWUgcGFpciBmcm9tIHRoZSBsaXN0LgogICAg
ICAgICBib29sIHZhbGlkVVRGOCA9IHRydWU7CiAgICAgICAgIGlmICghbmFtZS5pc0VtcHR5KCkp
IHsKLSAgICAgICAgICAgIG5hbWUgPSBuYW1lLnV0ZjgoU3RyaW5nOjpTdHJpY3RDb252ZXJzaW9u
KS5kYXRhKCk7CisgICAgICAgICAgICBuYW1lID0gbmFtZS51dGY4KFN0cmljdENvbnZlcnNpb24p
LmRhdGEoKTsKICAgICAgICAgICAgIHZhbGlkVVRGOCA9ICFuYW1lLmlzRW1wdHkoKTsKICAgICAg
ICAgfQogICAgICAgICBpZiAodmFsaWRVVEY4ICYmICF2YWx1ZS5pc0VtcHR5KCkpIHsKLSAgICAg
ICAgICAgIHZhbHVlID0gdmFsdWUudXRmOChTdHJpbmc6OlN0cmljdENvbnZlcnNpb24pLmRhdGEo
KTsKKyAgICAgICAgICAgIHZhbHVlID0gdmFsdWUudXRmOChTdHJpY3RDb252ZXJzaW9uKS5kYXRh
KCk7CiAgICAgICAgICAgICB2YWxpZFVURjggPSAhdmFsdWUuaXNFbXB0eSgpOwogICAgICAgICB9
CiAgICAgICAgIAo=
</data>
<flag name="review"
          id="221578"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
      

    </bug>

</bugzilla>