<?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>133964</bug_id>
          
          <creation_ts>2014-06-16 19:43:57 -0700</creation_ts>
          <short_desc>[ftlopt] DFG put_by_id should inline accesses with a slightly polymorphic base</short_desc>
          <delta_ts>2014-06-17 18:17:54 -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>133229</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>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>1016036</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-06-16 19:43:57 -0700</bug_when>
    <thetext>Patch forthcoming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1016037</commentid>
    <comment_count>1</comment_count>
      <attachid>233207</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-06-16 19:44:55 -0700</bug_when>
    <thetext>Created attachment 233207
work in progress</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1016074</commentid>
    <comment_count>2</comment_count>
      <attachid>233219</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-06-16 22:58:23 -0700</bug_when>
    <thetext>Created attachment 233219
passes tests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1016296</commentid>
    <comment_count>3</comment_count>
      <attachid>233266</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-06-17 16:14:18 -0700</bug_when>
    <thetext>Created attachment 233266
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1016305</commentid>
    <comment_count>4</comment_count>
      <attachid>233266</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2014-06-17 16:35:06 -0700</bug_when>
    <thetext>Comment on attachment 233266
the patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1016339</commentid>
    <comment_count>5</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-06-17 18:17:54 -0700</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/170090</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>233207</attachid>
            <date>2014-06-16 19:44:55 -0700</date>
            <delta_ts>2014-06-16 22:58:23 -0700</delta_ts>
            <desc>work in progress</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>15665</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkU3RhdHVzLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFN0YXR1
cy5jcHAJKHJldmlzaW9uIDE3MDAzOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9QdXRCeUlkU3RhdHVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDAsNyArNDAsMTEgQEAgbmFt
ZXNwYWNlIEpTQyB7CiBib29sIFB1dEJ5SWRTdGF0dXM6OmFwcGVuZFZhcmlhbnQoY29uc3QgUHV0
QnlJZFZhcmlhbnQmIHZhcmlhbnQpCiB7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1f
dmFyaWFudHMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgaWYgKG1fdmFyaWFudHNbaV0ub2xkU3Ry
dWN0dXJlKCkgPT0gdmFyaWFudC5vbGRTdHJ1Y3R1cmUoKSkKKyAgICAgICAgaWYgKG1fdmFyaWFu
dHNbaV0uYXR0ZW1wdFRvTWVyZ2UodmFyaWFudCkpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICB9CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fdmFyaWFudHMuc2l6ZSgpOyAr
K2kpIHsKKyAgICAgICAgaWYgKG1fdmFyaWFudHNbaV0ub2xkU3RydWN0dXJlKCkub3ZlcmxhcHMo
dmFyaWFudC5vbGRTdHJ1Y3R1cmUoKSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
fQogICAgIG1fdmFyaWFudHMuYXBwZW5kKHZhcmlhbnQpOwpAQCAtMTk0LDExICsxOTgsMTUgQEAg
UHV0QnlJZFN0YXR1cyBQdXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yUwogICAgICAgICAgICAgICAg
ICAgICBhY2Nlc3MubmV3U3RydWN0dXJlKCktPmdldENvbmN1cnJlbnRseSgqcHJvZmlsZWRCbG9j
ay0+dm0oKSwgdWlkKTsKICAgICAgICAgICAgICAgICBpZiAoIWlzVmFsaWRPZmZzZXQob2Zmc2V0
KSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFB1dEJ5SWRTdGF0dXMoVGFrZXNTbG93UGF0
aCk7CisgICAgICAgICAgICAgICAgUmVmUHRyPEludGVuZGVkU3RydWN0dXJlQ2hhaW4+IGNoYWlu
OworICAgICAgICAgICAgICAgIGlmIChhY2Nlc3MuY2hhaW4oKSkgeworICAgICAgICAgICAgICAg
ICAgICBjaGFpbiA9IGFkb3B0UmVmKG5ldyBJbnRlbmRlZFN0cnVjdHVyZUNoYWluKAorICAgICAg
ICAgICAgICAgICAgICAgICAgcHJvZmlsZWRCbG9jaywgYWNjZXNzLm9sZFN0cnVjdHVyZSgpLCBh
Y2Nlc3MuY2hhaW4oKSkpOworICAgICAgICAgICAgICAgICAgICBpZiAoIWNoYWluLT5pc1N0aWxs
VmFsaWQoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgICAgICBib29sIG9rID0gcmVzdWx0LmFwcGVuZFZhcmlhbnQoUHV0
QnlJZFZhcmlhbnQ6OnRyYW5zaXRpb24oCi0gICAgICAgICAgICAgICAgICAgIGFjY2Vzcy5vbGRT
dHJ1Y3R1cmUoKSwgYWNjZXNzLm5ld1N0cnVjdHVyZSgpLAotICAgICAgICAgICAgICAgICAgICBh
Y2Nlc3MuY2hhaW4oKSA/IGFkb3B0UmVmKG5ldyBJbnRlbmRlZFN0cnVjdHVyZUNoYWluKAotICAg
ICAgICAgICAgICAgICAgICAgICAgcHJvZmlsZWRCbG9jaywgYWNjZXNzLm9sZFN0cnVjdHVyZSgp
LCBhY2Nlc3MuY2hhaW4oKSkpIDogMCwKLSAgICAgICAgICAgICAgICAgICAgb2Zmc2V0KSk7Cisg
ICAgICAgICAgICAgICAgICAgIGFjY2Vzcy5vbGRTdHJ1Y3R1cmUoKSwgYWNjZXNzLm5ld1N0cnVj
dHVyZSgpLCBjaGFpbi5nZXQoKSwgb2Zmc2V0KSk7CiAgICAgICAgICAgICAgICAgaWYgKCFvaykK
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFB1dEJ5SWRTdGF0dXMoVGFrZXNTbG93UGF0aCk7
CiAgICAgICAgICAgICAgICAgYnJlYWs7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvUHV0QnlJZFZhcmlhbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9QdXRCeUlkVmFyaWFudC5jcHAJKHJldmlzaW9uIDE3MDAzOCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkVmFyaWFudC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTMwLDYgKzMwLDk5IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCitTdHJ1Y3R1cmUq
IFB1dEJ5SWRWYXJpYW50OjpvbGRTdHJ1Y3R1cmVGb3JUcmFuc2l0aW9uKCkgY29uc3QKK3sKKyAg
ICBBU1NFUlQoa2luZCgpID09IFRyYW5zaXRpb24pOworICAgIEFTU0VSVChtX29sZFN0cnVjdHVy
ZS5zaXplKCkgPD0gMik7CisgICAgZm9yICh1bnNpZ25lZCBpID0gbV9vbGRTdHJ1Y3R1cmUuc2l6
ZSgpOyBpLS07KSB7CisgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gbV9vbGRTdHJ1Y3R1
cmVbaV07CisgICAgICAgIGlmIChzdHJ1Y3R1cmUgIT0gbV9uZXdTdHJ1Y3R1cmUpCisgICAgICAg
ICAgICByZXR1cm4gc3RydWN0dXJlOworICAgIH0KKyAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVB
Q0hFRCgpOworfQorCitib29sIFB1dEJ5SWRWYXJpYW50Ojp3cml0ZXNTdHJ1Y3R1cmVzKCkgY29u
c3QKK3sKKyAgICByZXR1cm4ga2luZCgpID09IFRyYW5zaXRpb247Cit9CisKK2Jvb2wgUHV0QnlJ
ZFZhcmlhbnQ6OnJlYWxsb2NhdGVzU3RvcmFnZSgpIGNvbnN0Cit7CisgICAgaWYgKGtpbmQoKSAh
PSBUcmFuc2l0aW9uKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgaWYgKG9sZFN0
cnVjdHVyZSgpLT5vdXRPZkxpbmVDYXBhY2l0eSgpID09IG5ld1N0cnVjdHVyZSgpLT5vdXRPZkxp
bmVDYXBhY2l0eSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgcmV0dXJuIHRy
dWU7Cit9CisKK2Jvb2wgUHV0QnlJZFZhcmlhbnQ6OmF0dGVtcHRUb01lcmdlKGNvbnN0IFB1dEJ5
SWRWYXJpYW50JiBvdGhlcikKK3sKKyAgICBpZiAobV9vZmZzZXQgIT0gb3RoZXIubV9vZmZzZXQp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAKKyAgICBzd2l0Y2ggKG1fa2luZCkgeworICAg
IGNhc2UgUmVwbGFjZToKKyAgICAgICAgc3dpdGNoIChvdGhlci5tX2tpbmQpIHsKKyAgICAgICAg
Y2FzZSBSZXBsYWNlOiB7CisgICAgICAgICAgICBBU1NFUlQobV9jb25zdGFudENoZWNrcy5pc0Vt
cHR5KCkpOworICAgICAgICAgICAgQVNTRVJUKG90aGVyLm1fY29uc3RhbnRDaGVja3MuaXNFbXB0
eSgpKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgbV9vbGRTdHJ1Y3R1cmUubWVyZ2Uob3Ro
ZXIubV9vbGRTdHJ1Y3R1cmUpOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0K
KyAgICAgICAgICAgIAorICAgICAgICBjYXNlIFRyYW5zaXRpb246IHsKKyAgICAgICAgICAgIFB1
dEJ5SWRWYXJpYW50IG5ld1ZhcmlhbnQgPSBvdGhlcjsKKyAgICAgICAgICAgIGlmIChuZXdWYXJp
YW50LmF0dGVtcHRUb01lcmdlVHJhbnNpdGlvbldpdGhSZXBsYWNlKCp0aGlzKSkgeworICAgICAg
ICAgICAgICAgICp0aGlzID0gbmV3VmFyaWFudDsKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQor
ICAgICAgICAgICAgCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgICAgIH0KKyAgICAgICAgCisgICAgY2FzZSBUcmFuc2l0aW9uOgorICAgICAgICBzd2l0
Y2ggKG90aGVyLm1fa2luZCkgeworICAgICAgICBjYXNlIFJlcGxhY2U6CisgICAgICAgICAgICBy
ZXR1cm4gYXR0ZW1wdFRvTWVyZ2VUcmFuc2l0aW9uV2l0aFJlcGxhY2Uob3RoZXIpOworICAgICAg
ICAgICAgCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
ICAgIH0KKyAgICAgICAgCisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IH0KK30KKworYm9vbCBQdXRCeUlkVmFyaWFudDo6YXR0ZW1wdFRvTWVyZ2VUcmFuc2l0aW9uV2l0
aFJlcGxhY2UoY29uc3QgUHV0QnlJZFZhcmlhbnQmIHJlcGxhY2UpCit7CisgICAgQVNTRVJUKG1f
a2luZCA9PSBUcmFuc2l0aW9uKTsKKyAgICBBU1NFUlQocmVwbGFjZS5tX2tpbmQgPT0gUmVwbGFj
ZSk7CisgICAgQVNTRVJUKG1fb2Zmc2V0ID09IHJlcGxhY2UubV9vZmZzZXQpOworICAgIEFTU0VS
VCghcmVwbGFjZS53cml0ZXNTdHJ1Y3R1cmVzKCkpOworICAgIEFTU0VSVCghcmVwbGFjZS5yZWFs
bG9jYXRlc1N0b3JhZ2UoKSk7CisgICAgCisgICAgLy8gVGhpcyBzb3J0IG9mIG1lcmdpbmcgb25s
eSB3b3JrcyB3aGVuIHdlIGhhdmUgb25lIHBhdGggYWxvbmcgd2hpY2ggd2UgYWRkIGEgbmV3IGZp
ZWxkIHdoaWNoCisgICAgLy8gdHJhbnNpdGlvbnMgdG8gc3RydWN0dXJlIFMgd2hpbGUgdGhlIG90
aGVyIHBhdGggd2FzIGFscmVhZHkgb24gc3RydWN0dXJlIFMuIFRoaXMgZG9lc24ndAorICAgIC8v
IHdvcmsgaWYgd2UgbmVlZCB0byByZWFsbG9jYXRlIGFueXRoaW5nIG9yIGlmIHRoZSByZXBsYWNl
IHBhdGggaXMgcG9seW1vcnBoaWMuCisgICAgCisgICAgaWYgKHJlYWxsb2NhdGVzU3RvcmFnZSgp
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgaWYgKHJlcGxhY2UubV9vbGRTdHJ1
Y3R1cmUub25seVN0cnVjdHVyZSgpICE9IG1fbmV3U3RydWN0dXJlKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgCisgICAgbV9vbGRTdHJ1Y3R1cmUubWVyZ2UobV9uZXdTdHJ1Y3R1cmUpOwor
ICAgIHJldHVybiB0cnVlOworfQorCiB2b2lkIFB1dEJ5SWRWYXJpYW50OjpkdW1wKFByaW50U3Ry
ZWFtJiBvdXQpIGNvbnN0CiB7CiAgICAgZHVtcEluQ29udGV4dChvdXQsIDApOwpAQCAtNDQsMTIg
KzEzNywxMiBAQCB2b2lkIFB1dEJ5SWRWYXJpYW50OjpkdW1wSW5Db250ZXh0KFByaW50CiAgICAg
ICAgIAogICAgIGNhc2UgUmVwbGFjZToKICAgICAgICAgb3V0LnByaW50KAotICAgICAgICAgICAg
IjxSZXBsYWNlOiAiLCBwb2ludGVyRHVtcEluQ29udGV4dChzdHJ1Y3R1cmUoKSwgY29udGV4dCks
ICIsICIsIG9mZnNldCgpLCAiPiIpOworICAgICAgICAgICAgIjxSZXBsYWNlOiAiLCBpbkNvbnRl
eHQoc3RydWN0dXJlKCksIGNvbnRleHQpLCAiLCAiLCBvZmZzZXQoKSwgIj4iKTsKICAgICAgICAg
cmV0dXJuOwogICAgICAgICAKICAgICBjYXNlIFRyYW5zaXRpb246CiAgICAgICAgIG91dC5wcmlu
dCgKLSAgICAgICAgICAgICI8VHJhbnNpdGlvbjogIiwgcG9pbnRlckR1bXBJbkNvbnRleHQob2xk
U3RydWN0dXJlKCksIGNvbnRleHQpLCAiIC0+ICIsCisgICAgICAgICAgICAiPFRyYW5zaXRpb246
ICIsIGluQ29udGV4dChvbGRTdHJ1Y3R1cmUoKSwgY29udGV4dCksICIgLT4gIiwKICAgICAgICAg
ICAgIHBvaW50ZXJEdW1wSW5Db250ZXh0KG5ld1N0cnVjdHVyZSgpLCBjb250ZXh0KSwgIiwgWyIs
CiAgICAgICAgICAgICBsaXN0RHVtcEluQ29udGV4dChjb25zdGFudENoZWNrcygpLCBjb250ZXh0
KSwgIl0sICIsIG9mZnNldCgpLCAiPiIpOwogICAgICAgICByZXR1cm47CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFZhcmlhbnQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFZhcmlhbnQuaAkocmV2aXNpb24g
MTcwMDM4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRWYXJpYW50
LmgJKHdvcmtpbmcgY29weSkKQEAgLTQxLDEzICs0MSwxMiBAQCBwdWJsaWM6CiAgICAgCiAgICAg
UHV0QnlJZFZhcmlhbnQoKQogICAgICAgICA6IG1fa2luZChOb3RTZXQpCi0gICAgICAgICwgbV9v
bGRTdHJ1Y3R1cmUoMCkKLSAgICAgICAgLCBtX25ld1N0cnVjdHVyZSgwKQorICAgICAgICAsIG1f
bmV3U3RydWN0dXJlKG51bGxwdHIpCiAgICAgICAgICwgbV9vZmZzZXQoaW52YWxpZE9mZnNldCkK
ICAgICB7CiAgICAgfQogICAgIAotICAgIHN0YXRpYyBQdXRCeUlkVmFyaWFudCByZXBsYWNlKFN0
cnVjdHVyZSogc3RydWN0dXJlLCBQcm9wZXJ0eU9mZnNldCBvZmZzZXQpCisgICAgc3RhdGljIFB1
dEJ5SWRWYXJpYW50IHJlcGxhY2UoY29uc3QgU3RydWN0dXJlU2V0JiBzdHJ1Y3R1cmUsIFByb3Bl
cnR5T2Zmc2V0IG9mZnNldCkKICAgICB7CiAgICAgICAgIFB1dEJ5SWRWYXJpYW50IHJlc3VsdDsK
ICAgICAgICAgcmVzdWx0Lm1fa2luZCA9IFJlcGxhY2U7CkBAIC01Nyw3ICs1Niw3IEBAIHB1Ymxp
YzoKICAgICB9CiAgICAgCiAgICAgc3RhdGljIFB1dEJ5SWRWYXJpYW50IHRyYW5zaXRpb24oCi0g
ICAgICAgIFN0cnVjdHVyZSogb2xkU3RydWN0dXJlLCBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSwK
KyAgICAgICAgY29uc3QgU3RydWN0dXJlU2V0JiBvbGRTdHJ1Y3R1cmUsIFN0cnVjdHVyZSogbmV3
U3RydWN0dXJlLAogICAgICAgICBQYXNzUmVmUHRyPEludGVuZGVkU3RydWN0dXJlQ2hhaW4+IHN0
cnVjdHVyZUNoYWluLCBQcm9wZXJ0eU9mZnNldCBvZmZzZXQpCiAgICAgewogICAgICAgICBQdXRC
eUlkVmFyaWFudCByZXN1bHQ7CkBAIC03NSwyMyArNzQsMzIgQEAgcHVibGljOgogICAgIGJvb2wg
aXNTZXQoKSBjb25zdCB7IHJldHVybiBraW5kKCkgIT0gTm90U2V0OyB9CiAgICAgYm9vbCBvcGVy
YXRvciEoKSBjb25zdCB7IHJldHVybiAhaXNTZXQoKTsgfQogICAgIAotICAgIFN0cnVjdHVyZSog
c3RydWN0dXJlKCkgY29uc3QKKyAgICBjb25zdCBTdHJ1Y3R1cmVTZXQmIHN0cnVjdHVyZSgpIGNv
bnN0CiAgICAgewogICAgICAgICBBU1NFUlQoa2luZCgpID09IFJlcGxhY2UpOwogICAgICAgICBy
ZXR1cm4gbV9vbGRTdHJ1Y3R1cmU7CiAgICAgfQogICAgIAotICAgIFN0cnVjdHVyZSogb2xkU3Ry
dWN0dXJlKCkgY29uc3QKKyAgICBjb25zdCBTdHJ1Y3R1cmVTZXQmIG9sZFN0cnVjdHVyZSgpIGNv
bnN0CiAgICAgewogICAgICAgICBBU1NFUlQoa2luZCgpID09IFRyYW5zaXRpb24gfHwga2luZCgp
ID09IFJlcGxhY2UpOwogICAgICAgICByZXR1cm4gbV9vbGRTdHJ1Y3R1cmU7CiAgICAgfQogICAg
IAorICAgIFN0cnVjdHVyZSogb2xkU3RydWN0dXJlRm9yVHJhbnNpdGlvbigpIGNvbnN0CisgICAg
eworICAgICAgICBBU1NFUlQoa2luZCgpID09IFRyYW5zaXRpb24pOworICAgICAgICAKKyAgICB9
CisgICAgCiAgICAgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUoKSBjb25zdAogICAgIHsKICAgICAg
ICAgQVNTRVJUKGtpbmQoKSA9PSBUcmFuc2l0aW9uKTsKICAgICAgICAgcmV0dXJuIG1fbmV3U3Ry
dWN0dXJlOwogICAgIH0KKworICAgIGJvb2wgd3JpdGVzU3RydWN0dXJlcygpIGNvbnN0OworICAg
IGJvb2wgcmVhbGxvY2F0ZXNTdG9yYWdlKCkgY29uc3Q7CiAgICAgCiAgICAgY29uc3QgQ29uc3Rh
bnRTdHJ1Y3R1cmVDaGVja1ZlY3RvciYgY29uc3RhbnRDaGVja3MoKSBjb25zdAogICAgIHsKQEAg
LTEwNSwxMiArMTEzLDE2IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG1fb2Zmc2V0OwogICAg
IH0KICAgICAKKyAgICBib29sIGF0dGVtcHRUb01lcmdlKGNvbnN0IFB1dEJ5SWRWYXJpYW50JiBv
dGhlcik7CisgICAgCiAgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3Q7CiAgICAgdm9p
ZCBkdW1wSW5Db250ZXh0KFByaW50U3RyZWFtJiwgRHVtcENvbnRleHQqKSBjb25zdDsKIAogcHJp
dmF0ZToKKyAgICBib29sIGF0dGVtcHRUb01lcmdlVHJhbnNpdGlvbldpdGhSZXBsYWNlKGNvbnN0
IFB1dEJ5SWRWYXJpYW50JiByZXBsYWNlKTsKKyAgICAKICAgICBLaW5kIG1fa2luZDsKLSAgICBT
dHJ1Y3R1cmUqIG1fb2xkU3RydWN0dXJlOworICAgIFN0cnVjdHVyZVNldCBtX29sZFN0cnVjdHVy
ZTsKICAgICBTdHJ1Y3R1cmUqIG1fbmV3U3RydWN0dXJlOwogICAgIENvbnN0YW50U3RydWN0dXJl
Q2hlY2tWZWN0b3IgbV9jb25zdGFudENoZWNrczsKICAgICBQcm9wZXJ0eU9mZnNldCBtX29mZnNl
dDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJz
ZXIuY3BwCShyZXZpc2lvbiAxNzAwMzgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0J5dGVDb2RlUGFyc2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTg2OCwxNCArMTg2OCwxMyBA
QCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVQdXRCeUlkKAogICAgIGFkZFRvR3JhcGgoQ2hl
Y2tTdHJ1Y3R1cmUsIE9wSW5mbyhtX2dyYXBoLmFkZFN0cnVjdHVyZVNldCh2YXJpYW50Lm9sZFN0
cnVjdHVyZSgpKSksIGJhc2UpOwogICAgIGVtaXRDaGVja3ModmFyaWFudC5jb25zdGFudENoZWNr
cygpKTsKIAotICAgIEFTU0VSVCh2YXJpYW50Lm9sZFN0cnVjdHVyZSgpLT50cmFuc2l0aW9uV2F0
Y2hwb2ludFNldEhhc0JlZW5JbnZhbGlkYXRlZCgpKTsKKyAgICBBU1NFUlQodmFyaWFudC5vbGRT
dHJ1Y3R1cmVGb3JUcmFuc2l0aW9uKCktPnRyYW5zaXRpb25XYXRjaHBvaW50U2V0SGFzQmVlbklu
dmFsaWRhdGVkKCkpOwogICAgIAogICAgIE5vZGUqIHByb3BlcnR5U3RvcmFnZTsKICAgICBUcmFu
c2l0aW9uKiB0cmFuc2l0aW9uID0gbV9ncmFwaC5tX3RyYW5zaXRpb25zLmFkZCgKLSAgICAgICAg
dmFyaWFudC5vbGRTdHJ1Y3R1cmUoKSwgdmFyaWFudC5uZXdTdHJ1Y3R1cmUoKSk7CisgICAgICAg
IHZhcmlhbnQub2xkU3RydWN0dXJlRm9yVHJhbnNpdGlvbigpLCB2YXJpYW50Lm5ld1N0cnVjdHVy
ZSgpKTsKIAotICAgIGlmICh2YXJpYW50Lm9sZFN0cnVjdHVyZSgpLT5vdXRPZkxpbmVDYXBhY2l0
eSgpCi0gICAgICAgICE9IHZhcmlhbnQubmV3U3RydWN0dXJlKCktPm91dE9mTGluZUNhcGFjaXR5
KCkpIHsKKyAgICBpZiAodmFyaWFudC5yZWFsbG9jYXRlc1N0b3JhZ2UoKSkgewogCiAgICAgICAg
IC8vIElmIHdlJ3JlIGdyb3dpbmcgdGhlIHByb3BlcnR5IHN0b3JhZ2UgdGhlbiBpdCBtdXN0IGJl
IGJlY2F1c2Ugd2UncmUKICAgICAgICAgLy8gc3RvcmluZyBpbnRvIHRoZSBvdXQtb2YtbGluZSBz
dG9yYWdlLgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRp
bmdQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdD
b25zdGFudEZvbGRpbmdQaGFzZS5jcHAJKHJldmlzaW9uIDE3MDAzOCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xNzEsMTAgKzE3MSwxMCBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIAogICAgICAg
ICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IGRhdGEudmFyaWFudHMuc2l6ZSgpOyBpLS07KSB7
CiAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFB1dEJ5SWRWYXJpYW50JiB2YXJpYW50ID0gZGF0
YS52YXJpYW50c1tpXTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHZhcmlhbnQub2xkU3RydWN0
dXJlKCkgIT0gc3RydWN0dXJlKQorICAgICAgICAgICAgICAgICAgICBpZiAoIXZhcmlhbnQub2xk
U3RydWN0dXJlKCkuY29udGFpbnMoc3RydWN0dXJlKSkKICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnRpbnVlOwogICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgZW1p
dFB1dEJ5T2Zmc2V0KGluZGV4SW5CbG9jaywgbm9kZSwgc3RydWN0dXJlLCB2YXJpYW50LCBkYXRh
LmlkZW50aWZpZXJOdW1iZXIpOworICAgICAgICAgICAgICAgICAgICBlbWl0UHV0QnlPZmZzZXQo
aW5kZXhJbkJsb2NrLCBub2RlLCB2YXJpYW50LCBkYXRhLmlkZW50aWZpZXJOdW1iZXIpOwogICAg
ICAgICAgICAgICAgICAgICBlbGltaW5hdGVkID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgICAgICAgICAgfQpAQCAtMjM0LDcgKzIzNCw3IEBAIHByaXZhdGU6CiAg
ICAgICAgICAgICAgICAgaWYgKHN0YXR1cy5udW1WYXJpYW50cygpICE9IDEpCiAgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIGVtaXRQ
dXRCeU9mZnNldChpbmRleEluQmxvY2ssIG5vZGUsIHN0cnVjdHVyZSwgc3RhdHVzWzBdLCBpZGVu
dGlmaWVyTnVtYmVyKTsKKyAgICAgICAgICAgICAgICBlbWl0UHV0QnlPZmZzZXQoaW5kZXhJbkJs
b2NrLCBub2RlLCBzdGF0dXNbMF0sIGlkZW50aWZpZXJOdW1iZXIpOwogICAgICAgICAgICAgICAg
IGVsaW1pbmF0ZWQgPSB0cnVlOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAg
fQpAQCAtMzY5LDEzICszNjksMTEgQEAgcHJpdmF0ZToKICAgICAgICAgbV9ncmFwaC5tX3N0b3Jh
Z2VBY2Nlc3NEYXRhLmFwcGVuZChzdG9yYWdlQWNjZXNzRGF0YSk7CiAgICAgfQogCi0gICAgdm9p
ZCBlbWl0UHV0QnlPZmZzZXQodW5zaWduZWQgaW5kZXhJbkJsb2NrLCBOb2RlKiBub2RlLCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgUHV0QnlJZFZhcmlhbnQmIHZhcmlhbnQsIHVuc2lnbmVk
IGlkZW50aWZpZXJOdW1iZXIpCisgICAgdm9pZCBlbWl0UHV0QnlPZmZzZXQodW5zaWduZWQgaW5k
ZXhJbkJsb2NrLCBOb2RlKiBub2RlLCBjb25zdCBQdXRCeUlkVmFyaWFudCYgdmFyaWFudCwgdW5z
aWduZWQgaWRlbnRpZmllck51bWJlcikKICAgICB7CiAgICAgICAgIE5vZGVPcmlnaW4gb3JpZ2lu
ID0gbm9kZS0+b3JpZ2luOwogICAgICAgICBFZGdlIGNoaWxkRWRnZSA9IG5vZGUtPmNoaWxkMSgp
OwogICAgICAgICBOb2RlKiBjaGlsZCA9IGNoaWxkRWRnZS5ub2RlKCk7Ci0KLSAgICAgICAgQVNT
RVJUKHZhcmlhbnQub2xkU3RydWN0dXJlKCkgPT0gc3RydWN0dXJlKTsKICAgICAgICAgCiAgICAg
ICAgIGJvb2wgbmVlZHNDZWxsQ2hlY2sgPSBtX3N0YXRlLmZvck5vZGUoY2hpbGQpLm1fdHlwZSAm
IH5TcGVjQ2VsbDsKICAgICAgICAgCkBAIC0zOTMsNyArMzkxLDggQEAgcHJpdmF0ZToKIAogICAg
ICAgICBUcmFuc2l0aW9uKiB0cmFuc2l0aW9uID0gMDsKICAgICAgICAgaWYgKHZhcmlhbnQua2lu
ZCgpID09IFB1dEJ5SWRWYXJpYW50OjpUcmFuc2l0aW9uKSB7Ci0gICAgICAgICAgICB0cmFuc2l0
aW9uID0gbV9ncmFwaC5tX3RyYW5zaXRpb25zLmFkZChzdHJ1Y3R1cmUsIHZhcmlhbnQubmV3U3Ry
dWN0dXJlKCkpOworICAgICAgICAgICAgdHJhbnNpdGlvbiA9IG1fZ3JhcGgubV90cmFuc2l0aW9u
cy5hZGQoCisgICAgICAgICAgICAgICAgdmFyaWFudC5vbGRTdHJ1Y3R1cmVGb3JUcmFuc2l0aW9u
KCksIHZhcmlhbnQubmV3U3RydWN0dXJlKCkpOwogCiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgdmFyaWFudC5jb25zdGFudENoZWNrcygpLnNpemUoKTsgKytpKSB7CiAgICAg
ICAgICAgICAgICAgYWRkU3RydWN0dXJlVHJhbnNpdGlvbkNoZWNrKApAQCAtNDA3LDkgKzQwNiw3
IEBAIHByaXZhdGU6CiAKICAgICAgICAgaWYgKGlzSW5saW5lT2Zmc2V0KHZhcmlhbnQub2Zmc2V0
KCkpKQogICAgICAgICAgICAgcHJvcGVydHlTdG9yYWdlID0gY2hpbGRFZGdlOwotICAgICAgICBl
bHNlIGlmICgKLSAgICAgICAgICAgIHZhcmlhbnQua2luZCgpID09IFB1dEJ5SWRWYXJpYW50OjpS
ZXBsYWNlCi0gICAgICAgICAgICB8fCBzdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCkgPT0g
dmFyaWFudC5uZXdTdHJ1Y3R1cmUoKS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSkgeworICAgICAgICBl
bHNlIGlmICghdmFyaWFudC5yZWFsbG9jYXRlc1N0b3JhZ2UoKSkgewogICAgICAgICAgICAgcHJv
cGVydHlTdG9yYWdlID0gRWRnZShtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAogICAgICAgICAg
ICAgICAgIGluZGV4SW5CbG9jaywgU3BlY05vbmUsIEdldEJ1dHRlcmZseSwgb3JpZ2luLCBjaGls
ZEVkZ2UpKTsKICAgICAgICAgfSBlbHNlIGlmICghc3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0
eSgpKSB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5jcHAJKHJldmlzaW9u
IDE3MDAzOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTM3LDcgKzM3LDcgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcg
ewogYm9vbCBNdWx0aVB1dEJ5T2Zmc2V0RGF0YTo6d3JpdGVzU3RydWN0dXJlcygpIGNvbnN0CiB7
CiAgICAgZm9yICh1bnNpZ25lZCBpID0gdmFyaWFudHMuc2l6ZSgpOyBpLS07KSB7Ci0gICAgICAg
IGlmICh2YXJpYW50c1tpXS5raW5kKCkgPT0gUHV0QnlJZFZhcmlhbnQ6OlRyYW5zaXRpb24pCisg
ICAgICAgIGlmICh2YXJpYW50c1tpXS53cml0ZXNTdHJ1Y3R1cmVzKCkpCiAgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNDYsMTQgKzQ2LDggQEAg
Ym9vbCBNdWx0aVB1dEJ5T2Zmc2V0RGF0YTo6d3JpdGVzU3RydWN0dQogYm9vbCBNdWx0aVB1dEJ5
T2Zmc2V0RGF0YTo6cmVhbGxvY2F0ZXNTdG9yYWdlKCkgY29uc3QKIHsKICAgICBmb3IgKHVuc2ln
bmVkIGkgPSB2YXJpYW50cy5zaXplKCk7IGktLTspIHsKLSAgICAgICAgaWYgKHZhcmlhbnRzW2ld
LmtpbmQoKSAhPSBQdXRCeUlkVmFyaWFudDo6VHJhbnNpdGlvbikKLSAgICAgICAgICAgIGNvbnRp
bnVlOwotICAgICAgICAKLSAgICAgICAgaWYgKHZhcmlhbnRzW2ldLm9sZFN0cnVjdHVyZSgpLT5v
dXRPZkxpbmVDYXBhY2l0eSgpID09Ci0gICAgICAgICAgICB2YXJpYW50c1tpXS5uZXdTdHJ1Y3R1
cmUoKS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAg
ICAKLSAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGlmICh2YXJpYW50c1tpXS5yZWFsbG9j
YXRlc1N0b3JhZ2UoKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgICByZXR1
cm4gZmFsc2U7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZH
VG9MTFZNLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExv
d2VyREZHVG9MTFZNLmNwcAkocmV2aXNpb24gMTcwMDM4KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExMb3dlckRGR1RvTExWTS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyODcsOCAr
MzI4NywxMCBAQCBwcml2YXRlOgogICAgICAgICBWZWN0b3I8U3dpdGNoQ2FzZSwgMj4gY2FzZXM7
CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IGRhdGEudmFyaWFudHMuc2l6ZSgpOyBpLS07KSB7
CiAgICAgICAgICAgICBQdXRCeUlkVmFyaWFudCB2YXJpYW50ID0gZGF0YS52YXJpYW50c1tpXTsK
LSAgICAgICAgICAgIGNhc2VzLmFwcGVuZCgKLSAgICAgICAgICAgICAgICBTd2l0Y2hDYXNlKHdl
YWtTdHJ1Y3R1cmUodmFyaWFudC5vbGRTdHJ1Y3R1cmUoKSksIGJsb2Nrc1tpXSwgV2VpZ2h0KDEp
KSk7CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGogPSB2YXJpYW50Lm9sZFN0cnVjdHVyZSgp
LnNpemUoKTsgai0tOykgeworICAgICAgICAgICAgICAgIGNhc2VzLmFwcGVuZCgKKyAgICAgICAg
ICAgICAgICAgICAgU3dpdGNoQ2FzZSh3ZWFrU3RydWN0dXJlKHZhcmlhbnQub2xkU3RydWN0dXJl
KClbal0pLCBibG9ja3NbaV0sIFdlaWdodCgxKSkpOworICAgICAgICAgICAgfQogICAgICAgICB9
CiAgICAgICAgIG1fb3V0LnN3aXRjaEluc3RydWN0aW9uKAogICAgICAgICAgICAgbV9vdXQubG9h
ZDMyKGJhc2UsIG1faGVhcHMuSlNDZWxsX3N0cnVjdHVyZUlEKSwgY2FzZXMsIGV4aXQsIFdlaWdo
dCgwKSk7CkBAIC0zMzA5LDE0ICszMzExLDE1IEBAIHByaXZhdGU6CiAgICAgICAgICAgICB9IGVs
c2UgewogICAgICAgICAgICAgICAgIG1fZ3JhcGgubV9wbGFuLnRyYW5zaXRpb25zLmFkZExhemls
eSgKICAgICAgICAgICAgICAgICAgICAgY29kZUJsb2NrKCksIG1fbm9kZS0+b3JpZ2luLnNlbWFu
dGljLmNvZGVPcmlnaW5Pd25lcigpLAotICAgICAgICAgICAgICAgICAgICB2YXJpYW50Lm9sZFN0
cnVjdHVyZSgpLCB2YXJpYW50Lm5ld1N0cnVjdHVyZSgpKTsKKyAgICAgICAgICAgICAgICAgICAg
dmFyaWFudC5vbGRTdHJ1Y3R1cmVGb3JUcmFuc2l0aW9uKCksIHZhcmlhbnQubmV3U3RydWN0dXJl
KCkpOwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIHN0b3JhZ2UgPSBzdG9yYWdl
Rm9yVHJhbnNpdGlvbigKLSAgICAgICAgICAgICAgICAgICAgYmFzZSwgdmFyaWFudC5vZmZzZXQo
KSwgdmFyaWFudC5vbGRTdHJ1Y3R1cmUoKSwgdmFyaWFudC5uZXdTdHJ1Y3R1cmUoKSk7CisgICAg
ICAgICAgICAgICAgICAgIGJhc2UsIHZhcmlhbnQub2Zmc2V0KCksCisgICAgICAgICAgICAgICAg
ICAgIHZhcmlhbnQub2xkU3RydWN0dXJlRm9yVHJhbnNpdGlvbigpLCB2YXJpYW50Lm5ld1N0cnVj
dHVyZSgpKTsKIAotICAgICAgICAgICAgICAgIEFTU0VSVCh2YXJpYW50Lm9sZFN0cnVjdHVyZSgp
LT5pbmRleGluZ1R5cGUoKSA9PSB2YXJpYW50Lm5ld1N0cnVjdHVyZSgpLT5pbmRleGluZ1R5cGUo
KSk7Ci0gICAgICAgICAgICAgICAgQVNTRVJUKHZhcmlhbnQub2xkU3RydWN0dXJlKCktPnR5cGVJ
bmZvKCkuaW5saW5lVHlwZUZsYWdzKCkgPT0gdmFyaWFudC5uZXdTdHJ1Y3R1cmUoKS0+dHlwZUlu
Zm8oKS5pbmxpbmVUeXBlRmxhZ3MoKSk7Ci0gICAgICAgICAgICAgICAgQVNTRVJUKHZhcmlhbnQu
b2xkU3RydWN0dXJlKCktPnR5cGVJbmZvKCkudHlwZSgpID09IHZhcmlhbnQubmV3U3RydWN0dXJl
KCktPnR5cGVJbmZvKCkudHlwZSgpKTsKKyAgICAgICAgICAgICAgICBBU1NFUlQodmFyaWFudC5v
bGRTdHJ1Y3R1cmVGb3JUcmFuc2l0aW9uKCktPmluZGV4aW5nVHlwZSgpID09IHZhcmlhbnQubmV3
U3RydWN0dXJlKCktPmluZGV4aW5nVHlwZSgpKTsKKyAgICAgICAgICAgICAgICBBU1NFUlQodmFy
aWFudC5vbGRTdHJ1Y3R1cmVGb3JUcmFuc2l0aW9uKCktPnR5cGVJbmZvKCkuaW5saW5lVHlwZUZs
YWdzKCkgPT0gdmFyaWFudC5uZXdTdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5pbmxpbmVUeXBlRmxh
Z3MoKSk7CisgICAgICAgICAgICAgICAgQVNTRVJUKHZhcmlhbnQub2xkU3RydWN0dXJlRm9yVHJh
bnNpdGlvbigpLT50eXBlSW5mbygpLnR5cGUoKSA9PSB2YXJpYW50Lm5ld1N0cnVjdHVyZSgpLT50
eXBlSW5mbygpLnR5cGUoKSk7CiAgICAgICAgICAgICAgICAgbV9vdXQuc3RvcmUzMigKICAgICAg
ICAgICAgICAgICAgICAgd2Vha1N0cnVjdHVyZSh2YXJpYW50Lm5ld1N0cnVjdHVyZSgpKSwgYmFz
ZSwgbV9oZWFwcy5KU0NlbGxfc3RydWN0dXJlSUQpOwogICAgICAgICAgICAgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>233219</attachid>
            <date>2014-06-16 22:58:23 -0700</date>
            <delta_ts>2014-06-17 16:14:18 -0700</delta_ts>
            <desc>passes tests</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>23120</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkU3RhdHVzLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFN0YXR1
cy5jcHAJKHJldmlzaW9uIDE3MDAzOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9QdXRCeUlkU3RhdHVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDAsNyArNDAsMTEgQEAgbmFt
ZXNwYWNlIEpTQyB7CiBib29sIFB1dEJ5SWRTdGF0dXM6OmFwcGVuZFZhcmlhbnQoY29uc3QgUHV0
QnlJZFZhcmlhbnQmIHZhcmlhbnQpCiB7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1f
dmFyaWFudHMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgaWYgKG1fdmFyaWFudHNbaV0ub2xkU3Ry
dWN0dXJlKCkgPT0gdmFyaWFudC5vbGRTdHJ1Y3R1cmUoKSkKKyAgICAgICAgaWYgKG1fdmFyaWFu
dHNbaV0uYXR0ZW1wdFRvTWVyZ2UodmFyaWFudCkpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICB9CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fdmFyaWFudHMuc2l6ZSgpOyAr
K2kpIHsKKyAgICAgICAgaWYgKG1fdmFyaWFudHNbaV0ub2xkU3RydWN0dXJlKCkub3ZlcmxhcHMo
dmFyaWFudC5vbGRTdHJ1Y3R1cmUoKSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
fQogICAgIG1fdmFyaWFudHMuYXBwZW5kKHZhcmlhbnQpOwpAQCAtMTk0LDExICsxOTgsMTUgQEAg
UHV0QnlJZFN0YXR1cyBQdXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yUwogICAgICAgICAgICAgICAg
ICAgICBhY2Nlc3MubmV3U3RydWN0dXJlKCktPmdldENvbmN1cnJlbnRseSgqcHJvZmlsZWRCbG9j
ay0+dm0oKSwgdWlkKTsKICAgICAgICAgICAgICAgICBpZiAoIWlzVmFsaWRPZmZzZXQob2Zmc2V0
KSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFB1dEJ5SWRTdGF0dXMoVGFrZXNTbG93UGF0
aCk7CisgICAgICAgICAgICAgICAgUmVmUHRyPEludGVuZGVkU3RydWN0dXJlQ2hhaW4+IGNoYWlu
OworICAgICAgICAgICAgICAgIGlmIChhY2Nlc3MuY2hhaW4oKSkgeworICAgICAgICAgICAgICAg
ICAgICBjaGFpbiA9IGFkb3B0UmVmKG5ldyBJbnRlbmRlZFN0cnVjdHVyZUNoYWluKAorICAgICAg
ICAgICAgICAgICAgICAgICAgcHJvZmlsZWRCbG9jaywgYWNjZXNzLm9sZFN0cnVjdHVyZSgpLCBh
Y2Nlc3MuY2hhaW4oKSkpOworICAgICAgICAgICAgICAgICAgICBpZiAoIWNoYWluLT5pc1N0aWxs
VmFsaWQoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgICAgICBib29sIG9rID0gcmVzdWx0LmFwcGVuZFZhcmlhbnQoUHV0
QnlJZFZhcmlhbnQ6OnRyYW5zaXRpb24oCi0gICAgICAgICAgICAgICAgICAgIGFjY2Vzcy5vbGRT
dHJ1Y3R1cmUoKSwgYWNjZXNzLm5ld1N0cnVjdHVyZSgpLAotICAgICAgICAgICAgICAgICAgICBh
Y2Nlc3MuY2hhaW4oKSA/IGFkb3B0UmVmKG5ldyBJbnRlbmRlZFN0cnVjdHVyZUNoYWluKAotICAg
ICAgICAgICAgICAgICAgICAgICAgcHJvZmlsZWRCbG9jaywgYWNjZXNzLm9sZFN0cnVjdHVyZSgp
LCBhY2Nlc3MuY2hhaW4oKSkpIDogMCwKLSAgICAgICAgICAgICAgICAgICAgb2Zmc2V0KSk7Cisg
ICAgICAgICAgICAgICAgICAgIGFjY2Vzcy5vbGRTdHJ1Y3R1cmUoKSwgYWNjZXNzLm5ld1N0cnVj
dHVyZSgpLCBjaGFpbi5nZXQoKSwgb2Zmc2V0KSk7CiAgICAgICAgICAgICAgICAgaWYgKCFvaykK
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFB1dEJ5SWRTdGF0dXMoVGFrZXNTbG93UGF0aCk7
CiAgICAgICAgICAgICAgICAgYnJlYWs7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvUHV0QnlJZFZhcmlhbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9QdXRCeUlkVmFyaWFudC5jcHAJKHJldmlzaW9uIDE3MDAzOCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkVmFyaWFudC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTMwLDYgKzMwLDk5IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCitTdHJ1Y3R1cmUq
IFB1dEJ5SWRWYXJpYW50OjpvbGRTdHJ1Y3R1cmVGb3JUcmFuc2l0aW9uKCkgY29uc3QKK3sKKyAg
ICBBU1NFUlQoa2luZCgpID09IFRyYW5zaXRpb24pOworICAgIEFTU0VSVChtX29sZFN0cnVjdHVy
ZS5zaXplKCkgPD0gMik7CisgICAgZm9yICh1bnNpZ25lZCBpID0gbV9vbGRTdHJ1Y3R1cmUuc2l6
ZSgpOyBpLS07KSB7CisgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gbV9vbGRTdHJ1Y3R1
cmVbaV07CisgICAgICAgIGlmIChzdHJ1Y3R1cmUgIT0gbV9uZXdTdHJ1Y3R1cmUpCisgICAgICAg
ICAgICByZXR1cm4gc3RydWN0dXJlOworICAgIH0KKyAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVB
Q0hFRCgpOworfQorCitib29sIFB1dEJ5SWRWYXJpYW50Ojp3cml0ZXNTdHJ1Y3R1cmVzKCkgY29u
c3QKK3sKKyAgICByZXR1cm4ga2luZCgpID09IFRyYW5zaXRpb247Cit9CisKK2Jvb2wgUHV0QnlJ
ZFZhcmlhbnQ6OnJlYWxsb2NhdGVzU3RvcmFnZSgpIGNvbnN0Cit7CisgICAgaWYgKGtpbmQoKSAh
PSBUcmFuc2l0aW9uKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgaWYgKG9sZFN0
cnVjdHVyZUZvclRyYW5zaXRpb24oKS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSA9PSBuZXdTdHJ1Y3R1
cmUoKS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAor
ICAgIHJldHVybiB0cnVlOworfQorCitib29sIFB1dEJ5SWRWYXJpYW50OjphdHRlbXB0VG9NZXJn
ZShjb25zdCBQdXRCeUlkVmFyaWFudCYgb3RoZXIpCit7CisgICAgaWYgKG1fb2Zmc2V0ICE9IG90
aGVyLm1fb2Zmc2V0KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgc3dpdGNoICht
X2tpbmQpIHsKKyAgICBjYXNlIFJlcGxhY2U6CisgICAgICAgIHN3aXRjaCAob3RoZXIubV9raW5k
KSB7CisgICAgICAgIGNhc2UgUmVwbGFjZTogeworICAgICAgICAgICAgQVNTRVJUKG1fY29uc3Rh
bnRDaGVja3MuaXNFbXB0eSgpKTsKKyAgICAgICAgICAgIEFTU0VSVChvdGhlci5tX2NvbnN0YW50
Q2hlY2tzLmlzRW1wdHkoKSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIG1fb2xkU3RydWN0
dXJlLm1lcmdlKG90aGVyLm1fb2xkU3RydWN0dXJlKTsKKyAgICAgICAgICAgIHJldHVybiB0cnVl
OworICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgY2FzZSBUcmFuc2l0aW9uOiB7Cisg
ICAgICAgICAgICBQdXRCeUlkVmFyaWFudCBuZXdWYXJpYW50ID0gb3RoZXI7CisgICAgICAgICAg
ICBpZiAobmV3VmFyaWFudC5hdHRlbXB0VG9NZXJnZVRyYW5zaXRpb25XaXRoUmVwbGFjZSgqdGhp
cykpIHsKKyAgICAgICAgICAgICAgICAqdGhpcyA9IG5ld1ZhcmlhbnQ7CisgICAgICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgICAgIAorICAgIGNhc2UgVHJhbnNpdGlvbjoK
KyAgICAgICAgc3dpdGNoIChvdGhlci5tX2tpbmQpIHsKKyAgICAgICAgY2FzZSBSZXBsYWNlOgor
ICAgICAgICAgICAgcmV0dXJuIGF0dGVtcHRUb01lcmdlVHJhbnNpdGlvbldpdGhSZXBsYWNlKG90
aGVyKTsKKyAgICAgICAgICAgIAorICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgICAgICB9CisgICAgICAgIAorICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICB9Cit9CisKK2Jvb2wgUHV0QnlJZFZhcmlhbnQ6OmF0dGVtcHRUb01lcmdl
VHJhbnNpdGlvbldpdGhSZXBsYWNlKGNvbnN0IFB1dEJ5SWRWYXJpYW50JiByZXBsYWNlKQorewor
ICAgIEFTU0VSVChtX2tpbmQgPT0gVHJhbnNpdGlvbik7CisgICAgQVNTRVJUKHJlcGxhY2UubV9r
aW5kID09IFJlcGxhY2UpOworICAgIEFTU0VSVChtX29mZnNldCA9PSByZXBsYWNlLm1fb2Zmc2V0
KTsKKyAgICBBU1NFUlQoIXJlcGxhY2Uud3JpdGVzU3RydWN0dXJlcygpKTsKKyAgICBBU1NFUlQo
IXJlcGxhY2UucmVhbGxvY2F0ZXNTdG9yYWdlKCkpOworICAgIAorICAgIC8vIFRoaXMgc29ydCBv
ZiBtZXJnaW5nIG9ubHkgd29ya3Mgd2hlbiB3ZSBoYXZlIG9uZSBwYXRoIGFsb25nIHdoaWNoIHdl
IGFkZCBhIG5ldyBmaWVsZCB3aGljaAorICAgIC8vIHRyYW5zaXRpb25zIHRvIHN0cnVjdHVyZSBT
IHdoaWxlIHRoZSBvdGhlciBwYXRoIHdhcyBhbHJlYWR5IG9uIHN0cnVjdHVyZSBTLiBUaGlzIGRv
ZXNuJ3QKKyAgICAvLyB3b3JrIGlmIHdlIG5lZWQgdG8gcmVhbGxvY2F0ZSBhbnl0aGluZyBvciBp
ZiB0aGUgcmVwbGFjZSBwYXRoIGlzIHBvbHltb3JwaGljLgorICAgIAorICAgIGlmIChyZWFsbG9j
YXRlc1N0b3JhZ2UoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAorICAgIGlmIChyZXBs
YWNlLm1fb2xkU3RydWN0dXJlLm9ubHlTdHJ1Y3R1cmUoKSAhPSBtX25ld1N0cnVjdHVyZSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIAorICAgIG1fb2xkU3RydWN0dXJlLm1lcmdlKG1fbmV3
U3RydWN0dXJlKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogdm9pZCBQdXRCeUlkVmFyaWFudDo6
ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAogewogICAgIGR1bXBJbkNvbnRleHQob3V0LCAw
KTsKQEAgLTQ0LDEyICsxMzcsMTIgQEAgdm9pZCBQdXRCeUlkVmFyaWFudDo6ZHVtcEluQ29udGV4
dChQcmludAogICAgICAgICAKICAgICBjYXNlIFJlcGxhY2U6CiAgICAgICAgIG91dC5wcmludCgK
LSAgICAgICAgICAgICI8UmVwbGFjZTogIiwgcG9pbnRlckR1bXBJbkNvbnRleHQoc3RydWN0dXJl
KCksIGNvbnRleHQpLCAiLCAiLCBvZmZzZXQoKSwgIj4iKTsKKyAgICAgICAgICAgICI8UmVwbGFj
ZTogIiwgaW5Db250ZXh0KHN0cnVjdHVyZSgpLCBjb250ZXh0KSwgIiwgIiwgb2Zmc2V0KCksICI+
Iik7CiAgICAgICAgIHJldHVybjsKICAgICAgICAgCiAgICAgY2FzZSBUcmFuc2l0aW9uOgogICAg
ICAgICBvdXQucHJpbnQoCi0gICAgICAgICAgICAiPFRyYW5zaXRpb246ICIsIHBvaW50ZXJEdW1w
SW5Db250ZXh0KG9sZFN0cnVjdHVyZSgpLCBjb250ZXh0KSwgIiAtPiAiLAorICAgICAgICAgICAg
IjxUcmFuc2l0aW9uOiAiLCBpbkNvbnRleHQob2xkU3RydWN0dXJlKCksIGNvbnRleHQpLCAiIC0+
ICIsCiAgICAgICAgICAgICBwb2ludGVyRHVtcEluQ29udGV4dChuZXdTdHJ1Y3R1cmUoKSwgY29u
dGV4dCksICIsIFsiLAogICAgICAgICAgICAgbGlzdER1bXBJbkNvbnRleHQoY29uc3RhbnRDaGVj
a3MoKSwgY29udGV4dCksICJdLCAiLCBvZmZzZXQoKSwgIj4iKTsKICAgICAgICAgcmV0dXJuOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRWYXJpYW50LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRWYXJpYW50
LmgJKHJldmlzaW9uIDE3MDAzOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Q
dXRCeUlkVmFyaWFudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbmNs
dWRlICJJbnRlbmRlZFN0cnVjdHVyZUNoYWluLmgiCiAjaW5jbHVkZSAiUHJvcGVydHlPZmZzZXQu
aCIKKyNpbmNsdWRlICJTdHJ1Y3R1cmVTZXQuaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKQEAgLTQx
LDEzICs0MiwxMiBAQCBwdWJsaWM6CiAgICAgCiAgICAgUHV0QnlJZFZhcmlhbnQoKQogICAgICAg
ICA6IG1fa2luZChOb3RTZXQpCi0gICAgICAgICwgbV9vbGRTdHJ1Y3R1cmUoMCkKLSAgICAgICAg
LCBtX25ld1N0cnVjdHVyZSgwKQorICAgICAgICAsIG1fbmV3U3RydWN0dXJlKG51bGxwdHIpCiAg
ICAgICAgICwgbV9vZmZzZXQoaW52YWxpZE9mZnNldCkKICAgICB7CiAgICAgfQogICAgIAotICAg
IHN0YXRpYyBQdXRCeUlkVmFyaWFudCByZXBsYWNlKFN0cnVjdHVyZSogc3RydWN0dXJlLCBQcm9w
ZXJ0eU9mZnNldCBvZmZzZXQpCisgICAgc3RhdGljIFB1dEJ5SWRWYXJpYW50IHJlcGxhY2UoY29u
c3QgU3RydWN0dXJlU2V0JiBzdHJ1Y3R1cmUsIFByb3BlcnR5T2Zmc2V0IG9mZnNldCkKICAgICB7
CiAgICAgICAgIFB1dEJ5SWRWYXJpYW50IHJlc3VsdDsKICAgICAgICAgcmVzdWx0Lm1fa2luZCA9
IFJlcGxhY2U7CkBAIC01Nyw3ICs1Nyw3IEBAIHB1YmxpYzoKICAgICB9CiAgICAgCiAgICAgc3Rh
dGljIFB1dEJ5SWRWYXJpYW50IHRyYW5zaXRpb24oCi0gICAgICAgIFN0cnVjdHVyZSogb2xkU3Ry
dWN0dXJlLCBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSwKKyAgICAgICAgY29uc3QgU3RydWN0dXJl
U2V0JiBvbGRTdHJ1Y3R1cmUsIFN0cnVjdHVyZSogbmV3U3RydWN0dXJlLAogICAgICAgICBQYXNz
UmVmUHRyPEludGVuZGVkU3RydWN0dXJlQ2hhaW4+IHN0cnVjdHVyZUNoYWluLCBQcm9wZXJ0eU9m
ZnNldCBvZmZzZXQpCiAgICAgewogICAgICAgICBQdXRCeUlkVmFyaWFudCByZXN1bHQ7CkBAIC03
NSwyMyArNzUsMjggQEAgcHVibGljOgogICAgIGJvb2wgaXNTZXQoKSBjb25zdCB7IHJldHVybiBr
aW5kKCkgIT0gTm90U2V0OyB9CiAgICAgYm9vbCBvcGVyYXRvciEoKSBjb25zdCB7IHJldHVybiAh
aXNTZXQoKTsgfQogICAgIAotICAgIFN0cnVjdHVyZSogc3RydWN0dXJlKCkgY29uc3QKKyAgICBj
b25zdCBTdHJ1Y3R1cmVTZXQmIHN0cnVjdHVyZSgpIGNvbnN0CiAgICAgewogICAgICAgICBBU1NF
UlQoa2luZCgpID09IFJlcGxhY2UpOwogICAgICAgICByZXR1cm4gbV9vbGRTdHJ1Y3R1cmU7CiAg
ICAgfQogICAgIAotICAgIFN0cnVjdHVyZSogb2xkU3RydWN0dXJlKCkgY29uc3QKKyAgICBjb25z
dCBTdHJ1Y3R1cmVTZXQmIG9sZFN0cnVjdHVyZSgpIGNvbnN0CiAgICAgewogICAgICAgICBBU1NF
UlQoa2luZCgpID09IFRyYW5zaXRpb24gfHwga2luZCgpID09IFJlcGxhY2UpOwogICAgICAgICBy
ZXR1cm4gbV9vbGRTdHJ1Y3R1cmU7CiAgICAgfQogICAgIAorICAgIFN0cnVjdHVyZSogb2xkU3Ry
dWN0dXJlRm9yVHJhbnNpdGlvbigpIGNvbnN0OworICAgIAogICAgIFN0cnVjdHVyZSogbmV3U3Ry
dWN0dXJlKCkgY29uc3QKICAgICB7CiAgICAgICAgIEFTU0VSVChraW5kKCkgPT0gVHJhbnNpdGlv
bik7CiAgICAgICAgIHJldHVybiBtX25ld1N0cnVjdHVyZTsKICAgICB9CisKKyAgICBib29sIHdy
aXRlc1N0cnVjdHVyZXMoKSBjb25zdDsKKyAgICBib29sIHJlYWxsb2NhdGVzU3RvcmFnZSgpIGNv
bnN0OwogICAgIAogICAgIGNvbnN0IENvbnN0YW50U3RydWN0dXJlQ2hlY2tWZWN0b3ImIGNvbnN0
YW50Q2hlY2tzKCkgY29uc3QKICAgICB7CkBAIC0xMDUsMTIgKzExMCwxNiBAQCBwdWJsaWM6CiAg
ICAgICAgIHJldHVybiBtX29mZnNldDsKICAgICB9CiAgICAgCisgICAgYm9vbCBhdHRlbXB0VG9N
ZXJnZShjb25zdCBQdXRCeUlkVmFyaWFudCYgb3RoZXIpOworICAgIAogICAgIHZvaWQgZHVtcChQ
cmludFN0cmVhbSYpIGNvbnN0OwogICAgIHZvaWQgZHVtcEluQ29udGV4dChQcmludFN0cmVhbSYs
IER1bXBDb250ZXh0KikgY29uc3Q7CiAKIHByaXZhdGU6CisgICAgYm9vbCBhdHRlbXB0VG9NZXJn
ZVRyYW5zaXRpb25XaXRoUmVwbGFjZShjb25zdCBQdXRCeUlkVmFyaWFudCYgcmVwbGFjZSk7Cisg
ICAgCiAgICAgS2luZCBtX2tpbmQ7Ci0gICAgU3RydWN0dXJlKiBtX29sZFN0cnVjdHVyZTsKKyAg
ICBTdHJ1Y3R1cmVTZXQgbV9vbGRTdHJ1Y3R1cmU7CiAgICAgU3RydWN0dXJlKiBtX25ld1N0cnVj
dHVyZTsKICAgICBDb25zdGFudFN0cnVjdHVyZUNoZWNrVmVjdG9yIG1fY29uc3RhbnRDaGVja3M7
CiAgICAgUHJvcGVydHlPZmZzZXQgbV9vZmZzZXQ7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCShy
ZXZpc2lvbiAxNzAwMzgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0
SW50ZXJwcmV0ZXJJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTE3MzAsNyArMTczMCw3IEBA
IGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHkKICAgICAgICAgICAgIGJv
b2wgZG9uZSA9IGZhbHNlOwogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gbm9kZS0+bXVs
dGlQdXRCeU9mZnNldERhdGEoKS52YXJpYW50cy5zaXplKCk7IGktLTspIHsKICAgICAgICAgICAg
ICAgICBjb25zdCBQdXRCeUlkVmFyaWFudCYgdmFyaWFudCA9IG5vZGUtPm11bHRpUHV0QnlPZmZz
ZXREYXRhKCkudmFyaWFudHNbaV07Ci0gICAgICAgICAgICAgICAgaWYgKHZhcmlhbnQub2xkU3Ry
dWN0dXJlKCkgIT0gc3RydWN0dXJlKQorICAgICAgICAgICAgICAgIGlmICghdmFyaWFudC5vbGRT
dHJ1Y3R1cmUoKS5jb250YWlucyhzdHJ1Y3R1cmUpKQogICAgICAgICAgICAgICAgICAgICBjb250
aW51ZTsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBpZiAodmFyaWFudC5raW5k
KCkgPT0gUHV0QnlJZFZhcmlhbnQ6OlJlcGxhY2UpIHsKQEAgLTE3NTYsMTMgKzE3NTYsMTQgQEAg
Ym9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgICAgICBUcmFuc2l0
aW9uVmVjdG9yIHRyYW5zaXRpb25zOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBub2RlLT5t
dWx0aVB1dEJ5T2Zmc2V0RGF0YSgpLnZhcmlhbnRzLnNpemUoKTsgaS0tOykgewogICAgICAgICAg
ICAgY29uc3QgUHV0QnlJZFZhcmlhbnQmIHZhcmlhbnQgPSBub2RlLT5tdWx0aVB1dEJ5T2Zmc2V0
RGF0YSgpLnZhcmlhbnRzW2ldOwotICAgICAgICAgICAgb2xkU2V0LmFkZCh2YXJpYW50Lm9sZFN0
cnVjdHVyZSgpKTsKKyAgICAgICAgICAgIG9sZFNldC5tZXJnZSh2YXJpYW50Lm9sZFN0cnVjdHVy
ZSgpKTsKICAgICAgICAgICAgIGlmICh2YXJpYW50LmtpbmQoKSA9PSBQdXRCeUlkVmFyaWFudDo6
VHJhbnNpdGlvbikgewotICAgICAgICAgICAgICAgIHRyYW5zaXRpb25zLmFwcGVuZChUcmFuc2l0
aW9uKHZhcmlhbnQub2xkU3RydWN0dXJlKCksIHZhcmlhbnQubmV3U3RydWN0dXJlKCkpKTsKKyAg
ICAgICAgICAgICAgICB0cmFuc2l0aW9ucy5hcHBlbmQoCisgICAgICAgICAgICAgICAgICAgIFRy
YW5zaXRpb24odmFyaWFudC5vbGRTdHJ1Y3R1cmVGb3JUcmFuc2l0aW9uKCksIHZhcmlhbnQubmV3
U3RydWN0dXJlKCkpKTsKICAgICAgICAgICAgICAgICBuZXdTZXQuYWRkKHZhcmlhbnQubmV3U3Ry
dWN0dXJlKCkpOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBBU1NFUlQo
dmFyaWFudC5raW5kKCkgPT0gUHV0QnlJZFZhcmlhbnQ6OlJlcGxhY2UpOwotICAgICAgICAgICAg
ICAgIG5ld1NldC5hZGQodmFyaWFudC5vbGRTdHJ1Y3R1cmUoKSk7CisgICAgICAgICAgICAgICAg
bmV3U2V0Lm1lcmdlKHZhcmlhbnQub2xkU3RydWN0dXJlKCkpOwogICAgICAgICAgICAgfQogICAg
ICAgICB9CiAgICAgICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRl
Q29kZVBhcnNlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdCeXRlQ29kZVBhcnNlci5jcHAJKHJldmlzaW9uIDE3MDAzOCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODY4
LDIwICsxODY4LDE5IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZVB1dEJ5SWQoCiAgICAg
YWRkVG9HcmFwaChDaGVja1N0cnVjdHVyZSwgT3BJbmZvKG1fZ3JhcGguYWRkU3RydWN0dXJlU2V0
KHZhcmlhbnQub2xkU3RydWN0dXJlKCkpKSwgYmFzZSk7CiAgICAgZW1pdENoZWNrcyh2YXJpYW50
LmNvbnN0YW50Q2hlY2tzKCkpOwogCi0gICAgQVNTRVJUKHZhcmlhbnQub2xkU3RydWN0dXJlKCkt
PnRyYW5zaXRpb25XYXRjaHBvaW50U2V0SGFzQmVlbkludmFsaWRhdGVkKCkpOworICAgIEFTU0VS
VCh2YXJpYW50Lm9sZFN0cnVjdHVyZUZvclRyYW5zaXRpb24oKS0+dHJhbnNpdGlvbldhdGNocG9p
bnRTZXRIYXNCZWVuSW52YWxpZGF0ZWQoKSk7CiAgICAgCiAgICAgTm9kZSogcHJvcGVydHlTdG9y
YWdlOwogICAgIFRyYW5zaXRpb24qIHRyYW5zaXRpb24gPSBtX2dyYXBoLm1fdHJhbnNpdGlvbnMu
YWRkKAotICAgICAgICB2YXJpYW50Lm9sZFN0cnVjdHVyZSgpLCB2YXJpYW50Lm5ld1N0cnVjdHVy
ZSgpKTsKKyAgICAgICAgdmFyaWFudC5vbGRTdHJ1Y3R1cmVGb3JUcmFuc2l0aW9uKCksIHZhcmlh
bnQubmV3U3RydWN0dXJlKCkpOwogCi0gICAgaWYgKHZhcmlhbnQub2xkU3RydWN0dXJlKCktPm91
dE9mTGluZUNhcGFjaXR5KCkKLSAgICAgICAgIT0gdmFyaWFudC5uZXdTdHJ1Y3R1cmUoKS0+b3V0
T2ZMaW5lQ2FwYWNpdHkoKSkgeworICAgIGlmICh2YXJpYW50LnJlYWxsb2NhdGVzU3RvcmFnZSgp
KSB7CiAKICAgICAgICAgLy8gSWYgd2UncmUgZ3Jvd2luZyB0aGUgcHJvcGVydHkgc3RvcmFnZSB0
aGVuIGl0IG11c3QgYmUgYmVjYXVzZSB3ZSdyZQogICAgICAgICAvLyBzdG9yaW5nIGludG8gdGhl
IG91dC1vZi1saW5lIHN0b3JhZ2UuCiAgICAgICAgIEFTU0VSVCghaXNJbmxpbmVPZmZzZXQodmFy
aWFudC5vZmZzZXQoKSkpOwogCi0gICAgICAgIGlmICghdmFyaWFudC5vbGRTdHJ1Y3R1cmUoKS0+
b3V0T2ZMaW5lQ2FwYWNpdHkoKSkgeworICAgICAgICBpZiAoIXZhcmlhbnQub2xkU3RydWN0dXJl
Rm9yVHJhbnNpdGlvbigpLT5vdXRPZkxpbmVDYXBhY2l0eSgpKSB7CiAgICAgICAgICAgICBwcm9w
ZXJ0eVN0b3JhZ2UgPSBhZGRUb0dyYXBoKAogICAgICAgICAgICAgICAgIEFsbG9jYXRlUHJvcGVy
dHlTdG9yYWdlLCBPcEluZm8odHJhbnNpdGlvbiksIGJhc2UpOwogICAgICAgICB9IGVsc2UgewpA
QCAtMjk1Miw3ICsyOTUxLDggQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNp
Z25lZAogICAgICAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKFB1dEJ5SWQsIE9wSW5mbyhpZGVu
dGlmaWVyTnVtYmVyKSwgZ2V0KFZpcnR1YWxSZWdpc3RlcihzY29wZSkpLCBnZXQoVmlydHVhbFJl
Z2lzdGVyKHZhbHVlKSkpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICAgICAgTm9kZSogYmFzZSA9IGNlbGxDb25zdGFudFdpdGhTdHJ1
Y3R1cmVDaGVjayhnbG9iYWxPYmplY3QsIHN0YXR1c1swXS5zdHJ1Y3R1cmUoKSk7CisgICAgICAg
ICAgICAgICAgQVNTRVJUKHN0YXR1c1swXS5zdHJ1Y3R1cmUoKS5vbmx5U3RydWN0dXJlKCkgPT0g
c3RydWN0dXJlKTsKKyAgICAgICAgICAgICAgICBOb2RlKiBiYXNlID0gY2VsbENvbnN0YW50V2l0
aFN0cnVjdHVyZUNoZWNrKGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKTsKICAgICAgICAgICAgICAg
ICBhZGRUb0dyYXBoKFBoYW50b20sIGdldChWaXJ0dWFsUmVnaXN0ZXIoc2NvcGUpKSk7CiAgICAg
ICAgICAgICAgICAgaGFuZGxlUHV0QnlPZmZzZXQoYmFzZSwgaWRlbnRpZmllck51bWJlciwgc3Rh
dGljX2Nhc3Q8UHJvcGVydHlPZmZzZXQ+KG9wZXJhbmQpLCBnZXQoVmlydHVhbFJlZ2lzdGVyKHZh
bHVlKSkpOwogICAgICAgICAgICAgICAgIC8vIEtlZXAgc2NvcGUgYWxpdmUgdW50aWwgYWZ0ZXIg
cHV0LgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQ
aGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25z
dGFudEZvbGRpbmdQaGFzZS5jcHAJKHJldmlzaW9uIDE3MDAzOCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xNzEsMTAgKzE3MSwxMCBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIAogICAgICAgICAg
ICAgICAgIGZvciAodW5zaWduZWQgaSA9IGRhdGEudmFyaWFudHMuc2l6ZSgpOyBpLS07KSB7CiAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IFB1dEJ5SWRWYXJpYW50JiB2YXJpYW50ID0gZGF0YS52
YXJpYW50c1tpXTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHZhcmlhbnQub2xkU3RydWN0dXJl
KCkgIT0gc3RydWN0dXJlKQorICAgICAgICAgICAgICAgICAgICBpZiAoIXZhcmlhbnQub2xkU3Ry
dWN0dXJlKCkuY29udGFpbnMoc3RydWN0dXJlKSkKICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnRpbnVlOwogICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgZW1pdFB1
dEJ5T2Zmc2V0KGluZGV4SW5CbG9jaywgbm9kZSwgc3RydWN0dXJlLCB2YXJpYW50LCBkYXRhLmlk
ZW50aWZpZXJOdW1iZXIpOworICAgICAgICAgICAgICAgICAgICBlbWl0UHV0QnlPZmZzZXQoaW5k
ZXhJbkJsb2NrLCBub2RlLCB2YXJpYW50LCBkYXRhLmlkZW50aWZpZXJOdW1iZXIpOwogICAgICAg
ICAgICAgICAgICAgICBlbGltaW5hdGVkID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgICAgICAgICAgfQpAQCAtMjM0LDcgKzIzNCw3IEBAIHByaXZhdGU6CiAgICAg
ICAgICAgICAgICAgaWYgKHN0YXR1cy5udW1WYXJpYW50cygpICE9IDEpCiAgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIGVtaXRQdXRC
eU9mZnNldChpbmRleEluQmxvY2ssIG5vZGUsIHN0cnVjdHVyZSwgc3RhdHVzWzBdLCBpZGVudGlm
aWVyTnVtYmVyKTsKKyAgICAgICAgICAgICAgICBlbWl0UHV0QnlPZmZzZXQoaW5kZXhJbkJsb2Nr
LCBub2RlLCBzdGF0dXNbMF0sIGlkZW50aWZpZXJOdW1iZXIpOwogICAgICAgICAgICAgICAgIGVs
aW1pbmF0ZWQgPSB0cnVlOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQpA
QCAtMzY5LDEzICszNjksMTEgQEAgcHJpdmF0ZToKICAgICAgICAgbV9ncmFwaC5tX3N0b3JhZ2VB
Y2Nlc3NEYXRhLmFwcGVuZChzdG9yYWdlQWNjZXNzRGF0YSk7CiAgICAgfQogCi0gICAgdm9pZCBl
bWl0UHV0QnlPZmZzZXQodW5zaWduZWQgaW5kZXhJbkJsb2NrLCBOb2RlKiBub2RlLCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSwgY29uc3QgUHV0QnlJZFZhcmlhbnQmIHZhcmlhbnQsIHVuc2lnbmVkIGlk
ZW50aWZpZXJOdW1iZXIpCisgICAgdm9pZCBlbWl0UHV0QnlPZmZzZXQodW5zaWduZWQgaW5kZXhJ
bkJsb2NrLCBOb2RlKiBub2RlLCBjb25zdCBQdXRCeUlkVmFyaWFudCYgdmFyaWFudCwgdW5zaWdu
ZWQgaWRlbnRpZmllck51bWJlcikKICAgICB7CiAgICAgICAgIE5vZGVPcmlnaW4gb3JpZ2luID0g
bm9kZS0+b3JpZ2luOwogICAgICAgICBFZGdlIGNoaWxkRWRnZSA9IG5vZGUtPmNoaWxkMSgpOwog
ICAgICAgICBOb2RlKiBjaGlsZCA9IGNoaWxkRWRnZS5ub2RlKCk7Ci0KLSAgICAgICAgQVNTRVJU
KHZhcmlhbnQub2xkU3RydWN0dXJlKCkgPT0gc3RydWN0dXJlKTsKICAgICAgICAgCiAgICAgICAg
IGJvb2wgbmVlZHNDZWxsQ2hlY2sgPSBtX3N0YXRlLmZvck5vZGUoY2hpbGQpLm1fdHlwZSAmIH5T
cGVjQ2VsbDsKICAgICAgICAgCkBAIC0zOTMsNyArMzkxLDggQEAgcHJpdmF0ZToKIAogICAgICAg
ICBUcmFuc2l0aW9uKiB0cmFuc2l0aW9uID0gMDsKICAgICAgICAgaWYgKHZhcmlhbnQua2luZCgp
ID09IFB1dEJ5SWRWYXJpYW50OjpUcmFuc2l0aW9uKSB7Ci0gICAgICAgICAgICB0cmFuc2l0aW9u
ID0gbV9ncmFwaC5tX3RyYW5zaXRpb25zLmFkZChzdHJ1Y3R1cmUsIHZhcmlhbnQubmV3U3RydWN0
dXJlKCkpOworICAgICAgICAgICAgdHJhbnNpdGlvbiA9IG1fZ3JhcGgubV90cmFuc2l0aW9ucy5h
ZGQoCisgICAgICAgICAgICAgICAgdmFyaWFudC5vbGRTdHJ1Y3R1cmVGb3JUcmFuc2l0aW9uKCks
IHZhcmlhbnQubmV3U3RydWN0dXJlKCkpOwogCiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgdmFyaWFudC5jb25zdGFudENoZWNrcygpLnNpemUoKTsgKytpKSB7CiAgICAgICAg
ICAgICAgICAgYWRkU3RydWN0dXJlVHJhbnNpdGlvbkNoZWNrKApAQCAtNDA3LDEyICs0MDYsMTAg
QEAgcHJpdmF0ZToKIAogICAgICAgICBpZiAoaXNJbmxpbmVPZmZzZXQodmFyaWFudC5vZmZzZXQo
KSkpCiAgICAgICAgICAgICBwcm9wZXJ0eVN0b3JhZ2UgPSBjaGlsZEVkZ2U7Ci0gICAgICAgIGVs
c2UgaWYgKAotICAgICAgICAgICAgdmFyaWFudC5raW5kKCkgPT0gUHV0QnlJZFZhcmlhbnQ6OlJl
cGxhY2UKLSAgICAgICAgICAgIHx8IHN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSA9PSB2
YXJpYW50Lm5ld1N0cnVjdHVyZSgpLT5vdXRPZkxpbmVDYXBhY2l0eSgpKSB7CisgICAgICAgIGVs
c2UgaWYgKCF2YXJpYW50LnJlYWxsb2NhdGVzU3RvcmFnZSgpKSB7CiAgICAgICAgICAgICBwcm9w
ZXJ0eVN0b3JhZ2UgPSBFZGdlKG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCiAgICAgICAgICAg
ICAgICAgaW5kZXhJbkJsb2NrLCBTcGVjTm9uZSwgR2V0QnV0dGVyZmx5LCBvcmlnaW4sIGNoaWxk
RWRnZSkpOwotICAgICAgICB9IGVsc2UgaWYgKCFzdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5
KCkpIHsKKyAgICAgICAgfSBlbHNlIGlmICghdmFyaWFudC5vbGRTdHJ1Y3R1cmVGb3JUcmFuc2l0
aW9uKCktPm91dE9mTGluZUNhcGFjaXR5KCkpIHsKICAgICAgICAgICAgIEFTU0VSVCh2YXJpYW50
Lm5ld1N0cnVjdHVyZSgpLT5vdXRPZkxpbmVDYXBhY2l0eSgpKTsKICAgICAgICAgICAgIEFTU0VS
VCghaXNJbmxpbmVPZmZzZXQodmFyaWFudC5vZmZzZXQoKSkpOwogICAgICAgICAgICAgTm9kZSog
YWxsb2NhdGVQcm9wZXJ0eVN0b3JhZ2UgPSBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKApAQCAt
NDIxLDggKzQxOCw4IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBtX2luc2VydGlvblNldC5pbnNl
cnROb2RlKGluZGV4SW5CbG9jaywgU3BlY05vbmUsIFN0b3JlQmFycmllciwgb3JpZ2luLCBFZGdl
KG5vZGUtPmNoaWxkMSgpLm5vZGUoKSwgS25vd25DZWxsVXNlKSk7CiAgICAgICAgICAgICBwcm9w
ZXJ0eVN0b3JhZ2UgPSBFZGdlKGFsbG9jYXRlUHJvcGVydHlTdG9yYWdlKTsKICAgICAgICAgfSBl
bHNlIHsKLSAgICAgICAgICAgIEFTU0VSVChzdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCkp
OwotICAgICAgICAgICAgQVNTRVJUKHZhcmlhbnQubmV3U3RydWN0dXJlKCktPm91dE9mTGluZUNh
cGFjaXR5KCkgPiBzdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCkpOworICAgICAgICAgICAg
QVNTRVJUKHZhcmlhbnQub2xkU3RydWN0dXJlRm9yVHJhbnNpdGlvbigpLT5vdXRPZkxpbmVDYXBh
Y2l0eSgpKTsKKyAgICAgICAgICAgIEFTU0VSVCh2YXJpYW50Lm5ld1N0cnVjdHVyZSgpLT5vdXRP
ZkxpbmVDYXBhY2l0eSgpID4gdmFyaWFudC5vbGRTdHJ1Y3R1cmVGb3JUcmFuc2l0aW9uKCktPm91
dE9mTGluZUNhcGFjaXR5KCkpOwogICAgICAgICAgICAgQVNTRVJUKCFpc0lubGluZU9mZnNldCh2
YXJpYW50Lm9mZnNldCgpKSk7CiAKICAgICAgICAgICAgIE5vZGUqIHJlYWxsb2NhdGVQcm9wZXJ0
eVN0b3JhZ2UgPSBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAJKHJldmlzaW9uIDE3MDAzOCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05MjgsNyArOTI4
LDkgQEAgdm9pZCBHcmFwaDo6dmlzaXRDaGlsZHJlbihTbG90VmlzaXRvciYgdgogICAgICAgICAg
ICAgY2FzZSBNdWx0aVB1dEJ5T2Zmc2V0OgogICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQg
aSA9IG5vZGUtPm11bHRpUHV0QnlPZmZzZXREYXRhKCkudmFyaWFudHMuc2l6ZSgpOyBpLS07KSB7
CiAgICAgICAgICAgICAgICAgICAgIFB1dEJ5SWRWYXJpYW50JiB2YXJpYW50ID0gbm9kZS0+bXVs
dGlQdXRCeU9mZnNldERhdGEoKS52YXJpYW50c1tpXTsKLSAgICAgICAgICAgICAgICAgICAgdmlz
aXRvci5hcHBlbmRVbmJhcnJpZXJlZFJlYWRPbmx5UG9pbnRlcih2YXJpYW50Lm9sZFN0cnVjdHVy
ZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgY29uc3QgU3RydWN0dXJlU2V0JiBzZXQgPSB2YXJp
YW50Lm9sZFN0cnVjdHVyZSgpOworICAgICAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGog
PSBzZXQuc2l6ZSgpOyBqLS07KQorICAgICAgICAgICAgICAgICAgICAgICAgdmlzaXRvci5hcHBl
bmRVbmJhcnJpZXJlZFJlYWRPbmx5UG9pbnRlcihzZXRbal0pOwogICAgICAgICAgICAgICAgICAg
ICBpZiAodmFyaWFudC5raW5kKCkgPT0gUHV0QnlJZFZhcmlhbnQ6OlRyYW5zaXRpb24pCiAgICAg
ICAgICAgICAgICAgICAgICAgICB2aXNpdG9yLmFwcGVuZFVuYmFycmllcmVkUmVhZE9ubHlQb2lu
dGVyKHZhcmlhbnQubmV3U3RydWN0dXJlKCkpOwogICAgICAgICAgICAgICAgIH0KSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmNwcAkocmV2aXNpb24gMTcwMDM4KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzcs
NyArMzcsNyBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiBib29sIE11bHRpUHV0
QnlPZmZzZXREYXRhOjp3cml0ZXNTdHJ1Y3R1cmVzKCkgY29uc3QKIHsKICAgICBmb3IgKHVuc2ln
bmVkIGkgPSB2YXJpYW50cy5zaXplKCk7IGktLTspIHsKLSAgICAgICAgaWYgKHZhcmlhbnRzW2ld
LmtpbmQoKSA9PSBQdXRCeUlkVmFyaWFudDo6VHJhbnNpdGlvbikKKyAgICAgICAgaWYgKHZhcmlh
bnRzW2ldLndyaXRlc1N0cnVjdHVyZXMoKSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAg
IH0KICAgICByZXR1cm4gZmFsc2U7CkBAIC00NiwxNCArNDYsOCBAQCBib29sIE11bHRpUHV0QnlP
ZmZzZXREYXRhOjp3cml0ZXNTdHJ1Y3R1CiBib29sIE11bHRpUHV0QnlPZmZzZXREYXRhOjpyZWFs
bG9jYXRlc1N0b3JhZ2UoKSBjb25zdAogewogICAgIGZvciAodW5zaWduZWQgaSA9IHZhcmlhbnRz
LnNpemUoKTsgaS0tOykgewotICAgICAgICBpZiAodmFyaWFudHNbaV0ua2luZCgpICE9IFB1dEJ5
SWRWYXJpYW50OjpUcmFuc2l0aW9uKQotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIAot
ICAgICAgICBpZiAodmFyaWFudHNbaV0ub2xkU3RydWN0dXJlKCktPm91dE9mTGluZUNhcGFjaXR5
KCkgPT0KLSAgICAgICAgICAgIHZhcmlhbnRzW2ldLm5ld1N0cnVjdHVyZSgpLT5vdXRPZkxpbmVD
YXBhY2l0eSgpKQotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIAotICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICAgICAgaWYgKHZhcmlhbnRzW2ldLnJlYWxsb2NhdGVzU3RvcmFnZSgpKQor
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgIHJldHVybiBmYWxzZTsKIH0KSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJicmV2aWF0aW9ucy5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJicmV2aWF0aW9ucy5oCShyZXZp
c2lvbiAxNzAwMzgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFiYnJldmlhdGlv
bnMuaAkod29ya2luZyBjb3B5KQpAQCAtMTQ5LDggKzE0OSw3IEBAIHN0YXRpYyBpbmxpbmUgdm9p
ZCBzZXRGdW5jdGlvbkNhbGxpbmdDb24KIHN0YXRpYyBpbmxpbmUgdm9pZCBhZGRUYXJnZXREZXBl
bmRlbnRGdW5jdGlvbkF0dHIoTFZhbHVlIGZ1bmN0aW9uLCBjb25zdCBjaGFyKiBrZXksIGNvbnN0
IGNoYXIqIHZhbHVlKSB7IGxsdm0tPkFkZFRhcmdldERlcGVuZGVudEZ1bmN0aW9uQXR0cihmdW5j
dGlvbiwga2V5LCB2YWx1ZSk7IH0KIHN0YXRpYyBpbmxpbmUgdm9pZCByZW1vdmVGdW5jdGlvbkF0
dHIoTFZhbHVlIGZ1bmN0aW9uLCBMTFZNQXR0cmlidXRlIHBhKSB7IGxsdm0tPlJlbW92ZUZ1bmN0
aW9uQXR0cihmdW5jdGlvbiwgcGEpOyB9CiAKLQotCitzdGF0aWMgaW5saW5lIExMVk1MaW5rYWdl
IGdldExpbmthZ2UoTFZhbHVlIGdsb2JhbCkgeyByZXR1cm4gbGx2bS0+R2V0TGlua2FnZShnbG9i
YWwpOyB9CiBzdGF0aWMgaW5saW5lIHZvaWQgc2V0TGlua2FnZShMVmFsdWUgZ2xvYmFsLCBMTFZN
TGlua2FnZSBsaW5rYWdlKSB7IGxsdm0tPlNldExpbmthZ2UoZ2xvYmFsLCBsaW5rYWdlKTsgfQog
c3RhdGljIGlubGluZSB2b2lkIHNldFZpc2liaWxpdHkoTFZhbHVlIGdsb2JhbCwgTExWTVZpc2li
aWxpdHkgdml6KSB7IGxsdm0tPlNldFZpc2liaWxpdHkoZ2xvYmFsLCB2aXopOyB9CiBzdGF0aWMg
aW5saW5lIExMVk1Cb29sIGlzRGVjbGFyYXRpb24oTFZhbHVlIGdsb2JhbCkgeyByZXR1cm4gbGx2
bS0+SXNEZWNsYXJhdGlvbihnbG9iYWwpOyB9CkBAIC0xNjMsMTAgKzE2Miw2IEBAIHN0YXRpYyBp
bmxpbmUgTFZhbHVlIGdldE5hbWVkR2xvYmFsKExNb2QKIHN0YXRpYyBpbmxpbmUgTFZhbHVlIGdl
dEZpcnN0R2xvYmFsKExNb2R1bGUgbW9kdWxlKSB7IHJldHVybiBsbHZtLT5HZXRGaXJzdEdsb2Jh
bChtb2R1bGUpOyB9CiBzdGF0aWMgaW5saW5lIExWYWx1ZSBnZXROZXh0R2xvYmFsKExWYWx1ZSBn
bG9iYWwpIHsgcmV0dXJuIGxsdm0tPkdldE5leHRHbG9iYWwoZ2xvYmFsKTsgfQogCi0KLQotCi0K
IHN0YXRpYyBpbmxpbmUgTFZhbHVlIGFkZEV4dGVybkZ1bmN0aW9uKExNb2R1bGUgbW9kdWxlLCBj
b25zdCBjaGFyKiBuYW1lLCBMVHlwZSB0eXBlKQogewogICAgIExWYWx1ZSByZXN1bHQgPSBhZGRG
dW5jdGlvbihtb2R1bGUsIG5hbWUsIHR5cGUpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExMb3dlckRGR1RvTExWTS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvTExWTS5jcHAJKHJldmlzaW9uIDE3MDAzOCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zMjg3LDggKzMyODcsMTAgQEAgcHJpdmF0ZToKICAgICAgICAgVmVjdG9yPFN3aXRj
aENhc2UsIDI+IGNhc2VzOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBkYXRhLnZhcmlhbnRz
LnNpemUoKTsgaS0tOykgewogICAgICAgICAgICAgUHV0QnlJZFZhcmlhbnQgdmFyaWFudCA9IGRh
dGEudmFyaWFudHNbaV07Ci0gICAgICAgICAgICBjYXNlcy5hcHBlbmQoCi0gICAgICAgICAgICAg
ICAgU3dpdGNoQ2FzZSh3ZWFrU3RydWN0dXJlKHZhcmlhbnQub2xkU3RydWN0dXJlKCkpLCBibG9j
a3NbaV0sIFdlaWdodCgxKSkpOworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBqID0gdmFyaWFu
dC5vbGRTdHJ1Y3R1cmUoKS5zaXplKCk7IGotLTspIHsKKyAgICAgICAgICAgICAgICBjYXNlcy5h
cHBlbmQoCisgICAgICAgICAgICAgICAgICAgIFN3aXRjaENhc2Uod2Vha1N0cnVjdHVyZSh2YXJp
YW50Lm9sZFN0cnVjdHVyZSgpW2pdKSwgYmxvY2tzW2ldLCBXZWlnaHQoMSkpKTsKKyAgICAgICAg
ICAgIH0KICAgICAgICAgfQogICAgICAgICBtX291dC5zd2l0Y2hJbnN0cnVjdGlvbigKICAgICAg
ICAgICAgIG1fb3V0LmxvYWQzMihiYXNlLCBtX2hlYXBzLkpTQ2VsbF9zdHJ1Y3R1cmVJRCksIGNh
c2VzLCBleGl0LCBXZWlnaHQoMCkpOwpAQCAtMzMwOSwxNCArMzMxMSwxNSBAQCBwcml2YXRlOgog
ICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBtX2dyYXBoLm1fcGxhbi50cmFu
c2l0aW9ucy5hZGRMYXppbHkoCiAgICAgICAgICAgICAgICAgICAgIGNvZGVCbG9jaygpLCBtX25v
ZGUtPm9yaWdpbi5zZW1hbnRpYy5jb2RlT3JpZ2luT3duZXIoKSwKLSAgICAgICAgICAgICAgICAg
ICAgdmFyaWFudC5vbGRTdHJ1Y3R1cmUoKSwgdmFyaWFudC5uZXdTdHJ1Y3R1cmUoKSk7CisgICAg
ICAgICAgICAgICAgICAgIHZhcmlhbnQub2xkU3RydWN0dXJlRm9yVHJhbnNpdGlvbigpLCB2YXJp
YW50Lm5ld1N0cnVjdHVyZSgpKTsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBz
dG9yYWdlID0gc3RvcmFnZUZvclRyYW5zaXRpb24oCi0gICAgICAgICAgICAgICAgICAgIGJhc2Us
IHZhcmlhbnQub2Zmc2V0KCksIHZhcmlhbnQub2xkU3RydWN0dXJlKCksIHZhcmlhbnQubmV3U3Ry
dWN0dXJlKCkpOworICAgICAgICAgICAgICAgICAgICBiYXNlLCB2YXJpYW50Lm9mZnNldCgpLAor
ICAgICAgICAgICAgICAgICAgICB2YXJpYW50Lm9sZFN0cnVjdHVyZUZvclRyYW5zaXRpb24oKSwg
dmFyaWFudC5uZXdTdHJ1Y3R1cmUoKSk7CiAKLSAgICAgICAgICAgICAgICBBU1NFUlQodmFyaWFu
dC5vbGRTdHJ1Y3R1cmUoKS0+aW5kZXhpbmdUeXBlKCkgPT0gdmFyaWFudC5uZXdTdHJ1Y3R1cmUo
KS0+aW5kZXhpbmdUeXBlKCkpOwotICAgICAgICAgICAgICAgIEFTU0VSVCh2YXJpYW50Lm9sZFN0
cnVjdHVyZSgpLT50eXBlSW5mbygpLmlubGluZVR5cGVGbGFncygpID09IHZhcmlhbnQubmV3U3Ry
dWN0dXJlKCktPnR5cGVJbmZvKCkuaW5saW5lVHlwZUZsYWdzKCkpOwotICAgICAgICAgICAgICAg
IEFTU0VSVCh2YXJpYW50Lm9sZFN0cnVjdHVyZSgpLT50eXBlSW5mbygpLnR5cGUoKSA9PSB2YXJp
YW50Lm5ld1N0cnVjdHVyZSgpLT50eXBlSW5mbygpLnR5cGUoKSk7CisgICAgICAgICAgICAgICAg
QVNTRVJUKHZhcmlhbnQub2xkU3RydWN0dXJlRm9yVHJhbnNpdGlvbigpLT5pbmRleGluZ1R5cGUo
KSA9PSB2YXJpYW50Lm5ld1N0cnVjdHVyZSgpLT5pbmRleGluZ1R5cGUoKSk7CisgICAgICAgICAg
ICAgICAgQVNTRVJUKHZhcmlhbnQub2xkU3RydWN0dXJlRm9yVHJhbnNpdGlvbigpLT50eXBlSW5m
bygpLmlubGluZVR5cGVGbGFncygpID09IHZhcmlhbnQubmV3U3RydWN0dXJlKCktPnR5cGVJbmZv
KCkuaW5saW5lVHlwZUZsYWdzKCkpOworICAgICAgICAgICAgICAgIEFTU0VSVCh2YXJpYW50Lm9s
ZFN0cnVjdHVyZUZvclRyYW5zaXRpb24oKS0+dHlwZUluZm8oKS50eXBlKCkgPT0gdmFyaWFudC5u
ZXdTdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS50eXBlKCkpOwogICAgICAgICAgICAgICAgIG1fb3V0
LnN0b3JlMzIoCiAgICAgICAgICAgICAgICAgICAgIHdlYWtTdHJ1Y3R1cmUodmFyaWFudC5uZXdT
dHJ1Y3R1cmUoKSksIGJhc2UsIG1faGVhcHMuSlNDZWxsX3N0cnVjdHVyZUlEKTsKICAgICAgICAg
ICAgIH0KQEAgLTQwOTIsNyArNDA5NSw5IEBAIHByaXZhdGU6CiAgICAgICAgIAogICAgICAgICBm
b3IgKENTdHJpbmcqIHN5bWJvbCA9IG5hbWVkRnVuY3Rpb25zLmJlZ2luKCk7IHN5bWJvbCAhPSBu
YW1lZEZ1bmN0aW9ucy5lbmQoKTsgKytzeW1ib2wpIHsKICAgICAgICAgICAgIExWYWx1ZSBmdW5j
dGlvbiA9IGdldE5hbWVkRnVuY3Rpb24obV9mdGxTdGF0ZS5tb2R1bGUsIHN5bWJvbC0+ZGF0YSgp
KTsKLSAgICAgICAgICAgIHNldFZpc2liaWxpdHkoZnVuY3Rpb24sIExMVk1IaWRkZW5WaXNpYmls
aXR5KTsKKyAgICAgICAgICAgIExMVk1MaW5rYWdlIGxpbmthZ2UgPSBnZXRMaW5rYWdlKGZ1bmN0
aW9uKTsKKyAgICAgICAgICAgIGlmIChsaW5rYWdlICE9IExMVk1JbnRlcm5hbExpbmthZ2UgJiYg
bGlua2FnZSAhPSBMTFZNUHJpdmF0ZUxpbmthZ2UpCisgICAgICAgICAgICAgICAgc2V0VmlzaWJp
bGl0eShmdW5jdGlvbiwgTExWTUhpZGRlblZpc2liaWxpdHkpOwogICAgICAgICAgICAgaWYgKCFp
c0RlY2xhcmF0aW9uKGZ1bmN0aW9uKSkgewogICAgICAgICAgICAgICAgIHNldExpbmthZ2UoZnVu
Y3Rpb24sIExMVk1Qcml2YXRlTGlua2FnZSk7CiAKQEAgLTQxMDMsNyArNDEwOCw5IEBAIHByaXZh
dGU6CiAKICAgICAgICAgZm9yIChDU3RyaW5nKiBzeW1ib2wgPSBuYW1lZEdsb2JhbHMuYmVnaW4o
KTsgc3ltYm9sICE9IG5hbWVkR2xvYmFscy5lbmQoKTsgKytzeW1ib2wpIHsKICAgICAgICAgICAg
IExWYWx1ZSBnbG9iYWwgPSBnZXROYW1lZEdsb2JhbChtX2Z0bFN0YXRlLm1vZHVsZSwgc3ltYm9s
LT5kYXRhKCkpOwotICAgICAgICAgICAgc2V0VmlzaWJpbGl0eShnbG9iYWwsIExMVk1IaWRkZW5W
aXNpYmlsaXR5KTsKKyAgICAgICAgICAgIExMVk1MaW5rYWdlIGxpbmthZ2UgPSBnZXRMaW5rYWdl
KGdsb2JhbCk7CisgICAgICAgICAgICBpZiAobGlua2FnZSAhPSBMTFZNSW50ZXJuYWxMaW5rYWdl
ICYmIGxpbmthZ2UgIT0gTExWTVByaXZhdGVMaW5rYWdlKQorICAgICAgICAgICAgICAgIHNldFZp
c2liaWxpdHkoZ2xvYmFsLCBMTFZNSGlkZGVuVmlzaWJpbGl0eSk7CiAgICAgICAgICAgICBpZiAo
IWlzRGVjbGFyYXRpb24oZ2xvYmFsKSkKICAgICAgICAgICAgICAgICBzZXRMaW5rYWdlKGdsb2Jh
bCwgTExWTVByaXZhdGVMaW5rYWdlKTsKICAgICAgICAgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>233266</attachid>
            <date>2014-06-17 16:14:18 -0700</date>
            <delta_ts>2014-06-17 16:35:05 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>25309</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTcwMDgyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ1IEBA
CisyMDE0LTA2LTE3ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
W2Z0bG9wdF0gREZHIHB1dF9ieV9pZCBzaG91bGQgaW5saW5lIGFjY2Vzc2VzIHdpdGggYSBzbGln
aHRseSBwb2x5bW9ycGhpYyBiYXNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMzM5NjQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIGJ5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuY3BwOgorICAgICAgICAoSlND
OjpQdXRCeUlkU3RhdHVzOjphcHBlbmRWYXJpYW50KToKKyAgICAgICAgKEpTQzo6UHV0QnlJZFN0
YXR1czo6Y29tcHV0ZUZvclN0dWJJbmZvKToKKyAgICAgICAgKiBieXRlY29kZS9QdXRCeUlkVmFy
aWFudC5jcHA6CisgICAgICAgIChKU0M6OlB1dEJ5SWRWYXJpYW50OjpvbGRTdHJ1Y3R1cmVGb3JU
cmFuc2l0aW9uKToKKyAgICAgICAgKEpTQzo6UHV0QnlJZFZhcmlhbnQ6OndyaXRlc1N0cnVjdHVy
ZXMpOgorICAgICAgICAoSlNDOjpQdXRCeUlkVmFyaWFudDo6cmVhbGxvY2F0ZXNTdG9yYWdlKToK
KyAgICAgICAgKEpTQzo6UHV0QnlJZFZhcmlhbnQ6OmF0dGVtcHRUb01lcmdlKToKKyAgICAgICAg
KEpTQzo6UHV0QnlJZFZhcmlhbnQ6OmF0dGVtcHRUb01lcmdlVHJhbnNpdGlvbldpdGhSZXBsYWNl
KToKKyAgICAgICAgKEpTQzo6UHV0QnlJZFZhcmlhbnQ6OmR1bXBJbkNvbnRleHQpOgorICAgICAg
ICAqIGJ5dGVjb2RlL1B1dEJ5SWRWYXJpYW50Lmg6CisgICAgICAgIChKU0M6OlB1dEJ5SWRWYXJp
YW50OjpQdXRCeUlkVmFyaWFudCk6CisgICAgICAgIChKU0M6OlB1dEJ5SWRWYXJpYW50OjpyZXBs
YWNlKToKKyAgICAgICAgKEpTQzo6UHV0QnlJZFZhcmlhbnQ6OnRyYW5zaXRpb24pOgorICAgICAg
ICAoSlNDOjpQdXRCeUlkVmFyaWFudDo6c3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6UHV0QnlJ
ZFZhcmlhbnQ6Om9sZFN0cnVjdHVyZSk6CisgICAgICAgICogZGZnL0RGR0Fic3RyYWN0SW50ZXJw
cmV0ZXJJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJhY3RJbnRlcnByZXRlcjxB
YnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKToKKyAgICAgICAgKiBkZmcvREZHQnl0
ZUNvZGVQYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5k
bGVQdXRCeUlkKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9j
ayk6CisgICAgICAgICogZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcDoKKyAgICAgICAg
KEpTQzo6REZHOjpDb25zdGFudEZvbGRpbmdQaGFzZTo6Zm9sZENvbnN0YW50cyk6CisgICAgICAg
IChKU0M6OkRGRzo6Q29uc3RhbnRGb2xkaW5nUGhhc2U6OmVtaXRQdXRCeU9mZnNldCk6CisgICAg
ICAgICogZGZnL0RGR0dyYXBoLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpHcmFwaDo6dmlzaXRD
aGlsZHJlbik6CisgICAgICAgICogZGZnL0RGR05vZGUuY3BwOgorICAgICAgICAoSlNDOjpERkc6
Ok11bHRpUHV0QnlPZmZzZXREYXRhOjp3cml0ZXNTdHJ1Y3R1cmVzKToKKyAgICAgICAgKEpTQzo6
REZHOjpNdWx0aVB1dEJ5T2Zmc2V0RGF0YTo6cmVhbGxvY2F0ZXNTdG9yYWdlKToKKyAgICAgICAg
KiBmdGwvRlRMQWJicmV2aWF0aW9ucy5oOgorICAgICAgICAoSlNDOjpGVEw6OmdldExpbmthZ2Up
OgorICAgICAgICAqIGZ0bC9GVExMb3dlckRGR1RvTExWTS5jcHA6CisgICAgICAgIChKU0M6OkZU
TDo6TG93ZXJERkdUb0xMVk06OmNvbXBpbGVNdWx0aVB1dEJ5T2Zmc2V0KToKKyAgICAgICAgKEpT
Qzo6RlRMOjpMb3dlckRGR1RvTExWTTo6Z2V0TW9kdWxlQnlQYXRoRm9yU3ltYm9sKToKKwogMjAx
NC0wNi0xNyAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgogCiAgICAgICAgIFtmdGxv
cHRdIEZvbGQgY29uc3RhbnQgUGhpcwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1B1dEJ5SWRTdGF0dXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9QdXRCeUlkU3RhdHVzLmNwcAkocmV2aXNpb24gMTcwMDU3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC00MCw3ICs0MCwxMSBAQCBuYW1lc3BhY2UgSlNDIHsKIGJvb2wgUHV0QnlJZFN0YXR1czo6
YXBwZW5kVmFyaWFudChjb25zdCBQdXRCeUlkVmFyaWFudCYgdmFyaWFudCkKIHsKICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgbV92YXJpYW50cy5zaXplKCk7ICsraSkgewotICAgICAgICBp
ZiAobV92YXJpYW50c1tpXS5vbGRTdHJ1Y3R1cmUoKSA9PSB2YXJpYW50Lm9sZFN0cnVjdHVyZSgp
KQorICAgICAgICBpZiAobV92YXJpYW50c1tpXS5hdHRlbXB0VG9NZXJnZSh2YXJpYW50KSkKKyAg
ICAgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgbV92YXJpYW50cy5zaXplKCk7ICsraSkgeworICAgICAgICBpZiAobV92YXJpYW50c1tpXS5v
bGRTdHJ1Y3R1cmUoKS5vdmVybGFwcyh2YXJpYW50Lm9sZFN0cnVjdHVyZSgpKSkKICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgbV92YXJpYW50cy5hcHBlbmQodmFyaWFudCk7
CkBAIC0xOTQsMTEgKzE5OCwxNSBAQCBQdXRCeUlkU3RhdHVzIFB1dEJ5SWRTdGF0dXM6OmNvbXB1
dGVGb3JTCiAgICAgICAgICAgICAgICAgICAgIGFjY2Vzcy5uZXdTdHJ1Y3R1cmUoKS0+Z2V0Q29u
Y3VycmVudGx5KCpwcm9maWxlZEJsb2NrLT52bSgpLCB1aWQpOwogICAgICAgICAgICAgICAgIGlm
ICghaXNWYWxpZE9mZnNldChvZmZzZXQpKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gUHV0
QnlJZFN0YXR1cyhUYWtlc1Nsb3dQYXRoKTsKKyAgICAgICAgICAgICAgICBSZWZQdHI8SW50ZW5k
ZWRTdHJ1Y3R1cmVDaGFpbj4gY2hhaW47CisgICAgICAgICAgICAgICAgaWYgKGFjY2Vzcy5jaGFp
bigpKSB7CisgICAgICAgICAgICAgICAgICAgIGNoYWluID0gYWRvcHRSZWYobmV3IEludGVuZGVk
U3RydWN0dXJlQ2hhaW4oCisgICAgICAgICAgICAgICAgICAgICAgICBwcm9maWxlZEJsb2NrLCBh
Y2Nlc3Mub2xkU3RydWN0dXJlKCksIGFjY2Vzcy5jaGFpbigpKSk7CisgICAgICAgICAgICAgICAg
ICAgIGlmICghY2hhaW4tPmlzU3RpbGxWYWxpZCgpKQorICAgICAgICAgICAgICAgICAgICAgICAg
Y29udGludWU7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGJvb2wgb2sgPSBy
ZXN1bHQuYXBwZW5kVmFyaWFudChQdXRCeUlkVmFyaWFudDo6dHJhbnNpdGlvbigKLSAgICAgICAg
ICAgICAgICAgICAgYWNjZXNzLm9sZFN0cnVjdHVyZSgpLCBhY2Nlc3MubmV3U3RydWN0dXJlKCks
Ci0gICAgICAgICAgICAgICAgICAgIGFjY2Vzcy5jaGFpbigpID8gYWRvcHRSZWYobmV3IEludGVu
ZGVkU3RydWN0dXJlQ2hhaW4oCi0gICAgICAgICAgICAgICAgICAgICAgICBwcm9maWxlZEJsb2Nr
LCBhY2Nlc3Mub2xkU3RydWN0dXJlKCksIGFjY2Vzcy5jaGFpbigpKSkgOiAwLAotICAgICAgICAg
ICAgICAgICAgICBvZmZzZXQpKTsKKyAgICAgICAgICAgICAgICAgICAgYWNjZXNzLm9sZFN0cnVj
dHVyZSgpLCBhY2Nlc3MubmV3U3RydWN0dXJlKCksIGNoYWluLmdldCgpLCBvZmZzZXQpKTsKICAg
ICAgICAgICAgICAgICBpZiAoIW9rKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gUHV0QnlJ
ZFN0YXR1cyhUYWtlc1Nsb3dQYXRoKTsKICAgICAgICAgICAgICAgICBicmVhazsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkVmFyaWFudC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRWYXJpYW50LmNwcAko
cmV2aXNpb24gMTcwMDU3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5
SWRWYXJpYW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsNiArMzAsOTkgQEAKIAogbmFtZXNw
YWNlIEpTQyB7CiAKK1N0cnVjdHVyZSogUHV0QnlJZFZhcmlhbnQ6Om9sZFN0cnVjdHVyZUZvclRy
YW5zaXRpb24oKSBjb25zdAoreworICAgIEFTU0VSVChraW5kKCkgPT0gVHJhbnNpdGlvbik7Cisg
ICAgQVNTRVJUKG1fb2xkU3RydWN0dXJlLnNpemUoKSA8PSAyKTsKKyAgICBmb3IgKHVuc2lnbmVk
IGkgPSBtX29sZFN0cnVjdHVyZS5zaXplKCk7IGktLTspIHsKKyAgICAgICAgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUgPSBtX29sZFN0cnVjdHVyZVtpXTsKKyAgICAgICAgaWYgKHN0cnVjdHVyZSAhPSBt
X25ld1N0cnVjdHVyZSkKKyAgICAgICAgICAgIHJldHVybiBzdHJ1Y3R1cmU7CisgICAgfQorICAg
IFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKK2Jvb2wgUHV0QnlJZFZhcmlhbnQ6
OndyaXRlc1N0cnVjdHVyZXMoKSBjb25zdAoreworICAgIHJldHVybiBraW5kKCkgPT0gVHJhbnNp
dGlvbjsKK30KKworYm9vbCBQdXRCeUlkVmFyaWFudDo6cmVhbGxvY2F0ZXNTdG9yYWdlKCkgY29u
c3QKK3sKKyAgICBpZiAoa2luZCgpICE9IFRyYW5zaXRpb24pCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAKKyAgICBpZiAob2xkU3RydWN0dXJlRm9yVHJhbnNpdGlvbigpLT5vdXRPZkxpbmVD
YXBhY2l0eSgpID09IG5ld1N0cnVjdHVyZSgpLT5vdXRPZkxpbmVDYXBhY2l0eSgpKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgUHV0QnlJ
ZFZhcmlhbnQ6OmF0dGVtcHRUb01lcmdlKGNvbnN0IFB1dEJ5SWRWYXJpYW50JiBvdGhlcikKK3sK
KyAgICBpZiAobV9vZmZzZXQgIT0gb3RoZXIubV9vZmZzZXQpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAKKyAgICBzd2l0Y2ggKG1fa2luZCkgeworICAgIGNhc2UgUmVwbGFjZToKKyAgICAg
ICAgc3dpdGNoIChvdGhlci5tX2tpbmQpIHsKKyAgICAgICAgY2FzZSBSZXBsYWNlOiB7CisgICAg
ICAgICAgICBBU1NFUlQobV9jb25zdGFudENoZWNrcy5pc0VtcHR5KCkpOworICAgICAgICAgICAg
QVNTRVJUKG90aGVyLm1fY29uc3RhbnRDaGVja3MuaXNFbXB0eSgpKTsKKyAgICAgICAgICAgIAor
ICAgICAgICAgICAgbV9vbGRTdHJ1Y3R1cmUubWVyZ2Uob3RoZXIubV9vbGRTdHJ1Y3R1cmUpOwor
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAg
ICBjYXNlIFRyYW5zaXRpb246IHsKKyAgICAgICAgICAgIFB1dEJ5SWRWYXJpYW50IG5ld1Zhcmlh
bnQgPSBvdGhlcjsKKyAgICAgICAgICAgIGlmIChuZXdWYXJpYW50LmF0dGVtcHRUb01lcmdlVHJh
bnNpdGlvbldpdGhSZXBsYWNlKCp0aGlzKSkgeworICAgICAgICAgICAgICAgICp0aGlzID0gbmV3
VmFyaWFudDsKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAg
IGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAg
CisgICAgY2FzZSBUcmFuc2l0aW9uOgorICAgICAgICBzd2l0Y2ggKG90aGVyLm1fa2luZCkgewor
ICAgICAgICBjYXNlIFJlcGxhY2U6CisgICAgICAgICAgICByZXR1cm4gYXR0ZW1wdFRvTWVyZ2VU
cmFuc2l0aW9uV2l0aFJlcGxhY2Uob3RoZXIpOworICAgICAgICAgICAgCisgICAgICAgIGRlZmF1
bHQ6CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgCisgICAg
ZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KK30KKworYm9vbCBQdXRCeUlk
VmFyaWFudDo6YXR0ZW1wdFRvTWVyZ2VUcmFuc2l0aW9uV2l0aFJlcGxhY2UoY29uc3QgUHV0QnlJ
ZFZhcmlhbnQmIHJlcGxhY2UpCit7CisgICAgQVNTRVJUKG1fa2luZCA9PSBUcmFuc2l0aW9uKTsK
KyAgICBBU1NFUlQocmVwbGFjZS5tX2tpbmQgPT0gUmVwbGFjZSk7CisgICAgQVNTRVJUKG1fb2Zm
c2V0ID09IHJlcGxhY2UubV9vZmZzZXQpOworICAgIEFTU0VSVCghcmVwbGFjZS53cml0ZXNTdHJ1
Y3R1cmVzKCkpOworICAgIEFTU0VSVCghcmVwbGFjZS5yZWFsbG9jYXRlc1N0b3JhZ2UoKSk7Cisg
ICAgCisgICAgLy8gVGhpcyBzb3J0IG9mIG1lcmdpbmcgb25seSB3b3JrcyB3aGVuIHdlIGhhdmUg
b25lIHBhdGggYWxvbmcgd2hpY2ggd2UgYWRkIGEgbmV3IGZpZWxkIHdoaWNoCisgICAgLy8gdHJh
bnNpdGlvbnMgdG8gc3RydWN0dXJlIFMgd2hpbGUgdGhlIG90aGVyIHBhdGggd2FzIGFscmVhZHkg
b24gc3RydWN0dXJlIFMuIFRoaXMgZG9lc24ndAorICAgIC8vIHdvcmsgaWYgd2UgbmVlZCB0byBy
ZWFsbG9jYXRlIGFueXRoaW5nIG9yIGlmIHRoZSByZXBsYWNlIHBhdGggaXMgcG9seW1vcnBoaWMu
CisgICAgCisgICAgaWYgKHJlYWxsb2NhdGVzU3RvcmFnZSgpKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgCisgICAgaWYgKHJlcGxhY2UubV9vbGRTdHJ1Y3R1cmUub25seVN0cnVjdHVyZSgp
ICE9IG1fbmV3U3RydWN0dXJlKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgbV9v
bGRTdHJ1Y3R1cmUubWVyZ2UobV9uZXdTdHJ1Y3R1cmUpOworICAgIHJldHVybiB0cnVlOworfQor
CiB2b2lkIFB1dEJ5SWRWYXJpYW50OjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CiB7CiAg
ICAgZHVtcEluQ29udGV4dChvdXQsIDApOwpAQCAtNDQsMTIgKzEzNywxMiBAQCB2b2lkIFB1dEJ5
SWRWYXJpYW50OjpkdW1wSW5Db250ZXh0KFByaW50CiAgICAgICAgIAogICAgIGNhc2UgUmVwbGFj
ZToKICAgICAgICAgb3V0LnByaW50KAotICAgICAgICAgICAgIjxSZXBsYWNlOiAiLCBwb2ludGVy
RHVtcEluQ29udGV4dChzdHJ1Y3R1cmUoKSwgY29udGV4dCksICIsICIsIG9mZnNldCgpLCAiPiIp
OworICAgICAgICAgICAgIjxSZXBsYWNlOiAiLCBpbkNvbnRleHQoc3RydWN0dXJlKCksIGNvbnRl
eHQpLCAiLCAiLCBvZmZzZXQoKSwgIj4iKTsKICAgICAgICAgcmV0dXJuOwogICAgICAgICAKICAg
ICBjYXNlIFRyYW5zaXRpb246CiAgICAgICAgIG91dC5wcmludCgKLSAgICAgICAgICAgICI8VHJh
bnNpdGlvbjogIiwgcG9pbnRlckR1bXBJbkNvbnRleHQob2xkU3RydWN0dXJlKCksIGNvbnRleHQp
LCAiIC0+ICIsCisgICAgICAgICAgICAiPFRyYW5zaXRpb246ICIsIGluQ29udGV4dChvbGRTdHJ1
Y3R1cmUoKSwgY29udGV4dCksICIgLT4gIiwKICAgICAgICAgICAgIHBvaW50ZXJEdW1wSW5Db250
ZXh0KG5ld1N0cnVjdHVyZSgpLCBjb250ZXh0KSwgIiwgWyIsCiAgICAgICAgICAgICBsaXN0RHVt
cEluQ29udGV4dChjb25zdGFudENoZWNrcygpLCBjb250ZXh0KSwgIl0sICIsIG9mZnNldCgpLCAi
PiIpOwogICAgICAgICByZXR1cm47CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvUHV0QnlJZFZhcmlhbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvUHV0QnlJZFZhcmlhbnQuaAkocmV2aXNpb24gMTcwMDU3KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRWYXJpYW50LmgJKHdvcmtpbmcgY29weSkKQEAg
LTI4LDYgKzI4LDcgQEAKIAogI2luY2x1ZGUgIkludGVuZGVkU3RydWN0dXJlQ2hhaW4uaCIKICNp
bmNsdWRlICJQcm9wZXJ0eU9mZnNldC5oIgorI2luY2x1ZGUgIlN0cnVjdHVyZVNldC5oIgogCiBu
YW1lc3BhY2UgSlNDIHsKIApAQCAtNDEsMTMgKzQyLDEyIEBAIHB1YmxpYzoKICAgICAKICAgICBQ
dXRCeUlkVmFyaWFudCgpCiAgICAgICAgIDogbV9raW5kKE5vdFNldCkKLSAgICAgICAgLCBtX29s
ZFN0cnVjdHVyZSgwKQotICAgICAgICAsIG1fbmV3U3RydWN0dXJlKDApCisgICAgICAgICwgbV9u
ZXdTdHJ1Y3R1cmUobnVsbHB0cikKICAgICAgICAgLCBtX29mZnNldChpbnZhbGlkT2Zmc2V0KQog
ICAgIHsKICAgICB9CiAgICAgCi0gICAgc3RhdGljIFB1dEJ5SWRWYXJpYW50IHJlcGxhY2UoU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUsIFByb3BlcnR5T2Zmc2V0IG9mZnNldCkKKyAgICBzdGF0aWMgUHV0
QnlJZFZhcmlhbnQgcmVwbGFjZShjb25zdCBTdHJ1Y3R1cmVTZXQmIHN0cnVjdHVyZSwgUHJvcGVy
dHlPZmZzZXQgb2Zmc2V0KQogICAgIHsKICAgICAgICAgUHV0QnlJZFZhcmlhbnQgcmVzdWx0Owog
ICAgICAgICByZXN1bHQubV9raW5kID0gUmVwbGFjZTsKQEAgLTU3LDcgKzU3LDcgQEAgcHVibGlj
OgogICAgIH0KICAgICAKICAgICBzdGF0aWMgUHV0QnlJZFZhcmlhbnQgdHJhbnNpdGlvbigKLSAg
ICAgICAgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUsIFN0cnVjdHVyZSogbmV3U3RydWN0dXJlLAor
ICAgICAgICBjb25zdCBTdHJ1Y3R1cmVTZXQmIG9sZFN0cnVjdHVyZSwgU3RydWN0dXJlKiBuZXdT
dHJ1Y3R1cmUsCiAgICAgICAgIFBhc3NSZWZQdHI8SW50ZW5kZWRTdHJ1Y3R1cmVDaGFpbj4gc3Ry
dWN0dXJlQ2hhaW4sIFByb3BlcnR5T2Zmc2V0IG9mZnNldCkKICAgICB7CiAgICAgICAgIFB1dEJ5
SWRWYXJpYW50IHJlc3VsdDsKQEAgLTc1LDIzICs3NSwyOCBAQCBwdWJsaWM6CiAgICAgYm9vbCBp
c1NldCgpIGNvbnN0IHsgcmV0dXJuIGtpbmQoKSAhPSBOb3RTZXQ7IH0KICAgICBib29sIG9wZXJh
dG9yISgpIGNvbnN0IHsgcmV0dXJuICFpc1NldCgpOyB9CiAgICAgCi0gICAgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUoKSBjb25zdAorICAgIGNvbnN0IFN0cnVjdHVyZVNldCYgc3RydWN0dXJlKCkgY29u
c3QKICAgICB7CiAgICAgICAgIEFTU0VSVChraW5kKCkgPT0gUmVwbGFjZSk7CiAgICAgICAgIHJl
dHVybiBtX29sZFN0cnVjdHVyZTsKICAgICB9CiAgICAgCi0gICAgU3RydWN0dXJlKiBvbGRTdHJ1
Y3R1cmUoKSBjb25zdAorICAgIGNvbnN0IFN0cnVjdHVyZVNldCYgb2xkU3RydWN0dXJlKCkgY29u
c3QKICAgICB7CiAgICAgICAgIEFTU0VSVChraW5kKCkgPT0gVHJhbnNpdGlvbiB8fCBraW5kKCkg
PT0gUmVwbGFjZSk7CiAgICAgICAgIHJldHVybiBtX29sZFN0cnVjdHVyZTsKICAgICB9CiAgICAg
CisgICAgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmVGb3JUcmFuc2l0aW9uKCkgY29uc3Q7CisgICAg
CiAgICAgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUoKSBjb25zdAogICAgIHsKICAgICAgICAgQVNT
RVJUKGtpbmQoKSA9PSBUcmFuc2l0aW9uKTsKICAgICAgICAgcmV0dXJuIG1fbmV3U3RydWN0dXJl
OwogICAgIH0KKworICAgIGJvb2wgd3JpdGVzU3RydWN0dXJlcygpIGNvbnN0OworICAgIGJvb2wg
cmVhbGxvY2F0ZXNTdG9yYWdlKCkgY29uc3Q7CiAgICAgCiAgICAgY29uc3QgQ29uc3RhbnRTdHJ1
Y3R1cmVDaGVja1ZlY3RvciYgY29uc3RhbnRDaGVja3MoKSBjb25zdAogICAgIHsKQEAgLTEwNSwx
MiArMTEwLDE2IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG1fb2Zmc2V0OwogICAgIH0KICAg
ICAKKyAgICBib29sIGF0dGVtcHRUb01lcmdlKGNvbnN0IFB1dEJ5SWRWYXJpYW50JiBvdGhlcik7
CisgICAgCiAgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3Q7CiAgICAgdm9pZCBkdW1w
SW5Db250ZXh0KFByaW50U3RyZWFtJiwgRHVtcENvbnRleHQqKSBjb25zdDsKIAogcHJpdmF0ZToK
KyAgICBib29sIGF0dGVtcHRUb01lcmdlVHJhbnNpdGlvbldpdGhSZXBsYWNlKGNvbnN0IFB1dEJ5
SWRWYXJpYW50JiByZXBsYWNlKTsKKyAgICAKICAgICBLaW5kIG1fa2luZDsKLSAgICBTdHJ1Y3R1
cmUqIG1fb2xkU3RydWN0dXJlOworICAgIFN0cnVjdHVyZVNldCBtX29sZFN0cnVjdHVyZTsKICAg
ICBTdHJ1Y3R1cmUqIG1fbmV3U3RydWN0dXJlOwogICAgIENvbnN0YW50U3RydWN0dXJlQ2hlY2tW
ZWN0b3IgbV9jb25zdGFudENoZWNrczsKICAgICBQcm9wZXJ0eU9mZnNldCBtX29mZnNldDsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGlu
ZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0
SW50ZXJwcmV0ZXJJbmxpbmVzLmgJKHJldmlzaW9uIDE3MDA1NykKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAkod29ya2luZyBjb3B5
KQpAQCAtMTczMCw3ICsxNzMwLDcgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0
U3RhdGVUeQogICAgICAgICAgICAgYm9vbCBkb25lID0gZmFsc2U7CiAgICAgICAgICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSBub2RlLT5tdWx0aVB1dEJ5T2Zmc2V0RGF0YSgpLnZhcmlhbnRzLnNpemUo
KTsgaS0tOykgewogICAgICAgICAgICAgICAgIGNvbnN0IFB1dEJ5SWRWYXJpYW50JiB2YXJpYW50
ID0gbm9kZS0+bXVsdGlQdXRCeU9mZnNldERhdGEoKS52YXJpYW50c1tpXTsKLSAgICAgICAgICAg
ICAgICBpZiAodmFyaWFudC5vbGRTdHJ1Y3R1cmUoKSAhPSBzdHJ1Y3R1cmUpCisgICAgICAgICAg
ICAgICAgaWYgKCF2YXJpYW50Lm9sZFN0cnVjdHVyZSgpLmNvbnRhaW5zKHN0cnVjdHVyZSkpCiAg
ICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgIAogICAgICAgICAg
ICAgICAgIGlmICh2YXJpYW50LmtpbmQoKSA9PSBQdXRCeUlkVmFyaWFudDo6UmVwbGFjZSkgewpA
QCAtMTc1NiwxMyArMTc1NiwxNCBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RT
dGF0ZVR5CiAgICAgICAgIFRyYW5zaXRpb25WZWN0b3IgdHJhbnNpdGlvbnM7CiAgICAgICAgIGZv
ciAodW5zaWduZWQgaSA9IG5vZGUtPm11bHRpUHV0QnlPZmZzZXREYXRhKCkudmFyaWFudHMuc2l6
ZSgpOyBpLS07KSB7CiAgICAgICAgICAgICBjb25zdCBQdXRCeUlkVmFyaWFudCYgdmFyaWFudCA9
IG5vZGUtPm11bHRpUHV0QnlPZmZzZXREYXRhKCkudmFyaWFudHNbaV07Ci0gICAgICAgICAgICBv
bGRTZXQuYWRkKHZhcmlhbnQub2xkU3RydWN0dXJlKCkpOworICAgICAgICAgICAgb2xkU2V0Lm1l
cmdlKHZhcmlhbnQub2xkU3RydWN0dXJlKCkpOwogICAgICAgICAgICAgaWYgKHZhcmlhbnQua2lu
ZCgpID09IFB1dEJ5SWRWYXJpYW50OjpUcmFuc2l0aW9uKSB7Ci0gICAgICAgICAgICAgICAgdHJh
bnNpdGlvbnMuYXBwZW5kKFRyYW5zaXRpb24odmFyaWFudC5vbGRTdHJ1Y3R1cmUoKSwgdmFyaWFu
dC5uZXdTdHJ1Y3R1cmUoKSkpOworICAgICAgICAgICAgICAgIHRyYW5zaXRpb25zLmFwcGVuZCgK
KyAgICAgICAgICAgICAgICAgICAgVHJhbnNpdGlvbih2YXJpYW50Lm9sZFN0cnVjdHVyZUZvclRy
YW5zaXRpb24oKSwgdmFyaWFudC5uZXdTdHJ1Y3R1cmUoKSkpOwogICAgICAgICAgICAgICAgIG5l
d1NldC5hZGQodmFyaWFudC5uZXdTdHJ1Y3R1cmUoKSk7CiAgICAgICAgICAgICB9IGVsc2Ugewog
ICAgICAgICAgICAgICAgIEFTU0VSVCh2YXJpYW50LmtpbmQoKSA9PSBQdXRCeUlkVmFyaWFudDo6
UmVwbGFjZSk7Ci0gICAgICAgICAgICAgICAgbmV3U2V0LmFkZCh2YXJpYW50Lm9sZFN0cnVjdHVy
ZSgpKTsKKyAgICAgICAgICAgICAgICBuZXdTZXQubWVyZ2UodmFyaWFudC5vbGRTdHJ1Y3R1cmUo
KSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAkocmV2aXNpb24gMTcw
MDU3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTE4NjgsMjAgKzE4NjgsMTkgQEAgdm9pZCBCeXRlQ29kZVBhcnNl
cjo6aGFuZGxlUHV0QnlJZCgKICAgICBhZGRUb0dyYXBoKENoZWNrU3RydWN0dXJlLCBPcEluZm8o
bV9ncmFwaC5hZGRTdHJ1Y3R1cmVTZXQodmFyaWFudC5vbGRTdHJ1Y3R1cmUoKSkpLCBiYXNlKTsK
ICAgICBlbWl0Q2hlY2tzKHZhcmlhbnQuY29uc3RhbnRDaGVja3MoKSk7CiAKLSAgICBBU1NFUlQo
dmFyaWFudC5vbGRTdHJ1Y3R1cmUoKS0+dHJhbnNpdGlvbldhdGNocG9pbnRTZXRIYXNCZWVuSW52
YWxpZGF0ZWQoKSk7CisgICAgQVNTRVJUKHZhcmlhbnQub2xkU3RydWN0dXJlRm9yVHJhbnNpdGlv
bigpLT50cmFuc2l0aW9uV2F0Y2hwb2ludFNldEhhc0JlZW5JbnZhbGlkYXRlZCgpKTsKICAgICAK
ICAgICBOb2RlKiBwcm9wZXJ0eVN0b3JhZ2U7CiAgICAgVHJhbnNpdGlvbiogdHJhbnNpdGlvbiA9
IG1fZ3JhcGgubV90cmFuc2l0aW9ucy5hZGQoCi0gICAgICAgIHZhcmlhbnQub2xkU3RydWN0dXJl
KCksIHZhcmlhbnQubmV3U3RydWN0dXJlKCkpOworICAgICAgICB2YXJpYW50Lm9sZFN0cnVjdHVy
ZUZvclRyYW5zaXRpb24oKSwgdmFyaWFudC5uZXdTdHJ1Y3R1cmUoKSk7CiAKLSAgICBpZiAodmFy
aWFudC5vbGRTdHJ1Y3R1cmUoKS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKQotICAgICAgICAhPSB2YXJp
YW50Lm5ld1N0cnVjdHVyZSgpLT5vdXRPZkxpbmVDYXBhY2l0eSgpKSB7CisgICAgaWYgKHZhcmlh
bnQucmVhbGxvY2F0ZXNTdG9yYWdlKCkpIHsKIAogICAgICAgICAvLyBJZiB3ZSdyZSBncm93aW5n
IHRoZSBwcm9wZXJ0eSBzdG9yYWdlIHRoZW4gaXQgbXVzdCBiZSBiZWNhdXNlIHdlJ3JlCiAgICAg
ICAgIC8vIHN0b3JpbmcgaW50byB0aGUgb3V0LW9mLWxpbmUgc3RvcmFnZS4KICAgICAgICAgQVNT
RVJUKCFpc0lubGluZU9mZnNldCh2YXJpYW50Lm9mZnNldCgpKSk7CiAKLSAgICAgICAgaWYgKCF2
YXJpYW50Lm9sZFN0cnVjdHVyZSgpLT5vdXRPZkxpbmVDYXBhY2l0eSgpKSB7CisgICAgICAgIGlm
ICghdmFyaWFudC5vbGRTdHJ1Y3R1cmVGb3JUcmFuc2l0aW9uKCktPm91dE9mTGluZUNhcGFjaXR5
KCkpIHsKICAgICAgICAgICAgIHByb3BlcnR5U3RvcmFnZSA9IGFkZFRvR3JhcGgoCiAgICAgICAg
ICAgICAgICAgQWxsb2NhdGVQcm9wZXJ0eVN0b3JhZ2UsIE9wSW5mbyh0cmFuc2l0aW9uKSwgYmFz
ZSk7CiAgICAgICAgIH0gZWxzZSB7CkBAIC0yOTUyLDcgKzI5NTEsOCBAQCBib29sIEJ5dGVDb2Rl
UGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkCiAgICAgICAgICAgICAgICAgICAgIGFkZFRvR3Jh
cGgoUHV0QnlJZCwgT3BJbmZvKGlkZW50aWZpZXJOdW1iZXIpLCBnZXQoVmlydHVhbFJlZ2lzdGVy
KHNjb3BlKSksIGdldChWaXJ0dWFsUmVnaXN0ZXIodmFsdWUpKSk7CiAgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBOb2RlKiBiYXNl
ID0gY2VsbENvbnN0YW50V2l0aFN0cnVjdHVyZUNoZWNrKGdsb2JhbE9iamVjdCwgc3RhdHVzWzBd
LnN0cnVjdHVyZSgpKTsKKyAgICAgICAgICAgICAgICBBU1NFUlQoc3RhdHVzWzBdLnN0cnVjdHVy
ZSgpLm9ubHlTdHJ1Y3R1cmUoKSA9PSBzdHJ1Y3R1cmUpOworICAgICAgICAgICAgICAgIE5vZGUq
IGJhc2UgPSBjZWxsQ29uc3RhbnRXaXRoU3RydWN0dXJlQ2hlY2soZ2xvYmFsT2JqZWN0LCBzdHJ1
Y3R1cmUpOwogICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoUGhhbnRvbSwgZ2V0KFZpcnR1YWxS
ZWdpc3RlcihzY29wZSkpKTsKICAgICAgICAgICAgICAgICBoYW5kbGVQdXRCeU9mZnNldChiYXNl
LCBpZGVudGlmaWVyTnVtYmVyLCBzdGF0aWNfY2FzdDxQcm9wZXJ0eU9mZnNldD4ob3BlcmFuZCks
IGdldChWaXJ0dWFsUmVnaXN0ZXIodmFsdWUpKSk7CiAgICAgICAgICAgICAgICAgLy8gS2VlcCBz
Y29wZSBhbGl2ZSB1bnRpbCBhZnRlciBwdXQuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcAkocmV2aXNpb24gMTcw
MDU3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFz
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3MSwxMCArMTcxLDEwIEBAIHByaXZhdGU6CiAgICAg
ICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gZGF0YS52YXJp
YW50cy5zaXplKCk7IGktLTspIHsKICAgICAgICAgICAgICAgICAgICAgY29uc3QgUHV0QnlJZFZh
cmlhbnQmIHZhcmlhbnQgPSBkYXRhLnZhcmlhbnRzW2ldOwotICAgICAgICAgICAgICAgICAgICBp
ZiAodmFyaWFudC5vbGRTdHJ1Y3R1cmUoKSAhPSBzdHJ1Y3R1cmUpCisgICAgICAgICAgICAgICAg
ICAgIGlmICghdmFyaWFudC5vbGRTdHJ1Y3R1cmUoKS5jb250YWlucyhzdHJ1Y3R1cmUpKQogICAg
ICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgICAgIAotICAg
ICAgICAgICAgICAgICAgICBlbWl0UHV0QnlPZmZzZXQoaW5kZXhJbkJsb2NrLCBub2RlLCBzdHJ1
Y3R1cmUsIHZhcmlhbnQsIGRhdGEuaWRlbnRpZmllck51bWJlcik7CisgICAgICAgICAgICAgICAg
ICAgIGVtaXRQdXRCeU9mZnNldChpbmRleEluQmxvY2ssIG5vZGUsIHZhcmlhbnQsIGRhdGEuaWRl
bnRpZmllck51bWJlcik7CiAgICAgICAgICAgICAgICAgICAgIGVsaW1pbmF0ZWQgPSB0cnVlOwog
ICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9CkBAIC0yMzQsNyAr
MjM0LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBpZiAoc3RhdHVzLm51bVZhcmlhbnRz
KCkgIT0gMSkKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgCi0g
ICAgICAgICAgICAgICAgZW1pdFB1dEJ5T2Zmc2V0KGluZGV4SW5CbG9jaywgbm9kZSwgc3RydWN0
dXJlLCBzdGF0dXNbMF0sIGlkZW50aWZpZXJOdW1iZXIpOworICAgICAgICAgICAgICAgIGVtaXRQ
dXRCeU9mZnNldChpbmRleEluQmxvY2ssIG5vZGUsIHN0YXR1c1swXSwgaWRlbnRpZmllck51bWJl
cik7CiAgICAgICAgICAgICAgICAgZWxpbWluYXRlZCA9IHRydWU7CiAgICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgICAgICB9CkBAIC0zNjksMTMgKzM2OSwxMSBAQCBwcml2YXRlOgogICAg
ICAgICBtX2dyYXBoLm1fc3RvcmFnZUFjY2Vzc0RhdGEuYXBwZW5kKHN0b3JhZ2VBY2Nlc3NEYXRh
KTsKICAgICB9CiAKLSAgICB2b2lkIGVtaXRQdXRCeU9mZnNldCh1bnNpZ25lZCBpbmRleEluQmxv
Y2ssIE5vZGUqIG5vZGUsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBQdXRCeUlkVmFyaWFu
dCYgdmFyaWFudCwgdW5zaWduZWQgaWRlbnRpZmllck51bWJlcikKKyAgICB2b2lkIGVtaXRQdXRC
eU9mZnNldCh1bnNpZ25lZCBpbmRleEluQmxvY2ssIE5vZGUqIG5vZGUsIGNvbnN0IFB1dEJ5SWRW
YXJpYW50JiB2YXJpYW50LCB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyKQogICAgIHsKICAgICAg
ICAgTm9kZU9yaWdpbiBvcmlnaW4gPSBub2RlLT5vcmlnaW47CiAgICAgICAgIEVkZ2UgY2hpbGRF
ZGdlID0gbm9kZS0+Y2hpbGQxKCk7CiAgICAgICAgIE5vZGUqIGNoaWxkID0gY2hpbGRFZGdlLm5v
ZGUoKTsKLQotICAgICAgICBBU1NFUlQodmFyaWFudC5vbGRTdHJ1Y3R1cmUoKSA9PSBzdHJ1Y3R1
cmUpOwogICAgICAgICAKICAgICAgICAgYm9vbCBuZWVkc0NlbGxDaGVjayA9IG1fc3RhdGUuZm9y
Tm9kZShjaGlsZCkubV90eXBlICYgflNwZWNDZWxsOwogICAgICAgICAKQEAgLTM5Myw3ICszOTEs
OCBAQCBwcml2YXRlOgogCiAgICAgICAgIFRyYW5zaXRpb24qIHRyYW5zaXRpb24gPSAwOwogICAg
ICAgICBpZiAodmFyaWFudC5raW5kKCkgPT0gUHV0QnlJZFZhcmlhbnQ6OlRyYW5zaXRpb24pIHsK
LSAgICAgICAgICAgIHRyYW5zaXRpb24gPSBtX2dyYXBoLm1fdHJhbnNpdGlvbnMuYWRkKHN0cnVj
dHVyZSwgdmFyaWFudC5uZXdTdHJ1Y3R1cmUoKSk7CisgICAgICAgICAgICB0cmFuc2l0aW9uID0g
bV9ncmFwaC5tX3RyYW5zaXRpb25zLmFkZCgKKyAgICAgICAgICAgICAgICB2YXJpYW50Lm9sZFN0
cnVjdHVyZUZvclRyYW5zaXRpb24oKSwgdmFyaWFudC5uZXdTdHJ1Y3R1cmUoKSk7CiAKICAgICAg
ICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB2YXJpYW50LmNvbnN0YW50Q2hlY2tzKCku
c2l6ZSgpOyArK2kpIHsKICAgICAgICAgICAgICAgICBhZGRTdHJ1Y3R1cmVUcmFuc2l0aW9uQ2hl
Y2soCkBAIC00MDcsMTIgKzQwNiwxMCBAQCBwcml2YXRlOgogCiAgICAgICAgIGlmIChpc0lubGlu
ZU9mZnNldCh2YXJpYW50Lm9mZnNldCgpKSkKICAgICAgICAgICAgIHByb3BlcnR5U3RvcmFnZSA9
IGNoaWxkRWRnZTsKLSAgICAgICAgZWxzZSBpZiAoCi0gICAgICAgICAgICB2YXJpYW50LmtpbmQo
KSA9PSBQdXRCeUlkVmFyaWFudDo6UmVwbGFjZQotICAgICAgICAgICAgfHwgc3RydWN0dXJlLT5v
dXRPZkxpbmVDYXBhY2l0eSgpID09IHZhcmlhbnQubmV3U3RydWN0dXJlKCktPm91dE9mTGluZUNh
cGFjaXR5KCkpIHsKKyAgICAgICAgZWxzZSBpZiAoIXZhcmlhbnQucmVhbGxvY2F0ZXNTdG9yYWdl
KCkpIHsKICAgICAgICAgICAgIHByb3BlcnR5U3RvcmFnZSA9IEVkZ2UobV9pbnNlcnRpb25TZXQu
aW5zZXJ0Tm9kZSgKICAgICAgICAgICAgICAgICBpbmRleEluQmxvY2ssIFNwZWNOb25lLCBHZXRC
dXR0ZXJmbHksIG9yaWdpbiwgY2hpbGRFZGdlKSk7Ci0gICAgICAgIH0gZWxzZSBpZiAoIXN0cnVj
dHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSkgeworICAgICAgICB9IGVsc2UgaWYgKCF2YXJpYW50
Lm9sZFN0cnVjdHVyZUZvclRyYW5zaXRpb24oKS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSkgewogICAg
ICAgICAgICAgQVNTRVJUKHZhcmlhbnQubmV3U3RydWN0dXJlKCktPm91dE9mTGluZUNhcGFjaXR5
KCkpOwogICAgICAgICAgICAgQVNTRVJUKCFpc0lubGluZU9mZnNldCh2YXJpYW50Lm9mZnNldCgp
KSk7CiAgICAgICAgICAgICBOb2RlKiBhbGxvY2F0ZVByb3BlcnR5U3RvcmFnZSA9IG1faW5zZXJ0
aW9uU2V0Lmluc2VydE5vZGUoCkBAIC00MjEsOCArNDE4LDggQEAgcHJpdmF0ZToKICAgICAgICAg
ICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoaW5kZXhJbkJsb2NrLCBTcGVjTm9uZSwgU3Rv
cmVCYXJyaWVyLCBvcmlnaW4sIEVkZ2Uobm9kZS0+Y2hpbGQxKCkubm9kZSgpLCBLbm93bkNlbGxV
c2UpKTsKICAgICAgICAgICAgIHByb3BlcnR5U3RvcmFnZSA9IEVkZ2UoYWxsb2NhdGVQcm9wZXJ0
eVN0b3JhZ2UpOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgQVNTRVJUKHN0cnVjdHVy
ZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSk7Ci0gICAgICAgICAgICBBU1NFUlQodmFyaWFudC5uZXdT
dHJ1Y3R1cmUoKS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSA+IHN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2Fw
YWNpdHkoKSk7CisgICAgICAgICAgICBBU1NFUlQodmFyaWFudC5vbGRTdHJ1Y3R1cmVGb3JUcmFu
c2l0aW9uKCktPm91dE9mTGluZUNhcGFjaXR5KCkpOworICAgICAgICAgICAgQVNTRVJUKHZhcmlh
bnQubmV3U3RydWN0dXJlKCktPm91dE9mTGluZUNhcGFjaXR5KCkgPiB2YXJpYW50Lm9sZFN0cnVj
dHVyZUZvclRyYW5zaXRpb24oKS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSk7CiAgICAgICAgICAgICBB
U1NFUlQoIWlzSW5saW5lT2Zmc2V0KHZhcmlhbnQub2Zmc2V0KCkpKTsKIAogICAgICAgICAgICAg
Tm9kZSogcmVhbGxvY2F0ZVByb3BlcnR5U3RvcmFnZSA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydE5v
ZGUoCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcAkocmV2aXNpb24g
MTcwMDU3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTkyOCw3ICs5MjgsOSBAQCB2b2lkIEdyYXBoOjp2aXNpdENoaWxkcmVuKFNs
b3RWaXNpdG9yJiB2CiAgICAgICAgICAgICBjYXNlIE11bHRpUHV0QnlPZmZzZXQ6CiAgICAgICAg
ICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gbm9kZS0+bXVsdGlQdXRCeU9mZnNldERhdGEoKS52
YXJpYW50cy5zaXplKCk7IGktLTspIHsKICAgICAgICAgICAgICAgICAgICAgUHV0QnlJZFZhcmlh
bnQmIHZhcmlhbnQgPSBub2RlLT5tdWx0aVB1dEJ5T2Zmc2V0RGF0YSgpLnZhcmlhbnRzW2ldOwot
ICAgICAgICAgICAgICAgICAgICB2aXNpdG9yLmFwcGVuZFVuYmFycmllcmVkUmVhZE9ubHlQb2lu
dGVyKHZhcmlhbnQub2xkU3RydWN0dXJlKCkpOworICAgICAgICAgICAgICAgICAgICBjb25zdCBT
dHJ1Y3R1cmVTZXQmIHNldCA9IHZhcmlhbnQub2xkU3RydWN0dXJlKCk7CisgICAgICAgICAgICAg
ICAgICAgIGZvciAodW5zaWduZWQgaiA9IHNldC5zaXplKCk7IGotLTspCisgICAgICAgICAgICAg
ICAgICAgICAgICB2aXNpdG9yLmFwcGVuZFVuYmFycmllcmVkUmVhZE9ubHlQb2ludGVyKHNldFtq
XSk7CiAgICAgICAgICAgICAgICAgICAgIGlmICh2YXJpYW50LmtpbmQoKSA9PSBQdXRCeUlkVmFy
aWFudDo6VHJhbnNpdGlvbikKICAgICAgICAgICAgICAgICAgICAgICAgIHZpc2l0b3IuYXBwZW5k
VW5iYXJyaWVyZWRSZWFkT25seVBvaW50ZXIodmFyaWFudC5uZXdTdHJ1Y3R1cmUoKSk7CiAgICAg
ICAgICAgICAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuY3BwCShy
ZXZpc2lvbiAxNzAwNTcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zNyw3ICszNyw3IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3Bh
Y2UgREZHIHsKIGJvb2wgTXVsdGlQdXRCeU9mZnNldERhdGE6OndyaXRlc1N0cnVjdHVyZXMoKSBj
b25zdAogewogICAgIGZvciAodW5zaWduZWQgaSA9IHZhcmlhbnRzLnNpemUoKTsgaS0tOykgewot
ICAgICAgICBpZiAodmFyaWFudHNbaV0ua2luZCgpID09IFB1dEJ5SWRWYXJpYW50OjpUcmFuc2l0
aW9uKQorICAgICAgICBpZiAodmFyaWFudHNbaV0ud3JpdGVzU3RydWN0dXJlcygpKQogICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgIHJldHVybiBmYWxzZTsKQEAgLTQ2LDE0ICs0
Niw4IEBAIGJvb2wgTXVsdGlQdXRCeU9mZnNldERhdGE6OndyaXRlc1N0cnVjdHUKIGJvb2wgTXVs
dGlQdXRCeU9mZnNldERhdGE6OnJlYWxsb2NhdGVzU3RvcmFnZSgpIGNvbnN0CiB7CiAgICAgZm9y
ICh1bnNpZ25lZCBpID0gdmFyaWFudHMuc2l6ZSgpOyBpLS07KSB7Ci0gICAgICAgIGlmICh2YXJp
YW50c1tpXS5raW5kKCkgIT0gUHV0QnlJZFZhcmlhbnQ6OlRyYW5zaXRpb24pCi0gICAgICAgICAg
ICBjb250aW51ZTsKLSAgICAgICAgCi0gICAgICAgIGlmICh2YXJpYW50c1tpXS5vbGRTdHJ1Y3R1
cmUoKS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSA9PQotICAgICAgICAgICAgdmFyaWFudHNbaV0ubmV3
U3RydWN0dXJlKCktPm91dE9mTGluZUNhcGFjaXR5KCkpCi0gICAgICAgICAgICBjb250aW51ZTsK
LSAgICAgICAgCi0gICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBpZiAodmFyaWFudHNbaV0u
cmVhbGxvY2F0ZXNTdG9yYWdlKCkpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAg
ICAgcmV0dXJuIGZhbHNlOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExB
YmJyZXZpYXRpb25zLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExBYmJyZXZpYXRpb25zLmgJKHJldmlzaW9uIDE3MDA1NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMQWJicmV2aWF0aW9ucy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDksOCArMTQ5
LDcgQEAgc3RhdGljIGlubGluZSB2b2lkIHNldEZ1bmN0aW9uQ2FsbGluZ0Nvbgogc3RhdGljIGlu
bGluZSB2b2lkIGFkZFRhcmdldERlcGVuZGVudEZ1bmN0aW9uQXR0cihMVmFsdWUgZnVuY3Rpb24s
IGNvbnN0IGNoYXIqIGtleSwgY29uc3QgY2hhciogdmFsdWUpIHsgbGx2bS0+QWRkVGFyZ2V0RGVw
ZW5kZW50RnVuY3Rpb25BdHRyKGZ1bmN0aW9uLCBrZXksIHZhbHVlKTsgfQogc3RhdGljIGlubGlu
ZSB2b2lkIHJlbW92ZUZ1bmN0aW9uQXR0cihMVmFsdWUgZnVuY3Rpb24sIExMVk1BdHRyaWJ1dGUg
cGEpIHsgbGx2bS0+UmVtb3ZlRnVuY3Rpb25BdHRyKGZ1bmN0aW9uLCBwYSk7IH0KIAotCi0KK3N0
YXRpYyBpbmxpbmUgTExWTUxpbmthZ2UgZ2V0TGlua2FnZShMVmFsdWUgZ2xvYmFsKSB7IHJldHVy
biBsbHZtLT5HZXRMaW5rYWdlKGdsb2JhbCk7IH0KIHN0YXRpYyBpbmxpbmUgdm9pZCBzZXRMaW5r
YWdlKExWYWx1ZSBnbG9iYWwsIExMVk1MaW5rYWdlIGxpbmthZ2UpIHsgbGx2bS0+U2V0TGlua2Fn
ZShnbG9iYWwsIGxpbmthZ2UpOyB9CiBzdGF0aWMgaW5saW5lIHZvaWQgc2V0VmlzaWJpbGl0eShM
VmFsdWUgZ2xvYmFsLCBMTFZNVmlzaWJpbGl0eSB2aXopIHsgbGx2bS0+U2V0VmlzaWJpbGl0eShn
bG9iYWwsIHZpeik7IH0KIHN0YXRpYyBpbmxpbmUgTExWTUJvb2wgaXNEZWNsYXJhdGlvbihMVmFs
dWUgZ2xvYmFsKSB7IHJldHVybiBsbHZtLT5Jc0RlY2xhcmF0aW9uKGdsb2JhbCk7IH0KQEAgLTE2
MywxMCArMTYyLDYgQEAgc3RhdGljIGlubGluZSBMVmFsdWUgZ2V0TmFtZWRHbG9iYWwoTE1vZAog
c3RhdGljIGlubGluZSBMVmFsdWUgZ2V0Rmlyc3RHbG9iYWwoTE1vZHVsZSBtb2R1bGUpIHsgcmV0
dXJuIGxsdm0tPkdldEZpcnN0R2xvYmFsKG1vZHVsZSk7IH0KIHN0YXRpYyBpbmxpbmUgTFZhbHVl
IGdldE5leHRHbG9iYWwoTFZhbHVlIGdsb2JhbCkgeyByZXR1cm4gbGx2bS0+R2V0TmV4dEdsb2Jh
bChnbG9iYWwpOyB9CiAKLQotCi0KLQogc3RhdGljIGlubGluZSBMVmFsdWUgYWRkRXh0ZXJuRnVu
Y3Rpb24oTE1vZHVsZSBtb2R1bGUsIGNvbnN0IGNoYXIqIG5hbWUsIExUeXBlIHR5cGUpCiB7CiAg
ICAgTFZhbHVlIHJlc3VsdCA9IGFkZEZ1bmN0aW9uKG1vZHVsZSwgbmFtZSwgdHlwZSk7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9MTFZNLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9MTFZNLmNwcAko
cmV2aXNpb24gMTcwMDU3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRG
R1RvTExWTS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyODcsOCArMzI4NywxMCBAQCBwcml2YXRl
OgogICAgICAgICBWZWN0b3I8U3dpdGNoQ2FzZSwgMj4gY2FzZXM7CiAgICAgICAgIGZvciAodW5z
aWduZWQgaSA9IGRhdGEudmFyaWFudHMuc2l6ZSgpOyBpLS07KSB7CiAgICAgICAgICAgICBQdXRC
eUlkVmFyaWFudCB2YXJpYW50ID0gZGF0YS52YXJpYW50c1tpXTsKLSAgICAgICAgICAgIGNhc2Vz
LmFwcGVuZCgKLSAgICAgICAgICAgICAgICBTd2l0Y2hDYXNlKHdlYWtTdHJ1Y3R1cmUodmFyaWFu
dC5vbGRTdHJ1Y3R1cmUoKSksIGJsb2Nrc1tpXSwgV2VpZ2h0KDEpKSk7CisgICAgICAgICAgICBm
b3IgKHVuc2lnbmVkIGogPSB2YXJpYW50Lm9sZFN0cnVjdHVyZSgpLnNpemUoKTsgai0tOykgewor
ICAgICAgICAgICAgICAgIGNhc2VzLmFwcGVuZCgKKyAgICAgICAgICAgICAgICAgICAgU3dpdGNo
Q2FzZSh3ZWFrU3RydWN0dXJlKHZhcmlhbnQub2xkU3RydWN0dXJlKClbal0pLCBibG9ja3NbaV0s
IFdlaWdodCgxKSkpOworICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIG1fb3V0LnN3
aXRjaEluc3RydWN0aW9uKAogICAgICAgICAgICAgbV9vdXQubG9hZDMyKGJhc2UsIG1faGVhcHMu
SlNDZWxsX3N0cnVjdHVyZUlEKSwgY2FzZXMsIGV4aXQsIFdlaWdodCgwKSk7CkBAIC0zMzA5LDE0
ICszMzExLDE1IEBAIHByaXZhdGU6CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAg
ICAgIG1fZ3JhcGgubV9wbGFuLnRyYW5zaXRpb25zLmFkZExhemlseSgKICAgICAgICAgICAgICAg
ICAgICAgY29kZUJsb2NrKCksIG1fbm9kZS0+b3JpZ2luLnNlbWFudGljLmNvZGVPcmlnaW5Pd25l
cigpLAotICAgICAgICAgICAgICAgICAgICB2YXJpYW50Lm9sZFN0cnVjdHVyZSgpLCB2YXJpYW50
Lm5ld1N0cnVjdHVyZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgdmFyaWFudC5vbGRTdHJ1Y3R1
cmVGb3JUcmFuc2l0aW9uKCksIHZhcmlhbnQubmV3U3RydWN0dXJlKCkpOwogICAgICAgICAgICAg
ICAgIAogICAgICAgICAgICAgICAgIHN0b3JhZ2UgPSBzdG9yYWdlRm9yVHJhbnNpdGlvbigKLSAg
ICAgICAgICAgICAgICAgICAgYmFzZSwgdmFyaWFudC5vZmZzZXQoKSwgdmFyaWFudC5vbGRTdHJ1
Y3R1cmUoKSwgdmFyaWFudC5uZXdTdHJ1Y3R1cmUoKSk7CisgICAgICAgICAgICAgICAgICAgIGJh
c2UsIHZhcmlhbnQub2Zmc2V0KCksCisgICAgICAgICAgICAgICAgICAgIHZhcmlhbnQub2xkU3Ry
dWN0dXJlRm9yVHJhbnNpdGlvbigpLCB2YXJpYW50Lm5ld1N0cnVjdHVyZSgpKTsKIAotICAgICAg
ICAgICAgICAgIEFTU0VSVCh2YXJpYW50Lm9sZFN0cnVjdHVyZSgpLT5pbmRleGluZ1R5cGUoKSA9
PSB2YXJpYW50Lm5ld1N0cnVjdHVyZSgpLT5pbmRleGluZ1R5cGUoKSk7Ci0gICAgICAgICAgICAg
ICAgQVNTRVJUKHZhcmlhbnQub2xkU3RydWN0dXJlKCktPnR5cGVJbmZvKCkuaW5saW5lVHlwZUZs
YWdzKCkgPT0gdmFyaWFudC5uZXdTdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5pbmxpbmVUeXBlRmxh
Z3MoKSk7Ci0gICAgICAgICAgICAgICAgQVNTRVJUKHZhcmlhbnQub2xkU3RydWN0dXJlKCktPnR5
cGVJbmZvKCkudHlwZSgpID09IHZhcmlhbnQubmV3U3RydWN0dXJlKCktPnR5cGVJbmZvKCkudHlw
ZSgpKTsKKyAgICAgICAgICAgICAgICBBU1NFUlQodmFyaWFudC5vbGRTdHJ1Y3R1cmVGb3JUcmFu
c2l0aW9uKCktPmluZGV4aW5nVHlwZSgpID09IHZhcmlhbnQubmV3U3RydWN0dXJlKCktPmluZGV4
aW5nVHlwZSgpKTsKKyAgICAgICAgICAgICAgICBBU1NFUlQodmFyaWFudC5vbGRTdHJ1Y3R1cmVG
b3JUcmFuc2l0aW9uKCktPnR5cGVJbmZvKCkuaW5saW5lVHlwZUZsYWdzKCkgPT0gdmFyaWFudC5u
ZXdTdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5pbmxpbmVUeXBlRmxhZ3MoKSk7CisgICAgICAgICAg
ICAgICAgQVNTRVJUKHZhcmlhbnQub2xkU3RydWN0dXJlRm9yVHJhbnNpdGlvbigpLT50eXBlSW5m
bygpLnR5cGUoKSA9PSB2YXJpYW50Lm5ld1N0cnVjdHVyZSgpLT50eXBlSW5mbygpLnR5cGUoKSk7
CiAgICAgICAgICAgICAgICAgbV9vdXQuc3RvcmUzMigKICAgICAgICAgICAgICAgICAgICAgd2Vh
a1N0cnVjdHVyZSh2YXJpYW50Lm5ld1N0cnVjdHVyZSgpKSwgYmFzZSwgbV9oZWFwcy5KU0NlbGxf
c3RydWN0dXJlSUQpOwogICAgICAgICAgICAgfQpAQCAtNDA5Miw3ICs0MDk1LDkgQEAgcHJpdmF0
ZToKICAgICAgICAgCiAgICAgICAgIGZvciAoQ1N0cmluZyogc3ltYm9sID0gbmFtZWRGdW5jdGlv
bnMuYmVnaW4oKTsgc3ltYm9sICE9IG5hbWVkRnVuY3Rpb25zLmVuZCgpOyArK3N5bWJvbCkgewog
ICAgICAgICAgICAgTFZhbHVlIGZ1bmN0aW9uID0gZ2V0TmFtZWRGdW5jdGlvbihtX2Z0bFN0YXRl
Lm1vZHVsZSwgc3ltYm9sLT5kYXRhKCkpOwotICAgICAgICAgICAgc2V0VmlzaWJpbGl0eShmdW5j
dGlvbiwgTExWTUhpZGRlblZpc2liaWxpdHkpOworICAgICAgICAgICAgTExWTUxpbmthZ2UgbGlu
a2FnZSA9IGdldExpbmthZ2UoZnVuY3Rpb24pOworICAgICAgICAgICAgaWYgKGxpbmthZ2UgIT0g
TExWTUludGVybmFsTGlua2FnZSAmJiBsaW5rYWdlICE9IExMVk1Qcml2YXRlTGlua2FnZSkKKyAg
ICAgICAgICAgICAgICBzZXRWaXNpYmlsaXR5KGZ1bmN0aW9uLCBMTFZNSGlkZGVuVmlzaWJpbGl0
eSk7CiAgICAgICAgICAgICBpZiAoIWlzRGVjbGFyYXRpb24oZnVuY3Rpb24pKSB7CiAgICAgICAg
ICAgICAgICAgc2V0TGlua2FnZShmdW5jdGlvbiwgTExWTVByaXZhdGVMaW5rYWdlKTsKIApAQCAt
NDEwMyw3ICs0MTA4LDkgQEAgcHJpdmF0ZToKIAogICAgICAgICBmb3IgKENTdHJpbmcqIHN5bWJv
bCA9IG5hbWVkR2xvYmFscy5iZWdpbigpOyBzeW1ib2wgIT0gbmFtZWRHbG9iYWxzLmVuZCgpOyAr
K3N5bWJvbCkgewogICAgICAgICAgICAgTFZhbHVlIGdsb2JhbCA9IGdldE5hbWVkR2xvYmFsKG1f
ZnRsU3RhdGUubW9kdWxlLCBzeW1ib2wtPmRhdGEoKSk7Ci0gICAgICAgICAgICBzZXRWaXNpYmls
aXR5KGdsb2JhbCwgTExWTUhpZGRlblZpc2liaWxpdHkpOworICAgICAgICAgICAgTExWTUxpbmth
Z2UgbGlua2FnZSA9IGdldExpbmthZ2UoZ2xvYmFsKTsKKyAgICAgICAgICAgIGlmIChsaW5rYWdl
ICE9IExMVk1JbnRlcm5hbExpbmthZ2UgJiYgbGlua2FnZSAhPSBMTFZNUHJpdmF0ZUxpbmthZ2Up
CisgICAgICAgICAgICAgICAgc2V0VmlzaWJpbGl0eShnbG9iYWwsIExMVk1IaWRkZW5WaXNpYmls
aXR5KTsKICAgICAgICAgICAgIGlmICghaXNEZWNsYXJhdGlvbihnbG9iYWwpKQogICAgICAgICAg
ICAgICAgIHNldExpbmthZ2UoZ2xvYmFsLCBMTFZNUHJpdmF0ZUxpbmthZ2UpOwogICAgICAgICB9
Cg==
</data>
<flag name="review"
          id="257770"
          type_id="1"
          status="+"
          setter="mhahnenberg"
    />
          </attachment>
      

    </bug>

</bugzilla>