<?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>170421</bug_id>
          
          <creation_ts>2017-04-03 14:33:22 -0700</creation_ts>
          <short_desc>Air liveness should build constraints and solve them rather than repeatedly parsing IR</short_desc>
          <delta_ts>2017-04-04 10:21:09 -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>WebKit 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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>benjamin</cc>
    
    <cc>buildbot</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>dbates</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1293809</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2017-04-03 14:33:22 -0700</bug_when>
    <thetext>Patch forthcoming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1293810</commentid>
    <comment_count>1</comment_count>
      <attachid>306117</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2017-04-03 14:33:54 -0700</bug_when>
    <thetext>Created attachment 306117
it might work</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1293827</commentid>
    <comment_count>2</comment_count>
      <attachid>306121</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2017-04-03 14:55:52 -0700</bug_when>
    <thetext>Created attachment 306121
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1293829</commentid>
    <comment_count>3</comment_count>
      <attachid>306121</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-04-03 14:58:58 -0700</bug_when>
    <thetext>Comment on attachment 306121
the patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1294056</commentid>
    <comment_count>4</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2017-04-04 10:21:09 -0700</bug_when>
    <thetext>Landed in https://trac.webkit.org/changeset/214883/webkit</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>306117</attachid>
            <date>2017-04-03 14:33:54 -0700</date>
            <delta_ts>2017-04-03 14:55:52 -0700</delta_ts>
            <desc>it might work</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>12114</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyMTQ4MzgpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTE5LDYgKzExOSw3IEBACiAJCTBGMTVGMTVGMTRCN0E3
M0UwMDVERTM3RCAvKiBDb21tb25TbG93UGF0aHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMTVGMTVEMTRCN0E3M0EwMDVERTM3RCAvKiBDb21tb25T
bG93UGF0aHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQkwRjE3MjVGRjFCNDg3MTlBMDBBQzNBNTUgLyogREZHTWluaWZpZWRHcmFwaC5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjE3MjVGRTFCNDg3
MTlBMDBBQzNBNTUgLyogREZHTWluaWZpZWRHcmFwaC5jcHAgKi87IH07CiAJCTBGMTgyOTY5MUU5
MkVFNTQwMDVCMUVBOCAvKiBBaXJMaXZlbmVzc0FkYXB0ZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMTgyOTY4MUU5MkVFNTEwMDVCMUVBOCAvKiBB
aXJMaXZlbmVzc0FkYXB0ZXIuaCAqLzsgfTsKKwkJMEYxODI5NkIxRTkyRjZEQzAwNUIxRUE4IC8q
IEFpckxpdmVuZXNzQ29uc3RyYWludHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDBGMTgyOTZBMUU5MkY2REEwMDVCMUVBOCAvKiBBaXJMaXZlbmVzc0Nv
bnN0cmFpbnRzLmggKi87IH07CiAJCTBGMThEM0NGMUI1NUE2RTAwMDJDNUM5RiAvKiBERkdBZGFw
dGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMEYxOEQzQ0QxQjU1QTZFMDAwMkM1QzlGIC8qIERGR0FkYXB0aXZl
U3RydWN0dXJlV2F0Y2hwb2ludC5jcHAgKi87IH07CiAJCTBGMThEM0QwMUI1NUE2RTAwMDJDNUM5
RiAvKiBERkdBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMThEM0NFMUI1NUE2RTAwMDJDNUM5RiAvKiBE
RkdBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQuaCAqLzsgfTsKIAkJMEYxOTBDQUMxODlEODJG
NjAwMEFFNUYwIC8qIFByb2ZpbGVySmV0dGlzb25SZWFzb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYxOTBDQUExODlEODJGNjAwMEFFNUYwIC8q
IFByb2ZpbGVySmV0dGlzb25SZWFzb24uY3BwICovOyB9OwpAQCAtMjY1NCw2ICsyNjU1LDcgQEAK
IAkJMEYxNUYxNUQxNEI3QTczQTAwNURFMzdEIC8qIENvbW1vblNsb3dQYXRocy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb21tb25TbG93UGF0aHMuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMEYxNzI1RkUxQjQ4NzE5QTAwQUMzQTU1IC8qIERGR01pbmlmaWVk
R3JhcGguY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZHTWluaWZp
ZWRHcmFwaC5jcHA7IHBhdGggPSBkZmcvREZHTWluaWZpZWRHcmFwaC5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTBGMTgyOTY4MUU5MkVFNTEwMDVCMUVBOCAvKiBBaXJMaXZlbmVz
c0FkYXB0ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQWlyTGl2ZW5lc3NB
ZGFwdGVyLmg7IHBhdGggPSBiMy9haXIvQWlyTGl2ZW5lc3NBZGFwdGVyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTBGMTgyOTZBMUU5MkY2REEwMDVCMUVBOCAvKiBBaXJMaXZlbmVz
c0NvbnN0cmFpbnRzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEFpckxpdmVu
ZXNzQ29uc3RyYWludHMuaDsgcGF0aCA9IGIzL2Fpci9BaXJMaXZlbmVzc0NvbnN0cmFpbnRzLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMThEM0NEMUI1NUE2RTAwMDJDNUM5RiAv
KiBERkdBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBuYW1lID0gREZHQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50LmNwcDsgcGF0
aCA9IGRmZy9ERkdBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkwRjE4RDNDRTFCNTVBNkUwMDAyQzVDOUYgLyogREZHQWRhcHRpdmVT
dHJ1Y3R1cmVXYXRjaHBvaW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERG
R0FkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludC5oOyBwYXRoID0gZGZnL0RGR0FkYXB0aXZlU3Ry
dWN0dXJlV2F0Y2hwb2ludC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjE5MENB
QTE4OUQ4MkY2MDAwQUU1RjAgLyogUHJvZmlsZXJKZXR0aXNvblJlYXNvbi5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBQcm9maWxlckpldHRpc29uUmVhc29uLmNwcDsg
cGF0aCA9IHByb2ZpbGVyL1Byb2ZpbGVySmV0dGlzb25SZWFzb24uY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtNTYxMyw2ICs1NjE1LDcgQEAKIAkJCQkwRkRGNjdENTFEOURDNDNF
MDAxQjk4MjUgLyogQWlyS2luZC5oICovLAogCQkJCTI2ODRENDM3MUMwMDE2MUMwMDgxRDY2MyAv
KiBBaXJMaXZlbmVzcy5oICovLAogCQkJCTBGMTgyOTY4MUU5MkVFNTEwMDVCMUVBOCAvKiBBaXJM
aXZlbmVzc0FkYXB0ZXIuaCAqLywKKwkJCQkwRjE4Mjk2QTFFOTJGNkRBMDA1QjFFQTggLyogQWly
TGl2ZW5lc3NDb25zdHJhaW50cy5oICovLAogCQkJCTBGRTM0QzE3MUM0QjM5QUUwMDAzQTUxMiAv
KiBBaXJMb2dSZWdpc3RlclByZXNzdXJlLmNwcCAqLywKIAkJCQkwRkUzNEMxODFDNEIzOUFFMDAw
M0E1MTIgLyogQWlyTG9nUmVnaXN0ZXJQcmVzc3VyZS5oICovLAogCQkJCTBGNjE4MzI1MUM0NUJG
MDcwMDcyNDUwQiAvKiBBaXJMb3dlckFmdGVyUmVnQWxsb2MuY3BwICovLApAQCAtODk2Niw2ICs4
OTY5LDcgQEAKIAkJCQkyQTRCQjdGMzE4QTQxMTc5MDA4QTBGQ0QgLyogSlNNYW5hZ2VkVmFsdWVJ
bnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTcwMDg3NDIxN0NCRThFQjAwQzNFNjQzIC8q
IEpTTWFwLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzRERUY5NjE4MkQ5OTE0MDA1MjJDMjIgLyog
SlNNYXBJdGVyYXRvci5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEYxODI5NkIxRTkyRjZEQzAwNUIx
RUE4IC8qIEFpckxpdmVuZXNzQ29uc3RyYWludHMuaCBpbiBIZWFkZXJzICovLAogCQkJCTk5NTlF
OTJEMUJEMTdGQTQwMDFBQTQxMyAvKiBqc21pbi5weSBpbiBIZWFkZXJzICovLAogCQkJCUUzRDIz
OUM5MUI4MjlDMUMwMEJCRUY2NyAvKiBKU01vZHVsZUVudmlyb25tZW50LmggaW4gSGVhZGVycyAq
LywKIAkJCQlEOTcyMjc1MkRDNTQ0NTlCOTEyNUI1MzkgLyogSlNNb2R1bGVMb2FkZXIuaCBpbiBI
ZWFkZXJzICovLApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJMaXZlbmVz
c0FkYXB0ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fp
ckxpdmVuZXNzQWRhcHRlci5oCShyZXZpc2lvbiAyMTQ4MzgpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvYWlyL0FpckxpdmVuZXNzQWRhcHRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2
ICszMSw3IEBACiAjaW5jbHVkZSAiQWlyQ0ZHLmgiCiAjaW5jbHVkZSAiQWlyQ29kZS5oIgogI2lu
Y2x1ZGUgIkFpckluc3RJbmxpbmVzLmgiCisjaW5jbHVkZSAiQWlyTGl2ZW5lc3NDb25zdHJhaW50
cy5oIgogI2luY2x1ZGUgIkFpclN0YWNrU2xvdC5oIgogI2luY2x1ZGUgIkFpclRtcElubGluZXMu
aCIKIApAQCAtNDIsNiArNDMsNyBAQCBzdHJ1Y3QgTGl2ZW5lc3NBZGFwdGVyIHsKICAgICAKICAg
ICBMaXZlbmVzc0FkYXB0ZXIoQ29kZSYgY29kZSkKICAgICAgICAgOiBjb2RlKGNvZGUpCisgICAg
ICAgICwgY29uc3RyYWludHMoY29kZSkKICAgICB7CiAgICAgfQogICAgIApAQCAtNTMsNTIgKzU1
LDE3IEBAIHN0cnVjdCBMaXZlbmVzc0FkYXB0ZXIgewogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1
bmM+CiAgICAgdm9pZCBmb3JFYWNoVXNlKEJhc2ljQmxvY2sqIGJsb2NrLCBzaXplX3QgaW5zdEJv
dW5kYXJ5SW5kZXgsIGNvbnN0IEZ1bmMmIGZ1bmMpCiAgICAgewotICAgICAgICBpZiAoSW5zdCog
cHJldkluc3QgPSBibG9jay0+Z2V0KGluc3RCb3VuZGFyeUluZGV4IC0gMSkpIHsKLSAgICAgICAg
ICAgIHByZXZJbnN0LT5mb3JFYWNoPHR5cGVuYW1lIEFkYXB0ZXI6OlRoaW5nPigKLSAgICAgICAg
ICAgICAgICBbJl0gKHR5cGVuYW1lIEFkYXB0ZXI6OlRoaW5nJiB0aGluZywgQXJnOjpSb2xlIHJv
bGUsIEJhbmsgYmFuaywgV2lkdGgpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKEFyZzo6aXNM
YXRlVXNlKHJvbGUpCi0gICAgICAgICAgICAgICAgICAgICAgICAmJiBBZGFwdGVyOjphY2NlcHRz
QmFuayhiYW5rKQotICAgICAgICAgICAgICAgICAgICAgICAgJiYgQWRhcHRlcjo6YWNjZXB0c1Jv
bGUocm9sZSkpCi0gICAgICAgICAgICAgICAgICAgICAgICBmdW5jKEFkYXB0ZXI6OnZhbHVlVG9J
bmRleCh0aGluZykpOwotICAgICAgICAgICAgICAgIH0pOwotICAgICAgICB9Ci0gICAgICAgIAot
ICAgICAgICBpZiAoSW5zdCogbmV4dEluc3QgPSBibG9jay0+Z2V0KGluc3RCb3VuZGFyeUluZGV4
KSkgewotICAgICAgICAgICAgbmV4dEluc3QtPmZvckVhY2g8dHlwZW5hbWUgQWRhcHRlcjo6VGhp
bmc+KAotICAgICAgICAgICAgICAgIFsmXSAodHlwZW5hbWUgQWRhcHRlcjo6VGhpbmcmIHRoaW5n
LCBBcmc6OlJvbGUgcm9sZSwgQmFuayBiYW5rLCBXaWR0aCkgewotICAgICAgICAgICAgICAgICAg
ICBpZiAoQXJnOjppc0Vhcmx5VXNlKHJvbGUpCi0gICAgICAgICAgICAgICAgICAgICAgICAmJiBB
ZGFwdGVyOjphY2NlcHRzQmFuayhiYW5rKQotICAgICAgICAgICAgICAgICAgICAgICAgJiYgQWRh
cHRlcjo6YWNjZXB0c1JvbGUocm9sZSkpCi0gICAgICAgICAgICAgICAgICAgICAgICBmdW5jKEFk
YXB0ZXI6OnZhbHVlVG9JbmRleCh0aGluZykpOwotICAgICAgICAgICAgICAgIH0pOwotICAgICAg
ICB9CisgICAgICAgIGNvbnN0cmFpbnRzLmF0KGJsb2NrLCBpbnN0Qm91bmRhcnlJbmRleCkudXNl
LmZvckVhY2goZnVuYyk7CiAgICAgfQogICAgIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmM+
CiAgICAgdm9pZCBmb3JFYWNoRGVmKEJhc2ljQmxvY2sqIGJsb2NrLCBzaXplX3QgaW5zdEJvdW5k
YXJ5SW5kZXgsIGNvbnN0IEZ1bmMmIGZ1bmMpCiAgICAgewotICAgICAgICBpZiAoSW5zdCogcHJl
dkluc3QgPSBibG9jay0+Z2V0KGluc3RCb3VuZGFyeUluZGV4IC0gMSkpIHsKLSAgICAgICAgICAg
IHByZXZJbnN0LT5mb3JFYWNoPHR5cGVuYW1lIEFkYXB0ZXI6OlRoaW5nPigKLSAgICAgICAgICAg
ICAgICBbJl0gKHR5cGVuYW1lIEFkYXB0ZXI6OlRoaW5nJiB0aGluZywgQXJnOjpSb2xlIHJvbGUs
IEJhbmsgYmFuaywgV2lkdGgpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKEFyZzo6aXNMYXRl
RGVmKHJvbGUpCi0gICAgICAgICAgICAgICAgICAgICAgICAmJiBBZGFwdGVyOjphY2NlcHRzQmFu
ayhiYW5rKQotICAgICAgICAgICAgICAgICAgICAgICAgJiYgQWRhcHRlcjo6YWNjZXB0c1JvbGUo
cm9sZSkpCi0gICAgICAgICAgICAgICAgICAgICAgICBmdW5jKEFkYXB0ZXI6OnZhbHVlVG9JbmRl
eCh0aGluZykpOwotICAgICAgICAgICAgICAgIH0pOwotICAgICAgICB9Ci0gICAgICAgIAotICAg
ICAgICBpZiAoSW5zdCogbmV4dEluc3QgPSBibG9jay0+Z2V0KGluc3RCb3VuZGFyeUluZGV4KSkg
ewotICAgICAgICAgICAgbmV4dEluc3QtPmZvckVhY2g8dHlwZW5hbWUgQWRhcHRlcjo6VGhpbmc+
KAotICAgICAgICAgICAgICAgIFsmXSAodHlwZW5hbWUgQWRhcHRlcjo6VGhpbmcmIHRoaW5nLCBB
cmc6OlJvbGUgcm9sZSwgQmFuayBiYW5rLCBXaWR0aCkgewotICAgICAgICAgICAgICAgICAgICBp
ZiAoQXJnOjppc0Vhcmx5RGVmKHJvbGUpCi0gICAgICAgICAgICAgICAgICAgICAgICAmJiBBZGFw
dGVyOjphY2NlcHRzQmFuayhiYW5rKQotICAgICAgICAgICAgICAgICAgICAgICAgJiYgQWRhcHRl
cjo6YWNjZXB0c1JvbGUocm9sZSkpCi0gICAgICAgICAgICAgICAgICAgICAgICBmdW5jKEFkYXB0
ZXI6OnZhbHVlVG9JbmRleCh0aGluZykpOwotICAgICAgICAgICAgICAgIH0pOwotICAgICAgICB9
CisgICAgICAgIGNvbnN0cmFpbnRzLmF0KGJsb2NrLCBpbnN0Qm91bmRhcnlJbmRleCkuZGVmLmZv
ckVhY2goZnVuYyk7CiAgICAgfQogCiAgICAgQ29kZSYgY29kZTsKKyAgICBMaXZlbmVzc0NvbnN0
cmFpbnRzPEFkYXB0ZXI+IGNvbnN0cmFpbnRzOwogfTsKIAogdGVtcGxhdGU8QmFuayBhZGFwdGVy
QmFuaywgQXJnOjpUZW1wZXJhdHVyZSBtaW5pbXVtVGVtcGVyYXR1cmUgPSBBcmc6OkNvbGQ+Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckxpdmVuZXNzQ29uc3RyYWludHMu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckxpdmVuZXNz
Q29uc3RyYWludHMuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
YWlyL0FpckxpdmVuZXNzQ29uc3RyYWludHMuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDky
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdt
YSBvbmNlCisKKyNpZiBFTkFCTEUoQjNfSklUKQorCisjaW5jbHVkZSAiQWlyQmFzaWNCbG9jay5o
IgorI2luY2x1ZGUgIkFpckNvZGUuaCIKKyNpbmNsdWRlICJBaXJJbnN0SW5saW5lcy5oIgorI2lu
Y2x1ZGUgPHd0Zi9JbmRleE1hcC5oPgorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsg
bmFtZXNwYWNlIEFpciB7CisKK3RlbXBsYXRlPHR5cGVuYW1lIEFkYXB0ZXI+CitjbGFzcyBMaXZl
bmVzc0NvbnN0cmFpbnRzIHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIFZlY3Rvcjx1bnNpZ25lZCwg
ND4gQWN0aW9uc0xpc3Q7CisgICAgCisgICAgc3RydWN0IEFjdGlvbnMgeworICAgICAgICBBY3Rp
b25zKCkgeyB9CisgICAgICAgIAorICAgICAgICBBY3Rpb25zTGlzdCB1c2U7CisgICAgICAgIEFj
dGlvbnNMaXN0IGRlZjsKKyAgICB9OworICAgIAorICAgIExpdmVuZXNzQ29uc3RyYWludHMoQ29k
ZSYgY29kZSkKKyAgICAgICAgOiBtX2NvZGUoY29kZSkKKyAgICAgICAgLCBtX2FjdGlvbnMoY29k
ZS5zaXplKCkpCisgICAgeworICAgICAgICBmb3IgKEJhc2ljQmxvY2sqIGJsb2NrIDogbV9jb2Rl
KSB7CisgICAgICAgICAgICBWZWN0b3I8QWN0aW9ucz4mIGFjdGlvbnNGb3JCb3VuZGFyeSA9IG1f
YWN0aW9uc1tibG9ja107CisgICAgICAgICAgICBhY3Rpb25zRm9yQm91bmRhcnkucmVzaXplKGJs
b2NrLT5zaXplKCkgKyAxKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgZm9yIChzaXplX3Qg
aW5zdEluZGV4ID0gYmxvY2stPnNpemUoKTsgaW5zdEluZGV4LS07KSB7CisgICAgICAgICAgICAg
ICAgSW5zdCYgaW5zdCA9IGJsb2NrLT5hdChpbnN0SW5kZXgpOworICAgICAgICAgICAgICAgIGlu
c3QuZm9yRWFjaDx0eXBlbmFtZSBBZGFwdGVyOjpUaGluZz4oCisgICAgICAgICAgICAgICAgICAg
IFsmXSAodHlwZW5hbWUgQWRhcHRlcjo6VGhpbmcmIHRoaW5nLCBBcmc6OlJvbGUgcm9sZSwgQmFu
ayBiYW5rLCBXaWR0aCkgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFBZGFwdGVyOjph
Y2NlcHRzQmFuayhiYW5rKCkpIHx8ICFBZGFwdGVyOjphY2NlcHRzUm9sZShyb2xlKSkKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgICAgICAgICAK
KyAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGluZGV4ID0gQWRhcHRlcjo6dmFsdWVU
b0luZGV4KHRoaW5nKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKEFyZzo6aXNFYXJseVVzZShyb2xlKSkKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBhY3Rpb25zRm9yQm91bmRhcnlbaW5zdEluZGV4XS5hcHBlbmRJZk5vdENvbnRhaW5z
KGluZGV4KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChBcmc6OmlzRWFybHlEZWYocm9s
ZSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uc0ZvckJvdW5kYXJ5W2luc3RJ
bmRleF0uYXBwZW5kSWZOb3RDb250YWlucyhpbmRleCk7CisgICAgICAgICAgICAgICAgICAgICAg
ICBpZiAoQXJnOjppc0xhdGVVc2Uocm9sZSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
YWN0aW9uc0ZvckJvdW5kYXJ5W2luc3RJbmRleCArIDFdLmFwcGVuZElmTm90Q29udGFpbnMoaW5k
ZXgpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEFyZzo6aXNMYXRlRGVmKHJvbGUpKQor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbnNGb3JCb3VuZGFyeVtpbnN0SW5kZXgg
KyAxXS5hcHBlbmRJZk5vdENvbnRhaW5zKGluZGV4KTsKKyAgICAgICAgICAgICAgICAgICAgfSk7
CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgQWN0aW9ucyYgYXQo
QmFzaWNCbG9jayogYmxvY2ssIHVuc2lnbmVkIGluc3RCb3VuZGFyeUluZGV4KQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIG1fYWN0aW9uc1tibG9ja11baW5zdEJvdW5kYXJ5SW5kZXhdOworICAgIH0K
KyAgICAKK3ByaXZhdGU6CisgICAgQ29kZSYgbV9jb2RlOworICAgIEluZGV4TWFwPEJhc2ljQmxv
Y2sqLCBWZWN0b3I8QWN0aW9ucz4+IG1fYWN0aW9uczsKK307CisKK30gfSB9IC8vIG5hbWVzcGFj
ZSBKU0M6OkIzOjpBaXIKKworI2VuZGlmIC8vIEVOQUJMRShCM19KSVQpCisKSW5kZXg6IFNvdXJj
ZS9XVEYvd3RmL1ZlY3Rvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL1ZlY3Rvci5o
CShyZXZpc2lvbiAyMTQ4MzYpCisrKyBTb3VyY2UvV1RGL3d0Zi9WZWN0b3IuaAkod29ya2luZyBj
b3B5KQpAQCAtNzA2LDYgKzcwNiw4IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBV
PiBib29sIGNvbnRhaW5zKGNvbnN0IFUmKSBjb25zdDsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBV
PiBzaXplX3QgZmluZChjb25zdCBVJikgY29uc3Q7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4g
c2l6ZV90IHJldmVyc2VGaW5kKGNvbnN0IFUmKSBjb25zdDsKKyAgICAKKyAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBVPiBib29sIGFwcGVuZElmTm90Q29udGFpbnMoY29uc3QgVSYpIGNvbnN0OwogCiAg
ICAgdm9pZCBzaHJpbmsoc2l6ZV90IHNpemUpOwogICAgIHZvaWQgZ3JvdyhzaXplX3Qgc2l6ZSk7
CkBAIC05MjYsNiArOTI4LDE2IEBAIHNpemVfdCBWZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHksIE92
ZXJmbG8KIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IGlubGluZUNhcGFjaXR5LCB0
eXBlbmFtZSBPdmVyZmxvd0hhbmRsZXIsIHNpemVfdCBtaW5DYXBhY2l0eT4KK3RlbXBsYXRlPHR5
cGVuYW1lIFU+Citib29sIFZlY3RvcjxULCBpbmxpbmVDYXBhY2l0eSwgT3ZlcmZsb3dIYW5kbGVy
LCBtaW5DYXBhY2l0eT46OmFwcGVuZElmTm90Q29udGFpbnMoY29uc3QgVSYgdmFsdWUpIGNvbnN0
Cit7CisgICAgaWYgKGNvbnRhaW5zKHZhbHVlKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IGFwcGVuZCh2YWx1ZSk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1l
IFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0eSwgdHlwZW5hbWUgT3ZlcmZsb3dIYW5kbGVyLCBzaXpl
X3QgbWluQ2FwYWNpdHk+CiB2b2lkIFZlY3RvcjxULCBpbmxpbmVDYXBhY2l0eSwgT3ZlcmZsb3dI
YW5kbGVyLCBtaW5DYXBhY2l0eT46OmZpbGwoY29uc3QgVCYgdmFsLCBzaXplX3QgbmV3U2l6ZSkK
IHsKICAgICBpZiAoc2l6ZSgpID4gbmV3U2l6ZSkK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>306121</attachid>
            <date>2017-04-03 14:55:52 -0700</date>
            <delta_ts>2017-04-03 14:58:58 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>14690</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjE0ODM5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMwIEBA
CisyMDE3LTA0LTAzICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
QWlyIGxpdmVuZXNzIHNob3VsZCBidWlsZCBjb25zdHJhaW50cyBhbmQgc29sdmUgdGhlbSByYXRo
ZXIgdGhhbiByZXBlYXRlZGx5IHBhcnNpbmcgSVIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MDQyMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorICAgICAgICAKKyAgICAgICAgSW5zdDo6Zm9yRWFjaDw+IGlzIGV4cGVuc2l2
ZS4gVGhlIExpdmVuZXNzQWRhcHRlciB1c2VzIGZvckVhY2ggd2l0aCBhIHBhcnRpY3VsYXJseQor
ICAgICAgICBnbmFybHkgbGFtYmRhIHRoYXQgaGFzIG1hbnkgZXh0cmEgY2hlY2tzLiBUaGVyZWZv
cmUsIGEgbG90IG9mIHRoZSB0aW1lIHNwZW50IGluCisgICAgICAgIGxpdmVuZXNzIGFuYWx5c2lz
IGlzIGp1c3QgcmVjb21wdXRpbmcgZm9yRWFjaDw+IGFuZCB0aGF0IGxhbWJkYSB0byBnZXQgdXNl
cyBhbmQgZGVmcy4KKyAgICAgICAgCisgICAgICAgIFRoaXMgaW50cm9kdWNlcyBMaXZlbmVzc0Nv
bnN0cmFpbnRzPD4sIHdoaWNoIGlzIGEgbGl2ZW5lc3MgY29uc3RyYWludCBzeXN0ZW0gYmFzZWQg
b24KKyAgICAgICAgQWRhcHRlci4gSXQgYmFzaWNhbGx5IGNhY2hlcyB0aGUgcmVzdWx0cyBvZiBk
b2luZyBmb3JFYWNoLiBJdCdsbCBnaXZlIHlvdSB0aGUgdXNlcyBhbmQKKyAgICAgICAgZGVmcyBh
dCBlYWNoIGluc3RydWN0aW9uIGJvdW5kYXJ5LgorICAgICAgICAKKyAgICAgICAgVGhpcyBsb29r
cyBsaWtlIGEgfjMlIGNvbXBpbGUgdGltZSBwcm9ncmVzc2lvbiBpbiB0dXJib2ZhbiBtb2RlLgor
ICAgICAgICAKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qOgorICAgICAgICAqIGIzL2Fpci9BaXJMaXZlbmVzc0FkYXB0ZXIuaDoKKyAgICAgICAgKEpT
Qzo6QjM6OkFpcjo6TGl2ZW5lc3NBZGFwdGVyOjpMaXZlbmVzc0FkYXB0ZXIpOgorICAgICAgICAo
SlNDOjpCMzo6QWlyOjpMaXZlbmVzc0FkYXB0ZXI6OmZvckVhY2hVc2UpOgorICAgICAgICAoSlND
OjpCMzo6QWlyOjpMaXZlbmVzc0FkYXB0ZXI6OmZvckVhY2hEZWYpOgorICAgICAgICAqIGIzL2Fp
ci9BaXJMaXZlbmVzc0NvbnN0cmFpbnRzLmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpCMzo6QWly
OjpMaXZlbmVzc0NvbnN0cmFpbnRzOjpBY3Rpb25zOjpBY3Rpb25zKToKKyAgICAgICAgKEpTQzo6
QjM6OkFpcjo6TGl2ZW5lc3NDb25zdHJhaW50czo6TGl2ZW5lc3NDb25zdHJhaW50cyk6CisgICAg
ICAgIChKU0M6OkIzOjpBaXI6OkxpdmVuZXNzQ29uc3RyYWludHM6OmF0KToKKwogMjAxNy0wNC0w
MyAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgogCiAgICAgICAgIE1vdmUgdGhlIExp
dmVuZXNzPD4gYWRhcHRlcnMgZnJvbSBBaXJMaXZlbmVzcy5oIHRvIEFpckxpdmVuZXNzQWRhcHRl
ci5oLgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDIxNDgzOCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xMTksNiArMTE5LDcgQEAKIAkJMEYxNUYxNUYx
NEI3QTczRTAwNURFMzdEIC8qIENvbW1vblNsb3dQYXRocy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYxNUYxNUQxNEI3QTczQTAwNURFMzdEIC8qIENv
bW1vblNsb3dQYXRocy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTBGMTcyNUZGMUI0ODcxOUEwMEFDM0E1NSAvKiBERkdNaW5pZmllZEdyYXBoLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMTcyNUZF
MUI0ODcxOUEwMEFDM0E1NSAvKiBERkdNaW5pZmllZEdyYXBoLmNwcCAqLzsgfTsKIAkJMEYxODI5
NjkxRTkyRUU1NDAwNUIxRUE4IC8qIEFpckxpdmVuZXNzQWRhcHRlci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYxODI5NjgxRTkyRUU1MTAwNUIxRUE4
IC8qIEFpckxpdmVuZXNzQWRhcHRlci5oICovOyB9OworCQkwRjE4Mjk2QjFFOTJGNkRDMDA1QjFF
QTggLyogQWlyTGl2ZW5lc3NDb25zdHJhaW50cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMEYxODI5NkExRTkyRjZEQTAwNUIxRUE4IC8qIEFpckxpdmVu
ZXNzQ29uc3RyYWludHMuaCAqLzsgfTsKIAkJMEYxOEQzQ0YxQjU1QTZFMDAwMkM1QzlGIC8qIERG
R0FkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjE4RDNDRDFCNTVBNkUwMDAyQzVDOUYgLyogREZHQWRh
cHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50LmNwcCAqLzsgfTsKIAkJMEYxOEQzRDAxQjU1QTZFMDAw
MkM1QzlGIC8qIERGR0FkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYxOEQzQ0UxQjU1QTZFMDAwMkM1QzlG
IC8qIERGR0FkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludC5oICovOyB9OwogCQkwRjE5MENBQzE4
OUQ4MkY2MDAwQUU1RjAgLyogUHJvZmlsZXJKZXR0aXNvblJlYXNvbi5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjE5MENBQTE4OUQ4MkY2MDAwQUU1
RjAgLyogUHJvZmlsZXJKZXR0aXNvblJlYXNvbi5jcHAgKi87IH07CkBAIC0yNjU0LDYgKzI2NTUs
NyBAQAogCQkwRjE1RjE1RDE0QjdBNzNBMDA1REUzN0QgLyogQ29tbW9uU2xvd1BhdGhzLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbW1vblNsb3dQYXRocy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkwRjE3MjVGRTFCNDg3MTlBMDBBQzNBNTUgLyogREZHTWlu
aWZpZWRHcmFwaC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdN
aW5pZmllZEdyYXBoLmNwcDsgcGF0aCA9IGRmZy9ERkdNaW5pZmllZEdyYXBoLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYxODI5NjgxRTkyRUU1MTAwNUIxRUE4IC8qIEFpckxp
dmVuZXNzQWRhcHRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBBaXJMaXZl
bmVzc0FkYXB0ZXIuaDsgcGF0aCA9IGIzL2Fpci9BaXJMaXZlbmVzc0FkYXB0ZXIuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYxODI5NkExRTkyRjZEQTAwNUIxRUE4IC8qIEFpckxp
dmVuZXNzQ29uc3RyYWludHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQWly
TGl2ZW5lc3NDb25zdHJhaW50cy5oOyBwYXRoID0gYjMvYWlyL0FpckxpdmVuZXNzQ29uc3RyYWlu
dHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYxOEQzQ0QxQjU1QTZFMDAwMkM1
QzlGIC8qIERGR0FkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludC5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQuY3Bw
OyBwYXRoID0gZGZnL0RGR0FkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludC5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMThEM0NFMUI1NUE2RTAwMDJDNUM5RiAvKiBERkdBZGFw
dGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1l
ID0gREZHQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50Lmg7IHBhdGggPSBkZmcvREZHQWRhcHRp
dmVTdHJ1Y3R1cmVXYXRjaHBvaW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBG
MTkwQ0FBMTg5RDgyRjYwMDBBRTVGMCAvKiBQcm9maWxlckpldHRpc29uUmVhc29uLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFByb2ZpbGVySmV0dGlzb25SZWFzb24u
Y3BwOyBwYXRoID0gcHJvZmlsZXIvUHJvZmlsZXJKZXR0aXNvblJlYXNvbi5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC01NjEzLDYgKzU2MTUsNyBAQAogCQkJCTBGREY2N0Q1MUQ5
REM0M0UwMDFCOTgyNSAvKiBBaXJLaW5kLmggKi8sCiAJCQkJMjY4NEQ0MzcxQzAwMTYxQzAwODFE
NjYzIC8qIEFpckxpdmVuZXNzLmggKi8sCiAJCQkJMEYxODI5NjgxRTkyRUU1MTAwNUIxRUE4IC8q
IEFpckxpdmVuZXNzQWRhcHRlci5oICovLAorCQkJCTBGMTgyOTZBMUU5MkY2REEwMDVCMUVBOCAv
KiBBaXJMaXZlbmVzc0NvbnN0cmFpbnRzLmggKi8sCiAJCQkJMEZFMzRDMTcxQzRCMzlBRTAwMDNB
NTEyIC8qIEFpckxvZ1JlZ2lzdGVyUHJlc3N1cmUuY3BwICovLAogCQkJCTBGRTM0QzE4MUM0QjM5
QUUwMDAzQTUxMiAvKiBBaXJMb2dSZWdpc3RlclByZXNzdXJlLmggKi8sCiAJCQkJMEY2MTgzMjUx
QzQ1QkYwNzAwNzI0NTBCIC8qIEFpckxvd2VyQWZ0ZXJSZWdBbGxvYy5jcHAgKi8sCkBAIC04OTY2
LDYgKzg5NjksNyBAQAogCQkJCTJBNEJCN0YzMThBNDExNzkwMDhBMEZDRCAvKiBKU01hbmFnZWRW
YWx1ZUludGVybmFsLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzAwODc0MjE3Q0JFOEVCMDBDM0U2
NDMgLyogSlNNYXAuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3NERFRjk2MTgyRDk5MTQwMDUyMkMy
MiAvKiBKU01hcEl0ZXJhdG9yLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjE4Mjk2QjFFOTJGNkRD
MDA1QjFFQTggLyogQWlyTGl2ZW5lc3NDb25zdHJhaW50cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
OTk1OUU5MkQxQkQxN0ZBNDAwMUFBNDEzIC8qIGpzbWluLnB5IGluIEhlYWRlcnMgKi8sCiAJCQkJ
RTNEMjM5QzkxQjgyOUMxQzAwQkJFRjY3IC8qIEpTTW9kdWxlRW52aXJvbm1lbnQuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUQ5NzIyNzUyREM1NDQ1OUI5MTI1QjUzOSAvKiBKU01vZHVsZUxvYWRlci5o
IGluIEhlYWRlcnMgKi8sCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpckxp
dmVuZXNzQWRhcHRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9h
aXIvQWlyTGl2ZW5lc3NBZGFwdGVyLmgJKHJldmlzaW9uIDIxNDgzOCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9haXIvQWlyTGl2ZW5lc3NBZGFwdGVyLmgJKHdvcmtpbmcgY29weSkKQEAg
LTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJBaXJDRkcuaCIKICNpbmNsdWRlICJBaXJDb2RlLmgi
CiAjaW5jbHVkZSAiQWlySW5zdElubGluZXMuaCIKKyNpbmNsdWRlICJBaXJMaXZlbmVzc0NvbnN0
cmFpbnRzLmgiCiAjaW5jbHVkZSAiQWlyU3RhY2tTbG90LmgiCiAjaW5jbHVkZSAiQWlyVG1wSW5s
aW5lcy5oIgogCkBAIC00Miw2ICs0Myw3IEBAIHN0cnVjdCBMaXZlbmVzc0FkYXB0ZXIgewogICAg
IAogICAgIExpdmVuZXNzQWRhcHRlcihDb2RlJiBjb2RlKQogICAgICAgICA6IGNvZGUoY29kZSkK
KyAgICAgICAgLCBjb25zdHJhaW50cyhjb2RlKQogICAgIHsKICAgICB9CiAgICAgCkBAIC01Myw1
MiArNTUsMTkgQEAgc3RydWN0IExpdmVuZXNzQWRhcHRlciB7CiAgICAgdGVtcGxhdGU8dHlwZW5h
bWUgRnVuYz4KICAgICB2b2lkIGZvckVhY2hVc2UoQmFzaWNCbG9jayogYmxvY2ssIHNpemVfdCBp
bnN0Qm91bmRhcnlJbmRleCwgY29uc3QgRnVuYyYgZnVuYykKICAgICB7Ci0gICAgICAgIGlmIChJ
bnN0KiBwcmV2SW5zdCA9IGJsb2NrLT5nZXQoaW5zdEJvdW5kYXJ5SW5kZXggLSAxKSkgewotICAg
ICAgICAgICAgcHJldkluc3QtPmZvckVhY2g8dHlwZW5hbWUgQWRhcHRlcjo6VGhpbmc+KAotICAg
ICAgICAgICAgICAgIFsmXSAodHlwZW5hbWUgQWRhcHRlcjo6VGhpbmcmIHRoaW5nLCBBcmc6OlJv
bGUgcm9sZSwgQmFuayBiYW5rLCBXaWR0aCkgewotICAgICAgICAgICAgICAgICAgICBpZiAoQXJn
Ojppc0xhdGVVc2Uocm9sZSkKLSAgICAgICAgICAgICAgICAgICAgICAgICYmIEFkYXB0ZXI6OmFj
Y2VwdHNCYW5rKGJhbmspCi0gICAgICAgICAgICAgICAgICAgICAgICAmJiBBZGFwdGVyOjphY2Nl
cHRzUm9sZShyb2xlKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmMoQWRhcHRlcjo6dmFs
dWVUb0luZGV4KHRoaW5nKSk7Ci0gICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgIH0KLSAgICAg
ICAgCi0gICAgICAgIGlmIChJbnN0KiBuZXh0SW5zdCA9IGJsb2NrLT5nZXQoaW5zdEJvdW5kYXJ5
SW5kZXgpKSB7Ci0gICAgICAgICAgICBuZXh0SW5zdC0+Zm9yRWFjaDx0eXBlbmFtZSBBZGFwdGVy
OjpUaGluZz4oCi0gICAgICAgICAgICAgICAgWyZdICh0eXBlbmFtZSBBZGFwdGVyOjpUaGluZyYg
dGhpbmcsIEFyZzo6Um9sZSByb2xlLCBCYW5rIGJhbmssIFdpZHRoKSB7Ci0gICAgICAgICAgICAg
ICAgICAgIGlmIChBcmc6OmlzRWFybHlVc2Uocm9sZSkKLSAgICAgICAgICAgICAgICAgICAgICAg
ICYmIEFkYXB0ZXI6OmFjY2VwdHNCYW5rKGJhbmspCi0gICAgICAgICAgICAgICAgICAgICAgICAm
JiBBZGFwdGVyOjphY2NlcHRzUm9sZShyb2xlKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGZ1
bmMoQWRhcHRlcjo6dmFsdWVUb0luZGV4KHRoaW5nKSk7Ci0gICAgICAgICAgICAgICAgfSk7Ci0g
ICAgICAgIH0KKyAgICAgICAgZm9yICh1bnNpZ25lZCBpbmRleCA6IGNvbnN0cmFpbnRzLmF0KGJs
b2NrLCBpbnN0Qm91bmRhcnlJbmRleCkudXNlKQorICAgICAgICAgICAgZnVuYyhpbmRleCk7CiAg
ICAgfQogICAgIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmM+CiAgICAgdm9pZCBmb3JFYWNo
RGVmKEJhc2ljQmxvY2sqIGJsb2NrLCBzaXplX3QgaW5zdEJvdW5kYXJ5SW5kZXgsIGNvbnN0IEZ1
bmMmIGZ1bmMpCiAgICAgewotICAgICAgICBpZiAoSW5zdCogcHJldkluc3QgPSBibG9jay0+Z2V0
KGluc3RCb3VuZGFyeUluZGV4IC0gMSkpIHsKLSAgICAgICAgICAgIHByZXZJbnN0LT5mb3JFYWNo
PHR5cGVuYW1lIEFkYXB0ZXI6OlRoaW5nPigKLSAgICAgICAgICAgICAgICBbJl0gKHR5cGVuYW1l
IEFkYXB0ZXI6OlRoaW5nJiB0aGluZywgQXJnOjpSb2xlIHJvbGUsIEJhbmsgYmFuaywgV2lkdGgp
IHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKEFyZzo6aXNMYXRlRGVmKHJvbGUpCi0gICAgICAg
ICAgICAgICAgICAgICAgICAmJiBBZGFwdGVyOjphY2NlcHRzQmFuayhiYW5rKQotICAgICAgICAg
ICAgICAgICAgICAgICAgJiYgQWRhcHRlcjo6YWNjZXB0c1JvbGUocm9sZSkpCi0gICAgICAgICAg
ICAgICAgICAgICAgICBmdW5jKEFkYXB0ZXI6OnZhbHVlVG9JbmRleCh0aGluZykpOwotICAgICAg
ICAgICAgICAgIH0pOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBpZiAoSW5zdCogbmV4
dEluc3QgPSBibG9jay0+Z2V0KGluc3RCb3VuZGFyeUluZGV4KSkgewotICAgICAgICAgICAgbmV4
dEluc3QtPmZvckVhY2g8dHlwZW5hbWUgQWRhcHRlcjo6VGhpbmc+KAotICAgICAgICAgICAgICAg
IFsmXSAodHlwZW5hbWUgQWRhcHRlcjo6VGhpbmcmIHRoaW5nLCBBcmc6OlJvbGUgcm9sZSwgQmFu
ayBiYW5rLCBXaWR0aCkgewotICAgICAgICAgICAgICAgICAgICBpZiAoQXJnOjppc0Vhcmx5RGVm
KHJvbGUpCi0gICAgICAgICAgICAgICAgICAgICAgICAmJiBBZGFwdGVyOjphY2NlcHRzQmFuayhi
YW5rKQotICAgICAgICAgICAgICAgICAgICAgICAgJiYgQWRhcHRlcjo6YWNjZXB0c1JvbGUocm9s
ZSkpCi0gICAgICAgICAgICAgICAgICAgICAgICBmdW5jKEFkYXB0ZXI6OnZhbHVlVG9JbmRleCh0
aGluZykpOwotICAgICAgICAgICAgICAgIH0pOwotICAgICAgICB9CisgICAgICAgIGZvciAodW5z
aWduZWQgaW5kZXggOiBjb25zdHJhaW50cy5hdChibG9jaywgaW5zdEJvdW5kYXJ5SW5kZXgpLmRl
ZikKKyAgICAgICAgICAgIGZ1bmMoaW5kZXgpOwogICAgIH0KIAogICAgIENvZGUmIGNvZGU7Cisg
ICAgTGl2ZW5lc3NDb25zdHJhaW50czxBZGFwdGVyPiBjb25zdHJhaW50czsKIH07CiAKIHRlbXBs
YXRlPEJhbmsgYWRhcHRlckJhbmssIEFyZzo6VGVtcGVyYXR1cmUgbWluaW11bVRlbXBlcmF0dXJl
ID0gQXJnOjpDb2xkPgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJMaXZl
bmVzc0NvbnN0cmFpbnRzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L2Fpci9BaXJMaXZlbmVzc0NvbnN0cmFpbnRzLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJMaXZlbmVzc0NvbnN0cmFpbnRzLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTAsMCArMSw5NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEIzX0pJVCkKKworI2luY2x1ZGUg
IkFpckJhc2ljQmxvY2suaCIKKyNpbmNsdWRlICJBaXJDb2RlLmgiCisjaW5jbHVkZSAiQWlySW5z
dElubGluZXMuaCIKKyNpbmNsdWRlIDx3dGYvSW5kZXhNYXAuaD4KKworbmFtZXNwYWNlIEpTQyB7
IG5hbWVzcGFjZSBCMyB7IG5hbWVzcGFjZSBBaXIgeworCit0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFw
dGVyPgorY2xhc3MgTGl2ZW5lc3NDb25zdHJhaW50cyB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBW
ZWN0b3I8dW5zaWduZWQsIDQ+IEFjdGlvbnNMaXN0OworICAgIAorICAgIHN0cnVjdCBBY3Rpb25z
IHsKKyAgICAgICAgQWN0aW9ucygpIHsgfQorICAgICAgICAKKyAgICAgICAgQWN0aW9uc0xpc3Qg
dXNlOworICAgICAgICBBY3Rpb25zTGlzdCBkZWY7CisgICAgfTsKKyAgICAKKyAgICB0eXBlZGVm
IFZlY3RvcjxBY3Rpb25zLCAwLCBVbnNhZmVWZWN0b3JPdmVyZmxvdz4gQWN0aW9uc0ZvckJvdW5k
YXJ5OworICAgIAorICAgIExpdmVuZXNzQ29uc3RyYWludHMoQ29kZSYgY29kZSkKKyAgICAgICAg
OiBtX2NvZGUoY29kZSkKKyAgICAgICAgLCBtX2FjdGlvbnMoY29kZS5zaXplKCkpCisgICAgewor
ICAgICAgICBmb3IgKEJhc2ljQmxvY2sqIGJsb2NrIDogbV9jb2RlKSB7CisgICAgICAgICAgICBB
Y3Rpb25zRm9yQm91bmRhcnkmIGFjdGlvbnNGb3JCb3VuZGFyeSA9IG1fYWN0aW9uc1tibG9ja107
CisgICAgICAgICAgICBhY3Rpb25zRm9yQm91bmRhcnkucmVzaXplKGJsb2NrLT5zaXplKCkgKyAx
KTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgZm9yIChzaXplX3QgaW5zdEluZGV4ID0gYmxv
Y2stPnNpemUoKTsgaW5zdEluZGV4LS07KSB7CisgICAgICAgICAgICAgICAgSW5zdCYgaW5zdCA9
IGJsb2NrLT5hdChpbnN0SW5kZXgpOworICAgICAgICAgICAgICAgIGluc3QuZm9yRWFjaDx0eXBl
bmFtZSBBZGFwdGVyOjpUaGluZz4oCisgICAgICAgICAgICAgICAgICAgIFsmXSAodHlwZW5hbWUg
QWRhcHRlcjo6VGhpbmcmIHRoaW5nLCBBcmc6OlJvbGUgcm9sZSwgQmFuayBiYW5rLCBXaWR0aCkg
eworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFBZGFwdGVyOjphY2NlcHRzQmFuayhiYW5r
KSB8fCAhQWRhcHRlcjo6YWNjZXB0c1JvbGUocm9sZSkpCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAg
ICAgICAgICB1bnNpZ25lZCBpbmRleCA9IEFkYXB0ZXI6OnZhbHVlVG9JbmRleCh0aGluZyk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChBcmc6
OmlzRWFybHlVc2Uocm9sZSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uc0Zv
ckJvdW5kYXJ5W2luc3RJbmRleF0udXNlLmFwcGVuZElmTm90Q29udGFpbnMoaW5kZXgpOworICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKEFyZzo6aXNFYXJseURlZihyb2xlKSkKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBhY3Rpb25zRm9yQm91bmRhcnlbaW5zdEluZGV4XS5kZWYuYXBw
ZW5kSWZOb3RDb250YWlucyhpbmRleCk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoQXJn
Ojppc0xhdGVVc2Uocm9sZSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uc0Zv
ckJvdW5kYXJ5W2luc3RJbmRleCArIDFdLnVzZS5hcHBlbmRJZk5vdENvbnRhaW5zKGluZGV4KTsK
KyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChBcmc6OmlzTGF0ZURlZihyb2xlKSkKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb25zRm9yQm91bmRhcnlbaW5zdEluZGV4ICsgMV0u
ZGVmLmFwcGVuZElmTm90Q29udGFpbnMoaW5kZXgpOworICAgICAgICAgICAgICAgICAgICB9KTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICBBY3Rpb25zJiBhdChC
YXNpY0Jsb2NrKiBibG9jaywgdW5zaWduZWQgaW5zdEJvdW5kYXJ5SW5kZXgpCisgICAgeworICAg
ICAgICByZXR1cm4gbV9hY3Rpb25zW2Jsb2NrXVtpbnN0Qm91bmRhcnlJbmRleF07CisgICAgfQor
ICAgIAorcHJpdmF0ZToKKyAgICBDb2RlJiBtX2NvZGU7CisgICAgSW5kZXhNYXA8QmFzaWNCbG9j
ayosIEFjdGlvbnNGb3JCb3VuZGFyeT4gbV9hY3Rpb25zOworfTsKKworfSB9IH0gLy8gbmFtZXNw
YWNlIEpTQzo6QjM6OkFpcgorCisjZW5kaWYgLy8gRU5BQkxFKEIzX0pJVCkKKwpJbmRleDogU291
cmNlL1dURi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDIxNDgzNikKKysrIFNvdXJjZS9XVEYvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTMgQEAKKzIwMTctMDQtMDMgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNv
bT4KKworICAgICAgICBBaXIgbGl2ZW5lc3Mgc2hvdWxkIGJ1aWxkIGNvbnN0cmFpbnRzIGFuZCBz
b2x2ZSB0aGVtIHJhdGhlciB0aGFuIHJlcGVhdGVkbHkgcGFyc2luZyBJUgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcwNDIxCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3dGYvVmVjdG9yLmg6CisgICAg
ICAgIChXVEY6Om1pbkNhcGFjaXR5Pjo6YXBwZW5kSWZOb3RDb250YWlucyk6IEJlY2F1c2Ugc29t
ZXRpbWVzIFZlY3Rvcjw+IGlzIHRoZSBiZXN0IGtpbmQgb2Ygc2V0LgorCiAyMDE3LTA0LTAzICBG
aWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAKICAgICAgICAgV1RGOjpMaXZlbmVzcyBz
aG91bGQgaGF2ZSBhbiBBUEkgdGhhdCBmb2N1c2VzIG9uIGFjdGlvbnMgYXQgaW5zdHJ1Y3Rpb24g
Ym91bmRhcmllcwpJbmRleDogU291cmNlL1dURi93dGYvVmVjdG9yLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dURi93dGYvVmVjdG9yLmgJKHJldmlzaW9uIDIxNDgzNikKKysrIFNvdXJjZS9XVEYv
d3RmL1ZlY3Rvci5oCSh3b3JraW5nIGNvcHkpCkBAIC03MDYsNiArNzA2LDggQEAgcHVibGljOgog
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IGJvb2wgY29udGFpbnMoY29uc3QgVSYpIGNvbnN0Owog
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IHNpemVfdCBmaW5kKGNvbnN0IFUmKSBjb25zdDsKICAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBzaXplX3QgcmV2ZXJzZUZpbmQoY29uc3QgVSYpIGNvbnN0
OworICAgIAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IGJvb2wgYXBwZW5kSWZOb3RDb250YWlu
cyhjb25zdCBVJik7CiAKICAgICB2b2lkIHNocmluayhzaXplX3Qgc2l6ZSk7CiAgICAgdm9pZCBn
cm93KHNpemVfdCBzaXplKTsKQEAgLTkyNiw2ICs5MjgsMTYgQEAgc2l6ZV90IFZlY3RvcjxULCBp
bmxpbmVDYXBhY2l0eSwgT3ZlcmZsbwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3Qg
aW5saW5lQ2FwYWNpdHksIHR5cGVuYW1lIE92ZXJmbG93SGFuZGxlciwgc2l6ZV90IG1pbkNhcGFj
aXR5PgordGVtcGxhdGU8dHlwZW5hbWUgVT4KK2Jvb2wgVmVjdG9yPFQsIGlubGluZUNhcGFjaXR5
LCBPdmVyZmxvd0hhbmRsZXIsIG1pbkNhcGFjaXR5Pjo6YXBwZW5kSWZOb3RDb250YWlucyhjb25z
dCBVJiB2YWx1ZSkKK3sKKyAgICBpZiAoY29udGFpbnModmFsdWUpKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgYXBwZW5kKHZhbHVlKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordGVtcGxh
dGU8dHlwZW5hbWUgVCwgc2l6ZV90IGlubGluZUNhcGFjaXR5LCB0eXBlbmFtZSBPdmVyZmxvd0hh
bmRsZXIsIHNpemVfdCBtaW5DYXBhY2l0eT4KIHZvaWQgVmVjdG9yPFQsIGlubGluZUNhcGFjaXR5
LCBPdmVyZmxvd0hhbmRsZXIsIG1pbkNhcGFjaXR5Pjo6ZmlsbChjb25zdCBUJiB2YWwsIHNpemVf
dCBuZXdTaXplKQogewogICAgIGlmIChzaXplKCkgPiBuZXdTaXplKQo=
</data>
<flag name="review"
          id="327495"
          type_id="1"
          status="+"
          setter="saam"
    />
          </attachment>
      

    </bug>

</bugzilla>